<?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>58787</bug_id>
          
          <creation_ts>2011-04-18 08:02:39 -0700</creation_ts>
          <short_desc>Draft PeerConnection implementation (experimental feature)</short_desc>
          <delta_ts>2011-06-07 05:28:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>56666</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>csirkus</cc>
    
    <cc>grunell</cc>
    
    <cc>leandrogracia</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>387724</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-04-18 08:02:39 -0700</bug_when>
    <thetext>IDL + skeleton implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387737</commentid>
    <comment_count>1</comment_count>
      <attachid>90041</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-04-18 08:26:55 -0700</bug_when>
    <thetext>Created attachment 90041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388404</commentid>
    <comment_count>2</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-04-19 04:30:02 -0700</bug_when>
    <thetext>Following the spec available here http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#peer-to-peer-connections</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388414</commentid>
    <comment_count>3</comment_count>
      <attachid>90180</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-04-19 04:53:19 -0700</bug_when>
    <thetext>Created attachment 90180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406396</commentid>
    <comment_count>4</comment_count>
      <attachid>94070</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-05-19 07:55:03 -0700</bug_when>
    <thetext>Created attachment 94070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406398</commentid>
    <comment_count>5</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-05-19 08:01:12 -0700</bug_when>
    <thetext>Still in a draft state, only builds in Chromium. Makefiles for all platforms will be added for each individual patch that goes out for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406572</commentid>
    <comment_count>6</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-19 12:23:25 -0700</bug_when>
    <thetext>I have a long informal review for this patch, but I get an unauthorized action error when publishing it. Is there anything I can do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407235</commentid>
    <comment_count>7</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-20 11:38:48 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=94070&amp;action=review

&gt; LayoutTests/fast/dom/MediaStream/script-tests/add-remove-streams.js:11
&gt; +    pc = new PeerConnection(&apos;foobar&apos;, function(m) {});

Is there any test checking the behavior of the constructor when different and unexpected types and numbers of arguments are passed? Something like the existing argument-types test.

&gt; LayoutTests/fast/dom/MediaStream/script-tests/add-remove-streams.js:29
&gt; +    shouldBe(&apos;streams[0]&apos;, &apos;stream&apos;);

Maybe it should also try invalid values for indices and see if the proper exceptions are thrown.

&gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

I think the license here and all the other files is not right. It should follow Source/WebKit/LICENSE, where the copyright itself can be set to Google. If you want an example just take a look to the license used in the landed MediaStream code.

&gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:49
&gt; +    RefPtr&lt;SignallingCallback&gt; signallingCallback = createFunctionOnlyCallback&lt;JSSignallingCallback&gt;(exec, static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;argument(1));

Can you make sure that the &apos;TYPE_MISMATCH_ERR&apos; thrown by this method (see bindings/js/CallbackFunction.cpp) is the same as the TypeError mentioned in the spec?

&gt; Source/WebCore/bindings/v8/V8DOMWrapper.cpp:474
&gt; +      return toV8(peerConnection);

Style nit: indentation of 4 spaces instead of 2.

&gt; Source/WebCore/bindings/v8/custom/V8EventCustom.cpp:59
&gt; +#include &quot;V8StreamEvent.h&quot;

Style nit: wrong header ordering.

&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:58
&gt; +    if (isUndefinedOrNull(args[1]))

The spec requires the signaling callback to be not null, but doesn&apos;t mention undefined. Isn&apos;t this situation already covered by checking the number of arguments? As far as I know, for args[1] to be undefined the number of arguments should be less than 2. Please check and correct me if I&apos;m wrong.

In any case, please make sure that this is not either undefined or null when calling createFunctionOnlyCallback as otherwise it will call V8Proxy::throwError(V8Proxy::GeneralError, &quot;TYPE_MISMATCH_ERR: DOM Exception 17&quot;).

&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:62
&gt; +    AtomicString configuration = v8ValueToAtomicWebCoreString(args[0]);

Make sure this really throws exceptions. I expected toWebCoreString to throw them but found that it didn&apos;t, and had to change it for args[0]-&gt;ToString().

&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:78
&gt; +    if (!peerConnection.get())

You should be able to check a RefPtr without using get.

&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:79
&gt; +        return throwError(&quot;A PeerConnection object could not be created.&quot;, V8Proxy::RangeError);

I see no reference to RangeError in the spec. Is this right?

&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:81
&gt; +    // Transform the holder into a wrapper object.

Comment likely to be considered unnecessary by the reviewers as the code is enough self-explanatory.

&gt; Source/WebCore/dom/EventNames.h:186
&gt; +    macro(peerconnectionmessage) \

I see no onpeerconnectionmessage on the spec. What is the purpose of this?

&gt; Source/WebCore/dom/GeneratedStream.cpp:68
&gt; +    : Stream(frameController, label, false)

You should be able to tell if it&apos;s local or remote by calling the isGeneratedStream method. It should be safe now even when coming from the destructor with the lastest proposed changes for the MediaStreamFrameController and Stream/GeneratedStream objects in bug 56666.
This change should no longer be required by this patch.

&gt; Source/WebCore/dom/PeerConnection.cpp:52
&gt; +    : PeerConnectionClient(frameController, id), m_readyState(NEW), m_signallingCallback(signallingCallback)

Does not follow the initialization list style. Look in http://www.webkit.org/coding/coding-style.html, section &quot;Other Punctiation&quot;.

&gt; Source/WebCore/dom/PeerConnection.cpp:56
&gt; +    mediaStreamFrameController()-&gt;startNegotiation(m_clientId);

Given the circumstances the frame controller should be always available at this point. However it may be a good idea to assert it before calling it.

&gt; Source/WebCore/dom/PeerConnection.cpp:63
&gt; +PassRefPtr&lt;StreamList&gt; PeerConnection::localStreams()

Should be const. Same for removeStreams.

&gt; Source/WebCore/dom/PeerConnection.cpp:65
&gt; +    return StreamList::create(m_localStreams);

I don&apos;t think the spec says we should create a new stream list everytime, especially since they are reference-counted objects (they need to as they are script objects). It might be better to keep a reference to them in the object and simple return it everytime, but please check it.
Same for removeStreams.

&gt; Source/WebCore/dom/PeerConnection.cpp:81
&gt; +    mediaStreamFrameController()-&gt;signalingMessage(m_clientId, message);

Please check that the frame controller is available. It won&apos;t be in the detached frame state and no operations should be performed in that situation.
This affects also many other methods in this file.

&gt; Source/WebCore/dom/PeerConnection.cpp:86
&gt; +    if (m_readyState == CLOSED) {

The exception code ec should be set to 0 here or before the method finishes. Please check here and in the following methods using ExceptionCode.

&gt; Source/WebCore/dom/PeerConnection.cpp:107
&gt; +    // Stream is guaranteed to exist.

Not sure if necessary and possibly a bit misleading since this is the usual way to manipulate PassRefPtr arguments.

&gt; Source/WebCore/dom/PeerConnection.cpp:146
&gt; +    dispatchEvent(Event::create(eventNames().closeEvent, false, false));

You should not dispatch the event synchronously but put a task to do it. You can find examples of this in the StringCallback, *TrackList or *Stream classes.

&gt; Source/WebCore/dom/PeerConnection.cpp:151
&gt; +    m_readyState = NEGOTIATING;

It may be a good idea to assert that we come from the right state.

&gt; Source/WebCore/dom/PeerConnection.cpp:153
&gt; +    dispatchEvent(Event::create(eventNames().connectingEvent, false, false));

Probably the same as before. Please check here and in the following methods.

&gt; Source/WebCore/dom/PeerConnection.cpp:198
&gt; +    return mediaStreamFrameController()-&gt;scriptExecutionContext();

You should check if the mediaStreamFrameController is available also here.

&gt; Source/WebCore/dom/PeerConnection.h:39
&gt; +#include &quot;ScriptExecutionContext.h&quot;

Forward-declaring should be enough here.

&gt; Source/WebCore/dom/PeerConnection.h:40
&gt; +#include &quot;SignallingCallback.h&quot;

Forward-declaring them should be enough for RefPtr and PassRefPtr, but make sure you&apos;re not instantiating anything in an inline header method or the compiler will complain.
You can forward-declare and remove this include if you move the getter to the cpp file.

&gt; Source/WebCore/dom/PeerConnection.h:41
&gt; +#include &quot;Stream.h&quot;

Can forward-declare too.

&gt; Source/WebCore/dom/PeerConnection.h:42
&gt; +#include &quot;StreamContainer.h&quot;

Same as before.

&gt; Source/WebCore/dom/PeerConnection.h:43
&gt; +#include &quot;StreamList.h&quot;

Same as before.

&gt; Source/WebCore/dom/PeerConnection.h:45
&gt; +#include &lt;wtf/HashMap.h&gt;

It doesn&apos;t look like you&apos;re using this in the header file.

&gt; Source/WebCore/dom/PeerConnection.h:48
&gt; +#include &lt;wtf/Vector.h&gt;

Same as with HashMap.

&gt; Source/WebCore/dom/PeerConnection.h:67
&gt; +    PassRefPtr&lt;StreamList&gt; localStreams();

Never do this. Don&apos;t hold any PassRefPtr as a local variable, but use RefPtr instead. Using PassRefPtr should be limited to function arguments and return types.
Also, shouldn&apos;t this be const?

&gt; Source/WebCore/dom/PeerConnection.h:86
&gt; +    PassRefPtr&lt;SignallingCallback&gt; signallingCallback() { return m_signallingCallback; }

Apart of moving it to the cpp file, shouldn&apos;t this be const?

&gt; Source/WebCore/dom/PeerConnection.h:99
&gt; +    void streamRemoved(String streamLabel);

Argument type should be const String&amp;.

&gt; Source/WebCore/dom/PeerConnection.h:110
&gt; +    unsigned short m_readyState;

Is there something inheriting from PeerConnection that requires this to be protected instead of private?

&gt; Source/WebCore/dom/SignallingCallback.h:36
&gt; +class SignallingCallback : public RefCounted&lt;SignallingCallback&gt; {

Is there any situation where a call to this callback can be generated synchronously from something coming from JS? If so, this should inherit from CallbackTask2 and ensure that the call is scheduled in such situations.

Also make sure you add the SignalingCallback to the no-interface-object layout test.

&gt; Source/WebCore/dom/Stream.cpp:36
&gt; +PassRefPtr&lt;Stream&gt; Stream::create(MediaStreamFrameController* frameController, const String&amp; label, bool remoteStream)

No longer required with the changes introduced by bug 56666. Same for the other changes in both cpp and header files.

&gt; Source/WebCore/dom/StreamContainer.h:49
&gt; +    unsigned length() const { return m_streams.size(); }

Make sure you don&apos;t get signed/unsigned or other int conversion warnings in mac, as the compiler it more picky than gcc and these warnings will become errors.

&gt; Source/WebCore/dom/StreamContainer.h:58
&gt; +        return 0;

It&apos;s probably better to return PassRefPtr&lt;Stream&gt;().

&gt; Source/WebCore/dom/StreamContainer.h:70
&gt; +        m_streams.remove(s-&gt;label());

Since remove is silent in case the provided key doesn&apos;t exist, it&apos;s probably worth to add an assertion here to verify it.

&gt; Source/WebCore/dom/StreamContainer.h:73
&gt; +    bool contains(PassRefPtr&lt;Stream&gt; stream)

Should this be const?

&gt; Source/WebCore/dom/StreamEvent.cpp:45
&gt; +    : Event(type, canBubble, cancelable), m_stream(stream)

Does not follow the initialization list style. Look in http://www.webkit.org/coding/coding-style.html, section &quot;Other Punctiation&quot;.

&gt; Source/WebCore/dom/StreamEvent.h:37
&gt; +#include &quot;Stream.h&quot;

Could replace by a forward declaration if the code of the factory and stream methods were moved to the cpp file.

&gt; Source/WebCore/dom/StreamList.cpp:45
&gt; +    return 0;

As I&apos;ve seen recently in some changes during rebasing, it seems to be better to return PassRefPtr&lt;Stream&gt;() than 0.

&gt; Source/WebCore/dom/StreamList.h:34
&gt; +#include &lt;StreamContainer.h&gt;

Not strictly necessary, but you could replace this with a forward declaration if you move the code for the factory method, the constructor and the destructor to the cpp file.

&gt; Source/WebCore/page/MediaStreamController.cpp:230
&gt; +    // Don&apos;t assert since the frame controller can have been destroyed

Style nit: comment sentences should end always with a dot.

&gt; Source/WebCore/page/MediaStreamController.cpp:241
&gt; +    int pagePeerConnectionId(-1);

Although correct I&apos;m not sure if I&apos;ve seen this style anywhere else in WebCore. Also, theoretically 0 is an invalid id in case you want to use it instead of -1. Just make sure you never try to access a hash map with 0 or an empty string as the key.

&gt; Source/WebCore/page/MediaStreamController.cpp:271
&gt; +        const Request&amp; peerConnection = m_peerConnections.get(controllerPeerConnectionId);

This is fine, but please keep in mind that HashMap is returning a copy of the object it holds (and if it&apos;s not right please do correct me). It may be a problem in case you extend the functionality of Request without keeping this in mind.

&gt; Source/WebCore/page/MediaStreamController.h:74
&gt; +    void registerPeerConnection(int peerConnectionId, MediaStreamFrameController*);

Minor detail: please make the order of the arguments consistent with similar calls in the file.

&gt; Source/WebCore/page/MediaStreamController.h:75
&gt; +    void signalingMessage(MediaStreamFrameController*, int framePeerConnectionId, const AtomicString&amp; message);

Are you sure that you need to add the frame controller in all these calls? You can probably tell already by the peer connection id once it has been registered.

&gt; Source/WebCore/page/MediaStreamController.h:77
&gt; +    void addStream(MediaStreamFrameController*, int framePeerConnectionId, const AtomicString&amp; streamLabel);

In this case you can even use the stream label alone to identify the frame controller, as the local stream generation message should have already passed through here at any point this call is made.
Same for removeStream or anything involving local streams.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:329
&gt; +    // TODO: Should this be supported for remote streams too?

I&apos;m afraid the spec doesn&apos;t say otherwise, and also includes the record method in Stream instead of StreamRecorder.
It may be a good idea to raise the question to whatwg if you have security concerns.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:501
&gt; +    // and pageController isn&apos;t currently valid? Just skip registering?

Please use the isClientAvailable method and ignore any requests if it returns false. This is because we might have access to a valid page controller, but it might not have a MediaStream client. In fact this is the current situation until the WebKit client is added.
Apply this also to similar situations in this file.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:514
&gt; +    peerConnection-&gt;signallingCallback()-&gt;handleEvent(message, peerConnection.get());

Make sure that this line cannot ever be reached synchronously by anything that comes from Javascript. If that&apos;s not the case, you should schedule the callback using the CallbackTask2 features.

&gt; Source/WebCore/page/MediaStreamFrameController.h:130
&gt; +            if (!m_isRemoteStream)

I don&apos;t think this is right. Is there any reason of why remote streams should not be unregistered? Please note that &apos;unregistered&apos; means at least to remove them from the corresponding client table, and this table is also used to report clients about the embedder becoming unreachable. It will crash if a remote stream goes out of scope and then the frame containing its associated PeerConnection object is detached from the page.

Instead, I think you should always unregister but define different specific behaviours in the unregister method by using isGeneratedStream(). This method should be safe now even in destruction environments with the lastest changes in bug 56666.

&gt; Source/WebCore/platform/mock/MediaStreamClientMock.cpp:85
&gt; +        static PassRefPtr&lt;Stream&gt; create(String label);

Argument type should be const String&amp;.

&gt; Source/WebCore/platform/mock/MediaStreamClientMock.cpp:87
&gt;          String label() const { return m_label; }

Return type should probably be const String&amp;.

&gt; Source/WebCore/platform/mock/MediaStreamClientMock.cpp:169
&gt; +    , m_peerConnectionId(-1)

Be careful of never using an id with the value 0 in a hash map (I&apos;m not saying it&apos;s happening).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413258</commentid>
    <comment_count>8</comment_count>
      <attachid>95574</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-01 03:17:34 -0700</bug_when>
    <thetext>Created attachment 95574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413260</commentid>
    <comment_count>9</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-01 03:18:39 -0700</bug_when>
    <thetext>&gt;
&gt;&gt; LayoutTests/fast/dom/MediaStream/script-tests/add-remove-streams.js:11
&gt;&gt; +    pc = new PeerConnection(&apos;foobar&apos;, function(m) {});
&gt;
&gt;Is there any test checking the behavior of the constructor when different and unexpected types and numbers of arguments are passed? Something like the existing argument-types test.
&gt;
&gt;&gt; LayoutTests/fast/dom/MediaStream/script-tests/add-remove-streams.js:29
&gt;&gt; +    shouldBe(&apos;streams[0]&apos;, &apos;stream&apos;);
&gt;
&gt;Maybe it should also try invalid values for indices and see if the proper exceptions are thrown.
&gt;
&gt;&gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:2
&gt;&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.
&gt;
&gt;I think the license here and all the other files is not right. It should follow Source/WebKit/LICENSE, where the copyright itself can be set to Google. If you want an example just take a look to the license used in the landed MediaStream code.

Done. Choosed the wrong file to copy licence from.

&gt;&gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:49
&gt;&gt; +    RefPtr&lt;SignallingCallback&gt; signallingCallback = createFunctionOnlyCallback&lt;JSSignallingCallback&gt;(exec, static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;argument(1));
&gt;
&gt;Can you make sure that the &apos;TYPE_MISMATCH_ERR&apos; thrown by this method (see bindings/js/CallbackFunction.cpp) is the same as the TypeError mentioned in the spec?
&gt;
&gt;&gt; Source/WebCore/bindings/v8/V8DOMWrapper.cpp:474
&gt;&gt; +      return toV8(peerConnection);
&gt;
&gt;Style nit: indentation of 4 spaces instead of 2.

Done.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8EventCustom.cpp:59
&gt;&gt; +#include &quot;V8StreamEvent.h&quot;
&gt;
&gt;Style nit: wrong header ordering.

Done.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:58
&gt;&gt; +    if (isUndefinedOrNull(args[1]))
&gt;
&gt;The spec requires the signaling callback to be not null, but doesn&apos;t mention undefined. Isn&apos;t this situation already covered by checking the number of arguments? As far as I know, for args[1] to be undefined the number of arguments should be less than 2. Please check and correct me if I&apos;m wrong.
&gt;
&gt;In any case, please make sure that this is not either undefined or null when calling createFunctionOnlyCallback as otherwise it will call V8Proxy::throwError(V8Proxy::GeneralError, &quot;TYPE_MISMATCH_ERR: DOM Exception 17&quot;).

Changed to just checking for null value.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:62
&gt;&gt; +    AtomicString configuration = v8ValueToAtomicWebCoreString(args[0]);
&gt;
&gt;Make sure this really throws exceptions. I expected toWebCoreString to throw them but found that it didn&apos;t, and had to change it for args[0]-&gt;ToString().
&gt;
&gt;&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:78
&gt;&gt; +    if (!peerConnection.get())
&gt;
&gt;You should be able to check a RefPtr without using get.

Done.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:79
&gt;&gt; +        return throwError(&quot;A PeerConnection object could not be created.&quot;, V8Proxy::RangeError);
&gt;
&gt;I see no reference to RangeError in the spec. Is this right?

Didn&apos;t know what to do here, is it best to just return null?

&gt;&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:81
&gt;&gt; +    // Transform the holder into a wrapper object.
&gt;
&gt;Comment likely to be considered unnecessary by the reviewers as the code is enough self-explanatory.

Removed.

&gt;&gt; Source/WebCore/dom/EventNames.h:186
&gt;&gt; +    macro(peerconnectionmessage) \
&gt;
&gt;I see no onpeerconnectionmessage on the spec. What is the purpose of this?

Removed. Test code, had forgotten to remove it.

&gt;&gt; Source/WebCore/dom/GeneratedStream.cpp:68
&gt;&gt; +    : Stream(frameController, label, false)
&gt;
&gt;You should be able to tell if it&apos;s local or remote by calling the isGeneratedStream method. It should be safe now even when coming from the destructor with the lastest proposed changes for the MediaStreamFrameController and Stream/GeneratedStream objects in bug 56666.
&gt;This change should no longer be required by this patch.
&gt;
&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:52
&gt;&gt; +    : PeerConnectionClient(frameController, id), m_readyState(NEW), m_signallingCallback(signallingCallback)
&gt;
&gt;Does not follow the initialization list style. Look in http://www.webkit.org/coding/coding-style.html, section &quot;Other Punctiation&quot;.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:56
&gt;&gt; +    mediaStreamFrameController()-&gt;startNegotiation(m_clientId);
&gt;
&gt;Given the circumstances the frame controller should be always available at this point. However it may be a good idea to assert it before calling it.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:63
&gt;&gt; +PassRefPtr&lt;StreamList&gt; PeerConnection::localStreams()
&gt;
&gt;Should be const. Same for removeStreams.

Can&apos;t be done due to the lazy initialization of the StrealLists.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:65
&gt;&gt; +    return StreamList::create(m_localStreams);
&gt;
&gt;I don&apos;t think the spec says we should create a new stream list everytime, especially since they are reference-counted objects (they need to as they are script objects). It might be better to keep a reference to them in the object and simple return it everytime, but please check it.
&gt;Same for removeStreams.

Fixed. Both implementations produce correct results according to the spec but this is slightly more efficient.

&gt;
&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:81
&gt;&gt; +    mediaStreamFrameController()-&gt;signalingMessage(m_clientId, message);
&gt;
&gt;Please check that the frame controller is available. It won&apos;t be in the detached frame state and no operations should be performed in that situation.
&gt;This affects also many other methods in this file.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:86
&gt;&gt; +    if (m_readyState == CLOSED) {
&gt;
&gt;The exception code ec should be set to 0 here or before the method finishes. Please check here and in the following methods using ExceptionCode.

I checked the generated code and it already have set ec to 0 before calling these functions. Should I still set it to zero?

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:107
&gt;&gt; +    // Stream is guaranteed to exist.
&gt;
&gt;Not sure if necessary and possibly a bit misleading since this is the usual way to manipulate PassRefPtr arguments.

Changed the comment to be a little clearer.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:146
&gt;&gt; +    dispatchEvent(Event::create(eventNames().closeEvent, false, false));
&gt;
&gt;You should not dispatch the event synchronously but put a task to do it. You can find examples of this in the StringCallback, *TrackList or *Stream classes.
&gt;
&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:151
&gt;&gt; +    m_readyState = NEGOTIATING;
&gt;
&gt;It may be a good idea to assert that we come from the right state.
&gt;
&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:153
&gt;&gt; +    dispatchEvent(Event::create(eventNames().connectingEvent, false, false));
&gt;
&gt;Probably the same as before. Please check here and in the following methods.
&gt;
&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:198
&gt;&gt; +    return mediaStreamFrameController()-&gt;scriptExecutionContext();
&gt;
&gt;You should check if the mediaStreamFrameController is available also here.
&gt;
&gt;&gt; Source/WebCore/dom/PeerConnection.h:39
&gt;&gt; +#include &quot;ScriptExecutionContext.h&quot;
&gt;
&gt;Forward-declaring should be enough here.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.h:40
&gt;&gt; +#include &quot;SignallingCallback.h&quot;
&gt;
&gt;Forward-declaring them should be enough for RefPtr and PassRefPtr, but make sure you&apos;re not instantiating anything in an inline header method or the compiler will complain.
&gt;You can forward-declare and remove this include if you move the getter to the cpp file.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.h:41
&gt;&gt; +#include &quot;Stream.h&quot;
&gt;
&gt;Can forward-declare too.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.h:42
&gt;&gt; +#include &quot;StreamContainer.h&quot;
&gt;
&gt;Same as before.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.h:43
&gt;&gt; +#include &quot;StreamList.h&quot;
&gt;
&gt;Same as before.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.h:45
&gt;&gt; +#include &lt;wtf/HashMap.h&gt;
&gt;
&gt;It doesn&apos;t look like you&apos;re using this in the header file.

Fixed.

&gt;&gt; Source/WebCore/dom/PeerConnection.h:48
&gt;&gt; +#include &lt;wtf/Vector.h&gt;
&gt;
&gt;Same as with HashMap.

Fixed.

&gt;&gt; Source/WebCore/dom/PeerConnection.h:67
&gt;&gt; +    PassRefPtr&lt;StreamList&gt; localStreams();
&gt;
&gt;Never do this. Don&apos;t hold any PassRefPtr as a local variable, but use RefPtr instead. Using PassRefPtr should be limited to function arguments and return types.
&gt;Also, shouldn&apos;t this be const?

Don&apos;t understand; localStreams() is a function.

&gt;
&gt;&gt; Source/WebCore/dom/PeerConnection.h:86
&gt;&gt; +    PassRefPtr&lt;SignallingCallback&gt; signallingCallback() { return m_signallingCallback; }
&gt;
&gt;Apart of moving it to the cpp file, shouldn&apos;t this be const?

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.h:99
&gt;&gt; +    void streamRemoved(String streamLabel);
&gt;
&gt;Argument type should be const String&amp;.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.h:110
&gt;&gt; +    unsigned short m_readyState;
&gt;
&gt;Is there something inheriting from PeerConnection that requires this to be protected instead of private?

Nope, moved.

&gt;&gt; Source/WebCore/dom/SignallingCallback.h:36
&gt;&gt; +class SignallingCallback : public RefCounted&lt;SignallingCallback&gt; {
&gt;
&gt;Is there any situation where a call to this callback can be generated synchronously from something coming from JS? If so, this should inherit from CallbackTask2 and ensure that the call is scheduled in such situations.

Nope.

&gt;Also make sure you add the SignalingCallback to the no-interface-object layout test.

Done.

&gt;&gt; Source/WebCore/dom/Stream.cpp:36
&gt;&gt; +PassRefPtr&lt;Stream&gt; Stream::create(MediaStreamFrameController* frameController, const String&amp; label, bool remoteStream)
&gt;
&gt;No longer required with the changes introduced by bug 56666. Same for the other changes in both cpp and header files.
&gt;
&gt;&gt; Source/WebCore/dom/StreamContainer.h:49
&gt;&gt; +    unsigned length() const { return m_streams.size(); }
&gt;
&gt;Make sure you don&apos;t get signed/unsigned or other int conversion warnings in mac, as the compiler it more picky than gcc and these warnings will become errors.
&gt;
&gt;&gt; Source/WebCore/dom/StreamContainer.h:58
&gt;&gt; +        return 0;
&gt;
&gt;It&apos;s probably better to return PassRefPtr&lt;Stream&gt;().

Done.

&gt;&gt; Source/WebCore/dom/StreamContainer.h:70
&gt;&gt; +        m_streams.remove(s-&gt;label());
&gt;
&gt;Since remove is silent in case the provided key doesn&apos;t exist, it&apos;s probably worth to add an assertion here to verify it.

Done.

&gt;&gt; Source/WebCore/dom/StreamContainer.h:73
&gt;&gt; +    bool contains(PassRefPtr&lt;Stream&gt; stream)
&gt;
&gt;Should this be const?

Done.

&gt;&gt; Source/WebCore/dom/StreamEvent.cpp:45
&gt;&gt; +    : Event(type, canBubble, cancelable), m_stream(stream)
&gt;
&gt;Does not follow the initialization list style. Look in http://www.webkit.org/coding/coding-style.html, section &quot;Other Punctiation&quot;.

Done.

&gt;&gt; Source/WebCore/dom/StreamEvent.h:37
&gt;&gt; +#include &quot;Stream.h&quot;
&gt;
&gt;Could replace by a forward declaration if the code of the factory and stream methods were moved to the cpp file.

Done.

&gt;&gt; Source/WebCore/dom/StreamList.cpp:45
&gt;&gt; +    return 0;
&gt;
&gt;As I&apos;ve seen recently in some changes during rebasing, it seems to be better to return PassRefPtr&lt;Stream&gt;() than 0.

Done.

&gt;&gt; Source/WebCore/dom/StreamList.h:34
&gt;&gt; +#include &lt;StreamContainer.h&gt;
&gt;
&gt;Not strictly necessary, but you could replace this with a forward declaration if you move the code for the factory method, the constructor and the destructor to the cpp file.

Done.

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:230
&gt;&gt; +    // Don&apos;t assert since the frame controller can have been destroyed
&gt;
&gt;Style nit: comment sentences should end always with a dot.

Done.

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:241
&gt;&gt; +    int pagePeerConnectionId(-1);
&gt;
&gt;Although correct I&apos;m not sure if I&apos;ve seen this style anywhere else in WebCore. Also, theoretically 0 is an invalid id in case you want to use it instead of -1. Just make sure you never try to access a hash map with 0 or an empty string as the key.

OK.

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:271
&gt;&gt; +        const Request&amp; peerConnection = m_peerConnections.get(controllerPeerConnectionId);
&gt;
&gt;This is fine, but please keep in mind that HashMap is returning a copy of the object it holds (and if it&apos;s not right please do correct me). It may be a problem in case you extend the functionality of Request without keeping this in mind.
&gt;
&gt;&gt; Source/WebCore/page/MediaStreamController.h:74
&gt;&gt; +    void registerPeerConnection(int peerConnectionId, MediaStreamFrameController*);
&gt;
&gt;Minor detail: please make the order of the arguments consistent with similar calls in the file.

Done.

&gt;&gt; Source/WebCore/page/MediaStreamController.h:75
&gt;&gt; +    void signalingMessage(MediaStreamFrameController*, int framePeerConnectionId, const AtomicString&amp; message);
&gt;
&gt;Are you sure that you need to add the frame controller in all these calls? You can probably tell already by the peer connection id once it has been registered.
&gt;
&gt;&gt; Source/WebCore/page/MediaStreamController.h:77
&gt;&gt; +    void addStream(MediaStreamFrameController*, int framePeerConnectionId, const AtomicString&amp; streamLabel);
&gt;
&gt;In this case you can even use the stream label alone to identify the frame controller, as the local stream generation message should have already passed through here at any point this call is made.
&gt;Same for removeStream or anything involving local streams.
&gt;
&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:329
&gt;&gt; +    // TODO: Should this be supported for remote streams too?
&gt;
&gt;I&apos;m afraid the spec doesn&apos;t say otherwise, and also includes the record method in Stream instead of StreamRecorder.
&gt;It may be a good idea to raise the question to whatwg if you have security concerns.
&gt;
&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:501
&gt;&gt; +    // and pageController isn&apos;t currently valid? Just skip registering?
&gt;
&gt;Please use the isClientAvailable method and ignore any requests if it returns false. This is because we might have access to a valid page controller, but it might not have a MediaStream client. In fact this is the current situation until the WebKit client is added.
&gt;Apply this also to similar situations in this file.
&gt;
&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:514
&gt;&gt; +    peerConnection-&gt;signallingCallback()-&gt;handleEvent(message, peerConnection.get());
&gt;
&gt;Make sure that this line cannot ever be reached synchronously by anything that comes from Javascript. If that&apos;s not the case, you should schedule the callback using the CallbackTask2 features.
&gt;
&gt;&gt; Source/WebCore/page/MediaStreamFrameController.h:130
&gt;&gt; +            if (!m_isRemoteStream)
&gt;
&gt;I don&apos;t think this is right. Is there any reason of why remote streams should not be unregistered? Please note that &apos;unregistered&apos; means at least to remove them from the corresponding client table, and this table is also used to report clients about the embedder becoming unreachable. It will crash if a remote stream goes out of scope and then the frame containing its associated PeerConnection object is detached from the page.
&gt;
&gt;Instead, I think you should always unregister but define different specific behaviours in the unregister method by using isGeneratedStream(). This method should be safe now even in destruction environments with the lastest changes in bug 56666.
&gt;
&gt;&gt; Source/WebCore/platform/mock/MediaStreamClientMock.cpp:85
&gt;&gt; +        static PassRefPtr&lt;Stream&gt; create(String label);
&gt;
&gt;Argument type should be const String&amp;.
&gt;
&gt;&gt; Source/WebCore/platform/mock/MediaStreamClientMock.cpp:87
&gt;&gt;          String label() const { return m_label; }
&gt;
&gt;Return type should probably be const String&amp;.
&gt;
&gt;&gt; Source/WebCore/platform/mock/MediaStreamClientMock.cpp:169
&gt;&gt; +    , m_peerConnectionId(-1)
&gt;
&gt;Be careful of never using an id with the value 0 in a hash map (I&apos;m not saying it&apos;s happening).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416443</commentid>
    <comment_count>10</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-07 05:28:02 -0700</bug_when>
    <thetext>Real patches are out for review so I am closing this one.

See https://bugs.webkit.org/show_bug.cgi?id=56459</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90041</attachid>
            <date>2011-04-18 08:26:55 -0700</date>
            <delta_ts>2011-04-19 04:53:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58787-20110418172653.patch</filename>
            <type>text/plain</type>
            <size>61139</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQuZGVyaXZlZC5qc2NiaW5kaW5ncy5t
ayBiL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQuZGVyaXZlZC5qc2NiaW5kaW5ncy5tawppbmRleCAz
MTkzNzYzM2I1MTY2ZTNkOWQyZjI4YWQ2ODgwYjg2NTcxYTVmYWI3Li44NTZmNzk3YzVkMzJkNDg2
ODJkODUwYjMzMzU5MGM4ZWMxMjg2YTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9BbmRy
b2lkLmRlcml2ZWQuanNjYmluZGluZ3MubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5k
ZXJpdmVkLmpzY2JpbmRpbmdzLm1rCkBAIC0xMzEsMTEgKzEzMSwxMyBAQCBHRU4gOj0gXAogICAg
ICQoaW50ZXJtZWRpYXRlcykvZG9tL0pTTm90YXRpb24uaCBcCiAgICAgJChpbnRlcm1lZGlhdGVz
KS9kb20vSlNPdmVyZmxvd0V2ZW50LmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvZG9tL0pTUGFn
ZVRyYW5zaXRpb25FdmVudC5oIFwKKyAgICAkKGludGVybWVkaWF0ZXMpL2RvbS9KU1BlZXJDb25u
ZWN0aW9uLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvZG9tL0pTUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvZG9tL0pTUHJvZ3Jlc3NFdmVudC5oIFwKICAg
ICAkKGludGVybWVkaWF0ZXMpL2RvbS9KU1JhbmdlLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykv
ZG9tL0pTUmFuZ2VFeGNlcHRpb24uaCBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9kb20vSlNTdHJl
YW0uaCBcCisgICAgJChpbnRlcm1lZGlhdGVzKS9kb20vSlNTdHJlYW1MaXN0LmggXAogICAgICQo
aW50ZXJtZWRpYXRlcykvZG9tL0pTU3RyZWFtUmVjb3JkZXIuaCBcCiAgICAgJChpbnRlcm1lZGlh
dGVzKS9kb20vSlNUZXh0LmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvZG9tL0pTVGV4dEV2ZW50
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGlu
Z3MubWsgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5tawppbmRl
eCA4NGU3YmEyZGJkYjM3YTJmZTc4NzI2MjM3YjJiYTlmMzQwNjQxYjllLi5iNTE3MThmYjgzMzU3
MTVmNWNjMzIxZDFkNDE5NmZiOGUxNmFkY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5taworKysgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lk
LmRlcml2ZWQudjhiaW5kaW5ncy5tawpAQCAtMTEyLDEwICsxMTIsMTIgQEAgR0VOIDo9IFwKICAg
ICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4Tm90YXRpb24uaCBcCiAgICAgJChpbnRlcm1l
ZGlhdGVzKS9iaW5kaW5ncy9WOE92ZXJmbG93RXZlbnQuaCBcCiAgICAgJChpbnRlcm1lZGlhdGVz
KS9iaW5kaW5ncy9WOFBhZ2VUcmFuc2l0aW9uRXZlbnQuaCBcCisgICAgJChpbnRlcm1lZGlhdGVz
KS9iaW5kaW5ncy9WOFBlZXJDb25uZWN0aW9uLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvYmlu
ZGluZ3MvVjhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9i
aW5kaW5ncy9WOFByb2dyZXNzRXZlbnQuaCBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5n
cy9WOFJhbmdlLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3MvVjhSYW5nZUV4Y2Vw
dGlvbi5oIFwKKyAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4U3RyZWFtTGlzdC5oIFwK
ICAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4U3RyZWFtLmggXAogICAgICQoaW50ZXJt
ZWRpYXRlcykvYmluZGluZ3MvVjhTdHJlYW1SZWNvcmRlci5oIFwKICAgICAkKGludGVybWVkaWF0
ZXMpL2JpbmRpbmdzL1Y4VGV4dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJv
aWQuanNjYmluZGluZ3MubWsgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdzLm1r
CmluZGV4IDFlODRlOGM1YTE5NTdiNGFiYTI4YjM1NzIzMWIxZDAyNDIxNDE2MDUuLjJiZDZmMWNm
YTVkZWY1NWUyZWQ0MGQ1Nzg0ZjhiYjNjZDk1YmJiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5q
c2NiaW5kaW5ncy5tawpAQCAtMTQ5LDYgKzE0OSw3IEBAIExPQ0FMX1NSQ19GSUxFUyArPSBcCiAJ
YmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIFwKIAliaW5kaW5ncy9qcy9KU05v
ZGVMaXN0Q3VzdG9tLmNwcCBcCiAJYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAg
XAorICAgICAgICBiaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBcCiAJYmlu
ZGluZ3MvanMvSlNQbHVnaW5BcnJheUN1c3RvbS5jcHAgXAogCWJpbmRpbmdzL2pzL0pTUGx1Z2lu
Q3VzdG9tLmNwcCBcCiAJYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLm1rIGIvU291cmNlL1dlYkNvcmUv
QW5kcm9pZC5tawppbmRleCBjYzY2N2MzNWVlZDY4ZjhiNjY0NjNiZmJiOGQ0MDE4YWQ1OTMwNDlj
Li44MTQwYThmZmVkM2I3YzVjNGI5M2ZmMGViMDA3Njg0YmE2MWMxZDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9BbmRyb2lkLm1rCisrKyBiL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsK
QEAgLTE2Myw2ICsxNjMsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMp
IFwKIAlkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAgXAogCWRvbS9PdmVyZmxvd0V2ZW50
LmNwcCBcCiAJZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKKyAgICAgICAgZG9tL1BlZXJD
b25uZWN0aW9uLmNwcCBcCiAJZG9tL1BlbmRpbmdTY3JpcHQuY3BwIFwKIAlkb20vUG9zaXRpb24u
Y3BwIFwKIAlkb20vUG9zaXRpb25JdGVyYXRvci5jcHAgXApAQCAtMTgyLDcgKzE4Myw5IEBAIExP
Q0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWRvbS9TcGFjZVNwbGl0U3Ry
aW5nLmNwcCBcCiAJZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgXAogCWRvbS9TdGF0aWNO
b2RlTGlzdC5jcHAgXAorICAgICAgICBkb20vU3RhdGljU3RyZWFtTGlzdC5jcHAgXAogCWRvbS9T
dHJlYW0uY3BwIFwKKyAgICAgICAgZG9tL1N0cmVhbUxpc3QuY3BwIFwKIAlkb20vU3RyZWFtUmVj
b3JkZXIuY3BwIFwKIAlkb20vU3RyaW5nQ2FsbGJhY2suY3BwIFwKIAlkb20vU3R5bGVFbGVtZW50
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsg
Yi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsKaW5kZXggOTFiOWVhYTJkMmQ0
MGMzZGQ4NTcwMTAwZjVhMTk3YzExNzI0MzlhNS4uZWJkNDk2MzIxMDdiMmYwZmM0NWIwNDYwZjg4
MzI4OWY2ZGNhYzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQW5kcm9pZC52OGJpbmRp
bmdzLm1rCisrKyBiL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tawpAQCAtMTQ4
LDYgKzE0OCw3IEBAIExPQ0FMX1NSQ19GSUxFUyArPSBcCiAJYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Tm9kZUZpbHRlckN1c3RvbS5jcHAgXAogCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVJdGVyYXRv
ckN1c3RvbS5jcHAgXAogCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcCBc
CisgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBc
CiAJYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgXAog
CWJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBcCiAJYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U3RyZWFtUmVjb3JkZXJDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBk
Yzg0YjY0ZTY4MmI5NzUyMDEyY2JjOWIzNmI0MTE1Mzg4Mzk5NTlkLi45M2ZlNTE0YjUzZjY0MTg3
YmRhMjZhNmMwM2QwOGJkMzIyNDFjYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMxIEBACisy
MDExLTA0LTE4ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERyYWZ0IFBlZXJDb25u
ZWN0aW9uIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01ODc4NworCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisg
ICAgICAgICogQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRpbmdzLm1rOgorICAgICAgICAqIEFuZHJv
aWQuZGVyaXZlZC52OGJpbmRpbmdzLm1rOgorICAgICAgICAqIEFuZHJvaWQuanNjYmluZGluZ3Mu
bWs6CisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBBbmRyb2lkLnY4YmluZGluZ3Mu
bWs6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBVc2VKU0MuY21h
a2U6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGJpbmRpbmdz
L2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6cGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
UGVlckNvbm5lY3Rpb25Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlY4UGVlckNvbm5lY3Rpb246OmNvbnN0cnVjdG9yQ2Fs
bGJhY2spOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogZG9tL1BlZXJD
b25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpQZWVyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6flBlZXJDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpsb2NhbFN0cmVhbXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnJlbW90ZVN0cmVhbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb246OnNpZ25hbGluZ01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b246OmFkZFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6cmVtb3Zl
U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpjbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6dG9QZWVyQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAg
ICAqIGRvbS9QZWVyQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9u
OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGVy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgICogZG9tL1BlZXJDb25uZWN0aW9uLmlkbDogQWRkZWQu
CisgICAgICAgICogZG9tL1NpZ25hbGxpbmdDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNpZ25hbGxpbmdDYWxsYmFjazo6flNpZ25hbGxpbmdDYWxsYmFjayk6CisgICAgICAg
ICogZG9tL1NpZ25hbGxpbmdDYWxsYmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9TdGF0
aWNTdHJlYW1MaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNTdHJlYW1M
aXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljU3RyZWFtTGlzdDo6aXRlbSk6
CisgICAgICAgICogZG9tL1N0YXRpY1N0cmVhbUxpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdGF0aWNTdHJlYW1MaXN0OjphZG9wdCk6CisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNT
dHJlYW1MaXN0OjpTdGF0aWNTdHJlYW1MaXN0KToKKyAgICAgICAgKiBkb20vU3RyZWFtTGlzdC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmVhbUxpc3Q6On5TdHJlYW1MaXN0KToKKyAg
ICAgICAgKiBkb20vU3RyZWFtTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpjcmVhdGVQZWVy
Q29ubmVjdGlvbik6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5o
OgorCisyMDExLTA0LTE4ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERyYWZ0IFBl
ZXJDb25uZWN0aW9uIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODc4NworCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMh
KQorCisgICAgICAgICogQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRpbmdzLm1rOgorICAgICAgICAq
IEFuZHJvaWQuZGVyaXZlZC52OGJpbmRpbmdzLm1rOgorICAgICAgICAqIEFuZHJvaWQuanNjYmlu
ZGluZ3MubWs6CisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBBbmRyb2lkLnY4Ymlu
ZGluZ3MubWs6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBVc2VK
U0MuY21ha2U6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6cGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkpTUGVlckNvbm5lY3Rpb25Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNQZWVyQ29ubmVjdGlv
bik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlY4UGVlckNvbm5lY3Rpb246OmNvbnN0cnVj
dG9yQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogZG9t
L1BlZXJDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpQZWVyQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6flBlZXJDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpsb2NhbFN0cmVhbXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnJlbW90ZVN0cmVhbXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnNpZ25hbGluZ01lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNv
bm5lY3Rpb246OmFkZFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6
cmVtb3ZlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpjbG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6dG9QZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgor
ICAgICAgICAqIGRvbS9QZWVyQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlv
bjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogZG9tL1BlZXJDb25uZWN0aW9uLmlkbDog
QWRkZWQuCisgICAgICAgICogZG9tL1NpZ25hbGxpbmdDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNpZ25hbGxpbmdDYWxsYmFjazo6flNpZ25hbGxpbmdDYWxsYmFjayk6Cisg
ICAgICAgICogZG9tL1NpZ25hbGxpbmdDYWxsYmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGRv
bS9TdGF0aWNTdHJlYW1MaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNT
dHJlYW1MaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljU3RyZWFtTGlzdDo6
aXRlbSk6CisgICAgICAgICogZG9tL1N0YXRpY1N0cmVhbUxpc3QuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdGF0aWNTdHJlYW1MaXN0OjphZG9wdCk6CisgICAgICAgIChXZWJDb3JlOjpT
dGF0aWNTdHJlYW1MaXN0OjpTdGF0aWNTdHJlYW1MaXN0KToKKyAgICAgICAgKiBkb20vU3RyZWFt
TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmVhbUxpc3Q6On5TdHJlYW1MaXN0
KToKKyAgICAgICAgKiBkb20vU3RyZWFtTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uv
RE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlci5oOgorCiAyMDExLTA0LTE1ICBNaWtlIFJlZWQgIDxyZWVkQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggYjdkYTQ2MjIwYWM1ZGNiNmViMTZhMjEyZjhmNmM5NGRhZjRmYjk2MS4uMDA2YTMw
MTU0ZDNjZDc4ZTdkMjBmOTJlNWM1YmU1NDYxMTIwNzBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC00MTcsNiArNDE3LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQZWVyQ29ubmVjdGlvbi5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZWVy
Q29ubmVjdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgXApAQCAtNDU1LDYgKzQ1
Nyw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1NwZWVjaElucHV0UmVzdWx0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTcGVl
Y2hJbnB1dFJlc3VsdExpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU3BlZWNo
SW5wdXRSZXN1bHRMaXN0LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTdHJlYW1MaXN0
LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1N0cmVhbUxpc3QuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1NRTEV4Y2VwdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTU1FMUmVzdWx0U2V0Um93TGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgXApAQCAtNzg3LDYgKzc5MSw3IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0
b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9y
LmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlv
bnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb25DdXN0b20uY3BwIFwKQEAgLTEyMjksNiArMTIzNCw4IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUGFn
ZVRyYW5zaXRpb25FdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24u
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUGVuZGlu
Z1NjcmlwdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAgXApAQCAt
MTI3Miw4ICsxMjc5LDExIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGlj
Tm9kZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuaCBcCisJ
U291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1N0cmVhbUxpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vU3RhdGljU3RyZWFtTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20v
U3RyZWFtTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtUmVjb3JkZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtUmVjb3JkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpT
Qy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCAwNmVmNWY4YjIzYmEz
OWYyOTI1YjQwYzc5ZmFmZWFhNjlkMjUxNmQwLi5iOTliMDRmNTZlYTNlZjAyYzkxZmM3MGNmMDFh
YjJiNjg2NGViODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC0xMTAsNiArMTEwLDcgQEAgTElTVChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTUGVlckNvbm5l
Y3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25z
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBjZTU5NmM2N2MyZjg5NDRjZjI4YjU1YmE0ZTlkMTBkYjU5YWNiMDM3Li5hYzY3
ZjE3YjQzNzFlOTYzYjNkMjI1NGFkZjg3YzRhNmJmNDI4YzM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xMTQxLDEzICsxMTQxLDE2IEBACiAgICAgICAgICAgICAnZG9tL05vdGF0aW9uLmlkbCcsCiAg
ICAgICAgICAgICAnZG9tL092ZXJmbG93RXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vUGFn
ZVRyYW5zaXRpb25FdmVudC5pZGwnLAorICAgICAgICAgICAgJ2RvbS9QZWVyQ29ubmVjdGlvbi5p
ZGwnLAogICAgICAgICAgICAgJ2RvbS9Qb3BTdGF0ZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAn
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5pZGwnLAogICAgICAgICAgICAgJ2RvbS9Qcm9ncmVz
c0V2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1JhbmdlLmlkbCcsCiAgICAgICAgICAgICAn
ZG9tL1JhbmdlRXhjZXB0aW9uLmlkbCcsCiAgICAgICAgICAgICAnZG9tL1JlcXVlc3RBbmltYXRp
b25GcmFtZUNhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnZG9tL1NpZ25hbGxpbmdDYWxsYmFj
ay5pZGwnLAogICAgICAgICAgICAgJ2RvbS9TdHJlYW0uaWRsJywKKyAgICAgICAgICAgICdkb20v
U3RyZWFtTGlzdC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9TdHJlYW1SZWNvcmRlci5pZGwnLAog
ICAgICAgICAgICAgJ2RvbS9TdHJpbmdDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ2RvbS9U
ZXh0LmlkbCcsCkBAIC0xODMxLDYgKzE4MzQsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTTm9kZUxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU09wdGlv
bkNvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNPcHRpb25Db25z
dHJ1Y3Rvci5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJv
d0xpc3RDdXN0b20uY3BwJywKQEAgLTIxNDIsNiArMjE0Niw3IEBACiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAn
YmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhQZXJmb3JtYW5jZUN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9t
LmNwcCcsCkBAIC0yNTE0LDYgKzI1MTksOCBAQAogICAgICAgICAgICAgJ2RvbS9PdmVyZmxvd0V2
ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCcsCisgICAgICAgICAgICAnZG9tL1Bl
ZXJDb25uZWN0aW9uLmNwcCcsCisgICAgICAgICAgICAnZG9tL1BlZXJDb25uZWN0aW9uLmgnLAog
ICAgICAgICAgICAgJ2RvbS9QZW5kaW5nU2NyaXB0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1Bv
cFN0YXRlRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vUG9wU3RhdGVFdmVudC5oJywKQEAg
LTI1NDgsMTIgKzI1NTUsMTYgQEAKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5jcHAnLAog
ICAgICAgICAgICAgJ2RvbS9TaGFkb3dSb290LmgnLAogICAgICAgICAgICAgJ2RvbS9TcGFjZVNw
bGl0U3RyaW5nLmNwcCcsCisgICAgICAgICAgICAnZG9tL1NpZ25hbGxpbmdDYWxsYmFjay5oJywK
ICAgICAgICAgICAgICdkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCcsCiAgICAgICAgICAg
ICAnZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oJywKICAgICAgICAgICAgICdkb20vU3RhdGlj
Tm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdkb20vU3RhdGljTm9kZUxpc3QuaCcsCisgICAg
ICAgICAgICAnZG9tL1N0YXRpY1N0cmVhbUxpc3QuY3BwJywKKyAgICAgICAgICAgICdkb20vU3Rh
dGljU3RyZWFtTGlzdC5oJywKICAgICAgICAgICAgICdkb20vU3RyZWFtLmNwcCcsCiAgICAgICAg
ICAgICAnZG9tL1N0cmVhbS5oJywKKyAgICAgICAgICAgICdkb20vU3RyZWFtTGlzdC5oJywKICAg
ICAgICAgICAgICdkb20vU3RyZWFtUmVjb3JkZXIuY3BwJywKICAgICAgICAgICAgICdkb20vU3Ry
ZWFtUmVjb3JkZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1N0cmluZ0NhbGxiYWNrLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCmluZGV4IDRkMzdjZDRkYjJmMDk3ZjYyZWE5NjRjMTI2MWE1MjNjZDJjOWNlNzku
LmE2MDgyMDJlZTFiN2MyNDE1Yjc1MDU5ZThiY2I0NzNjODQyMWIyZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0zMjcsNiArMzI3LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU05vZGVJdGVy
YXRvckN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwIFwKKyAgICAg
ICAgYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgXAogICAgICAgICBiaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
anMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
anMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgXApAQCAtMzE0NSw3ICszMTQ2LDEwIEBA
IGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NRURJQV9TVFJFQU09MSkgewogICAgICAgICBkb20v
RXhjbHVzaXZlVHJhY2tMaXN0LmggXAogICAgICAgICBkb20vR2VuZXJhdGVkU3RyZWFtLmggXAog
ICAgICAgICBkb20vTXVsdGlwbGVUcmFja0xpc3QuaCBcCisgICAgICAgIGRvbS9QZWVyQ29ubmVj
dGlvbi5oIFwKKyAgICAgICAgZG9tL1N0YXRpY1N0cmVhbUxpc3QuaCBcCiAgICAgICAgIGRvbS9T
dHJlYW0uaCBcCisgICAgICAgIGRvbS9TdHJlYW1MaXN0LmggXAogICAgICAgICBkb20vU3RyZWFt
UmVjb3JkZXIuaCBcCiAgICAgICAgIGRvbS9UcmFja0xpc3QuaCBcCiAgICAgICAgIGZpbGVhcGkv
QmxvYkNhbGxiYWNrLmggXApAQCAtMzE2Myw3ICszMTY3LDEwIEBAIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9NRURJQV9TVFJFQU09MSkgewogICAgICAgICBkb20vRXhjbHVzaXZlVHJhY2tMaXN0
LmNwcCBcCiAgICAgICAgIGRvbS9HZW5lcmF0ZWRTdHJlYW0uY3BwIFwKICAgICAgICAgZG9tL011
bHRpcGxlVHJhY2tMaXN0LmNwcCBcCisgICAgICAgIGRvbS9QZWVyQ29ubmVjdGlvbi5jcHAgXAor
ICAgICAgICBkb20vU3RhdGljU3RyZWFtTGlzdC5jcHAgXAogICAgICAgICBkb20vU3RyZWFtLmNw
cCBcCisgICAgICAgIGRvbS9TdHJlYW1MaXN0LmNwcCBcCiAgICAgICAgIGRvbS9TdHJlYW1SZWNv
cmRlci5jcHAgXAogICAgICAgICBkb20vVHJhY2tMaXN0LmNwcCBcCiAgICAgICAgIHBhZ2UvTWVk
aWFTdHJlYW1Db250cm9sbGVyLmNwcCBcCkBAIC0zMTc0LDEwICszMTgxLDEyIEBAIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9NRURJQV9TVFJFQU09MSkgewogICAgIHY4IHsKICAgICAgICAgU09V
UkNFUyArPSBcCiAgICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0
b20uY3BwIFwKKyAgICAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9u
Q3VzdG9tLmNwcCBcCiAgICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhTdHJlYW1SZWNv
cmRlckN1c3RvbS5jcHAKIAogICAgIH0gZWxzZSB7CiAgICAgICAgIFNPVVJDRVMgKz0gXAorICAg
ICAgICAgICAgYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgXAogICAgICAg
ICAgICAgYmluZGluZ3MvanMvSlNTdHJlYW1SZWNvcmRlckN1c3RvbS5jcHAKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDNkNjE2
NDI5ZjEyOWJkNjJlNzVkMTU1Y2I0Zjg1MjhhMDY3MGE5NjMuLjFkZjMzMTY3YmU1ZjJkZDA0YzBk
YWRhM2ZkYzZhNGY4ZTNiYzhmNDYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC0xMjcxOCw2ICsxMjcxOCw2MiBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUGVlckNvbm5lY3Rpb24uY3BwIgor
CQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19D
RkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
X0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVj
dGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTUGVlckNvbm5lY3Rpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJl
bGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU1BlcmZvcm1hbmNlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1
cmF0aW9uCkBAIC0xMzk1MCw2ICsxNDAwNiw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTU3RyZWFtTGlzdC5jcHAiCisJCQkJPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTdHJlYW1MaXN0
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNT
dHJlYW1SZWNvcmRlci5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtNDYy
OTAsNiArNDY0MDIsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXFBlZXJDb25uZWN0aW9uLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFBlZXJDb25uZWN0aW9u
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRv
bVxQZW5kaW5nU2NyaXB0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC00
NzM3OCw2ICs0NzU0Niw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxkb21cU3RhdGljU3RyZWFtTGlzdC5jcHAiCisJCQkJPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTdGF0aWNTdHJl
YW1MaXN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGRvbVxTdHJlYW0uY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTQ3
NDM0LDYgKzQ3NjU4LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGRvbVxTdHJlYW1MaXN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTdHJlYW1SZWNvcmRlci5jcHAiCiAJCQkJPgog
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtNjI3MDksNiArNjI5MzcsNTggQEAKIAkJCQkJPgog
CQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XEpTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19D
RkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJ
CQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFt
ZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgKaW5kZXggMTAwNGVhNGE3YThhOGQ0Mjc1ZWZlZDgyMDUxZjJmNDE0YzA5YjU3ZC4uMWUxNDFh
ZGI5ZTcwMDUxY2IyODNiYTVlZGFkYTE4YzQyYzZlYmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAg
LTE0OCw2ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgbWVkaWFTdHJlYW1FbmFi
bGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KICAgICBzdGF0aWMgdm9pZCBz
ZXRNZWRpYVN0cmVhbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNNZWRpYVN0cmVhbUVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCB3ZWJraXRHZXRVc2VyTWVkaWFFbmFi
bGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9vbCBw
ZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQog
I2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcAppbmRleCBjZjhjZjc3MDkzNjk2ZWRiY2Y4YTM1ZTFkZGQxZDM5
NzE1Y2VlOWVlLi5kYTNjNDU1NTAxMzk1NDFmM2M4MzgzMjU3NjMwM2ExZDY2ZTFjYWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAK
QEAgLTEyNSw2ICsxMjUsNyBAQAogI2luY2x1ZGUgIkpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU05vZGVMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU09wdGlvbkNvbnN0
cnVjdG9yLmNwcCIKKyNpbmNsdWRlICJKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIkpTUHJvY2Vzc2lu
Z0luc3RydWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NRTFJlc3VsdFNldFJvd0xpc3RD
dXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVy
Q29ubmVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BlZXJD
b25uZWN0aW9uQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDgwZmQwNmRmOTNkMGJlM2NhYjYwZDVh
NGU1Njc2ODcwZDc2NDM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1BlZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJD
YWxsYmFja0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTaWduYWxsaW5nQ2FsbGJhY2suaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1BlZXJDb25uZWN0aW9uQ29uc3RydWN0b3I6OmNvbnN0
cnVjdEpTUGVlckNvbm5lY3Rpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUGVlckNvbm5l
Y3Rpb25Db25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTUGVlckNvbm5l
Y3Rpb25Db25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAKKyAgICBTdHJpbmcgY29uZmln
dXJhdGlvbiA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKworICAgIFJlZlB0cjxTaWduYWxsaW5nQ2FsbGJhY2s+IHNpZ25hbGxpbmdDYWxs
YmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTU2lnbmFsbGluZ0NhbGxiYWNrPihl
eGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgRnJhbWUqIGZyYW1lID0g
YXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1l
KCk7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gUGVlckNv
bm5lY3Rpb246OmNyZWF0ZShjb25maWd1YXJhdGlvbiwgc2lnbmFsbGluZ0NhbGxiYWNrKTsKKyAg
ICBpZiAoIXBlZXJDb25uZWN0aW9uLmdldCgpKQorICAgICAgICAvLyBFeGNlcHRpb24gaGFzIGFs
cmVhZHkgYmVlbiB0aHJvd24uCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBq
c0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgcGVlckNvbm5lY3Rpb24uZ2V0KCkpKSk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3Rv
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmFiYzBmNmVlYjNlMTdiM2U5ZGY3MDYyMTY1NDkxMDE0Y2ZkMTBl
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFBlZXJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4U2lnbmFsbGluZ0NhbGxiYWNr
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4UGVl
ckNvbm5lY3Rpb246OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5QZWVyQ29ubmVjdGlvbi5Db25zdHJ1Y3RvciIpOwor
CisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rp
b24uIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgaW50IGFyZ0xlbmd0aCA9IGFyZ3Mu
TGVuZ3RoKCk7CisgICAgaWYgKGFyZ0xlbmd0aCAhPSAyKQorICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcigiVGhlIFBlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yIHRha2VzIHR3byBhcmd1bWVudHMu
IiwgVjhQcm94eTo6UmFuZ2VFcnJvcik7CisKKyAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoYXJn
c1swXSkgfHwgaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkpCisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKCJUaGUgUGVlckNvbm5lY3Rpb24gYXJndW1lbnRzIG11c3Qgbm90IGJlIGVtcHR5LiIs
IFY4UHJveHk6OlJhbmdlRXJyb3IpOworICAgICAgCisgICAgdjg6OlRyeUNhdGNoIGV4Y2VwdGlv
bkNhdGNoZXI7CisgICAgQXRvbWljU3RyaW5nIGNvbmZpZ3VyYXRpb24gPSB2OFZhbHVlVG9BdG9t
aWNXZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOworICAgIGlmIChleGNlcHRpb25DYXRjaGVyLkhhc0Nh
dWdodCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGNlcHRpb25DYXRjaGVyLkV4Y2Vw
dGlvbigpKTsKKworICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7CisgICAgUmVmUHRyPFNpZ25h
bGxpbmdDYWxsYmFjaz4gc2lnbmFsbGluZ0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2Fs
bGJhY2s8VjhTaWduYWxsaW5nQ2FsbGJhY2s+KGFyZ3NbMV0sIHN1Y2NlZWRlZCk7CisgICAgaWYg
KCFzdWNjZWVkZWQpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICBGcmFt
ZSogZnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yQ3VycmVudENvbnRleHQoKTsKKwor
ICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIgPSBmcmFtZSA/
IGZyYW1lLT5tZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpIDogMDsKKyAgICBSZWZQdHI8UGVl
ckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uOworICAgIGlmIChmcmFtZUNvbnRyb2xsZXIpCisg
ICAgICAgIHBlZXJDb25uZWN0aW9uID0gZnJhbWVDb250cm9sbGVyLT5jcmVhdGVQZWVyQ29ubmVj
dGlvbihjb25maWd1cmF0aW9uLCBzaWduYWxsaW5nQ2FsbGJhY2spOworCisgICAgaWYgKCFwZWVy
Q29ubmVjdGlvbi5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkEgUGVlckNvbm5l
Y3Rpb24gb2JqZWN0IGNvdWxkIG5vdCBiZSBjcmVhdGVkLiIsIFY4UHJveHk6OlJhbmdlRXJyb3Ip
OworICAgIAorICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVj
dC4KKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8s
IHBlZXJDb25uZWN0aW9uLmdldCgpKTsKKyAgICByZXR1cm4gdG9WOChwZWVyQ29ubmVjdGlvbi5y
ZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5k
ZXggZWNlMmEwOGZkZTkzOGVkMGNmMzU0N2VmMThkODVjMDI4YjdjNGQ0My4uYjk3Y2QzNzZiN2U2
MzRhZmMzODM1NzhlODBmNjNhZDFlMWY4ZDM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBA
IC0xNzksNiArMTc5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAgICAgbWFjcm8o
YXVkaW9wcm9jZXNzKSBcCiAgICAgXAorICAgIG1hY3JvKGNvbm5lY3RpbmcpIFwKKyAgICBtYWNy
byhhZGRzdHJlYW0pIFwKKyAgICBtYWNybyhyZW1vdmVzdHJlYW0pIFwKKyAgICBcCisKIC8vIGVu
ZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0gKIAogICAgIGNsYXNzIEV2ZW50TmFtZXMgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ4OWQ1YWU0ZDBm
ODhmY2ExNDlkNzY3YjZlNGFhMTU4MWE1ODhhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU3RhdGljU3RyZWFtTGlzdC5o
IgorI2luY2x1ZGUgIlN0cmVhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQ
dHI8UGVlckNvbm5lY3Rpb24+IFBlZXJDb25uZWN0aW9uOjpjcmVhdGUoTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGlkLCBjb25zdCBBdG9taWNTdHJpbmcm
IGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsbGluZ0NhbGxiYWNrPiBzaWduYWxsaW5n
Q2FsbGJhY2spCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZWVyQ29ubmVjdGlvbihmcmFt
ZUNvbnRyb2xsZXIsIGlkLCBjb25maWd1cmF0aW9uLCBzaWduYWxsaW5nQ2FsbGJhY2spKTsKK30K
KworUGVlckNvbm5lY3Rpb246OlBlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBjb25maWd1
cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGxpbmdDYWxsYmFjaz4pCisgICAgOiBQZWVyQ29ubmVj
dGlvbkNsaWVudChmcmFtZUNvbnRyb2xsZXIsIGlkKSwgbV9yZWFkeVN0YXRlKE5FVykKK3sKK30K
KworUGVlckNvbm5lY3Rpb246On5QZWVyQ29ubmVjdGlvbigpCit7Cit9CisKK1Bhc3NSZWZQdHI8
U3RyZWFtTGlzdD4gUGVlckNvbm5lY3Rpb246OmxvY2FsU3RyZWFtcygpCit7CisgICAgcmV0dXJu
IFN0YXRpY1N0cmVhbUxpc3Q6OmFkb3B0KG1fbG9jYWxTdHJlYW1zKTsKK30KKworUGFzc1JlZlB0
cjxTdHJlYW1MaXN0PiBQZWVyQ29ubmVjdGlvbjo6cmVtb3RlU3RyZWFtcygpCit7CisgICAgcmV0
dXJuIFN0YXRpY1N0cmVhbUxpc3Q6OmFkb3B0KG1fcmVtb3RlU3RyZWFtcyk7Cit9CisKK3ZvaWQg
UGVlckNvbm5lY3Rpb246OnNpZ25hbGluZ01lc3NhZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBtZXNz
YWdlKQoreworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpzZW5kKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdGV4dCkKK3sKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFtKFN0cmVhbSog
c3RyZWFtKQoreworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpyZW1vdmVTdHJlYW0oU3RyZWFt
KiBzdHJlYW0pCit7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKK30KKwor
UGVlckNvbm5lY3Rpb24qIFBlZXJDb25uZWN0aW9uOjp0b1BlZXJDb25uZWN0aW9uKCkKK3sKKyAg
ICByZXR1cm4gdGhpczsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogUGVlckNvbm5lY3Rp
b246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQor
CitFdmVudFRhcmdldERhdGEqIFBlZXJDb25uZWN0aW9uOjpldmVudFRhcmdldERhdGEoKQorewor
ICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUGVl
ckNvbm5lY3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2
ZW50VGFyZ2V0RGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9QZWVy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODJlYzk2MjRhNzZjZWU0ZTAxMzMyYjdjNTIyNTUyNTllMTcwM2Y1MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEs
MTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBQZWVyQ29ubmVjdGlvbl9oCisjZGVmaW5lIFBlZXJDb25uZWN0aW9uX2gK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
aWduYWxsaW5nQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTdHJlYW0uaCIKKyNpbmNsdWRlICJTdHJl
YW1MaXN0LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBlZXJDb25uZWN0aW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGVlckNvbm5lY3Rpb24+LAorICAgIHB1YmxpYyBFdmVudFRhcmdldCwK
KyAgICBwdWJsaWMgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlBlZXJDb25uZWN0aW9uQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICAvLyBNdXN0IG1hdGNoIHRoZSBjb25zdGFudHMgaW4gdGhlIC5p
ZGwgZmlsZS4KKyAgICBlbnVtIHsKKyAgICAgICAgTkVXID0gMCwKKyAgICAgICAgTkVHT1RJQVRJ
TkcgPSAxLAorICAgICAgICBBQ1RJVkUgPSAyLAorICAgICAgICBDTE9TRUQgPSAzCisgICAgfTsK
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBjcmVhdGUoTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgY29uZmlndXJh
dGlvbiwgUGFzc1JlZlB0cjxTaWduYWxsaW5nQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIH5QZWVy
Q29ubmVjdGlvbigpOworICAgIAorICAgIFBhc3NSZWZQdHI8U3RyZWFtTGlzdD4gbG9jYWxTdHJl
YW1zKCk7CisgICAgUGFzc1JlZlB0cjxTdHJlYW1MaXN0PiByZW1vdGVTdHJlYW1zKCk7CisKKyAg
ICB2b2lkIHNpZ25hbGluZ01lc3NhZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKTsKKwor
ICAgIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3Rh
dGU7IH0KKworICAgIHZvaWQgc2VuZChjb25zdCBBdG9taWNTdHJpbmcmIHRleHQpOworICAgIHZv
aWQgYWRkU3RyZWFtKFN0cmVhbSopOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtKFN0cmVhbSopOwor
CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uihjb25uZWN0aW5nKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG9wZW4p
OworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOworICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xvc2UpOworICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIobWVzc2FnZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihhZGRzdHJlYW0pOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVt
b3Zlc3RyZWFtKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBQZWVyQ29ubmVj
dGlvbiogdG9QZWVyQ29ubmVjdGlvbigpOworCisgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50
YXRpb24uCisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3Q7CisKKyAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9u
Pjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UGVlckNvbm5lY3Rpb24+OjpkZXJlZjsKKwor
cHJvdGVjdGVkOgorICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisKKyAgICB1bnNpZ25lZCBzaG9y
dCBtX3JlYWR5U3RhdGU7CisKK3ByaXZhdGU6CisgICAgUGVlckNvbm5lY3Rpb24oTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgY29uZmlndXJh
dGlvbiwgUGFzc1JlZlB0cjxTaWduYWxsaW5nQ2FsbGJhY2s+KTsKKworICAgIC8vIEV2ZW50VGFy
Z2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsg
cmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsg
fQorCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworCisgICAgVmVjdG9y
PFJlZlB0cjxTdHJlYW0+ID4gbV9sb2NhbFN0cmVhbXM7CisgICAgVmVjdG9yPFJlZlB0cjxTdHJl
YW0+ID4gbV9yZW1vdGVTdHJlYW1zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFBlZXJDb25uZWN0aW9u
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNDQyNjZh
M2UxNGVlYmMzZGRlNDYyNDg0YTVkYWYwNzU5ZGNmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaWRsCkBAIC0wLDAgKzEsNzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
Y29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJF
QU0sCisgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCisgICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1
bmN0aW9uLAorICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MiwKKyAgICAgICAgVjhDdXN0
b21Db25zdHJ1Y3RvciwKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIFBlZXJDb25uZWN0aW9u
IHsKKyAgICAgICAgdm9pZCBzaWduYWxpbmdNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlKTsK
KworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVcgPSAwOworICAgICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBORUdPVElBVElORyA9IDE7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IEFDVElWRSA9IDI7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENMT1NFRCA9IDM7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOwor
CisgICAgICAgIHZvaWQgc2VuZChpbiBET01TdHJpbmcgdGV4dCk7CisgICAgICAgIHZvaWQgYWRk
U3RyZWFtKGluIFN0cmVhbSBzdHJlYW0pOworICAgICAgICB2b2lkIHJlbW92ZVN0cmVhbShpbiBT
dHJlYW0gc3RyZWFtKTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3RyZWFtTGlzdCBs
b2NhbFN0cmVhbXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHJlYW1MaXN0IHJlbW90
ZVN0cmVhbXM7CisKKyAgICAgICAgdm9pZCBjbG9zZSgpOworCisgICAgICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uY29ubmVjdGluZzsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25vcGVuOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsb3NlOworICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9uYWRkc3RyZWFtOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXN0
cmVhbTsKKworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBh
ZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoaW4gRXZlbnQgZXZlbnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRp
b24pOworCisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpZ25h
bGxpbmdDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpZ25hbGxpbmdDYWxsYmFjay5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjllZmI3NDE3OTFlOWUxNmVjNWE2ZGZlOTEyMTNlNDkzZmUyNGEwOWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsbGluZ0NhbGxiYWNrLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaWduYWxsaW5nQ2FsbGJh
Y2tfaAorI2RlZmluZSBTaWduYWxsaW5nQ2FsbGJhY2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgUGVlckNvbm5lY3Rpb247CisKK2NsYXNzIFNpZ25hbGxpbmdDYWxsYmFjayA6
IHB1YmxpYyBSZWZDb3VudGVkPFNpZ25hbGxpbmdDYWxsYmFjaz4geworcHVibGljOgorICAgIHZp
cnR1YWwgflNpZ25hbGxpbmdDYWxsYmFjaygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVF
dmVudChjb25zdCBTdHJpbmcmLCBQZWVyQ29ubmVjdGlvbiopID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRp
ZiAvLyBTaWduYWxsaW5nQ2FsbGJhY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NpZ25hbGxpbmdDYWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsbGluZ0Nh
bGxiYWNrLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjJkN2FiYmI0NjU0OTA2NzUxYTM0MjM2OWRhMGJlNjcw
YzBlY2VmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpZ25hbGxpbmdD
YWxsYmFjay5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUg
eworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAg
ICAgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5CisgICAgXSBTaWduYWxsaW5nQ2FsbGJhY2sgewor
ICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50KGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBQZWVy
Q29ubmVjdGlvbiBzb3VyY2UpOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdGF0aWNTdHJlYW1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNT
dHJlYW1MaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTRlNDA3OTQ2Y2Y3MGM2ZDIzYjZjNTgzYTRiZDc1
OWQ0Nzk4N2QzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1N0
cmVhbUxpc3QuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU3RhdGljU3RyZWFtTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vuc2lnbmVk
IFN0YXRpY1N0cmVhbUxpc3Q6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyZWFt
cy5zaXplKCk7Cit9CisKK1N0cmVhbSogU3RhdGljU3RyZWFtTGlzdDo6aXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPCBtX3N0cmVhbXMuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gbV9zdHJlYW1zW2luZGV4XS5nZXQoKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRp
Y1N0cmVhbUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNTdHJlYW1MaXN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDFiMzMzZDE1MzI5MWI1MDIwZjY5YjhjZmFhMTI2MzE5OWMzNGQzZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNTdHJlYW1MaXN0LmgKQEAgLTAs
MCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgU3RhdGljU3RyZWFtTGlzdF9oCisjZGVmaW5lIFN0YXRpY1N0cmVh
bUxpc3RfaAorCisjaW5jbHVkZSAiU3RyZWFtLmgiCisjaW5jbHVkZSAiU3RyZWFtTGlzdC5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdGF0
aWNTdHJlYW1MaXN0IDogcHVibGljIFN0cmVhbUxpc3QgeworcHVibGljOgorICAgIC8vIEFkb3B0
cyB0aGUgY29udGVudHMgb2YgdGhlIG5vZGVzIHZlY3Rvci4KKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdGF0aWNTdHJlYW1MaXN0PiBhZG9wdChWZWN0b3I8UmVmUHRyPFN0cmVhbT4gPiYgc3RyZWFt
cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGljU3RyZWFtTGlzdChz
dHJlYW1zKSk7CisgICAgfQorCisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFN0cmVhbSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgU3RhdGljU3RyZWFtTGlzdChWZWN0b3I8UmVmUHRyPFN0cmVhbT4gPiYgc3RyZWFt
cykKKyAgICB7CisgICAgICAgIG1fc3RyZWFtcy5zd2FwKHN0cmVhbXMpOworICAgIH0KKworICAg
IFZlY3RvcjxSZWZQdHI8U3RyZWFtPiA+IG1fc3RyZWFtczsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFN0YXRpY1N0cmVhbUxpc3RfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1N0cmVhbUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1M
aXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWI5MDFmNGU3ZTNjYjk0MjY4ZTRhYmEyNGI5YTAwODdjYjc1N2Mx
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1MaXN0LmgKQEAg
LTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgU3RyZWFtTGlzdF9oCisjZGVmaW5lIFN0cmVhbUxpc3RfaAor
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0cmVhbTsKKworY2xhc3MgU3RyZWFtTGlz
dCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0cmVhbUxpc3Q+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5TdHJlYW1MaXN0KCkgeyB9CisKKyAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9y
IE5vZGVMaXN0CisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBTdHJlYW0qIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0ID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFN0cmVhbUxpc3RfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbUxpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9t
L1N0cmVhbUxpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3OWQyYzRiZGRhNTYzY2RlMTM3MzhhNTdiZmY0
YzkxMzgwNjY2Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFt
TGlzdC5pZGwKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBb
CisgICAgICAgIEhhc0luZGV4R2V0dGVyCisgICAgXSBTdHJlYW1MaXN0IHsKKworICAgICAgICBT
dHJlYW0gaXRlbShpbiBbSXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCk7CisKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworCisgICAgfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGFkZDY2ZGNlZDIwNjRkNjE5MWRmOGQ3Mjhi
ZTE2NzNlYmNhZWM2NTAuLjJhNTZhOWQ4NGJiMzllYTU3MWM3YzYyZGI5ZjgzZWVkN2JlNmVjMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTMzNiw2ICszMzYsOCBAQCBtb2R1bGUg
d2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1ERVZJQ0VfT1JJRU5UQVRJ
T04sRW5hYmxlZEF0UnVudGltZV0gRGV2aWNlT3JpZW50YXRpb25FdmVudENvbnN0cnVjdG9yIERl
dmljZU9yaWVudGF0aW9uRXZlbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9REVW
SUNFX09SSUVOVEFUSU9OLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb25kZXZpY2Vv
cmllbnRhdGlvbjsKIAorICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TSxFbmFibGVkQXRSdW50aW1lXSBQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yIFBlZXJDb25uZWN0
aW9uOworCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgICAgICBbQ3VzdG9t
XSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDdmOTUxODBjY2M2OTcyYTNkOTQyZjZlMzI0ZTE4NTQwMzZhYzE4YjMuLjJkZDFkMTY0N2Yy
MGIyOTMwMGIxOGFkN2FmNWM4ZjYxODgxMDNkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIk5h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiU3RyZWFtUmVjb3JkZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpA
QCAtNDEyLDYgKzQxMywxNiBAQCB2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjphZGRS
ZW1vdGVTdHJlYW0oaW50LCBjb25zdCBTdHJpbmcmKQogICAgIC8vIEZJWE1FOiB0byBiZSBpbXBs
ZW1lbnRlZC4KIH0KIAorUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgY29u
ZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxsaW5nQ2FsbGJhY2s+IHNpZ25hbGxpbmdDYWxs
YmFjaykKK3sKKyAgICBpbnQgY2xpZW50SWQgPSBtX2NsaWVudHMuZ2V0TmV4dElkKCk7CisgICAg
UmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IFBlZXJDb25uZWN0aW9uOjpj
cmVhdGUodGhpcywgY2xpZW50SWQsIGNvbmZpZ3VyYXRpb24sIHNpZ25hbGxpbmdDYWxsYmFjayk7
CisgICAgbV9jbGllbnRzLmFkZChjbGllbnRJZCwgcGVlckNvbm5lY3Rpb24uZ2V0KCkpOworICAg
IHJldHVybiBwZWVyQ29ubmVjdGlvbjsKK30KKworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgKaW5kZXggM2MzMjA1NWE4YWI3NjJjNTAw
NmVjMmFlNzAzOTJkY2NlZGRlZjM3NC4uYTVhNWY1MjE1MjNmN2UzMzEyZDFkMmJiMWU1OWVmNWMw
MDM0MWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIuaApAQCAtNDUsOCArNDUsMTAgQEAgY2xhc3MgTXVsdGlwbGVUcmFja0xpc3Q7CiBj
bGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOwogY2xhc3MgTmF2aWdhdG9yVXNl
ck1lZGlhU3VjY2Vzc0NhbGxiYWNrOwogY2xhc3MgUGFnZTsKK2NsYXNzIFBlZXJDb25uZWN0aW9u
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwor
Y2xhc3MgU2lnbmFsbGluZ0NhbGxiYWNrOwogY2xhc3MgU3RyZWFtOwogY2xhc3MgU3RyZWFtUmVj
b3JkZXI7CiAKQEAgLTE5OCw2ICsyMDAsOSBAQCBwdWJsaWM6CiAgICAgLy8gQXNrcyB0byBjcmVh
dGUgYSBuZXcgcmVtb3RlIHN0cmVhbSBvYmplY3QgaW4gdGhlIGNvbnRleHQgb2YgYSBwZWVyIGNv
bm5lY3Rpb24uCiAgICAgdm9pZCBhZGRSZW1vdGVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQs
IGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOwogCisgICAgLy8gQ3JlYXRlcyBhIG5ldyBQZWVy
Q29ubmVjdGlvbiBvYmplY3QuCisgICAgUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gY3JlYXRl
UGVlckNvbm5lY3Rpb24oY29uc3QgQXRvbWljU3RyaW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVm
UHRyPFNpZ25hbGxpbmdDYWxsYmFjaz4pOworCiBwcml2YXRlOgogICAgIGNsYXNzIFJlcXVlc3Q7
CiAgICAgY2xhc3MgR2VuZXJhdGVTdHJlYW1SZXF1ZXN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90180</attachid>
            <date>2011-04-19 04:53:19 -0700</date>
            <delta_ts>2011-05-19 07:54:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58787-20110419135316.patch</filename>
            <type>text/plain</type>
            <size>58464</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQuZGVyaXZlZC5qc2NiaW5kaW5ncy5t
ayBiL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQuZGVyaXZlZC5qc2NiaW5kaW5ncy5tawppbmRleCAz
MTkzNzYzM2I1MTY2ZTNkOWQyZjI4YWQ2ODgwYjg2NTcxYTVmYWI3Li44NTZmNzk3YzVkMzJkNDg2
ODJkODUwYjMzMzU5MGM4ZWMxMjg2YTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9BbmRy
b2lkLmRlcml2ZWQuanNjYmluZGluZ3MubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5k
ZXJpdmVkLmpzY2JpbmRpbmdzLm1rCkBAIC0xMzEsMTEgKzEzMSwxMyBAQCBHRU4gOj0gXAogICAg
ICQoaW50ZXJtZWRpYXRlcykvZG9tL0pTTm90YXRpb24uaCBcCiAgICAgJChpbnRlcm1lZGlhdGVz
KS9kb20vSlNPdmVyZmxvd0V2ZW50LmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvZG9tL0pTUGFn
ZVRyYW5zaXRpb25FdmVudC5oIFwKKyAgICAkKGludGVybWVkaWF0ZXMpL2RvbS9KU1BlZXJDb25u
ZWN0aW9uLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvZG9tL0pTUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvZG9tL0pTUHJvZ3Jlc3NFdmVudC5oIFwKICAg
ICAkKGludGVybWVkaWF0ZXMpL2RvbS9KU1JhbmdlLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykv
ZG9tL0pTUmFuZ2VFeGNlcHRpb24uaCBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9kb20vSlNTdHJl
YW0uaCBcCisgICAgJChpbnRlcm1lZGlhdGVzKS9kb20vSlNTdHJlYW1MaXN0LmggXAogICAgICQo
aW50ZXJtZWRpYXRlcykvZG9tL0pTU3RyZWFtUmVjb3JkZXIuaCBcCiAgICAgJChpbnRlcm1lZGlh
dGVzKS9kb20vSlNUZXh0LmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvZG9tL0pTVGV4dEV2ZW50
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGlu
Z3MubWsgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5tawppbmRl
eCA4NGU3YmEyZGJkYjM3YTJmZTc4NzI2MjM3YjJiYTlmMzQwNjQxYjllLi5iNTE3MThmYjgzMzU3
MTVmNWNjMzIxZDFkNDE5NmZiOGUxNmFkY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5taworKysgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lk
LmRlcml2ZWQudjhiaW5kaW5ncy5tawpAQCAtMTEyLDEwICsxMTIsMTIgQEAgR0VOIDo9IFwKICAg
ICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4Tm90YXRpb24uaCBcCiAgICAgJChpbnRlcm1l
ZGlhdGVzKS9iaW5kaW5ncy9WOE92ZXJmbG93RXZlbnQuaCBcCiAgICAgJChpbnRlcm1lZGlhdGVz
KS9iaW5kaW5ncy9WOFBhZ2VUcmFuc2l0aW9uRXZlbnQuaCBcCisgICAgJChpbnRlcm1lZGlhdGVz
KS9iaW5kaW5ncy9WOFBlZXJDb25uZWN0aW9uLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvYmlu
ZGluZ3MvVjhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9i
aW5kaW5ncy9WOFByb2dyZXNzRXZlbnQuaCBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5n
cy9WOFJhbmdlLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3MvVjhSYW5nZUV4Y2Vw
dGlvbi5oIFwKKyAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4U3RyZWFtTGlzdC5oIFwK
ICAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4U3RyZWFtLmggXAogICAgICQoaW50ZXJt
ZWRpYXRlcykvYmluZGluZ3MvVjhTdHJlYW1SZWNvcmRlci5oIFwKICAgICAkKGludGVybWVkaWF0
ZXMpL2JpbmRpbmdzL1Y4VGV4dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJv
aWQuanNjYmluZGluZ3MubWsgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdzLm1r
CmluZGV4IDFlODRlOGM1YTE5NTdiNGFiYTI4YjM1NzIzMWIxZDAyNDIxNDE2MDUuLjQ3YWIyZjJj
ODE1MTQ4MmRiNzFmYWU4YTk3MDk0ZWYyOTg4NWM0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5q
c2NiaW5kaW5ncy5tawpAQCAtMTQ5LDYgKzE0OSw3IEBAIExPQ0FMX1NSQ19GSUxFUyArPSBcCiAJ
YmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIFwKIAliaW5kaW5ncy9qcy9KU05v
ZGVMaXN0Q3VzdG9tLmNwcCBcCiAJYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAg
XAorCWJpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIFwKIAliaW5kaW5ncy9q
cy9KU1BsdWdpbkFycmF5Q3VzdG9tLmNwcCBcCiAJYmluZGluZ3MvanMvSlNQbHVnaW5DdXN0b20u
Y3BwIFwKIAliaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lk
Lm1rCmluZGV4IGNjNjY3YzM1ZWVkNjhmOGI2NjQ2M2JmYmI4ZDQwMThhZDU5MzA0OWMuLjI2YWEw
Y2I3MjVlNGNlZmEwNjU4ZTZhZGJlN2EyZTA1ODcwYTI1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpAQCAtMTYz
LDYgKzE2Myw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWRv
bS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCBcCiAJZG9tL092ZXJmbG93RXZlbnQuY3BwIFwK
IAlkb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXAorCWRvbS9QZWVyQ29ubmVjdGlvbi5jcHAg
XAogCWRvbS9QZW5kaW5nU2NyaXB0LmNwcCBcCiAJZG9tL1Bvc2l0aW9uLmNwcCBcCiAJZG9tL1Bv
c2l0aW9uSXRlcmF0b3IuY3BwIFwKQEAgLTE4Miw3ICsxODMsOSBAQCBMT0NBTF9TUkNfRklMRVMg
Oj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgXAogCWRv
bS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIFwKIAlkb20vU3RhdGljTm9kZUxpc3QuY3BwIFwK
Kwlkb20vU3RhdGljU3RyZWFtTGlzdC5jcHAgXAogCWRvbS9TdHJlYW0uY3BwIFwKKwlkb20vU3Ry
ZWFtTGlzdC5jcHAgXAogCWRvbS9TdHJlYW1SZWNvcmRlci5jcHAgXAogCWRvbS9TdHJpbmdDYWxs
YmFjay5jcHAgXAogCWRvbS9TdHlsZUVsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tayBiL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQudjhi
aW5kaW5ncy5tawppbmRleCA5MWI5ZWFhMmQyZDQwYzNkZDg1NzAxMDBmNWExOTdjMTE3MjQzOWE1
Li40ZTZhYjMyNjU1YWM1ZTM1OWQwODA2MGNjMzVjMGVjZDAzOGIzNjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsKKysrIGIvU291cmNlL1dlYkNvcmUv
QW5kcm9pZC52OGJpbmRpbmdzLm1rCkBAIC0xNDgsNiArMTQ4LDcgQEAgTE9DQUxfU1JDX0ZJTEVT
ICs9IFwKIAliaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlRmlsdGVyQ3VzdG9tLmNwcCBcCiAJYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCBcCiAJYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwIFwKKwliaW5kaW5ncy92OC9jdXN0b20vVjhQZWVy
Q29ubmVjdGlvbkN1c3RvbS5jcHAgXAogCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJlc3VsdFNl
dFJvd0xpc3RDdXN0b20uY3BwIFwKIAliaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlv
bkN1c3RvbS5jcHAgXAogCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0cmVhbVJlY29yZGVyQ3VzdG9t
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZGM4NGI2NGU2ODJiOTc1MjAxMmNiYzliMzZiNDExNTM4ODM5
OTU5ZC4uN2Q0ODBiNmE3Nzg1ODBiZDhjOTUzYmVmNDZlNjA4ZGU5MmRkZDIyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY5IEBACisyMDExLTA0LTE4ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15
d0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERyYWZ0IFBlZXJDb25uZWN0aW9uIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODc4NworCisgICAgICAgIE5vdGU6
IE5vdCBmb3Igb2ZmaWNpYWwgcmV2aWV3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUZXN0cyB3
aWxsIGJlIHByb3ZpZGVkIHdoZW4gdGhlIE1lZGlhIFN0cmVhbSBmdW5jdGlvbmFsaXR5IGlzIGxh
bmRlZC4KKworICAgICAgICAqIEFuZHJvaWQuZGVyaXZlZC5qc2NiaW5kaW5ncy5tazoKKyAgICAg
ICAgKiBBbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5tazoKKyAgICAgICAgKiBBbmRyb2lkLmpz
Y2JpbmRpbmdzLm1rOgorICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQW5kcm9pZC52
OGJpbmRpbmdzLm1rOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
VXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnBlZXJDb25uZWN0aW9uRW5hYmxlZCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpKU1BlZXJDb25uZWN0aW9uQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTUGVlckNvbm5l
Y3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3Vz
dG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOFBlZXJDb25uZWN0aW9uOjpjb25z
dHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAq
IGRvbS9QZWVyQ29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlckNv
bm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6UGVl
ckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246On5QZWVyQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJlYW1z
KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpzaWduYWxpbmdNZXNzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjphZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b246OnJlbW92ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6Y2xv
c2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnRvUGVlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmV2ZW50VGFyZ2V0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRh
KToKKyAgICAgICAgKiBkb20vUGVlckNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVy
Q29ubmVjdGlvbjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb246OmRlcmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAqIGRvbS9QZWVyQ29ubmVjdGlvbi5p
ZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9TaWduYWxsaW5nQ2FsbGJhY2suaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTaWduYWxsaW5nQ2FsbGJhY2s6On5TaWduYWxsaW5nQ2FsbGJhY2sp
OgorICAgICAgICAqIGRvbS9TaWduYWxsaW5nQ2FsbGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBkb20vU3RhdGljU3RyZWFtTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3Rh
dGljU3RyZWFtTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1N0cmVhbUxp
c3Q6Oml0ZW0pOgorICAgICAgICAqIGRvbS9TdGF0aWNTdHJlYW1MaXN0Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U3RhdGljU3RyZWFtTGlzdDo6YWRvcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3RhdGljU3RyZWFtTGlzdDo6U3RhdGljU3RyZWFtTGlzdCk6CisgICAgICAgICogZG9tL1N0
cmVhbUxpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHJlYW1MaXN0Ojp+U3RyZWFt
TGlzdCk6CisgICAgICAgICogZG9tL1N0cmVhbUxpc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIuaDoKKwogMjAxMS0wNC0xNSAgTWlrZSBSZWVkICA8cmVlZEBnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IGI3ZGE0NjIyMGFjNWRjYjZlYjE2YTIxMmY4ZjZjOTRkYWY0ZmI5NjEuLjAw
NmEzMDE1NGQzY2Q3OGU3ZDIwZjkyZTVjNWJlNTQ2MTEyMDcwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtNDE3LDYgKzQxNyw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5oIFwKKwlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUGVlckNvbm5lY3Rpb24uY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
UGVlckNvbm5lY3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNl
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlLmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIFwKQEAgLTQ1NSw2
ICs0NTcsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNTcGVlY2hJbnB1dFJlc3VsdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
U3BlZWNoSW5wdXRSZXN1bHRMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Nw
ZWVjaElucHV0UmVzdWx0TGlzdC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU3RyZWFt
TGlzdC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTdHJlYW1MaXN0LmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTUUxFeGNlcHRpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1NRTFJlc3VsdFNldFJvd0xpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIFwKQEAgLTc4Nyw2ICs3OTEsNyBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxp
c3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0
cnVjdG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1
Y3Rvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3Vz
dG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50
RnVuY3Rpb25zLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUHJvY2Vzc2luZ0lu
c3RydWN0aW9uQ3VzdG9tLmNwcCBcCkBAIC0xMjI5LDYgKzEyMzQsOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0
aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Bl
bmRpbmdTY3JpcHQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwIFwK
QEAgLTEyNzIsOCArMTI3OSwxMSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1N0
YXRpY05vZGVMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNTdHJlYW1MaXN0LmNwcCBcCisJU291cmNlL1dl
YkNvcmUvZG9tL1N0YXRpY1N0cmVhbUxpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1N0cmVh
bS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW0uaCBcCisJU291cmNlL1dlYkNvcmUv
ZG9tL1N0cmVhbUxpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbVJlY29yZGVyLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbVJlY29yZGVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9V
c2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggMDZlZjVmOGIy
M2JhMzlmMjkyNWI0MGM3OWZhZmVhYTY5ZDI1MTZkMC4uYjk5YjA0ZjU2ZWEzZWYwMmM5MWZjNzBj
ZjAxYWIyYjY4NjRlYjgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMTEwLDYgKzExMCw3IEBAIExJ
U1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9y
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCiAgICAgYmlu
ZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU1BlZXJD
b25uZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5j
cHAKICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggY2U1OTZjNjdjMmY4OTQ0Y2YyOGI1NWJhNGU5ZDEwZGI1OWFjYjAzNy4u
YWM2N2YxN2I0MzcxZTk2M2IzZDIyNTRhZGY4N2M0YTZiZjQyOGMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMTE0MSwxMyArMTE0MSwxNiBAQAogICAgICAgICAgICAgJ2RvbS9Ob3RhdGlvbi5pZGwn
LAogICAgICAgICAgICAgJ2RvbS9PdmVyZmxvd0V2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9t
L1BhZ2VUcmFuc2l0aW9uRXZlbnQuaWRsJywKKyAgICAgICAgICAgICdkb20vUGVlckNvbm5lY3Rp
b24uaWRsJywKICAgICAgICAgICAgICdkb20vUG9wU3RhdGVFdmVudC5pZGwnLAogICAgICAgICAg
ICAgJ2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsJywKICAgICAgICAgICAgICdkb20vUHJv
Z3Jlc3NFdmVudC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9SYW5nZS5pZGwnLAogICAgICAgICAg
ICAgJ2RvbS9SYW5nZUV4Y2VwdGlvbi5pZGwnLAogICAgICAgICAgICAgJ2RvbS9SZXF1ZXN0QW5p
bWF0aW9uRnJhbWVDYWxsYmFjay5pZGwnLAorICAgICAgICAgICAgJ2RvbS9TaWduYWxsaW5nQ2Fs
bGJhY2suaWRsJywKICAgICAgICAgICAgICdkb20vU3RyZWFtLmlkbCcsCisgICAgICAgICAgICAn
ZG9tL1N0cmVhbUxpc3QuaWRsJywKICAgICAgICAgICAgICdkb20vU3RyZWFtUmVjb3JkZXIuaWRs
JywKICAgICAgICAgICAgICdkb20vU3RyaW5nQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdk
b20vVGV4dC5pZGwnLApAQCAtMTgzMSw2ICsxODM0LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNP
cHRpb25Db25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTT3B0aW9u
Q29uc3RydWN0b3IuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlv
bkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1
bmN0aW9ucy5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTUUxSZXN1bHRT
ZXRSb3dMaXN0Q3VzdG9tLmNwcCcsCkBAIC0yMTQyLDYgKzIxNDYsNyBAQAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAnLAorICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1
c3RvbS5jcHAnLApAQCAtMjUxNCw2ICsyNTE5LDggQEAKICAgICAgICAgICAgICdkb20vT3ZlcmZs
b3dFdmVudC5oJywKICAgICAgICAgICAgICdkb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAnLAog
ICAgICAgICAgICAgJ2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmgnLAorICAgICAgICAgICAgJ2Rv
bS9QZWVyQ29ubmVjdGlvbi5jcHAnLAorICAgICAgICAgICAgJ2RvbS9QZWVyQ29ubmVjdGlvbi5o
JywKICAgICAgICAgICAgICdkb20vUGVuZGluZ1NjcmlwdC5jcHAnLAogICAgICAgICAgICAgJ2Rv
bS9Qb3BTdGF0ZUV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1BvcFN0YXRlRXZlbnQuaCcs
CkBAIC0yNTQ4LDEyICsyNTU1LDE2IEBACiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuY3Bw
JywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5oJywKICAgICAgICAgICAgICdkb20vU3Bh
Y2VTcGxpdFN0cmluZy5jcHAnLAorICAgICAgICAgICAgJ2RvbS9TaWduYWxsaW5nQ2FsbGJhY2su
aCcsCiAgICAgICAgICAgICAnZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAnLAogICAgICAg
ICAgICAgJ2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCcsCiAgICAgICAgICAgICAnZG9tL1N0
YXRpY05vZGVMaXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1N0YXRpY05vZGVMaXN0LmgnLAor
ICAgICAgICAgICAgJ2RvbS9TdGF0aWNTdHJlYW1MaXN0LmNwcCcsCisgICAgICAgICAgICAnZG9t
L1N0YXRpY1N0cmVhbUxpc3QuaCcsCiAgICAgICAgICAgICAnZG9tL1N0cmVhbS5jcHAnLAogICAg
ICAgICAgICAgJ2RvbS9TdHJlYW0uaCcsCisgICAgICAgICAgICAnZG9tL1N0cmVhbUxpc3QuaCcs
CiAgICAgICAgICAgICAnZG9tL1N0cmVhbVJlY29yZGVyLmNwcCcsCiAgICAgICAgICAgICAnZG9t
L1N0cmVhbVJlY29yZGVyLmgnLAogICAgICAgICAgICAgJ2RvbS9TdHJpbmdDYWxsYmFjay5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwppbmRleCA0ZDM3Y2Q0ZGIyZjA5N2Y2MmVhOTY0YzEyNjFhNTIzY2QyYzlj
ZTc5Li5hNjA4MjAyZWUxYjdjMjQxNWI3NTA1OWU4YmNiNDczYzg0MjFiMmYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwpAQCAtMzI3LDYgKzMyNyw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNOb2Rl
SXRlcmF0b3JDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3Rv
bS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcCBcCisg
ICAgICAgIGJpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwIFwKQEAgLTMxNDUsNyArMzE0Niwx
MCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RSRUFNPTEpIHsKICAgICAgICAg
ZG9tL0V4Y2x1c2l2ZVRyYWNrTGlzdC5oIFwKICAgICAgICAgZG9tL0dlbmVyYXRlZFN0cmVhbS5o
IFwKICAgICAgICAgZG9tL011bHRpcGxlVHJhY2tMaXN0LmggXAorICAgICAgICBkb20vUGVlckNv
bm5lY3Rpb24uaCBcCisgICAgICAgIGRvbS9TdGF0aWNTdHJlYW1MaXN0LmggXAogICAgICAgICBk
b20vU3RyZWFtLmggXAorICAgICAgICBkb20vU3RyZWFtTGlzdC5oIFwKICAgICAgICAgZG9tL1N0
cmVhbVJlY29yZGVyLmggXAogICAgICAgICBkb20vVHJhY2tMaXN0LmggXAogICAgICAgICBmaWxl
YXBpL0Jsb2JDYWxsYmFjay5oIFwKQEAgLTMxNjMsNyArMzE2NywxMCBAQCBjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfTUVESUFfU1RSRUFNPTEpIHsKICAgICAgICAgZG9tL0V4Y2x1c2l2ZVRyYWNr
TGlzdC5jcHAgXAogICAgICAgICBkb20vR2VuZXJhdGVkU3RyZWFtLmNwcCBcCiAgICAgICAgIGRv
bS9NdWx0aXBsZVRyYWNrTGlzdC5jcHAgXAorICAgICAgICBkb20vUGVlckNvbm5lY3Rpb24uY3Bw
IFwKKyAgICAgICAgZG9tL1N0YXRpY1N0cmVhbUxpc3QuY3BwIFwKICAgICAgICAgZG9tL1N0cmVh
bS5jcHAgXAorICAgICAgICBkb20vU3RyZWFtTGlzdC5jcHAgXAogICAgICAgICBkb20vU3RyZWFt
UmVjb3JkZXIuY3BwIFwKICAgICAgICAgZG9tL1RyYWNrTGlzdC5jcHAgXAogICAgICAgICBwYWdl
L01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgXApAQCAtMzE3NCwxMCArMzE4MSwxMiBAQCBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RSRUFNPTEpIHsKICAgICB2OCB7CiAgICAgICAg
IFNPVVJDRVMgKz0gXAogICAgICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9y
Q3VzdG9tLmNwcCBcCisgICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVj
dGlvbkN1c3RvbS5jcHAgXAogICAgICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RyZWFt
UmVjb3JkZXJDdXN0b20uY3BwCiAKICAgICB9IGVsc2UgewogICAgICAgICBTT1VSQ0VTICs9IFwK
KyAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIFwKICAg
ICAgICAgICAgIGJpbmRpbmdzL2pzL0pTU3RyZWFtUmVjb3JkZXJDdXN0b20uY3BwCiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAz
ZDYxNjQyOWYxMjliZDYyZTc1ZDE1NWNiNGY4NTI4YTA2NzBhOTYzLi4xZGYzMzE2N2JlNWYyZGQw
NGMwZGFkYTNmZGM2YTRmOGUzYmM4ZjQ2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMTI3MTgsNiArMTI3MTgsNjIgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1BlZXJDb25uZWN0aW9uLmNw
cCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMy
IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fp
cm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJE
ZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlBy
b2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU1BlZXJDb25uZWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJ
CQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNQZXJmb3JtYW5jZS5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgpAQCAtMTM5NTAsNiArMTQwMDYsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1N0cmVhbUxpc3QuY3BwIgorCQkJCT4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTU3RyZWFt
TGlzdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTU3RyZWFtUmVjb3JkZXIuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAg
LTQ2MjkwLDYgKzQ2NDAyLDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQZWVyQ29ubmVjdGlvbi5jcHAiCisJCQkJPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQZWVyQ29ubmVj
dGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llxkb21cUGVuZGluZ1NjcmlwdC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpA
QCAtNDczNzgsNiArNDc1NDYsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0YXRpY1N0cmVhbUxpc3QuY3BwIgorCQkJCT4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU3RhdGlj
U3RyZWFtTGlzdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxkb21cU3RyZWFtLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBA
IC00NzQzNCw2ICs0NzY1OCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cU3RyZWFtTGlzdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU3RyZWFtUmVjb3JkZXIuY3BwIgogCQkJ
CT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTYyNzA5LDYgKzYyOTM3LDU4IEBACiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5n
c1xqc1xKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgor
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fp
cm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+
CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgor
CQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
CU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oCmluZGV4IDEwMDRlYTRhN2E4YThkNDI3NWVmZWQ4MjA1MWYyZjQxNGMwOWI1N2QuLjFl
MTQxYWRiOWU3MDA1MWNiMjgzYmE1ZWRhZGExOGM0MmM2ZWJlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
CkBAIC0xNDgsNiArMTQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIG1lZGlhU3RyZWFt
RW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9CiAgICAgc3RhdGljIHZv
aWQgc2V0TWVkaWFTdHJlYW1FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzTWVkaWFTdHJlYW1F
bmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgc3RhdGljIGJvb2wgd2Via2l0R2V0VXNlck1lZGlh
RW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9CisgICAgc3RhdGljIGJv
b2wgcGVlckNvbm5lY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7
IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggY2Y4Y2Y3NzA5MzY5NmVkYmNmOGEzNWUxZGRk
MWQzOTcxNWNlZTllZS4uZGEzYzQ1NTUwMTM5NTQxZjNjODM4MzI1NzYzMDNhMWQ2NmUxY2FlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwCkBAIC0xMjUsNiArMTI1LDcgQEAKICNpbmNsdWRlICJKU05vZGVJdGVyYXRvckN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNPcHRpb25D
b25zdHJ1Y3Rvci5jcHAiCisjaW5jbHVkZSAiSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCIKICNpbmNsdWRlICJKU1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dM
aXN0Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
ZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ4MGZkMDZkZjkzZDBiZTNjYWI2
MGQ1YTRlNTY3Njg3MGQ3NjQzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQZWVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVk
ZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU2lnbmFsbGluZ0NhbGxiYWNrLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3RKU1BlZXJDb25uZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1BlZXJD
b25uZWN0aW9uQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU1BlZXJD
b25uZWN0aW9uQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgCisgICAgU3RyaW5nIGNv
bmZpZ3VyYXRpb24gPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisKKyAgICBSZWZQdHI8U2lnbmFsbGluZ0NhbGxiYWNrPiBzaWduYWxsaW5n
Q2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1NpZ25hbGxpbmdDYWxsYmFj
az4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIEZyYW1lKiBmcmFt
ZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5m
cmFtZSgpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IFBl
ZXJDb25uZWN0aW9uOjpjcmVhdGUoY29uZmlndWFyYXRpb24sIHNpZ25hbGxpbmdDYWxsYmFjayk7
CisgICAgaWYgKCFwZWVyQ29ubmVjdGlvbi5nZXQoKSkKKyAgICAgICAgLy8gRXhjZXB0aW9uIGhh
cyBhbHJlYWR5IGJlZW4gdGhyb3duLgorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhl
YywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIHBlZXJDb25uZWN0aW9uLmdldCgpKSkp
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25D
dXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhYmMwZjZlZWIzZTE3YjNlOWRmNzA2MjE2NTQ5MTAxNGNm
ZDEwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQZWVyQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFNpZ25hbGxpbmdDYWxs
YmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFBlZXJDb25uZWN0aW9uOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uUGVlckNvbm5lY3Rpb24uQ29uc3RydWN0b3Ii
KTsKKworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1
bmN0aW9uLiIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKKworICAgIGludCBhcmdMZW5ndGggPSBh
cmdzLkxlbmd0aCgpOworICAgIGlmIChhcmdMZW5ndGggIT0gMikKKyAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoIlRoZSBQZWVyQ29ubmVjdGlvbiBjb25zdHJ1Y3RvciB0YWtlcyB0d28gYXJndW1l
bnRzLiIsIFY4UHJveHk6OlJhbmdlRXJyb3IpOworCisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxs
KGFyZ3NbMF0pIHx8IGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKQorICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcigiVGhlIFBlZXJDb25uZWN0aW9uIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBlbXB0
eS4iLCBWOFByb3h5OjpSYW5nZUVycm9yKTsKKyAgICAgIAorICAgIHY4OjpUcnlDYXRjaCBleGNl
cHRpb25DYXRjaGVyOworICAgIEF0b21pY1N0cmluZyBjb25maWd1cmF0aW9uID0gdjhWYWx1ZVRv
QXRvbWljV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKyAgICBpZiAoZXhjZXB0aW9uQ2F0Y2hlci5I
YXNDYXVnaHQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhjZXB0aW9uQ2F0Y2hlci5F
eGNlcHRpb24oKSk7CisKKyAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOworICAgIFJlZlB0cjxT
aWduYWxsaW5nQ2FsbGJhY2s+IHNpZ25hbGxpbmdDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25s
eUNhbGxiYWNrPFY4U2lnbmFsbGluZ0NhbGxiYWNrPihhcmdzWzFdLCBzdWNjZWVkZWQpOworICAg
IGlmICghc3VjY2VlZGVkKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAg
RnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckN1cnJlbnRDb250ZXh0KCk7
CisKKyAgICBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyID0gZnJh
bWUgPyBmcmFtZS0+bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSA6IDA7CisgICAgUmVmUHRy
PFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbjsKKyAgICBpZiAoZnJhbWVDb250cm9sbGVy
KQorICAgICAgICBwZWVyQ29ubmVjdGlvbiA9IGZyYW1lQ29udHJvbGxlci0+Y3JlYXRlUGVlckNv
bm5lY3Rpb24oY29uZmlndXJhdGlvbiwgc2lnbmFsbGluZ0NhbGxiYWNrKTsKKworICAgIGlmICgh
cGVlckNvbm5lY3Rpb24uZ2V0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJBIFBlZXJD
b25uZWN0aW9uIG9iamVjdCBjb3VsZCBub3QgYmUgY3JlYXRlZC4iLCBWOFByb3h5OjpSYW5nZUVy
cm9yKTsKKyAgICAKKyAgICAvLyBUcmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBv
YmplY3QuCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZp
bmZvLCBwZWVyQ29ubmVjdGlvbi5nZXQoKSk7CisgICAgcmV0dXJuIHRvVjgocGVlckNvbm5lY3Rp
b24ucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
CmluZGV4IGVjZTJhMDhmZGU5MzhlZDBjZjM1NDdlZjE4ZDg1YzAyOGI3YzRkNDMuLmI5N2NkMzc2
YjdlNjM0YWZjMzgzNTc4ZTgwZjYzYWQxZTFmOGQzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aApAQCAtMTc5LDYgKzE3OSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAgIG1h
Y3JvKGF1ZGlvcHJvY2VzcykgXAogICAgIFwKKyAgICBtYWNybyhjb25uZWN0aW5nKSBcCisgICAg
bWFjcm8oYWRkc3RyZWFtKSBcCisgICAgbWFjcm8ocmVtb3Zlc3RyZWFtKSBcCisgICAgXAorCiAv
LyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKICAgICBjbGFzcyBFdmVudE5hbWVz
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkODlkNWFl
NGQwZjg4ZmNhMTQ5ZDc2N2I2ZTRhYTE1ODFhNTg4YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5o
IgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlN0YXRpY1N0cmVhbUxp
c3QuaCIKKyNpbmNsdWRlICJTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNz
UmVmUHRyPFBlZXJDb25uZWN0aW9uPiBQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBpZCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGxpbmdDYWxsYmFjaz4gc2lnbmFs
bGluZ0NhbGxiYWNrKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVlckNvbm5lY3Rpb24o
ZnJhbWVDb250cm9sbGVyLCBpZCwgY29uZmlndXJhdGlvbiwgc2lnbmFsbGluZ0NhbGxiYWNrKSk7
Cit9CisKK1BlZXJDb25uZWN0aW9uOjpQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgY29u
ZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxsaW5nQ2FsbGJhY2s+KQorICAgIDogUGVlckNv
bm5lY3Rpb25DbGllbnQoZnJhbWVDb250cm9sbGVyLCBpZCksIG1fcmVhZHlTdGF0ZShORVcpCit7
Cit9CisKK1BlZXJDb25uZWN0aW9uOjp+UGVlckNvbm5lY3Rpb24oKQoreworfQorCitQYXNzUmVm
UHRyPFN0cmVhbUxpc3Q+IFBlZXJDb25uZWN0aW9uOjpsb2NhbFN0cmVhbXMoKQoreworICAgIHJl
dHVybiBTdGF0aWNTdHJlYW1MaXN0OjphZG9wdChtX2xvY2FsU3RyZWFtcyk7Cit9CisKK1Bhc3NS
ZWZQdHI8U3RyZWFtTGlzdD4gUGVlckNvbm5lY3Rpb246OnJlbW90ZVN0cmVhbXMoKQoreworICAg
IHJldHVybiBTdGF0aWNTdHJlYW1MaXN0OjphZG9wdChtX3JlbW90ZVN0cmVhbXMpOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uOjpzaWduYWxpbmdNZXNzYWdlKGNvbnN0IEF0b21pY1N0cmluZyYg
bWVzc2FnZSkKK3sKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6c2VuZChjb25zdCBBdG9taWNT
dHJpbmcmIHRleHQpCit7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OmFkZFN0cmVhbShTdHJl
YW0qIHN0cmVhbSkKK3sKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlU3RyZWFtKFN0
cmVhbSogc3RyZWFtKQoreworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpjbG9zZSgpCit7Cit9
CisKK1BlZXJDb25uZWN0aW9uKiBQZWVyQ29ubmVjdGlvbjo6dG9QZWVyQ29ubmVjdGlvbigpCit7
CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFBlZXJDb25u
ZWN0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsK
K30KKworRXZlbnRUYXJnZXREYXRhKiBQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkK
K3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEq
IFBlZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAm
bV9ldmVudFRhcmdldERhdGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgyZWM5NjI0YTc2Y2VlNGUwMTMzMmI3YzUyMjU1MjU5ZTE3MDNmNTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaApAQCAtMCww
ICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgUGVlckNvbm5lY3Rpb25faAorI2RlZmluZSBQZWVyQ29ubmVjdGlv
bl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiU2lnbmFsbGluZ0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiU3RyZWFtLmgiCisjaW5jbHVkZSAi
U3RyZWFtTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQZWVyQ29ubmVjdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPiwKKyAgICBwdWJsaWMgRXZlbnRUYXJn
ZXQsCisgICAgcHVibGljIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpQZWVyQ29ubmVjdGlv
bkNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gTXVzdCBtYXRjaCB0aGUgY29uc3RhbnRzIGluIHRo
ZSAuaWRsIGZpbGUuCisgICAgZW51bSB7CisgICAgICAgIE5FVyA9IDAsCisgICAgICAgIE5FR09U
SUFUSU5HID0gMSwKKyAgICAgICAgQUNUSVZFID0gMiwKKyAgICAgICAgQ0xPU0VEID0gMworICAg
IH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gY3JlYXRlKE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGlkLCBjb25zdCBBdG9taWNTdHJpbmcmIGNvbmZp
Z3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsbGluZ0NhbGxiYWNrPik7CisgICAgdmlydHVhbCB+
UGVlckNvbm5lY3Rpb24oKTsKKyAgICAKKyAgICBQYXNzUmVmUHRyPFN0cmVhbUxpc3Q+IGxvY2Fs
U3RyZWFtcygpOworICAgIFBhc3NSZWZQdHI8U3RyZWFtTGlzdD4gcmVtb3RlU3RyZWFtcygpOwor
CisgICAgdm9pZCBzaWduYWxpbmdNZXNzYWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7
CisKKyAgICB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFk
eVN0YXRlOyB9CisKKyAgICB2b2lkIHNlbmQoY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0KTsKKyAg
ICB2b2lkIGFkZFN0cmVhbShTdHJlYW0qKTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbShTdHJlYW0q
KTsKKworICAgIHZvaWQgY2xvc2UoKTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoY29ubmVjdGluZyk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihv
cGVuKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKKyAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKKyAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKG1lc3NhZ2UpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoYWRkc3RyZWFtKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KHJlbW92ZXN0cmVhbSk7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgUGVlckNv
bm5lY3Rpb24qIHRvUGVlckNvbm5lY3Rpb24oKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxl
bWVudGF0aW9uLgorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0OworCisgICAgdXNpbmcgUmVmQ291bnRlZDxQZWVyQ29ubmVj
dGlvbj46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPjo6ZGVyZWY7
CisKK3Byb3RlY3RlZDoKKyAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBF
dmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworCisgICAgdW5zaWduZWQg
c2hvcnQgbV9yZWFkeVN0YXRlOworCitwcml2YXRlOgorICAgIFBlZXJDb25uZWN0aW9uKE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGlkLCBjb25zdCBBdG9taWNTdHJpbmcmIGNvbmZp
Z3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsbGluZ0NhbGxiYWNrPik7CisKKyAgICAvLyBFdmVu
dFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVm
KCk7IH0KKworICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKworICAgIFZl
Y3RvcjxSZWZQdHI8U3RyZWFtPiA+IG1fbG9jYWxTdHJlYW1zOworICAgIFZlY3RvcjxSZWZQdHI8
U3RyZWFtPiA+IG1fcmVtb3RlU3RyZWFtczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBQZWVyQ29ubmVj
dGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaWRs
IGIvU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTQ0
MjY2YTNlMTRlZWJjM2RkZTQ2MjQ4NGE1ZGFmMDc1OWRjZmE0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmlkbApAQCAtMCwwICsxLDc4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9k
dWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNLAorICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAorICAgICAgICBDdXN0b21Db25zdHJ1
Y3RGdW5jdGlvbiwKKyAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTIsCisgICAgICAgIFY4
Q3VzdG9tQ29uc3RydWN0b3IsCisgICAgICAgIEV2ZW50VGFyZ2V0CisgICAgXSBQZWVyQ29ubmVj
dGlvbiB7CisgICAgICAgIHZvaWQgc2lnbmFsaW5nTWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2Fn
ZSk7CisKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVXID0gMDsKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgTkVHT1RJQVRJTkcgPSAxOworICAgICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBBQ1RJVkUgPSAyOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDTE9TRUQg
PSAzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0
ZTsKKworICAgICAgICB2b2lkIHNlbmQoaW4gRE9NU3RyaW5nIHRleHQpOworICAgICAgICB2b2lk
IGFkZFN0cmVhbShpbiBTdHJlYW0gc3RyZWFtKTsKKyAgICAgICAgdm9pZCByZW1vdmVTdHJlYW0o
aW4gU3RyZWFtIHN0cmVhbSk7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0cmVhbUxp
c3QgbG9jYWxTdHJlYW1zOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3RyZWFtTGlzdCBy
ZW1vdGVTdHJlYW1zOworCisgICAgICAgIHZvaWQgY2xvc2UoKTsKKworICAgICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmNvbm5lY3Rpbmc7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9ub3BlbjsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsK
KyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbG9zZTsKKyAgICAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25tZXNzYWdlOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbmFkZHN0cmVhbTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1v
dmVzdHJlYW07CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZv
aWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJlbW92
ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBk
aXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhj
ZXB0aW9uKTsKKworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aWduYWxsaW5nQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaWduYWxsaW5nQ2FsbGJh
Y2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZWZiNzQxNzkxZTllMTZlYzVhNmRmZTkxMjEzZTQ5M2ZlMjRhMDli
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpZ25hbGxpbmdDYWxsYmFj
ay5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2lnbmFsbGluZ0Nh
bGxiYWNrX2gKKyNkZWZpbmUgU2lnbmFsbGluZ0NhbGxiYWNrX2gKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFBlZXJDb25uZWN0aW9uOworCitjbGFzcyBTaWduYWxsaW5nQ2FsbGJh
Y2sgOiBwdWJsaWMgUmVmQ291bnRlZDxTaWduYWxsaW5nQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5TaWduYWxsaW5nQ2FsbGJhY2soKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlRXZlbnQoY29uc3QgU3RyaW5nJiwgUGVlckNvbm5lY3Rpb24qKSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
ZW5kaWYgLy8gU2lnbmFsbGluZ0NhbGxiYWNrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaWduYWxsaW5nQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpZ25hbGxp
bmdDYWxsYmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYyZDdhYmJiNDY1NDkwNjc1MWEzNDIzNjlkYTBi
ZTY3MGMwZWNlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaWduYWxs
aW5nQ2FsbGJhY2suaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBj
b3JlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0s
CisgICAgICAgIENhbGxiYWNrPUZ1bmN0aW9uT25seQorICAgIF0gU2lnbmFsbGluZ0NhbGxiYWNr
IHsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4g
UGVlckNvbm5lY3Rpb24gc291cmNlKTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3RhdGljU3RyZWFtTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3Rh
dGljU3RyZWFtTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0ZTQwNzk0NmNmNzBjNmQyM2I2YzU4M2E0
YmQ3NTlkNDc5ODdkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0
aWNTdHJlYW1MaXN0LmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlN0YXRpY1N0cmVhbUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1bnNp
Z25lZCBTdGF0aWNTdHJlYW1MaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0
cmVhbXMuc2l6ZSgpOworfQorCitTdHJlYW0qIFN0YXRpY1N0cmVhbUxpc3Q6Oml0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgbV9zdHJlYW1zLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIG1fc3RyZWFtc1tpbmRleF0uZ2V0KCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dGF0aWNTdHJlYW1MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljU3RyZWFtTGlzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAxYjMzM2QxNTMyOTFiNTAyMGY2OWI4Y2ZhYTEyNjMxOTljMzRkM2QKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljU3RyZWFtTGlzdC5oCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFN0YXRpY1N0cmVhbUxpc3RfaAorI2RlZmluZSBTdGF0aWNT
dHJlYW1MaXN0X2gKKworI2luY2x1ZGUgIlN0cmVhbS5oIgorI2luY2x1ZGUgIlN0cmVhbUxpc3Qu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U3RhdGljU3RyZWFtTGlzdCA6IHB1YmxpYyBTdHJlYW1MaXN0IHsKK3B1YmxpYzoKKyAgICAvLyBB
ZG9wdHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBub2RlcyB2ZWN0b3IuCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RhdGljU3RyZWFtTGlzdD4gYWRvcHQoVmVjdG9yPFJlZlB0cjxTdHJlYW0+ID4mIHN0
cmVhbXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRpY1N0cmVhbUxp
c3Qoc3RyZWFtcykpOworICAgIH0KKworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3Q7CisgICAgdmlydHVhbCBTdHJlYW0qIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OworCitw
cml2YXRlOgorICAgIFN0YXRpY1N0cmVhbUxpc3QoVmVjdG9yPFJlZlB0cjxTdHJlYW0+ID4mIHN0
cmVhbXMpCisgICAgeworICAgICAgICBtX3N0cmVhbXMuc3dhcChzdHJlYW1zKTsKKyAgICB9CisK
KyAgICBWZWN0b3I8UmVmUHRyPFN0cmVhbT4gPiBtX3N0cmVhbXM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTdGF0aWNTdHJlYW1MaXN0X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3Ry
ZWFtTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiOTAxZjRlN2UzY2I5NDI2OGU0YWJhMjRiOWEwMDg3Y2I3
NTdjMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtTGlzdC5o
CkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0cmVhbUxpc3RfaAorI2RlZmluZSBTdHJlYW1MaXN0
X2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHJlYW07CisKK2NsYXNzIFN0cmVh
bUxpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHJlYW1MaXN0PiB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+U3RyZWFtTGlzdCgpIHsgfQorCisgICAgLy8gRE9NIG1ldGhvZHMgJiBhdHRyaWJ1dGVz
IGZvciBOb2RlTGlzdAorICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgU3RyZWFtKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCA9IDA7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTdHJlYW1MaXN0X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1MaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHJlYW1MaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzlkMmM0YmRkYTU2M2NkZTEzNzM4YTU3
YmZmNGM5MTM4MDY2NmNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0
cmVhbUxpc3QuaWRsCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZh
Y2UgWworICAgICAgICBIYXNJbmRleEdldHRlcgorICAgIF0gU3RyZWFtTGlzdCB7CisKKyAgICAg
ICAgU3RyZWFtIGl0ZW0oaW4gW0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworCisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKworICAgIH07CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCBhZGQ2NmRjZWQyMDY0ZDYxOTFkZjhk
NzI4YmUxNjczZWJjYWVjNjUwLi4yYTU2YTlkODRiYjM5ZWE1NzFjN2M2MmRiOWY4M2VlZDdiZTZl
YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0zMzYsNiArMzM2LDggQEAgbW9k
dWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9REVWSUNFX09SSUVO
VEFUSU9OLEVuYWJsZWRBdFJ1bnRpbWVdIERldmljZU9yaWVudGF0aW9uRXZlbnRDb25zdHJ1Y3Rv
ciBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OwogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFs
PURFVklDRV9PUklFTlRBVElPTixFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9uZGV2
aWNlb3JpZW50YXRpb247CiAKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1NRURJQV9T
VFJFQU0sRW5hYmxlZEF0UnVudGltZV0gUGVlckNvbm5lY3Rpb25Db25zdHJ1Y3RvciBQZWVyQ29u
bmVjdGlvbjsKKwogICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICAgICAgW0N1
c3RvbV0gdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNw
cAppbmRleCBiYTA5MmFjMWQ2ZGRkYTYzNjRlYzY0MmMyOWNlNDkzZGVjMDhhYWI0Li40ZjZlNjM0
NDM2YzRmZGU0YTgyNzllNjNhZTJhYTNiNzdjMmQzZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcApAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgIlN0cmVhbVJlY29yZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KQEAgLTQxNSw2ICs0MTYsMTYgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
YWRkUmVtb3RlU3RyZWFtKGludCwgY29uc3QgU3RyaW5nJikKICAgICAvLyBGSVhNRTogdG8gYmUg
aW1wbGVtZW50ZWQuCiB9CiAKK1Bhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24+IE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25zdCBBdG9taWNTdHJpbmcm
IGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsbGluZ0NhbGxiYWNrPiBzaWduYWxsaW5n
Q2FsbGJhY2spCit7CisgICAgaW50IGNsaWVudElkID0gbV9jbGllbnRzLmdldE5leHRJZCgpOwor
ICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBQZWVyQ29ubmVjdGlv
bjo6Y3JlYXRlKHRoaXMsIGNsaWVudElkLCBjb25maWd1cmF0aW9uLCBzaWduYWxsaW5nQ2FsbGJh
Y2spOworICAgIG1fY2xpZW50cy5hZGQoY2xpZW50SWQsIHBlZXJDb25uZWN0aW9uLmdldCgpKTsK
KyAgICByZXR1cm4gcGVlckNvbm5lY3Rpb247Cit9CisKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCmluZGV4IDE2MGFkNDk3YTI2NTEz
ZmY2NzI1OWMxOGJjMTU3ZjBkM2U4MmM3MTIuLmY2ZDQ1ZDY0OTZhNGUyYWIxNTNkYzZkYzE1MTEz
YmUyYzcxMTAyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmgKQEAgLTQ1LDggKzQ1LDEwIEBAIGNsYXNzIE11bHRpcGxlVHJhY2tMaXN0
OwogY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjazsKIGNsYXNzIE5hdmlnYXRv
clVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjazsKIGNsYXNzIFBhZ2U7CitjbGFzcyBQZWVyQ29ubmVj
dGlvbjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKK2NsYXNzIFNpZ25hbGxpbmdDYWxsYmFjazsKIGNsYXNzIFN0cmVhbTsKIGNsYXNzIFN0cmVh
bVJlY29yZGVyOwogCkBAIC0xOTgsNiArMjAwLDkgQEAgcHVibGljOgogICAgIC8vIEFza3MgdG8g
Y3JlYXRlIGEgbmV3IHJlbW90ZSBzdHJlYW0gb2JqZWN0IGluIHRoZSBjb250ZXh0IG9mIGEgcGVl
ciBjb25uZWN0aW9uLgogICAgIHZvaWQgYWRkUmVtb3RlU3RyZWFtKGludCBwZWVyQ29ubmVjdGlv
bklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKIAorICAgIC8vIENyZWF0ZXMgYSBuZXcg
UGVlckNvbm5lY3Rpb24gb2JqZWN0LgorICAgIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24+IGNy
ZWF0ZVBlZXJDb25uZWN0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgY29uZmlndXJhdGlvbiwgUGFz
c1JlZlB0cjxTaWduYWxsaW5nQ2FsbGJhY2s+KTsKKwogcHJpdmF0ZToKICAgICBjbGFzcyBSZXF1
ZXN0OwogICAgIGNsYXNzIEdlbmVyYXRlU3RyZWFtUmVxdWVzdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94070</attachid>
            <date>2011-05-19 07:55:03 -0700</date>
            <delta_ts>2011-06-01 03:17:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58787-20110519165500.patch</filename>
            <type>text/plain</type>
            <size>124039</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY1ODkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL01lZGlhU3RyZWFtL2FkZC1yZW1vdmUtc3RyZWFtcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9hZGQtcmVtb3ZlLXN0cmVhbXMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ4MTFmOTJhMDJkYmU2MDZhOTY2YjBkZmQ0YmZhMGUyY2JkMDk5ZTAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9hZGQtcmVt
b3ZlLXN0cmVhbXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIFBlZXJDb25u
ZWN0aW9uIGxvY2FsIHN0cmVhbSBtYW5hZ2VtZW50IHVzaW5nIHRoZSBtb2NrIHNlcnZpY2UuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBjLmxvY2FsU3RyZWFtcy5sZW5n
dGggaXMgMAorUEFTUyBwYy5sb2NhbFN0cmVhbXMubGVuZ3RoIGlzIDEKK1BBU1MgcGMubG9jYWxT
dHJlYW1zLmxlbmd0aCBpcyAxCitQQVNTIHBjLmxvY2FsU3RyZWFtcy5sZW5ndGggaXMgMAorUEFT
UyBzdHJlYW1zLmxlbmd0aCBpcyAwCitQQVNTIHN0cmVhbXMubGVuZ3RoIGlzIDEKK1BBU1Mgc3Ry
ZWFtcy5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW1zLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbXNb
MF0gaXMgc3RyZWFtCitQQVNTIHN0cmVhbXMubGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9hZGQtcmVtb3ZlLXN0cmVhbXMuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL2FkZC1yZW1vdmUtc3RyZWFtcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE2ZDQ4ZTAwZDNmMzU0NTU0MzFjYzJmMTFkYTIyYzQ0NGJjMDVjMTkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9hZGQtcmVtb3ZlLXN0cmVh
bXMuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2FkZC1yZW1vdmUtc3RyZWFtcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NZWRpYVN0cmVhbS9wZWVyY29ubmVjdGlvbi1hZGQtcmVtb3ZlLXN0cmVhbS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9wZWVyY29ubmVjdGlvbi1hZGQt
cmVtb3ZlLXN0cmVhbS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjljMzM0NDA4NDEwZTdmZDU2
ZGQ4ZTYzNzg3MzNhNzVlZjNmOWU4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL01lZGlhU3RyZWFtL3BlZXJjb25uZWN0aW9uLWFkZC1yZW1vdmUtc3RyZWFtLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyBQZWVyQ29ubmVjdGlvbiBhZGQgYW5kIHJl
bW92ZSBzdHJlYW0gKGJvdGggbG9jYWwgYW5kIHJlbW90ZSkgdXNpbmcgdGhlIG1vY2sgc2Vydmlj
ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3RyZWFtLnJlYWR5U3Rh
dGUgaXMgc3RyZWFtLkxJVkUKK1BBU1MgU3RyZWFtIGFkZGVkCitQQVNTIFN0cmVhbSByZW1vdmVk
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vcGVlcmNvbm5lY3Rpb24t
YWRkLXJlbW92ZS1zdHJlYW0uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFt
L3BlZXJjb25uZWN0aW9uLWFkZC1yZW1vdmUtc3RyZWFtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY5Nzhi
NjA0ZWUwYTE2MjZjYmUzMWVmZTczMzZiYjM0MDJlYzk0MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3BlZXJjb25uZWN0aW9uLWFkZC1yZW1vdmUt
c3RyZWFtLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9wZWVyY29ubmVjdGlvbi1hZGQtcmVtb3Zl
LXN0cmVhbS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9wZWVyY29ubmVjdGlvbi1iYXNpYy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9wZWVyY29ubmVjdGlv
bi1iYXNpYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAyOWI1MjFlMjgzMTVkMDJiYjc4NzVl
ZTkyMzhiN2I2OWUxMTA1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L01lZGlhU3RyZWFtL3BlZXJjb25uZWN0aW9uLWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitUZXN0cyBQZWVyQ29ubmVjdGlvbiBjbG9zZSgpIHVzaW5nIHRoZSBtb2NrIHNlcnZp
Y2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBjLnJlYWR5U3RhdGUg
aXMgUGVlckNvbm5lY3Rpb24uTkVXCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFT
dHJlYW0vcGVlcmNvbm5lY3Rpb24tYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01l
ZGlhU3RyZWFtL3BlZXJjb25uZWN0aW9uLWJhc2ljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZlY2U1OTA2
Y2E2YTZhNTYzMGJjNjk0OTdhMzg0ZWQ5ZjFkNGZhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3BlZXJjb25uZWN0aW9uLWJhc2ljLmh0bWwKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9wZWVyY29ubmVjdGlvbi1iYXNpYy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0
cmVhbS9wZWVyY29ubmVjdGlvbi1tZXNzYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL01lZGlhU3RyZWFtL3BlZXJjb25uZWN0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEyOWU1NzFhM2EyMThhNGY0NGRiZTM3ZGYxMzNhNzYzMDRkOTBmNzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9wZWVyY29ubmVj
dGlvbi1tZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBQZWVyQ29u
bmVjdGlvbiBzZW5kKCkgYW5kIG1lc3NhZ2UgZXZlbnQgdXNpbmcgdGhlIG1vY2sgc2VydmljZS4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXZlbnQuZGF0YSBpcyB0ZXN0
TWVzc2FnZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3BlZXJjb25u
ZWN0aW9uLW1lc3NhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3Bl
ZXJjb25uZWN0aW9uLW1lc3NhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjU5ZjY3ZjI0MzQ4ZDVjZjFk
M2JkYzkxYWZjYTkyYmVjODM5OTU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTWVkaWFTdHJlYW0vcGVlcmNvbm5lY3Rpb24tbWVzc2FnZS5odG1sCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvcGVlcmNvbm5lY3Rpb24tbWVzc2FnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9z
Y3JpcHQtdGVzdHMvYWRkLXJlbW92ZS1zdHJlYW1zLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL2FkZC1yZW1vdmUtc3RyZWFtcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZDI5MmJmNWEyNjU4NjVmMjY4OTZmZDI3MDA5NTNlOTU3YjVmMzU5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL2FkZC1y
ZW1vdmUtc3RyZWFtcy5qcwpAQCAtMCwwICsxLDQzIEBACitkZXNjcmlwdGlvbigiVGVzdHMgUGVl
ckNvbm5lY3Rpb24gbG9jYWwgc3RyZWFtIG1hbmFnZW1lbnQgdXNpbmcgdGhlIG1vY2sgc2Vydmlj
ZS4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KCdhdWRpbycpOworZWxzZQorICAg
IGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENv
bnRyb2xsZXInKTsKKworCitmdW5jdGlvbiBzdHJlYW1DcmVhdGVkKHMpIHsKKyAgICBzdHJlYW0g
PSBzOworICAgIHBjID0gbmV3IFBlZXJDb25uZWN0aW9uKCdmb29iYXInLCBmdW5jdGlvbihtKSB7
fSk7CisKKyAgICBzaG91bGRCZSgncGMubG9jYWxTdHJlYW1zLmxlbmd0aCcgLCAnMCcpOworICAg
IHBjLmFkZFN0cmVhbShzdHJlYW0pOworICAgIHNob3VsZEJlKCdwYy5sb2NhbFN0cmVhbXMubGVu
Z3RoJyAsICcxJyk7CisgICAgcGMuYWRkU3RyZWFtKHN0cmVhbSk7CisgICAgc2hvdWxkQmUoJ3Bj
LmxvY2FsU3RyZWFtcy5sZW5ndGgnICwgJzEnKTsKKyAgICBwYy5yZW1vdmVTdHJlYW0oc3RyZWFt
KTsKKyAgICBzaG91bGRCZSgncGMubG9jYWxTdHJlYW1zLmxlbmd0aCcgLCAnMCcpOworCisgICAg
c3RyZWFtcyA9IHBjLmxvY2FsU3RyZWFtczsKKyAgICBzaG91bGRCZSgnc3RyZWFtcy5sZW5ndGgn
ICwgJzAnKTsKKyAgICBwYy5hZGRTdHJlYW0oc3RyZWFtKTsKKyAgICBzaG91bGRCZSgnc3RyZWFt
cy5sZW5ndGgnICwgJzEnKTsKKyAgICBwYy5hZGRTdHJlYW0oc3RyZWFtKTsKKyAgICBzaG91bGRC
ZSgnc3RyZWFtcy5sZW5ndGgnICwgJzEnKTsKKworICAgIHNob3VsZEJlKCdzdHJlYW1zLmxlbmd0
aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbXNbMF0nLCAnc3RyZWFtJyk7CisKKyAgICBw
Yy5yZW1vdmVTdHJlYW0oc3RyZWFtKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtcy5sZW5ndGgnICwg
JzAnKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCituYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKCdhdWRpbycsIHN0cmVhbUNyZWF0ZWQsIGZ1bmN0aW9uKGUpIHsKKyAgICB0ZXN0RmFp
bGVkKCdFcnJvciBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfSk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL3BlZXJjb25uZWN0aW9uLWFkZC1yZW1vdmUtc3RyZWFt
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL3BlZXJj
b25uZWN0aW9uLWFkZC1yZW1vdmUtc3RyZWFtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0OGIzNmFhNDRiZWJk
MmIzMzhjOTAzMjcwMGE2YmM0ZWRmNmQ1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvcGVlcmNvbm5lY3Rpb24tYWRkLXJl
bW92ZS1zdHJlYW0uanMKQEAgLTAsMCArMSwzOCBAQAorZGVzY3JpcHRpb24oIlRlc3RzIFBlZXJD
b25uZWN0aW9uIGFkZCBhbmQgcmVtb3ZlIHN0cmVhbSAoYm90aCBsb2NhbCBhbmQgcmVtb3RlKSB1
c2luZyB0aGUgbW9jayBzZXJ2aWNlLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQo
J2F1ZGlvJyk7CitlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRo
b3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOworCitmdW5jdGlvbiBzdHJlYW1BZGRlZChl
KQoreworICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBhZGRlZCcpOworfQorCitmdW5jdGlvbiBzdHJl
YW1SZW1vdmVkKGUpCit7CisgICAgdGVzdFBhc3NlZCgnU3RyZWFtIHJlbW92ZWQnKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gc3RyZWFtU3VjY2VzcyhzKSB7CisgICAgc3Ry
ZWFtID0gczsKKyAgICBzaG91bGRCZSgnc3RyZWFtLnJlYWR5U3RhdGUnLCAnc3RyZWFtLkxJVkUn
KTsKKyAgICBwYy5hZGRTdHJlYW0oc3RyZWFtKTsKKyAgICBwYy5yZW1vdmVTdHJlYW0oc3RyZWFt
KTsKK30KKworZnVuY3Rpb24gc3RyZWFtRmFpbGVkKGUpIHsKKyAgICB0ZXN0RmFpbGVkKCdFcnJv
ciBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit2YXIgcGMgPSBuZXcgUGVlckNvbm5lY3Rpb24oJ2NvbmZpZycsIGZ1bmN0aW9uKG0pIHt9
KTsKK3BjLm9uYWRkc3RyZWFtID0gc3RyZWFtQWRkZWQ7CitwYy5vbnJlbW92ZXN0cmVhbSA9IHN0
cmVhbVJlbW92ZWQ7CisKK25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoJ2F1ZGlvJywgc3Ry
ZWFtU3VjY2Vzcywgc3RyZWFtRmFpbGVkKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
Oword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvcGVlcmNvbm5lY3Rpb24tYmFz
aWMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvcGVl
cmNvbm5lY3Rpb24tYmFzaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY5OWE5MTQ1Y2I1OWQ5MjA4NWY0ZGZl
ODJmY2I4ZTViM2U4Yjk3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9wZWVyY29ubmVjdGlvbi1iYXNpYy5qcwpAQCAtMCww
ICsxLDE3IEBACitkZXNjcmlwdGlvbigiVGVzdHMgUGVlckNvbm5lY3Rpb24gY2xvc2UoKSB1c2lu
ZyB0aGUgbW9jayBzZXJ2aWNlLiIpOworCitpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91
dFRlc3RDb250cm9sbGVyJyk7CisKK3ZhciBwYyA9IG5ldyBQZWVyQ29ubmVjdGlvbignY29uZmln
JywgZnVuY3Rpb24obSkge30pOworCitzaG91bGRCZSgncGMucmVhZHlTdGF0ZScsICdQZWVyQ29u
bmVjdGlvbi5ORVcnKTsKKworcGMub25jbG9zZSA9IGZ1bmN0aW9uKCkgeworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCitwYy5jbG9zZSgpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9wZWVyY29ubmVjdGlvbi1tZXNz
YWdlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL3Bl
ZXJjb25uZWN0aW9uLW1lc3NhZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M5ZGEyOTEwNDU2MDJmOGU5YzAw
ZTA3NDQwZmVmYjNlMDkzODI0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9wZWVyY29ubmVjdGlvbi1tZXNzYWdlLmpzCkBA
IC0wLDAgKzEsMjAgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBQZWVyQ29ubmVjdGlvbiBzZW5kKCkg
YW5kIG1lc3NhZ2UgZXZlbnQgdXNpbmcgdGhlIG1vY2sgc2VydmljZS4iKTsKKworaWYgKCF3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJl
IHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOworCitmdW5jdGlvbiBldmVu
dEhhbmRsZXIoZSkKK3sKKyAgICBldmVudCA9IGU7CisgICAgc2hvdWxkQmUoJ2V2ZW50LmRhdGEn
LCAndGVzdE1lc3NhZ2UnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFyIHBjID0gbmV3
IFBlZXJDb25uZWN0aW9uKCdjb25maWcnLCBmdW5jdGlvbihtKSB7fSk7Cit2YXIgdGVzdE1lc3Nh
Z2UgPSAnVGVzdCBtZXNzYWdlJzsKKworcGMub25tZXNzYWdlID0gZXZlbnRIYW5kbGVyOworcGMu
c2VuZCh0ZXN0TWVzc2FnZSk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRv
dy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL3NpZ25hbGluZy1tZXNzYWdlLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL3NpZ25hbGluZy1tZXNz
YWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMwNGY1MTQ4YzA1OGZkZWIzZDQwZDhlNDg1ZjY1ZTkxZTlmOGFk
MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9z
Y3JpcHQtdGVzdHMvc2lnbmFsaW5nLW1lc3NhZ2UuanMKQEAgLTAsMCArMSwyNiBAQAorZGVzY3Jp
cHRpb24oIlRlc3RzIFBlZXJDb25uZWN0aW9uIHNpZ25hbGluZ01lc3NhZ2UgdXNpbmcgdGhlIG1v
Y2sgc2VydmljZS4iKTsKKworaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29u
dHJvbGxlcicpOworCitmdW5jdGlvbiBzZW5kU2lnbmFsaW5nTWVzc2FnZTEobSkKK3sKKyAgICBt
ZXNzYWdlMSA9IG07CisgICAgc2hvdWxkQmUoJ21lc3NhZ2UxJywgJyJUZXN0IG1lc3NhZ2UiJyk7
CisgICAgcGMyLnNpZ25hbGluZ01lc3NhZ2UobWVzc2FnZTEpOworfQorCitmdW5jdGlvbiBzZW5k
U2lnbmFsaW5nTWVzc2FnZTIobSkKK3sKKyAgICBtZXNzYWdlMiA9IG07CisgICAgc2hvdWxkQmUo
J21lc3NhZ2UyJywgJyJUZXN0IG1lc3NhZ2UiJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3ZhciBwYzEgPSBuZXcgUGVlckNvbm5lY3Rpb24oJ2NvbmZpZzEnLCBzZW5kU2lnbmFsaW5nTWVz
c2FnZTEpOwordmFyIHBjMiA9IG5ldyBQZWVyQ29ubmVjdGlvbignY29uZmlnMicsIHNlbmRTaWdu
YWxpbmdNZXNzYWdlMik7CisKK3BjMS5zaWduYWxpbmdNZXNzYWdlKCdUZXN0IG1lc3NhZ2UnKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9z
aWduYWxpbmctbWVzc2FnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRp
YVN0cmVhbS9zaWduYWxpbmctbWVzc2FnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2MzNWNh
MGMyMWVhOTA4MDM5OGQxY2M0MDVkNmMwYzBlMTkwODMzOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3NpZ25hbGluZy1tZXNzYWdlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyBQZWVyQ29ubmVjdGlvbiBzaWduYWxpbmdNZXNz
YWdlIHVzaW5nIHRoZSBtb2NrIHNlcnZpY2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG1lc3NhZ2UxIGlzICJUZXN0IG1lc3NhZ2UiCitQQVNTIG1lc3NhZ2UyIGlzICJU
ZXN0IG1lc3NhZ2UiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2ln
bmFsaW5nLW1lc3NhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3Np
Z25hbGluZy1tZXNzYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdkYThiNjQyOWI5YzM1M2E1OTgyZDRj
YzdiZGMwODMzYjU1OTkwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L01lZGlhU3RyZWFtL3NpZ25hbGluZy1tZXNzYWdlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9z
aWduYWxpbmctbWVzc2FnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzNzYzMzRhYTk4OGM0NDMyMDRhYmRiMjc5NTkw
ZTU4NmYxMTdmNGJlLi5lNWNlZWE2Y2Y4MDA1YTYzZDU3ZWQyZjlmODEwYjZlOGI0MWFjYzhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQwNSw2ICs0MDUsOCBAQCB3ZWJjb3Jl
X2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPdmVyZmxvd0V2
ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlZXJDb25uZWN0aW9uLmNwcCBcCisJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1BlZXJDb25uZWN0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQZXJmb3JtYW5jZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZXJmb3Jt
YW5jZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
LmNwcCBcCkBAIC00NDMsNiArNDQ1LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU3BlZWNoSW5wdXRSZXN1bHQuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1NwZWVjaElucHV0UmVzdWx0TGlzdC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNTcGVlY2hJbnB1dFJlc3VsdExpc3QuaCBcCisJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1N0cmVhbUxpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU3Ry
ZWFtTGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU1FMRXhjZXB0aW9uLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBcCkBAIC03
NzYsNiArNzgwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTT3B0aW9uQ29uc3RydWN0b3IuaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
ZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAgXApAQCAtMTIxOSw2ICsxMjI0LDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVu
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmggXAorCVNvdXJjZS9XZWJDb3Jl
L2RvbS9QZWVyQ29ubmVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVj
dGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Qb3BT
dGF0ZUV2ZW50LmNwcCBcCkBAIC0xMjYzLDggKzEyNzAsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9T
dGF0aWNOb2RlTGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljU3RyZWFtTGlzdC5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNTdHJlYW1MaXN0LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2RvbS9TdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtLmggXAor
CVNvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1MaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9T
dHJlYW1SZWNvcmRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1SZWNvcmRlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtl
CmluZGV4IGNkZGJkNWYyNmU2N2ZjYzkxMTYyMGFhYWU2NTM4MDc4NzA1YWI0OGMuLmU4ODgwNjE2
OTk3YWMyMTk0NGRhODI5NzU5OGRkMDkwOTA5N2I3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTEw
OSw2ICsxMDksNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9q
cy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwCisgICAgYmlu
ZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCiAgICAgYmluZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0
Q3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFlMTc2MGY0N2ZiMmQ2ZTMyNWY3ZjBlMzA2
ZmQ5Mzk4MzYzOTlkODMuLjUyNTM5Y2MwZDNkNmVjYTI2MWYwYTFlMDI4ZWYxMmM4ZWFmM2IyMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTExNTYsMTMgKzExNTYsMTcgQEAKICAgICAgICAgICAgICdk
b20vTm90YXRpb24uaWRsJywKICAgICAgICAgICAgICdkb20vT3ZlcmZsb3dFdmVudC5pZGwnLAog
ICAgICAgICAgICAgJ2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmlkbCcsCisgICAgICAgICAgICAn
ZG9tL1BlZXJDb25uZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnZG9tL1BvcFN0YXRlRXZlbnQu
aWRsJywKICAgICAgICAgICAgICdkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmlkbCcsCiAgICAg
ICAgICAgICAnZG9tL1Byb2dyZXNzRXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vUmFuZ2Uu
aWRsJywKICAgICAgICAgICAgICdkb20vUmFuZ2VFeGNlcHRpb24uaWRsJywKICAgICAgICAgICAg
ICdkb20vUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaWRsJywKKyAgICAgICAgICAgICdk
b20vU2lnbmFsbGluZ0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnZG9tL1N0cmVhbS5pZGwn
LAorICAgICAgICAgICAgJ2RvbS9TdHJlYW1FdmVudC5pZGwnLAorICAgICAgICAgICAgJ2RvbS9T
dHJlYW1MaXN0LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1N0cmVhbVJlY29yZGVyLmlkbCcsCiAg
ICAgICAgICAgICAnZG9tL1N0cmluZ0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnZG9tL1Rl
eHQuaWRsJywKQEAgLTE4NDMsNiArMTg0Nyw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNOb2RlTGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTT3B0aW9u
Q29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0
cnVjdG9yLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlv
bnMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93
TGlzdEN1c3RvbS5jcHAnLApAQCAtMjE1MSw2ICsyMTU2LDcgQEAKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlcmZvcm1hbmNlQ3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20u
Y3BwJywKQEAgLTI1MjUsNiArMjUzMSw4IEBACiAgICAgICAgICAgICAnZG9tL092ZXJmbG93RXZl
bnQuaCcsCiAgICAgICAgICAgICAnZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwJywKICAgICAg
ICAgICAgICdkb20vUGFnZVRyYW5zaXRpb25FdmVudC5oJywKKyAgICAgICAgICAgICdkb20vUGVl
ckNvbm5lY3Rpb24uY3BwJywKKyAgICAgICAgICAgICdkb20vUGVlckNvbm5lY3Rpb24uaCcsCiAg
ICAgICAgICAgICAnZG9tL1BlbmRpbmdTY3JpcHQuY3BwJywKICAgICAgICAgICAgICdkb20vUG9w
U3RhdGVFdmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Qb3BTdGF0ZUV2ZW50LmgnLApAQCAt
MjU1OSwxMiArMjU2NywxOCBAQAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dSb290LmNwcCcsCiAg
ICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuaCcsCiAgICAgICAgICAgICAnZG9tL1NwYWNlU3Bs
aXRTdHJpbmcuY3BwJywKKyAgICAgICAgICAgICdkb20vU2lnbmFsbGluZ0NhbGxiYWNrLmgnLAog
ICAgICAgICAgICAgJ2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwJywKICAgICAgICAgICAg
ICdkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgnLAogICAgICAgICAgICAgJ2RvbS9TdGF0aWNO
b2RlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TdGF0aWNOb2RlTGlzdC5oJywKICAgICAg
ICAgICAgICdkb20vU3RyZWFtLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1N0cmVhbS5oJywKKyAg
ICAgICAgICAgICdkb20vU3RyZWFtQ29udGFpbmVyLmgnLAorICAgICAgICAgICAgJ2RvbS9TdHJl
YW1FdmVudC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9TdHJlYW1FdmVudC5oJywKKyAgICAgICAg
ICAgICdkb20vU3RyZWFtTGlzdC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9TdHJlYW1MaXN0Lmgn
LAogICAgICAgICAgICAgJ2RvbS9TdHJlYW1SZWNvcmRlci5jcHAnLAogICAgICAgICAgICAgJ2Rv
bS9TdHJlYW1SZWNvcmRlci5oJywKICAgICAgICAgICAgICdkb20vU3RyaW5nQ2FsbGJhY2suY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KaW5kZXggNzBhMmIyZjM2MzVjMGUyMjg1NDZmYjU5NmFmOGQxMDgwMWE0
ZmQwYy4uNmU3MTEwZWJlMmNkNWRiNTNmODU4N2JjMTYwMDJjYzRjNTg4ZWE2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KQEAgLTMyMyw2ICszMjMsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTTm9k
ZUl0ZXJhdG9yQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0
b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAgXAor
ICAgICAgICBiaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgXAogICAgICAgICBiaW5k
aW5ncy9qcy9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAgXAogICAgICAgICBiaW5k
aW5ncy9qcy9KU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCBcCkBAIC0zMTA1LDcgKzMxMDYs
MTAgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NUUkVBTT0xKSB7CiAgICAgICAg
IGRvbS9FeGNsdXNpdmVUcmFja0xpc3QuaCBcCiAgICAgICAgIGRvbS9HZW5lcmF0ZWRTdHJlYW0u
aCBcCiAgICAgICAgIGRvbS9NdWx0aXBsZVRyYWNrTGlzdC5oIFwKKyAgICAgICAgZG9tL1BlZXJD
b25uZWN0aW9uLmggXAorICAgICAgICBkb20vU3RhdGljU3RyZWFtTGlzdC5oIFwKICAgICAgICAg
ZG9tL1N0cmVhbS5oIFwKKyAgICAgICAgZG9tL1N0cmVhbUxpc3QuaCBcCiAgICAgICAgIGRvbS9T
dHJlYW1SZWNvcmRlci5oIFwKICAgICAgICAgZG9tL1RyYWNrTGlzdC5oIFwKICAgICAgICAgZmls
ZWFwaS9CbG9iQ2FsbGJhY2suaCBcCkBAIC0zMTIzLDcgKzMxMjcsMTAgQEAgY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX01FRElBX1NUUkVBTT0xKSB7CiAgICAgICAgIGRvbS9FeGNsdXNpdmVUcmFj
a0xpc3QuY3BwIFwKICAgICAgICAgZG9tL0dlbmVyYXRlZFN0cmVhbS5jcHAgXAogICAgICAgICBk
b20vTXVsdGlwbGVUcmFja0xpc3QuY3BwIFwKKyAgICAgICAgZG9tL1BlZXJDb25uZWN0aW9uLmNw
cCBcCisgICAgICAgIGRvbS9TdGF0aWNTdHJlYW1MaXN0LmNwcCBcCiAgICAgICAgIGRvbS9TdHJl
YW0uY3BwIFwKKyAgICAgICAgZG9tL1N0cmVhbUxpc3QuY3BwIFwKICAgICAgICAgZG9tL1N0cmVh
bVJlY29yZGVyLmNwcCBcCiAgICAgICAgIGRvbS9UcmFja0xpc3QuY3BwIFwKICAgICAgICAgcGFn
ZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIFwKQEAgLTMxMzQsOSArMzE0MSwxMSBAQCBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RSRUFNPTEpIHsKICAgICB2OCB7CiAgICAgICAg
IFNPVVJDRVMgKz0gXAogICAgICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9y
Q3VzdG9tLmNwcCBcCisgICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVj
dGlvbkN1c3RvbS5jcHAgXAogICAgICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RyZWFt
UmVjb3JkZXJDdXN0b20uY3BwCiAgICAgfSBlbHNlIHsKICAgICAgICAgU09VUkNFUyArPSBcCisg
ICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAg
ICAgICAgICBiaW5kaW5ncy9qcy9KU1N0cmVhbVJlY29yZGVyQ3VzdG9tLmNwcAogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOTcy
MjUxNTc5NDllYmZhOGYxMmZjOGRhODE5ODVkYjdmZjk0MWM3Yy4uZjcyYmZiMmZmYmI0MTc3OGI0
YzllZjhiZWY5N2FlYjUxM2E2YmEwNSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTEyODI2LDYgKzEyODI2LDExNSBAQAogCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U1BlZXJDb25uZWN0aW9uLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJE
ZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1BlZXJDb25uZWN0aW9uLmgiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQZXJmb3JtYW5jZS5jcHAiCis+
Pj4+Pj4+IE1ha2VmaWxlcyBidXQgbm90IHhjb2RlCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSYW5nZUV4Y2VwdGlvbi5oIgogCQkJ
CT4KIAkJCTwvRmlsZT4KQEAgLTE0MDMwLDYgKzE0MTM5LDExNCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTU3RyZWFtTGlzdC5jcHAiCisJCQkJ
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0
ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxs
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9u
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNT
dHJlYW1MaXN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNTdHJlYW1SZWNvcmRlci5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNw
cCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC00NjI0Niw2ICs0NjQ2Myw2MiBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21c
UGVlckNvbm5lY3Rpb24uY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cUGVlckNvbm5lY3Rpb24uaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFBlbmRpbmdTY3JpcHQu
Y3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTQ3MzM4LDYgKzQ3NjExLDYy
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRv
bVxTdGF0aWNTdHJlYW1MaXN0LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0YXRpY1N0cmVhbUxpc3QuaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0cmVhbS5j
cHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtNDczOTQsNiArNDc3MjMsMTAg
QEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9t
XFN0cmVhbUxpc3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZG9tXFN0cmVhbVJlY29yZGVyLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1
cmF0aW9uCkBAIC02MjM2NSw2ICs2MjY5OCw1OCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNQZWVyQ29ubmVjdGlv
bkN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1l
PSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgor
CQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlO
YW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2lu
MzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29s
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUHJvZHVj
dGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJ
CQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogCQkJ
CQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCAzNDMyZDc0
NGYyYmZmODk1Y2M0MTExMmJkMzczNWUwMzBkYzZiZTdiLi40ZTg0MzY3ODAwNjVlZjA0ZmMzMzc1
NDMwY2NjOWRlNGQyOWI0MDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtMTQ4LDYgKzE0OCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBtZWRpYVN0cmVhbUVuYWJsZWQoKSB7IHJldHVybiBp
c01lZGlhU3RyZWFtRW5hYmxlZDsgfQogICAgIHN0YXRpYyB2b2lkIHNldE1lZGlhU3RyZWFtRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBpc01lZGlhU3RyZWFtRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQogICAgIHN0YXRpYyBib29sIHdlYmtpdEdldFVzZXJNZWRpYUVuYWJsZWQoKSB7IHJldHVybiBp
c01lZGlhU3RyZWFtRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIHBlZXJDb25uZWN0aW9uRW5h
YmxlZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShRVU9UQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCmluZGV4IGIyNTI1MDQ2YzRmYTlhOTYxYTc2ZmQ5ZGEzZDE0YTViYzAzYzdi
OWQuLmJjYTEzYTNjOTgxOTljNzU1OTQ3M2E5YTU4ZWM4YjE3ZGQ0NWExZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMTI0
LDYgKzEyNCw3IEBACiAjaW5jbHVkZSAiSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTTm9kZUxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTT3B0aW9uQ29uc3RydWN0b3Iu
Y3BwIgorI2luY2x1ZGUgIkpTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAiCiAjaW5jbHVkZSAiSlNQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5j
cHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCmluZGV4
IGM5MzExNDNhNjBlNzYyNzczOTJhY2FkM2UxZWEwODUzY2QyNzM0MTguLmY4YWRhMmZlOTFiMGU0
OWFhMWI3NzExMWI4MmVkM2FlMjYwNjcwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRDdXN0b20uY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSlNQb3BT
dGF0ZUV2ZW50LmgiCiAjaW5jbHVkZSAiSlNQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNT
cGVlY2hJbnB1dEV2ZW50LmgiCisjaW5jbHVkZSAiSlNTdHJlYW1FdmVudC5oIgogI2luY2x1ZGUg
IkpTVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiSlNVSUV2ZW50LmgiCiAjaW5jbHVkZSAiSlNXZWJL
aXRBbmltYXRpb25FdmVudC5oIgpAQCAtMjA4LDYgKzIwOSwxMCBAQCBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudCogZXZl
bnQpCiAgICAgZWxzZSBpZiAoZXZlbnQtPmlzQ2xvc2VFdmVudCgpKQogICAgICAgICB3cmFwcGVy
ID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgQ2xvc2VFdmVudCwgZXZl
bnQpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBlbHNlIGlmIChldmVu
dC0+aXNTdHJlYW1FdmVudCgpKQorICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVS
KGV4ZWMsIGdsb2JhbE9iamVjdCwgU3RyZWFtRXZlbnQsIGV2ZW50KTsKKyNlbmRpZgogICAgIGVs
c2UKICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmpl
Y3QsIEV2ZW50LCBldmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ4MGZkMDZkZjkzZDBi
ZTNjYWI2MGQ1YTRlNTY3Njg3MGQ3NjQzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCkBAIC0wLDAgKzEsNjUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQZWVyQ29ubmVjdGlvbi5oIgorCisj
aW5jbHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU2lnbmFsbGluZ0NhbGxi
YWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQZWVyQ29ubmVjdGlvbkNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RKU1BlZXJDb25uZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U1BlZXJDb25uZWN0aW9uQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxK
U1BlZXJDb25uZWN0aW9uQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgCisgICAgU3Ry
aW5nIGNvbmZpZ3VyYXRpb24gPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBSZWZQdHI8U2lnbmFsbGluZ0NhbGxiYWNrPiBzaWdu
YWxsaW5nQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1NpZ25hbGxpbmdD
YWxsYmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIEZyYW1l
KiBmcmFtZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1w
bCgpLT5mcmFtZSgpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlv
biA9IFBlZXJDb25uZWN0aW9uOjpjcmVhdGUoY29uZmlndWFyYXRpb24sIHNpZ25hbGxpbmdDYWxs
YmFjayk7CisgICAgaWYgKCFwZWVyQ29ubmVjdGlvbi5nZXQoKSkKKyAgICAgICAgLy8gRXhjZXB0
aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLgorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRv
SlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIHBlZXJDb25uZWN0aW9uLmdl
dCgpKSkpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggMjVjYmJiMWU1OTA4
NWM4YTA3Y2E4N2E4ZjRiODRlZDRhYWEwMDcwNC4uZjJiNmI2OTQ5M2Y2MTgzZmVhZWNhMDQ3NGY1
Zjk2MTMwNzBkMjE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiVjhOb2RlRmlsdGVyQ29uZGl0aW9u
LmgiCiAjaW5jbHVkZSAiVjhOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlY4Tm90aWZpY2F0aW9uLmgi
CisjaW5jbHVkZSAiVjhQZWVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNp
bmNsdWRlICJWOFNoYXJlZFdvcmtlci5oIgogI2luY2x1ZGUgIlY4U2hhcmVkV29ya2VyQ29udGV4
dC5oIgpAQCAtNDY4LDYgKzQ2OSw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmplY3QoRXZlbnRUYXJnZXQqIHRhCiAKICAgICBp
ZiAoVHJhY2tMaXN0KiB0cmFja0xpc3QgPSB0YXJnZXQtPnRvVHJhY2tMaXN0KCkpCiAgICAgICAg
IHJldHVybiB0b1Y4KHRyYWNrTGlzdCk7CisKKyAgICBpZiAoUGVlckNvbm5lY3Rpb24qIHBlZXJD
b25uZWN0aW9uID0gdGFyZ2V0LT50b1BlZXJDb25uZWN0aW9uKCkpCisgICAgICByZXR1cm4gdG9W
OChwZWVyQ29ubmVjdGlvbik7CiAjZW5kaWYKIAogICAgIEFTU0VSVCgwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcAppbmRleCBm
MGUwMjdlNzFmZjEwMGU2MTRhMDM0MzFlMGMwNzYzMGUxZjI3YzFhLi41NjA5OTFhODc3NGViMzIz
MTI5OGFmYjZkMjQzMzZlZjQyMTFkMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5j
bHVkZSAiVjhQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUg
IlY4U3BlZWNoSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgIlY4U3RyZWFtRXZlbnQuaCIKICNpbmNs
dWRlICJWOFN0b3JhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlY4VGV4dEV2ZW50LmgiCiAjaW5jbHVk
ZSAiVjhUb3VjaEV2ZW50LmgiCkBAIC0xNzgsNiArMTc5LDEwIEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KEV2ZW50KiBpbXBsKQogICAgIGlmIChpbXBsLT5pc1NwZWVjaElucHV0RXZlbnQo
KSkKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U3BlZWNoSW5wdXRFdmVudCo+KGlt
cGwpKTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKGltcGwtPmlz
U3RyZWFtRXZlbnQoKSkKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U3RyZWFtRXZl
bnQqPihpbXBsKSk7CisjZW5kaWYKICAgICBpZiAoaW1wbC0+aXNDdXN0b21FdmVudCgpKQogICAg
ICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxDdXN0b21FdmVudCo+KGltcGwpKTsKICNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1
ZTllN2VlMzMzNzU5ZmFkZTcxZGE3NGEyYWM1MWEzYTkzMjUxNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3VzdG9t
LmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBlZXJD
b25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRE9N
V2luZG93LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CisjaW5jbHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJWOEJp
bmRpbmcuaCIKKyNpbmNsdWRlICJWOFBlZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgIlY4U2lnbmFsbGluZ0NhbGxiYWNrLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4UGVlckNvbm5lY3Rpb246OmNvbnN0cnVj
dG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMo
IkRPTS5QZWVyQ29ubmVjdGlvbi5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29u
c3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6U3ludGF4
RXJyb3IpOworCisgICAgaW50IGFyZ0xlbmd0aCA9IGFyZ3MuTGVuZ3RoKCk7CisgICAgaWYgKGFy
Z0xlbmd0aCAhPSAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhlIFBlZXJDb25uZWN0
aW9uIGNvbnN0cnVjdG9yIHRha2VzIHR3byBhcmd1bWVudHMuIiwgVjhQcm94eTo6U3ludGF4RXJy
b3IpOworCisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKQorICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcigiVGhlIFBlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yIG11c3QgYmUgZ2l2
ZW4gYSBTaWduYWxsaW5nQ2FsbGJhY2sgY2FsbGJhY2suIiwgVjhQcm94eTo6VHlwZUVycm9yKTsK
KworICAgIHY4OjpUcnlDYXRjaCBleGNlcHRpb25DYXRjaGVyOworICAgIEF0b21pY1N0cmluZyBj
b25maWd1cmF0aW9uID0gdjhWYWx1ZVRvQXRvbWljV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKyAg
ICBpZiAoZXhjZXB0aW9uQ2F0Y2hlci5IYXNDYXVnaHQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoZXhjZXB0aW9uQ2F0Y2hlci5FeGNlcHRpb24oKSk7CisKKyAgICBib29sIHN1Y2NlZWRl
ZCA9IGZhbHNlOworICAgIFJlZlB0cjxTaWduYWxsaW5nQ2FsbGJhY2s+IHNpZ25hbGxpbmdDYWxs
YmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPFY4U2lnbmFsbGluZ0NhbGxiYWNrPihh
cmdzWzFdLCBzdWNjZWVkZWQpOworICAgIGlmICghc3VjY2VlZGVkIHx8ICFzaWduYWxsaW5nQ2Fs
bGJhY2suZ2V0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGUgUGVlckNvbm5lY3Rp
b24gY29uc3RydWN0b3IgbXVzdCBiZSBnaXZlbiBhIFNpZ25hbGxpbmdDYWxsYmFjayBjYWxsYmFj
ay4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6
cmV0cmlldmVGcmFtZUZvckN1cnJlbnRDb250ZXh0KCk7CisKKyAgICBNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlciogZnJhbWVDb250cm9sbGVyID0gZnJhbWUgPyBmcmFtZS0+bWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIoKSA6IDA7CisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29u
bmVjdGlvbjsKKyAgICBpZiAoZnJhbWVDb250cm9sbGVyKQorICAgICAgICBwZWVyQ29ubmVjdGlv
biA9IGZyYW1lQ29udHJvbGxlci0+Y3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbiwg
c2lnbmFsbGluZ0NhbGxiYWNrKTsKKworICAgIGlmICghcGVlckNvbm5lY3Rpb24uZ2V0KCkpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJBIFBlZXJDb25uZWN0aW9uIG9iamVjdCBjb3VsZCBu
b3QgYmUgY3JlYXRlZC4iLCBWOFByb3h5OjpSYW5nZUVycm9yKTsKKworICAgIC8vIFRyYW5zZm9y
bSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdC4KKyAgICBWOERPTVdyYXBwZXI6OnNl
dERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIHBlZXJDb25uZWN0aW9uLmdldCgpKTsK
KyAgICByZXR1cm4gdG9WOChwZWVyQ29ubmVjdGlvbi5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKaW5kZXggNDE5YzBhMzI1OTdhNTk4NDIyMjZmODg4NGVi
MGJiZTA4Y2YwN2FlMy4uOGNiNDA1NGNmMjAzOGI3YzMyMjhlOGIwYzg1YjMwMjgwMjkwNDcxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnQuY3BwCkBAIC0yNTAsNiArMjUwLDEzIEBAIGJvb2wgRXZlbnQ6OmlzQ2xv
c2VFdmVudCgpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiti
b29sIEV2ZW50Ojppc1N0cmVhbUV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisjZW5kaWYKKwogYm9vbCBFdmVudDo6ZnJvbVVzZXJHZXN0dXJlKCkKIHsKICAgICBpZiAoIVVz
ZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgK
aW5kZXggNDk1ODY0OWY5YWY3NDRiMzMxOTliMTZmMzgyNTU3YjIyNGQ5ZTZhMy4uYzJkYWM3YWM5
ZmIwNmRiMjNiMDI0MGEwMzI4YjdkZGQ3YzI2YmNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgKQEAgLTE0Nyw2
ICsxNDcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9zZUV2ZW50KCkgY29uc3Q7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHJlYW1FdmVudCgp
IGNvbnN0OworI2VuZGlmCiAgICAgICAgIGJvb2wgZnJvbVVzZXJHZXN0dXJlKCk7CiAgICAgICAg
IAogICAgICAgICBib29sIHByb3BhZ2F0aW9uU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGFnYXRpb25TdG9wcGVkIHx8IG1faW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAppbmRleCA5NmYwMzgzZTJhNGM3YmYwZDk2MmQzMTg1ZDM5YzNhODQz
OTcyZGRjLi41NzZlZDhlYzM2M2E1Zjk3ZjBkMjUwMTBmM2UyYTVkMTk0ODg1NzE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKQEAgLTE4MCw2ICsxODAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIFwKICAgICBtYWNybyhhdWRpb3Byb2Nlc3MpIFwKICAgICBcCisgICAgbWFjcm8oY29u
bmVjdGluZykgXAorICAgIG1hY3JvKGFkZHN0cmVhbSkgXAorICAgIG1hY3JvKHJlbW92ZXN0cmVh
bSkgXAorICAgIG1hY3JvKHBlZXJjb25uZWN0aW9ubWVzc2FnZSkgXAorICAgIFwKKwogLy8gZW5k
IG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSAogCiAgICAgY2xhc3MgRXZlbnROYW1lcyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCBhOTc4YmM1ZDY2MDVhODZiYzJmZjFhNzQ2
MGY0Yjk4NDQ4NjQ2Yjk5Li42NGFkY2I5NjBlYzRkZjI3ZDJlY2Q1YmRjYjY4Y2YxNWRkZmEyYWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTIzMCw2ICsyMzAsMTEgQEAgRXhj
bHVzaXZlVHJhY2tMaXN0KiBFdmVudFRhcmdldDo6dG9FeGNsdXNpdmVUcmFja0xpc3QoKQogewog
ICAgIHJldHVybiAwOwogfQorCitQZWVyQ29ubmVjdGlvbiogRXZlbnRUYXJnZXQ6OnRvUGVlckNv
bm5lY3Rpb24oKQoreworICAgIHJldHVybiAwOworfQogI2VuZGlmCiAKIGJvb2wgRXZlbnRUYXJn
ZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmgKaW5kZXggY2RiM2YwMGUxMzk3ZTAxNWJmZTlhZWU4N2Q4YzMyYWUxMmM0
Y2FhOC4uZGY4ZjJjNzc3ODkyMzE0ZGYzNzczNmU1MWI0MmFkODgyMjJmYmFhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTYwLDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIE11bHRpcGxlVHJhY2tMaXN0OwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3Mg
Tm90aWZpY2F0aW9uOworICAgIGNsYXNzIFBlZXJDb25uZWN0aW9uOwogICAgIGNsYXNzIFNWR0Vs
ZW1lbnRJbnN0YW5jZTsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNs
YXNzIFNoYXJlZFdvcmtlcjsKQEAgLTE1OCw2ICsxNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgVHJhY2tMaXN0KiB0b1RyYWNrTGlzdCgpOwogICAgICAgICB2aXJ0
dWFsIE11bHRpcGxlVHJhY2tMaXN0KiB0b011bHRpcGxlVHJhY2tMaXN0KCk7CiAgICAgICAgIHZp
cnR1YWwgRXhjbHVzaXZlVHJhY2tMaXN0KiB0b0V4Y2x1c2l2ZVRyYWNrTGlzdCgpOworICAgICAg
ICB2aXJ0dWFsIFBlZXJDb25uZWN0aW9uKiB0b1BlZXJDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAog
ICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJh
dGVkU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmF0ZWRTdHJlYW0uY3BwCmlu
ZGV4IDRhMjVkODlhZWIzMWU1YzE2MzlhNWU3Y2ZjY2I5NzE3ODZhZGEzZjEuLjY1OGRlNDYwMmQ2
ZjU2MzhmOGJjYzk2YzkxZjI2N2I4ZTExNDNmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9HZW5lcmF0ZWRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmF0
ZWRTdHJlYW0uY3BwCkBAIC02NSw3ICs2NSw3IEBAIFBhc3NSZWZQdHI8R2VuZXJhdGVkU3RyZWFt
PiBHZW5lcmF0ZWRTdHJlYW06OmNyZWF0ZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcioKIH0K
IAogR2VuZXJhdGVkU3RyZWFtOjpHZW5lcmF0ZWRTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIqIGZyYW1lQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUGFzc1JlZlB0cjxN
dWx0aXBsZVRyYWNrTGlzdD4gYXVkaW9UcmFja3MsIFBhc3NSZWZQdHI8RXhjbHVzaXZlVHJhY2tM
aXN0PiB2aWRlb1RyYWNrcykKLSAgICA6IFN0cmVhbShmcmFtZUNvbnRyb2xsZXIsIGxhYmVsKQor
ICAgIDogU3RyZWFtKGZyYW1lQ29udHJvbGxlciwgbGFiZWwsIGZhbHNlKQogICAgICwgbV9hdWRp
b1RyYWNrcyhhdWRpb1RyYWNrcykKICAgICAsIG1fdmlkZW9UcmFja3ModmlkZW9UcmFja3MpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzE3YjlhN2M4
ZTdhNWNlY2NkYzFmNTI1Y2M0YmQ4MDAyYzhmMmYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDIxMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudC5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlICJTdHJlYW0uaCIKKyNpbmNsdWRlICJTdHJlYW1FdmVudC5oIgor
I2luY2x1ZGUgIlN0cmVhbUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVm
UHRyPFBlZXJDb25uZWN0aW9uPiBQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBpZCwgY29uc3QgQXRvbWljU3RyaW5n
JiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGxpbmdDYWxsYmFjaz4gc2lnbmFsbGlu
Z0NhbGxiYWNrKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVlckNvbm5lY3Rpb24oZnJh
bWVDb250cm9sbGVyLCBpZCwgY29uZmlndXJhdGlvbiwgc2lnbmFsbGluZ0NhbGxiYWNrKSk7Cit9
CisKK1BlZXJDb25uZWN0aW9uOjpQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgY29uZmln
dXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxsaW5nQ2FsbGJhY2s+IHNpZ25hbGxpbmdDYWxsYmFj
aykKKyAgICA6IFBlZXJDb25uZWN0aW9uQ2xpZW50KGZyYW1lQ29udHJvbGxlciwgaWQpLCBtX3Jl
YWR5U3RhdGUoTkVXKSwgbV9zaWduYWxsaW5nQ2FsbGJhY2soc2lnbmFsbGluZ0NhbGxiYWNrKQor
eworICAgIG1fbG9jYWxTdHJlYW1zID0gU3RyZWFtQ29udGFpbmVyOjpjcmVhdGUoKTsKKyAgICBt
X3JlbW90ZVN0cmVhbXMgPSBTdHJlYW1Db250YWluZXI6OmNyZWF0ZSgpOworICAgIG1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKCktPnN0YXJ0TmVnb3RpYXRpb24obV9jbGllbnRJZCk7Cit9CisK
K1BlZXJDb25uZWN0aW9uOjp+UGVlckNvbm5lY3Rpb24oKQoreworfQorCitQYXNzUmVmUHRyPFN0
cmVhbUxpc3Q+IFBlZXJDb25uZWN0aW9uOjpsb2NhbFN0cmVhbXMoKQoreworICAgIHJldHVybiBT
dHJlYW1MaXN0OjpjcmVhdGUobV9sb2NhbFN0cmVhbXMpOworfQorCitQYXNzUmVmUHRyPFN0cmVh
bUxpc3Q+IFBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1zKCkKK3sKKyAgICByZXR1cm4gU3Ry
ZWFtTGlzdDo6Y3JlYXRlKG1fcmVtb3RlU3RyZWFtcyk7Cit9CisKKy8vIFNlbmRzIHRoZSBtZXNz
YWdlIGRvd24gdG8gdGhlIHVzZXIgYWdlbnQgaW1wbGVtZW50YXRpb24uCit2b2lkIFBlZXJDb25u
ZWN0aW9uOjpzaWduYWxpbmdNZXNzYWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPnNpZ25hbGluZ01lc3NhZ2UobV9jbGll
bnRJZCwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnNlbmQoY29uc3QgQXRv
bWljU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0
YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQ1N0cmluZyB1dGY4ID0gdGV4dC5zdHJpbmcoKS51dGY4
KCk7CisgICAgaWYgKHV0ZjgubGVuZ3RoKCkgPiA1MDQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZyYW1lQ29udHJv
bGxlci0+bWVzc2FnZShtX2NsaWVudElkLCB0ZXh0KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlv
bjo6YWRkU3RyZWFtKFBhc3NSZWZQdHI8U3RyZWFtPiBzdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTdHJlYW0g
aXMgZ3VhcmFudGVlZCB0byBleGlzdC4KKyAgICBSZWZQdHI8U3RyZWFtPiBzID0gc3RyZWFtOwor
CisgICAgaWYgKG1fbG9jYWxTdHJlYW1zLT5jb250YWlucyhzKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9sb2NhbFN0cmVhbXMtPmFkZChzKTsKKworICAgIG1fZnJhbWVDb250cm9sbGVyLT5h
ZGRTdHJlYW0obV9jbGllbnRJZCwgcyk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnJlbW92
ZVN0cmVhbShQYXNzUmVmUHRyPFN0cmVhbT4gc3RyZWFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gU3RyZWFtIGlzIGd1
YXJhbnRlZWQgdG8gZXhpc3QuCisgICAgUmVmUHRyPFN0cmVhbT4gcyA9IHN0cmVhbTsKKworICAg
IGlmICghbV9sb2NhbFN0cmVhbXMtPmNvbnRhaW5zKHMpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2xvY2FsU3RyZWFtcy0+cmVtb3ZlKHMpOworCisgICAgbV9mcmFtZUNvbnRyb2xsZXItPnJl
bW92ZVN0cmVhbShtX2NsaWVudElkLCBzKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6Y2xv
c2UoRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fZnJhbWVDb250cm9sbGVyLT5jbG9zZVBlZXJDb25uZWN0aW9uKG1fY2xpZW50
SWQpOworCisgICAgbV9yZWFkeVN0YXRlID0gQ0xPU0VEOworICAgIGRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisK
K3ZvaWQgUGVlckNvbm5lY3Rpb246Om5lZ290aWF0aW9uU3RhcnRlZCgpCit7CisgICAgbV9yZWFk
eVN0YXRlID0gTkVHT1RJQVRJTkc7CisKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmNvbm5lY3RpbmdFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK3ZvaWQg
UGVlckNvbm5lY3Rpb246Om5lZ290aWF0aW9uRG9uZSgpCit7CisgICAgbV9yZWFkeVN0YXRlID0g
QUNUSVZFOworCisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5v
cGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjplcnJv
cihjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgZGlzcGF0Y2hFdmVudChFcnJv
ckV2ZW50OjpjcmVhdGUobWVzc2FnZSwgIiIsIDApKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlv
bjo6c3RyZWFtQWRkZWQoUGFzc1JlZlB0cjxTdHJlYW0+IHN0cmVhbSkKK3sKKyAgICBSZWZQdHI8
U3RyZWFtPiBzID0gc3RyZWFtOworCisgICAgbV9yZW1vdGVTdHJlYW1zLT5hZGQocyk7CisgICAg
ZGlzcGF0Y2hFdmVudChTdHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGRzdHJlYW1F
dmVudCwgZmFsc2UsIGZhbHNlLCBzKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnN0cmVh
bVJlbW92ZWQoU3RyaW5nIHN0cmVhbUxhYmVsKQoreworICAgIFJlZlB0cjxTdHJlYW0+IHN0cmVh
bSA9IG1fcmVtb3RlU3RyZWFtcy0+Z2V0KHN0cmVhbUxhYmVsKTsKKworICAgIG1fcmVtb3RlU3Ry
ZWFtcy0+cmVtb3ZlKHN0cmVhbSk7CisKKyAgICBkaXNwYXRjaEV2ZW50KFN0cmVhbUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXN0cmVhbUV2ZW50LCBmYWxzZSwgZmFsc2UsIHN0cmVh
bSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpvbk1lc3NhZ2UoY29uc3QgQXRvbWljU3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShtZXNzYWdlKTsKKyAgICBkaXNwYXRjaEV2
ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0UHRyPE1lc3NhZ2VQb3J0QXJyYXk+KDApLCBk
YXRhKSk7Cit9CisKK1BlZXJDb25uZWN0aW9uKiBQZWVyQ29ubmVjdGlvbjo6dG9QZWVyQ29ubmVj
dGlvbigpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IFBlZXJDb25uZWN0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOworfQorCitFdmVudFRhcmdldERhdGEqIFBlZXJDb25uZWN0aW9uOjpldmVudFRhcmdldERh
dGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0
RGF0YSogUGVlckNvbm5lY3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0
dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9QZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmVjYjI4Zjk1N2I0MDE4OTMwNDcyNDdlMWE2ZmJlZTVlMTc4ODY4Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5oCkBA
IC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBQZWVyQ29ubmVjdGlvbl9oCisjZGVmaW5lIFBlZXJDb25u
ZWN0aW9uX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJTaWduYWxsaW5nQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTdHJlYW0uaCIKKyNpbmNs
dWRlICJTdHJlYW1Db250YWluZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1MaXN0LmgiCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGVlckNvbm5lY3Rp
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbj4sCisgICAgcHVibGljIEV2ZW50
VGFyZ2V0LAorICAgIHB1YmxpYyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UGVlckNvbm5l
Y3Rpb25DbGllbnQgeworcHVibGljOgorICAgIC8vIE11c3QgbWF0Y2ggdGhlIGNvbnN0YW50cyBp
biB0aGUgLmlkbCBmaWxlLgorICAgIGVudW0geworICAgICAgICBORVcgPSAwLAorICAgICAgICBO
RUdPVElBVElORyA9IDEsCisgICAgICAgIEFDVElWRSA9IDIsCisgICAgICAgIENMT1NFRCA9IDMK
KyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24+IGNyZWF0ZShN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBj
b25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGxpbmdDYWxsYmFjaz4pOworICAgIHZpcnR1
YWwgflBlZXJDb25uZWN0aW9uKCk7CisKKyAgICBQYXNzUmVmUHRyPFN0cmVhbUxpc3Q+IGxvY2Fs
U3RyZWFtcygpOworICAgIFBhc3NSZWZQdHI8U3RyZWFtTGlzdD4gcmVtb3RlU3RyZWFtcygpOwor
CisgICAgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlT
dGF0ZTsgfQorCisgICAgdm9pZCBzaWduYWxpbmdNZXNzYWdlKGNvbnN0IEF0b21pY1N0cmluZyYg
bWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2VuZChjb25zdCBBdG9taWNTdHJp
bmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZFN0cmVhbShQYXNzUmVmUHRy
PFN0cmVhbT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbShQYXNzUmVm
UHRyPFN0cmVhbT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNv
ZGUmKTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ubmVjdGluZyk7
CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihvcGVuKTsKKyAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGNsb3NlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KG1lc3NhZ2UpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkc3RyZWFt
KTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlbW92ZXN0cmVhbSk7CisK
KyAgICBQYXNzUmVmUHRyPFNpZ25hbGxpbmdDYWxsYmFjaz4gc2lnbmFsbGluZ0NhbGxiYWNrKCkg
eyByZXR1cm4gbV9zaWduYWxsaW5nQ2FsbGJhY2s7IH0KKworICAgIC8vIEV2ZW50VGFyZ2V0Cisg
ICAgdmlydHVhbCBQZWVyQ29ubmVjdGlvbiogdG9QZWVyQ29ubmVjdGlvbigpOworCisgICAgLy8g
RXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKKyAgICAvLyBDYWxsYmFj
a3MKKyAgICB2b2lkIG9uTWVzc2FnZShjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpOworICAg
IHZvaWQgbmVnb3RpYXRpb25TdGFydGVkKCk7CisgICAgdm9pZCBuZWdvdGlhdGlvbkRvbmUoKTsK
KyAgICB2b2lkIHN0cmVhbUFkZGVkKFBhc3NSZWZQdHI8U3RyZWFtPik7CisgICAgdm9pZCBzdHJl
YW1SZW1vdmVkKFN0cmluZyBzdHJlYW1MYWJlbCk7CisgICAgdm9pZCBlcnJvcihjb25zdCBBdG9t
aWNTdHJpbmcmIG1lc3NhZ2UpOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlv
bj46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPjo6ZGVyZWY7CisK
K3Byb3RlY3RlZDoKKyAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVu
dFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworCisgICAgdW5zaWduZWQgc2hv
cnQgbV9yZWFkeVN0YXRlOworCisgICAgUmVmUHRyPFNpZ25hbGxpbmdDYWxsYmFjaz4gbV9zaWdu
YWxsaW5nQ2FsbGJhY2s7CisKK3ByaXZhdGU6CisgICAgUGVlckNvbm5lY3Rpb24oTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgY29uZmlndXJh
dGlvbiwgUGFzc1JlZlB0cjxTaWduYWxsaW5nQ2FsbGJhY2s+KTsKKworICAgIC8vIEV2ZW50VGFy
Z2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsg
cmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsg
fQorCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworCisgICAgUmVmUHRy
PFN0cmVhbUNvbnRhaW5lcj4gbV9sb2NhbFN0cmVhbXM7CisgICAgUmVmUHRyPFN0cmVhbUNvbnRh
aW5lcj4gbV9yZW1vdGVTdHJlYW1zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFBlZXJDb25uZWN0aW9u
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkMWZhYmMy
YWEyODE1OGMxZTFiMTJjNGM2YmExZTYzYTM0Nzg0MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaWRsCkBAIC0wLDAgKzEsODMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
Y29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJF
QU0sCisgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCisgICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1
bmN0aW9uLAorICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MiwKKyAgICAgICAgVjhDdXN0
b21Db25zdHJ1Y3RvciwKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIFBlZXJDb25uZWN0aW9u
IHsKKyAgICAgICAgdm9pZCBzaWduYWxpbmdNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlKQor
ICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgTkVXID0gMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVHT1RJQVRJ
TkcgPSAxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBBQ1RJVkUgPSAyOworICAgICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDTE9TRUQgPSAzOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKKworICAgICAgICB2b2lkIHNlbmQoaW4g
RE9NU3RyaW5nIHRleHQpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAg
ICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBhZGRTdHJlYW0oaW4gU3RyZWFtIHN0cmVhbSkK
KyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nXSB2b2lkIHJlbW92ZVN0cmVhbShpbiBTdHJlYW0gc3RyZWFtKQorICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0cmVh
bUxpc3QgbG9jYWxTdHJlYW1zOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3RyZWFtTGlz
dCByZW1vdGVTdHJlYW1zOworCisgICAgICAgIHZvaWQgY2xvc2UoKQorICAgICAgICAgICAgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25j
b25uZWN0aW5nOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm9wZW47CisgICAg
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7CisgICAgICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uY2xvc2U7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
bWVzc2FnZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGRzdHJlYW07Cisg
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3Zlc3RyZWFtOworCisgICAgICAg
IC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIo
aW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVu
dExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9v
bGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERP
TVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRM
aXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJv
b2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVu
dCBldmVudCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisKKyAgICB9Owor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsbGluZ0NhbGxiYWNrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsbGluZ0NhbGxiYWNrLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVm
Yjc0MTc5MWU5ZTE2ZWM1YTZkZmU5MTIxM2U0OTNmZTI0YTA5YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaWduYWxsaW5nQ2FsbGJhY2suaApAQCAtMCwwICsxLDQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNpZ25hbGxpbmdDYWxsYmFja19oCisjZGVmaW5lIFNp
Z25hbGxpbmdDYWxsYmFja19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQZWVy
Q29ubmVjdGlvbjsKKworY2xhc3MgU2lnbmFsbGluZ0NhbGxiYWNrIDogcHVibGljIFJlZkNvdW50
ZWQ8U2lnbmFsbGluZ0NhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U2lnbmFsbGlu
Z0NhbGxiYWNrKCkgeyB9CisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KGNvbnN0IFN0cmlu
ZyYsIFBlZXJDb25uZWN0aW9uKikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFNpZ25hbGxpbmdD
YWxsYmFja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsbGluZ0NhbGxi
YWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaWduYWxsaW5nQ2FsbGJhY2suaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI2MmQ3YWJiYjQ2NTQ5MDY3NTFhMzQyMzY5ZGEwYmU2NzBjMGVjZWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsbGluZ0NhbGxiYWNrLmlkbApAQCAt
MCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNl
IFsKKyAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgICAgICBDYWxsYmFjaz1G
dW5jdGlvbk9ubHkKKyAgICBdIFNpZ25hbGxpbmdDYWxsYmFjayB7CisgICAgICAgIGJvb2xlYW4g
aGFuZGxlRXZlbnQoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFBlZXJDb25uZWN0aW9uIHNvdXJj
ZSk7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtLmNwcAppbmRleCA3NDk5YWIwZDkyYjIzNzY4
YWU5NjEyNTI0NmI3NTI2ODBjYTQ3NGRiLi5hY2M0M2JkZTY2ZDFmMWFlYWRmOTY0MWY2NjJmMGNk
YmE0NTdkN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtLmNwcApAQCAtMzMsMTMgKzMzLDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxTdHJlYW0+IFN0cmVhbTo6Y3JlYXRlKE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYg
bGFiZWwpCitQYXNzUmVmUHRyPFN0cmVhbT4gU3RyZWFtOjpjcmVhdGUoTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCBy
ZW1vdGVTdHJlYW0pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJlYW0oZnJhbWVDb250
cm9sbGVyLCBsYWJlbCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RyZWFtKGZyYW1lQ29u
dHJvbGxlciwgbGFiZWwsIHJlbW90ZVN0cmVhbSkpOwogfQogCi1TdHJlYW06OlN0cmVhbShNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIGxh
YmVsKQotICAgIDogU3RyZWFtQ2xpZW50KGZyYW1lQ29udHJvbGxlciwgbGFiZWwpCitTdHJlYW06
OlN0cmVhbShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbW90ZVN0cmVhbSkKKyAgICA6IFN0cmVhbUNsaWVudChm
cmFtZUNvbnRyb2xsZXIsIGxhYmVsLCByZW1vdGVTdHJlYW0pCiAgICAgLCBtX3JlYWR5U3RhdGUo
TElWRSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHJlYW0uaAppbmRleCAwMTI4ZGExNjU2MDE1Nzk0MDYyYjI0Mjc3
ZTNmYmMwMmQ4OGI5ZjkzLi4wYjgwYmRjMWQ1NTUyOGY2NzA2NGU3OGJjYmMwZTQxMzY1OTUwYjkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1N0cmVhbS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgRU5E
RUQgPSAyCiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmVhbT4gY3JlYXRlKE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyZWFtPiBjcmVhdGUoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIq
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbW90ZVN0cmVhbSk7CiAgICAgdmlydHVhbCB+
U3RyZWFtKCk7CiAKICAgICBQYXNzUmVmUHRyPFN0cmVhbVJlY29yZGVyPiByZWNvcmQoKTsKQEAg
LTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8U3RyZWFtPjo6ZGVy
ZWY7CiAKIHByb3RlY3RlZDoKLSAgICBTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIq
LCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKKyAgICBTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIqLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbW90ZVN0cmVhbSk7CiAKICAgICAv
LyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZXZlbnRUYXJnZXREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3Ry
ZWFtQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtQ29udGFpbmVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDZiMGU3M2M2MDM4YjdmYjU5NTg5OTFkMzczZjI1OGRkMzBmMDdlZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1Db250YWluZXIuaApAQCAtMCww
ICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTdHJlYW1Db250YWluZXJfaAorI2RlZmluZSBTdHJlYW1Db250YWlu
ZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlN0cmVhbS5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU3RyZWFtQ29udGFpbmVyIDogcHVibGljIFJlZkNv
dW50ZWQ8U3RyZWFtQ29udGFpbmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RyZWFtQ29udGFpbmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3RyZWFtQ29u
dGFpbmVyKTsgfQorICAgIHZpcnR1YWwgflN0cmVhbUNvbnRhaW5lcigpIHsgfQorCisgICAgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJlYW1zLnNpemUoKTsgfQorCisgICAg
UGFzc1JlZlB0cjxTdHJlYW0+IGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAg
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFN0cmVhbT4gPjo6Y29uc3RfaXRlcmF0b3IgaSA9
IG1fc3RyZWFtcy5iZWdpbigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBpICE9IG1f
c3RyZWFtcy5lbmQoKTsgKytpLCArK2opIHsKKyAgICAgICAgICAgIGlmIChqID09IGluZGV4KQor
ICAgICAgICAgICAgICAgIHJldHVybiBpLT5zZWNvbmQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgdm9pZCBhZGQoUGFzc1JlZlB0cjxTdHJlYW0+IHN0cmVhbSkK
KyAgICB7CisgICAgICAgIFJlZlB0cjxTdHJlYW0+IHMgPSBzdHJlYW07CisgICAgICAgIG1fc3Ry
ZWFtcy5hZGQocy0+bGFiZWwoKSwgcyk7CisgICAgfQorCisgICAgdm9pZCByZW1vdmUoUGFzc1Jl
ZlB0cjxTdHJlYW0+IHN0cmVhbSkKKyAgICB7CisgICAgICAgIFJlZlB0cjxTdHJlYW0+IHMgPSBz
dHJlYW07CisgICAgICAgIG1fc3RyZWFtcy5yZW1vdmUocy0+bGFiZWwoKSk7CisgICAgfQorCisg
ICAgYm9vbCBjb250YWlucyhQYXNzUmVmUHRyPFN0cmVhbT4gc3RyZWFtKQorICAgIHsKKyAgICAg
ICAgUmVmUHRyPFN0cmVhbT4gcyA9IHN0cmVhbTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtcy5j
b250YWlucyhzLT5sYWJlbCgpKTsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPFN0cmVhbT4gZ2V0
KFN0cmluZyBrZXkpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zdHJlYW1zLmdldChr
ZXkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJlYW1Db250YWluZXIoKSB7IH0KKworICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8U3RyZWFtPiA+IG1fc3RyZWFtczsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNl
bmRpZiAvLyBTdHJlYW1Db250YWluZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1N0cmVhbUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1FdmVudC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTM4MDcxMWJhNWM1MjkzNDg5Y2Y3YjVjZDRiMWY5NGVjZWJhMjhkYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1FdmVudC5jcHAKQEAgLTAsMCAr
MSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1FdmVudC5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitTdHJlYW1FdmVudDo6U3RyZWFtRXZlbnQoKQoreworfQorCitT
dHJlYW1FdmVudDo6U3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFN0cmVhbT4gc3RyZWFtKQorICAg
IDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKSwgbV9zdHJlYW0oc3RyZWFtKQor
eworfQorCitTdHJlYW1FdmVudDo6flN0cmVhbUV2ZW50KCkKK3sKK30KKwordm9pZCBTdHJlYW1F
dmVudDo6aW5pdFN0cmVhbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTdHJlYW0+IHN0cmVhbSkKK3sKKyAg
ICBpZiAoZGlzcGF0Y2hlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbml0RXZlbnQodHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKTsKKworICAgIG1fc3RyZWFtID0gc3RyZWFtOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbUV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3RyZWFtRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWFjYWVhYzZhNzI2YTljYTJl
MTE0ZmEwMTE2YjdkZWU0ODY1YTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0cmVhbUV2ZW50LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3RyZWFtRXZlbnRfaAor
I2RlZmluZSBTdHJlYW1FdmVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJTdHJlYW0uaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHJlYW1FdmVu
dCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U3RyZWFtRXZlbnQoKTsK
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmVhbUV2ZW50PiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJlYW1FdmVudCk7CisgICAgfQorCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyZWFtRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U3RyZWFtPiBz
dHJlYW0pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmVhbUV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgc3RyZWFtKSk7CisgICAgfQorCisgICAgdm9pZCBp
bml0U3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFN0cmVhbT4pOworCisgICAgdmlydHVhbCBib29s
IGlzU3RyZWFtRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBQYXNzUmVmUHRy
PFN0cmVhbT4gc3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9zdHJlYW07IH0KKworcHJpdmF0ZToK
KyAgICBTdHJlYW1FdmVudCgpOworICAgIFN0cmVhbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTdHJlYW0+
KTsKKworICAgIFJlZlB0cjxTdHJlYW0+IG1fc3RyZWFtOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFN0
cmVhbUV2ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1FdmVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwZDAx
Mjk0MTEyY2UyYzQzZWUzZmFmYWMxYjhhZTkzNDNmZWM3NzQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtRXZlbnQuaWRsCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
ZXZlbnRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NU
UkVBTSwKKyAgICBdIFN0cmVhbUV2ZW50IDogRXZlbnQgeworCisgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFN0cmVhbSBzdHJlYW07CisKKyAgICAgICB2b2lkIGluaXRTdHJlYW1FdmVudChpbiBE
T01TdHJpbmcgdHlwZUFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFu
IGNhbkJ1YmJsZUFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBj
YW5jZWxhYmxlQXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBTdHJlYW0gc3Ry
ZWFtQXJnKTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3Ry
ZWFtTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtTGlzdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWE2NmIyODAzYzg0NWQ4OTRkYTAxZWIyNTE4OTNmNTU5NDlmZTVlZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1MaXN0LmNwcApAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUxpc3QuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit1bnNpZ25lZCBTdHJlYW1MaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAg
IHJldHVybiBtX3N0cmVhbXMtPmxlbmd0aCgpOworfQorCitQYXNzUmVmUHRyPFN0cmVhbT4gU3Ry
ZWFtTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPCBt
X3N0cmVhbXMtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbV9zdHJlYW1zLT5pdGVtKGluZGV4
KTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHJlYW1MaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY0NDMwZWIyZDU5Mzc5MjQ1MGZmMmFjYjRlMGE2Mzg3
MGE5YjRjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1MaXN0
LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3RyZWFtTGlzdF9oCisjZGVmaW5lIFN0cmVhbUxp
c3RfaAorCisjaW5jbHVkZSA8U3RyZWFtQ29udGFpbmVyLmg+CisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFN0cmVhbTsKKworY2xhc3MgU3RyZWFtTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0
cmVhbUxpc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJlYW1MaXN0PiBj
cmVhdGUoUGFzc1JlZlB0cjxTdHJlYW1Db250YWluZXI+IHN0cmVhbXMpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmVhbUxpc3Qoc3RyZWFtcykpOworICAgIH0KKyAgICB2
aXJ0dWFsIH5TdHJlYW1MaXN0KCkgeyB9CisKKyAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0
ZXMgZm9yIFN0cmVhbUxpc3QKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdHJlYW0+IGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0
OworCitwcml2YXRlOgorICAgIFN0cmVhbUxpc3QoUGFzc1JlZlB0cjxTdHJlYW1Db250YWluZXI+
IHN0cmVhbXMpCisgICAgeworICAgICAgICBtX3N0cmVhbXMgPSBzdHJlYW1zOworICAgIH0KKwor
ICAgIFJlZlB0cjxTdHJlYW1Db250YWluZXI+IG1fc3RyZWFtczsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFN0cmVhbUxpc3RfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1N0cmVhbUxpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbUxp
c3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE3OWQyYzRiZGRhNTYzY2RlMTM3MzhhNTdiZmY0YzkxMzgwNjY2
Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtTGlzdC5pZGwK
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAg
IEhhc0luZGV4R2V0dGVyCisgICAgXSBTdHJlYW1MaXN0IHsKKworICAgICAgICBTdHJlYW0gaXRl
bShpbiBbSXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCk7CisKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworCisgICAgfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCmluZGV4IDVkNTdjOWMxMjhlMjFmZTIxMGIyZTE2NzMwM2M4ODI4MGYy
OTY5NjMuLmRjODYzNDZjZGVkOWJiN2EzMWYyYzViODI1NmFhNzEyMzhjZDQ1NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTMzNiw2ICszMzYsOCBAQCBtb2R1bGUgd2luZG93IHsK
ICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1ERVZJQ0VfT1JJRU5UQVRJT04sRW5hYmxl
ZEF0UnVudGltZV0gRGV2aWNlT3JpZW50YXRpb25FdmVudENvbnN0cnVjdG9yIERldmljZU9yaWVu
dGF0aW9uRXZlbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9REVWSUNFX09SSUVO
VEFUSU9OLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb25kZXZpY2VvcmllbnRhdGlv
bjsKIAorICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSxFbmFibGVk
QXRSdW50aW1lXSBQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yIFBlZXJDb25uZWN0aW9uOworCiAg
ICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgICAgICBbQ3VzdG9tXSB2b2lkIGFk
ZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKaW5kZXggNTAxOTJkOTRhMjlmNGViZmE4MmRmNjViYmRi
NmNlMWUzMjQ5MjRiNy4uNzcwNDhlNjEwMjJlNjE1YWVmYTA2OTdiYWM1OTc3ZWJhMTJmMGJkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaApAQCAtNjgsNiArNjgsMjMg
QEAgcHVibGljOgogICAgIC8vIFNlbGVjdCBhIHZpZGVvIHRyYWNrIGluIGEgZ2VuZXJhdGVkIHN0
cmVhbS4KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0VmlkZW9UcmFjayhjb25zdCBTdHJpbmcmIHN0
cmVhbUxhYmVsLCBsb25nIGluZGV4KSA9IDA7CiAKKyAgICAvLyBTaWduYWxpbmcgbWVzc2FnZSBm
cm9tIHBlZXIgY29ubmVjdGlvbgorICAgIHZpcnR1YWwgdm9pZCBzaWduYWxpbmdNZXNzYWdlKGlu
dCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKKworICAgIC8v
IE1lc3NhZ2UgZnJvbSBwZWVyIGNvbm5lY3Rpb24KKyAgICB2aXJ0dWFsIHZvaWQgbWVzc2FnZShp
bnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisKKyAgICAv
LyBBZGQgYSBzdHJlYW0gdG8gYSBwZWVyIGNvbm5lY3Rpb24KKyAgICB2aXJ0dWFsIHZvaWQgYWRk
U3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKSA9
IDA7CisKKyAgICAvLyBSZW1vdmUgYSBzdHJlYW0gZnJvbSBhIHBlZXIgY29ubmVjdGlvbgorICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0
cmluZyYgc3RyZWFtTGFiZWwpID0gMDsKKworICAgIC8vIFBlZXIgY29ubmVjdGlvbiBpcyBiZWlu
ZyBjbG9zZWQuCisgICAgdmlydHVhbCB2b2lkIGNsb3NlUGVlckNvbm5lY3Rpb24oaW50IHBlZXJD
b25uZWN0aW9uSWQpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydE5lZ290aWF0aW9uKGlu
dCBwZWVyQ29ubmVjdGlvbklkKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5NZWRp
YVN0cmVhbUNsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJl
YW1Db250cm9sbGVyLmNwcAppbmRleCAxNWRiNGIwNDhkZTIwMWRkYjY4Mjk3NDA5MGYzOTM3MWM1
YTllM2VjLi5hYWU3YTJjM2VhMzU5YzhkOWQyYTZmZGE3MDI5M2IzM2JhNzUxNmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCkBAIC0zNiw2ICsz
Niw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gVE9ETzogVGhpcyBpcyB1c2VkIGZv
ciBob2xkaW5nIGxpc3Qgb2YgUGVlckNvbm5lY3Rpb24gYXMgd2VsbCwKKy8vIHNvIHJlbmFtZSBj
bGFzcyBpcyBpbiBvcmRlci4KIGNsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6UmVxdWVzdCB7
CiBwdWJsaWM6CiAgICAgUmVxdWVzdCgpCkBAIC01Nyw2ICs1OSw3IEBAIHByaXZhdGU6CiBNZWRp
YVN0cmVhbUNvbnRyb2xsZXI6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcihNZWRpYVN0cmVhbUNsaWVu
dCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9uZXh0R2xvYmFsUmVx
dWVzdElkKDEpCisgICAgLCBtX25leHRHbG9iYWxQZWVyQ29ubmVjdGlvbklkKDEpCiB7CiB9CiAK
QEAgLTkxLDYgKzk0LDggQEAgdm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJG
cmFtZUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIKIAogICAgIGZvciAoVmVj
dG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gZnJhbWVTdHJlYW1zLmJlZ2luKCk7IGl0ICE9IGZy
YW1lU3RyZWFtcy5lbmQoKTsgKytpdCkKICAgICAgICAgbV9zdHJlYW1zLnJlbW92ZSgqaXQpOwor
CisgICAgLy8gVE9ETzogQWRkIGZvciBwZWVyIGNvbm5lY3Rpb24KIH0KIAogaW50IE1lZGlhU3Ry
ZWFtQ29udHJvbGxlcjo6cmVnaXN0ZXJSZXF1ZXN0KGludCBsb2NhbElkLCBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyKQpAQCAtMjA0LDYgKzIwOSw3IEBAIHZvaWQg
TWVkaWFTdHJlYW1Db250cm9sbGVyOjp2aWRlb1RyYWNrRmFpbGVkKGNvbnN0IFN0cmluZyYgc3Ry
ZWFtTGFiZWwsIHVuc2lnbmVkCiAgICAgICAgIG1fc3RyZWFtcy5nZXQoc3RyZWFtTGFiZWwpLT52
aWRlb1RyYWNrRmFpbGVkKHN0cmVhbUxhYmVsLCBpbmRleCk7CiB9CiAKKy8vIFRPRE86IFJlbW92
ZSBvciB1c2UgdGhpcyBuYW1lIGluc3RlYWQgb2Ygb25BZGRTdHJlYW0KIHZvaWQgTWVkaWFTdHJl
YW1Db250cm9sbGVyOjphZGRSZW1vdGVTdHJlYW0oaW50LCBjb25zdCBTdHJpbmcmKQogewogICAg
IC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KQEAgLTIxNCw2ICsyMjAsMTQzIEBAIHZvaWQg
TWVkaWFTdHJlYW1Db250cm9sbGVyOjphZGRSZW1vdGVTdHJlYW0oaW50LCBjb25zdCBTdHJpbmcm
KQogICAgIH0qLwogfQogCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVnaXN0ZXJQZWVy
Q29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIqIGZyYW1lQ29udHJvbGxlcikKK3sKKyAgICBtX3BlZXJDb25uZWN0aW9ucy5hZGQobV9uZXh0
R2xvYmFsUGVlckNvbm5lY3Rpb25JZCsrLCBSZXF1ZXN0KHBlZXJDb25uZWN0aW9uSWQsIGZyYW1l
Q29udHJvbGxlcikpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6c2VuZFNpZ25h
bGluZ01lc3NhZ2UoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBj
b250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYgKG1fcGVlckNvbm5lY3Rp
b25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAgICAgICAvLyBU
T0RPOiBCZXR0ZXIgbmFtZSBvZiBwZWVyQ29ubmVjdGlvbiB2YXJpYWJsZT8KKyAgICAgICAgY29u
c3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29udHJv
bGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uZnJh
bWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIo
KS0+c2VuZFNpZ25hbGluZ01lc3NhZ2UocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpLCBtZXNzYWdl
KTsKKyAgICB9Cit9CisKK2ludCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmZyYW1lVG9QYWdlUGVl
ckNvbm5lY3Rpb25JZChNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVy
LCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rp
b25JZCgtMSk7CisgICAgLy8gVE9ETzogQmV0dGVyIHdheSB0byBmaW5kIHRoZSBnbG9iYWwgSUQg
aW4gdGhlIG1hcD8KKyAgICBmb3IgKFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZWVyQ29u
bmVjdGlvbnMuYmVnaW4oKTsgaXQgIT0gbV9wZWVyQ29ubmVjdGlvbnMuZW5kKCk7ICsraXQpIHsK
KyAgICAgICAgaWYgKGl0LT5zZWNvbmQuZnJhbWVDb250cm9sbGVyKCkgPT0gZnJhbWVDb250cm9s
bGVyICYmIGl0LT5zZWNvbmQubG9jYWxJZCgpID09IGZyYW1lUGVlckNvbm5lY3Rpb25JZCkgewor
ICAgICAgICAgICAgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcGFnZVBlZXJDb25uZWN0aW9u
SWQ7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpzaWduYWxpbmdNZXNzYWdlKE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJD
b25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpbnQgcGFn
ZVBlZXJDb25uZWN0aW9uSWQgPSBmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250
cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworICAgIGlmIChwYWdlUGVlckNvbm5lY3Rp
b25JZCAhPSAtMSkKKyAgICAgICAgbV9jbGllbnQtPnNpZ25hbGluZ01lc3NhZ2UocGFnZVBlZXJD
b25uZWN0aW9uSWQsIG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
bWVzc2FnZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQg
ZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkID0gZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklk
KGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKyAgICBpZiAocGFnZVBl
ZXJDb25uZWN0aW9uSWQgIT0gLTEpCisgICAgICAgIG1fY2xpZW50LT5tZXNzYWdlKHBhZ2VQZWVy
Q29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
Om9uTWVzc2FnZShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0
cmluZyYgbWVzc2FnZSkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGZyYW1lIGNv
bnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQKKyAgICBpZiAobV9wZWVyQ29ubmVjdGlv
bnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpKSB7CisgICAgICAgIC8vIFRP
RE86IEJldHRlciBuYW1lIG9mIHBlZXJDb25uZWN0aW9uIHZhcmlhYmxlPworICAgICAgICBjb25z
dCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rpb25zLmdldChjb250cm9s
bGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVyQ29ubmVjdGlvbi5mcmFt
ZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigp
LT5vbk1lc3NhZ2UocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpLCBtZXNzYWdlKTsKKyAgICB9Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjphZGRTdHJlYW0oTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25u
ZWN0aW9uSWQgPSBmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVyLCBm
cmFtZVBlZXJDb25uZWN0aW9uSWQpOworICAgIGlmIChwYWdlUGVlckNvbm5lY3Rpb25JZCAhPSAt
MSkKKyAgICAgICAgbV9jbGllbnQtPmFkZFN0cmVhbShwYWdlUGVlckNvbm5lY3Rpb25JZCwgc3Ry
ZWFtTGFiZWwpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25BZGRTdHJlYW0o
aW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVh
bUxhYmVsKQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxl
ciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlmIChtX3BlZXJDb25uZWN0aW9ucy5jb250
YWlucyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgLy8gVE9ETzogQmV0
dGVyIG5hbWUgb2YgcGVlckNvbm5lY3Rpb24gdmFyaWFibGU/CisgICAgICAgIGNvbnN0IFJlcXVl
c3QmIHBlZXJDb25uZWN0aW9uID0gbV9wZWVyQ29ubmVjdGlvbnMuZ2V0KGNvbnRyb2xsZXJQZWVy
Q29ubmVjdGlvbklkKTsKKyAgICAgICAgQVNTRVJUKHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJv
bGxlcigpKTsKKyAgICAgICAgcGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCktPm9uQWRk
U3RyZWFtKHBlZXJDb25uZWN0aW9uLmxvY2FsSWQoKSwgc3RyZWFtTGFiZWwpOworICAgIH0KK30K
Kwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlbW92ZVN0cmVhbShNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklk
LCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIGludCBwYWdlUGVlckNv
bm5lY3Rpb25JZCA9IGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIs
IGZyYW1lUGVlckNvbm5lY3Rpb25JZCk7CisgICAgaWYgKHBhZ2VQZWVyQ29ubmVjdGlvbklkICE9
IC0xKQorICAgICAgICBtX2NsaWVudC0+cmVtb3ZlU3RyZWFtKHBhZ2VQZWVyQ29ubmVjdGlvbklk
LCBzdHJlYW1MYWJlbCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpvblJlbW92
ZVN0cmVhbShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc3RyZWFtTGFiZWwpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBj
b250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYgKG1fcGVlckNvbm5lY3Rp
b25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAgICAgICAvLyBU
T0RPOiBCZXR0ZXIgbmFtZSBvZiBwZWVyQ29ubmVjdGlvbiB2YXJpYWJsZT8KKyAgICAgICAgY29u
c3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29udHJv
bGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uZnJh
bWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIo
KS0+b25SZW1vdmVTdHJlYW0ocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpLCBzdHJlYW1MYWJlbCk7
CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6Y2xvc2VQZWVyQ29ubmVj
dGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgZnJh
bWVQZWVyQ29ubmVjdGlvbklkKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IGZy
YW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIsIGZyYW1lUGVlckNvbm5l
Y3Rpb25JZCk7CisgICAgaWYgKHBhZ2VQZWVyQ29ubmVjdGlvbklkICE9IC0xKQorICAgICAgICBt
X2NsaWVudC0+Y2xvc2VQZWVyQ29ubmVjdGlvbihwYWdlUGVlckNvbm5lY3Rpb25JZCk7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdGFydE5lZ290aWF0aW9uKE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9u
SWQpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkID0gZnJhbWVUb1BhZ2VQZWVyQ29u
bmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKyAgICBp
ZiAocGFnZVBlZXJDb25uZWN0aW9uSWQgIT0gLTEpCisgICAgICAgIG1fY2xpZW50LT5zdGFydE5l
Z290aWF0aW9uKHBhZ2VQZWVyQ29ubmVjdGlvbklkKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNv
bnRyb2xsZXI6Om5lZ290aWF0aW9uU3RhcnRlZChpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9u
SWQpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNh
biBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYgKG1fcGVlckNvbm5lY3Rpb25zLmNvbnRhaW5z
KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAgICAgICAvLyBUT0RPOiBCZXR0ZXIg
bmFtZSBvZiBwZWVyQ29ubmVjdGlvbiB2YXJpYWJsZT8KKyAgICAgICAgY29uc3QgUmVxdWVzdCYg
cGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29udHJvbGxlclBlZXJDb25u
ZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVy
KCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKS0+bmVnb3RpYXRp
b25TdGFydGVkKHBlZXJDb25uZWN0aW9uLmxvY2FsSWQoKSk7CisgICAgfQorfQorCit2b2lkIE1l
ZGlhU3RyZWFtQ29udHJvbGxlcjo6bmVnb3RpYXRpb25Eb25lKGludCBjb250cm9sbGVyUGVlckNv
bm5lY3Rpb25JZCkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGZyYW1lIGNvbnRy
b2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQKKyAgICBpZiAobV9wZWVyQ29ubmVjdGlvbnMu
Y29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpKSB7CisgICAgICAgIC8vIFRPRE86
IEJldHRlciBuYW1lIG9mIHBlZXJDb25uZWN0aW9uIHZhcmlhYmxlPworICAgICAgICBjb25zdCBS
ZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rpb25zLmdldChjb250cm9sbGVy
UGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVyQ29ubmVjdGlvbi5mcmFtZUNv
bnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpLT5u
ZWdvdGlhdGlvbkRvbmUocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpKTsKKyAgICB9Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjplcnJvcihpbnQgY29udHJvbGxlclBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSkKK3sKKyAgICAvLyBEb24ndCBhc3Nl
cnQgc2luY2UgdGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQKKyAg
ICBpZiAobV9wZWVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9u
SWQpKSB7CisgICAgICAgIC8vIFRPRE86IEJldHRlciBuYW1lIG9mIHBlZXJDb25uZWN0aW9uIHZh
cmlhYmxlPworICAgICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNv
bm5lY3Rpb25zLmdldChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VS
VChwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0
aW9uLmZyYW1lQ29udHJvbGxlcigpLT5lcnJvcihwZWVyQ29ubmVjdGlvbi5sb2NhbElkKCksIG1l
c3NhZ2UpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVk
aWFTdHJlYW1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29u
dHJvbGxlci5oCmluZGV4IDI2NTVhMmVjYjM0ZjRjZDQzN2FhMzdkMGU0MzgxYTIyOGU0MzcwZWMu
LmI3YmIyMmY0NmU3YzY3ZjRlZjI1ZDdkYmM2ODk2ZDFkNzE1ZmIzMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaApAQCAtNjcsMjEgKzY3LDQ0IEBAIHB1
YmxpYzoKICAgICB2b2lkIHN0cmVhbVJlY29yZGVkRGF0YShpbnQgcmVxdWVzdElkLCBQYXNzUmVm
UHRyPEJsb2I+KTsKICAgICB2b2lkIGF1ZGlvVHJhY2tGYWlsZWQoY29uc3QgU3RyaW5nJiBzdHJl
YW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgdm9pZCB2aWRlb1RyYWNrRmFpbGVk
KGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIC8v
IFRPRE86IFJlbW92ZSBvciB1c2UgdGhpcyBuYW1lIGluc3RlYWQgb2Ygb25BZGRTdHJlYW0KICAg
ICB2b2lkIGFkZFJlbW90ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5n
JiBzdHJlYW1MYWJlbCk7CiAKKyAgICAvKiBKUyAtPiBVQSAqLworICAgIHZvaWQgcmVnaXN0ZXJQ
ZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIqKTsKKyAgICB2b2lkIHNpZ25hbGluZ01lc3NhZ2UoTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1l
c3NhZ2UpOworICAgIHZvaWQgbWVzc2FnZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGlu
dCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7Cisg
ICAgdm9pZCBhZGRTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQ
ZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKyAgICB2
b2lkIHJlbW92ZVN0cmVhbShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBl
ZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyZWFtTGFiZWwpOworICAgIHZv
aWQgY2xvc2VQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBm
cmFtZVBlZXJDb25uZWN0aW9uSWQpOworICAgIHZvaWQgc3RhcnROZWdvdGlhdGlvbihNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworCisgICAg
LyogVUEgLT4gSlMgKi8KKyAgICB2b2lkIHNlbmRTaWduYWxpbmdNZXNzYWdlKGludCBjb250cm9s
bGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2
b2lkIG9uTWVzc2FnZShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBvbkFkZFN0cmVhbShpbnQgY29udHJvbGxlclBl
ZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyZWFtTGFiZWwpOworICAgIHZv
aWQgb25SZW1vdmVTdHJlYW0oaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBB
dG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKyAgICB2b2lkIG5lZ290aWF0aW9uU3RhcnRlZChp
bnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgIHZvaWQgbmVnb3RpYXRpb25Eb25l
KGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgdm9pZCBlcnJvcihpbnQgY29u
dHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7CisK
IHByaXZhdGU6CiAgICAgaW50IHJlZ2lzdGVyUmVxdWVzdChpbnQgbG9jYWxSZXF1ZXN0SWQsIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKik7CiAgICAgdm9pZCByZWdpc3RlclN0cmVhbShjb25z
dCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciopOwogCisg
ICAgaW50IGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworCiAgICAgY2xhc3MgUmVxdWVzdDsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZXF1ZXN0PiBSZXF1ZXN0TWFwOwogICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKj4gU3RyZWFtTWFw
OwogCiAgICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOwogICAgIFN0cmVhbU1hcCBtX3N0cmVhbXM7
CisgICAgUmVxdWVzdE1hcCBtX3BlZXJDb25uZWN0aW9uczsKIAogICAgIE1lZGlhU3RyZWFtQ2xp
ZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9uZXh0R2xvYmFsUmVxdWVzdElkOworICAgIGludCBt
X25leHRHbG9iYWxQZWVyQ29ubmVjdGlvbklkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcAppbmRleCA3NjhlYWZiMjIyZGFmYTQ1ZDVkY2RkMzI1YTYxMDhjMzhhNGYyYTY2Li5jNzdl
ODA0NDk4ZmNhNjI5YWViYzcxZWU3MTM4NmQwNjkxNzAxZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcApAQCAtMzgsNyArMzgs
OSBAQAogI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKICNpbmNs
dWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCIKICNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgIlNpZ25hbGxpbmdDYWxsYmFjay5oIgogI2luY2x1ZGUgIlN0cmVhbVJl
Y29yZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNTUsNiArNTcsNyBA
QCBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc0dlbmVyYXRlU3RyZWFtUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVjb3JkZWREYXRhUmVxdWVzdCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2lnbmFsbGluZ1JlcXVlc3QoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogCkBA
IC0zMjMsNiArMzI2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Z2VuZXJh
dGVTdHJlYW0oY29uc3QgU3RyaW5nJiBvcHRpb25zLAogCiBQYXNzUmVmUHRyPFN0cmVhbVJlY29y
ZGVyPiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cmVjb3JkU3RyZWFtKFBhc3NSZWZQdHI8
U3RyZWFtPiBzdHJlYW1SZWYpCiB7CisgICAgLy8gVE9ETzogU2hvdWxkIHRoaXMgYmUgc3VwcG9y
dGVkIGZvciByZW1vdGUgc3RyZWFtcyB0b28/CiAgICAgaWYgKCFpc0NsaWVudEF2YWlsYWJsZSgp
KQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMzM5LDYgKzM0Myw3IEBAIFBhc3NSZWZQdHI8U3Ry
ZWFtUmVjb3JkZXI+IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpyZWNvcmRTdHJlYW0oUGFz
c1JlZlB0cjxTCiAKIHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmdldFJlY29yZGVk
RGF0YShjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBpbnQgcmVjb3JkZXJJZCwgUGFzc1JlZlB0
cjxCbG9iQ2FsbGJhY2s+IGJsb2JDYWxsYmFjaykKIHsKKyAgICAvLyBUT0RPOiBTaG91bGQgdGhp
cyBiZSBzdXBwb3J0ZWQgZm9yIHJlbW90ZSBzdHJlYW1zIHRvbz8KICAgICAvLyBBc3NlcnQgYmVj
YXVzZSB3ZSdyZSBhc3N1bWluZyB0aGF0IHRoZSByZWNvcmRlciBrZWVwcyBhbGl2ZSB0aGUgc3Ry
ZWFtIG9iamVjdC4KICAgICBBU1NFUlQobV9zdHJlYW1zLmNvbnRhaW5zKHN0cmVhbUxhYmVsKSk7
CiAgICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocmVjb3JkZXJJZCktPmlzU3RyZWFtUmVjb3JkZXIo
KSk7CkBAIC0zNTQsNiArMzU5LDcgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
Z2V0UmVjb3JkZWREYXRhKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIGludAogCiB2b2lkIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNwb3NlUmVjb3JkZWREYXRhKGNvbnN0IFN0cmlu
ZyYgc3RyZWFtTGFiZWwsIGludCByZWNvcmRlcklkKQogeworICAgIC8vIFRPRE86IFNob3VsZCB0
aGlzIGJlIHN1cHBvcnRlZCBmb3IgcmVtb3RlIHN0cmVhbXMgdG9vPwogICAgIC8vIEFzc2VydCBi
ZWNhdXNlIHdlJ3JlIGFzc3VtaW5nIHRoYXQgdGhlIHJlY29yZGVyIGtlZXBzIGFsaXZlIHRoZSBz
dHJlYW0gb2JqZWN0LgogICAgIEFTU0VSVChtX3N0cmVhbXMuY29udGFpbnMoc3RyZWFtTGFiZWwp
KTsKICAgICBBU1NFUlQobV9jbGllbnRzLmdldChyZWNvcmRlcklkKS0+aXNTdHJlYW1SZWNvcmRl
cigpKTsKQEAgLTQ4NSw2ICs0OTEsMTM2IEBAIHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6OmFkZFJlbW90ZVN0cmVhbShpbnQsIGNvbnN0IFN0cmluZyYpCiAgICAgLy8gRklYTUU6IHRv
IGJlIGltcGxlbWVudGVkLgogfQogCitQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24oY29uc3QgQXRvbWljU3Ry
aW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGxpbmdDYWxsYmFjaz4gc2lnbmFs
bGluZ0NhbGxiYWNrKQoreworICAgIGludCBjbGllbnRJZCA9IG1fY2xpZW50cy5nZXROZXh0SWQo
KTsKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gUGVlckNvbm5l
Y3Rpb246OmNyZWF0ZSh0aGlzLCBjbGllbnRJZCwgY29uZmlndXJhdGlvbiwgc2lnbmFsbGluZ0Nh
bGxiYWNrKTsKKyAgICBtX2NsaWVudHMuYWRkKGNsaWVudElkLCBwZWVyQ29ubmVjdGlvbi5nZXQo
KSk7CisKKyAgICAvLyBUT0RPOiBIb3cgdG8gaGFuZGxlIGlmIHdlcmUgaW4gYSBzdGF0ZSBvZiBt
b3ZpbmcgZnJhbWUgdG8gYW5vdGhlciBwYWdlLAorICAgIC8vIGFuZCBwYWdlQ29udHJvbGxlciBp
c24ndCBjdXJyZW50bHkgdmFsaWQ/IEp1c3Qgc2tpcCByZWdpc3RlcmluZz8KKyAgICBpZiAocGFn
ZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+cmVnaXN0ZXJQZWVyQ29u
bmVjdGlvbihjbGllbnRJZCwgdGhpcyk7CisgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uOworfQor
Cit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzZW5kU2lnbmFsaW5nTWVzc2FnZShp
bnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAg
IEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VS
VChtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOwor
CisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IHN0YXRpY19jYXN0
PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKSk7CisKKyAg
ICBwZWVyQ29ubmVjdGlvbi0+c2lnbmFsbGluZ0NhbGxiYWNrKCktPmhhbmRsZUV2ZW50KG1lc3Nh
Z2UsIHBlZXJDb25uZWN0aW9uLmdldCgpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6c2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAg
ICBwYWdlQ29udHJvbGxlcigpLT5zaWduYWxpbmdNZXNzYWdlKHRoaXMsIHBlZXJDb25uZWN0aW9u
SWQsIG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjptZXNz
YWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPm1l
c3NhZ2UodGhpcywgcGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OmFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgUGFz
c1JlZlB0cjxTdHJlYW0+IHN0cmVhbVJlZikKK3sKKyAgICBSZWZQdHI8U3RyZWFtPiBzdHJlYW0g
PSBzdHJlYW1SZWY7CisgICAgQVNTRVJUKG1fc3RyZWFtcy5jb250YWlucyhzdHJlYW0tPmxhYmVs
KCkpKTsKKworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxl
cigpLT5hZGRTdHJlYW0odGhpcywgcGVlckNvbm5lY3Rpb25JZCwgc3RyZWFtLT5sYWJlbCgpKTsK
K30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cmVtb3ZlU3RyZWFtKGludCBw
ZWVyQ29ubmVjdGlvbklkLCBQYXNzUmVmUHRyPFN0cmVhbT4gc3RyZWFtUmVmKQoreworICAgIFJl
ZlB0cjxTdHJlYW0+IHN0cmVhbSA9IHN0cmVhbVJlZjsKKyAgICBBU1NFUlQobV9zdHJlYW1zLmNv
bnRhaW5zKHN0cmVhbS0+bGFiZWwoKSkpOworCisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisg
ICAgICAgIHBhZ2VDb250cm9sbGVyKCktPnJlbW92ZVN0cmVhbSh0aGlzLCBwZWVyQ29ubmVjdGlv
bklkLCBzdHJlYW0tPmxhYmVsKCkpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpvbk1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJDb25uZWN0aW9u
SWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKS0+aXNQZWVy
Q29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rp
b24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNvbm5l
Y3Rpb25JZCkpOworCisgICAgcGVlckNvbm5lY3Rpb24tPm9uTWVzc2FnZShtZXNzYWdlKTsKK30K
Kwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25BZGRTdHJlYW0oaW50IHBlZXJD
b25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgQVNT
RVJUKCFzdHJlYW1MYWJlbC5pc051bGwoKSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlu
cyhwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocGVlckNvbm5l
Y3Rpb25JZCktPmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAgICBSZWZQdHI8U3RyZWFtPiBzdHJl
YW0gPSBTdHJlYW06OmNyZWF0ZSh0aGlzLCBzdHJlYW1MYWJlbCwgdHJ1ZSk7CisKKyAgICBSZWZQ
dHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5l
Y3Rpb24qPihtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBwZWVyQ29ubmVj
dGlvbi0+c3RyZWFtQWRkZWQoc3RyZWFtKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6b25SZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgQVNTRVJUKCFzdHJlYW1MYWJlbC5pc051bGwo
KSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7Cisg
ICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rp
b24oKSk7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3Rh
dGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24qPihtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQp
KTsKKyAgICBwZWVyQ29ubmVjdGlvbi0+c3RyZWFtUmVtb3ZlZChzdHJlYW1MYWJlbCk7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmNsb3NlUGVlckNvbm5lY3Rpb24oaW50
IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAg
IHBhZ2VDb250cm9sbGVyKCktPmNsb3NlUGVlckNvbm5lY3Rpb24odGhpcywgcGVlckNvbm5lY3Rp
b25JZCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnN0YXJ0TmVnb3Rp
YXRpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkp
CisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPnN0YXJ0TmVnb3RpYXRpb24odGhpcywgcGVlckNv
bm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om5lZ290
aWF0aW9uU3RhcnRlZChpbnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICAvLyBUT0RPOiBBc3Nl
cnQgb3Igbm90PworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25J
ZCkpOworICAgIEFTU0VSVChtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJD
b25uZWN0aW9uKCkpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlv
biA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdldChwZWVyQ29ubmVj
dGlvbklkKSk7CisKKyAgICBwZWVyQ29ubmVjdGlvbi0+bmVnb3RpYXRpb25TdGFydGVkKCk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om5lZ290aWF0aW9uRG9uZShpbnQg
cGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICAvLyBUT0RPOiBBc3NlcnQgb3Igbm90PworICAgIEFT
U0VSVChtX2NsaWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVCht
X2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisg
ICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFBl
ZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKSk7CisKKyAgICBw
ZWVyQ29ubmVjdGlvbi0+bmVnb3RpYXRpb25Eb25lKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXI6OmVycm9yKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgLy8gVE9ETzogQXNzZXJ0IG9yIG5vdD8KKyAgICBBU1NF
UlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9j
bGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAg
IFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVy
Q29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkpOworCisgICAgcGVl
ckNvbm5lY3Rpb24tPmVycm9yKG1lc3NhZ2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCmluZGV4IGEwMDI1ZjZiOTYyYmQxMDUw
NTI5YjM0ZjRlMGJmZjQwZWU5ZTM4YTQuLjcwMGY1MzY5ODg4ZTk1Zjg2YWUxODU1ODM2Yzk3ZjMw
NjE2Yzc0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyLmgKQEAgLTQ3LDggKzQ3LDEwIEBAIGNsYXNzIE11bHRpcGxlVHJhY2tMaXN0Owog
Y2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjazsKIGNsYXNzIE5hdmlnYXRvclVz
ZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjazsKIGNsYXNzIFBhZ2U7CitjbGFzcyBQZWVyQ29ubmVjdGlv
bjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
K2NsYXNzIFNpZ25hbGxpbmdDYWxsYmFjazsKIGNsYXNzIFN0cmVhbTsKIGNsYXNzIFN0cmVhbVJl
Y29yZGVyOwogCkBAIC0xMTEsNyArMTEzLDEwIEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIFN0cmVh
bUNsaWVudCA6IHB1YmxpYyBDbGllbnRCYXNlPFN0cmluZz4gewogICAgIHB1YmxpYzoKLSAgICAg
ICAgU3RyZWFtQ2xpZW50KE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xs
ZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwpIDogQ2xpZW50QmFzZTxTdHJpbmc+KGZyYW1lQ29udHJv
bGxlciwgbGFiZWwpIHsgfQorICAgICAgICBTdHJlYW1DbGllbnQoTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZW1v
dGVTdHJlYW0pCisgICAgICAgICAgICA6IENsaWVudEJhc2U8U3RyaW5nPihmcmFtZUNvbnRyb2xs
ZXIsIGxhYmVsKQorICAgICAgICAgICAgLCBtX2lzUmVtb3RlU3RyZWFtKHJlbW90ZVN0cmVhbSkg
eyB9CisKICAgICAgICAgdmlydHVhbCB+U3RyZWFtQ2xpZW50KCkgeyB1bnJlZ2lzdGVyKCk7IH0K
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CkBAIC0xMjAsNyArMTI1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bUVuZGVkKCkgPSAwOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIHVucmVn
aXN0ZXIoKSB7IHVucmVnaXN0ZXJDbGllbnQodGhpcyk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lk
IHVucmVnaXN0ZXIoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1faXNSZW1vdGVTdHJl
YW0pCisgICAgICAgICAgICAgICAgdW5yZWdpc3RlckNsaWVudCh0aGlzKTsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgbV9pc1JlbW90ZVN0cmVhbTsKICAgICB9OwogCiAgICAgLy8gR2VuZXJp
YyBjbGllbnRzIGFyZSBvYmplY3RzIHRoYXQgcmVxdWlyZSBhY2Nlc3MgdG8gdGhlIGZyYW1lIGNv
bnRyb2xsZXIgYnV0IGRvbid0IGhhdmUgYSBnbG9iYWwgaWQgKGxpa2Ugc3RyZWFtcyBkbykKQEAg
LTE4Niw2ICsxOTcsMjcgQEAgcHVibGljOgogICAgIC8vIFNlbGVjdCBhIHZpZGVvIHRyYWNrIGlu
IGEgZ2VuZXJhdGVkIHN0cmVhbS4KICAgICB2b2lkIHNlbGVjdFZpZGVvVHJhY2soY29uc3QgU3Ry
aW5nJiBzdHJlYW1MYWJlbCwgbG9uZyBpbmRleCk7CiAKKyAgICAvLyBDcmVhdGVzIGEgbmV3IFBl
ZXJDb25uZWN0aW9uIG9iamVjdC4KKyAgICBQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBjcmVh
dGVQZWVyQ29ubmVjdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIGNvbmZpZ3VyYXRpb24sIFBhc3NS
ZWZQdHI8U2lnbmFsbGluZ0NhbGxiYWNrPik7CisKKyAgICAvLyBUZWxscyB0aGUgdXNlciBhZ2Vu
dCB0byBzdGFydCB0aGUgbmVnb3RpYXRpb24uCisgICAgdm9pZCBzdGFydE5lZ290aWF0aW9uKGlu
dCBwZWVyQ29ubmVjdGlvbklkKTsKKworICAgIC8vIEluY29taW5nIHNpZ25hbGluZyBtZXNzYWdl
IGZyb20gcmVtb3RlIFBlZXJDb25uZWN0aW9uLgorICAgIHZvaWQgc2lnbmFsaW5nTWVzc2FnZShp
bnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKTsKKworICAg
IC8vIFNlbmQgdGV4dCBtZXNzYWdlCisgICAgdm9pZCBtZXNzYWdlKGludCBwZWVyQ29ubmVjdGlv
bklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpOworCisgICAgLy8gU3RhcnQgc2VuZCBh
IHN0cmVhbSB0byB0aGUgb3RoZXIgcGVlcgorICAgIHZvaWQgYWRkU3RyZWFtKGludCBwZWVyQ29u
bmVjdGlvbklkLCBQYXNzUmVmUHRyPFN0cmVhbT4pOworCisgICAgLy8gU3RvcCBzZW5kIGEgc3Ry
ZWFtIHRvIHRoZSBvdGhlciBwZWVyCisgICAgdm9pZCByZW1vdmVTdHJlYW0oaW50IHBlZXJDb25u
ZWN0aW9uSWQsIFBhc3NSZWZQdHI8U3RyZWFtPik7CisKKyAgICAvLyBDbG9zZSBkb3duIGFsbCBh
Y3Rpdml0eSBpbiB0aGUgUGVlckNvbm5lY3Rpb24gb2JqZWN0LgorICAgIHZvaWQgY2xvc2VQZWVy
Q29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCk7CisKICAgICAvLyAtLS0gQ2FsbHMgY29t
aW5nIGJhY2sgZnJvbSB0aGUgY29udHJvbGxlci4gLS0tIC8vCiAKICAgICAvLyBSZXBvcnQgdGhl
IGdlbmVyYXRpb24gb2YgYSBuZXcgbG9jYWwgc3RyZWFtLgpAQCAtMjA3LDYgKzIzOSwyNyBAQCBw
dWJsaWM6CiAgICAgLy8gQXNrcyB0byBjcmVhdGUgYSBuZXcgcmVtb3RlIHN0cmVhbSBvYmplY3Qg
aW4gdGhlIGNvbnRleHQgb2YgYSBwZWVyIGNvbm5lY3Rpb24uCiAgICAgdm9pZCBhZGRSZW1vdGVT
dHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOwog
CisgICAgLy8gU2VuZHMgYSBzaWduYWxpbmcgbWVzc2FnZSB0byBhIHBlZXIgY29ubmVjdGlvbi4K
KyAgICB2b2lkIHNlbmRTaWduYWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25z
dCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpOworCisgICAgLy8gU2VuZHMgYSBtZXNzYWdlIHRvIGEg
cGVlciBjb25uZWN0aW9uLgorICAgIHZvaWQgb25NZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklk
LCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpOworCisgICAgLy8gSW5mb3JtcyB0aGF0IHRo
ZSBvdGhlciBwZWVyIGhhcyBzdGFydGVkIHNlbmRpbmcgYSBzdHJlYW0gdG8gdXMKKyAgICB2b2lk
IG9uQWRkU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0
cmVhbUxhYmVsKTsKKworICAgIC8vIEluZm9ybXMgdGhhdCB0aGUgb3RoZXIgcGVlciBoYXMgc3Rv
cHBlZCBzZW5kaW5nIGEgc3RyZWFtIHRvIHVzCisgICAgdm9pZCBvblJlbW92ZVN0cmVhbShpbnQg
cGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisKKyAg
ICAvLyBJQ0UvU1RVTi9UVVJOIGV0YyBuZWdvdGlhdGlvbiBzdGFydGVkLgorICAgIHZvaWQgbmVn
b3RpYXRpb25TdGFydGVkKGludCBwZWVyQ29ubmVjdGlvbklkKTsKKworICAgIC8vIElDRS9TVFVO
L1RVUk4gZXRjIG5lZ290aWF0aW9uIGRvbmUuCisgICAgdm9pZCBuZWdvdGlhdGlvbkRvbmUoaW50
IHBlZXJDb25uZWN0aW9uSWQpOworCisgICAgLy8gU29tZXRoaW5nIGJhZCBoYXBwZW5lZC4KKyAg
ICB2b2lkIGVycm9yKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1l
c3NhZ2UpOworCiBwcml2YXRlOgogICAgIGNsYXNzIFJlcXVlc3Q7CiAgICAgY2xhc3MgR2VuZXJh
dGVTdHJlYW1SZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYVN0cmVhbUNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYVN0cmVhbUNsaWVudE1vY2suY3BwCmluZGV4IGNjOTNmNGNhN2VhY2MyMTJmMzBhZDJi
NTU5ZDNmYWNlNTNkNjM2NmEuLjFiMTE1MjkzNzE5OTY5ZTM2YzZlYTYwZjBkMGRlOGI4YzllNGZi
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFTdHJlYW1D
bGllbnRNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhU3Ry
ZWFtQ2xpZW50TW9jay5jcHAKQEAgLTYyLDYgKzYyLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZW5hYmxlQXVkaW9UcmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUF1ZGlvVHJhY2soY29uc3Qg
U3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgdmlydHVhbCB2
b2lkIHNlbGVjdFZpZGVvVHJhY2soY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgbG9uZyBpbmRl
eCk7CisgICAgdmlydHVhbCB2b2lkIHNpZ25hbGluZ01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9u
SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdmlydHVhbCB2b2lkIG1lc3NhZ2UoaW50
IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdmlydHVhbCB2
b2lkIGFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1M
YWJlbCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25J
ZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlUGVl
ckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpOworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKTsKIAogcHJpdmF0ZToKICAgICAvLyBH
ZW5lcmF0ZVN0cmVhbVJlcXVlc3QuCkBAIC03Niw2ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBj
bGFzcyBTdHJlYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxTdHJlYW0+IHsKICAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmVhbT4gY3JlYXRlKFN0cmluZyBsYWJlbCk7CiAg
ICAgICAgIH5TdHJlYW0oKTsKICAgICAgICAgU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4g
bV9sYWJlbDsgfQogICAgICAgICBLVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CkBA
IC0xMDAsMTggKzEwNywyNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB0eXBlZGVmIFdURjo6
VmVjdG9yPEdlbmVyYXRlU3RyZWFtUmVxdWVzdD4gR2VuZXJhdGVTdHJlYW1SZXF1ZXN0TGlzdDsK
KyAgICB0eXBlZGVmIFdURjo6SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxTdHJlYW0+ID4gU3RyZWFt
TWFwOwogICAgIHR5cGVkZWYgV1RGOjpIYXNoTWFwPFN0cmluZywgUmVmUHRyPEdlbmVyYXRlZFN0
cmVhbT4gPiBHZW5lcmF0ZWRTdHJlYW1NYXA7CiAKICAgICB2b2lkIGFzeW5jUHJvY2Vzc0dlbmVy
YXRlU3RyZWFtUmVxdWVzdHMoKTsKICAgICB2b2lkIHJlcXVlc3RzVGltZXJGaXJlZChUaW1lcjxN
ZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsPiopOwogICAgIHZvaWQgcHJvY2Vzc0dlbmVyYXRlU3Ry
ZWFtUmVxdWVzdChjb25zdCBHZW5lcmF0ZVN0cmVhbVJlcXVlc3QmKTsKIAorICAgIHZvaWQgc2ln
bmFsaW5nTWVzc2FnZVRpbWVyRmlyZWQoVGltZXI8TWVkaWFTdHJlYW1DbGllbnRNb2NrSW1wbD4q
KTsKKyAgICB2b2lkIG5lZ290aWF0aW9uVGltZXJGaXJlZChUaW1lcjxNZWRpYVN0cmVhbUNsaWVu
dE1vY2tJbXBsPiopOworCiAgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7
CiAgICAgYm9vbCBtX2dldFVzZXJNZWRpYVJlc3VsdFNldDsKICAgICBHZW5lcmF0ZVN0cmVhbU9w
dGlvbkZsYWdzIG1fcmVzdWx0RmxhZ3M7CiAgICAgR2VuZXJhdGVTdHJlYW1SZXF1ZXN0TGlzdCBt
X3JlcXVlc3RzOwogICAgIFRpbWVyPE1lZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGw+IG1fcmVxdWVz
dHNUaW1lcjsKKyAgICBTdHJlYW1NYXAgbV9zdHJlYW1zOwogICAgIEdlbmVyYXRlZFN0cmVhbU1h
cCBtX2dlbmVyYXRlZFN0cmVhbXM7CisgICAgVGltZXI8TWVkaWFTdHJlYW1DbGllbnRNb2NrSW1w
bD4gbV9zaWduYWxpbmdNZXNzYWdlVGltZXI7CisgICAgVGltZXI8TWVkaWFTdHJlYW1DbGllbnRN
b2NrSW1wbD4gbV9uZWdvdGlhdGlvblRpbWVyOworICAgIGludCBtX3BlZXJDb25uZWN0aW9uSWQ7
CisgICAgU3RyaW5nIG1fc2lnbmFsaW5nTWVzc2FnZTsKIH07CiAKIC8vIE1lZGlhU3RyZWFtQ2xp
ZW50TW9ja0ltcGw6OlN0cmVhbS4KQEAgLTEyNSw2ICsxNDEsMTEgQEAgTWVkaWFTdHJlYW1DbGll
bnRNb2NrSW1wbDo6U3RyZWFtOjp+U3RyZWFtKCkKIHsKIH0KIAorUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNsaWVudE1vY2tJbXBsOjpTdHJlYW0+IE1lZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGw6OlN0
cmVhbTo6Y3JlYXRlKFN0cmluZyBsYWJlbCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0
cmVhbShsYWJlbCkpOworfQorCiAvLyBNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsOjpHZW5lcmF0
ZWRTdHJlYW0uCiBNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsOjpHZW5lcmF0ZWRTdHJlYW06Okdl
bmVyYXRlZFN0cmVhbShHZW5lcmF0ZVN0cmVhbU9wdGlvbkZsYWdzIGZsYWdzKQogICAgIDogU3Ry
ZWFtKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS5zdWJzdHJpbmcoMCwgMzYpKQpAQCAtMTQz
LDYgKzE2NCw5IEBAIE1lZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGw6Ok1lZGlhU3RyZWFtQ2xpZW50
TW9ja0ltcGwoKQogICAgICwgbV9nZXRVc2VyTWVkaWFSZXN1bHRTZXQoZmFsc2UpCiAgICAgLCBt
X3Jlc3VsdEZsYWdzKDApCiAgICAgLCBtX3JlcXVlc3RzVGltZXIodGhpcywgJk1lZGlhU3RyZWFt
Q2xpZW50TW9ja0ltcGw6OnJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fc2lnbmFsaW5nTWVz
c2FnZVRpbWVyKHRoaXMsICZNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsOjpzaWduYWxpbmdNZXNz
YWdlVGltZXJGaXJlZCkKKyAgICAsIG1fbmVnb3RpYXRpb25UaW1lcih0aGlzLCAmTWVkaWFTdHJl
YW1DbGllbnRNb2NrSW1wbDo6bmVnb3RpYXRpb25UaW1lckZpcmVkKQorICAgICwgbV9wZWVyQ29u
bmVjdGlvbklkKC0xKQogewogfQogCkBAIC0yMDMsNiArMjI3LDQ5IEBAIHZvaWQgTWVkaWFTdHJl
YW1DbGllbnRNb2NrSW1wbDo6c2VsZWN0VmlkZW9UcmFjayhjb25zdCBTdHJpbmcmLCBsb25nKQog
ewogfQogCit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGw6OnNpZ25hbGluZ01lc3NhZ2Uo
aW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAo
IW1fc2lnbmFsaW5nTWVzc2FnZVRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgbV9wZWVyQ29u
bmVjdGlvbklkID0gcGVlckNvbm5lY3Rpb25JZDsKKyAgICAgICAgbV9zaWduYWxpbmdNZXNzYWdl
ID0gbWVzc2FnZTsKKyAgICAgICAgbV9zaWduYWxpbmdNZXNzYWdlVGltZXIuc3RhcnRPbmVTaG90
KDApOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsOjptZXNzYWdl
KGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9j
b250cm9sbGVyLT5vbk1lc3NhZ2UocGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1DbGllbnRNb2NrSW1wbDo6YWRkU3RyZWFtKGludCBwZWVyQ29ubmVjdGlv
bklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIFN0cmluZyByZW1vdGVTdHJl
YW1MYWJlbChzdHJlYW1MYWJlbCk7CisgICAgcmVtb3RlU3RyZWFtTGFiZWwuYXBwZW5kKCItcmVt
b3RlIik7CisgICAgUmVmUHRyPFN0cmVhbT4gc3RyZWFtID0gU3RyZWFtOjpjcmVhdGUocmVtb3Rl
U3RyZWFtTGFiZWwpOworICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLT5sYWJlbCgpLCBzdHJlYW0p
OworICAgIG1fY29udHJvbGxlci0+b25BZGRTdHJlYW0ocGVlckNvbm5lY3Rpb25JZCwgc3RyZWFt
LT5sYWJlbCgpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsOjpyZW1vdmVT
dHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpCit7
CisgICAgU3RyaW5nIHJlbW90ZVN0cmVhbUxhYmVsKHN0cmVhbUxhYmVsKTsKKyAgICByZW1vdGVT
dHJlYW1MYWJlbC5hcHBlbmQoIi1yZW1vdGUiKTsKKyAgICBtX3N0cmVhbXMucmVtb3ZlKHJlbW90
ZVN0cmVhbUxhYmVsKTsKKyAgICBtX2NvbnRyb2xsZXItPm9uUmVtb3ZlU3RyZWFtKHBlZXJDb25u
ZWN0aW9uSWQsIHJlbW90ZVN0cmVhbUxhYmVsKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNsaWVu
dE1vY2tJbXBsOjpjbG9zZVBlZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKQorewor
fQorCit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGw6OnN0YXJ0TmVnb3RpYXRpb24oaW50
IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaWYgKCFtX25lZ290aWF0aW9uVGltZXIuaXNBY3Rp
dmUoKSkgeworICAgICAgICBtX3BlZXJDb25uZWN0aW9uSWQgPSBwZWVyQ29ubmVjdGlvbklkOwor
ICAgICAgICBtX25lZ290aWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIH0KK30KKwog
dm9pZCBNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsOjphc3luY1Byb2Nlc3NHZW5lcmF0ZVN0cmVh
bVJlcXVlc3RzKCkKIHsKICAgICBpZiAoIW1fcmVxdWVzdHNUaW1lci5pc0FjdGl2ZSgpICYmICFt
X3JlcXVlc3RzLmlzRW1wdHkoKSAmJiBtX2dldFVzZXJNZWRpYVJlc3VsdFNldCkKQEAgLTI1Myw2
ICszMjAsMTYgQEAgdm9pZCBNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsOjpwcm9jZXNzR2VuZXJh
dGVTdHJlYW1SZXF1ZXN0KGNvbnN0IEdlbmVyYXRlU3RyZWEKICAgICBtX2NvbnRyb2xsZXItPnN0
cmVhbUdlbmVyYXRlZChyZXF1ZXN0LnJlcXVlc3RJZCwgc3RyZWFtLT5sYWJlbCgpLCBhdWRpb1Ry
YWNrcywgdmlkZW9UcmFja3MpOwogfQogCit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGw6
OnNpZ25hbGluZ01lc3NhZ2VUaW1lckZpcmVkKFRpbWVyPE1lZGlhU3RyZWFtQ2xpZW50TW9ja0lt
cGw+KikKK3sKKyAgICBtX2NvbnRyb2xsZXItPnNlbmRTaWduYWxpbmdNZXNzYWdlKG1fcGVlckNv
bm5lY3Rpb25JZCwgbV9zaWduYWxpbmdNZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNs
aWVudE1vY2tJbXBsOjpuZWdvdGlhdGlvblRpbWVyRmlyZWQoVGltZXI8TWVkaWFTdHJlYW1DbGll
bnRNb2NrSW1wbD4qKQoreworICAgIG1fY29udHJvbGxlci0+bmVnb3RpYXRpb25TdGFydGVkKG1f
cGVlckNvbm5lY3Rpb25JZCk7Cit9CisKIC8vIE1lZGlhU3RyZWFtQ2xpZW50TW9jay4KIE1lZGlh
U3RyZWFtQ2xpZW50TW9jayogTWVkaWFTdHJlYW1DbGllbnRNb2NrOjpjcmVhdGUoKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1DbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ2xpZW50
LmgKaW5kZXggNjZiYTgwOTM0MDE4NDU5NzdjMjMxZDVjYmY0NTQxZGM4N2I5NjkzMi4uYjUwYTIy
NDllODQwZjQ5MGI1YzZlNmM2YmU5YmI2YTlmYWRlZDQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1DbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNsaWVudC5oCkBAIC0yNSw4ICsy
NSwxMCBAQAogI2lmbmRlZiBXZWJNZWRpYVN0cmVhbUNsaWVudF9oCiAjZGVmaW5lIFdlYk1lZGlh
U3RyZWFtQ2xpZW50X2gKIAorI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIldlYlVSTC5oIgogCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJN
ZWRpYVN0cmVhbUNvbnRyb2xsZXI7CkBAIC01OCw2ICs2MCwxMiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGVuYWJsZUF1ZGlvVHJhY2soY29uc3QgV2ViU3RyaW5nJiBzdHJlYW1MYWJlbCwg
dW5zaWduZWQgbG9uZyBpbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlQXVkaW9U
cmFjayhjb25zdCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGluZGV4KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdFZpZGVvVHJhY2soY29uc3QgV2ViU3RyaW5nJiBz
dHJlYW1MYWJlbCwgbG9uZyBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaWduYWxpbmdN
ZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgbWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3Qg
V2ViU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFN0cmVhbShpbnQg
cGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBzdHJlYW1MYWJlbCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjbG9zZVBlZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TmVnb3RpYXRpb24oaW50IHBlZXJDb25uZWN0aW9u
SWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3RyZWFtKGludCBwZWVyQ29ubmVjdGlv
bklkLCBjb25zdCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVsKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Yk1lZGlhU3RyZWFtQ2xpZW50TW9jay5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViTWVkaWFTdHJlYW1DbGllbnRNb2NrLmgKaW5kZXggNGQ4NGVmMWUwMTk2ODYzNmZhZDcyM2Zk
NDlhNTRkMGU5ZmExMDE5MS4uYTdlMTBjODYyMzRkNGMzNWJhODIwMDdiZTg3MDZlODIzZDcyMmU5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJl
YW1DbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVk
aWFTdHJlYW1DbGllbnRNb2NrLmgKQEAgLTYwLDYgKzYwLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZW5hYmxlQXVkaW9UcmFjayhjb25zdCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVsLCB1
bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUF1ZGlvVHJhY2so
Y29uc3QgV2ViU3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAg
dmlydHVhbCB2b2lkIHNlbGVjdFZpZGVvVHJhY2soY29uc3QgV2ViU3RyaW5nJiBzdHJlYW1MYWJl
bCwgbG9uZyBpbmRleCk7CisgICAgdmlydHVhbCB2b2lkIHNpZ25hbGluZ01lc3NhZ2UoaW50IHBl
ZXJDb25uZWN0aW9uSWQsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSk7CisgICAgdmlydHVhbCB2
b2lkIG1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2Fn
ZSk7CisgICAgdmlydHVhbCB2b2lkIGFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29u
c3QgV2ViU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlUGVlckNv
bm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydE5l
Z290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
U3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVs
KTsKIAogcHJpdmF0ZToKICAgICBXZWJNZWRpYVN0cmVhbUNsaWVudE1vY2soKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Db250cm9s
bGVyLmgKaW5kZXggZDJjNWMzNWVlYzNmMzIxYWI4Yjk5Zjk0Yzg5MWVjZjU5MGFkMmMxMS4uNjYy
OTY2OTk1NzkwMmYzMjc5NTM1MGJlZGJlMjY1NTE2Zjk0YjI4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Db250cm9sbGVyLmgK
QEAgLTU0LDggKzU0LDE3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIHZvaWQgc3RyZWFtUmVj
b3JkZWREYXRhKGludCByZXF1ZXN0SWQsIFdlYkJsb2JEYXRhJiwgbG9uZyBsb25nIGludCBzaXpl
KTsKICAgICBXRUJLSVRfQVBJIHZvaWQgYXVkaW9UcmFja0ZhaWxlZChjb25zdCBXZWJTdHJpbmcm
IHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICBXRUJLSVRfQVBJIHZvaWQg
dmlkZW9UcmFja0ZhaWxlZChjb25zdCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBs
b25nIGluZGV4KTsKKyAgICAvLyBUT0RPOiBSZW1vdmUgb3IgdXNlIHRoaXMgbmFtZSBpbnN0ZWFk
IG9mIG9uQWRkU3RyZWFtCiAgICAgV0VCS0lUX0FQSSB2b2lkIGFkZFJlbW90ZVN0cmVhbShjb25z
dCBXZWJTdHJpbmcmIGxhYmVsKTsKIAorICAgIFdFQktJVF9BUEkgdm9pZCBzZW5kU2lnbmFsaW5n
TWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICBXRUJLSVRfQVBJIHZvaWQgb25NZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25z
dCBXZWJTdHJpbmcmIG1lc3NhZ2UpOworICAgIFdFQktJVF9BUEkgdm9pZCBuZWdvdGlhdGlvblN0
YXJ0ZWQoaW50IHBlZXJDb25uZWN0aW9uSWQpOworICAgIFdFQktJVF9BUEkgdm9pZCBuZWdvdGlh
dGlvbkRvbmUoaW50IHBlZXJDb25uZWN0aW9uSWQpOworICAgIFdFQktJVF9BUEkgdm9pZCBlcnJv
cihpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBX
RUJLSVRfQVBJIHZvaWQgb25BZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFdl
YlN0cmluZyYgc3RyZWFtTGFiZWwpOworICAgIFdFQktJVF9BUEkgdm9pZCBvblJlbW92ZVN0cmVh
bShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisK
ICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJNZWRpYVN0cmVhbUNvbnRyb2xsZXIo
V2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyKiBjb250cm9sbGVyKQogICAgICAgICA6IG1f
cHJpdmF0ZShjb250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvTWVkaWFTdHJlYW1DbGllbnRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9NZWRpYVN0cmVhbUNsaWVudFByb3h5LmNwcAppbmRleCAwMjkxMzQwYTYyNWFkMTJhMmVjMjky
OWVhYTUwZDdjOTk5ZjJmMzAzLi4wNDcwMjdkMmU1MTcxMDkyMGY3ZGMyZGMwMGJiYmE4YmUzZDc1
YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9NZWRpYVN0cmVhbUNs
aWVudFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9NZWRpYVN0cmVh
bUNsaWVudFByb3h5LmNwcApAQCAtMTA2LDYgKzEwNiw0MiBAQCB2b2lkIE1lZGlhU3RyZWFtQ2xp
ZW50UHJveHk6OnNlbGVjdFZpZGVvVHJhY2soY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgbG9u
ZyBpbgogICAgICAgICBtX2NsaWVudC0+c2VsZWN0VmlkZW9UcmFjayhzdHJlYW1MYWJlbCwgaW5k
ZXgpOwogfQogCit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50UHJveHk6OnNpZ25hbGluZ01lc3NhZ2Uo
aW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zaWduYWxpbmdNZXNzYWdlKHBlZXJDb25uZWN0
aW9uSWQsIG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50UHJveHk6Om1lc3Nh
Z2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tZXNzYWdlKHBlZXJDb25uZWN0aW9uSWQs
IG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50UHJveHk6OmFkZFN0cmVhbShp
bnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5hZGRTdHJlYW0ocGVlckNvbm5lY3Rpb25J
ZCwgc3RyZWFtTGFiZWwpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50UHJveHk6OnJlbW92
ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkK
K3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5yZW1vdmVTdHJlYW0ocGVl
ckNvbm5lY3Rpb25JZCwgc3RyZWFtTGFiZWwpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50
UHJveHk6OmNsb3NlUGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAg
aWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+Y2xvc2VQZWVyQ29ubmVjdGlvbihwZWVy
Q29ubmVjdGlvbklkKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNsaWVudFByb3h5OjpzdGFydE5l
Z290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPnN0YXJ0TmVnb3RpYXRpb24ocGVlckNvbm5lY3Rpb25JZCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL01lZGlhU3RyZWFtQ2xpZW50
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL01lZGlhU3RyZWFtQ2xpZW50UHJv
eHkuaAppbmRleCAyOTg1NjU4Y2ZlYTU4ZGQyZjI1MzEwNDBlZDUxY2M4ZWZhMGM1MWI4Li42YmVl
MTFmYzY0ZGFhNmNhZjUzNWNlMTgzN2I3Mjc1YTg0ZDkwNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9NZWRpYVN0cmVhbUNsaWVudFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvTWVkaWFTdHJlYW1DbGllbnRQcm94eS5oCkBAIC01Niw2ICs1
NiwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZUF1ZGlvVHJhY2soY29uc3Qg
U3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2FibGVBdWRpb1RyYWNrKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RWaWRlb1RyYWNrKGNvbnN0IFN0
cmluZyYgc3RyZWFtTGFiZWwsIGxvbmcgaW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBzaWduYWxp
bmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwor
ICAgIHZpcnR1YWwgdm9pZCBtZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBhZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwp
OworICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBlZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlv
bklkKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnROZWdvdGlhdGlvbihpbnQgcGVlckNvbm5lY3Rp
b25JZCk7CiAKIHByaXZhdGU6CiAgICAgV2ViTWVkaWFTdHJlYW1DbGllbnQqIG1fY2xpZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1DbGll
bnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtQ2xp
ZW50TW9jay5jcHAKaW5kZXggODU4MDkxZmNiY2IzZmMwNjlkMmM3M2Q5N2I1NTE3ZDZmZmFkNGUw
NC4uNTAwZDRkNmFhYTJiZGEwOGU1NjQ3MDMzMmI0ZDZlMTg5MGE0Mzg3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1DbGllbnRNb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbUNsaWVudE1vY2su
Y3BwCkBAIC05OSw2ICs5OSwzNiBAQCB2b2lkIFdlYk1lZGlhU3RyZWFtQ2xpZW50TW9jazo6c2Vs
ZWN0VmlkZW9UcmFjayhjb25zdCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVsLCBsbwogICAgIG1fY2xp
ZW50TW9jay0+c2VsZWN0VmlkZW9UcmFjayhzdHJlYW1MYWJlbCwgaW5kZXgpOwogfQogCit2b2lk
IFdlYk1lZGlhU3RyZWFtQ2xpZW50TW9jazo6c2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5l
Y3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fY2xpZW50TW9jay0+
c2lnbmFsaW5nTWVzc2FnZShwZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9pZCBX
ZWJNZWRpYVN0cmVhbUNsaWVudE1vY2s6Om1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNv
bnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX2NsaWVudE1vY2stPm1lc3NhZ2UocGVl
ckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1DbGllbnRN
b2NrOjphZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFdlYlN0cmluZyYgc3Ry
ZWFtTGFiZWwpCit7CisgICAgbV9jbGllbnRNb2NrLT5hZGRTdHJlYW0ocGVlckNvbm5lY3Rpb25J
ZCwgc3RyZWFtTGFiZWwpOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtQ2xpZW50TW9jazo6Y2xv
c2VQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICBtX2NsaWVudE1v
Y2stPmNsb3NlUGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgV2Vi
TWVkaWFTdHJlYW1DbGllbnRNb2NrOjpzdGFydE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlv
bklkKQoreworICAgIG1fY2xpZW50TW9jay0+c3RhcnROZWdvdGlhdGlvbihwZWVyQ29ubmVjdGlv
bklkKTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbUNsaWVudE1vY2s6OnJlbW92ZVN0cmVhbShp
bnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAg
ICBtX2NsaWVudE1vY2stPnJlbW92ZVN0cmVhbShwZWVyQ29ubmVjdGlvbklkLCBzdHJlYW1MYWJl
bCk7Cit9CisKIHZvaWQgV2ViTWVkaWFTdHJlYW1DbGllbnRNb2NrOjpyZXNldE1vY2soKQogewog
ICAgIG1fY2xpZW50TW9jay0+cmVzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCmluZGV4IDI3ZDQ3MWZlMTc2
Y2U4ZDY5NTk1NzdjYmU0Mjg5NzMxMDFmN2YzZjkuLjg5MDdkMTk1ZDhkNDRhNWI3ZWYwNTY4YTdk
YjM4ZTBlNjRlZjE5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcApAQCAtNjksMTEgKzY5LDQ3IEBAIHZvaWQg
V2ViTWVkaWFTdHJlYW1Db250cm9sbGVyOjp2aWRlb1RyYWNrRmFpbGVkKGNvbnN0IFdlYlN0cmlu
ZyYgc3RyZWFtTGFiZWwsIHVuCiAgICAgbV9wcml2YXRlLT52aWRlb1RyYWNrRmFpbGVkKHN0cmVh
bUxhYmVsLCBpbmRleCk7CiB9CiAKKy8vIFRPRE86IFJlbW92ZSBvciB1c2UgdGhpcyBuYW1lIGlu
c3RlYWQgb2Ygb25BZGRTdHJlYW0KIHZvaWQgV2ViTWVkaWFTdHJlYW1Db250cm9sbGVyOjphZGRS
ZW1vdGVTdHJlYW0oY29uc3QgV2ViU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IFJlbW90ZSBTdHJlYW1zLgogfQogCit2b2lkIFdlYk1lZGlhU3RyZWFtQ29udHJvbGxlcjo6c2Vu
ZFNpZ25hbGluZ01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFdlYlN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNlbmRTaWduYWxpbmdNZXNzYWdlKHBlZXJDb25u
ZWN0aW9uSWQsIG1lc3NhZ2UpOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
b25NZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2Up
Cit7CisgICAgbV9wcml2YXRlLT5vbk1lc3NhZ2UocGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7
Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1Db250cm9sbGVyOjpuZWdvdGlhdGlvblN0YXJ0ZWQo
aW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgbV9wcml2YXRlLT5uZWdvdGlhdGlvblN0YXJ0
ZWQocGVlckNvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1Db250cm9sbGVy
OjpuZWdvdGlhdGlvbkRvbmUoaW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgbV9wcml2YXRl
LT5uZWdvdGlhdGlvbkRvbmUocGVlckNvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFT
dHJlYW1Db250cm9sbGVyOjplcnJvcihpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIG1fcHJpdmF0ZS0+ZXJyb3IocGVlckNvbm5lY3Rpb25JZCwg
bWVzc2FnZSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1Db250cm9sbGVyOjpvbkFkZFN0cmVh
bShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sK
KyAgICBtX3ByaXZhdGUtPm9uQWRkU3RyZWFtKHBlZXJDb25uZWN0aW9uSWQsIHN0cmVhbUxhYmVs
KTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uUmVtb3ZlU3RyZWFtKGlu
dCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAg
IG1fcHJpdmF0ZS0+b25SZW1vdmVTdHJlYW0ocGVlckNvbm5lY3Rpb25JZCwgc3RyZWFtTGFiZWwp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95574</attachid>
            <date>2011-06-01 03:17:34 -0700</date>
            <delta_ts>2011-06-01 03:17:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58787-20110601121731.patch</filename>
            <type>text/plain</type>
            <size>126975</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODcyOTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL01lZGlhU3RyZWFtL2FkZC1yZW1vdmUtc3RyZWFtcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9hZGQtcmVtb3ZlLXN0cmVhbXMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ4MTFmOTJhMDJkYmU2MDZhOTY2YjBkZmQ0YmZhMGUyY2JkMDk5ZTAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9hZGQtcmVt
b3ZlLXN0cmVhbXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIFBlZXJDb25u
ZWN0aW9uIGxvY2FsIHN0cmVhbSBtYW5hZ2VtZW50IHVzaW5nIHRoZSBtb2NrIHNlcnZpY2UuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBjLmxvY2FsU3RyZWFtcy5sZW5n
dGggaXMgMAorUEFTUyBwYy5sb2NhbFN0cmVhbXMubGVuZ3RoIGlzIDEKK1BBU1MgcGMubG9jYWxT
dHJlYW1zLmxlbmd0aCBpcyAxCitQQVNTIHBjLmxvY2FsU3RyZWFtcy5sZW5ndGggaXMgMAorUEFT
UyBzdHJlYW1zLmxlbmd0aCBpcyAwCitQQVNTIHN0cmVhbXMubGVuZ3RoIGlzIDEKK1BBU1Mgc3Ry
ZWFtcy5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW1zLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbXNb
MF0gaXMgc3RyZWFtCitQQVNTIHN0cmVhbXMubGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9hZGQtcmVtb3ZlLXN0cmVhbXMuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL2FkZC1yZW1vdmUtc3RyZWFtcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE2ZDQ4ZTAwZDNmMzU0NTU0MzFjYzJmMTFkYTIyYzQ0NGJjMDVjMTkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9hZGQtcmVtb3ZlLXN0cmVh
bXMuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2FkZC1yZW1vdmUtc3RyZWFtcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NZWRpYVN0cmVhbS9uby1pbnRlcmZhY2Utb2JqZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL25vLWludGVyZmFjZS1vYmplY3QtZXhwZWN0ZWQudHh0
CmluZGV4IGIwMDQyNzUxNjJlNDI3MDk0ZTA5Nzc3YWQyMmEyMDFjZjFmYTk1ZjkuLjhmZWU5OTBk
NjQwMzBiZDk5MTMyMzAyMGUyZjU2MDMzYjkyNGNjMDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL01lZGlhU3RyZWFtL25vLWludGVyZmFjZS1vYmplY3QtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL25vLWludGVyZmFjZS1vYmplY3Qt
ZXhwZWN0ZWQudHh0CkBAIC0xMSw2ICsxMSw4IEBAIFBBU1MgdHlwZW9mIE5hdmlnYXRvclVzZXJN
ZWRpYVN1Y2Nlc3NDYWxsYmFjayBpcyAidW5kZWZpbmVkIgogUEFTUyBOYXZpZ2F0b3JVc2VyTWVk
aWFTdWNjZXNzQ2FsbGJhY2sucHJvdG90eXBlIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJv
cjogTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrIGlzIG5vdCBkZWZpbmVkLgogUEFT
UyB0eXBlb2YgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjayBpcyAidW5kZWZpbmVkIgog
UEFTUyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLnByb3RvdHlwZSB0aHJldyBleGNl
cHRpb24gUmVmZXJlbmNlRXJyb3I6IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2sgaXMg
bm90IGRlZmluZWQuCitQQVNTIHR5cGVvZiBTaWduYWxsaW5nQ2FsbGJhY2sgaXMgInVuZGVmaW5l
ZCIKK1BBU1MgU2lnbmFsbGluZ0NhbGxiYWNrLnByb3RvdHlwZSB0aHJldyBleGNlcHRpb24gUmVm
ZXJlbmNlRXJyb3I6IFNpZ25hbGxpbmdDYWxsYmFjayBpcyBub3QgZGVmaW5lZC4KIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vcGVlcmNvbm5lY3Rpb24tYmFzaWMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vcGVlcmNvbm5lY3Rpb24t
YmFzaWMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwMjliNTIxZTI4MzE1ZDAyYmI3ODc1ZWU5
MjM4YjdiNjllMTEwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9N
ZWRpYVN0cmVhbS9wZWVyY29ubmVjdGlvbi1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MCBAQAorVGVzdHMgUGVlckNvbm5lY3Rpb24gY2xvc2UoKSB1c2luZyB0aGUgbW9jayBzZXJ2aWNl
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBwYy5yZWFkeVN0YXRlIGlz
IFBlZXJDb25uZWN0aW9uLk5FVworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3Ry
ZWFtL3BlZXJjb25uZWN0aW9uLWJhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRp
YVN0cmVhbS9wZWVyY29ubmVjdGlvbi1iYXNpYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2ZWNlNTkwNmNh
NmE2YTU2MzBiYzY5NDk3YTM4NGVkOWYxZDRmYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9wZWVyY29ubmVjdGlvbi1iYXNpYy5odG1sCkBAIC0w
LDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvcGVlcmNvbm5lY3Rpb24tYmFzaWMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJl
YW0vcGVlcmNvbm5lY3Rpb24tbWVzc2FnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NZWRpYVN0cmVhbS9wZWVyY29ubmVjdGlvbi1tZXNzYWdlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMjllNTcxYTNhMjE4YTRmNDRkYmUzN2RmMTMzYTc2MzA0ZDkwZjcwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vcGVlcmNvbm5lY3Rp
b24tbWVzc2FnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgUGVlckNvbm5l
Y3Rpb24gc2VuZCgpIGFuZCBtZXNzYWdlIGV2ZW50IHVzaW5nIHRoZSBtb2NrIHNlcnZpY2UuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGV2ZW50LmRhdGEgaXMgdGVzdE1l
c3NhZ2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9wZWVyY29ubmVj
dGlvbi1tZXNzYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9wZWVy
Y29ubmVjdGlvbi1tZXNzYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I1OWY2N2YyNDM0OGQ1Y2YxZDNi
ZGM5MWFmY2E5MmJlYzgzOTk1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL01lZGlhU3RyZWFtL3BlZXJjb25uZWN0aW9uLW1lc3NhZ2UuaHRtbApAQCAtMCwwICsxLDEz
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL3BlZXJjb25uZWN0aW9uLW1lc3NhZ2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2Ny
aXB0LXRlc3RzL2FkZC1yZW1vdmUtc3RyZWFtcy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01l
ZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9hZGQtcmVtb3ZlLXN0cmVhbXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWQyOTJiZjVhMjY1ODY1ZjI2ODk2ZmQyNzAwOTUzZTk1N2I1ZjM1OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9hZGQtcmVt
b3ZlLXN0cmVhbXMuanMKQEAgLTAsMCArMSw0MyBAQAorZGVzY3JpcHRpb24oIlRlc3RzIFBlZXJD
b25uZWN0aW9uIGxvY2FsIHN0cmVhbSBtYW5hZ2VtZW50IHVzaW5nIHRoZSBtb2NrIHNlcnZpY2Uu
Iik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCgnYXVkaW8nKTsKK2Vsc2UKKyAgICBk
ZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250
cm9sbGVyJyk7CisKKworZnVuY3Rpb24gc3RyZWFtQ3JlYXRlZChzKSB7CisgICAgc3RyZWFtID0g
czsKKyAgICBwYyA9IG5ldyBQZWVyQ29ubmVjdGlvbignZm9vYmFyJywgZnVuY3Rpb24obSkge30p
OworCisgICAgc2hvdWxkQmUoJ3BjLmxvY2FsU3RyZWFtcy5sZW5ndGgnICwgJzAnKTsKKyAgICBw
Yy5hZGRTdHJlYW0oc3RyZWFtKTsKKyAgICBzaG91bGRCZSgncGMubG9jYWxTdHJlYW1zLmxlbmd0
aCcgLCAnMScpOworICAgIHBjLmFkZFN0cmVhbShzdHJlYW0pOworICAgIHNob3VsZEJlKCdwYy5s
b2NhbFN0cmVhbXMubGVuZ3RoJyAsICcxJyk7CisgICAgcGMucmVtb3ZlU3RyZWFtKHN0cmVhbSk7
CisgICAgc2hvdWxkQmUoJ3BjLmxvY2FsU3RyZWFtcy5sZW5ndGgnICwgJzAnKTsKKworICAgIHN0
cmVhbXMgPSBwYy5sb2NhbFN0cmVhbXM7CisgICAgc2hvdWxkQmUoJ3N0cmVhbXMubGVuZ3RoJyAs
ICcwJyk7CisgICAgcGMuYWRkU3RyZWFtKHN0cmVhbSk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbXMu
bGVuZ3RoJyAsICcxJyk7CisgICAgcGMuYWRkU3RyZWFtKHN0cmVhbSk7CisgICAgc2hvdWxkQmUo
J3N0cmVhbXMubGVuZ3RoJyAsICcxJyk7CisKKyAgICBzaG91bGRCZSgnc3RyZWFtcy5sZW5ndGgn
LCAnMScpOworICAgIHNob3VsZEJlKCdzdHJlYW1zWzBdJywgJ3N0cmVhbScpOworCisgICAgcGMu
cmVtb3ZlU3RyZWFtKHN0cmVhbSk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbXMubGVuZ3RoJyAsICcw
Jyk7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgnYXVkaW8nLCBzdHJlYW1DcmVhdGVkLCBmdW5jdGlvbihlKSB7CisgICAgdGVzdEZhaWxl
ZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30pOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL01l
ZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9uby1pbnRlcmZhY2Utb2JqZWN0LmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL25vLWludGVyZmFjZS1vYmplY3Qu
anMKaW5kZXggNjgxN2YwZjk3ZjJhNjM3MWNiOGRlMjA5NTBlNzM2MTlkNjFlMzA5ZC4uYjZkYWNl
MDMyYTg2MzIxNzNmNjMyMTY1MzkwZDk2MWExZWY4YWJiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL25vLWludGVyZmFjZS1vYmplY3Qu
anMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL25v
LWludGVyZmFjZS1vYmplY3QuanMKQEAgLTEwLDYgKzEwLDcgQEAgdGVzdCgnTmF2aWdhdG9yVXNl
ck1lZGlhJyk7CiB0ZXN0KCdOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcicpOwogdGVzdCgnTmF2aWdh
dG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrJyk7CiB0ZXN0KCdOYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvckNhbGxiYWNrJyk7Cit0ZXN0KCdTaWduYWxsaW5nQ2FsbGJhY2snKTsKIAogd2luZG93Lmpz
VGVzdElzQXN5bmMgPSBmYWxzZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3Rz
L3BlZXJjb25uZWN0aW9uLWJhc2ljLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJl
YW0vc2NyaXB0LXRlc3RzL3BlZXJjb25uZWN0aW9uLWJhc2ljLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2OTlh
OTE0NWNiNTlkOTIwODVmNGRmZTgyZmNiOGU1YjNlOGI5NzIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvcGVlcmNvbm5lY3Rp
b24tYmFzaWMuanMKQEAgLTAsMCArMSwxNyBAQAorZGVzY3JpcHRpb24oIlRlc3RzIFBlZXJDb25u
ZWN0aW9uIGNsb3NlKCkgdXNpbmcgdGhlIG1vY2sgc2VydmljZS4iKTsKKworaWYgKCF3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1
biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOworCit2YXIgcGMgPSBuZXcgUGVl
ckNvbm5lY3Rpb24oJ2NvbmZpZycsIGZ1bmN0aW9uKG0pIHt9KTsKKworc2hvdWxkQmUoJ3BjLnJl
YWR5U3RhdGUnLCAnUGVlckNvbm5lY3Rpb24uTkVXJyk7CisKK3BjLm9uY2xvc2UgPSBmdW5jdGlv
bigpIHsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcGMuY2xvc2UoKTsKKword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMv
cGVlcmNvbm5lY3Rpb24tbWVzc2FnZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3Ry
ZWFtL3NjcmlwdC10ZXN0cy9wZWVyY29ubmVjdGlvbi1tZXNzYWdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNj
OWRhMjkxMDQ1NjAyZjhlOWMwMGUwNzQ0MGZlZmIzZTA5MzgyNDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvcGVlcmNvbm5l
Y3Rpb24tbWVzc2FnZS5qcwpAQCAtMCwwICsxLDIwIEBACitkZXNjcmlwdGlvbigiVGVzdHMgUGVl
ckNvbm5lY3Rpb24gc2VuZCgpIGFuZCBtZXNzYWdlIGV2ZW50IHVzaW5nIHRoZSBtb2NrIHNlcnZp
Y2UuIik7CisKK2lmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGRlYnVnKCdU
aGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIn
KTsKKworZnVuY3Rpb24gZXZlbnRIYW5kbGVyKGUpCit7CisgICAgZXZlbnQgPSBlOworICAgIHNo
b3VsZEJlKCdldmVudC5kYXRhJywgJ3Rlc3RNZXNzYWdlJyk7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3ZhciBwYyA9IG5ldyBQZWVyQ29ubmVjdGlvbignY29uZmlnJywgZnVuY3Rpb24obSkg
e30pOwordmFyIHRlc3RNZXNzYWdlID0gJ1Rlc3QgbWVzc2FnZSc7CisKK3BjLm9ubWVzc2FnZSA9
IGV2ZW50SGFuZGxlcjsKK3BjLnNlbmQodGVzdE1lc3NhZ2UpOworCit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9zaWduYWxp
bmctbWVzc2FnZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10
ZXN0cy9zaWduYWxpbmctbWVzc2FnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDRmNTE0OGMwNThmZGViM2Q0
MGQ4ZTQ4NWY2NWU5MWU5ZjhhZDBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL3NpZ25hbGluZy1tZXNzYWdlLmpzCkBAIC0w
LDAgKzEsMjYgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBQZWVyQ29ubmVjdGlvbiBzaWduYWxpbmdN
ZXNzYWdlIHVzaW5nIHRoZSBtb2NrIHNlcnZpY2UuIik7CisKK2lmICghd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91
dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKKworZnVuY3Rpb24gc2VuZFNpZ25hbGluZ01l
c3NhZ2UxKG0pCit7CisgICAgbWVzc2FnZTEgPSBtOworICAgIHNob3VsZEJlKCdtZXNzYWdlMScs
ICciVGVzdCBtZXNzYWdlIicpOworICAgIHBjMi5zaWduYWxpbmdNZXNzYWdlKG1lc3NhZ2UxKTsK
K30KKworZnVuY3Rpb24gc2VuZFNpZ25hbGluZ01lc3NhZ2UyKG0pCit7CisgICAgbWVzc2FnZTIg
PSBtOworICAgIHNob3VsZEJlKCdtZXNzYWdlMicsICciVGVzdCBtZXNzYWdlIicpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit2YXIgcGMxID0gbmV3IFBlZXJDb25uZWN0aW9uKCdjb25maWcx
Jywgc2VuZFNpZ25hbGluZ01lc3NhZ2UxKTsKK3ZhciBwYzIgPSBuZXcgUGVlckNvbm5lY3Rpb24o
J2NvbmZpZzInLCBzZW5kU2lnbmFsaW5nTWVzc2FnZTIpOworCitwYzEuc2lnbmFsaW5nTWVzc2Fn
ZSgnVGVzdCBtZXNzYWdlJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRv
dy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTWVkaWFTdHJlYW0vc2lnbmFsaW5nLW1lc3NhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2lnbmFsaW5nLW1lc3NhZ2UtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdjMzVjYTBjMjFlYTkwODAzOThkMWNjNDA1ZDZjMGMwZTE5MDgzMzkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zaWduYWxp
bmctbWVzc2FnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgUGVlckNvbm5l
Y3Rpb24gc2lnbmFsaW5nTWVzc2FnZSB1c2luZyB0aGUgbW9jayBzZXJ2aWNlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBtZXNzYWdlMSBpcyAiVGVzdCBtZXNzYWdlIgor
UEFTUyBtZXNzYWdlMiBpcyAiVGVzdCBtZXNzYWdlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL01lZGlhU3RyZWFtL3NpZ25hbGluZy1tZXNzYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NZWRpYVN0cmVhbS9zaWduYWxpbmctbWVzc2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZGE4
YjY0MjliOWMzNTNhNTk4MmQ0Y2M3YmRjMDgzM2I1NTk5MGUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zaWduYWxpbmctbWVzc2FnZS5odG1sCkBA
IC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvc2lnbmFsaW5nLW1lc3NhZ2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNTRjY2IxZjhk
MDgyOTYzMDk0NzYyMmEwZTZkY2UyNGJlM2Y1OWZiOS4uMDU0ZmU2OWZlZWJkNmFiZWUwODlhN2E3
OWUxN2M3N2Q5ZDlkZTQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MDcs
NiArNDA3LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFn
ZVRyYW5zaXRpb25FdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWdlVHJh
bnNpdGlvbkV2ZW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZWVyQ29ubmVjdGlv
bi5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZWVyQ29ubmVjdGlvbi5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bl
cmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgXApAQCAtNDQ5LDYgKzQ1MSw4IEBAIHdlYmNvcmVfYnVp
bHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NwZWVjaElucHV0UmVz
dWx0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTcGVlY2hJbnB1dFJlc3VsdExpc3Qu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU3BlZWNoSW5wdXRSZXN1bHRMaXN0Lmgg
XAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTdHJlYW1MaXN0LmNwcCBcCisJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1N0cmVhbUxpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1NRTEV4Y2VwdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU1FMUmVzdWx0U2V0
Um93TGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU1FMU3RhdGVtZW50RXJyb3JD
YWxsYmFjay5jcHAgXApAQCAtNzgwLDYgKzc4NCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmggXAorCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwIFwK
QEAgLTEyMjUsNiArMTIzMCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL092ZXJmbG93RXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0
aW9uRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9kb20vUGVlckNvbm5lY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdT
Y3JpcHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAgXApAQCAtMTI3Myw4ICsxMjgwLDExIEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXRO
b2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuaCBcCisJU291cmNlL1dlYkNvcmUvZG9t
L1N0YXRpY1N0cmVhbUxpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljU3RyZWFt
TGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1N0cmVhbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtTGlzdC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtUmVjb3JkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vU3RyZWFtUmVjb3JkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCBmODc1OGYwZDViZWIwOTUzZTJmY2ZlYzg5YzIwZGY5
MDc3YmNkNDhkLi40NDg4ODUzN2EwMTBkNzVlZDA2MTUzODRiYTA4ZTllNjdhMjA3MTQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
VXNlSlNDLmNtYWtlCkBAIC0xMDgsNiArMTA4LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0
cnVjdG9yLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA5MzM4NTA4
MzgzNTVlZWQ1ZjZmOTUxZTBjYTNhY2VmM2JhNGZhODA2Li5lOTFjMzRkYzczN2Y4YzQ1NTEwODY4
MDQzNjhhNWMyZjA4NTk4MDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMTYzLDEzICsxMTYzLDE3
IEBACiAgICAgICAgICAgICAnZG9tL05vdGF0aW9uLmlkbCcsCiAgICAgICAgICAgICAnZG9tL092
ZXJmbG93RXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vUGFnZVRyYW5zaXRpb25FdmVudC5p
ZGwnLAorICAgICAgICAgICAgJ2RvbS9QZWVyQ29ubmVjdGlvbi5pZGwnLAogICAgICAgICAgICAg
J2RvbS9Qb3BTdGF0ZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbi5pZGwnLAogICAgICAgICAgICAgJ2RvbS9Qcm9ncmVzc0V2ZW50LmlkbCcsCiAgICAg
ICAgICAgICAnZG9tL1JhbmdlLmlkbCcsCiAgICAgICAgICAgICAnZG9tL1JhbmdlRXhjZXB0aW9u
LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlk
bCcsCisgICAgICAgICAgICAnZG9tL1NpZ25hbGxpbmdDYWxsYmFjay5pZGwnLAogICAgICAgICAg
ICAgJ2RvbS9TdHJlYW0uaWRsJywKKyAgICAgICAgICAgICdkb20vU3RyZWFtRXZlbnQuaWRsJywK
KyAgICAgICAgICAgICdkb20vU3RyZWFtTGlzdC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9TdHJl
YW1SZWNvcmRlci5pZGwnLAogICAgICAgICAgICAgJ2RvbS9TdHJpbmdDYWxsYmFjay5pZGwnLAog
ICAgICAgICAgICAgJ2RvbS9UZXh0LmlkbCcsCkBAIC0xODUyLDYgKzE4NTYsNyBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwJywKQEAgLTIxNTcsNiArMjE2Miw3IEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhQZXJmb3JtYW5jZUN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZl
bnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1
bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCcsCkBAIC0yNTMzLDYgKzI1MzksOCBAQAogICAgICAgICAg
ICAgJ2RvbS9PdmVyZmxvd0V2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9QYWdlVHJhbnNpdGlv
bkV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCcsCisg
ICAgICAgICAgICAnZG9tL1BlZXJDb25uZWN0aW9uLmNwcCcsCisgICAgICAgICAgICAnZG9tL1Bl
ZXJDb25uZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9QZW5kaW5nU2NyaXB0LmNwcCcsCiAg
ICAgICAgICAgICAnZG9tL1BvcFN0YXRlRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vUG9w
U3RhdGVFdmVudC5oJywKQEAgLTI1NzEsMTIgKzI1NzksMTggQEAKICAgICAgICAgICAgICdkb20v
U2hhZG93Um9vdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dSb290LmgnLAogICAgICAg
ICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCcsCisgICAgICAgICAgICAnZG9tL1NpZ25h
bGxpbmdDYWxsYmFjay5oJywKICAgICAgICAgICAgICdkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oJywKICAgICAg
ICAgICAgICdkb20vU3RhdGljTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdkb20vU3RhdGlj
Tm9kZUxpc3QuaCcsCiAgICAgICAgICAgICAnZG9tL1N0cmVhbS5jcHAnLAogICAgICAgICAgICAg
J2RvbS9TdHJlYW0uaCcsCisgICAgICAgICAgICAnZG9tL1N0cmVhbUNvbnRhaW5lci5oJywKKyAg
ICAgICAgICAgICdkb20vU3RyZWFtRXZlbnQuY3BwJywKKyAgICAgICAgICAgICdkb20vU3RyZWFt
RXZlbnQuaCcsCisgICAgICAgICAgICAnZG9tL1N0cmVhbUxpc3QuY3BwJywKKyAgICAgICAgICAg
ICdkb20vU3RyZWFtTGlzdC5oJywKICAgICAgICAgICAgICdkb20vU3RyZWFtUmVjb3JkZXIuY3Bw
JywKICAgICAgICAgICAgICdkb20vU3RyZWFtUmVjb3JkZXIuaCcsCiAgICAgICAgICAgICAnZG9t
L1N0cmluZ0NhbGxiYWNrLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGQwODI5YjU5ZTZhNmNlZDFl
YmMxMTg1MmI5ZWFiZjMyNjI5NGUzOGYuLjM1ZDU4MjQyZjQ2ZDYwMDQxNDIwN2YxM2JhMjdmY2U3
ZjEyODYxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zMjYsNiArMzI2LDcgQEAgdjggewogICAgICAg
ICBiaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5n
cy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTT3B0aW9u
Q29uc3RydWN0b3IuY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1
c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMu
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAg
XApAQCAtMzEyMSw3ICszMTIyLDExIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HRU9MT0NB
VElPTj0xKSB7CiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RSRUFNPTEpIHsKICAg
ICBIRUFERVJTICs9IFwKICAgICAgICAgZG9tL0dlbmVyYXRlZFN0cmVhbS5oIFwKKyAgICAgICAg
ZG9tL011bHRpcGxlVHJhY2tMaXN0LmggXAorICAgICAgICBkb20vUGVlckNvbm5lY3Rpb24uaCBc
CisgICAgICAgIGRvbS9TdGF0aWNTdHJlYW1MaXN0LmggXAogICAgICAgICBkb20vU3RyZWFtLmgg
XAorICAgICAgICBkb20vU3RyZWFtTGlzdC5oIFwKICAgICAgICAgZG9tL1N0cmVhbVJlY29yZGVy
LmggXAogICAgICAgICBmaWxlYXBpL0Jsb2JDYWxsYmFjay5oIFwKICAgICAgICAgcGFnZS9DYWxs
YmFja1Rhc2suaCBcCkBAIC0zMTM2LDcgKzMxNDEsMTEgQEAgY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX01FRElBX1NUUkVBTT0xKSB7CiAKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgZG9tL0dl
bmVyYXRlZFN0cmVhbS5jcHAgXAorICAgICAgICBkb20vTXVsdGlwbGVUcmFja0xpc3QuY3BwIFwK
KyAgICAgICAgZG9tL1BlZXJDb25uZWN0aW9uLmNwcCBcCisgICAgICAgIGRvbS9TdGF0aWNTdHJl
YW1MaXN0LmNwcCBcCiAgICAgICAgIGRvbS9TdHJlYW0uY3BwIFwKKyAgICAgICAgZG9tL1N0cmVh
bUxpc3QuY3BwIFwKICAgICAgICAgZG9tL1N0cmVhbVJlY29yZGVyLmNwcCBcCiAgICAgICAgIHBh
Z2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBcCiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIuY3BwIFwKQEAgLTMxNDYsOSArMzE1NSwxMSBAQCBjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfTUVESUFfU1RSRUFNPTEpIHsKICAgICB2OCB7CiAgICAgICAgIFNPVVJDRVMg
Kz0gXAogICAgICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNw
cCBcCisgICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3Rv
bS5jcHAgXAogICAgICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RyZWFtUmVjb3JkZXJD
dXN0b20uY3BwCiAgICAgfSBlbHNlIHsKICAgICAgICAgU09VUkNFUyArPSBcCisgICAgICAgICAg
ICBiaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgICAgICBi
aW5kaW5ncy9qcy9KU1N0cmVhbVJlY29yZGVyQ3VzdG9tLmNwcAogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggODk4MmQ5YThkMjVm
MTgyNjQ2NGE0MWFjYzM5YTgyYTI4NmY1YWRhMy4uNzZjMzkyZTk1NGQxNjgwM2U3Yjc1ZmRjMjVj
MzFhODUyZDUwMmE1MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTEyOTM4LDYgKzEyOTM4LDExNSBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1BlZXJDb25u
ZWN0aW9uLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWly
b19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
Lz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU1BlZXJDb25uZWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQZXJmb3JtYW5jZS5jcHAiCis+Pj4+Pj4+IE1h
a2VmaWxlcyBidXQgbm90IHhjb2RlCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
Lz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNSYW5nZUV4Y2VwdGlvbi5oIgogCQkJCT4KIAkJCTwv
RmlsZT4KQEAgLTE0MTUwLDYgKzE0MjU5LDExNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTU3RyZWFtTGlzdC5jcHAiCisJCQkJPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTdHJlYW1MaXN0
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNT
dHJlYW1SZWNvcmRlci5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
UmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVi
dWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCIKIAkJCQk+
CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC00Njc0Niw2ICs0Njk2Myw2MiBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cUGVlckNvbm5l
Y3Rpb24uY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVi
dWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVs
ZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxkb21cUGVlckNvbm5lY3Rpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFBlbmRpbmdTY3JpcHQuY3BwIgogCQkJ
CT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTQ4MDA2LDYgKzQ4Mjc5LDYyIEBACiAJCQkJ
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTdGF0aWNT
dHJlYW1MaXN0LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxl
YXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19D
YWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0YXRpY1N0cmVhbUxpc3QuaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0cmVhbS5jcHAiCiAJCQkJ
PgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtNDgwNjIsNiArNDgzOTEsMTAgQEAKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0cmVhbUxp
c3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZG9tXFN0cmVhbVJlY29yZGVyLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBA
IC02Mjg3Myw2ICs2MzIwNiw1OCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5j
cHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z3xX
aW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRv
b2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxl
YXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJ
CQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9
IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4z
MiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wK
KwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxiaW5kaW5nc1xqc1xKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogCQkJCQk+CiAJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCAzNDMyZDc0NGYyYmZmODk1
Y2M0MTExMmJkMzczNWUwMzBkYzZiZTdiLi40ZTg0MzY3ODAwNjVlZjA0ZmMzMzc1NDMwY2NjOWRl
NGQyOWI0MDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtMTQ4LDYgKzE0OCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBtZWRpYVN0cmVhbUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3Ry
ZWFtRW5hYmxlZDsgfQogICAgIHN0YXRpYyB2b2lkIHNldE1lZGlhU3RyZWFtRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBpc01lZGlhU3RyZWFtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIHN0
YXRpYyBib29sIHdlYmtpdEdldFVzZXJNZWRpYUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3Ry
ZWFtRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpIHsg
cmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShRVU9U
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwCmluZGV4IDMyOWU3MDE4Yzc2ZWNjZjA4YTMyNTI3YzJiMmMwOGQzYTEzNmE4Y2UuLmI3ZTU4
NjMzODllMzMyNzdiMjE5MzFlMWY0ZTkzZDhkMDUwOWU2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMTIzLDYgKzEyMyw3
IEBACiAjaW5jbHVkZSAiSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTTm9k
ZUxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTT3B0aW9uQ29uc3RydWN0b3IuY3BwIgorI2lu
Y2x1ZGUgIkpTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5jcHAiCiAjaW5jbHVkZSAiSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCmluZGV4IGM5MzExNDNh
NjBlNzYyNzczOTJhY2FkM2UxZWEwODUzY2QyNzM0MTguLmY4YWRhMmZlOTFiMGU0OWFhMWI3NzEx
MWI4MmVkM2FlMjYwNjcwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRDdXN0b20uY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSlNQb3BTdGF0ZUV2ZW50
LmgiCiAjaW5jbHVkZSAiSlNQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNTcGVlY2hJbnB1
dEV2ZW50LmgiCisjaW5jbHVkZSAiSlNTdHJlYW1FdmVudC5oIgogI2luY2x1ZGUgIkpTVGV4dEV2
ZW50LmgiCiAjaW5jbHVkZSAiSlNVSUV2ZW50LmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRBbmltYXRp
b25FdmVudC5oIgpAQCAtMjA4LDYgKzIwOSwxMCBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudCogZXZlbnQpCiAgICAg
ZWxzZSBpZiAoZXZlbnQtPmlzQ2xvc2VFdmVudCgpKQogICAgICAgICB3cmFwcGVyID0gQ1JFQVRF
X0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgQ2xvc2VFdmVudCwgZXZlbnQpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBlbHNlIGlmIChldmVudC0+aXNTdHJl
YW1FdmVudCgpKQorICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGds
b2JhbE9iamVjdCwgU3RyZWFtRXZlbnQsIGV2ZW50KTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAg
ICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEV2ZW50
LCBldmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVl
ckNvbm5lY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVy
Q29ubmVjdGlvbkN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzYwYTg5ODRkZDllZWYyY2JhMjhmZDU4
MmYxYmEzODc0OWYxZDViNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1BlZXJDb25uZWN0aW9u
LmgiCisKKyNpbmNsdWRlICJDYWxsYmFja0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTaWduYWxs
aW5nQ2FsbGJhY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1BlZXJDb25uZWN0aW9u
Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTUGVlckNvbm5lY3Rpb24oRXhlY1N0YXRlKiBleGVjKQor
eworICAgIEpTUGVlckNvbm5lY3Rpb25Db25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRp
Y19jYXN0PEpTUGVlckNvbm5lY3Rpb25Db25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKwor
ICAgIFN0cmluZyBjb25maWd1cmF0aW9uID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgUmVmUHRyPFNpZ25hbGxpbmdDYWxsYmFj
az4gc2lnbmFsbGluZ0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNTaWdu
YWxsaW5nQ2FsbGJhY2s+KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAg
ICBGcmFtZSogZnJhbWUgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3Qo
KSktPmltcGwoKS0+ZnJhbWUoKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNv
bm5lY3Rpb24gPSBQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbmZpZ3VhcmF0aW9uLCBzaWduYWxs
aW5nQ2FsbGJhY2spOworICAgIGlmICghcGVlckNvbm5lY3Rpb24uZ2V0KCkpCisgICAgICAgIC8v
IEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRocm93bi4KKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09i
amVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBwZWVyQ29ubmVj
dGlvbi5nZXQoKSkpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDUxODI0
M2FkNWZiMDU0N2RjMDM5NTJiMjkzYTUyYzgwMTdhNmNjNWYuLjFmZDEwYTY1YWFlMjE0NzVkZjJm
ZDMwMmEwYjQ0NDg1MGMxNGRlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIlY4Tm9kZUZpbHRlckNv
bmRpdGlvbi5oIgogI2luY2x1ZGUgIlY4Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJWOE5vdGlmaWNh
dGlvbi5oIgorI2luY2x1ZGUgIlY4UGVlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJWOFByb3h5
LmgiCiAjaW5jbHVkZSAiVjhTaGFyZWRXb3JrZXIuaCIKICNpbmNsdWRlICJWOFNoYXJlZFdvcmtl
ckNvbnRleHQuaCIKQEAgLTQ3MCw2ICs0NzEsOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
T01XcmFwcGVyOjpjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KEV2ZW50VGFyZ2V0KiB0YQog
CiAgICAgaWYgKFRyYWNrTGlzdCogdHJhY2tMaXN0ID0gdGFyZ2V0LT50b1RyYWNrTGlzdCgpKQog
ICAgICAgICByZXR1cm4gdG9WOCh0cmFja0xpc3QpOworCisgICAgaWYgKFBlZXJDb25uZWN0aW9u
KiBwZWVyQ29ubmVjdGlvbiA9IHRhcmdldC0+dG9QZWVyQ29ubmVjdGlvbigpKQorICAgICAgICBy
ZXR1cm4gdG9WOChwZWVyQ29ubmVjdGlvbik7CiAjZW5kaWYKIAogICAgIEFTU0VSVCgwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNw
cAppbmRleCBmMGUwMjdlNzFmZjEwMGU2MTRhMDM0MzFlMGMwNzYzMGUxZjI3YzFhLi4xZWRmNGQz
OWZmNTI3MmFhZTE1M2Q1OTJiOTdhNzYwZTY0YzA4NTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCkBAIC01Nyw2ICs1Nyw3
IEBACiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4U3BlZWNoSW5wdXRFdmVudC5o
IgogI2luY2x1ZGUgIlY4U3RvcmFnZUV2ZW50LmgiCisjaW5jbHVkZSAiVjhTdHJlYW1FdmVudC5o
IgogI2luY2x1ZGUgIlY4VGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVjhUb3VjaEV2ZW50LmgiCiAj
aW5jbHVkZSAiVjhVSUV2ZW50LmgiCkBAIC0xNzgsNiArMTc5LDEwIEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KEV2ZW50KiBpbXBsKQogICAgIGlmIChpbXBsLT5pc1NwZWVjaElucHV0RXZl
bnQoKSkKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U3BlZWNoSW5wdXRFdmVudCo+
KGltcGwpKTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKGltcGwt
PmlzU3RyZWFtRXZlbnQoKSkKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U3RyZWFt
RXZlbnQqPihpbXBsKSk7CisjZW5kaWYKICAgICBpZiAoaW1wbC0+aXNDdXN0b21FdmVudCgpKQog
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxDdXN0b21FdmVudCo+KGltcGwpKTsKICNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWZhMGE5MzAyMDk1NzU4ZWJhYTg1ZDM2ZTQyNmUwM2MwNGJmNWZiNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3Vz
dG9tLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UGVlckNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhTaWduYWxsaW5nQ2FsbGJhY2su
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhQZWVy
Q29ubmVjdGlvbjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIElOQ19TVEFUUygiRE9NLlBlZXJDb25uZWN0aW9uLkNvbnN0cnVjdG9yIik7CisK
KyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlv
bi4iLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisKKyAgICBpbnQgYXJnTGVuZ3RoID0gYXJncy5M
ZW5ndGgoKTsKKyAgICBpZiAoYXJnTGVuZ3RoICE9IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKCJUaGUgUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgdGFrZXMgdHdvIGFyZ3VtZW50cy4i
LCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisKKyAgICBpZiAoYXJnc1sxXS0+SXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGUgUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3Ig
bXVzdCBiZSBnaXZlbiBhIFNpZ25hbGxpbmdDYWxsYmFjayBjYWxsYmFjay4iLCBWOFByb3h5OjpU
eXBlRXJyb3IpOworCisgICAgdjg6OlRyeUNhdGNoIGV4Y2VwdGlvbkNhdGNoZXI7CisgICAgQXRv
bWljU3RyaW5nIGNvbmZpZ3VyYXRpb24gPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXS0+VG9TdHJp
bmcoKSk7CisgICAgaWYgKGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0KCkpCisgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4Y2VwdGlvbkNhdGNoZXIuRXhjZXB0aW9uKCkpOworCisgICAgYm9v
bCBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2lnbmFsbGluZ0NhbGxiYWNrPiBzaWdu
YWxsaW5nQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxWOFNpZ25hbGxpbmdD
YWxsYmFjaz4oYXJnc1sxXSwgc3VjY2VlZGVkKTsKKyAgICBpZiAoIXN1Y2NlZWRlZCB8fCAhc2ln
bmFsbGluZ0NhbGxiYWNrLmdldCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhlIFBl
ZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yIG11c3QgYmUgZ2l2ZW4gYSBTaWduYWxsaW5nQ2FsbGJh
Y2sgY2FsbGJhY2suIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworICAgIEZyYW1lKiBmcmFtZSA9
IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JDdXJyZW50Q29udGV4dCgpOworCisgICAgTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciA9IGZyYW1lID8gZnJhbWUtPm1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkgOiAwOworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlv
bj4gcGVlckNvbm5lY3Rpb247CisgICAgaWYgKGZyYW1lQ29udHJvbGxlcikKKyAgICAgICAgcGVl
ckNvbm5lY3Rpb24gPSBmcmFtZUNvbnRyb2xsZXItPmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZp
Z3VyYXRpb24sIHNpZ25hbGxpbmdDYWxsYmFjayk7CisKKyAgICAvLyBUT0RPOiBTaG91bGQgdGhp
cyBjaGVjayBiZSBkb25lPworICAgIGlmICghcGVlckNvbm5lY3Rpb24pCisgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKCJBIFBlZXJDb25uZWN0aW9uIG9iamVjdCBjb3VsZCBub3QgYmUgY3JlYXRl
ZC4iLCBWOFByb3h5OjpSYW5nZUVycm9yKTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3Jh
cHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgcGVlckNvbm5lY3Rpb24uZ2V0KCkpOworICAgIHJl
dHVybiB0b1Y4KHBlZXJDb25uZWN0aW9uLnJlbGVhc2UoKSwgYXJncy5Ib2xkZXIoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50LmNwcAppbmRleCA0MTljMGEzMjU5N2E1OTg0MjIyNmY4ODg0ZWIwYmJlMDhj
ZjA3YWUzLi44Y2I0MDU0Y2YyMDM4YjdjMzIyOGU4YjBjODViMzAyODAyOTA0NzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudC5jcHAKQEAgLTI1MCw2ICsyNTAsMTMgQEAgYm9vbCBFdmVudDo6aXNDbG9zZUV2ZW50
KCkgY29uc3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2Jvb2wgRXZl
bnQ6OmlzU3RyZWFtRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRp
ZgorCiBib29sIEV2ZW50Ojpmcm9tVXNlckdlc3R1cmUoKQogewogICAgIGlmICghVXNlckdlc3R1
cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCA0
OTU4NjQ5ZjlhZjc0NGIzMzE5OWIxNmYzODI1NTdiMjI0ZDllNmEzLi5jMmRhYzdhYzlmYjA2ZGIy
M2IwMjQwYTAzMjhiN2RkZDdjMjZiY2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTQ3LDYgKzE0Nyw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0Nsb3NlRXZlbnQoKSBjb25zdDsKICNlbmRpZgorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmVhbUV2ZW50KCkgY29uc3Q7
CisjZW5kaWYKICAgICAgICAgYm9vbCBmcm9tVXNlckdlc3R1cmUoKTsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgcHJvcGFnYXRpb25TdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wYWdhdGlv
blN0b3BwZWQgfHwgbV9pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oCmluZGV4IDk2ZjAzODNlMmE0YzdiZjBkOTYyZDMxODVkMzljM2E4NDM5NzJkZGMu
LjM5ZTA0Y2RlMzMwMDFlOGI1OGEwOTE4ZTc1MDlkNmI1ZWVjYjRkZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaApAQCAtMTgwLDYgKzE4MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
XAogICAgIG1hY3JvKGF1ZGlvcHJvY2VzcykgXAogICAgIFwKKyAgICBtYWNybyhjb25uZWN0aW5n
KSBcCisgICAgbWFjcm8oYWRkc3RyZWFtKSBcCisgICAgbWFjcm8ocmVtb3Zlc3RyZWFtKSBcCisg
ICAgXAorCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKICAgICBjbGFzcyBF
dmVudE5hbWVzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDE1NzAxNjUxOWZk
MmQ3Yzk2NDlhNTRhZjMzNWIwYjIzMDY2OWNhYTUuLjEzYjFlOWQ0MGU5Yjg3ZDcwODc0MzYzY2Zi
N2VjMzA1YjI0YTMwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMjMyLDYg
KzIzMiwxMSBAQCBFeGNsdXNpdmVUcmFja0xpc3QqIEV2ZW50VGFyZ2V0Ojp0b0V4Y2x1c2l2ZVRy
YWNrTGlzdCgpCiB7CiAgICAgcmV0dXJuIDA7CiB9CisKK1BlZXJDb25uZWN0aW9uKiBFdmVudFRh
cmdldDo6dG9QZWVyQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIDA7Cit9CiAjZW5kaWYKIAog
Ym9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0
dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA0YjQwYmQ5MjYwNzU2Njg5ODM2YThl
NGVhZjFiZDc2MzBlYTVhNTdhLi42MTg0YTk4ODkwMWY2MWJmZDE1NTlhZDJjOTM0YmIyODY2Yjdk
ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNjAsNiArNjAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTXVsdGlwbGVUcmFja0xpc3Q7CiAgICAgY2xhc3MgTm9k
ZTsKICAgICBjbGFzcyBOb3RpZmljYXRpb247CisgICAgY2xhc3MgUGVlckNvbm5lY3Rpb247CiAg
ICAgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwpAQCAtMTYxLDYgKzE2Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBUcmFja0xpc3QqIHRvVHJhY2tMaXN0KCk7
CiAgICAgICAgIHZpcnR1YWwgTXVsdGlwbGVUcmFja0xpc3QqIHRvTXVsdGlwbGVUcmFja0xpc3Qo
KTsKICAgICAgICAgdmlydHVhbCBFeGNsdXNpdmVUcmFja0xpc3QqIHRvRXhjbHVzaXZlVHJhY2tM
aXN0KCk7CisgICAgICAgIHZpcnR1YWwgUGVlckNvbm5lY3Rpb24qIHRvUGVlckNvbm5lY3Rpb24o
KTsKICNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9HZW5lcmF0ZWRTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyYXRl
ZFN0cmVhbS5jcHAKaW5kZXggNDVhYzk2ZGRkNmU3NDc2OTQxNTc5YTdjN2IzZWYwYWEzNDk5NmMz
Mi4uNjM0YjA2ZmE4OGI2NzNmMTdjNDFiYWJhYTllZTBjZTg4ZWQyNTk5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0dlbmVyYXRlZFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0dlbmVyYXRlZFN0cmVhbS5jcHAKQEAgLTkyLDYgKzkyLDE0IEBAIHZvaWQgR2VuZXJh
dGVkU3RyZWFtOjpkZXRhY2hFbWJlZGRlcigpCiAgICAgU3RyZWFtOjpkZXRhY2hFbWJlZGRlcigp
OwogfQogCit2b2lkIEdlbmVyYXRlZFN0cmVhbTo6c3RyZWFtRW5kZWQoKQoreworICAgIG1fYXVk
aW9UcmFja3MtPmNsZWFyKCk7CisgICAgbV92aWRlb1RyYWNrcy0+Y2xlYXIoKTsKKworICAgIFN0
cmVhbTo6c3RyZWFtRW5kZWQoKTsKK30KKwogUGFzc1JlZlB0cjxNdWx0aXBsZVRyYWNrTGlzdD4g
R2VuZXJhdGVkU3RyZWFtOjphdWRpb1RyYWNrcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYXVk
aW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJhdGVkU3RyZWFt
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJhdGVkU3RyZWFtLmgKaW5kZXggYjcwZDk5NGRj
NjQ1OWE3MWYxOTU5ZTY2YmMxYTE3ZjU1Y2UyM2JiMy4uMmI3MGFkZjllM2IxNzEyOWEyZTI2NTk4
YTdkYTgyNmE1NzI2NWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyYXRl
ZFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmF0ZWRTdHJlYW0uaApAQCAt
NDcsNiArNDcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6U3RyZWFtQ2xpZW50IGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hF
bWJlZGRlcigpOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1FbmRlZCgpOwogCiAgICAgLy8gRXZl
bnRUYXJnZXQuCiAgICAgdmlydHVhbCBHZW5lcmF0ZWRTdHJlYW0qIHRvR2VuZXJhdGVkU3RyZWFt
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTBjNzgz
OTliMDk4ODg4MjE3Y2JiZjFlNGJmMmUyMTUxNTc5MzUyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDMwMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9u
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRXJyb3JFdmVudC5o
IgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJTaWduYWxsaW5nQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTdHJlYW0uaCIKKyNpbmNs
dWRlICJTdHJlYW1Db250YWluZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1FdmVudC5oIgorI2luY2x1
ZGUgIlN0cmVhbUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFBl
ZXJDb25uZWN0aW9uPiBQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBjb25m
aWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGxpbmdDYWxsYmFjaz4gc2lnbmFsbGluZ0NhbGxi
YWNrKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVlckNvbm5lY3Rpb24oZnJhbWVDb250
cm9sbGVyLCBpZCwgY29uZmlndXJhdGlvbiwgc2lnbmFsbGluZ0NhbGxiYWNrKSk7Cit9CisKK1Bl
ZXJDb25uZWN0aW9uOjpQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciog
ZnJhbWVDb250cm9sbGVyLCBpbnQgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgY29uZmlndXJhdGlv
biwgUGFzc1JlZlB0cjxTaWduYWxsaW5nQ2FsbGJhY2s+IHNpZ25hbGxpbmdDYWxsYmFjaykKKyAg
ICA6IFBlZXJDb25uZWN0aW9uQ2xpZW50KGZyYW1lQ29udHJvbGxlciwgaWQpCisgICAgLCBtX3Jl
YWR5U3RhdGUoTkVXKQorICAgICwgbV9zaWduYWxsaW5nQ2FsbGJhY2soc2lnbmFsbGluZ0NhbGxi
YWNrKQoreworICAgIG1fbG9jYWxTdHJlYW1zID0gU3RyZWFtQ29udGFpbmVyOjpjcmVhdGUoKTsK
KyAgICBtX3JlbW90ZVN0cmVhbXMgPSBTdHJlYW1Db250YWluZXI6OmNyZWF0ZSgpOworICAgIEFT
U0VSVChmcmFtZUNvbnRyb2xsZXIpOworICAgIGZyYW1lQ29udHJvbGxlci0+c3RhcnROZWdvdGlh
dGlvbihtX2NsaWVudElkKTsKK30KKworUGVlckNvbm5lY3Rpb246On5QZWVyQ29ubmVjdGlvbigp
Cit7Cit9CisKK1Bhc3NSZWZQdHI8U2lnbmFsbGluZ0NhbGxiYWNrPiBQZWVyQ29ubmVjdGlvbjo6
c2lnbmFsbGluZ0NhbGxiYWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaWduYWxsaW5nQ2Fs
bGJhY2s7Cit9CisKK1Bhc3NSZWZQdHI8U3RyZWFtTGlzdD4gUGVlckNvbm5lY3Rpb246OmxvY2Fs
U3RyZWFtcygpCit7CisgICAgaWYgKCFtX2xvY2FsU3RyZWFtTGlzdCkKKyAgICAgICAgbV9sb2Nh
bFN0cmVhbUxpc3QgPSBTdHJlYW1MaXN0OjpjcmVhdGUobV9sb2NhbFN0cmVhbXMpOworCisgICAg
cmV0dXJuIG1fbG9jYWxTdHJlYW1MaXN0OworfQorCitQYXNzUmVmUHRyPFN0cmVhbUxpc3Q+IFBl
ZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1zKCkKK3sKKyAgICBpZiAoIW1fcmVtb3RlU3RyZWFt
TGlzdCkKKyAgICAgICAgbV9yZW1vdGVTdHJlYW1MaXN0ID0gU3RyZWFtTGlzdDo6Y3JlYXRlKG1f
cmVtb3RlU3RyZWFtcyk7CisKKyAgICByZXR1cm4gbV9yZW1vdGVTdHJlYW1MaXN0OworfQorCisv
LyBTZW5kcyB0aGUgbWVzc2FnZSBkb3duIHRvIHRoZSB1c2VyIGFnZW50IGltcGxlbWVudGF0aW9u
Lgordm9pZCBQZWVyQ29ubmVjdGlvbjo6c2lnbmFsaW5nTWVzc2FnZShjb25zdCBBdG9taWNTdHJp
bmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUg
PT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAobWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSkKKyAg
ICAgICAgbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+c2lnbmFsaW5nTWVzc2FnZShtX2Ns
aWVudElkLCBtZXNzYWdlKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6c2VuZChjb25zdCBB
dG9taWNTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5
U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDU3RyaW5nIHV0ZjggPSB0ZXh0LnN0cmluZygpLnV0
ZjgoKTsKKyAgICBpZiAodXRmOC5sZW5ndGgoKSA+IDUwNCkgeworICAgICAgICBlYyA9IElOVkFM
SURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtX2ZyYW1lQ29udHJvbGxlci0+bWVzc2Fn
ZShtX2NsaWVudElkLCB0ZXh0KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFt
KFBhc3NSZWZQdHI8U3RyZWFtPiBzdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGUgU3RyZWFtIG9iamVjdCBp
cyBndWFyYW50ZWVkIHRvIGV4aXN0IHNpbmNlIFN0cmljdFR5cGVDaGVja2luZyBpcyBzZXQgaW4g
dGhlIGlkbC4KKworICAgIFJlZlB0cjxTdHJlYW0+IHMgPSBzdHJlYW07CisKKyAgICBpZiAobV9s
b2NhbFN0cmVhbXMtPmNvbnRhaW5zKHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xvY2Fs
U3RyZWFtcy0+YWRkKHMpOworCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkp
CisgICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPmFkZFN0cmVhbShtX2NsaWVu
dElkLCBzKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlU3RyZWFtKFBhc3NSZWZQ
dHI8U3RyZWFtPiBzdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5
U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGUgU3RyZWFtIG9iamVjdCBpcyBndWFyYW50
ZWVkIHRvIGV4aXN0IHNpbmNlIFN0cmljdFR5cGVDaGVja2luZyBpcyBzZXQgaW4gdGhlIGlkbC4K
KworICAgIFJlZlB0cjxTdHJlYW0+IHMgPSBzdHJlYW07CisKKyAgICBpZiAoIW1fbG9jYWxTdHJl
YW1zLT5jb250YWlucyhzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2NhbFN0cmVhbXMt
PnJlbW92ZShzKTsKKworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAg
ICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5yZW1vdmVTdHJlYW0obV9jbGllbnRJ
ZCwgcyk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OmNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIoKS0+Y2xvc2VQZWVyQ29ubmVjdGlvbihtX2NsaWVudElkKTsKKworICAgIG1fcmVhZHlTdGF0
ZSA9IENMT1NFRDsKKworICAgIHBvc3RTaW1wbGVFdmVudChldmVudE5hbWVzKCkuY2xvc2VFdmVu
dCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246Om5lZ290aWF0aW9uU3RhcnRlZCgpCit7Cisg
ICAgbV9yZWFkeVN0YXRlID0gTkVHT1RJQVRJTkc7CisKKyAgICBwb3N0U2ltcGxlRXZlbnQoZXZl
bnROYW1lcygpLmNvbm5lY3RpbmdFdmVudCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246Om5l
Z290aWF0aW9uRG9uZSgpCit7CisgICAgbV9yZWFkeVN0YXRlID0gQUNUSVZFOworCisgICAgcG9z
dFNpbXBsZUV2ZW50KGV2ZW50TmFtZXMoKS5vcGVuRXZlbnQpOworfQorCit2b2lkIFBlZXJDb25u
ZWN0aW9uOjplcnJvcihjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgLy8gVE9E
TzogRmlndXJlIG91dCB3aGF0IHRvIGRvIHdoZW4gYW4gZXJyb3IgaGFwcGVucworCisgICAgLy9k
aXNwYXRjaEV2ZW50KEVycm9yRXZlbnQ6OmNyZWF0ZShtZXNzYWdlLCAiIiwgMCkpOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uOjpzdHJlYW1BZGRlZChQYXNzUmVmUHRyPFN0cmVhbT4gc3RyZWFt
KQoreworICAgIFJlZlB0cjxTdHJlYW0+IHMgPSBzdHJlYW07CisgICAgbV9yZW1vdGVTdHJlYW1z
LT5hZGQocyk7CisgICAgcG9zdFN0cmVhbUFkZGVkRXZlbnQocyk7Cit9CisKK3ZvaWQgUGVlckNv
bm5lY3Rpb246OnN0cmVhbVJlbW92ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCkK
K3sKKyAgICBSZWZQdHI8U3RyZWFtPiBzdHJlYW0gPSBtX3JlbW90ZVN0cmVhbXMtPmdldChzdHJl
YW1MYWJlbCk7CisgICAgbV9yZW1vdGVTdHJlYW1zLT5yZW1vdmUoc3RyZWFtKTsKKyAgICBwb3N0
U3RyZWFtUmVtb3ZlZEV2ZW50KHN0cmVhbSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246Om9u
TWVzc2FnZShjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgcG9zdE1lc3NhZ2VF
dmVudChtZXNzYWdlKTsKK30KKworUGVlckNvbm5lY3Rpb24qIFBlZXJDb25uZWN0aW9uOjp0b1Bl
ZXJDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKworU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogUGVlckNvbm5lY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAor
eworICAgIHJldHVybiBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpID8gbWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIDogMDsKK30KKworRXZl
bnRUYXJnZXREYXRhKiBQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIFBlZXJDb25u
ZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRh
cmdldERhdGE7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIC8vIERpc3BhdGNoIGEgY2xvc2UgZXZl
bnQgYXN5bmNocm9ub3VzbHkuIERvbid0IGFzc2VydCBzaW5jZSB0aGlzIG1heSBiZSBjYWxsZWQg
ZHVyaW5nIHNodXRkb3duLAorICAgIC8vIGFuZCB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBt
YXkgYmUgbm90IGF2YWlsYWJsZSBpbiB0aGUgTWVkaWEgU3RyZWFtIGNhc2UuCisgICAgaWYgKCFz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisKKyAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUobWVzc2FnZSk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhSZWZQ
dHJEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT46OmNy
ZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZUV2ZW50LCBkYXRhKSk7
Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnBvc3RTdHJlYW1BZGRlZEV2ZW50KFBhc3NSZWZQ
dHI8U3RyZWFtPiBzdHJlYW0pCit7CisgICAgLy8gRGlzcGF0Y2ggYSBjbG9zZSBldmVudCBhc3lu
Y2hyb25vdXNseS4gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoaXMgbWF5IGJlIGNhbGxlZCBkdXJpbmcg
c2h1dGRvd24sCisgICAgLy8gYW5kIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG1heSBiZSBu
b3QgYXZhaWxhYmxlIGluIHRoZSBNZWRpYSBTdHJlYW0gY2FzZS4KKyAgICBpZiAoIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKworICAgIFJlZlB0cjxTdHJlYW0+
IHMgPSBzdHJlYW07CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhSZWZQ
dHJEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIFN0cmVhbT46OmNyZWF0ZSh0aGlzLCAmUGVl
ckNvbm5lY3Rpb246OmRpc3BhdGNoU3RyZWFtQWRkZWRFdmVudCwgcykpOworfQorCit2b2lkIFBl
ZXJDb25uZWN0aW9uOjpwb3N0U3RyZWFtUmVtb3ZlZEV2ZW50KFBhc3NSZWZQdHI8U3RyZWFtPiBz
dHJlYW0pCit7CisgICAgLy8gRGlzcGF0Y2ggYSBjbG9zZSBldmVudCBhc3luY2hyb25vdXNseS4g
RG9uJ3QgYXNzZXJ0IHNpbmNlIHRoaXMgbWF5IGJlIGNhbGxlZCBkdXJpbmcgc2h1dGRvd24sCisg
ICAgLy8gYW5kIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG1heSBiZSBub3QgYXZhaWxhYmxl
IGluIHRoZSBNZWRpYSBTdHJlYW0gY2FzZS4KKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKworICAgIFJlZlB0cjxTdHJlYW0+IHMgPSBzdHJlYW07
CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhSZWZQdHJEaXNwYXRjaFRh
c2s8UGVlckNvbm5lY3Rpb24sIFN0cmVhbT46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rpb246
OmRpc3BhdGNoU3RyZWFtUmVtb3ZlZEV2ZW50LCBzKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rp
b246OnBvc3RTaW1wbGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAg
ICAvLyBEaXNwYXRjaCBhIGNsb3NlIGV2ZW50IGFzeW5jaHJvbm91c2x5LiBEb24ndCBhc3NlcnQg
c2luY2UgdGhpcyBtYXkgYmUgY2FsbGVkIGR1cmluZyBzaHV0ZG93biwKKyAgICAvLyBhbmQgdGhl
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbWF5IGJlIG5vdCBhdmFpbGFibGUgaW4gdGhlIE1lZGlh
IFN0cmVhbSBjYXNlLgorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm47CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0
VGhyZWFkKCkpOworCisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhTaW1w
bGVEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24+OjpjcmVhdGUodGhpcywgJlBlZXJDb25uZWN0
aW9uOjpkaXNwYXRjaFNpbXBsZUV2ZW50LCBldmVudE5hbWUpKTsKK30KKwordm9pZCBQZWVyQ29u
bmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGRhdGEpCit7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZCA9IGRh
dGE7CisgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShhZG9wdFB0cjxNZXNz
YWdlUG9ydEFycmF5PigwKSwgZCkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRj
aFN0cmVhbUFkZGVkRXZlbnQoUGFzc1JlZlB0cjxTdHJlYW0+IHN0cmVhbSkKK3sKKyAgICBSZWZQ
dHI8U3RyZWFtPiBzID0gc3RyZWFtOworICAgIGRpc3BhdGNoRXZlbnQoU3RyZWFtRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuYWRkc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgcykpOworfQor
Cit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0cmVhbVJlbW92ZWRFdmVudChQYXNzUmVm
UHRyPFN0cmVhbT4gc3RyZWFtKQoreworICAgIFJlZlB0cjxTdHJlYW0+IHMgPSBzdHJlYW07Cisg
ICAgZGlzcGF0Y2hFdmVudChTdHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmVz
dHJlYW1FdmVudCwgZmFsc2UsIGZhbHNlLCBzKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246
OmRpc3BhdGNoU2ltcGxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCit7Cisg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlZjE0ZTE5
N2VlZmNiMzcyZDhlYjRjYzIyMDM1ODA4MGQ5N2Y4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBQZWVyQ29ubmVjdGlvbl9oCisjZGVmaW5lIFBlZXJDb25uZWN0aW9u
X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xh
c3MgU2lnbmFsbGluZ0NhbGxiYWNrOworY2xhc3MgU3RyZWFtOworY2xhc3MgU3RyZWFtQ29udGFp
bmVyOworY2xhc3MgU3RyZWFtTGlzdDsKKworY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbj4sCisgICAgcHVibGljIEV2ZW50VGFyZ2V0LAorICAg
IHB1YmxpYyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UGVlckNvbm5lY3Rpb25DbGllbnQg
eworcHVibGljOgorICAgIC8vIE11c3QgbWF0Y2ggdGhlIGNvbnN0YW50cyBpbiB0aGUgLmlkbCBm
aWxlLgorICAgIGVudW0geworICAgICAgICBORVcgPSAwLAorICAgICAgICBORUdPVElBVElORyA9
IDEsCisgICAgICAgIEFDVElWRSA9IDIsCisgICAgICAgIENMT1NFRCA9IDMKKyAgICB9OworCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24+IGNyZWF0ZShNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlciosIGludCBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBjb25maWd1cmF0aW9u
LCBQYXNzUmVmUHRyPFNpZ25hbGxpbmdDYWxsYmFjaz4pOworICAgIHZpcnR1YWwgflBlZXJDb25u
ZWN0aW9uKCk7CisKKyAgICBQYXNzUmVmUHRyPFN0cmVhbUxpc3Q+IGxvY2FsU3RyZWFtcygpOwor
ICAgIFBhc3NSZWZQdHI8U3RyZWFtTGlzdD4gcmVtb3RlU3RyZWFtcygpOworCisgICAgdW5zaWdu
ZWQgc2hvcnQgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisg
ICAgdm9pZCBzaWduYWxpbmdNZXNzYWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2VuZChjb25zdCBBdG9taWNTdHJpbmcmIHRleHQsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZFN0cmVhbShQYXNzUmVmUHRyPFN0cmVhbT4sIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbShQYXNzUmVmUHRyPFN0cmVhbT4s
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmKTsKKworICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ubmVjdGluZyk7CisgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihvcGVuKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGVycm9yKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGNsb3NlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG1lc3NhZ2UpOwor
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkc3RyZWFtKTsKKyAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlbW92ZXN0cmVhbSk7CisKKyAgICBQYXNzUmVm
UHRyPFNpZ25hbGxpbmdDYWxsYmFjaz4gc2lnbmFsbGluZ0NhbGxiYWNrKCkgY29uc3Q7CisKKyAg
ICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgUGVlckNvbm5lY3Rpb24qIHRvUGVlckNvbm5l
Y3Rpb24oKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
OworCisgICAgLy8gQ2FsbGJhY2tzCisgICAgdm9pZCBvbk1lc3NhZ2UoY29uc3QgQXRvbWljU3Ry
aW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG5lZ290aWF0aW9uU3RhcnRlZCgpOworICAgIHZvaWQg
bmVnb3RpYXRpb25Eb25lKCk7CisgICAgdm9pZCBzdHJlYW1BZGRlZChQYXNzUmVmUHRyPFN0cmVh
bT4pOworICAgIHZvaWQgc3RyZWFtUmVtb3ZlZChjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxh
YmVsKTsKKyAgICB2b2lkIGVycm9yKGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7CisKKyAg
ICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPjo6cmVmOworICAgIHVzaW5nIFJlZkNv
dW50ZWQ8UGVlckNvbm5lY3Rpb24+OjpkZXJlZjsKKworcHJvdGVjdGVkOgorICAgIC8vIEV2ZW50
VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVu
dFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRU
YXJnZXREYXRhKCk7CisKK3ByaXZhdGU6CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
ICBjbGFzcyBTaW1wbGVEaXNwYXRjaFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayB7CisgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIHZvaWQgKFQ6OipDYWxsYmFj
aykoY29uc3QgQXRvbWljU3RyaW5nJik7CisKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8U2lt
cGxlRGlzcGF0Y2hUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxUPiBvYmplY3QsIENhbGxiYWNrIGNh
bGxiYWNrLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTaW1wbGVEaXNwYXRjaFRhc2sob2JqZWN0LCBjYWxs
YmFjaywgZXZlbnROYW1lKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCisgICAgICAgIHsKKyAgICAgICAgICAg
IChtX29iamVjdC5nZXQoKS0+Km1fY2FsbGJhY2spKG1fZXZlbnROYW1lKTsKKyAgICAgICAgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgU2ltcGxlRGlzcGF0Y2hUYXNrKFBhc3NSZWZQdHI8VD4g
b2JqZWN0LCBDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUp
CisgICAgICAgICAgICA6IG1fb2JqZWN0KG9iamVjdCkKKyAgICAgICAgICAgICwgbV9jYWxsYmFj
ayhjYWxsYmFjaykKKyAgICAgICAgICAgICwgbV9ldmVudE5hbWUoZXZlbnROYW1lKSB7IH0KKwor
ICAgICAgICBSZWZQdHI8VD4gbV9vYmplY3Q7CisgICAgICAgIENhbGxiYWNrIG1fY2FsbGJhY2s7
CisgICAgICAgIEF0b21pY1N0cmluZyBtX2V2ZW50TmFtZTsKKyAgICB9OworCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgY2xhc3MgUmVmUHRyRGlzcGF0Y2hUYXNr
IDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgdHlwZWRlZiB2b2lkIChUOjoqQ2FsbGJhY2spKFBhc3NSZWZQdHI8VSA+KTsKKworICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxSZWZQdHJEaXNwYXRjaFRhc2s+IGNyZWF0ZShQYXNzUmVm
UHRyPFQ+IG9iamVjdCwgQ2FsbGJhY2sgY2FsbGJhY2ssIFBhc3NSZWZQdHI8VSA+IGFyZ3MpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVmUHRyRGlzcGF0Y2hU
YXNrKG9iamVjdCwgY2FsbGJhY2ssIGFyZ3MpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICAgICAgewor
ICAgICAgICAgICAgKG1fb2JqZWN0LmdldCgpLT4qbV9jYWxsYmFjaykobV9hcmdzKTsKKyAgICAg
ICAgfQorCisgICAgcHVibGljOgorICAgICAgICBSZWZQdHJEaXNwYXRjaFRhc2soUGFzc1JlZlB0
cjxUPiBvYmplY3QsIENhbGxiYWNrIGNhbGxiYWNrLCBQYXNzUmVmUHRyPFUgPiBhcmdzKQorICAg
ICAgICAgICAgOiBtX29iamVjdChvYmplY3QpCisgICAgICAgICAgICAsIG1fY2FsbGJhY2soY2Fs
bGJhY2spCisgICAgICAgICAgICAsIG1fYXJncyhhcmdzKSB7IH0KKworICAgICAgICBSZWZQdHI8
VD4gbV9vYmplY3Q7CisgICAgICAgIENhbGxiYWNrIG1fY2FsbGJhY2s7CisgICAgICAgIFJlZlB0
cjxVID4gbV9hcmdzOworICAgIH07CisKKyAgICB2b2lkIHBvc3RTaW1wbGVFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBwb3N0TWVzc2FnZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBwb3N0U3RyZWFtQWRkZWRFdmVudChQ
YXNzUmVmUHRyPFN0cmVhbT4pOworICAgIHZvaWQgcG9zdFN0cmVhbVJlbW92ZWRFdmVudChQYXNz
UmVmUHRyPFN0cmVhbT4pOworCisgICAgdm9pZCBkaXNwYXRjaFNpbXBsZUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUV2ZW50KFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKTsKKyAgICB2b2lkIGRpc3BhdGNo
U3RyZWFtQWRkZWRFdmVudChQYXNzUmVmUHRyPFN0cmVhbT4pOworICAgIHZvaWQgZGlzcGF0Y2hT
dHJlYW1SZW1vdmVkRXZlbnQoUGFzc1JlZlB0cjxTdHJlYW0+KTsKKworcHJpdmF0ZToKKyAgICBQ
ZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBpZCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGxpbmdDYWxsYmFj
az4pOworCisgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisKKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRh
cmdldERhdGE7CisKKyAgICB1bnNpZ25lZCBzaG9ydCBtX3JlYWR5U3RhdGU7CisgICAgUmVmUHRy
PFNpZ25hbGxpbmdDYWxsYmFjaz4gbV9zaWduYWxsaW5nQ2FsbGJhY2s7CisgICAgUmVmUHRyPFN0
cmVhbUNvbnRhaW5lcj4gbV9sb2NhbFN0cmVhbXM7CisgICAgUmVmUHRyPFN0cmVhbUNvbnRhaW5l
cj4gbV9yZW1vdGVTdHJlYW1zOworICAgIFJlZlB0cjxTdHJlYW1MaXN0PiBtX2xvY2FsU3RyZWFt
TGlzdDsKKyAgICBSZWZQdHI8U3RyZWFtTGlzdD4gbV9yZW1vdGVTdHJlYW1MaXN0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2VuZGlmIC8vIFBlZXJDb25uZWN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9QZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rp
b24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ4Mjc5YWFlZDVmN2M5NTY2ZDQ1NTY5Y2QzOTUxNzYxMmEzZGRj
MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24u
aWRsCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAg
IGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAg
Q2FuQmVDb25zdHJ1Y3RlZCwKKyAgICAgICAgQ3VzdG9tQ29uc3RydWN0RnVuY3Rpb24sCisgICAg
ICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0yLAorICAgICAgICBWOEN1c3RvbUNvbnN0cnVjdG9y
LAorICAgICAgICBFdmVudFRhcmdldAorICAgIF0gUGVlckNvbm5lY3Rpb24geworICAgICAgICB2
b2lkIHNpZ25hbGluZ01lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UpCisgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVcg
PSAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORUdPVElBVElORyA9IDE7CisgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEFDVElWRSA9IDI7CisgICAgICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IENMT1NFRCA9IDM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBzaG9ydCByZWFkeVN0YXRlOworCisgICAgICAgIHZvaWQgc2VuZChpbiBET01TdHJpbmcgdGV4
dCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbU3RyaWN0VHlw
ZUNoZWNraW5nXSB2b2lkIGFkZFN0cmVhbShpbiBTdHJlYW0gc3RyZWFtKQorICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQg
cmVtb3ZlU3RyZWFtKGluIFN0cmVhbSBzdHJlYW0pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3RyZWFtTGlzdCBsb2NhbFN0
cmVhbXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHJlYW1MaXN0IHJlbW90ZVN0cmVh
bXM7CisKKyAgICAgICAgdm9pZCBjbG9zZSgpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNvbm5lY3Rpbmc7Cisg
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ub3BlbjsKKyAgICAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25jbG9zZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tZXNzYWdlOworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHN0cmVhbTsKKyAgICAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmVzdHJlYW07CisKKyAgICAgICAgLy8gRXZlbnRUYXJn
ZXQgaW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlz
dGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1
cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3Rl
bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0
dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQorICAg
ICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKworICAgIH07CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaWduYWxsaW5nQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaWduYWxsaW5nQ2FsbGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWZiNzQxNzkxZTllMTZl
YzVhNmRmZTkxMjEzZTQ5M2ZlMjRhMDliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NpZ25hbGxpbmdDYWxsYmFjay5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU2lnbmFsbGluZ0NhbGxiYWNrX2gKKyNkZWZpbmUgU2lnbmFsbGluZ0NhbGxi
YWNrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBlZXJDb25uZWN0aW9uOwor
CitjbGFzcyBTaWduYWxsaW5nQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxTaWduYWxsaW5n
Q2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TaWduYWxsaW5nQ2FsbGJhY2soKSB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoY29uc3QgU3RyaW5nJiwgUGVlckNvbm5l
Y3Rpb24qKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gU2lnbmFsbGluZ0NhbGxiYWNrX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaWduYWxsaW5nQ2FsbGJhY2suaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NpZ25hbGxpbmdDYWxsYmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYyZDdh
YmJiNDY1NDkwNjc1MWEzNDIzNjlkYTBiZTY3MGMwZWNlZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaWduYWxsaW5nQ2FsbGJhY2suaWRsCkBAIC0wLDAgKzEsMzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
b25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgICAgIENhbGxiYWNrPUZ1bmN0aW9uT25seQor
ICAgIF0gU2lnbmFsbGluZ0NhbGxiYWNrIHsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChp
biBET01TdHJpbmcgbWVzc2FnZSwgaW4gUGVlckNvbm5lY3Rpb24gc291cmNlKTsKKyAgICB9Owor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHJlYW0uY3BwCmluZGV4IGU1Mzc4ODA2YjMyMWVhNDU5MDc3YTdjY2UzOTlk
NDg3NmRjNzBhNjEuLjFjMjk4N2FmNWRkNWU5Y2QyOWQwNDhlMzg4ODVhMWM4ZjI4NDVjY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHJlYW0uY3BwCkBAIC0zMyw5ICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxTdHJlYW0+IFN0cmVhbTo6Y3JlYXRlKE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwpCitQYXNzUmVm
UHRyPFN0cmVhbT4gU3RyZWFtOjpjcmVhdGUoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZy
YW1lQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCBpc0dlbmVyYXRlZFN0cmVh
bSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmVhbShmcmFtZUNvbnRyb2xsZXIsIGxh
YmVsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJlYW0oZnJhbWVDb250cm9sbGVyLCBs
YWJlbCwgaXNHZW5lcmF0ZWRTdHJlYW0pKTsKIH0KIAogU3RyZWFtOjpTdHJlYW0oTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
Ym9vbCBpc0dlbmVyYXRlZFN0cmVhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW0uaAppbmRleCBkOTVkMzEzNTE4YjJk
YmU4Y2QyNDAxZDVmNzg4NTU0ODMyMWE4NzUwLi5lMWUxNjY3NmU0ZTVlZTk5Y2ZlYTllMWRlMTFl
YTNhMjIwYThkOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbS5oCkBAIC00OSwxMiArNDksMTEgQEAgcHVibGlj
OgogICAgICAgICBFTkRFRCA9IDIKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
ZWFtPiBjcmVhdGUoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIGxh
YmVsKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJlYW0+IGNyZWF0ZShNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlciosIGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgaXNHZW5lcmF0ZWRTdHJl
YW0pOwogICAgIHZpcnR1YWwgflN0cmVhbSgpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJlYW1SZWNv
cmRlcj4gcmVjb3JkKCk7CiAKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJl
YWR5c3RhdGVjaGFuZ2UpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZW5k
ZWQpOwogCiAgICAgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVhZHlTdGF0ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbUNvbnRh
aW5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbUNvbnRhaW5lci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFhZTE0OTA1YTA1NmNjYjhlZWNlNTc5NTU0YjNkN2FmYjcxNmI2OTAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtQ29udGFpbmVyLmgKQEAgLTAsMCArMSw5MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHJlYW1Db250YWluZXJfaAorI2RlZmluZSBTdHJl
YW1Db250YWluZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlN0
cmVhbS5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTdHJlYW1Db250YWluZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHJlYW1Db250YWlu
ZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJlYW1Db250YWluZXI+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJlYW1Db250YWluZXIpOyB9CisgICAgdmly
dHVhbCB+U3RyZWFtQ29udGFpbmVyKCkgeyB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX3N0cmVhbXMuc2l6ZSgpOyB9CisKKyAgICBQYXNzUmVmUHRyPFN0cmVhbT4g
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8U3RyZWFtPiA+Ojpjb25zdF9pdGVyYXRvciBpID0gbV9zdHJlYW1zLmJlZ2luKCk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGkgIT0gbV9zdHJlYW1zLmVuZCgpOyArK2ks
ICsraikgeworICAgICAgICAgICAgaWYgKGogPT0gaW5kZXgpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGktPnNlY29uZDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxTdHJl
YW0+KCk7CisgICAgfQorCisgICAgdm9pZCBhZGQoUGFzc1JlZlB0cjxTdHJlYW0+IHN0cmVhbSkK
KyAgICB7CisgICAgICAgIFJlZlB0cjxTdHJlYW0+IHMgPSBzdHJlYW07CisgICAgICAgIG1fc3Ry
ZWFtcy5hZGQocy0+bGFiZWwoKSwgcyk7CisgICAgfQorCisgICAgdm9pZCByZW1vdmUoUGFzc1Jl
ZlB0cjxTdHJlYW0+IHN0cmVhbSkKKyAgICB7CisgICAgICAgIFJlZlB0cjxTdHJlYW0+IHMgPSBz
dHJlYW07CisgICAgICAgIEFTU0VSVChjb250YWlucyhzKSk7CisgICAgICAgIG1fc3RyZWFtcy5y
ZW1vdmUocy0+bGFiZWwoKSk7CisgICAgfQorCisgICAgYm9vbCBjb250YWlucyhQYXNzUmVmUHRy
PFN0cmVhbT4gc3RyZWFtKSBjb25zdAorICAgIHsKKyAgICAgICAgUmVmUHRyPFN0cmVhbT4gcyA9
IHN0cmVhbTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtcy5jb250YWlucyhzLT5sYWJlbCgpKTsK
KyAgICB9CisKKyAgICBQYXNzUmVmUHRyPFN0cmVhbT4gZ2V0KGNvbnN0IFN0cmluZyYga2V5KSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtcy5nZXQoa2V5KTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgU3RyZWFtQ29udGFpbmVyKCkgeyB9CisKKyAgICBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPFN0cmVhbT4gPiBtX3N0cmVhbXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gU3RyZWFt
Q29udGFpbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1FdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtRXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZjI2
Yzc0MTc4YjVkYjY4MzY3NGIxNjhiNDAzMTVmMDNhYTg1MmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtRXZlbnQuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1FdmVudC5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFN0
cmVhbUV2ZW50PiBTdHJlYW1FdmVudDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFN0cmVhbUV2ZW50KTsKK30KKworUGFzc1JlZlB0cjxTdHJlYW1FdmVudD4gU3RyZWFtRXZl
bnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U3RyZWFtPiBzdHJlYW0pCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTdHJlYW1FdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHN0cmVh
bSkpOworfQorCisKK1N0cmVhbUV2ZW50OjpTdHJlYW1FdmVudCgpCit7Cit9CisKK1N0cmVhbUV2
ZW50OjpTdHJlYW1FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U3RyZWFtPiBzdHJlYW0pCisgICAgOiBFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCisgICAgLCBtX3N0cmVhbShzdHJlYW0pCit7
Cit9CisKK1N0cmVhbUV2ZW50Ojp+U3RyZWFtRXZlbnQoKQoreworfQorCit2b2lkIFN0cmVhbUV2
ZW50Ojppbml0U3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFN0cmVhbT4gc3RyZWFtKQoreworICAg
IGlmIChkaXNwYXRjaGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGluaXRFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUpOworCisgICAgbV9zdHJlYW0gPSBzdHJlYW07Cit9CisK
K1Bhc3NSZWZQdHI8U3RyZWFtPiBTdHJlYW1FdmVudDo6c3RyZWFtKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zdHJlYW07Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3Ry
ZWFtRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1FdmVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlmZTU1MTcxNzk4MGVmODE2NDgwOTViODRmMzZlOGE2MGE1YTM3NTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtRXZlbnQuaApAQCAtMCwwICsxLDYyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFN0cmVhbUV2ZW50X2gKKyNkZWZpbmUgU3RyZWFtRXZlbnRf
aAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU3RyZWFtOworCitjbGFzcyBTdHJlYW1FdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+U3RyZWFtRXZlbnQoKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmVhbUV2ZW50PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJlYW1FdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTdHJlYW0+IHN0cmVhbSk7CisKKyAgICB2b2lkIGluaXRT
dHJlYW1FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U3RyZWFtPik7CisKKyAgICAvLyBGcm9tIEV2ZW50VGFy
Z2V0LgorICAgIHZpcnR1YWwgYm9vbCBpc1N0cmVhbUV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorCisgICAgUGFzc1JlZlB0cjxTdHJlYW0+IHN0cmVhbSgpIGNvbnN0OworCitwcml2YXRl
OgorICAgIFN0cmVhbUV2ZW50KCk7CisgICAgU3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFN0cmVh
bT4pOworCisgICAgUmVmUHRyPFN0cmVhbT4gbV9zdHJlYW07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8g
U3RyZWFtRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbUV2ZW50
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1FdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5
NmZiNThlZTExODE4NTY0YTllZTI4ZjJlMDYyYzc5NmE0YmQxYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1FdmVudC5pZGwKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworbW9kdWxlIGV2ZW50cyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
b25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgXSBTdHJlYW1FdmVudCA6IEV2ZW50IHsKKyAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3RyZWFtIHN0cmVhbTsKKworICAgICAgIHZvaWQgaW5p
dFN0cmVhbUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFN0cmVhbSBzdHJlYW1BcmcpOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TdHJlYW1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1M
aXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYmFmZGUyN2VlMjgxYTcwZGZhZGU0MTA3YzBkODlmYjIxYWE3
NjkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbUxpc3QuY3Bw
CkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTdHJlYW1MaXN0LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSA8U3RyZWFtQ29udGFpbmVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1Jl
ZlB0cjxTdHJlYW1MaXN0PiBTdHJlYW1MaXN0OjpjcmVhdGUoUGFzc1JlZlB0cjxTdHJlYW1Db250
YWluZXI+IHN0cmVhbXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJlYW1MaXN0KHN0
cmVhbXMpKTsKK30KKworU3RyZWFtTGlzdDo6U3RyZWFtTGlzdChQYXNzUmVmUHRyPFN0cmVhbUNv
bnRhaW5lcj4gc3RyZWFtcykKK3sKKyAgICBtX3N0cmVhbXMgPSBzdHJlYW1zOworfQorCitTdHJl
YW1MaXN0Ojp+U3RyZWFtTGlzdCgpCit7Cit9CisKK3Vuc2lnbmVkIFN0cmVhbUxpc3Q6Omxlbmd0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyZWFtcy0+bGVuZ3RoKCk7Cit9CisKK1Bhc3NS
ZWZQdHI8U3RyZWFtPiBTdHJlYW1MaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorewor
ICAgIGlmIChpbmRleCA8IG1fc3RyZWFtcy0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBtX3N0
cmVhbXMtPml0ZW0oaW5kZXgpOworICAgIHJldHVybiBQYXNzUmVmUHRyPFN0cmVhbT4oKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJlYW1MaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3RyZWFtTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZjVkMjc3MzgwNTc2ODU2ZDEw
YWI2NjE3Yjg0ZWNkOGM2YmM0ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU3RyZWFtTGlzdC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
U3RyZWFtTGlzdF9oCisjZGVmaW5lIFN0cmVhbUxpc3RfaAorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHJlYW07CitjbGFzcyBTdHJlYW1D
b250YWluZXI7CisKK2NsYXNzIFN0cmVhbUxpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHJlYW1M
aXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyZWFtTGlzdD4gY3JlYXRl
KFBhc3NSZWZQdHI8U3RyZWFtQ29udGFpbmVyPiBzdHJlYW1zKTsKKyAgICB2aXJ0dWFsIH5TdHJl
YW1MaXN0KCk7CisKKyAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIFN0cmVhbUxp
c3QKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxTdHJlYW0+IGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIFN0cmVhbUxpc3QoUGFzc1JlZlB0cjxTdHJlYW1Db250YWluZXI+IHN0cmVhbXMpOworCisg
ICAgUmVmUHRyPFN0cmVhbUNvbnRhaW5lcj4gbV9zdHJlYW1zOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8v
IFN0cmVhbUxpc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbUxpc3Qu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmVhbUxpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOTMy
MTlmNjljNDgzZWQzMjBjYjc1ZWE4NjExODJlZTgxZWY4NmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3RyZWFtTGlzdC5pZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNLAorICAgICAgICBIYXNJbmRleEdldHRlcgorICAgIF0gU3RyZWFt
TGlzdCB7CisgICAgICAgIFN0cmVhbSBpdGVtKGluIFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7
CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYWNrTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhY2tMaXN0LmNwcAppbmRleCAwODljODZmYTdiODg4
MjdmODFhYjJmOTM1YTNjMDUzOTQ1NThhZGZlLi45OGU0NTI4OGMxMjU5NTZkMGMzOTI2NWFmYjY5
ZTc0NWQ3Zjg1NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhY2tMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhY2tMaXN0LmNwcApAQCAtMTAzLDEyICsxMDMs
MTUgQEAgY29uc3QgU3RyaW5nJiBUcmFja0xpc3Q6OmdldExhbmd1YWdlKHVuc2lnbmVkIGxvbmcg
aW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb24KIAogdm9pZCBUcmFja0xpc3Q6OmNsZWFyKCkK
IHsKLSAgICBtX3RyYWNrcy5jbGVhcigpOwotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAg
ICBtX2Fzc29jaWF0ZWRTdHJlYW1MYWJlbCA9IFN0cmluZygpOwogI2VuZGlmCiAKKyAgICBpZiAo
bV90cmFja3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RyYWNrcy5jbGVh
cigpOworCiAgICAgcG9zdENoYW5nZUV2ZW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbAppbmRleCA3OWUwMTJhNDQ4MzVhZWFlZWIwYjRjMmVlZTJiMDBjNzQ2YzAxYjM1Li45NDdi
ZjBmNDllY2ZhZGZmYWQ1ODc4NDBmM2IyZjJkZDU5ZWMyYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCkBAIC0zMzYsNiArMzM2LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0
dHJpYnV0ZSBbQ29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OLEVuYWJsZWRBdFJ1bnRpbWVd
IERldmljZU9yaWVudGF0aW9uRXZlbnRDb25zdHJ1Y3RvciBEZXZpY2VPcmllbnRhdGlvbkV2ZW50
OwogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPURFVklDRV9PUklFTlRBVElPTixFbmFi
bGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9uZGV2aWNlb3JpZW50YXRpb247CiAKKyAgICAg
ICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sRW5hYmxlZEF0UnVudGltZV0g
UGVlckNvbm5lY3Rpb25Db25zdHJ1Y3RvciBQZWVyQ29ubmVjdGlvbjsKKwogICAgICAgICAvLyBF
dmVudFRhcmdldCBpbnRlcmZhY2UKICAgICAgICAgW0N1c3RvbV0gdm9pZCBhZGRFdmVudExpc3Rl
bmVyKGluIERPTVN0cmluZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0
cmVhbUNsaWVudC5oCmluZGV4IDUwMTkyZDk0YTI5ZjRlYmZhODJkZjY1YmJkYjZjZTFlMzI0OTI0
YjcuLjQ5NjlmZDRmNTY4OGU5NDc2MmQ2Y2QyY2IxYzUzYzM5Mjk2ZTM3MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKQEAgLTY4LDYgKzY4LDI2IEBAIHB1YmxpYzoK
ICAgICAvLyBTZWxlY3QgYSB2aWRlbyB0cmFjayBpbiBhIGdlbmVyYXRlZCBzdHJlYW0uCiAgICAg
dmlydHVhbCB2b2lkIHNlbGVjdFZpZGVvVHJhY2soY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwg
bG9uZyBpbmRleCkgPSAwOwogCisgICAgLy8gQ3JlYXRlIGEgcGVlciBjb25uZWN0aW9uIGFuZCBh
c3NvY2lhdGUgaXQgd2l0aCB0aGlzIGlkCisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVBlZXJDb25u
ZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRpb24p
ID0gMDsKKworICAgIC8vIFNpZ25hbGluZyBtZXNzYWdlIGZyb20gcGVlciBjb25uZWN0aW9uCisg
ICAgdmlydHVhbCB2b2lkIHNpZ25hbGluZ01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOworCisgICAgLy8gTWVzc2FnZSBmcm9tIHBlZXIgY29u
bmVjdGlvbgorICAgIHZpcnR1YWwgdm9pZCBtZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKKworICAgIC8vIEFkZCBhIHN0cmVhbSB0byBhIHBl
ZXIgY29ubmVjdGlvbgorICAgIHZpcnR1YWwgdm9pZCBhZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpID0gMDsKKworICAgIC8vIFJlbW92ZSBh
IHN0cmVhbSBmcm9tIGEgcGVlciBjb25uZWN0aW9uCisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0
cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkgPSAw
OworCisgICAgLy8gUGVlciBjb25uZWN0aW9uIGlzIGJlaW5nIGNsb3NlZC4KKyAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCkgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0TmVnb3RpYXRpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpID0g
MDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQ2xpZW50KCkgeyB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCmluZGV4
IDE1ZGI0YjA0OGRlMjAxZGRiNjgyOTc0MDkwZjM5MzcxYzVhOWUzZWMuLjIwNmRhNzE0MTE2MDhh
YzAxMDdjMjM4N2QwMjljNzk0NWQzMDllNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01l
ZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKQEAgLTM2LDYgKzM2LDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCisvLyBUT0RPOiBUaGlzIGlzIHVzZWQgZm9yIGhvbGRpbmcgbGlzdCBvZiBQZWVy
Q29ubmVjdGlvbiBhcyB3ZWxsLAorLy8gc28gcmVuYW1lIGNsYXNzIGlzIGluIG9yZGVyLgogY2xh
c3MgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpSZXF1ZXN0IHsKIHB1YmxpYzoKICAgICBSZXF1ZXN0
KCkKQEAgLTU3LDYgKzU5LDcgQEAgcHJpdmF0ZToKIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6TWVk
aWFTdHJlYW1Db250cm9sbGVyKE1lZGlhU3RyZWFtQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2Ns
aWVudChjbGllbnQpCiAgICAgLCBtX25leHRHbG9iYWxSZXF1ZXN0SWQoMSkKKyAgICAsIG1fbmV4
dEdsb2JhbFBlZXJDb25uZWN0aW9uSWQoMSkKIHsKIH0KIApAQCAtOTEsNiArOTQsOCBAQCB2b2lk
IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcihNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcgogCiAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3Ig
aXQgPSBmcmFtZVN0cmVhbXMuYmVnaW4oKTsgaXQgIT0gZnJhbWVTdHJlYW1zLmVuZCgpOyArK2l0
KQogICAgICAgICBtX3N0cmVhbXMucmVtb3ZlKCppdCk7CisKKyAgICAvLyBUT0RPOiBBZGQgZm9y
IHBlZXIgY29ubmVjdGlvbgogfQogCiBpbnQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZWdpc3Rl
clJlcXVlc3QoaW50IGxvY2FsSWQsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNv
bnRyb2xsZXIpCkBAIC0yMDQsNiArMjA5LDcgQEAgdm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
OnZpZGVvVHJhY2tGYWlsZWQoY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQKICAg
ICAgICAgbV9zdHJlYW1zLmdldChzdHJlYW1MYWJlbCktPnZpZGVvVHJhY2tGYWlsZWQoc3RyZWFt
TGFiZWwsIGluZGV4KTsKIH0KIAorLy8gVE9ETzogUmVtb3ZlIG9yIHVzZSB0aGlzIG5hbWUgaW5z
dGVhZCBvZiBvbkFkZFN0cmVhbQogdm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmFkZFJlbW90
ZVN0cmVhbShpbnQsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IHRvIGJlIGltcGxl
bWVudGVkLgpAQCAtMjE0LDYgKzIyMCwxNDUgQEAgdm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
OmFkZFJlbW90ZVN0cmVhbShpbnQsIGNvbnN0IFN0cmluZyYpCiAgICAgfSovCiB9CiAKK3ZvaWQg
TWVkaWFTdHJlYW1Db250cm9sbGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklk
LCBjb25zdCBBdG9taWNTdHJpbmcmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgaW50IHBhZ2VQZWVy
Q29ubmVjdGlvbklkID0gbV9uZXh0R2xvYmFsUGVlckNvbm5lY3Rpb25JZCsrOworICAgIG1fcGVl
ckNvbm5lY3Rpb25zLmFkZChwYWdlUGVlckNvbm5lY3Rpb25JZCwgUmVxdWVzdChmcmFtZVBlZXJD
b25uZWN0aW9uSWQsIGZyYW1lQ29udHJvbGxlcikpOworICAgIG1fY2xpZW50LT5jcmVhdGVQZWVy
Q29ubmVjdGlvbihwYWdlUGVlckNvbm5lY3Rpb25JZCwgY29uZmlndXJhdGlvbik7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpvblNpZ25hbGluZ01lc3NhZ2UoaW50IGNvbnRyb2xs
ZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAg
Ly8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4g
ZGVzdHJveWVkLgorICAgIGlmIChtX3BlZXJDb25uZWN0aW9ucy5jb250YWlucyhjb250cm9sbGVy
UGVlckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgLy8gVE9ETzogQmV0dGVyIG5hbWUgb2YgcGVl
ckNvbm5lY3Rpb24gdmFyaWFibGU/CisgICAgICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0
aW9uID0gbV9wZWVyQ29ubmVjdGlvbnMuZ2V0KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsK
KyAgICAgICAgQVNTRVJUKHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAg
ICAgcGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCktPm9uU2lnbmFsaW5nTWVzc2FnZShw
ZWVyQ29ubmVjdGlvbi5sb2NhbElkKCksIG1lc3NhZ2UpOworICAgIH0KK30KKworaW50IE1lZGlh
U3RyZWFtQ29udHJvbGxlcjo6ZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9u
SWQpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkKC0xKTsKKyAgICAvLyBUT0RPOiBC
ZXR0ZXIgd2F5IHRvIGZpbmQgdGhlIGdsb2JhbCBJRCBpbiB0aGUgbWFwPworICAgIGZvciAoUmVx
dWVzdE1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlZXJDb25uZWN0aW9ucy5iZWdpbigpOyBpdCAhPSBt
X3BlZXJDb25uZWN0aW9ucy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPnNlY29uZC5m
cmFtZUNvbnRyb2xsZXIoKSA9PSBmcmFtZUNvbnRyb2xsZXIgJiYgaXQtPnNlY29uZC5sb2NhbElk
KCkgPT0gZnJhbWVQZWVyQ29ubmVjdGlvbklkKSB7CisgICAgICAgICAgICBwYWdlUGVlckNvbm5l
Y3Rpb25JZCA9IGl0LT5maXJzdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiBwYWdlUGVlckNvbm5lY3Rpb25JZDsKK30KKwordm9pZCBNZWRpYVN0cmVh
bUNvbnRyb2xsZXI6OnNpZ25hbGluZ01lc3NhZ2UoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIq
IGZyYW1lQ29udHJvbGxlciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IGZyYW1l
VG9QYWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIsIGZyYW1lUGVlckNvbm5lY3Rp
b25JZCk7CisgICAgaWYgKHBhZ2VQZWVyQ29ubmVjdGlvbklkICE9IC0xKQorICAgICAgICBtX2Ns
aWVudC0+c2lnbmFsaW5nTWVzc2FnZShwYWdlUGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjptZXNzYWdlKE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNv
bnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9u
SWQgPSBmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFtZVBl
ZXJDb25uZWN0aW9uSWQpOworICAgIGlmIChwYWdlUGVlckNvbm5lY3Rpb25JZCAhPSAtMSkKKyAg
ICAgICAgbV9jbGllbnQtPm1lc3NhZ2UocGFnZVBlZXJDb25uZWN0aW9uSWQsIG1lc3NhZ2UpOwor
fQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25NZXNzYWdlKGludCBjb250cm9sbGVy
UGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIC8v
IERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRl
c3Ryb3llZAorICAgIGlmIChtX3BlZXJDb25uZWN0aW9ucy5jb250YWlucyhjb250cm9sbGVyUGVl
ckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgLy8gVE9ETzogQmV0dGVyIG5hbWUgb2YgcGVlckNv
bm5lY3Rpb24gdmFyaWFibGU/CisgICAgICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9u
ID0gbV9wZWVyQ29ubmVjdGlvbnMuZ2V0KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAg
ICAgICAgQVNTRVJUKHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAg
cGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCktPm9uTWVzc2FnZShwZWVyQ29ubmVjdGlv
bi5sb2NhbElkKCksIG1lc3NhZ2UpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRy
b2xsZXI6OmFkZFN0cmVhbShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9s
bGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVh
bUxhYmVsKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IGZyYW1lVG9QYWdlUGVl
ckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIsIGZyYW1lUGVlckNvbm5lY3Rpb25JZCk7Cisg
ICAgaWYgKHBhZ2VQZWVyQ29ubmVjdGlvbklkICE9IC0xKQorICAgICAgICBtX2NsaWVudC0+YWRk
U3RyZWFtKHBhZ2VQZWVyQ29ubmVjdGlvbklkLCBzdHJlYW1MYWJlbCk7Cit9CisKK3ZvaWQgTWVk
aWFTdHJlYW1Db250cm9sbGVyOjpvbkFkZFN0cmVhbShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgLy8gRG9uJ3Qg
YXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVk
CisgICAgaWYgKG1fcGVlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVj
dGlvbklkKSkgeworICAgICAgICAvLyBUT0RPOiBCZXR0ZXIgbmFtZSBvZiBwZWVyQ29ubmVjdGlv
biB2YXJpYWJsZT8KKyAgICAgICAgY29uc3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3Bl
ZXJDb25uZWN0aW9ucy5nZXQoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBB
U1NFUlQocGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29u
bmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKS0+b25BZGRTdHJlYW0ocGVlckNvbm5lY3Rpb24ubG9j
YWxJZCgpLCBzdHJlYW1MYWJlbCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJv
bGxlcjo6cmVtb3ZlU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRy
b2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgc3Ry
ZWFtTGFiZWwpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkID0gZnJhbWVUb1BhZ2VQ
ZWVyQ29ubmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsK
KyAgICBpZiAocGFnZVBlZXJDb25uZWN0aW9uSWQgIT0gLTEpCisgICAgICAgIG1fY2xpZW50LT5y
ZW1vdmVTdHJlYW0ocGFnZVBlZXJDb25uZWN0aW9uSWQsIHN0cmVhbUxhYmVsKTsKK30KKwordm9p
ZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uUmVtb3ZlU3RyZWFtKGludCBjb250cm9sbGVyUGVl
ckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAgICAv
LyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBk
ZXN0cm95ZWQKKyAgICBpZiAobV9wZWVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxlclBl
ZXJDb25uZWN0aW9uSWQpKSB7CisgICAgICAgIC8vIFRPRE86IEJldHRlciBuYW1lIG9mIHBlZXJD
b25uZWN0aW9uIHZhcmlhYmxlPworICAgICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlv
biA9IG1fcGVlckNvbm5lY3Rpb25zLmdldChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7Cisg
ICAgICAgIEFTU0VSVChwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAg
IHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpLT5vblJlbW92ZVN0cmVhbShwZWVyQ29u
bmVjdGlvbi5sb2NhbElkKCksIHN0cmVhbUxhYmVsKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFT
dHJlYW1Db250cm9sbGVyOjpjbG9zZVBlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpCit7Cisg
ICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkID0gZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklk
KGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKyAgICBpZiAocGFnZVBl
ZXJDb25uZWN0aW9uSWQgIT0gLTEpCisgICAgICAgIG1fY2xpZW50LT5jbG9zZVBlZXJDb25uZWN0
aW9uKHBhZ2VQZWVyQ29ubmVjdGlvbklkKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI6OnN0YXJ0TmVnb3RpYXRpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29u
dHJvbGxlciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICBpbnQgcGFnZVBlZXJD
b25uZWN0aW9uSWQgPSBmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVy
LCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworICAgIGlmIChwYWdlUGVlckNvbm5lY3Rpb25JZCAh
PSAtMSkKKyAgICAgICAgbV9jbGllbnQtPnN0YXJ0TmVnb3RpYXRpb24ocGFnZVBlZXJDb25uZWN0
aW9uSWQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6bmVnb3RpYXRpb25TdGFy
dGVkKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICAvLyBEb24ndCBhc3Nl
cnQgc2luY2UgdGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQKKyAg
ICBpZiAobV9wZWVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9u
SWQpKSB7CisgICAgICAgIC8vIFRPRE86IEJldHRlciBuYW1lIG9mIHBlZXJDb25uZWN0aW9uIHZh
cmlhYmxlPworICAgICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNv
bm5lY3Rpb25zLmdldChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VS
VChwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0
aW9uLmZyYW1lQ29udHJvbGxlcigpLT5uZWdvdGlhdGlvblN0YXJ0ZWQocGVlckNvbm5lY3Rpb24u
bG9jYWxJZCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpuZWdv
dGlhdGlvbkRvbmUoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKQoreworICAgIC8vIERv
bid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ry
b3llZAorICAgIGlmIChtX3BlZXJDb25uZWN0aW9ucy5jb250YWlucyhjb250cm9sbGVyUGVlckNv
bm5lY3Rpb25JZCkpIHsKKyAgICAgICAgLy8gVE9ETzogQmV0dGVyIG5hbWUgb2YgcGVlckNvbm5l
Y3Rpb24gdmFyaWFibGU/CisgICAgICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9uID0g
bV9wZWVyQ29ubmVjdGlvbnMuZ2V0KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAgICAg
ICAgQVNTRVJUKHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAgcGVl
ckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCktPm5lZ290aWF0aW9uRG9uZShwZWVyQ29ubmVj
dGlvbi5sb2NhbElkKCkpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
OmVycm9yKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJv
bGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlmIChtX3BlZXJDb25uZWN0aW9ucy5j
b250YWlucyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgLy8gVE9ETzog
QmV0dGVyIG5hbWUgb2YgcGVlckNvbm5lY3Rpb24gdmFyaWFibGU/CisgICAgICAgIGNvbnN0IFJl
cXVlc3QmIHBlZXJDb25uZWN0aW9uID0gbV9wZWVyQ29ubmVjdGlvbnMuZ2V0KGNvbnRyb2xsZXJQ
ZWVyQ29ubmVjdGlvbklkKTsKKyAgICAgICAgQVNTRVJUKHBlZXJDb25uZWN0aW9uLmZyYW1lQ29u
dHJvbGxlcigpKTsKKyAgICAgICAgcGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCktPmVy
cm9yKHBlZXJDb25uZWN0aW9uLmxvY2FsSWQoKSwgbWVzc2FnZSk7CisgICAgfQorfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKaW5kZXggMjY1NWEyZWNi
MzRmNGNkNDM3YWEzN2QwZTQzODFhMjI4ZTQzNzBlYy4uZjBiY2UwYzVhZDAzMDFjNGQ0N2M4MTBi
MDNmYjFhYWVjNmEzZjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0
cmVhbUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29u
dHJvbGxlci5oCkBAIC02NywyMSArNjcsNDQgQEAgcHVibGljOgogICAgIHZvaWQgc3RyZWFtUmVj
b3JkZWREYXRhKGludCByZXF1ZXN0SWQsIFBhc3NSZWZQdHI8QmxvYj4pOwogICAgIHZvaWQgYXVk
aW9UcmFja0ZhaWxlZChjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKICAgICB2b2lkIHZpZGVvVHJhY2tGYWlsZWQoY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJl
bCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgLy8gVE9ETzogUmVtb3ZlIG9yIHVzZSB0aGlz
IG5hbWUgaW5zdGVhZCBvZiBvbkFkZFN0cmVhbQogICAgIHZvaWQgYWRkUmVtb3RlU3RyZWFtKGlu
dCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKIAorICAgIC8q
IEpTIC0+IFVBICovCisgICAgdm9pZCBjcmVhdGVQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0
cmluZyYgY29uZmlndXJhdGlvbik7CisgICAgdm9pZCBzaWduYWxpbmdNZXNzYWdlKE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG1lc3NhZ2UoTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1lc3NhZ2UpOworICAgIHZvaWQgYWRkU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KiwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1M
YWJlbCk7CisgICAgdm9pZCByZW1vdmVTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIq
LCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxh
YmVsKTsKKyAgICB2b2lkIGNsb3NlUGVlckNvbm5lY3Rpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKyAgICB2b2lkIHN0YXJ0TmVnb3Rp
YXRpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlv
bklkKTsKKworICAgIC8qIFVBIC0+IEpTICovCisgICAgdm9pZCBvblNpZ25hbGluZ01lc3NhZ2Uo
aW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3Nh
Z2UpOworICAgIHZvaWQgb25NZXNzYWdlKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG9uQWRkU3RyZWFtKGludCBj
b250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJl
bCk7CisgICAgdm9pZCBvblJlbW92ZVN0cmVhbShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9u
SWQsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyZWFtTGFiZWwpOworICAgIHZvaWQgbmVnb3RpYXRp
b25TdGFydGVkKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgdm9pZCBuZWdv
dGlhdGlvbkRvbmUoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAgICB2b2lkIGVy
cm9yKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBt
ZXNzYWdlKTsKKwogcHJpdmF0ZToKICAgICBpbnQgcmVnaXN0ZXJSZXF1ZXN0KGludCBsb2NhbFJl
cXVlc3RJZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqKTsKICAgICB2b2lkIHJlZ2lzdGVy
U3RyZWFtKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKik7CiAKKyAgICBpbnQgZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCk7CisKICAgICBjbGFz
cyBSZXF1ZXN0OwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlcXVlc3Q+IFJlcXVlc3RNYXA7
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIq
PiBTdHJlYW1NYXA7CiAKICAgICBSZXF1ZXN0TWFwIG1fcmVxdWVzdHM7CiAgICAgU3RyZWFtTWFw
IG1fc3RyZWFtczsKKyAgICBSZXF1ZXN0TWFwIG1fcGVlckNvbm5lY3Rpb25zOwogCiAgICAgTWVk
aWFTdHJlYW1DbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX25leHRHbG9iYWxSZXF1ZXN0SWQ7
CisgICAgaW50IG1fbmV4dEdsb2JhbFBlZXJDb25uZWN0aW9uSWQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuY3BwCmluZGV4IDJjMzJjOGY1ZjBlZThmN2ZhZDgzOWRmMDJhNzU0MzA1ZDY0
MzA1YTYuLjcyOWM4YzA3MDRmZTM0MjkzZjEwOWYzYzVjMmYxODc3N2ZmOTQ3OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCkBA
IC0zOCw3ICszOCw5IEBACiAjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2lnbmFsbGluZ0NhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiU3RyZWFtUmVjb3JkZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC01
Miw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OyB9CiAgICAgdmlydHVhbCBib29sIGlzR2VuZXJhdGVTdHJlYW1SZXF1ZXN0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZWNvcmRlZERhdGFSZXF1ZXN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTaWduYWxsaW5nUmVx
dWVzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQo
KSA9IDA7CiAKQEAgLTMzMSw2ICszMzQsNyBAQCB2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpnZW5lcmF0ZVN0cmVhbShjb25zdCBTdHJpbmcmIG9wdGlvbnMsCiAKIFBhc3NSZWZQdHI8
U3RyZWFtUmVjb3JkZXI+IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpyZWNvcmRTdHJlYW0o
UGFzc1JlZlB0cjxTdHJlYW0+IHN0cmVhbVJlZikKIHsKKyAgICAvLyBUT0RPOiBTaG91bGQgdGhp
cyBiZSBzdXBwb3J0ZWQgZm9yIHJlbW90ZSBzdHJlYW1zIHRvbz8KICAgICBpZiAoIWlzQ2xpZW50
QXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0zNDcsNiArMzUxLDcgQEAgUGFz
c1JlZlB0cjxTdHJlYW1SZWNvcmRlcj4gTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnJlY29y
ZFN0cmVhbShQYXNzUmVmUHRyPFMKIAogdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
Z2V0UmVjb3JkZWREYXRhKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIGludCByZWNvcmRlcklk
LCBQYXNzUmVmUHRyPEJsb2JDYWxsYmFjaz4gYmxvYkNhbGxiYWNrKQogeworICAgIC8vIFRPRE86
IFNob3VsZCB0aGlzIGJlIHN1cHBvcnRlZCBmb3IgcmVtb3RlIHN0cmVhbXMgdG9vPwogICAgIC8v
IEFzc2VydCBiZWNhdXNlIHdlJ3JlIGFzc3VtaW5nIHRoYXQgdGhlIHJlY29yZGVyIGtlZXBzIGFs
aXZlIHRoZSBzdHJlYW0gb2JqZWN0LgogICAgIEFTU0VSVChtX3N0cmVhbXMuY29udGFpbnMoc3Ry
ZWFtTGFiZWwpKTsKICAgICBBU1NFUlQobV9jbGllbnRzLmdldChyZWNvcmRlcklkKS0+aXNTdHJl
YW1SZWNvcmRlcigpKTsKQEAgLTM2Miw2ICszNjcsNyBAQCB2b2lkIE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjpnZXRSZWNvcmRlZERhdGEoY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgaW50
CiAKIHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc3Bvc2VSZWNvcmRlZERhdGEo
Y29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgaW50IHJlY29yZGVySWQpCiB7CisgICAgLy8gVE9E
TzogU2hvdWxkIHRoaXMgYmUgc3VwcG9ydGVkIGZvciByZW1vdGUgc3RyZWFtcyB0b28/CiAgICAg
Ly8gQXNzZXJ0IGJlY2F1c2Ugd2UncmUgYXNzdW1pbmcgdGhhdCB0aGUgcmVjb3JkZXIga2VlcHMg
YWxpdmUgdGhlIHN0cmVhbSBvYmplY3QuCiAgICAgQVNTRVJUKG1fc3RyZWFtcy5jb250YWlucyhz
dHJlYW1MYWJlbCkpOwogICAgIEFTU0VSVChtX2NsaWVudHMuZ2V0KHJlY29yZGVySWQpLT5pc1N0
cmVhbVJlY29yZGVyKCkpOwpAQCAtNDkzLDYgKzQ5OSwxMzYgQEAgdm9pZCBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcjo6YWRkUmVtb3RlU3RyZWFtKGludCwgY29uc3QgU3RyaW5nJikKICAgICAv
LyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCiB9CiAKK1Bhc3NSZWZQdHI8UGVlckNvbm5lY3Rp
b24+IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25z
dCBBdG9taWNTdHJpbmcmIGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsbGluZ0NhbGxi
YWNrPiBzaWduYWxsaW5nQ2FsbGJhY2spCit7CisgICAgaW50IGNsaWVudElkID0gbV9jbGllbnRz
LmdldE5leHRJZCgpOworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24g
PSBQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIGNsaWVudElkLCBjb25maWd1cmF0aW9uLCBz
aWduYWxsaW5nQ2FsbGJhY2spOworICAgIG1fY2xpZW50cy5hZGQoY2xpZW50SWQsIHBlZXJDb25u
ZWN0aW9uLmdldCgpKTsKKworICAgIC8vIFRPRE86IEhvdyB0byBoYW5kbGUgaWYgd2VyZSBpbiBh
IHN0YXRlIG9mIG1vdmluZyBmcmFtZSB0byBhbm90aGVyIHBhZ2UsCisgICAgLy8gYW5kIHBhZ2VD
b250cm9sbGVyIGlzbid0IGN1cnJlbnRseSB2YWxpZD8gSnVzdCBza2lwIHJlZ2lzdGVyaW5nPwor
ICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5jcmVh
dGVQZWVyQ29ubmVjdGlvbih0aGlzLCBjbGllbnRJZCwgY29uZmlndXJhdGlvbik7CisgICAgcmV0
dXJuIHBlZXJDb25uZWN0aW9uOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
OjpvblNpZ25hbGluZ01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0
cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJDb25u
ZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKS0+
aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNv
bm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVl
ckNvbm5lY3Rpb25JZCkpOworCisgICAgcGVlckNvbm5lY3Rpb24tPnNpZ25hbGxpbmdDYWxsYmFj
aygpLT5oYW5kbGVFdmVudChtZXNzYWdlLCBwZWVyQ29ubmVjdGlvbi5nZXQoKSk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnNpZ25hbGluZ01lc3NhZ2UoaW50IHBlZXJD
b25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAocGFn
ZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+c2lnbmFsaW5nTWVzc2Fn
ZSh0aGlzLCBwZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcjo6bWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAg
ICBwYWdlQ29udHJvbGxlcigpLT5tZXNzYWdlKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQsIG1lc3Nh
Z2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjphZGRTdHJlYW0oaW50
IHBlZXJDb25uZWN0aW9uSWQsIFBhc3NSZWZQdHI8U3RyZWFtPiBzdHJlYW1SZWYpCit7CisgICAg
UmVmUHRyPFN0cmVhbT4gc3RyZWFtID0gc3RyZWFtUmVmOworICAgIEFTU0VSVChtX3N0cmVhbXMu
Y29udGFpbnMoc3RyZWFtLT5sYWJlbCgpKSk7CisKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkK
KyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+YWRkU3RyZWFtKHRoaXMsIHBlZXJDb25uZWN0aW9u
SWQsIHN0cmVhbS0+bGFiZWwoKSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6OnJlbW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgUGFzc1JlZlB0cjxTdHJlYW0+
IHN0cmVhbVJlZikKK3sKKyAgICBSZWZQdHI8U3RyZWFtPiBzdHJlYW0gPSBzdHJlYW1SZWY7Cisg
ICAgQVNTRVJUKG1fc3RyZWFtcy5jb250YWlucyhzdHJlYW0tPmxhYmVsKCkpKTsKKworICAgIGlm
IChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5yZW1vdmVTdHJl
YW0odGhpcywgcGVlckNvbm5lY3Rpb25JZCwgc3RyZWFtLT5sYWJlbCgpKTsKK30KKwordm9pZCBN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25NZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklk
LCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5j
b250YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocGVl
ckNvbm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAgICBSZWZQdHI8UGVlckNv
bm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24qPiht
X2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpKTsKKworICAgIHBlZXJDb25uZWN0aW9uLT5v
bk1lc3NhZ2UobWVzc2FnZSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
Om9uQWRkU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0
cmVhbUxhYmVsKQoreworICAgIEFTU0VSVCghc3RyZWFtTGFiZWwuaXNOdWxsKCkpOworICAgIEFT
U0VSVChtX2NsaWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVCht
X2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisg
ICAgUmVmUHRyPFN0cmVhbT4gc3RyZWFtID0gU3RyZWFtOjpjcmVhdGUodGhpcywgc3RyZWFtTGFi
ZWwsIHRydWUpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9
IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlv
bklkKSk7CisgICAgcGVlckNvbm5lY3Rpb24tPnN0cmVhbUFkZGVkKHN0cmVhbSk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uUmVtb3ZlU3RyZWFtKGludCBwZWVyQ29u
bmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIEFTU0VS
VCghc3RyZWFtTGFiZWwuaXNOdWxsKCkpOworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMo
cGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVChtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0
aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9u
PiBwZWVyQ29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRz
LmdldChwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgcGVlckNvbm5lY3Rpb24tPnN0cmVhbVJlbW92
ZWQoc3RyZWFtTGFiZWwpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpj
bG9zZVBlZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAgIGlmIChwYWdl
Q29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5jbG9zZVBlZXJDb25uZWN0
aW9uKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjpzdGFydE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAg
IGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5zdGFydE5l
Z290aWF0aW9uKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQpOworfQorCit2b2lkIE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOjpuZWdvdGlhdGlvblN0YXJ0ZWQoaW50IHBlZXJDb25uZWN0aW9uSWQp
Cit7CisgICAgLy8gVE9ETzogQXNzZXJ0IG9yIG5vdD8KKyAgICBBU1NFUlQobV9jbGllbnRzLmNv
bnRhaW5zKHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVy
Q29ubmVjdGlvbklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29u
bmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1f
Y2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkpOworCisgICAgcGVlckNvbm5lY3Rpb24tPm5l
Z290aWF0aW9uU3RhcnRlZCgpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
OjpuZWdvdGlhdGlvbkRvbmUoaW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgLy8gVE9ETzog
QXNzZXJ0IG9yIG5vdD8KKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJDb25uZWN0
aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKS0+aXNQ
ZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5l
Y3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNv
bm5lY3Rpb25JZCkpOworCisgICAgcGVlckNvbm5lY3Rpb24tPm5lZ290aWF0aW9uRG9uZSgpOwor
fQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjplcnJvcihpbnQgcGVlckNvbm5l
Y3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIC8vIFRPRE86IEFz
c2VydCBvciBub3Q/CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhwZWVyQ29ubmVjdGlv
bklkKSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCktPmlzUGVl
ckNvbm5lY3Rpb24oKSk7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0
aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24qPihtX2NsaWVudHMuZ2V0KHBlZXJDb25u
ZWN0aW9uSWQpKTsKKworICAgIHBlZXJDb25uZWN0aW9uLT5lcnJvcihtZXNzYWdlKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaApp
bmRleCAwZDZjZTRiNjc3OGM5OTczNzkyNTdlMTA3NmJmZjBlYWMwZmRjNmEyLi42ZGNkNTk5Yjlj
OGQxN2UyNDViZDllZWM5MzczZWU3NWIxNWNjNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCkBAIC00Nyw4ICs0NywxMCBAQCBjbGFz
cyBNdWx0aXBsZVRyYWNrTGlzdDsKIGNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJh
Y2s7CiBjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s7CiBjbGFzcyBQYWdl
OworY2xhc3MgUGVlckNvbm5lY3Rpb247CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTaWduYWxsaW5nQ2FsbGJhY2s7CiBjbGFzcyBT
dHJlYW07CiBjbGFzcyBTdHJlYW1SZWNvcmRlcjsKIApAQCAtMTkzLDYgKzE5NSwyNyBAQCBwdWJs
aWM6CiAgICAgLy8gU2VsZWN0IGEgdmlkZW8gdHJhY2sgaW4gYSBnZW5lcmF0ZWQgc3RyZWFtLgog
ICAgIHZvaWQgc2VsZWN0VmlkZW9UcmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBsb25n
IGluZGV4KTsKIAorICAgIC8vIENyZWF0ZXMgYSBuZXcgUGVlckNvbm5lY3Rpb24gb2JqZWN0Lgor
ICAgIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbnN0
IEF0b21pY1N0cmluZyYgY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxsaW5nQ2FsbGJh
Y2s+KTsKKworICAgIC8vIFRlbGxzIHRoZSB1c2VyIGFnZW50IHRvIHN0YXJ0IHRoZSBuZWdvdGlh
dGlvbi4KKyAgICB2b2lkIHN0YXJ0TmVnb3RpYXRpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpOwor
CisgICAgLy8gU2lnbmFsaW5nIG1lc3NhZ2UKKyAgICB2b2lkIHNpZ25hbGluZ01lc3NhZ2UoaW50
IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7CisKKyAgICAv
LyBUZXh0IG1lc3NhZ2UKKyAgICB2b2lkIG1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNv
bnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7CisKKyAgICAvLyBTdGFydCBzZW5kIGEgc3RyZWFt
IHRvIHRoZSBvdGhlciBwZWVyCisgICAgdm9pZCBhZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9u
SWQsIFBhc3NSZWZQdHI8U3RyZWFtPik7CisKKyAgICAvLyBTdG9wIHNlbmQgYSBzdHJlYW0gdG8g
dGhlIG90aGVyIHBlZXIKKyAgICB2b2lkIHJlbW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25J
ZCwgUGFzc1JlZlB0cjxTdHJlYW0+KTsKKworICAgIC8vIENsb3NlIGRvd24gYWxsIGFjdGl2aXR5
IGluIHRoZSBQZWVyQ29ubmVjdGlvbiBvYmplY3QuCisgICAgdm9pZCBjbG9zZVBlZXJDb25uZWN0
aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKTsKKwogICAgIC8vIC0tLSBDYWxscyBjb21pbmcgYmFj
ayBmcm9tIHRoZSBjb250cm9sbGVyLiAtLS0gLy8KIAogICAgIC8vIFJlcG9ydCB0aGUgZ2VuZXJh
dGlvbiBvZiBhIG5ldyBsb2NhbCBzdHJlYW0uCkBAIC0yMTQsNiArMjM3LDI3IEBAIHB1YmxpYzoK
ICAgICAvLyBBc2tzIHRvIGNyZWF0ZSBhIG5ldyByZW1vdGUgc3RyZWFtIG9iamVjdCBpbiB0aGUg
Y29udGV4dCBvZiBhIHBlZXIgY29ubmVjdGlvbi4KICAgICB2b2lkIGFkZFJlbW90ZVN0cmVhbShp
bnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CiAKKyAgICAv
LyBTaWduYWxpbmcgbWVzc2FnZQorICAgIHZvaWQgb25TaWduYWxpbmdNZXNzYWdlKGludCBwZWVy
Q29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpOworCisgICAgLy8gVGV4
dCBtZXNzYWdlCisgICAgdm9pZCBvbk1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0
IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7CisKKyAgICAvLyBJbmZvcm1zIHRoYXQgdGhlIG90aGVy
IHBlZXIgaGFzIHN0YXJ0ZWQgc2VuZGluZyBhIHN0cmVhbSB0byB1cworICAgIHZvaWQgb25BZGRT
dHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyZWFtTGFi
ZWwpOworCisgICAgLy8gSW5mb3JtcyB0aGF0IHRoZSBvdGhlciBwZWVyIGhhcyBzdG9wcGVkIHNl
bmRpbmcgYSBzdHJlYW0gdG8gdXMKKyAgICB2b2lkIG9uUmVtb3ZlU3RyZWFtKGludCBwZWVyQ29u
bmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKworICAgIC8vIElD
RS9TVFVOL1RVUk4gZXRjIG5lZ290aWF0aW9uIHN0YXJ0ZWQuCisgICAgdm9pZCBuZWdvdGlhdGlv
blN0YXJ0ZWQoaW50IHBlZXJDb25uZWN0aW9uSWQpOworCisgICAgLy8gSUNFL1NUVU4vVFVSTiBl
dGMgbmVnb3RpYXRpb24gZG9uZS4KKyAgICB2b2lkIG5lZ290aWF0aW9uRG9uZShpbnQgcGVlckNv
bm5lY3Rpb25JZCk7CisKKyAgICAvLyBTb21ldGhpbmcgYmFkIGhhcHBlbmVkLgorICAgIHZvaWQg
ZXJyb3IoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7
CisKIHByaXZhdGU6CiAgICAgY2xhc3MgUmVxdWVzdDsKICAgICBjbGFzcyBHZW5lcmF0ZVN0cmVh
bVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
U3RyZWFtQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
U3RyZWFtQ2xpZW50TW9jay5jcHAKaW5kZXggY2M5M2Y0Y2E3ZWFjYzIxMmYzMGFkMmI1NTlkM2Zh
Y2U1M2Q2MzY2YS4uOGI4NDQ4MmU1OTQzY2QzYmQyM2Y4MWJhN2YzZGJiZmRmMGJmZGU0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVN0cmVhbUNsaWVudE1v
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFTdHJlYW1DbGll
bnRNb2NrLmNwcApAQCAtNjIsNiArNjIsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBl
bmFibGVBdWRpb1RyYWNrKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcg
aW5kZXgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlQXVkaW9UcmFjayhjb25zdCBTdHJpbmcm
IHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vs
ZWN0VmlkZW9UcmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBsb25nIGluZGV4KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlUGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQs
IGNvbnN0IFN0cmluZyYgY29uZmlndXJhdGlvbik7CisgICAgdmlydHVhbCB2b2lkIHNpZ25hbGlu
Z01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Cisg
ICAgdmlydHVhbCB2b2lkIG1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CisgICAgdmlydHVhbCB2b2lkIGFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rp
b25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92
ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7
CisgICAgdmlydHVhbCB2b2lkIGNsb3NlUGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9u
SWQpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlv
bklkKTsKIAogcHJpdmF0ZToKICAgICAvLyBHZW5lcmF0ZVN0cmVhbVJlcXVlc3QuCkBAIC03Niw2
ICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBTdHJlYW0gOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdHJlYW0+IHsKICAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmVh
bT4gY3JlYXRlKFN0cmluZyBsYWJlbCk7CiAgICAgICAgIH5TdHJlYW0oKTsKICAgICAgICAgU3Ry
aW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQogICAgICAgICBLVVJMIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CkBAIC0xMDAsMTggKzEwOCwyNyBAQCBwcml2YXRlOgog
ICAgIH07CiAKICAgICB0eXBlZGVmIFdURjo6VmVjdG9yPEdlbmVyYXRlU3RyZWFtUmVxdWVzdD4g
R2VuZXJhdGVTdHJlYW1SZXF1ZXN0TGlzdDsKKyAgICB0eXBlZGVmIFdURjo6SGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxTdHJlYW0+ID4gU3RyZWFtTWFwOwogICAgIHR5cGVkZWYgV1RGOjpIYXNoTWFw
PFN0cmluZywgUmVmUHRyPEdlbmVyYXRlZFN0cmVhbT4gPiBHZW5lcmF0ZWRTdHJlYW1NYXA7CiAK
ICAgICB2b2lkIGFzeW5jUHJvY2Vzc0dlbmVyYXRlU3RyZWFtUmVxdWVzdHMoKTsKICAgICB2b2lk
IHJlcXVlc3RzVGltZXJGaXJlZChUaW1lcjxNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsPiopOwog
ICAgIHZvaWQgcHJvY2Vzc0dlbmVyYXRlU3RyZWFtUmVxdWVzdChjb25zdCBHZW5lcmF0ZVN0cmVh
bVJlcXVlc3QmKTsKIAorICAgIHZvaWQgc2lnbmFsaW5nTWVzc2FnZVRpbWVyRmlyZWQoVGltZXI8
TWVkaWFTdHJlYW1DbGllbnRNb2NrSW1wbD4qKTsKKyAgICB2b2lkIG5lZ290aWF0aW9uVGltZXJG
aXJlZChUaW1lcjxNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsPiopOworCiAgICAgTWVkaWFTdHJl
YW1Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CiAgICAgYm9vbCBtX2dldFVzZXJNZWRpYVJlc3Vs
dFNldDsKICAgICBHZW5lcmF0ZVN0cmVhbU9wdGlvbkZsYWdzIG1fcmVzdWx0RmxhZ3M7CiAgICAg
R2VuZXJhdGVTdHJlYW1SZXF1ZXN0TGlzdCBtX3JlcXVlc3RzOwogICAgIFRpbWVyPE1lZGlhU3Ry
ZWFtQ2xpZW50TW9ja0ltcGw+IG1fcmVxdWVzdHNUaW1lcjsKKyAgICBTdHJlYW1NYXAgbV9zdHJl
YW1zOwogICAgIEdlbmVyYXRlZFN0cmVhbU1hcCBtX2dlbmVyYXRlZFN0cmVhbXM7CisgICAgVGlt
ZXI8TWVkaWFTdHJlYW1DbGllbnRNb2NrSW1wbD4gbV9zaWduYWxpbmdNZXNzYWdlVGltZXI7Cisg
ICAgVGltZXI8TWVkaWFTdHJlYW1DbGllbnRNb2NrSW1wbD4gbV9uZWdvdGlhdGlvblRpbWVyOwor
ICAgIGludCBtX3BlZXJDb25uZWN0aW9uSWQ7CisgICAgU3RyaW5nIG1fc2lnbmFsaW5nTWVzc2Fn
ZTsKIH07CiAKIC8vIE1lZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGw6OlN0cmVhbS4KQEAgLTEyNSw2
ICsxNDIsMTEgQEAgTWVkaWFTdHJlYW1DbGllbnRNb2NrSW1wbDo6U3RyZWFtOjp+U3RyZWFtKCkK
IHsKIH0KIAorUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsOjpTdHJlYW0+IE1l
ZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGw6OlN0cmVhbTo6Y3JlYXRlKFN0cmluZyBsYWJlbCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmVhbShsYWJlbCkpOworfQorCiAvLyBNZWRpYVN0
cmVhbUNsaWVudE1vY2tJbXBsOjpHZW5lcmF0ZWRTdHJlYW0uCiBNZWRpYVN0cmVhbUNsaWVudE1v
Y2tJbXBsOjpHZW5lcmF0ZWRTdHJlYW06OkdlbmVyYXRlZFN0cmVhbShHZW5lcmF0ZVN0cmVhbU9w
dGlvbkZsYWdzIGZsYWdzKQogICAgIDogU3RyZWFtKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KS5zdWJzdHJpbmcoMCwgMzYpKQpAQCAtMTQzLDYgKzE2NSw5IEBAIE1lZGlhU3RyZWFtQ2xpZW50
TW9ja0ltcGw6Ok1lZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGwoKQogICAgICwgbV9nZXRVc2VyTWVk
aWFSZXN1bHRTZXQoZmFsc2UpCiAgICAgLCBtX3Jlc3VsdEZsYWdzKDApCiAgICAgLCBtX3JlcXVl
c3RzVGltZXIodGhpcywgJk1lZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGw6OnJlcXVlc3RzVGltZXJG
aXJlZCkKKyAgICAsIG1fc2lnbmFsaW5nTWVzc2FnZVRpbWVyKHRoaXMsICZNZWRpYVN0cmVhbUNs
aWVudE1vY2tJbXBsOjpzaWduYWxpbmdNZXNzYWdlVGltZXJGaXJlZCkKKyAgICAsIG1fbmVnb3Rp
YXRpb25UaW1lcih0aGlzLCAmTWVkaWFTdHJlYW1DbGllbnRNb2NrSW1wbDo6bmVnb3RpYXRpb25U
aW1lckZpcmVkKQorICAgICwgbV9wZWVyQ29ubmVjdGlvbklkKC0xKQogewogfQogCkBAIC0yMDMs
NiArMjI4LDQ0IEBAIHZvaWQgTWVkaWFTdHJlYW1DbGllbnRNb2NrSW1wbDo6c2VsZWN0VmlkZW9U
cmFjayhjb25zdCBTdHJpbmcmLCBsb25nKQogewogfQogCit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50
TW9ja0ltcGw6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKGludCwgY29uc3QgU3RyaW5nJikKK3sKK30K
Kwordm9pZCBNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsOjpzaWduYWxpbmdNZXNzYWdlKGludCBw
ZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKCFtX3Np
Z25hbGluZ01lc3NhZ2VUaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fcGVlckNvbm5lY3Rp
b25JZCA9IHBlZXJDb25uZWN0aW9uSWQ7CisgICAgICAgIG1fc2lnbmFsaW5nTWVzc2FnZSA9IG1l
c3NhZ2U7CisgICAgICAgIG1fc2lnbmFsaW5nTWVzc2FnZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
KyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DbGllbnRNb2NrSW1wbDo6bWVzc2FnZShpbnQg
cGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fY29udHJv
bGxlci0+b25NZXNzYWdlKHBlZXJDb25uZWN0aW9uSWQsIG1lc3NhZ2UpOworfQorCit2b2lkIE1l
ZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGw6OmFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKK30KKwordm9pZCBNZWRpYVN0cmVhbUNsaWVu
dE1vY2tJbXBsOjpyZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmlu
ZyYgc3RyZWFtTGFiZWwpCit7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DbGllbnRNb2NrSW1wbDo6
Y2xvc2VQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKK30KKwordm9pZCBN
ZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsOjpzdGFydE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVj
dGlvbklkKQoreworICAgIGlmICghbV9uZWdvdGlhdGlvblRpbWVyLmlzQWN0aXZlKCkpIHsKKyAg
ICAgICAgbV9wZWVyQ29ubmVjdGlvbklkID0gcGVlckNvbm5lY3Rpb25JZDsKKyAgICAgICAgbV9u
ZWdvdGlhdGlvblRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICB9Cit9CisKIHZvaWQgTWVkaWFT
dHJlYW1DbGllbnRNb2NrSW1wbDo6YXN5bmNQcm9jZXNzR2VuZXJhdGVTdHJlYW1SZXF1ZXN0cygp
CiB7CiAgICAgaWYgKCFtX3JlcXVlc3RzVGltZXIuaXNBY3RpdmUoKSAmJiAhbV9yZXF1ZXN0cy5p
c0VtcHR5KCkgJiYgbV9nZXRVc2VyTWVkaWFSZXN1bHRTZXQpCkBAIC0yNTMsNiArMzE2LDE2IEBA
IHZvaWQgTWVkaWFTdHJlYW1DbGllbnRNb2NrSW1wbDo6cHJvY2Vzc0dlbmVyYXRlU3RyZWFtUmVx
dWVzdChjb25zdCBHZW5lcmF0ZVN0cmVhCiAgICAgbV9jb250cm9sbGVyLT5zdHJlYW1HZW5lcmF0
ZWQocmVxdWVzdC5yZXF1ZXN0SWQsIHN0cmVhbS0+bGFiZWwoKSwgYXVkaW9UcmFja3MsIHZpZGVv
VHJhY2tzKTsKIH0KIAordm9pZCBNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsOjpzaWduYWxpbmdN
ZXNzYWdlVGltZXJGaXJlZChUaW1lcjxNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsPiopCit7Cisg
ICAgbV9jb250cm9sbGVyLT5vblNpZ25hbGluZ01lc3NhZ2UobV9wZWVyQ29ubmVjdGlvbklkLCBt
X3NpZ25hbGluZ01lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50TW9ja0ltcGw6
Om5lZ290aWF0aW9uVGltZXJGaXJlZChUaW1lcjxNZWRpYVN0cmVhbUNsaWVudE1vY2tJbXBsPiop
Cit7CisgICAgbV9jb250cm9sbGVyLT5uZWdvdGlhdGlvblN0YXJ0ZWQobV9wZWVyQ29ubmVjdGlv
bklkKTsKK30KKwogLy8gTWVkaWFTdHJlYW1DbGllbnRNb2NrLgogTWVkaWFTdHJlYW1DbGllbnRN
b2NrKiBNZWRpYVN0cmVhbUNsaWVudE1vY2s6OmNyZWF0ZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1DbGllbnQuaAppbmRleCA2NmJh
ODA5MzQwMTg0NTk3N2MyMzFkNWNiZjQ1NDFkYzg3Yjk2OTMyLi43ZjRjMDVkZTFiZTIwMmE0MTM5
YTZjYjdmMGQzYmE0MjczYmQ0YWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ2xpZW50LmgKQEAgLTI1LDggKzI1LDEwIEBACiAjaWZu
ZGVmIFdlYk1lZGlhU3RyZWFtQ2xpZW50X2gKICNkZWZpbmUgV2ViTWVkaWFTdHJlYW1DbGllbnRf
aAogCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2Vi
VVJMLmgiCiAKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ29u
dHJvbGxlcjsKQEAgLTU4LDYgKzYwLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlQXVkaW9UcmFjayhjb25zdCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVsLCB1bnNpZ25lZCBsb25n
IGluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVBdWRpb1RyYWNrKGNvbnN0IFdl
YlN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcgaW5kZXgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2VsZWN0VmlkZW9UcmFjayhjb25zdCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVsLCBs
b25nIGluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVBlZXJDb25uZWN0aW9uKGlu
dCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBXZWJTdHJpbmcmIGNvbmZpZ3VyYXRpb24pID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1lc3NhZ2Uo
aW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBhZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFdlYlN0
cmluZyYgc3RyZWFtTGFiZWwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQZWVyQ29ubmVj
dGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydE5l
Z290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBzdHJlYW1M
YWJlbCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNsaWVudE1vY2suaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ2xpZW50TW9jay5oCmlu
ZGV4IDRkODRlZjFlMDE5Njg2MzZmYWQ3MjNmZDQ5YTU0ZDBlOWZhMTAxOTEuLjcxYTRiOWQ3MjJm
NjdiMmQ2MzYxMjI2OTlkNDQyMmJhOWY1NDVlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ2xpZW50TW9jay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ2xpZW50TW9jay5oCkBAIC02MCw2
ICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZUF1ZGlvVHJhY2soY29u
c3QgV2ViU3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc2FibGVBdWRpb1RyYWNrKGNvbnN0IFdlYlN0cmluZyYgc3RyZWFtTGFiZWws
IHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RWaWRlb1RyYWNr
KGNvbnN0IFdlYlN0cmluZyYgc3RyZWFtTGFiZWwsIGxvbmcgaW5kZXgpOworICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2Vi
U3RyaW5nJiBjb25maWd1cmF0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2lnbmFsaW5nTWVzc2Fn
ZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5n
JiBtZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3RyZWFtKGludCBwZWVyQ29ubmVjdGlv
bklkLCBjb25zdCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCk7CisgICAgdmlydHVhbCB2b2lk
IHN0YXJ0TmVnb3RpYXRpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpOworICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFdlYlN0cmluZyYgc3Ry
ZWFtTGFiZWwpOwogCiBwcml2YXRlOgogICAgIFdlYk1lZGlhU3RyZWFtQ2xpZW50TW9jaygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1D
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVh
bUNvbnRyb2xsZXIuaAppbmRleCBkMmM1YzM1ZWVjM2YzMjFhYjhiOTlmOTRjODkxZWNmNTkwYWQy
YzExLi4zZDc5N2MxNjM2YmViYjUwMjI5MjJlNDU5MmI3NWRmOTRlOWI0MjFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNvbnRy
b2xsZXIuaApAQCAtNTQsOCArNTQsMTcgQEAgcHVibGljOgogICAgIFdFQktJVF9BUEkgdm9pZCBz
dHJlYW1SZWNvcmRlZERhdGEoaW50IHJlcXVlc3RJZCwgV2ViQmxvYkRhdGEmLCBsb25nIGxvbmcg
aW50IHNpemUpOwogICAgIFdFQktJVF9BUEkgdm9pZCBhdWRpb1RyYWNrRmFpbGVkKGNvbnN0IFdl
YlN0cmluZyYgc3RyZWFtTGFiZWwsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIFdFQktJVF9B
UEkgdm9pZCB2aWRlb1RyYWNrRmFpbGVkKGNvbnN0IFdlYlN0cmluZyYgc3RyZWFtTGFiZWwsIHVu
c2lnbmVkIGxvbmcgaW5kZXgpOworICAgIC8vIFRPRE86IFJlbW92ZSBvciB1c2UgdGhpcyBuYW1l
IGluc3RlYWQgb2Ygb25BZGRTdHJlYW0KICAgICBXRUJLSVRfQVBJIHZvaWQgYWRkUmVtb3RlU3Ry
ZWFtKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwpOwogCisgICAgV0VCS0lUX0FQSSB2b2lkIG9uU2ln
bmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBtZXNz
YWdlKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgb25NZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklk
LCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpOworICAgIFdFQktJVF9BUEkgdm9pZCBuZWdvdGlh
dGlvblN0YXJ0ZWQoaW50IHBlZXJDb25uZWN0aW9uSWQpOworICAgIFdFQktJVF9BUEkgdm9pZCBu
ZWdvdGlhdGlvbkRvbmUoaW50IHBlZXJDb25uZWN0aW9uSWQpOworICAgIFdFQktJVF9BUEkgdm9p
ZCBlcnJvcihpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICBXRUJLSVRfQVBJIHZvaWQgb25BZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNv
bnN0IFdlYlN0cmluZyYgc3RyZWFtTGFiZWwpOworICAgIFdFQktJVF9BUEkgdm9pZCBvblJlbW92
ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5nJiBzdHJlYW1MYWJl
bCk7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJNZWRpYVN0cmVhbUNvbnRy
b2xsZXIoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyKiBjb250cm9sbGVyKQogICAgICAg
ICA6IG1fcHJpdmF0ZShjb250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvTWVkaWFTdHJlYW1DbGllbnRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9NZWRpYVN0cmVhbUNsaWVudFByb3h5LmNwcAppbmRleCAwMjkxMzQwYTYyNWFkMTJh
MmVjMjkyOWVhYTUwZDdjOTk5ZjJmMzAzLi43ZGFkNGMxMTZmMjRjODJjNGMxOWMzMjgwM2ExYmMw
YjJkMGRmYmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9NZWRpYVN0
cmVhbUNsaWVudFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9NZWRp
YVN0cmVhbUNsaWVudFByb3h5LmNwcApAQCAtMTA2LDYgKzEwNiw0OCBAQCB2b2lkIE1lZGlhU3Ry
ZWFtQ2xpZW50UHJveHk6OnNlbGVjdFZpZGVvVHJhY2soY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJl
bCwgbG9uZyBpbgogICAgICAgICBtX2NsaWVudC0+c2VsZWN0VmlkZW9UcmFjayhzdHJlYW1MYWJl
bCwgaW5kZXgpOwogfQogCit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50UHJveHk6OmNyZWF0ZVBlZXJD
b25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRp
b24pCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+Y3JlYXRlUGVlckNv
bm5lY3Rpb24ocGVlckNvbm5lY3Rpb25JZCwgY29uZmlndXJhdGlvbik7Cit9CisKK3ZvaWQgTWVk
aWFTdHJlYW1DbGllbnRQcm94eTo6c2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25J
ZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
bV9jbGllbnQtPnNpZ25hbGluZ01lc3NhZ2UocGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1DbGllbnRQcm94eTo6bWVzc2FnZShpbnQgcGVlckNvbm5lY3Rp
b25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgbV9jbGllbnQtPm1lc3NhZ2UocGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1DbGllbnRQcm94eTo6YWRkU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklk
LCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgbV9jbGllbnQtPmFkZFN0cmVhbShwZWVyQ29ubmVjdGlvbklkLCBzdHJlYW1MYWJlbCk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1DbGllbnRQcm94eTo6cmVtb3ZlU3RyZWFtKGludCBwZWVyQ29u
bmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPnJlbW92ZVN0cmVhbShwZWVyQ29ubmVjdGlvbklkLCBzdHJl
YW1MYWJlbCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DbGllbnRQcm94eTo6Y2xvc2VQZWVyQ29u
bmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fY2xpZW50LT5jbG9zZVBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uSWQpOworfQor
Cit2b2lkIE1lZGlhU3RyZWFtQ2xpZW50UHJveHk6OnN0YXJ0TmVnb3RpYXRpb24oaW50IHBlZXJD
b25uZWN0aW9uSWQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c3Rh
cnROZWdvdGlhdGlvbihwZWVyQ29ubmVjdGlvbklkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvTWVkaWFTdHJlYW1DbGllbnRQcm94eS5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvTWVkaWFTdHJlYW1DbGllbnRQcm94eS5oCmluZGV4IDI5ODU2NThj
ZmVhNThkZDJmMjUzMTA0MGVkNTFjYzhlZmEwYzUxYjguLjczYTIwY2M3MjM2ZTEzOTNmNjgzNDMx
MDU5YTllOWZhZWZmOTViM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L01lZGlhU3RyZWFtQ2xpZW50UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9NZWRpYVN0cmVhbUNsaWVudFByb3h5LmgKQEAgLTU2LDYgKzU2LDEzIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZW5hYmxlQXVkaW9UcmFjayhjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVs
LCB1bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUF1ZGlvVHJh
Y2soY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAg
dmlydHVhbCB2b2lkIHNlbGVjdFZpZGVvVHJhY2soY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwg
bG9uZyBpbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVBlZXJDb25uZWN0aW9uKGludCBw
ZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRpb24pOworICAgIHZpcnR1
YWwgdm9pZCBzaWduYWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBtZXNzYWdlKGludCBwZWVyQ29ubmVjdGlv
bklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBhZGRTdHJlYW0o
aW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmlu
ZyYgc3RyZWFtTGFiZWwpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBlZXJDb25uZWN0aW9uKGlu
dCBwZWVyQ29ubmVjdGlvbklkKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnROZWdvdGlhdGlvbihp
bnQgcGVlckNvbm5lY3Rpb25JZCk7CiAKIHByaXZhdGU6CiAgICAgV2ViTWVkaWFTdHJlYW1DbGll
bnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TWVkaWFTdHJlYW1DbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhU3RyZWFtQ2xpZW50TW9jay5jcHAKaW5kZXggODU4MDkxZmNiY2IzZmMwNjlkMmM3M2Q5
N2I1NTE3ZDZmZmFkNGUwNC4uYTA0YTM4OGQ0NzU4MjE3ZDFjNzNjMzVhNGIyN2Y2MzFkMTdhYzVk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1D
bGllbnRNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0
cmVhbUNsaWVudE1vY2suY3BwCkBAIC05OSw2ICs5OSw0MSBAQCB2b2lkIFdlYk1lZGlhU3RyZWFt
Q2xpZW50TW9jazo6c2VsZWN0VmlkZW9UcmFjayhjb25zdCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVs
LCBsbwogICAgIG1fY2xpZW50TW9jay0+c2VsZWN0VmlkZW9UcmFjayhzdHJlYW1MYWJlbCwgaW5k
ZXgpOwogfQogCit2b2lkIFdlYk1lZGlhU3RyZWFtQ2xpZW50TW9jazo6Y3JlYXRlUGVlckNvbm5l
Y3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFdlYlN0cmluZyYgY29uZmlndXJhdGlv
bikKK3sKKyAgICBtX2NsaWVudE1vY2stPmNyZWF0ZVBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0
aW9uSWQsIGNvbmZpZ3VyYXRpb24pOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtQ2xpZW50TW9j
azo6c2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgV2ViU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIG1fY2xpZW50TW9jay0+c2lnbmFsaW5nTWVzc2FnZShwZWVyQ29u
bmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbUNsaWVudE1vY2s6
Om1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkK
K3sKKyAgICBtX2NsaWVudE1vY2stPm1lc3NhZ2UocGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7
Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1DbGllbnRNb2NrOjphZGRTdHJlYW0oaW50IHBlZXJD
b25uZWN0aW9uSWQsIGNvbnN0IFdlYlN0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgbV9jbGll
bnRNb2NrLT5hZGRTdHJlYW0ocGVlckNvbm5lY3Rpb25JZCwgc3RyZWFtTGFiZWwpOworfQorCit2
b2lkIFdlYk1lZGlhU3RyZWFtQ2xpZW50TW9jazo6Y2xvc2VQZWVyQ29ubmVjdGlvbihpbnQgcGVl
ckNvbm5lY3Rpb25JZCkKK3sKKyAgICBtX2NsaWVudE1vY2stPmNsb3NlUGVlckNvbm5lY3Rpb24o
cGVlckNvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1DbGllbnRNb2NrOjpz
dGFydE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAgIG1fY2xpZW50TW9j
ay0+c3RhcnROZWdvdGlhdGlvbihwZWVyQ29ubmVjdGlvbklkKTsKK30KKwordm9pZCBXZWJNZWRp
YVN0cmVhbUNsaWVudE1vY2s6OnJlbW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29u
c3QgV2ViU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAgICBtX2NsaWVudE1vY2stPnJlbW92ZVN0
cmVhbShwZWVyQ29ubmVjdGlvbklkLCBzdHJlYW1MYWJlbCk7Cit9CisKIHZvaWQgV2ViTWVkaWFT
dHJlYW1DbGllbnRNb2NrOjpyZXNldE1vY2soKQogewogICAgIG1fY2xpZW50TW9jay0+cmVzZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFt
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVh
bUNvbnRyb2xsZXIuY3BwCmluZGV4IDI3ZDQ3MWZlMTc2Y2U4ZDY5NTk1NzdjYmU0Mjg5NzMxMDFm
N2YzZjkuLjkyYWNkZWU1MDcxMzExYWFmNDRkNGFiMDY1OTE2YjYzNDVhN2Y1YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Db250cm9s
bGVyLmNwcApAQCAtNjksMTEgKzY5LDQ3IEBAIHZvaWQgV2ViTWVkaWFTdHJlYW1Db250cm9sbGVy
Ojp2aWRlb1RyYWNrRmFpbGVkKGNvbnN0IFdlYlN0cmluZyYgc3RyZWFtTGFiZWwsIHVuCiAgICAg
bV9wcml2YXRlLT52aWRlb1RyYWNrRmFpbGVkKHN0cmVhbUxhYmVsLCBpbmRleCk7CiB9CiAKKy8v
IFRPRE86IFJlbW92ZSBvciB1c2UgdGhpcyBuYW1lIGluc3RlYWQgb2Ygb25BZGRTdHJlYW0KIHZv
aWQgV2ViTWVkaWFTdHJlYW1Db250cm9sbGVyOjphZGRSZW1vdGVTdHJlYW0oY29uc3QgV2ViU3Ry
aW5nJikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IFJlbW90ZSBTdHJlYW1zLgogfQogCit2
b2lkIFdlYk1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25TaWduYWxpbmdNZXNzYWdlKGludCBwZWVy
Q29ubmVjdGlvbklkLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9wcml2YXRl
LT5vblNpZ25hbGluZ01lc3NhZ2UocGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisKK3Zv
aWQgV2ViTWVkaWFTdHJlYW1Db250cm9sbGVyOjpvbk1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9u
SWQsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3ByaXZhdGUtPm9uTWVzc2Fn
ZShwZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbUNv
bnRyb2xsZXI6Om5lZ290aWF0aW9uU3RhcnRlZChpbnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKKyAg
ICBtX3ByaXZhdGUtPm5lZ290aWF0aW9uU3RhcnRlZChwZWVyQ29ubmVjdGlvbklkKTsKK30KKwor
dm9pZCBXZWJNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om5lZ290aWF0aW9uRG9uZShpbnQgcGVlckNv
bm5lY3Rpb25JZCkKK3sKKyAgICBtX3ByaXZhdGUtPm5lZ290aWF0aW9uRG9uZShwZWVyQ29ubmVj
dGlvbklkKTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmVycm9yKGludCBw
ZWVyQ29ubmVjdGlvbklkLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9wcml2
YXRlLT5lcnJvcihwZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9pZCBXZWJNZWRp
YVN0cmVhbUNvbnRyb2xsZXI6Om9uQWRkU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25z
dCBXZWJTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIG1fcHJpdmF0ZS0+b25BZGRTdHJlYW0o
cGVlckNvbm5lY3Rpb25JZCwgc3RyZWFtTGFiZWwpOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFt
Q29udHJvbGxlcjo6b25SZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFdl
YlN0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgbV9wcml2YXRlLT5vblJlbW92ZVN0cmVhbShw
ZWVyQ29ubmVjdGlvbklkLCBzdHJlYW1MYWJlbCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>