<?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>65209</bug_id>
          
          <creation_ts>2011-07-26 15:30:08 -0700</creation_ts>
          <short_desc>Implement transfer of MessagePorts in webkitPostMessage.</short_desc>
          <delta_ts>2011-10-31 14:10:05 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>66713</dependson>
    
    <dependson>66714</dependson>
    
    <dependson>66725</dependson>
    
    <dependson>66789</dependson>
    
    <dependson>70120</dependson>
    
    <dependson>70186</dependson>
    
    <dependson>70580</dependson>
    
    <dependson>70658</dependson>
          <blocked>64629</blocked>
    
    <blocked>66578</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Luke Zarko">lukezarko+bugzilla</reporter>
          <assigned_to name="Dmitry Lomov">dslomov</assigned_to>
          <cc>dimich</cc>
    
    <cc>dslomov</cc>
    
    <cc>fishd</cc>
    
    <cc>kbr</cc>
    
    <cc>levin</cc>
    
    <cc>michaeln</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>442572</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-07-26 15:30:08 -0700</bug_when>
    <thetext>Attached is a dump of the state of my tree integrating changes to support Transferable objects. Comments are welcome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442573</commentid>
    <comment_count>1</comment_count>
      <attachid>102062</attachid>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-07-26 15:30:47 -0700</bug_when>
    <thetext>Created attachment 102062
Dump of tree state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444149</commentid>
    <comment_count>2</comment_count>
      <attachid>102407</attachid>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-07-29 15:48:41 -0700</bug_when>
    <thetext>Created attachment 102407
First proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444816</commentid>
    <comment_count>3</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-01 13:07:10 -0700</bug_when>
    <thetext>+Darin for any comments about modifications/additions in Source/WebKit/chromium/public/

+Oliver for any concerns about changes in Source/WebCore/bindings/js/ specifically Source/WebCore/bindings/js/SerializedScriptValue.cpp (I&apos;ll review this, but in case he&apos;d like to look it over, I&apos;m adding him).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444828</commentid>
    <comment_count>4</comment_count>
      <attachid>102407</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-01 13:26:58 -0700</bug_when>
    <thetext>Comment on attachment 102407
First proposed patch.

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

I am still concerned that this API is badly thought out.  It seems very complex for very little gain, and generally seems to be a solution for a problem that has not yet been demonstrated to occur in the real world.

In terms of webkit code when you modify the serialization data you need to bump the serialization version.  JSValueRefArray seems like a bad idea, you&apos;d be much better off simply using Vector&lt;JSValue, ...  rather than JSValueRef.  JSValueRef is really intended only for API usage.

I&apos;m also concerned that it is not clear how this is expected to work for cross-process messages.

&gt; LayoutTests/platform/chromium-mac/fast/dom/Window/window-postmessage-args-expected.txt:5
&gt; -PASS: Posting message (&apos;1&apos;, 1): threw exception TypeError: MessagePortArray argument must be an object
&gt; -PASS: Posting message (&apos;2&apos;, ): threw exception TypeError: MessagePortArray argument must be an object
&gt; -PASS: Posting message (&apos;3&apos;, [object Object]): threw exception TypeError: MessagePortArray argument has no length attribute
&gt; +PASS: Posting message (&apos;1&apos;, 1): threw exception TypeError: TransferableArray argument must be an object
&gt; +PASS: Posting message (&apos;2&apos;, ): threw exception TypeError: TransferableArray argument must be an object
&gt; +PASS: Posting message (&apos;3&apos;, [object Object]): threw exception TypeError: TransferableArray argument has no length attribute

This error message change is concerning it implies that the new API behavior conflicts with existing behavior</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444898</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-01 14:53:07 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 102407 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102407&amp;action=review
&gt; 
&gt; I am still concerned that this API is badly thought out.  It seems very complex for very little gain, and generally seems to be a solution for a problem that has not yet been demonstrated to occur in the real world.

Which api? The js api or the C++ one.

The js api has been discussed a lot here: http://lists.w3.org/Archives/Public/public-webapps/2011AprJun/0304.html

As far as usefulness, one potential example is in web gl implementations which may create 1m ArrayBuffers in workers and send them to the Document for rendering. Here&apos;s a demo https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/demos/google/nvidia-vertex-buffer-object/index.html While this isn&apos;t a real world example, it is something which is representative of a the types of things real world apps of this sort would like to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444925</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-01 15:29:40 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 102407 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102407&amp;action=review
&gt; &gt; 
&gt; &gt; I am still concerned that this API is badly thought out.  It seems very complex for very little gain, and generally seems to be a solution for a problem that has not yet been demonstrated to occur in the real world.
&gt; 
&gt; Which api? The js api or the C++ one.
&gt; 
&gt; The js api has been discussed a lot here: http://lists.w3.org/Archives/Public/public-webapps/2011AprJun/0304.html
&gt; 

The DOM API.  My problem is it seems to have added a new and exciting form of message passing, and its API conflicts with the existing API as well (you have an array parameters that can seemingly be either an array of transferable values, and array of message ports to send the message to, or an arbitrary combination of the two)

&gt; As far as usefulness, one potential example is in web gl implementations which may create 1m ArrayBuffers in workers and send them to the Document for rendering. Here&apos;s a demo https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/demos/google/nvidia-vertex-buffer-object/index.html While this isn&apos;t a real world example, it is something which is representative of a the types of things real world apps of this sort would like to do.

On the other hand use cases that people have come up with in the past (drawing on a worker thread to avoid blocking the main thread) were thrown out because they added complexity, and there weren&apos;t obvious signs of people wanting the ability prior to that.

I think at minimum any implementation of this API should be prefixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444948</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-01 15:49:09 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (From update of attachment 102407 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102407&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; I am still concerned that this API is badly thought out.  It seems very complex for very little gain, and generally seems to be a solution for a problem that has not yet been demonstrated to occur in the real world.
&gt; &gt; 
&gt; &gt; Which api? The js api or the C++ one.
&gt; &gt; 
&gt; &gt; The js api has been discussed a lot here: http://lists.w3.org/Archives/Public/public-webapps/2011AprJun/0304.html
&gt; &gt; 
&gt; 
&gt; The DOM API.  My problem is it seems to have added a new and exciting form of message passing, and its API conflicts with the existing API as well (you have an array parameters that can seemingly be either an array of transferable values, and array of message ports to send the message to, or an arbitrary combination of the two)

The new semantics do not conflict at all with the existing API. They were carefully designed as a generalization of the existing support for transferring MessagePort objects, and are completely backward compatible.

There is a very long discussion on public-webapps about the new functionality -- see http://lists.w3.org/Archives/Public/public-webapps/2011AprJun/thread.html and search for &quot;What changes to Web Messaging spec are proposed&quot;. It took quite some time, but all of the parties on the thread (including, among others, representatives from Mozilla, Microsoft, and Google) are in support of the new semantics.

There are many use cases in the area of web workers where the transfer of ownership semantics are desired -- essentially any computation that one wants to farm out to workers and which produces a lot of data. In the subdomain of 3D graphics applications, there are already WebGL apps and libraries which would immediately benefit from the new Transferable support in conjunction with typed arrays.

&gt; 
&gt; &gt; As far as usefulness, one potential example is in web gl implementations which may create 1m ArrayBuffers in workers and send them to the Document for rendering. Here&apos;s a demo https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/demos/google/nvidia-vertex-buffer-object/index.html While this isn&apos;t a real world example, it is something which is representative of a the types of things real world apps of this sort would like to do.
&gt; 
&gt; On the other hand use cases that people have come up with in the past (drawing on a worker thread to avoid blocking the main thread) were thrown out because they added complexity, and there weren&apos;t obvious signs of people wanting the ability prior to that.
&gt; 
&gt; I think at minimum any implementation of this API should be prefixed.

This will be difficult. In this spec change, the semantics of postMessage were updated; a new API wasn&apos;t added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444981</commentid>
    <comment_count>8</comment_count>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-01 16:27:40 -0700</bug_when>
    <thetext>&gt; In terms of webkit code when you modify the serialization data you need to bump the serialization version.

Noted-- but the only time that this change should affect serialization is when a transfer list is passed in. Is there any point where SerializedScriptValues read from disk would be paired with transfer lists?

&gt;JSValueRefArray seems like a bad idea, you&apos;d be much better off simply using Vector&lt;JSValue, ...  rather than JSValueRef.  JSValueRef is really intended only for API usage.

Thanks; I&apos;m quite new to JSC and was sure I made at least one of these kinds of mistakes.

&gt; I&apos;m also concerned that it is not clear how this is expected to work for cross-process messages.

When the message is being serialized for IPC, objects without special transfer semantics (like MessagePorts, which need to link up IPC channels-- compare these with ArrayBuffers, which are just hunks of data) must be flattened. The transfer of control still happens because the end-user shouldn&apos;t know that IPC actually happened; it&apos;s just this last step that changes. For Chromium IPC there&apos;s a (stub, for now) method (SerializedScriptValue::flattenReceiptList) that deals with this case.

&gt; This error message change is concerning it implies that the new API behavior conflicts with existing behavior

As others have stated, the new behavior subsumes the old behavior. (One kind of weird side effect of this is that the .ports property of a MessageEvent needs to filter out only the MessagePort objects that were given to postMessage).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446180</commentid>
    <comment_count>9</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-03 16:11:42 -0700</bug_when>
    <thetext>Oliver has a good point. This api has just changed and doesn&apos;t have a lot of implementation experience.

We should expose a webkitPostMessage and give it the desired semantics and leave postMessage alone. If it stays solid, we could graduate the semantics over to postMessage.

As Oliver sagely stated, &quot;We don&apos;t want another websockets-esque fiasco, new and exciting api&apos;s get prefixes&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446201</commentid>
    <comment_count>10</comment_count>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-03 16:30:33 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Oliver has a good point. This api has just changed and doesn&apos;t have a lot of implementation experience.
&gt; 
&gt; We should expose a webkitPostMessage and give it the desired semantics and leave postMessage alone. If it stays solid, we could graduate the semantics over to postMessage.

OK-- I will amend the patch to behave in this manner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446944</commentid>
    <comment_count>11</comment_count>
      <attachid>102407</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-04 18:12:21 -0700</bug_when>
    <thetext>Comment on attachment 102407
First proposed patch.

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

A few other comments.

&gt; Source/WebCore/ChangeLog:9
&gt; +        The Structured Clone algorithm describes an interface for Transferable objects (http://www.whatwg.org/specs/web-apps/current-work/complete/common-dom-interfaces.html#transferable-objects). Currently the only official Transferable object is the MessagePort, but ArrayBuffers are expected to be sanctioned as such soon.

Please wrap these lines to somewhere like 80-120 columns.

&gt; Source/WebCore/bindings/js/JSMessageEventCustom.cpp:52
&gt; +    for (size_t i = 0; i &lt; transferables-&gt;size(); ++i)

Needs braces.

&gt; Source/WebCore/bindings/js/JSMessageEventCustom.cpp:68
&gt; +        fillTransferableArray(exec, exec-&gt;argument(7), *transferables, *valueRefArray);

Doesn&apos;t this set argument 7 to all of the transferables when it should only be the MessagePorts? (Isn&apos;t this the thing that gets passed on to script.)


Also are we affecting the behavior of the js method MessageEvent::initMessageEvent?

&gt; Source/WebCore/bindings/js/JSMessagePortCustom.cpp:107
&gt; +    // FIXME: Once other Transferable types are added, check for them here.

How long does this fixme stay in the code?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1236
&gt; +    if (m_transferList)

needs braces.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1409
&gt; +    RefPtr&lt;SerializedScriptValue&gt; serializedValue = SerializedScriptValue::create(exec, value, transferList);

You should change the return line to
    return serializedValue.release();

&gt; Source/WebCore/bindings/js/SerializedScriptValue.h:30
&gt; +#include &quot;Transferable.h&quot;

Add blank line here.

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1026
&gt; +    if (m_transferList) {

Better to return quickly.

if (!m_transferList)
    return true;

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1915
&gt; +        deserializeAndSetProperty(object, propertyName, attribute, value, reinterpret_cast&lt;ValueHandleArray*&gt;(0));

Consider having only one call to deserializeAndSetProperty.


    ValueHandleArray* valueHandleArray = 0;
    ValueHandleArray localArray;
    localArray.reserveCapacity(transferList-&gt;size());
    if (transferList) {
       for (size_t i = 0; i &lt; transferList-&gt;size(); ++i)
           localArray.append(toV8Transferable((*transferList)[i].get()));
      valueHandleArray = &amp;localArray;
    }
    deserializeAndSetProperty(object, propertyName, attribute, value, valueHandleArray);

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:2039
&gt; +    return data.crossThreadString();

Why crossThreadString? Are we creating a string for another thread?

&gt; Source/WebCore/bindings/v8/custom/V8MessageEventCustom.cpp:97
&gt; +    event-&gt;initMessageEvent(typeArg, canBubbleArg, cancelableArg, dataArg.release(), originArg, lastEventIdArg, sourceArg, transferableArray.release());

Doesn&apos;t this push all transferables into &quot;event . ports&quot;? (same comment as the js section).

Ditto for initMessageEvent behavior as well.

&gt; Source/WebCore/dom/MessagePort.cpp:87
&gt; +                if (dataPort == this || m_entangledChannel-&gt;isConnectedTo(dataPort)) {

Consider combining this with the previous if clause to avoid more nesting.

&gt; Source/WebCore/dom/MessagePort.cpp:-218
&gt; -        if (!port || port-&gt;isCloned() || portSet.contains(port)) {

It looks like we are loosing this check for isCloned. Why is that ok? (Or did we retain it and I missed that?)

Ditto with respect to checking for duplicates (or is that handled in SerializeScriptValue now)?

&gt; Source/WebCore/dom/MessagePortChannel.cpp:49
&gt; +PassRefPtr&lt;Transferable&gt; MessagePortChannel::transferIn(PassOwnPtr&lt;TransferableReceipt&gt; ownThis, ScriptExecutionContext&amp; context)

s/ownThis/transferableReceipt/

&gt; Source/WebCore/dom/MessagePortChannel.cpp:52
&gt; +    OwnPtr&lt;MessagePortChannel&gt; ownThisCast = adoptPtr(ownThis.leakPtr()-&gt;asMessagePortChannel());

s/ownThisCast/channel/

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

It would be nice to have a *short* explanation for when/how this class is support to be used. We probably should do this more often in WebKit.

&gt; Source/WebCore/dom/Transferable.h:53
&gt; +    virtual ~Transferable() { }

Why not make this protected and make RefCounted&lt;Transferable&gt; a friend?

&gt; Source/WebCore/dom/Transferable.h:66
&gt; +class TransferableReceipt {

It would be nice if this had its own file (and same thing about the explanation).

&gt; Source/WebCore/workers/SharedWorkerContext.cpp:51
&gt;      return event;

Not your change but return event.release() would be better here.

&gt; Source/WebKit/chromium/public/WebTransferable.h:64
&gt; +    static PassOwnPtr&lt;WebCore::TransferableReceiptArray&gt; fromWebAll(const WebTransferableReceiptArray*);

What does fromWebAll mean?

&gt; Source/WebKit/chromium/src/WebSerializedScriptValue.cpp:99
&gt; +            : adoptPtr(reinterpret_cast&lt;WebCore::TransferableReceipt*&gt;(0));

Does nullptr work here?

&gt; Source/WebKit/chromium/src/WebTransferable.cpp:51
&gt; +    return adoptPtr(reinterpret_cast&lt;TransferableReceipt*&gt;(0));

Ditto re nullptr.

&gt; Source/WebKit/chromium/src/WebWorkerClientImpl.h:37
&gt; +#include &quot;Transferable.h&quot;

We should fwd declare as opposed to including a header file if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447621</commentid>
    <comment_count>12</comment_count>
      <attachid>103151</attachid>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-06 11:38:12 -0700</bug_when>
    <thetext>Created attachment 103151
New patch with prefixed webkitPostMessage, initMessageEvent

(In reply to comment #11)

I&apos;ve added the prefixes to postMessage and initMessageEvent. See below for an explanation for the latter; the former does the following:
- postMessage allows only MessagePorts in the transfer list. On JSC, if a MessagePort appears in the message to be serialized, it turns into an Object (the legacy behavior). On V8, we throw a JavaScript exception.
- webkitPostMessage allows any Transferable in the transfer list. On both JSC and V8, if a Transferable appears both in the message to be serialized and in the transfer list, these objects are reference-equal in the delivered message.
- For both methods, the .ports member on a MessageEvent returns only MessagePorts (found by dropping all non-MessagePort Transferables from the transfer list).

&gt; (From update of attachment 102407 [details])
&gt; &gt; Source/WebCore/bindings/js/JSMessageEventCustom.cpp:68
&gt; &gt; +        fillTransferableArray(exec, exec-&gt;argument(7), *transferables, *valueRefArray);
&gt; 
&gt; Doesn&apos;t this set argument 7 to all of the transferables when it should only be the MessagePorts? (Isn&apos;t this the thing that gets passed on to script.)

Argument 7 is an in argument (it&apos;s the list of transferables). initMessageEvent() mutates the MessageEvent on which it is called; this is the thing that JavaScript sees. Since we filter out MessagePorts using a custom callback, script can only see MessagePorts in the MessageEvent&apos;s .ports member.

&gt; Also are we affecting the behavior of the js method MessageEvent::initMessageEvent?

There&apos;s a little bit of weirdness here and I&apos;m not sure what the standard intends. I am assuming that initMessageEvent exists to permit JavaScript to build MessageEvent objects without doing something overly complicated (eg hooking Window&apos;s onMessage handler). If this is the case, then the IDL given at (http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html) is too restrictive (in that portsArg is still a sequence&lt;MessagePort&gt; and not a sequence&lt;Transferable&gt;).

For this reason, the non-prefixed implementation has the same semantics as postMessage (only MessagePorts in portsArg, no reference equality between the ports list and the message); the prefixed implementation permits all Transferables in portsArg, meaning it&apos;s more liberal than the IDL version. If this is not the right thing to do it is easy enough to change.

&gt; &gt; Source/WebCore/bindings/js/JSMessagePortCustom.cpp:107
&gt; &gt; +    // FIXME: Once other Transferable types are added, check for them here.
&gt; 
&gt; How long does this fixme stay in the code?

I&apos;m removing it and adding a comment to Transferable.h about updating these special case conversion functions.

&gt; &gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:2039
&gt; &gt; +    return data.crossThreadString();
&gt; 
&gt; Why crossThreadString? Are we creating a string for another thread?

Yes, potentially-- flattenReceiptList is analogous to serialization in that the string that is produced is destined for another context (new thread or new process).

&gt; &gt; Source/WebCore/bindings/v8/custom/V8MessageEventCustom.cpp:97
&gt; &gt; +    event-&gt;initMessageEvent(typeArg, canBubbleArg, cancelableArg, dataArg.release(), originArg, lastEventIdArg, sourceArg, transferableArray.release());
&gt; 
&gt; Doesn&apos;t this push all transferables into &quot;event . ports&quot;? (same comment as the js section).
&gt; 
&gt; Ditto for initMessageEvent behavior as well.

Same reply as in the JS section (it&apos;s nice to have consistent semantics!), modulo that the order of operations in initMessageEvent has been changed to be in line with all other serialization routines (and with the standard)-- we transfer first, then run structured clone.

&gt; &gt; Source/WebCore/dom/MessagePort.cpp:87
&gt; &gt; +                if (dataPort == this || m_entangledChannel-&gt;isConnectedTo(dataPort)) {
&gt; 
&gt; Consider combining this with the previous if clause to avoid more nesting.

The syntax won&apos;t let me!

&gt; &gt; Source/WebCore/dom/MessagePort.cpp:-218
&gt; &gt; -        if (!port || port-&gt;isCloned() || portSet.contains(port)) {
&gt; 
&gt; It looks like we are loosing this check for isCloned. Why is that ok? (Or did we retain it and I missed that?)
&gt; Ditto with respect to checking for duplicates (or is that handled in SerializeScriptValue now)?

disentanglePorts became Transferable::transferAllOut. transferAllOut&apos;s version of the check looks like this:

  if (!transferable || transferable-&gt;isTransferClosed() || transferableSet.contains(transferable))

From my reading of the standard, it is possible to close a MessagePort independently of transferring it. That is, you can close a MessagePort and then send it to someone else-- but then they get control of that closed thing.

isTransferClosed() on MessagePort returns m_transferClosed. m_transferClosed is initially false; it is set to true once the MessagePort is transferred (in MessagePort::transferOut). transferOut then calls disentangle(), which in turn calls m_entangledChannel.release(). isCloned() returns !m_entangledChannel. Hence isTransferClosed() will return the same thing as isCloned() *unless* someone is making direct calls to disentangle() and entangle().

Note that attempting to transfer a MessagePort without an entangled channel (not one that is closed) will result in an INVALID_STATE_ERR-- so if someone has done something to the native MessagePort that we didn&apos;t expect, we won&apos;t do anything too strange.

&gt; &gt; Source/WebCore/dom/Transferable.h:53
&gt; &gt; +    virtual ~Transferable() { }
&gt; 
&gt; Why not make this protected and make RefCounted&lt;Transferable&gt; a friend?

This makes Visual C++ upset. (Note that MessagePort&apos;s destructor is public.)

--

One thing that has me slightly worried is an apparent race condition in MessageWorkerTask (WorkerMessagingProxy.cpp). A MessageWorkerTask is constructed in one thread (MessageWorkerTask::MessageWorkerTask) and used in another (MessageWorkerTask::performTask). Part of this process involves the use of a RefPtr&lt;SerializedScriptValue&gt;. If you instrument the code with helpful printfs as such:

    MessageWorkerTask(PassRefPtr&lt;SerializedScriptValue&gt; message, PassOwnPtr&lt;TransferableReceiptArray&gt; receipts, WorkerMessagingProxy* messagingProxy)
        : m_message(message)
        , m_receipts(receipts)
        , m_messagingProxy(messagingProxy)
    {
        printf(&quot;CTOR *refcount is %d\n&quot;, *(m_message-&gt;addressOfCount()));
        printf(&quot;CTOR  refcount is %d\n&quot;, m_message-&gt;refCount());
    }

    virtual void performTask(ScriptExecutionContext* scriptContext)
    {
        Worker* workerObject = m_messagingProxy-&gt;workerObject();
        if (!workerObject || m_messagingProxy-&gt;askedToTerminate())
            return;
        printf(&quot;THRD *refcount is %d\n&quot;, *(m_message-&gt;addressOfCount()));
        printf(&quot;THRD  refcount is %d\n&quot;, m_message-&gt;refCount());
        OwnPtr&lt;TransferableArray&gt; transferables = TransferableReceipt::transferAllIn(*scriptContext, m_receipts.release());
        workerObject-&gt;dispatchEvent(MessageEvent::create(transferables.release(), m_message));
    }

you ordinarily see behavior like this:

CTOR *refcount is 2
CTOR  refcount is 2
THRD *refcount is 1
THRD  refcount is 1

but occasionally the scheduler will give you this:

CTOR *refcount is 2
CTOR  refcount is 2
THRD *refcount is 2
ASSERTION FAILED: m_verifier.isSafeToUse()

where the assertion has failed because the refcount &gt; 1 on a thread that is different than the RefPtr&apos;s owning thread. Since SerializedScriptValue only grants read-only access to its single buffer member, it appears to be safe to reparent it to ThreadSafeRefCounted-- but I&apos;d like input from someone with more WebKit threading experience as to whether this is the proper thing to do (or if I&apos;ve misdiagnosed the problem).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447622</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-06 11:40:22 -0700</bug_when>
    <thetext>Attachment 103151 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/dom/Transferable.cpp:28:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/WebCore/dom/TransferableReceipt.cpp:28:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/WebCore/dom/TransferableReceipt.cpp:29:  Found header this file implements after a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 3 in 85 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447623</commentid>
    <comment_count>14</comment_count>
      <attachid>103152</attachid>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-06 11:43:55 -0700</bug_when>
    <thetext>Created attachment 103152
New patch with prefixed webkitPostMessage, initMessageEvent, *and* three style nits fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447748</commentid>
    <comment_count>15</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-07 07:20:28 -0700</bug_when>
    <thetext>(In reply to comment #12)

&gt; 
&gt; One thing that has me slightly worried is an apparent race condition in MessageWorkerTask (WorkerMessagingProxy.cpp). 

Good concern. I think the real problem is that m_message has a ref count of two in the constructor and we should seek to eliminate that.

I suspect we have a call like this:
  RefPtr&lt;SerializedScriptValue&gt; message;
  func(message);
which should be
  RefPtr&lt;SerializedScriptValue&gt; message;
  func(message.release());
in the call chain which results in MessageWorkerTask::MessageWorkerTask.  All PassRefPtr automatically do this.

&gt;  Since SerializedScriptValue only grants read-only access to its single buffer member, it appears to be safe to reparent it to ThreadSafeRefCounted

We strongly prefer not to use ThreadSafeRefCounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447751</commentid>
    <comment_count>16</comment_count>
      <attachid>103152</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-07 08:32:11 -0700</bug_when>
    <thetext>Comment on attachment 103152
New patch with prefixed webkitPostMessage, initMessageEvent, *and* three style nits fixed

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

A few quick notes.

&gt; LayoutTests/fast/dom/Window/window-postmessage-args-expected.txt:20
&gt; +FAIL: Posting message (&apos;[object MessagePort]&apos;, [object MessagePort]) did not throw an exception

FAIL?

&gt; LayoutTests/platform/chromium/fast/dom/prototype-inheritance-expected.txt:832
&gt; +FAIL inner.webkitPostMessage.isInner should be true. Was false.

Why do we fail? Might be good in changelog.

&gt; Source/WebCore/bindings/js/JSDOMWindowCustom.cpp:715
&gt; +    window-&gt;impl()-&gt;postMessage(message, &amp;transferables, targetOrigin, activeDOMWindow(exec), ec);

You need a message.release() here, since you (correctly) change the PassRefPtr to a RefPtr above. This may be the cause of the assert that you are seeing.
(PassRefPtr automatically does this.)

&gt; Source/WebCore/bindings/js/JSMessagePortCustom.h:63
&gt; +        impl-&gt;postMessage(message, &amp;transferableArray, ec);

message.release()

&gt; Source/WebCore/bindings/js/SerializedScriptValue.h:58
&gt; +class SerializedScriptValue : public ThreadSafeRefCounted&lt;SerializedScriptValue&gt; {

Don&apos;t do this as mentioned in my note in the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447844</commentid>
    <comment_count>17</comment_count>
      <attachid>103152</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-07 23:05:58 -0700</bug_when>
    <thetext>Comment on attachment 103152
New patch with prefixed webkitPostMessage, initMessageEvent, *and* three style nits fixed

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

Just a few minor comments below. Other than that it looks fine to me.

&gt;&gt; LayoutTests/fast/dom/Window/window-postmessage-args-expected.txt:20
&gt;&gt; +FAIL: Posting message (&apos;[object MessagePort]&apos;, [object MessagePort]) did not throw an exception
&gt; 
&gt; FAIL?

I think I understand now but a note in the ChangeLog would be good (and make sure that we have filed a bug).

&gt; Source/WebCore/ChangeLog:14
&gt; +        - Add Transferable.h/cpp and TransferableReceipt.h/cpp

Not needed since this is already listed in the files below as new.

&gt; Source/WebCore/ChangeLog:33
&gt; +        - Reparented JSC&apos;s SerializedScriptValue to ThreadSafeRefCounted.

Remove this comment along with actually doing it :)

btw, these types of comments are best at the function file level below.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:4836
&gt; +		B8E0E8FF13EC7E5500C13720 /* TransferableReceipt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B8E0E8FC13EC7E0C00C13720 /* TransferableReceipt.cpp */; };

out of order.

&gt; Source/WebCore/bindings/js/JSDOMWindowCustom.cpp:697
&gt; +static JSValue metaPostMessage(ExecState* exec, JSDOMWindow* window, bool useLegacyBehavior)

I don&apos;t like the &quot;meta&quot; prefix on these function as I can&apos;t tell what it means by reading the function alone.

I would just drop it and let the function name be &quot;postMessage&quot;

Also the &quot;bool&quot; parameter should be an enum so that the calling site is more readable (instead of just saying &quot;true/false&quot;).

(These two comments apply in a few places.)

&gt; Source/WebCore/bindings/js/SerializedScriptValue.h:81
&gt; +    JSC::JSValue deserialize(JSC::ExecState*, JSC::JSGlobalObject*, TransferableArray* transferList = 0, SerializationErrorMode = Throwing);      

Does the param name &quot;transferList&quot; add any info? If not, please remove it.

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:2059
&gt; +    for (size_t i = 0; i &lt; receipts.size(); ++i)

I would ifdef out this for loop just to be sure it does nothing in release (and add UNUSED_PARAM(receipts);).

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.h:89
&gt; +    static String flattenReceiptList(const String&amp; data, const TransferableReceiptArray&amp; receipts);

Don&apos;t include param name &quot;receipts&quot; unless you think it adds info (I don&apos;t).

&gt; Source/WebCore/dom/MessagePort.cpp:82
&gt; +    // Make sure we aren&apos;t connected to any of the passed-in transferables.

connected doesn&apos;t make sense in the general context of transferables. I think this should still say &quot;ports&quot;.

&gt; Source/WebCore/dom/Transferable.h:30
&gt; +#include &quot;ExceptionCode.h&quot;

Typically folks just typedef ExceptionCode (if that is the only thing needed) instead of including this header.

&gt; Source/WebCore/dom/Transferable.h:32
&gt; +#include &lt;wtf/Forward.h&gt;

Is this header needed?

&gt; Source/WebCore/dom/Transferable.h:35
&gt; +#include &lt;wtf/PassRefPtr.h&gt;

Needed?

&gt; Source/WebCore/dom/Transferable.h:38
&gt; +#include &lt;wtf/text/AtomicStringHash.h&gt;

Needed?

&gt; Source/WebCore/dom/TransferableReceipt.h:32
&gt; +#include &lt;wtf/Forward.h&gt;

Needed?

&gt; Source/WebCore/dom/TransferableReceipt.h:38
&gt; +#include &lt;wtf/text/AtomicStringHash.h&gt;

Needed?

&gt; Source/WebCore/page/DOMWindow.idl:222
&gt; +        [DoNotCheckDomainSecurity, Custom] void postMessage(in SerializedScriptValue message, in [Optional] MessagePort transfer, in DOMString targetOrigin)

Why is this called transfer when the type is MessagePort?

&gt; Source/WebKit/chromium/public/WebMessagePortChannel.h:54
&gt; +    virtual WebMessagePortChannel* asWebMessagePortChannel() { return this; }

It looks like this used to be an interface until these two need methods. I wonder if they should really be here.

&gt; Source/WebKit/chromium/public/WebSerializedScriptValue.h:76
&gt; +                                                      const WebTransferableReceiptArray&amp; receipts,

receipts param name not needed.

&gt; Source/WebKit/chromium/public/WebTransferableReceipt.h:70
&gt; +#endif

Add a blank line here.

&gt; Source/WebKit/chromium/src/WebWorkerBase.cpp:370
&gt; +    for (size_t i = 0; i &lt; webReceipts.size(); ++i) {

No {} for single line statement.

&gt; Source/WebKit/chromium/src/WebWorkerBase.h:127
&gt; +        PassOwnPtr&lt;WebCore::TransferableReceiptArray&gt; receipts);

Param name receipts not needed. (Ditto for context above.)

&gt; Source/WebKit/chromium/src/WebWorkerClientImpl.h:76
&gt; +        PassOwnPtr&lt;WebCore::TransferableReceiptArray&gt; receipts);

Param name receipts not needed.

&gt; Source/WebKit/chromium/src/WebWorkerClientImpl.h:134
&gt; +                                               PassOwnPtr&lt;WebCore::TransferableReceiptArray&gt; receipts);

Param name receipts not needed. (Ditto for context above.)

&gt; Source/WebKit/chromium/src/WebWorkerClientImpl.h:144
&gt; +                                              PassOwnPtr&lt;WebCore::TransferableReceiptArray&gt; receipts);

Param name receipts not needed. (Ditto for context above.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447845</commentid>
    <comment_count>18</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-07 23:09:37 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; Also are we affecting the behavior of the js method MessageEvent::initMessageEvent?
&gt; 
&gt; There&apos;s a little bit of weirdness here and I&apos;m not sure what the standard intends. I am assuming that initMessageEvent exists to permit JavaScript to build MessageEvent objects without doing something overly complicated (eg hooking Window&apos;s onMessage handler). If this is the case, then the IDL given at (http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html) is too restrictive (in that portsArg is still a sequence&lt;MessagePort&gt; and not a sequence&lt;Transferable&gt;).
&gt; 
&gt; For this reason, the non-prefixed implementation has the same semantics as postMessage (only MessagePorts in portsArg, no reference equality between the ports list and the message); the prefixed implementation permits all Transferables in portsArg, meaning it&apos;s more liberal than the IDL version. If this is not the right thing to do it is easy enough to change.


Please bring this up on whatwg (regarding if the spec should change here for initMessageEvent). Dmitry Titov can give you some pointer here if you haven&apos;t sent such an email before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448239</commentid>
    <comment_count>19</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-08 13:38:50 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #12)
&gt; &gt; &gt; Also are we affecting the behavior of the js method MessageEvent::initMessageEvent?
&gt; &gt; 
&gt; &gt; There&apos;s a little bit of weirdness here and I&apos;m not sure what the standard intends. I am assuming that initMessageEvent exists to permit JavaScript to build MessageEvent objects without doing something overly complicated (eg hooking Window&apos;s onMessage handler). If this is the case, then the IDL given at (http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html) is too restrictive (in that portsArg is still a sequence&lt;MessagePort&gt; and not a sequence&lt;Transferable&gt;).
&gt; &gt; 
&gt; &gt; For this reason, the non-prefixed implementation has the same semantics as postMessage (only MessagePorts in portsArg, no reference equality between the ports list and the message); the prefixed implementation permits all Transferables in portsArg, meaning it&apos;s more liberal than the IDL version. If this is not the right thing to do it is easy enough to change.
&gt; 
&gt; 
&gt; Please bring this up on whatwg (regarding if the spec should change here for initMessageEvent). Dmitry Titov can give you some pointer here if you haven&apos;t sent such an email before.

Definitely feel free to bring this up on one of the mailing lists (I would suggest public-webapps, where the Transferable discussion occurred), but I am pretty sure the intent was not to change the spec for MessageEvent&apos;s initMessageEvent method. The &quot;ports&quot; array was intended to be only a legacy construct. Transferable objects were intended to be passed in the main object graph, not as a side array as in the previous MessagePort support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448299</commentid>
    <comment_count>20</comment_count>
      <attachid>103302</attachid>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-08 15:15:08 -0700</bug_when>
    <thetext>Created attachment 103302
Address comments.

In this revision I changed some conditions which would raise INVALID_STATE_ERR to instead raise DATA_CLONE_ERR to be in line with the spec. These were in particular:

--- a/Source/WebCore/bindings/js/JSMessagePortCustom.cpp
+++ b/Source/WebCore/bindings/js/JSMessagePortCustom.cpp
@@ -88,7 +88,7 @@ void fillTransferableArray(JSC::ExecState* exec, JSC::JSValue value, Transferabl
             return;
         // Validation of non-null objects, per HTML5 spec 8.3.3.
         if (value.isUndefinedOrNull()) {
-            setDOMException(exec, INVALID_STATE_ERR);
+            setDOMException(exec, DATA_CLONE_ERR);
             return;
         }
 
diff --git a/Source/WebCore/bindings/v8/custom/V8MessagePortCustom.cpp b/Source/WebCore/bindings/v8/custom/V8MessagePortCustom.cpp
index e8b63b3..f087236 100644
--- a/Source/WebCore/bindings/v8/custom/V8MessagePortCustom.cpp
+++ b/Source/WebCore/bindings/v8/custom/V8MessagePortCustom.cpp
@@ -106,7 +106,7 @@ bool getTransferableArray(v8::Local&lt;v8::Value&gt; value, TransferableArray&amp; transfe
         v8::Local&lt;v8::Value&gt; transferable = ports-&gt;Get(i);
         // Validation of non-null objects, per HTML5 spec 8.3.3.
         if (isUndefinedOrNull(transferable)) {
-            throwError(INVALID_STATE_ERR);
+            throwError(DATA_CLONE_ERR);
             return false;
         }
         // Validation of Objects implementing an interface, per WebIDL spec 4.1.15.
diff --git a/Source/WebCore/dom/MessagePort.cpp b/Source/WebCore/dom/MessagePort.cpp
index 59e5a0a..3d2eb4f 100644
--- a/Source/WebCore/dom/MessagePort.cpp
+++ b/Source/WebCore/dom/MessagePort.cpp
@@ -85,7 +85,7 @@ void MessagePort::postMessage(PassRefPtr&lt;SerializedScriptValue&gt; message, Transfe
             Transferable* transferable = (*transferables)[i].get();
             if (MessagePort* dataPort = transferable-&gt;asMessagePort()) {
                 if (dataPort == this || m_entangledChannel-&gt;isConnectedTo(dataPort)) {
-                    ec = INVALID_STATE_ERR;
+                    ec = DATA_CLONE_ERR;
                     return;
                 }
             }
diff --git a/Source/WebCore/dom/Transferable.cpp b/Source/WebCore/dom/Transferable.cpp
index 892e77e..972ee74 100644
--- a/Source/WebCore/dom/Transferable.cpp
+++ b/Source/WebCore/dom/Transferable.cpp
@@ -46,7 +46,7 @@ PassOwnPtr&lt;TransferableReceiptArray&gt; Transferable::transferAllOut(TransferableAr
     for (unsigned int i = 0; i &lt; transferables-&gt;size(); ++i) {
         Transferable* transferable = (*transferables)[i].get();
         if (!transferable || transferable-&gt;isTransferClosed() || transferableSet.contains(transferable)) {
-            ec = INVALID_STATE_ERR;
+            ec = DATA_CLONE_ERR;
             return nullptr;
         }
         transferableSet.add(transferable);

The no-release() bug in the JSC postMessage path appears to exist in the code prior to this patch; I&apos;ve looked around the code for similar problems, but it&apos;s still worth watching for. What&apos;s the motivation for the implicit RefPtr&lt;T&gt; -&gt; PassRefPtr&lt;T&gt; conversion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448300</commentid>
    <comment_count>21</comment_count>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-08 15:15:36 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 103152 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103152&amp;action=review
&gt;
&gt; &gt; LayoutTests/platform/chromium/fast/dom/prototype-inheritance-expected.txt:832
&gt; &gt; +FAIL inner.webkitPostMessage.isInner should be true. Was false.
&gt; 
&gt; Why do we fail? Might be good in changelog.

This appears to be some artifact of the way the V8 bindings work (note that previously postMessage had a similar line, as do some other properties, particularly those with special annotations). I&apos;ve added a note to the changelog saying as much.

(In reply to comment #17)
&gt; (From update of attachment 103152 [details])
&gt; &gt;&gt; LayoutTests/fast/dom/Window/window-postmessage-args-expected.txt:20
&gt; &gt;&gt; +FAIL: Posting message (&apos;[object MessagePort]&apos;, [object MessagePort]) did not throw an exception
&gt; &gt; 
&gt; &gt; FAIL?
&gt; 
&gt; I think I understand now but a note in the ChangeLog would be good (and make sure that we have filed a bug).

Added a note; I will also amend the existing bug at https://bugs.webkit.org/show_bug.cgi?id=65292 .

&gt; &gt; Source/WebKit/chromium/public/WebMessagePortChannel.h:54
&gt; &gt; +    virtual WebMessagePortChannel* asWebMessagePortChannel() { return this; }
&gt; 
&gt; It looks like this used to be an interface until these two need methods. I wonder if they should really be here.

Are there some implementations of WebMessagePortChannel where these methods&apos; behavior would be different?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448820</commentid>
    <comment_count>22</comment_count>
      <attachid>103302</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-08-09 14:42:44 -0700</bug_when>
    <thetext>Comment on attachment 103302
Address comments.

LGTM. I do not really have any comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448975</commentid>
    <comment_count>23</comment_count>
      <attachid>103302</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-09 22:17:05 -0700</bug_when>
    <thetext>Comment on attachment 103302
Address comments.

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

At this point, I have only some trivial nits. Other than those very minor things, it looks good to me.

Hopefully Oliver will weight in with any concerns about the changes to WebCore/bindings/js.

And Darin with any concerns about WebKit/chromium/public

&gt; LayoutTests/ChangeLog:13
&gt; +        Note that the default window-postmessage-args-expected contains a FAIL: line. The check that generates that line attempts to verify that non-prefixed postMessage disallows MessagePorts (or any other Transferables) from appearing in message bodies as mandated by the structured clone algorithm (modulo sending Transferables as part of the prefix). A bug relevant to this behavior is at https://bugs.webkit.org/show_bug.cgi?id=65292.

Please wrap this and put it as a comment after the line below that says &quot;fast/dom/Window/window-postmessage-args-expected.txt&quot;

&gt; LayoutTests/ChangeLog:15
&gt; +        prototype-inheritance-expected contains an extra FAIL: line for Chromium with regard to webkitPostMessage; this appears to be an artifact of the way bindings are generated, as a similar FAIL: line previously existed for plain postMessage.

Wrap the test and put it as a comment after the line below that says &quot; platform/chromium/fast/dom/prototype-inheritance-expected.txt&quot;

&gt; Source/WebCore/bindings/js/SerializedScriptValue.h:43
&gt; +typedef Vector&lt;RefPtr&lt;Transferable&gt;, 1&gt; TransferableArray;

I would put classes and then typedef&apos;s.

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:2056
&gt; +                                                 const TransferableReceiptArray&amp; receipts) {

This brace is in the wrong place. It should be on the next line.

&gt; Source/WebCore/dom/MessageEvent.cpp:31
&gt; +#include &quot;Transferable.h&quot;

These two headers are in the wrong place. They should be sorted with the other headers below.

&gt; Source/WebCore/page/DOMWindow.h:77
&gt; +    class Transferable;

Put the fwd class declarations by the other ones at line 68 (but leave the typedef&apos;s down here.)

&gt; Source/WebCore/storage/IDBCursor.h:69
&gt; +    TransferableArray* valueDependencies() const { return 0; }

Why does this need to be defined? (Who calls it? I couldn&apos;t find it. If it is unused, then just get rid of the changes to this file.)

&gt; Source/WebKit/chromium/public/WebWorker.h:40
&gt; +typedef WebVector&lt;class WebTransferableReceipt*&gt; WebTransferableReceiptArray;

I would put the typedef after the class fwd declarations.

&gt; Source/WebKit/chromium/public/WebWorkerClient.h:42
&gt; +typedef WebVector&lt;class WebTransferableReceipt*&gt; WebTransferableReceiptArray;

I would put typedef&apos;s after classes.

&gt; Source/WebKit/chromium/src/WebSerializedScriptValue.cpp:86
&gt; +                                                       size_t* unflattenableCount) {

Brace needs to be at the beginning of the next line for function definitions.

&gt; Source/WebKit/chromium/src/WebSerializedScriptValue.cpp:98
&gt; +    for (size_t i = 0; i &lt; receipts.size(); ++i)

This for loop should have braces since the statement has more than one physical line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449385</commentid>
    <comment_count>24</comment_count>
      <attachid>103532</attachid>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-10 13:58:53 -0700</bug_when>
    <thetext>Created attachment 103532
Address comments and rebase.

(In reply to comment #23)
&gt; &gt; Source/WebCore/storage/IDBCursor.h:69
&gt; &gt; +    TransferableArray* valueDependencies() const { return 0; }
&gt; 
&gt; Why does this need to be defined? (Who calls it? I couldn&apos;t find it. If it is unused, then just get rid of the changes to this file.)

This is called by autogenerated binding code (when encountering a SerializedScriptValue).

I&apos;ve also reviewed some constness changes that dimich pointed out offline and rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449388</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-08-10 14:04:59 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=103302&amp;action=review

&gt; Source/WebCore/bindings/js/JSMessageEventCustom.cpp:55
&gt; +    }

Is it possible for &apos;list&apos; to be empty at this point, and if so would it make sense to return jsNull().

&gt; Source/WebCore/dom/Transferable.h:39
&gt; +class ScriptExecutionContext;

are the forward decls of MessagePortChannel and ScriptExecutionContext needed?

&gt; Source/WebCore/dom/Transferable.h:61
&gt; +    virtual bool isTransferClosed() const = 0;

maybe wasTransferredOut()

&gt; Source/WebCore/dom/TransferableReceipt.cpp:41
&gt; +        (*transferableArray)[i] = (*receipts)[i]-&gt;transferIn((*receipts)[i].release(), context);

What if one fails to transferIn, is it ok to have NULL entries in the return value?

&gt; Source/WebCore/dom/TransferableReceipt.h:53
&gt; +class TransferableReceipt {

Naming nit: The term &apos;receipt&apos; feels like an awkward fit for this? A receipt is a record of a something having exchanged hands, not so much an in-transit representation. Maybe TransferToken or TransferableToken?

&gt; Source/WebKit/chromium/public/WebTransferableReceipt.h:43
&gt; +namespace WebCore {

can the forward decl also be behind the WEBKIT_IMPLEMETATION guard?

#if WEBKIT_IMPLEMENTATION
#include &lt;wtf/PassOwnPtr.h&gt;
#include &lt;wtf/RefPtr.h&gt;
#include &lt;wtf/Vector.h&gt;

namespace WebCore {
class TransferableReceipt;
typedef Vector&lt;OwnPtr&lt;TransferableReceipt&gt;, 1&gt; TransferableReceiptArray;
}
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449411</commentid>
    <comment_count>26</comment_count>
      <attachid>103532</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-08-10 14:50:49 -0700</bug_when>
    <thetext>Comment on attachment 103532
Address comments and rebase.

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

&gt; Source/WebCore/dom/MessagePort.cpp:86
&gt; +            if (MessagePort* dataPort = transferable-&gt;asMessagePort()) {

We&apos;re leaking the underlying &apos;type&apos;, can this be abstraced in the transferable interface?

transferable-&gt;CanBeTransferedOnPort(this);

&gt; Source/WebCore/dom/TransferableReceipt.h:53
&gt; +class TransferableReceipt {

Converting between Transferables and an in-transit representation (receipt) is handled by the new interfaces, but how is marshalling a &apos;receipt&apos; from one thread to another handled? Is it assumed that a &apos;receipt&apos; generated on one thread can be converted to a Transferable on another? If so comments to that affect would help.

&gt; Source/WebCore/dom/TransferableReceipt.h:58
&gt; +    virtual bool isFlattenable() const = 0;

Seems odd to have an isFlattenable() method with no corresponding flatten() or static unflatten() methods.

&gt; Source/WebCore/dom/TransferableReceipt.h:60
&gt; +    virtual PassRefPtr&lt;Transferable&gt; transferIn(PassOwnPtr&lt;TransferableReceipt&gt;, ScriptExecutionContext&amp;) = 0;

I don&apos;t understand why the transferIn takes a &apos;receipt&apos; as its first param, feels like transferIn should operate on &apos;this&apos; receipt?

&gt; Source/WebKit/chromium/src/WebSerializedScriptValue.cpp:90
&gt; +        if (!receipts[i]-&gt;isFlattenable())

How are messagePorts sent if their not flattened?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449440</commentid>
    <comment_count>27</comment_count>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-10 15:40:38 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103302&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSMessageEventCustom.cpp:55
&gt; &gt; +    }
&gt; 
&gt; Is it possible for &apos;list&apos; to be empty at this point,
Yes-- if there were Transferables passed but none were MessagePorts.

&gt; and if so would it make sense to return jsNull().
Maybe (see http://www.w3.org/Bugs/Public/show_bug.cgi?id=13675). Either we should return null to mean empty always or we should return an empty array to mean empty always. What do people think? (If we should return an empty array, what would be the proper call to make for JSC?)

&gt; &gt; Source/WebCore/dom/Transferable.h:61
&gt; &gt; +    virtual bool isTransferClosed() const = 0;
&gt; 
&gt; maybe wasTransferredOut()
OK

&gt; &gt; Source/WebCore/dom/TransferableReceipt.cpp:41
&gt; &gt; +        (*transferableArray)[i] = (*receipts)[i]-&gt;transferIn((*receipts)[i].release(), context);
&gt; 
&gt; What if one fails to transferIn, is it ok to have NULL entries in the return value?
You shouldn&apos;t fail to transferIn; I will add an assert.
 
&gt; &gt; Source/WebCore/dom/TransferableReceipt.h:53
&gt; &gt; +class TransferableReceipt {
&gt; 
&gt; Naming nit: The term &apos;receipt&apos; feels like an awkward fit for this? A receipt is a record of a something having exchanged hands, not so much an in-transit representation. Maybe TransferToken or TransferableToken?
I justify this as follows: when you transfer control of your bag at the airport you get a baggage claim receipt. At a more meticulous airline, you exchange the receipt for your bag once you arrive at your destination. Tokens and tickets make me think of security; &apos;record&apos; could be anything; &apos;promise&apos; is overloaded in the domain of concurrency concepts.

&gt; &gt; Source/WebKit/chromium/public/WebTransferableReceipt.h:43
&gt; &gt; +namespace WebCore {
&gt; 
&gt; can the forward decl also be behind the WEBKIT_IMPLEMETATION guard?
OK

(In reply to comment #26)
&gt; (From update of attachment 103532 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103532&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/MessagePort.cpp:86
&gt; &gt; +            if (MessagePort* dataPort = transferable-&gt;asMessagePort()) {
&gt; 
&gt; We&apos;re leaking the underlying &apos;type&apos;, can this be abstraced in the transferable interface?
&gt; 
&gt; transferable-&gt;CanBeTransferedOnPort(this);
This is tempting, but Transferable::asMessagePort() is also used in the implementation of MessageEvent.ports. Likewise, the ::as* methods in TransferableReceipt are needed for flattening; those methods in WebTransferableReceipt are needed for unflattenable objects. Since these objects represent parts of messages, I found it to be useful to keep most control with the mechanisms for message passing (eg, by allowing those mechanisms to pattern match over Transferables). In other words, my goal was to keep details about the message passing system hidden from the messages themselves.
&gt; 
&gt; &gt; Source/WebCore/dom/TransferableReceipt.h:53
&gt; &gt; +class TransferableReceipt {
&gt; 
&gt; Converting between Transferables and an in-transit representation (receipt) is handled by the new interfaces, but how is marshalling a &apos;receipt&apos; from one thread to another handled? Is it assumed that a &apos;receipt&apos; generated on one thread can be converted to a Transferable on another? If so comments to that affect would help.

Yes, it is assumed that a TransferableReceipt can be passed to another thread (but not to another process). I will amend the expository comment in TransferableReceipt.h.

&gt; &gt; Source/WebCore/dom/TransferableReceipt.h:58
&gt; &gt; +    virtual bool isFlattenable() const = 0;
&gt; 
&gt; Seems odd to have an isFlattenable() method with no corresponding flatten() or static unflatten() methods.

This happens as part of the implementation of SerializedScriptValue&apos;s ::flattenReceiptList static method (as an analog to ArrayBuffer&apos;s lack of a ::serialize or ::deserialize method). On further review it seems like isFlattenable() should become a static member of SerializedScriptValue.

&gt; &gt; Source/WebCore/dom/TransferableReceipt.h:60
&gt; &gt; +    virtual PassRefPtr&lt;Transferable&gt; transferIn(PassOwnPtr&lt;TransferableReceipt&gt;, ScriptExecutionContext&amp;) = 0;
&gt; 
&gt; I don&apos;t understand why the transferIn takes a &apos;receipt&apos; as its first param, feels like transferIn should operate on &apos;this&apos; receipt?

transferIn adopts control of the TransferableReceipt (which is why it accepts it as a PassOwnPtr). This is not a static method so that it can dispatch on the TransferableReceipt type to choose the correct transferIn.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebSerializedScriptValue.cpp:90
&gt; &gt; +        if (!receipts[i]-&gt;isFlattenable())
&gt; 
&gt; How are messagePorts sent if their not flattened?

A Transferable object not being flattenable implies that it needs special handling when being sent across process boundaries. See http://codereview.chromium.org/7477027/patch/18001/19004 for what happens in Chromium for this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449568</commentid>
    <comment_count>28</comment_count>
      <attachid>103532</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-08-10 20:23:22 -0700</bug_when>
    <thetext>Comment on attachment 103532
Address comments and rebase.

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

&gt;&gt; Source/WebCore/bindings/js/JSMessageEventCustom.cpp:55
&gt;&gt; +    }
&gt; 
&gt; Yes-- if there were Transferables passed but none were MessagePorts.

line 50 returns jsNull() in a similar case

&gt;&gt;&gt; Source/WebCore/dom/MessagePort.cpp:86
&gt;&gt;&gt; +            if (MessagePort* dataPort = transferable-&gt;asMessagePort()) {
&gt;&gt; 
&gt;&gt; We&apos;re leaking the underlying &apos;type&apos;, can this be abstraced in the transferable interface?
&gt;&gt; 
&gt;&gt; transferable-&gt;CanBeTransferedOnPort(this);
&gt; 
&gt; This is tempting, but Transferable::asMessagePort() is also used in the implementation of MessageEvent.ports. Likewise, the ::as* methods in TransferableReceipt are needed for flattening; those methods in WebTransferableReceipt are needed for unflattenable objects. Since these objects represent parts of messages, I found it to be useful to keep most control with the mechanisms for message passing (eg, by allowing those mechanisms to pattern match over Transferables). In other words, my goal was to keep details about the message passing system hidden from the messages themselves.

I see, so from webcore&apos;s point of view, a TransferableReceipt created on one thread has to be redeemable on another thread, and that&apos;s all that is needed in the absence of IPC.

&gt;&gt;&gt; Source/WebCore/dom/TransferableReceipt.h:58
&gt;&gt;&gt; +    virtual bool isFlattenable() const = 0;
&gt;&gt; 
&gt;&gt; Seems odd to have an isFlattenable() method with no corresponding flatten() or static unflatten() methods.
&gt; 
&gt; This happens as part of the implementation of SerializedScriptValue&apos;s ::flattenReceiptList static method (as an analog to ArrayBuffer&apos;s lack of a ::serialize or ::deserialize method). On further review it seems like isFlattenable() should become a static member of SerializedScriptValue.

That seems more consistent with your goal of keeping message passing details out of this interface.

&gt;&gt;&gt; Source/WebCore/dom/TransferableReceipt.h:60
&gt;&gt;&gt; +    virtual PassRefPtr&lt;Transferable&gt; transferIn(PassOwnPtr&lt;TransferableReceipt&gt;, ScriptExecutionContext&amp;) = 0;
&gt;&gt; 
&gt;&gt; I don&apos;t understand why the transferIn takes a &apos;receipt&apos; as its first param, feels like transferIn should operate on &apos;this&apos; receipt?
&gt; 
&gt; transferIn adopts control of the TransferableReceipt (which is why it accepts it as a PassOwnPtr). This is not a static method so that it can dispatch on the TransferableReceipt type to choose the correct transferIn.

I see, because transferring in conceptually involves destroying the receipt, but in the MessagePort case you don&apos;t actually want to destroy the channel since it gets wrapped up (or entangled if you prefer the technical term:) with the resulting MessagePort.

This is an odd interface for an instance method from a callers point of view.

   OwnPtr&lt;&gt; receipt;
   receipt-&gt;transferIn(receipt.release());

Maybe static PRP&lt;Transferable&gt; TransferableReceipt::transferIn(PassOwnPtr&lt;&gt; receipt) which calls a private virtual instance method that has the semantics you want for this?

Or instead of having the &apos;receipt&apos; type being a MessagePortChannel, have a MessagePortTransferrableReceipt which holds the channel up until transferIn time. After transferIn time, it could be deleted without breaking the resulting MessagePort. I think that might allow a cleaner API for these base classes.

   OwnPtr&lt;&gt; receipt;
   receipt-&gt;transferIn(context);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450153</commentid>
    <comment_count>29</comment_count>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-11 16:40:26 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 103532 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103532&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/bindings/js/JSMessageEventCustom.cpp:55
&gt; &gt;&gt; +    }
&gt; &gt; 
&gt; &gt; Yes-- if there were Transferables passed but none were MessagePorts.
&gt; 
&gt; line 50 returns jsNull() in a similar case

I&apos;ve gone ahead and changed both the JSC and V8 sides to return empty arrays instead of null here.

Something interesting came up when I posted about initMessageEvent to public-webapps: what was the rationale for using SerializedScriptValue in initMessageEvent() in the first place? When I first read through the code I thought this came as a result of

&quot;The initMessageEvent() method must initialize the event in a manner analogous to the similarly-named method in the DOM Events interfaces. [DOMEVENTS]&quot;

-- but when I went back just now to verify this, I was unable to find any mention of MessageEvent in the [DOMEVENTS] citation.

&gt; Or instead of having the &apos;receipt&apos; type being a MessagePortChannel, have a MessagePortTransferrableReceipt which holds the channel up until transferIn time. After transferIn time, it could be deleted without breaking the resulting MessagePort. I think that might allow a cleaner API for these base classes.
&gt; 
&gt;    OwnPtr&lt;&gt; receipt;
&gt;    receipt-&gt;transferIn(context);

This makes sense. In the patch I was attempting to change as little of the semantics/rules of ownership as possible, hence the strangeness here. What are your feelings about WebMessagePortChannel/WebTransferableReceipt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450511</commentid>
    <comment_count>30</comment_count>
      <attachid>103532</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-12 11:02:39 -0700</bug_when>
    <thetext>Comment on attachment 103532
Address comments and rebase.

btw, the style for the Chromium files is to arrange the methods in the cpp file in the same order as they are declared in the header file. The files under the Source/WebKit/chromium directory should follow this convention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452469</commentid>
    <comment_count>31</comment_count>
      <attachid>104212</attachid>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-17 12:24:37 -0700</bug_when>
    <thetext>Created attachment 104212
Address comments; add a ScriptExecutionContext* argument to transferOut.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452638</commentid>
    <comment_count>32</comment_count>
      <attachid>104212</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-08-17 15:21:39 -0700</bug_when>
    <thetext>Comment on attachment 104212
Address comments; add a ScriptExecutionContext* argument to transferOut.

Thanx for putting this stuff together.

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

&gt; Source/WebCore/ChangeLog:19
&gt; +            - Transferring out a MessagePort yields a MessagePortChannelTransferableReceipt.

The thing that&apos;s being transferred out is a &apos;port&apos;. Would it make more sense to yield a &apos;portReceipt&apos;, 
MessagePortReceipt or MessagePortTransferableReceipt?

&gt; Source/WebCore/dom/MessagePortChannel.cpp:51
&gt; +{

maybe ASSERT(m_messagePortChannel)

&gt; Source/WebCore/dom/MessagePortChannel.h:120
&gt; +        MessagePortChannel* messagePortChannel() const { return m_messagePortChannel.get(); }

Is this actually needed in the public interface? I don&apos;t see a caller for it. If not consider removing it.

&gt; Source/WebKit/chromium/public/WebMessagePortChannel.h:45
&gt; +class WebMessagePortChannel : public WebTransferableReceipt {

Having PortChannel derived from Receipt seems like a shortcut. Should we introduce a WebMessagePortReceipt in the webkit api too?

I don&apos;t know about others, but to me it&apos;s pretty challenging to follow the logic of the transferable/receipt handling stuff from end-to-end. Seeing that the channel ISA receipt makes it more confusing since sometimes its being treated as a channel and other times its being treated as a receipt, but its not actually usable as both at the same time (afaik). But the interfaces may lead you to believe something else. (Or maybe i&apos;m mistaken about why this derivation is here).

&gt; Source/WebKit/chromium/public/WebTransferableReceipt.h:57
&gt; +    virtual WebMessagePortChannel* asWebMessagePortChannel() { return 0; }

If you buy that previous comment, this should probably be something like asMessagePortReceipt()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452719</commentid>
    <comment_count>33</comment_count>
      <attachid>104212</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-17 16:37:46 -0700</bug_when>
    <thetext>Comment on attachment 104212
Address comments; add a ScriptExecutionContext* argument to transferOut.

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

&gt; Source/WebKit/chromium/public/WebMessagePortChannel.h:52
&gt; +    virtual void postMessage(const WebString&amp;, WebTransferableReceiptArray*) = 0;

why is the second parameter non-const?  it seems like it should be passed as |const Foo&amp;| since you don&apos;t expect postMessage to mutate the array.

&gt; Source/WebKit/chromium/public/WebMessagePortChannel.h:54
&gt; +    virtual WebMessagePortChannel* asWebMessagePortChannel() { return this; }

you may need to export this function since you are implementing it.  it may need to be tagged with WEBKIT_EXPORT.  please make sure that the component=shared_library build does not break.

&gt; Source/WebKit/chromium/public/WebSerializedScriptValue.h:72
&gt; +    WEBKIT_EXPORT static bool isFlattenable(WebTransferableReceipt*);

Why isn&apos;t this a member function of WebTransferableReceipt?  It seems like
something that should be a property.

&gt; Source/WebKit/chromium/public/WebSerializedScriptValue.h:77
&gt; +    WEBKIT_EXPORT static WebString flattenReceiptList(const WebString&amp;,

this function is really quite confusing to me... reading the comment, it is
not so obvious what this function will do.

i thought after we chatted the other day that the plan was to do this final
flattening at the chromium level.  maybe i misunderstood something.

&gt; Source/WebKit/chromium/public/WebTransferableReceipt.h:57
&gt; +    virtual WebMessagePortChannel* asWebMessagePortChannel() { return 0; }

perhaps you should use the approach that we use for casting WebElement to WebInputElement?
define a global function in WebMessagePortChannel.h:

  WEBKIT_EXPORT WebMessagePortChannel* toWebMessagePortChannel(WebTransferableReceipt*);

we don&apos;t use the asFoo approach to RTTI anywhere else in the WebKit API, but we do use
the toFoo approach.  seems like we should be consistent.

&gt; Source/WebKit/chromium/public/WebTransferableReceipt.h:64
&gt; +    static PassOwnPtr&lt;WebCore::TransferableReceipt&gt; fromWeb(WebTransferableReceipt*);

Perhaps these would be better as global functions:

  PassOwnPtr&lt;WebCore::TransferableReceipt&gt; toTransferableReceipt(WebTransferableReceipt*);

&gt; Source/WebKit/chromium/src/WebSerializedScriptValue.cpp:78
&gt; +    for (size_t i = 0; i &lt; receipts.size(); ++i) {

it seems like this workload of determining the unflattenable count could be
done by the embedder too.

it is interesting that SerializedScriptValue::flattenReceiptList does not
similarly determine the unflattenable count.  this seems to indicate that
it should not be done by the WebKit API either.  complexity should either
be in WebCore or in Chromium, not in the WebKit &quot;API glue&quot; layer.

&gt; Source/WebKit/chromium/src/WebSerializedScriptValue.cpp:93
&gt; +    return WebCore::SerializedScriptValue::flattenReceiptList(message, *coreReceipts);

no need for the WebCore:: prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454008</commentid>
    <comment_count>34</comment_count>
      <attachid>104550</attachid>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-19 13:10:30 -0700</bug_when>
    <thetext>Created attachment 104550
Address comments; add explicit receipts in WebKit API

(In reply to comment #32)
&gt; (From update of attachment 104212 [details])
&gt; Thanx for putting this stuff together.
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104212&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +            - Transferring out a MessagePort yields a MessagePortChannelTransferableReceipt.
&gt; 
&gt; The thing that&apos;s being transferred out is a &apos;port&apos;. Would it make more sense to yield a &apos;portReceipt&apos;, 
&gt; MessagePortReceipt or MessagePortTransferableReceipt?

OK (MessagePortReceipt).

&gt; &gt; Source/WebCore/dom/MessagePortChannel.cpp:51
&gt; &gt; +{
&gt; 
&gt; maybe ASSERT(m_messagePortChannel)

OK.

&gt; &gt; Source/WebCore/dom/MessagePortChannel.h:120
&gt; &gt; +        MessagePortChannel* messagePortChannel() const { return m_messagePortChannel.get(); }
&gt; 
&gt; Is this actually needed in the public interface? I don&apos;t see a caller for it. If not consider removing it.

Yes; it is used by the API layer (WebTransferableReceipt).

&gt; &gt; Source/WebKit/chromium/public/WebMessagePortChannel.h:45
&gt; &gt; +class WebMessagePortChannel : public WebTransferableReceipt {
&gt; 
&gt; Having PortChannel derived from Receipt seems like a shortcut. Should we introduce a WebMessagePortReceipt in the webkit api too?
&gt; 
&gt; I don&apos;t know about others, but to me it&apos;s pretty challenging to follow the logic of the transferable/receipt handling stuff from end-to-end. Seeing that the channel ISA receipt makes it more confusing since sometimes its being treated as a channel and other times its being treated as a receipt, but its not actually usable as both at the same time (afaik). But the interfaces may lead you to believe something else. (Or maybe i&apos;m mistaken about why this derivation is here).
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTransferableReceipt.h:57
&gt; &gt; +    virtual WebMessagePortChannel* asWebMessagePortChannel() { return 0; }
&gt; 
&gt; If you buy that previous comment, this should probably be something like asMessagePortReceipt()

OK. Embedders are responsible for deleting receipts (as well as the array returned by toWebAll, but this was already the case before).

(In reply to comment #33)
&gt; (From update of attachment 104212 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104212&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebMessagePortChannel.h:52
&gt; &gt; +    virtual void postMessage(const WebString&amp;, WebTransferableReceiptArray*) = 0;
&gt; 
&gt; why is the second parameter non-const?  it seems like it should be passed as |const Foo&amp;| since you don&apos;t expect postMessage to mutate the array.

The second parameter may be NULL; since the receiver is responsible for the vector, it must deallocate the receipts contained therein.

&gt; &gt; Source/WebKit/chromium/public/WebSerializedScriptValue.h:72
&gt; &gt; +    WEBKIT_EXPORT static bool isFlattenable(WebTransferableReceipt*);
&gt; 
&gt; Why isn&apos;t this a member function of WebTransferableReceipt?  It seems like
&gt; something that should be a property.

This is part of the mechanism for serialization, so I added it here. (WebTransferableReceipts don&apos;t
flatten themselves; WebSerializedScriptValue flattens them. It&apos;s a question asked of the latter
interface: do you flatten this receipt?)

&gt; &gt; Source/WebKit/chromium/public/WebSerializedScriptValue.h:77
&gt; &gt; +    WEBKIT_EXPORT static WebString flattenReceiptList(const WebString&amp;,
&gt; 
&gt; this function is really quite confusing to me... reading the comment, it is
&gt; not so obvious what this function will do.
&gt; 
&gt; i thought after we chatted the other day that the plan was to do this final
&gt; flattening at the chromium level.  maybe i misunderstood something.

Yes, but since the operation of flattening is a form of serialization, it is implemented
as part of the serializer. The final flattening is requested at the Chromium level using
this interface. At the point where flattening is requested, the message has been reduced
to a WebString (see webworkerclient_proxy.cc&apos;s postMessageToWorkerObject for an example).

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebMessagePortChannel.h:54
&gt; &gt; +    virtual WebMessagePortChannel* asWebMessagePortChannel() { return this; }
&gt; 
&gt; you may need to export this function since you are implementing it.  it may need to be tagged with WEBKIT_EXPORT.  please make sure that the component=shared_library build does not break.
&gt;
&gt; &gt; Source/WebKit/chromium/public/WebTransferableReceipt.h:57
&gt; &gt; +    virtual WebMessagePortChannel* asWebMessagePortChannel() { return 0; }
&gt; 
&gt; perhaps you should use the approach that we use for casting WebElement to WebInputElement?
&gt; define a global function in WebMessagePortChannel.h:
&gt; 
&gt;   WEBKIT_EXPORT WebMessagePortChannel* toWebMessagePortChannel(WebTransferableReceipt*);
&gt; 
&gt; we don&apos;t use the asFoo approach to RTTI anywhere else in the WebKit API, but we do use
&gt; the toFoo approach.  seems like we should be consistent.

OK (modulo the component=shared_library check-- I can&apos;t build this on my machine because it is a Mac (?))

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTransferableReceipt.h:64
&gt; &gt; +    static PassOwnPtr&lt;WebCore::TransferableReceipt&gt; fromWeb(WebTransferableReceipt*);
&gt; 
&gt; Perhaps these would be better as global functions:
&gt; 
&gt;   PassOwnPtr&lt;WebCore::TransferableReceipt&gt; toTransferableReceipt(WebTransferableReceipt*);
&gt; 

OK

&gt; &gt; Source/WebKit/chromium/src/WebSerializedScriptValue.cpp:78
&gt; &gt; +    for (size_t i = 0; i &lt; receipts.size(); ++i) {
&gt; 
&gt; it seems like this workload of determining the unflattenable count could be
&gt; done by the embedder too.
&gt; 
&gt; it is interesting that SerializedScriptValue::flattenReceiptList does not
&gt; similarly determine the unflattenable count.  this seems to indicate that
&gt; it should not be done by the WebKit API either.  complexity should either
&gt; be in WebCore or in Chromium, not in the WebKit &quot;API glue&quot; layer.

The embedder needs access to the number of unflattenable objects because it needs to
perform allocations with sizes that are determined by that number. Again, see
webworkerclient_proxy.cc: we have made the determination that we&apos;re going to be doing IPC,
so we issue an API request to flatten our message (which is at this point a simple WebString).
WebSerializedScriptValue::flattenReceiptList walks through the list of receipts and
shuffles those that need to be flattened back over to WebCore, which contains the serialization
logic necessary to actually change the message body. Nothing is done to unflattenable receipts
(no memory allocation, even); we don&apos;t (eg) wrap a WebMessagePortChannel to later ignore it.
After the new message is returned, we do whatever platform-specific task is necessary to
deal with the remaining unflattenables (here, we copy message port and routing IDs). While
we could certainly walk over the list in the embedder a second time--or just push_back onto the
vectors of ints--there&apos;s no harm in returning the number of unflattenable objects given that
it should be useful to almost any embedder that is calling flattenReceiptList.

&gt; &gt; Source/WebKit/chromium/src/WebSerializedScriptValue.cpp:93
&gt; &gt; +    return WebCore::SerializedScriptValue::flattenReceiptList(message, *coreReceipts);
&gt; 
&gt; no need for the WebCore:: prefix.

OK

Additional changes:

Added logic in Transferable::transferAllOut to deal with Transferables that fail to transfer out (eg, MessagePorts with no entanglements).
Added logic in JSC SerializedScriptValue to prevent non-Transferred MessagePorts from appearing in message bodies; also added logic to prevent them from appearing in message bodies in legacy postMessage mode (normalizing with V8).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102062</attachid>
            <date>2011-07-26 15:30:47 -0700</date>
            <delta_ts>2011-07-29 15:48:41 -0700</delta_ts>
            <desc>Dump of tree state.</desc>
            <filename>postmessage-webkit.patch</filename>
            <type>text/plain</type>
            <size>154729</size>
            <attacher name="Luke Zarko">lukezarko+bugzilla</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
YXJncy1leHBlY3RlZC50eHQKaW5kZXggNWVjZTg0MS4uYWNkNzRhYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9z
dG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3Rl
ZC50eHQKQEAgLTEsOCArMSw4IEBACiBUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3
aW5kb3cucG9zdE1lc3NhZ2UgaXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBp
cyBub3QgYSBtZXNzYWdlIHBvcnQuIFlvdSBzaG91bGQgc2VlIFBBU1MgbWVzc2FnZSAnMScgdGhy
b3VnaCAnNycsIGZvbGxvd2VkIGJ5ICdkb25lJywgd2l0aCBtZXNzYWdlcyA0LTcgcmVjZWl2ZWQg
YmVsb3cuCiAKLVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzEnLCAxKTogdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdAot
UEFTUzogUG9zdGluZyBtZXNzYWdlICgnMicsICk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKLVBBU1M6IFBvc3Rp
bmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlCitQ
QVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFRyYW5zZmVyYWJsZUFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0CitQQVNTOiBQb3N0
aW5nIG1lc3NhZ2UgKCcyJywgKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJh
YmxlQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKK1BBU1M6IFBvc3RpbmcgbWVzc2Fn
ZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFu
c2ZlcmFibGVBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZQogUEFTUzogUG9z
dGluZyBtZXNzYWdlICgnNCcsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBl
eGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzUnLCBudWxsKSBkaWQgbm90IHRocm93
IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNicsIHVuZGVmaW5lZCkgZGlk
IG5vdCB0aHJvdyBhbiBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKaW5kZXggNWVjZTg0MS4u
YWNkNzRhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw4IEBACiBUZXN0IHRoYXQg
dGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cucG9zdE1lc3NhZ2UgaXMgaWdub3JlZCBvciB0
cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBpcyBub3QgYSBtZXNzYWdlIHBvcnQuIFlvdSBzaG91bGQg
c2VlIFBBU1MgbWVzc2FnZSAnMScgdGhyb3VnaCAnNycsIGZvbGxvd2VkIGJ5ICdkb25lJywgd2l0
aCBtZXNzYWdlcyA0LTcgcmVjZWl2ZWQgYmVsb3cuCiAKLVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAo
JzEnLCAxKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1
bWVudCBtdXN0IGJlIGFuIG9iamVjdAotUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMicsICk6IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBi
ZSBhbiBvYmplY3QKLVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0p
OiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IGhh
cyBubyBsZW5ndGggYXR0cmlidXRlCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyYWJsZUFycmF5IGFyZ3VtZW50IG11c3Qg
YmUgYW4gb2JqZWN0CitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcyJywgKTogdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmpl
Y3QKK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlcmFibGVBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVu
Z3RoIGF0dHJpYnV0ZQogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNCcsIFtvYmplY3QgRE9NV2lu
ZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAo
JzUnLCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNz
YWdlICgnNicsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggYWNkMmMyOC4uZWZjYmM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTU4OSw2ICs1ODksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1RvdWNoLmNwcAog
ICAgIGRvbS9Ub3VjaEV2ZW50LmNwcAogICAgIGRvbS9Ub3VjaExpc3QuY3BwCisgICAgZG9tL1Ry
YW5zZmVyYWJsZS5jcHAKICAgICBkb20vVHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHAKICAgICBk
b20vVHJhdmVyc2FsLmNwcAogICAgIGRvbS9UcmVlU2NvcGUuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCBkNTRiOWQzLi41NGM2ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTEyOTcsNiArMTI5Nyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudElucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hMaXN0LmggXAorCVNvdXJjZS9X
ZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNm
ZXJhYmxlLmggXAkKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlLmggXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9UcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL1RyYXZlcnNhbC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBhNDk2ODgx
Li43YjY5NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTYwLDggKzU2MCw4IEBAIF9fWk43
V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50QzFFUDdOU0V2ZW50CiBfX1pON1dlYkNvcmUy
MVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJj
ZUxvYWRQcmlvcml0eUUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjRzY2hl
ZHVsZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQTlNfMzJOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQogX19aTjdXZWJDb3JlMjFTVkdE
b2N1bWVudEV4dGVuc2lvbnMyMXNhbXBsZUFuaW1hdGlvbkF0VGltZUVSS04zV1RGNlN0cmluZ0VQ
TlNfMTRTVkdTTUlMRWxlbWVudEVkCi1fX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTExZGVzZXJpYWxpemVFUEsxNU9wYXF1ZUpTQ29udGV4dFBQSzEzT3BhcXVlSlNWYWx1ZQotX19a
TjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBLMTVPcGFxdWVKU0NvbnRl
eHRQSzEzT3BhcXVlSlNWYWx1ZVBTNl8KK19fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZh
bHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVlSlNDb250ZXh0UFBLMTNPcGFxdWVKU1ZhbHVlUE4z
V1RGNlZlY3RvcklTNl9MbTFFRUUKK19fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVl
NmNyZWF0ZUVQSzE1T3BhcXVlSlNDb250ZXh0UEsxM09wYXF1ZUpTVmFsdWVQUzZfUE4zV1RGNlZl
Y3RvcklTNl9MbTFFRUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlQzFFUk4z
V1RGNlZlY3RvckloTG0wRUVFCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQx
RXYKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0ZXJuNXBhcnNlRVJLTjNXVEY2U3Ry
aW5nRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDM5OWJkZTYuLjE4NmQxOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTU1NSw2ICs1NTUsNyBAQAogICAgICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50Lmgn
LAogICAgICAgICAgICAgJ2RvbS9UZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0RXZlbnRJ
bnB1dFR5cGUuaCcsCisgICAgICAgICAgICAnZG9tL1RyYW5zZmVyYWJsZS5oJywKICAgICAgICAg
ICAgICdkb20vVUlFdmVudC5oJywKICAgICAgICAgICAgICdkb20vVUlFdmVudFdpdGhLZXlTdGF0
ZS5oJywKICAgICAgICAgICAgICdkb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaCcsCkBAIC0yNjIw
LDYgKzI2MjEsOCBAQAogICAgICAgICAgICAgJ2RvbS9Ub3VjaEV2ZW50LmgnLAogICAgICAgICAg
ICAgJ2RvbS9Ub3VjaExpc3QuY3BwJywKICAgICAgICAgICAgICdkb20vVG91Y2hMaXN0LmgnLAor
ICAgICAgICAgICAgJ2RvbS9UcmFuc2ZlcmFibGUuY3BwJywKKyAgICAgICAgICAgICdkb20vVHJh
bnNmZXJhYmxlLmgnLAogICAgICAgICAgICAgJ2RvbS9UcmFuc2Zvcm1Tb3VyY2UuaCcsCiAgICAg
ICAgICAgICAnZG9tL1RyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwJywKICAgICAgICAgICAgICdk
b20vVHJhbnNmb3JtU291cmNlUXQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMGFhMzMwNC4uMzVm
ZGFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTU1MCw2ICs1NTAsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBkb20vVG91Y2guY3BwIFwKICAgICBkb20vVG91Y2hFdmVudC5jcHAgXAogICAgIGRvbS9Ub3Vj
aExpc3QuY3BwIFwKKyAgICBkb20vVHJhbnNmZXJhYmxlLmNwcCBcCiAgICAgZG9tL1RyYXZlcnNh
bC5jcHAgXAogICAgIGRvbS9UcmVlU2NvcGUuY3BwIFwKICAgICBkb20vVHJlZVdhbGtlci5jcHAg
XApAQCAtMTUzNSw2ICsxNTM2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL1RvdWNoLmggXAog
ICAgIGRvbS9Ub3VjaEV2ZW50LmggXAogICAgIGRvbS9Ub3VjaExpc3QuaCBcCisgICAgZG9tL1Ry
YW5zZmVyYWJsZS5oIFwKICAgICBkb20vVHJhbnNmb3JtU291cmNlLmggXAogICAgIGRvbS9UcmF2
ZXJzYWwuaCBcCiAgICAgZG9tL1RyZWVEZXB0aExpbWl0LmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhYTc4YzIuLmZmOTQy
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ4MDQsNiArNDgwNCw4IEBACiAJCUI3MzRCMTgxMTE5Qjk5MTEwMDY1ODdCRCAv
KiBGb250VHJhbnNjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNzM0QjE4MDExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3Bw
ICovOyB9OwogCQlCNzM0QjE4MzExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3MzRCMTgyMTE5
Qjk5MUQwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5oICovOyB9OwogCQlCNzc2RDQzRDExMDQ1
Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENv
bnRleHQuY3BwICovOyB9OworCQlCODYxODcyQzEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJh
YmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4
NjE4NzJBMTNEOEVDNDkwMDhCODc0RiAvKiBUcmFuc2ZlcmFibGUuY3BwICovOyB9OworCQlCODYx
ODcyRDEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCODYxODcyQjEzRDhFQzQ5MDA4Qjg3NEYgLyog
VHJhbnNmZXJhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQjg4NUU4RDQxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCODg1RThEMjExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmNwcCAqLzsgfTsKIAkJQjg4NUU4RDUxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjg4NUU4RDMxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07
CiAJCUI4REJEQjRCMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4REJEQjQ3MTMw
QjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmNwcCAqLzsgfTsKQEAgLTExNDU3
LDYgKzExNDU5LDggQEAKIAkJQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2Nv
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZvbnRUcmFuc2NvZGVyLmg7
IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRDb250ZXh0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjg2MTg3MkExM0Q4RUM0OTAwOEI4
NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUcmFuc2ZlcmFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCODYx
ODcyQjEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRyYW5zZmVyYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCODg1RThEMjExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUI4ODVFOEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4REJEQjQ3MTMw
QjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTk5MjMsNiArMTk5MjcsOCBAQAogCQkJCTkzM0ExNDJEMEI3
RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuaCAqLywKIAkJCQk5MzNBMTQyQzBCN0QxODg2MDBB
NTNGRkQgLyogVGV4dEV2ZW50LmlkbCAqLywKIAkJCQlBNzdCNDE5RjEyRTY3NUE5MDA1NDM0M0Qg
LyogVGV4dEV2ZW50SW5wdXRUeXBlLmggKi8sCisJCQkJQjg2MTg3MkIxM0Q4RUM0OTAwOEI4NzRG
IC8qIFRyYW5zZmVyYWJsZS5oICovLAorCQkJCUI4NjE4NzJBMTNEOEVDNDkwMDhCODc0RiAvKiBU
cmFuc2ZlcmFibGUuY3BwICovLAogCQkJCTVEQjFCQzY4MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFu
c2Zvcm1Tb3VyY2UuaCAqLywKIAkJCQk1REIxQkM2OTEwNzE1QTY0MDBFRkFBNDkgLyogVHJhbnNm
b3JtU291cmNlTGlieHNsdC5jcHAgKi8sCiAJCQkJODU0RkU3MkMwQTIyOTdCRTAwNThEN0FEIC8q
IFRyYXZlcnNhbC5jcHAgKi8sCkBAIC0yMzA4MSw2ICsyMzA4Nyw3IEBACiAJCQkJOTMwNUIyNEQw
OThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNCMDBD
RDYzMzEwMDBGQURBNzUgLyogVGltZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEy
QUUwRUZBQzkwNjAwOUQwQ0FGIC8qIFRpbWluZ0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCODYxODcyRDEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNFMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zv
cm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQwMEVGODZENDcwMDlEMENB
RiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTI1ODk5LDYgKzI1
OTA2LDcgQEAKIAkJCQk3NTUzQ0ZFOTEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRG
YWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RUE0MDk5RUI3OEMwMDU2RTU4MSAv
KiBUaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNBRjBDRDYzMzEwMDBGQURBNzUg
LyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCODYxODcyQzEzRDhFQzQ5MDA4
Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUMzMEVG
ODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0OTRCQzQwRDEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNm
b3JtYXRpb25NYXRyaXhDRy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA4NjhjNmNjLi5kNmZlNDc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC02OTYsMTQgKzY5NiwxNCBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxE
aWFsb2coRXhlY1N0YXRlKiBleGVjKQogCiBKU1ZhbHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2Fn
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5h
cmd1bWVudCgwKSk7Ci0KKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVzOworICAg
IEpTVmFsdWVSZWZBcnJheSB2YWx1ZVJlZkFycmF5OworICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPiAyKQorICAgICAgICBmaWxsVHJhbnNmZXJhYmxlQXJyYXkoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMSksIHRyYW5zZmVyYWJsZXMsIHZhbHVlUmVmQXJyYXkpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBNZXNz
YWdlUG9ydEFycmF5IG1lc3NhZ2VQb3J0czsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
ID4gMikKLSAgICAgICAgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoZXhlYywgZXhlYy0+YXJndW1lbnQo
MSksIG1lc3NhZ2VQb3J0cyk7CisgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1
bWVudCgwKSwgJnZhbHVlUmVmQXJyYXkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTcxMiw3ICs3MTIsNyBAQCBKU1Zh
bHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1w
bCgpLT5wb3N0TWVzc2FnZShtZXNzYWdlLCAmbWVzc2FnZVBvcnRzLCB0YXJnZXRPcmlnaW4sIGFj
dGl2ZURPTVdpbmRvdyhleGVjKSwgZWMpOworICAgIGltcGwoKS0+cG9zdE1lc3NhZ2UobWVzc2Fn
ZSwgJnRyYW5zZmVyYWJsZXMsIHRhcmdldE9yaWdpbiwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBl
Yyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
RXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZl
bnRDdXN0b20uY3BwCmluZGV4IDQzOTY2NGEuLjBmNDU4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTQ0LDEzICs0
NCwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OnBv
cnRzKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICBNZXNzYWdlUG9ydEFycmF5KiBwb3J0
cyA9IHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVudCo+KGltcGwoKSktPnBvcnRzKCk7CisvKiAgICBN
ZXNzYWdlUG9ydEFycmF5KiBwb3J0cyA9IHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVudCo+KGltcGwo
KSktPnBvcnRzKCk7CiAgICAgaWYgKCFwb3J0cyB8fCBwb3J0cy0+aXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9ydHMtPnNpemUoKTsgaSsrKQogICAgICAgICBsaXN0
LmFwcGVuZCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCAoKnBvcnRzKVtpXS5nZXQoKSkpOwor
ICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QoKSwgbGlzdCk7Ki8K
KyAgICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0gc3RhdGljX2Nhc3Q8TWVzc2FnZUV2ZW50Kj4oaW1w
bCgpKTsKKyAgICBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcyA9IGV2ZW50LT50cmFu
c2ZlcmFibGVzKCk7CisgICAgaWYgKCF0cmFuc2ZlcmFibGVzIHx8IHRyYW5zZmVyYWJsZXMtPmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGxpc3Q7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXpl
KCk7ICsraSkKKyAgICAgICAgaWYgKE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9ICgqdHJhbnNm
ZXJhYmxlcylbaV0uZ2V0KCktPmFzTWVzc2FnZVBvcnQoKSkKKyAgICAgICAgICAgIGxpc3QuYXBw
ZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIG1lc3NhZ2VQb3J0KSk7CiAgICAgcmV0dXJu
IGNvbnN0cnVjdEFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBsaXN0KTsKIH0KIApAQCAtNTks
MjIgKzY4LDI0IEBAIEpTQzo6SlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVu
dChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKICAgICBjb25zdCBVU3RyaW5nJiB0eXBlQXJnID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7CiAgICAgYm9vbCBjYW5CdWJibGVBcmcgPSBl
eGVjLT5hcmd1bWVudCgxKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgYm9vbCBjYW5jZWxhYmxlQXJn
ID0gZXhlYy0+YXJndW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpOwotICAgIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhQXJnID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMykpOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJh
eT4gdHJhbnNmZXJhYmxlczsKKyAgICBPd25QdHI8SlNWYWx1ZVJlZkFycmF5PiB2YWx1ZVJlZkFy
cmF5OworICAgIGlmICghZXhlYy0+YXJndW1lbnQoNykuaXNVbmRlZmluZWRPck51bGwoKSkgewor
ICAgICAgICB0cmFuc2ZlcmFibGVzID0gYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZUFycmF5KTsK
KyAgICAgICAgdmFsdWVSZWZBcnJheSA9IGFkb3B0UHRyKG5ldyBKU1ZhbHVlUmVmQXJyYXkpOwor
ICAgICAgICBmaWxsVHJhbnNmZXJhYmxlQXJyYXkoZXhlYywgZXhlYy0+YXJndW1lbnQoNyksICp0
cmFuc2ZlcmFibGVzLCAqdmFsdWVSZWZBcnJheSk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDMpLCB2YWx1ZVJlZkFycmF5Lmdl
dCgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIGNvbnN0IFVTdHJpbmcmIG9yaWdpbkFyZyA9IGV4ZWMtPmFyZ3VtZW50
KDQpLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFVTdHJpbmcmIGxhc3RFdmVudElkQXJnID0g
ZXhlYy0+YXJndW1lbnQoNSkudG9TdHJpbmcoZXhlYyk7CiAgICAgRE9NV2luZG93KiBzb3VyY2VB
cmcgPSB0b0RPTVdpbmRvdyhleGVjLT5hcmd1bWVudCg2KSk7Ci0gICAgT3duUHRyPE1lc3NhZ2VQ
b3J0QXJyYXk+IG1lc3NhZ2VQb3J0czsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDcpLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgbWVzc2FnZVBvcnRzID0gYWRvcHRQdHIobmV3IE1l
c3NhZ2VQb3J0QXJyYXkpOwotICAgICAgICBmaWxsTWVzc2FnZVBvcnRBcnJheShleGVjLCBleGVj
LT5hcmd1bWVudCg3KSwgKm1lc3NhZ2VQb3J0cyk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KIAogICAg
IE1lc3NhZ2VFdmVudCogZXZlbnQgPSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPih0aGlzLT5p
bXBsKCkpOwotICAgIGV2ZW50LT5pbml0TWVzc2FnZUV2ZW50KHVzdHJpbmdUb0F0b21pY1N0cmlu
Zyh0eXBlQXJnKSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCB1c3RyaW5n
VG9TdHJpbmcob3JpZ2luQXJnKSwgdXN0cmluZ1RvU3RyaW5nKGxhc3RFdmVudElkQXJnKSwgc291
cmNlQXJnLCBtZXNzYWdlUG9ydHMucmVsZWFzZSgpKTsKKyAgICBldmVudC0+aW5pdE1lc3NhZ2VF
dmVudCh1c3RyaW5nVG9BdG9taWNTdHJpbmcodHlwZUFyZyksIGNhbkJ1YmJsZUFyZywgY2FuY2Vs
YWJsZUFyZywgZGF0YUFyZywgdXN0cmluZ1RvU3RyaW5nKG9yaWdpbkFyZyksIHVzdHJpbmdUb1N0
cmluZyhsYXN0RXZlbnRJZEFyZyksIHNvdXJjZUFyZywgdHJhbnNmZXJhYmxlcy5yZWxlYXNlKCkp
OwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IGFjMDZjNmEuLjQ1Mjhl
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApAQCAtNjAs
MTIgKzYxLDEzIEBAIEpTQzo6SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6
OkV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2UoZXhlYywgaW1w
bCgpKTsKIH0KIAotdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0QXJyYXkpCit2b2lk
IGZpbGxUcmFuc2ZlcmFibGVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBUcmFuc2ZlcmFibGVBcnJheSYgdHJhbnNmZXJhYmxlQXJyYXksIEpTVmFsdWVSZWZB
cnJheSYgdmFsdWVSZWZBcnJheSkKIHsKICAgICAvLyBDb252ZXJ0IGZyb20gdGhlIHBhc3NlZC1p
biBKUyBhcnJheS1saWtlIG9iamVjdCB0byBhIE1lc3NhZ2VQb3J0QXJyYXkuCiAgICAgLy8gQWxz
byB2YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0LjEuMTMgYW5kIDQuMS4xNSBv
ZiB0aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMuCiAg
ICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgcG9ydEFycmF5LnJl
c2l6ZSgwKTsKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJyYXkucmVzaXplKDApOworICAgICAgICB2
YWx1ZVJlZkFycmF5LnJlc2l6ZSgwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODUs
MTQgKzg3LDM1IEBAIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgTWVzc2FnZVBvcnRBCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAorCiAgICAgICAgIC8vIFZhbGlkYXRpb24gb2YgT2JqZWN0cyBpbXBsZW1l
bnRpbmcgYW4gaW50ZXJmYWNlLCBwZXIgV2ViSURMIHNwZWMgNC4xLjE1LgotICAgICAgICBSZWZQ
dHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSB0b01lc3NhZ2VQb3J0KHZhbHVlKTsKLSAgICAgICAgaWYg
KCFwb3J0KSB7CisgICAgICAgIFJlZlB0cjxUcmFuc2ZlcmFibGU+IHRyYW5zZmVyYWJsZSA9IHRv
TmF0aXZlVHJhbnNmZXJhYmxlKHZhbHVlKTsKKyAgICAgICAgaWYgKCF0cmFuc2ZlcmFibGUpIHsK
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIHBvcnRBcnJheS5hcHBlbmQocG9ydC5yZWxlYXNlKCkpOworICAg
ICAgICB0cmFuc2ZlcmFibGVBcnJheS5hcHBlbmQodHJhbnNmZXJhYmxlLnJlbGVhc2UoKSk7Cisg
ICAgICAgIHZhbHVlUmVmQXJyYXkuYXBwZW5kKHRvUmVmKGV4ZWMsIHZhbHVlKSk7CiAgICAgfQog
fQogCitQYXNzUmVmUHRyPFRyYW5zZmVyYWJsZT4gdG9OYXRpdmVUcmFuc2ZlcmFibGUoSlNDOjpK
U1ZhbHVlIHZhbHVlKQoreworICAgIFJlZlB0cjxUcmFuc2ZlcmFibGU+IG91dFZhbHVlID0gdG9N
ZXNzYWdlUG9ydCh2YWx1ZSk7CisgICAgaWYgKG91dFZhbHVlKQorICAgICAgICByZXR1cm4gb3V0
VmFsdWU7CisgICAgLy8gRklYTUU6IE9uY2Ugb3RoZXIgVHJhbnNmZXJhYmxlIHR5cGVzIGFyZSBh
ZGRlZCwgY2hlY2sgZm9yIHRoZW0gaGVyZS4KKyAgICAvLyBXZSdsbCByZXR1cm4gbnVsbCBpZiB2
YWx1ZSBpcyBub3QgVHJhbnNmZXJhYmxlIGluIGFueSBjYXNlLgorICAgIHJldHVybiBvdXRWYWx1
ZTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlNUcmFuc2ZlcmFibGUoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRyYW5zZmVyYWJsZSogdmFsdWUp
Cit7CisgICAgaWYgKE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9IHZhbHVlLT5hc01lc3NhZ2VQ
b3J0KCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBv
cnQpOworICAgIC8vIFRoaXMgdHlwZWNhc2Ugc2hvdWxkIGFsd2F5cyBiZSB0b3RhbC4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKaW5kZXggODM5NmFlMS4uMzhhMWFkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaApAQCAtMzIs
NiArMzIsOCBAQAogI2RlZmluZSBKU01lc3NhZ2VQb3J0Q3VzdG9tX2gKIAogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCisjaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtNDIsMjMgKzQ0LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcHVsbHMgdGhlIHZhbHVlcyBvdXQgb2Yg
YSBKUyBzZXF1ZW5jZSBhbmQgaW50byBhIE1lc3NhZ2VQb3J0QXJyYXkuCiAgICAgLy8gQWxzbyB2
YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0LjEuMTMgYW5kIDQuMS4xNSBvZiB0
aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMuCiAgICAg
Ly8gTWF5IGdlbmVyYXRlIGFuIGV4Y2VwdGlvbiB2aWEgdGhlIHBhc3NlZCBFeGVjU3RhdGUuCi0g
ICAgdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgTWVzc2FnZVBvcnRBcnJheSYpOworICAgIHZvaWQgZmlsbFRyYW5zZmVyYWJsZUFycmF5KEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBUcmFuc2ZlcmFibGVBcnJheSYsIEpTVmFsdWVS
ZWZBcnJheSYpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgZnJvbSBKUyBw
b3N0TWVzc2FnZSBhcmd1bWVudHMgdG8gV2ViQ29yZSBwb3N0TWVzc2FnZSBhcmd1bWVudHMuCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBoYW5kbGVQ
b3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgVCogaW1wbCkKICAgICB7Ci0gICAgICAg
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwotICAgICAgICBNZXNz
YWdlUG9ydEFycmF5IHBvcnRBcnJheTsKLSAgICAgICAgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoZXhl
YywgZXhlYy0+YXJndW1lbnQoMSksIHBvcnRBcnJheSk7CisgICAgICAgIFRyYW5zZmVyYWJsZUFy
cmF5IHRyYW5zZmVyYWJsZUFycmF5OworICAgICAgICBKU1ZhbHVlUmVmQXJyYXkgdmFsdWVSZWZB
cnJheTsKKyAgICAgICAgZmlsbFRyYW5zZmVyYWJsZUFycmF5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDEpLCB0cmFuc2ZlcmFibGVBcnJheSwgdmFsdWVSZWZBcnJheSk7CisgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7
CisgICAgICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksICZ2YWx1
ZVJlZkFycmF5KTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIAogICAgICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICAgICAgaW1wbC0+cG9zdE1lc3NhZ2UobWVzc2FnZSwgJnBvcnRBcnJheSwgZWMp
OworICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShtZXNzYWdlLCAmdHJhbnNmZXJhYmxlQXJyYXks
IGVjKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICAgICAgcmV0dXJu
IEpTQzo6anNVbmRlZmluZWQoKTsKICAgICB9CiAKKyAgICBQYXNzUmVmUHRyPFRyYW5zZmVyYWJs
ZT4gdG9OYXRpdmVUcmFuc2ZlcmFibGUoSlNDOjpKU1ZhbHVlKTsKKyAgICBKU0M6OkpTVmFsdWUg
dG9KU1RyYW5zZmVyYWJsZShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVHJh
bnNmZXJhYmxlKik7CiB9CiAjZW5kaWYgLy8gSlNNZXNzYWdlUG9ydEN1c3RvbV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggNGY1MWRkYi4uODdlMDcx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcApAQCAtMTAw
LDE0ICsxMDAsMTQgQEAgYm9vbCBTY3JpcHRWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0CiAgICAg
cmV0dXJuIGdldENhbGxEYXRhKG1fdmFsdWUuZ2V0KCksIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5v
bmU7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTY3JpcHRWYWx1ZTo6
c2VyaWFsaXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9k
ZSB0aHJvd0V4Y2VwdGlvbnMpCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2Ny
aXB0VmFsdWU6OnNlcmlhbGl6ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIEpTVmFsdWVSZWZB
cnJheSogdHJhbnNmZXJMaXN0LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9u
cykKIHsKLSAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3Rh
dGUsIGpzVmFsdWUoKSwgdGhyb3dFeGNlcHRpb25zKTsKKyAgICByZXR1cm4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3RhdGUsIGpzVmFsdWUoKSwgdHJhbnNmZXJMaXN0LCB0
aHJvd0V4Y2VwdGlvbnMpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVl
LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK1NjcmlwdFZhbHVlIFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIEpTVmFsdWVSZWZBcnJheSogdHJhbnNmZXJMaXN0LCBTZXJp
YWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKIHsKLSAgICByZXR1cm4gU2NyaXB0
VmFsdWUoc2NyaXB0U3RhdGUtPmdsb2JhbERhdGEoKSwgdmFsdWUtPmRlc2VyaWFsaXplKHNjcmlw
dFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB0aHJvd0V4Y2VwdGlv
bnMpKTsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPmdsb2JhbERhdGEoKSwg
dmFsdWUtPmRlc2VyaWFsaXplKHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCB0cmFuc2Zlckxpc3QsIHRocm93RXhjZXB0aW9ucykpOwogfQogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCmlu
ZGV4IGZhZGU4MzAuLmEyMjZhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
VmFsdWUuaApAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2NyaXB0VmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IG90aGVy
Lm1fdmFsdWU7IH0KIAotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemUoU2NyaXB0U3RhdGUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwot
ICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZShTY3JpcHRTdGF0ZSosIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShTY3JpcHRTdGF0ZSos
IEpTVmFsdWVSZWZBcnJheSogdHJhbnNmZXJMaXN0LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0g
VGhyb3dpbmcpOworICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZShTY3JpcHRTdGF0
ZSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIEpTVmFsdWVSZWZBcnJheSogdHJhbnNmZXJMaXN0
LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwogCiAgICAgc3RhdGljIFNjcmlw
dFZhbHVlIHVuZGVmaW5lZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA4YmFmOTE5Li5jMzYzM2E3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJKU0ZpbGUuaCIKICNpbmNsdWRlICJK
U0ZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiSlNJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJKU01lc3Nh
Z2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0xNjMsNiArMTY0LDExIEBAIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBpbnQgU3RyaW5nUG9vbFRhZyA9IDB4RkZGRkZGRkU7CiAKIHR5cGVk
ZWYgcGFpcjxKU0M6OkpTVmFsdWUsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlPiBEZXNlcmlhbGl6
YXRpb25SZXN1bHQ7CiAKK3N0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIG9wZW5SZWYoSlNWYWx1
ZVJlZiByZWYpCit7CisgICAgcmV0dXJuIHRvSlMoY29uc3RfY2FzdDxPcGFxdWVKU1ZhbHVlKj4o
cmVmKSk7Cit9CisKIGNsYXNzIENsb25lQmFzZSB7CiBwcm90ZWN0ZWQ6CiAgICAgQ2xvbmVCYXNl
KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTI1MCw5ICsyNTYsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RhdGljIGJvb2wgd3JpdGVMaXR0bGVFbmRpYW4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIs
IGNvbgogCiBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogcHVibGljOgotICAg
IHN0YXRpYyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8dWludDhfdD4mIG91dCkKKyAgICBzdGF0aWMgU2VyaWFs
aXphdGlvblJldHVybkNvZGUgc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSwgSlNWYWx1ZVJlZkFycmF5KiB0cmFuc2Zlckxpc3QsIFZlY3Rvcjx1aW50OF90PiYgb3V0KQog
ICAgIHsKLSAgICAgICAgQ2xvbmVTZXJpYWxpemVyIHNlcmlhbGl6ZXIoZXhlYywgb3V0KTsKKyAg
ICAgICAgQ2xvbmVTZXJpYWxpemVyIHNlcmlhbGl6ZXIoZXhlYywgdHJhbnNmZXJMaXN0LCBvdXQp
OwogICAgICAgICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwogICAgIH0KIApA
QCAtMjY5LDEwICsyNzUsMTEgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDbG9u
ZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBWZWN0b3I8dWludDhfdD4mIG91dCkKKyAgICBD
bG9uZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlUmVmQXJyYXkqIHRyYW5zZmVy
TGlzdCwgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQpCiAgICAgICAgIDogQ2xvbmVCYXNlKGV4ZWMpCiAg
ICAgICAgICwgbV9idWZmZXIob3V0KQogICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKGV4ZWMs
IFVTdHJpbmcoIiIsIDApKQorICAgICAgICAsIG1fdHJhbnNmZXJMaXN0KHRyYW5zZmVyTGlzdCkK
ICAgICB7CiAgICAgICAgIHdyaXRlKEN1cnJlbnRWZXJzaW9uKTsKICAgICB9CkBAIC0yODcsNiAr
Mjk0LDI0IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBpc0pTQXJyYXkoJm1fZXhlYy0+Z2xv
YmFsRGF0YSgpLCBvYmplY3QpIHx8IG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbyk7
CiAgICAgfQogCisgICAgYm9vbCBpbml0aWFsaXplV2l0aFRyYW5zZmVyTGlzdCgpCisgICAgewor
ICAgICAgICBpZiAoIW1fdHJhbnNmZXJMaXN0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90cmFuc2Zlckxpc3QtPnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb3BlblJlZigoKm1fdHJhbnNmZXJMaXN0
KVtpXSk7CisgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7
CisgICAgICAgICAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBwYWlyPE9iamVjdFBvb2w6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9v
YmplY3RQb29sLmFkZChvYmplY3QsIG1fb2JqZWN0UG9vbC5zaXplKCkpOworICAgICAgICAgICAg
Ly8gQWxsIG9iamVjdHMgaW4gdGhlIHRyYW5zZmVyIGxpc3QgbXVzdCBiZSB1bmlxdWUuCisgICAg
ICAgICAgICBpZiAoIWl0ZXIuc2Vjb25kKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNP
YmplY3QqIG9iamVjdCkKICAgICB7CiAgICAgICAgIC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBo
IHJlY29uc3RydWN0aW9uCkBAIC02MDYsNiArNjMxLDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCB1aW50MzJfdCwgSWRlbnRpZmllclJlcEhhc2g+
IFN0cmluZ0NvbnN0YW50UG9vbDsKICAgICBTdHJpbmdDb25zdGFudFBvb2wgbV9jb25zdGFudFBv
b2w7CiAgICAgSWRlbnRpZmllciBtX2VtcHR5SWRlbnRpZmllcjsKKyAgICBKU1ZhbHVlUmVmQXJy
YXkqIG1fdHJhbnNmZXJMaXN0OwogfTsKIAogU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVT
ZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKQEAgLTYxOCw2ICs2NDQsMTAgQEAgU2Vy
aWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBp
bikKICAgICBWZWN0b3I8V2Fsa2VyU3RhdGUsIDE2PiBzdGF0ZVN0YWNrOwogICAgIFdhbGtlclN0
YXRlIHN0YXRlID0gU3RhdGVVbmtub3duOwogICAgIEpTVmFsdWUgaW5WYWx1ZSA9IGluOworICAg
IGlmICghaW5pdGlhbGl6ZVdpdGhUcmFuc2Zlckxpc3QoKSkgeworICAgICAgICBtX2ZhaWxlZCA9
IHRydWU7CisgICAgICAgIHJldHVybiBWYWxpZGF0aW9uRXJyb3I7CisgICAgfQogICAgIHVuc2ln
bmVkIHRpY2tDb3VudCA9IHRpY2tzVW50aWxOZXh0Q2hlY2soKTsKICAgICB3aGlsZSAoMSkgewog
ICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CkBAIC03ODMsMTEgKzgxMywxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBTdHJpbmcoc3RyLmltcGwoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIERl
c2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQorICAg
IHN0YXRpYyBEZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVmQXJyYXkqIHRyYW5zZmVy
TGlzdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiAgICAgewogICAgICAgICBpZiAo
IWJ1ZmZlci5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZV9wYWlyKGpzTnVsbCgpLCBV
bnNwZWNpZmllZEVycm9yKTsKLSAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVy
KGV4ZWMsIGdsb2JhbE9iamVjdCwgYnVmZmVyKTsKKyAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIg
ZGVzZXJpYWxpemVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgdHJhbnNmZXJMaXN0LCBidWZmZXIpOwog
ICAgICAgICBpZiAoIWRlc2VyaWFsaXplci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4g
bWFrZV9wYWlyKEpTVmFsdWUoKSwgVmFsaWRhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuIGRl
c2VyaWFsaXplci5kZXNlcmlhbGl6ZSgpOwpAQCAtODMyLDEzICs4NjIsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgc2l6ZV90IG1faW5kZXg7CiAgICAgfTsKIAotICAgIENsb25lRGVzZXJpYWxpemVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBidWZmZXIpCisgICAgQ2xvbmVEZXNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVmQXJyYXkqIHRyYW5z
ZmVyTGlzdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiAgICAgICAgIDogQ2xvbmVC
YXNlKGV4ZWMpCiAgICAgICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogICAgICAg
ICAsIG1faXNET01HbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5pbmhlcml0cygmSlNET01HbG9i
YWxPYmplY3Q6OnNfaW5mbykpCiAgICAgICAgICwgbV9wdHIoYnVmZmVyLmRhdGEoKSkKICAgICAg
ICAgLCBtX2VuZChidWZmZXIuZGF0YSgpICsgYnVmZmVyLnNpemUoKSkKICAgICAgICAgLCBtX3Zl
cnNpb24oMHhGRkZGRkZGRikKKyAgICAgICAgLCBtX3RyYW5zZmVyTGlzdCh0cmFuc2Zlckxpc3Qp
CiAgICAgewogICAgICAgICBpZiAoIXJlYWQobV92ZXJzaW9uKSkKICAgICAgICAgICAgIG1fdmVy
c2lvbiA9IDB4RkZGRkZGRkY7CkBAIC0xMTg5LDYgKzEyMjAsNyBAQCBwcml2YXRlOgogICAgIGNv
bnN0IHVpbnQ4X3QqIG1fZW5kOwogICAgIHVuc2lnbmVkIG1fdmVyc2lvbjsKICAgICBWZWN0b3I8
Q2FjaGVkU3RyaW5nPiBtX2NvbnN0YW50UG9vbDsKKyAgICBKU1ZhbHVlUmVmQXJyYXkqIG1fdHJh
bnNmZXJMaXN0OwogfTsKIAogRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVy
OjpkZXNlcmlhbGl6ZSgpCkBAIC0xMjAxLDYgKzEyMzMsMTAgQEAgRGVzZXJpYWxpemF0aW9uUmVz
dWx0IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgV2Fsa2VyU3RhdGUgc3Rh
dGUgPSBTdGF0ZVVua25vd247CiAgICAgSlNWYWx1ZSBvdXRWYWx1ZTsKIAorICAgIGlmIChtX3Ry
YW5zZmVyTGlzdCkKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RyYW5zZmVyTGlz
dC0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZChvcGVuUmVmKCgq
bV90cmFuc2Zlckxpc3QpW2ldKSk7CisKICAgICB1bnNpZ25lZCB0aWNrQ291bnQgPSB0aWNrc1Vu
dGlsTmV4dENoZWNrKCk7CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgc3dpdGNoIChzdGF0ZSkg
ewpAQCAtMTMzOCwxMCArMTM3NCwxMCBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKICAgICBtX2RhdGEuc3dhcChi
dWZmZXIpOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBTZXJp
YWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK1Bhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWVSZWZBcnJheSogdHJhbnNmZXJMaXN0LCBTZXJpYWxp
emF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
YnVmZmVyOwotICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUgPSBDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZShleGVjLCB2YWx1ZSwgYnVmZmVyKTsKKyAgICBTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoZXhlYywgdmFsdWUsIHRy
YW5zZmVyTGlzdCwgYnVmZmVyKTsKICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFRocm93aW5n
KQogICAgICAgICBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKGV4ZWMs
IGNvZGUpOwogCkBAIC0xMzY1LDEyICsxNDAxLDEyIEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHN0
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVmZmVyKSk7
CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpZ2luQ29udGV4dCwgSlNWYWx1ZVJlZiBhcGlW
YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5D
b250ZXh0LCBKU1ZhbHVlUmVmIGFwaVZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIEpTVmFs
dWVSZWZBcnJheSogdHJhbnNmZXJMaXN0KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
b3JpZ2luQ29udGV4dCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKICAgICBK
U1ZhbHVlIHZhbHVlID0gdG9KUyhleGVjLCBhcGlWYWx1ZSk7Ci0gICAgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKGV4ZWMsIHZhbHVlKTsKKyAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhl
YywgdmFsdWUsIHRyYW5zZmVyTGlzdCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7
CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYo
ZXhlYywgZXhlYy0+ZXhjZXB0aW9uKCkpOwpAQCAtMTM4NiwxOSArMTQyMiwxOSBAQCBTdHJpbmcg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0b1N0cmluZygpCiAgICAgcmV0dXJuIENsb25lRGVzZXJp
YWxpemVyOjpkZXNlcmlhbGl6ZVN0cmluZyhtX2RhdGEpOwogfQogCi1KU1ZhbHVlIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykK
K0pTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWVSZWZBcnJheSogdHJhbnNm
ZXJMaXN0LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKIHsKLSAgICBE
ZXNlcmlhbGl6YXRpb25SZXN1bHQgcmVzdWx0ID0gQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFs
aXplKGV4ZWMsIGdsb2JhbE9iamVjdCwgbV9kYXRhKTsKKyAgICBEZXNlcmlhbGl6YXRpb25SZXN1
bHQgcmVzdWx0ID0gQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKGV4ZWMsIGdsb2JhbE9i
amVjdCwgdHJhbnNmZXJMaXN0LCBtX2RhdGEpOwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0g
VGhyb3dpbmcpCiAgICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWls
ZWQoZXhlYywgcmVzdWx0LnNlY29uZCk7CiAgICAgcmV0dXJuIHJlc3VsdC5maXJzdDsKIH0KIAot
SlNWYWx1ZVJlZiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTQ29udGV4dFJl
ZiBkZXN0aW5hdGlvbkNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK0pTVmFsdWVSZWYg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgZGVzdGluYXRp
b25Db250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIEpTVmFsdWVSZWZBcnJheSogdHJhbnNm
ZXJMaXN0KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoZGVzdGluYXRpb25Db250ZXh0
KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwotICAgIEpTVmFsdWUgdmFsdWUg
PSBkZXNlcmlhbGl6ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIEpT
VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIHRyYW5zZmVyTGlzdCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAg
ICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywg
ZXhlYy0+ZXhjZXB0aW9uKCkpOwpAQCAtMTQwOSw2ICsxNDQ1LDIzIEBAIEpTVmFsdWVSZWYgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25D
b250ZXh0LCBKCiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHZhbHVlKTsKIH0KIAorSlNWYWx1ZSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCwg
U2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCit7CisgICAgSlNWYWx1ZVJl
ZkFycmF5IHRyYW5zZmVyUmVmTGlzdDsKKyAgICBpZiAodHJhbnNmZXJMaXN0ICYmICFvcGVuVHJh
bnNmZXJhYmxlQXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCAqdHJhbnNmZXJMaXN0LCB0cmFuc2Zl
clJlZkxpc3QpKSB7CisgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gVGhyb3dpbmcpCisg
ICAgICAgICAgICBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKGV4ZWMs
IFZhbGlkYXRpb25FcnJvcik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0K
KyAgICByZXR1cm4gZGVzZXJpYWxpemUoZXhlYywgZ2xvYmFsT2JqZWN0LCAmdHJhbnNmZXJSZWZM
aXN0LCB0aHJvd0V4Y2VwdGlvbnMpOworfQorCitib29sIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
b3BlblRyYW5zZmVyYWJsZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVHJhbnNmZXJhYmxlQXJyYXkmIHRyYW5zZmVyTGlzdCwgSlNWYWx1ZVJlZkFy
cmF5JiB2YWx1ZVJlZkFycmF5KSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zl
ckxpc3Quc2l6ZSgpOyArK2kpCisgICAgICAgIHZhbHVlUmVmQXJyYXkuYXBwZW5kKHRvUmVmKGV4
ZWMsIHRvSlNUcmFuc2ZlcmFibGUoZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpLCB0cmFuc2Zlckxpc3RbaV0uZ2V0KCkpKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpu
dWxsVmFsdWUoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIGVtcHR5VmFsdWUsIChTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCmluZGV4IDNmZTRlMDIuLjcyNTE5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAj
aWZuZGVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZV9oCiAjZGVmaW5lIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZV9oCiAKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9u
Zy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CkBAIC0zOCw2ICszOSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTVmFsdWUq
IEpTVmFsdWVSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordHlwZWRlZiBWZWN0b3I8SlNW
YWx1ZVJlZiwgMT4gSlNWYWx1ZVJlZkFycmF5OwogIAogZW51bSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZSB7CiAgICAgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkLApAQCAtNTQsOCArNTYsOCBAQCBjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJl
ZiwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgSlNWYWx1ZVJlZkFycmF5KiB0cmFuc2Zlckxpc3QgPSAwLCBTZXJpYWxp
emF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiB2YWx1ZSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBKU1ZhbHVlUmVmQXJyYXkqIHRyYW5zZmVyTGlzdCA9IDAp
OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gYWRvcHQoVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiAgICAgewpAQCAtNjcsOCArNjksMTEg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCk7CiAgICAgCi0gICAgSlNDOjpKU1Zh
bHVlIGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0gICAgSlNWYWx1ZVJlZiBkZXNlcmlh
bGl6ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgSlNDOjpKU1Zh
bHVlIGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWVSZWZBcnJheSogdHJhbnNmZXJMaXN0ID0gMCwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9
IFRocm93aW5nKTsKKyAgICBKU1ZhbHVlUmVmIGRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uLCBKU1ZhbHVlUmVmQXJyYXkqIHRyYW5zZmVyTGlzdCA9IDApOwor
ICAgIAorICAgIC8vIFByZWZlciB0aGUgYWJvdmUgOjpkZXNlcmlhbGl6ZSAoYXMgdGhpcyBjb25z
dHJ1Y3RzIGEgSlNWYWx1ZVJlZkFycmF5IGFuZCBjYWxscyB0aGUgb3RoZXIgZnVuY3Rpb24pLgor
ICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJMaXN0ID0gMCwgU2VyaWFsaXph
dGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsgICAgICAKIAogICAgIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC03Nyw2ICs4Miw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFs
aXphdGlvbkZhaWxlZChKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsK
ICAgICBzdGF0aWMgYm9vbCBzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoU2Vy
aWFsaXphdGlvblJldHVybkNvZGUpOworICAgIHN0YXRpYyBib29sIG9wZW5UcmFuc2ZlcmFibGVB
cnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBUcmFuc2ZlcmFibGVB
cnJheSYsIEpTVmFsdWVSZWZBcnJheSYpOwogICAgIAogICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mKTsKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9k
YXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCA2NjQ5NWQ4Li41OWM1NDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjcxMiw3ICsyNzEyLDcg
QEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAgICAkaW1wbEluY2x1ZGVzeyIkam9pbmVkTmFt
ZS5oIn0gPSAxOwogICAgIH0gZWxzaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUi
IG9yICR0eXBlIGVxICJhbnkiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIn0gPSAxOwotICAgICAgICByZXR1cm4gIiR2YWx1ZSA/ICR2YWx1ZS0+ZGVz
ZXJpYWxpemUoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpIDoganNOdWxsKCkiOwor
ICAgICAgICByZXR1cm4gIiR2YWx1ZSA/ICR2YWx1ZS0+ZGVzZXJpYWxpemUoZXhlYywgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcC0+ZGF0YURlcGVuZGVuY2llcygpKSA6IGpzTnVsbCgp
IjsKICAgICB9IGVsc2UgewogICAgICAgICAjIERlZmF1bHQsIGluY2x1ZGUgaGVhZGVyIHdpdGgg
c2FtZSBuYW1lLgogICAgICAgICAkaW1wbEluY2x1ZGVzeyJKUyR0eXBlLmgifSA9IDE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmlu
ZGV4IGMzM2UyMDguLjU3OGIzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0yNTg3LDcgKzI1ODcsNyBAQCBFTkQKICAg
ICAgICAgJGF0dHJBdHRyID0gInN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJGF0
dHJBdHRyKSI7CiAgICAgICAgIG15ICRnZXR0ZXJGdW5jID0gJGNvZGVHZW5lcmF0b3ItPldLX2xj
Zmlyc3QoJGF0dHJOYW1lKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAg
ICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkod3JhcHBl
ciwgIiR7YXR0ck5hbWV9IiwgJHthdHRyQXR0cn0sIGltcGwtPiR7Z2V0dGVyRnVuY30oKSk7Cisg
ICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHdyYXBw
ZXIsICIke2F0dHJOYW1lfSIsICR7YXR0ckF0dHJ9LCBpbXBsLT4ke2dldHRlckZ1bmN9KCksIGlt
cGwtPiR7Z2V0dGVyRnVuY31EZXBlbmRlbmNpZXMoKSk7CiBFTkQKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IGEwYmI5NDguLjJhZjg5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1
ZGUgIkludDMyQXJyYXkuaCIKICNpbmNsdWRlICJJbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKICNpbmNsdWRlICJVaW50MTZB
cnJheS5oIgogI2luY2x1ZGUgIlVpbnQzMkFycmF5LmgiCiAjaW5jbHVkZSAiVWludDhBcnJheS5o
IgpAQCAtNjMsNiArNjQsNyBAQAogI2luY2x1ZGUgIlY4SW50MTZBcnJheS5oIgogI2luY2x1ZGUg
IlY4SW50MzJBcnJheS5oIgogI2luY2x1ZGUgIlY4SW50OEFycmF5LmgiCisjaW5jbHVkZSAiVjhN
ZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFVp
bnQxNkFycmF5LmgiCiAjaW5jbHVkZSAiVjhVaW50MzJBcnJheS5oIgpAQCAtNTUzLDEzICs1NTUs
MTQgQEAgcHVibGljOgogICAgICAgICBKU0ZhaWx1cmUKICAgICB9OwogCi0gICAgU2VyaWFsaXpl
cihXcml0ZXImIHdyaXRlciwgdjg6OlRyeUNhdGNoJiB0cnlDYXRjaCkKKyAgICBTZXJpYWxpemVy
KFdyaXRlciYgd3JpdGVyLCB2ODo6VHJ5Q2F0Y2gmIHRyeUNhdGNoLCBWYWx1ZUhhbmRsZUFycmF5
KiB0cmFuc2Zlckxpc3QpCiAgICAgICAgIDogbV93cml0ZXIod3JpdGVyKQogICAgICAgICAsIG1f
dHJ5Q2F0Y2godHJ5Q2F0Y2gpCiAgICAgICAgICwgbV9kZXB0aCgwKQogICAgICAgICAsIG1fZXhl
Y0RlcHRoKDApCiAgICAgICAgICwgbV9zdGF0dXMoU3VjY2VzcykKICAgICAgICAgLCBtX25leHRP
YmplY3RSZWZlcmVuY2UoMCkKKyAgICAgICAgLCBtX3RyYW5zZmVyTGlzdCh0cmFuc2Zlckxpc3Qp
CiAgICAgewogICAgICAgICBBU1NFUlQoIXRyeUNhdGNoLkhhc0NhdWdodCgpKTsKICAgICB9CkBA
IC01NjcsNiArNTcwLDggQEAgcHVibGljOgogICAgIFN0YXR1cyBzZXJpYWxpemUodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlKQogICAgIHsKICAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3Bl
OworICAgICAgICBpZiAoIWluaXRpYWxpemVPYmplY3RQb29sKCkpCisgICAgICAgICAgICByZXR1
cm4gbV9zdGF0dXM7CiAgICAgICAgIG1fd3JpdGVyLndyaXRlVmVyc2lvbigpOwogICAgICAgICBT
dGF0ZUJhc2UqIHN0YXRlID0gZG9TZXJpYWxpemUodmFsdWUsIDApOwogICAgICAgICB3aGlsZSAo
c3RhdGUpCkBAIC02MDYsNiArNjExLDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAg
ICBib29sIGluaXRpYWxpemVPYmplY3RQb29sKCk7CisKICAgICBjbGFzcyBTdGF0ZUJhc2Ugewog
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdGF0ZUJhc2UpOwogICAgIHB1YmxpYzoKQEAg
LTk3MCw4ICs5NzcsMzUgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIFY4T2JqZWN0TWFwPHY4OjpP
YmplY3QsIHVpbnQzMl90PiBPYmplY3RQb29sOwogICAgIE9iamVjdFBvb2wgbV9vYmplY3RQb29s
OwogICAgIHVpbnQzMl90IG1fbmV4dE9iamVjdFJlZmVyZW5jZTsKKyAgICBWYWx1ZUhhbmRsZUFy
cmF5KiBtX3RyYW5zZmVyTGlzdDsKIH07CiAKK2Jvb2wgU2VyaWFsaXplcjo6aW5pdGlhbGl6ZU9i
amVjdFBvb2woKSB7CisgICAgaWYgKG1fdHJhbnNmZXJMaXN0KSB7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3RyYW5zZmVyTGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1RyYW5zZmVyID0gKCptX3RyYW5zZmVyTGlzdClb
aV07CisgICAgICAgICAgICBpZiAodG9UcmFuc2Zlci0+SXNPYmplY3QoKSB8fCB0b1RyYW5zZmVy
LT5Jc0RhdGUoKSB8fCB0b1RyYW5zZmVyLT5Jc1JlZ0V4cCgpKSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKCF0b1RyYW5zZmVyLT5Jc1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHY4T2JqZWN0KHRvVHJhbnNmZXIuQXM8djg6Ok9iamVjdD4oKSk7Cisg
ICAgICAgICAgICAgICAgdWludDMyX3Qgb2JqZWN0UmVmZXJlbmNlOworICAgICAgICAgICAgICAg
IGlmIChtX29iamVjdFBvb2wudHJ5R2V0KHY4T2JqZWN0LCAmb2JqZWN0UmVmZXJlbmNlKSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBBbiBvYmplY3Qgd2FzIGluY2x1ZGVkIGluIHRoZSB0cmFu
c2ZlciBsaXN0IG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAgICAgICAgICAgICBtX3N0YXR1cyA9
IERhdGFDbG9uZUVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIEFzc2lnbiB0b1RyYW5zZmVyIHRoZSBu
ZXh0IG9iamVjdCBJRC4gSWYgd2Ugc2VlIGl0IGluIHRoZSBvYmplY3QgZ3JhcGgsIHdlIHdpbGwK
KyAgICAgICAgICAgICAgICAvLyBwYXNzIGl0IGJ5IHJlZmVyZW5jZS4KKyAgICAgICAgICAgICAg
ICBncmV5T2JqZWN0KHY4T2JqZWN0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgLy8gQSBub24tb2JqZWN0IHdhcyBpbmNsdWRlZCBpbiB0aGUgdHJhbnNmZXIgbGlzdC4K
KyAgICAgICAgICAgICAgICBtX3N0YXR1cyA9IERhdGFDbG9uZUVycm9yOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogU2VyaWFsaXplcjo6U3RhdGVCYXNlKiBTZXJpYWxpemVyOjpkb1Nl
cmlhbGl6ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFN0YXRlQmFzZSogbmV4dCkKIHsK
ICAgICBpZiAobV9leGVjRGVwdGggKyAobmV4dCA/IG5leHQtPmV4ZWNEZXB0aCgpIDogMCkgPiAx
KSB7CkBAIC0xNTY5LDE0ICsxNjAzLDE3IEBAIHByaXZhdGU6CiAKIGNsYXNzIERlc2VyaWFsaXpl
ciA6IHB1YmxpYyBDb21wb3NpdGVDcmVhdG9yIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBEZXNl
cmlhbGl6ZXIoUmVhZGVyJiByZWFkZXIpCisgICAgZXhwbGljaXQgRGVzZXJpYWxpemVyKFJlYWRl
ciYgcmVhZGVyLCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3QpCiAgICAgICAgIDogbV9y
ZWFkZXIocmVhZGVyKQogICAgICAgICAsIG1fdmVyc2lvbigwKQorICAgICAgICAsIG1fdHJhbnNm
ZXJMaXN0KHRyYW5zZmVyTGlzdCkKICAgICB7CiAgICAgfQogCiAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGRlc2VyaWFsaXplKCkKICAgICB7CisgICAgICAgIGlmICghaW5pdGlhbGl6ZU9iamVj
dFBvb2woKSkKKyAgICAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwogICAgICAgICBpZiAoIW1f
cmVhZGVyLnJlYWRWZXJzaW9uKG1fdmVyc2lvbikgfHwgbV92ZXJzaW9uID4gd2lyZUZvcm1hdFZl
cnNpb24pCiAgICAgICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICAgICAgbV9yZWFkZXIu
c2V0VmVyc2lvbihtX3ZlcnNpb24pOwpAQCAtMTY5MCw2ICsxNzI3LDEzIEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6CisgICAgYm9vbCBpbml0aWFsaXplT2JqZWN0UG9vbCgpCisgICAgewor
ICAgICAgICBpZiAobV90cmFuc2Zlckxpc3QpCisgICAgICAgICAgICBtX29iamVjdFBvb2wuYXBw
ZW5kKCptX3RyYW5zZmVyTGlzdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAg
IGJvb2wgaW5pdGlhbGl6ZU9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgdWlu
dDMyX3QgbnVtUHJvcGVydGllcywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KiB2YWx1ZSkKICAgICB7
CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDIgKiBudW1Qcm9wZXJ0aWVzOwpAQCAtMTc1NSwz
NCArMTc5OSw1NSBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
PiBtX29iamVjdFBvb2w7CiAgICAgVmVjdG9yPHVpbnQzMl90PiBtX29iamVjdFJlZmVyZW5jZVN0
YWNrOwogICAgIHVpbnQzMl90IG1fdmVyc2lvbjsKKyAgICBWYWx1ZUhhbmRsZUFycmF5KiBtX3Ry
YW5zZmVyTGlzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCiAKIHZvaWQgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
b2JqZWN0LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgYXR0
cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRl
IGF0dHJpYnV0ZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgVmFsdWVIYW5kbGVBcnJh
eSogdHJhbnNmZXJMaXN0KQogewogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemVkID0gdmFsdWUtPmRlc2VyaWFsaXpl
KCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFsaXplZCA9IHZhbHVlLT5kZXNl
cmlhbGl6ZSh0cmFuc2Zlckxpc3QpOwogICAgIG9iamVjdC0+Rm9yY2VTZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKHByb3BlcnR5TmFtZSksIGRlc2VyaWFsaXplZCwgYXR0cmlidXRlKTsKIH0KIAog
dm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0
KQoreworICAgIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZSwgdmFsdWUuZ2V0KCksIHRyYW5zZmVyTGlzdCk7Cit9CisKK3ZvaWQgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gb2JqZWN0LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRy
aWJ1dGUgYXR0cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBUcmFuc2ZlcmFi
bGVBcnJheSogdHJhbnNmZXJMaXN0KQoreworICAgIGlmICh0cmFuc2Zlckxpc3QpIHsKKyAgICAg
ICAgVmFsdWVIYW5kbGVBcnJheSB2YWx1ZUhhbmRsZUFycmF5OworICAgICAgICB2YWx1ZUhhbmRs
ZUFycmF5LnJlc2VydmVDYXBhY2l0eSh0cmFuc2Zlckxpc3QtPnNpemUoKSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJMaXN0LT5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgdmFsdWVIYW5kbGVBcnJheS5hcHBlbmQodG9WOFRyYW5zZmVyYWJsZSgoKnRyYW5zZmVy
TGlzdClbaV0uZ2V0KCkpKTsKKyAgICAgICAgfQorICAgICAgICBkZXNlcmlhbGl6ZUFuZFNldFBy
b3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLCAmdmFsdWVIYW5k
bGVBcnJheSk7CisgICAgfSBlbHNlCisgICAgICAgIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHko
b2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZSwgdmFsdWUsIHJlaW50ZXJwcmV0X2Nhc3Q8
VmFsdWVIYW5kbGVBcnJheSo+KDApKTsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3Qs
IGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGUs
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgVHJhbnNmZXJhYmxlQXJy
YXkqIHRyYW5zZmVyTGlzdCkKIHsKLSAgICBkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KG9iamVj
dCwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLmdldCgpKTsKKyAgICBkZXNlcmlhbGl6
ZUFuZFNldFByb3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLmdl
dCgpLCB0cmFuc2Zlckxpc3QpOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCBib29sJiBkaWRUaHJvdykKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IGJvb2wmIGRpZFRocm93LCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3QpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWUsIGRpZFRocm93
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWUs
IGRpZFRocm93LCB0cmFuc2Zlckxpc3QpKTsKIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSkKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFZhbHVlSGFu
ZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCkKIHsKICAgICBib29sIGRpZFRocm93OwotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdykpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRU
aHJvdywgdHJhbnNmZXJMaXN0KSk7CiB9CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKGNvbnN0IFN0cmluZyYg
ZGF0YSkKQEAgLTE4MzgsMTQgKzE5MDMsMTQgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUoKQogewogfQogCi1TZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRo
cm93KQorU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBkaWRUaHJvdywgVmFsdWVIYW5kbGVBcnJheSog
dHJhbnNmZXJMaXN0KQogewogICAgIGRpZFRocm93ID0gZmFsc2U7CiAgICAgV3JpdGVyIHdyaXRl
cjsKICAgICBTZXJpYWxpemVyOjpTdGF0dXMgc3RhdHVzOwogICAgIHsKICAgICAgICAgdjg6OlRy
eUNhdGNoIHRyeUNhdGNoOwotICAgICAgICBTZXJpYWxpemVyIHNlcmlhbGl6ZXIod3JpdGVyLCB0
cnlDYXRjaCk7CisgICAgICAgIFNlcmlhbGl6ZXIgc2VyaWFsaXplcih3cml0ZXIsIHRyeUNhdGNo
LCB0cmFuc2Zlckxpc3QpOwogICAgICAgICBzdGF0dXMgPSBzZXJpYWxpemVyLnNlcmlhbGl6ZSh2
YWx1ZSk7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gU2VyaWFsaXplcjo6SlNFeGNlcHRpb24pIHsK
ICAgICAgICAgICAgIC8vIElmIHRoZXJlIHdhcyBhIEpTIGV4Y2VwdGlvbiB0aHJvd24sIHJlLXRo
cm93IGl0LgpAQCAtMTg4MywxMyArMTk0OCwyMSBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShjb25zdCBTdHJpbmcmIHdpcmVEYXRhKQogICAgIG1fZGF0YSA9
IHdpcmVEYXRhLmNyb3NzVGhyZWFkU3RyaW5nKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKCkKK1N0cmluZyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmZsYXR0ZW5SZWNlaXB0TGlzdChjb25zdCBTdHJpbmcmIGRhdGEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5JiByZWNlaXB0cykgeworICAgIC8vIEZJWE1FOiBPbmNlIGEgZmxh
dHRlbmFibGUgcmVjZWlwdCBhcHBlYXJzLCB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSBtb3JlIHdv
cmsgdG8gZG8uCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWNlaXB0cy5zaXplKCk7ICsr
aSkKKyAgICAgICAgQVNTRVJUKCFyZWNlaXB0c1tpXS0+aXNGbGF0dGVuYWJsZSgpKTsKKyAgICBy
ZXR1cm4gZGF0YS5jcm9zc1RocmVhZFN0cmluZygpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShWYWx1ZUhhbmRsZUFycmF5KiB0
cmFuc2Zlckxpc3QpCiB7CiAgICAgaWYgKCFtX2RhdGEuaW1wbCgpKQogICAgICAgICByZXR1cm4g
djg6Ok51bGwoKTsKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoQnVmZmVyVmFsdWVUeXBlKSA9
PSAyLCBCdWZmZXJWYWx1ZVR5cGVJc1R3b0J5dGVzKTsKICAgICBSZWFkZXIgcmVhZGVyKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS5pbXBsKCktPmNoYXJhY3RlcnMoKSks
IDIgKiBtX2RhdGEubGVuZ3RoKCkpOwotICAgIERlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIocmVh
ZGVyKTsKKyAgICBEZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVyKHJlYWRlciwgdHJhbnNmZXJMaXN0
KTsKICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXgg
NGQyNDkyZC4uMGMyZWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTMyLDI1ICszMiw0MCBAQAogI2RlZmluZSBTZXJp
YWxpemVkU2NyaXB0VmFsdWVfaAogCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRl
ICJUcmFuc2ZlcmFibGUuaCIKKwogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3R5cGVkZWYgVmVjdG9yPHY4OjpIYW5k
bGU8djg6OlZhbHVlPiwgMT4gVmFsdWVIYW5kbGVBcnJheTsKKwogY2xhc3MgU2VyaWFsaXplZFNj
cmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVy
dHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmli
dXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCk7CisgICAgc3RhdGljIHZvaWQg
ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBj
aGFyKiBwcm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCk7CiAgICAgc3RhdGljIHZvaWQg
ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBj
aGFyKiBwcm9wZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJv
cGVydHlBdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIFZhbHVlSGFuZGxlQXJyYXkq
IHRyYW5zZmVyTGlzdCk7CisgICAgc3RhdGljIHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0
eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1
dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgVmFsdWVIYW5kbGVBcnJheSog
dHJhbnNmZXJMaXN0KTsKKworICAgIC8vIHRyYW5zZmVyTGlzdCBiZWxvdyBpcyBhbiBhcnJheSBv
ZiBvYmplY3RzIHRoYXQgYXJlIG5vdCBmbGF0dGVuZWQgdG8gdGhlIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSBidXQKKyAgICAvLyBhcmUgaW5zdGVhZCBjb3BpZWQgYnkgcmVmZXJlbmNlLiBUaGVzZSBv
YmplY3RzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZWlyIGluZGljZXMgaW4gdHJhbnNmZXJMaXN0Lgor
ICAgIC8vIEZvciBleGFtcGxlOgorICAgIC8vICAgICBzZXJpYWxpemUoe2E6T2JqZWN0MSwgYjpP
YmplY3QyfSwgW09iamVjdDAsIE9iamVjdDFdKSA9PiBTCisgICAgLy8gICAgIGRlc2VyaWFsaXpl
KFMsIFtPdGhlck9iamVjdDAsIE90aGVyT2JqZWN0MV0pID0+IHthOk90aGVyT2JqZWN0MSwgYjpP
YmplY3QyJ30KKyAgICAvLyB3aGVyZSBPYmplY3QyJyB3YXMgY3JlYXRlZCBieSBmaXJzdCBmbGF0
dGVuaW5nIE9iamVjdDIuCiAKICAgICAvLyBJZiBhIHNlcmlhbGl6YXRpb24gZXJyb3Igb2NjdXJz
IChlLmcuLCBjeWNsaWMgaW5wdXQgdmFsdWUpIHRoaXMKICAgICAvLyBmdW5jdGlvbiByZXR1cm5z
IGFuIGVtcHR5IHJlcHJlc2VudGF0aW9uLCBzY2hlZHVsZXMgYSBWOCBleGNlcHRpb24gdG8KICAg
ICAvLyBiZSB0aHJvd24gdXNpbmcgdjg6OlRocm93RXhjZXB0aW9uKCksIGFuZCBzZXRzIHxkaWRU
aHJvd3wuIEluIHRoaXMgY2FzZQogICAgIC8vIHRoZSBjYWxsZXIgbXVzdCBub3QgaW52b2tlIGFu
eSBWOCBvcGVyYXRpb25zIHVudGlsIGNvbnRyb2wgcmV0dXJucyB0bwogICAgIC8vIFY4LiBXaGVu
IHNlcmlhbGl6YXRpb24gaXMgc3VjY2Vzc2Z1bCwgfGRpZFRocm93fCBpcyBmYWxzZS4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRocm93KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkq
IHRyYW5zZmVyTGlzdCA9IDApOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gY3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgVmFsdWVIYW5kbGVBcnJheSog
dHJhbnNmZXJMaXN0ID0gMCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBjcmVhdGVGcm9tV2lyZShjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0
YSk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUo
KTsKQEAgLTYyLDkgKzc3LDExIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b1dpcmVTdHJpbmco
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAorICAgIHN0YXRpYyBTdHJpbmcgZmxhdHRlblJl
Y2VpcHRMaXN0KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5JiByZWNlaXB0cyk7CisKICAgICAvLyBEZXNlcmlhbGl6ZXMgdGhlIHZhbHVlIChpbiB0aGUg
Y3VycmVudCBjb250ZXh0KS4gUmV0dXJucyBhIG51bGwgdmFsdWUgaW4KICAgICAvLyBjYXNlIG9m
IGZhaWx1cmUuCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFsaXplKCk7CisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFsaXplKFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5z
ZmVyTGlzdCA9IDApOwogCiBwcml2YXRlOgogICAgIGVudW0gU3RyaW5nRGF0YU1vZGUgewpAQCAt
NzMsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBTZXJpYWxpemVkU2NyaXB0VmFs
dWUoKTsKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBi
b29sJiBkaWRUaHJvdyk7CisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgYm9vbCYgZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCA9
IDApOwogICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShjb25zdCBTdHJpbmcmIHdp
cmVEYXRhKTsKIAogICAgIFN0cmluZyBtX2RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyMzQyZmU2
Li45MzY4Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMyMSwzMiArMzIxLDM1IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzCiAgICAgRE9NV2luZG93KiBzb3VyY2UgPSBWOFByb3h5OjpyZXRyaWV2
ZUZyYW1lRm9yQ2FsbGluZ0NvbnRleHQoKS0+ZG9tV2luZG93KCk7CiAgICAgQVNTRVJUKHNvdXJj
ZS0+ZnJhbWUoKSk7CiAKLSAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKGFyZ3NbMF0sIGRpZFRocm93KTsKLSAgICBpZiAoZGlkVGhyb3cpCi0gICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsKKyAg
ICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVBcnJheTsKKyAgICBWYWx1ZUhhbmRsZUFy
cmF5IHZhbHVlSGFuZGxlQXJyYXk7CiAgICAgU3RyaW5nIHRhcmdldE9yaWdpbjsKIAogICAgIC8v
IFRoaXMgZnVuY3Rpb24gaGFzIHZhcmlhYmxlIGFyZ3VtZW50cyBhbmQgY2FuIGVpdGhlciBiZToK
ICAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHBvcnQsIHRhcmdldE9yaWdpbik7CiAgICAg
Ly8gb3IKICAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRhcmdldE9yaWdpbik7Ci0gICAg
djg6OlRyeUNhdGNoIHRyeUNhdGNoOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMikgewotICAg
ICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFycmF5KSkKKyAgICB7
CisgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPiAyKSB7CisgICAgICAgICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3NbMV0s
IHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1ZUhhbmRsZUFycmF5KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICAgICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJD
b3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5lZENoZWNrKGFyZ3NbMl0pOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxP
clVuZGVmaW5lZENoZWNrKGFyZ3NbMV0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRyeUNh
dGNoLkhhc0NhdWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAg
ICAgICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5lZENo
ZWNrKGFyZ3NbMl0pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRhcmdldE9yaWdpbiA9IHRvV2Vi
Q29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRDaGVjayhhcmdzWzFdKTsKICAgICB9CiAKLSAg
ICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwor
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdywgJnZhbHVlSGFuZGxlQXJyYXkpOwor
ICAgIGlmIChkaWRUaHJvdykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZS5y
ZWxlYXNlKCksICZwb3J0QXJyYXksIHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CisgICAgd2lu
ZG93LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnRyYW5zZmVyYWJsZUFycmF5LCB0
YXJnZXRPcmlnaW4sIHNvdXJjZSwgZWMpOwogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNh
dGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA4ZmNmOWE4Li5k
MDAzMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtNDYs
MTcgKzQ2LDE4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERlZGljYXRlZFdvcmtlckNvbnRl
eHQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyCiB7CiAgICAgSU5DX1NUQVRTKEwi
RE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQucG9zdE1lc3NhZ2UiKTsKICAgICBEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93KTsKLSAgICBpZiAoZGlkVGhyb3cpCi0gICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0QXJy
YXk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlQXJyYXk7CisgICAgVmFsdWVI
YW5kbGVBcnJheSB2YWx1ZUhhbmRsZUFycmF5OwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSkg
ewotICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFycmF5KSkK
KyAgICAgICAgaWYgKCFnZXRUcmFuc2ZlcmFibGVBcnJheShhcmdzWzFdLCB0cmFuc2ZlcmFibGVB
cnJheSwgdmFsdWVIYW5kbGVBcnJheSkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogICAgIH0KKyAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KGFyZ3NbMF0sIGRpZFRocm93LCAmdmFsdWVIYW5kbGVBcnJheSk7CisgICAgaWYgKGRpZFRocm93
KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIHdvcmtlckNvbnRleHQtPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAm
cG9ydEFycmF5LCBlYyk7CisgICAgd29ya2VyQ29udGV4dC0+cG9zdE1lc3NhZ2UobWVzc2FnZS5y
ZWxlYXNlKCksICZ0cmFuc2ZlcmFibGVBcnJheSwgZWMpOwogICAgIHJldHVybiB0aHJvd0Vycm9y
KGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggNDc1ZGUyYS4uYzE5NDdmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlRXZlbnRDdXN0b20uY3BwCkBAIC00NywxMyArNDcsMjIgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPgogICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC5wb3J0cyIpOwogICAgIE1lc3Nh
Z2VFdmVudCogZXZlbnQgPSBWOE1lc3NhZ2VFdmVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CiAKLSAgICBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cyA9IGV2ZW50LT5wb3J0cygpOwotICAgIGlm
ICghcG9ydHMgfHwgcG9ydHMtPmlzRW1wdHkoKSkKKyAgICBUcmFuc2ZlcmFibGVBcnJheSogdHJh
bnNmZXJhYmxlcyA9IGV2ZW50LT50cmFuc2ZlcmFibGVzKCk7CisgICAgaWYgKCF0cmFuc2ZlcmFi
bGVzIHx8IHRyYW5zZmVyYWJsZXMtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxs
KCk7CiAKLSAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBwb3J0QXJyYXkgPSB2ODo6QXJyYXk6Ok5l
dyhwb3J0cy0+c2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvcnRzLT5zaXpl
KCk7ICsraSkKLSAgICAgICAgcG9ydEFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5ldyhpKSwgdG9W
OCgoKnBvcnRzKVtpXS5nZXQoKSkpOworICAgIGludCBwb3J0Q291bnQgPSAwOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
aWYgKCgqdHJhbnNmZXJhYmxlcylbaV0uZ2V0KCktPmFzTWVzc2FnZVBvcnQoKSkKKyAgICAgICAg
ICAgICsrcG9ydENvdW50OworICAgIH0KKyAgICAKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBw
b3J0QXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyhwb3J0Q291bnQpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKE1lc3Nh
Z2VQb3J0KiBtZXNzYWdlUG9ydCA9ICgqdHJhbnNmZXJhYmxlcylbaV0uZ2V0KCktPmFzTWVzc2Fn
ZVBvcnQoKSkgeworICAgICAgICAgICAgcG9ydEFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5ldyhp
KSwgdG9WOChtZXNzYWdlUG9ydCkpOworICAgICAgICB9CisgICAgfQogCiAgICAgcmV0dXJuIHBv
cnRBcnJheTsKIH0KQEAgLTc2LDE3ICs4NSwxOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhN
ZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbgog
ICAgICAgICBpZiAoIXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3VyY2VBcmcgPSBW
OERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9Ci0gICAgT3duUHRyPE1lc3NhZ2VQ
b3J0QXJyYXk+IHBvcnRBcnJheTsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5z
ZmVyYWJsZUFycmF5OworICAgIE93blB0cjxWYWx1ZUhhbmRsZUFycmF5PiB2YWx1ZUhhbmRsZUFy
cmF5OwogCiAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzddKSkgewotICAgICAgICBw
b3J0QXJyYXkgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJheSk7Ci0gICAgICAgIGlmICgh
Z2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzddLCAqcG9ydEFycmF5KSkKKyAgICAgICAgdHJhbnNm
ZXJhYmxlQXJyYXkgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlQXJyYXkpOworICAgICAgICB2
YWx1ZUhhbmRsZUFycmF5ID0gYWRvcHRQdHIobmV3IFZhbHVlSGFuZGxlQXJyYXkpOworICAgICAg
ICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3NbN10sICp0cmFuc2ZlcmFibGVBcnJheSwg
KnZhbHVlSGFuZGxlQXJyYXkpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
ICAgICB9Ci0gICAgZXZlbnQtPmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJn
LCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLnJlbGVhc2UoKSwgb3JpZ2luQXJnLCBsYXN0RXZlbnRJ
ZEFyZywgc291cmNlQXJnLCBwb3J0QXJyYXkucmVsZWFzZSgpKTsKKyAgICBldmVudC0+aW5pdE1l
c3NhZ2VFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIGRhdGFBcmcu
cmVsZWFzZSgpLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBzb3VyY2VBcmcsIHRyYW5zZmVy
YWJsZUFycmF5LnJlbGVhc2UoKSk7CiAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGRhdGFBdHRy
ID0gc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERlbGV0ZSB8IHY4
OjpSZWFkT25seSk7Ci0gICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNl
dFByb3BlcnR5KGFyZ3MuSG9sZGVyKCksICJkYXRhIiwgZGF0YUF0dHIsIGV2ZW50LT5kYXRhKCkp
OworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eShh
cmdzLkhvbGRlcigpLCAiZGF0YSIsIGRhdGFBdHRyLCBldmVudC0+ZGF0YSgpLCB2YWx1ZUhhbmRs
ZUFycmF5LmdldCgpKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICB9Cit9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAppbmRleCAzZWQ1YjEyLi5mM2U0
Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlUG9ydEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC00NiwyOSArNDYsMzAgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXIKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlUG9ydC5wb3N0TWVzc2Fn
ZSIpOwogICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9IFY4TWVzc2FnZVBvcnQ6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoYXJnc1swXSwgZGlkVGhyb3cpOwotICAgIGlmIChkaWRUaHJvdykKLSAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsK
KyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVBcnJheTsKKyAgICBWYWx1ZUhhbmRs
ZUFycmF5IHZhbHVlSGFuZGxlQXJyYXk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0g
ICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAg
ICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3NbMV0sIHRyYW5zZmVyYWJsZUFycmF5
LCB2YWx1ZUhhbmRsZUFycmF5KSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CiAgICAgfQorICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJn
c1swXSwgZGlkVGhyb3csICZ2YWx1ZUhhbmRsZUFycmF5KTsKKyAgICBpZiAoZGlkVGhyb3cpCisg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgbWVzc2FnZVBvcnQtPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmcG9ydEFy
cmF5LCBlYyk7CisgICAgbWVzc2FnZVBvcnQtPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgp
LCAmdHJhbnNmZXJhYmxlQXJyYXksIGVjKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9
CiAKLWJvb2wgZ2V0TWVzc2FnZVBvcnRBcnJheSh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
TWVzc2FnZVBvcnRBcnJheSYgcG9ydEFycmF5KQorYm9vbCBnZXRUcmFuc2ZlcmFibGVBcnJheSh2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgVHJhbnNmZXJhYmxlQXJyYXkmIHRyYW5zZmVyYWJs
ZUFycmF5LCBWYWx1ZUhhbmRsZUFycmF5JiBoYW5kbGVBcnJheSkKIHsKICAgICBpZiAoaXNVbmRl
ZmluZWRPck51bGwodmFsdWUpKSB7Ci0gICAgICAgIHBvcnRBcnJheS5yZXNpemUoMCk7CisgICAg
ICAgIHRyYW5zZmVyYWJsZUFycmF5LnJlc2l6ZSgwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd0Vycm9y
KCJNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0Iik7CisgICAgICAg
IHRocm93RXJyb3IoIlRyYW5zZmVyYWJsZUFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgdWludDMyX3QgbGVuZ3RoID0g
MDsKQEAgLTgxLDI4ICs4Miw0NCBAQCBib29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJheQogICAgICAgICAv
LyBTZXF1ZW5jZS10eXBlIG9iamVjdCAtIGdldCB0aGUgbGVuZ3RoIGF0dHJpYnV0ZQogICAgICAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiBzZXF1ZW5jZUxlbmd0aCA9IHBvcnRzLT5HZXQodjg6OlN0
cmluZzo6TmV3KCJsZW5ndGgiKSk7CiAgICAgICAgIGlmICghc2VxdWVuY2VMZW5ndGgtPklzTnVt
YmVyKCkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1l
bnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUiKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoIlRy
YW5zZmVyYWJsZUFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlIik7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgbGVuZ3RoID0gc2VxdWVu
Y2VMZW5ndGgtPlVpbnQzMlZhbHVlKCk7CiAgICAgfQogCi0gICAgLy8gVmFsaWRhdGUgdGhlIHBh
c3NlZCBhcnJheSBvZiBwb3J0cy4KKyAgICAvLyBWYWxpZGF0ZSB0aGUgcGFzc2VkIGFycmF5IG9m
IHRyYW5zZmVyYWJsZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBwb3J0ID0gcG9ydHMtPkdldChp
KTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdHJhbnNmZXJhYmxlID0gcG9ydHMtPkdl
dChpKTsKICAgICAgICAgLy8gVmFsaWRhdGlvbiBvZiBub24tbnVsbCBvYmplY3RzLCBwZXIgSFRN
TDUgc3BlYyA4LjMuMy4KLSAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKHBvcnQpKSB7Cisg
ICAgICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCh0cmFuc2ZlcmFibGUpKSB7CiAgICAgICAgICAg
ICB0aHJvd0Vycm9yKElOVkFMSURfU1RBVEVfRVJSKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIE9iamVjdHMgaW1wbGVtZW50
aW5nIGFuIGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4xNS4KLSAgICAgICAgaWYgKCFW
OE1lc3NhZ2VQb3J0OjpIYXNJbnN0YW5jZShwb3J0KSkgewotICAgICAgICAgICAgdGhyb3dFcnJv
cigiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBNZXNzYWdlUG9y
dHMiKTsKKyAgICAgICAgVHJhbnNmZXJhYmxlKiBuYXRpdmVUcmFuc2ZlcmFibGUgPSB0b05hdGl2
ZVRyYW5zZmVyYWJsZSh0cmFuc2ZlcmFibGUpOworICAgICAgICBpZiAoIW5hdGl2ZVRyYW5zZmVy
YWJsZSkgeworICAgICAgICAgICAgdGhyb3dFcnJvcigiVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1l
bnQgbXVzdCBjb250YWluIG9ubHkgVHJhbnNmZXJhYmxlcyIpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIHBvcnRBcnJheS5hcHBlbmQoVjhNZXNzYWdlUG9y
dDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChwb3J0KSkpOworICAgICAg
ICB0cmFuc2ZlcmFibGVBcnJheS5hcHBlbmQobmF0aXZlVHJhbnNmZXJhYmxlKTsKKyAgICAgICAg
aGFuZGxlQXJyYXkuYXBwZW5kKHRyYW5zZmVyYWJsZSk7CiAgICAgfQogICAgIHJldHVybiB0cnVl
OwogfQogCitUcmFuc2ZlcmFibGUqIHRvTmF0aXZlVHJhbnNmZXJhYmxlKHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlKSB7CisgICAgaWYgKFY4TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNlKHZhbHVl
KSkgeworICAgICAgICByZXR1cm4gVjhNZXNzYWdlUG9ydDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhUcmFuc2ZlcmFibGUoVHJhbnNmZXJhYmxlKiB2YWx1ZSkg
eworICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSB2YWx1ZS0+YXNNZXNzYWdlUG9y
dCgpKQorICAgICAgICByZXR1cm4gdG9WOChtZXNzYWdlUG9ydCk7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoMCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oCmluZGV4IDdhYjUwMmIuLmNhMDBjZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3Vz
dG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBv
cnRDdXN0b20uaApAQCAtMzUsMTMgKzM1LDE3IEBACiAjaW5jbHVkZSA8djguaD4KIAogI2luY2x1
ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB3aGljaCBwdWxs
cyB0aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBpbnRvIGEgTWVzc2FnZVBvcnRB
cnJheS4KKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcHVsbHMgdGhlIHZhbHVlcyBvdXQg
b2YgYSBKUyBzZXF1ZW5jZSBhbmQgaW50byBhIFRyYW5zZmVyYWJsZUFycmF5LgogICAgIC8vIEFs
c28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUg
b2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjIGFu
ZCBnZW5lcmF0ZXMgZXhjZXB0aW9ucyBhcyBhcHByb3ByaWF0ZS4KICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIGFycmF5IHdhcyBmaWxsZWQsIG9yIGZhbHNlIGlmIHRoZSBwYXNzZWQgdmFsdWUg
d2FzIG5vdCBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlLgotICAgIGJvb2wgZ2V0TWVzc2FnZVBvcnRB
cnJheSh2ODo6TG9jYWw8djg6OlZhbHVlPiwgTWVzc2FnZVBvcnRBcnJheSYpOworICAgIGJvb2wg
Z2V0VHJhbnNmZXJhYmxlQXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIFRyYW5zZmVyYWJsZUFy
cmF5JiwgVmFsdWVIYW5kbGVBcnJheSYpOworCisgICAgVHJhbnNmZXJhYmxlKiB0b05hdGl2ZVRy
YW5zZmVyYWJsZSh2ODo6TG9jYWw8djg6OlZhbHVlPik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjhUcmFuc2ZlcmFibGUoVHJhbnNmZXJhYmxlKik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdv
cmtlckN1c3RvbS5jcHAKaW5kZXggZmRjNjgxNS4uOGQ2ZjNkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCkBAIC05MSwx
NyArOTEsMTggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyOjpwb3N0TWVzc2FnZUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
V29ya2VyLnBvc3RNZXNzYWdlIik7CiAgICAgV29ya2VyKiB3b3JrZXIgPSBWOFdvcmtlcjo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwotICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdyk7Ci0gICAgaWYgKGRpZFRocm93KQotICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5
OworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZUFycmF5OworICAgIFZhbHVlSGFu
ZGxlQXJyYXkgdmFsdWVIYW5kbGVBcnJheTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpIHsK
LSAgICAgICAgaWYgKCFnZXRNZXNzYWdlUG9ydEFycmF5KGFyZ3NbMV0sIHBvcnRBcnJheSkpCisg
ICAgICAgIGlmICghZ2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJnc1sxXSwgdHJhbnNmZXJhYmxlQXJy
YXksIHZhbHVlSGFuZGxlQXJyYXkpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKICAgICB9CisgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShh
cmdzWzBdLCBkaWRUaHJvdywgJnZhbHVlSGFuZGxlQXJyYXkpOworICAgIGlmIChkaWRUaHJvdykK
KyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICB3b3JrZXItPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmcG9ydEFycmF5
LCBlYyk7CisgICAgd29ya2VyLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnRyYW5z
ZmVyYWJsZUFycmF5LCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCAzYWQxNTY2Li5kZjM2MjE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01BbGxJbk9uZS5jcHAKQEAgLTEyOSw2ICsxMjksNyBAQAogI2luY2x1ZGUgIlRvdWNo
LmNwcCIKICNpbmNsdWRlICJUb3VjaEV2ZW50LmNwcCIKICNpbmNsdWRlICJUb3VjaExpc3QuY3Bw
IgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5jcHAiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU291cmNl
TGlieHNsdC5jcHAiCiAjaW5jbHVkZSAiVHJhdmVyc2FsLmNwcCIKICNpbmNsdWRlICJUcmVlU2Nv
cGUuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAppbmRleCBiNDMzMzgxYi4uZmY2
MjQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VQb3J0LmgiCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCkBAIC0zOCwxMyArMzksMTMgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZl
bnQoKQogewogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2Us
IFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMpCiAgICAgOiBFdmVu
dChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGEo
ZGF0YSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2
ZW50SWQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCi0gICAgLCBtX3BvcnRzKHBvcnRzKQorICAg
ICwgbV90cmFuc2ZlcmFibGVzKHRyYW5zZmVyYWJsZXMpCiB7CiB9CiAKQEAgLTUyLDcgKzUzLDcg
QEAgTWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBNZXNzYWdlRXZl
bnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERP
TVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQordm9p
ZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFz
dEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5
PiB0cmFuc2ZlcmFibGVzKQogewogICAgIGlmIChkaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTYzLDI2ICs2NCwzNiBAQCB2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBibwogICAgIG1fb3Jp
Z2luID0gb3JpZ2luOwogICAgIG1fbGFzdEV2ZW50SWQgPSBsYXN0RXZlbnRJZDsKICAgICBtX3Nv
dXJjZSA9IHNvdXJjZTsKLSAgICBtX3BvcnRzID0gcG9ydHM7CisgICAgbV90cmFuc2ZlcmFibGVz
ID0gdHJhbnNmZXJhYmxlczsKIH0KIAogLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBk
YXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KIE1lc3NhZ2VQb3J0KiBNZXNzYWdl
RXZlbnQ6Om1lc3NhZ2VQb3J0KCkKIHsKLSAgICBpZiAoIW1fcG9ydHMpCisgICAgaWYgKCFtX3Ry
YW5zZmVyYWJsZXMpCiAgICAgICAgIHJldHVybiAwOwotICAgIEFTU0VSVChtX3BvcnRzLT5zaXpl
KCkgPT0gMSk7Ci0gICAgcmV0dXJuICgqbV9wb3J0cylbMF0uZ2V0KCk7CisgICAgQVNTRVJUKG1f
dHJhbnNmZXJhYmxlcy0+c2l6ZSgpID09IDEpOworICAgIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJh
YmxlID0gKCptX3RyYW5zZmVyYWJsZXMpWzBdLmdldCgpOworICAgIEFTU0VSVCh0cmFuc2ZlcmFi
bGUtPmFzTWVzc2FnZVBvcnQoKSk7CisgICAgcmV0dXJuIHRyYW5zZmVyYWJsZS0+YXNNZXNzYWdl
UG9ydCgpOwogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIE1lc3NhZ2VQb3J0
KiBwb3J0KQorVHJhbnNmZXJhYmxlKiBNZXNzYWdlRXZlbnQ6OnRyYW5zZmVyYWJsZSgpCiB7Ci0g
ICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzOwotICAgIGlmIChwb3J0KSB7Ci0gICAg
ICAgIHBvcnRzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkpOwotICAgICAgICBwb3J0
cy0+YXBwZW5kKHBvcnQpOworICAgIGlmICghbV90cmFuc2ZlcmFibGVzKQorICAgICAgICByZXR1
cm4gMDsKKyAgICBBU1NFUlQobV90cmFuc2ZlcmFibGVzLT5zaXplKCkgPT0gMSk7CisgICAgcmV0
dXJuICgqbV90cmFuc2ZlcmFibGVzKVswXS5nZXQoKTsKK30KKwordm9pZCBNZXNzYWdlRXZlbnQ6
OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdp
bmRvdyogc291cmNlLCBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSkKK3sKKyAgICBPd25QdHI8
VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXM7CisgICAgaWYgKHRyYW5zZmVyYWJsZSkg
eworICAgICAgICB0cmFuc2ZlcmFibGVzID0gYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZUFycmF5
KTsKKyAgICAgICAgdHJhbnNmZXJhYmxlcy0+YXBwZW5kKHRyYW5zZmVyYWJsZSk7CiAgICAgfQot
ICAgIGluaXRNZXNzYWdlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBkYXRhLCBv
cmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIHBvcnRzLnJlbGVhc2UoKSk7CisgICAgaW5pdE1l
c3NhZ2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGRhdGEsIG9yaWdpbiwgbGFz
dEV2ZW50SWQsIHNvdXJjZSwgdHJhbnNmZXJhYmxlcy5yZWxlYXNlKCkpOwogfQogCiBib29sIE1l
c3NhZ2VFdmVudDo6aXNNZXNzYWdlRXZlbnQoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuaAppbmRleCBiN2Y5YjAyLi4xMDA4ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5o
CkBAIC0zMCwxMiArMzAsMTMgQEAKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgY2xhc3MgRE9NV2luZG93OworICAgIGNsYXNzIE1lc3NhZ2VQb3J0Owog
CiAgICAgY2xhc3MgTWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsKICAgICBwdWJsaWM6CkBA
IC00MywzNiArNDQsMzggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudCk7CiAgICAgICAgIH0KLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUGFzc093blB0cjxNZXNz
YWdlUG9ydEFycmF5PiBwb3J0cywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRh
dGEgPSAwLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9ICIiLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkID0gIiIsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UgPSAwKQorICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShQYXNzT3duUHRyPFRyYW5zZmVyYWJs
ZUFycmF5PiB0cmFuc2ZlcmFibGVzLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ZGF0YSA9IDAsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gIiIsIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQgPSAiIiwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSA9IDApCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdp
biwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgcG9ydHMpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwg
dHJhbnNmZXJhYmxlcykpOwogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfk1lc3NhZ2VFdmVu
dCgpOwogCi0gICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4pOworICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJs
ZUFycmF5Pik7CiAKICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgICAgIFRyYW5zZmVyYWJsZUFycmF5KiBkYXRh
RGVwZW5kZW5jaWVzKCkgY29uc3QgeyByZXR1cm4gdHJhbnNmZXJhYmxlcygpOyB9CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICAg
ICAgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEV2ZW50
SWQ7IH0KICAgICAgICAgRE9NV2luZG93KiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZS5nZXQoKTsgfQotICAgICAgICBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cygpIGNvbnN0IHsgcmV0
dXJuIG1fcG9ydHMuZ2V0KCk7IH0KKyAgICAgICAgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVy
YWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZmVyYWJsZXMuZ2V0KCk7IH0KIAogICAgICAg
ICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3Mg
KGJ1ZyAjMjg3NzQpLgorICAgICAgICBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSgpOwogICAg
ICAgICBNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQoKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92
ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLSAg
ICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqKTsKKyAgICAgICAgdm9pZCBpbml0
TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cq
IHNvdXJjZSwgVHJhbnNmZXJhYmxlKik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTWVzc2Fn
ZUV2ZW50KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBNZXNzYWdlRXZlbnQoKTsK
LSAgICAgICAgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFz
c1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7
CisgICAgICAgIE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBh
c3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+
KTsKIAogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX2RhdGE7CiAgICAg
ICAgIFN0cmluZyBtX29yaWdpbjsKICAgICAgICAgU3RyaW5nIG1fbGFzdEV2ZW50SWQ7CiAgICAg
ICAgIFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNlOwotICAgICAgICBPd25QdHI8TWVzc2FnZVBv
cnRBcnJheT4gbV9wb3J0czsKKyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiBtX3Ry
YW5zZmVyYWJsZXM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmlkbAppbmRleCBjZjQ1YmI0Li4wZWU0OGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmlkbApAQCAtNDQsOSArNDQsOSBAQCBtb2R1bGUgZXZlbnRzIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0
aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG9yaWdpbkFyZywgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERP
TVN0cmluZyBsYXN0RXZlbnRJZEFyZywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVdpbmRvdyBzb3Vy
Y2VBcmcsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlv
bmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBBcnJheSBtZXNzYWdlUG9ydHMpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVs
dFZhbHVlXSBBcnJheSB0cmFuc2ZlcmFibGVzKTsKICNlbHNlCi0gICAgICAgIC8vIFRoZXJlJ3Mg
bm8gZ29vZCB3YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28g
Zm9yIG5vdyBqdXN0IGV4cG9zZSBhIHNpbmdsZSBwb3J0LgorICAgICAgICAvLyBUaGVyZSdzIG5v
IGdvb2Qgd2F5IHRvIGV4cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZv
ciBub3cganVzdCBleHBvc2UgYSBzaW5nbGUgTWVzc2FnZVBvcnQuCiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydDsKIAogICAgICAgICB2b2lkIGluaXRN
ZXNzYWdlRXZlbnQoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcg
dHlwZUFyZywgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA0NzJiOWIxLi5lOWJi
YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogTWVzc2FnZVBvcnQ6Ok1lc3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgOiBtX3N0YXJ0ZWQoZmFsc2Up
CiAgICAgLCBtX2Nsb3NlZChmYWxzZSkKKyAgICAsIG1fdHJhbnNmZXJDbG9zZWQoZmFsc2UpCiAg
ICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7
CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5jcmVhdGVkTWVzc2FnZVBvcnQodGhpcyk7
CkBAIC01OCw0MCArNTksNTMgQEAgTWVzc2FnZVBvcnQ6On5NZXNzYWdlUG9ydCgpCiB9CiAKIC8v
IEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVn
ICMyODc3NCkuCi12b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQordm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwotICAgIGlmIChw
b3J0KQotICAgICAgICBwb3J0cy5hcHBlbmQocG9ydCk7Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2Fn
ZSwgJnBvcnRzLCBlYyk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlczsKKyAg
ICBpZiAodHJhbnNmZXJhYmxlKQorICAgICAgICB0cmFuc2ZlcmFibGVzLmFwcGVuZCh0cmFuc2Zl
cmFibGUpOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZ0cmFuc2ZlcmFibGVzLCBlYyk7CiB9
CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBwb3N0TWVzc2Fn
ZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxNZXNzYWdlUG9ydEFycmF5Kj4oMCksIGVjKTsKKyAgICBw
b3N0TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxUcmFuc2ZlcmFibGVBcnJheSo+KDApLCBl
Yyk7CiB9CiAKLXZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlQXJyYXkqIHRy
YW5zZmVyYWJsZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghaXNFbnRhbmdsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OwogCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKLSAgICAv
LyBNYWtlIHN1cmUgd2UgYXJlbid0IGNvbm5lY3RlZCB0byBhbnkgb2YgdGhlIHBhc3NlZC1pbiBw
b3J0cy4KLSAgICBpZiAocG9ydHMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBwb3J0cy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIE1lc3NhZ2VQb3J0KiBkYXRh
UG9ydCA9ICgqcG9ydHMpW2ldLmdldCgpOwotICAgICAgICAgICAgaWYgKGRhdGFQb3J0ID09IHRo
aXMgfHwgbV9lbnRhbmdsZWRDaGFubmVsLT5pc0Nvbm5lY3RlZFRvKGRhdGFQb3J0KSkgewotICAg
ICAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzOworICAg
IC8vIE1ha2Ugc3VyZSB3ZSBhcmVuJ3QgY29ubmVjdGVkIHRvIGFueSBvZiB0aGUgcGFzc2VkLWlu
IHRyYW5zZmVyYWJsZXMuCisgICAgaWYgKHRyYW5zZmVyYWJsZXMpIHsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUgPSAoKnRyYW5zZmVyYWJsZXMpW2ld
LmdldCgpOworICAgICAgICAgICAgaWYgKE1lc3NhZ2VQb3J0KiBkYXRhUG9ydCA9IHRyYW5zZmVy
YWJsZS0+YXNNZXNzYWdlUG9ydCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFQb3J0ID09
IHRoaXMgfHwgbV9lbnRhbmdsZWRDaGFubmVsLT5pc0Nvbm5lY3RlZFRvKGRhdGFQb3J0KSkgewor
ICAgICAgICAgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9y
dHMsIGVjKTsKKyAgICAgICAgcmVjZWlwdHMgPSBUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0
KHRyYW5zZmVyYWJsZXMsIGVjKTsKICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVz
c2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscy5yZWxl
YXNlKCkpKTsKKyAgICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVz
c2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZShtZXNzYWdlLCByZWNlaXB0cy5yZWxl
YXNlKCkpKTsKK30KKworUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiBNZXNzYWdlUG9y
dDo6dHJhbnNmZXJPdXQoRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFtX2VudGFuZ2xl
ZENoYW5uZWwgfHwgbV90cmFuc2ZlckNsb3NlZCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RB
VEVfRVJSOworICAgICAgICByZXR1cm4gbV9lbnRhbmdsZWRDaGFubmVsLnJlbGVhc2UoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX3RyYW5zZmVyQ2xvc2VkID0gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIGRpc2VudGFuZ2xlKGVjKTsKKyAgICB9CiB9CiAKIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsPiBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUoRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0x
NzksOCArMTkzLDggQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAgICAg
ICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJh
eT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBldmVudERhdGEtPmNoYW5uZWxzKCkpOwotICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2
dCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgZXZlbnREYXRhLT5tZXNz
YWdlKCkpOworICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMg
PSBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKCptX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIGV2ZW50RGF0YS0+cmVjZWlwdHMoKSk7CisgICAgICAgIFJlZlB0cjxFdmVudD4gZXZ0
ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUodHJhbnNmZXJhYmxlcy5yZWxlYXNlKCksIGV2ZW50RGF0
YS0+bWVzc2FnZSgpKTsKIAogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAg
ZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7CkBAIC0yMDQsNDggKzIxOCw2IEBAIE1l
c3NhZ2VQb3J0KiBNZXNzYWdlUG9ydDo6bG9jYWxseUVudGFuZ2xlZFBvcnQoKQogICAgIHJldHVy
biBtX2VudGFuZ2xlZENoYW5uZWwgPyBtX2VudGFuZ2xlZENoYW5uZWwtPmxvY2FsbHlFbnRhbmds
ZWRQb3J0KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgOiAwOwogfQogCi1QYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhjb25z
dCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYg
KCFwb3J0cyB8fCAhcG9ydHMtPnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICAvLyBIYXNoU2V0IHVzZWQgdG8gZWZmaWNpZW50bHkgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgaW4g
dGhlIHBhc3NlZC1pbiBhcnJheS4KLSAgICBIYXNoU2V0PE1lc3NhZ2VQb3J0Kj4gcG9ydFNldDsK
LQotICAgIC8vIFdhbGsgdGhlIGluY29taW5nIGFycmF5IC0gaWYgdGhlcmUgYXJlIGFueSBkdXBs
aWNhdGUgcG9ydHMsIG9yIG51bGwgcG9ydHMgb3IgY2xvbmVkIHBvcnRzLCB0aHJvdyBhbiBlcnJv
ciAocGVyIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMpLgotICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgcG9ydHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE1lc3NhZ2VQ
b3J0KiBwb3J0ID0gKCpwb3J0cylbaV0uZ2V0KCk7Ci0gICAgICAgIGlmICghcG9ydCB8fCBwb3J0
LT5pc0Nsb25lZCgpIHx8IHBvcnRTZXQuY29udGFpbnMocG9ydCkpIHsKLSAgICAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgfQotICAgICAgICBwb3J0U2V0LmFkZChwb3J0KTsKLSAgICB9Ci0KLSAgICAvLyBQYXNzZWQt
aW4gcG9ydHMgcGFzc2VkIHZhbGlkaXR5IGNoZWNrcywgc28gd2UgY2FuIGRpc2VudGFuZ2xlIHRo
ZW0uCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBwb3J0QXJyYXkgPSBhZG9w
dFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkocG9ydHMtPnNpemUoKSkpOwotICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwIDsgaSA8IHBvcnRzLT5zaXplKCkgOyArK2kpIHsKLSAgICAg
ICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCA9ICgqcG9ydHMpW2ldLT5kaXNl
bnRhbmdsZShlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOyAvLyBDYW4ndCBnZW5lcmF0ZSBleGNl
cHRpb24gaGVyZSBpZiBwYXNzZWQgYWJvdmUgY2hlY2tzLgotICAgICAgICAoKnBvcnRBcnJheSlb
aV0gPSBjaGFubmVsLnJlbGVhc2UoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHBvcnRBcnJheS5yZWxl
YXNlKCk7Ci19Ci0KLVBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gTWVzc2FnZVBvcnQ6OmVu
dGFuZ2xlUG9ydHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCi17Ci0gICAgaWYgKCFjaGFubmVscyB8
fCAhY2hhbm5lbHMtPnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBPd25Q
dHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydEFycmF5ID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0
QXJyYXkoY2hhbm5lbHMtPnNpemUoKSkpOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgY2hhbm5lbHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4g
cG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4dCk7Ci0gICAgICAgIHBvcnQtPmVudGFu
Z2xlKCgqY2hhbm5lbHMpW2ldLnJlbGVhc2UoKSk7Ci0gICAgICAgICgqcG9ydEFycmF5KVtpXSA9
IHBvcnQucmVsZWFzZSgpOwotICAgIH0KLSAgICByZXR1cm4gcG9ydEFycmF5LnJlbGVhc2UoKTsK
LX0KLQogRXZlbnRUYXJnZXREYXRhKiBNZXNzYWdlUG9ydDo6ZXZlbnRUYXJnZXREYXRhKCkKIHsK
ICAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaApp
bmRleCAzYTg0MGZlLi5lOGRmNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIlRyYW5z
ZmVyYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00NSwyMiArNDYsMjEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiAKLSAgICAvLyBUaGUgb3ZlcndoZWxtaW5nbHkgY29tbW9uIGNh
c2UgaXMgc2VuZGluZyBhIHNpbmdsZSBwb3J0LCBzbyBoYW5kbGUgdGhhdCBlZmZpY2llbnRseSB3
aXRoIGFuIGlubGluZSBidWZmZXIgb2Ygc2l6ZSAxLgotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0
cjxNZXNzYWdlUG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJyYXk7Ci0KICAgICAvLyBGSVhNRTogVGhp
cyBjbGFzcyBzaG91bGQgaW5oZXJpdCBmcm9tIEFjdGl2ZURPTU9iamVjdCBhbmQgdXNlCiAgICAg
Ly8gc2V0UGVuZGluZ0FjdGl2aXR5IC8gdW5zZXRQZW5kaW5nQWN0aXZpdHkgaW5zdGVhZCBvZiBk
dXBsaWNhdGluZwogICAgIC8vIEFjdGl2ZURPTU9iamVjdCdzIGZlYXR1cmVzIGFuZCByZWx5aW5n
IG9uIEphdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9uCiAgICAgLy8gdG8gZ2V0IGl0cyBsaWZl
dGltZSByaWdodC4KLSAgICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1YmxpYyBSZWZDb3VudGVkPE1l
c3NhZ2VQb3J0PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKyAgICBjbGFzcyBNZXNzYWdlUG9ydCA6
IHB1YmxpYyBUcmFuc2ZlcmFibGUsIHB1YmxpYyBFdmVudFRhcmdldCB7CiAgICAgcHVibGljOgor
ICAgICAgICBNZXNzYWdlUG9ydCogYXNNZXNzYWdlUG9ydCgpIHsgcmV0dXJuIHRoaXM7IH0KKwog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNZXNzYWdlUG9ydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KICAgICAgICAgfk1lc3Nh
Z2VQb3J0KCk7CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBv
c3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25z
dCBNZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RN
ZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2Zl
cmFibGVBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0
aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLSAgICAg
ICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1l
c3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVy
YWJsZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgICAg
IHZvaWQgY2xvc2UoKTsKQEAgLTY4LDE0ICs2OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBlbnRhbmdsZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4pOwogICAg
ICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gZGlzZW50YW5nbGUoRXhjZXB0aW9u
Q29kZSYpOwogCi0gICAgICAgIC8vIERpc2VudGFuZ2xlIGFuIGFycmF5IG9mIHBvcnRzLCByZXR1
cm5pbmcgdGhlIGVudGFuZ2xlZCBjaGFubmVscy4KLSAgICAgICAgLy8gUGVyIHNlY3Rpb24gOC4z
LjMgb2YgdGhlIEhUTUw1IHNwZWMsIGdlbmVyYXRlcyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNl
cHRpb24gaWYgYW55IG9mIHRoZSBwYXNzZWQgcG9ydHMgYXJlIG51bGwgb3Igbm90IGVudGFuZ2xl
ZC4KLSAgICAgICAgLy8gUmV0dXJucyAwIGlmIHRoZXJlIGlzIGFuIGV4Y2VwdGlvbiwgb3IgaWYg
dGhlIHBhc3NlZC1pbiBhcnJheSBpcyAwL2VtcHR5LgotICAgICAgICBzdGF0aWMgUGFzc093blB0
cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gZGlzZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdl
UG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgICAgIC8vIEVudGFuZ2xlcyBhbiBh
cnJheSBvZiBjaGFubmVscywgcmV0dXJuaW5nIGFuIGFycmF5IG9mIE1lc3NhZ2VQb3J0cyBpbiBt
YXRjaGluZyBvcmRlci4KLSAgICAgICAgLy8gUmV0dXJucyAwIGlmIHRoZSBwYXNzZWQgYXJyYXkg
aXMgMC9lbXB0eS4KLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4g
ZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICBib29sIGlzVHJhbnNmZXJDbG9zZWQoKSBjb25z
dCB7IHJldHVybiBtX3RyYW5zZmVyQ2xvc2VkOyB9CisgICAgICAgIFBhc3NPd25QdHI8VHJhbnNm
ZXJhYmxlUmVjZWlwdD4gdHJhbnNmZXJPdXQoRXhjZXB0aW9uQ29kZSYgZWMpOwogCiAgICAgICAg
IHZvaWQgbWVzc2FnZUF2YWlsYWJsZSgpOwogICAgICAgICBib29sIHN0YXJ0ZWQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0ZWQ7IH0KQEAgLTg4LDggKzgyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlcygpOwogCi0gICAgICAgIHVzaW5nIFJl
ZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+OjpyZWY7Ci0gICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVz
c2FnZVBvcnQ+OjpkZXJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFuc2ZlcmFibGU+
OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhbnNmZXJhYmxlPjo6ZGVyZWY7CiAK
ICAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIApAQCAtMTA1LDkgKzk5LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIHVzZWQgc29sZWx5
IHRvIGVuYWJsZSBhIEdDIG9wdGltaXphdGlvbi4gU29tZSBwbGF0Zm9ybXMgbWF5IG5vdCBiZSBh
YmxlIHRvIGRldGVybWluZSBvd25lcnNoaXAgb2YgdGhlIHJlbW90ZSBwb3J0IChzaW5jZSBpdCBt
YXkgbGl2ZSBjcm9zcy1wcm9jZXNzKSAtIHRob3NlIHBsYXRmb3JtcyBtYXkgYWx3YXlzIHJldHVy
biBudWxsLgogICAgICAgICBNZXNzYWdlUG9ydCogbG9jYWxseUVudGFuZ2xlZFBvcnQoKTsKICAg
ICAgICAgLy8gQSBwb3J0IHN0YXJ0cyBvdXQgaXRzIGxpZmUgZW50YW5nbGVkLCBhbmQgcmVtYWlu
cyBlbnRhbmdsZWQgdW50aWwgaXQgaXMgY2xvc2VkIG9yIGlzIGNsb25lZC4KLSAgICAgICAgYm9v
bCBpc0VudGFuZ2xlZCgpIHsgcmV0dXJuICFtX2Nsb3NlZCAmJiAhaXNDbG9uZWQoKTsgfQorICAg
ICAgICBib29sIGlzRW50YW5nbGVkKCkgY29uc3QgeyByZXR1cm4gIW1fY2xvc2VkICYmICFpc0Ns
b25lZCgpOyB9CiAgICAgICAgIC8vIEEgcG9ydCBpcyBjbG9uZWQgaWYgaXRzIGVudGFuZ2xlZCBj
aGFubmVsIGhhcyBiZWVuIHJlbW92ZWQgYW5kIHNlbnQgdG8gYSBuZXcgb3duZXIgdmlhIHBvc3RN
ZXNzYWdlKCkuCi0gICAgICAgIGJvb2wgaXNDbG9uZWQoKSB7IHJldHVybiAhbV9lbnRhbmdsZWRD
aGFubmVsOyB9CisgICAgICAgIGJvb2wgaXNDbG9uZWQoKSBjb25zdCB7IHJldHVybiAhbV9lbnRh
bmdsZWRDaGFubmVsOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBNZXNzYWdlUG9ydChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Jik7CkBAIC0xMjEsNiArMTE1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIGJvb2wgbV9zdGFydGVkOwogICAgICAgICBib29sIG1fY2xvc2VkOwor
ICAgICAgICBib29sIG1fdHJhbnNmZXJDbG9zZWQ7CiAKICAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgICAgICBFdmVudFRhcmdldERh
dGEgbV9ldmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAppbmRleCAw
ZjQxMGNjLi4zMmI0NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwKQEAgLTM3LDcg
KzM3LDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAvLyBXZSBuZWVkIHRvIGhhdmUgc29tZXRoaW5nIGFz
IGFuIE9iakMgYmluZGluZywgYmVjYXVzZSBNZXNzYWdlUG9ydCBpcyB1c2VkIGluIE1lc3NhZ2VF
dmVudCwgd2hpY2ggYWxyZWFkeSBoYXMgb25lLAogLy8gYnV0IHdlIGRvbid0IHdhbnQgdG8gYWN0
dWFsbHkgZXhwb3NlIHRoZSBBUEkgd2hpbGUgaXQgaXMgaW4gZmx1eC4KICNpZiBkZWZpbmVkKExB
TkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKLSAgICAgICAgW0N1c3Rv
bV0gdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBB
cnJheSBtZXNzYWdlUG9ydHMpCisgICAgICAgIFtDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4g
RE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gQXJyYXkgdHJhbnNmZXIpCiAgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzdGFydCgpOwogICAgICAg
ICB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3Bw
CmluZGV4IDM2N2Y3ZWQuLmMwNjBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dENoYW5uZWwuY3BwCkBAIC0yOCwyMCArMjgsMjkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0Q2hhbm5lbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIAotUGFzc093blB0
cjxNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YT4gTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVu
dERhdGE6OmNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwg
UGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCitQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50
RGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQ
YXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBFdmVudERhdGEobWVzc2FnZSwgY2hhbm5lbHMpKTsKKyAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEV2ZW50RGF0YShtZXNzYWdlLCByZWNlaXB0cykpOwogfQogCi1NZXNz
YWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6RXZlbnREYXRhKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBjaGFubmVscykKK01lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVudERhdGEoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKICAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQot
ICAgICwgbV9jaGFubmVscyhjaGFubmVscykKKyAgICAsIG1fcmVjZWlwdHMocmVjZWlwdHMpCiB7
CiB9CiAKK1Bhc3NSZWZQdHI8VHJhbnNmZXJhYmxlPiBNZXNzYWdlUG9ydENoYW5uZWw6OnRyYW5z
ZmVySW4oUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiBvd25UaGlzLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgQVNTRVJUKG93blRoaXMtPmFzTWVzc2FnZVBv
cnRDaGFubmVsKCkpOworICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IG93blRoaXNDYXN0
ID0gYWRvcHRQdHIob3duVGhpcy5sZWFrUHRyKCktPmFzTWVzc2FnZVBvcnRDaGFubmVsKCkpOwor
ICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4
dCk7CisgICAgcG9ydC0+ZW50YW5nbGUob3duVGhpc0Nhc3QucmVsZWFzZSgpKTsKKyAgICByZXR1
cm4gcG9ydC5yZWxlYXNlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaAppbmRleCAwNzY2OGE0Li44NDM1ODk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01MCwxNCArNTEsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCi0gICAgLy8gVGhlIG92ZXJ3aGVsbWluZ2x5IGNv
bW1vbiBjYXNlIGlzIHNlbmRpbmcgYSBzaW5nbGUgcG9ydCwgc28gaGFuZGxlIHRoYXQgZWZmaWNp
ZW50bHkgd2l0aCBhbiBpbmxpbmUgYnVmZmVyIG9mIHNpemUgMS4KLSAgICB0eXBlZGVmIFZlY3Rv
cjxPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgMT4gTWVzc2FnZVBvcnRDaGFubmVsQXJyYXk7
Ci0KICAgICAvLyBNZXNzYWdlUG9ydENoYW5uZWwgaXMgYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBp
bnRlcmZhY2UgdG8gdGhlIHJlbW90ZSBzaWRlIG9mIGEgbWVzc2FnZSBjaGFubmVsLgogICAgIC8v
IEl0IGFjdHMgYXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IFBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsIGltcGxlbWVudGF0aW9uIHdoaWNoIGVuc3VyZXMgdGhhdCB0
aGUgcGxhdGZvcm0tZGVwZW5kZW50IGNsb3NlKCkgbWV0aG9kIGlzIGludm9rZWQgYmVmb3JlIGRl
c3RydWN0aW9uLgotICAgIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbCB7CisgICAgY2xhc3MgTWVz
c2FnZVBvcnRDaGFubmVsIDogcHVibGljIFRyYW5zZmVyYWJsZVJlY2VpcHQgewogICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShNZXNzYWdlUG9ydENoYW5uZWwpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBwdWJsaWM6CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbCogYXNNZXNz
YWdlUG9ydENoYW5uZWwoKSB7IHJldHVybiB0aGlzOyB9CisKKyAgICAgICAgUGFzc1JlZlB0cjxU
cmFuc2ZlcmFibGU+IHRyYW5zZmVySW4oUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0Piwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgICAgICBib29sIGlzRmxhdHRlbmFibGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUNoYW5u
ZWwoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4sIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+KTsKIAog
ICAgICAgICAvLyBDcmVhdGVzIGEgbmV3IHdyYXBwZXIgZm9yIHRoZSBwYXNzZWQgY2hhbm5lbC4K
QEAgLTgyLDE1ICs4NSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIEV2
ZW50RGF0YSB7CiAgICAgICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudERhdGEpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgc3Rh
dGljIFBhc3NPd25QdHI8RXZlbnREYXRhPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxFdmVudERhdGE+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7
CiAKICAgICAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogbWVzc2FnZSgpIHsgcmV0dXJu
IG1fbWVzc2FnZS5nZXQoKTsgfQotICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENo
YW5uZWxBcnJheT4gY2hhbm5lbHMoKSB7IHJldHVybiBtX2NoYW5uZWxzLnJlbGVhc2UoKTsgfQor
ICAgICAgICAgICAgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRz
KCkgeyByZXR1cm4gbV9yZWNlaXB0cy5yZWxlYXNlKCk7IH0KIAogICAgICAgICBwcml2YXRlOgot
ICAgICAgICAgICAgRXZlbnREYXRhKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgICAg
ICBFdmVudERhdGEoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBh
c3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CiAgICAgICAgICAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7Ci0gICAgICAgICAgICBPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CisgICAgICAgICAgICBPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5PiBtX3JlY2VpcHRzOwogICAgICAgICB9OwogCiAgICAgICAg
IC8vIFNlbmRzIGEgbWVzc2FnZSBhbmQgb3B0aW9uYWwgY2xvbmVkIHBvcnQgdG8gdGhlIHJlbW90
ZSBwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggMGE5ODMxMy4uODBiZTc4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2lu
Y2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDcg
KzQzLDggQEAgcHVibGljOgogICAgIHZvaWQgaW5pdFBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIGJvb2wgaXNQb3BTdGF0ZUV2ZW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVPYmplY3QuZ2V0KCk7IH0gICAgCisgICAgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVPYmplY3QuZ2V0KCk7
IH0KKyAgICBUcmFuc2ZlcmFibGVBcnJheSogZGF0YURlcGVuZGVuY2llcygpIGNvbnN0IHsgcmV0
dXJuIDA7IH0KIAogcHJpdmF0ZToKICAgICBQb3BTdGF0ZUV2ZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmFuc2ZlcmFibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNDk5
ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmNw
cApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+
IFRyYW5zZmVyYWJsZTo6dHJhbnNmZXJBbGxPdXQoVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVy
YWJsZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghdHJhbnNmZXJhYmxlcyB8fCAh
dHJhbnNmZXJhYmxlcy0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8v
IEhhc2hTZXQgdXNlZCB0byBlZmZpY2llbnRseSBjaGVjayBmb3IgZHVwbGljYXRlcyBpbiB0aGUg
cGFzc2VkLWluIGFycmF5LgorICAgIEhhc2hTZXQ8VHJhbnNmZXJhYmxlKj4gdHJhbnNmZXJhYmxl
U2V0OworCisgICAgLy8gV2FsayB0aGUgaW5jb21pbmcgYXJyYXkgLSBpZiB0aGVyZSBhcmUgYW55
IGR1cGxpY2F0ZSB0cmFuc2ZlcmFibGVzLCBvciB0cmFuc2ZlcnJlZCBwb3J0cyBvciBjbG9zZWQg
cG9ydHMsIHRocm93IGFuIGVycm9yIChwZXIgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3Bl
YykuCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXpl
KCk7ICsraSkgeworICAgICAgICBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSA9ICgqdHJhbnNm
ZXJhYmxlcylbaV0uZ2V0KCk7CisgICAgICAgIGlmICghdHJhbnNmZXJhYmxlIHx8IHRyYW5zZmVy
YWJsZS0+aXNUcmFuc2ZlckNsb3NlZCgpIHx8IHRyYW5zZmVyYWJsZVNldC5jb250YWlucyh0cmFu
c2ZlcmFibGUpKSB7CisgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgdHJhbnNmZXJhYmxlU2V0
LmFkZCh0cmFuc2ZlcmFibGUpOworICAgIH0KKworICAgIC8vIFBhc3NlZC1pbiBwb3J0cyBwYXNz
ZWQgdmFsaWRpdHkgY2hlY2tzLCBzbyB3ZSBjYW4gdHJhbnNmZXIgdGhlbSBvdXQuCisgICAgT3du
UHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdEFycmF5ID0gYWRvcHRQdHIobmV3
IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSh0cmFuc2ZlcmFibGVzLT5zaXplKCkpKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMCA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXplKCkgOyArK2kp
IHsKKyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+IHJlY2VpcHQgPSAoKnRyYW5z
ZmVyYWJsZXMpW2ldLT50cmFuc2Zlck91dChlYyk7CisgICAgICAgIEFTU0VSVCghZWMpOyAvLyBD
YW4ndCBnZW5lcmF0ZSBleGNlcHRpb24gaGVyZSBpZiBwYXNzZWQgYWJvdmUgY2hlY2tzLgorICAg
ICAgICAoKnJlY2VpcHRBcnJheSlbaV0gPSByZWNlaXB0LnJlbGVhc2UoKTsKKyAgICB9CisgICAg
cmV0dXJuIHJlY2VpcHRBcnJheS5yZWxlYXNlKCk7Cit9CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJh
YmxlQXJyYXk+IFRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+
IHJlY2VpcHRzKQoreworICAgIGlmICghcmVjZWlwdHMgfHwgIXJlY2VpcHRzLT5zaXplKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0
cmFuc2ZlcmFibGVBcnJheSA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVBcnJheShyZWNlaXB0
cy0+c2l6ZSgpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCByZWNlaXB0cy0+
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgKCp0cmFuc2ZlcmFibGVBcnJheSlbaV0gPSAoKnJlY2Vp
cHRzKVtpXS0+dHJhbnNmZXJJbigoKnJlY2VpcHRzKVtpXS5yZWxlYXNlKCksIGNvbnRleHQpOwor
ICAgIH0KKyAgICByZXR1cm4gdHJhbnNmZXJhYmxlQXJyYXkucmVsZWFzZSgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNm
ZXJhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxMGM2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAq
LworCisjaWZuZGVmIFRyYW5zZmVyYWJsZV9oCisjZGVmaW5lIFRyYW5zZmVyYWJsZV9oCisKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIE1lc3NhZ2VQb3J0OworICAgIGNsYXNz
IE1lc3NhZ2VQb3J0Q2hhbm5lbDsKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
ICAgIGNsYXNzIFRyYW5zZmVyYWJsZTsKKyAgICBjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0Owor
CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJs
ZUFycmF5OworICAgIHR5cGVkZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0Piwg
MT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OworCisgICAgY2xhc3MgVHJhbnNmZXJhYmxlIDog
cHVibGljIFJlZkNvdW50ZWQ8VHJhbnNmZXJhYmxlPiB7CisgICAgcHVibGljOgorICAgICAgICB2
aXJ0dWFsIH5UcmFuc2ZlcmFibGUoKSB7IH0KKworICAgICAgICB2aXJ0dWFsIE1lc3NhZ2VQb3J0
KiBhc01lc3NhZ2VQb3J0KCkgeyByZXR1cm4gMDsgfQorCisgICAgICAgIHZpcnR1YWwgUGFzc093
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiB0cmFuc2Zlck91dChFeGNlcHRpb25Db2RlJikgPSAw
OworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc2ZlckNsb3NlZCgpIGNvbnN0ID0gMDsKKwor
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHRyYW5z
ZmVyQWxsT3V0KFRyYW5zZmVyYWJsZUFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgcHJv
dGVjdGVkOgorICAgICAgICBUcmFuc2ZlcmFibGUoKSB7IH0KKyAgICB9OworCisgICAgY2xhc3Mg
VHJhbnNmZXJhYmxlUmVjZWlwdCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5UcmFu
c2ZlcmFibGVSZWNlaXB0KCkgeyB9CisKKyAgICAgICAgdmlydHVhbCBNZXNzYWdlUG9ydENoYW5u
ZWwqIGFzTWVzc2FnZVBvcnRDaGFubmVsKCkgeyByZXR1cm4gMDsgfQorICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNGbGF0dGVuYWJsZSgpIGNvbnN0ID0gMDsKKworICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8VHJhbnNmZXJhYmxlPiB0cmFuc2ZlckluKFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVj
ZWlwdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSA9IDA7CisKKyAgICAgICAgc3RhdGljIFBh
c3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyQWxsSW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CisKKyAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIFRyYW5zZmVyYWJsZVJlY2VpcHQoKSB7IH0KKyAgICB9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBUcmFuc2ZlcmFibGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDJhYjdmM2IuLmExNWY2NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKQEAgLTEyMCwyMCArMTIwLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUG9zdE1lc3NhZ2VUaW1lciA6IHB1YmxpYyBUaW1lckJhc2UgewogcHVibGljOgot
ICAgIFBvc3RNZXNzYWdlVGltZXIoRE9NV2luZG93KiB3aW5kb3csIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgUGFz
c1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMsIFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pCisgICAgUG9zdE1l
c3NhZ2VUaW1lcihET01XaW5kb3cqIHdpbmRvdywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBQYXNzUmVmUHRyPERP
TVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVj
ZWlwdHMsIFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pCiAgICAgICAgIDogbV93aW5kb3co
d2luZG93KQogICAgICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogICAgICAgICAsIG1fb3JpZ2lu
KHNvdXJjZU9yaWdpbikKICAgICAgICAgLCBtX3NvdXJjZShzb3VyY2UpCi0gICAgICAgICwgbV9j
aGFubmVscyhjaGFubmVscykKKyAgICAgICAgLCBtX3JlY2VpcHRzKHJlY2VpcHRzKQogICAgICAg
ICAsIG1fdGFyZ2V0T3JpZ2luKHRhcmdldE9yaWdpbikKICAgICB7CiAgICAgfQogCiAgICAgUGFz
c1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgewotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRz
ID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmNvbnRleHQsIG1fY2hhbm5lbHMucmVsZWFz
ZSgpKTsKLSAgICAgICAgcmV0dXJuIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2VQb3J0cy5y
ZWxlYXNlKCksIG1fbWVzc2FnZSwgbV9vcmlnaW4sICIiLCBtX3NvdXJjZSk7CisgICAgICAgIE93
blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRyYW5zZmVyYWJsZVJlY2Vp
cHQ6OnRyYW5zZmVyQWxsSW4oKmNvbnRleHQsIG1fcmVjZWlwdHMucmVsZWFzZSgpKTsKKyAgICAg
ICAgcmV0dXJuIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLCBt
X21lc3NhZ2UsIG1fb3JpZ2luLCAiIiwgbV9zb3VyY2UpOwogICAgIH0KICAgICBTZWN1cml0eU9y
aWdpbiogdGFyZ2V0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7
IH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbV9tZXNzYWdlOwogICAgIFN0cmluZyBtX29yaWdpbjsKICAgICBSZWZQdHI8
RE9NV2luZG93PiBtX3NvdXJjZTsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+
IG1fY2hhbm5lbHM7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gbV9yZWNl
aXB0czsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2luOwogfTsKIApA
QCAtNzk3LDE1ICs3OTcsMTUgQEAgQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihET01X
aW5kb3c6OlBFUlNJU1RFTlQpID09IHN0YXRpY19jYXN0PGludD4oQXN5bmMKIAogI2VuZGlmCiAK
LXZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3Jp
Z2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERPTVdpbmRv
dzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Us
IFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwg
RE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIE1lc3NhZ2VQb3J0
QXJyYXkgcG9ydHM7Ci0gICAgaWYgKHBvcnQpCi0gICAgICAgIHBvcnRzLmFwcGVuZChwb3J0KTsK
LSAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmcG9ydHMsIHRhcmdldE9yaWdpbiwgc291cmNlLCBl
Yyk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlczsKKyAgICBpZiAodHJhbnNm
ZXJhYmxlKQorICAgICAgICB0cmFuc2ZlcmFibGVzLmFwcGVuZCh0cmFuc2ZlcmFibGUpOworICAg
IHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZ0cmFuc2ZlcmFibGVzLCB0YXJnZXRPcmlnaW4sIHNvdXJj
ZSwgZWMpOwogfQogCi12b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRz
LCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxl
cywgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTgy
MSw3ICs4MjEsNyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lcwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQ
b3J0OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7CisgICAgT3duUHRyPFRyYW5zZmVyYWJs
ZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMgPSBUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KHRy
YW5zZmVyYWJsZXMsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKIApAQCAtODMz
LDcgKzgzMyw3IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzCiAgICAgU3RyaW5nIHNvdXJjZU9y
aWdpbiA9IHNvdXJjZURvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOwogCiAg
ICAgLy8gU2NoZWR1bGUgdGhlIG1lc3NhZ2UuCi0gICAgUG9zdE1lc3NhZ2VUaW1lciogdGltZXIg
PSBuZXcgUG9zdE1lc3NhZ2VUaW1lcih0aGlzLCBtZXNzYWdlLCBzb3VyY2VPcmlnaW4sIHNvdXJj
ZSwgY2hhbm5lbHMucmVsZWFzZSgpLCB0YXJnZXQuZ2V0KCkpOworICAgIFBvc3RNZXNzYWdlVGlt
ZXIqIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIodGhpcywgbWVzc2FnZSwgc291cmNlT3Jp
Z2luLCBzb3VyY2UsIHJlY2VpcHRzLnJlbGVhc2UoKSwgdGFyZ2V0LmdldCgpKTsKICAgICB0aW1l
ci0+c3RhcnRPbmVTaG90KDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCBhMmFk
ODA5Li4zZGMzYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlRyYW5zZmVyYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0LDcgKzc1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogCi0g
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJh
eTsKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJhbnNmZXJhYmxlPiwgMT4gVHJhbnNmZXJh
YmxlQXJyYXk7CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBAIC0yMjgsOSAr
MjI5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQo
KTsKICAgICAgICAgdm9pZCByZXNldEdlb2xvY2F0aW9uKCk7CiAKLSAgICAgICAgdm9pZCBwb3N0
TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3Qg
TWVzc2FnZVBvcnRBcnJheSosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cq
IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGVBcnJheSos
IGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhl
IE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIGNv
bnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29k
ZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdp
biwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0
TWVzc2FnZVRpbWVyRmlyZWQoUGFzc093blB0cjxQb3N0TWVzc2FnZVRpbWVyPik7CiAKICAgICAg
ICAgdm9pZCBzY3JvbGxCeShpbnQgeCwgaW50IHkpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCmluZGV4IDBmMzE2MmYuLjAwMmUxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwKQEAgLTIxMiwxMSArMjEyLDExIEBAIG1vZHVsZSB3aW5kb3cgewogCiAgICAgICAgIC8vIGNy
b3NzLWRvY3VtZW50IG1lc3NhZ2luZwogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkg
JiYgTEFOR1VBR0VfSkFWQVNDUklQVAotICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5
LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3Nh
Z2UsIGluIFtPcHRpb25hbF0gQXJyYXkgbWVzc2FnZVBvcnRzLCBpbiBET01TdHJpbmcgdGFyZ2V0
T3JpZ2luKQorICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQg
cG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3NhZ2UsIGluIFtPcHRpb25h
bF0gQXJyYXkgdHJhbnNmZXJMaXN0LCBpbiBET01TdHJpbmcgdGFyZ2V0T3JpZ2luKQogICAgICAg
ICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZWxzZQogICAgICAgICAvLyBUaGVyZSdzIG5v
IGdvb2Qgd2F5IHRvIGV4cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZv
ciBub3cganVzdCBhbGxvdyBwYXNzaW5nIGluIGEgc2luZ2xlIHBvcnQuCi0gICAgICAgIFtEb05v
dENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxp
emVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBNZXNzYWdlUG9ydCBtZXNzYWdl
UG9ydCwgaW4gRE9NU3RyaW5nIHRhcmdldE9yaWdpbikKKyAgICAgICAgW0RvTm90Q2hlY2tEb21h
aW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0IHRyYW5zZmVyLCBpbiBET01T
dHJpbmcgdGFyZ2V0T3JpZ2luKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKaW5kZXggOWFkZTljOC4uY2NkODg4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAi
VHJhbnNmZXJhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTYzLDYgKzY0LDgg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25zdDsKICAgICBQYXNz
UmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSgpIGNvbnN0OworICAgIC8vIEFuIEluZGV4ZWREQiBvbmx5
IGhvbGRzIGZsYXR0ZW5lZCBkYXRhLgorICAgIFRyYW5zZmVyYWJsZUFycmF5KiB2YWx1ZURlcGVu
ZGVuY2llcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICBJREJBbnkqIHNvdXJjZSgpIGNvbnN0
OwogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiB1cGRhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgRXhjZXB0aW9uQ29kZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5j
cHAKaW5kZXggNTRiNWJhOC4uZDM2ZDJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCkBAIC00NywyNiArNDcsMjUgQEAgRGVkaWNh
dGVkV29ya2VyQ29udGV4dDo6RGVkaWNhdGVkV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdXMKIH0KIAogLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBk
YXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLXZvaWQgRGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRGVkaWNh
dGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwotICAgIGlmIChwb3J0KQotICAg
ICAgICBwb3J0cy5hcHBlbmQocG9ydCk7Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnBvcnRz
LCBlYyk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlczsKKyAgICBpZiAodHJh
bnNmZXJhYmxlKQorICAgICAgICB0cmFuc2ZlcmFibGVzLmFwcGVuZCh0cmFuc2ZlcmFibGUpOwor
ICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZ0cmFuc2ZlcmFibGVzLCBlYyk7CiB9CiAKIHZvaWQg
RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHBvc3RNZXNz
YWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PE1lc3NhZ2VQb3J0QXJyYXkqPigwKSwgZWMpOworICAg
IHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PFRyYW5zZmVyYWJsZSo+KDApLCBlYyk7
CiB9CiAKLXZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkq
IHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6
cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRy
YW5zZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAg
ICAvLyBEaXNlbnRhbmdsZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0
byB0aGUgcmVtb3RlIGNvbnRleHQuCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7Cisg
ICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMgPSBUcmFuc2ZlcmFi
bGU6OnRyYW5zZmVyQWxsT3V0KHRyYW5zZmVyYWJsZXMsIGVjKTsKICAgICBpZiAoZWMpCiAgICAg
ICAgIHJldHVybjsKLSAgICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHkoKS5wb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KG1lc3NhZ2UsIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisgICAgdGhyZWFk
KCktPndvcmtlck9iamVjdFByb3h5KCkucG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdl
LCByZWNlaXB0cy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6
OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQu
aAppbmRleCBkYmE1MmFlLi4zZmE2NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlckNvbnRleHQuaApAQCAtNTYsOSArNTYsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgICAgIHZpcnR1YWwgRGVkaWNhdGVk
V29ya2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgeyByZXR1cm4gdGhpczsg
fQogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4sIFRyYW5zZmVyYWJsZUFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
ICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGlu
Z3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAg
ICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBU
cmFuc2ZlcmFibGUqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihtZXNzYWdlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwKaW5kZXggMWEzODBmZS4uMzQ2YTUyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRs
CkBAIC00Miw3ICs0Miw3IEBAIG1vZHVsZSB0aHJlYWRzIHsKIAogI2lmICFkZWZpbmVkKExBTkdV
QUdFX0NQUCkgfHwgIUxBTkdVQUdFX0NQUAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQ
VCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAotICAgICAgICBbQ3VzdG9tXSB2b2lkIHBvc3RNZXNz
YWdlKGluIGFueSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykKKyAg
ICAgICAgW0N1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBhbnkgbWVzc2FnZSwgaW4gW09wdGlv
bmFsXSBBcnJheSB0cmFuc2Zlckxpc3QpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKICNlbHNlCiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhwb3NlIGFuIGFy
cmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0IGFsbG93IHBhc3Npbmcg
aW4gYSBzaW5nbGUgcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ckNvbnRleHQuY3BwCmluZGV4IDI0MDAyZTQuLjEzNTQ5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJN
ZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCiAKQEAgLTQ0LDcg
KzQ1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4g
Y3JlYXRlQ29ubmVjdEV2ZW50KFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQpCiB7Ci0gICAg
UmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShhZG9wdFB0
cihuZXcgTWVzc2FnZVBvcnRBcnJheSgxLCBwb3J0KSkpOworICAgIFJlZlB0cjxUcmFuc2ZlcmFi
bGU+IHRyYW5zZmVyYWJsZShwb3J0KTsKKyAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCA9
IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVBcnJheSgxLCB0
cmFuc2ZlcmFibGUpKSk7CiAgICAgZXZlbnQtPmluaXRFdmVudChldmVudE5hbWVzKCkuY29ubmVj
dEV2ZW50LCBmYWxzZSwgZmFsc2UpOwogICAgIHJldHVybiBldmVudDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmNwcAppbmRleCA3MjRmNjQxLi42MmI0MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuY3BwCkBAIC04MywyNiArODMsMjYgQEAgV29ya2VyOjp+V29ya2VyKCkKIH0KIAogLy8g
RklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcg
IzI4Nzc0KS4KLXZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsKLSAgICBpZiAocG9ydCkKLSAgICAg
ICAgcG9ydHMuYXBwZW5kKHBvcnQpOwotICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZwb3J0cywg
ZWMpOworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZXM7CisgICAgaWYgKHRyYW5z
ZmVyYWJsZSkKKyAgICAgICAgdHJhbnNmZXJhYmxlcy5hcHBlbmQodHJhbnNmZXJhYmxlKTsKKyAg
ICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmdHJhbnNmZXJhYmxlcywgZWMpOwogfQogCiB2b2lkIFdv
cmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3Nh
Z2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHN0YXRp
Y19jYXN0PE1lc3NhZ2VQb3J0QXJyYXkqPigwKSwgZWMpOworICAgIHBvc3RNZXNzYWdlKG1lc3Nh
Z2UsIHN0YXRpY19jYXN0PFRyYW5zZmVyYWJsZSo+KDApLCBlYyk7CiB9CiAKLXZvaWQgV29ya2Vy
Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwg
Y29uc3QgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBX
b3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNz
YWdlLCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4gcHJlcGFyYXRpb24gZm9yIHNlbmRp
bmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4gY2hhbm5lbHMgPSBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhwb3J0cywg
ZWMpOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0gVHJh
bnNmZXJhYmxlOjp0cmFuc2ZlckFsbE91dCh0cmFuc2ZlcmFibGVzLCBlYyk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0UHJveHktPnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJDb250ZXh0KG1lc3NhZ2UsIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisgICAgbV9jb250ZXh0UHJv
eHktPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UsIHJlY2VpcHRzLnJlbGVhc2Uo
KSk7CiB9CiAKIHZvaWQgV29ya2VyOjp0ZXJtaW5hdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgK
aW5kZXggOGU0ZWMzYS4uNzYwMmZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC01Nyw5
ICs1Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBXb3JrZXIqIHRv
V29ya2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgVHJhbnNmZXJhYmxlQXJyYXkqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVn
ICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiwgRXhjZXB0aW9uQ29kZSYpOworICAg
ICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBUcmFuc2ZlcmFibGUqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgdm9pZCB0
ZXJtaW5hdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCmluZGV4IDg0NDQ4ZTYuLmY1
MzkyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwKQEAgLTQxLDcgKzQxLDcgQEAgbW9k
dWxlIHRocmVhZHMgewogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7
CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJ
UFQKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpc2VkU2NyaXB0
VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdlUG9ydHMpCisgICAgICAg
IFtDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXNlZFNjcmlwdFZhbHVlIG1lc3Nh
Z2UsIGluIFtPcHRpb25hbF0gQXJyYXkgdHJhbnNmZXJMaXN0KQogICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAjZWxzZQogICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRv
IGV4cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBh
bGxvdyBwYXNzaW5nIGluIGEgc2luZ2xlIHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0UHJveHkuaAppbmRleCA4Nzk4ZjUxLi40OTZiNjU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgKQEAgLTMzLDcgKzMzLDggQEAKIAog
I2lmIEVOQUJMRShXT1JLRVJTKQogCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAg
LTUzLDcgKzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBw
b3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PikgPSAw
OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAK
aW5kZXggZjY5OThkYi4uMTY5NmFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTQ3LDE1ICs0NywxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzayA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxN
ZXNzYWdlV29ya2VyQ29udGV4dFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hh
bm5lbHMpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrPiBj
cmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25Q
dHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrKG1lc3NhZ2UsIGNoYW5u
ZWxzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVdvcmtlckNvbnRleHRU
YXNrKG1lc3NhZ2UsIHJlY2VpcHRzKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE1lc3NhZ2VX
b3JrZXJDb250ZXh0VGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAgTWVz
c2FnZVdvcmtlckNvbnRleHRUYXNrKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiAg
ICAgICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgICwgbV9jaGFubmVscyhjaGFubmVs
cykKKyAgICAgICAgLCBtX3JlY2VpcHRzKHJlY2VpcHRzKQogICAgIHsKICAgICB9CiAKQEAgLTYz
LDI3ICs2MywyNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUKHNjcmlwdENvbnRl
eHQtPmlzV29ya2VyQ29udGV4dCgpKTsKICAgICAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4dCog
Y29udGV4dCA9IHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckNvbnRleHQqPihzY3JpcHRDb250
ZXh0KTsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBv
cnQ6OmVudGFuZ2xlUG9ydHMoKnNjcmlwdENvbnRleHQsIG1fY2hhbm5lbHMucmVsZWFzZSgpKTsK
LSAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShwb3J0
cy5yZWxlYXNlKCksIG1fbWVzc2FnZSkpOworICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJy
YXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKCpz
Y3JpcHRDb250ZXh0LCBtX3JlY2VpcHRzLnJlbGVhc2UoKSk7CisgICAgICAgIGNvbnRleHQtPmRp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUodHJhbnNmZXJhYmxlcy5yZWxlYXNlKCks
IG1fbWVzc2FnZSkpOwogICAgICAgICBjb250ZXh0LT50aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJv
eHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoY29udGV4dC0+aGFzUGVuZGluZ0Fj
dGl2aXR5KCkpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtX21lc3NhZ2U7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBt
X2NoYW5uZWxzOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IG1fcmVjZWlw
dHM7CiB9OwogCiBjbGFzcyBNZXNzYWdlV29ya2VyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdl
V29ya2VyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNz
YWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgV29ya2Vy
TWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPE1l
c3NhZ2VXb3JrZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cywg
V29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2VyVGFzayhtZXNzYWdlLCBjaGFubmVscywgbWVz
c2FnaW5nUHJveHkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2Vy
VGFzayhtZXNzYWdlLCByZWNlaXB0cywgbWVzc2FnaW5nUHJveHkpKTsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgTWVzc2FnZVdvcmtlclRhc2soUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxz
LCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgTWVzc2FnZVdvcmtl
clRhc2soUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25Q
dHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cywgV29ya2VyTWVzc2FnaW5nUHJv
eHkqIG1lc3NhZ2luZ1Byb3h5KQogICAgICAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQotICAgICAg
ICAsIG1fY2hhbm5lbHMoY2hhbm5lbHMpCisgICAgICAgICwgbV9yZWNlaXB0cyhyZWNlaXB0cykK
ICAgICAgICAgLCBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQogICAgIHsKICAgICB9
CkBAIC05NCwxMyArOTQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF3b3JrZXJPYmplY3Qg
fHwgbV9tZXNzYWdpbmdQcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQ
b3J0OjplbnRhbmdsZVBvcnRzKCpzY3JpcHRDb250ZXh0LCBtX2NoYW5uZWxzLnJlbGVhc2UoKSk7
Ci0gICAgICAgIHdvcmtlck9iamVjdC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0
ZShwb3J0cy5yZWxlYXNlKCksIG1fbWVzc2FnZSkpOworICAgICAgICBPd25QdHI8VHJhbnNmZXJh
YmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFs
bEluKCpzY3JpcHRDb250ZXh0LCBtX3JlY2VpcHRzLnJlbGVhc2UoKSk7CisgICAgICAgIHdvcmtl
ck9iamVjdC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0cmFuc2ZlcmFibGVz
LnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheT4gbV9yZWNlaXB0czsKICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQ
cm94eTsKIH07CiAKQEAgLTI0MSwyMSArMjQxLDIxIEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OnN0YXJ0V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmlu
CiAgICAgdGhyZWFkLT5zdGFydCgpOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpw
b3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykK
K3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnBvc3RUYXNrKE1lc3NhZ2VXb3JrZXJUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5l
bHMsIHRoaXMpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKE1lc3Nh
Z2VXb3JrZXJUYXNrOjpjcmVhdGUobWVzc2FnZSwgcmVjZWlwdHMsIHRoaXMpKTsKIH0KIAotdm9p
ZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9z
dE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykK
IHsKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV93b3JrZXJUaHJlYWQpIHsKICAgICAgICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50
OwotICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKE1lc3NhZ2VXb3Jr
ZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAgIG1fd29y
a2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpj
cmVhdGUobWVzc2FnZSwgcmVjZWlwdHMpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9xdWV1ZWRF
YXJseVRhc2tzLmFwcGVuZChNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdl
LCBjaGFubmVscykpOworICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VX
b3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UsIHJlY2VpcHRzKSk7CiB9CiAKIHZvaWQg
V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYg
bW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaApp
bmRleCAzNzMxNDgwLi5jNzRhYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oCkBAIC01NSwxMyArNTUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9kcyBpbiB0aGUgd29ya2VyIG9iamVj
dCB0aHJlYWQuKQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0
IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYg
c291cmNlQ29kZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0
KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250
ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXk+KTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVk
KCk7CiAKICAgICAgICAgLy8gSW1wbGVtZW50YXRpb25zIG9mIFdvcmtlck9iamVjdFByb3h5Lgog
ICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9kcyBpbiB0aGUgd29ya2VyIGNvbnRleHQg
dGhyZWFkLikKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3Qo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5Pik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RD
b25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCmluZGV4IDMzZTBiYzMuLjFhM2I5NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKQEAgLTM0LDcgKzM0
LDggQEAKICNpZiBFTkFCTEUoV09SS0VSUykKIAogI2luY2x1ZGUgIldvcmtlclJlcG9ydGluZ1By
b3h5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCw3ICs0NSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAvLyBBIHByb3h5IHRvIHRhbGsgdG8gdGhlIHdvcmtlciBvYmpl
Y3QuCiAgICAgY2xhc3MgV29ya2VyT2JqZWN0UHJveHkgOiBwdWJsaWMgV29ya2VyUmVwb3J0aW5n
UHJveHkgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9X
b3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9z
dE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PikgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0
eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IDhiM2ZlMDguLjdiZGQ1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAg
LTI3OSw2ICsyNzksNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dElucHV0VHlw
ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRSdW4uaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJUaHJlYWRTYWZlRGF0YS5oJywKKyAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlRyYW5zZmVyYWJsZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVSTC5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVSTEVycm9yLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViVVJMTG9hZGVyLmgnLApAQCAtNTY1LDYgKzU2Niw3IEBACiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTdHJpbmcuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlRl
eHRSdW4uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlRocmVhZFNhZmVEYXRhLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9XZWJUcmFuc2ZlcmFibGUuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlVSTC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMTG9hZFRp
bWluZy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVxdWVzdC5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5u
ZWwuaAppbmRleCAyODhiZDU1Li5hNWM3YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwuaApAQCAtMzIsNiArMzIsNyBA
QAogI2RlZmluZSBXZWJNZXNzYWdlUG9ydENoYW5uZWxfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCisjaW5jbHVkZSAiV2ViVHJhbnNmZXJhYmxlLmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzksMTkgKzQwLDE5IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsQ2xpZW50OwogY2xhc3MgV2ViU3RyaW5n
OwogCi10eXBlZGVmIFdlYlZlY3RvcjxjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWwqPiBXZWJN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheTsKLQogLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIGEg
TWVzc2FnZSBQb3J0IENoYW5uZWwgaW1wbGVtZW50YXRpb24uICBUaGUgb2JqZWN0IG93bnMgaXRz
ZWxmIGFuZAogLy8gaXMgc2lnbmFsbGVkIHRoYXQgaXRzIG5vdCBuZWVkZWQgYW55bW9yZSB3aXRo
IHRoZSBkZXN0cm95KCkgY2FsbC4KLWNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCB7CitjbGFz
cyBXZWJNZXNzYWdlUG9ydENoYW5uZWwgOiBwdWJsaWMgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChXZWJNZXNzYWdlUG9ydENoYW5u
ZWxDbGllbnQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSA9IDA7CiAgICAgLy8g
V2ViS2l0IHZlcnNpb25zIG9mIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbC4KICAgICB2aXJ0
dWFsIHZvaWQgZW50YW5nbGUoV2ViTWVzc2FnZVBvcnRDaGFubmVsKikgPSAwOwogICAgIC8vIENh
bGxlZSByZWNlaXZlcyBvd25lcnNoaXAgb2YgdGhlIHBhc3NlZCB2ZWN0b3IuCi0gICAgdmlydHVh
bCB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYsIFdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5KikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB0cnlHZXRNZXNzYWdlKFdlYlN0cmluZyos
IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0
TWVzc2FnZShjb25zdCBXZWJTdHJpbmcmLCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHRyeUdldE1lc3NhZ2UoV2ViU3RyaW5nKiwgV2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5JikgPSAwOworICAgIHZpcnR1YWwgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsKiBhc1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbCgpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNGbGF0dGVuYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3Rl
Y3RlZDoKICAgICB+V2ViTWVzc2FnZVBvcnRDaGFubmVsKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmlu
ZGV4IDk2ZTZkNWIuLmU5NTQ5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zMyw2ICszMyw3IEBA
CiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisj
aW5jbHVkZSAiV2ViVHJhbnNmZXJhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOyB9CiAKQEAgLTY0LDYgKzY1LDEzIEBAIHB1YmxpYzoKICAg
ICAvLyBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuCiAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK
IAorICAgIC8vIEZsYXR0ZW5zIGZsYXR0ZW5hYmxlIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRzIHRv
IHRoZSBnaXZlbiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYQorICAgIC8vIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgcmV0dXJuaW5nIGEgbmV3IHJlcHJlc2VudGF0aW9uLiBTZXRzIHVuZmxh
dHRlbmFibGVDb3VudE91dAorICAgIC8vIHRvIHRoZSBudW1iZXIgb2YgdW5mbGF0dGVuYWJsZSBy
ZWNlaXB0cyBpbiB0aGUgcGFzc2VkLWluIGFycmF5LgorICAgIFdFQktJVF9BUEkgc3RhdGljIFdl
YlN0cmluZyBmbGF0dGVuUmVjZWlwdExpc3QoY29uc3QgV2ViU3RyaW5nJiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlRyYW5zZmVy
YWJsZVJlY2VpcHRBcnJheSYgcmVjZWlwdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIHVuZmxhdHRlbmFibGVDb3VudE91dCk7CisK
ICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUo
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mKTsK
ICAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmZXJhYmxlLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2ZlcmFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jOWY4MWE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmZXJhYmxlLmgKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViVHJhbnNmZXJhYmxlX2gKKyNkZWZpbmUgV2ViVHJhbnNmZXJhYmxlX2gKKworI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKKyNlbmRpZgorfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsOworY2xhc3MgV2ViU3RyaW5nOworCit0eXBl
ZGVmIFdlYlZlY3RvcjxjbGFzcyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Kj4gV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5OworCitjbGFzcyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCogYXNXZWJNZXNzYWdlUG9ydENo
YW5uZWwoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIGlzRmxhdHRlbmFibGUoKSBj
b25zdCA9IDA7CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgc3RhdGljIFBhc3NPd25Q
dHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdD4gZnJvbVdlYihXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0Kik7CisgICAgc3RhdGljIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqIHRvV2ViKFdlYkNv
cmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb3Jl
OjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IGZyb21XZWJBbGwoY29uc3QgV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5Kik7CisgICAgc3RhdGljIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eSogdG9XZWJBbGwoY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Kik7Cisj
ZW5kaWYKK3Byb3RlY3RlZDoKKyAgICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9CisgICAg
Ly8gTm90ZTogcHVycG9zZWZ1bGx5IG5vdCBhIHZpcnR1YWwgZGVzdHJ1Y3Rvci4KKyAgICB+V2Vi
VHJhbnNmZXJhYmxlUmVjZWlwdCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29y
a2VyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXIuaAppbmRleCBk
MjAzODYyLi40NDkxYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3Jr
ZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBXZWJXb3JrZXJfaAogCiAjaW5jbHVkZSAi
V2ViTWVzc2FnZVBvcnRDaGFubmVsLmgiCisjaW5jbHVkZSAiV2ViVHJhbnNmZXJhYmxlLmgiCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgdGVybWluYXRlV29ya2VyQ29udGV4dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoCiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYsCi0g
ICAgICAgIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOworICAgICAgICBj
b25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHdvcmtlck9iamVjdERlc3Ryb3llZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpZW50RGVz
dHJveWVkKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldv
cmtlckNsaWVudC5oCmluZGV4IGViMmU2M2UuLmE2OTlhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAK
ICNpbmNsdWRlICJXZWJDb21tb25Xb3JrZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJNZXNzYWdl
UG9ydENoYW5uZWwuaCIKKyNpbmNsdWRlICJXZWJUcmFuc2ZlcmFibGUuaCIKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgY2xhc3MgV2ViV29ya2VyQ2xpZW50IDogcHVi
bGljIFdlYkNvbW1vbldvcmtlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYsCi0gICAg
ICAgIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOworICAgICAgICBjb25z
dCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCmluZGV4IDZlNGRlNDQuLjFmNWJhZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5jcHAKQEAgLTE4MCwxNyArMTgwLDkgQEAgdm9pZCBQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90ZShQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm4KICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViU3RyaW5nIG1lc3NhZ2VTdHJpbmcg
PSBtZXNzYWdlLT5tZXNzYWdlKCktPnRvV2lyZVN0cmluZygpOwotICAgIE93blB0cjxXZWJDb3Jl
OjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMgPSBtZXNzYWdlLT5jaGFubmVscygp
OwotICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiB3ZWJDaGFubmVscyA9IDA7Ci0gICAg
aWYgKGNoYW5uZWxzLmdldCgpICYmIGNoYW5uZWxzLT5zaXplKCkpIHsKLSAgICAgICAgd2ViQ2hh
bm5lbHMgPSBuZXcgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkoY2hhbm5lbHMtPnNpemUoKSk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hhbm5lbHMtPnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogcGxhdGZv
cm1DaGFubmVsID0gKCpjaGFubmVscylbaV0tPmNoYW5uZWwoKTsKLSAgICAgICAgICAgICgqd2Vi
Q2hhbm5lbHMpW2ldID0gcGxhdGZvcm1DaGFubmVsLT53ZWJDaGFubmVsUmVsZWFzZSgpOwotICAg
ICAgICAgICAgKCp3ZWJDaGFubmVscylbaV0tPnNldENsaWVudCgwKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICBtX3dlYkNoYW5uZWwtPnBvc3RNZXNzYWdlKG1lc3NhZ2VTdHJpbmcsIHdlYkNoYW5u
ZWxzKTsKKyAgICBPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNl
aXB0cyA9IG1lc3NhZ2UtPnJlY2VpcHRzKCk7CisgICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5KiB3ZWJSZWNlaXB0cyA9IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRvV2ViQWxsKHJlY2Vp
cHRzLmdldCgpKTsKKyAgICBtX3dlYkNoYW5uZWwtPnBvc3RNZXNzYWdlKG1lc3NhZ2VTdHJpbmcs
IHdlYlJlY2VpcHRzKTsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5
R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRh
PiYgcmVzdWx0KQpAQCAtMTk5LDIwICsxOTEsMTIgQEAgYm9vbCBQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm4K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgV2ViU3RyaW5nIG1lc3NhZ2U7Ci0gICAgV2Vi
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkgd2ViQ2hhbm5lbHM7Ci0gICAgYm9vbCBydiA9IG1fd2Vi
Q2hhbm5lbC0+dHJ5R2V0TWVzc2FnZSgmbWVzc2FnZSwgd2ViQ2hhbm5lbHMpOworICAgIFdlYlRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3ZWJSZWNlaXB0czsKKyAgICBib29sIHJ2ID0gbV93ZWJD
aGFubmVsLT50cnlHZXRNZXNzYWdlKCZtZXNzYWdlLCB3ZWJSZWNlaXB0cyk7CiAgICAgaWYgKHJ2
KSB7Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7Ci0g
ICAgICAgIGlmICh3ZWJDaGFubmVscy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNoYW5uZWxzID0g
YWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KHdlYkNoYW5uZWxzLnNpemUoKSkp
OwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bD4gcGxhdGZvcm1DaGFubmVsID0gY3JlYXRlKHdlYkNoYW5uZWxzW2ldKTsKLSAgICAgICAgICAg
ICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50KHBsYXRmb3JtQ2hhbm5lbC5nZXQoKSk7Ci0g
ICAgICAgICAgICAgICAgKCpjaGFubmVscylbaV0gPSBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0
ZShwbGF0Zm9ybUNoYW5uZWwpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIE93
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0gV2ViVHJhbnNmZXJhYmxl
UmVjZWlwdDo6ZnJvbVdlYkFsbCgmd2ViUmVjZWlwdHMpOwogICAgICAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkTWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlRnJvbVdpcmUobWVzc2FnZSk7Ci0gICAgICAgIHJlc3VsdCA9IE1lc3NhZ2VQb3J0
Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUoc2VyaWFsaXplZE1lc3NhZ2UucmVsZWFzZSgpLCBj
aGFubmVscy5yZWxlYXNlKCkpOworICAgICAgICByZXN1bHQgPSBNZXNzYWdlUG9ydENoYW5uZWw6
OkV2ZW50RGF0YTo6Y3JlYXRlKHNlcmlhbGl6ZWRNZXNzYWdlLnJlbGVhc2UoKSwgcmVjZWlwdHMu
cmVsZWFzZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gcnY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaAppbmRleCBm
Njc0Y2U2Li5iNjZjMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZp
bmUgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWxfaAogCiAjaW5jbHVkZSAiV2ViTWVzc2FnZVBv
cnRDaGFubmVsQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVHJhbnNmZXJhYmxlLmgiCiAKICNpbmNs
dWRlICJNZXNzYWdlUG9ydENoYW5uZWwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggNzE0OWE0ZC4uYTI2Y2Q2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC03
OSw0ICs3OSwyMCBAQCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om9wZXJhdG9yIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS5n
ZXQoKTsKIH0KIAorV2ViU3RyaW5nIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJl
Y2VpcHRMaXN0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXkmIHJlY2VpcHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogdW5mbGF0dGVuYWJsZUNvdW50KSB7CisgICAg
c2l6ZV90IHVuZmxhdHRlbmFibGVzRm91bmQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVjZWlwdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFyZWNlaXB0c1tpXS0+aXNG
bGF0dGVuYWJsZSgpKQorICAgICAgICAgICAgKyt1bmZsYXR0ZW5hYmxlc0ZvdW5kOworICAgIH0K
KyAgICBpZiAodW5mbGF0dGVuYWJsZUNvdW50KQorICAgICAgICAqdW5mbGF0dGVuYWJsZUNvdW50
ID0gdW5mbGF0dGVuYWJsZXNGb3VuZDsKKyAgICBpZiAodW5mbGF0dGVuYWJsZXNGb3VuZCA9PSBy
ZWNlaXB0cy5zaXplKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlOworICAgIE93blB0cjxUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+IGNvcmVSZWNlaXB0cyA9IFdlYlRyYW5zZmVyYWJsZVJlY2Vp
cHQ6OmZyb21XZWJBbGwoJnJlY2VpcHRzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpmbGF0dGVuUmVjZWlwdExpc3QobWVzc2FnZSwgKmNvcmVSZWNlaXB0cyk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAppbmRleCA0YTMyZmIzLi41YWUyZWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBs
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNz
YWdlUG9ydC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVHJhbnNm
ZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRyYW5zZmVyYWJsZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQzOWEwMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRyYW5zZmVyYWJsZS5jcHAK
QEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
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
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUcmFuc2Zl
cmFibGUuaCIKKworI2luY2x1ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgi
CisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiBXZWJU
cmFuc2ZlcmFibGVSZWNlaXB0Ojpmcm9tV2ViKFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqIHJlY2Vp
cHQpIHsKKyAgICBpZiAoV2ViTWVzc2FnZVBvcnRDaGFubmVsKiB3ZWJNZXNzYWdlUG9ydENoYW5u
ZWwgPSByZWNlaXB0LT5hc1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbCgpKSB7CisgICAgICAgIFJlZlB0
cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcGxhdGZvcm1DaGFubmVsID0gUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZSh3ZWJNZXNzYWdlUG9ydENoYW5uZWwpOworICAgICAg
ICB3ZWJNZXNzYWdlUG9ydENoYW5uZWwtPnNldENsaWVudChwbGF0Zm9ybUNoYW5uZWwuZ2V0KCkp
OworICAgICAgICByZXR1cm4gTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUocGxhdGZvcm1DaGFu
bmVsKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGFkb3B0
UHRyKHJlaW50ZXJwcmV0X2Nhc3Q8VHJhbnNmZXJhYmxlUmVjZWlwdCo+KDApKTsKK30KKworUGFz
c093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IFdlYlRyYW5zZmVyYWJs
ZVJlY2VpcHQ6OmZyb21XZWJBbGwoY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KiBy
ZWNlaXB0cykgeworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IGltcG9ydGVk
UmVjZWlwdHM7CisgICAgaWYgKHJlY2VpcHRzICYmIHJlY2VpcHRzLT5zaXplKCkpIHsKKyAgICAg
ICAgaW1wb3J0ZWRSZWNlaXB0cyA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVSZWNlaXB0QXJy
YXkocmVjZWlwdHMtPnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJl
Y2VpcHRzLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICgqaW1wb3J0ZWRSZWNlaXB0cylbaV0g
PSBmcm9tV2ViKCgqcmVjZWlwdHMpW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIGltcG9ydGVkUmVj
ZWlwdHMucmVsZWFzZSgpOworfQorCitXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KiBXZWJUcmFuc2Zl
cmFibGVSZWNlaXB0Ojp0b1dlYihUcmFuc2ZlcmFibGVSZWNlaXB0KiByZWNlaXB0KSB7CisgICAg
aWYgKE1lc3NhZ2VQb3J0Q2hhbm5lbCogbWVzc2FnZVBvcnRDaGFubmVsID0gcmVjZWlwdC0+YXNN
ZXNzYWdlUG9ydENoYW5uZWwoKSkgeworICAgICAgICBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bCogcGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwgPSBtZXNzYWdlUG9ydENoYW5uZWwtPmNoYW5u
ZWwoKTsKKyAgICAgICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsKiB3ZWJNZXNzYWdlUG9ydENoYW5u
ZWwgPSBwbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC0+d2ViQ2hhbm5lbFJlbGVhc2UoKTsKKyAg
ICAgICAgd2ViTWVzc2FnZVBvcnRDaGFubmVsLT5zZXRDbGllbnQoMCk7CisgICAgICAgIHJldHVy
biB3ZWJNZXNzYWdlUG9ydENoYW5uZWw7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiAwOworfQorCitXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqIFdlYlRy
YW5zZmVyYWJsZVJlY2VpcHQ6OnRvV2ViQWxsKGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheSogcmVjZWlwdHMpIHsKKyAgICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkq
IGV4cG9ydGVkUmVjZWlwdHMgPSAwOworICAgIGlmIChyZWNlaXB0cyAmJiByZWNlaXB0cy0+c2l6
ZSgpKSB7CisgICAgICAgIGV4cG9ydGVkUmVjZWlwdHMgPSBuZXcgV2ViVHJhbnNmZXJhYmxlUmVj
ZWlwdEFycmF5KHJlY2VpcHRzLT5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJlY2VpcHRzLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICgqZXhwb3J0ZWRSZWNlaXB0
cylbaV0gPSB0b1dlYigoKnJlY2VpcHRzKVtpXS5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBl
eHBvcnRlZFJlY2VpcHRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKaW5kZXggZDYxODY3Mi4uNWEzODg0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKQEAg
LTM1MiwyNyArMzUyLDI2IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6b3BlbkZpbGVTeXN0ZW1Gb3JX
b3JrZXIoV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcKIC8vIFdvcmtlck9iamVj
dFByb3h5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVj
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlw
dHMpCiB7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygm
cG9zdE1lc3NhZ2VUYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS0+dG9XaXJlU3Ry
aW5nKCksIGNoYW5uZWxzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwgcmVjZWlwdHMpKTsKIH0KIAogdm9p
ZCBXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckJh
c2UqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
bWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2Vp
cHRzKQogewogICAgIGlmICghdGhpc1B0ci0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5IHdlYkNoYW5uZWxzKGNoYW5uZWxzLmdldCgp
ID8gY2hhbm5lbHMtPnNpemUoKSA6IDApOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2Vi
Q2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgd2ViQ2hhbm5lbHNbaV0gPSAoKmNoYW5u
ZWxzKVtpXS0+Y2hhbm5lbCgpLT53ZWJDaGFubmVsUmVsZWFzZSgpOwotICAgICAgICB3ZWJDaGFu
bmVsc1tpXS0+c2V0Q2xpZW50KDApOworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3
ZWJSZWNlaXB0cyhyZWNlaXB0cy5nZXQoKSA/IHJlY2VpcHRzLT5zaXplKCkgOiAwKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlJlY2VpcHRzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IHdlYlJlY2VpcHRzW2ldID0gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6dG9XZWIoKCpyZWNlaXB0
cylbaV0uZ2V0KCkpOwogICAgIH0KIAotICAgIHRoaXNQdHItPmNsaWVudCgpLT5wb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KG1lc3NhZ2UsIHdlYkNoYW5uZWxzKTsKKyAgICB0aGlzUHRyLT5jbGll
bnQoKS0+cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlLCB3ZWJSZWNlaXB0cyk7CiB9
CiAKIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViV29ya2VyQmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQmFzZS5oCmluZGV4IDllZmNlMTUuLjVmMDhjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJCYXNlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoV09S
S0VSUykKIAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHku
aCIKQEAgLTY4LDcgKzY5LDcgQEAgcHVibGljOgogICAgIC8vIFdlYkNvcmU6Oldvcmtlck9iamVj
dFByb3h5IG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoCiAgICAgICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwK
LSAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOwor
ICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoCiAgICAgICAgIGNv
bnN0IFdURjo6U3RyaW5nJiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwg
dm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCgKQEAgLTEyMyw3ICsxMjQsNyBA
QCBwcml2YXRlOgogICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LAogICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAogICAgICAgICBXVEY6OlN0cmlu
ZyBtZXNzYWdlLAotICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBjaGFubmVscyk7CisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyk7CiAgICAgc3RhdGljIHZvaWQgcG9zdEV4Y2VwdGlv
blRhc2soCiAgICAgICAgIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
CiAgICAgICAgIFdlYldvcmtlckJhc2UqIHRoaXNQdHIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCmluZGV4IGMxOThjY2YuLjExNGIy
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVu
dEltcGwuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp0
ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkKIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0
TWVzc2FnZVRvV29ya2VyQ29udGV4dCgKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwKLSAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBj
aGFubmVscykKKyAgICBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlw
dHMpCiB7CiAgICAgLy8gV29ya2VyLnRlcm1pbmF0ZSgpIGNvdWxkIGJlIGNhbGxlZCBmcm9tIEpT
IGJlZm9yZSB0aGUgY29udGV4dCBpcyBzdGFydGVkLgogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5h
dGUpCkBAIC0xODUsMTcgKzE4NSwxMyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RN
ZXNzYWdlVG9Xb3JrZXJDb250ZXh0KAogICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyQ29u
dGV4dFRhc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVscykpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlY2VpcHRzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkgd2ViQ2hhbm5lbHMoY2hhbm5lbHMuZ2V0KCkgPyBjaGFubmVscy0+
c2l6ZSgpIDogMCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXpl
KCk7ICsraSkgewotICAgICAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWwqIHdlYmNoYW5uZWwgPQot
ICAgICAgICAgICAgICAgICAgICAgICAgKCpjaGFubmVscylbaV0tPmNoYW5uZWwoKS0+d2ViQ2hh
bm5lbFJlbGVhc2UoKTsKLSAgICAgICAgd2ViY2hhbm5lbC0+c2V0Q2xpZW50KDApOwotICAgICAg
ICB3ZWJDaGFubmVsc1tpXSA9IHdlYmNoYW5uZWw7Ci0gICAgfQotICAgIG1fd2ViV29ya2VyLT5w
b3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwgd2ViQ2hh
bm5lbHMpOworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3ZWJSZWNlaXB0cyhyZWNl
aXB0cy5nZXQoKSA/IHJlY2VpcHRzLT5zaXplKCkgOiAwKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHdlYlJlY2VpcHRzLnNpemUoKTsgKytpKQorICAgICAgICB3ZWJSZWNlaXB0c1tpXSA9
IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRvV2ViKCgqcmVjZWlwdHMpW2ldLmdldCgpKTsKKyAg
ICBtX3dlYldvcmtlci0+cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQobWVzc2FnZS0+dG9XaXJl
U3RyaW5nKCksIHdlYlJlY2VpcHRzKTsKIH0KIAogYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApAQCAtMjM2LDI5ICsyMzIsMjAgQEAgdm9pZCBXZWJX
b3JrZXJDbGllbnRJbXBsOjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIH0KIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxB
cnJheSYgY2hhbm5lbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JiB3ZWJSZWNlaXB0
cykKIHsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzMjsKLSAg
ICBpZiAoY2hhbm5lbHMuc2l6ZSgpKSB7Ci0gICAgICAgIGNoYW5uZWxzMiA9IGFkb3B0UHRyKG5l
dyBNZXNzYWdlUG9ydENoYW5uZWxBcnJheShjaGFubmVscy5zaXplKCkpKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjaGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
UmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBwbGF0Zm9ybV9jaGFubmVsID0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3Jl
YXRlKGNoYW5uZWxzW2ldKTsKLSAgICAgICAgICAgIGNoYW5uZWxzW2ldLT5zZXRDbGllbnQocGxh
dGZvcm1fY2hhbm5lbC5nZXQoKSk7Ci0gICAgICAgICAgICAoKmNoYW5uZWxzMilbaV0gPSBNZXNz
YWdlUG9ydENoYW5uZWw6OmNyZWF0ZShwbGF0Zm9ybV9jaGFubmVsKTsKLSAgICAgICAgfQotICAg
IH0KKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IFdlYlRy
YW5zZmVyYWJsZVJlY2VpcHQ6OmZyb21XZWJBbGwoJndlYlJlY2VpcHRzKTsKIAogICAgIGlmIChj
dXJyZW50VGhyZWFkKCkgIT0gbV93b3JrZXJUaHJlYWRJZCkgewogICAgICAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdFRhc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cmluZyhtZXNzYWdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHMyLnJlbGVhc2UoKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWNlaXB0cy5yZWxlYXNlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwg
dGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBjaGFubmVs
czIucmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
LCByZWNlaXB0cy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmIGVycm9yTWVzc2FnZSwK
QEAgLTM2OSwxNiArMzU2LDE0IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6dGVybWluYXRl
V29ya2VyQ29udGV4dFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29uCiB2b2lkIFdlYldv
cmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogdGhpc1B0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+
IGNoYW5uZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRz
KQogewotICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5IHdlYkNoYW5uZWxzKGNoYW5uZWxz
LmdldCgpID8gY2hhbm5lbHMtPnNpemUoKSA6IDApOworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheSB3ZWJSZWNlaXB0cyhyZWNlaXB0cy5nZXQoKSA/IHJlY2VpcHRzLT5zaXplKCkgOiAw
KTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hhbm5lbHMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgd2ViQ2hhbm5lbHNbaV0gPSAoKmNoYW5uZWxzKVtpXS0+Y2hhbm5lbCgpLT53
ZWJDaGFubmVsUmVsZWFzZSgpOwotICAgICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50KDAp
OwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlJlY2VpcHRzLnNpemUoKTsg
KytpKQorICAgICAgICB3ZWJSZWNlaXB0c1tpXSA9IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRv
V2ViKCgqcmVjZWlwdHMpW2ldLmdldCgpKTsKIAotICAgIHRoaXNQdHItPm1fd2ViV29ya2VyLT5w
b3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChtZXNzYWdlLCB3ZWJDaGFubmVscyk7CisgICAgdGhp
c1B0ci0+bV93ZWJXb3JrZXItPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UsIHdl
YlJlY2VpcHRzKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp3b3JrZXJPYmplY3RE
ZXN0cm95ZWRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCkBAIC0zODksMjUg
KzM3NCwyMiBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6Ondvcmtlck9iamVjdERlc3Ryb3ll
ZFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgIGRlbGV0ZSB0aGlzUHRyOwog
fQogCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3RU
YXNrKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAordm9pZCBXZWJXb3JrZXJDbGll
bnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAKICAgICBp
ZiAodGhpc1B0ci0+bV93b3JrZXIpIHsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+
IHBvcnRzID0KLSAgICAgICAgICAgIE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpjb250ZXh0
LCBjaGFubmVscyk7CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJh
YmxlcyA9IFRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oKmNvbnRleHQsIHJlY2Vp
cHRzKTsKICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZE1l
c3NhZ2UgPQogICAgICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2ly
ZShtZXNzYWdlKTsKLSAgICAgICAgdGhpc1B0ci0+bV93b3JrZXItPmRpc3BhdGNoRXZlbnQoTWVz
c2FnZUV2ZW50OjpjcmVhdGUocG9ydHMucmVsZWFzZSgpLAorICAgICAgICB0aGlzUHRyLT5tX3dv
cmtlci0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0cmFuc2ZlcmFibGVzLnJl
bGVhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VyaWFsaXplZE1lc3NhZ2UucmVsZWFzZSgpKSk7CiAgICAgfQogfQog
Ci12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdFRh
c2soCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKK3ZvaWQgV2ViV29ya2VyQ2xp
ZW50SW1wbDo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0VGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKaW5kZXggYzI3MGZmYy4uZGIx
ZDE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xp
ZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVu
dEltcGwuaApAQCAtMzMsNiArMzMsOCBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKKyNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIK
ICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiV2ViV29ya2VyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dFByb3h5LmgiCkBAIC03MCw3ICs3Miw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyQ29udGV4dCgpOwogICAgIHZpcnR1
YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCgKICAgICAgICAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsCi0gICAgICAgIFBhc3NPd25Q
dHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKTsKKyAgICAgICAg
UGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKTsK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpOwogCkBAIC04MCw3ICs4Miw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFdlYldvcmtlckNsaWVudCBtZXRob2RzOgogICAgIC8vIFRoZXNlIGFyZSBj
YWxsZWQgb24gdGhlIG1haW4gV2ViS2l0IHRocmVhZC4KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJNZXNzYWdlUG9y
dENoYW5uZWxBcnJheSYpOworICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2Jq
ZWN0KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYp
OwogICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgV2Vi
U3RyaW5nJiwgaW50LCBjb25zdCBXZWJTdHJpbmcmKTsKIAogICAgIC8vIEZJWE1FOiB0aGUgYmVs
b3cgaXMgZm9yIGNvbXBhdGliaWxpdHkgb25seSBhbmQgc2hvdWxkIGJlCkBAIC0xMjgsNyArMTMw
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4
dFRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1w
bCogdGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+IGNoYW5uZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+
IHJlY2VpcHRzKTsKICAgICBzdGF0aWMgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWRUYXNrKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyKTsK
IApAQCAtMTM4LDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcG9zdE1lc3Nh
Z2VUb1dvcmtlck9iamVjdFRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJX
b3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheT4gcmVjZWlwdHMpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdFRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtl
ckNsaWVudEltcGwqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAKaW5kZXggNmM5ZjQ1Yy4uNTU1NmI4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAKQEAgLTgy
LDE4ICs4MiwxOCBAQCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIFdlYldvcmtlckltcGw6OmNvbW1v
bkNsaWVudCgpCiB2b2lkIFdlYldvcmtlckltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0
VGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VySW1wbCog
dGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+
IGNoYW5uZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewog
ICAgIEFTU0VSVChjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CiAgICAgRGVkaWNhdGVkV29y
a2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9CiAgICAgICAgIHN0YXRpY19jYXN0PERlZGljYXRl
ZFdvcmtlckNvbnRleHQqPihjb250ZXh0KTsKIAotICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5
PiBwb3J0cyA9Ci0gICAgICAgIE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpjb250ZXh0LCBj
aGFubmVscyk7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVzID0K
KyAgICAgICAgVHJhbnNmZXJhYmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJbigqY29udGV4dCwgcmVj
ZWlwdHMpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRNZXNz
YWdlID0KICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShtZXNz
YWdlKTsKICAgICB3b3JrZXJDb250ZXh0LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKAotICAgICAgICBwb3J0cy5yZWxlYXNlKCksIHNlcmlhbGl6ZWRNZXNzYWdlLnJlbGVhc2Uo
KSkpOworICAgICAgICB0cmFuc2ZlcmFibGVzLnJlbGVhc2UoKSwgc2VyaWFsaXplZE1lc3NhZ2Uu
cmVsZWFzZSgpKSk7CiAgICAgdGhpc1B0ci0+Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0
KHdvcmtlckNvbnRleHQtPmhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKIH0KIApAQCAtMTE2LDIyICsx
MTYsMTIgQEAgdm9pZCBXZWJXb3JrZXJJbXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkKIH0K
IAogdm9pZCBXZWJXb3JrZXJJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBX
ZWJTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JiB3ZWJDaGFubmVscykK
LXsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOwotICAgIGlm
ICh3ZWJDaGFubmVscy5zaXplKCkpIHsKLSAgICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcg
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkod2ViQ2hhbm5lbHMuc2l6ZSgpKSk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcGxhdGZvcm1fY2hhbm5lbCA9
Ci0gICAgICAgICAgICAgICAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZSh3ZWJD
aGFubmVsc1tpXSk7Ci0gICAgICAgICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50KHBsYXRm
b3JtX2NoYW5uZWwuZ2V0KCkpOwotICAgICAgICAgICAgKCpjaGFubmVscylbaV0gPSBNZXNzYWdl
UG9ydENoYW5uZWw6OmNyZWF0ZShwbGF0Zm9ybV9jaGFubmVsKTsKLSAgICAgICAgfQotICAgIH0K
LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmIHdlYlJlY2VpcHRzKQoreworICAgIE93blB0cjxU
cmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0gV2ViVHJhbnNmZXJhYmxlUmVjZWlw
dDo6ZnJvbVdlYkFsbCgmd2ViUmVjZWlwdHMpOwogICAgIHdvcmtlclRocmVhZCgpLT5ydW5Mb29w
KCkucG9zdFRhc2soCiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHRUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwgU3RyaW5nKG1lc3NhZ2UpLCBjaGFubmVscy5yZWxlYXNlKCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyks
IFN0cmluZyhtZXNzYWdlKSwgcmVjZWlwdHMucmVsZWFzZSgpKSk7CiB9CiAKIHZvaWQgV2ViV29y
a2VySW1wbDo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckltcGwuaAppbmRleCA3OWM5YzU0Li5jN2JlNzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICAvLyBXZWJXb3JrZXIgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3Jr
ZXJDb250ZXh0KGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlN0cmlu
ZyYpOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7Ci0gICAgdmly
dHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYlN0cmluZyYsIGNv
bnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Jik7CisgICAgdmlydHVhbCB2b2lkIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlRyYW5zZmVy
YWJsZVJlY2VpcHRBcnJheSYpOwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95
ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xpZW50RGVzdHJveWVkKCk7CiAKQEAgLTczLDcgKzcz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKICAgICAgICAgV2ViV29ya2VySW1wbCogdGhpc1B0ciwKICAgICAgICAgY29uc3Qg
V1RGOjpTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKTsKKyAgICAgICAgUGFzc093blB0cjxXZWJDb3Jl
OjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKTsKIAogICAgIFdlYldvcmtlckNs
aWVudCogbV9jbGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFdlYldvcmtlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFdlYldvcmtlci5oCmluZGV4IDcxYmZmY2UuLjEyZTJjODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViV29ya2VyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIC8vIFdlYldvcmtlciBtZXRob2RzOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtl
ckNvbnRleHQoY29uc3QgV2ViS2l0OjpXZWJVUkwmLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYs
IGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0
ZVdvcmtlckNvbnRleHQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtl
ckNvbnRleHQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBjb25zdCBXZWJLaXQ6OldlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9X
b3JrZXJDb250ZXh0KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgY29uc3QgV2ViS2l0OjpXZWJU
cmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2Jq
ZWN0RGVzdHJveWVkKCkKICAgICB7CiAgICAgICAgIC8vIFJlbGVhc2VzIHRoZSByZWZlcmVuY2Ug
aGVsZCBmb3Igd29ya2VyIG9iamVjdC4KQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjbGllbnREZXN0cm95ZWQoKSB7IH0KIAogICAgIC8vIFdlYldvcmtlckNsaWVu
dCBtZXRob2RzOgotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgY29uc3QgV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0
KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgaW50LCBjb25zdCBXZWJLaXQ6OldlYlN0
cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9i
amVjdChpbnQsIGludCwgaW50LCBpbnQsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgaW50LCBj
b25zdCBXZWJLaXQ6OldlYlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb25maXJtTWVz
c2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102407</attachid>
            <date>2011-07-29 15:48:41 -0700</date>
            <delta_ts>2011-08-06 11:38:12 -0700</delta_ts>
            <desc>First proposed patch.</desc>
            <filename>postmessagepatch347.patch</filename>
            <type>text/plain</type>
            <size>168086</size>
            <attacher name="Luke Zarko">lukezarko+bugzilla</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkYWQ4ZDA5Li5kMmJjZTgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDct
MjkgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgTWVz
c2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gQ2hhbmdlIGluIGVycm9yIG1lc3NhZ2UgdGV4dC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNz
YWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorCiAy
MDExLTA3LTI5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW1F0XSBVbnJldmlld2VkIHR5cG8gZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJn
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAppbmRleCA1ZWNl
ODQxLi5hY2Q3NGFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1t
YWMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDggQEAKIFRlc3Qg
dGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHdpbmRvdy5wb3N0TWVzc2FnZSBpcyBpZ25vcmVk
IG9yIHRyaWdnZXJzIGFuIGVycm9yIGlmIGl0IGlzIG5vdCBhIG1lc3NhZ2UgcG9ydC4gWW91IHNo
b3VsZCBzZWUgUEFTUyBtZXNzYWdlICcxJyB0aHJvdWdoICc3JywgZm9sbG93ZWQgYnkgJ2RvbmUn
LCB3aXRoIG1lc3NhZ2VzIDQtNyByZWNlaXZlZCBiZWxvdy4KIAotUEFTUzogUG9zdGluZyBtZXNz
YWdlICgnMScsIDEpOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5
IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0Ci1QQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcyJywg
KTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBt
dXN0IGJlIGFuIG9iamVjdAotUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMycsIFtvYmplY3QgT2Jq
ZWN0XSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1l
bnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUKK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzEnLCAx
KTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQg
bXVzdCBiZSBhbiBvYmplY3QKK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzInLCApOiB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlcmFibGVBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFu
IG9iamVjdAorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMycsIFtvYmplY3QgT2JqZWN0XSk6IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyYWJsZUFycmF5IGFyZ3VtZW50IGhhcyBu
byBsZW5ndGggYXR0cmlidXRlCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc0JywgW29iamVjdCBE
T01XaW5kb3ddKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNz
YWdlICgnNScsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5n
IG1lc3NhZ2UgKCc2JywgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdz
LWV4cGVjdGVkLnR4dAppbmRleCA1ZWNlODQxLi5hY2Q3NGFjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVz
c2FnZS1hcmdzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS13aW4vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4
dApAQCAtMSw4ICsxLDggQEAKIFRlc3QgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHdpbmRv
dy5wb3N0TWVzc2FnZSBpcyBpZ25vcmVkIG9yIHRyaWdnZXJzIGFuIGVycm9yIGlmIGl0IGlzIG5v
dCBhIG1lc3NhZ2UgcG9ydC4gWW91IHNob3VsZCBzZWUgUEFTUyBtZXNzYWdlICcxJyB0aHJvdWdo
ICc3JywgZm9sbG93ZWQgYnkgJ2RvbmUnLCB3aXRoIG1lc3NhZ2VzIDQtNyByZWNlaXZlZCBiZWxv
dy4KIAotUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMScsIDEpOiB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0Ci1QQVNT
OiBQb3N0aW5nIG1lc3NhZ2UgKCcyJywgKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVz
c2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdAotUEFTUzogUG9zdGluZyBt
ZXNzYWdlICgnMycsIFtvYmplY3QgT2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUKK1BBU1M6
IFBvc3RpbmcgbWVzc2FnZSAoJzEnLCAxKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJh
bnNmZXJhYmxlQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKK1BBU1M6IFBvc3Rpbmcg
bWVzc2FnZSAoJzInLCApOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlcmFibGVB
cnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdAorUEFTUzogUG9zdGluZyBtZXNzYWdlICgn
MycsIFtvYmplY3QgT2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVy
YWJsZUFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlCiBQQVNTOiBQb3N0aW5n
IG1lc3NhZ2UgKCc0JywgW29iamVjdCBET01XaW5kb3ddKSBkaWQgbm90IHRocm93IGFuIGV4Y2Vw
dGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNScsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc2JywgdW5kZWZpbmVkKSBkaWQgbm90
IHRocm93IGFuIGV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4NzE5ZGMzLi4zYzU2
ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTg3LDYgKzU4Nyw3IEBAIFNFVChXZWJDb3Jl
X1NPVVJDRVMKICAgICBkb20vVG91Y2guY3BwCiAgICAgZG9tL1RvdWNoRXZlbnQuY3BwCiAgICAg
ZG9tL1RvdWNoTGlzdC5jcHAKKyAgICBkb20vVHJhbnNmZXJhYmxlLmNwcAogICAgIGRvbS9UcmFu
c2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcAogICAgIGRvbS9UcmF2ZXJzYWwuY3BwCiAgICAgZG9tL1Ry
ZWVTY29wZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZTMzZTYxLi44MjU3ZjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYxIEBACisyMDExLTA3LTI5ICBMdWtlIFphcmtvICA8bHVrZXphcmtvQGdtYWls
LmNvbT4KKworICAgICAgICBNYWtlIE1lc3NhZ2VQb3J0IFRyYW5zZmVyYWJsZS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyMDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgU3RydWN0dXJlZCBD
bG9uZSBhbGdvcml0aG0gZGVzY3JpYmVzIGFuIGludGVyZmFjZSBmb3IgVHJhbnNmZXJhYmxlIG9i
amVjdHMgKGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
Y29tcGxldGUvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjdHJhbnNmZXJhYmxlLW9iamVjdHMp
LiBDdXJyZW50bHkgdGhlIG9ubHkgb2ZmaWNpYWwgVHJhbnNmZXJhYmxlIG9iamVjdCBpcyB0aGUg
TWVzc2FnZVBvcnQsIGJ1dCBBcnJheUJ1ZmZlcnMgYXJlIGV4cGVjdGVkIHRvIGJlIHNhbmN0aW9u
ZWQgYXMgc3VjaCBzb29uLgorCisgICAgICAgIC0gQWRkIFRyYW5zZmVyYWJsZS5oL2NwcC4KKyAg
ICAgICAgLSBDcmVhdGUgbmV3IGNsYXNzZXMgVHJhbnNmZXJhYmxlIGFuZCBUcmFuc2ZlcmFibGVS
ZWNlaXB0LgorICAgICAgICAgICAgLSBDb250cm9sIG9mIGEgVHJhbnNmZXJhYmxlIG9iamVjdCBj
YW4gYmUgdHJhbnNmZXJyZWQgb3V0LCB5aWVsZGluZyBhIFRyYW5zZmVyYWJsZVJlY2VpcHQuCisg
ICAgICAgICAgICAtIEEgVHJhbnNmZXJhYmxlUmVjZWlwdCBjYW4gdGhlbiBiZSB0cmFuc2ZlcnJl
ZCBpbiwgeWllbGRpbmcgYSBUcmFuc2ZlcmFibGUuCisgICAgICAgICAgICAtIE1lc3NhZ2VQb3J0
IGlzIHJlcGFyZW50ZWQgdG8gVHJhbnNmZXJhYmxlIGFuZCBNZXNzYWdlUG9ydENoYW5uZWwgaXMg
cmVwYXJlbnRlZCB0byBUcmFuc2ZlcmFibGVSZWNlaXB0LgorICAgICAgICAtIEluc3RlYWQgb2Yg
cGFzc2luZyBhcm91bmQgYSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgd2l0aCBhIE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5IChmb3IsIGVnLCBwb3N0TWVzc2FnZSksIGluc3RlYWQgYSBTZXJpYWxpemVk
U2NyaXB0VmFsdWUgaXMgcGFpcmVkIHdpdGggYSBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkuCisg
ICAgICAgICAgICAtIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB3aWxsIHVzZSBvYmplY3QgcmVmZXJl
bmNlcyBpbnN0ZWFkIG9mIGNsb25lcyBmb3Igb2JqZWN0cyBpbiB0aGUgdHJhbnNmZXIgbGlzdC4K
KyAgICAgICAgICAgIC0gVGhlIFY4IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBzb21ldGltZXMgbmVl
ZHMgdG8gYmUgc2VudCBhY3Jvc3MgYW4gSVBDIGJvdW5kYXJ5LiBJbiB0aGlzIGNhc2Ugc29tZSBU
cmFuc2ZlcmFibGVSZWNlaXB0cyB3aXRob3V0IHNwZWNpYWwgY2xvbmluZyBzZW1hbnRpY3MgKGVn
LCBub24tTWVzc2FnZVBvcnRzLCB3aGljaCBzZW5kIGFjcm9zcyByb3V0aW5nIGluZm9ybWF0aW9u
KSB3aWxsIG5lZWQgdG8gYmUgZmxhdHRlbmVkLiBUaGlzIHBhdGNoIGV4cG9zZXMgYW4gaW50ZXJm
YWNlIGZvciBzdWNoIGFuIG9wZXJhdGlvbi4KKyAgICAgICAgLSBNb2RpZnkgSURMIGdlbmVyYXRv
cnMgZm9yIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB0byByZXF1aXJlIGFuZCBwYXNzIHRyYW5zZmVy
IGxpc3RzIHRvIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgY29uc3RydWN0b3IuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3Nh
Z2VFdmVudDo6cG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OmluaXRN
ZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFRyYW5zZmVyYWJsZUFycmF5KToKKyAgICAgICAg
KFdlYkNvcmU6OnRvTmF0aXZlVHJhbnNmZXJhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNU
cmFuc2ZlcmFibGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20u
aDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1ZTo6
c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlblJl
Zik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmluaXRpYWxpemVXaXRoVHJhbnNmZXJMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6Q2xvbmVEZXNlcmlhbGl6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om9wZW5UcmFuc2ZlcmFibGVBcnJheSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChOYXRpdmVUb0pT
VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgor
ICAgICAgICAoR2VuZXJhdGVUb1Y4Q29udmVydGVycyk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFw
OjpTZXJpYWxpemVyOjpTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFw
OjpTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6
OlNlcmlhbGl6ZXI6OmluaXRpYWxpemVPYmplY3RQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
T2JqZWN0TWFwOjpEZXNlcmlhbGl6ZXI6OkRlc2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3Jl
OjpWOE9iamVjdE1hcDo6RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOE9iamVjdE1hcDo6RGVzZXJpYWxpemVyOjppbml0aWFsaXplT2JqZWN0UG9vbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpm
bGF0dGVuUmVjZWlwdExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6
cG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojpw
b3J0c0FjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojpp
bml0TWVzc2FnZUV2ZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZVBvcnQ6
OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VHJhbnNmZXJhYmxl
QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9OYXRpdmVUcmFuc2ZlcmFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9WOFRyYW5zZmVyYWJsZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXI6OnBvc3RNZXNz
YWdlQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICog
ZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Ok1l
c3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjptZXNzYWdlUG9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OnRyYW5zZmVyYWJsZSk6CisgICAgICAgICog
ZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpkYXRhRGVwZW5kZW5jaWVzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6dHJhbnNmZXJhYmxlcyk6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5pZGw6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OnRyYW5zZmVyT3V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpk
aXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojphc01lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Ojppc1RyYW5zZmVyQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0Ojppc0VudGFuZ2xlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aXND
bG9uZWQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAgICogZG9tL01l
c3NhZ2VQb3J0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hh
bm5lbDo6RXZlbnREYXRhOjpFdmVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBv
cnRDaGFubmVsOjp0cmFuc2ZlckluKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnRDaGFubmVs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OmFzTWVzc2FnZVBvcnRD
aGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6aXNGbGF0dGVu
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6
cmVjZWlwdHMpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQb3BTdGF0ZUV2ZW50OjpzdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2
ZW50OjpkYXRhRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiBkb20vVHJhbnNmZXJhYmxlLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4pOgor
ICAgICAgICAqIGRvbS9UcmFuc2ZlcmFibGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2ZlcmFibGU6On5UcmFuc2ZlcmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmZXJh
YmxlOjphc01lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZTo6VHJh
bnNmZXJhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6On5UcmFu
c2ZlcmFibGVSZWNlaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6
OmFzTWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJl
Y2VpcHQ6OlRyYW5zZmVyYWJsZVJlY2VpcHQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdlVGltZXI6OlBvc3RNZXNzYWdlVGltZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1lcjo6ZXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogc3RvcmFnZS9J
REJDdXJzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dmFsdWVEZXBlbmRlbmNp
ZXMpOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZSk6CisgICAg
ICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdv
cmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29ubmVjdEV2ZW50KToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6
OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5o
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpNZXNzYWdlV29ya2VyQ29udGV4dFRhc2sp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpwZXJmb3JtVGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyVGFzazo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJUYXNrOjpNZXNzYWdlV29ya2VyVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9X
b3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oOgorCiAyMDExLTA3LTI4ICBM
ZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBGaXggc3BlZWNoIGlucHV0IGljb24gcmVjdCBvbiBSVEwgZGlyZWN0aW9ucy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDMwMjU3ZjIuLmM4MDBhMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtMTI5Nyw2ICsxMjk3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50SW5wdXRUeXBlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaCBcCisJ
U291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Rv
bS9UcmFuc2ZlcmFibGUuaCBcCQogCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2Zvcm1Tb3VyY2Uu
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vVHJhdmVyc2FsLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4
IDY5NmE0MmYuLmMxYzFlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC01NjAsOCArNTYwLDgg
QEAgX19aTjdXZWJDb3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnRDMUVQN05TRXZlbnQKIF9fWk43
V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjBzZXJ2ZVBlbmRpbmdSZXF1ZXN0c0VOU18y
MFJlc291cmNlTG9hZFByaW9yaXR5RQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIyNHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZEVQTlNfNUZyYW1lRVBOU18zMk5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyQ2xpZW50RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFCiBfX1pON1dlYkNv
cmUyMVNWR0RvY3VtZW50RXh0ZW5zaW9uczIxc2FtcGxlQW5pbWF0aW9uQXRUaW1lRVJLTjNXVEY2
U3RyaW5nRVBOU18xNFNWR1NNSUxFbGVtZW50RWQKLV9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNj
cmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVlSlNDb250ZXh0UFBLMTNPcGFxdWVKU1Zh
bHVlCi1fX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUEsxNU9wYXF1
ZUpTQ29udGV4dFBLMTNPcGFxdWVKU1ZhbHVlUFM2XworX19aTjdXZWJDb3JlMjFTZXJpYWxpemVk
U2NyaXB0VmFsdWUxMWRlc2VyaWFsaXplRVBLMTVPcGFxdWVKU0NvbnRleHRQUEsxM09wYXF1ZUpT
VmFsdWVQTjNXVEY2VmVjdG9ySVM2X0xtMUVFRQorX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2Ny
aXB0VmFsdWU2Y3JlYXRlRVBLMTVPcGFxdWVKU0NvbnRleHRQSzEzT3BhcXVlSlNWYWx1ZVBTNl9Q
TjNXVEY2VmVjdG9ySVM2X0xtMUVFRQogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFs
dWVDMUVSTjNXVEY2VmVjdG9ySWhMbTBFRUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlw
dFZhbHVlRDFFdgogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm41cGFyc2VFUktO
M1dURjZTdHJpbmdFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDBmN2U1My4uYmU5Yzk3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMTAxNyw2ICsxMDE3LDcgQEAKICAgICAgICAgICAgICdkb20vU3R5bGVk
RWxlbWVudC5oJywKICAgICAgICAgICAgICdkb20vVGV4dC5oJywKICAgICAgICAgICAgICdkb20v
VGV4dEV2ZW50SW5wdXRUeXBlLmgnLAorICAgICAgICAgICAgJ2RvbS9UcmFuc2ZlcmFibGUuaCcs
CiAgICAgICAgICAgICAnZG9tL1VJRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL1VJRXZlbnRX
aXRoS2V5U3RhdGUuaCcsCiAgICAgICAgICAgICAnZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgn
LApAQCAtNTQwNCw2ICs1NDA1LDggQEAKICAgICAgICAgICAgICdkb20vVG91Y2hFdmVudC5oJywK
ICAgICAgICAgICAgICdkb20vVG91Y2hMaXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1RvdWNo
TGlzdC5oJywKKyAgICAgICAgICAgICdkb20vVHJhbnNmZXJhYmxlLmNwcCcsCisgICAgICAgICAg
ICAnZG9tL1RyYW5zZmVyYWJsZS5oJywKICAgICAgICAgICAgICdkb20vVHJhbnNmb3JtU291cmNl
LmgnLAogICAgICAgICAgICAgJ2RvbS9UcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL1RyYW5zZm9ybVNvdXJjZVF0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGI0
ZmIwOGIuLjdjYTA3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC01NTEsNiArNTUxLDcgQEAgU09VUkNF
UyArPSBcCiAgICAgZG9tL1RvdWNoLmNwcCBcCiAgICAgZG9tL1RvdWNoRXZlbnQuY3BwIFwKICAg
ICBkb20vVG91Y2hMaXN0LmNwcCBcCisgICAgZG9tL1RyYW5zZmVyYWJsZS5jcHAgXAogICAgIGRv
bS9UcmF2ZXJzYWwuY3BwIFwKICAgICBkb20vVHJlZVNjb3BlLmNwcCBcCiAgICAgZG9tL1RyZWVX
YWxrZXIuY3BwIFwKQEAgLTE1MzgsNiArMTUzOSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9U
b3VjaC5oIFwKICAgICBkb20vVG91Y2hFdmVudC5oIFwKICAgICBkb20vVG91Y2hMaXN0LmggXAor
ICAgIGRvbS9UcmFuc2ZlcmFibGUuaCBcCiAgICAgZG9tL1RyYW5zZm9ybVNvdXJjZS5oIFwKICAg
ICBkb20vVHJhdmVyc2FsLmggXAogICAgIGRvbS9UcmVlRGVwdGhMaW1pdC5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4Zjc1
NDk4Li5hNmFlODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC00ODA2LDYgKzQ4MDYsOCBAQAogCQlCNzM0QjE4MTExOUI5OTEx
MDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjczNEIxODAxMTlCOTkxMTAwNjU4N0JEIC8qIEZvbnRUcmFu
c2NvZGVyLmNwcCAqLzsgfTsKIAkJQjczNEIxODMxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFu
c2NvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NzM0QjE4MjExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuaCAqLzsgfTsKIAkJQjc3
NkQ0M0QxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMg
LyogUHJpbnRDb250ZXh0LmNwcCAqLzsgfTsKKwkJQjg2MTg3MkMxM0Q4RUM0OTAwOEI4NzRGIC8q
IFRyYW5zZmVyYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCODYxODcyQTEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmNwcCAqLzsg
fTsKKwkJQjg2MTg3MkQxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg2MTg3MkIxM0Q4RUM0OTAw
OEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUI4ODVFOEQ0MTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5jcHAgKi87IH07CiAJCUI4ODVFOEQ1MTFFMDZERDIwMDlGRkJGNCAv
KiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4ODVFOEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
ICgpOyB9OyB9OwogCQlCOERCREI0QjEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29t
bWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
OERCREI0NzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAgKi87IH07
CkBAIC0xMTQ2Myw2ICsxMTQ2NSw4IEBACiAJCUI3MzRCMTgyMTE5Qjk5MUQwMDY1ODdCRCAvKiBG
b250VHJhbnNjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGb250VHJh
bnNjb2Rlci5oOyBwYXRoID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250
ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50Q29udGV4dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMgLyog
UHJpbnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
aW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4NjE4NzJBMTNE
OEVDNDkwMDhCODc0RiAvKiBUcmFuc2ZlcmFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVHJhbnNmZXJhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjg2MTg3MkIxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2ZlcmFibGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCODg1RThEMzExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
OERCREI0NzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRTZWxlY3Rpb25Db21tYW5kLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5OTM1LDYgKzE5OTM5LDggQEAKIAkJCQk5
MzNBMTQyRDBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmggKi8sCiAJCQkJOTMzQTE0MkMw
QjdEMTg4NjAwQTUzRkZEIC8qIFRleHRFdmVudC5pZGwgKi8sCiAJCQkJQTc3QjQxOUYxMkU2NzVB
OTAwNTQzNDNEIC8qIFRleHRFdmVudElucHV0VHlwZS5oICovLAorCQkJCUI4NjE4NzJCMTNEOEVD
NDkwMDhCODc0RiAvKiBUcmFuc2ZlcmFibGUuaCAqLywKKwkJCQlCODYxODcyQTEzRDhFQzQ5MDA4
Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmNwcCAqLywKIAkJCQk1REIxQkM2ODEwNzE1QTY0MDBFRkFB
NDkgLyogVHJhbnNmb3JtU291cmNlLmggKi8sCiAJCQkJNURCMUJDNjkxMDcxNUE2NDAwRUZBQTQ5
IC8qIFRyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwICovLAogCQkJCTg1NEZFNzJDMEEyMjk3QkUw
MDU4RDdBRCAvKiBUcmF2ZXJzYWwuY3BwICovLApAQCAtMjMwOTIsNiArMjMwOTgsNyBAQAogCQkJ
CTkzMDVCMjREMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ0NjEzQjAwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5RTkxMkFFMEVGQUM5MDYwMDlEMENBRiAvKiBUaW1pbmdGdW5jdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQjg2MTg3MkQxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzQwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0
aW9uTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDRTBFRjg2RDQ3MDA5RDBDQUYg
LyogVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFEMDBFRjg2
RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NTkxMiw2ICsyNTkxOSw3IEBACiAJCQkJNzU1M0NGRTkxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUVBNDA5OUVCNzhD
MDA1NkU1ODEgLyogVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0NjEzQUYwQ0Q2MzMx
MDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjg2MTg3MkMx
M0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OUU5MTFDMzBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDk0QkM0MEQxMkFFREQ5RTAwNzQzQkQyIC8qIFRyYW5zZm9ybWF0aW9u
TWF0cml4Q0EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NTgwQjA1MzgxNDAwMkNFNjRG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNzQ0ODE3
Ni4uNjBmN2Q1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcApAQCAtNjk2LDE0ICs2OTYsMTQgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6
c2hvd01vZGFsRGlhbG9nKEV4ZWNTdGF0ZSogZXhlYykKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6
cG9zdE1lc3NhZ2UoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhl
YywgZXhlYy0+YXJndW1lbnQoMCkpOwotCisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJh
YmxlczsKKyAgICBKU1ZhbHVlUmVmQXJyYXkgdmFsdWVSZWZBcnJheTsKKyAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpID4gMikKKyAgICAgICAgZmlsbFRyYW5zZmVyYWJsZUFycmF5KGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDEpLCB0cmFuc2ZlcmFibGVzLCB2YWx1ZVJlZkFycmF5KTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9ydHM7Ci0gICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA+IDIpCi0gICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDEpLCBtZXNzYWdlUG9ydHMpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVj
LT5hcmd1bWVudCgwKSwgJnZhbHVlUmVmQXJyYXkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTcxMiw3ICs3MTIsNyBA
QCBKU1ZhbHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgaW1wbCgpLT5wb3N0TWVzc2FnZShtZXNzYWdlLCAmbWVzc2FnZVBvcnRzLCB0YXJnZXRPcmln
aW4sIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZWMpOworICAgIGltcGwoKS0+cG9zdE1lc3NhZ2Uo
bWVzc2FnZSwgJnRyYW5zZmVyYWJsZXMsIHRhcmdldE9yaWdpbiwgYWN0aXZlRE9NV2luZG93KGV4
ZWMpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNz
YWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDQzOTY2NGEuLjU2MzJiNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTQ0
LDEzICs0NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNNZXNzYWdlRXZl
bnQ6OnBvcnRzKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICBNZXNzYWdlUG9ydEFycmF5
KiBwb3J0cyA9IHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVudCo+KGltcGwoKSktPnBvcnRzKCk7Ci0g
ICAgaWYgKCFwb3J0cyB8fCBwb3J0cy0+aXNFbXB0eSgpKQorICAgIE1lc3NhZ2VFdmVudCogZXZl
bnQgPSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPihpbXBsKCkpOworICAgIFRyYW5zZmVyYWJs
ZUFycmF5KiB0cmFuc2ZlcmFibGVzID0gZXZlbnQtPnRyYW5zZmVyYWJsZXMoKTsKKyAgICBpZiAo
IXRyYW5zZmVyYWJsZXMgfHwgdHJhbnNmZXJhYmxlcy0+aXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4ganNOdWxsKCk7Ci0KICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcG9ydHMtPnNpemUoKTsgaSsrKQotICAgICAgICBsaXN0LmFwcGVu
ZCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCAoKnBvcnRzKVtpXS5nZXQoKSkpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6ZSgpOyArK2kpCisgICAgICAg
IGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSAoKnRyYW5zZmVyYWJsZXMpW2ldLmdldCgp
LT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgICAgICBsaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCgpLCBtZXNzYWdlUG9ydCkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShl
eGVjLCBnbG9iYWxPYmplY3QoKSwgbGlzdCk7CiB9CiAKQEAgLTU5LDIyICs2MCwyNCBAQCBKU0M6
OkpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgY29uc3QgVVN0cmluZyYgdHlwZUFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpOwogICAgIGJvb2wgY2FuQnViYmxlQXJnID0gZXhlYy0+YXJndW1lbnQoMSku
dG9Cb29sZWFuKGV4ZWMpOwogICAgIGJvb2wgY2FuY2VsYWJsZUFyZyA9IGV4ZWMtPmFyZ3VtZW50
KDIpLnRvQm9vbGVhbihleGVjKTsKLSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDMpKTsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXM7
CisgICAgT3duUHRyPEpTVmFsdWVSZWZBcnJheT4gdmFsdWVSZWZBcnJheTsKKyAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50KDcpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgdHJhbnNmZXJh
YmxlcyA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVBcnJheSk7CisgICAgICAgIHZhbHVlUmVm
QXJyYXkgPSBhZG9wdFB0cihuZXcgSlNWYWx1ZVJlZkFycmF5KTsKKyAgICAgICAgZmlsbFRyYW5z
ZmVyYWJsZUFycmF5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDcpLCAqdHJhbnNmZXJhYmxlcywgKnZh
bHVlUmVmQXJyYXkpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDMpLCB2YWx1ZVJlZkFycmF5LmdldCgpKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGNvbnN0
IFVTdHJpbmcmIG9yaWdpbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDQpLnRvU3RyaW5nKGV4ZWMpOwog
ICAgIGNvbnN0IFVTdHJpbmcmIGxhc3RFdmVudElkQXJnID0gZXhlYy0+YXJndW1lbnQoNSkudG9T
dHJpbmcoZXhlYyk7CiAgICAgRE9NV2luZG93KiBzb3VyY2VBcmcgPSB0b0RPTVdpbmRvdyhleGVj
LT5hcmd1bWVudCg2KSk7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0
czsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDcpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAg
ICAgICAgbWVzc2FnZVBvcnRzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkpOwotICAg
ICAgICBmaWxsTWVzc2FnZVBvcnRBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCg3KSwgKm1lc3Nh
Z2VQb3J0cyk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KIAogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQg
PSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPih0aGlzLT5pbXBsKCkpOwotICAgIGV2ZW50LT5p
bml0TWVzc2FnZUV2ZW50KHVzdHJpbmdUb0F0b21pY1N0cmluZyh0eXBlQXJnKSwgY2FuQnViYmxl
QXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCB1c3RyaW5nVG9TdHJpbmcob3JpZ2luQXJnKSwg
dXN0cmluZ1RvU3RyaW5nKGxhc3RFdmVudElkQXJnKSwgc291cmNlQXJnLCBtZXNzYWdlUG9ydHMu
cmVsZWFzZSgpKTsKKyAgICBldmVudC0+aW5pdE1lc3NhZ2VFdmVudCh1c3RyaW5nVG9BdG9taWNT
dHJpbmcodHlwZUFyZyksIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0YUFyZywgdXN0
cmluZ1RvU3RyaW5nKG9yaWdpbkFyZyksIHVzdHJpbmdUb1N0cmluZyhsYXN0RXZlbnRJZEFyZyks
IHNvdXJjZUFyZywgdHJhbnNmZXJhYmxlcy5yZWxlYXNlKCkpOwogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZVBvcnRDdXN0b20uY3BwCmluZGV4IGFjMDZjNmEuLjkzOGU3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNNZXNzYWdl
UG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApAQCAtNjAsMTIgKzYxLDEzIEBAIEpTQzo6SlNW
YWx1ZSBKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKICAg
ICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgpKTsKIH0KIAotdm9pZCBmaWxs
TWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0QXJyYXkpCit2b2lkIGZpbGxUcmFuc2ZlcmFibGVBcnJh
eShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBUcmFuc2ZlcmFibGVB
cnJheSYgdHJhbnNmZXJhYmxlQXJyYXksIEpTVmFsdWVSZWZBcnJheSYgdmFsdWVSZWZBcnJheSkK
IHsKLSAgICAvLyBDb252ZXJ0IGZyb20gdGhlIHBhc3NlZC1pbiBKUyBhcnJheS1saWtlIG9iamVj
dCB0byBhIE1lc3NhZ2VQb3J0QXJyYXkuCisgICAgLy8gQ29udmVydCBmcm9tIHRoZSBwYXNzZWQt
aW4gSlMgYXJyYXktbGlrZSBvYmplY3QgdG8gYSBUcmFuc2ZlcmFibGVBcnJheS4KICAgICAvLyBB
bHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1
IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYy4K
ICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBwb3J0QXJyYXku
cmVzaXplKDApOworICAgICAgICB0cmFuc2ZlcmFibGVBcnJheS5yZXNpemUoMCk7CisgICAgICAg
IHZhbHVlUmVmQXJyYXkucmVzaXplKDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04
NSwxNCArODcsMzUgQEAgdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdlUG9ydEEKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCisKICAgICAgICAgLy8gVmFsaWRhdGlvbiBvZiBPYmplY3RzIGltcGxl
bWVudGluZyBhbiBpbnRlcmZhY2UsIHBlciBXZWJJREwgc3BlYyA0LjEuMTUuCi0gICAgICAgIFJl
ZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IHRvTWVzc2FnZVBvcnQodmFsdWUpOwotICAgICAgICBp
ZiAoIXBvcnQpIHsKKyAgICAgICAgUmVmUHRyPFRyYW5zZmVyYWJsZT4gdHJhbnNmZXJhYmxlID0g
dG9OYXRpdmVUcmFuc2ZlcmFibGUodmFsdWUpOworICAgICAgICBpZiAoIXRyYW5zZmVyYWJsZSkg
ewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgcG9ydEFycmF5LmFwcGVuZChwb3J0LnJlbGVhc2UoKSk7Cisg
ICAgICAgIHRyYW5zZmVyYWJsZUFycmF5LmFwcGVuZCh0cmFuc2ZlcmFibGUucmVsZWFzZSgpKTsK
KyAgICAgICAgdmFsdWVSZWZBcnJheS5hcHBlbmQodG9SZWYoZXhlYywgdmFsdWUpKTsKICAgICB9
CiB9CiAKK1Bhc3NSZWZQdHI8VHJhbnNmZXJhYmxlPiB0b05hdGl2ZVRyYW5zZmVyYWJsZShKU0M6
OkpTVmFsdWUgdmFsdWUpCit7CisgICAgUmVmUHRyPFRyYW5zZmVyYWJsZT4gb3V0VmFsdWUgPSB0
b01lc3NhZ2VQb3J0KHZhbHVlKTsKKyAgICBpZiAob3V0VmFsdWUpCisgICAgICAgIHJldHVybiBv
dXRWYWx1ZTsKKyAgICAvLyBGSVhNRTogT25jZSBvdGhlciBUcmFuc2ZlcmFibGUgdHlwZXMgYXJl
IGFkZGVkLCBjaGVjayBmb3IgdGhlbSBoZXJlLgorICAgIC8vIFdlJ2xsIHJldHVybiBudWxsIGlm
IHZhbHVlIGlzIG5vdCBUcmFuc2ZlcmFibGUgaW4gYW55IGNhc2UuCisgICAgcmV0dXJuIG91dFZh
bHVlOworfQorCitKU0M6OkpTVmFsdWUgdG9KU1RyYW5zZmVyYWJsZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVHJhbnNmZXJhYmxlKiB2YWx1
ZSkKK3sKKyAgICBpZiAoTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gdmFsdWUtPmFzTWVzc2Fn
ZVBvcnQoKSkKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBtZXNzYWdl
UG9ydCk7CisgICAgLy8gVGhpcyB0eXBlY2FzZSBzaG91bGQgYWx3YXlzIGJlIHRvdGFsLgorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAppbmRleCA4Mzk2YWUxLi4zNjM3YTFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCkBAIC0z
Miw2ICszMiw4IEBACiAjZGVmaW5lIEpTTWVzc2FnZVBvcnRDdXN0b21faAogCiAjaW5jbHVkZSAi
TWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNs
dWRlICJUcmFuc2ZlcmFibGUuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC0zOSwyNiArNDEsMzEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotICAgIC8vIEhlbHBlciBm
dW5jdGlvbiB3aGljaCBwdWxscyB0aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBp
bnRvIGEgTWVzc2FnZVBvcnRBcnJheS4KKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcHVs
bHMgdGhlIHZhbHVlcyBvdXQgb2YgYSBKUyBzZXF1ZW5jZSBhbmQgaW50byBhIFRyYW5zZmVyYWJs
ZUFycmF5LCBtaXJyb3JpbmcgdGhlc2UgaW50byBhIEpTVmFsdWVSZWZBcnJheS4KICAgICAvLyBB
bHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1
IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYy4K
ICAgICAvLyBNYXkgZ2VuZXJhdGUgYW4gZXhjZXB0aW9uIHZpYSB0aGUgcGFzc2VkIEV4ZWNTdGF0
ZS4KLSAgICB2b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBNZXNzYWdlUG9ydEFycmF5Jik7CisgICAgdm9pZCBmaWxsVHJhbnNmZXJhYmxlQXJy
YXkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFRyYW5zZmVyYWJsZUFycmF5JiwgSlNW
YWx1ZVJlZkFycmF5Jik7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBmcm9t
IEpTIHBvc3RNZXNzYWdlIGFyZ3VtZW50cyB0byBXZWJDb3JlIHBvc3RNZXNzYWdlIGFyZ3VtZW50
cy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGhh
bmRsZVBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsKQogICAgIHsKLSAg
ICAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwotICAgICAgICBmaWxsTWVzc2FnZVBvcnRBcnJh
eShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgcG9ydEFycmF5KTsKKyAgICAgICAgVHJhbnNmZXJh
YmxlQXJyYXkgdHJhbnNmZXJhYmxlQXJyYXk7CisgICAgICAgIEpTVmFsdWVSZWZBcnJheSB2YWx1
ZVJlZkFycmF5OworICAgICAgICBmaWxsVHJhbnNmZXJhYmxlQXJyYXkoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMSksIHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1ZVJlZkFycmF5KTsKKyAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmlu
ZWQoKTsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCAmdmFs
dWVSZWZBcnJheSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CiAKICAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgICAgIGltcGwtPnBvc3RNZXNzYWdlKG1lc3NhZ2UsICZwb3J0QXJyYXksIGVj
KTsKKyAgICAgICAgaW1wbC0+cG9zdE1lc3NhZ2UobWVzc2FnZSwgJnRyYW5zZmVyYWJsZUFycmF5
LCBlYyk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgICAgIHJldHVy
biBKU0M6OmpzVW5kZWZpbmVkKCk7CiAgICAgfQogCisgICAgUGFzc1JlZlB0cjxUcmFuc2ZlcmFi
bGU+IHRvTmF0aXZlVHJhbnNmZXJhYmxlKEpTQzo6SlNWYWx1ZSk7CisgICAgSlNDOjpKU1ZhbHVl
IHRvSlNUcmFuc2ZlcmFibGUoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRy
YW5zZmVyYWJsZSopOwogfQogI2VuZGlmIC8vIEpTTWVzc2FnZVBvcnRDdXN0b21faApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDRmNTFkZGIuLjg3ZTA3
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTEw
MCwxNCArMTAwLDE0IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmlzRnVuY3Rpb24oKSBjb25zdAogICAg
IHJldHVybiBnZXRDYWxsRGF0YShtX3ZhbHVlLmdldCgpLCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVO
b25lOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2NyaXB0VmFsdWU6
OnNlcmlhbGl6ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6YXRpb25FcnJvck1v
ZGUgdGhyb3dFeGNlcHRpb25zKQorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNj
cmlwdFZhbHVlOjpzZXJpYWxpemUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBKU1ZhbHVlUmVm
QXJyYXkqIHRyYW5zZmVyTGlzdCwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlv
bnMpCiB7Ci0gICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0
YXRlLCBqc1ZhbHVlKCksIHRocm93RXhjZXB0aW9ucyk7CisgICAgcmV0dXJuIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCksIHRyYW5zZmVyTGlzdCwg
dGhyb3dFeGNlcHRpb25zKTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1
ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitTY3JpcHRWYWx1ZSBT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIHZhbHVlLCBKU1ZhbHVlUmVmQXJyYXkqIHRyYW5zZmVyTGlzdCwgU2Vy
aWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7Ci0gICAgcmV0dXJuIFNjcmlw
dFZhbHVlKHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIHZhbHVlLT5kZXNlcmlhbGl6ZShzY3Jp
cHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdGhyb3dFeGNlcHRp
b25zKSk7CisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCks
IHZhbHVlLT5kZXNlcmlhbGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgdHJhbnNmZXJMaXN0LCB0aHJvd0V4Y2VwdGlvbnMpKTsKIH0KIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaApp
bmRleCBmYWRlODMwLi5hMjI2YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFZhbHVlLmgKQEAgLTYyLDggKzYyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNjcmlwdFZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvdGhl
ci5tX3ZhbHVlOyB9CiAKLSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplKFNjcmlwdFN0YXRlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsK
LSAgICBzdGF0aWMgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemUoU2NyaXB0U3RhdGUqLCBTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworICAg
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemUoU2NyaXB0U3RhdGUq
LCBKU1ZhbHVlUmVmQXJyYXkqIHRyYW5zZmVyTGlzdCwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9
IFRocm93aW5nKTsKKyAgICBzdGF0aWMgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemUoU2NyaXB0U3Rh
dGUqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBKU1ZhbHVlUmVmQXJyYXkqIHRyYW5zZmVyTGlz
dCwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKIAogICAgIHN0YXRpYyBTY3Jp
cHRWYWx1ZSB1bmRlZmluZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggOGJhZjkxOS4uNWMzY2E4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNGaWxlLmgiCiAjaW5jbHVkZSAi
SlNGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkpTSW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiSlNNZXNz
YWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtMTYzLDYgKzE2NCwxMSBAQCBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW50IFN0cmluZ1Bvb2xUYWcgPSAweEZGRkZGRkZFOwogCiB0eXBl
ZGVmIHBhaXI8SlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZT4gRGVzZXJpYWxp
emF0aW9uUmVzdWx0OwogCitzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBvcGVuUmVmKEpTVmFs
dWVSZWYgcmVmKQoreworICAgIHJldHVybiB0b0pTKGNvbnN0X2Nhc3Q8T3BhcXVlSlNWYWx1ZSo+
KHJlZikpOworfQorCiBjbGFzcyBDbG9uZUJhc2UgewogcHJvdGVjdGVkOgogICAgIENsb25lQmFz
ZShFeGVjU3RhdGUqIGV4ZWMpCkBAIC0yNTAsOSArMjU2LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHN0YXRpYyBib29sIHdyaXRlTGl0dGxlRW5kaWFuKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVy
LCBjb24KIAogY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgU2VyaWFsaXphdGlvblJldHVybkNvZGUgc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSwgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQpCisgICAgc3RhdGljIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlIHNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUsIEpTVmFsdWVSZWZBcnJheSogdHJhbnNmZXJMaXN0LCBWZWN0b3I8dWludDhfdD4mIG91dCkK
ICAgICB7Ci0gICAgICAgIENsb25lU2VyaWFsaXplciBzZXJpYWxpemVyKGV4ZWMsIG91dCk7Cisg
ICAgICAgIENsb25lU2VyaWFsaXplciBzZXJpYWxpemVyKGV4ZWMsIHRyYW5zZmVyTGlzdCwgb3V0
KTsKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIuc2VyaWFsaXplKHZhbHVlKTsKICAgICB9CiAK
QEAgLTI2OSwxMCArMjc1LDExIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2xv
bmVTZXJpYWxpemVyKEV4ZWNTdGF0ZSogZXhlYywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQpCisgICAg
Q2xvbmVTZXJpYWxpemVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZVJlZkFycmF5KiB0cmFuc2Zl
ckxpc3QsIFZlY3Rvcjx1aW50OF90PiYgb3V0KQogICAgICAgICA6IENsb25lQmFzZShleGVjKQog
ICAgICAgICAsIG1fYnVmZmVyKG91dCkKICAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihleGVj
LCBVU3RyaW5nKCIiLCAwKSkKKyAgICAgICAgLCBtX3RyYW5zZmVyTGlzdCh0cmFuc2Zlckxpc3Qp
CiAgICAgewogICAgICAgICB3cml0ZShDdXJyZW50VmVyc2lvbik7CiAgICAgfQpAQCAtMjg3LDYg
KzI5NCwyNCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gaXNKU0FycmF5KCZtX2V4ZWMtPmds
b2JhbERhdGEoKSwgb2JqZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8p
OwogICAgIH0KIAorICAgIGJvb2wgaW5pdGlhbGl6ZVdpdGhUcmFuc2Zlckxpc3QoKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX3RyYW5zZmVyTGlzdCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdHJhbnNmZXJMaXN0LT5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9wZW5SZWYoKCptX3RyYW5zZmVyTGlz
dClbaV0pOworICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgp
OworICAgICAgICAgICAgaWYgKCFvYmplY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgcGFpcjxPYmplY3RQb29sOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1f
b2JqZWN0UG9vbC5hZGQob2JqZWN0LCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKKyAgICAgICAgICAg
IC8vIEFsbCBvYmplY3RzIGluIHRoZSB0cmFuc2ZlciBsaXN0IG11c3QgYmUgdW5pcXVlLgorICAg
ICAgICAgICAgaWYgKCFpdGVyLnNlY29uZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgYm9vbCBzdGFydE9iamVjdEludGVybmFsKEpT
T2JqZWN0KiBvYmplY3QpCiAgICAgewogICAgICAgICAvLyBSZWNvcmQgb2JqZWN0IGZvciBncmFw
aCByZWNvbnN0cnVjdGlvbgpAQCAtNjA2LDYgKzYzMSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgdWludDMyX3QsIElkZW50aWZpZXJSZXBIYXNo
PiBTdHJpbmdDb25zdGFudFBvb2w7CiAgICAgU3RyaW5nQ29uc3RhbnRQb29sIG1fY29uc3RhbnRQ
b29sOwogICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CisgICAgSlNWYWx1ZVJlZkFy
cmF5KiBtX3RyYW5zZmVyTGlzdDsKIH07CiAKIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25l
U2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCkBAIC02MTgsNiArNjQ0LDEwIEBAIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUg
aW4pCiAgICAgVmVjdG9yPFdhbGtlclN0YXRlLCAxNj4gc3RhdGVTdGFjazsKICAgICBXYWxrZXJT
dGF0ZSBzdGF0ZSA9IFN0YXRlVW5rbm93bjsKICAgICBKU1ZhbHVlIGluVmFsdWUgPSBpbjsKKyAg
ICBpZiAoIWluaXRpYWxpemVXaXRoVHJhbnNmZXJMaXN0KCkpIHsKKyAgICAgICAgbV9mYWlsZWQg
PSB0cnVlOworICAgICAgICByZXR1cm4gVmFsaWRhdGlvbkVycm9yOworICAgIH0KICAgICB1bnNp
Z25lZCB0aWNrQ291bnQgPSB0aWNrc1VudGlsTmV4dENoZWNrKCk7CiAgICAgd2hpbGUgKDEpIHsK
ICAgICAgICAgc3dpdGNoIChzdGF0ZSkgewpAQCAtNzgzLDExICs4MTMsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gU3RyaW5nKHN0ci5pbXBsKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBE
ZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKKyAg
ICBzdGF0aWMgRGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZkFycmF5KiB0cmFuc2Zl
ckxpc3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYg
KCFidWZmZXIuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VfcGFpcihqc051bGwoKSwg
VW5zcGVjaWZpZWRFcnJvcik7Ci0gICAgICAgIENsb25lRGVzZXJpYWxpemVyIGRlc2VyaWFsaXpl
cihleGVjLCBnbG9iYWxPYmplY3QsIGJ1ZmZlcik7CisgICAgICAgIENsb25lRGVzZXJpYWxpemVy
IGRlc2VyaWFsaXplcihleGVjLCBnbG9iYWxPYmplY3QsIHRyYW5zZmVyTGlzdCwgYnVmZmVyKTsK
ICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZXIuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJu
IG1ha2VfcGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybiBk
ZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoKTsKQEAgLTgzMiwxMyArODYyLDE0IEBAIHByaXZhdGU6
CiAgICAgICAgIHNpemVfdCBtX2luZGV4OwogICAgIH07CiAKLSAgICBDbG9uZURlc2VyaWFsaXpl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYnVmZmVyKQorICAgIENsb25lRGVzZXJpYWxpemVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZkFycmF5KiB0cmFu
c2Zlckxpc3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgICAgICA6IENsb25l
QmFzZShleGVjKQogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAg
ICAgLCBtX2lzRE9NR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+aW5oZXJpdHMoJkpTRE9NR2xv
YmFsT2JqZWN0OjpzX2luZm8pKQogICAgICAgICAsIG1fcHRyKGJ1ZmZlci5kYXRhKCkpCiAgICAg
ICAgICwgbV9lbmQoYnVmZmVyLmRhdGEoKSArIGJ1ZmZlci5zaXplKCkpCiAgICAgICAgICwgbV92
ZXJzaW9uKDB4RkZGRkZGRkYpCisgICAgICAgICwgbV90cmFuc2Zlckxpc3QodHJhbnNmZXJMaXN0
KQogICAgIHsKICAgICAgICAgaWYgKCFyZWFkKG1fdmVyc2lvbikpCiAgICAgICAgICAgICBtX3Zl
cnNpb24gPSAweEZGRkZGRkZGOwpAQCAtMTE4OSw2ICsxMjIwLDcgQEAgcHJpdmF0ZToKICAgICBj
b25zdCB1aW50OF90KiBtX2VuZDsKICAgICB1bnNpZ25lZCBtX3ZlcnNpb247CiAgICAgVmVjdG9y
PENhY2hlZFN0cmluZz4gbV9jb25zdGFudFBvb2w7CisgICAgSlNWYWx1ZVJlZkFycmF5KiBtX3Ry
YW5zZmVyTGlzdDsKIH07CiAKIERlc2VyaWFsaXphdGlvblJlc3VsdCBDbG9uZURlc2VyaWFsaXpl
cjo6ZGVzZXJpYWxpemUoKQpAQCAtMTIwMSw2ICsxMjMzLDEwIEBAIERlc2VyaWFsaXphdGlvblJl
c3VsdCBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoKQogICAgIFdhbGtlclN0YXRlIHN0
YXRlID0gU3RhdGVVbmtub3duOwogICAgIEpTVmFsdWUgb3V0VmFsdWU7CiAKKyAgICBpZiAobV90
cmFuc2Zlckxpc3QpCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90cmFuc2Zlckxp
c3QtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmQob3BlblJlZigo
Km1fdHJhbnNmZXJMaXN0KVtpXSkpOworCiAgICAgdW5zaWduZWQgdGlja0NvdW50ID0gdGlja3NV
bnRpbE5leHRDaGVjaygpOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHN3aXRjaCAoc3RhdGUp
IHsKQEAgLTEzMzgsMTAgKzEzNzQsMTAgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiAgICAgbV9kYXRhLnN3YXAo
YnVmZmVyKTsKIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgU2Vy
aWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlUmVmQXJyYXkqIHRyYW5zZmVyTGlzdCwgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlcjsKLSAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlID0gQ2xvbmVTZXJpYWxp
emVyOjpzZXJpYWxpemUoZXhlYywgdmFsdWUsIGJ1ZmZlcik7CisgICAgU2VyaWFsaXphdGlvblJl
dHVybkNvZGUgY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKGV4ZWMsIHZhbHVlLCB0
cmFuc2Zlckxpc3QsIGJ1ZmZlcik7CiAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBUaHJvd2lu
ZykKICAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChleGVj
LCBjb2RlKTsKIApAQCAtMTM2NSwxMiArMTQwMSwxMiBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBz
dAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKGJ1ZmZlcikp
OwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkNvbnRleHQsIEpTVmFsdWVSZWYgYXBp
VmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpZ2lu
Q29udGV4dCwgSlNWYWx1ZVJlZiBhcGlWYWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBKU1Zh
bHVlUmVmQXJyYXkqIHRyYW5zZmVyTGlzdCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KG9yaWdpbkNvbnRleHQpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywgYXBpVmFsdWUpOwotICAgIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShleGVjLCB2YWx1ZSk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywg
dmFsdWUsIHRyYW5zZmVyTGlzdCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAg
ICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhl
YywgZXhlYy0+ZXhjZXB0aW9uKCkpOwpAQCAtMTM4NiwxOSArMTQyMiwxOSBAQCBTdHJpbmcgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjp0b1N0cmluZygpCiAgICAgcmV0dXJuIENsb25lRGVzZXJpYWxp
emVyOjpkZXNlcmlhbGl6ZVN0cmluZyhtX2RhdGEpOwogfQogCi1KU1ZhbHVlIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK0pT
VmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWVSZWZBcnJheSogdHJhbnNmZXJM
aXN0LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKIHsKLSAgICBEZXNl
cmlhbGl6YXRpb25SZXN1bHQgcmVzdWx0ID0gQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXpl
KGV4ZWMsIGdsb2JhbE9iamVjdCwgbV9kYXRhKTsKKyAgICBEZXNlcmlhbGl6YXRpb25SZXN1bHQg
cmVzdWx0ID0gQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKGV4ZWMsIGdsb2JhbE9iamVj
dCwgdHJhbnNmZXJMaXN0LCBtX2RhdGEpOwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gVGhy
b3dpbmcpCiAgICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQo
ZXhlYywgcmVzdWx0LnNlY29uZCk7CiAgICAgcmV0dXJuIHJlc3VsdC5maXJzdDsKIH0KIAotSlNW
YWx1ZVJlZiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiBk
ZXN0aW5hdGlvbkNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK0pTVmFsdWVSZWYgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25D
b250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIEpTVmFsdWVSZWZBcnJheSogdHJhbnNmZXJM
aXN0KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoZGVzdGluYXRpb25Db250ZXh0KTsK
ICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBk
ZXNlcmlhbGl6ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBkZXNlcmlhbGl6ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IHRyYW5zZmVyTGlzdCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAg
IGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgZXhl
Yy0+ZXhjZXB0aW9uKCkpOwpAQCAtMTQwOSw2ICsxNDQ1LDI0IEBAIEpTVmFsdWVSZWYgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25Db250
ZXh0LCBKCiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHZhbHVlKTsKIH0KIAorSlNWYWx1ZSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgU2Vy
aWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCit7CisgICAgSlNWYWx1ZVJlZkFy
cmF5IHRyYW5zZmVyUmVmTGlzdDsKKyAgICBpZiAodHJhbnNmZXJMaXN0ICYmICFvcGVuVHJhbnNm
ZXJhYmxlQXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCAqdHJhbnNmZXJMaXN0LCB0cmFuc2ZlclJl
Zkxpc3QpKSB7CisgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gVGhyb3dpbmcpCisgICAg
ICAgICAgICBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKGV4ZWMsIFZh
bGlkYXRpb25FcnJvcik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAg
ICByZXR1cm4gZGVzZXJpYWxpemUoZXhlYywgZ2xvYmFsT2JqZWN0LCAmdHJhbnNmZXJSZWZMaXN0
LCB0aHJvd0V4Y2VwdGlvbnMpOworfQorCitib29sIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6b3Bl
blRyYW5zZmVyYWJsZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVHJhbnNmZXJhYmxlQXJyYXkmIHRyYW5zZmVyTGlzdCwgSlNWYWx1ZVJlZkFycmF5
JiB2YWx1ZVJlZkFycmF5KQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJM
aXN0LnNpemUoKTsgKytpKQorICAgICAgICB2YWx1ZVJlZkFycmF5LmFwcGVuZCh0b1JlZihleGVj
LCB0b0pTVHJhbnNmZXJhYmxlKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSwgdHJhbnNmZXJMaXN0W2ldLmdldCgpKSkpOworICAgIHJldHVybiB0cnVl
OworfQorCiBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVs
bFZhbHVlKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+LCBlbXB0eVZhbHVlLCAoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAppbmRleCAzZmU0ZTAyLi45N2VlM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lm
bmRlZiBTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAogI2RlZmluZSBTZXJpYWxpemVkU2NyaXB0VmFs
dWVfaAogCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgpAQCAtMzgsNiArMzksNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU1ZhbHVlKiBK
U1ZhbHVlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3R5cGVkZWYgVmVjdG9yPEpTVmFs
dWVSZWYsIDE+IEpTVmFsdWVSZWZBcnJheTsKICAKIGVudW0gU2VyaWFsaXphdGlvblJldHVybkNv
ZGUgewogICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCwKQEAgLTU0LDggKzU2LDggQEAgY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgUmVm
Q291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIEpTVmFsdWVSZWZBcnJheSogdHJhbnNmZXJMaXN0ID0gMCwgU2VyaWFsaXph
dGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbiwgSlNWYWx1ZVJlZkFycmF5KiB0cmFuc2Zlckxpc3QgPSAwKTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShjb25zdCBTdHJp
bmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0
KFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgIHsKQEAgLTY3LDggKzY5LDExIEBAIHB1Ymxp
YzoKIAogICAgIFN0cmluZyB0b1N0cmluZygpOwogICAgIAotICAgIEpTQzo6SlNWYWx1ZSBkZXNl
cmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBTZXJpYWxpemF0
aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwotICAgIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlND
b250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworICAgIEpTQzo6SlNWYWx1ZSBkZXNl
cmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlUmVm
QXJyYXkqIHRyYW5zZmVyTGlzdCA9IDAsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2lu
Zyk7CisgICAgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbiwgSlNWYWx1ZVJlZkFycmF5KiB0cmFuc2Zlckxpc3QgPSAwKTsKKyAgICAKKyAg
ICAvLyBQcmVmZXIgdGhlIGFib3ZlIDo6ZGVzZXJpYWxpemUgKGFzIHRoaXMgY29uc3RydWN0cyBh
IEpTVmFsdWVSZWZBcnJheSBhbmQgY2FsbHMgdGhlIG90aGVyIGZ1bmN0aW9uKS4KKyAgICBKU0M6
OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCA9IDAsIFNlcmlhbGl6YXRpb25FcnJv
ck1vZGUgPSBUaHJvd2luZyk7ICAgICAgCiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEoKSB7IHJldHVybiBtX2RhdGE7IH0KIApAQCAtNzcsNiArODIsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25G
YWlsZWQoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CiAgICAgc3Rh
dGljIGJvb2wgc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlKTsKKyAgICBzdGF0aWMgYm9vbCBvcGVuVHJhbnNmZXJhYmxlQXJyYXkoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgVHJhbnNmZXJhYmxlQXJyYXkmLCBK
U1ZhbHVlUmVmQXJyYXkmKTsKICAgICAKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9y
PHVuc2lnbmVkIGNoYXI+Jik7CiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fZGF0YTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggM2Y5ZGM2Yy4uZWMzNjg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI3NDIsNyArMjc0Miw3IEBAIHN1YiBO
YXRpdmVUb0pTVmFsdWUKICAgICAgICAgJGltcGxJbmNsdWRlc3siJGpvaW5lZE5hbWUuaCJ9ID0g
MTsKICAgICB9IGVsc2lmICgkdHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiBvciAkdHlw
ZSBlcSAiYW55IikgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCJ9ID0gMTsKLSAgICAgICAgcmV0dXJuICIkdmFsdWUgPyAkdmFsdWUtPmRlc2VyaWFsaXpl
KGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSA6IGpzTnVsbCgpIjsKKyAgICAgICAg
cmV0dXJuICIkdmFsdWUgPyAkdmFsdWUtPmRlc2VyaWFsaXplKGV4ZWMsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBpbXAtPmRhdGFEZXBlbmRlbmNpZXMoKSkgOiBqc051bGwoKSI7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgIyBEZWZhdWx0LCBpbmNsdWRlIGhlYWRlciB3aXRoIHNhbWUgbmFt
ZS4KICAgICAgICAgJGltcGxJbmNsdWRlc3siSlMkdHlwZS5oIn0gPSAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBjMzNl
MjA4Li41NzhiMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjU4Nyw3ICsyNTg3LDcgQEAgRU5ECiAgICAgICAgICRh
dHRyQXR0ciA9ICJzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRhdHRyQXR0ciki
OwogICAgICAgICBteSAkZ2V0dGVyRnVuYyA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRh
dHRyTmFtZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHdyYXBwZXIsICIke2F0
dHJOYW1lfSIsICR7YXR0ckF0dHJ9LCBpbXBsLT4ke2dldHRlckZ1bmN9KCkpOworICAgIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh3cmFwcGVyLCAiJHth
dHRyTmFtZX0iLCAke2F0dHJBdHRyfSwgaW1wbC0+JHtnZXR0ZXJGdW5jfSgpLCBpbXBsLT4ke2dl
dHRlckZ1bmN9RGVwZW5kZW5jaWVzKCkpOwogRU5ECiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAyZDlk
MGNkLi40ZDI0ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJJbnQz
MkFycmF5LmgiCiAjaW5jbHVkZSAiSW50OEFycmF5LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCiAjaW5jbHVkZSAiVWludDE2QXJyYXkuaCIK
ICNpbmNsdWRlICJVaW50MzJBcnJheS5oIgogI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKQEAgLTYz
LDYgKzY0LDcgQEAKICNpbmNsdWRlICJWOEludDE2QXJyYXkuaCIKICNpbmNsdWRlICJWOEludDMy
QXJyYXkuaCIKICNpbmNsdWRlICJWOEludDhBcnJheS5oIgorI2luY2x1ZGUgIlY4TWVzc2FnZVBv
cnRDdXN0b20uaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVaW50MTZBcnJh
eS5oIgogI2luY2x1ZGUgIlY4VWludDMyQXJyYXkuaCIKQEAgLTU3NSwxMyArNTc3LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgSlNGYWlsdXJlCiAgICAgfTsKIAotICAgIFNlcmlhbGl6ZXIoV3JpdGVy
JiB3cml0ZXIsIHY4OjpUcnlDYXRjaCYgdHJ5Q2F0Y2gpCisgICAgU2VyaWFsaXplcihXcml0ZXIm
IHdyaXRlciwgdjg6OlRyeUNhdGNoJiB0cnlDYXRjaCwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNm
ZXJMaXN0KQogICAgICAgICA6IG1fd3JpdGVyKHdyaXRlcikKICAgICAgICAgLCBtX3RyeUNhdGNo
KHRyeUNhdGNoKQogICAgICAgICAsIG1fZGVwdGgoMCkKICAgICAgICAgLCBtX2V4ZWNEZXB0aCgw
KQogICAgICAgICAsIG1fc3RhdHVzKFN1Y2Nlc3MpCiAgICAgICAgICwgbV9uZXh0T2JqZWN0UmVm
ZXJlbmNlKDApCisgICAgICAgICwgbV90cmFuc2Zlckxpc3QodHJhbnNmZXJMaXN0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCF0cnlDYXRjaC5IYXNDYXVnaHQoKSk7CiAgICAgfQpAQCAtNTg5LDYg
KzU5Miw4IEBAIHB1YmxpYzoKICAgICBTdGF0dXMgc2VyaWFsaXplKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICAg
ICAgaWYgKCFpbml0aWFsaXplT2JqZWN0UG9vbCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fc3Rh
dHVzOwogICAgICAgICBtX3dyaXRlci53cml0ZVZlcnNpb24oKTsKICAgICAgICAgU3RhdGVCYXNl
KiBzdGF0ZSA9IGRvU2VyaWFsaXplKHZhbHVlLCAwKTsKICAgICAgICAgd2hpbGUgKHN0YXRlKQpA
QCAtNjI4LDYgKzYzMyw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgYm9vbCBp
bml0aWFsaXplT2JqZWN0UG9vbCgpOworCiAgICAgY2xhc3MgU3RhdGVCYXNlIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU3RhdGVCYXNlKTsKICAgICBwdWJsaWM6CkBAIC0xMDExLDgg
KzEwMTgsMzYgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIFY4T2JqZWN0TWFwPHY4OjpPYmplY3Qs
IHVpbnQzMl90PiBPYmplY3RQb29sOwogICAgIE9iamVjdFBvb2wgbV9vYmplY3RQb29sOwogICAg
IHVpbnQzMl90IG1fbmV4dE9iamVjdFJlZmVyZW5jZTsKKyAgICBWYWx1ZUhhbmRsZUFycmF5KiBt
X3RyYW5zZmVyTGlzdDsKIH07CiAKK2Jvb2wgU2VyaWFsaXplcjo6aW5pdGlhbGl6ZU9iamVjdFBv
b2woKQoreworICAgIGlmIChtX3RyYW5zZmVyTGlzdCkgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV90cmFuc2Zlckxpc3QtPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9UcmFuc2ZlciA9ICgqbV90cmFuc2Zlckxpc3QpW2ldOwor
ICAgICAgICAgICAgaWYgKHRvVHJhbnNmZXItPklzT2JqZWN0KCkgfHwgdG9UcmFuc2Zlci0+SXNE
YXRlKCkgfHwgdG9UcmFuc2Zlci0+SXNSZWdFeHAoKSkgeworICAgICAgICAgICAgICAgIEFTU0VS
VCghdG9UcmFuc2Zlci0+SXNTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB2OE9iamVjdCh0b1RyYW5zZmVyLkFzPHY4OjpPYmplY3Q+KCkpOworICAgICAg
ICAgICAgICAgIHVpbnQzMl90IG9iamVjdFJlZmVyZW5jZTsKKyAgICAgICAgICAgICAgICBpZiAo
bV9vYmplY3RQb29sLnRyeUdldCh2OE9iamVjdCwgJm9iamVjdFJlZmVyZW5jZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gQW4gb2JqZWN0IHdhcyBpbmNsdWRlZCBpbiB0aGUgdHJhbnNmZXIg
bGlzdCBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBEYXRh
Q2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBBc3NpZ24gdG9UcmFuc2ZlciB0aGUgbmV4dCBy
ZWZlcmVuY2UgSUQuIElmIHdlIHNlZSBpdCBpbiB0aGUgb2JqZWN0IGdyYXBoLCB3ZSB3aWxsCisg
ICAgICAgICAgICAgICAgLy8gcGFzcyBpdCBieSByZWZlcmVuY2UuCisgICAgICAgICAgICAgICAg
Z3JleU9iamVjdCh2OE9iamVjdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIC8vIEEgbm9uLW9iamVjdCB3YXMgaW5jbHVkZWQgaW4gdGhlIHRyYW5zZmVyIGxpc3QuCisg
ICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIFNlcmlhbGl6ZXI6OlN0YXRlQmFzZSogU2VyaWFsaXplcjo6ZG9TZXJp
YWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBTdGF0ZUJhc2UqIG5leHQpCiB7CiAg
ICAgaWYgKG1fZXhlY0RlcHRoICsgKG5leHQgPyBuZXh0LT5leGVjRGVwdGgoKSA6IDApID4gMSkg
ewpAQCAtMTY1MSwxNCArMTY4NiwxNyBAQCBwcml2YXRlOgogCiBjbGFzcyBEZXNlcmlhbGl6ZXIg
OiBwdWJsaWMgQ29tcG9zaXRlQ3JlYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGVzZXJp
YWxpemVyKFJlYWRlciYgcmVhZGVyKQorICAgIGV4cGxpY2l0IERlc2VyaWFsaXplcihSZWFkZXIm
IHJlYWRlciwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KQogICAgICAgICA6IG1fcmVh
ZGVyKHJlYWRlcikKICAgICAgICAgLCBtX3ZlcnNpb24oMCkKKyAgICAgICAgLCBtX3RyYW5zZmVy
TGlzdCh0cmFuc2Zlckxpc3QpCiAgICAgewogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBkZXNlcmlhbGl6ZSgpCiAgICAgeworICAgICAgICBpZiAoIWluaXRpYWxpemVPYmplY3RQ
b29sKCkpCisgICAgICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICAgICAgaWYgKCFtX3Jl
YWRlci5yZWFkVmVyc2lvbihtX3ZlcnNpb24pIHx8IG1fdmVyc2lvbiA+IHdpcmVGb3JtYXRWZXJz
aW9uKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAgICAgICAgIG1fcmVhZGVyLnNl
dFZlcnNpb24obV92ZXJzaW9uKTsKQEAgLTE3NzIsNiArMTgxMCwxMyBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcml2YXRlOgorICAgIGJvb2wgaW5pdGlhbGl6ZU9iamVjdFBvb2woKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fdHJhbnNmZXJMaXN0KQorICAgICAgICAgICAgbV9vYmplY3RQb29sLmFwcGVu
ZCgqbV90cmFuc2Zlckxpc3QpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBi
b29sIGluaXRpYWxpemVPYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHVpbnQz
Ml90IG51bVByb3BlcnRpZXMsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiogdmFsdWUpCiAgICAgewog
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSAyICogbnVtUHJvcGVydGllczsKQEAgLTE4MzcsMzQg
KzE4ODIsNTQgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8djg6OkhhbmRsZTx2ODo6VmFsdWU+ID4g
bV9vYmplY3RQb29sOwogICAgIFZlY3Rvcjx1aW50MzJfdD4gbV9vcGVuQ29tcG9zaXRlUmVmZXJl
bmNlU3RhY2s7CiAgICAgdWludDMyX3QgbV92ZXJzaW9uOworICAgIFZhbHVlSGFuZGxlQXJyYXkq
IG1fdHJhbnNmZXJMaXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UKIAogdm9pZCBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZSBhdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRy
aWJ1dGUgYXR0cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBWYWx1ZUhhbmRs
ZUFycmF5KiB0cmFuc2Zlckxpc3QpCiB7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
OwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNlcmlhbGl6ZWQgPSB2YWx1ZS0+ZGVzZXJp
YWxpemUoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemVkID0gdmFsdWUt
PmRlc2VyaWFsaXplKHRyYW5zZmVyTGlzdCk7CiAgICAgb2JqZWN0LT5Gb3JjZVNldCh2ODo6U3Ry
aW5nOjpOZXdTeW1ib2wocHJvcGVydHlOYW1lKSwgZGVzZXJpYWxpemVkLCBhdHRyaWJ1dGUpOwog
fQogCiB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0
eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
djg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zl
ckxpc3QpCit7CisgICAgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlLCB2YWx1ZS5nZXQoKSwgdHJhbnNmZXJMaXN0KTsKK30KKwordm9pZCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZSBhdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIFRyYW5z
ZmVyYWJsZUFycmF5KiB0cmFuc2Zlckxpc3QpCiB7Ci0gICAgZGVzZXJpYWxpemVBbmRTZXRQcm9w
ZXJ0eShvYmplY3QsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlLCB2YWx1ZS5nZXQoKSk7CisgICAg
aWYgKHRyYW5zZmVyTGlzdCkgeworICAgICAgICBWYWx1ZUhhbmRsZUFycmF5IHZhbHVlSGFuZGxl
QXJyYXk7CisgICAgICAgIHZhbHVlSGFuZGxlQXJyYXkucmVzZXJ2ZUNhcGFjaXR5KHRyYW5zZmVy
TGlzdC0+c2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zlckxp
c3QtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgdmFsdWVIYW5kbGVBcnJheS5hcHBlbmQodG9W
OFRyYW5zZmVyYWJsZSgoKnRyYW5zZmVyTGlzdClbaV0uZ2V0KCkpKTsKKyAgICAgICAgZGVzZXJp
YWxpemVBbmRTZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlLCB2YWx1
ZSwgJnZhbHVlSGFuZGxlQXJyYXkpOworICAgIH0gZWxzZQorICAgICAgICBkZXNlcmlhbGl6ZUFu
ZFNldFByb3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLCByZWlu
dGVycHJldF9jYXN0PFZhbHVlSGFuZGxlQXJyYXkqPigwKSk7CiB9CiAKLVBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRocm93KQordm9pZCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBh
dHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgVHJhbnNm
ZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCkKK3sKKyAgICBkZXNlcmlhbGl6ZUFuZFNldFByb3Bl
cnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLmdldCgpLCB0cmFuc2Zl
ckxpc3QpOworfQorCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBk
aWRUaHJvdywgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdykpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJv
dywgdHJhbnNmZXJMaXN0KSk7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUpCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBWYWx1ZUhhbmRsZUFycmF5
KiB0cmFuc2Zlckxpc3QpCiB7CiAgICAgYm9vbCBkaWRUaHJvdzsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3cpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3csIHRy
YW5zZmVyTGlzdCkpOwogfQogCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShjb25zdCBTdHJpbmcmIGRhdGEpCkBA
IC0xOTIwLDE0ICsxOTg1LDE0IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKCkKIHsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBkaWRUaHJvdykKK1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgYm9vbCYgZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVy
TGlzdCkKIHsKICAgICBkaWRUaHJvdyA9IGZhbHNlOwogICAgIFdyaXRlciB3cml0ZXI7CiAgICAg
U2VyaWFsaXplcjo6U3RhdHVzIHN0YXR1czsKICAgICB7CiAgICAgICAgIHY4OjpUcnlDYXRjaCB0
cnlDYXRjaDsKLSAgICAgICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdyaXRlciwgdHJ5Q2F0Y2gp
OworICAgICAgICBTZXJpYWxpemVyIHNlcmlhbGl6ZXIod3JpdGVyLCB0cnlDYXRjaCwgdHJhbnNm
ZXJMaXN0KTsKICAgICAgICAgc3RhdHVzID0gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwog
ICAgICAgICBpZiAoc3RhdHVzID09IFNlcmlhbGl6ZXI6OkpTRXhjZXB0aW9uKSB7CiAgICAgICAg
ICAgICAvLyBJZiB0aGVyZSB3YXMgYSBKUyBleGNlcHRpb24gdGhyb3duLCByZS10aHJvdyBpdC4K
QEAgLTE5NjUsMTMgKzIwMzAsMjIgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUoY29uc3QgU3RyaW5nJiB3aXJlRGF0YSkKICAgICBtX2RhdGEgPSB3aXJlRGF0
YS5jcm9zc1RocmVhZFN0cmluZygpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSgpCitTdHJpbmcgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpmbGF0dGVuUmVjZWlwdExpc3QoY29uc3QgU3RyaW5nJiBkYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheSYgcmVjZWlwdHMpIHsKKyAgICAvLyBGSVhNRTogT25jZSBhIGZsYXR0ZW5hYmxl
IHJlY2VpcHQgYXBwZWFycywgdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgbW9yZSB3b3JrIHRvIGRv
LgorICAgIC8vIFVuZmxhdHRlbmFibGUgcmVjZWlwdHMgbWF5IGJlIHBhc3NlZCBpbiBhcyBudWxs
LgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjZWlwdHMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIEFTU0VSVCghcmVjZWlwdHNbaV0gfHwgIXJlY2VpcHRzW2ldLT5pc0ZsYXR0ZW5hYmxlKCkp
OworICAgIHJldHVybiBkYXRhLmNyb3NzVGhyZWFkU3RyaW5nKCk7Cit9CisKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFZhbHVlSGFuZGxl
QXJyYXkqIHRyYW5zZmVyTGlzdCkKIHsKICAgICBpZiAoIW1fZGF0YS5pbXBsKCkpCiAgICAgICAg
IHJldHVybiB2ODo6TnVsbCgpOwogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihCdWZmZXJWYWx1
ZVR5cGUpID09IDIsIEJ1ZmZlclZhbHVlVHlwZUlzVHdvQnl0ZXMpOwogICAgIFJlYWRlciByZWFk
ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9kYXRhLmltcGwoKS0+Y2hhcmFj
dGVycygpKSwgMiAqIG1fZGF0YS5sZW5ndGgoKSk7Ci0gICAgRGVzZXJpYWxpemVyIGRlc2VyaWFs
aXplcihyZWFkZXIpOworICAgIERlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIocmVhZGVyLCB0cmFu
c2Zlckxpc3QpOwogICAgIHJldHVybiBkZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aAppbmRleCA0ZDI0OTJkLi5kYTZlOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzIsMjUgKzMyLDQwIEBACiAjZGVm
aW5lIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZV9oCiAKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgor
I2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgorCiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordHlwZWRlZiBWZWN0b3I8
djg6OkhhbmRsZTx2ODo6VmFsdWU+LCAxPiBWYWx1ZUhhbmRsZUFycmF5OworCiBjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVzZXJpYWxpemVBbmRT
ZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVy
dHlBdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSopOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlLCBTZXJpYWxpemVk
U2NyaXB0VmFsdWUqLCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJMaXN0KTsKKyAgICBzdGF0
aWMgdm9pZCBkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4s
IGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJMaXN0KTsKICAgICBzdGF0
aWMgdm9pZCBkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4s
IGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgVmFsdWVIYW5k
bGVBcnJheSogdHJhbnNmZXJMaXN0KTsKKyAgICBzdGF0aWMgdm9pZCBkZXNlcmlhbGl6ZUFuZFNl
dFByb3BlcnR5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBWYWx1ZUhhbmRs
ZUFycmF5KiB0cmFuc2Zlckxpc3QpOworCisgICAgLy8gdHJhbnNmZXJMaXN0IGlzIGFuIGFycmF5
IG9mIG9iamVjdHMgdGhhdCBhcmUgbm90IGZsYXR0ZW5lZCB0byB0aGUgU2VyaWFsaXplZFNjcmlw
dFZhbHVlIGJ1dAorICAgIC8vIGFyZSBpbnN0ZWFkIGNvcGllZCBieSByZWZlcmVuY2UuIFRoZXNl
IG9iamVjdHMgYXJlIGlkZW50aWZpZWQgYnkgdGhlaXIgaW5kaWNlcyBpbiB0cmFuc2Zlckxpc3Qu
CisgICAgLy8gRm9yIGV4YW1wbGU6CisgICAgLy8gICAgIHNlcmlhbGl6ZSh7YTpPYmplY3QxLCBi
Ok9iamVjdDJ9LCBbT2JqZWN0MCwgT2JqZWN0MV0pID0+IFMKKyAgICAvLyAgICAgZGVzZXJpYWxp
emUoUywgW090aGVyT2JqZWN0MCwgT3RoZXJPYmplY3QxXSkgPT4ge2E6T3RoZXJPYmplY3QxLCBi
Ok9iamVjdDInfQorICAgIC8vIHdoZXJlIE9iamVjdDInIHdhcyBjcmVhdGVkIGJ5IGZpcnN0IGZs
YXR0ZW5pbmcgT2JqZWN0Mi4KIAogICAgIC8vIElmIGEgc2VyaWFsaXphdGlvbiBlcnJvciBvY2N1
cnMgKGUuZy4sIGN5Y2xpYyBpbnB1dCB2YWx1ZSkgdGhpcwogICAgIC8vIGZ1bmN0aW9uIHJldHVy
bnMgYW4gZW1wdHkgcmVwcmVzZW50YXRpb24sIHNjaGVkdWxlcyBhIFY4IGV4Y2VwdGlvbiB0bwog
ICAgIC8vIGJlIHRocm93biB1c2luZyB2ODo6VGhyb3dFeGNlcHRpb24oKSwgYW5kIHNldHMgfGRp
ZFRocm93fC4gSW4gdGhpcyBjYXNlCiAgICAgLy8gdGhlIGNhbGxlciBtdXN0IG5vdCBpbnZva2Ug
YW55IFY4IG9wZXJhdGlvbnMgdW50aWwgY29udHJvbCByZXR1cm5zIHRvCiAgICAgLy8gVjguIFdo
ZW4gc2VyaWFsaXphdGlvbiBpcyBzdWNjZXNzZnVsLCB8ZGlkVGhyb3d8IGlzIGZhbHNlLgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgZGlkVGhyb3cpOwotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUodjg6
OkhhbmRsZTx2ODo6VmFsdWU+LCBib29sJiBkaWRUaHJvdywgVmFsdWVIYW5kbGVBcnJheSogdHJh
bnNmZXJMaXN0ID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFu
c2Zlckxpc3QgPSAwKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGNyZWF0ZUZyb21XaXJlKGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKTsK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSgpOwpA
QCAtNjIsOSArNzcsMTEgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvV2lyZVN0cmluZygpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCisgICAgc3RhdGljIFN0cmluZyBmbGF0dGVuUmVjZWlw
dExpc3QoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkm
IHJlY2VpcHRzKTsKKwogICAgIC8vIERlc2VyaWFsaXplcyB0aGUgdmFsdWUgKGluIHRoZSBjdXJy
ZW50IGNvbnRleHQpLiBSZXR1cm5zIGEgbnVsbCB2YWx1ZSBpbgogICAgIC8vIGNhc2Ugb2YgZmFp
bHVyZS4KLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemUoKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemUoVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJM
aXN0ID0gMCk7CiAKIHByaXZhdGU6CiAgICAgZW51bSBTdHJpbmdEYXRhTW9kZSB7CkBAIC03Myw3
ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgp
OwotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIGJvb2wm
IGRpZFRocm93KTsKKyAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFs
dWU+LCBib29sJiBkaWRUaHJvdywgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0ID0gMCk7
CiAgICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFN0cmluZyYgd2lyZURh
dGEpOwogCiAgICAgU3RyaW5nIG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDIzNDJmZTYuLjMx
YmFlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzIxLDMyICszMjEsMzQgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MKICAgICBET01XaW5kb3cqIHNvdXJjZSA9IFY4UHJveHk6OnJldHJpZXZlRnJh
bWVGb3JDYWxsaW5nQ29udGV4dCgpLT5kb21XaW5kb3coKTsKICAgICBBU1NFUlQoc291cmNlLT5m
cmFtZSgpKTsKIAotICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
YXJnc1swXSwgZGlkVGhyb3cpOwotICAgIGlmIChkaWRUaHJvdykKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKLQotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIFRy
YW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZUFycmF5OworICAgIFZhbHVlSGFuZGxlQXJyYXkg
dmFsdWVIYW5kbGVBcnJheTsKICAgICBTdHJpbmcgdGFyZ2V0T3JpZ2luOwogCiAgICAgLy8gVGhp
cyBmdW5jdGlvbiBoYXMgdmFyaWFibGUgYXJndW1lbnRzIGFuZCBjYW4gZWl0aGVyIGJlOgogICAg
IC8vICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgcG9ydCwgdGFyZ2V0T3JpZ2luKTsKICAgICAvLyBv
cgogICAgIC8vICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3JpZ2luKTsKLSAgICB2ODo6
VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7Ci0gICAgICAg
IGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAgIHsKKyAg
ICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAgICAgICBpZiAoYXJncy5MZW5ndGgoKSA+
IDIpIHsKKyAgICAgICAgICAgIGlmICghZ2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJnc1sxXSwgdHJh
bnNmZXJhYmxlQXJyYXksIHZhbHVlSGFuZGxlQXJyYXkpKQorICAgICAgICAgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgICAgICB0YXJnZXRPcmlnaW4gPSB0b1dlYkNvcmVT
dHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1syXSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVm
aW5lZENoZWNrKGFyZ3NbMV0pOworCisgICAgICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkK
ICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgICAgIHRhcmdldE9yaWdp
biA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRDaGVjayhhcmdzWzJdKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICB0YXJnZXRPcmlnaW4gPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVs
bE9yVW5kZWZpbmVkQ2hlY2soYXJnc1sxXSk7CiAgICAgfQogCi0gICAgaWYgKHRyeUNhdGNoLkhh
c0NhdWdodCgpKQorICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
YXJnc1swXSwgZGlkVGhyb3csICZ2YWx1ZUhhbmRsZUFycmF5KTsKKyAgICBpZiAoZGlkVGhyb3cp
CiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICB3aW5kb3ctPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmcG9ydEFy
cmF5LCB0YXJnZXRPcmlnaW4sIHNvdXJjZSwgZWMpOworICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2Uo
bWVzc2FnZS5yZWxlYXNlKCksICZ0cmFuc2ZlcmFibGVBcnJheSwgdGFyZ2V0T3JpZ2luLCBzb3Vy
Y2UsIGVjKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVk
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggOGZjZjlhOC4uZDAwMzBhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTQ2LDE3ICs0NiwxOCBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZUNh
bGxiYWNrKGNvbnN0IHY4OjpBcgogewogICAgIElOQ19TVEFUUyhMIkRPTS5EZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LnBvc3RNZXNzYWdlIik7CiAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogd29y
a2VyQ29udGV4dCA9IFY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7Ci0gICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdz
WzBdLCBkaWRUaHJvdyk7Ci0gICAgaWYgKGRpZFRocm93KQotICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIFRyYW5zZmVy
YWJsZUFycmF5IHRyYW5zZmVyYWJsZUFycmF5OworICAgIFZhbHVlSGFuZGxlQXJyYXkgdmFsdWVI
YW5kbGVBcnJheTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgaWYgKCFn
ZXRNZXNzYWdlUG9ydEFycmF5KGFyZ3NbMV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlmICghZ2V0
VHJhbnNmZXJhYmxlQXJyYXkoYXJnc1sxXSwgdHJhbnNmZXJhYmxlQXJyYXksIHZhbHVlSGFuZGxl
QXJyYXkpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9CisgICAg
Ym9vbCBkaWRUaHJvdyA9IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJv
dywgJnZhbHVlSGFuZGxlQXJyYXkpOworICAgIGlmIChkaWRUaHJvdykKKyAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3b3JrZXJD
b250ZXh0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOwor
ICAgIHdvcmtlckNvbnRleHQtPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmdHJhbnNm
ZXJhYmxlQXJyYXksIGVjKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZl
bnRDdXN0b20uY3BwCmluZGV4IDQ3NWRlMmEuLmRhOTFhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cApAQCAtNDcsMTMgKzQ3LDIyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVu
dDo6cG9ydHNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBJTkNfU1RB
VFMoIkRPTS5NZXNzYWdlRXZlbnQucG9ydHMiKTsKICAgICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0g
VjhNZXNzYWdlRXZlbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogCi0gICAgTWVzc2FnZVBv
cnRBcnJheSogcG9ydHMgPSBldmVudC0+cG9ydHMoKTsKLSAgICBpZiAoIXBvcnRzIHx8IHBvcnRz
LT5pc0VtcHR5KCkpCisgICAgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyYWJsZXMgPSBldmVu
dC0+dHJhbnNmZXJhYmxlcygpOworICAgIGlmICghdHJhbnNmZXJhYmxlcyB8fCB0cmFuc2ZlcmFi
bGVzLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwogCi0gICAgdjg6Okxv
Y2FsPHY4OjpBcnJheT4gcG9ydEFycmF5ID0gdjg6OkFycmF5OjpOZXcocG9ydHMtPnNpemUoKSk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0cy0+c2l6ZSgpOyArK2kpCi0gICAgICAg
IHBvcnRBcnJheS0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaSksIHRvVjgoKCpwb3J0cylbaV0uZ2V0
KCkpKTsKKyAgICBpbnQgcG9ydENvdW50ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHRyYW5zZmVyYWJsZXMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICgoKnRyYW5zZmVyYWJs
ZXMpW2ldLmdldCgpLT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgICAgICArK3BvcnRDb3VudDsK
KyAgICB9CisgICAgCisgICAgaW50IGN1cnJlbnRQb3J0ID0gMDsKKyAgICB2ODo6TG9jYWw8djg6
OkFycmF5PiBwb3J0QXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyhwb3J0Q291bnQpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6ZSgpICYmIGN1cnJlbnRQb3J0IDwg
cG9ydENvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9
ICgqdHJhbnNmZXJhYmxlcylbaV0uZ2V0KCktPmFzTWVzc2FnZVBvcnQoKSkKKyAgICAgICAgICAg
IHBvcnRBcnJheS0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoY3VycmVudFBvcnQrKyksIHRvVjgobWVz
c2FnZVBvcnQpKTsKKyAgICB9CiAKICAgICByZXR1cm4gcG9ydEFycmF5OwogfQpAQCAtNzYsMTcg
Kzg1LDE5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3Nh
Z2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgICAgIGlmICghd2luZG93Lklz
RW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZUFyZyA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3
aW5kb3cpOwogICAgIH0KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydEFycmF5Owor
ICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlQXJyYXk7CisgICAgT3du
UHRyPFZhbHVlSGFuZGxlQXJyYXk+IHZhbHVlSGFuZGxlQXJyYXk7CiAKICAgICBpZiAoIWlzVW5k
ZWZpbmVkT3JOdWxsKGFyZ3NbN10pKSB7Ci0gICAgICAgIHBvcnRBcnJheSA9IGFkb3B0UHRyKG5l
dyBNZXNzYWdlUG9ydEFycmF5KTsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdlUG9ydEFycmF5KGFy
Z3NbN10sICpwb3J0QXJyYXkpKQorICAgICAgICB0cmFuc2ZlcmFibGVBcnJheSA9IGFkb3B0UHRy
KG5ldyBUcmFuc2ZlcmFibGVBcnJheSk7CisgICAgICAgIHZhbHVlSGFuZGxlQXJyYXkgPSBhZG9w
dFB0cihuZXcgVmFsdWVIYW5kbGVBcnJheSk7CisgICAgICAgIGlmICghZ2V0VHJhbnNmZXJhYmxl
QXJyYXkoYXJnc1s3XSwgKnRyYW5zZmVyYWJsZUFycmF5LCAqdmFsdWVIYW5kbGVBcnJheSkpCiAg
ICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0KLSAgICBldmVudC0+aW5p
dE1lc3NhZ2VFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIGRhdGFB
cmcucmVsZWFzZSgpLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBzb3VyY2VBcmcsIHBvcnRB
cnJheS5yZWxlYXNlKCkpOworICAgIGV2ZW50LT5pbml0TWVzc2FnZUV2ZW50KHR5cGVBcmcsIGNh
bkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0YUFyZy5yZWxlYXNlKCksIG9yaWdpbkFyZywg
bGFzdEV2ZW50SWRBcmcsIHNvdXJjZUFyZywgdHJhbnNmZXJhYmxlQXJyYXkucmVsZWFzZSgpKTsK
ICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgZGF0YUF0dHIgPSBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KTsKLSAgICBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkoYXJncy5Ib2xkZXIo
KSwgImRhdGEiLCBkYXRhQXR0ciwgZXZlbnQtPmRhdGEoKSk7CisgICAgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KGFyZ3MuSG9sZGVyKCksICJkYXRhIiwg
ZGF0YUF0dHIsIGV2ZW50LT5kYXRhKCksIHZhbHVlSGFuZGxlQXJyYXkuZ2V0KCkpOwogICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gIH0KK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBv
cnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2Fn
ZVBvcnRDdXN0b20uY3BwCmluZGV4IDNlZDViMTIuLjYxYzc0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5j
cHAKQEAgLTQ2LDI5ICs0NiwzMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9y
dDo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogewogICAgIElO
Q19TVEFUUygiRE9NLk1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlIik7CiAgICAgTWVzc2FnZVBvcnQq
IG1lc3NhZ2VQb3J0ID0gVjhNZXNzYWdlUG9ydDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0g
ICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRU
aHJvdyk7Ci0gICAgaWYgKGRpZFRocm93KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIFRyYW5zZmVyYWJsZUFycmF5
IHRyYW5zZmVyYWJsZUFycmF5OworICAgIFZhbHVlSGFuZGxlQXJyYXkgdmFsdWVIYW5kbGVBcnJh
eTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdl
UG9ydEFycmF5KGFyZ3NbMV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlmICghZ2V0VHJhbnNmZXJh
YmxlQXJyYXkoYXJnc1sxXSwgdHJhbnNmZXJhYmxlQXJyYXksIHZhbHVlSGFuZGxlQXJyYXkpKQog
ICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9CisgICAgYm9vbCBkaWRU
aHJvdyA9IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Ug
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdywgJnZhbHVl
SGFuZGxlQXJyYXkpOworICAgIGlmIChkaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBtZXNzYWdlUG9ydC0+cG9z
dE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIGVjKTsKKyAgICBtZXNzYWdl
UG9ydC0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZ0cmFuc2ZlcmFibGVBcnJheSwg
ZWMpOwogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIAotYm9vbCBnZXRNZXNzYWdlUG9y
dEFycmF5KHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0
QXJyYXkpCitib29sIGdldFRyYW5zZmVyYWJsZUFycmF5KHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBUcmFuc2ZlcmFibGVBcnJheSYgdHJhbnNmZXJhYmxlQXJyYXksIFZhbHVlSGFuZGxlQXJy
YXkmIGhhbmRsZUFycmF5KQogewogICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCh2YWx1ZSkpIHsK
LSAgICAgICAgcG9ydEFycmF5LnJlc2l6ZSgwKTsKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJyYXku
cmVzaXplKDApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIXZhbHVl
LT5Jc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0QXJyYXkgYXJn
dW1lbnQgbXVzdCBiZSBhbiBvYmplY3QiKTsKKyAgICAgICAgdGhyb3dFcnJvcigiVHJhbnNmZXJh
YmxlQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICB1aW50MzJfdCBsZW5ndGggPSAwOwpAQCAtODEsMjggKzgyLDQ1IEBA
IGJvb2wgZ2V0TWVzc2FnZVBvcnRBcnJheSh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgTWVz
c2FnZVBvcnRBcnJheSYgcG9ydEFycmF5CiAgICAgICAgIC8vIFNlcXVlbmNlLXR5cGUgb2JqZWN0
IC0gZ2V0IHRoZSBsZW5ndGggYXR0cmlidXRlCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHNlcXVlbmNlTGVuZ3RoID0gcG9ydHMtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIpKTsK
ICAgICAgICAgaWYgKCFzZXF1ZW5jZUxlbmd0aC0+SXNOdW1iZXIoKSkgewotICAgICAgICAgICAg
dGhyb3dFcnJvcigiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJp
YnV0ZSIpOworICAgICAgICAgICAgdGhyb3dFcnJvcigiVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1l
bnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogICAgICAgICBsZW5ndGggPSBzZXF1ZW5jZUxlbmd0aC0+VWludDMyVmFsdWUo
KTsKICAgICB9CiAKLSAgICAvLyBWYWxpZGF0ZSB0aGUgcGFzc2VkIGFycmF5IG9mIHBvcnRzLgor
ICAgIC8vIFZhbGlkYXRlIHRoZSBwYXNzZWQgYXJyYXkgb2YgdHJhbnNmZXJhYmxlcy4KICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHBvcnQgPSBwb3J0cy0+R2V0KGkpOworICAgICAgICB2ODo6TG9jYWw8
djg6OlZhbHVlPiB0cmFuc2ZlcmFibGUgPSBwb3J0cy0+R2V0KGkpOwogICAgICAgICAvLyBWYWxp
ZGF0aW9uIG9mIG5vbi1udWxsIG9iamVjdHMsIHBlciBIVE1MNSBzcGVjIDguMy4zLgotICAgICAg
ICBpZiAoaXNVbmRlZmluZWRPck51bGwocG9ydCkpIHsKKyAgICAgICAgaWYgKGlzVW5kZWZpbmVk
T3JOdWxsKHRyYW5zZmVyYWJsZSkpIHsKICAgICAgICAgICAgIHRocm93RXJyb3IoSU5WQUxJRF9T
VEFURV9FUlIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IC8vIFZhbGlkYXRpb24gb2YgT2JqZWN0cyBpbXBsZW1lbnRpbmcgYW4gaW50ZXJmYWNlLCBwZXIg
V2ViSURMIHNwZWMgNC4xLjE1LgotICAgICAgICBpZiAoIVY4TWVzc2FnZVBvcnQ6Okhhc0luc3Rh
bmNlKHBvcnQpKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKCJNZXNzYWdlUG9ydEFycmF5IGFy
Z3VtZW50IG11c3QgY29udGFpbiBvbmx5IE1lc3NhZ2VQb3J0cyIpOworICAgICAgICBUcmFuc2Zl
cmFibGUqIG5hdGl2ZVRyYW5zZmVyYWJsZSA9IHRvTmF0aXZlVHJhbnNmZXJhYmxlKHRyYW5zZmVy
YWJsZSk7CisgICAgICAgIGlmICghbmF0aXZlVHJhbnNmZXJhYmxlKSB7CisgICAgICAgICAgICB0
aHJvd0Vycm9yKCJUcmFuc2ZlcmFibGVBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBU
cmFuc2ZlcmFibGVzIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAg
ICAgICAgcG9ydEFycmF5LmFwcGVuZChWOE1lc3NhZ2VQb3J0Ojp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KHBvcnQpKSk7CisgICAgICAgIHRyYW5zZmVyYWJsZUFycmF5LmFw
cGVuZChuYXRpdmVUcmFuc2ZlcmFibGUpOworICAgICAgICBoYW5kbGVBcnJheS5hcHBlbmQodHJh
bnNmZXJhYmxlKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1RyYW5zZmVyYWJsZSog
dG9OYXRpdmVUcmFuc2ZlcmFibGUodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUpCit7CisgICAg
aWYgKFY4TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNlKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFY4
TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
KTsKKyAgICByZXR1cm4gMDsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhUcmFuc2Zl
cmFibGUoVHJhbnNmZXJhYmxlKiB2YWx1ZSkKK3sKKyAgICBpZiAoTWVzc2FnZVBvcnQqIG1lc3Nh
Z2VQb3J0ID0gdmFsdWUtPmFzTWVzc2FnZVBvcnQoKSkKKyAgICAgICAgcmV0dXJuIHRvVjgobWVz
c2FnZVBvcnQpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB2ODo6SW50
ZWdlcjo6TmV3KDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaApp
bmRleCA3YWI1MDJiLi45YzlmNjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmgKQEAgLTM1LDEzICszNSwxNyBA
QAogI2luY2x1ZGUgPHY4Lmg+CiAKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICAv
LyBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcHVsbHMgdGhlIHZhbHVlcyBvdXQgb2YgYSBKUyBzZXF1
ZW5jZSBhbmQgaW50byBhIE1lc3NhZ2VQb3J0QXJyYXkuCi0gICAgLy8gQWxzbyB2YWxpZGF0ZXMg
dGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0LjEuMTMgYW5kIDQuMS4xNSBvZiB0aGUgV2ViSURM
IHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMgYW5kIGdlbmVyYXRlcyBl
eGNlcHRpb25zIGFzIGFwcHJvcHJpYXRlLgotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYXJy
YXkgd2FzIGZpbGxlZCwgb3IgZmFsc2UgaWYgdGhlIHBhc3NlZCB2YWx1ZSB3YXMgbm90IG9mIGFu
IGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgYm9vbCBnZXRNZXNzYWdlUG9ydEFycmF5KHY4OjpMb2Nh
bDx2ODo6VmFsdWU+LCBNZXNzYWdlUG9ydEFycmF5Jik7CisvLyBIZWxwZXIgZnVuY3Rpb24gd2hp
Y2ggcHVsbHMgdGhlIHZhbHVlcyBvdXQgb2YgYSBKUyBzZXF1ZW5jZSBhbmQgaW50byBhIFRyYW5z
ZmVyYWJsZUFycmF5LgorLy8gQWxzbyB2YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9u
cyA0LjEuMTMgYW5kIDQuMS4xNSBvZiB0aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMg
b2YgdGhlIEhUTUw1IHNwZWMgYW5kIGdlbmVyYXRlcyBleGNlcHRpb25zIGFzIGFwcHJvcHJpYXRl
LgorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBhcnJheSB3YXMgZmlsbGVkLCBvciBmYWxzZSBpZiB0
aGUgcGFzc2VkIHZhbHVlIHdhcyBub3Qgb2YgYW4gYXBwcm9wcmlhdGUgdHlwZS4KK2Jvb2wgZ2V0
VHJhbnNmZXJhYmxlQXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIFRyYW5zZmVyYWJsZUFycmF5
JiwgVmFsdWVIYW5kbGVBcnJheSYpOworCitUcmFuc2ZlcmFibGUqIHRvTmF0aXZlVHJhbnNmZXJh
YmxlKHY4OjpMb2NhbDx2ODo6VmFsdWU+KTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4VHJh
bnNmZXJhYmxlKFRyYW5zZmVyYWJsZSopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20u
Y3BwCmluZGV4IGZkYzY4MTUuLjhkNmYzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcApAQCAtOTEsMTcgKzkxLDE4IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlcjo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldvcmtlci5wb3N0
TWVzc2FnZSIpOwogICAgIFdvcmtlciogd29ya2VyID0gVjhXb3JrZXI6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOwotICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
YXJnc1swXSwgZGlkVGhyb3cpOwotICAgIGlmIChkaWRUaHJvdykKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsKKyAgICBUcmFu
c2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVBcnJheTsKKyAgICBWYWx1ZUhhbmRsZUFycmF5IHZh
bHVlSGFuZGxlQXJyYXk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgIGlm
ICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAgICAgICBpZiAo
IWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3NbMV0sIHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1ZUhh
bmRsZUFycmF5KSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQor
ICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZGlk
VGhyb3csICZ2YWx1ZUhhbmRsZUFycmF5KTsKKyAgICBpZiAoZGlkVGhyb3cpCisgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd29y
a2VyLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOworICAg
IHdvcmtlci0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZ0cmFuc2ZlcmFibGVBcnJh
eSwgZWMpOwogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01B
bGxJbk9uZS5jcHAKaW5kZXggM2FkMTU2Ni4uZGYzNjIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxs
SW5PbmUuY3BwCkBAIC0xMjksNiArMTI5LDcgQEAKICNpbmNsdWRlICJUb3VjaC5jcHAiCiAjaW5j
bHVkZSAiVG91Y2hFdmVudC5jcHAiCiAjaW5jbHVkZSAiVG91Y2hMaXN0LmNwcCIKKyNpbmNsdWRl
ICJUcmFuc2ZlcmFibGUuY3BwIgogI2luY2x1ZGUgIlRyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3Bw
IgogI2luY2x1ZGUgIlRyYXZlcnNhbC5jcHAiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmNwcCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggYjQzMzM4MWIuLmZmNjI0NmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgpAQCAtMzgsMTMgKzM5LDEzIEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KCkKIHsKIH0K
IAotTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
QXJyYXk+IHBvcnRzKQorTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRy
PFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVzKQogICAgIDogRXZlbnQoZXZlbnROYW1l
cygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAg
LCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKGxhc3RFdmVudElkKQogICAg
ICwgbV9zb3VyY2Uoc291cmNlKQotICAgICwgbV9wb3J0cyhwb3J0cykKKyAgICAsIG1fdHJhbnNm
ZXJhYmxlcyh0cmFuc2ZlcmFibGVzKQogewogfQogCkBAIC01Miw3ICs1Myw3IEBAIE1lc3NhZ2VF
dmVudDo6fk1lc3NhZ2VFdmVudCgpCiB7CiB9CiAKLXZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVz
c2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNv
dXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKK3ZvaWQgTWVzc2FnZUV2
ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBE
T01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJh
YmxlcykKIHsKICAgICBpZiAoZGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CkBAIC02Mywy
NiArNjQsMzYgQEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm8KICAgICBtX29yaWdpbiA9IG9yaWdp
bjsKICAgICBtX2xhc3RFdmVudElkID0gbGFzdEV2ZW50SWQ7CiAgICAgbV9zb3VyY2UgPSBzb3Vy
Y2U7Ci0gICAgbV9wb3J0cyA9IHBvcnRzOworICAgIG1fdHJhbnNmZXJhYmxlcyA9IHRyYW5zZmVy
YWJsZXM7CiB9CiAKIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2Jq
QyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiBNZXNzYWdlUG9ydCogTWVzc2FnZUV2ZW50OjptZXNz
YWdlUG9ydCgpCiB7Ci0gICAgaWYgKCFtX3BvcnRzKQorICAgIGlmICghbV90cmFuc2ZlcmFibGVz
KQogICAgICAgICByZXR1cm4gMDsKLSAgICBBU1NFUlQobV9wb3J0cy0+c2l6ZSgpID09IDEpOwot
ICAgIHJldHVybiAoKm1fcG9ydHMpWzBdLmdldCgpOworICAgIEFTU0VSVChtX3RyYW5zZmVyYWJs
ZXMtPnNpemUoKSA9PSAxKTsKKyAgICBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSA9ICgqbV90
cmFuc2ZlcmFibGVzKVswXS5nZXQoKTsKKyAgICBBU1NFUlQodHJhbnNmZXJhYmxlLT5hc01lc3Nh
Z2VQb3J0KCkpOworICAgIHJldHVybiB0cmFuc2ZlcmFibGUtPmFzTWVzc2FnZVBvcnQoKTsKIH0K
IAotdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBNZXNzYWdlUG9ydCogcG9ydCkKK1Ry
YW5zZmVyYWJsZSogTWVzc2FnZUV2ZW50Ojp0cmFuc2ZlcmFibGUoKQogewotICAgIE93blB0cjxN
ZXNzYWdlUG9ydEFycmF5PiBwb3J0czsKLSAgICBpZiAocG9ydCkgewotICAgICAgICBwb3J0cyA9
IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KTsKLSAgICAgICAgcG9ydHMtPmFwcGVuZChw
b3J0KTsKKyAgICBpZiAoIW1fdHJhbnNmZXJhYmxlcykKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
QVNTRVJUKG1fdHJhbnNmZXJhYmxlcy0+c2l6ZSgpID09IDEpOworICAgIHJldHVybiAoKm1fdHJh
bnNmZXJhYmxlcylbMF0uZ2V0KCk7Cit9CisKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2Fn
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJj
ZSwgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUpCit7CisgICAgT3duUHRyPFRyYW5zZmVyYWJs
ZUFycmF5PiB0cmFuc2ZlcmFibGVzOworICAgIGlmICh0cmFuc2ZlcmFibGUpIHsKKyAgICAgICAg
dHJhbnNmZXJhYmxlcyA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVBcnJheSk7CisgICAgICAg
IHRyYW5zZmVyYWJsZXMtPmFwcGVuZCh0cmFuc2ZlcmFibGUpOwogICAgIH0KLSAgICBpbml0TWVz
c2FnZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgZGF0YSwgb3JpZ2luLCBsYXN0
RXZlbnRJZCwgc291cmNlLCBwb3J0cy5yZWxlYXNlKCkpOworICAgIGluaXRNZXNzYWdlRXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBkYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkLCBz
b3VyY2UsIHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpKTsKIH0KIAogYm9vbCBNZXNzYWdlRXZlbnQ6
OmlzTWVzc2FnZUV2ZW50KCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXgg
YjdmOWIwMi4uMTAwOGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMzAsMTIg
KzMwLDEzIEBACiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgot
I2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIERPTVdpbmRvdzsKKyAgICBjbGFzcyBNZXNzYWdlUG9ydDsKIAogICAgIGNsYXNz
IE1lc3NhZ2VFdmVudCA6IHB1YmxpYyBFdmVudCB7CiAgICAgcHVibGljOgpAQCAtNDMsMzYgKzQ0
LDM4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQpOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJh
eT4gcG9ydHMsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhID0gMCwgY29u
c3QgU3RyaW5nJiBvcmlnaW4gPSAiIiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9ICIiLCBQ
YXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlID0gMCkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJh
bnNmZXJhYmxlcywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEgPSAwLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiA9ICIiLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0gIiIs
IFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UgPSAwKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4sIGxhc3RFdmVu
dElkLCBzb3VyY2UsIHBvcnRzKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
c3NhZ2VFdmVudChkYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIHRyYW5zZmVyYWJs
ZXMpKTsKICAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIH5NZXNzYWdlRXZlbnQoKTsKIAotICAg
ICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKKyAg
ICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4pOwog
CiAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5nZXQoKTsgfQorICAgICAgICBUcmFuc2ZlcmFibGVBcnJheSogZGF0YURlcGVuZGVuY2ll
cygpIGNvbnN0IHsgcmV0dXJuIHRyYW5zZmVyYWJsZXMoKTsgfQogICAgICAgICBjb25zdCBTdHJp
bmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgICAgIGNvbnN0IFN0
cmluZyYgbGFzdEV2ZW50SWQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RFdmVudElkOyB9CiAgICAg
ICAgIERPTVdpbmRvdyogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0K
LSAgICAgICAgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMoKSBjb25zdCB7IHJldHVybiBtX3BvcnRz
LmdldCgpOyB9CisgICAgICAgIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzKCkgY29u
c3QgeyByZXR1cm4gbV90cmFuc2ZlcmFibGVzLmdldCgpOyB9CiAKICAgICAgICAgLy8gRklYTUU6
IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0
KS4KKyAgICAgICAgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUoKTsKICAgICAgICAgTWVzc2Fn
ZVBvcnQqIG1lc3NhZ2VQb3J0KCk7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVu
IHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQg
aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2lu
ZG93KiBzb3VyY2UsIE1lc3NhZ2VQb3J0Kik7CisgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFRy
YW5zZmVyYWJsZSopOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VFdmVudCgpIGNv
bnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTWVzc2FnZUV2ZW50KCk7Ci0gICAgICAgIE1l
c3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RE9N
V2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOworICAgICAgICBN
ZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPERP
TVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5Pik7CiAKICAgICAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9kYXRhOwogICAgICAgICBTdHJpbmcg
bV9vcmlnaW47CiAgICAgICAgIFN0cmluZyBtX2xhc3RFdmVudElkOwogICAgICAgICBSZWZQdHI8
RE9NV2luZG93PiBtX3NvdXJjZTsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IG1f
cG9ydHM7CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gbV90cmFuc2ZlcmFibGVz
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5pZGwKaW5kZXggY2Y0NWJiNC4uMGVlNDhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5pZGwKQEAgLTQ0LDkgKzQ0LDkgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFs
dWVdIERPTVN0cmluZyBvcmlnaW5BcmcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgbGFz
dEV2ZW50SWRBcmcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
W09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01XaW5kb3cgc291cmNlQXJnLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0
aERlZmF1bHRWYWx1ZV0gQXJyYXkgbWVzc2FnZVBvcnRzKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gQXJy
YXkgdHJhbnNmZXJhYmxlcyk7CiAjZWxzZQotICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5
IHRvIGV4cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVz
dCBleHBvc2UgYSBzaW5nbGUgcG9ydC4KKyAgICAgICAgLy8gVGhlcmUncyBubyBnb29kIHdheSB0
byBleHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRpbmdzLCBzbyBmb3Igbm93IGp1c3Qg
ZXhwb3NlIGEgc2luZ2xlIE1lc3NhZ2VQb3J0LgogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
TWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQ7CiAKICAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50
KGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIHR5cGVBcmcsIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggNDcyYjliMS4uODYyNjg5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIE1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgIDogbV9zdGFydGVkKGZhbHNlKQogICAgICwgbV9j
bG9zZWQoZmFsc2UpCisgICAgLCBtX3RyYW5zZmVyQ2xvc2VkKGZhbHNlKQogICAgICwgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewogICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+Y3JlYXRlZE1lc3NhZ2VQb3J0KHRoaXMpOwpAQCAtNTgsNDAg
KzU5LDUyIEBAIE1lc3NhZ2VQb3J0Ojp+TWVzc2FnZVBvcnQoKQogfQogCiAvLyBGSVhNRTogcmVt
b3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgot
dm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKK3Zv
aWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsKLSAgICBpZiAocG9ydCkKLSAgICAg
ICAgcG9ydHMuYXBwZW5kKHBvcnQpOwotICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZwb3J0cywg
ZWMpOworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZXM7CisgICAgaWYgKHRyYW5z
ZmVyYWJsZSkKKyAgICAgICAgdHJhbnNmZXJhYmxlcy5hcHBlbmQodHJhbnNmZXJhYmxlKTsKKyAg
ICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmdHJhbnNmZXJhYmxlcywgZWMpOwogfQogCiB2b2lkIE1l
c3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwg
c3RhdGljX2Nhc3Q8TWVzc2FnZVBvcnRBcnJheSo+KDApLCBlYyk7CisgICAgcG9zdE1lc3NhZ2Uo
bWVzc2FnZSwgc3RhdGljX2Nhc3Q8VHJhbnNmZXJhYmxlQXJyYXkqPigwKSwgZWMpOwogfQogCi12
b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQordm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVz
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWlzRW50YW5nbGVkKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIAotICAgIE93
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7Ci0gICAgLy8gTWFrZSBzdXJl
IHdlIGFyZW4ndCBjb25uZWN0ZWQgdG8gYW55IG9mIHRoZSBwYXNzZWQtaW4gcG9ydHMuCi0gICAg
aWYgKHBvcnRzKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcG9ydHMt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBNZXNzYWdlUG9ydCogZGF0YVBvcnQgPSAoKnBv
cnRzKVtpXS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChkYXRhUG9ydCA9PSB0aGlzIHx8IG1fZW50
YW5nbGVkQ2hhbm5lbC0+aXNDb25uZWN0ZWRUbyhkYXRhUG9ydCkpIHsKLSAgICAgICAgICAgICAg
ICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICBP
d25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0czsKKyAgICAvLyBNYWtlIHN1
cmUgd2UgYXJlbid0IGNvbm5lY3RlZCB0byBhbnkgb2YgdGhlIHBhc3NlZC1pbiB0cmFuc2ZlcmFi
bGVzLgorICAgIGlmICh0cmFuc2ZlcmFibGVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRy
YW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlID0gKCp0cmFuc2ZlcmFibGVzKVtpXS5nZXQoKTsKKyAg
ICAgICAgICAgIGlmIChNZXNzYWdlUG9ydCogZGF0YVBvcnQgPSB0cmFuc2ZlcmFibGUtPmFzTWVz
c2FnZVBvcnQoKSkgeworICAgICAgICAgICAgICAgIGlmIChkYXRhUG9ydCA9PSB0aGlzIHx8IG1f
ZW50YW5nbGVkQ2hhbm5lbC0+aXNDb25uZWN0ZWRUbyhkYXRhUG9ydCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7Cisg
ICAgICAgIHJlY2VpcHRzID0gVHJhbnNmZXJhYmxlOjp0cmFuc2ZlckFsbE91dCh0cmFuc2ZlcmFi
bGVzLCBlYyk7CiAgICAgICAgIGlmIChlYykKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgbV9lbnRhbmdsZWRDaGFubmVsLT5wb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VQb3J0Q2hh
bm5lbDo6RXZlbnREYXRhOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5lbHMucmVsZWFzZSgpKSk7Cisg
ICAgbV9lbnRhbmdsZWRDaGFubmVsLT5wb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VQb3J0Q2hh
bm5lbDo6RXZlbnREYXRhOjpjcmVhdGUobWVzc2FnZSwgcmVjZWlwdHMucmVsZWFzZSgpKSk7Cit9
CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gTWVzc2FnZVBvcnQ6OnRyYW5zZmVy
T3V0KEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbV9lbnRhbmdsZWRDaGFubmVsIHx8
IG1fdHJhbnNmZXJDbG9zZWQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuIG1fZW50YW5nbGVkQ2hhbm5lbC5yZWxlYXNlKCk7CisgICAgfQorICAgIG1f
dHJhbnNmZXJDbG9zZWQgPSB0cnVlOworICAgIHJldHVybiBkaXNlbnRhbmdsZShlYyk7CiB9CiAK
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUo
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xNzksOCArMTkyLDggQEAgdm9pZCBNZXNzYWdlUG9ydDo6
ZGlzcGF0Y2hNZXNzYWdlcygpCiAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgICAg
ICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cygqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBldmVudERhdGEtPmNoYW5uZWxzKCkpOwot
ICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJl
bGVhc2UoKSwgZXZlbnREYXRhLT5tZXNzYWdlKCkpOworICAgICAgICBPd25QdHI8VHJhbnNmZXJh
YmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFs
bEluKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV2ZW50RGF0YS0+cmVjZWlwdHMoKSk7Cisg
ICAgICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUodHJhbnNmZXJh
Ymxlcy5yZWxlYXNlKCksIGV2ZW50RGF0YS0+bWVzc2FnZSgpKTsKIAogICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICAgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7
CkBAIC0yMDQsNDggKzIxNyw2IEBAIE1lc3NhZ2VQb3J0KiBNZXNzYWdlUG9ydDo6bG9jYWxseUVu
dGFuZ2xlZFBvcnQoKQogICAgIHJldHVybiBtX2VudGFuZ2xlZENoYW5uZWwgPyBtX2VudGFuZ2xl
ZENoYW5uZWwtPmxvY2FsbHlFbnRhbmdsZWRQb3J0KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkg
OiAwOwogfQogCi1QYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBNZXNzYWdlUG9y
dDo6ZGlzZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0
aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFwb3J0cyB8fCAhcG9ydHMtPnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBIYXNoU2V0IHVzZWQgdG8gZWZmaWNpZW50bHkg
Y2hlY2sgZm9yIGR1cGxpY2F0ZXMgaW4gdGhlIHBhc3NlZC1pbiBhcnJheS4KLSAgICBIYXNoU2V0
PE1lc3NhZ2VQb3J0Kj4gcG9ydFNldDsKLQotICAgIC8vIFdhbGsgdGhlIGluY29taW5nIGFycmF5
IC0gaWYgdGhlcmUgYXJlIGFueSBkdXBsaWNhdGUgcG9ydHMsIG9yIG51bGwgcG9ydHMgb3IgY2xv
bmVkIHBvcnRzLCB0aHJvdyBhbiBlcnJvciAocGVyIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1
IHNwZWMpLgotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcG9ydHMtPnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIE1lc3NhZ2VQb3J0KiBwb3J0ID0gKCpwb3J0cylbaV0uZ2V0KCk7Ci0g
ICAgICAgIGlmICghcG9ydCB8fCBwb3J0LT5pc0Nsb25lZCgpIHx8IHBvcnRTZXQuY29udGFpbnMo
cG9ydCkpIHsKLSAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBwb3J0U2V0LmFkZChwb3J0KTsK
LSAgICB9Ci0KLSAgICAvLyBQYXNzZWQtaW4gcG9ydHMgcGFzc2VkIHZhbGlkaXR5IGNoZWNrcywg
c28gd2UgY2FuIGRpc2VudGFuZ2xlIHRoZW0uCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBwb3J0QXJyYXkgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXko
cG9ydHMtPnNpemUoKSkpOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwIDsgaSA8IHBvcnRz
LT5zaXplKCkgOyArK2kpIHsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hh
bm5lbCA9ICgqcG9ydHMpW2ldLT5kaXNlbnRhbmdsZShlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMp
OyAvLyBDYW4ndCBnZW5lcmF0ZSBleGNlcHRpb24gaGVyZSBpZiBwYXNzZWQgYWJvdmUgY2hlY2tz
LgotICAgICAgICAoKnBvcnRBcnJheSlbaV0gPSBjaGFubmVsLnJlbGVhc2UoKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHBvcnRBcnJheS5yZWxlYXNlKCk7Ci19Ci0KLVBhc3NPd25QdHI8TWVzc2FnZVBv
cnRBcnJheT4gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMp
Ci17Ci0gICAgaWYgKCFjaGFubmVscyB8fCAhY2hhbm5lbHMtPnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydEFycmF5ID0g
YWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkoY2hhbm5lbHMtPnNpemUoKSkpOwotICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY2hhbm5lbHMtPnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4
dCk7Ci0gICAgICAgIHBvcnQtPmVudGFuZ2xlKCgqY2hhbm5lbHMpW2ldLnJlbGVhc2UoKSk7Ci0g
ICAgICAgICgqcG9ydEFycmF5KVtpXSA9IHBvcnQucmVsZWFzZSgpOwotICAgIH0KLSAgICByZXR1
cm4gcG9ydEFycmF5LnJlbGVhc2UoKTsKLX0KLQogRXZlbnRUYXJnZXREYXRhKiBNZXNzYWdlUG9y
dDo6ZXZlbnRUYXJnZXREYXRhKCkKIHsKICAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuaAppbmRleCAzYTg0MGZlLi5iMDBmZTYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hh
bm5lbC5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CkBAIC00NSwyMiArNDYsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE1lc3Nh
Z2VQb3J0OwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLSAgICAvLyBUaGUg
b3ZlcndoZWxtaW5nbHkgY29tbW9uIGNhc2UgaXMgc2VuZGluZyBhIHNpbmdsZSBwb3J0LCBzbyBo
YW5kbGUgdGhhdCBlZmZpY2llbnRseSB3aXRoIGFuIGlubGluZSBidWZmZXIgb2Ygc2l6ZSAxLgot
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJy
YXk7Ci0KICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgaW5oZXJpdCBmcm9tIEFjdGl2
ZURPTU9iamVjdCBhbmQgdXNlCiAgICAgLy8gc2V0UGVuZGluZ0FjdGl2aXR5IC8gdW5zZXRQZW5k
aW5nQWN0aXZpdHkgaW5zdGVhZCBvZiBkdXBsaWNhdGluZwogICAgIC8vIEFjdGl2ZURPTU9iamVj
dCdzIGZlYXR1cmVzIGFuZCByZWx5aW5nIG9uIEphdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9u
CiAgICAgLy8gdG8gZ2V0IGl0cyBsaWZldGltZSByaWdodC4KLSAgICBjbGFzcyBNZXNzYWdlUG9y
dCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsK
KyAgICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1YmxpYyBUcmFuc2ZlcmFibGUsIHB1YmxpYyBFdmVu
dFRhcmdldCB7CiAgICAgcHVibGljOgorICAgICAgICBNZXNzYWdlUG9ydCogYXNNZXNzYWdlUG9y
dCgpIHsgcmV0dXJuIHRoaXM7IH0KKwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdl
UG9ydD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlUG9ydChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KSk7IH0KICAgICAgICAgfk1lc3NhZ2VQb3J0KCk7CiAKICAgICAgICAgdm9pZCBwb3N0TWVz
c2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGVBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRp
bmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAg
ICB2b2lkIHN0YXJ0KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoKTsKQEAgLTY4LDE0ICs2OCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBlbnRhbmdsZShQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbD4pOwogICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bD4gZGlzZW50YW5nbGUoRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgICAgIC8vIERpc2VudGFuZ2xl
IGFuIGFycmF5IG9mIHBvcnRzLCByZXR1cm5pbmcgdGhlIGVudGFuZ2xlZCBjaGFubmVscy4KLSAg
ICAgICAgLy8gUGVyIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMsIGdlbmVyYXRlcyBh
biBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gaWYgYW55IG9mIHRoZSBwYXNzZWQgcG9ydHMg
YXJlIG51bGwgb3Igbm90IGVudGFuZ2xlZC4KLSAgICAgICAgLy8gUmV0dXJucyAwIGlmIHRoZXJl
IGlzIGFuIGV4Y2VwdGlvbiwgb3IgaWYgdGhlIHBhc3NlZC1pbiBhcnJheSBpcyAwL2VtcHR5Lgot
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gZGlzZW50
YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwotCi0g
ICAgICAgIC8vIEVudGFuZ2xlcyBhbiBhcnJheSBvZiBjaGFubmVscywgcmV0dXJuaW5nIGFuIGFy
cmF5IG9mIE1lc3NhZ2VQb3J0cyBpbiBtYXRjaGluZyBvcmRlci4KLSAgICAgICAgLy8gUmV0dXJu
cyAwIGlmIHRoZSBwYXNzZWQgYXJyYXkgaXMgMC9lbXB0eS4KLSAgICAgICAgc3RhdGljIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4gZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICBib29s
IGlzVHJhbnNmZXJDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZmVyQ2xvc2VkOyB9Cisg
ICAgICAgIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gdHJhbnNmZXJPdXQoRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgICAgIHZvaWQgbWVzc2FnZUF2YWlsYWJsZSgpOwogICAgICAgICBi
b29sIHN0YXJ0ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0ZWQ7IH0KQEAgLTg4LDggKzgyLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlcygp
OwogCi0gICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+OjpyZWY7Ci0gICAgICAg
IHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+OjpkZXJlZjsKKyAgICAgICAgdXNpbmcgUmVm
Q291bnRlZDxUcmFuc2ZlcmFibGU+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJh
bnNmZXJhYmxlPjo6ZGVyZWY7CiAKICAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKTsK
IApAQCAtMTA1LDkgKzk5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBOT1RF
OiBUaGlzIGlzIHVzZWQgc29sZWx5IHRvIGVuYWJsZSBhIEdDIG9wdGltaXphdGlvbi4gU29tZSBw
bGF0Zm9ybXMgbWF5IG5vdCBiZSBhYmxlIHRvIGRldGVybWluZSBvd25lcnNoaXAgb2YgdGhlIHJl
bW90ZSBwb3J0IChzaW5jZSBpdCBtYXkgbGl2ZSBjcm9zcy1wcm9jZXNzKSAtIHRob3NlIHBsYXRm
b3JtcyBtYXkgYWx3YXlzIHJldHVybiBudWxsLgogICAgICAgICBNZXNzYWdlUG9ydCogbG9jYWxs
eUVudGFuZ2xlZFBvcnQoKTsKICAgICAgICAgLy8gQSBwb3J0IHN0YXJ0cyBvdXQgaXRzIGxpZmUg
ZW50YW5nbGVkLCBhbmQgcmVtYWlucyBlbnRhbmdsZWQgdW50aWwgaXQgaXMgY2xvc2VkIG9yIGlz
IGNsb25lZC4KLSAgICAgICAgYm9vbCBpc0VudGFuZ2xlZCgpIHsgcmV0dXJuICFtX2Nsb3NlZCAm
JiAhaXNDbG9uZWQoKTsgfQorICAgICAgICBib29sIGlzRW50YW5nbGVkKCkgY29uc3QgeyByZXR1
cm4gIW1fY2xvc2VkICYmICFpc0Nsb25lZCgpOyB9CiAgICAgICAgIC8vIEEgcG9ydCBpcyBjbG9u
ZWQgaWYgaXRzIGVudGFuZ2xlZCBjaGFubmVsIGhhcyBiZWVuIHJlbW92ZWQgYW5kIHNlbnQgdG8g
YSBuZXcgb3duZXIgdmlhIHBvc3RNZXNzYWdlKCkuCi0gICAgICAgIGJvb2wgaXNDbG9uZWQoKSB7
IHJldHVybiAhbV9lbnRhbmdsZWRDaGFubmVsOyB9CisgICAgICAgIGJvb2wgaXNDbG9uZWQoKSBj
b25zdCB7IHJldHVybiAhbV9lbnRhbmdsZWRDaGFubmVsOyB9CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBNZXNzYWdlUG9ydChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CkBAIC0xMjEsNiArMTE1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9zdGFydGVkOwogICAg
ICAgICBib29sIG1fY2xvc2VkOworICAgICAgICBib29sIG1fdHJhbnNmZXJDbG9zZWQ7CiAKICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
ICAgICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmlkbAppbmRleCAwZjQxMGNjLi4zMmI0NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlUG9ydC5pZGwKQEAgLTM3LDcgKzM3LDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAvLyBXZSBuZWVk
IHRvIGhhdmUgc29tZXRoaW5nIGFzIGFuIE9iakMgYmluZGluZywgYmVjYXVzZSBNZXNzYWdlUG9y
dCBpcyB1c2VkIGluIE1lc3NhZ2VFdmVudCwgd2hpY2ggYWxyZWFkeSBoYXMgb25lLAogLy8gYnV0
IHdlIGRvbid0IHdhbnQgdG8gYWN0dWFsbHkgZXhwb3NlIHRoZSBBUEkgd2hpbGUgaXQgaXMgaW4g
Zmx1eC4KICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFT
Q1JJUFQKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVz
c2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdlUG9ydHMpCisgICAgICAgIFtDdXN0b21d
IHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gQXJy
YXkgdHJhbnNmZXIpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAg
dm9pZCBzdGFydCgpOwogICAgICAgICB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydENoYW5uZWwuY3BwCmluZGV4IDM2N2Y3ZWQuLjZhNjM4NDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCkBAIC0zMCwxOCArMzAsMjkgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWwuaCIKIAorI2lu
Y2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCi1QYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBNZXNzYWdlUG9ydENoYW5uZWw6OkV2
ZW50RGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKK1Bhc3NPd25Q
dHI8TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE+IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZl
bnREYXRhOjpjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Us
IFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50RGF0YShtZXNzYWdlLCBjaGFubmVscykpOworICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgRXZlbnREYXRhKG1lc3NhZ2UsIHJlY2VpcHRzKSk7CiB9CiAKLU1l
c3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVudERhdGEoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+IGNoYW5uZWxzKQorTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OkV2ZW50RGF0YShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogICAgIDogbV9tZXNzYWdlKG1lc3NhZ2Up
Ci0gICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICwgbV9yZWNlaXB0cyhyZWNlaXB0cykK
K3sKK30KKworUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJh
bnNmZXJJbihQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+IG93blRoaXMsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CisgICAgQVNTRVJUKG93blRoaXMtPmFzTWVzc2Fn
ZVBvcnRDaGFubmVsKCkpOworICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IG93blRoaXND
YXN0ID0gYWRvcHRQdHIob3duVGhpcy5sZWFrUHRyKCktPmFzTWVzc2FnZVBvcnRDaGFubmVsKCkp
OworICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29u
dGV4dCk7CisgICAgcG9ydC0+ZW50YW5nbGUob3duVGhpc0Nhc3QucmVsZWFzZSgpKTsKKyAgICBy
ZXR1cm4gcG9ydC5yZWxlYXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaAppbmRleCAwNzY2OGE0Li44NDM1ODk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgogCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01MCwxNCArNTEsMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAg
Y2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCi0gICAgLy8gVGhlIG92ZXJ3aGVsbWluZ2x5
IGNvbW1vbiBjYXNlIGlzIHNlbmRpbmcgYSBzaW5nbGUgcG9ydCwgc28gaGFuZGxlIHRoYXQgZWZm
aWNpZW50bHkgd2l0aCBhbiBpbmxpbmUgYnVmZmVyIG9mIHNpemUgMS4KLSAgICB0eXBlZGVmIFZl
Y3RvcjxPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgMT4gTWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk7Ci0KICAgICAvLyBNZXNzYWdlUG9ydENoYW5uZWwgaXMgYSBwbGF0Zm9ybS1pbmRlcGVuZGVu
dCBpbnRlcmZhY2UgdG8gdGhlIHJlbW90ZSBzaWRlIG9mIGEgbWVzc2FnZSBjaGFubmVsLgogICAg
IC8vIEl0IGFjdHMgYXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsIGltcGxlbWVudGF0aW9uIHdoaWNoIGVuc3VyZXMgdGhh
dCB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IGNsb3NlKCkgbWV0aG9kIGlzIGludm9rZWQgYmVmb3Jl
IGRlc3RydWN0aW9uLgotICAgIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbCB7CisgICAgY2xhc3Mg
TWVzc2FnZVBvcnRDaGFubmVsIDogcHVibGljIFRyYW5zZmVyYWJsZVJlY2VpcHQgewogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZXNzYWdlUG9ydENoYW5uZWwpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbCogYXNN
ZXNzYWdlUG9ydENoYW5uZWwoKSB7IHJldHVybiB0aGlzOyB9CisKKyAgICAgICAgUGFzc1JlZlB0
cjxUcmFuc2ZlcmFibGU+IHRyYW5zZmVySW4oUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgICAgICBib29sIGlzRmxhdHRlbmFibGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUNo
YW5uZWwoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4sIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+KTsK
IAogICAgICAgICAvLyBDcmVhdGVzIGEgbmV3IHdyYXBwZXIgZm9yIHRoZSBwYXNzZWQgY2hhbm5l
bC4KQEAgLTgyLDE1ICs4NSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNz
IEV2ZW50RGF0YSB7CiAgICAgICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudERhdGEp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAg
c3RhdGljIFBhc3NPd25QdHI8RXZlbnREYXRhPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAg
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxFdmVudERhdGE+IGNyZWF0ZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
Pik7CiAKICAgICAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogbWVzc2FnZSgpIHsgcmV0
dXJuIG1fbWVzc2FnZS5nZXQoKTsgfQotICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4gY2hhbm5lbHMoKSB7IHJldHVybiBtX2NoYW5uZWxzLnJlbGVhc2UoKTsg
fQorICAgICAgICAgICAgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2Vp
cHRzKCkgeyByZXR1cm4gbV9yZWNlaXB0cy5yZWxlYXNlKCk7IH0KIAogICAgICAgICBwcml2YXRl
OgotICAgICAgICAgICAgRXZlbnREYXRhKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAg
ICAgICBFdmVudERhdGEoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Us
IFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CiAgICAgICAgICAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7Ci0gICAgICAgICAgICBPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CisgICAgICAgICAgICBPd25QdHI8
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBtX3JlY2VpcHRzOwogICAgICAgICB9OwogCiAgICAg
ICAgIC8vIFNlbmRzIGEgbWVzc2FnZSBhbmQgb3B0aW9uYWwgY2xvbmVkIHBvcnQgdG8gdGhlIHJl
bW90ZSBwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggMGE5ODMxMy4uODBi
ZTc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgor
I2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQy
LDcgKzQzLDggQEAgcHVibGljOgogICAgIHZvaWQgaW5pdFBvcFN0YXRlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIGJvb2wgaXNQb3BTdGF0ZUV2ZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVPYmplY3QuZ2V0KCk7IH0gICAgCisgICAgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVPYmplY3QuZ2V0
KCk7IH0KKyAgICBUcmFuc2ZlcmFibGVBcnJheSogZGF0YURlcGVuZGVuY2llcygpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KIAogcHJpdmF0ZToKICAgICBQb3BTdGF0ZUV2ZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmFuc2ZlcmFibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBh
ZWEwOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxl
LmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJy
YXk+IFRyYW5zZmVyYWJsZTo6dHJhbnNmZXJBbGxPdXQoVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5z
ZmVyYWJsZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghdHJhbnNmZXJhYmxlcyB8
fCAhdHJhbnNmZXJhYmxlcy0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IC8vIEhhc2hTZXQgdXNlZCB0byBlZmZpY2llbnRseSBjaGVjayBmb3IgZHVwbGljYXRlcyBpbiB0
aGUgcGFzc2VkLWluIGFycmF5LgorICAgIEhhc2hTZXQ8VHJhbnNmZXJhYmxlKj4gdHJhbnNmZXJh
YmxlU2V0OworCisgICAgLy8gV2FsayB0aGUgaW5jb21pbmcgYXJyYXkgLSBpZiB0aGVyZSBhcmUg
YW55IGR1cGxpY2F0ZSB0cmFuc2ZlcmFibGVzLCBvciB0cmFuc2ZlcnJlZCBwb3J0cyBvciBjbG9z
ZWQgcG9ydHMsIHRocm93IGFuIGVycm9yIChwZXIgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUg
c3BlYykuCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5z
aXplKCk7ICsraSkgeworICAgICAgICBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSA9ICgqdHJh
bnNmZXJhYmxlcylbaV0uZ2V0KCk7CisgICAgICAgIGlmICghdHJhbnNmZXJhYmxlIHx8IHRyYW5z
ZmVyYWJsZS0+aXNUcmFuc2ZlckNsb3NlZCgpIHx8IHRyYW5zZmVyYWJsZVNldC5jb250YWlucyh0
cmFuc2ZlcmFibGUpKSB7CisgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgdHJhbnNmZXJhYmxl
U2V0LmFkZCh0cmFuc2ZlcmFibGUpOworICAgIH0KKworICAgIC8vIFBhc3NlZC1pbiBUcmFuc2Zl
cmFibGVzIHBhc3NlZCB2YWxpZGl0eSBjaGVja3MsIHNvIHdlIGNhbiB0cmFuc2ZlciB0aGVtIG91
dC4KKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0QXJyYXkgPSBh
ZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KHRyYW5zZmVyYWJsZXMtPnNpemUo
KSkpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwIDsgaSA8IHRyYW5zZmVyYWJsZXMtPnNp
emUoKSA7ICsraSkgeworICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gcmVjZWlw
dCA9ICgqdHJhbnNmZXJhYmxlcylbaV0tPnRyYW5zZmVyT3V0KGVjKTsKKyAgICAgICAgQVNTRVJU
KCFlYyk7IC8vIENhbid0IGdlbmVyYXRlIGV4Y2VwdGlvbiBoZXJlIGlmIHBhc3NlZCBhYm92ZSBj
aGVja3MuCisgICAgICAgICgqcmVjZWlwdEFycmF5KVtpXSA9IHJlY2VpcHQucmVsZWFzZSgpOwor
ICAgIH0KKyAgICByZXR1cm4gcmVjZWlwdEFycmF5LnJlbGVhc2UoKTsKK30KKworUGFzc093blB0
cjxUcmFuc2ZlcmFibGVBcnJheT4gVHJhbnNmZXJhYmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheT4gcmVjZWlwdHMpCit7CisgICAgaWYgKCFyZWNlaXB0cyB8fCAhcmVjZWlwdHMt
PnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBPd25QdHI8VHJhbnNmZXJh
YmxlQXJyYXk+IHRyYW5zZmVyYWJsZUFycmF5ID0gYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZUFy
cmF5KHJlY2VpcHRzLT5zaXplKCkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHJlY2VpcHRzLT5zaXplKCk7ICsraSkKKyAgICAgICAgKCp0cmFuc2ZlcmFibGVBcnJheSlbaV0g
PSAoKnJlY2VpcHRzKVtpXS0+dHJhbnNmZXJJbigoKnJlY2VpcHRzKVtpXS5yZWxlYXNlKCksIGNv
bnRleHQpOworICAgIHJldHVybiB0cmFuc2ZlcmFibGVBcnJheS5yZWxlYXNlKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFu
c2ZlcmFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGNiZmMwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZS5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgor
ICovCisKKyNpZm5kZWYgVHJhbnNmZXJhYmxlX2gKKyNkZWZpbmUgVHJhbnNmZXJhYmxlX2gKKwor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIE1lc3Nh
Z2VQb3J0Q2hhbm5lbDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBUcmFu
c2ZlcmFibGU7CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OworCit0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8VHJhbnNmZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7Cit0eXBlZGVmIFZlY3Rv
cjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eTsKKworY2xhc3MgVHJhbnNmZXJhYmxlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhbnNmZXJhYmxl
PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VHJhbnNmZXJhYmxlKCkgeyB9CisKKyAgICB2aXJ0
dWFsIE1lc3NhZ2VQb3J0KiBhc01lc3NhZ2VQb3J0KCkgeyByZXR1cm4gMDsgfQorCisgICAgdmly
dHVhbCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+IHRyYW5zZmVyT3V0KEV4Y2VwdGlv
bkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVHJhbnNmZXJDbG9zZWQoKSBjb25zdCA9
IDA7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHRy
YW5zZmVyQWxsT3V0KFRyYW5zZmVyYWJsZUFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOworCitwcm90
ZWN0ZWQ6CisgICAgVHJhbnNmZXJhYmxlKCkgeyB9Cit9OworCitjbGFzcyBUcmFuc2ZlcmFibGVS
ZWNlaXB0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5UcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9
CisKKyAgICB2aXJ0dWFsIE1lc3NhZ2VQb3J0Q2hhbm5lbCogYXNNZXNzYWdlUG9ydENoYW5uZWwo
KSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIGlzRmxhdHRlbmFibGUoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmZXJhYmxlPiB0cmFuc2ZlckluKFBh
c3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSA9
IDA7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJB
bGxJbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNl
aXB0QXJyYXk+KTsKKworcHJvdGVjdGVkOgorICAgIFRyYW5zZmVyYWJsZVJlY2VpcHQoKSB7IH0K
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRyYW5zZmVyYWJsZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMmFiN2YzYi4uYTE1ZjY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTIwLDIwICsxMjAsMjAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7CiBw
dWJsaWM6Ci0gICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdpbmRvdywgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiBjaGFubmVscywgU2VjdXJpdHlPcmlnaW4qIHRhcmdldE9yaWdpbikKKyAg
ICBQb3N0TWVzc2FnZVRpbWVyKERPTVdpbmRvdyogd2luZG93LCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFBhc3NS
ZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5PiByZWNlaXB0cywgU2VjdXJpdHlPcmlnaW4qIHRhcmdldE9yaWdpbikKICAgICAgICAgOiBt
X3dpbmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiAgICAgICAgICwg
bV9vcmlnaW4oc291cmNlT3JpZ2luKQogICAgICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAgICAg
ICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICAgICAsIG1fcmVjZWlwdHMocmVjZWlwdHMp
CiAgICAgICAgICwgbV90YXJnZXRPcmlnaW4odGFyZ2V0T3JpZ2luKQogICAgIHsKICAgICB9CiAK
ICAgICBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBtZXNz
YWdlUG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqY29udGV4dCwgbV9jaGFubmVs
cy5yZWxlYXNlKCkpOwotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUobWVzc2Fn
ZVBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdlLCBtX29yaWdpbiwgIiIsIG1fc291cmNlKTsKKyAg
ICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVzID0gVHJhbnNmZXJh
YmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJbigqY29udGV4dCwgbV9yZWNlaXB0cy5yZWxlYXNlKCkp
OworICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUodHJhbnNmZXJhYmxlcy5yZWxl
YXNlKCksIG1fbWVzc2FnZSwgbV9vcmlnaW4sICIiLCBtX3NvdXJjZSk7CiAgICAgfQogICAgIFNl
Y3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3RhcmdldE9yaWdp
bi5nZXQoKTsgfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAg
IFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNlOwotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4gbV9jaGFubmVsczsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
PiBtX3JlY2VpcHRzOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90YXJnZXRPcmlnaW47
CiB9OwogCkBAIC03OTcsMTUgKzc5NywxNSBAQCBDT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxp
bnQ+KERPTVdpbmRvdzo6UEVSU0lTVEVOVCkgPT0gc3RhdGljX2Nhc3Q8aW50PihBc3luYwogCiAj
ZW5kaWYKIAotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgY29uc3QgU3RyaW5nJiB0
YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQg
RE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTWVz
c2FnZVBvcnRBcnJheSBwb3J0czsKLSAgICBpZiAocG9ydCkKLSAgICAgICAgcG9ydHMuYXBwZW5k
KHBvcnQpOwotICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZwb3J0cywgdGFyZ2V0T3JpZ2luLCBz
b3VyY2UsIGVjKTsKKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVzOworICAgIGlm
ICh0cmFuc2ZlcmFibGUpCisgICAgICAgIHRyYW5zZmVyYWJsZXMuYXBwZW5kKHRyYW5zZmVyYWJs
ZSk7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnRyYW5zZmVyYWJsZXMsIHRhcmdldE9yaWdp
biwgc291cmNlLCBlYyk7CiB9CiAKLXZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJh
eSogcG9ydHMsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFu
c2ZlcmFibGVzLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtODIxLDcgKzgyMSw3IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzID0g
TWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMsIGVjKTsKKyAgICBPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IFRyYW5zZmVyYWJsZTo6dHJhbnNmZXJB
bGxPdXQodHJhbnNmZXJhYmxlcywgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwog
CkBAIC04MzMsNyArODMzLDcgQEAgdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXMKICAgICBTdHJpbmcg
c291cmNlT3JpZ2luID0gc291cmNlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5n
KCk7CiAKICAgICAvLyBTY2hlZHVsZSB0aGUgbWVzc2FnZS4KLSAgICBQb3N0TWVzc2FnZVRpbWVy
KiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKHRoaXMsIG1lc3NhZ2UsIHNvdXJjZU9yaWdp
biwgc291cmNlLCBjaGFubmVscy5yZWxlYXNlKCksIHRhcmdldC5nZXQoKSk7CisgICAgUG9zdE1l
c3NhZ2VUaW1lciogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcih0aGlzLCBtZXNzYWdlLCBz
b3VyY2VPcmlnaW4sIHNvdXJjZSwgcmVjZWlwdHMucmVsZWFzZSgpLCB0YXJnZXQuZ2V0KCkpOwog
ICAgIHRpbWVyLT5zdGFydE9uZVNob3QoMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmlu
ZGV4IGEyYWQ4MDkuLjNkYzNhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzQs
NyArNzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBzdHJ1Y3QgV2luZG93RmVhdHVy
ZXM7CiAKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+LCAxPiBNZXNzYWdl
UG9ydEFycmF5OworICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+LCAxPiBU
cmFuc2ZlcmFibGVBcnJheTsKIAogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAg
LTIyOCw5ICsyMjksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcGFnZURl
c3Ryb3llZCgpOwogICAgICAgICB2b2lkIHJlc2V0R2VvbG9jYXRpb24oKTsKIAotICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERP
TVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3Nh
Z2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJs
ZUFycmF5KiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVw
ZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9zdE1l
c3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQ
b3J0KiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNl
cHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSosIGNvbnN0IFN0cmluZyYgdGFy
Z2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlVGltZXJGaXJlZChQYXNzT3duUHRyPFBvc3RNZXNzYWdlVGltZXI+KTsK
IAogICAgICAgICB2b2lkIHNjcm9sbEJ5KGludCB4LCBpbnQgeSkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5pZGwKaW5kZXggMGYzMTYyZi4uMDAyZTE2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbApAQCAtMjEyLDExICsyMTIsMTEgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAg
ICAgLy8gY3Jvc3MtZG9jdW1lbnQgbWVzc2FnaW5nCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZB
U0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCi0gICAgICAgIFtEb05vdENoZWNrRG9tYWlu
U2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdlUG9ydHMsIGluIERPTVN0cmlu
ZyB0YXJnZXRPcmlnaW4pCisgICAgICAgIFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3Rv
bV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4g
W09wdGlvbmFsXSBBcnJheSB0cmFuc2Zlckxpc3QsIGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4p
CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIFRo
ZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5n
cywgc28gZm9yIG5vdyBqdXN0IGFsbG93IHBhc3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KLSAgICAg
ICAgW0RvTm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGlu
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0
IG1lc3NhZ2VQb3J0LCBpbiBET01TdHJpbmcgdGFyZ2V0T3JpZ2luKQorICAgICAgICBbRG9Ob3RD
aGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gTWVzc2FnZVBvcnQgdHJhbnNmZXIs
IGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4pCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaAppbmRleCA5YWRlOWM4
Li5jY2Q4ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNp
bmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjMs
NiArNjQsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIGNvbnN0Owog
ICAgIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKCkgY29uc3Q7CisgICAgLy8gQW4gSW5kZXhl
ZERCIG9ubHkgaG9sZHMgZmxhdHRlbmVkIGRhdGEuCisgICAgVHJhbnNmZXJhYmxlQXJyYXkqIHZh
bHVlRGVwZW5kZW5jaWVzKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIElEQkFueSogc291cmNl
KCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHVwZGF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBFeGNlcHRp
b25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmNwcAppbmRleCA1NGI1YmE4Li5kMzZkMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKQEAgLTQ3LDI2ICs0NywyNSBA
QCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB1cwogfQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hl
biB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotdm9pZCBEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7Ci0gICAgaWYgKHBv
cnQpCi0gICAgICAgIHBvcnRzLmFwcGVuZChwb3J0KTsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdl
LCAmcG9ydHMsIGVjKTsKKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVzOworICAg
IGlmICh0cmFuc2ZlcmFibGUpCisgICAgICAgIHRyYW5zZmVyYWJsZXMuYXBwZW5kKHRyYW5zZmVy
YWJsZSk7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnRyYW5zZmVyYWJsZXMsIGVjKTsKIH0K
IAogdm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
cG9zdE1lc3NhZ2UobWVzc2FnZSwgc3RhdGljX2Nhc3Q8TWVzc2FnZVBvcnRBcnJheSo+KDApLCBl
Yyk7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgc3RhdGljX2Nhc3Q8VHJhbnNmZXJhYmxlKj4o
MCksIGVjKTsKIH0KIAotdm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBv
cnRBcnJheSogcG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyYWJsZXMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBzZW5k
aW5nIGl0IHRvIHRoZSByZW1vdGUgY29udGV4dC4KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMs
IGVjKTsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IFRy
YW5zZmVyYWJsZTo6dHJhbnNmZXJBbGxPdXQodHJhbnNmZXJhYmxlcywgZWMpOwogICAgIGlmIChl
YykKICAgICAgICAgcmV0dXJuOwotICAgIHRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLnBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKyAg
ICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHkoKS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0
KG1lc3NhZ2UsIHJlY2VpcHRzLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgRGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0
aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oCmluZGV4IGRiYTUyYWUuLjNmYTY0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCkBAIC01Niw5ICs1Niw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRXZlbnRUYXJnZXQKICAgICAgICAgdmlydHVhbCBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSB7IHJldHVy
biB0aGlzOyB9CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2Uo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBNZXNzYWdlUG9ydEFycmF5
KiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgVHJhbnNmZXJhYmxlQXJyYXkqLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2Jq
QyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIFRyYW5zZmVyYWJsZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG1lc3NhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbAppbmRleCAxYTM4MGZlLi4zNDZh
NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNv
bnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5pZGwKQEAgLTQyLDcgKzQyLDcgQEAgbW9kdWxlIHRocmVhZHMgewogCiAjaWYgIWRlZmlu
ZWQoTEFOR1VBR0VfQ1BQKSB8fCAhTEFOR1VBR0VfQ1BQCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9K
QVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCi0gICAgICAgIFtDdXN0b21dIHZvaWQg
cG9zdE1lc3NhZ2UoaW4gYW55IG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gQXJyYXkgbWVzc2FnZVBv
cnRzKQorICAgICAgICBbQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIGFueSBtZXNzYWdlLCBp
biBbT3B0aW9uYWxdIEFycmF5IHRyYW5zZmVyTGlzdCkKICAgICAgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgLy8gVGhlcmUncyBubyBnb29kIHdheSB0byBleHBv
c2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRpbmdzLCBzbyBmb3Igbm93IGp1c3QgYWxsb3cg
cGFzc2luZyBpbiBhIHNpbmdsZSBwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyQ29udGV4dC5jcHAKaW5kZXggMjQwMDJlNC4uMTM1NDk4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKIApA
QCAtNDQsNyArNDUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8TWVzc2Fn
ZUV2ZW50PiBjcmVhdGVDb25uZWN0RXZlbnQoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCkK
IHsKLSAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KDEsIHBvcnQpKSk7CisgICAgUmVmUHRyPFRy
YW5zZmVyYWJsZT4gdHJhbnNmZXJhYmxlKHBvcnQpOworICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+
IGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZUFy
cmF5KDEsIHRyYW5zZmVyYWJsZSkpKTsKICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMo
KS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV2ZW50OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDcyNGY2NDEuLjYyYjQyZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5jcHAKQEAgLTgzLDI2ICs4MywyNiBAQCBXb3JrZXI6On5Xb3JrZXIoKQog
fQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGlu
Z3MgKGJ1ZyAjMjg3NzQpLgotdm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwotICAgIGlmIChwb3J0
KQotICAgICAgICBwb3J0cy5hcHBlbmQocG9ydCk7Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwg
JnBvcnRzLCBlYyk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlczsKKyAgICBp
ZiAodHJhbnNmZXJhYmxlKQorICAgICAgICB0cmFuc2ZlcmFibGVzLmFwcGVuZCh0cmFuc2ZlcmFi
bGUpOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZ0cmFuc2ZlcmFibGVzLCBlYyk7CiB9CiAK
IHZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2Fn
ZSwgc3RhdGljX2Nhc3Q8TWVzc2FnZVBvcnRBcnJheSo+KDApLCBlYyk7CisgICAgcG9zdE1lc3Nh
Z2UobWVzc2FnZSwgc3RhdGljX2Nhc3Q8VHJhbnNmZXJhYmxlKj4oMCksIGVjKTsKIH0KIAotdm9p
ZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICAvLyBEaXNlbnRhbmdsZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBm
b3Igc2VuZGluZyBpdCB0byB0aGUgcmVtb3RlIGNvbnRleHQuCi0gICAgT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRz
KHBvcnRzLCBlYyk7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlw
dHMgPSBUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KHRyYW5zZmVyYWJsZXMsIGVjKTsKICAg
ICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3Nh
Z2VUb1dvcmtlckNvbnRleHQobWVzc2FnZSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKyAgICBtX2Nv
bnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQobWVzc2FnZSwgcmVjZWlwdHMu
cmVsZWFzZSgpKTsKIH0KIAogdm9pZCBXb3JrZXI6OnRlcm1pbmF0ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuaAppbmRleCA4ZTRlYzNhLi43NjAyZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgK
QEAgLTU3LDkgKzU3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFdv
cmtlciogdG9Xb3JrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKICAgICAgICAgdm9pZCBwb3N0TWVz
c2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGVBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRp
bmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAg
ICB2b2lkIHRlcm1pbmF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwKaW5kZXggODQ0
NDhlNi4uZjUzOTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbApAQCAtNDEsNyArNDEs
NyBAQCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
bWVzc2FnZTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0Vf
SkFWQVNDUklQVAotICAgICAgICBbQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGlz
ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykK
KyAgICAgICAgW0N1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpc2VkU2NyaXB0VmFs
dWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSB0cmFuc2Zlckxpc3QpCiAgICAgICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29v
ZCB3YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5v
dyBqdXN0IGFsbG93IHBhc3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCmluZGV4IDg3OThmNTEuLjQ5NmI2NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaApAQCAtMzMsNyArMzMs
OCBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgor
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJs
ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KIApAQCAtNTMsNyArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKSA9IDA7CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJy
YXk+KSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcAppbmRleCBmNjk5OGRiLi4xNjk2YWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNDcsMTUgKzQ3LDE1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBjaGFubmVscykKKyAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlV29ya2VyQ29udGV4
dFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwg
UGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2VyQ29udGV4dFRhc2sobWVzc2Fn
ZSwgY2hhbm5lbHMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2Vy
Q29udGV4dFRhc2sobWVzc2FnZSwgcmVjZWlwdHMpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykK
KyAgICBNZXNzYWdlV29ya2VyQ29udGV4dFRhc2soUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNl
aXB0cykKICAgICAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgLCBtX2NoYW5uZWxz
KGNoYW5uZWxzKQorICAgICAgICAsIG1fcmVjZWlwdHMocmVjZWlwdHMpCiAgICAgewogICAgIH0K
IApAQCAtNjMsMjcgKzYzLDI3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoc2Ny
aXB0Q29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogICAgICAgICBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyQ29udGV4dCo+KHNj
cmlwdENvbnRleHQpOwotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPSBN
ZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqc2NyaXB0Q29udGV4dCwgbV9jaGFubmVscy5yZWxl
YXNlKCkpOwotICAgICAgICBjb250ZXh0LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKHBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7CisgICAgICAgIE93blB0cjxUcmFuc2Zl
cmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVy
QWxsSW4oKnNjcmlwdENvbnRleHQsIG1fcmVjZWlwdHMucmVsZWFzZSgpKTsKKyAgICAgICAgY29u
dGV4dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0cmFuc2ZlcmFibGVzLnJl
bGVhc2UoKSwgbV9tZXNzYWdlKSk7CiAgICAgICAgIGNvbnRleHQtPnRocmVhZCgpLT53b3JrZXJP
YmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChjb250ZXh0LT5oYXNQ
ZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IG1fY2hhbm5lbHM7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4g
bV9yZWNlaXB0czsKIH07CiAKIGNsYXNzIE1lc3NhZ2VXb3JrZXJUYXNrIDogcHVibGljIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PE1lc3NhZ2VXb3JrZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxz
LCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8TWVzc2FnZVdvcmtlclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJl
Y2VpcHRzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VXb3JrZXJUYXNrKG1lc3NhZ2UsIGNoYW5u
ZWxzLCBtZXNzYWdpbmdQcm94eSkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3Nh
Z2VXb3JrZXJUYXNrKG1lc3NhZ2UsIHJlY2VpcHRzLCBtZXNzYWdpbmdQcm94eSkpOwogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBNZXNzYWdlV29ya2VyVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4g
Y2hhbm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKKyAgICBNZXNz
YWdlV29ya2VyVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwg
UGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzLCBXb3JrZXJNZXNz
YWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCiAgICAgICAgIDogbV9tZXNzYWdlKG1lc3NhZ2Up
Ci0gICAgICAgICwgbV9jaGFubmVscyhjaGFubmVscykKKyAgICAgICAgLCBtX3JlY2VpcHRzKHJl
Y2VpcHRzKQogICAgICAgICAsIG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCiAgICAg
ewogICAgIH0KQEAgLTk0LDEzICs5NCwxMyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXdvcmtl
ck9iamVjdCB8fCBtX21lc3NhZ2luZ1Byb3h5LT5hc2tlZFRvVGVybWluYXRlKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0g
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnNjcmlwdENvbnRleHQsIG1fY2hhbm5lbHMucmVs
ZWFzZSgpKTsKLSAgICAgICAgd29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7CisgICAgICAgIE93blB0cjxU
cmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRy
YW5zZmVyQWxsSW4oKnNjcmlwdENvbnRleHQsIG1fcmVjZWlwdHMucmVsZWFzZSgpKTsKKyAgICAg
ICAgd29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRyYW5z
ZmVyYWJsZXMucmVsZWFzZSgpLCBtX21lc3NhZ2UpKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9tZXNzYWdlOwotICAgIE93blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxl
UmVjZWlwdEFycmF5PiBtX3JlY2VpcHRzOwogICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtX21l
c3NhZ2luZ1Byb3h5OwogfTsKIApAQCAtMjQxLDIxICsyNDEsMjEgQEAgdm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW4KICAgICB0aHJlYWQtPnN0YXJ0KCk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5n
UHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNo
YW5uZWxzKQordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9i
amVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0
cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewotICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2soTWVzc2FnZVdvcmtlclRhc2s6OmNyZWF0ZShtZXNzYWdl
LCBjaGFubmVscywgdGhpcykpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soTWVzc2FnZVdvcmtlclRhc2s6OmNyZWF0ZShtZXNzYWdlLCByZWNlaXB0cywgdGhpcykpOwog
fQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCit2b2lkIFdvcmtlck1lc3NhZ2luZ1By
b3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJl
Y2VpcHRzKQogewogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChtX3dvcmtlclRocmVhZCkgewogICAgICAgICArK21fdW5jb25maXJtZWRNZXNz
YWdlQ291bnQ7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTWVz
c2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5lbHMpKTsKKyAgICAg
ICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhNZXNzYWdlV29ya2VyQ29udGV4
dFRhc2s6OmNyZWF0ZShtZXNzYWdlLCByZWNlaXB0cykpOwogICAgIH0gZWxzZQotICAgICAgICBt
X3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRl
KG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQo
TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSwgcmVjZWlwdHMpKTsKIH0K
IAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250
ZXh0KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3Qg
U3RyaW5nJiBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5oCmluZGV4IDM3MzE0ODAuLmM3NGFiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTU1LDEzICs1NSwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVzZSBtZXRob2RzIGluIHRoZSB3b3Jr
ZXIgb2JqZWN0IHRocmVhZC4pCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckNvbnRl
eHQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtl
ckNvbnRleHQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250
ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRy
PFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3RE
ZXN0cm95ZWQoKTsKIAogICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgV29ya2VyT2JqZWN0
UHJveHkuCiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVzZSBtZXRob2RzIGluIHRoZSB3b3JrZXIg
Y29udGV4dCB0aHJlYWQuKQotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtl
ck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3du
UHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKaW5kZXggMzNlMGJjMy4uN2U1
MDJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaApAQCAt
MzMsOCArMzMsOSBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKKyNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKICNpbmNsdWRlICJX
b3JrZXJSZXBvcnRpbmdQcm94eS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsNyArNDUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3
b3JrZXIgb2JqZWN0LgogICAgIGNsYXNzIFdvcmtlck9iamVjdFByb3h5IDogcHVibGljIFdvcmtl
clJlcG9ydGluZ1Byb3h5IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0
TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
UGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pID0gMDsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5k
aW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggMjRkN2Q5Zi4uMjA5YmIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1NSBAQAorMjAxMS0wNy0yOSAgTHVrZSBaYXJrbyAgPGx1a2V6YXJrb0Bn
bWFpbC5jb20+CisKKyAgICAgICAgTWFrZSBNZXNzYWdlUG9ydCBUcmFuc2ZlcmFibGUuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MjA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBBZGQgV2ViVHJh
bnNmZXJhYmxlLmggYW5kIFdlYlRyYW5zZmVyYWJsZS5jcHAKKyAgICAgICAgLSBSZXBhcmVudCBX
ZWJNZXNzYWdlUG9ydENoYW5uZWwgdG8gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdAorICAgICAgICAt
IEV4dHJhY3QgY29udmVyc2lvbiBmcm9tIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCB0by9mcm9tIE1l
c3NhZ2VQb3J0Q2hhbm5lbCBhcyB0aGUgVHJhbnNmZXJhYmxlLWdlbmVyaWMgZnJvbVdlYi90b1dl
YgorICAgICAgICAtIEV4cG9zZSBmbGF0dGVuUmVjZWlwdExpc3QgZnJvbSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgYW5kIHVzZSB0aGlzIHdoZW4gYSBtZXNzYWdlIG5lZWRzIHRvIGJlIHNlbnQgYWNy
b3NzIGFuIElQQyBjaGFubmVsLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBw
dWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFubmVsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6YXNXZWJNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZXNzYWdlUG9ydENoYW5uZWw6OmlzRmxhdHRlbmFibGUpOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVHJhbnNm
ZXJhYmxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1l
c3NhZ2VQb3J0Q2hhbm5lbC5oLgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVSZWNl
aXB0Ojphc1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5z
ZmVyYWJsZVJlY2VpcHQ6OldlYlRyYW5zZmVyYWJsZVJlY2VpcHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojp+V2ViVHJhbnNmZXJhYmxlUmVjZWlwdCk6CisgICAg
ICAgICogcHVibGljL1dlYldvcmtlci5oOgorICAgICAgICAqIHB1YmxpYy9XZWJXb3JrZXJDbGll
bnQuaDoKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9S
ZW1vdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OnRy
eUdldE1lc3NhZ2VGcm9tUmVtb3RlKToKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWwuaDoKKyAgICAgICAgKiBzcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpmbGF0dGVuUmVjZWlw
dExpc3QpOgorICAgICAgICAqIHNyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcDoKKyAgICAgICAg
KiBzcmMvV2ViVHJhbnNmZXJhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlRy
YW5zZmVyYWJsZVJlY2VpcHQ6OmZyb21XZWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zl
cmFibGVSZWNlaXB0Ojpmcm9tV2ViQWxsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmZXJh
YmxlUmVjZWlwdDo6dG9XZWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVSZWNl
aXB0Ojp0b1dlYkFsbCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckJhc2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VUYXNrKToKKyAgICAgICAg
KiBzcmMvV2ViV29ya2VyQmFzZS5oOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VU
b1dvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpw
b3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xp
ZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3RUYXNrKToKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJXb3JrZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2Vy
SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViV29ya2VySW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgorICAgICAgICAqIHNy
Yy9XZWJXb3JrZXJJbXBsLmg6CisKIDIwMTEtMDctMjggIE5hb2tpIFRha2FubyAgPGhvbnRlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBBZGQgZm9ybSgpIGZ1bmN0aW9uIHRv
IGFjY2VzcyBwYXJlbnQgV2ViRm9ybUVsZW1lbnQgZnJvbSBXZWJGb3JtQ29udHJvbEVsZW1lbnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggY2I5MjNkNS4uNDI4Yjk0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjgwLDYgKzI4MCw3IEBACiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViVGV4dFJ1bi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRocmVhZFNhZmVEYXRh
LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVHJhbnNmZXJhYmxlLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVVJMLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
VVJMRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXIuaCcsCkBA
IC01NjcsNiArNTY4LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN0cmluZy5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dFJ1bi5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViVGhyZWFkU2FmZURhdGEuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlRyYW5z
ZmVyYWJsZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJVUkxMb2FkVGltaW5nLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJVUkxSZXF1ZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oCmluZGV4IDI4OGJkNTUuLmE1YzdhZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hh
bm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQb3J0
Q2hhbm5lbC5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bF9oCiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJUcmFuc2ZlcmFibGUu
aCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOSwx
OSArNDAsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5u
ZWxDbGllbnQ7CiBjbGFzcyBXZWJTdHJpbmc7CiAKLXR5cGVkZWYgV2ViVmVjdG9yPGNsYXNzIFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbCo+IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5OwotCiAvLyBQ
cm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gYSBNZXNzYWdlIFBvcnQgQ2hhbm5lbCBpbXBsZW1lbnRh
dGlvbi4gIFRoZSBvYmplY3Qgb3ducyBpdHNlbGYgYW5kCiAvLyBpcyBzaWduYWxsZWQgdGhhdCBp
dHMgbm90IG5lZWRlZCBhbnltb3JlIHdpdGggdGhlIGRlc3Ryb3koKSBjYWxsLgotY2xhc3MgV2Vi
TWVzc2FnZVBvcnRDaGFubmVsIHsKK2NsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCA6IHB1Ymxp
YyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q2xpZW50KFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVudCopID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVzdHJveSgpID0gMDsKICAgICAvLyBXZWJLaXQgdmVyc2lvbnMgb2YgV2ViQ29yZTo6TWVz
c2FnZVBvcnRDaGFubmVsLgogICAgIHZpcnR1YWwgdm9pZCBlbnRhbmdsZShXZWJNZXNzYWdlUG9y
dENoYW5uZWwqKSA9IDA7CiAgICAgLy8gQ2FsbGVlIHJlY2VpdmVzIG93bmVyc2hpcCBvZiB0aGUg
cGFzc2VkIHZlY3Rvci4KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgV2ViU3Ry
aW5nJiwgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHRyeUdldE1lc3NhZ2UoV2ViU3RyaW5nKiwgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYsIFdlYlRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheSopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdHJ5R2V0TWVz
c2FnZShXZWJTdHJpbmcqLCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmKSA9IDA7CisgICAg
dmlydHVhbCBXZWJNZXNzYWdlUG9ydENoYW5uZWwqIGFzV2ViTWVzc2FnZVBvcnRDaGFubmVsKCkg
eyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0ZsYXR0ZW5hYmxlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgogICAgIH5XZWJNZXNzYWdlUG9ydENoYW5u
ZWwoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggOTZlNmQ1Yi4uZTk1NDk3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2lu
Y2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJUcmFuc2ZlcmFibGUuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7IH0KIApAQCAt
NjQsNiArNjUsMTMgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50
YXRpb24gb2YgdGhlIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KICAgICBXRUJLSVRfQVBJIFdl
YlN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCisgICAgLy8gRmxhdHRlbnMgZmxhdHRlbmFibGUg
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdHMgdG8gdGhlIGdpdmVuIHN0cmluZyByZXByZXNlbnRhdGlv
biBvZiBhCisgICAgLy8gV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLCByZXR1cm5pbmcgYSBuZXcg
cmVwcmVzZW50YXRpb24uIFNldHMgdW5mbGF0dGVuYWJsZUNvdW50T3V0CisgICAgLy8gdG8gdGhl
IG51bWJlciBvZiB1bmZsYXR0ZW5hYmxlIHJlY2VpcHRzIGluIHRoZSBwYXNzZWQtaW4gYXJyYXku
CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViU3RyaW5nIGZsYXR0ZW5SZWNlaXB0TGlzdChjb25z
dCBXZWJTdHJpbmcmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JiByZWNlaXB0cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCog
dW5mbGF0dGVuYWJsZUNvdW50T3V0KTsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAg
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYpOwogICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYg
b3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJU
cmFuc2ZlcmFibGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZmVy
YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZjgxYTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2ZlcmFi
bGUuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
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
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUcmFuc2ZlcmFibGVfaAorI2RlZmluZSBX
ZWJUcmFuc2ZlcmFibGVfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2Vi
VmVjdG9yLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVHJhbnNmZXJhYmxlUmVj
ZWlwdDsKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK3R5cGVkZWYgVmVjdG9yPE93blB0cjxU
cmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OworI2VuZGlm
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWw7
CitjbGFzcyBXZWJTdHJpbmc7CisKK3R5cGVkZWYgV2ViVmVjdG9yPGNsYXNzIFdlYlRyYW5zZmVy
YWJsZVJlY2VpcHQqPiBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CisKK2NsYXNzIFdlYlRy
YW5zZmVyYWJsZVJlY2VpcHQgeworcHVibGljOgorICAgIHZpcnR1YWwgV2ViTWVzc2FnZVBvcnRD
aGFubmVsKiBhc1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNGbGF0dGVuYWJsZSgpIGNvbnN0ID0gMDsKKyNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0
PiBmcm9tV2ViKFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqKTsKKyAgICBzdGF0aWMgV2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdCogdG9XZWIoV2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdCopOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gZnJv
bVdlYkFsbChjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqKTsKKyAgICBzdGF0aWMg
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KiB0b1dlYkFsbChjb25zdCBXZWJDb3JlOjpUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXkqKTsKKyNlbmRpZgorcHJvdGVjdGVkOgorICAgIFdlYlRyYW5z
ZmVyYWJsZVJlY2VpcHQoKSB7IH0KKyAgICAvLyBOb3RlOiBwdXJwb3NlZnVsbHkgbm90IGEgdmly
dHVhbCBkZXN0cnVjdG9yLgorICAgIH5XZWJUcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYldvcmtlci5oCmluZGV4IGQyMDM4NjIuLjQ0OTFjOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5l
IFdlYldvcmtlcl9oCiAKICNpbmNsdWRlICJXZWJNZXNzYWdlUG9ydENoYW5uZWwuaCIKKyNpbmNs
dWRlICJXZWJUcmFuc2ZlcmFibGUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTUyLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCgKICAg
ICAgICAgY29uc3QgV2ViU3RyaW5nJiwKLSAgICAgICAgY29uc3QgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXkmKSA9IDA7CisgICAgICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjbGllbnREZXN0cm95ZWQoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyQ2xpZW50LmgKaW5kZXggZWIyZTYzZS4uYTY5
OWFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2Vy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyQ2xp
ZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNvbW1vbldvcmtlckNsaWVu
dC5oIgogI2luY2x1ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIldlYlRy
YW5zZmVyYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDcsNyArNDgsNyBAQCBj
bGFzcyBXZWJXb3JrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29tbW9uV29ya2VyQ2xpZW50IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCgKICAgICAg
ICAgY29uc3QgV2ViU3RyaW5nJiwKLSAgICAgICAgY29uc3QgV2ViTWVzc2FnZVBvcnRDaGFubmVs
QXJyYXkmKSA9IDA7CisgICAgICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qo
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVu
ZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5j
cHAKaW5kZXggNmU0ZGU0NC4uMWY1YmFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcApAQCAtMTgwLDE3
ICsxODAsOSBAQCB2b2lkIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpwb3N0TWVzc2FnZVRv
UmVtb3RlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubgogICAgICAgICByZXR1cm47CiAKICAg
ICBXZWJTdHJpbmcgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2UtPm1lc3NhZ2UoKS0+dG9XaXJlU3Ry
aW5nKCk7Ci0gICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFu
bmVscyA9IG1lc3NhZ2UtPmNoYW5uZWxzKCk7Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJy
YXkqIHdlYkNoYW5uZWxzID0gMDsKLSAgICBpZiAoY2hhbm5lbHMuZ2V0KCkgJiYgY2hhbm5lbHMt
PnNpemUoKSkgewotICAgICAgICB3ZWJDaGFubmVscyA9IG5ldyBXZWJNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheShjaGFubmVscy0+c2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjaGFubmVscy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsKiBwbGF0Zm9ybUNoYW5uZWwgPSAoKmNoYW5uZWxzKVtpXS0+Y2hh
bm5lbCgpOwotICAgICAgICAgICAgKCp3ZWJDaGFubmVscylbaV0gPSBwbGF0Zm9ybUNoYW5uZWwt
PndlYkNoYW5uZWxSZWxlYXNlKCk7Ci0gICAgICAgICAgICAoKndlYkNoYW5uZWxzKVtpXS0+c2V0
Q2xpZW50KDApOwotICAgICAgICB9Ci0gICAgfQotICAgIG1fd2ViQ2hhbm5lbC0+cG9zdE1lc3Nh
Z2UobWVzc2FnZVN0cmluZywgd2ViQ2hhbm5lbHMpOworICAgIE93blB0cjxXZWJDb3JlOjpUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0gbWVzc2FnZS0+cmVjZWlwdHMoKTsKKyAg
ICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqIHdlYlJlY2VpcHRzID0gV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdDo6dG9XZWJBbGwocmVjZWlwdHMuZ2V0KCkpOworICAgIG1fd2ViQ2hhbm5lbC0+
cG9zdE1lc3NhZ2UobWVzc2FnZVN0cmluZywgd2ViUmVjZWlwdHMpOwogfQogCiBib29sIFBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90ZShPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE+JiByZXN1bHQpCkBAIC0xOTksMjAgKzE5MSwxMiBA
QCBib29sIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90
ZShPd25QdHI8TWVzc2FnZVBvcnRDaGFubgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBX
ZWJTdHJpbmcgbWVzc2FnZTsKLSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSB3ZWJDaGFu
bmVsczsKLSAgICBib29sIHJ2ID0gbV93ZWJDaGFubmVsLT50cnlHZXRNZXNzYWdlKCZtZXNzYWdl
LCB3ZWJDaGFubmVscyk7CisgICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5IHdlYlJlY2Vp
cHRzOworICAgIGJvb2wgcnYgPSBtX3dlYkNoYW5uZWwtPnRyeUdldE1lc3NhZ2UoJm1lc3NhZ2Us
IHdlYlJlY2VpcHRzKTsKICAgICBpZiAocnYpIHsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKLSAgICAgICAgaWYgKHdlYkNoYW5uZWxzLnNpemUoKSkg
ewotICAgICAgICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVs
QXJyYXkod2ViQ2hhbm5lbHMuc2l6ZSgpKSk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHdlYkNoYW5uZWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBwbGF0Zm9ybUNoYW5uZWwgPSBjcmVhdGUod2Vi
Q2hhbm5lbHNbaV0pOwotICAgICAgICAgICAgICAgIHdlYkNoYW5uZWxzW2ldLT5zZXRDbGllbnQo
cGxhdGZvcm1DaGFubmVsLmdldCgpKTsKLSAgICAgICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9
IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3JtQ2hhbm5lbCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KKyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4g
cmVjZWlwdHMgPSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojpmcm9tV2ViQWxsKCZ3ZWJSZWNlaXB0
cyk7CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRNZXNz
YWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShtZXNzYWdlKTsKLSAg
ICAgICAgcmVzdWx0ID0gTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZShzZXJp
YWxpemVkTWVzc2FnZS5yZWxlYXNlKCksIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisgICAgICAgIHJl
c3VsdCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUoc2VyaWFsaXplZE1l
c3NhZ2UucmVsZWFzZSgpLCByZWNlaXB0cy5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIHJldHVy
biBydjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5oCmluZGV4IGY2NzRjZTYuLmI2NmMyZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwu
aApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbF9o
CiAKICNpbmNsdWRlICJXZWJNZXNzYWdlUG9ydENoYW5uZWxDbGllbnQuaCIKKyNpbmNsdWRlICJX
ZWJUcmFuc2ZlcmFibGUuaCIKIAogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA3MTQ5YTRkLi4xMGJi
ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTc5LDQgKzc5LDI1IEBAIFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KCkgY29u
c3QKICAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOwogfQogCitXZWJTdHJpbmcgV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpmbGF0dGVuUmVjZWlwdExpc3QoY29uc3QgV2ViU3RyaW5nJiBtZXNz
YWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYgcmVjZWlwdHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiB1
bmZsYXR0ZW5hYmxlQ291bnQpIHsKKyAgICBzaXplX3QgdW5mbGF0dGVuYWJsZXNGb3VuZCA9IDA7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWNlaXB0cy5zaXplKCk7ICsraSkgeworICAg
ICAgICBpZiAoIXJlY2VpcHRzW2ldLT5pc0ZsYXR0ZW5hYmxlKCkpCisgICAgICAgICAgICArK3Vu
ZmxhdHRlbmFibGVzRm91bmQ7CisgICAgfQorICAgIGlmICh1bmZsYXR0ZW5hYmxlQ291bnQpCisg
ICAgICAgICp1bmZsYXR0ZW5hYmxlQ291bnQgPSB1bmZsYXR0ZW5hYmxlc0ZvdW5kOworICAgIGlm
ICh1bmZsYXR0ZW5hYmxlc0ZvdW5kID09IHJlY2VpcHRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IG1lc3NhZ2U7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gY29yZVJlY2Vp
cHRzID0gYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheShyZWNlaXB0cy5zaXpl
KCkpKTsKKyAgICAvLyBmcm9tV2ViKCkgbWF5IGhhdmUgdW53YW50ZWQgc2lkZS1lZmZlY3RzLCBz
byBvbmx5IGNvbnZlcnQgZmxhdHRlbmFibGUgcmVjZWlwdHMuCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZWNlaXB0cy5zaXplKCk7ICsraSkKKyAgICAgICAgKCpjb3JlUmVjZWlwdHMpW2ld
ID0gcmVjZWlwdHNbaV0tPmlzRmxhdHRlbmFibGUoKQorICAgICAgICAgICAgPyBXZWJUcmFuc2Zl
cmFibGVSZWNlaXB0Ojpmcm9tV2ViKHJlY2VpcHRzW2ldKQorICAgICAgICAgICAgOiBhZG9wdFB0
cihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQqPigwKSk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJlY2VpcHRM
aXN0KG1lc3NhZ2UsICpjb3JlUmVjZWlwdHMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlcklt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5j
cHAKaW5kZXggNGEzMmZiMy4uNWFlMmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJNZXNzYWdl
UG9ydENoYW5uZWwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRyYW5zZmVyYWJsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJUcmFuc2ZlcmFibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjZmMDRjZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJUcmFuc2ZlcmFibGUuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViVHJhbnNmZXJhYmxlLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9y
bU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgorI2luY2x1
ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25Q
dHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYihX
ZWJUcmFuc2ZlcmFibGVSZWNlaXB0KiByZWNlaXB0KQoreworICAgIGlmIChXZWJNZXNzYWdlUG9y
dENoYW5uZWwqIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCA9IHJlY2VpcHQtPmFzV2ViTWVzc2FnZVBv
cnRDaGFubmVsKCkpIHsKKyAgICAgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
PiBwbGF0Zm9ybUNoYW5uZWwgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbCk7CisgICAgICAgIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbC0+c2V0
Q2xpZW50KHBsYXRmb3JtQ2hhbm5lbC5nZXQoKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlUG9y
dENoYW5uZWw6OmNyZWF0ZShwbGF0Zm9ybUNoYW5uZWwpOworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gYWRvcHRQdHIocmVpbnRlcnByZXRfY2FzdDxUcmFuc2Zl
cmFibGVSZWNlaXB0Kj4oMCkpOworfQorCitQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJs
ZVJlY2VpcHRBcnJheT4gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYkFsbChjb25zdCBX
ZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqIHJlY2VpcHRzKQoreworICAgIE93blB0cjxUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+IGltcG9ydGVkUmVjZWlwdHM7CisgICAgaWYgKHJlY2VpcHRz
ICYmIHJlY2VpcHRzLT5zaXplKCkpIHsKKyAgICAgICAgaW1wb3J0ZWRSZWNlaXB0cyA9IGFkb3B0
UHRyKG5ldyBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkocmVjZWlwdHMtPnNpemUoKSkpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY2VpcHRzLT5zaXplKCk7ICsraSkKKyAgICAg
ICAgICAgICgqaW1wb3J0ZWRSZWNlaXB0cylbaV0gPSBmcm9tV2ViKCgqcmVjZWlwdHMpW2ldKTsK
KyAgICB9CisgICAgcmV0dXJuIGltcG9ydGVkUmVjZWlwdHMucmVsZWFzZSgpOworfQorCitXZWJU
cmFuc2ZlcmFibGVSZWNlaXB0KiBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0b1dlYihUcmFuc2Zl
cmFibGVSZWNlaXB0KiByZWNlaXB0KQoreworICAgIGlmIChNZXNzYWdlUG9ydENoYW5uZWwqIG1l
c3NhZ2VQb3J0Q2hhbm5lbCA9IHJlY2VpcHQtPmFzTWVzc2FnZVBvcnRDaGFubmVsKCkpIHsKKyAg
ICAgICAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwqIHBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsID0gbWVzc2FnZVBvcnRDaGFubmVsLT5jaGFubmVsKCk7CisgICAgICAgIFdlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbCogd2ViTWVzc2FnZVBvcnRDaGFubmVsID0gcGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwtPndlYkNoYW5uZWxSZWxlYXNlKCk7CisgICAgICAgIHdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bC0+c2V0Q2xpZW50KDApOworICAgICAgICByZXR1cm4gd2ViTWVzc2FnZVBvcnRDaGFubmVsOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworV2Vi
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KiBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0b1dlYkFs
bChjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqIHJlY2VpcHRzKQorewor
ICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSogZXhwb3J0ZWRSZWNlaXB0cyA9IDA7Cisg
ICAgaWYgKHJlY2VpcHRzICYmIHJlY2VpcHRzLT5zaXplKCkpIHsKKyAgICAgICAgZXhwb3J0ZWRS
ZWNlaXB0cyA9IG5ldyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkocmVjZWlwdHMtPnNpemUo
KSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjZWlwdHMtPnNpemUoKTsgKytp
KQorICAgICAgICAgICAgKCpleHBvcnRlZFJlY2VpcHRzKVtpXSA9IHRvV2ViKCgqcmVjZWlwdHMp
W2ldLmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGV4cG9ydGVkUmVjZWlwdHM7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3Jr
ZXJCYXNlLmNwcAppbmRleCBkNjE4NjcyLi41YTM4ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcApAQCAtMzUyLDI3ICszNTIsMjYgQEAgdm9pZCBX
ZWJXb3JrZXJCYXNlOjpvcGVuRmlsZVN5c3RlbUZvcldvcmtlcihXZWJGaWxlU3lzdGVtOjpUeXBl
IHR5cGUsIGxvbmcgbG9uZwogLy8gV29ya2VyT2JqZWN0UHJveHkgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBXZWJXb3Jr
ZXJCYXNlOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKICAgICBkaXNwYXRjaFRhc2tU
b01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRhc2ssIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3ModGhpcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwgY2hhbm5lbHMpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UtPnRvV2ly
ZVN0cmluZygpLCByZWNlaXB0cykpOwogfQogCiB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RNZXNz
YWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4g
Y2hhbm5lbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRy
PFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAgICAgaWYgKCF0aGlzUHRy
LT5jbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVs
QXJyYXkgd2ViQ2hhbm5lbHMoY2hhbm5lbHMuZ2V0KCkgPyBjaGFubmVscy0+c2l6ZSgpIDogMCk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7ICsraSkgewot
ICAgICAgICB3ZWJDaGFubmVsc1tpXSA9ICgqY2hhbm5lbHMpW2ldLT5jaGFubmVsKCktPndlYkNo
YW5uZWxSZWxlYXNlKCk7Ci0gICAgICAgIHdlYkNoYW5uZWxzW2ldLT5zZXRDbGllbnQoMCk7Cisg
ICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5IHdlYlJlY2VpcHRzKHJlY2VpcHRzLmdldCgp
ID8gcmVjZWlwdHMtPnNpemUoKSA6IDApOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2Vi
UmVjZWlwdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgd2ViUmVjZWlwdHNbaV0gPSBXZWJUcmFu
c2ZlcmFibGVSZWNlaXB0Ojp0b1dlYigoKnJlY2VpcHRzKVtpXS5nZXQoKSk7CiAgICAgfQogCi0g
ICAgdGhpc1B0ci0+Y2xpZW50KCktPnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSwg
d2ViQ2hhbm5lbHMpOworICAgIHRoaXNQdHItPmNsaWVudCgpLT5wb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0KG1lc3NhZ2UsIHdlYlJlY2VpcHRzKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJCYXNlOjpw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmgKaW5kZXggOWVmY2UxNS4u
NWYwOGM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaApA
QCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShXT1JLRVJTKQogCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgog
I2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHku
aCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgpAQCAtNjgsNyArNjksNyBAQCBwdWJs
aWM6CiAgICAgLy8gV2ViQ29yZTo6V29ya2VyT2JqZWN0UHJveHkgbWV0aG9kczoKICAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCgKICAgICAgICAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LAotICAgICAgICBQYXNzT3duUHRyPFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29y
ZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdCgKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmLCBpbnQsIGNv
bnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0KApAQCAtMTIzLDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgIFdlYldvcmtlckJh
c2UqIHRoaXNQdHIsCiAgICAgICAgIFdURjo6U3RyaW5nIG1lc3NhZ2UsCi0gICAgICAgIFBhc3NP
d25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKTsKKyAgICAg
ICAgUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRz
KTsKICAgICBzdGF0aWMgdm9pZCBwb3N0RXhjZXB0aW9uVGFzaygKICAgICAgICAgV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgV2ViV29ya2VyQmFzZSog
dGhpc1B0ciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtl
ckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xp
ZW50SW1wbC5jcHAKaW5kZXggYzE5OGNjZi4uMTE0YjI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKQEAgLTE3NSw3ICsxNzUs
NyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKQog
CiB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KAog
ICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLAotICAgIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgIFBhc3NPd25QdHI8
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKICAgICAvLyBXb3JrZXIudGVy
bWluYXRlKCkgY291bGQgYmUgY2FsbGVkIGZyb20gSlMgYmVmb3JlIHRoZSBjb250ZXh0IGlzIHN0
YXJ0ZWQuCiAgICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKQEAgLTE4NSwxNyArMTg1LDEzIEBA
IHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoCiAg
ICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxs
YmFja1Rhc2soJnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzaywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UtPnRvV2lyZVN0cmlu
ZygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5uZWxzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdHMpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSB3ZWJDaGFu
bmVscyhjaGFubmVscy5nZXQoKSA/IGNoYW5uZWxzLT5zaXplKCkgOiAwKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdlYkNoYW5uZWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbCogd2ViY2hhbm5lbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAo
KmNoYW5uZWxzKVtpXS0+Y2hhbm5lbCgpLT53ZWJDaGFubmVsUmVsZWFzZSgpOwotICAgICAgICB3
ZWJjaGFubmVsLT5zZXRDbGllbnQoMCk7Ci0gICAgICAgIHdlYkNoYW5uZWxzW2ldID0gd2ViY2hh
bm5lbDsKLSAgICB9Ci0gICAgbV93ZWJXb3JrZXItPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0
KG1lc3NhZ2UtPnRvV2lyZVN0cmluZygpLCB3ZWJDaGFubmVscyk7CisgICAgV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5IHdlYlJlY2VpcHRzKHJlY2VpcHRzLmdldCgpID8gcmVjZWlwdHMtPnNp
emUoKSA6IDApOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViUmVjZWlwdHMuc2l6ZSgp
OyArK2kpCisgICAgICAgIHdlYlJlY2VpcHRzW2ldID0gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6
dG9XZWIoKCpyZWNlaXB0cylbaV0uZ2V0KCkpOworICAgIG1fd2ViV29ya2VyLT5wb3N0TWVzc2Fn
ZVRvV29ya2VyQ29udGV4dChtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwgd2ViUmVjZWlwdHMpOwog
fQogCiBib29sIFdlYldvcmtlckNsaWVudEltcGw6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
CkBAIC0yMzYsMjkgKzIzMiwyMCBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnNlbmRNZXNz
YWdlVG9JbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogfQogCiB2b2lkIFdlYldvcmtl
ckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBt
ZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JiBjaGFubmVscykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXkmIHdlYlJlY2VpcHRzKQogewotICAgIE93blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMyOwotICAgIGlmIChjaGFubmVscy5zaXplKCkpIHsK
LSAgICAgICAgY2hhbm5lbHMyID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
KGNoYW5uZWxzLnNpemUoKSkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYW5u
ZWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWw+IHBsYXRmb3JtX2NoYW5uZWwgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUoY2hhbm5lbHNbaV0pOwotICAgICAg
ICAgICAgY2hhbm5lbHNbaV0tPnNldENsaWVudChwbGF0Zm9ybV9jaGFubmVsLmdldCgpKTsKLSAg
ICAgICAgICAgICgqY2hhbm5lbHMyKVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBs
YXRmb3JtX2NoYW5uZWwpOwotICAgICAgICB9Ci0gICAgfQorICAgIE93blB0cjxUcmFuc2ZlcmFi
bGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdl
YkFsbCgmd2ViUmVjZWlwdHMpOwogCiAgICAgaWYgKGN1cnJlbnRUaHJlYWQoKSAhPSBtX3dvcmtl
clRocmVhZElkKSB7CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2so
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzaywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKG1lc3NhZ2UpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFubmVsczIucmVsZWFzZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHRzLnJlbGVhc2UoKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2so
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCB0aGlzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UsIGNoYW5uZWxzMi5yZWxlYXNlKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsIHJlY2VpcHRzLnJlbGVhc2UoKSk7CiB9
CiAKIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KGNvbnN0IFdlYlN0cmluZyYgZXJyb3JNZXNzYWdlLApAQCAtMzY5LDE2ICszNTYsMTQgQEAgdm9p
ZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0VGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb24KIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3Nh
Z2VUb1dvcmtlckNvbnRleHRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7Ci0gICAgV2ViTWVzc2FnZVBvcnRD
aGFubmVsQXJyYXkgd2ViQ2hhbm5lbHMoY2hhbm5lbHMuZ2V0KCkgPyBjaGFubmVscy0+c2l6ZSgp
IDogMCk7CisgICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5IHdlYlJlY2VpcHRzKHJlY2Vp
cHRzLmdldCgpID8gcmVjZWlwdHMtPnNpemUoKSA6IDApOwogCi0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICB3ZWJDaGFubmVsc1tp
XSA9ICgqY2hhbm5lbHMpW2ldLT5jaGFubmVsKCktPndlYkNoYW5uZWxSZWxlYXNlKCk7Ci0gICAg
ICAgIHdlYkNoYW5uZWxzW2ldLT5zZXRDbGllbnQoMCk7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgd2ViUmVjZWlwdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHdlYlJlY2VpcHRz
W2ldID0gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6dG9XZWIoKCpyZWNlaXB0cylbaV0uZ2V0KCkp
OwogCi0gICAgdGhpc1B0ci0+bV93ZWJXb3JrZXItPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0
KG1lc3NhZ2UsIHdlYkNoYW5uZWxzKTsKKyAgICB0aGlzUHRyLT5tX3dlYldvcmtlci0+cG9zdE1l
c3NhZ2VUb1dvcmtlckNvbnRleHQobWVzc2FnZSwgd2ViUmVjZWlwdHMpOwogfQogCiB2b2lkIFdl
YldvcmtlckNsaWVudEltcGw6Ondvcmtlck9iamVjdERlc3Ryb3llZFRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwKQEAgLTM4OSwyNSArMzc0LDIyIEBAIHZvaWQgV2ViV29ya2Vy
Q2xpZW50SW1wbDo6d29ya2VyT2JqZWN0RGVzdHJveWVkVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250CiAgICAgZGVsZXRlIHRoaXNQdHI7CiB9CiAKLXZvaWQgV2ViV29ya2VyQ2xpZW50
SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2soCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsCit2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNs
aWVudEltcGwqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVj
ZWlwdEFycmF5PiByZWNlaXB0cykKIHsKIAogICAgIGlmICh0aGlzUHRyLT5tX3dvcmtlcikgewot
ICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPQotICAgICAgICAgICAgTWVz
c2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmNvbnRleHQsIGNoYW5uZWxzKTsKKyAgICAgICAgT3du
UHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVzID0gVHJhbnNmZXJhYmxlUmVjZWlw
dDo6dHJhbnNmZXJBbGxJbigqY29udGV4dCwgcmVjZWlwdHMpOwogICAgICAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkTWVzc2FnZSA9CiAgICAgICAgICAgICBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKG1lc3NhZ2UpOwotICAgICAgICB0aGlz
UHRyLT5tX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShwb3J0cy5y
ZWxlYXNlKCksCisgICAgICAgIHRoaXNQdHItPm1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KE1lc3Nh
Z2VFdmVudDo6Y3JlYXRlKHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVk
TWVzc2FnZS5yZWxlYXNlKCkpKTsKICAgICB9CiB9CiAKLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1w
bDo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0VGFzaygKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LAordm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29y
a2VyQ2xpZW50SW1wbCogdGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbGluZU51bWJlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtl
ckNsaWVudEltcGwuaAppbmRleCBjMjcwZmZjLi5kYjFkMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCkBAIC0zMyw2ICszMyw4IEBA
CiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgogI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJXZWJXb3JrZXJDbGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0
UHJveHkuaCIKQEAgLTcwLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXJt
aW5hdGVXb3JrZXJDb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3Jr
ZXJDb250ZXh0KAogICAgICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwKLSAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENo
YW5uZWxBcnJheT4gY2hhbm5lbHMpOworICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJv
eWVkKCk7CiAKQEAgLTgwLDcgKzgyLDcgQEAgcHVibGljOgogCiAgICAgLy8gV2ViV29ya2VyQ2xp
ZW50IG1ldGhvZHM6CiAgICAgLy8gVGhlc2UgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiBXZWJLaXQg
dGhyZWFkLgotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0
IFdlYlN0cmluZyYsIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Jik7CisgICAgdmly
dHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiwgY29u
c3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Jik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmLCBpbnQsIGNvbnN0IFdlYlN0
cmluZyYpOwogCiAgICAgLy8gRklYTUU6IHRoZSBiZWxvdyBpcyBmb3IgY29tcGF0aWJpbGl0eSBv
bmx5IGFuZCBzaG91bGQgYmUKQEAgLTEyOCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzayhXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVz
c2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFdl
YkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpOwogICAgIHN0YXRpYyB2
b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZFRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIpOwogCkBAIC0xMzgsNyArMTQwLDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzayhXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RG
OjpTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hh
bm5lbHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyk7CiAg
ICAgc3RhdGljIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0VGFzayhXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogdGhpc1B0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6
U3RyaW5nJiBtZXNzYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViV29ya2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJ
bXBsLmNwcAppbmRleCA2YzlmNDVjLi41NTU2YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcApAQCAtODIsMTggKzgyLDE4IEBAIFdlYkNvbW1vbldv
cmtlckNsaWVudCogV2ViV29ya2VySW1wbDo6Y29tbW9uQ2xpZW50KCkKIHZvaWQgV2ViV29ya2Vy
SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJXb3JrZXJJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVy
YWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzV29y
a2VyQ29udGV4dCgpKTsKICAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0
ID0KICAgICAgICAgc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyQ29udGV4dCo+KGNvbnRleHQp
OwogCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0KLSAgICAgICAgTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmNvbnRleHQsIGNoYW5uZWxzKTsKKyAgICBPd25QdHI8VHJh
bnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPQorICAgICAgICBUcmFuc2ZlcmFibGVSZWNl
aXB0Ojp0cmFuc2ZlckFsbEluKCpjb250ZXh0LCByZWNlaXB0cyk7CiAgICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZE1lc3NhZ2UgPQogICAgICAgICBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKG1lc3NhZ2UpOwogICAgIHdvcmtlckNvbnRleHQt
PmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoCi0gICAgICAgIHBvcnRzLnJlbGVh
c2UoKSwgc2VyaWFsaXplZE1lc3NhZ2UucmVsZWFzZSgpKSk7CisgICAgICAgIHRyYW5zZmVyYWJs
ZXMucmVsZWFzZSgpLCBzZXJpYWxpemVkTWVzc2FnZS5yZWxlYXNlKCkpKTsKICAgICB0aGlzUHRy
LT5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qod29ya2VyQ29udGV4dC0+aGFzUGVuZGlu
Z0FjdGl2aXR5KCkpOwogfQogCkBAIC0xMTYsMjIgKzExNiwxMiBAQCB2b2lkIFdlYldvcmtlcklt
cGw6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKQogfQogCiB2b2lkIFdlYldvcmtlckltcGw6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkmIHdlYkNoYW5uZWxzKQotewotICAgIE93blB0cjxNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4gY2hhbm5lbHM7Ci0gICAgaWYgKHdlYkNoYW5uZWxzLnNpemUoKSkgewot
ICAgICAgICBjaGFubmVscyA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSh3
ZWJDaGFubmVscy5zaXplKCkpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJD
aGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsPiBwbGF0Zm9ybV9jaGFubmVsID0KLSAgICAgICAgICAgICAgICBQbGF0Zm9y
bU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHdlYkNoYW5uZWxzW2ldKTsKLSAgICAgICAgICAg
IHdlYkNoYW5uZWxzW2ldLT5zZXRDbGllbnQocGxhdGZvcm1fY2hhbm5lbC5nZXQoKSk7Ci0gICAg
ICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBsYXRm
b3JtX2NoYW5uZWwpOwotICAgICAgICB9Ci0gICAgfQotCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eSYgd2ViUmVjZWlwdHMpCit7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4g
cmVjZWlwdHMgPSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojpmcm9tV2ViQWxsKCZ3ZWJSZWNlaXB0
cyk7CiAgICAgd29ya2VyVGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzaygKICAgICAgICAgY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBTdHJpbmco
bWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2UoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgU3RyaW5nKG1lc3NhZ2UpLCByZWNlaXB0
cy5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJJbXBsOjp3b3JrZXJPYmplY3REZXN0
cm95ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5oCmluZGV4
IDc5YzljNTQuLmM3YmU3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYldvcmtlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3Jr
ZXJJbXBsLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIC8vIFdlYldvcmtlciBtZXRo
b2RzOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckNvbnRleHQoY29uc3QgV2ViVVJMJiwg
Y29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHRl
cm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViTWVzc2FnZVBvcnRDaGFubmVs
QXJyYXkmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29u
c3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Jik7CiAgICAg
dmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwgdm9pZCBj
bGllbnREZXN0cm95ZWQoKTsKIApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICBXZWJXb3Jr
ZXJJbXBsKiB0aGlzUHRyLAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwKLSAg
ICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5l
bHMpOworICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eT4gcmVjZWlwdHMpOwogCiAgICAgV2ViV29ya2VyQ2xpZW50KiBtX2NsaWVudDsKIH07CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmZmYzM0NS4u
ZDlmOTZlNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA3LTI5ICBMdWtlIFphcmtvICA8bHVrZXphcmtvQGdt
YWlsLmNvbT4KKworICAgICAgICBNYWtlIE1lc3NhZ2VQb3J0IFRyYW5zZmVyYWJsZS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyMDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIFVwZGF0ZSBoZWFk
ZXIgdG8gY29tcGx5IHdpdGggbmV3IGludGVyZmFjZS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaDoKKyAgICAgICAgKFRlc3RXZWJXb3JrZXI6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFRlc3RXZWJXb3JrZXI6OnBvc3RN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorCiAyMDExLTA3LTI3ICBSeXVhbiBDaG9pICA8cnl1YW4u
Y2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBTdHlsZSBib3QgY29tcGxhaW5zIGFib3V0IEVG
TC1zcGVjaWZpYyBmb3J3YXJkIGRlY2xhcmF0aW9uIG5hbWluZy4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaAppbmRleCA3MWJmZmNlLi4xMmUyYzg0IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViV29ya2VyLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYldvcmtlci5oCkBAIC02
MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZWJXb3JrZXIgbWV0aG9kczoKICAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgY29uc3Qg
V2ViS2l0OjpXZWJTdHJpbmcmLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgY29u
c3QgV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYs
IGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpCiAgICAgewogICAgICAgICAvLyBSZWxl
YXNlcyB0aGUgcmVmZXJlbmNlIGhlbGQgZm9yIHdvcmtlciBvYmplY3QuCkBAIC02OSw3ICs2OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpZW50RGVzdHJveWVkKCkgeyB9CiAKICAg
ICAvLyBXZWJXb3JrZXJDbGllbnQgbWV0aG9kczoKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3Nh
Z2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGNvbnN0IFdlYktpdDo6
V2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGludCwg
Y29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50LCBpbnQsIGludCwgaW50LCBjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYsIGludCwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpIHsgfQo=
</data>
<flag name="review"
          id="97656"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103151</attachid>
            <date>2011-08-06 11:38:12 -0700</date>
            <delta_ts>2011-08-06 11:43:55 -0700</delta_ts>
            <desc>New patch with prefixed webkitPostMessage, initMessageEvent</desc>
            <filename>postmessage-patch-sat-1135.patch</filename>
            <type>text/plain</type>
            <size>205903</size>
            <attacher name="Luke Zarko">lukezarko+bugzilla</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZGM0NjlkLi4zODhmMGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDgt
MDYgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgTWVz
c2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gQ2hhbmdlIGluIGVycm9yIG1lc3NhZ2UgdGV4dC4KKyAgICAgICAg
LSBDaGFuZ2UgdG8gaGFuZGxlIGFuZCB0ZXN0IG5ldyBwcmVmaXhlZCB3ZWJraXRQb3N0TWVzc2Fn
ZS4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2Fn
ZS1hcmdzLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnR5
LWRlc2NyaXB0b3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9wcm90b3R5cGUt
aW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLW1h
Yy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBv
c3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisKIDIwMTEtMDgt
MDUgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBM
YXlvdXQgVGVzdCBmYXN0L3hzbC94c2x0LWltcG9ydC1kZXB0aC54bWwgaXMgZmFpbGluZwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1h
cmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9z
dG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKaW5kZXggMDU0ZDkxOC4uNDE2NmNiNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBv
c3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGVzdCB0aGF0IHRo
ZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJp
Z2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNl
ZSBQQVNTIG1lc3NhZ2UgJzEnIHRocm91Z2ggJzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGgg
bWVzc2FnZXMgNC03IHJlY2VpdmVkIGJlbG93LgorVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1l
bnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3Ig
aWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LgogCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcx
JywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1M6IFBvc3Rp
bmcgbWVzc2FnZSAoJzInLCApOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
CkBAIC03LDEyICs3LDI5IEBAIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzQnLCBbb2JqZWN0IERP
TVdpbmRvd10pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3Nh
Z2UgKCc1JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3Rpbmcg
bWVzc2FnZSAoJzYnLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNT
OiBQb3N0aW5nIG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNz
YWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5n
IG1lc3NhZ2UgKCc4JywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IK
K1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJzknLCApOiB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdBJywgW29i
amVjdCBPYmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFT
Uzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnQicsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0MnLCBu
dWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNz
YWdlICgnRCcsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdl
YmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0UnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1l
c3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERP
TSBFeGNlcHRpb24gMTEKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0YnLCBbb2JqZWN0
IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3Rpbmcg
bWVzc2FnZSAoJ0cnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEKK1BBU1M6IHdlYmtpdFBvc3Rp
bmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0p
IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitGQUlMOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2Jq
ZWN0IE1lc3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFu
IGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMjE0NzQ4MzY0OCcsIG51bGwpIGRp
ZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdkb25lJywg
KikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFJlY2VpdmVkIG1lc3NhZ2UgJzQnCiBSZWNl
aXZlZCBtZXNzYWdlICc1JwogUmVjZWl2ZWQgbWVzc2FnZSAnNicKIFJlY2VpdmVkIG1lc3NhZ2Ug
JzcnIHdpdGggMiBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ0InCitSZWNlaXZlZCBtZXNzYWdl
ICdDJworUmVjZWl2ZWQgbWVzc2FnZSAnRCcKK1JlY2VpdmVkIG1lc3NhZ2UgJ0YnIHdpdGggMSBw
b3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3QgTWVzc2FnZVBvcnRdJyB3aXRoIDEgcG9y
dHMuCitSZWNlaXZlZCBtZXNzYWdlICdbb2JqZWN0IE9iamVjdF0nIHdpdGggMSBwb3J0cy4KIFJl
Y2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnCiBSZWNlaXZlZCBtZXNzYWdlICdkb25lJwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdl
LWFyZ3MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3Nh
Z2UtYXJncy5odG1sCmluZGV4IDcyYTI3ZTcuLmJhOWVhNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCkBA
IC0zNSw3ICszNSwxOSBAQCBmdW5jdGlvbiB0cnlQb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25kLCB0
aGlyZCwgc2hvdWxkRmFpbCkgewogICAgfQogfQogCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZGVzY3JpcHRpb24iKS5pbm5lckhUTUwgPSAiVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQg
b2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYg
aXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1lc3NhZ2UgJzEn
IHRocm91Z2ggJzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMgNC03IHJlY2Vp
dmVkIGJlbG93Ljxicj48YnI+IjsKK2Z1bmN0aW9uIHRyeVdlYmtpdFBvc3RNZXNzYWdlKGZpcnN0
LCBzZWNvbmQsIHRoaXJkLCBzaG91bGRGYWlsKSB7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKCF0
aGlyZCkKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXRQb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25k
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2luZG93LndlYmtpdFBvc3RNZXNzYWdlKGZp
cnN0LCBzZWNvbmQsIHRoaXJkKTsKKyAgICAgICAgY29uc29sZS5pbm5lckhUTUwgKz0gKHNob3Vs
ZEZhaWwgPyAiRkFJTCIgOiAiUEFTUyIpICsgIjogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnIiAr
IGZpcnN0ICsgIicsICIgKyBzZWNvbmQgKyAiKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbjxi
cj4iOworICAgfSBjYXRjaCAoZSkgeworICAgICAgICBjb25zb2xlLmlubmVySFRNTCArPSAoc2hv
dWxkRmFpbCA/ICJQQVNTIiA6ICJGQUlMIikgKyAiOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCci
ICsgZmlyc3QgKyAiJywgIiArIHNlY29uZCArICIpOiB0aHJldyBleGNlcHRpb24gIiArIGUgKyAi
PGJyPiI7CisgICB9Cit9CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIp
LmlubmVySFRNTCA9ICJUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cucG9z
dE1lc3NhZ2UgaXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBpcyBub3QgYSBt
ZXNzYWdlIHBvcnQuPGJyPjxicj4iOwogCiB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5l
bDsKIHRyeVBvc3RNZXNzYWdlKCcxJywgMSwgJyonLCB0cnVlKTsKQEAgLTQ1LDYgKzU3LDE5IEBA
IHRyeVBvc3RNZXNzYWdlKCc0Jywgd2luZG93LCAnKicpOyAgLy8gUGFzc2VzIGJlY2F1c2Ugd2lu
ZG93IGhhcyBhICJsZW5ndGgiIGF0dHJpCiB0cnlQb3N0TWVzc2FnZSgnNScsIG51bGwsICcqJyk7
CiB0cnlQb3N0TWVzc2FnZSgnNicsIHZvaWQgMCwgJyonKTsKIHRyeVBvc3RNZXNzYWdlKCc3Jywg
W2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDJdLCAnKicpOwordHJ5V2Via2l0UG9zdE1lc3Nh
Z2UoJzgnLCAxLCAnKicsIHRydWUpOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJzknLCAiIiwgJyon
LCB0cnVlKTsKK3RyeVdlYmtpdFBvc3RNZXNzYWdlKCdBJywgeyB4OiAxIH0sICcqJywgdHJ1ZSk7
Cit0cnlXZWJraXRQb3N0TWVzc2FnZSgnQicsIHdpbmRvdywgJyonKTsgIC8vIFBhc3NlcyBiZWNh
dXNlIHdpbmRvdyBoYXMgYSAibGVuZ3RoIiBhdHRyaWJ1dGUgb2YgdmFsdWUgJzAnLCBzbyBpdCBs
b29rcyBsaWtlIGFuIGFycmF5Cit0cnlXZWJraXRQb3N0TWVzc2FnZSgnQycsIG51bGwsICcqJyk7
Cit0cnlXZWJraXRQb3N0TWVzc2FnZSgnRCcsIHZvaWQgMCwgJyonKTsKK3RyeVdlYmtpdFBvc3RN
ZXNzYWdlKCdFJywgW2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDJdLCAnKicsIHRydWUpOyAv
LyBmYWlsczogdGhvc2UgcG9ydHMgaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJyZWQuCitjaGFu
bmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJ0YnLCBbY2hh
bm5lbC5wb3J0MV0sICcqJyk7Cit0cnlQb3N0TWVzc2FnZSgnRycsIFtjaGFubmVsLnBvcnQxXSwg
JyonLCB0cnVlKTsgLy8gZmFpbHM6IHRoYXQgcG9ydCBoYXMgYWxyZWFkeSBiZWVuIHRyYW5zZmVy
cmVkLgorY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK3RyeVdlYmtpdFBvc3RNZXNzYWdl
KGNoYW5uZWwucG9ydDEsIFtjaGFubmVsLnBvcnQxXSwgJyonKTsKK3RyeVBvc3RNZXNzYWdlKGNo
YW5uZWwucG9ydDIsIFtjaGFubmVsLnBvcnQyXSwgJyonLCB0cnVlKTsgLy8gZmFpbHM6IHBvc3RN
ZXNzYWdlIGRvZXMgbm90IGFsbG93IFRyYW5zZmVyYWJsZSBhcmd1bWVudHMgaW4gbWVzc2FnZSBi
b2RpZXMuCiB0cnlQb3N0TWVzc2FnZSgyMTQ3NDgzNjQ4LCBudWxsLCAnKicpOwogdHJ5UG9zdE1l
c3NhZ2UoJ2RvbmUnLCAnKicpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCBm
MjhhOWI1Li5iOTE4MjEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
d2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTExODMsNiArMTE4Myw3
IEBAIHdpbmRvdy5NZXNzYWdlUG9ydC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCBbZnVuY3Rpb25d
CiB3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLnBvc3RNZXNzYWdlIFtmdW5jdGlvbl0KIHdp
bmRvdy5NZXNzYWdlUG9ydC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25d
CiB3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLnN0YXJ0IFtmdW5jdGlvbl0KK3dpbmRvdy5N
ZXNzYWdlUG9ydC5wcm90b3R5cGUud2Via2l0UG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQogd2luZG93
Lk1pbWVUeXBlIFtvYmplY3QgTWltZVR5cGVDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5NaW1lVHlwZS5w
cm90b3R5cGUgW29iamVjdCBNaW1lVHlwZVByb3RvdHlwZV0KIHdpbmRvdy5NaW1lVHlwZUFycmF5
IFtvYmplY3QgTWltZVR5cGVBcnJheUNvbnN0cnVjdG9yXQpAQCAtMjA4Miw2ICsyMDgzLDcgQEAg
d2luZG93Lldvcmtlci5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCBbZnVuY3Rpb25dCiB3aW5kb3cu
V29ya2VyLnByb3RvdHlwZS5wb3N0TWVzc2FnZSBbZnVuY3Rpb25dCiB3aW5kb3cuV29ya2VyLnBy
b3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyIFtmdW5jdGlvbl0KIHdpbmRvdy5Xb3JrZXIucHJv
dG90eXBlLnRlcm1pbmF0ZSBbZnVuY3Rpb25dCit3aW5kb3cuV29ya2VyLnByb3RvdHlwZS53ZWJr
aXRQb3N0TWVzc2FnZSBbZnVuY3Rpb25dCiB3aW5kb3cuWE1MRG9jdW1lbnQgW3ByaW50ZWQgYWJv
dmUgYXMgd2luZG93LkRvY3VtZW50XQogd2luZG93LlhNTEh0dHBSZXF1ZXN0IFtvYmplY3QgWE1M
SHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5YTUxIdHRwUmVxdWVzdC5ET05FIFtudW1i
ZXJdCkBAIC0yMjgwLDYgKzIyODIsNyBAQCB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90eXBlLnNo
b3dNb2RhbERpYWxvZyBbZnVuY3Rpb25dCiB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90eXBlLnN0
b3AgW2Z1bmN0aW9uXQogd2luZG93LmNvbnN0cnVjdG9yLnByb3RvdHlwZS53ZWJraXRDb252ZXJ0
UG9pbnRGcm9tTm9kZVRvUGFnZSBbZnVuY3Rpb25dCiB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90
eXBlLndlYmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2RlIFtmdW5jdGlvbl0KK3dpbmRvdy5j
b25zdHJ1Y3Rvci5wcm90b3R5cGUud2Via2l0UG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQogd2luZG93
LmNyeXB0byBbb2JqZWN0IENyeXB0b10KIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIFtm
dW5jdGlvbl0KIHdpbmRvdy5kZWNvZGVVUkkgW2Z1bmN0aW9uXQpAQCAtMjQ3Myw2ICsyNDc2LDcg
QEAgd2luZG93LnVuZGVmaW5lZCBbdW5kZWZpbmVkXQogd2luZG93LnVuZXNjYXBlIFtmdW5jdGlv
bl0KIHdpbmRvdy53ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZSBbZnVuY3Rpb25dCiB3
aW5kb3cud2Via2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUgW2Z1bmN0aW9uXQord2luZG93
LndlYmtpdFBvc3RNZXNzYWdlIFtmdW5jdGlvbl0KIHdpbmRvdy53aW5kb3cgW3ByaW50ZWQgYWJv
dmUgYXMgd2luZG93XQogd2luZG93LmdldFNlbGVjdGlvbigpIFtvYmplY3QgRE9NU2VsZWN0aW9u
XQogd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlIFtmdW5jdGlvbl0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQKaW5kZXggMmFmNjc0NS4uYzU4OTU2NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlw
dG9ycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQKQEAgLTUzOSw2ICs1MzksNyBAQCBQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAndG9TdHJpbmcnKSBp
cyB1bmRlZmluZWQuCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93
LCAndmFsdWVPZicpIGlzIHVuZGVmaW5lZC4KIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3aW5kb3csICd3ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZScpIGlzIHVu
ZGVmaW5lZC4KIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICd3
ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZScpIGlzIHVuZGVmaW5lZC4KK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICd3ZWJraXRQb3N0TWVzc2FnZScp
IGlzIHVuZGVmaW5lZC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVy
aXRhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhl
cml0YW5jZS1leHBlY3RlZC50eHQKaW5kZXggODNjZWNmNC4uOGI4M2NmYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQu
dHh0CkBAIC03OTksNiArNzk5LDggQEAgUEFTUyBpbm5lci53ZWJraXRDb252ZXJ0UG9pbnRGcm9t
Tm9kZVRvUGFnZS5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIud2Via2l0Q29udmVydFBvaW50
RnJvbU5vZGVUb1BhZ2UuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndl
YmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2RlLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5l
ci53ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlz
IHRydWUKK1BBU1MgaW5uZXIud2Via2l0UG9zdE1lc3NhZ2UuaXNJbm5lciBpcyB0cnVlCitQQVNT
IGlubmVyLndlYmtpdFBvc3RNZXNzYWdlLmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFT
UyBpbm5lci53aW5kb3cuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndpbmRvdy5jb25zdHJ1
Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJn
cy1leHBlY3RlZC50eHQKaW5kZXggNWVjZTg0MS4uNGVhNjE3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1l
c3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSw0IEBACi1UZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5k
b3cucG9zdE1lc3NhZ2UgaXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBpcyBu
b3QgYSBtZXNzYWdlIHBvcnQuIFlvdSBzaG91bGQgc2VlIFBBU1MgbWVzc2FnZSAnMScgdGhyb3Vn
aCAnNycsIGZvbGxvd2VkIGJ5ICdkb25lJywgd2l0aCBtZXNzYWdlcyA0LTcgcmVjZWl2ZWQgYmVs
b3cuCitUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cucG9zdE1lc3NhZ2Ug
aXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBpcyBub3QgYSBtZXNzYWdlIHBv
cnQuCiAKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzEnLCAxKTogdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdAogUEFT
UzogUG9zdGluZyBtZXNzYWdlICgnMicsICk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1l
c3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKQEAgLTcsMTIgKzcsMjgg
QEAgUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNCcsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzUnLCBudWxsKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNicsIHVu
ZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2Fn
ZSAoJzcnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJzgnLCAx
KTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQg
bXVzdCBiZSBhbiBvYmplY3QKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJzknLCApOiB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlcmFibGVBcnJheSBhcmd1bWVudCBtdXN0
IGJlIGFuIG9iamVjdAorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnQScsIFtvYmplY3Qg
T2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyYWJsZUFycmF5IGFy
Z3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3Nh
Z2UgKCdCJywgW29iamVjdCBET01XaW5kb3ddKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgor
UEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnQycsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdEJywgdW5kZWZpbmVkKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgn
RScsIFtvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBvcnRdKTogdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMQorUEFTUzog
d2Via2l0UG9zdGluZyBtZXNzYWdlICgnRicsIFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90
IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnRycsIFtvYmplY3Qg
TWVzc2FnZVBvcnRdKTogdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMQorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnW29iamVjdCBN
ZXNzYWdlUG9ydF0nLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNl
cHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29i
amVjdCBNZXNzYWdlUG9ydF0pOiB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJS
OiBET00gRXhjZXB0aW9uIDI1CiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcyMTQ3NDgzNjQ4Jywg
bnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAo
J2RvbmUnLCAqKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUmVjZWl2ZWQgbWVzc2FnZSAn
NCcKIFJlY2VpdmVkIG1lc3NhZ2UgJzUnCiBSZWNlaXZlZCBtZXNzYWdlICc2JwogUmVjZWl2ZWQg
bWVzc2FnZSAnNycgd2l0aCAyIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnQicKK1JlY2VpdmVk
IG1lc3NhZ2UgJ0MnCitSZWNlaXZlZCBtZXNzYWdlICdEJworUmVjZWl2ZWQgbWVzc2FnZSAnRicg
d2l0aCAxIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBNZXNzYWdlUG9ydF0nIHdp
dGggMSBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnCiBSZWNlaXZlZCBtZXNz
YWdlICdkb25lJwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13
aW4vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93
LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CmluZGV4IDVlY2U4NDEuLjRlYTYxN2YgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdl
LWFyZ3MtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGVzdCB0aGF0IHRoZSBzZWNvbmQg
YXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4g
ZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1l
c3NhZ2UgJzEnIHRocm91Z2ggJzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMg
NC03IHJlY2VpdmVkIGJlbG93LgorVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2lu
ZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMg
bm90IGEgbWVzc2FnZSBwb3J0LgogCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBi
ZSBhbiBvYmplY3QKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzInLCApOiB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0
CkBAIC03LDEyICs3LDI4IEBAIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzQnLCBbb2JqZWN0IERP
TVdpbmRvd10pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3Nh
Z2UgKCc1JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3Rpbmcg
bWVzc2FnZSAoJzYnLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNT
OiBQb3N0aW5nIG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNz
YWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5n
IG1lc3NhZ2UgKCc4JywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyYWJs
ZUFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0CitQQVNTOiB3ZWJraXRQb3N0aW5nIG1l
c3NhZ2UgKCc5JywgKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJhYmxlQXJy
YXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2Fn
ZSAoJ0EnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFu
c2ZlcmFibGVBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZQorUEFTUzogd2Vi
a2l0UG9zdGluZyBtZXNzYWdlICgnQicsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0MnLCBudWxsKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgn
RCcsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBv
c3RpbmcgbWVzc2FnZSAoJ0UnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQ
b3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNl
cHRpb24gMTEKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0YnLCBbb2JqZWN0IE1lc3Nh
Z2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2Fn
ZSAoJ0cnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5W
QUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVz
c2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBu
b3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1l
c3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdKTogdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQogUEFTUzogUG9zdGluZyBtZXNzYWdl
ICgnMjE0NzQ4MzY0OCcsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQ
b3N0aW5nIG1lc3NhZ2UgKCdkb25lJywgKikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFJl
Y2VpdmVkIG1lc3NhZ2UgJzQnCiBSZWNlaXZlZCBtZXNzYWdlICc1JwogUmVjZWl2ZWQgbWVzc2Fn
ZSAnNicKIFJlY2VpdmVkIG1lc3NhZ2UgJzcnIHdpdGggMiBwb3J0cy4KK1JlY2VpdmVkIG1lc3Nh
Z2UgJ0InCitSZWNlaXZlZCBtZXNzYWdlICdDJworUmVjZWl2ZWQgbWVzc2FnZSAnRCcKK1JlY2Vp
dmVkIG1lc3NhZ2UgJ0YnIHdpdGggMSBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3Qg
TWVzc2FnZVBvcnRdJyB3aXRoIDEgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICcyMTQ3NDgzNjQ4
JwogUmVjZWl2ZWQgbWVzc2FnZSAnZG9uZScKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhl
cml0YW5jZS1leHBlY3RlZC50eHQKaW5kZXggNTU2MzcxMy4uZWNjZGQ3ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRh
bmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CkBAIC04MjksNiArODI5LDgg
QEAgUEFTUyBpbm5lci53ZWJraXRJREJUcmFuc2FjdGlvbi5pc0lubmVyIGlzIHRydWUKIFBBU1Mg
aW5uZXIud2Via2l0SURCVHJhbnNhY3Rpb24uY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBG
QUlMIGlubmVyLndlYmtpdEluZGV4ZWREQi5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFs
c2UuCiBGQUlMIGlubmVyLndlYmtpdEluZGV4ZWREQi5jb25zdHJ1Y3Rvci5pc0lubmVyIHNob3Vs
ZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVyLndlYmtpdFBvc3RNZXNzYWdlLmlzSW5u
ZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIud2Via2l0UG9zdE1lc3Nh
Z2UuY29uc3RydWN0b3IuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgogUEFTUyBp
bm5lci53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlu
bmVyLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRy
dWUKIFBBU1MgaW5uZXIud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0uaXNJbm5lciBpcyB0cnVlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDc1ZTQ1YzguLjBiODFmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC01ODksNiArNTg5LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9Ub3Vj
aC5jcHAKICAgICBkb20vVG91Y2hFdmVudC5jcHAKICAgICBkb20vVG91Y2hMaXN0LmNwcAorICAg
IGRvbS9UcmFuc2ZlcmFibGUuY3BwCisgICAgZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuY3BwCiAg
ICAgZG9tL1RyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwCiAgICAgZG9tL1RyYXZlcnNhbC5jcHAK
ICAgICBkb20vVHJlZVNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdiMjk3NWUuLmZjNWIwN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMDQgQEAKKzIwMTEtMDgtMDYgIEx1a2UgWmFya28gIDxsdWtl
emFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgTWVzc2FnZVBvcnQgVHJhbnNmZXJhYmxl
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIw
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBT
dHJ1Y3R1cmVkIENsb25lIGFsZ29yaXRobSBkZXNjcmliZXMgYW4gaW50ZXJmYWNlIGZvciBUcmFu
c2ZlcmFibGUgb2JqZWN0cworICAgICAgICAoaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dl
Yi1hcHBzL2N1cnJlbnQtd29yay9jb21wbGV0ZS9jb21tb24tZG9tLWludGVyZmFjZXMuaHRtbCN0
cmFuc2ZlcmFibGUtb2JqZWN0cykuCisgICAgICAgIEN1cnJlbnRseSB0aGUgb25seSBvZmZpY2lh
bCBUcmFuc2ZlcmFibGUgb2JqZWN0IGlzIHRoZSBNZXNzYWdlUG9ydCwgYnV0CisgICAgICAgIEFy
cmF5QnVmZmVycyBhcmUgZXhwZWN0ZWQgdG8gYmUgc2FuY3Rpb25lZCBhcyBzdWNoIHNvb24uCisK
KyAgICAgICAgLSBBZGQgVHJhbnNmZXJhYmxlLmgvY3BwIGFuZCBUcmFuc2ZlcmFibGVSZWNlaXB0
LmgvY3BwCisgICAgICAgIC0gQ3JlYXRlIG5ldyBjbGFzc2VzIFRyYW5zZmVyYWJsZSBhbmQgVHJh
bnNmZXJhYmxlUmVjZWlwdC4KKyAgICAgICAgICAgIC0gQ29udHJvbCBvZiBhIFRyYW5zZmVyYWJs
ZSBvYmplY3QgY2FuIGJlIHRyYW5zZmVycmVkIG91dCwgeWllbGRpbmcgYQorICAgICAgICAgICAg
ICBUcmFuc2ZlcmFibGVSZWNlaXB0LgorICAgICAgICAgICAgLSBBIFRyYW5zZmVyYWJsZVJlY2Vp
cHQgY2FuIHRoZW4gYmUgdHJhbnNmZXJyZWQgaW4sIHlpZWxkaW5nIGEgVHJhbnNmZXJhYmxlLgor
ICAgICAgICAgICAgLSBNZXNzYWdlUG9ydCBpcyByZXBhcmVudGVkIHRvIFRyYW5zZmVyYWJsZSBh
bmQgTWVzc2FnZVBvcnRDaGFubmVsIGlzCisgICAgICAgICAgICAgIHJlcGFyZW50ZWQgdG8gVHJh
bnNmZXJhYmxlUmVjZWlwdC4KKyAgICAgICAgLSBJbnN0ZWFkIG9mIHBhc3NpbmcgYXJvdW5kIGEg
U2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpdGggYQorICAgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5IChmb3IsIGVnLCB3ZWJraXRQb3N0TWVzc2FnZSksIGluc3RlYWQgYQorICAgICAgICAg
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpcyBwYWlyZWQgd2l0aCBhIFRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheS4KKyAgICAgICAgICAgIC0gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpbGwgdXNlIG9i
amVjdCByZWZlcmVuY2VzIGluc3RlYWQgb2YgY2xvbmVzIGZvcgorICAgICAgICAgICAgICBvYmpl
Y3RzIGluIHRoZSB0cmFuc2ZlciBsaXN0LgorICAgICAgICAgICAgLSBUaGUgVjggU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIHNvbWV0aW1lcyBuZWVkcyB0byBiZSBzZW50IGFjcm9zcyBhbiBJUEMKKyAg
ICAgICAgICAgICAgYm91bmRhcnkuIEluIHRoaXMgY2FzZSBzb21lIFRyYW5zZmVyYWJsZVJlY2Vp
cHRzIHdpdGhvdXQgc3BlY2lhbCBjbG9uaW5nCisgICAgICAgICAgICAgIHNlbWFudGljcyAoZWcs
IG5vbi1NZXNzYWdlUG9ydHMsIHdoaWNoIHNlbmQgYWNyb3NzIHJvdXRpbmcgaW5mb3JtYXRpb24p
CisgICAgICAgICAgICAgIHdpbGwgbmVlZCB0byBiZSBmbGF0dGVuZWQuIFRoaXMgcGF0Y2ggZXhw
b3NlcyBhbiBpbnRlcmZhY2UgZm9yIHN1Y2ggYW4KKyAgICAgICAgICAgICAgb3BlcmF0aW9uLgor
ICAgICAgICAtIE1vZGlmeSBJREwgZ2VuZXJhdG9ycyBmb3IgU2VyaWFsaXplZFNjcmlwdFZhbHVl
IHRvIHJlcXVpcmUgYW5kIHBhc3MgdHJhbnNmZXIKKyAgICAgICAgICBsaXN0cyB0byB0aGUgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIGNvbnN0cnVjdG9yLgorICAgICAgICAtIFJlcGFyZW50ZWQgSlND
J3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIHRvIFRocmVhZFNhZmVSZWZDb3VudGVkLgorICAgICAg
ICAtIFRoZSBvbGQgcG9zdE1lc3NhZ2UgaXMgcHJlc2VydmVkIHdpdGggdGhhdCBuYW1lOyB3ZWJr
aXRQb3N0TWVzc2FnZSBoYW5kbGVzCisgICAgICAgICAgVHJhbnNmZXJhYmxlcyBvdGhlciB0aGFu
IE1lc3NhZ2VQb3J0cyBhbmQgYWxsb3dzIHRoZXNlIFRyYW5zZmVyYWJsZXMgdG8KKyAgICAgICAg
ICBhcHBlYXIgaW4gdGhlIG1lc3NhZ2UgYmVpbmcgcG9zdGVkLiAoRGl0dG8gZm9yIGluaXRNZXNz
YWdlRXZlbnQuKQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ldGFQb3N0TWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3c6OndlYmtpdFBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OndlYmtpdFBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U01lc3NhZ2VFdmVudDo6cG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6bWV0YUluaXRNZXNzYWdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OndlYmtpdEluaXRNZXNzYWdl
RXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6d2Via2l0UG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmlsbFRyYW5zZmVyYWJsZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZl
VHJhbnNmZXJhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNUcmFuc2ZlcmFibGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNv
cmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlcjo6cG9zdE1lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXb3JrZXI6OndlYmtpdFBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1
ZTo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxp
emVyOjpDbG9uZVNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVy
Ojppbml0aWFsaXplV2l0aFRyYW5zZmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNl
cmlhbGl6ZXI6OnN0YXJ0T2JqZWN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVE
ZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJp
YWxpemVyOjpDbG9uZURlc2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6b3BlblRyYW5zZmVyYWJsZUFycmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZVRvVjhDb252
ZXJ0ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlNlcmlhbGl6ZXI6OlNlcmlhbGl6ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6U2VyaWFsaXplcjo6aW5pdGlhbGl6ZU9i
amVjdFBvb2wpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OkRlc2VyaWFsaXplcjo6
RGVzZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpEZXNlcmlhbGl6
ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpEZXNlcmlh
bGl6ZXI6OmluaXRpYWxpemVPYmplY3RQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmZsYXR0ZW5SZWNlaXB0TGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6
OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6Ondl
YmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWV0
YVBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGVk
aWNhdGVkV29ya2VyQ29udGV4dDo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29yR2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Om1ldGFJbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjptZXRhUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4TWVzc2FnZVBvcnQ6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0VHJhbnNmZXJhYmxlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9OYXRp
dmVUcmFuc2ZlcmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOFRyYW5zZmVyYWJsZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3Jr
ZXI6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXI6Ondl
YmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6
CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6
OmluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjptZXNz
YWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OnRyYW5zZmVyYWJsZSk6
CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpkYXRhRGVw
ZW5kZW5jaWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6dHJhbnNmZXJhYmxl
cyk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6CisgICAgICAgICogZG9tL01lc3Nh
Z2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnRyYW5zZmVyT3V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojphc01lc3NhZ2VQb3J0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojppc1RyYW5zZmVyQ2xvc2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Ojppc0VudGFuZ2xlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6aXNDbG9uZWQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAg
ICAgICogZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZVBvcnRDaGFubmVsOjp0cmFuc2ZlckluKToKKyAgICAgICAgKiBkb20vTWVzc2Fn
ZVBvcnRDaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OmFz
TWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5l
bDo6aXNGbGF0dGVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6
OkV2ZW50RGF0YTo6cmVjZWlwdHMpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpzdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQb3BTdGF0ZUV2ZW50OjpkYXRhRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiBkb20vVHJhbnNm
ZXJhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2ZlcmFibGU6OnRyYW5z
ZmVyQWxsT3V0KToKKyAgICAgICAgKiBkb20vVHJhbnNmZXJhYmxlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VHJhbnNmZXJhYmxlOjphc01lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZmVyYWJsZTo6flRyYW5zZmVyYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2ZlcmFibGU6OlRyYW5zZmVyYWJsZSk6CisgICAgICAgICogZG9tL1RyYW5zZmVyYWJsZVJlY2Vp
cHQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwuCisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKToKKyAg
ICAgICAgKiBkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6On5UcmFuc2ZlcmFibGVSZWNlaXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmFzTWVzc2FnZVBvcnRDaGFubmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6OlRyYW5zZmVyYWJsZVJlY2VpcHQp
OgorICAgICAgICAqIHAycC9QZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdlVGltZXI6OlBvc3RNZXNz
YWdlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1lcjo6ZXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
c3RvcmFnZS9JREJDdXJzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dmFsdWVE
ZXBlbmRlbmNpZXMpOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2Fn
ZSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg6CisgICAgICAg
ICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDoKKyAgICAgICAgKiB3b3JrZXJz
L1NoYXJlZFdvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29ubmVj
dEV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5oOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRl
eHRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpNZXNzYWdlV29ya2VyQ29u
dGV4dFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpw
ZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyVGFzazo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJUYXNrOjpNZXNzYWdlV29ya2VyVGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyVGFzazo6cGVyZm9ybVRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RN
ZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oOgorCiAyMDEx
LTA4LTA1ICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQ6IGNoYW5nZSBhbiBpbnN0YW5jZSBvZiBpc0ltcG9ydFJ1bGUoKSB0
aGF0IHdhcyBvdmVybG9va2VkIGluIGNvbW1pdCA5MjQ0OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDU2MzhiYmMuLjQ4OWUxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMTMwNCw2ICsxMzA0LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL1RleHRFdmVudElucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hMaXN0LmggXAorCVNvdXJjZS9XZWJD
b3JlL2RvbS9UcmFuc2ZlcmFibGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJh
YmxlLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuaCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1RyYW5zZm9ybVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3Jt
U291cmNlTGlieHNsdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjQxMjk5OC4uMDRlZDQ5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTU2Niw3ICs1NjYsOCBAQCBfX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRF
dmVudEMxRVA3TlNFdmVudAogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMHNl
cnZlUGVuZGluZ1JlcXVlc3RzRU5TXzIwUmVzb3VyY2VMb2FkUHJpb3JpdHlFCiBfX1pON1dlYkNv
cmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkRVBOU181
RnJhbWVFUE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnRFUktOU18xNVJlc291
cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29yZTIxU1ZHRG9jdW1lbnRFeHRlbnNpb25zMjFzYW1wbGVB
bmltYXRpb25BdFRpbWVFUktOM1dURjZTdHJpbmdFUE5TXzE0U1ZHU01JTEVsZW1lbnRFZAotX19a
TjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWUxMWRlc2VyaWFsaXplRVBLMTVPcGFxdWVK
U0NvbnRleHRQUEsxM09wYXF1ZUpTVmFsdWUKK19fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlw
dFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVlSlNDb250ZXh0UFBLMTNPcGFxdWVKU1ZhbHVl
UE4zV1RGNlZlY3RvcklOM0pTQzdKU1ZhbHVlRUxtMUVFRQorX19aTjdXZWJDb3JlMjFTZXJpYWxp
emVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBLMTVPcGFxdWVKU0NvbnRleHRQSzEzT3BhcXVlSlNWYWx1
ZVBTNl9QTjNXVEY2VmVjdG9ySU4zSlNDN0pTVmFsdWVFTG0xRUVFYgogX19aTjdXZWJDb3JlMjFT
ZXJpYWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBLMTVPcGFxdWVKU0NvbnRleHRQSzEzT3BhcXVl
SlNWYWx1ZVBTNl8KIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlQzFFUk4zV1RG
NlZlY3RvckloTG0wRUVFCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQxRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA1ZDViNzlhLi4wYzRhZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xMDE3LDYgKzEwMTcsOCBAQAogICAgICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50LmgnLAog
ICAgICAgICAgICAgJ2RvbS9UZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0RXZlbnRJbnB1
dFR5cGUuaCcsCisgICAgICAgICAgICAnZG9tL1RyYW5zZmVyYWJsZS5oJywKKyAgICAgICAgICAg
ICdkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oJywKICAgICAgICAgICAgICdkb20vVUlFdmVudC5o
JywKICAgICAgICAgICAgICdkb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oJywKICAgICAgICAgICAg
ICdkb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaCcsCkBAIC01NDA3LDYgKzU0MDksMTAgQEAKICAg
ICAgICAgICAgICdkb20vVG91Y2hFdmVudC5oJywKICAgICAgICAgICAgICdkb20vVG91Y2hMaXN0
LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1RvdWNoTGlzdC5oJywKKyAgICAgICAgICAgICdkb20v
VHJhbnNmZXJhYmxlLmNwcCcsCisgICAgICAgICAgICAnZG9tL1RyYW5zZmVyYWJsZS5oJywKKyAg
ICAgICAgICAgICdkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAnLAorICAgICAgICAgICAgJ2Rv
bS9UcmFuc2ZlcmFibGVSZWNlaXB0LmgnLAogICAgICAgICAgICAgJ2RvbS9UcmFuc2Zvcm1Tb3Vy
Y2UuaCcsCiAgICAgICAgICAgICAnZG9tL1RyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwJywKICAg
ICAgICAgICAgICdkb20vVHJhbnNmb3JtU291cmNlUXQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXgg
NzAwOGMyMS4uOGNlNjMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTU1Myw2ICs1NTMsOCBAQCBTT1VS
Q0VTICs9IFwKICAgICBkb20vVG91Y2guY3BwIFwKICAgICBkb20vVG91Y2hFdmVudC5jcHAgXAog
ICAgIGRvbS9Ub3VjaExpc3QuY3BwIFwKKyAgICBkb20vVHJhbnNmZXJhYmxlLmNwcCBcCisgICAg
ZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuY3BwIFwKICAgICBkb20vVHJhdmVyc2FsLmNwcCBcCiAg
ICAgZG9tL1RyZWVTY29wZS5jcHAgXAogICAgIGRvbS9UcmVlV2Fsa2VyLmNwcCBcCkBAIC0xNTQ1
LDYgKzE1NDcsOCBAQCBIRUFERVJTICs9IFwKICAgICBkb20vVG91Y2guaCBcCiAgICAgZG9tL1Rv
dWNoRXZlbnQuaCBcCiAgICAgZG9tL1RvdWNoTGlzdC5oIFwKKyAgICBkb20vVHJhbnNmZXJhYmxl
LmggXAorICAgIGRvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmggXAogICAgIGRvbS9UcmFuc2Zvcm1T
b3VyY2UuaCBcCiAgICAgZG9tL1RyYXZlcnNhbC5oIFwKICAgICBkb20vVHJlZURlcHRoTGltaXQu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYTU4MzA2NC4uOTA5YmY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDgyNCwxMiArNDgyNCwxNiBAQAogCQlC
NzM0QjE4MTExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjczNEIxODAxMTlCOTkxMTAwNjU4
N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmNwcCAqLzsgfTsKIAkJQjczNEIxODMxMTlCOTkxRDAwNjU4
N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNzM0QjE4MjExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIu
aCAqLzsgfTsKIAkJQjc3NkQ0M0QxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzc2RDQzQzEx
MDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCAqLzsgfTsKKwkJQjg2MTg3MkMxM0Q4
RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCODYxODcyQTEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNm
ZXJhYmxlLmNwcCAqLzsgfTsKKwkJQjg2MTg3MkQxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVy
YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg2
MTg3MkIxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI4ODVFOEQ0MTFFMDZERDIwMDlGRkJG
NCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8q
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgKi87IH07CiAJCUI4ODVFOEQ1MTFF
MDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4ODVFOEQzMTFFMDZERDIw
MDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQlCOERCREI0QjEzMEIwRjhBMDBGNUNEQjEgLyog
U2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCOERCREI0NzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29t
bWFuZC5jcHAgKi87IH07CiAJCUI4REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rp
b25Db21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovOyB9
OwogCQlCOERCREI0RDEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERC
REI0OTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgKi87
IH07CiAJCUI4REJEQjRFMTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21t
YW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERC
REI0QTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovOyB9
OworCQlCOEUwRThGRTEzRUM3RTREMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhFMEU4RkQxM0VD
N0UwQzAwQzEzNzIwIC8qIFRyYW5zZmVyYWJsZVJlY2VpcHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCOEUwRThGRjEzRUM3RTU1MDBDMTM3MjAg
LyogVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCOEUwRThGQzEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxl
UmVjZWlwdC5jcHAgKi87IH07CiAJCUJBQ0YyOTAxMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRU
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkFD
RjI5MDAxM0IyQTBENTAwNzgxRjkwIC8qIExheW91dFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMwMEYwMDQwRTBBMTg1NTAwRkQwNEUz
IC8qIERPTUZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDBFRkZFMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggKi87IH07CiAJCUJDMDBG
MDA1MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEVGRkYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZp
bGUubW0gKi87IH07CkBAIC0xMTUwMywxMiArMTE1MDcsMTYgQEAKIAkJQjczNEIxODIxMTlCOTkx
RDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEZvbnRUcmFuc2NvZGVyLmg7IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBF
QyAvKiBQcmludENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJp
bnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3NzZENDNDMTEwNDUy
NzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJpbnRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjg2MTg3MkExM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2ZlcmFibGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCODYxODcyQjEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJh
YmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZmVyYWJsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCODg1RThEMjExRTA2REQyMDA5RkZCRjQgLyog
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4ODVFOEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI4REJEQjQ3MTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21t
YW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldFNlbGVjdGlv
bkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0ODEzMEIw
RjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZXRTZWxlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI4REJEQjQ5MTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERC
REI0QTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4RTBFOEZDMTNFQzdFMEMwMEMxMzcyMCAv
KiBUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCOEUwRThGRDEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2ZlcmFibGVSZWNlaXB0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJBQ0YyOTAwMTNCMkEwRDUwMDc4MUY5MCAvKiBM
YXlvdXRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRUeXBl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0
RTMgLyogRE9NRmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRF
MyAvKiBET01GaWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RE9NRmlsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMDA3LDYgKzIwMDE1
LDEwIEBACiAJCQkJOTMzQTE0MkQwQjdEMTg4NjAwQTUzRkZEIC8qIFRleHRFdmVudC5oICovLAog
CQkJCTkzM0ExNDJDMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuaWRsICovLAogCQkJCUE3
N0I0MTlGMTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0RXZlbnRJbnB1dFR5cGUuaCAqLywKKwkJCQlC
ODYxODcyQjEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmggKi8sCisJCQkJQjg2MTg3
MkExM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgKi8sCisJCQkJQjhFMEU4RkQx
M0VDN0UwQzAwQzEzNzIwIC8qIFRyYW5zZmVyYWJsZVJlY2VpcHQuaCAqLywKKwkJCQlCOEUwRThG
QzEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAgKi8sCiAJCQkJNURC
MUJDNjgxMDcxNUE2NDAwRUZBQTQ5IC8qIFRyYW5zZm9ybVNvdXJjZS5oICovLAogCQkJCTVEQjFC
QzY5MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCAqLywKIAkJ
CQk4NTRGRTcyQzBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmNwcCAqLywKQEAgLTIzMTc2
LDYgKzIzMTg4LDggQEAKIAkJCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0NDYxM0IwMENENjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRTBFRkFDOTA2MDA5RDBDQUYgLyogVGltaW5n
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUI4NjE4NzJEMTNEOEVDNDkwMDhCODc0RiAv
KiBUcmFuc2ZlcmFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUI4RTBFOEZFMTNFQzdFNEQwMEMx
MzcyMCAvKiBUcmFuc2ZlcmFibGVSZWNlaXB0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFD
NDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5RTkxMUNFMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1P
cGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDA2LDYgKzI2MDIwLDggQEAKIAkJCQk3
NTUzQ0ZFOTEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzMzA5RUE0MDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFNDQ2MTNBRjBDRDYzMzEwMDBGQURBNzUgLyogVGltZVJhbmdlcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCODYxODcyQzEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNm
ZXJhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI4RTBFOEZGMTNFQzdFNTUwMEMxMzcyMCAv
KiBUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUMzMEVG
ODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0OTRCQzQwRDEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNm
b3JtYXRpb25NYXRyaXhDRy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA3NDQ4MTc2Li41MzkxMzc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC02OTQsMTYgKzY5NCwxNiBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxE
aWFsb2coRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBoYW5kbGVyLnJldHVyblZhbHVlKCk7
CiB9CiAKLUpTVmFsdWUgSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBKU1ZhbHVlIG1ldGFQb3N0TWVzc2FnZShFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NV2lu
ZG93KiB3aW5kb3csIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3IpCiB7Ci0gICAgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0KKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0
cmFuc2ZlcmFibGVzOworICAgIEpTVmFsdWVBcnJheSB2YWx1ZUFycmF5OworICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPiAyKQorICAgICAgICBmaWxsVHJhbnNmZXJhYmxlQXJyYXkoZXhl
YywgZXhlYy0+YXJndW1lbnQoMSksIHRyYW5zZmVyYWJsZXMsIHZhbHVlQXJyYXksIHVzZUxlZ2Fj
eUJlaGF2aW9yKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCi0gICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9ydHM7Ci0g
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDIpCi0gICAgICAgIGZpbGxNZXNzYWdlUG9y
dEFycmF5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCBtZXNzYWdlUG9ydHMpOworICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgJnZhbHVlQXJyYXksIHVzZUxlZ2FjeUJl
aGF2aW9yLCBUaHJvd2luZyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtNzEyLDEyICs3MTIsMjIgQEAgSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS0+
cG9zdE1lc3NhZ2UobWVzc2FnZSwgJm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBhY3RpdmVE
T01XaW5kb3coZXhlYyksIGVjKTsKKyAgICB3aW5kb3ctPmltcGwoKS0+cG9zdE1lc3NhZ2UobWVz
c2FnZSwgJnRyYW5zZmVyYWJsZXMsIHRhcmdldE9yaWdpbiwgYWN0aXZlRE9NV2luZG93KGV4ZWMp
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQogCitKU1ZhbHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIG1ldGFQb3N0TWVzc2FnZShleGVjLCB0aGlzLCB0cnVl
KTsKK30KKworSlNWYWx1ZSBKU0RPTVdpbmRvdzo6d2Via2l0UG9zdE1lc3NhZ2UoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIHJldHVybiBtZXRhUG9zdE1lc3NhZ2UoZXhlYywgdGhpcywgZmFsc2Up
OworfQorCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRUaW1lb3V0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGlt
cGwoKS0+ZG9jdW1lbnQoKSA/IGltcGwoKS0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMjIyMjM1My4uNWYwNGMx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC00NCw3ICs0NCwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEpTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBv
c3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBoYW5kbGVQb3N0
TWVzc2FnZShleGVjLCBpbXBsKCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShleGVj
LCBpbXBsKCksIHRydWUpOworfQorCitKU0M6OkpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Ojp3ZWJraXRQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1
cm4gaGFuZGxlUG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgpLCBmYWxzZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA0Mzk2NjRhLi42YzJiNDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC00
NCwzOCArNDQsNTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTTWVzc2FnZUV2
ZW50Ojpwb3J0cyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJh
eSogcG9ydHMgPSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPihpbXBsKCkpLT5wb3J0cygpOwot
ICAgIGlmICghcG9ydHMgfHwgcG9ydHMtPmlzRW1wdHkoKSkKKyAgICBNZXNzYWdlRXZlbnQqIGV2
ZW50ID0gc3RhdGljX2Nhc3Q8TWVzc2FnZUV2ZW50Kj4oaW1wbCgpKTsKKyAgICBUcmFuc2ZlcmFi
bGVBcnJheSogdHJhbnNmZXJhYmxlcyA9IGV2ZW50LT50cmFuc2ZlcmFibGVzKCk7CisgICAgaWYg
KCF0cmFuc2ZlcmFibGVzIHx8IHRyYW5zZmVyYWJsZXMtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwotCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBvcnRzLT5zaXplKCk7IGkrKykKLSAgICAgICAgbGlzdC5hcHBl
bmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgKCpwb3J0cylbaV0uZ2V0KCkpKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZmVyYWJsZXMtPnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSAoKnRyYW5zZmVyYWJsZXMpW2ldLmdl
dCgpLT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgICAgICBsaXN0LmFwcGVuZCh0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCgpLCBtZXNzYWdlUG9ydCkpOworICAgIH0KICAgICByZXR1cm4gY29uc3Ry
dWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGxpc3QpOwogfQogCi1KU0M6OkpTVmFsdWUg
SlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgSlNDOjpKU1ZhbHVlIG1ldGFJbml0TWVzc2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU01lc3NhZ2VFdmVudCoganNFdmVudCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvcikKIHsK
ICAgICBjb25zdCBVU3RyaW5nJiB0eXBlQXJnID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyk7CiAgICAgYm9vbCBjYW5CdWJibGVBcmcgPSBleGVjLT5hcmd1bWVudCgxKS50b0Jvb2xl
YW4oZXhlYyk7CiAgICAgYm9vbCBjYW5jZWxhYmxlQXJnID0gZXhlYy0+YXJndW1lbnQoMikudG9C
b29sZWFuKGV4ZWMpOwotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
QXJnID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQo
MykpOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlczsKKyAgICBP
d25QdHI8SlNWYWx1ZUFycmF5PiB2YWx1ZUFycmF5OworICAgIGlmICghZXhlYy0+YXJndW1lbnQo
NykuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICB0cmFuc2ZlcmFibGVzID0gYWRvcHRQ
dHIobmV3IFRyYW5zZmVyYWJsZUFycmF5KTsKKyAgICAgICAgdmFsdWVBcnJheSA9IGFkb3B0UHRy
KG5ldyBKU1ZhbHVlQXJyYXkpOworICAgICAgICBmaWxsVHJhbnNmZXJhYmxlQXJyYXkoZXhlYywg
ZXhlYy0+YXJndW1lbnQoNyksICp0cmFuc2ZlcmFibGVzLCAqdmFsdWVBcnJheSwgdXNlTGVnYWN5
QmVoYXZpb3IpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDMpLCB2YWx1ZUFycmF5LmdldCgpLCB1c2VMZWdhY3lCZWhhdmlvciwgVGhy
b3dpbmcpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgY29uc3QgVVN0cmluZyYgb3JpZ2luQXJnID0gZXhlYy0+YXJndW1l
bnQoNCkudG9TdHJpbmcoZXhlYyk7CiAgICAgY29uc3QgVVN0cmluZyYgbGFzdEV2ZW50SWRBcmcg
PSBleGVjLT5hcmd1bWVudCg1KS50b1N0cmluZyhleGVjKTsKICAgICBET01XaW5kb3cqIHNvdXJj
ZUFyZyA9IHRvRE9NV2luZG93KGV4ZWMtPmFyZ3VtZW50KDYpKTsKLSAgICBPd25QdHI8TWVzc2Fn
ZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoNykuaXNV
bmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBtZXNzYWdlUG9ydHMgPSBhZG9wdFB0cihuZXcg
TWVzc2FnZVBvcnRBcnJheSk7Ci0gICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDcpLCAqbWVzc2FnZVBvcnRzKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQogCi0g
ICAgTWVzc2FnZUV2ZW50KiBldmVudCA9IHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVudCo+KHRoaXMt
PmltcGwoKSk7Ci0gICAgZXZlbnQtPmluaXRNZXNzYWdlRXZlbnQodXN0cmluZ1RvQXRvbWljU3Ry
aW5nKHR5cGVBcmcpLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIGRhdGFBcmcsIHVzdHJp
bmdUb1N0cmluZyhvcmlnaW5BcmcpLCB1c3RyaW5nVG9TdHJpbmcobGFzdEV2ZW50SWRBcmcpLCBz
b3VyY2VBcmcsIG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCkpOworICAgIE1lc3NhZ2VFdmVudCogZXZl
bnQgPSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPihqc0V2ZW50LT5pbXBsKCkpOworICAgIGV2
ZW50LT5pbml0TWVzc2FnZUV2ZW50KHVzdHJpbmdUb0F0b21pY1N0cmluZyh0eXBlQXJnKSwgY2Fu
QnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCB1c3RyaW5nVG9TdHJpbmcob3JpZ2lu
QXJnKSwgdXN0cmluZ1RvU3RyaW5nKGxhc3RFdmVudElkQXJnKSwgc291cmNlQXJnLCB0cmFuc2Zl
cmFibGVzLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKK0pTQzo6
SlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChKU0M6OkV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICByZXR1cm4gbWV0YUluaXRNZXNzYWdlRXZlbnQoZXhlYywgdGhpcywgdHJ1
ZSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VF
dmVudChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gbWV0YUluaXRNZXNzYWdl
RXZlbnQoZXhlYywgdGhpcywgZmFsc2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
CmluZGV4IGFjMDZjNmEuLjI0NmFhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2Fz
dC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KIApAQCAtNTcsMTUgKzU4LDIxIEBAIHZvaWQgSlNNZXNzYWdlUG9ydDo6dmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIAogSlNDOjpKU1ZhbHVlIEpTTWVzc2Fn
ZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBo
YW5kbGVQb3N0TWVzc2FnZShleGVjLCBpbXBsKCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVz
c2FnZShleGVjLCBpbXBsKCksIHRydWUpOwogfQogCi12b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QXJy
YXkmIHBvcnRBcnJheSkKK0pTQzo6SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojp3ZWJraXRQb3N0TWVz
c2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICAvLyBDb252ZXJ0IGZyb20gdGhlIHBh
c3NlZC1pbiBKUyBhcnJheS1saWtlIG9iamVjdCB0byBhIE1lc3NhZ2VQb3J0QXJyYXkuCisgICAg
cmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSwgZmFsc2UpOworfQorCit2b2lk
IGZpbGxUcmFuc2ZlcmFibGVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBUcmFuc2ZlcmFibGVBcnJheSYgdHJhbnNmZXJhYmxlQXJyYXksIEpTVmFsdWVBcnJh
eSYgdmFsdWVBcnJheSwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvcikKK3sKKyAgICAvLyBDb252ZXJ0
IGZyb20gdGhlIHBhc3NlZC1pbiBKUyBhcnJheS1saWtlIG9iamVjdCB0byBhIFRyYW5zZmVyYWJs
ZUFycmF5LgogICAgIC8vIEFsc28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMg
NC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9m
IHRoZSBIVE1MNSBzcGVjLgogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0g
ICAgICAgIHBvcnRBcnJheS5yZXNpemUoMCk7CisgICAgICAgIHRyYW5zZmVyYWJsZUFycmF5LnJl
c2l6ZSgwKTsKKyAgICAgICAgdmFsdWVBcnJheS5yZXNpemUoMCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTg1LDE0ICs5MiwzNCBAQCB2b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5KEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKwogICAgICAgICAvLyBWYWxpZGF0aW9uIG9m
IE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4x
NS4KLSAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gdG9NZXNzYWdlUG9ydCh2YWx1
ZSk7Ci0gICAgICAgIGlmICghcG9ydCkgeworICAgICAgICBSZWZQdHI8VHJhbnNmZXJhYmxlPiB0
cmFuc2ZlcmFibGUgPSB0b05hdGl2ZVRyYW5zZmVyYWJsZSh2YWx1ZSk7CisgICAgICAgIGlmICgh
dHJhbnNmZXJhYmxlIHx8ICh1c2VMZWdhY3lCZWhhdmlvciAmJiAhdHJhbnNmZXJhYmxlLT5hc01l
c3NhZ2VQb3J0KCkpKSB7CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBwb3J0QXJyYXkuYXBwZW5kKHBvcnQu
cmVsZWFzZSgpKTsKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJyYXkuYXBwZW5kKHRyYW5zZmVyYWJs
ZS5yZWxlYXNlKCkpOworICAgICAgICB2YWx1ZUFycmF5LmFwcGVuZCh2YWx1ZSk7CiAgICAgfQog
fQogCitQYXNzUmVmUHRyPFRyYW5zZmVyYWJsZT4gdG9OYXRpdmVUcmFuc2ZlcmFibGUoSlNDOjpK
U1ZhbHVlIHZhbHVlKQoreworICAgIFJlZlB0cjxUcmFuc2ZlcmFibGU+IG91dFZhbHVlID0gdG9N
ZXNzYWdlUG9ydCh2YWx1ZSk7CisgICAgaWYgKG91dFZhbHVlKQorICAgICAgICByZXR1cm4gb3V0
VmFsdWUucmVsZWFzZSgpOworICAgIC8vIFdlJ2xsIHJldHVybiBudWxsIGlmIHZhbHVlIGlzIG5v
dCBUcmFuc2ZlcmFibGUgaW4gYW55IGNhc2UuCisgICAgcmV0dXJuIG91dFZhbHVlLnJlbGVhc2Uo
KTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlNUcmFuc2ZlcmFibGUoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRyYW5zZmVyYWJsZSogdmFsdWUp
Cit7CisgICAgaWYgKE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9IHZhbHVlLT5hc01lc3NhZ2VQ
b3J0KCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBv
cnQpOworICAgIC8vIFRoaXMgdHlwZWNhc2Ugc2hvdWxkIGFsd2F5cyBiZSB0b3RhbC4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKaW5kZXggODM5NmFlMS4uMjkyNmFkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaApAQCAtMzIs
NiArMzIsOCBAQAogI2RlZmluZSBKU01lc3NhZ2VQb3J0Q3VzdG9tX2gKIAogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVk
ZSAiVHJhbnNmZXJhYmxlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMzksMjYgKzQxLDMxIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLSAgICAvLyBIZWxwZXIgZnVu
Y3Rpb24gd2hpY2ggcHVsbHMgdGhlIHZhbHVlcyBvdXQgb2YgYSBKUyBzZXF1ZW5jZSBhbmQgaW50
byBhIE1lc3NhZ2VQb3J0QXJyYXkuCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxz
IHRoZSB2YWx1ZXMgb3V0IG9mIGEgSlMgc2VxdWVuY2UgYW5kIGludG8gYSBUcmFuc2ZlcmFibGVB
cnJheSwgbWlycm9yaW5nIHRoZXNlIGludG8gYSBKU1ZhbHVlQXJyYXkuCiAgICAgLy8gQWxzbyB2
YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0LjEuMTMgYW5kIDQuMS4xNSBvZiB0
aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMuCiAgICAg
Ly8gTWF5IGdlbmVyYXRlIGFuIGV4Y2VwdGlvbiB2aWEgdGhlIHBhc3NlZCBFeGVjU3RhdGUuCi0g
ICAgdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgTWVzc2FnZVBvcnRBcnJheSYpOworICAgIHZvaWQgZmlsbFRyYW5zZmVyYWJsZUFycmF5KEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBUcmFuc2ZlcmFibGVBcnJheSYsIEpTVmFsdWVB
cnJheSYsIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3IpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9u
IHRvIGNvbnZlcnQgZnJvbSBKUyBwb3N0TWVzc2FnZSBhcmd1bWVudHMgdG8gV2ViQ29yZSBwb3N0
TWVzc2FnZSBhcmd1bWVudHMuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5l
IEpTQzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgVCog
aW1wbCkKKyAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBUKiBpbXBsLCBib29sIHVzZUxlZ2FjeUJlaGF2aW9yKQogICAgIHsKLSAg
ICAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwotICAgICAgICBmaWxsTWVzc2FnZVBvcnRBcnJh
eShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgcG9ydEFycmF5KTsKKyAgICAgICAgVHJhbnNmZXJh
YmxlQXJyYXkgdHJhbnNmZXJhYmxlQXJyYXk7CisgICAgICAgIEpTVmFsdWVBcnJheSB2YWx1ZVJl
ZkFycmF5OworICAgICAgICBmaWxsVHJhbnNmZXJhYmxlQXJyYXkoZXhlYywgZXhlYy0+YXJndW1l
bnQoMSksIHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1ZVJlZkFycmF5LCB1c2VMZWdhY3lCZWhhdmlv
cik7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVy
biBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5h
cmd1bWVudCgwKSwgJnZhbHVlUmVmQXJyYXksIHVzZUxlZ2FjeUJlaGF2aW9yLCBUaHJvd2luZyk7
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBK
U0M6OmpzVW5kZWZpbmVkKCk7CiAKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
ICAgIGltcGwtPnBvc3RNZXNzYWdlKG1lc3NhZ2UsICZwb3J0QXJyYXksIGVjKTsKKyAgICAgICAg
aW1wbC0+cG9zdE1lc3NhZ2UobWVzc2FnZSwgJnRyYW5zZmVyYWJsZUFycmF5LCBlYyk7CiAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgICAgIHJldHVybiBKU0M6OmpzVW5k
ZWZpbmVkKCk7CiAgICAgfQogCisgICAgUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRvTmF0aXZl
VHJhbnNmZXJhYmxlKEpTQzo6SlNWYWx1ZSk7CisgICAgSlNDOjpKU1ZhbHVlIHRvSlNUcmFuc2Zl
cmFibGUoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRyYW5zZmVyYWJsZSop
OwogfQogI2VuZGlmIC8vIEpTTWVzc2FnZVBvcnRDdXN0b21faApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCmluZGV4IDI3NTgwYWUuLjE5MDQ0NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKQEAgLTQx
LDcgKzQxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNDOjpKU1ZhbHVlIEpTV29ya2Vy
Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gaGFuZGxl
UG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgpKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uo
ZXhlYywgaW1wbCgpLCB0cnVlKTsKK30KKworSlNDOjpKU1ZhbHVlIEpTV29ya2VyOjp3ZWJraXRQ
b3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gaGFuZGxlUG9z
dE1lc3NhZ2UoZXhlYywgaW1wbCgpLCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNXb3JrZXJDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRl
KiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCmluZGV4
IDRmNTFkZGIuLmViYzU4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRW
YWx1ZS5jcHAKQEAgLTEwMCwxNCArMTAwLDE0IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmlzRnVuY3Rp
b24oKSBjb25zdAogICAgIHJldHVybiBnZXRDYWxsRGF0YShtX3ZhbHVlLmdldCgpLCBjYWxsRGF0
YSkgIT0gQ2FsbFR5cGVOb25lOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlh
bGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQorUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0
YXRlLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvciwg
U2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7Ci0gICAgcmV0dXJuIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCksIHRocm93
RXhjZXB0aW9ucyk7CisgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNj
cmlwdFN0YXRlLCBqc1ZhbHVlKCksIHRyYW5zZmVyTGlzdCwgdXNlTGVnYWN5QmVoYXZpb3IsIHRo
cm93RXhjZXB0aW9ucyk7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6
ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUs
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQorU2NyaXB0VmFsdWUgU2Ny
aXB0VmFsdWU6OmRlc2VyaWFsaXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiB2YWx1ZSwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewotICAgIHJldHVybiBTY3JpcHRWYWx1
ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCB2YWx1ZS0+ZGVzZXJpYWxpemUoc2NyaXB0U3Rh
dGUsIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHRocm93RXhjZXB0aW9ucykp
OworICAgIHJldHVybiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCB2YWx1
ZS0+ZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIHRyYW5zZmVyTGlzdCwgdGhyb3dFeGNlcHRpb25zKSk7CiB9CiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKaW5kZXgg
ZmFkZTgzMC4uYjdkZWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1
ZS5oCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTY3JpcHRWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92
YWx1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6
ZShTY3JpcHRTdGF0ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0gICAg
c3RhdGljIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplKFNjcmlwdFN0YXRlKiwgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKKyAgICBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplKFNjcmlwdFN0YXRlKiwgSlNW
YWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3IsIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgc3RhdGljIFNjcmlwdFZhbHVlIGRlc2Vy
aWFsaXplKFNjcmlwdFN0YXRlKiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgSlNWYWx1ZUFycmF5
KiB0cmFuc2Zlckxpc3QsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CiAKICAg
ICBzdGF0aWMgU2NyaXB0VmFsdWUgdW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDhiYWY5MTku
LjIyMGM2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpTRmlsZS5o
IgogI2luY2x1ZGUgIkpTRmlsZUxpc3QuaCIKICNpbmNsdWRlICJKU0ltYWdlRGF0YS5oIgorI2lu
Y2x1ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJKU05hdmlnYXRvci5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTk2LDggKzk3
LDkgQEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAqCiAgKiBJbml0aWFsIHZlcnNpb24gd2Fz
IDEuCiAgKiBWZXJzaW9uIDIuIGFkZGVkIHRoZSBPYmplY3RSZWZlcmVuY2VUYWcgYW5kIHN1cHBv
cnQgZm9yIHNlcmlhbGl6YXRpb24gb2YgY3ljbGljIGdyYXBocy4KKyAqIFZlcnNpb24gMy4gYWRk
ZWQgdHJhbnNmZXIgbGlzdHMuCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgQ3VycmVu
dFZlcnNpb24gPSAyOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBDdXJyZW50VmVyc2lvbiA9
IDM7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IFRlcm1pbmF0b3JUYWcgPSAweEZGRkZGRkZG
Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBTdHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsK
IApAQCAtMjUwLDkgKzI1Miw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgYm9vbCB3
cml0ZUxpdHRsZUVuZGlhbihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uCiAKIGNsYXNzIENs
b25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlIHNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IFZlY3Rvcjx1aW50OF90PiYgb3V0KQorICAgIHN0YXRpYyBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSBzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlQXJyYXkq
IHRyYW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvciwgVmVjdG9yPHVpbnQ4X3Q+JiBv
dXQpCiAgICAgewotICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihleGVjLCBvdXQp
OworICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihleGVjLCB0cmFuc2Zlckxpc3Qs
IHVzZUxlZ2FjeUJlaGF2aW9yLCBvdXQpOwogICAgICAgICByZXR1cm4gc2VyaWFsaXplci5zZXJp
YWxpemUodmFsdWUpOwogICAgIH0KIApAQCAtMjY5LDEwICsyNzEsMTMgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBDbG9uZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBWZWN0
b3I8dWludDhfdD4mIG91dCkKKyAgICBDbG9uZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvciwgVmVjdG9y
PHVpbnQ4X3Q+JiBvdXQpCiAgICAgICAgIDogQ2xvbmVCYXNlKGV4ZWMpCiAgICAgICAgICwgbV9i
dWZmZXIob3V0KQogICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmcoIiIs
IDApKQorICAgICAgICAsIG1fdHJhbnNmZXJMaXN0KHRyYW5zZmVyTGlzdCkKKyAgICAgICAgLCBt
X3VzZUxlZ2FjeUJlaGF2aW9yKHVzZUxlZ2FjeUJlaGF2aW9yKQorICAgICAgICAsIG1fbWluaW11
bVZhbGlkUmVmZXJlbmNlKDApCiAgICAgewogICAgICAgICB3cml0ZShDdXJyZW50VmVyc2lvbik7
CiAgICAgfQpAQCAtMjg3LDEzICsyOTIsMzMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlz
SlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIG9iamVjdCkgfHwgb2JqZWN0LT5pbmhlcml0
cygmSlNBcnJheTo6c19pbmZvKTsKICAgICB9CiAKKyAgICBib29sIGluaXRpYWxpemVXaXRoVHJh
bnNmZXJMaXN0KCkKKyAgICB7CisgICAgICAgIGlmICghbV90cmFuc2Zlckxpc3QpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RyYW5z
ZmVyTGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSAoKm1f
dHJhbnNmZXJMaXN0KVtpXTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5n
ZXRPYmplY3QoKTsKKyAgICAgICAgICAgIGlmICghb2JqZWN0KQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIHBhaXI8T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+
IGl0ZXIgPSBtX29iamVjdFBvb2wuYWRkKG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7Cisg
ICAgICAgICAgICAvLyBBbGwgb2JqZWN0cyBpbiB0aGUgdHJhbnNmZXIgbGlzdCBtdXN0IGJlIHVu
aXF1ZS4KKyAgICAgICAgICAgIGlmICghaXRlci5zZWNvbmQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmQodmFsdWUpOworICAgICAg
ICB9CisgICAgICAgIGlmIChtX3VzZUxlZ2FjeUJlaGF2aW9yKQorICAgICAgICAgICAgbV9taW5p
bXVtVmFsaWRSZWZlcmVuY2UgPSBtX29iamVjdFBvb2wuc2l6ZSgpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKICAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9i
amVjdCkKICAgICB7CiAgICAgICAgIC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBoIHJlY29uc3Ry
dWN0aW9uCiAgICAgICAgIHBhaXI8T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBt
X29iamVjdFBvb2wuYWRkKG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7CiAgICAgICAgIAog
ICAgICAgICAvLyBIYW5kbGUgZHVwbGljYXRlIHJlZmVyZW5jZXMKLSAgICAgICAgaWYgKCFpdGVy
LnNlY29uZCkgeworICAgICAgICBpZiAoIWl0ZXIuc2Vjb25kICYmIGl0ZXIuZmlyc3QtPnNlY29u
ZCA+PSBtX21pbmltdW1WYWxpZFJlZmVyZW5jZSkgewogICAgICAgICAgICAgd3JpdGUoT2JqZWN0
UmVmZXJlbmNlVGFnKTsKICAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90Pihp
dGVyLmZpcnN0LT5zZWNvbmQpIDwgbV9vYmplY3RQb29sLnNpemUoKSk7CiAgICAgICAgICAgICB3
cml0ZU9iamVjdEluZGV4KGl0ZXIuZmlyc3QtPnNlY29uZCk7CkBAIC02MDYsNiArNjMxLDkgQEAg
cHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCB1aW50MzJf
dCwgSWRlbnRpZmllclJlcEhhc2g+IFN0cmluZ0NvbnN0YW50UG9vbDsKICAgICBTdHJpbmdDb25z
dGFudFBvb2wgbV9jb25zdGFudFBvb2w7CiAgICAgSWRlbnRpZmllciBtX2VtcHR5SWRlbnRpZmll
cjsKKyAgICBKU1ZhbHVlQXJyYXkqIG1fdHJhbnNmZXJMaXN0OworICAgIGJvb2wgbV91c2VMZWdh
Y3lCZWhhdmlvcjsKKyAgICBzaXplX3QgbV9taW5pbXVtVmFsaWRSZWZlcmVuY2U7CiB9OwogCiBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVl
IGluKQpAQCAtNjE4LDYgKzY0NiwxMCBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgIFZlY3RvcjxXYWxrZXJTdGF0ZSwg
MTY+IHN0YXRlU3RhY2s7CiAgICAgV2Fsa2VyU3RhdGUgc3RhdGUgPSBTdGF0ZVVua25vd247CiAg
ICAgSlNWYWx1ZSBpblZhbHVlID0gaW47CisgICAgaWYgKCFpbml0aWFsaXplV2l0aFRyYW5zZmVy
TGlzdCgpKSB7CisgICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIFZhbGlk
YXRpb25FcnJvcjsKKyAgICB9CiAgICAgdW5zaWduZWQgdGlja0NvdW50ID0gdGlja3NVbnRpbE5l
eHRDaGVjaygpOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKQEAg
LTc4MywxMSArODE1LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cmluZyhzdHIuaW1w
bCgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFs
aXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCisgICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3Vs
dCBkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1
ZmZlcikKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyLnNpemUoKSkKICAgICAgICAgICAgIHJl
dHVybiBtYWtlX3BhaXIoanNOdWxsKCksIFVuc3BlY2lmaWVkRXJyb3IpOwotICAgICAgICBDbG9u
ZURlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBidWZmZXIpOwor
ICAgICAgICBDbG9uZURlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywgZ2xvYmFsT2JqZWN0
LCB0cmFuc2Zlckxpc3QsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVyLmlzVmFs
aWQoKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlX3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9u
RXJyb3IpOwogICAgICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCk7CkBAIC04
MzIsMTMgKzg2NCwxNCBAQCBwcml2YXRlOgogICAgICAgICBzaXplX3QgbV9pbmRleDsKICAgICB9
OwogCi0gICAgQ2xvbmVEZXNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKKyAgICBDbG9u
ZURlc2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1
ZmZlcikKICAgICAgICAgOiBDbG9uZUJhc2UoZXhlYykKICAgICAgICAgLCBtX2dsb2JhbE9iamVj
dChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9pc0RPTUdsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3QtPmluaGVyaXRzKCZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvKSkKICAgICAgICAgLCBtX3B0
cihidWZmZXIuZGF0YSgpKQogICAgICAgICAsIG1fZW5kKGJ1ZmZlci5kYXRhKCkgKyBidWZmZXIu
c2l6ZSgpKQogICAgICAgICAsIG1fdmVyc2lvbigweEZGRkZGRkZGKQorICAgICAgICAsIG1fdHJh
bnNmZXJMaXN0KHRyYW5zZmVyTGlzdCkKICAgICB7CiAgICAgICAgIGlmICghcmVhZChtX3ZlcnNp
b24pKQogICAgICAgICAgICAgbV92ZXJzaW9uID0gMHhGRkZGRkZGRjsKQEAgLTExODksNiArMTIy
Miw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgdWludDhfdCogbV9lbmQ7CiAgICAgdW5zaWduZWQg
bV92ZXJzaW9uOwogICAgIFZlY3RvcjxDYWNoZWRTdHJpbmc+IG1fY29uc3RhbnRQb29sOworICAg
IEpTVmFsdWVBcnJheSogbV90cmFuc2Zlckxpc3Q7CiB9OwogCiBEZXNlcmlhbGl6YXRpb25SZXN1
bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkKQEAgLTEyMDEsNiArMTIzNSwxMSBA
QCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkK
ICAgICBXYWxrZXJTdGF0ZSBzdGF0ZSA9IFN0YXRlVW5rbm93bjsKICAgICBKU1ZhbHVlIG91dFZh
bHVlOwogCisgICAgaWYgKG1fdHJhbnNmZXJMaXN0KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV90cmFuc2Zlckxpc3QtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9nY0J1
ZmZlci5hcHBlbmQoKCptX3RyYW5zZmVyTGlzdClbaV0pOworICAgIH0KKwogICAgIHVuc2lnbmVk
IHRpY2tDb3VudCA9IHRpY2tzVW50aWxOZXh0Q2hlY2soKTsKICAgICB3aGlsZSAoMSkgewogICAg
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CkBAIC0xMzM4LDEwICsxMzc3LDE1IEBAIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVy
KQogICAgIG1fZGF0YS5zd2FwKGJ1ZmZlcik7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQor
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gY3Jl
YXRlKGV4ZWMsIHZhbHVlLCAwLCB0cnVlLCBUaHJvd2luZyk7Cit9CisKK1Bhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBib29s
IHVzZUxlZ2FjeUJlaGF2aW9yLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9u
cykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwotICAgIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShleGVjLCB2YWx1ZSwgYnVm
ZmVyKTsKKyAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVy
OjpzZXJpYWxpemUoZXhlYywgdmFsdWUsIHRyYW5zZmVyTGlzdCwgdXNlTGVnYWN5QmVoYXZpb3Is
IGJ1ZmZlcik7CiAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBUaHJvd2luZykKICAgICAgICAg
bWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChleGVjLCBjb2RlKTsKIApA
QCAtMTM2NywxMCArMTQxMSwxNSBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBzdAogCiBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
SlNDb250ZXh0UmVmIG9yaWdpbkNvbnRleHQsIEpTVmFsdWVSZWYgYXBpVmFsdWUsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKKyAgICByZXR1cm4gY3JlYXRlKG9yaWdpbkNvbnRleHQsIGFwaVZh
bHVlLCBleGNlcHRpb24sIDAsIHRydWUpOworfQorCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdp
bkNvbnRleHQsIEpTVmFsdWVSZWYgYXBpVmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgSlNW
YWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3IpCit7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhvcmlnaW5Db250ZXh0KTsKICAgICBBUElFbnRyeVNoaW0g
ZW50cnlTaGltKGV4ZWMpOwogICAgIEpTVmFsdWUgdmFsdWUgPSB0b0pTKGV4ZWMsIGFwaVZhbHVl
KTsKLSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVl
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgdmFsdWUpOworICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIHZhbHVlLCB0cmFuc2Zlckxpc3QsIHVzZUxlZ2FjeUJlaGF2
aW9yLCBUaHJvd2luZyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAg
IGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgZXhl
Yy0+ZXhjZXB0aW9uKCkpOwpAQCAtMTM3OCw3ICsxNDI3LDcgQEAgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJl
ZiBvcmkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIEFTU0VSVChzZXJpYWxpemVkVmFs
dWUpOwotICAgIHJldHVybiBzZXJpYWxpemVkVmFsdWU7CisgICAgcmV0dXJuIHNlcmlhbGl6ZWRW
YWx1ZS5yZWxlYXNlKCk7CiB9CiAKIFN0cmluZyBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRvU3Ry
aW5nKCkKQEAgLTEzODYsMTkgKzE0MzUsMTkgQEAgU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6dG9TdHJpbmcoKQogICAgIHJldHVybiBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemVT
dHJpbmcobV9kYXRhKTsKIH0KIAotSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2Vy
aWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU2Vy
aWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitKU1ZhbHVlIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgU2VyaWFsaXphdGlvbkVy
cm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7Ci0gICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJl
c3VsdCA9IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZShleGVjLCBnbG9iYWxPYmplY3Qs
IG1fZGF0YSk7CisgICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJlc3VsdCA9IENsb25lRGVzZXJp
YWxpemVyOjpkZXNlcmlhbGl6ZShleGVjLCBnbG9iYWxPYmplY3QsIHRyYW5zZmVyTGlzdCwgbV9k
YXRhKTsKICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFRocm93aW5nKQogICAgICAgICBtYXli
ZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKGV4ZWMsIHJlc3VsdC5zZWNvbmQp
OwogICAgIHJldHVybiByZXN1bHQuZmlyc3Q7CiB9CiAKLUpTVmFsdWVSZWYgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25Db250ZXh0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCitKU1ZhbHVlUmVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
ZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmIGRlc3RpbmF0aW9uQ29udGV4dCwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCkKIHsKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGRlc3RpbmF0aW9uQ29udGV4dCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5
U2hpbShleGVjKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemUoZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemUo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB0cmFuc2Zlckxpc3QpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAg
ICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigpKTsKQEAgLTE0
MDksNiArMTQ1OCwyNCBAQCBKU1ZhbHVlUmVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJp
YWxpemUoSlNDb250ZXh0UmVmIGRlc3RpbmF0aW9uQ29udGV4dCwgSgogICAgIHJldHVybiB0b1Jl
ZihleGVjLCB2YWx1ZSk7CiB9CiAKK0pTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNl
cmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRy
YW5zZmVyYWJsZUFycmF5KiB0cmFuc2Zlckxpc3QsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhy
b3dFeGNlcHRpb25zKQoreworICAgIEpTVmFsdWVBcnJheSB0cmFuc2ZlclZhbHVlTGlzdDsKKyAg
ICBpZiAodHJhbnNmZXJMaXN0ICYmICFvcGVuVHJhbnNmZXJhYmxlQXJyYXkoZXhlYywgZ2xvYmFs
T2JqZWN0LCAqdHJhbnNmZXJMaXN0LCB0cmFuc2ZlclZhbHVlTGlzdCkpIHsKKyAgICAgICAgaWYg
KHRocm93RXhjZXB0aW9ucyA9PSBUaHJvd2luZykKKyAgICAgICAgICAgIG1heWJlVGhyb3dFeGNl
cHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoZXhlYywgVmFsaWRhdGlvbkVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiBkZXNlcmlhbGl6ZShl
eGVjLCBnbG9iYWxPYmplY3QsICZ0cmFuc2ZlclZhbHVlTGlzdCwgdGhyb3dFeGNlcHRpb25zKTsK
K30KKworYm9vbCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om9wZW5UcmFuc2ZlcmFibGVBcnJheShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRyYW5zZmVyYWJs
ZUFycmF5JiB0cmFuc2Zlckxpc3QsIEpTVmFsdWVBcnJheSYgdmFsdWVBcnJheSkKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZmVyTGlzdC5zaXplKCk7ICsraSkKKyAgICAgICAg
dmFsdWVBcnJheS5hcHBlbmQodG9KU1RyYW5zZmVyYWJsZShleGVjLCBzdGF0aWNfY2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksIHRyYW5zZmVyTGlzdFtpXS5nZXQoKSkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCiBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBlbXB0eVZhbHVlLCAoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAzZmU0ZTAyLi43NWY5ZTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzEs
MTMgKzMxLDE2IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCit0eXBlZGVmIFZlY3RvcjxKU0M6OkpTVmFsdWUsIDE+IEpTVmFsdWVBcnJheTsK
K2NsYXNzIFRyYW5zZmVyYWJsZTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+
LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsKICAKIGVudW0gU2VyaWFsaXphdGlvblJldHVybkNvZGUg
ewogICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCwKQEAgLTUyLDEwICs1NSwxNCBAQCBlbnVtIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKIAogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCi1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgUmVm
Q291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlvbkVycm9y
TW9kZSA9IFRocm93aW5nKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbik7CisgICAgLy8gSWYgdXNlTGVnYWN5QmVoYXZpb3IgaXMgYXNzZXJ0ZWQsIHRo
ZW4gaXRlbXMgaW4gdHJhbnNmZXJMaXN0IHdpbGwgbm90IGJlIHJlZmVycmVkIHRvIGJ5IG9iamVj
dCByZWZlcmVuY2UgSUQgaW4gdGhlIHNlcmlhbGl6ZWQgdmFsdWUuCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBib29sIHVzZUxlZ2FjeUJlaGF2
aW9yLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbiwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIGJvb2wgdXNlTGVn
YWN5QmVoYXZpb3IpOworICAgIC8vIFRoZXNlIGRlZmF1bHQgdG8gdHJhbnNmZXJMaXN0ID0gMCwg
dXNlTGVnYWN5QmVoYXZpb3IgPSB0cnVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dp
bmcuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAg
IHsKQEAgLTY3LDggKzc0LDExIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b1N0cmluZygpOwog
ICAgIAotICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwotICAg
IEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pOworICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCA9IDAsIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zl
ckxpc3QgPSAwKTsKKyAgICAKKyAgICAvLyBQcmVmZXIgdGhlIGFib3ZlIDo6ZGVzZXJpYWxpemUg
KGFzIHRoaXMgY29uc3RydWN0cyBhIEpTVmFsdWVBcnJheSBhbmQgY2FsbHMgdGhlIG90aGVyIGZ1
bmN0aW9uKS4KKyAgICBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCA9IDAs
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7ICAgICAgCiAKICAgICBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KIApAQCAtNzcsNiArODcs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1heWJlVGhyb3dFeGNlcHRp
b25JZlNlcmlhbGl6YXRpb25GYWlsZWQoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZSk7CiAgICAgc3RhdGljIGJvb2wgc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vz
c2Z1bGx5KFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKKyAgICBzdGF0aWMgYm9vbCBvcGVuVHJh
bnNmZXJhYmxlQXJyYXkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgVHJh
bnNmZXJhYmxlQXJyYXkmLCBKU1ZhbHVlQXJyYXkmKTsKICAgICAKICAgICBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+Jik7CiAgICAgVmVjdG9yPHVuc2lnbmVkIGNo
YXI+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggYjc2ZDY5MC4uZjNhMDQzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI3NDEsNyAr
Mjc0MSw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgJGltcGxJbmNsdWRlc3siJGpv
aW5lZE5hbWUuaCJ9ID0gMTsKICAgICB9IGVsc2lmICgkdHlwZSBlcSAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlIiBvciAkdHlwZSBlcSAiYW55IikgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCJ9ID0gMTsKLSAgICAgICAgcmV0dXJuICIkdmFsdWUgPyAkdmFs
dWUtPmRlc2VyaWFsaXplKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSA6IGpzTnVs
bCgpIjsKKyAgICAgICAgcmV0dXJuICIkdmFsdWUgPyAkdmFsdWUtPmRlc2VyaWFsaXplKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXAtPmRhdGFEZXBlbmRlbmNpZXMoKSkgOiBq
c051bGwoKSI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgIyBEZWZhdWx0LCBpbmNsdWRlIGhlYWRl
ciB3aXRoIHNhbWUgbmFtZS4KICAgICAgICAgJGltcGxJbmNsdWRlc3siSlMkdHlwZS5oIn0gPSAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbQppbmRleCA2YjM3OTBlLi45ZDZkYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjU4Nyw3ICsyNTg3LDcgQEAg
RU5ECiAgICAgICAgICRhdHRyQXR0ciA9ICJzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KCRhdHRyQXR0cikiOwogICAgICAgICBteSAkZ2V0dGVyRnVuYyA9ICRjb2RlR2VuZXJhdG9y
LT5XS19sY2ZpcnN0KCRhdHRyTmFtZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVO
RCk7Ci0gICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5
KHdyYXBwZXIsICIke2F0dHJOYW1lfSIsICR7YXR0ckF0dHJ9LCBpbXBsLT4ke2dldHRlckZ1bmN9
KCkpOworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0
eSh3cmFwcGVyLCAiJHthdHRyTmFtZX0iLCAke2F0dHJBdHRyfSwgaW1wbC0+JHtnZXR0ZXJGdW5j
fSgpLCBpbXBsLT4ke2dldHRlckZ1bmN9RGVwZW5kZW5jaWVzKCkpOwogRU5ECiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAppbmRleCAyZDlkMGNkLi4xN2Y0ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAK
ICNpbmNsdWRlICJJbnQzMkFycmF5LmgiCiAjaW5jbHVkZSAiSW50OEFycmF5LmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCisjaW5jbHVkZSAi
VHJhbnNmZXJhYmxlUmVjZWlwdC5oIgogI2luY2x1ZGUgIlVpbnQxNkFycmF5LmgiCiAjaW5jbHVk
ZSAiVWludDMyQXJyYXkuaCIKICNpbmNsdWRlICJVaW50OEFycmF5LmgiCkBAIC02Myw2ICs2NSw3
IEBACiAjaW5jbHVkZSAiVjhJbnQxNkFycmF5LmgiCiAjaW5jbHVkZSAiVjhJbnQzMkFycmF5Lmgi
CiAjaW5jbHVkZSAiVjhJbnQ4QXJyYXkuaCIKKyNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0Q3VzdG9t
LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VWludDE2QXJyYXkuaCIKICNp
bmNsdWRlICJWOFVpbnQzMkFycmF5LmgiCkBAIC01NzUsMTMgKzU3OCwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIEpTRmFpbHVyZQogICAgIH07CiAKLSAgICBTZXJpYWxpemVyKFdyaXRlciYgd3JpdGVy
LCB2ODo6VHJ5Q2F0Y2gmIHRyeUNhdGNoKQorICAgIFNlcmlhbGl6ZXIoV3JpdGVyJiB3cml0ZXIs
IHY4OjpUcnlDYXRjaCYgdHJ5Q2F0Y2gsIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwg
Ym9vbCB1c2VMZWdhY3lCZWhhdmlvcikKICAgICAgICAgOiBtX3dyaXRlcih3cml0ZXIpCiAgICAg
ICAgICwgbV90cnlDYXRjaCh0cnlDYXRjaCkKICAgICAgICAgLCBtX2RlcHRoKDApCiAgICAgICAg
ICwgbV9leGVjRGVwdGgoMCkKICAgICAgICAgLCBtX3N0YXR1cyhTdWNjZXNzKQogICAgICAgICAs
IG1fbmV4dE9iamVjdFJlZmVyZW5jZSgwKQorICAgICAgICAsIG1fdHJhbnNmZXJMaXN0KHRyYW5z
ZmVyTGlzdCkKKyAgICAgICAgLCBtX3VzZUxlZ2FjeUJlaGF2aW9yKHVzZUxlZ2FjeUJlaGF2aW9y
KQogICAgIHsKICAgICAgICAgQVNTRVJUKCF0cnlDYXRjaC5IYXNDYXVnaHQoKSk7CiAgICAgfQpA
QCAtNTg5LDYgKzU5NCw4IEBAIHB1YmxpYzoKICAgICBTdGF0dXMgc2VyaWFsaXplKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29w
ZTsKKyAgICAgICAgaWYgKCFpbml0aWFsaXplT2JqZWN0UG9vbCgpKQorICAgICAgICAgICAgcmV0
dXJuIG1fc3RhdHVzOwogICAgICAgICBtX3dyaXRlci53cml0ZVZlcnNpb24oKTsKICAgICAgICAg
U3RhdGVCYXNlKiBzdGF0ZSA9IGRvU2VyaWFsaXplKHZhbHVlLCAwKTsKICAgICAgICAgd2hpbGUg
KHN0YXRlKQpAQCAtNjI4LDYgKzYzNSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Cisg
ICAgYm9vbCBpbml0aWFsaXplT2JqZWN0UG9vbCgpOworCiAgICAgY2xhc3MgU3RhdGVCYXNlIHsK
ICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RhdGVCYXNlKTsKICAgICBwdWJsaWM6CkBA
IC0xMDExLDggKzEwMjAsNDQgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIFY4T2JqZWN0TWFwPHY4
OjpPYmplY3QsIHVpbnQzMl90PiBPYmplY3RQb29sOwogICAgIE9iamVjdFBvb2wgbV9vYmplY3RQ
b29sOwogICAgIHVpbnQzMl90IG1fbmV4dE9iamVjdFJlZmVyZW5jZTsKKyAgICBWYWx1ZUhhbmRs
ZUFycmF5KiBtX3RyYW5zZmVyTGlzdDsKKyAgICBib29sIG1fdXNlTGVnYWN5QmVoYXZpb3I7CiB9
OwogCitib29sIFNlcmlhbGl6ZXI6OmluaXRpYWxpemVPYmplY3RQb29sKCkKK3sKKyAgICBpZiAo
IW1fdHJhbnNmZXJMaXN0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobV91c2VMZWdh
Y3lCZWhhdmlvcikgeworICAgICAgICAvLyBPZmZzZXQgbV9uZXh0T2JqZWN0UmVmZXJlbmNlIGJl
Y2F1c2Ugd2hlbiB0aGUgb2JqZWN0IGlzIGRlc2VyaWFsaXplZCB0aGUgb2JqZWN0IHJlZmVyZW5j
ZQorICAgICAgICAvLyBsaXN0IHdpbGwgYmUgcHJlbG9hZGVkIHdpdGggdGhlIHRyYW5zZmVyIGxp
c3QgKHdoZXRoZXIgbV91c2VMZWdhY3lCZWhhdmlvciB3YXMgYXNzZXJ0ZWQgb3IKKyAgICAgICAg
Ly8gbm90IGR1cmluZyBzZXJpYWxpemF0aW9uKS4KKyAgICAgICAgbV9uZXh0T2JqZWN0UmVmZXJl
bmNlID0gbV90cmFuc2Zlckxpc3QtPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RyYW5zZmVyTGlzdC0+c2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVHJhbnNmZXIgPSAoKm1fdHJh
bnNmZXJMaXN0KVtpXTsKKyAgICAgICAgaWYgKHRvVHJhbnNmZXItPklzT2JqZWN0KCkgfHwgdG9U
cmFuc2Zlci0+SXNEYXRlKCkgfHwgdG9UcmFuc2Zlci0+SXNSZWdFeHAoKSkgeworICAgICAgICAg
ICAgQVNTRVJUKCF0b1RyYW5zZmVyLT5Jc1N0cmluZygpKTsKKyAgICAgICAgICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gdjhPYmplY3QodG9UcmFuc2Zlci5Bczx2ODo6T2JqZWN0PigpKTsKKyAg
ICAgICAgICAgIHVpbnQzMl90IG9iamVjdFJlZmVyZW5jZTsKKyAgICAgICAgICAgIGlmIChtX29i
amVjdFBvb2wudHJ5R2V0KHY4T2JqZWN0LCAmb2JqZWN0UmVmZXJlbmNlKSkgeworICAgICAgICAg
ICAgICAgIC8vIEFuIG9iamVjdCB3YXMgaW5jbHVkZWQgaW4gdGhlIHRyYW5zZmVyIGxpc3QgbW9y
ZSB0aGFuIG9uY2UuCisgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBEYXRhQ2xvbmVFcnJvcjsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAvLyBBc3NpZ24gdG9UcmFuc2ZlciB0aGUgbmV4dCByZWZlcmVuY2UgSUQuIElmIHdlIHNlZSBp
dCBpbiB0aGUgb2JqZWN0IGdyYXBoLCB3ZSB3aWxsCisgICAgICAgICAgICAvLyBwYXNzIGl0IGJ5
IHJlZmVyZW5jZS4KKyAgICAgICAgICAgIGdyZXlPYmplY3QodjhPYmplY3QpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gQSBub24tb2JqZWN0IHdhcyBpbmNsdWRlZCBpbiB0aGUg
dHJhbnNmZXIgbGlzdC4KKyAgICAgICAgICAgIG1fc3RhdHVzID0gRGF0YUNsb25lRXJyb3I7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIFNlcmlhbGl6ZXI6OlN0YXRlQmFzZSogU2VyaWFsaXplcjo6ZG9TZXJpYWxpemUo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBTdGF0ZUJhc2UqIG5leHQpCiB7CiAgICAgaWYg
KG1fZXhlY0RlcHRoICsgKG5leHQgPyBuZXh0LT5leGVjRGVwdGgoKSA6IDApID4gMSkgewpAQCAt
MTY1MSwxNCArMTY5NiwxNyBAQCBwcml2YXRlOgogCiBjbGFzcyBEZXNlcmlhbGl6ZXIgOiBwdWJs
aWMgQ29tcG9zaXRlQ3JlYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGVzZXJpYWxpemVy
KFJlYWRlciYgcmVhZGVyKQorICAgIGV4cGxpY2l0IERlc2VyaWFsaXplcihSZWFkZXImIHJlYWRl
ciwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KQogICAgICAgICA6IG1fcmVhZGVyKHJl
YWRlcikKICAgICAgICAgLCBtX3ZlcnNpb24oMCkKKyAgICAgICAgLCBtX3RyYW5zZmVyTGlzdCh0
cmFuc2Zlckxpc3QpCiAgICAgewogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBk
ZXNlcmlhbGl6ZSgpCiAgICAgeworICAgICAgICBpZiAoIWluaXRpYWxpemVPYmplY3RQb29sKCkp
CisgICAgICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICAgICAgaWYgKCFtX3JlYWRlci5y
ZWFkVmVyc2lvbihtX3ZlcnNpb24pIHx8IG1fdmVyc2lvbiA+IHdpcmVGb3JtYXRWZXJzaW9uKQog
ICAgICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAgICAgICAgIG1fcmVhZGVyLnNldFZlcnNp
b24obV92ZXJzaW9uKTsKQEAgLTE3NzIsNiArMTgyMCwxMyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgorICAgIGJvb2wgaW5pdGlhbGl6ZU9iamVjdFBvb2woKQorICAgIHsKKyAgICAgICAg
aWYgKG1fdHJhbnNmZXJMaXN0KQorICAgICAgICAgICAgbV9vYmplY3RQb29sLmFwcGVuZCgqbV90
cmFuc2Zlckxpc3QpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBib29sIGlu
aXRpYWxpemVPYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHVpbnQzMl90IG51
bVByb3BlcnRpZXMsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiogdmFsdWUpCiAgICAgewogICAgICAg
ICB1bnNpZ25lZCBsZW5ndGggPSAyICogbnVtUHJvcGVydGllczsKQEAgLTE4MzcsMzQgKzE4OTIs
NjYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8djg6OkhhbmRsZTx2ODo6VmFsdWU+ID4gbV9vYmpl
Y3RQb29sOwogICAgIFZlY3Rvcjx1aW50MzJfdD4gbV9vcGVuQ29tcG9zaXRlUmVmZXJlbmNlU3Rh
Y2s7CiAgICAgdWludDMyX3QgbV92ZXJzaW9uOworICAgIFZhbHVlSGFuZGxlQXJyYXkqIG1fdHJh
bnNmZXJMaXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UKIAogdm9pZCBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBv
YmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRy
aWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUg
YXR0cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBWYWx1ZUhhbmRsZUFycmF5
KiB0cmFuc2Zlckxpc3QpCiB7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwotICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNlcmlhbGl6ZWQgPSB2YWx1ZS0+ZGVzZXJpYWxpemUo
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemVkID0gdmFsdWUtPmRlc2Vy
aWFsaXplKHRyYW5zZmVyTGlzdCk7CiAgICAgb2JqZWN0LT5Gb3JjZVNldCh2ODo6U3RyaW5nOjpO
ZXdTeW1ib2wocHJvcGVydHlOYW1lKSwgZGVzZXJpYWxpemVkLCBhdHRyaWJ1dGUpOwogfQogCiB2
b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlBy
b3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3Qp
CiB7Ci0gICAgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlLCB2YWx1ZS5nZXQoKSk7CisgICAgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eShv
YmplY3QsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlLCB2YWx1ZS5nZXQoKSwgdHJhbnNmZXJMaXN0
KTsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJv
cGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogdmFsdWUsIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2Zlckxpc3QpCit7CisgICAgVmFsdWVI
YW5kbGVBcnJheSogdmFsdWVIYW5kbGVBcnJheSA9IDA7CisgICAgVmFsdWVIYW5kbGVBcnJheSBs
b2NhbEFycmF5OworICAgIGlmICh0cmFuc2Zlckxpc3QpIHsKKyAgICAgICAgbG9jYWxBcnJheS5y
ZXNlcnZlQ2FwYWNpdHkodHJhbnNmZXJMaXN0LT5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRyYW5zZmVyTGlzdC0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBsb2Nh
bEFycmF5LmFwcGVuZCh0b1Y4VHJhbnNmZXJhYmxlKCgqdHJhbnNmZXJMaXN0KVtpXS5nZXQoKSkp
OworICAgICAgICB2YWx1ZUhhbmRsZUFycmF5ID0gJmxvY2FsQXJyYXk7CisgICAgfQorICAgIGRl
c2VyaWFsaXplQW5kU2V0UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZSwg
dmFsdWUsIHZhbHVlSGFuZGxlQXJyYXkpOworfQorCit2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVj
dCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBUcmFuc2ZlcmFibGVB
cnJheSogdHJhbnNmZXJMaXN0KQoreworICAgIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkob2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZSwgdmFsdWUuZ2V0KCksIHRyYW5zZmVyTGlzdCk7
Cit9CisKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRocm93
LCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3QsIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3Ip
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWUs
IGRpZFRocm93LCB0cmFuc2Zlckxpc3QsIHVzZUxlZ2FjeUJlaGF2aW9yKSk7Cit9CisKK1Bhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVy
TGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvcikKK3sKKyAgICBib29sIGRpZFRocm93OworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJv
dywgdHJhbnNmZXJMaXN0LCB1c2VMZWdhY3lCZWhhdmlvcikpOwogfQogCiBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBkaWRUaHJvdykKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3cpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3cs
IDAsIHRydWUpKTsKIH0KIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKIHsK
ICAgICBib29sIGRpZFRocm93OwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdywgMCwgdHJ1ZSkpOwogfQogCiBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGVGcm9tV2lyZShjb25zdCBTdHJpbmcmIGRhdGEpCkBAIC0xOTIwLDE0ICsyMDA3LDE0IEBAIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKCkKIHsKIH0KIAotU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCBib29sJiBkaWRUaHJvdykKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgZGlk
VGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhh
dmlvcikKIHsKICAgICBkaWRUaHJvdyA9IGZhbHNlOwogICAgIFdyaXRlciB3cml0ZXI7CiAgICAg
U2VyaWFsaXplcjo6U3RhdHVzIHN0YXR1czsKICAgICB7CiAgICAgICAgIHY4OjpUcnlDYXRjaCB0
cnlDYXRjaDsKLSAgICAgICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdyaXRlciwgdHJ5Q2F0Y2gp
OworICAgICAgICBTZXJpYWxpemVyIHNlcmlhbGl6ZXIod3JpdGVyLCB0cnlDYXRjaCwgdHJhbnNm
ZXJMaXN0LCB1c2VMZWdhY3lCZWhhdmlvcik7CiAgICAgICAgIHN0YXR1cyA9IHNlcmlhbGl6ZXIu
c2VyaWFsaXplKHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXR1cyA9PSBTZXJpYWxpemVyOjpKU0V4
Y2VwdGlvbikgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgSlMgZXhjZXB0aW9uIHRo
cm93biwgcmUtdGhyb3cgaXQuCkBAIC0xOTY1LDEzICsyMDUyLDIyIEBAIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFN0cmluZyYgd2lyZURhdGEpCiAg
ICAgbV9kYXRhID0gd2lyZURhdGEuY3Jvc3NUaHJlYWRTdHJpbmcoKTsKIH0KIAotdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoKQorU3RyaW5n
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJlY2VpcHRMaXN0KGNvbnN0IFN0cmluZyYg
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmIHJlY2VpcHRzKSB7CisgICAgLy8gRklYTUU6
IE9uY2UgYSBmbGF0dGVuYWJsZSByZWNlaXB0IGFwcGVhcnMsIHRoaXMgZnVuY3Rpb24gd2lsbCBo
YXZlIG1vcmUgd29yayB0byBkby4KKyAgICAvLyBVbmZsYXR0ZW5hYmxlIHJlY2VpcHRzIG1heSBi
ZSBwYXNzZWQgaW4gYXMgbnVsbC4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY2VpcHRz
LnNpemUoKTsgKytpKQorICAgICAgICBBU1NFUlQoIXJlY2VpcHRzW2ldIHx8ICFyZWNlaXB0c1tp
XS0+aXNGbGF0dGVuYWJsZSgpKTsKKyAgICByZXR1cm4gZGF0YS5jcm9zc1RocmVhZFN0cmluZygp
OworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNl
cmlhbGl6ZShWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3QpCiB7CiAgICAgaWYgKCFtX2Rh
dGEuaW1wbCgpKQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICBDT01QSUxFX0FTU0VS
VChzaXplb2YoQnVmZmVyVmFsdWVUeXBlKSA9PSAyLCBCdWZmZXJWYWx1ZVR5cGVJc1R3b0J5dGVz
KTsKICAgICBSZWFkZXIgcmVhZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1f
ZGF0YS5pbXBsKCktPmNoYXJhY3RlcnMoKSksIDIgKiBtX2RhdGEubGVuZ3RoKCkpOwotICAgIERl
c2VyaWFsaXplciBkZXNlcmlhbGl6ZXIocmVhZGVyKTsKKyAgICBEZXNlcmlhbGl6ZXIgZGVzZXJp
YWxpemVyKHJlYWRlciwgdHJhbnNmZXJMaXN0KTsKICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRl
c2VyaWFsaXplKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNGQyNDkyZC4uZTkzMWUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTMy
LDI1ICszMiw0OSBAQAogI2RlZmluZSBTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAogCiAjaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKKwogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFRyYW5zZmVyYWJsZTsKK2Ns
YXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJhbnNmZXJh
YmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNm
ZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKK3R5cGVkZWYgVmVj
dG9yPHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgMT4gVmFsdWVIYW5kbGVBcnJheTsKKwogY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlc2VyaWFsaXpl
QW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlBy
b3BlcnR5QXR0cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCk7CisgICAg
c3RhdGljIHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCk7CisgICAg
c3RhdGljIHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCk7CiAgICAgc3RhdGljIHZvaWQg
ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBj
aGFyKiBwcm9wZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJv
cGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgVmFsdWVI
YW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KTsKKworICAgIC8vIHRyYW5zZmVyTGlzdCBpcyBhbiBh
cnJheSBvZiBvYmplY3RzIHRoYXQgYXJlIG5vdCBmbGF0dGVuZWQgdG8gdGhlIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSBidXQKKyAgICAvLyBhcmUgaW5zdGVhZCBjb3BpZWQgYnkgcmVmZXJlbmNlLiBU
aGVzZSBvYmplY3RzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZWlyIGluZGljZXMgaW4gdHJhbnNmZXJM
aXN0LgorICAgIC8vIEZvciBleGFtcGxlOgorICAgIC8vICAgICBzZXJpYWxpemUoe2E6T2JqZWN0
MSwgYjpPYmplY3QyfSwgW09iamVjdDAsIE9iamVjdDFdKSA9PiBTCisgICAgLy8gICAgIGRlc2Vy
aWFsaXplKFMsIFtPdGhlck9iamVjdDAsIE90aGVyT2JqZWN0MV0pID0+IHthOk90aGVyT2JqZWN0
MSwgYjpPYmplY3QyJ30KKyAgICAvLyB3aGVyZSBPYmplY3QyJyB3YXMgY3JlYXRlZCBieSBmaXJz
dCBmbGF0dGVuaW5nIE9iamVjdDIuCiAKICAgICAvLyBJZiBhIHNlcmlhbGl6YXRpb24gZXJyb3Ig
b2NjdXJzIChlLmcuLCBjeWNsaWMgaW5wdXQgdmFsdWUpIHRoaXMKICAgICAvLyBmdW5jdGlvbiBy
ZXR1cm5zIGFuIGVtcHR5IHJlcHJlc2VudGF0aW9uLCBzY2hlZHVsZXMgYSBWOCBleGNlcHRpb24g
dG8KICAgICAvLyBiZSB0aHJvd24gdXNpbmcgdjg6OlRocm93RXhjZXB0aW9uKCksIGFuZCBzZXRz
IHxkaWRUaHJvd3wuIEluIHRoaXMgY2FzZQogICAgIC8vIHRoZSBjYWxsZXIgbXVzdCBub3QgaW52
b2tlIGFueSBWOCBvcGVyYXRpb25zIHVudGlsIGNvbnRyb2wgcmV0dXJucyB0bwogICAgIC8vIFY4
LiBXaGVuIHNlcmlhbGl6YXRpb24gaXMgc3VjY2Vzc2Z1bCwgfGRpZFRocm93fCBpcyBmYWxzZS4K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRocm93KTsKKyAgICAvLyBJZiB1c2VM
ZWdhY3lCZWhhdmlvciBpcyBhc3NlcnRlZCwgdGhlbiBpdGVtcyBpbiB0cmFuc2Zlckxpc3Qgd2ls
bCBub3QgYmUgcmVmZXJyZWQgdG8gYnkgb2JqZWN0IHJlZmVyZW5jZSBzaG91bGQgdGhleSBhcHBl
YXIKKyAgICAvLyBpbiB0aGUgc2VyaWFsaXplZCB2YWx1ZS4gdHJhbnNmZXJMaXN0IG1heSBiZSAw
IChhbmQgaWYgc28gaXMgZXF1aXZhbGVudCB0byBhIHplcm8tbGVuZ3RoIHRyYW5zZmVyIGxpc3Qp
LgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgYm9vbCYgZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRy
YW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvcik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBW
YWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3QsIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3IpOwor
ICAgIC8vIFRoZXNlIGRlZmF1bHQgdG8gdHJhbnNmZXJMaXN0ID0gMCBhbmQgdXNlTGVnYWN5QmVo
YXZpb3IgPSBmYWxzZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIGJvb2wmIGRpZFRocm93KTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4pOworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBjcmVhdGVGcm9tV2lyZShjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSk7
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoKTsK
QEAgLTYyLDkgKzg2LDExIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b1dpcmVTdHJpbmcoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAorICAgIHN0YXRpYyBTdHJpbmcgZmxhdHRlblJlY2Vp
cHRMaXN0KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
JiByZWNlaXB0cyk7CisKICAgICAvLyBEZXNlcmlhbGl6ZXMgdGhlIHZhbHVlIChpbiB0aGUgY3Vy
cmVudCBjb250ZXh0KS4gUmV0dXJucyBhIG51bGwgdmFsdWUgaW4KICAgICAvLyBjYXNlIG9mIGZh
aWx1cmUuCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFsaXplKCk7CisgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFsaXplKFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVy
TGlzdCA9IDApOwogCiBwcml2YXRlOgogICAgIGVudW0gU3RyaW5nRGF0YU1vZGUgewpAQCAtNzMs
NyArOTksOCBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUo
KTsKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBib29s
JiBkaWRUaHJvdyk7CisgICAgLy8gQXMgaW4gdGhlIGFib3ZlLCB0cmFuc2Zlckxpc3QgbWF5IGJl
IDAuCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgYm9v
bCYgZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdh
Y3lCZWhhdmlvcik7CiAgICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFN0
cmluZyYgd2lyZURhdGEpOwogCiAgICAgU3RyaW5nIG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4
IDIzNDJmZTYuLmJlMDIyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzEzLDQzICszMTMsNTYgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnBvc3RNZXNzYWdlQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2soYm9vbCB1c2VMZWdhY3lCZWhhdmlvciwgY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cucG9zdE1l
c3NhZ2UoKSIpOwogICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhET01XaW5kb3c6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgRE9NV2luZG93KiBzb3VyY2UgPSBWOFByb3h5OjpyZXRy
aWV2ZUZyYW1lRm9yQ2FsbGluZ0NvbnRleHQoKS0+ZG9tV2luZG93KCk7CiAgICAgQVNTRVJUKHNv
dXJjZS0+ZnJhbWUoKSk7CiAKLSAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93KTsKLSAgICBpZiAoZGlkVGhyb3cpCi0gICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsK
KyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVBcnJheTsKKyAgICBWYWx1ZUhhbmRs
ZUFycmF5IHZhbHVlSGFuZGxlQXJyYXk7CiAgICAgU3RyaW5nIHRhcmdldE9yaWdpbjsKIAogICAg
IC8vIFRoaXMgZnVuY3Rpb24gaGFzIHZhcmlhYmxlIGFyZ3VtZW50cyBhbmQgY2FuIGVpdGhlciBi
ZToKICAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHBvcnQsIHRhcmdldE9yaWdpbik7CiAg
ICAgLy8gb3IKICAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRhcmdldE9yaWdpbik7Ci0g
ICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMikgewot
ICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFycmF5KSkKKyAg
ICB7CisgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPiAyKSB7CisgICAgICAgICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3Nb
MV0sIHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1ZUhhbmRsZUFycmF5LCB1c2VMZWdhY3lCZWhhdmlv
cikpCisgICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgICAg
IHRhcmdldE9yaWdpbiA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRDaGVjayhh
cmdzWzJdKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0YXJnZXRPcmlnaW4gPSB0b1dl
YkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1sxXSk7CisKKyAgICAgICAg
aWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKLSAgICAgICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVu
ZGVmaW5lZENoZWNrKGFyZ3NbMl0pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRhcmdldE9yaWdp
biA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRDaGVjayhhcmdzWzFdKTsKICAg
ICB9CiAKLSAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgYm9vbCBkaWRUaHJvdyA9
IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdywgJnZhbHVlSGFuZGxl
QXJyYXksIHVzZUxlZ2FjeUJlaGF2aW9yKTsKKyAgICBpZiAoZGlkVGhyb3cpCiAgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3
aW5kb3ctPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmcG9ydEFycmF5LCB0YXJnZXRP
cmlnaW4sIHNvdXJjZSwgZWMpOworICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxl
YXNlKCksICZ0cmFuc2ZlcmFibGVBcnJheSwgdGFyZ2V0T3JpZ2luLCBzb3VyY2UsIGVjKTsKICAg
ICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
eworICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5wb3N0TWVzc2FnZSgpIik7CisgICAgcmV0
dXJuIG1ldGFQb3N0TWVzc2FnZUNhbGxiYWNrKHRydWUsIGFyZ3MpOworfQorCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cud2Vi
a2l0UG9zdE1lc3NhZ2UoKSIpOworICAgIHJldHVybiBtZXRhUG9zdE1lc3NhZ2VDYWxsYmFjayhm
YWxzZSwgYXJncyk7Cit9CisKIC8vIEZJWE1FKGZxaWFuKTogcmV0dXJuaW5nIHN0cmluZyBpcyBj
aGVhdGluZywgYW5kIHdlIHNob3VsZAogLy8gZml4IHRoaXMgYnkgY2FsbGluZyB0b1N0cmluZyBm
dW5jdGlvbiBvbiB0aGUgcmVjZWl2ZXIuCiAvLyBIb3dldmVyLCBWOCBpbXBsZW1lbnRzIHRvU3Ry
aW5nIGluIEphdmFTY3JpcHQsIHdoaWNoIHJlcXVpcmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwCmluZGV4IDhmY2Y5YTguLjY5MGNhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC00MiwyNCArNDIsMzYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGFQb3N0TWVzc2FnZUNhbGxiYWNrKGJvb2wgdXNl
TGVnYWN5QmVoYXZpb3IsIGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKEwiRE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQucG9zdE1lc3NhZ2UiKTsKICAgICBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBib29sIGRpZFRocm93ID0gZmFsc2U7
Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93KTsKLSAgICBpZiAoZGlkVGhyb3cp
Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBw
b3J0QXJyYXk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlQXJyYXk7CisgICAg
VmFsdWVIYW5kbGVBcnJheSB2YWx1ZUhhbmRsZUFycmF5OwogICAgIGlmIChhcmdzLkxlbmd0aCgp
ID4gMSkgewotICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFy
cmF5KSkKKyAgICAgICAgaWYgKCFnZXRUcmFuc2ZlcmFibGVBcnJheShhcmdzWzFdLCB0cmFuc2Zl
cmFibGVBcnJheSwgdmFsdWVIYW5kbGVBcnJheSwgdXNlTGVnYWN5QmVoYXZpb3IpKQogICAgICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9CisgICAgYm9vbCBkaWRUaHJvdyA9
IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdywgJnZhbHVlSGFuZGxl
QXJyYXksIHVzZUxlZ2FjeUJlaGF2aW9yKTsKKyAgICBpZiAoZGlkVGhyb3cpCisgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd29y
a2VyQ29udGV4dC0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIGVj
KTsKKyAgICB3b3JrZXJDb250ZXh0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnRy
YW5zZmVyYWJsZUFycmF5LCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQogCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2Fn
ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKEwi
RE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQucG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gbWV0
YVBvc3RNZXNzYWdlQ2FsbGJhY2sodHJ1ZSwgYXJncyk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOERlZGljYXRlZFdvcmtlckNvbnRleHQ6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uRGVkaWNh
dGVkV29ya2VyQ29udGV4dC53ZWJraXRQb3N0TWVzc2FnZSIpOworICAgIHJldHVybiBtZXRhUG9z
dE1lc3NhZ2VDYWxsYmFjayhmYWxzZSwgYXJncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXgg
NDc1ZGUyYS4uMmRkYjEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC00NywyNSArNDcsMzIg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29yR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVu
dC5wb3J0cyIpOwogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBWOE1lc3NhZ2VFdmVudDo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAKLSAgICBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cyA9IGV2
ZW50LT5wb3J0cygpOwotICAgIGlmICghcG9ydHMgfHwgcG9ydHMtPmlzRW1wdHkoKSkKKyAgICBU
cmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcyA9IGV2ZW50LT50cmFuc2ZlcmFibGVzKCk7
CisgICAgaWYgKCF0cmFuc2ZlcmFibGVzIHx8IHRyYW5zZmVyYWJsZXMtPmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAKLSAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBwb3J0
QXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyhwb3J0cy0+c2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHBvcnRzLT5zaXplKCk7ICsraSkKLSAgICAgICAgcG9ydEFycmF5LT5TZXQodjg6
OkludGVnZXI6Ok5ldyhpKSwgdG9WOCgoKnBvcnRzKVtpXS5nZXQoKSkpOworICAgIGludCBwb3J0
Q291bnQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCgqdHJhbnNmZXJhYmxlcylbaV0uZ2V0KCktPmFzTWVz
c2FnZVBvcnQoKSkKKyAgICAgICAgICAgICsrcG9ydENvdW50OworICAgIH0KKyAgICAKKyAgICBp
bnQgY3VycmVudFBvcnQgPSAwOworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHBvcnRBcnJheSA9
IHY4OjpBcnJheTo6TmV3KHBvcnRDb3VudCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
cmFuc2ZlcmFibGVzLT5zaXplKCkgJiYgY3VycmVudFBvcnQgPCBwb3J0Q291bnQ7ICsraSkgewor
ICAgICAgICBpZiAoTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gKCp0cmFuc2ZlcmFibGVzKVtp
XS5nZXQoKS0+YXNNZXNzYWdlUG9ydCgpKQorICAgICAgICAgICAgcG9ydEFycmF5LT5TZXQodjg6
OkludGVnZXI6Ok5ldyhjdXJyZW50UG9ydCsrKSwgdG9WOChtZXNzYWdlUG9ydCkpOworICAgIH0K
IAogICAgIHJldHVybiBwb3J0QXJyYXk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1l
c3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGFJbml0TWVzc2FnZUV2ZW50
Q2FsbGJhY2soYm9vbCB1c2VMZWdhY3lCZWhhdmlvciwgY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlRXZlbnQuaW5pdE1lc3NhZ2VFdmVudCIp
OwogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBWOE1lc3NhZ2VFdmVudDo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAgICAgU3RyaW5nIHR5cGVBcmcgPSB2OFZhbHVlVG9XZWJDb3JlU3RyaW5n
KGFyZ3NbMF0pOwogICAgIGJvb2wgY2FuQnViYmxlQXJnID0gYXJnc1sxXS0+Qm9vbGVhblZhbHVl
KCk7CiAgICAgYm9vbCBjYW5jZWxhYmxlQXJnID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7Ci0g
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbM10pOwogICAgIFN0cmluZyBvcmlnaW5BcmcgPSB2OFZhbHVl
VG9XZWJDb3JlU3RyaW5nKGFyZ3NbNF0pOwogICAgIFN0cmluZyBsYXN0RXZlbnRJZEFyZyA9IHY4
VmFsdWVUb1dlYkNvcmVTdHJpbmcoYXJnc1s1XSk7CiAKQEAgLTc2LDE3ICs4MywzNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbgogICAgICAgICBpZiAoIXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAg
ICAgICAgICBzb3VyY2VBcmcgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9
Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRBcnJheTsKKyAgICBPd25QdHI8VHJh
bnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZUFycmF5OworICAgIE93blB0cjxWYWx1ZUhhbmRs
ZUFycmF5PiB2YWx1ZUhhbmRsZUFycmF5OwogCiAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChh
cmdzWzddKSkgewotICAgICAgICBwb3J0QXJyYXkgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRB
cnJheSk7Ci0gICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzddLCAqcG9ydEFy
cmF5KSkKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJyYXkgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJh
YmxlQXJyYXkpOworICAgICAgICB2YWx1ZUhhbmRsZUFycmF5ID0gYWRvcHRQdHIobmV3IFZhbHVl
SGFuZGxlQXJyYXkpOworICAgICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3NbN10s
ICp0cmFuc2ZlcmFibGVBcnJheSwgKnZhbHVlSGFuZGxlQXJyYXksIHVzZUxlZ2FjeUJlaGF2aW9y
KSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQotICAgIGV2ZW50
LT5pbml0TWVzc2FnZUV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywg
ZGF0YUFyZy5yZWxlYXNlKCksIG9yaWdpbkFyZywgbGFzdEV2ZW50SWRBcmcsIHNvdXJjZUFyZywg
cG9ydEFycmF5LnJlbGVhc2UoKSk7CisKKyAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKGFyZ3NbM10sIGRpZFRocm93LCB2YWx1ZUhhbmRsZUFycmF5LmdldCgpLCB1
c2VMZWdhY3lCZWhhdmlvcik7CisgICAgaWYgKGRpZFRocm93KQorICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOworCisgICAgZXZlbnQtPmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2Fu
QnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLnJlbGVhc2UoKSwgb3JpZ2luQXJnLCBs
YXN0RXZlbnRJZEFyZywgc291cmNlQXJnLCB0cmFuc2ZlcmFibGVBcnJheS5yZWxlYXNlKCkpOwog
ICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBkYXRhQXR0ciA9IHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUgfCB2ODo6UmVhZE9ubHkpOwotICAgIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eShhcmdzLkhvbGRlcigp
LCAiZGF0YSIsIGRhdGFBdHRyLCBldmVudC0+ZGF0YSgpKTsKKyAgICBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkoYXJncy5Ib2xkZXIoKSwgImRhdGEiLCBk
YXRhQXR0ciwgZXZlbnQtPmRhdGEoKSwgdmFsdWVIYW5kbGVBcnJheS5nZXQoKSk7CiAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgfQorfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhN
ZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC5pbml0TWVzc2FnZUV2
ZW50Iik7CisgICAgcmV0dXJuIG1ldGFJbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2sodHJ1ZSwgYXJn
cyk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5p
dE1lc3NhZ2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAg
SU5DX1NUQVRTKCJET00uTWVzc2FnZUV2ZW50LndlYmtpdEluaXRNZXNzYWdlRXZlbnQiKTsKKyAg
ICByZXR1cm4gbWV0YUluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhmYWxzZSwgYXJncyk7Cit9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAppbmRleCAzZWQ1YjEyLi4x
MTc4MGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhN
ZXNzYWdlUG9ydEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC00MiwzMyArNDIsNDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9ydDo6cG9z
dE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBtZXRhUG9zdE1lc3NhZ2VDYWxsYmFjayhib29sIHVzZUxlZ2FjeUJl
aGF2aW9yLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9N
Lk1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlIik7CiAgICAgTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0
ID0gVjhNZXNzYWdlUG9ydDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgYm9vbCBkaWRU
aHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Ug
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdyk7Ci0gICAg
aWYgKGRpZFRocm93KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIE1lc3Nh
Z2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJs
ZUFycmF5OworICAgIFZhbHVlSGFuZGxlQXJyYXkgdmFsdWVIYW5kbGVBcnJheTsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdlUG9ydEFycmF5KGFy
Z3NbMV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlmICghZ2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJn
c1sxXSwgdHJhbnNmZXJhYmxlQXJyYXksIHZhbHVlSGFuZGxlQXJyYXksIHVzZUxlZ2FjeUJlaGF2
aW9yKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQorICAgIGJv
b2wgZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZGlkVGhyb3cs
ICZ2YWx1ZUhhbmRsZUFycmF5LCB1c2VMZWdhY3lCZWhhdmlvcik7CisgICAgaWYgKGRpZFRocm93
KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIG1lc3NhZ2VQb3J0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBv
cnRBcnJheSwgZWMpOworICAgIG1lc3NhZ2VQb3J0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVh
c2UoKSwgJnRyYW5zZmVyYWJsZUFycmF5LCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMp
OwogfQogCi1ib29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJheSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UiKTsKKyAg
ICByZXR1cm4gbWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2sodHJ1ZSwgYXJncyk7Cit9CisKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VQb3J0Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uTWVzc2Fn
ZVBvcnQud2Via2l0UG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gbWV0YVBvc3RNZXNzYWdlQ2Fs
bGJhY2soZmFsc2UsIGFyZ3MpOworfQorCitib29sIGdldFRyYW5zZmVyYWJsZUFycmF5KHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBUcmFuc2ZlcmFibGVBcnJheSYgdHJhbnNmZXJhYmxlQXJy
YXksIFZhbHVlSGFuZGxlQXJyYXkmIGhhbmRsZUFycmF5LCBib29sIHVzZUxlZ2FjeUJlaGF2aW9y
KQogewogICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCh2YWx1ZSkpIHsKLSAgICAgICAgcG9ydEFy
cmF5LnJlc2l6ZSgwKTsKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJyYXkucmVzaXplKDApOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIXZhbHVlLT5Jc09iamVjdCgpKSB7
Ci0gICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBh
biBvYmplY3QiKTsKKyAgICAgICAgdGhyb3dFcnJvcih1c2VMZWdhY3lCZWhhdmlvciA/ICJNZXNz
YWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0IgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogIlRyYW5zZmVyYWJsZUFycmF5IGFyZ3VtZW50IG11c3Qg
YmUgYW4gb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgdWludDMy
X3QgbGVuZ3RoID0gMDsKQEAgLTgxLDI4ICs5NCw0NyBAQCBib29sIGdldE1lc3NhZ2VQb3J0QXJy
YXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJh
eQogICAgICAgICAvLyBTZXF1ZW5jZS10eXBlIG9iamVjdCAtIGdldCB0aGUgbGVuZ3RoIGF0dHJp
YnV0ZQogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBzZXF1ZW5jZUxlbmd0aCA9IHBvcnRz
LT5HZXQodjg6OlN0cmluZzo6TmV3KCJsZW5ndGgiKSk7CiAgICAgICAgIGlmICghc2VxdWVuY2VM
ZW5ndGgtPklzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0
QXJyYXkgYXJndW1lbnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUiKTsKKyAgICAgICAgICAgIHRo
cm93RXJyb3IodXNlTGVnYWN5QmVoYXZpb3IgPyAiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBo
YXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAiVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQgaGFzIG5vIGxlbmd0aCBhdHRy
aWJ1dGUiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBs
ZW5ndGggPSBzZXF1ZW5jZUxlbmd0aC0+VWludDMyVmFsdWUoKTsKICAgICB9CiAKLSAgICAvLyBW
YWxpZGF0ZSB0aGUgcGFzc2VkIGFycmF5IG9mIHBvcnRzLgorICAgIC8vIFZhbGlkYXRlIHRoZSBw
YXNzZWQgYXJyYXkgb2YgdHJhbnNmZXJhYmxlcy4KICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHBvcnQg
PSBwb3J0cy0+R2V0KGkpOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB0cmFuc2ZlcmFi
bGUgPSBwb3J0cy0+R2V0KGkpOwogICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIG5vbi1udWxsIG9i
amVjdHMsIHBlciBIVE1MNSBzcGVjIDguMy4zLgotICAgICAgICBpZiAoaXNVbmRlZmluZWRPck51
bGwocG9ydCkpIHsKKyAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKHRyYW5zZmVyYWJsZSkp
IHsKICAgICAgICAgICAgIHRocm93RXJyb3IoSU5WQUxJRF9TVEFURV9FUlIpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIC8vIFZhbGlkYXRpb24gb2YgT2Jq
ZWN0cyBpbXBsZW1lbnRpbmcgYW4gaW50ZXJmYWNlLCBwZXIgV2ViSURMIHNwZWMgNC4xLjE1Lgot
ICAgICAgICBpZiAoIVY4TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNlKHBvcnQpKSB7Ci0gICAgICAg
ICAgICB0aHJvd0Vycm9yKCJNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBv
bmx5IE1lc3NhZ2VQb3J0cyIpOworICAgICAgICBSZWZQdHI8VHJhbnNmZXJhYmxlPiBuYXRpdmVU
cmFuc2ZlcmFibGUgPSB0b05hdGl2ZVRyYW5zZmVyYWJsZSh0cmFuc2ZlcmFibGUpOworICAgICAg
ICBpZiAoIW5hdGl2ZVRyYW5zZmVyYWJsZSB8fCAodXNlTGVnYWN5QmVoYXZpb3IgJiYgIW5hdGl2
ZVRyYW5zZmVyYWJsZS0+YXNNZXNzYWdlUG9ydCgpKSkgeworICAgICAgICAgICAgdGhyb3dFcnJv
cih1c2VMZWdhY3lCZWhhdmlvciA/ICJNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29u
dGFpbiBvbmx5IE1lc3NhZ2VQb3J0cyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAiVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWluIG9ubHkg
VHJhbnNmZXJhYmxlcyIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0g
ICAgICAgIHBvcnRBcnJheS5hcHBlbmQoVjhNZXNzYWdlUG9ydDo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChwb3J0KSkpOworICAgICAgICB0cmFuc2ZlcmFibGVBcnJheS5h
cHBlbmQobmF0aXZlVHJhbnNmZXJhYmxlKTsKKyAgICAgICAgaGFuZGxlQXJyYXkuYXBwZW5kKHRy
YW5zZmVyYWJsZSk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCitQYXNzUmVmUHRyPFRy
YW5zZmVyYWJsZT4gdG9OYXRpdmVUcmFuc2ZlcmFibGUodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUpCit7CisgICAgaWYgKFY4TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNlKHZhbHVlKSkKKyAgICAg
ICAgcmV0dXJuIFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QodmFsdWUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYocmVpbnRlcnByZXRfY2FzdDxUcmFu
c2ZlcmFibGUqPigwKSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4VHJhbnNmZXJh
YmxlKFRyYW5zZmVyYWJsZSogdmFsdWUpCit7CisgICAgaWYgKE1lc3NhZ2VQb3J0KiBtZXNzYWdl
UG9ydCA9IHZhbHVlLT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgIHJldHVybiB0b1Y4KG1lc3Nh
Z2VQb3J0KTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gdjg6OkludGVn
ZXI6Ok5ldygwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmgKaW5k
ZXggN2FiNTAyYi4uYjUzZTcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oCkBAIC0zNSwxMyArMzUsMTcgQEAK
ICNpbmNsdWRlIDx2OC5oPgogCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgLy8g
SGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxzIHRoZSB2YWx1ZXMgb3V0IG9mIGEgSlMgc2VxdWVu
Y2UgYW5kIGludG8gYSBNZXNzYWdlUG9ydEFycmF5LgotICAgIC8vIEFsc28gdmFsaWRhdGVzIHRo
ZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhlIFdlYklETCBz
cGVjIGFuZCBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjIGFuZCBnZW5lcmF0ZXMgZXhj
ZXB0aW9ucyBhcyBhcHByb3ByaWF0ZS4KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGFycmF5
IHdhcyBmaWxsZWQsIG9yIGZhbHNlIGlmIHRoZSBwYXNzZWQgdmFsdWUgd2FzIG5vdCBvZiBhbiBh
cHByb3ByaWF0ZSB0eXBlLgotICAgIGJvb2wgZ2V0TWVzc2FnZVBvcnRBcnJheSh2ODo6TG9jYWw8
djg6OlZhbHVlPiwgTWVzc2FnZVBvcnRBcnJheSYpOworLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNo
IHB1bGxzIHRoZSB2YWx1ZXMgb3V0IG9mIGEgSlMgc2VxdWVuY2UgYW5kIGludG8gYSBUcmFuc2Zl
cmFibGVBcnJheS4KKy8vIEFsc28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMg
NC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9m
IHRoZSBIVE1MNSBzcGVjIGFuZCBnZW5lcmF0ZXMgZXhjZXB0aW9ucyBhcyBhcHByb3ByaWF0ZS4K
Ky8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYXJyYXkgd2FzIGZpbGxlZCwgb3IgZmFsc2UgaWYgdGhl
IHBhc3NlZCB2YWx1ZSB3YXMgbm90IG9mIGFuIGFwcHJvcHJpYXRlIHR5cGUuCitib29sIGdldFRy
YW5zZmVyYWJsZUFycmF5KHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBUcmFuc2ZlcmFibGVBcnJheSYs
IFZhbHVlSGFuZGxlQXJyYXkmLCBib29sIHVzZUxlZ2FjeUJlaGF2aW9yKTsKKworUGFzc1JlZlB0
cjxUcmFuc2ZlcmFibGU+IHRvTmF0aXZlVHJhbnNmZXJhYmxlKHY4OjpMb2NhbDx2ODo6VmFsdWU+
KTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4VHJhbnNmZXJhYmxlKFRyYW5zZmVyYWJsZSop
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCmluZGV4IGZkYzY4MTUuLmY3NGU1
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtl
ckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29y
a2VyQ3VzdG9tLmNwcApAQCAtODcsMjQgKzg3LDM2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFdvcmtlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ICAgIHJldHVybiB3cmFwcGVyT2JqZWN0OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
b3JrZXI6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2soYm9vbCB1
c2VMZWdhY3lCZWhhdmlvciwgY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5Xb3JrZXIucG9zdE1lc3NhZ2UiKTsKICAgICBXb3JrZXIqIHdvcmtlciA9IFY4
V29ya2VyOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBib29sIGRpZFRocm93ID0gZmFs
c2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93KTsKLSAgICBpZiAoZGlkVGhy
b3cpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgTWVzc2FnZVBvcnRBcnJh
eSBwb3J0QXJyYXk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlQXJyYXk7Cisg
ICAgVmFsdWVIYW5kbGVBcnJheSB2YWx1ZUhhbmRsZUFycmF5OwogICAgIGlmIChhcmdzLkxlbmd0
aCgpID4gMSkgewotICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9y
dEFycmF5KSkKKyAgICAgICAgaWYgKCFnZXRUcmFuc2ZlcmFibGVBcnJheShhcmdzWzFdLCB0cmFu
c2ZlcmFibGVBcnJheSwgdmFsdWVIYW5kbGVBcnJheSwgdXNlTGVnYWN5QmVoYXZpb3IpKQogICAg
ICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9CisgICAgYm9vbCBkaWRUaHJv
dyA9IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdywgJnZhbHVlSGFu
ZGxlQXJyYXksIHVzZUxlZ2FjeUJlaGF2aW9yKTsKKyAgICBpZiAoZGlkVGhyb3cpCisgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
d29ya2VyLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOwor
ICAgIHdvcmtlci0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZ0cmFuc2ZlcmFibGVB
cnJheSwgZWMpOwogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIAordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V29ya2VyOjpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uV29ya2VyLnBvc3RNZXNzYWdlIik7Cisg
ICAgcmV0dXJuIG1ldGFQb3N0TWVzc2FnZUNhbGxiYWNrKHRydWUsIGFyZ3MpOworfQorCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXI6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5Xb3JrZXIud2Vi
a2l0UG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gbWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2soZmFs
c2UsIGFyZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCmluZGV4IGUzODljZDEuLjk2
NTg3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcApAQCAtMTI5LDYgKzEyOSw4IEBA
CiAjaW5jbHVkZSAiVG91Y2guY3BwIgogI2luY2x1ZGUgIlRvdWNoRXZlbnQuY3BwIgogI2luY2x1
ZGUgIlRvdWNoTGlzdC5jcHAiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmNwcCIKKyNpbmNsdWRl
ICJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCIKICNpbmNsdWRlICJUcmFuc2Zvcm1Tb3VyY2VMaWJ4
c2x0LmNwcCIKICNpbmNsdWRlICJUcmF2ZXJzYWwuY3BwIgogI2luY2x1ZGUgIlRyZWVTY29wZS5j
cHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCmluZGV4IGI0MzMzODFiLi45NjM2MTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcApAQCAtMjcsNiArMjcsOCBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAi
TWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKIAogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTM4LDEzICs0MCwxMyBAQCBN
ZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCgpCiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2Fn
ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5k
b3c+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKK01lc3NhZ2VF
dmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1Jl
ZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJh
bnNmZXJhYmxlcykKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNl
LCBmYWxzZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAg
ICwgbV9sYXN0RXZlbnRJZChsYXN0RXZlbnRJZCkKICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAg
ICAsIG1fcG9ydHMocG9ydHMpCisgICAgLCBtX3RyYW5zZmVyYWJsZXModHJhbnNmZXJhYmxlcykK
IHsKIH0KIApAQCAtNTIsNyArNTQsNyBAQCBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQog
ewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRBcnJheT4gcG9ydHMpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NP
d25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMpCiB7CiAgICAgaWYgKGRpc3Bh
dGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjMsMjYgKzY1LDM2IEBAIHZvaWQgTWVzc2Fn
ZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvCiAgICAgbV9vcmlnaW4gPSBvcmlnaW47CiAgICAgbV9sYXN0RXZlbnRJZCA9
IGxhc3RFdmVudElkOwogICAgIG1fc291cmNlID0gc291cmNlOwotICAgIG1fcG9ydHMgPSBwb3J0
czsKKyAgICBtX3RyYW5zZmVyYWJsZXMgPSB0cmFuc2ZlcmFibGVzOwogfQogCiAvLyBGSVhNRTog
cmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQp
LgogTWVzc2FnZVBvcnQqIE1lc3NhZ2VFdmVudDo6bWVzc2FnZVBvcnQoKQogewotICAgIGlmICgh
bV9wb3J0cykKKyAgICBpZiAoIW1fdHJhbnNmZXJhYmxlcykKICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgQVNTRVJUKG1fcG9ydHMtPnNpemUoKSA9PSAxKTsKLSAgICByZXR1cm4gKCptX3BvcnRzKVsw
XS5nZXQoKTsKKyAgICBBU1NFUlQobV90cmFuc2ZlcmFibGVzLT5zaXplKCkgPT0gMSk7CisgICAg
VHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUgPSAoKm1fdHJhbnNmZXJhYmxlcylbMF0uZ2V0KCk7
CisgICAgQVNTRVJUKHRyYW5zZmVyYWJsZS0+YXNNZXNzYWdlUG9ydCgpKTsKKyAgICByZXR1cm4g
dHJhbnNmZXJhYmxlLT5hc01lc3NhZ2VQb3J0KCk7CiB9CiAKLXZvaWQgTWVzc2FnZUV2ZW50Ojpp
bml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5k
b3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqIHBvcnQpCitUcmFuc2ZlcmFibGUqIE1lc3NhZ2VFdmVu
dDo6dHJhbnNmZXJhYmxlKCkKIHsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHM7
Ci0gICAgaWYgKHBvcnQpIHsKLSAgICAgICAgcG9ydHMgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBv
cnRBcnJheSk7Ci0gICAgICAgIHBvcnRzLT5hcHBlbmQocG9ydCk7CisgICAgaWYgKCFtX3RyYW5z
ZmVyYWJsZXMpCisgICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChtX3RyYW5zZmVyYWJsZXMt
PnNpemUoKSA9PSAxKTsKKyAgICByZXR1cm4gKCptX3RyYW5zZmVyYWJsZXMpWzBdLmdldCgpOwor
fQorCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFRyYW5zZmVyYWJsZSogdHJhbnNm
ZXJhYmxlKQoreworICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlczsK
KyAgICBpZiAodHJhbnNmZXJhYmxlKSB7CisgICAgICAgIHRyYW5zZmVyYWJsZXMgPSBhZG9wdFB0
cihuZXcgVHJhbnNmZXJhYmxlQXJyYXkpOworICAgICAgICB0cmFuc2ZlcmFibGVzLT5hcHBlbmQo
dHJhbnNmZXJhYmxlKTsKICAgICB9Ci0gICAgaW5pdE1lc3NhZ2VFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgcG9ydHMu
cmVsZWFzZSgpKTsKKyAgICBpbml0TWVzc2FnZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCB0cmFuc2ZlcmFibGVzLnJl
bGVhc2UoKSk7CiB9CiAKIGJvb2wgTWVzc2FnZUV2ZW50Ojppc01lc3NhZ2VFdmVudCgpIGNvbnN0
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IGI3ZjliMDIuLjEwMDhmOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTMwLDEyICszMCwxMyBAQAogCiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5o
IgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVy
YWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBET01XaW5kb3c7Cisg
ICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAKICAgICBjbGFzcyBNZXNzYWdlRXZlbnQgOiBwdWJsaWMg
RXZlbnQgewogICAgIHB1YmxpYzoKQEAgLTQzLDM2ICs0NCwzOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2
ZW50KTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+
IGNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzLCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSA9IDAsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gIiIs
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSAiIiwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNv
dXJjZSA9IDApCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRl
KFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhID0gMCwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSAi
IiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9ICIiLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4g
c291cmNlID0gMCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2lu
LCBsYXN0RXZlbnRJZCwgc291cmNlLCB0cmFuc2ZlcmFibGVzKSk7CiAgICAgICAgIH0KICAgICAg
ICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwg
UGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CisgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2Us
IFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+KTsKIAogICAgICAgICBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICAgICAg
VHJhbnNmZXJhYmxlQXJyYXkqIGRhdGFEZXBlbmRlbmNpZXMoKSBjb25zdCB7IHJldHVybiB0cmFu
c2ZlcmFibGVzKCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJl
dHVybiBtX29yaWdpbjsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0RXZlbnRJZDsgfQogICAgICAgICBET01XaW5kb3cqIHNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9Ci0gICAgICAgIE1lc3NhZ2VQb3J0QXJy
YXkqIHBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0cy5nZXQoKTsgfQorICAgICAgICBUcmFu
c2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmZXJh
Ymxlcy5nZXQoKTsgfQogCiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVw
ZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCisgICAgICAgIFRyYW5zZmVyYWJs
ZSogdHJhbnNmZXJhYmxlKCk7CiAgICAgICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCgpOwog
ICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmlu
ZGluZ3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBNZXNzYWdlUG9y
dCopOworICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
bGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBUcmFuc2ZlcmFibGUqKTsKIAogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKKyAgICAgICAgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093
blB0cjxUcmFuc2ZlcmFibGVBcnJheT4pOwogCiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1fZGF0YTsKICAgICAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgICAgICBTdHJp
bmcgbV9sYXN0RXZlbnRJZDsKICAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9zb3VyY2U7Ci0g
ICAgICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBtX3BvcnRzOworICAgICAgICBPd25QdHI8
VHJhbnNmZXJhYmxlQXJyYXk+IG1fdHJhbnNmZXJhYmxlczsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCmluZGV4IGNmNDViYjQu
LjI1MTMxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCkBAIC00NSw4ICs0NSwx
NyBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIGxhc3RFdmVu
dElkQXJnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NV2luZG93IHNvdXJjZUFyZywgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZh
dWx0VmFsdWVdIEFycmF5IG1lc3NhZ2VQb3J0cyk7CisKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB3
ZWJraXRJbml0TWVzc2FnZUV2ZW50KGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0g
RE9NU3RyaW5nIHR5cGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIGNhbkJ1
YmJsZUFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9u
YWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhQXJnLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG9yaWdpbkFyZywgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhE
ZWZhdWx0VmFsdWVdIERPTVN0cmluZyBsYXN0RXZlbnRJZEFyZywgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0
VmFsdWVdIERPTVdpbmRvdyBzb3VyY2VBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBBcnJh
eSB0cmFuc2ZlcmFibGVzKTsKICNlbHNlCi0gICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkg
dG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0
IGV4cG9zZSBhIHNpbmdsZSBwb3J0LgorICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRv
IGV4cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBl
eHBvc2UgYSBzaW5nbGUgTWVzc2FnZVBvcnQuCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBN
ZXNzYWdlUG9ydCBtZXNzYWdlUG9ydDsKIAogICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQo
aW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgdHlwZUFyZywgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA0NzJiOWIxLi44NjI2ODkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogTWVzc2FnZVBvcnQ6Ok1lc3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgOiBtX3N0YXJ0ZWQoZmFsc2UpCiAgICAgLCBtX2Ns
b3NlZChmYWxzZSkKKyAgICAsIG1fdHJhbnNmZXJDbG9zZWQoZmFsc2UpCiAgICAgLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5jcmVhdGVkTWVzc2FnZVBvcnQodGhpcyk7CkBAIC01OCw0MCAr
NTksNTIgQEAgTWVzc2FnZVBvcnQ6On5NZXNzYWdlUG9ydCgpCiB9CiAKIC8vIEZJWE1FOiByZW1v
dmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi12
b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwotICAgIGlmIChwb3J0KQotICAgICAg
ICBwb3J0cy5hcHBlbmQocG9ydCk7Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnBvcnRzLCBl
Yyk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlczsKKyAgICBpZiAodHJhbnNm
ZXJhYmxlKQorICAgICAgICB0cmFuc2ZlcmFibGVzLmFwcGVuZCh0cmFuc2ZlcmFibGUpOworICAg
IHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZ0cmFuc2ZlcmFibGVzLCBlYyk7CiB9CiAKIHZvaWQgTWVz
c2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBz
dGF0aWNfY2FzdDxNZXNzYWdlUG9ydEFycmF5Kj4oMCksIGVjKTsKKyAgICBwb3N0TWVzc2FnZSht
ZXNzYWdlLCBzdGF0aWNfY2FzdDxUcmFuc2ZlcmFibGVBcnJheSo+KDApLCBlYyk7CiB9CiAKLXZv
aWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyYWJsZXMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghaXNFbnRhbmdsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCi0gICAgT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKLSAgICAvLyBNYWtlIHN1cmUg
d2UgYXJlbid0IGNvbm5lY3RlZCB0byBhbnkgb2YgdGhlIHBhc3NlZC1pbiBwb3J0cy4KLSAgICBp
ZiAocG9ydHMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwb3J0cy0+
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIE1lc3NhZ2VQb3J0KiBkYXRhUG9ydCA9ICgqcG9y
dHMpW2ldLmdldCgpOwotICAgICAgICAgICAgaWYgKGRhdGFQb3J0ID09IHRoaXMgfHwgbV9lbnRh
bmdsZWRDaGFubmVsLT5pc0Nvbm5lY3RlZFRvKGRhdGFQb3J0KSkgewotICAgICAgICAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIE93
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzOworICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmVuJ3QgY29ubmVjdGVkIHRvIGFueSBvZiB0aGUgcGFzc2VkLWluIHRyYW5zZmVyYWJs
ZXMuCisgICAgaWYgKHRyYW5zZmVyYWJsZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgVHJh
bnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUgPSAoKnRyYW5zZmVyYWJsZXMpW2ldLmdldCgpOworICAg
ICAgICAgICAgaWYgKE1lc3NhZ2VQb3J0KiBkYXRhUG9ydCA9IHRyYW5zZmVyYWJsZS0+YXNNZXNz
YWdlUG9ydCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFQb3J0ID09IHRoaXMgfHwgbV9l
bnRhbmdsZWRDaGFubmVsLT5pc0Nvbm5lY3RlZFRvKGRhdGFQb3J0KSkgeworICAgICAgICAgICAg
ICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMsIGVjKTsKKyAg
ICAgICAgcmVjZWlwdHMgPSBUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KHRyYW5zZmVyYWJs
ZXMsIGVjKTsKICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVBvcnRDaGFu
bmVsOjpFdmVudERhdGE6OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscy5yZWxlYXNlKCkpKTsKKyAg
ICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVBvcnRDaGFu
bmVsOjpFdmVudERhdGE6OmNyZWF0ZShtZXNzYWdlLCByZWNlaXB0cy5yZWxlYXNlKCkpKTsKK30K
KworUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiBNZXNzYWdlUG9ydDo6dHJhbnNmZXJP
dXQoRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFtX2VudGFuZ2xlZENoYW5uZWwgfHwg
bV90cmFuc2ZlckNsb3NlZCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICByZXR1cm4gbV9lbnRhbmdsZWRDaGFubmVsLnJlbGVhc2UoKTsKKyAgICB9CisgICAgbV90
cmFuc2ZlckNsb3NlZCA9IHRydWU7CisgICAgcmV0dXJuIGRpc2VudGFuZ2xlKGVjKTsKIH0KIAog
UGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZShF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTE3OSw4ICsxOTIsOCBAQCB2b2lkIE1lc3NhZ2VQb3J0Ojpk
aXNwYXRjaE1lc3NhZ2VzKCkKICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAg
IE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBv
cnRzKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV2ZW50RGF0YS0+Y2hhbm5lbHMoKSk7Ci0g
ICAgICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUocG9ydHMucmVs
ZWFzZSgpLCBldmVudERhdGEtPm1lc3NhZ2UoKSk7CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFi
bGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxs
SW4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXZlbnREYXRhLT5yZWNlaXB0cygpKTsKKyAg
ICAgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0cmFuc2ZlcmFi
bGVzLnJlbGVhc2UoKSwgZXZlbnREYXRhLT5tZXNzYWdlKCkpOwogCiAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgICAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsK
QEAgLTIwNCw0OCArMjE3LDYgQEAgTWVzc2FnZVBvcnQqIE1lc3NhZ2VQb3J0Ojpsb2NhbGx5RW50
YW5nbGVkUG9ydCgpCiAgICAgcmV0dXJuIG1fZW50YW5nbGVkQ2hhbm5lbCA/IG1fZW50YW5nbGVk
Q2hhbm5lbC0+bG9jYWxseUVudGFuZ2xlZFBvcnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSA6
IDA7CiB9CiAKLVBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IE1lc3NhZ2VQb3J0
OjpkaXNlbnRhbmdsZVBvcnRzKGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzLCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXBvcnRzIHx8ICFwb3J0cy0+c2l6ZSgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIEhhc2hTZXQgdXNlZCB0byBlZmZpY2llbnRseSBj
aGVjayBmb3IgZHVwbGljYXRlcyBpbiB0aGUgcGFzc2VkLWluIGFycmF5LgotICAgIEhhc2hTZXQ8
TWVzc2FnZVBvcnQqPiBwb3J0U2V0OwotCi0gICAgLy8gV2FsayB0aGUgaW5jb21pbmcgYXJyYXkg
LSBpZiB0aGVyZSBhcmUgYW55IGR1cGxpY2F0ZSBwb3J0cywgb3IgbnVsbCBwb3J0cyBvciBjbG9u
ZWQgcG9ydHMsIHRocm93IGFuIGVycm9yIChwZXIgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUg
c3BlYykuCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwb3J0cy0+c2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgTWVzc2FnZVBvcnQqIHBvcnQgPSAoKnBvcnRzKVtpXS5nZXQoKTsKLSAg
ICAgICAgaWYgKCFwb3J0IHx8IHBvcnQtPmlzQ2xvbmVkKCkgfHwgcG9ydFNldC5jb250YWlucyhw
b3J0KSkgewotICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHBvcnRTZXQuYWRkKHBvcnQpOwot
ICAgIH0KLQotICAgIC8vIFBhc3NlZC1pbiBwb3J0cyBwYXNzZWQgdmFsaWRpdHkgY2hlY2tzLCBz
byB3ZSBjYW4gZGlzZW50YW5nbGUgdGhlbS4KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IHBvcnRBcnJheSA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENoYW5uZWxBcnJheShw
b3J0cy0+c2l6ZSgpKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDAgOyBpIDwgcG9ydHMt
PnNpemUoKSA7ICsraSkgewotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFu
bmVsID0gKCpwb3J0cylbaV0tPmRpc2VudGFuZ2xlKGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7
IC8vIENhbid0IGdlbmVyYXRlIGV4Y2VwdGlvbiBoZXJlIGlmIHBhc3NlZCBhYm92ZSBjaGVja3Mu
Ci0gICAgICAgICgqcG9ydEFycmF5KVtpXSA9IGNoYW5uZWwucmVsZWFzZSgpOwotICAgIH0KLSAg
ICByZXR1cm4gcG9ydEFycmF5LnJlbGVhc2UoKTsKLX0KLQotUGFzc093blB0cjxNZXNzYWdlUG9y
dEFycmF5PiBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykK
LXsKLSAgICBpZiAoIWNoYW5uZWxzIHx8ICFjaGFubmVscy0+c2l6ZSgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0QXJyYXkgPSBh
ZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJheShjaGFubmVscy0+c2l6ZSgpKSk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjaGFubmVscy0+c2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZShjb250ZXh0
KTsKLSAgICAgICAgcG9ydC0+ZW50YW5nbGUoKCpjaGFubmVscylbaV0ucmVsZWFzZSgpKTsKLSAg
ICAgICAgKCpwb3J0QXJyYXkpW2ldID0gcG9ydC5yZWxlYXNlKCk7Ci0gICAgfQotICAgIHJldHVy
biBwb3J0QXJyYXkucmVsZWFzZSgpOwotfQotCiBFdmVudFRhcmdldERhdGEqIE1lc3NhZ2VQb3J0
OjpldmVudFRhcmdldERhdGEoKQogewogICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IDNhODQwZmUuLmIwMGZlNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFu
bmVsLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
QEAgLTQ1LDIyICs0NiwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2Fn
ZVBvcnQ7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotICAgIC8vIFRoZSBv
dmVyd2hlbG1pbmdseSBjb21tb24gY2FzZSBpcyBzZW5kaW5nIGEgc2luZ2xlIHBvcnQsIHNvIGhh
bmRsZSB0aGF0IGVmZmljaWVudGx5IHdpdGggYW4gaW5saW5lIGJ1ZmZlciBvZiBzaXplIDEuCi0g
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJh
eTsKLQogICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBpbmhlcml0IGZyb20gQWN0aXZl
RE9NT2JqZWN0IGFuZCB1c2UKICAgICAvLyBzZXRQZW5kaW5nQWN0aXZpdHkgLyB1bnNldFBlbmRp
bmdBY3Rpdml0eSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0
J3MgZmVhdHVyZXMgYW5kIHJlbHlpbmcgb24gSmF2YVNjcmlwdCBnYXJiYWdlIGNvbGxlY3Rpb24K
ICAgICAvLyB0byBnZXQgaXRzIGxpZmV0aW1lIHJpZ2h0LgotICAgIGNsYXNzIE1lc3NhZ2VQb3J0
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQgewor
ICAgIGNsYXNzIE1lc3NhZ2VQb3J0IDogcHVibGljIFRyYW5zZmVyYWJsZSwgcHVibGljIEV2ZW50
VGFyZ2V0IHsKICAgICBwdWJsaWM6CisgICAgICAgIE1lc3NhZ2VQb3J0KiBhc01lc3NhZ2VQb3J0
KCkgeyByZXR1cm4gdGhpczsgfQorCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VQ
b3J0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VQb3J0KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpKTsgfQogICAgICAgICB+TWVzc2FnZVBvcnQoKTsKIAogICAgICAgICB2b2lkIHBvc3RNZXNz
YWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZUFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
ICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGlu
Z3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAg
IHZvaWQgc3RhcnQoKTsKICAgICAgICAgdm9pZCBjbG9zZSgpOwpAQCAtNjgsMTQgKzY4LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGVudGFuZ2xlKFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsPik7CiAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
PiBkaXNlbnRhbmdsZShFeGNlcHRpb25Db2RlJik7CiAKLSAgICAgICAgLy8gRGlzZW50YW5nbGUg
YW4gYXJyYXkgb2YgcG9ydHMsIHJldHVybmluZyB0aGUgZW50YW5nbGVkIGNoYW5uZWxzLgotICAg
ICAgICAvLyBQZXIgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYywgZ2VuZXJhdGVzIGFu
IElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBpZiBhbnkgb2YgdGhlIHBhc3NlZCBwb3J0cyBh
cmUgbnVsbCBvciBub3QgZW50YW5nbGVkLgotICAgICAgICAvLyBSZXR1cm5zIDAgaWYgdGhlcmUg
aXMgYW4gZXhjZXB0aW9uLCBvciBpZiB0aGUgcGFzc2VkLWluIGFycmF5IGlzIDAvZW1wdHkuCi0g
ICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBkaXNlbnRh
bmdsZVBvcnRzKGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25Db2RlJik7Ci0KLSAg
ICAgICAgLy8gRW50YW5nbGVzIGFuIGFycmF5IG9mIGNoYW5uZWxzLCByZXR1cm5pbmcgYW4gYXJy
YXkgb2YgTWVzc2FnZVBvcnRzIGluIG1hdGNoaW5nIG9yZGVyLgotICAgICAgICAvLyBSZXR1cm5z
IDAgaWYgdGhlIHBhc3NlZCBhcnJheSBpcyAwL2VtcHR5LgotICAgICAgICBzdGF0aWMgUGFzc093
blB0cjxNZXNzYWdlUG9ydEFycmF5PiBlbnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgIGJvb2wg
aXNUcmFuc2ZlckNsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmZXJDbG9zZWQ7IH0KKyAg
ICAgICAgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiB0cmFuc2Zlck91dChFeGNlcHRp
b25Db2RlJik7CiAKICAgICAgICAgdm9pZCBtZXNzYWdlQXZhaWxhYmxlKCk7CiAgICAgICAgIGJv
b2wgc3RhcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRlZDsgfQpAQCAtODgsOCArODIsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKCk7
CiAKLSAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxNZXNzYWdlUG9ydD46OnJlZjsKLSAgICAgICAg
dXNpbmcgUmVmQ291bnRlZDxNZXNzYWdlUG9ydD46OmRlcmVmOworICAgICAgICB1c2luZyBSZWZD
b3VudGVkPFRyYW5zZmVyYWJsZT46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFu
c2ZlcmFibGU+OjpkZXJlZjsKIAogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpOwog
CkBAIC0xMDUsOSArOTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIE5PVEU6
IFRoaXMgaXMgdXNlZCBzb2xlbHkgdG8gZW5hYmxlIGEgR0Mgb3B0aW1pemF0aW9uLiBTb21lIHBs
YXRmb3JtcyBtYXkgbm90IGJlIGFibGUgdG8gZGV0ZXJtaW5lIG93bmVyc2hpcCBvZiB0aGUgcmVt
b3RlIHBvcnQgKHNpbmNlIGl0IG1heSBsaXZlIGNyb3NzLXByb2Nlc3MpIC0gdGhvc2UgcGxhdGZv
cm1zIG1heSBhbHdheXMgcmV0dXJuIG51bGwuCiAgICAgICAgIE1lc3NhZ2VQb3J0KiBsb2NhbGx5
RW50YW5nbGVkUG9ydCgpOwogICAgICAgICAvLyBBIHBvcnQgc3RhcnRzIG91dCBpdHMgbGlmZSBl
bnRhbmdsZWQsIGFuZCByZW1haW5zIGVudGFuZ2xlZCB1bnRpbCBpdCBpcyBjbG9zZWQgb3IgaXMg
Y2xvbmVkLgotICAgICAgICBib29sIGlzRW50YW5nbGVkKCkgeyByZXR1cm4gIW1fY2xvc2VkICYm
ICFpc0Nsb25lZCgpOyB9CisgICAgICAgIGJvb2wgaXNFbnRhbmdsZWQoKSBjb25zdCB7IHJldHVy
biAhbV9jbG9zZWQgJiYgIWlzQ2xvbmVkKCk7IH0KICAgICAgICAgLy8gQSBwb3J0IGlzIGNsb25l
ZCBpZiBpdHMgZW50YW5nbGVkIGNoYW5uZWwgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgc2VudCB0byBh
IG5ldyBvd25lciB2aWEgcG9zdE1lc3NhZ2UoKS4KLSAgICAgICAgYm9vbCBpc0Nsb25lZCgpIHsg
cmV0dXJuICFtX2VudGFuZ2xlZENoYW5uZWw7IH0KKyAgICAgICAgYm9vbCBpc0Nsb25lZCgpIGNv
bnN0IHsgcmV0dXJuICFtX2VudGFuZ2xlZENoYW5uZWw7IH0KIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIE1lc3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKQEAgLTEyMSw2ICsxMTUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX3N0YXJ0ZWQ7CiAgICAg
ICAgIGJvb2wgbV9jbG9zZWQ7CisgICAgICAgIGJvb2wgbV90cmFuc2ZlckNsb3NlZDsKIAogICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAg
ICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuaWRsCmluZGV4IDI4ODMzY2UuLmY0NTM3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmlkbApAQCAtMzgsNiArMzgsOSBAQCBtb2R1bGUgZXZlbnRzIHsKICNpZiBkZWZpbmVk
KExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICAgICAgW0N1
c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09wdGlvbmFs
XSBBcnJheSBtZXNzYWdlUG9ydHMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
KyAgICAgICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRQb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVz
c2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSB0cmFuc2ZlcikKKyAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworCiAgICAgICAgIHZvaWQgc3RhcnQoKTsKICAgICAgICAgdm9pZCBjbG9z
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCmluZGV4IDM2
N2Y3ZWQuLjkxNzdkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwu
Y3BwCkBAIC0zMCwxOCArMzAsMjkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUG9ydENoYW5uZWwuaCIKIAorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogCi1QYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnRE
YXRhPiBNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBjaGFubmVscykKK1Bhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERh
dGE+IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlw
dEFycmF5PiByZWNlaXB0cykKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50RGF0YSht
ZXNzYWdlLCBjaGFubmVscykpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXZlbnREYXRhKG1l
c3NhZ2UsIHJlY2VpcHRzKSk7CiB9CiAKLU1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpF
dmVudERhdGEoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorTWVzc2FnZVBvcnRDaGFu
bmVsOjpFdmVudERhdGE6OkV2ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRz
KQogICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQor
ICAgICwgbV9yZWNlaXB0cyhyZWNlaXB0cykKK3sKK30KKworUGFzc1JlZlB0cjxUcmFuc2ZlcmFi
bGU+IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJhbnNmZXJJbihQYXNzT3duUHRyPFRyYW5zZmVyYWJs
ZVJlY2VpcHQ+IHRyYW5zZmVyYWJsZVJlY2VpcHQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiB7CisgICAgQVNTRVJUKHRyYW5zZmVyYWJsZVJlY2VpcHQtPmFzTWVzc2FnZVBvcnRD
aGFubmVsKCkpOworICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwgPSBhZG9w
dFB0cih0cmFuc2ZlcmFibGVSZWNlaXB0LmxlYWtQdHIoKS0+YXNNZXNzYWdlUG9ydENoYW5uZWwo
KSk7CisgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZShj
b250ZXh0KTsKKyAgICBwb3J0LT5lbnRhbmdsZShjaGFubmVsLnJlbGVhc2UoKSk7CisgICAgcmV0
dXJuIHBvcnQucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmgKaW5kZXggMDc2NjhhNC4uMDdmMzdmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCiAKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTUwLDE0ICs1MSwxNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
ICAgICBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKLSAgICAvLyBUaGUgb3ZlcndoZWxt
aW5nbHkgY29tbW9uIGNhc2UgaXMgc2VuZGluZyBhIHNpbmdsZSBwb3J0LCBzbyBoYW5kbGUgdGhh
dCBlZmZpY2llbnRseSB3aXRoIGFuIGlubGluZSBidWZmZXIgb2Ygc2l6ZSAxLgotICAgIHR5cGVk
ZWYgVmVjdG9yPE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+LCAxPiBNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheTsKLQogICAgIC8vIE1lc3NhZ2VQb3J0Q2hhbm5lbCBpcyBhIHBsYXRmb3JtLWluZGVw
ZW5kZW50IGludGVyZmFjZSB0byB0aGUgcmVtb3RlIHNpZGUgb2YgYSBtZXNzYWdlIGNoYW5uZWwu
CiAgICAgLy8gSXQgYWN0cyBhcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBwbGF0Zm9ybS1kZXBlbmRl
bnQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwgaW1wbGVtZW50YXRpb24gd2hpY2ggZW5zdXJl
cyB0aGF0IHRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgY2xvc2UoKSBtZXRob2QgaXMgaW52b2tlZCBi
ZWZvcmUgZGVzdHJ1Y3Rpb24uCi0gICAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsIHsKKyAgICBj
bGFzcyBNZXNzYWdlUG9ydENoYW5uZWwgOiBwdWJsaWMgVHJhbnNmZXJhYmxlUmVjZWlwdCB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lc3NhZ2VQb3J0Q2hhbm5lbCk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVs
KiBhc01lc3NhZ2VQb3J0Q2hhbm5lbCgpIHsgcmV0dXJuIHRoaXM7IH0KKworICAgICAgICBQYXNz
UmVmUHRyPFRyYW5zZmVyYWJsZT4gdHJhbnNmZXJJbihQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJl
Y2VpcHQ+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgICAgIGJvb2wgaXNGbGF0dGVu
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAgICAgc3RhdGljIHZvaWQgY3Jl
YXRlQ2hhbm5lbChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiwgUGFzc1JlZlB0cjxNZXNzYWdlUG9y
dD4pOwogCiAgICAgICAgIC8vIENyZWF0ZXMgYSBuZXcgd3JhcHBlciBmb3IgdGhlIHBhc3NlZCBj
aGFubmVsLgpAQCAtODIsMTUgKzg1LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Y2xhc3MgRXZlbnREYXRhIHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50
RGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6Ci0gICAgICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxFdmVudERhdGE+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsK
KyAgICAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2ZW50RGF0YT4gY3JlYXRlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+KTsKIAogICAgICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBtZXNzYWdlKCkg
eyByZXR1cm4gbV9tZXNzYWdlLmdldCgpOyB9Ci0gICAgICAgICAgICBQYXNzT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscygpIHsgcmV0dXJuIG1fY2hhbm5lbHMucmVsZWFz
ZSgpOyB9CisgICAgICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4g
cmVjZWlwdHMoKSB7IHJldHVybiBtX3JlY2VpcHRzLnJlbGVhc2UoKTsgfQogCiAgICAgICAgIHBy
aXZhdGU6Ci0gICAgICAgICAgICBFdmVudERhdGEoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKKyAg
ICAgICAgICAgIEV2ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KTsKICAgICAgICAgICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKLSAgICAgICAgICAgIE93
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKKyAgICAgICAgICAgIE93
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IG1fcmVjZWlwdHM7CiAgICAgICAgIH07CiAK
ICAgICAgICAgLy8gU2VuZHMgYSBtZXNzYWdlIGFuZCBvcHRpb25hbCBjbG9uZWQgcG9ydCB0byB0
aGUgcmVtb3RlIHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAppbmRleCAwYTk4MzEz
Li5kMmQ5MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKQEAgLTMwLDYgKzMwLDEx
IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKIAorY2xhc3MgVHJhbnNmZXJhYmxlOworY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKK3R5
cGVkZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsK
K3R5cGVkZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKQEAgLTQyLDcgKzQ3LDggQEAgcHVibGljOgogICAgIHZvaWQgaW5pdFBv
cFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIGJv
b2wgaXNQb3BTdGF0ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVPYmplY3QuZ2V0
KCk7IH0gICAgCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGVPYmplY3QuZ2V0KCk7IH0KKyAgICBUcmFuc2ZlcmFibGVBcnJheSogZGF0YURl
cGVuZGVuY2llcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogcHJpdmF0ZToKICAgICBQb3BTdGF0
ZUV2ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjVmNTBlMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJhbnNmZXJhYmxlLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKKyNpbmNsdWRl
ICJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
PiBUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2Zl
cmFibGVzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXRyYW5zZmVyYWJsZXMgfHwg
IXRyYW5zZmVyYWJsZXMtPnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAv
LyBIYXNoU2V0IHVzZWQgdG8gZWZmaWNpZW50bHkgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgaW4gdGhl
IHBhc3NlZC1pbiBhcnJheS4KKyAgICBIYXNoU2V0PFRyYW5zZmVyYWJsZSo+IHRyYW5zZmVyYWJs
ZVNldDsKKworICAgIC8vIFdhbGsgdGhlIGluY29taW5nIGFycmF5IC0gaWYgdGhlcmUgYXJlIGFu
eSBkdXBsaWNhdGUgdHJhbnNmZXJhYmxlcywgb3IgdHJhbnNmZXJyZWQgcG9ydHMgb3IgY2xvc2Vk
IHBvcnRzLCB0aHJvdyBhbiBlcnJvciAocGVyIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNw
ZWMpLgorICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUgPSAoKnRyYW5z
ZmVyYWJsZXMpW2ldLmdldCgpOworICAgICAgICBpZiAoIXRyYW5zZmVyYWJsZSB8fCB0cmFuc2Zl
cmFibGUtPmlzVHJhbnNmZXJDbG9zZWQoKSB8fCB0cmFuc2ZlcmFibGVTZXQuY29udGFpbnModHJh
bnNmZXJhYmxlKSkgeworICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHRyYW5zZmVyYWJsZVNl
dC5hZGQodHJhbnNmZXJhYmxlKTsKKyAgICB9CisKKyAgICAvLyBQYXNzZWQtaW4gVHJhbnNmZXJh
YmxlcyBwYXNzZWQgdmFsaWRpdHkgY2hlY2tzLCBzbyB3ZSBjYW4gdHJhbnNmZXIgdGhlbSBvdXQu
CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdEFycmF5ID0gYWRv
cHRQdHIobmV3IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSh0cmFuc2ZlcmFibGVzLT5zaXplKCkp
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMCA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXpl
KCkgOyArK2kpIHsKKyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+IHJlY2VpcHQg
PSAoKnRyYW5zZmVyYWJsZXMpW2ldLT50cmFuc2Zlck91dChlYyk7CisgICAgICAgIEFTU0VSVCgh
ZWMpOyAvLyBDYW4ndCBnZW5lcmF0ZSBleGNlcHRpb24gaGVyZSBpZiBwYXNzZWQgYWJvdmUgY2hl
Y2tzLgorICAgICAgICAoKnJlY2VpcHRBcnJheSlbaV0gPSByZWNlaXB0LnJlbGVhc2UoKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJlY2VpcHRBcnJheS5yZWxlYXNlKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hYjI3NjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyYW5zZmVyYWJsZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNp
Zm5kZWYgVHJhbnNmZXJhYmxlX2gKKyNkZWZpbmUgVHJhbnNmZXJhYmxlX2gKKworI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIE1lc3NhZ2VQb3J0Q2hh
bm5lbDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBUcmFuc2ZlcmFibGU7
CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OworCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJh
bnNmZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8
VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKKworLy8g
VHJhbnNmZXJhYmxlIG9iamVjdHMgcmVwcmVzZW50IHJlc291cmNlcyB0aGF0IG1heSBiZSBzZW50
IGFsb25nIHdpdGggbWVzc2FnZXMKKy8vIHRocm91Z2ggdGhlIERPTSBtZXNzYWdpbmcgQVBJLiBB
IFRyYW5zZmVyYWJsZSBvYmplY3QgbWF5IGJlIHRyYW5zZmVycmVkIG9uY2UuCisvLyBJbnRlcm5h
bGx5LCB0cmFuc2ZlcnJpbmcgYSBUcmFuc2ZlcmFibGUgbWVhbnMgdHVybmluZyBpdCBpbnRvIGEg
VHJhbnNmZXJhYmxlUmVjZWlwdCwKKy8vIGZlcnJ5aW5nIHRoYXQgVHJhbnNmZXJhYmxlUmVjZWlw
dCB0aHJvdWdoIHRoZSBzeXN0ZW0gYWxvbmcgd2l0aCBhIG1lc3NhZ2UsIGFuZAorLy8gZXZlbnR1
YWxseSB0dXJuaW5nIGl0IGJhY2sgaW50byBhIFRyYW5zZmVyYWJsZSBvbmNlIHRoZSBtZXNzYWdl
IGlzIHJlY2VpdmVkLgorLy8gVGhpcyBzZWNvbmQgVHJhbnNmZXJhYmxlIG9iamVjdCBjYW4gdGhl
biBiZSB0cmFuc2ZlcmVkIG9uY2UgYWdhaW4uCitjbGFzcyBUcmFuc2ZlcmFibGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxUcmFuc2ZlcmFibGU+IHsKK3B1YmxpYzoKKyAgICAvLyBBcyBtb3JlIFRyYW5z
ZmVyYWJsZSB0eXBlcyBhcmUgYWRkZWQsIHNvbWUgYmluZGluZyBjb2RlIG11c3QgYmUgdXBkYXRl
ZDoKKyAgICAvLyAgIHRvTmF0aXZlVHJhbnNmZXJhYmxlL3RvSlNUcmFuc2ZlcmFibGUgaW4gSlNN
ZXNzYWdlUG9ydEN1c3RvbS5jcHAKKyAgICAvLyAgIHRvTmF0aXZlVHJhbnNmZXJhYmxlL3RvVjhU
cmFuc2ZlcmFibGUgaW4gVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKKyAgICB2aXJ0dWFsIE1lc3Nh
Z2VQb3J0KiBhc01lc3NhZ2VQb3J0KCkgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBQYXNz
T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+IHRyYW5zZmVyT3V0KEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzVHJhbnNmZXJDbG9zZWQoKSBjb25zdCA9IDA7CisKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHRyYW5zZmVyQWxs
T3V0KFRyYW5zZmVyYWJsZUFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgdmlydHVhbCB+
VHJhbnNmZXJhYmxlKCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBUcmFuc2ZlcmFibGUoKSB7IH0K
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRyYW5zZmVyYWJsZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFmNTc5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNwcApAQCAtMCwwICsxLDQ2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUu
aCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCisKKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJhYmxl
QXJyYXk+IFRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJl
Y2VpcHRzKQoreworICAgIGlmICghcmVjZWlwdHMgfHwgIXJlY2VpcHRzLT5zaXplKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFu
c2ZlcmFibGVBcnJheSA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVBcnJheShyZWNlaXB0cy0+
c2l6ZSgpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCByZWNlaXB0cy0+c2l6
ZSgpOyArK2kpCisgICAgICAgICgqdHJhbnNmZXJhYmxlQXJyYXkpW2ldID0gKCpyZWNlaXB0cylb
aV0tPnRyYW5zZmVySW4oKCpyZWNlaXB0cylbaV0ucmVsZWFzZSgpLCBjb250ZXh0KTsKKyAgICBy
ZXR1cm4gdHJhbnNmZXJhYmxlQXJyYXkucmVsZWFzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlUmVjZWlw
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2I2ZDMwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuaApAQCAtMCwwICsxLDc1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICoKKyAqLworCisjaWZuZGVmIFRyYW5zZmVyYWJsZVJlY2VpcHRfaAorI2RlZmluZSBUcmFu
c2ZlcmFibGVSZWNlaXB0X2gKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKworI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXNz
YWdlUG9ydDsKK2NsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CitjbGFzcyBUcmFuc2ZlcmFibGU7CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0
OworCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJhbnNmZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxl
QXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKKworLy8gQSBUcmFuc2ZlcmFibGVSZWNlaXB0IGlzIGEg
VHJhbnNmZXJhYmxlIG9iamVjdCB0aGF0IGlzIGJlaW5nIHNlbnQgYWxvbmcgd2l0aCBzb21lCisv
LyBtZXNzYWdlLiBJdCBtYXkgbGF0ZXIgYmUgcmVkZWVtZWQgZm9yIGEgVHJhbnNmZXJhYmxlIG9i
amVjdCBlcXVpdmFsZW50IHRvIHRoZSBvbmUKKy8vIGZyb20gd2hpY2ggdGhpcyBUcmFuc2ZlcmFi
bGVSZWNlaXB0IHdhcyBjcmVhdGVkLiBBIFRyYW5zZmVyYWJsZVJlY2VpcHQgbWF5IG9ubHkKKy8v
IGJlIHJlZGVlbWVkIG9uY2UuIFNvbWUgVHJhbnNmZXJhYmxlUmVjZWlwdHMgbWF5IGJlIGZsYXR0
ZW5lZCBieSB0aGUgc2VyaWFsaXplcgorLy8gKGFuIGV2ZW50IHRoYXQgbWF5IG9jY3VyIHNob3Vs
ZCwgZm9yIGV4YW1wbGUsIHRoZSByZWNlaXB0IG5lZWQgdG8gYmUgc2VudCBhY3Jvc3MKKy8vIHRo
ZSBuZXR3b3JrIG9yIGFuIElQQyBib3VuZGFyeSkuIE90aGVycyBtYXkgaGF2ZSBzcGVjaWFsIHBs
YXRmb3JtLXNwZWNpZmljIHNlbWFudGljcworLy8gdGhhdCBhcmUgaW52b2tlZCBhdCB0cmFuc2Zl
ciB0aW1lLgorY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+VHJhbnNmZXJhYmxlUmVjZWlwdCgpIHsgfQorCisgICAgdmlydHVhbCBNZXNzYWdlUG9ydENo
YW5uZWwqIGFzTWVzc2FnZVBvcnRDaGFubmVsKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0ZsYXR0ZW5hYmxlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFRyYW5zZmVyYWJsZT4gdHJhbnNmZXJJbihQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgPSAwOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8
VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyQWxsSW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CisKK3Byb3RlY3RlZDoKKyAg
ICBUcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBUcmFuc2ZlcmFibGVSZWNlaXB0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNv
bm5lY3Rpb24uY3BwCmluZGV4IGJkYTNlZTMuLmY2Y2NhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcDJwL1Bl
ZXJDb25uZWN0aW9uLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246
OnBvc3RTdGFydE5lZ290aWF0aW9uVGFzaygpCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRj
aE1lc3NhZ2VFdmVudChjb25zdCBpbnQmLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gZGF0YSkKIHsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkID0gZGF0YTsK
LSAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRBcnJheT4oKSwgZCkpOworICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVh
dGUoUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4oKSwgZCkpOwogfQogCiB2b2lkIFBlZXJD
b25uZWN0aW9uOjpkaXNwYXRjaFNpZ25hbGluZ0V2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2Y2E1YjM3Li5jMjgxZDk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC05MCw2ICs5MCw4IEBACiAjaW5jbHVkZSAiU3RvcmFn
ZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIlN0eWxlTWVkaWEuaCIKICNpbmNsdWRlICJTdWRkZW5U
ZXJtaW5hdGlvbi5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgorI2luY2x1ZGUgIlRyYW5z
ZmVyYWJsZVJlY2VpcHQuaCIKICNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgogI2luY2x1ZGUgIldp
bmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtMTIxLDIwICsxMjMsMjAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyIDogcHVibGlj
IFRpbWVyQmFzZSB7CiBwdWJsaWM6Ci0gICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdp
bmRvdywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgU2VjdXJpdHlPcmlnaW4qIHRh
cmdldE9yaWdpbikKKyAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdpbmRvdyogd2luZG93LCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4sIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8VHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cywgU2VjdXJpdHlPcmlnaW4qIHRhcmdldE9yaWdp
bikKICAgICAgICAgOiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKG1lc3Nh
Z2UpCiAgICAgICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQogICAgICAgICAsIG1fc291cmNl
KHNvdXJjZSkKLSAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICAgICAsIG1fcmVj
ZWlwdHMocmVjZWlwdHMpCiAgICAgICAgICwgbV90YXJnZXRPcmlnaW4odGFyZ2V0T3JpZ2luKQog
ICAgIHsKICAgICB9CiAKICAgICBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIE93blB0cjxNZXNzYWdl
UG9ydEFycmF5PiBtZXNzYWdlUG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqY29u
dGV4dCwgbV9jaGFubmVscy5yZWxlYXNlKCkpOwotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50
OjpjcmVhdGUobWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdlLCBtX29yaWdpbiwgIiIs
IG1fc291cmNlKTsKKyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFi
bGVzID0gVHJhbnNmZXJhYmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJbigqY29udGV4dCwgbV9yZWNl
aXB0cy5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUodHJh
bnNmZXJhYmxlcy5yZWxlYXNlKCksIG1fbWVzc2FnZSwgbV9vcmlnaW4sICIiLCBtX3NvdXJjZSk7
CiAgICAgfQogICAgIFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX3RhcmdldE9yaWdpbi5nZXQoKTsgfQogCkBAIC0xNDksNyArMTUxLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgU3RyaW5n
IG1fb3JpZ2luOwogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNlOwotICAgIE93blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKKyAgICBPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5PiBtX3JlY2VpcHRzOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
bV90YXJnZXRPcmlnaW47CiB9OwogCkBAIC03OTgsMTUgKzgwMCwxNSBAQCBDT01QSUxFX0FTU0VS
VChzdGF0aWNfY2FzdDxpbnQ+KERPTVdpbmRvdzo6UEVSU0lTVEVOVCkgPT0gc3RhdGljX2Nhc3Q8
aW50PihBc3luYwogCiAjZW5kaWYKIAotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwg
Y29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUsIGNvbnN0
IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsKLSAgICBpZiAocG9ydCkKLSAgICAg
ICAgcG9ydHMuYXBwZW5kKHBvcnQpOwotICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZwb3J0cywg
dGFyZ2V0T3JpZ2luLCBzb3VyY2UsIGVjKTsKKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2Zl
cmFibGVzOworICAgIGlmICh0cmFuc2ZlcmFibGUpCisgICAgICAgIHRyYW5zZmVyYWJsZXMuYXBw
ZW5kKHRyYW5zZmVyYWJsZSk7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnRyYW5zZmVyYWJs
ZXMsIHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CiB9CiAKLXZvaWQgRE9NV2luZG93Ojpwb3N0
TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3Qg
TWVzc2FnZVBvcnRBcnJheSogcG9ydHMsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01X
aW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERPTVdpbmRvdzo6cG9zdE1l
c3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVy
YWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9N
V2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghbV9mcmFtZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtODIyLDcgKzgyNCw3IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0
TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3Qg
TWVzCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMsIGVjKTsK
KyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IFRyYW5zZmVy
YWJsZTo6dHJhbnNmZXJBbGxPdXQodHJhbnNmZXJhYmxlcywgZWMpOwogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuOwogCkBAIC04MzQsNyArODM2LDcgQEAgdm9pZCBET01XaW5kb3c6OnBvc3RN
ZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBN
ZXMKICAgICBTdHJpbmcgc291cmNlT3JpZ2luID0gc291cmNlRG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCktPnRvU3RyaW5nKCk7CiAKICAgICAvLyBTY2hlZHVsZSB0aGUgbWVzc2FnZS4KLSAgICBQ
b3N0TWVzc2FnZVRpbWVyKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKHRoaXMsIG1lc3Nh
Z2UsIHNvdXJjZU9yaWdpbiwgc291cmNlLCBjaGFubmVscy5yZWxlYXNlKCksIHRhcmdldC5nZXQo
KSk7CisgICAgUG9zdE1lc3NhZ2VUaW1lciogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcih0
aGlzLCBtZXNzYWdlLCBzb3VyY2VPcmlnaW4sIHNvdXJjZSwgcmVjZWlwdHMucmVsZWFzZSgpLCB0
YXJnZXQuZ2V0KCkpOwogICAgIHRpbWVyLT5zdGFydE9uZVNob3QoMCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCmluZGV4IGEyYWQ4MDkuLmRiMmUzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaApAQCAtNzQsNyArNzQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgc3RydWN0
IFdpbmRvd0ZlYXR1cmVzOwogCi0gICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
PiwgMT4gTWVzc2FnZVBvcnRBcnJheTsKKyAgICBjbGFzcyBUcmFuc2ZlcmFibGU7CisgICAgY2xh
c3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJhbnNm
ZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7CisgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRy
PFRyYW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CiAKICAg
ICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBAIC0yMjgsOSArMjMxLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKICAgICAgICAgdm9p
ZCByZXNldEdlb2xvY2F0aW9uKCk7CiAKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJh
eSosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0
aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGVBcnJheSosIGNvbnN0IFN0cmluZyYg
dGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAg
ICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3Mg
KGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIGNvbnN0IFN0cmluZyYgdGFy
Z2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBUcmFuc2ZlcmFibGUqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBz
b3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRpbWVyRmly
ZWQoUGFzc093blB0cjxQb3N0TWVzc2FnZVRpbWVyPik7CiAKICAgICAgICAgdm9pZCBzY3JvbGxC
eShpbnQgeCwgaW50IHkpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDYy
ZjFjMzAuLmNiZTVmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTIxNSw5ICsy
MTUsMTEgQEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBU
KSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCiAgICAgICAgIFtEb05vdENoZWNrRG9tYWluU2VjdXJp
dHksIEN1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVz
c2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdlUG9ydHMsIGluIERPTVN0cmluZyB0YXJn
ZXRPcmlnaW4pCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0Rv
Tm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHdlYmtpdFBvc3RNZXNzYWdlKGlu
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IHRyYW5z
ZmVyTGlzdCwgaW4gRE9NU3RyaW5nIHRhcmdldE9yaWdpbikKKyAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgLy8gVGhlcmUncyBubyBnb29kIHdheSB0byBl
eHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRpbmdzLCBzbyBmb3Igbm93IGp1c3QgYWxs
b3cgcGFzc2luZyBpbiBhIHNpbmdsZSBwb3J0LgotICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNl
Y3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVl
IG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQsIGluIERPTVN0
cmluZyB0YXJnZXRPcmlnaW4pCisgICAgICAgIFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1
c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwg
aW4gW09wdGlvbmFsXSBNZXNzYWdlUG9ydCB0cmFuc2ZlciwgaW4gRE9NU3RyaW5nIHRhcmdldE9y
aWdpbikKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkN1cnNvci5oCmluZGV4IDlhZGU5YzguLjJmNGNlYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJDdXJzb3IuaApAQCAtNDMsNiArNDMsOCBAQCBjbGFzcyBJREJSZXF1ZXN0Owog
Y2xhc3MgSURCVHJhbnNhY3Rpb247CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgVHJhbnNmZXJhYmxlOwordHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5OwogCiBjbGFz
cyBJREJDdXJzb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJDdXJzb3I+IHsKIHB1YmxpYzoKQEAg
LTYzLDYgKzY1LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25z
dDsKICAgICBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0OwogICAgIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSgpIGNvbnN0OworICAgIC8vIEFuIElu
ZGV4ZWREQiBvbmx5IGhvbGRzIGZsYXR0ZW5lZCBkYXRhLgorICAgIFRyYW5zZmVyYWJsZUFycmF5
KiB2YWx1ZURlcGVuZGVuY2llcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICBJREJBbnkqIHNv
dXJjZSgpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiB1cGRhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgRXhj
ZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5jcHAKaW5kZXggNTRiNWJhOC4uZDM2ZDJkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCkBAIC00NywyNiArNDcs
MjUgQEAgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6RGVkaWNhdGVkV29ya2VyQ29udGV4dChjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXMKIH0KIAogLy8gRklYTUU6IHJlbW92ZSB0aGlz
IHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLXZvaWQgRGVk
aWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykK
K3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwotICAgIGlm
IChwb3J0KQotICAgICAgICBwb3J0cy5hcHBlbmQocG9ydCk7Ci0gICAgcG9zdE1lc3NhZ2UobWVz
c2FnZSwgJnBvcnRzLCBlYyk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlczsK
KyAgICBpZiAodHJhbnNmZXJhYmxlKQorICAgICAgICB0cmFuc2ZlcmFibGVzLmFwcGVuZCh0cmFu
c2ZlcmFibGUpOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZ0cmFuc2ZlcmFibGVzLCBlYyk7
CiB9CiAKIHZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PE1lc3NhZ2VQb3J0QXJyYXkqPigw
KSwgZWMpOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PFRyYW5zZmVyYWJs
ZSo+KDApLCBlYyk7CiB9CiAKLXZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3Nh
Z2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3Nh
Z2VQb3J0QXJyYXkqIHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRGVkaWNhdGVkV29y
a2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICAvLyBEaXNlbnRhbmdsZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Ig
c2VuZGluZyBpdCB0byB0aGUgcmVtb3RlIGNvbnRleHQuCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKHBv
cnRzLCBlYyk7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMg
PSBUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KHRyYW5zZmVyYWJsZXMsIGVjKTsKICAgICBp
ZiAoZWMpCiAgICAgICAgIHJldHVybjsKLSAgICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHko
KS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KG1lc3NhZ2UsIGNoYW5uZWxzLnJlbGVhc2UoKSk7
CisgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkucG9zdE1lc3NhZ2VUb1dvcmtlck9i
amVjdChtZXNzYWdlLCByZWNlaXB0cy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIERlZGljYXRlZFdv
cmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4
Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckNvbnRleHQuaAppbmRleCBkYmE1MmFlLi4zZmE2NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaApAQCAtNTYsOSArNTYsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgICAgIHZpcnR1
YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgeyBy
ZXR1cm4gdGhpczsgfQogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBvc3RNZXNz
YWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgTWVzc2FnZVBvcnRB
cnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFRyYW5zZmVyYWJsZUFycmF5KiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhl
IE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+LCBUcmFuc2ZlcmFibGUqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihtZXNzYWdlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwKaW5kZXggMjJkMzUyNS4u
YjBmYjMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckNvbnRleHQuaWRsCkBAIC00Myw2ICs0Myw4IEBAIG1vZHVsZSB0aHJlYWRzIHsKICNpZiBkZWZp
bmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICAgICAg
W0N1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBhbnkgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBB
cnJheSBtZXNzYWdlUG9ydHMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRQb3N0TWVzc2FnZShpbiBhbnkgbWVzc2FnZSwgaW4g
W09wdGlvbmFsXSBBcnJheSB0cmFuc2Zlckxpc3QpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhwb3Nl
IGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0IGFsbG93IHBh
c3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShpbiBET01T
dHJpbmcgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCmluZGV4IDI0
MDAyZTQuLmU1NmY5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVk
V29ya2VyQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXJDb250ZXh0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNs
dWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCiAKQEAgLTQ0LDkgKzQ1LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZUNvbm5lY3RFdmVudChQ
YXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0KQogewotICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+
IGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJy
YXkoMSwgcG9ydCkpKTsKKyAgICBSZWZQdHI8VHJhbnNmZXJhYmxlPiB0cmFuc2ZlcmFibGUocG9y
dCk7CisgICAgUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0
ZShhZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlQXJyYXkoMSwgdHJhbnNmZXJhYmxlKSkpOwogICAg
IGV2ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVudCwgZmFsc2UsIGZhbHNl
KTsKLSAgICByZXR1cm4gZXZlbnQ7CisgICAgcmV0dXJuIGV2ZW50LnJlbGVhc2UoKTsKIH0KIAog
U2hhcmVkV29ya2VyQ29udGV4dDo6U2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFNoYXJlZFdvcmtl
clRocmVhZCogdGhyZWFkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDIzN2I2MTAu
LjgxOWEwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTg2LDI2ICs4NiwyNiBA
QCBXb3JrZXI6On5Xb3JrZXIoKQogfQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1
cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotdm9pZCBXb3JrZXI6OnBvc3RN
ZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdl
UG9ydCogcG9ydCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2Uo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSog
dHJhbnNmZXJhYmxlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBNZXNzYWdlUG9ydEFycmF5
IHBvcnRzOwotICAgIGlmIChwb3J0KQotICAgICAgICBwb3J0cy5hcHBlbmQocG9ydCk7Ci0gICAg
cG9zdE1lc3NhZ2UobWVzc2FnZSwgJnBvcnRzLCBlYyk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkg
dHJhbnNmZXJhYmxlczsKKyAgICBpZiAodHJhbnNmZXJhYmxlKQorICAgICAgICB0cmFuc2ZlcmFi
bGVzLmFwcGVuZCh0cmFuc2ZlcmFibGUpOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZ0cmFu
c2ZlcmFibGVzLCBlYyk7CiB9CiAKIHZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgc3RhdGljX2Nhc3Q8TWVzc2FnZVBvcnRBcnJheSo+KDAp
LCBlYyk7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgc3RhdGljX2Nhc3Q8VHJhbnNmZXJhYmxl
Kj4oMCksIGVjKTsKIH0KIAotdm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0
cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFu
c2ZlcmFibGVzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBEaXNlbnRhbmdsZSB0aGUg
cG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0byB0aGUgcmVtb3RlIGNvbnRleHQu
Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQ
b3J0OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7CisgICAgT3duUHRyPFRyYW5zZmVyYWJs
ZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMgPSBUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KHRy
YW5zZmVyYWJsZXMsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2Nv
bnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQobWVzc2FnZSwgY2hhbm5lbHMu
cmVsZWFzZSgpKTsKKyAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRl
eHQobWVzc2FnZSwgcmVjZWlwdHMucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBXb3JrZXI6OnRlcm1p
bmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAppbmRleCA4ZTRlYzNhLi43NjAyZmM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTU3LDkgKzU3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIFdvcmtlciogdG9Xb3JrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAK
ICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9y
dEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGVBcnJheSos
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2Ug
dXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAgdm9pZCBwb3N0
TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2Fn
ZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSosIEV4Y2Vw
dGlvbkNvZGUmKTsKIAogICAgICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5pZGwKaW5kZXggNzYzNzU2OS4uMzhlOTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmlkbApAQCAtNDIsNiArNDIsOCBAQCBtb2R1bGUgdGhyZWFkcyB7CiAjaWYgZGVmaW5lZChM
QU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCiAgICAgICAgIFtDdXN0
b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXNlZFNjcmlwdFZhbHVlIG1lc3NhZ2UsIGlu
IFtPcHRpb25hbF0gQXJyYXkgbWVzc2FnZVBvcnRzKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgd2Via2l0UG9zdE1lc3NhZ2UoaW4gU2Vy
aWFsaXNlZFNjcmlwdFZhbHVlIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gQXJyYXkgdHJhbnNmZXJM
aXN0KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZWxzZQogICAgICAgICAv
LyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGV4cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmlu
ZGluZ3MsIHNvIGZvciBub3cganVzdCBhbGxvdyBwYXNzaW5nIGluIGEgc2luZ2xlIHBvcnQuCiAg
ICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3NhZ2Us
IGluIFtPcHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaAppbmRleCA4Nzk4ZjUxLi40MzVhODg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgKQEAgLTMzLDEzICsz
MywxNSBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5o
IgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OworICAg
IHR5cGVkZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5OwogICAgIGNsYXNzIFdvcmtlcjsKIAogICAgIC8vIEEgcHJveHkgdG8g
dGFsayB0byB0aGUgd29ya2VyIGNvbnRleHQuCkBAIC01Myw3ICs1NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyQ29udGV4dCgp
ID0gMDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRy
PFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IDBhNmY4Y2IuLjI0YWEzYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBA
IC00OCwxNSArNDgsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNzYWdlV29y
a2VyQ29udGV4dFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrPiBj
cmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25Q
dHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgIHN0YXRpYyBQYXNzT3du
UHRyPE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eT4gcmVjZWlwdHMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VX
b3JrZXJDb250ZXh0VGFzayhtZXNzYWdlLCBjaGFubmVscykpOworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzayhtZXNzYWdlLCByZWNlaXB0cykpOwog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBNZXNzYWdlV29ya2VyQ29udGV4dFRhc2soUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgIE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzayhQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogICAgICAgICA6IG1fbWVzc2FnZShtZXNzYWdl
KQotICAgICAgICAsIG1fY2hhbm5lbHMoY2hhbm5lbHMpCisgICAgICAgICwgbV9yZWNlaXB0cyhy
ZWNlaXB0cykKICAgICB7CiAgICAgfQogCkBAIC02NCwyNyArNjQsMjcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIEFTU0VSVChzY3JpcHRDb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CiAg
ICAgICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Kj4oc2NyaXB0Q29udGV4dCk7Ci0gICAgICAgIE93blB0cjxNZXNz
YWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpzY3JpcHRD
b250ZXh0LCBtX2NoYW5uZWxzLnJlbGVhc2UoKSk7Ci0gICAgICAgIGNvbnRleHQtPmRpc3BhdGNo
RXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUocG9ydHMucmVsZWFzZSgpLCBtX21lc3NhZ2UpKTsK
KyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVzID0gVHJhbnNm
ZXJhYmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJbigqc2NyaXB0Q29udGV4dCwgbV9yZWNlaXB0cy5y
ZWxlYXNlKCkpOworICAgICAgICBjb250ZXh0LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLCBtX21lc3NhZ2UpKTsKICAgICAgICAgY29u
dGV4dC0+dGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkuY29uZmlybU1lc3NhZ2VGcm9tV29y
a2VyT2JqZWN0KGNvbnRleHQtPmhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKICAgICB9CiAKIHByaXZh
dGU6CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9tZXNzYWdlOwotICAgIE93
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKKyAgICBPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5PiBtX3JlY2VpcHRzOwogfTsKIAogY2xhc3MgTWVzc2FnZVdv
cmtlclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlclRhc2s+IGNyZWF0ZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQ
cm94eSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlV29ya2VyVGFzaz4gY3JlYXRlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPFRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNz
YWdpbmdQcm94eSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVdv
cmtlclRhc2sobWVzc2FnZSwgY2hhbm5lbHMsIG1lc3NhZ2luZ1Byb3h5KSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVdvcmtlclRhc2sobWVzc2FnZSwgcmVjZWlwdHMsIG1l
c3NhZ2luZ1Byb3h5KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE1lc3NhZ2VXb3JrZXJUYXNr
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1l
c3NhZ2luZ1Byb3h5KQorICAgIE1lc3NhZ2VXb3JrZXJUYXNrKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eT4gcmVjZWlwdHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAgICAg
ICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQor
ICAgICAgICAsIG1fcmVjZWlwdHMocmVjZWlwdHMpCiAgICAgICAgICwgbV9tZXNzYWdpbmdQcm94
eShtZXNzYWdpbmdQcm94eSkKICAgICB7CiAgICAgfQpAQCAtOTUsMTMgKzk1LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIGlmICghd29ya2VyT2JqZWN0IHx8IG1fbWVzc2FnaW5nUHJveHktPmFza2Vk
VG9UZXJtaW5hdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBPd25QdHI8TWVz
c2FnZVBvcnRBcnJheT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqc2NyaXB0
Q29udGV4dCwgbV9jaGFubmVscy5yZWxlYXNlKCkpOwotICAgICAgICB3b3JrZXJPYmplY3QtPmRp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUocG9ydHMucmVsZWFzZSgpLCBtX21lc3Nh
Z2UpKTsKKyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVzID0g
VHJhbnNmZXJhYmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJbigqc2NyaXB0Q29udGV4dCwgbV9yZWNl
aXB0cy5yZWxlYXNlKCkpOworICAgICAgICB3b3JrZXJPYmplY3QtPmRpc3BhdGNoRXZlbnQoTWVz
c2FnZUV2ZW50OjpjcmVhdGUodHJhbnNmZXJhYmxlcy5yZWxlYXNlKCksIG1fbWVzc2FnZSkpOwog
ICAgIH0KIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX21l
c3NhZ2U7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBtX2NoYW5uZWxzOwor
ICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IG1fcmVjZWlwdHM7CiAgICAgV29y
a2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7CiB9OwogCkBAIC0yNDIsMjEgKzI0
MiwyMSBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckNvbnRleHQoY29u
c3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbgogICAgIHRocmVhZC0+c3RhcnQoKTsKIH0K
IAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlw
dHMpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhNZXNzYWdlV29y
a2VyVGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzLCB0aGlzKSk7CisgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhNZXNzYWdlV29ya2VyVGFzazo6Y3JlYXRlKG1lc3Nh
Z2UsIHJlY2VpcHRzLCB0aGlzKSk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykK
K3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPFRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAgICAgaWYgKG1fYXNrZWRUb1Rlcm1p
bmF0ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd29ya2VyVGhyZWFkKSB7CiAgICAg
ICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFzayhNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZShtZXNz
YWdlLCBjaGFubmVscykpOworICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UsIHJlY2VpcHRzKSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoTWVzc2FnZVdv
cmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5lbHMpKTsKKyAgICAgICAgbV9x
dWV1ZWRFYXJseVRhc2tzLmFwcGVuZChNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZSht
ZXNzYWdlLCByZWNlaXB0cykpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0
VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggMzczMTQ4MC4uYzc0YWI4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAtNTUs
MTMgKzU1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gKE9ubHkgdXNlIHRo
ZXNlIG1ldGhvZHMgaW4gdGhlIHdvcmtlciBvYmplY3QgdGhyZWFkLikKICAgICAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgdGVybWluYXRlV29ya2VyQ29udGV4dCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpOwogCiAgICAgICAgIC8vIEltcGxlbWVu
dGF0aW9ucyBvZiBXb3JrZXJPYmplY3RQcm94eS4KICAgICAgICAgLy8gKE9ubHkgdXNlIHRoZXNl
IG1ldGhvZHMgaW4gdGhlIHdvcmtlciBjb250ZXh0IHRocmVhZC4pCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICB2
aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVj
dChNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT2JqZWN0UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJv
eHkuaAppbmRleCAzM2UwYmMzLi4wMWExZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPYmplY3RQcm94eS5oCkBAIC0zMywxOCArMzMsMjAgQEAKIAogI2lmIEVOQUJMRShXT1JL
RVJTKQogCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV29y
a2VyUmVwb3J0aW5nUHJveHkuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIE1l
c3NhZ2VQb3J0Q2hhbm5lbDsKKyAgICBjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OworICAgIHR5
cGVkZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxl
UmVjZWlwdEFycmF5OwogCiAgICAgLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIgb2Jq
ZWN0LgogICAgIGNsYXNzIFdvcmtlck9iamVjdFByb3h5IDogcHVibGljIFdvcmtlclJlcG9ydGlu
Z1Byb3h5IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRv
V29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0
cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pID0gMDsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZp
dHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggNDIxYzFmZS4uMGFjY2ZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAxMS0wOC0wNiAgTHVrZSBaYXJrbyAgPGx1a2V6YXJrb0BnbWFpbC5jb20+
CisKKyAgICAgICAgTWFrZSBNZXNzYWdlUG9ydCBUcmFuc2ZlcmFibGUuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MjA5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBBZGQgV2ViVHJhbnNmZXJhYmxl
UmVjZWlwdC5oIGFuZCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcAorICAgICAgICAtIFJlcGFy
ZW50IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCB0byBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0CisgICAg
ICAgIC0gRXh0cmFjdCBjb252ZXJzaW9uIGZyb20gV2ViTWVzc2FnZVBvcnRDaGFubmVsIHRvL2Zy
b20gTWVzc2FnZVBvcnRDaGFubmVsIGFzCisgICAgICAgICAgdGhlIFRyYW5zZmVyYWJsZS1nZW5l
cmljIGZyb21XZWIvdG9XZWIKKyAgICAgICAgLSBFeHBvc2UgZmxhdHRlblJlY2VpcHRMaXN0IGZy
b20gU2VyaWFsaXplZFNjcmlwdFZhbHVlIGFuZCB1c2UgdGhpcyB3aGVuIGEKKyAgICAgICAgICBt
ZXNzYWdlIG5lZWRzIHRvIGJlIHNlbnQgYWNyb3NzIGFuIElQQyBjaGFubmVsLgorCisgICAgICAg
ICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFubmVsLmg6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbDo6YXNXZWJNZXNzYWdlUG9y
dENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWw6OmlzRmxh
dHRlbmFibGUpOgorICAgICAgICAqIHB1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaC4K
KyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6YXNXZWJNZXNzYWdlUG9y
dENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVSZWNlaXB0OjpXZWJU
cmFuc2ZlcmFibGVSZWNlaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVj
ZWlwdDo6fldlYlRyYW5zZmVyYWJsZVJlY2VpcHQpOgorICAgICAgICAqIHB1YmxpYy9XZWJXb3Jr
ZXIuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViV29ya2VyQ2xpZW50Lmg6CisgICAgICAgICogc3Jj
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90
ZSk6CisgICAgICAgICogc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJlY2VpcHRMaXN0KToK
KyAgICAgICAgKiBzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHA6CisgICAgICAgICogc3JjL1dl
YlRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVHJh
bnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZmVy
YWJsZVJlY2VpcHQ6OmZyb21XZWJBbGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2ZlcmFi
bGVSZWNlaXB0Ojp0b1dlYik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZmVyYWJsZVJlY2Vp
cHQ6OnRvV2ViQWxsKToKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQmFzZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRhc2spOgorICAgICAgICAq
IHNyYy9XZWJXb3JrZXJCYXNlLmg6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRv
V29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGll
bnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdFRhc2spOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisgICAg
ICAgICogc3JjL1dlYldvcmtlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJJ
bXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJXb3JrZXJJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgICogc3Jj
L1dlYldvcmtlckltcGwuaDoKKwogMjAxMS0wOC0wNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiOTdhNjdjLi4wZWZhNGY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCkBAIC0yODAsNiArMjgwLDcgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlRleHRJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0
UnVuLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGhyZWFkU2FmZURhdGEuaCcsCisg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVVJMLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
VVJMRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXIuaCcsCkBA
IC01NjUsNiArNTY2LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN0cmluZy5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dFJ1bi5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViVGhyZWFkU2FmZURhdGEuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlRyYW5z
ZmVyYWJsZVJlY2VpcHQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMTG9hZFRpbWluZy5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViVVJMUmVxdWVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwuaAppbmRleCAyODhiZDU1Li43ZDZj
OTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdl
UG9ydENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZXNz
YWdlUG9ydENoYW5uZWwuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBXZWJNZXNzYWdlUG9y
dENoYW5uZWxfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdC5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTM5LDE5ICs0MCwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbENsaWVudDsKIGNsYXNzIFdlYlN0cmluZzsKIAotdHlwZWRlZiBXZWJW
ZWN0b3I8Y2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsKj4gV2ViTWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk7Ci0KIC8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSB0byBhIE1lc3NhZ2UgUG9ydCBDaGFu
bmVsIGltcGxlbWVudGF0aW9uLiAgVGhlIG9iamVjdCBvd25zIGl0c2VsZiBhbmQKIC8vIGlzIHNp
Z25hbGxlZCB0aGF0IGl0cyBub3QgbmVlZGVkIGFueW1vcmUgd2l0aCB0aGUgZGVzdHJveSgpIGNh
bGwuCi1jbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWwgeworY2xhc3MgV2ViTWVzc2FnZVBvcnRD
aGFubmVsIDogcHVibGljIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQgewogcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRDbGllbnQoV2ViTWVzc2FnZVBvcnRDaGFubmVsQ2xpZW50KikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgPSAwOwogICAgIC8vIFdlYktpdCB2ZXJzaW9ucyBv
ZiBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWwuCiAgICAgdmlydHVhbCB2b2lkIGVudGFuZ2xl
KFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCopID0gMDsKICAgICAvLyBDYWxsZWUgcmVjZWl2ZXMgb3du
ZXJzaGlwIG9mIHRoZSBwYXNzZWQgdmVjdG9yLgotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2Fn
ZShjb25zdCBXZWJTdHJpbmcmLCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSopID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgdHJ5R2V0TWVzc2FnZShXZWJTdHJpbmcqLCBXZWJNZXNzYWdlUG9ydENo
YW5uZWxBcnJheSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgV2Vi
U3RyaW5nJiwgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCB0cnlHZXRNZXNzYWdlKFdlYlN0cmluZyosIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eSYpID0gMDsKKyAgICB2aXJ0dWFsIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCogYXNXZWJNZXNzYWdl
UG9ydENoYW5uZWwoKSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBib29sIGlzRmxhdHRl
bmFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYk1l
c3NhZ2VQb3J0Q2hhbm5lbCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBmMDViMjdkLi4xMWNk
MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzMsMTEgKzMzLDE2IEBACiAKICNpbmNsdWRlICJX
ZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViVmVj
dG9yLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OyB9CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Cit9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdDsKK3R5cGVkZWYgV2ViVmVjdG9yPGNsYXNzIFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHQqPiBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CiAKIGNsYXNzIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSB7CiBwdWJsaWM6CkBAIC02NCw2ICs2OSwxMyBAQCBwdWJsaWM6CiAgICAg
Ly8gUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlLgogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7
CiAKKyAgICAvLyBGbGF0dGVucyBmbGF0dGVuYWJsZSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0cyB0
byB0aGUgZ2l2ZW4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEKKyAgICAvLyBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUsIHJldHVybmluZyBhIG5ldyByZXByZXNlbnRhdGlvbi4gU2V0cyB1bmZs
YXR0ZW5hYmxlQ291bnRPdXQKKyAgICAvLyB0byB0aGUgbnVtYmVyIG9mIHVuZmxhdHRlbmFibGUg
cmVjZWlwdHMgaW4gdGhlIHBhc3NlZC1pbiBhcnJheS4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRp
YyBXZWJTdHJpbmcgZmxhdHRlblJlY2VpcHRMaXN0KGNvbnN0IFdlYlN0cmluZyYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJU
cmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmIHJlY2VpcHRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiB1bmZsYXR0ZW5hYmxlQ291
bnRPdXQpOworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU+Jik7CiAgICAgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBvcGVyYXRvcj0oY29uc3Qg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZmVyYWJsZVJlY2Vp
cHQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZmVyYWJsZVJlY2Vp
cHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmM1NzU0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmZXJhYmxl
UmVjZWlwdC5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRf
aAorI2RlZmluZSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0X2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCit0eXBl
ZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheTsKKyNlbmRpZgorfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
TWVzc2FnZVBvcnRDaGFubmVsOworY2xhc3MgV2ViU3RyaW5nOworCit0eXBlZGVmIFdlYlZlY3Rv
cjxjbGFzcyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Kj4gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5OworCitjbGFzcyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCogYXNXZWJNZXNzYWdlUG9ydENoYW5uZWwoKSB7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIGlzRmxhdHRlbmFibGUoKSBjb25zdCA9IDA7Cisj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNvbnZlcnQg
YmV0d2VlbiBUcmFuc2ZlcmFibGVSZWNlaXB0cyBhbmQgdGhlaXIgV2ViVHJhbnNmZXJhYmxlUmVj
ZWlwdAorICAgIC8vIGNvdW50ZXJwYXJ0cy4gTm90ZSB0aGF0IHRoZXNlIGNvbnZlcnNpb25zIG1h
eSBoYXZlIHNpZGUgZWZmZWN0cy4gVGhlICpBbGwgbWV0aG9kcworICAgIC8vIG1hcCB0aGUgY29u
dmVyc2lvbiBtZXRob2RzIGFjcm9zcyB0aGUgcGFzc2VkLWluIEFycmF5cyAoY2hlY2tpbmcgZm9y
IG51bGwgb3IgZW1wdHkgQXJyYXlzCisgICAgLy8gaW4gdGhlIHByb2Nlc3MpLgorICAgIHN0YXRp
YyBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ+IGZyb21XZWIoV2ViVHJh
bnNmZXJhYmxlUmVjZWlwdCopOworICAgIHN0YXRpYyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KiB0
b1dlYihXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0Kik7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBmcm9tV2ViQWxsKGNvbnN0IFdl
YlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSopOworICAgIHN0YXRpYyBXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXkqIHRvV2ViQWxsKGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheSopOworI2VuZGlmCitwcm90ZWN0ZWQ6CisgICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCgp
IHsgfQorICAgIC8vIE5vdGU6IHB1cnBvc2VmdWxseSBub3QgYSB2aXJ0dWFsIGRlc3RydWN0b3Iu
CisgICAgfldlYlRyYW5zZmVyYWJsZVJlY2VpcHQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYldvcmtlci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2Vy
LmgKaW5kZXggNjY0ZTVhZS4uOTA2ZDJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViV29ya2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViV29ya2VyLmgKQEAgLTM2LDYgKzM2LDggQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0OwordHlwZWRlZiBX
ZWJWZWN0b3I8Y2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCo+IFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheTsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYldvcmtlckNsaWVudDsKIApAQCAt
NTIsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNv
bnRleHQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0
KAogICAgICAgICBjb25zdCBXZWJTdHJpbmcmLAotICAgICAgICBjb25zdCBXZWJNZXNzYWdlUG9y
dENoYW5uZWxBcnJheSYpID0gMDsKKyAgICAgICAgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlw
dEFycmF5JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsaWVudERlc3Ryb3llZCgpID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJDbGllbnQuaAppbmRleCBlYjJlNjNl
Li41NGEyMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJX
b3JrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3Jr
ZXJDbGllbnQuaApAQCAtMzgsNiArMzgsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOwogY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVHJh
bnNmZXJhYmxlUmVjZWlwdDsKK3R5cGVkZWYgV2ViVmVjdG9yPGNsYXNzIFdlYlRyYW5zZmVyYWJs
ZVJlY2VpcHQqPiBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CiBjbGFzcyBXZWJXb3JrZXI7
CiAKIC8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSBiYWNrIHRvIHRoZSBpbi1wYWdlIHNjcmlwdCBv
YmplY3QgZm9yIGEgd29ya2VyLgpAQCAtNDcsNyArNDksNyBAQCBjbGFzcyBXZWJXb3JrZXJDbGll
bnQgOiBwdWJsaWMgV2ViQ29tbW9uV29ya2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCgKICAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiwKLSAgICAgICAgY29uc3QgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmKSA9IDA7CisgICAg
ICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKaW5kZXggNmU0ZGU0NC4u
MWY1YmFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Bs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcApAQCAtMTgwLDE3ICsxODAsOSBAQCB2b2lkIFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRDaGFubgogICAgICAgICByZXR1cm47CiAKICAgICBXZWJTdHJpbmcgbWVzc2Fn
ZVN0cmluZyA9IG1lc3NhZ2UtPm1lc3NhZ2UoKS0+dG9XaXJlU3RyaW5nKCk7Ci0gICAgT3duUHRy
PFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IG1lc3NhZ2UtPmNo
YW5uZWxzKCk7Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIHdlYkNoYW5uZWxzID0g
MDsKLSAgICBpZiAoY2hhbm5lbHMuZ2V0KCkgJiYgY2hhbm5lbHMtPnNpemUoKSkgewotICAgICAg
ICB3ZWJDaGFubmVscyA9IG5ldyBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheShjaGFubmVscy0+
c2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGFubmVscy0+c2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
KiBwbGF0Zm9ybUNoYW5uZWwgPSAoKmNoYW5uZWxzKVtpXS0+Y2hhbm5lbCgpOwotICAgICAgICAg
ICAgKCp3ZWJDaGFubmVscylbaV0gPSBwbGF0Zm9ybUNoYW5uZWwtPndlYkNoYW5uZWxSZWxlYXNl
KCk7Ci0gICAgICAgICAgICAoKndlYkNoYW5uZWxzKVtpXS0+c2V0Q2xpZW50KDApOwotICAgICAg
ICB9Ci0gICAgfQotICAgIG1fd2ViQ2hhbm5lbC0+cG9zdE1lc3NhZ2UobWVzc2FnZVN0cmluZywg
d2ViQ2hhbm5lbHMpOworICAgIE93blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJy
YXk+IHJlY2VpcHRzID0gbWVzc2FnZS0+cmVjZWlwdHMoKTsKKyAgICBXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXkqIHdlYlJlY2VpcHRzID0gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6dG9XZWJB
bGwocmVjZWlwdHMuZ2V0KCkpOworICAgIG1fd2ViQ2hhbm5lbC0+cG9zdE1lc3NhZ2UobWVzc2Fn
ZVN0cmluZywgd2ViUmVjZWlwdHMpOwogfQogCiBib29sIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90ZShPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsOjpF
dmVudERhdGE+JiByZXN1bHQpCkBAIC0xOTksMjAgKzE5MSwxMiBAQCBib29sIFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90ZShPd25QdHI8TWVzc2FnZVBv
cnRDaGFubgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBXZWJTdHJpbmcgbWVzc2FnZTsK
LSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSB3ZWJDaGFubmVsczsKLSAgICBib29sIHJ2
ID0gbV93ZWJDaGFubmVsLT50cnlHZXRNZXNzYWdlKCZtZXNzYWdlLCB3ZWJDaGFubmVscyk7Cisg
ICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5IHdlYlJlY2VpcHRzOworICAgIGJvb2wgcnYg
PSBtX3dlYkNoYW5uZWwtPnRyeUdldE1lc3NhZ2UoJm1lc3NhZ2UsIHdlYlJlY2VpcHRzKTsKICAg
ICBpZiAocnYpIHsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFu
bmVsczsKLSAgICAgICAgaWYgKHdlYkNoYW5uZWxzLnNpemUoKSkgewotICAgICAgICAgICAgY2hh
bm5lbHMgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkod2ViQ2hhbm5lbHMu
c2l6ZSgpKSk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkNoYW5uZWxz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsPiBwbGF0Zm9ybUNoYW5uZWwgPSBjcmVhdGUod2ViQ2hhbm5lbHNbaV0pOwotICAg
ICAgICAgICAgICAgIHdlYkNoYW5uZWxzW2ldLT5zZXRDbGllbnQocGxhdGZvcm1DaGFubmVsLmdl
dCgpKTsKLSAgICAgICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5l
bDo6Y3JlYXRlKHBsYXRmb3JtQ2hhbm5lbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAg
ICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMgPSBXZWJUcmFu
c2ZlcmFibGVSZWNlaXB0Ojpmcm9tV2ViQWxsKCZ3ZWJSZWNlaXB0cyk7CiAgICAgICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRNZXNzYWdlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShtZXNzYWdlKTsKLSAgICAgICAgcmVzdWx0ID0gTWVz
c2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZShzZXJpYWxpemVkTWVzc2FnZS5yZWxl
YXNlKCksIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisgICAgICAgIHJlc3VsdCA9IE1lc3NhZ2VQb3J0
Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUoc2VyaWFsaXplZE1lc3NhZ2UucmVsZWFzZSgpLCBy
ZWNlaXB0cy5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIHJldHVybiBydjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CmluZGV4IDcxNDlhNGQuLjk5MmU5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzIsNyArMzIsOSBA
QAogI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAjaW5jbHVkZSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgog
I2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlRyYW5zZmVyYWJsZVJlY2VpcHQu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc5LDQgKzgxLDI1IEBAIFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+KCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOwogfQogCitXZWJTdHJp
bmcgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpmbGF0dGVuUmVjZWlwdExpc3QoY29uc3QgV2Vi
U3RyaW5nJiBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYgcmVjZWlw
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90KiB1bmZsYXR0ZW5hYmxlQ291bnQpIHsKKyAgICBzaXplX3QgdW5mbGF0dGVuYWJs
ZXNGb3VuZCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWNlaXB0cy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAoIXJlY2VpcHRzW2ldLT5pc0ZsYXR0ZW5hYmxlKCkpCisgICAg
ICAgICAgICArK3VuZmxhdHRlbmFibGVzRm91bmQ7CisgICAgfQorICAgIGlmICh1bmZsYXR0ZW5h
YmxlQ291bnQpCisgICAgICAgICp1bmZsYXR0ZW5hYmxlQ291bnQgPSB1bmZsYXR0ZW5hYmxlc0Zv
dW5kOworICAgIGlmICh1bmZsYXR0ZW5hYmxlc0ZvdW5kID09IHJlY2VpcHRzLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIG1lc3NhZ2U7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eT4gY29yZVJlY2VpcHRzID0gYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheShy
ZWNlaXB0cy5zaXplKCkpKTsKKyAgICAvLyBmcm9tV2ViKCkgbWF5IGhhdmUgdW53YW50ZWQgc2lk
ZS1lZmZlY3RzLCBzbyBvbmx5IGNvbnZlcnQgZmxhdHRlbmFibGUgcmVjZWlwdHMuCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByZWNlaXB0cy5zaXplKCk7ICsraSkKKyAgICAgICAgKCpjb3Jl
UmVjZWlwdHMpW2ldID0gcmVjZWlwdHNbaV0tPmlzRmxhdHRlbmFibGUoKQorICAgICAgICAgICAg
PyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojpmcm9tV2ViKHJlY2VpcHRzW2ldKQorICAgICAgICAg
ICAgOiBudWxscHRyOworICAgIHJldHVybiBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmZsYXR0ZW5SZWNlaXB0TGlzdChtZXNzYWdlLCAqY29yZVJlY2VpcHRzKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTaGFyZWRXb3JrZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNo
YXJlZFdvcmtlckltcGwuY3BwCmluZGV4IDRhMzJmYjMuLjVhZTJlZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiS1VSTC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRyYW5zZmVyYWJsZVJlY2VpcHQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ODY5NzMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUcmFuc2ZlcmFibGVSZWNl
aXB0LmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgorI2luY2x1ZGUgIldl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdD4gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYihXZWJUcmFu
c2ZlcmFibGVSZWNlaXB0KiByZWNlaXB0KQoreworICAgIGlmIChXZWJNZXNzYWdlUG9ydENoYW5u
ZWwqIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCA9IHJlY2VpcHQtPmFzV2ViTWVzc2FnZVBvcnRDaGFu
bmVsKCkpIHsKKyAgICAgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBwbGF0
Zm9ybUNoYW5uZWwgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHdlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbCk7CisgICAgICAgIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbC0+c2V0Q2xpZW50
KHBsYXRmb3JtQ2hhbm5lbC5nZXQoKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlUG9ydENoYW5u
ZWw6OmNyZWF0ZShwbGF0Zm9ybUNoYW5uZWwpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUGFzc093blB0cjxXZWJDb3JlOjpUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmZyb21XZWJBbGwo
Y29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KiByZWNlaXB0cykKK3sKKyAgICBPd25Q
dHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBpbXBvcnRlZFJlY2VpcHRzOworICAgIGlmIChy
ZWNlaXB0cyAmJiByZWNlaXB0cy0+c2l6ZSgpKSB7CisgICAgICAgIGltcG9ydGVkUmVjZWlwdHMg
PSBhZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KHJlY2VpcHRzLT5zaXplKCkp
KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWNlaXB0cy0+c2l6ZSgpOyArK2kp
CisgICAgICAgICAgICAoKmltcG9ydGVkUmVjZWlwdHMpW2ldID0gZnJvbVdlYigoKnJlY2VpcHRz
KVtpXSk7CisgICAgfQorICAgIHJldHVybiBpbXBvcnRlZFJlY2VpcHRzLnJlbGVhc2UoKTsKK30K
KworV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCogV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6dG9XZWIo
VHJhbnNmZXJhYmxlUmVjZWlwdCogcmVjZWlwdCkKK3sKKyAgICBpZiAoTWVzc2FnZVBvcnRDaGFu
bmVsKiBtZXNzYWdlUG9ydENoYW5uZWwgPSByZWNlaXB0LT5hc01lc3NhZ2VQb3J0Q2hhbm5lbCgp
KSB7CisgICAgICAgIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKiBwbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbCA9IG1lc3NhZ2VQb3J0Q2hhbm5lbC0+Y2hhbm5lbCgpOworICAgICAgICBXZWJN
ZXNzYWdlUG9ydENoYW5uZWwqIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCA9IHBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsLT53ZWJDaGFubmVsUmVsZWFzZSgpOworICAgICAgICB3ZWJNZXNzYWdlUG9y
dENoYW5uZWwtPnNldENsaWVudCgwKTsKKyAgICAgICAgcmV0dXJuIHdlYk1lc3NhZ2VQb3J0Q2hh
bm5lbDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9
CisKK1dlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSogV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6
dG9XZWJBbGwoY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KiByZWNlaXB0
cykKK3sKKyAgICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqIGV4cG9ydGVkUmVjZWlwdHMg
PSAwOworICAgIGlmIChyZWNlaXB0cyAmJiByZWNlaXB0cy0+c2l6ZSgpKSB7CisgICAgICAgIGV4
cG9ydGVkUmVjZWlwdHMgPSBuZXcgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KHJlY2VpcHRz
LT5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY2VpcHRzLT5zaXpl
KCk7ICsraSkKKyAgICAgICAgICAgICgqZXhwb3J0ZWRSZWNlaXB0cylbaV0gPSB0b1dlYigoKnJl
Y2VpcHRzKVtpXS5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBleHBvcnRlZFJlY2VpcHRzOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViV29ya2VyQmFzZS5jcHAKaW5kZXggZDYxODY3Mi4uNWEzODg0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKQEAgLTM1MiwyNyArMzUyLDI2IEBA
IHZvaWQgV2ViV29ya2VyQmFzZTo6b3BlbkZpbGVTeXN0ZW1Gb3JXb3JrZXIoV2ViRmlsZVN5c3Rl
bTo6VHlwZSB0eXBlLCBsb25nIGxvbmcKIC8vIFdvcmtlck9iamVjdFByb3h5IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHZvaWQg
V2ViV29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFu
bmVscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNz
T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAgICAgZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUYXNrLCBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS0+dG9XaXJlU3RyaW5nKCksIGNoYW5uZWxzKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
LT50b1dpcmVTdHJpbmcoKSwgcmVjZWlwdHMpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJCYXNlOjpw
b3N0TWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckJhc2UqIHRoaXNQdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IGNoYW5uZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewogICAgIGlmICgh
dGhpc1B0ci0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYk1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5IHdlYkNoYW5uZWxzKGNoYW5uZWxzLmdldCgpID8gY2hhbm5lbHMtPnNpemUo
KSA6IDApOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hhbm5lbHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgd2ViQ2hhbm5lbHNbaV0gPSAoKmNoYW5uZWxzKVtpXS0+Y2hhbm5lbCgp
LT53ZWJDaGFubmVsUmVsZWFzZSgpOwotICAgICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50
KDApOworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3ZWJSZWNlaXB0cyhyZWNlaXB0
cy5nZXQoKSA/IHJlY2VpcHRzLT5zaXplKCkgOiAwKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdlYlJlY2VpcHRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHdlYlJlY2VpcHRzW2ldID0g
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6dG9XZWIoKCpyZWNlaXB0cylbaV0uZ2V0KCkpOwogICAg
IH0KIAotICAgIHRoaXNQdHItPmNsaWVudCgpLT5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KG1l
c3NhZ2UsIHdlYkNoYW5uZWxzKTsKKyAgICB0aGlzUHRyLT5jbGllbnQoKS0+cG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdChtZXNzYWdlLCB3ZWJSZWNlaXB0cyk7CiB9CiAKIHZvaWQgV2ViV29ya2Vy
QmFzZTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFz
ZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCmluZGV4IDll
ZmNlMTUuLjVmMDhjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJC
YXNlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoV09SS0VSUykKIAogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRl
clByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKQEAgLTY4LDcgKzY5LDcg
QEAgcHVibGljOgogICAgIC8vIFdlYkNvcmU6Oldvcmtlck9iamVjdFByb3h5IG1ldGhvZHM6CiAg
ICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCiAgICAgICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwKLSAgICAgICAgUGFzc093blB0
cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICBQYXNzT3duUHRy
PFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAgIHZpcnR1YWwgdm9pZCBw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoCiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiwg
aW50LCBjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1l
c3NhZ2VUb1dvcmtlck9iamVjdCgKQEAgLTEyMyw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgICAg
ICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICBXZWJX
b3JrZXJCYXNlKiB0aGlzUHRyLAogICAgICAgICBXVEY6OlN0cmluZyBtZXNzYWdlLAotICAgICAg
ICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyk7
CisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBy
ZWNlaXB0cyk7CiAgICAgc3RhdGljIHZvaWQgcG9zdEV4Y2VwdGlvblRhc2soCiAgICAgICAgIFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgIFdlYldvcmtl
ckJhc2UqIHRoaXNQdHIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldv
cmtlckNsaWVudEltcGwuY3BwCmluZGV4IGMxOThjY2YuLjJjNmJkZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCkBAIC02NSw2
ICs2NSwxMSBAQAogI2luY2x1ZGUgIldlYldvcmtlci5oIgogI2luY2x1ZGUgIldlYldvcmtlcklt
cGwuaCIKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVHJhbnNmZXJhYmxlOwordHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5OworfQor
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNzUs
NyArMTgwLDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250
ZXh0KCkKIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29u
dGV4dCgKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwKLSAg
ICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICBQYXNz
T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAgICAgLy8gV29y
a2VyLnRlcm1pbmF0ZSgpIGNvdWxkIGJlIGNhbGxlZCBmcm9tIEpTIGJlZm9yZSB0aGUgY29udGV4
dCBpcyBzdGFydGVkLgogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCkBAIC0xODUsMTcgKzE5
MCwxMyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250
ZXh0KAogICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2ssCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLT50b1dp
cmVTdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVscykpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHRzKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkg
d2ViQ2hhbm5lbHMoY2hhbm5lbHMuZ2V0KCkgPyBjaGFubmVscy0+c2l6ZSgpIDogMCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAg
ICBXZWJNZXNzYWdlUG9ydENoYW5uZWwqIHdlYmNoYW5uZWwgPQotICAgICAgICAgICAgICAgICAg
ICAgICAgKCpjaGFubmVscylbaV0tPmNoYW5uZWwoKS0+d2ViQ2hhbm5lbFJlbGVhc2UoKTsKLSAg
ICAgICAgd2ViY2hhbm5lbC0+c2V0Q2xpZW50KDApOwotICAgICAgICB3ZWJDaGFubmVsc1tpXSA9
IHdlYmNoYW5uZWw7Ci0gICAgfQotICAgIG1fd2ViV29ya2VyLT5wb3N0TWVzc2FnZVRvV29ya2Vy
Q29udGV4dChtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwgd2ViQ2hhbm5lbHMpOworICAgIFdlYlRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3ZWJSZWNlaXB0cyhyZWNlaXB0cy5nZXQoKSA/IHJlY2Vp
cHRzLT5zaXplKCkgOiAwKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlJlY2VpcHRz
LnNpemUoKTsgKytpKQorICAgICAgICB3ZWJSZWNlaXB0c1tpXSA9IFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHQ6OnRvV2ViKCgqcmVjZWlwdHMpW2ldLmdldCgpKTsKKyAgICBtX3dlYldvcmtlci0+cG9z
dE1lc3NhZ2VUb1dvcmtlckNvbnRleHQobWVzc2FnZS0+dG9XaXJlU3RyaW5nKCksIHdlYlJlY2Vp
cHRzKTsKIH0KIAogYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjpoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdApAQCAtMjM2LDI5ICsyMzcsMjAgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpz
ZW5kTWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIH0KIAogdm9pZCBX
ZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0
cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYgY2hhbm5lbHMpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JiB3ZWJSZWNlaXB0cykKIHsKLSAgICBPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzMjsKLSAgICBpZiAoY2hhbm5lbHMuc2l6
ZSgpKSB7Ci0gICAgICAgIGNoYW5uZWxzMiA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheShjaGFubmVscy5zaXplKCkpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjaGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUmVmUHRyPFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsPiBwbGF0Zm9ybV9jaGFubmVsID0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5uZWxzW2ldKTsK
LSAgICAgICAgICAgIGNoYW5uZWxzW2ldLT5zZXRDbGllbnQocGxhdGZvcm1fY2hhbm5lbC5nZXQo
KSk7Ci0gICAgICAgICAgICAoKmNoYW5uZWxzMilbaV0gPSBNZXNzYWdlUG9ydENoYW5uZWw6OmNy
ZWF0ZShwbGF0Zm9ybV9jaGFubmVsKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6
OmZyb21XZWJBbGwoJndlYlJlY2VpcHRzKTsKIAogICAgIGlmIChjdXJyZW50VGhyZWFkKCkgIT0g
bV93b3JrZXJUaHJlYWRJZCkgewogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2ss
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhtZXNzYWdl
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhbm5lbHMyLnJlbGVhc2UoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0cy5yZWxlYXNlKCkp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3RUYXNrKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgdGhpcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBjaGFubmVsczIucmVsZWFzZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCByZWNlaXB0cy5yZWxlYXNl
KCkpOwogfQogCiB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdChjb25zdCBXZWJTdHJpbmcmIGVycm9yTWVzc2FnZSwKQEAgLTM2OSwxNiArMzYxLDE0
IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6dGVybWluYXRlV29ya2VyQ29udGV4dFRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29uCiB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogdGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewotICAgIFdlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5IHdlYkNoYW5uZWxzKGNoYW5uZWxzLmdldCgpID8gY2hhbm5lbHMt
PnNpemUoKSA6IDApOworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3ZWJSZWNlaXB0
cyhyZWNlaXB0cy5nZXQoKSA/IHJlY2VpcHRzLT5zaXplKCkgOiAwKTsKIAotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgd2ViQ2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgd2ViQ2hh
bm5lbHNbaV0gPSAoKmNoYW5uZWxzKVtpXS0+Y2hhbm5lbCgpLT53ZWJDaGFubmVsUmVsZWFzZSgp
OwotICAgICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50KDApOwotICAgIH0KKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHdlYlJlY2VpcHRzLnNpemUoKTsgKytpKQorICAgICAgICB3ZWJS
ZWNlaXB0c1tpXSA9IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRvV2ViKCgqcmVjZWlwdHMpW2ld
LmdldCgpKTsKIAotICAgIHRoaXNQdHItPm1fd2ViV29ya2VyLT5wb3N0TWVzc2FnZVRvV29ya2Vy
Q29udGV4dChtZXNzYWdlLCB3ZWJDaGFubmVscyk7CisgICAgdGhpc1B0ci0+bV93ZWJXb3JrZXIt
PnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UsIHdlYlJlY2VpcHRzKTsKIH0KIAog
dm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95ZWRUYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCkBAIC0zODksMjUgKzM3OSwyMiBAQCB2b2lkIFdl
YldvcmtlckNsaWVudEltcGw6Ondvcmtlck9iamVjdERlc3Ryb3llZFRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udAogICAgIGRlbGV0ZSB0aGlzUHRyOwogfQogCi12b2lkIFdlYldvcmtl
ckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LAordm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJX
b3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25Q
dHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVy
YWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAKICAgICBpZiAodGhpc1B0ci0+bV93b3Jr
ZXIpIHsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0KLSAgICAgICAg
ICAgIE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpjb250ZXh0LCBjaGFubmVscyk7CisgICAg
ICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRyYW5zZmVyYWJs
ZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oKmNvbnRleHQsIHJlY2VpcHRzKTsKICAgICAgICAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZE1lc3NhZ2UgPQogICAgICAgICAg
ICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShtZXNzYWdlKTsKLSAgICAg
ICAgdGhpc1B0ci0+bV93b3JrZXItPmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUo
cG9ydHMucmVsZWFzZSgpLAorICAgICAgICB0aGlzUHRyLT5tX3dvcmtlci0+ZGlzcGF0Y2hFdmVu
dChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0cmFuc2ZlcmFibGVzLnJlbGVhc2UoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vy
aWFsaXplZE1lc3NhZ2UucmVsZWFzZSgpKSk7CiAgICAgfQogfQogCi12b2lkIFdlYldvcmtlckNs
aWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdFRhc2soCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwKK3ZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGxpbmVOdW1iZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJDbGllbnRJbXBsLmgKaW5kZXggYzI3MGZmYy4uMzljY2VmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaApAQCAtMzMsNiAr
MzMsNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKKyNpbmNsdWRlICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiV2ViV29y
a2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dFByb3h5LmgiCkBAIC00Miw2ICs0
Myw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OwordHlwZWRlZiBWZWN0b3I8T3duUHRyPFRy
YW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNzAsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3Nh
Z2VUb1dvcmtlckNvbnRleHQoCiAgICAgICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLAotICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyk7CisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29y
ZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyk7CiAgICAgdmlydHVhbCBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmpl
Y3REZXN0cm95ZWQoKTsKIApAQCAtODAsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJX
b3JrZXJDbGllbnQgbWV0aG9kczoKICAgICAvLyBUaGVzZSBhcmUgY2FsbGVkIG9uIHRoZSBtYWlu
IFdlYktpdCB0aHJlYWQuCi0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJp
bmcmLCBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYsIGludCwgY29u
c3QgV2ViU3RyaW5nJik7CiAKICAgICAvLyBGSVhNRTogdGhlIGJlbG93IGlzIGZvciBjb21wYXRp
YmlsaXR5IG9ubHkgYW5kIHNob3VsZCBiZQpAQCAtMTI4LDcgKzEzMSw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVs
cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NP
d25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyk7CiAgICAg
c3RhdGljIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkVGFzayhXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogdGhpc1B0cik7CiAKQEAgLTEzOCw3ICsxNDEs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3RU
YXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCog
dGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBjaGFubmVscyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2Vp
cHRzKTsKICAgICBzdGF0aWMgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3RUYXNrKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlz
UHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckltcGwuY3BwCmluZGV4IDZjOWY0NWMuLjU1NTZiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuY3BwCkBAIC04MiwxOCArODIsMTggQEAgV2Vi
Q29tbW9uV29ya2VyQ2xpZW50KiBXZWJXb3JrZXJJbXBsOjpjb21tb25DbGllbnQoKQogdm9pZCBX
ZWJXb3JrZXJJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2soV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckltcGwqIHRoaXNQdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKICAgICBBU1NFUlQoY29udGV4
dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtl
ckNvbnRleHQgPQogICAgICAgICBzdGF0aWNfY2FzdDxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Kj4o
Y29udGV4dCk7CiAKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPQotICAgICAg
ICBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqY29udGV4dCwgY2hhbm5lbHMpOworICAgIE93
blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9CisgICAgICAgIFRyYW5zZmVy
YWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oKmNvbnRleHQsIHJlY2VpcHRzKTsKICAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkTWVzc2FnZSA9CiAgICAgICAgIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUobWVzc2FnZSk7CiAgICAgd29ya2Vy
Q29udGV4dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSgKLSAgICAgICAgcG9y
dHMucmVsZWFzZSgpLCBzZXJpYWxpemVkTWVzc2FnZS5yZWxlYXNlKCkpKTsKKyAgICAgICAgdHJh
bnNmZXJhYmxlcy5yZWxlYXNlKCksIHNlcmlhbGl6ZWRNZXNzYWdlLnJlbGVhc2UoKSkpOwogICAg
IHRoaXNQdHItPmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdCh3b3JrZXJDb250ZXh0LT5o
YXNQZW5kaW5nQWN0aXZpdHkoKSk7CiB9CiAKQEAgLTExNiwyMiArMTE2LDEyIEBAIHZvaWQgV2Vi
V29ya2VySW1wbDo6dGVybWluYXRlV29ya2VyQ29udGV4dCgpCiB9CiAKIHZvaWQgV2ViV29ya2Vy
SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYgd2ViQ2hhbm5lbHMpCi17Ci0gICAgT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKLSAgICBpZiAod2ViQ2hhbm5lbHMuc2l6
ZSgpKSB7Ci0gICAgICAgIGNoYW5uZWxzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5KHdlYkNoYW5uZWxzLnNpemUoKSkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdlYkNoYW5uZWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWw+IHBsYXRmb3JtX2NoYW5uZWwgPQotICAgICAgICAgICAgICAg
IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUod2ViQ2hhbm5lbHNbaV0pOwotICAg
ICAgICAgICAgd2ViQ2hhbm5lbHNbaV0tPnNldENsaWVudChwbGF0Zm9ybV9jaGFubmVsLmdldCgp
KTsKLSAgICAgICAgICAgICgqY2hhbm5lbHMpW2ldID0gTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVh
dGUocGxhdGZvcm1fY2hhbm5lbCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVj
ZWlwdEFycmF5JiB3ZWJSZWNlaXB0cykKK3sKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlw
dEFycmF5PiByZWNlaXB0cyA9IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmZyb21XZWJBbGwoJndl
YlJlY2VpcHRzKTsKICAgICB3b3JrZXJUaHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKAogICAg
ICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyks
IFN0cmluZyhtZXNzYWdlKSwgY2hhbm5lbHMucmVsZWFzZSgpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBTdHJpbmcobWVzc2FnZSks
IHJlY2VpcHRzLnJlbGVhc2UoKSkpOwogfQogCiB2b2lkIFdlYldvcmtlckltcGw6Ondvcmtlck9i
amVjdERlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBs
LmgKaW5kZXggNzljOWM1NC4uYzdiZTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYldvcmtlckltcGwuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gV2ViV29y
a2VyIG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0V29ya2VyQ29udGV4dChjb25zdCBX
ZWJVUkwmLCBjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFs
IHZvaWQgdGVybWluYXRlV29ya2VyQ29udGV4dCgpOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVz
c2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJNZXNzYWdlUG9y
dENoYW5uZWxBcnJheSYpOworICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29u
dGV4dChjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkm
KTsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGNsaWVudERlc3Ryb3llZCgpOwogCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAg
IFdlYldvcmtlckltcGwqIHRoaXNQdHIsCiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNz
YWdlLAotICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBjaGFubmVscyk7CisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVj
ZWlwdEFycmF5PiByZWNlaXB0cyk7CiAKICAgICBXZWJXb3JrZXJDbGllbnQqIG1fY2xpZW50Owog
fTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAx
YTNjNjE1Li42NGM5M2M1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMDYgIEx1a2UgWmFya28gIDxsdWtl
emFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgTWVzc2FnZVBvcnQgVHJhbnNmZXJhYmxl
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIw
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYldvcmtlci5oOgorICAgICAgICAoVGVzdFdlYldv
cmtlcjo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgorICAgICAgICAoVGVzdFdlYldvcmtl
cjo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisKIDIwMTEtMDgtMDQgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBtb2RlbC5qcyBuZWVkcyBzb21lIHVuaXQg
dGVzdGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdl
Yldvcmtlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYldvcmtlci5o
CmluZGV4IDcxYmZmY2UuLjEyZTJjODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0V2ViV29ya2VyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIC8vIFdl
YldvcmtlciBtZXRob2RzOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckNvbnRleHQoY29u
c3QgV2ViS2l0OjpXZWJVUkwmLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRl
eHQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBjb25zdCBXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0
KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVk
KCkKICAgICB7CiAgICAgICAgIC8vIFJlbGVhc2VzIHRoZSByZWZlcmVuY2UgaGVsZCBmb3Igd29y
a2VyIG9iamVjdC4KQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGllbnREZXN0cm95ZWQoKSB7IH0KIAogICAgIC8vIFdlYldvcmtlckNsaWVudCBtZXRob2RzOgot
ICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiwgY29uc3QgV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0
IFdlYktpdDo6V2ViU3RyaW5nJiwgaW50LCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChpbnQsIGlu
dCwgaW50LCBpbnQsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgaW50LCBjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3Jr
ZXJPYmplY3QoYm9vbCkgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103152</attachid>
            <date>2011-08-06 11:43:55 -0700</date>
            <delta_ts>2011-08-08 15:15:08 -0700</delta_ts>
            <desc>New patch with prefixed webkitPostMessage, initMessageEvent, *and* three style nits fixed</desc>
            <filename>postmessage-patch-sat-1142.patch</filename>
            <type>text/plain</type>
            <size>205907</size>
            <attacher name="Luke Zarko">lukezarko+bugzilla</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZGM0NjlkLi4zODhmMGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDgt
MDYgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgTWVz
c2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gQ2hhbmdlIGluIGVycm9yIG1lc3NhZ2UgdGV4dC4KKyAgICAgICAg
LSBDaGFuZ2UgdG8gaGFuZGxlIGFuZCB0ZXN0IG5ldyBwcmVmaXhlZCB3ZWJraXRQb3N0TWVzc2Fn
ZS4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2Fn
ZS1hcmdzLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnR5
LWRlc2NyaXB0b3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9wcm90b3R5cGUt
aW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLW1h
Yy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBv
c3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisKIDIwMTEtMDgt
MDUgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBM
YXlvdXQgVGVzdCBmYXN0L3hzbC94c2x0LWltcG9ydC1kZXB0aC54bWwgaXMgZmFpbGluZwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1h
cmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9z
dG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKaW5kZXggMDU0ZDkxOC4uNDE2NmNiNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBv
c3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGVzdCB0aGF0IHRo
ZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJp
Z2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNl
ZSBQQVNTIG1lc3NhZ2UgJzEnIHRocm91Z2ggJzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGgg
bWVzc2FnZXMgNC03IHJlY2VpdmVkIGJlbG93LgorVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1l
bnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3Ig
aWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LgogCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcx
JywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1M6IFBvc3Rp
bmcgbWVzc2FnZSAoJzInLCApOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
CkBAIC03LDEyICs3LDI5IEBAIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzQnLCBbb2JqZWN0IERP
TVdpbmRvd10pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3Nh
Z2UgKCc1JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3Rpbmcg
bWVzc2FnZSAoJzYnLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNT
OiBQb3N0aW5nIG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNz
YWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5n
IG1lc3NhZ2UgKCc4JywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IK
K1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJzknLCApOiB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdBJywgW29i
amVjdCBPYmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFT
Uzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnQicsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0MnLCBu
dWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNz
YWdlICgnRCcsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdl
YmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0UnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1l
c3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERP
TSBFeGNlcHRpb24gMTEKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0YnLCBbb2JqZWN0
IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3Rpbmcg
bWVzc2FnZSAoJ0cnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEKK1BBU1M6IHdlYmtpdFBvc3Rp
bmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0p
IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitGQUlMOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2Jq
ZWN0IE1lc3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFu
IGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMjE0NzQ4MzY0OCcsIG51bGwpIGRp
ZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdkb25lJywg
KikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFJlY2VpdmVkIG1lc3NhZ2UgJzQnCiBSZWNl
aXZlZCBtZXNzYWdlICc1JwogUmVjZWl2ZWQgbWVzc2FnZSAnNicKIFJlY2VpdmVkIG1lc3NhZ2Ug
JzcnIHdpdGggMiBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ0InCitSZWNlaXZlZCBtZXNzYWdl
ICdDJworUmVjZWl2ZWQgbWVzc2FnZSAnRCcKK1JlY2VpdmVkIG1lc3NhZ2UgJ0YnIHdpdGggMSBw
b3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3QgTWVzc2FnZVBvcnRdJyB3aXRoIDEgcG9y
dHMuCitSZWNlaXZlZCBtZXNzYWdlICdbb2JqZWN0IE9iamVjdF0nIHdpdGggMSBwb3J0cy4KIFJl
Y2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnCiBSZWNlaXZlZCBtZXNzYWdlICdkb25lJwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdl
LWFyZ3MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3Nh
Z2UtYXJncy5odG1sCmluZGV4IDcyYTI3ZTcuLmJhOWVhNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCkBA
IC0zNSw3ICszNSwxOSBAQCBmdW5jdGlvbiB0cnlQb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25kLCB0
aGlyZCwgc2hvdWxkRmFpbCkgewogICAgfQogfQogCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZGVzY3JpcHRpb24iKS5pbm5lckhUTUwgPSAiVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQg
b2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYg
aXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1lc3NhZ2UgJzEn
IHRocm91Z2ggJzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMgNC03IHJlY2Vp
dmVkIGJlbG93Ljxicj48YnI+IjsKK2Z1bmN0aW9uIHRyeVdlYmtpdFBvc3RNZXNzYWdlKGZpcnN0
LCBzZWNvbmQsIHRoaXJkLCBzaG91bGRGYWlsKSB7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKCF0
aGlyZCkKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXRQb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25k
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2luZG93LndlYmtpdFBvc3RNZXNzYWdlKGZp
cnN0LCBzZWNvbmQsIHRoaXJkKTsKKyAgICAgICAgY29uc29sZS5pbm5lckhUTUwgKz0gKHNob3Vs
ZEZhaWwgPyAiRkFJTCIgOiAiUEFTUyIpICsgIjogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnIiAr
IGZpcnN0ICsgIicsICIgKyBzZWNvbmQgKyAiKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbjxi
cj4iOworICAgfSBjYXRjaCAoZSkgeworICAgICAgICBjb25zb2xlLmlubmVySFRNTCArPSAoc2hv
dWxkRmFpbCA/ICJQQVNTIiA6ICJGQUlMIikgKyAiOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCci
ICsgZmlyc3QgKyAiJywgIiArIHNlY29uZCArICIpOiB0aHJldyBleGNlcHRpb24gIiArIGUgKyAi
PGJyPiI7CisgICB9Cit9CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIp
LmlubmVySFRNTCA9ICJUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cucG9z
dE1lc3NhZ2UgaXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBpcyBub3QgYSBt
ZXNzYWdlIHBvcnQuPGJyPjxicj4iOwogCiB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5l
bDsKIHRyeVBvc3RNZXNzYWdlKCcxJywgMSwgJyonLCB0cnVlKTsKQEAgLTQ1LDYgKzU3LDE5IEBA
IHRyeVBvc3RNZXNzYWdlKCc0Jywgd2luZG93LCAnKicpOyAgLy8gUGFzc2VzIGJlY2F1c2Ugd2lu
ZG93IGhhcyBhICJsZW5ndGgiIGF0dHJpCiB0cnlQb3N0TWVzc2FnZSgnNScsIG51bGwsICcqJyk7
CiB0cnlQb3N0TWVzc2FnZSgnNicsIHZvaWQgMCwgJyonKTsKIHRyeVBvc3RNZXNzYWdlKCc3Jywg
W2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDJdLCAnKicpOwordHJ5V2Via2l0UG9zdE1lc3Nh
Z2UoJzgnLCAxLCAnKicsIHRydWUpOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJzknLCAiIiwgJyon
LCB0cnVlKTsKK3RyeVdlYmtpdFBvc3RNZXNzYWdlKCdBJywgeyB4OiAxIH0sICcqJywgdHJ1ZSk7
Cit0cnlXZWJraXRQb3N0TWVzc2FnZSgnQicsIHdpbmRvdywgJyonKTsgIC8vIFBhc3NlcyBiZWNh
dXNlIHdpbmRvdyBoYXMgYSAibGVuZ3RoIiBhdHRyaWJ1dGUgb2YgdmFsdWUgJzAnLCBzbyBpdCBs
b29rcyBsaWtlIGFuIGFycmF5Cit0cnlXZWJraXRQb3N0TWVzc2FnZSgnQycsIG51bGwsICcqJyk7
Cit0cnlXZWJraXRQb3N0TWVzc2FnZSgnRCcsIHZvaWQgMCwgJyonKTsKK3RyeVdlYmtpdFBvc3RN
ZXNzYWdlKCdFJywgW2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDJdLCAnKicsIHRydWUpOyAv
LyBmYWlsczogdGhvc2UgcG9ydHMgaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJyZWQuCitjaGFu
bmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJ0YnLCBbY2hh
bm5lbC5wb3J0MV0sICcqJyk7Cit0cnlQb3N0TWVzc2FnZSgnRycsIFtjaGFubmVsLnBvcnQxXSwg
JyonLCB0cnVlKTsgLy8gZmFpbHM6IHRoYXQgcG9ydCBoYXMgYWxyZWFkeSBiZWVuIHRyYW5zZmVy
cmVkLgorY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK3RyeVdlYmtpdFBvc3RNZXNzYWdl
KGNoYW5uZWwucG9ydDEsIFtjaGFubmVsLnBvcnQxXSwgJyonKTsKK3RyeVBvc3RNZXNzYWdlKGNo
YW5uZWwucG9ydDIsIFtjaGFubmVsLnBvcnQyXSwgJyonLCB0cnVlKTsgLy8gZmFpbHM6IHBvc3RN
ZXNzYWdlIGRvZXMgbm90IGFsbG93IFRyYW5zZmVyYWJsZSBhcmd1bWVudHMgaW4gbWVzc2FnZSBi
b2RpZXMuCiB0cnlQb3N0TWVzc2FnZSgyMTQ3NDgzNjQ4LCBudWxsLCAnKicpOwogdHJ5UG9zdE1l
c3NhZ2UoJ2RvbmUnLCAnKicpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCBm
MjhhOWI1Li5iOTE4MjEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
d2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTExODMsNiArMTE4Myw3
IEBAIHdpbmRvdy5NZXNzYWdlUG9ydC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCBbZnVuY3Rpb25d
CiB3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLnBvc3RNZXNzYWdlIFtmdW5jdGlvbl0KIHdp
bmRvdy5NZXNzYWdlUG9ydC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25d
CiB3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLnN0YXJ0IFtmdW5jdGlvbl0KK3dpbmRvdy5N
ZXNzYWdlUG9ydC5wcm90b3R5cGUud2Via2l0UG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQogd2luZG93
Lk1pbWVUeXBlIFtvYmplY3QgTWltZVR5cGVDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5NaW1lVHlwZS5w
cm90b3R5cGUgW29iamVjdCBNaW1lVHlwZVByb3RvdHlwZV0KIHdpbmRvdy5NaW1lVHlwZUFycmF5
IFtvYmplY3QgTWltZVR5cGVBcnJheUNvbnN0cnVjdG9yXQpAQCAtMjA4Miw2ICsyMDgzLDcgQEAg
d2luZG93Lldvcmtlci5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCBbZnVuY3Rpb25dCiB3aW5kb3cu
V29ya2VyLnByb3RvdHlwZS5wb3N0TWVzc2FnZSBbZnVuY3Rpb25dCiB3aW5kb3cuV29ya2VyLnBy
b3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyIFtmdW5jdGlvbl0KIHdpbmRvdy5Xb3JrZXIucHJv
dG90eXBlLnRlcm1pbmF0ZSBbZnVuY3Rpb25dCit3aW5kb3cuV29ya2VyLnByb3RvdHlwZS53ZWJr
aXRQb3N0TWVzc2FnZSBbZnVuY3Rpb25dCiB3aW5kb3cuWE1MRG9jdW1lbnQgW3ByaW50ZWQgYWJv
dmUgYXMgd2luZG93LkRvY3VtZW50XQogd2luZG93LlhNTEh0dHBSZXF1ZXN0IFtvYmplY3QgWE1M
SHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5YTUxIdHRwUmVxdWVzdC5ET05FIFtudW1i
ZXJdCkBAIC0yMjgwLDYgKzIyODIsNyBAQCB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90eXBlLnNo
b3dNb2RhbERpYWxvZyBbZnVuY3Rpb25dCiB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90eXBlLnN0
b3AgW2Z1bmN0aW9uXQogd2luZG93LmNvbnN0cnVjdG9yLnByb3RvdHlwZS53ZWJraXRDb252ZXJ0
UG9pbnRGcm9tTm9kZVRvUGFnZSBbZnVuY3Rpb25dCiB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90
eXBlLndlYmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2RlIFtmdW5jdGlvbl0KK3dpbmRvdy5j
b25zdHJ1Y3Rvci5wcm90b3R5cGUud2Via2l0UG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQogd2luZG93
LmNyeXB0byBbb2JqZWN0IENyeXB0b10KIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIFtm
dW5jdGlvbl0KIHdpbmRvdy5kZWNvZGVVUkkgW2Z1bmN0aW9uXQpAQCAtMjQ3Myw2ICsyNDc2LDcg
QEAgd2luZG93LnVuZGVmaW5lZCBbdW5kZWZpbmVkXQogd2luZG93LnVuZXNjYXBlIFtmdW5jdGlv
bl0KIHdpbmRvdy53ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZSBbZnVuY3Rpb25dCiB3
aW5kb3cud2Via2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUgW2Z1bmN0aW9uXQord2luZG93
LndlYmtpdFBvc3RNZXNzYWdlIFtmdW5jdGlvbl0KIHdpbmRvdy53aW5kb3cgW3ByaW50ZWQgYWJv
dmUgYXMgd2luZG93XQogd2luZG93LmdldFNlbGVjdGlvbigpIFtvYmplY3QgRE9NU2VsZWN0aW9u
XQogd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlIFtmdW5jdGlvbl0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQKaW5kZXggMmFmNjc0NS4uYzU4OTU2NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlw
dG9ycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQKQEAgLTUzOSw2ICs1MzksNyBAQCBQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAndG9TdHJpbmcnKSBp
cyB1bmRlZmluZWQuCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93
LCAndmFsdWVPZicpIGlzIHVuZGVmaW5lZC4KIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3aW5kb3csICd3ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZScpIGlzIHVu
ZGVmaW5lZC4KIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICd3
ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZScpIGlzIHVuZGVmaW5lZC4KK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICd3ZWJraXRQb3N0TWVzc2FnZScp
IGlzIHVuZGVmaW5lZC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVy
aXRhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhl
cml0YW5jZS1leHBlY3RlZC50eHQKaW5kZXggODNjZWNmNC4uOGI4M2NmYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQu
dHh0CkBAIC03OTksNiArNzk5LDggQEAgUEFTUyBpbm5lci53ZWJraXRDb252ZXJ0UG9pbnRGcm9t
Tm9kZVRvUGFnZS5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIud2Via2l0Q29udmVydFBvaW50
RnJvbU5vZGVUb1BhZ2UuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndl
YmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2RlLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5l
ci53ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlz
IHRydWUKK1BBU1MgaW5uZXIud2Via2l0UG9zdE1lc3NhZ2UuaXNJbm5lciBpcyB0cnVlCitQQVNT
IGlubmVyLndlYmtpdFBvc3RNZXNzYWdlLmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFT
UyBpbm5lci53aW5kb3cuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndpbmRvdy5jb25zdHJ1
Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJn
cy1leHBlY3RlZC50eHQKaW5kZXggNWVjZTg0MS4uNGVhNjE3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1l
c3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSw0IEBACi1UZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5k
b3cucG9zdE1lc3NhZ2UgaXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBpcyBu
b3QgYSBtZXNzYWdlIHBvcnQuIFlvdSBzaG91bGQgc2VlIFBBU1MgbWVzc2FnZSAnMScgdGhyb3Vn
aCAnNycsIGZvbGxvd2VkIGJ5ICdkb25lJywgd2l0aCBtZXNzYWdlcyA0LTcgcmVjZWl2ZWQgYmVs
b3cuCitUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cucG9zdE1lc3NhZ2Ug
aXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBpcyBub3QgYSBtZXNzYWdlIHBv
cnQuCiAKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzEnLCAxKTogdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdAogUEFT
UzogUG9zdGluZyBtZXNzYWdlICgnMicsICk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1l
c3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKQEAgLTcsMTIgKzcsMjgg
QEAgUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNCcsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzUnLCBudWxsKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNicsIHVu
ZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2Fn
ZSAoJzcnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJzgnLCAx
KTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQg
bXVzdCBiZSBhbiBvYmplY3QKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJzknLCApOiB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlcmFibGVBcnJheSBhcmd1bWVudCBtdXN0
IGJlIGFuIG9iamVjdAorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnQScsIFtvYmplY3Qg
T2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyYWJsZUFycmF5IGFy
Z3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3Nh
Z2UgKCdCJywgW29iamVjdCBET01XaW5kb3ddKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgor
UEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnQycsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdEJywgdW5kZWZpbmVkKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgn
RScsIFtvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBvcnRdKTogdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMQorUEFTUzog
d2Via2l0UG9zdGluZyBtZXNzYWdlICgnRicsIFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90
IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnRycsIFtvYmplY3Qg
TWVzc2FnZVBvcnRdKTogdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMQorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnW29iamVjdCBN
ZXNzYWdlUG9ydF0nLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNl
cHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29i
amVjdCBNZXNzYWdlUG9ydF0pOiB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJS
OiBET00gRXhjZXB0aW9uIDI1CiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcyMTQ3NDgzNjQ4Jywg
bnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAo
J2RvbmUnLCAqKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUmVjZWl2ZWQgbWVzc2FnZSAn
NCcKIFJlY2VpdmVkIG1lc3NhZ2UgJzUnCiBSZWNlaXZlZCBtZXNzYWdlICc2JwogUmVjZWl2ZWQg
bWVzc2FnZSAnNycgd2l0aCAyIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnQicKK1JlY2VpdmVk
IG1lc3NhZ2UgJ0MnCitSZWNlaXZlZCBtZXNzYWdlICdEJworUmVjZWl2ZWQgbWVzc2FnZSAnRicg
d2l0aCAxIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBNZXNzYWdlUG9ydF0nIHdp
dGggMSBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnCiBSZWNlaXZlZCBtZXNz
YWdlICdkb25lJwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13
aW4vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93
LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CmluZGV4IDVlY2U4NDEuLjRlYTYxN2YgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdl
LWFyZ3MtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGVzdCB0aGF0IHRoZSBzZWNvbmQg
YXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4g
ZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1l
c3NhZ2UgJzEnIHRocm91Z2ggJzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMg
NC03IHJlY2VpdmVkIGJlbG93LgorVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2lu
ZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMg
bm90IGEgbWVzc2FnZSBwb3J0LgogCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBi
ZSBhbiBvYmplY3QKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzInLCApOiB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0
CkBAIC03LDEyICs3LDI4IEBAIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzQnLCBbb2JqZWN0IERP
TVdpbmRvd10pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3Nh
Z2UgKCc1JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3Rpbmcg
bWVzc2FnZSAoJzYnLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNT
OiBQb3N0aW5nIG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNz
YWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5n
IG1lc3NhZ2UgKCc4JywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyYWJs
ZUFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0CitQQVNTOiB3ZWJraXRQb3N0aW5nIG1l
c3NhZ2UgKCc5JywgKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJhYmxlQXJy
YXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2Fn
ZSAoJ0EnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFu
c2ZlcmFibGVBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZQorUEFTUzogd2Vi
a2l0UG9zdGluZyBtZXNzYWdlICgnQicsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0MnLCBudWxsKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgn
RCcsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBv
c3RpbmcgbWVzc2FnZSAoJ0UnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQ
b3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNl
cHRpb24gMTEKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0YnLCBbb2JqZWN0IE1lc3Nh
Z2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2Fn
ZSAoJ0cnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5W
QUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVz
c2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBu
b3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1l
c3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdKTogdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQogUEFTUzogUG9zdGluZyBtZXNzYWdl
ICgnMjE0NzQ4MzY0OCcsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQ
b3N0aW5nIG1lc3NhZ2UgKCdkb25lJywgKikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFJl
Y2VpdmVkIG1lc3NhZ2UgJzQnCiBSZWNlaXZlZCBtZXNzYWdlICc1JwogUmVjZWl2ZWQgbWVzc2Fn
ZSAnNicKIFJlY2VpdmVkIG1lc3NhZ2UgJzcnIHdpdGggMiBwb3J0cy4KK1JlY2VpdmVkIG1lc3Nh
Z2UgJ0InCitSZWNlaXZlZCBtZXNzYWdlICdDJworUmVjZWl2ZWQgbWVzc2FnZSAnRCcKK1JlY2Vp
dmVkIG1lc3NhZ2UgJ0YnIHdpdGggMSBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3Qg
TWVzc2FnZVBvcnRdJyB3aXRoIDEgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICcyMTQ3NDgzNjQ4
JwogUmVjZWl2ZWQgbWVzc2FnZSAnZG9uZScKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhl
cml0YW5jZS1leHBlY3RlZC50eHQKaW5kZXggNTU2MzcxMy4uZWNjZGQ3ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRh
bmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CkBAIC04MjksNiArODI5LDgg
QEAgUEFTUyBpbm5lci53ZWJraXRJREJUcmFuc2FjdGlvbi5pc0lubmVyIGlzIHRydWUKIFBBU1Mg
aW5uZXIud2Via2l0SURCVHJhbnNhY3Rpb24uY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBG
QUlMIGlubmVyLndlYmtpdEluZGV4ZWREQi5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFs
c2UuCiBGQUlMIGlubmVyLndlYmtpdEluZGV4ZWREQi5jb25zdHJ1Y3Rvci5pc0lubmVyIHNob3Vs
ZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVyLndlYmtpdFBvc3RNZXNzYWdlLmlzSW5u
ZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIud2Via2l0UG9zdE1lc3Nh
Z2UuY29uc3RydWN0b3IuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgogUEFTUyBp
bm5lci53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlu
bmVyLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRy
dWUKIFBBU1MgaW5uZXIud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0uaXNJbm5lciBpcyB0cnVlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDc1ZTQ1YzguLjBiODFmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC01ODksNiArNTg5LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9Ub3Vj
aC5jcHAKICAgICBkb20vVG91Y2hFdmVudC5jcHAKICAgICBkb20vVG91Y2hMaXN0LmNwcAorICAg
IGRvbS9UcmFuc2ZlcmFibGUuY3BwCisgICAgZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuY3BwCiAg
ICAgZG9tL1RyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwCiAgICAgZG9tL1RyYXZlcnNhbC5jcHAK
ICAgICBkb20vVHJlZVNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdiMjk3NWUuLmZjNWIwN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMDQgQEAKKzIwMTEtMDgtMDYgIEx1a2UgWmFya28gIDxsdWtl
emFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgTWVzc2FnZVBvcnQgVHJhbnNmZXJhYmxl
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIw
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBT
dHJ1Y3R1cmVkIENsb25lIGFsZ29yaXRobSBkZXNjcmliZXMgYW4gaW50ZXJmYWNlIGZvciBUcmFu
c2ZlcmFibGUgb2JqZWN0cworICAgICAgICAoaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dl
Yi1hcHBzL2N1cnJlbnQtd29yay9jb21wbGV0ZS9jb21tb24tZG9tLWludGVyZmFjZXMuaHRtbCN0
cmFuc2ZlcmFibGUtb2JqZWN0cykuCisgICAgICAgIEN1cnJlbnRseSB0aGUgb25seSBvZmZpY2lh
bCBUcmFuc2ZlcmFibGUgb2JqZWN0IGlzIHRoZSBNZXNzYWdlUG9ydCwgYnV0CisgICAgICAgIEFy
cmF5QnVmZmVycyBhcmUgZXhwZWN0ZWQgdG8gYmUgc2FuY3Rpb25lZCBhcyBzdWNoIHNvb24uCisK
KyAgICAgICAgLSBBZGQgVHJhbnNmZXJhYmxlLmgvY3BwIGFuZCBUcmFuc2ZlcmFibGVSZWNlaXB0
LmgvY3BwCisgICAgICAgIC0gQ3JlYXRlIG5ldyBjbGFzc2VzIFRyYW5zZmVyYWJsZSBhbmQgVHJh
bnNmZXJhYmxlUmVjZWlwdC4KKyAgICAgICAgICAgIC0gQ29udHJvbCBvZiBhIFRyYW5zZmVyYWJs
ZSBvYmplY3QgY2FuIGJlIHRyYW5zZmVycmVkIG91dCwgeWllbGRpbmcgYQorICAgICAgICAgICAg
ICBUcmFuc2ZlcmFibGVSZWNlaXB0LgorICAgICAgICAgICAgLSBBIFRyYW5zZmVyYWJsZVJlY2Vp
cHQgY2FuIHRoZW4gYmUgdHJhbnNmZXJyZWQgaW4sIHlpZWxkaW5nIGEgVHJhbnNmZXJhYmxlLgor
ICAgICAgICAgICAgLSBNZXNzYWdlUG9ydCBpcyByZXBhcmVudGVkIHRvIFRyYW5zZmVyYWJsZSBh
bmQgTWVzc2FnZVBvcnRDaGFubmVsIGlzCisgICAgICAgICAgICAgIHJlcGFyZW50ZWQgdG8gVHJh
bnNmZXJhYmxlUmVjZWlwdC4KKyAgICAgICAgLSBJbnN0ZWFkIG9mIHBhc3NpbmcgYXJvdW5kIGEg
U2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpdGggYQorICAgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5IChmb3IsIGVnLCB3ZWJraXRQb3N0TWVzc2FnZSksIGluc3RlYWQgYQorICAgICAgICAg
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpcyBwYWlyZWQgd2l0aCBhIFRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheS4KKyAgICAgICAgICAgIC0gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpbGwgdXNlIG9i
amVjdCByZWZlcmVuY2VzIGluc3RlYWQgb2YgY2xvbmVzIGZvcgorICAgICAgICAgICAgICBvYmpl
Y3RzIGluIHRoZSB0cmFuc2ZlciBsaXN0LgorICAgICAgICAgICAgLSBUaGUgVjggU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIHNvbWV0aW1lcyBuZWVkcyB0byBiZSBzZW50IGFjcm9zcyBhbiBJUEMKKyAg
ICAgICAgICAgICAgYm91bmRhcnkuIEluIHRoaXMgY2FzZSBzb21lIFRyYW5zZmVyYWJsZVJlY2Vp
cHRzIHdpdGhvdXQgc3BlY2lhbCBjbG9uaW5nCisgICAgICAgICAgICAgIHNlbWFudGljcyAoZWcs
IG5vbi1NZXNzYWdlUG9ydHMsIHdoaWNoIHNlbmQgYWNyb3NzIHJvdXRpbmcgaW5mb3JtYXRpb24p
CisgICAgICAgICAgICAgIHdpbGwgbmVlZCB0byBiZSBmbGF0dGVuZWQuIFRoaXMgcGF0Y2ggZXhw
b3NlcyBhbiBpbnRlcmZhY2UgZm9yIHN1Y2ggYW4KKyAgICAgICAgICAgICAgb3BlcmF0aW9uLgor
ICAgICAgICAtIE1vZGlmeSBJREwgZ2VuZXJhdG9ycyBmb3IgU2VyaWFsaXplZFNjcmlwdFZhbHVl
IHRvIHJlcXVpcmUgYW5kIHBhc3MgdHJhbnNmZXIKKyAgICAgICAgICBsaXN0cyB0byB0aGUgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIGNvbnN0cnVjdG9yLgorICAgICAgICAtIFJlcGFyZW50ZWQgSlND
J3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIHRvIFRocmVhZFNhZmVSZWZDb3VudGVkLgorICAgICAg
ICAtIFRoZSBvbGQgcG9zdE1lc3NhZ2UgaXMgcHJlc2VydmVkIHdpdGggdGhhdCBuYW1lOyB3ZWJr
aXRQb3N0TWVzc2FnZSBoYW5kbGVzCisgICAgICAgICAgVHJhbnNmZXJhYmxlcyBvdGhlciB0aGFu
IE1lc3NhZ2VQb3J0cyBhbmQgYWxsb3dzIHRoZXNlIFRyYW5zZmVyYWJsZXMgdG8KKyAgICAgICAg
ICBhcHBlYXIgaW4gdGhlIG1lc3NhZ2UgYmVpbmcgcG9zdGVkLiAoRGl0dG8gZm9yIGluaXRNZXNz
YWdlRXZlbnQuKQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ldGFQb3N0TWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3c6OndlYmtpdFBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OndlYmtpdFBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U01lc3NhZ2VFdmVudDo6cG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6bWV0YUluaXRNZXNzYWdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OndlYmtpdEluaXRNZXNzYWdl
RXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6d2Via2l0UG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmlsbFRyYW5zZmVyYWJsZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZl
VHJhbnNmZXJhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNUcmFuc2ZlcmFibGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNv
cmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlcjo6cG9zdE1lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXb3JrZXI6OndlYmtpdFBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1
ZTo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxp
emVyOjpDbG9uZVNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVy
Ojppbml0aWFsaXplV2l0aFRyYW5zZmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNl
cmlhbGl6ZXI6OnN0YXJ0T2JqZWN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVE
ZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJp
YWxpemVyOjpDbG9uZURlc2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6b3BlblRyYW5zZmVyYWJsZUFycmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZVRvVjhDb252
ZXJ0ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlNlcmlhbGl6ZXI6OlNlcmlhbGl6ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6U2VyaWFsaXplcjo6aW5pdGlhbGl6ZU9i
amVjdFBvb2wpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OkRlc2VyaWFsaXplcjo6
RGVzZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpEZXNlcmlhbGl6
ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpEZXNlcmlh
bGl6ZXI6OmluaXRpYWxpemVPYmplY3RQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmZsYXR0ZW5SZWNlaXB0TGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6
OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6Ondl
YmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWV0
YVBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGVk
aWNhdGVkV29ya2VyQ29udGV4dDo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29yR2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Om1ldGFJbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjptZXRhUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4TWVzc2FnZVBvcnQ6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0VHJhbnNmZXJhYmxlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9OYXRp
dmVUcmFuc2ZlcmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOFRyYW5zZmVyYWJsZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3Jr
ZXI6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXI6Ondl
YmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6
CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6
OmluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjptZXNz
YWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OnRyYW5zZmVyYWJsZSk6
CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpkYXRhRGVw
ZW5kZW5jaWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6dHJhbnNmZXJhYmxl
cyk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6CisgICAgICAgICogZG9tL01lc3Nh
Z2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnRyYW5zZmVyT3V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojphc01lc3NhZ2VQb3J0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojppc1RyYW5zZmVyQ2xvc2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Ojppc0VudGFuZ2xlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6aXNDbG9uZWQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAg
ICAgICogZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZVBvcnRDaGFubmVsOjp0cmFuc2ZlckluKToKKyAgICAgICAgKiBkb20vTWVzc2Fn
ZVBvcnRDaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OmFz
TWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5l
bDo6aXNGbGF0dGVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6
OkV2ZW50RGF0YTo6cmVjZWlwdHMpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpzdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQb3BTdGF0ZUV2ZW50OjpkYXRhRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiBkb20vVHJhbnNm
ZXJhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2ZlcmFibGU6OnRyYW5z
ZmVyQWxsT3V0KToKKyAgICAgICAgKiBkb20vVHJhbnNmZXJhYmxlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VHJhbnNmZXJhYmxlOjphc01lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZmVyYWJsZTo6flRyYW5zZmVyYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2ZlcmFibGU6OlRyYW5zZmVyYWJsZSk6CisgICAgICAgICogZG9tL1RyYW5zZmVyYWJsZVJlY2Vp
cHQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwuCisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKToKKyAg
ICAgICAgKiBkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6On5UcmFuc2ZlcmFibGVSZWNlaXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmFzTWVzc2FnZVBvcnRDaGFubmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6OlRyYW5zZmVyYWJsZVJlY2VpcHQp
OgorICAgICAgICAqIHAycC9QZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdlVGltZXI6OlBvc3RNZXNz
YWdlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1lcjo6ZXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
c3RvcmFnZS9JREJDdXJzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dmFsdWVE
ZXBlbmRlbmNpZXMpOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2Fn
ZSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg6CisgICAgICAg
ICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDoKKyAgICAgICAgKiB3b3JrZXJz
L1NoYXJlZFdvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29ubmVj
dEV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5oOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRl
eHRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpNZXNzYWdlV29ya2VyQ29u
dGV4dFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpw
ZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyVGFzazo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJUYXNrOjpNZXNzYWdlV29ya2VyVGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyVGFzazo6cGVyZm9ybVRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RN
ZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oOgorCiAyMDEx
LTA4LTA1ICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQ6IGNoYW5nZSBhbiBpbnN0YW5jZSBvZiBpc0ltcG9ydFJ1bGUoKSB0
aGF0IHdhcyBvdmVybG9va2VkIGluIGNvbW1pdCA5MjQ0OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDU2MzhiYmMuLjQ4OWUxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMTMwNCw2ICsxMzA0LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL1RleHRFdmVudElucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hMaXN0LmggXAorCVNvdXJjZS9XZWJD
b3JlL2RvbS9UcmFuc2ZlcmFibGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJh
YmxlLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuaCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1RyYW5zZm9ybVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3Jt
U291cmNlTGlieHNsdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjQxMjk5OC4uMDRlZDQ5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTU2Niw3ICs1NjYsOCBAQCBfX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRF
dmVudEMxRVA3TlNFdmVudAogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMHNl
cnZlUGVuZGluZ1JlcXVlc3RzRU5TXzIwUmVzb3VyY2VMb2FkUHJpb3JpdHlFCiBfX1pON1dlYkNv
cmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkRVBOU181
RnJhbWVFUE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnRFUktOU18xNVJlc291
cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29yZTIxU1ZHRG9jdW1lbnRFeHRlbnNpb25zMjFzYW1wbGVB
bmltYXRpb25BdFRpbWVFUktOM1dURjZTdHJpbmdFUE5TXzE0U1ZHU01JTEVsZW1lbnRFZAotX19a
TjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWUxMWRlc2VyaWFsaXplRVBLMTVPcGFxdWVK
U0NvbnRleHRQUEsxM09wYXF1ZUpTVmFsdWUKK19fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlw
dFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVlSlNDb250ZXh0UFBLMTNPcGFxdWVKU1ZhbHVl
UE4zV1RGNlZlY3RvcklOM0pTQzdKU1ZhbHVlRUxtMUVFRQorX19aTjdXZWJDb3JlMjFTZXJpYWxp
emVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBLMTVPcGFxdWVKU0NvbnRleHRQSzEzT3BhcXVlSlNWYWx1
ZVBTNl9QTjNXVEY2VmVjdG9ySU4zSlNDN0pTVmFsdWVFTG0xRUVFYgogX19aTjdXZWJDb3JlMjFT
ZXJpYWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBLMTVPcGFxdWVKU0NvbnRleHRQSzEzT3BhcXVl
SlNWYWx1ZVBTNl8KIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlQzFFUk4zV1RG
NlZlY3RvckloTG0wRUVFCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQxRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA1ZDViNzlhLi4wYzRhZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xMDE3LDYgKzEwMTcsOCBAQAogICAgICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50LmgnLAog
ICAgICAgICAgICAgJ2RvbS9UZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0RXZlbnRJbnB1
dFR5cGUuaCcsCisgICAgICAgICAgICAnZG9tL1RyYW5zZmVyYWJsZS5oJywKKyAgICAgICAgICAg
ICdkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oJywKICAgICAgICAgICAgICdkb20vVUlFdmVudC5o
JywKICAgICAgICAgICAgICdkb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oJywKICAgICAgICAgICAg
ICdkb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaCcsCkBAIC01NDA3LDYgKzU0MDksMTAgQEAKICAg
ICAgICAgICAgICdkb20vVG91Y2hFdmVudC5oJywKICAgICAgICAgICAgICdkb20vVG91Y2hMaXN0
LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1RvdWNoTGlzdC5oJywKKyAgICAgICAgICAgICdkb20v
VHJhbnNmZXJhYmxlLmNwcCcsCisgICAgICAgICAgICAnZG9tL1RyYW5zZmVyYWJsZS5oJywKKyAg
ICAgICAgICAgICdkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAnLAorICAgICAgICAgICAgJ2Rv
bS9UcmFuc2ZlcmFibGVSZWNlaXB0LmgnLAogICAgICAgICAgICAgJ2RvbS9UcmFuc2Zvcm1Tb3Vy
Y2UuaCcsCiAgICAgICAgICAgICAnZG9tL1RyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwJywKICAg
ICAgICAgICAgICdkb20vVHJhbnNmb3JtU291cmNlUXQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXgg
NzAwOGMyMS4uOGNlNjMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTU1Myw2ICs1NTMsOCBAQCBTT1VS
Q0VTICs9IFwKICAgICBkb20vVG91Y2guY3BwIFwKICAgICBkb20vVG91Y2hFdmVudC5jcHAgXAog
ICAgIGRvbS9Ub3VjaExpc3QuY3BwIFwKKyAgICBkb20vVHJhbnNmZXJhYmxlLmNwcCBcCisgICAg
ZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuY3BwIFwKICAgICBkb20vVHJhdmVyc2FsLmNwcCBcCiAg
ICAgZG9tL1RyZWVTY29wZS5jcHAgXAogICAgIGRvbS9UcmVlV2Fsa2VyLmNwcCBcCkBAIC0xNTQ1
LDYgKzE1NDcsOCBAQCBIRUFERVJTICs9IFwKICAgICBkb20vVG91Y2guaCBcCiAgICAgZG9tL1Rv
dWNoRXZlbnQuaCBcCiAgICAgZG9tL1RvdWNoTGlzdC5oIFwKKyAgICBkb20vVHJhbnNmZXJhYmxl
LmggXAorICAgIGRvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmggXAogICAgIGRvbS9UcmFuc2Zvcm1T
b3VyY2UuaCBcCiAgICAgZG9tL1RyYXZlcnNhbC5oIFwKICAgICBkb20vVHJlZURlcHRoTGltaXQu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYTU4MzA2NC4uOTA5YmY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDgyNCwxMiArNDgyNCwxNiBAQAogCQlC
NzM0QjE4MTExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjczNEIxODAxMTlCOTkxMTAwNjU4
N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmNwcCAqLzsgfTsKIAkJQjczNEIxODMxMTlCOTkxRDAwNjU4
N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNzM0QjE4MjExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIu
aCAqLzsgfTsKIAkJQjc3NkQ0M0QxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzc2RDQzQzEx
MDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCAqLzsgfTsKKwkJQjg2MTg3MkMxM0Q4
RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCODYxODcyQTEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNm
ZXJhYmxlLmNwcCAqLzsgfTsKKwkJQjg2MTg3MkQxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVy
YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg2
MTg3MkIxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI4ODVFOEQ0MTFFMDZERDIwMDlGRkJG
NCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8q
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgKi87IH07CiAJCUI4ODVFOEQ1MTFF
MDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4ODVFOEQzMTFFMDZERDIw
MDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQlCOERCREI0QjEzMEIwRjhBMDBGNUNEQjEgLyog
U2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCOERCREI0NzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29t
bWFuZC5jcHAgKi87IH07CiAJCUI4REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rp
b25Db21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovOyB9
OwogCQlCOERCREI0RDEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERC
REI0OTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgKi87
IH07CiAJCUI4REJEQjRFMTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21t
YW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERC
REI0QTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovOyB9
OworCQlCOEUwRThGRTEzRUM3RTREMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhFMEU4RkQxM0VD
N0UwQzAwQzEzNzIwIC8qIFRyYW5zZmVyYWJsZVJlY2VpcHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCOEUwRThGRjEzRUM3RTU1MDBDMTM3MjAg
LyogVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCOEUwRThGQzEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxl
UmVjZWlwdC5jcHAgKi87IH07CiAJCUJBQ0YyOTAxMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRU
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkFD
RjI5MDAxM0IyQTBENTAwNzgxRjkwIC8qIExheW91dFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMwMEYwMDQwRTBBMTg1NTAwRkQwNEUz
IC8qIERPTUZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDBFRkZFMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggKi87IH07CiAJCUJDMDBG
MDA1MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEVGRkYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZp
bGUubW0gKi87IH07CkBAIC0xMTUwMywxMiArMTE1MDcsMTYgQEAKIAkJQjczNEIxODIxMTlCOTkx
RDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEZvbnRUcmFuc2NvZGVyLmg7IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBF
QyAvKiBQcmludENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJp
bnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3NzZENDNDMTEwNDUy
NzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJpbnRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjg2MTg3MkExM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2ZlcmFibGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCODYxODcyQjEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJh
YmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZmVyYWJsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCODg1RThEMjExRTA2REQyMDA5RkZCRjQgLyog
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4ODVFOEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI4REJEQjQ3MTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21t
YW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldFNlbGVjdGlv
bkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0ODEzMEIw
RjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZXRTZWxlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI4REJEQjQ5MTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERC
REI0QTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4RTBFOEZDMTNFQzdFMEMwMEMxMzcyMCAv
KiBUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCOEUwRThGRDEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2ZlcmFibGVSZWNlaXB0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJBQ0YyOTAwMTNCMkEwRDUwMDc4MUY5MCAvKiBM
YXlvdXRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRUeXBl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0
RTMgLyogRE9NRmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRF
MyAvKiBET01GaWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RE9NRmlsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMDA3LDYgKzIwMDE1
LDEwIEBACiAJCQkJOTMzQTE0MkQwQjdEMTg4NjAwQTUzRkZEIC8qIFRleHRFdmVudC5oICovLAog
CQkJCTkzM0ExNDJDMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuaWRsICovLAogCQkJCUE3
N0I0MTlGMTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0RXZlbnRJbnB1dFR5cGUuaCAqLywKKwkJCQlC
ODYxODcyQjEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmggKi8sCisJCQkJQjg2MTg3
MkExM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgKi8sCisJCQkJQjhFMEU4RkQx
M0VDN0UwQzAwQzEzNzIwIC8qIFRyYW5zZmVyYWJsZVJlY2VpcHQuaCAqLywKKwkJCQlCOEUwRThG
QzEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAgKi8sCiAJCQkJNURC
MUJDNjgxMDcxNUE2NDAwRUZBQTQ5IC8qIFRyYW5zZm9ybVNvdXJjZS5oICovLAogCQkJCTVEQjFC
QzY5MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCAqLywKIAkJ
CQk4NTRGRTcyQzBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmNwcCAqLywKQEAgLTIzMTc2
LDYgKzIzMTg4LDggQEAKIAkJCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0NDYxM0IwMENENjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRTBFRkFDOTA2MDA5RDBDQUYgLyogVGltaW5n
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUI4NjE4NzJEMTNEOEVDNDkwMDhCODc0RiAv
KiBUcmFuc2ZlcmFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUI4RTBFOEZFMTNFQzdFNEQwMEMx
MzcyMCAvKiBUcmFuc2ZlcmFibGVSZWNlaXB0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFD
NDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5RTkxMUNFMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1P
cGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDA2LDYgKzI2MDIwLDggQEAKIAkJCQk3
NTUzQ0ZFOTEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzMzA5RUE0MDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFNDQ2MTNBRjBDRDYzMzEwMDBGQURBNzUgLyogVGltZVJhbmdlcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCODYxODcyQzEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNm
ZXJhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI4RTBFOEZGMTNFQzdFNTUwMEMxMzcyMCAv
KiBUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUMzMEVG
ODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0OTRCQzQwRDEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNm
b3JtYXRpb25NYXRyaXhDRy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA3NDQ4MTc2Li41MzkxMzc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC02OTQsMTYgKzY5NCwxNiBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxE
aWFsb2coRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBoYW5kbGVyLnJldHVyblZhbHVlKCk7
CiB9CiAKLUpTVmFsdWUgSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBKU1ZhbHVlIG1ldGFQb3N0TWVzc2FnZShFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NV2lu
ZG93KiB3aW5kb3csIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3IpCiB7Ci0gICAgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0KKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0
cmFuc2ZlcmFibGVzOworICAgIEpTVmFsdWVBcnJheSB2YWx1ZUFycmF5OworICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPiAyKQorICAgICAgICBmaWxsVHJhbnNmZXJhYmxlQXJyYXkoZXhl
YywgZXhlYy0+YXJndW1lbnQoMSksIHRyYW5zZmVyYWJsZXMsIHZhbHVlQXJyYXksIHVzZUxlZ2Fj
eUJlaGF2aW9yKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCi0gICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9ydHM7Ci0g
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDIpCi0gICAgICAgIGZpbGxNZXNzYWdlUG9y
dEFycmF5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCBtZXNzYWdlUG9ydHMpOworICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgJnZhbHVlQXJyYXksIHVzZUxlZ2FjeUJl
aGF2aW9yLCBUaHJvd2luZyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtNzEyLDEyICs3MTIsMjIgQEAgSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS0+
cG9zdE1lc3NhZ2UobWVzc2FnZSwgJm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBhY3RpdmVE
T01XaW5kb3coZXhlYyksIGVjKTsKKyAgICB3aW5kb3ctPmltcGwoKS0+cG9zdE1lc3NhZ2UobWVz
c2FnZSwgJnRyYW5zZmVyYWJsZXMsIHRhcmdldE9yaWdpbiwgYWN0aXZlRE9NV2luZG93KGV4ZWMp
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQogCitKU1ZhbHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIG1ldGFQb3N0TWVzc2FnZShleGVjLCB0aGlzLCB0cnVl
KTsKK30KKworSlNWYWx1ZSBKU0RPTVdpbmRvdzo6d2Via2l0UG9zdE1lc3NhZ2UoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIHJldHVybiBtZXRhUG9zdE1lc3NhZ2UoZXhlYywgdGhpcywgZmFsc2Up
OworfQorCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRUaW1lb3V0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGlt
cGwoKS0+ZG9jdW1lbnQoKSA/IGltcGwoKS0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMjIyMjM1My4uNWYwNGMx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC00NCw3ICs0NCwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEpTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBv
c3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBoYW5kbGVQb3N0
TWVzc2FnZShleGVjLCBpbXBsKCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShleGVj
LCBpbXBsKCksIHRydWUpOworfQorCitKU0M6OkpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Ojp3ZWJraXRQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1
cm4gaGFuZGxlUG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgpLCBmYWxzZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA0Mzk2NjRhLi42YzJiNDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC00
NCwzOCArNDQsNTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTTWVzc2FnZUV2
ZW50Ojpwb3J0cyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJh
eSogcG9ydHMgPSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPihpbXBsKCkpLT5wb3J0cygpOwot
ICAgIGlmICghcG9ydHMgfHwgcG9ydHMtPmlzRW1wdHkoKSkKKyAgICBNZXNzYWdlRXZlbnQqIGV2
ZW50ID0gc3RhdGljX2Nhc3Q8TWVzc2FnZUV2ZW50Kj4oaW1wbCgpKTsKKyAgICBUcmFuc2ZlcmFi
bGVBcnJheSogdHJhbnNmZXJhYmxlcyA9IGV2ZW50LT50cmFuc2ZlcmFibGVzKCk7CisgICAgaWYg
KCF0cmFuc2ZlcmFibGVzIHx8IHRyYW5zZmVyYWJsZXMtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwotCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBvcnRzLT5zaXplKCk7IGkrKykKLSAgICAgICAgbGlzdC5hcHBl
bmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgKCpwb3J0cylbaV0uZ2V0KCkpKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZmVyYWJsZXMtPnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSAoKnRyYW5zZmVyYWJsZXMpW2ldLmdl
dCgpLT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgICAgICBsaXN0LmFwcGVuZCh0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCgpLCBtZXNzYWdlUG9ydCkpOworICAgIH0KICAgICByZXR1cm4gY29uc3Ry
dWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGxpc3QpOwogfQogCi1KU0M6OkpTVmFsdWUg
SlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgSlNDOjpKU1ZhbHVlIG1ldGFJbml0TWVzc2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU01lc3NhZ2VFdmVudCoganNFdmVudCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvcikKIHsK
ICAgICBjb25zdCBVU3RyaW5nJiB0eXBlQXJnID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyk7CiAgICAgYm9vbCBjYW5CdWJibGVBcmcgPSBleGVjLT5hcmd1bWVudCgxKS50b0Jvb2xl
YW4oZXhlYyk7CiAgICAgYm9vbCBjYW5jZWxhYmxlQXJnID0gZXhlYy0+YXJndW1lbnQoMikudG9C
b29sZWFuKGV4ZWMpOwotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
QXJnID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQo
MykpOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlczsKKyAgICBP
d25QdHI8SlNWYWx1ZUFycmF5PiB2YWx1ZUFycmF5OworICAgIGlmICghZXhlYy0+YXJndW1lbnQo
NykuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICB0cmFuc2ZlcmFibGVzID0gYWRvcHRQ
dHIobmV3IFRyYW5zZmVyYWJsZUFycmF5KTsKKyAgICAgICAgdmFsdWVBcnJheSA9IGFkb3B0UHRy
KG5ldyBKU1ZhbHVlQXJyYXkpOworICAgICAgICBmaWxsVHJhbnNmZXJhYmxlQXJyYXkoZXhlYywg
ZXhlYy0+YXJndW1lbnQoNyksICp0cmFuc2ZlcmFibGVzLCAqdmFsdWVBcnJheSwgdXNlTGVnYWN5
QmVoYXZpb3IpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDMpLCB2YWx1ZUFycmF5LmdldCgpLCB1c2VMZWdhY3lCZWhhdmlvciwgVGhy
b3dpbmcpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgY29uc3QgVVN0cmluZyYgb3JpZ2luQXJnID0gZXhlYy0+YXJndW1l
bnQoNCkudG9TdHJpbmcoZXhlYyk7CiAgICAgY29uc3QgVVN0cmluZyYgbGFzdEV2ZW50SWRBcmcg
PSBleGVjLT5hcmd1bWVudCg1KS50b1N0cmluZyhleGVjKTsKICAgICBET01XaW5kb3cqIHNvdXJj
ZUFyZyA9IHRvRE9NV2luZG93KGV4ZWMtPmFyZ3VtZW50KDYpKTsKLSAgICBPd25QdHI8TWVzc2Fn
ZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoNykuaXNV
bmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBtZXNzYWdlUG9ydHMgPSBhZG9wdFB0cihuZXcg
TWVzc2FnZVBvcnRBcnJheSk7Ci0gICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDcpLCAqbWVzc2FnZVBvcnRzKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQogCi0g
ICAgTWVzc2FnZUV2ZW50KiBldmVudCA9IHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVudCo+KHRoaXMt
PmltcGwoKSk7Ci0gICAgZXZlbnQtPmluaXRNZXNzYWdlRXZlbnQodXN0cmluZ1RvQXRvbWljU3Ry
aW5nKHR5cGVBcmcpLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIGRhdGFBcmcsIHVzdHJp
bmdUb1N0cmluZyhvcmlnaW5BcmcpLCB1c3RyaW5nVG9TdHJpbmcobGFzdEV2ZW50SWRBcmcpLCBz
b3VyY2VBcmcsIG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCkpOworICAgIE1lc3NhZ2VFdmVudCogZXZl
bnQgPSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPihqc0V2ZW50LT5pbXBsKCkpOworICAgIGV2
ZW50LT5pbml0TWVzc2FnZUV2ZW50KHVzdHJpbmdUb0F0b21pY1N0cmluZyh0eXBlQXJnKSwgY2Fu
QnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCB1c3RyaW5nVG9TdHJpbmcob3JpZ2lu
QXJnKSwgdXN0cmluZ1RvU3RyaW5nKGxhc3RFdmVudElkQXJnKSwgc291cmNlQXJnLCB0cmFuc2Zl
cmFibGVzLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKK0pTQzo6
SlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChKU0M6OkV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICByZXR1cm4gbWV0YUluaXRNZXNzYWdlRXZlbnQoZXhlYywgdGhpcywgdHJ1
ZSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VF
dmVudChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gbWV0YUluaXRNZXNzYWdl
RXZlbnQoZXhlYywgdGhpcywgZmFsc2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
CmluZGV4IGFjMDZjNmEuLjI0NmFhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2Fz
dC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KIApAQCAtNTcsMTUgKzU4LDIxIEBAIHZvaWQgSlNNZXNzYWdlUG9ydDo6dmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIAogSlNDOjpKU1ZhbHVlIEpTTWVzc2Fn
ZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBo
YW5kbGVQb3N0TWVzc2FnZShleGVjLCBpbXBsKCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVz
c2FnZShleGVjLCBpbXBsKCksIHRydWUpOwogfQogCi12b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QXJy
YXkmIHBvcnRBcnJheSkKK0pTQzo6SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojp3ZWJraXRQb3N0TWVz
c2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICAvLyBDb252ZXJ0IGZyb20gdGhlIHBh
c3NlZC1pbiBKUyBhcnJheS1saWtlIG9iamVjdCB0byBhIE1lc3NhZ2VQb3J0QXJyYXkuCisgICAg
cmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSwgZmFsc2UpOworfQorCit2b2lk
IGZpbGxUcmFuc2ZlcmFibGVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBUcmFuc2ZlcmFibGVBcnJheSYgdHJhbnNmZXJhYmxlQXJyYXksIEpTVmFsdWVBcnJh
eSYgdmFsdWVBcnJheSwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvcikKK3sKKyAgICAvLyBDb252ZXJ0
IGZyb20gdGhlIHBhc3NlZC1pbiBKUyBhcnJheS1saWtlIG9iamVjdCB0byBhIFRyYW5zZmVyYWJs
ZUFycmF5LgogICAgIC8vIEFsc28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMg
NC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9m
IHRoZSBIVE1MNSBzcGVjLgogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0g
ICAgICAgIHBvcnRBcnJheS5yZXNpemUoMCk7CisgICAgICAgIHRyYW5zZmVyYWJsZUFycmF5LnJl
c2l6ZSgwKTsKKyAgICAgICAgdmFsdWVBcnJheS5yZXNpemUoMCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTg1LDE0ICs5MiwzNCBAQCB2b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5KEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKwogICAgICAgICAvLyBWYWxpZGF0aW9uIG9m
IE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4x
NS4KLSAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gdG9NZXNzYWdlUG9ydCh2YWx1
ZSk7Ci0gICAgICAgIGlmICghcG9ydCkgeworICAgICAgICBSZWZQdHI8VHJhbnNmZXJhYmxlPiB0
cmFuc2ZlcmFibGUgPSB0b05hdGl2ZVRyYW5zZmVyYWJsZSh2YWx1ZSk7CisgICAgICAgIGlmICgh
dHJhbnNmZXJhYmxlIHx8ICh1c2VMZWdhY3lCZWhhdmlvciAmJiAhdHJhbnNmZXJhYmxlLT5hc01l
c3NhZ2VQb3J0KCkpKSB7CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBwb3J0QXJyYXkuYXBwZW5kKHBvcnQu
cmVsZWFzZSgpKTsKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJyYXkuYXBwZW5kKHRyYW5zZmVyYWJs
ZS5yZWxlYXNlKCkpOworICAgICAgICB2YWx1ZUFycmF5LmFwcGVuZCh2YWx1ZSk7CiAgICAgfQog
fQogCitQYXNzUmVmUHRyPFRyYW5zZmVyYWJsZT4gdG9OYXRpdmVUcmFuc2ZlcmFibGUoSlNDOjpK
U1ZhbHVlIHZhbHVlKQoreworICAgIFJlZlB0cjxUcmFuc2ZlcmFibGU+IG91dFZhbHVlID0gdG9N
ZXNzYWdlUG9ydCh2YWx1ZSk7CisgICAgaWYgKG91dFZhbHVlKQorICAgICAgICByZXR1cm4gb3V0
VmFsdWUucmVsZWFzZSgpOworICAgIC8vIFdlJ2xsIHJldHVybiBudWxsIGlmIHZhbHVlIGlzIG5v
dCBUcmFuc2ZlcmFibGUgaW4gYW55IGNhc2UuCisgICAgcmV0dXJuIG91dFZhbHVlLnJlbGVhc2Uo
KTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlNUcmFuc2ZlcmFibGUoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRyYW5zZmVyYWJsZSogdmFsdWUp
Cit7CisgICAgaWYgKE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9IHZhbHVlLT5hc01lc3NhZ2VQ
b3J0KCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBv
cnQpOworICAgIC8vIFRoaXMgdHlwZWNhc2Ugc2hvdWxkIGFsd2F5cyBiZSB0b3RhbC4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKaW5kZXggODM5NmFlMS4uMjkyNmFkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaApAQCAtMzIs
NiArMzIsOCBAQAogI2RlZmluZSBKU01lc3NhZ2VQb3J0Q3VzdG9tX2gKIAogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVk
ZSAiVHJhbnNmZXJhYmxlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMzksMjYgKzQxLDMxIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLSAgICAvLyBIZWxwZXIgZnVu
Y3Rpb24gd2hpY2ggcHVsbHMgdGhlIHZhbHVlcyBvdXQgb2YgYSBKUyBzZXF1ZW5jZSBhbmQgaW50
byBhIE1lc3NhZ2VQb3J0QXJyYXkuCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxz
IHRoZSB2YWx1ZXMgb3V0IG9mIGEgSlMgc2VxdWVuY2UgYW5kIGludG8gYSBUcmFuc2ZlcmFibGVB
cnJheSwgbWlycm9yaW5nIHRoZXNlIGludG8gYSBKU1ZhbHVlQXJyYXkuCiAgICAgLy8gQWxzbyB2
YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0LjEuMTMgYW5kIDQuMS4xNSBvZiB0
aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMuCiAgICAg
Ly8gTWF5IGdlbmVyYXRlIGFuIGV4Y2VwdGlvbiB2aWEgdGhlIHBhc3NlZCBFeGVjU3RhdGUuCi0g
ICAgdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgTWVzc2FnZVBvcnRBcnJheSYpOworICAgIHZvaWQgZmlsbFRyYW5zZmVyYWJsZUFycmF5KEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBUcmFuc2ZlcmFibGVBcnJheSYsIEpTVmFsdWVB
cnJheSYsIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3IpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9u
IHRvIGNvbnZlcnQgZnJvbSBKUyBwb3N0TWVzc2FnZSBhcmd1bWVudHMgdG8gV2ViQ29yZSBwb3N0
TWVzc2FnZSBhcmd1bWVudHMuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5l
IEpTQzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgVCog
aW1wbCkKKyAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBUKiBpbXBsLCBib29sIHVzZUxlZ2FjeUJlaGF2aW9yKQogICAgIHsKLSAg
ICAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwotICAgICAgICBmaWxsTWVzc2FnZVBvcnRBcnJh
eShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgcG9ydEFycmF5KTsKKyAgICAgICAgVHJhbnNmZXJh
YmxlQXJyYXkgdHJhbnNmZXJhYmxlQXJyYXk7CisgICAgICAgIEpTVmFsdWVBcnJheSB2YWx1ZVJl
ZkFycmF5OworICAgICAgICBmaWxsVHJhbnNmZXJhYmxlQXJyYXkoZXhlYywgZXhlYy0+YXJndW1l
bnQoMSksIHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1ZVJlZkFycmF5LCB1c2VMZWdhY3lCZWhhdmlv
cik7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVy
biBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5h
cmd1bWVudCgwKSwgJnZhbHVlUmVmQXJyYXksIHVzZUxlZ2FjeUJlaGF2aW9yLCBUaHJvd2luZyk7
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBK
U0M6OmpzVW5kZWZpbmVkKCk7CiAKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
ICAgIGltcGwtPnBvc3RNZXNzYWdlKG1lc3NhZ2UsICZwb3J0QXJyYXksIGVjKTsKKyAgICAgICAg
aW1wbC0+cG9zdE1lc3NhZ2UobWVzc2FnZSwgJnRyYW5zZmVyYWJsZUFycmF5LCBlYyk7CiAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgICAgIHJldHVybiBKU0M6OmpzVW5k
ZWZpbmVkKCk7CiAgICAgfQogCisgICAgUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRvTmF0aXZl
VHJhbnNmZXJhYmxlKEpTQzo6SlNWYWx1ZSk7CisgICAgSlNDOjpKU1ZhbHVlIHRvSlNUcmFuc2Zl
cmFibGUoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRyYW5zZmVyYWJsZSop
OwogfQogI2VuZGlmIC8vIEpTTWVzc2FnZVBvcnRDdXN0b21faApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCmluZGV4IDI3NTgwYWUuLjE5MDQ0NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKQEAgLTQx
LDcgKzQxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNDOjpKU1ZhbHVlIEpTV29ya2Vy
Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gaGFuZGxl
UG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgpKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uo
ZXhlYywgaW1wbCgpLCB0cnVlKTsKK30KKworSlNDOjpKU1ZhbHVlIEpTV29ya2VyOjp3ZWJraXRQ
b3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gaGFuZGxlUG9z
dE1lc3NhZ2UoZXhlYywgaW1wbCgpLCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNXb3JrZXJDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRl
KiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCmluZGV4
IDRmNTFkZGIuLmViYzU4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRW
YWx1ZS5jcHAKQEAgLTEwMCwxNCArMTAwLDE0IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmlzRnVuY3Rp
b24oKSBjb25zdAogICAgIHJldHVybiBnZXRDYWxsRGF0YShtX3ZhbHVlLmdldCgpLCBjYWxsRGF0
YSkgIT0gQ2FsbFR5cGVOb25lOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlh
bGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQorUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0
YXRlLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvciwg
U2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7Ci0gICAgcmV0dXJuIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCksIHRocm93
RXhjZXB0aW9ucyk7CisgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNj
cmlwdFN0YXRlLCBqc1ZhbHVlKCksIHRyYW5zZmVyTGlzdCwgdXNlTGVnYWN5QmVoYXZpb3IsIHRo
cm93RXhjZXB0aW9ucyk7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6
ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUs
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQorU2NyaXB0VmFsdWUgU2Ny
aXB0VmFsdWU6OmRlc2VyaWFsaXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiB2YWx1ZSwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewotICAgIHJldHVybiBTY3JpcHRWYWx1
ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCB2YWx1ZS0+ZGVzZXJpYWxpemUoc2NyaXB0U3Rh
dGUsIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHRocm93RXhjZXB0aW9ucykp
OworICAgIHJldHVybiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCB2YWx1
ZS0+ZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIHRyYW5zZmVyTGlzdCwgdGhyb3dFeGNlcHRpb25zKSk7CiB9CiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKaW5kZXgg
ZmFkZTgzMC4uYjdkZWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1
ZS5oCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTY3JpcHRWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92
YWx1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6
ZShTY3JpcHRTdGF0ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0gICAg
c3RhdGljIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplKFNjcmlwdFN0YXRlKiwgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKKyAgICBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplKFNjcmlwdFN0YXRlKiwgSlNW
YWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3IsIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgc3RhdGljIFNjcmlwdFZhbHVlIGRlc2Vy
aWFsaXplKFNjcmlwdFN0YXRlKiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgSlNWYWx1ZUFycmF5
KiB0cmFuc2Zlckxpc3QsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CiAKICAg
ICBzdGF0aWMgU2NyaXB0VmFsdWUgdW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDhiYWY5MTku
LjIyMGM2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpTRmlsZS5o
IgogI2luY2x1ZGUgIkpTRmlsZUxpc3QuaCIKICNpbmNsdWRlICJKU0ltYWdlRGF0YS5oIgorI2lu
Y2x1ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJKU05hdmlnYXRvci5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTk2LDggKzk3
LDkgQEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAqCiAgKiBJbml0aWFsIHZlcnNpb24gd2Fz
IDEuCiAgKiBWZXJzaW9uIDIuIGFkZGVkIHRoZSBPYmplY3RSZWZlcmVuY2VUYWcgYW5kIHN1cHBv
cnQgZm9yIHNlcmlhbGl6YXRpb24gb2YgY3ljbGljIGdyYXBocy4KKyAqIFZlcnNpb24gMy4gYWRk
ZWQgdHJhbnNmZXIgbGlzdHMuCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgQ3VycmVu
dFZlcnNpb24gPSAyOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBDdXJyZW50VmVyc2lvbiA9
IDM7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IFRlcm1pbmF0b3JUYWcgPSAweEZGRkZGRkZG
Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBTdHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsK
IApAQCAtMjUwLDkgKzI1Miw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgYm9vbCB3
cml0ZUxpdHRsZUVuZGlhbihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uCiAKIGNsYXNzIENs
b25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlIHNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IFZlY3Rvcjx1aW50OF90PiYgb3V0KQorICAgIHN0YXRpYyBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSBzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlQXJyYXkq
IHRyYW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvciwgVmVjdG9yPHVpbnQ4X3Q+JiBv
dXQpCiAgICAgewotICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihleGVjLCBvdXQp
OworICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihleGVjLCB0cmFuc2Zlckxpc3Qs
IHVzZUxlZ2FjeUJlaGF2aW9yLCBvdXQpOwogICAgICAgICByZXR1cm4gc2VyaWFsaXplci5zZXJp
YWxpemUodmFsdWUpOwogICAgIH0KIApAQCAtMjY5LDEwICsyNzEsMTMgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBDbG9uZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBWZWN0
b3I8dWludDhfdD4mIG91dCkKKyAgICBDbG9uZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvciwgVmVjdG9y
PHVpbnQ4X3Q+JiBvdXQpCiAgICAgICAgIDogQ2xvbmVCYXNlKGV4ZWMpCiAgICAgICAgICwgbV9i
dWZmZXIob3V0KQogICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmcoIiIs
IDApKQorICAgICAgICAsIG1fdHJhbnNmZXJMaXN0KHRyYW5zZmVyTGlzdCkKKyAgICAgICAgLCBt
X3VzZUxlZ2FjeUJlaGF2aW9yKHVzZUxlZ2FjeUJlaGF2aW9yKQorICAgICAgICAsIG1fbWluaW11
bVZhbGlkUmVmZXJlbmNlKDApCiAgICAgewogICAgICAgICB3cml0ZShDdXJyZW50VmVyc2lvbik7
CiAgICAgfQpAQCAtMjg3LDEzICsyOTIsMzMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlz
SlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIG9iamVjdCkgfHwgb2JqZWN0LT5pbmhlcml0
cygmSlNBcnJheTo6c19pbmZvKTsKICAgICB9CiAKKyAgICBib29sIGluaXRpYWxpemVXaXRoVHJh
bnNmZXJMaXN0KCkKKyAgICB7CisgICAgICAgIGlmICghbV90cmFuc2Zlckxpc3QpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RyYW5z
ZmVyTGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSAoKm1f
dHJhbnNmZXJMaXN0KVtpXTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5n
ZXRPYmplY3QoKTsKKyAgICAgICAgICAgIGlmICghb2JqZWN0KQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIHBhaXI8T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+
IGl0ZXIgPSBtX29iamVjdFBvb2wuYWRkKG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7Cisg
ICAgICAgICAgICAvLyBBbGwgb2JqZWN0cyBpbiB0aGUgdHJhbnNmZXIgbGlzdCBtdXN0IGJlIHVu
aXF1ZS4KKyAgICAgICAgICAgIGlmICghaXRlci5zZWNvbmQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmQodmFsdWUpOworICAgICAg
ICB9CisgICAgICAgIGlmIChtX3VzZUxlZ2FjeUJlaGF2aW9yKQorICAgICAgICAgICAgbV9taW5p
bXVtVmFsaWRSZWZlcmVuY2UgPSBtX29iamVjdFBvb2wuc2l6ZSgpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKICAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9i
amVjdCkKICAgICB7CiAgICAgICAgIC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBoIHJlY29uc3Ry
dWN0aW9uCiAgICAgICAgIHBhaXI8T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBt
X29iamVjdFBvb2wuYWRkKG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7CiAgICAgICAgIAog
ICAgICAgICAvLyBIYW5kbGUgZHVwbGljYXRlIHJlZmVyZW5jZXMKLSAgICAgICAgaWYgKCFpdGVy
LnNlY29uZCkgeworICAgICAgICBpZiAoIWl0ZXIuc2Vjb25kICYmIGl0ZXIuZmlyc3QtPnNlY29u
ZCA+PSBtX21pbmltdW1WYWxpZFJlZmVyZW5jZSkgewogICAgICAgICAgICAgd3JpdGUoT2JqZWN0
UmVmZXJlbmNlVGFnKTsKICAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90Pihp
dGVyLmZpcnN0LT5zZWNvbmQpIDwgbV9vYmplY3RQb29sLnNpemUoKSk7CiAgICAgICAgICAgICB3
cml0ZU9iamVjdEluZGV4KGl0ZXIuZmlyc3QtPnNlY29uZCk7CkBAIC02MDYsNiArNjMxLDkgQEAg
cHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCB1aW50MzJf
dCwgSWRlbnRpZmllclJlcEhhc2g+IFN0cmluZ0NvbnN0YW50UG9vbDsKICAgICBTdHJpbmdDb25z
dGFudFBvb2wgbV9jb25zdGFudFBvb2w7CiAgICAgSWRlbnRpZmllciBtX2VtcHR5SWRlbnRpZmll
cjsKKyAgICBKU1ZhbHVlQXJyYXkqIG1fdHJhbnNmZXJMaXN0OworICAgIGJvb2wgbV91c2VMZWdh
Y3lCZWhhdmlvcjsKKyAgICBzaXplX3QgbV9taW5pbXVtVmFsaWRSZWZlcmVuY2U7CiB9OwogCiBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVl
IGluKQpAQCAtNjE4LDYgKzY0NiwxMCBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgIFZlY3RvcjxXYWxrZXJTdGF0ZSwg
MTY+IHN0YXRlU3RhY2s7CiAgICAgV2Fsa2VyU3RhdGUgc3RhdGUgPSBTdGF0ZVVua25vd247CiAg
ICAgSlNWYWx1ZSBpblZhbHVlID0gaW47CisgICAgaWYgKCFpbml0aWFsaXplV2l0aFRyYW5zZmVy
TGlzdCgpKSB7CisgICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIFZhbGlk
YXRpb25FcnJvcjsKKyAgICB9CiAgICAgdW5zaWduZWQgdGlja0NvdW50ID0gdGlja3NVbnRpbE5l
eHRDaGVjaygpOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKQEAg
LTc4MywxMSArODE1LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cmluZyhzdHIuaW1w
bCgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFs
aXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCisgICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3Vs
dCBkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1
ZmZlcikKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyLnNpemUoKSkKICAgICAgICAgICAgIHJl
dHVybiBtYWtlX3BhaXIoanNOdWxsKCksIFVuc3BlY2lmaWVkRXJyb3IpOwotICAgICAgICBDbG9u
ZURlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBidWZmZXIpOwor
ICAgICAgICBDbG9uZURlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywgZ2xvYmFsT2JqZWN0
LCB0cmFuc2Zlckxpc3QsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVyLmlzVmFs
aWQoKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlX3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9u
RXJyb3IpOwogICAgICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCk7CkBAIC04
MzIsMTMgKzg2NCwxNCBAQCBwcml2YXRlOgogICAgICAgICBzaXplX3QgbV9pbmRleDsKICAgICB9
OwogCi0gICAgQ2xvbmVEZXNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKKyAgICBDbG9u
ZURlc2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1
ZmZlcikKICAgICAgICAgOiBDbG9uZUJhc2UoZXhlYykKICAgICAgICAgLCBtX2dsb2JhbE9iamVj
dChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9pc0RPTUdsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3QtPmluaGVyaXRzKCZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvKSkKICAgICAgICAgLCBtX3B0
cihidWZmZXIuZGF0YSgpKQogICAgICAgICAsIG1fZW5kKGJ1ZmZlci5kYXRhKCkgKyBidWZmZXIu
c2l6ZSgpKQogICAgICAgICAsIG1fdmVyc2lvbigweEZGRkZGRkZGKQorICAgICAgICAsIG1fdHJh
bnNmZXJMaXN0KHRyYW5zZmVyTGlzdCkKICAgICB7CiAgICAgICAgIGlmICghcmVhZChtX3ZlcnNp
b24pKQogICAgICAgICAgICAgbV92ZXJzaW9uID0gMHhGRkZGRkZGRjsKQEAgLTExODksNiArMTIy
Miw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgdWludDhfdCogbV9lbmQ7CiAgICAgdW5zaWduZWQg
bV92ZXJzaW9uOwogICAgIFZlY3RvcjxDYWNoZWRTdHJpbmc+IG1fY29uc3RhbnRQb29sOworICAg
IEpTVmFsdWVBcnJheSogbV90cmFuc2Zlckxpc3Q7CiB9OwogCiBEZXNlcmlhbGl6YXRpb25SZXN1
bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkKQEAgLTEyMDEsNiArMTIzNSwxMSBA
QCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkK
ICAgICBXYWxrZXJTdGF0ZSBzdGF0ZSA9IFN0YXRlVW5rbm93bjsKICAgICBKU1ZhbHVlIG91dFZh
bHVlOwogCisgICAgaWYgKG1fdHJhbnNmZXJMaXN0KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV90cmFuc2Zlckxpc3QtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9nY0J1
ZmZlci5hcHBlbmQoKCptX3RyYW5zZmVyTGlzdClbaV0pOworICAgIH0KKwogICAgIHVuc2lnbmVk
IHRpY2tDb3VudCA9IHRpY2tzVW50aWxOZXh0Q2hlY2soKTsKICAgICB3aGlsZSAoMSkgewogICAg
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CkBAIC0xMzM4LDEwICsxMzc3LDE1IEBAIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVy
KQogICAgIG1fZGF0YS5zd2FwKGJ1ZmZlcik7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQor
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gY3Jl
YXRlKGV4ZWMsIHZhbHVlLCAwLCB0cnVlLCBUaHJvd2luZyk7Cit9CisKK1Bhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBib29s
IHVzZUxlZ2FjeUJlaGF2aW9yLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9u
cykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwotICAgIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShleGVjLCB2YWx1ZSwgYnVm
ZmVyKTsKKyAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVy
OjpzZXJpYWxpemUoZXhlYywgdmFsdWUsIHRyYW5zZmVyTGlzdCwgdXNlTGVnYWN5QmVoYXZpb3Is
IGJ1ZmZlcik7CiAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBUaHJvd2luZykKICAgICAgICAg
bWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChleGVjLCBjb2RlKTsKIApA
QCAtMTM2NywxMCArMTQxMSwxNSBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBzdAogCiBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
SlNDb250ZXh0UmVmIG9yaWdpbkNvbnRleHQsIEpTVmFsdWVSZWYgYXBpVmFsdWUsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKKyAgICByZXR1cm4gY3JlYXRlKG9yaWdpbkNvbnRleHQsIGFwaVZh
bHVlLCBleGNlcHRpb24sIDAsIHRydWUpOworfQorCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdp
bkNvbnRleHQsIEpTVmFsdWVSZWYgYXBpVmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgSlNW
YWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3IpCit7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhvcmlnaW5Db250ZXh0KTsKICAgICBBUElFbnRyeVNoaW0g
ZW50cnlTaGltKGV4ZWMpOwogICAgIEpTVmFsdWUgdmFsdWUgPSB0b0pTKGV4ZWMsIGFwaVZhbHVl
KTsKLSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVl
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgdmFsdWUpOworICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIHZhbHVlLCB0cmFuc2Zlckxpc3QsIHVzZUxlZ2FjeUJlaGF2
aW9yLCBUaHJvd2luZyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAg
IGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgZXhl
Yy0+ZXhjZXB0aW9uKCkpOwpAQCAtMTM3OCw3ICsxNDI3LDcgQEAgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJl
ZiBvcmkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIEFTU0VSVChzZXJpYWxpemVkVmFs
dWUpOwotICAgIHJldHVybiBzZXJpYWxpemVkVmFsdWU7CisgICAgcmV0dXJuIHNlcmlhbGl6ZWRW
YWx1ZS5yZWxlYXNlKCk7CiB9CiAKIFN0cmluZyBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRvU3Ry
aW5nKCkKQEAgLTEzODYsMTkgKzE0MzUsMTkgQEAgU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6dG9TdHJpbmcoKQogICAgIHJldHVybiBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemVT
dHJpbmcobV9kYXRhKTsKIH0KIAotSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2Vy
aWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU2Vy
aWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitKU1ZhbHVlIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgU2VyaWFsaXphdGlvbkVy
cm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7Ci0gICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJl
c3VsdCA9IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZShleGVjLCBnbG9iYWxPYmplY3Qs
IG1fZGF0YSk7CisgICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJlc3VsdCA9IENsb25lRGVzZXJp
YWxpemVyOjpkZXNlcmlhbGl6ZShleGVjLCBnbG9iYWxPYmplY3QsIHRyYW5zZmVyTGlzdCwgbV9k
YXRhKTsKICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFRocm93aW5nKQogICAgICAgICBtYXli
ZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKGV4ZWMsIHJlc3VsdC5zZWNvbmQp
OwogICAgIHJldHVybiByZXN1bHQuZmlyc3Q7CiB9CiAKLUpTVmFsdWVSZWYgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25Db250ZXh0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCitKU1ZhbHVlUmVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
ZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmIGRlc3RpbmF0aW9uQ29udGV4dCwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCkKIHsKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGRlc3RpbmF0aW9uQ29udGV4dCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5
U2hpbShleGVjKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemUoZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemUo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB0cmFuc2Zlckxpc3QpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAg
ICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigpKTsKQEAgLTE0
MDksNiArMTQ1OCwyNCBAQCBKU1ZhbHVlUmVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJp
YWxpemUoSlNDb250ZXh0UmVmIGRlc3RpbmF0aW9uQ29udGV4dCwgSgogICAgIHJldHVybiB0b1Jl
ZihleGVjLCB2YWx1ZSk7CiB9CiAKK0pTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNl
cmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRy
YW5zZmVyYWJsZUFycmF5KiB0cmFuc2Zlckxpc3QsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhy
b3dFeGNlcHRpb25zKQoreworICAgIEpTVmFsdWVBcnJheSB0cmFuc2ZlclZhbHVlTGlzdDsKKyAg
ICBpZiAodHJhbnNmZXJMaXN0ICYmICFvcGVuVHJhbnNmZXJhYmxlQXJyYXkoZXhlYywgZ2xvYmFs
T2JqZWN0LCAqdHJhbnNmZXJMaXN0LCB0cmFuc2ZlclZhbHVlTGlzdCkpIHsKKyAgICAgICAgaWYg
KHRocm93RXhjZXB0aW9ucyA9PSBUaHJvd2luZykKKyAgICAgICAgICAgIG1heWJlVGhyb3dFeGNl
cHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoZXhlYywgVmFsaWRhdGlvbkVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiBkZXNlcmlhbGl6ZShl
eGVjLCBnbG9iYWxPYmplY3QsICZ0cmFuc2ZlclZhbHVlTGlzdCwgdGhyb3dFeGNlcHRpb25zKTsK
K30KKworYm9vbCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om9wZW5UcmFuc2ZlcmFibGVBcnJheShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRyYW5zZmVyYWJs
ZUFycmF5JiB0cmFuc2Zlckxpc3QsIEpTVmFsdWVBcnJheSYgdmFsdWVBcnJheSkKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZmVyTGlzdC5zaXplKCk7ICsraSkKKyAgICAgICAg
dmFsdWVBcnJheS5hcHBlbmQodG9KU1RyYW5zZmVyYWJsZShleGVjLCBzdGF0aWNfY2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksIHRyYW5zZmVyTGlzdFtpXS5nZXQoKSkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCiBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBlbXB0eVZhbHVlLCAoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAzZmU0ZTAyLi43NWY5ZTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzEs
MTMgKzMxLDE2IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCit0eXBlZGVmIFZlY3RvcjxKU0M6OkpTVmFsdWUsIDE+IEpTVmFsdWVBcnJheTsK
K2NsYXNzIFRyYW5zZmVyYWJsZTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+
LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsKICAKIGVudW0gU2VyaWFsaXphdGlvblJldHVybkNvZGUg
ewogICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCwKQEAgLTUyLDEwICs1NSwxNCBAQCBlbnVtIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKIAogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCi1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgUmVm
Q291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlvbkVycm9y
TW9kZSA9IFRocm93aW5nKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbik7CisgICAgLy8gSWYgdXNlTGVnYWN5QmVoYXZpb3IgaXMgYXNzZXJ0ZWQsIHRo
ZW4gaXRlbXMgaW4gdHJhbnNmZXJMaXN0IHdpbGwgbm90IGJlIHJlZmVycmVkIHRvIGJ5IG9iamVj
dCByZWZlcmVuY2UgSUQgaW4gdGhlIHNlcmlhbGl6ZWQgdmFsdWUuCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBib29sIHVzZUxlZ2FjeUJlaGF2
aW9yLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbiwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIGJvb2wgdXNlTGVn
YWN5QmVoYXZpb3IpOworICAgIC8vIFRoZXNlIGRlZmF1bHQgdG8gdHJhbnNmZXJMaXN0ID0gMCwg
dXNlTGVnYWN5QmVoYXZpb3IgPSB0cnVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dp
bmcuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAg
IHsKQEAgLTY3LDggKzc0LDExIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b1N0cmluZygpOwog
ICAgIAotICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwotICAg
IEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pOworICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCA9IDAsIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zl
ckxpc3QgPSAwKTsKKyAgICAKKyAgICAvLyBQcmVmZXIgdGhlIGFib3ZlIDo6ZGVzZXJpYWxpemUg
KGFzIHRoaXMgY29uc3RydWN0cyBhIEpTVmFsdWVBcnJheSBhbmQgY2FsbHMgdGhlIG90aGVyIGZ1
bmN0aW9uKS4KKyAgICBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCA9IDAs
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7ICAgICAgCiAKICAgICBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KIApAQCAtNzcsNiArODcs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1heWJlVGhyb3dFeGNlcHRp
b25JZlNlcmlhbGl6YXRpb25GYWlsZWQoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZSk7CiAgICAgc3RhdGljIGJvb2wgc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vz
c2Z1bGx5KFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKKyAgICBzdGF0aWMgYm9vbCBvcGVuVHJh
bnNmZXJhYmxlQXJyYXkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgVHJh
bnNmZXJhYmxlQXJyYXkmLCBKU1ZhbHVlQXJyYXkmKTsKICAgICAKICAgICBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+Jik7CiAgICAgVmVjdG9yPHVuc2lnbmVkIGNo
YXI+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggYjc2ZDY5MC4uZjNhMDQzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI3NDEsNyAr
Mjc0MSw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgJGltcGxJbmNsdWRlc3siJGpv
aW5lZE5hbWUuaCJ9ID0gMTsKICAgICB9IGVsc2lmICgkdHlwZSBlcSAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlIiBvciAkdHlwZSBlcSAiYW55IikgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCJ9ID0gMTsKLSAgICAgICAgcmV0dXJuICIkdmFsdWUgPyAkdmFs
dWUtPmRlc2VyaWFsaXplKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSA6IGpzTnVs
bCgpIjsKKyAgICAgICAgcmV0dXJuICIkdmFsdWUgPyAkdmFsdWUtPmRlc2VyaWFsaXplKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXAtPmRhdGFEZXBlbmRlbmNpZXMoKSkgOiBq
c051bGwoKSI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgIyBEZWZhdWx0LCBpbmNsdWRlIGhlYWRl
ciB3aXRoIHNhbWUgbmFtZS4KICAgICAgICAgJGltcGxJbmNsdWRlc3siSlMkdHlwZS5oIn0gPSAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbQppbmRleCA2YjM3OTBlLi45ZDZkYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjU4Nyw3ICsyNTg3LDcgQEAg
RU5ECiAgICAgICAgICRhdHRyQXR0ciA9ICJzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KCRhdHRyQXR0cikiOwogICAgICAgICBteSAkZ2V0dGVyRnVuYyA9ICRjb2RlR2VuZXJhdG9y
LT5XS19sY2ZpcnN0KCRhdHRyTmFtZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVO
RCk7Ci0gICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5
KHdyYXBwZXIsICIke2F0dHJOYW1lfSIsICR7YXR0ckF0dHJ9LCBpbXBsLT4ke2dldHRlckZ1bmN9
KCkpOworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0
eSh3cmFwcGVyLCAiJHthdHRyTmFtZX0iLCAke2F0dHJBdHRyfSwgaW1wbC0+JHtnZXR0ZXJGdW5j
fSgpLCBpbXBsLT4ke2dldHRlckZ1bmN9RGVwZW5kZW5jaWVzKCkpOwogRU5ECiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAppbmRleCAyZDlkMGNkLi4xN2Y0ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAK
ICNpbmNsdWRlICJJbnQzMkFycmF5LmgiCiAjaW5jbHVkZSAiSW50OEFycmF5LmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCisjaW5jbHVkZSAi
VHJhbnNmZXJhYmxlUmVjZWlwdC5oIgogI2luY2x1ZGUgIlVpbnQxNkFycmF5LmgiCiAjaW5jbHVk
ZSAiVWludDMyQXJyYXkuaCIKICNpbmNsdWRlICJVaW50OEFycmF5LmgiCkBAIC02Myw2ICs2NSw3
IEBACiAjaW5jbHVkZSAiVjhJbnQxNkFycmF5LmgiCiAjaW5jbHVkZSAiVjhJbnQzMkFycmF5Lmgi
CiAjaW5jbHVkZSAiVjhJbnQ4QXJyYXkuaCIKKyNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0Q3VzdG9t
LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VWludDE2QXJyYXkuaCIKICNp
bmNsdWRlICJWOFVpbnQzMkFycmF5LmgiCkBAIC01NzUsMTMgKzU3OCwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIEpTRmFpbHVyZQogICAgIH07CiAKLSAgICBTZXJpYWxpemVyKFdyaXRlciYgd3JpdGVy
LCB2ODo6VHJ5Q2F0Y2gmIHRyeUNhdGNoKQorICAgIFNlcmlhbGl6ZXIoV3JpdGVyJiB3cml0ZXIs
IHY4OjpUcnlDYXRjaCYgdHJ5Q2F0Y2gsIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwg
Ym9vbCB1c2VMZWdhY3lCZWhhdmlvcikKICAgICAgICAgOiBtX3dyaXRlcih3cml0ZXIpCiAgICAg
ICAgICwgbV90cnlDYXRjaCh0cnlDYXRjaCkKICAgICAgICAgLCBtX2RlcHRoKDApCiAgICAgICAg
ICwgbV9leGVjRGVwdGgoMCkKICAgICAgICAgLCBtX3N0YXR1cyhTdWNjZXNzKQogICAgICAgICAs
IG1fbmV4dE9iamVjdFJlZmVyZW5jZSgwKQorICAgICAgICAsIG1fdHJhbnNmZXJMaXN0KHRyYW5z
ZmVyTGlzdCkKKyAgICAgICAgLCBtX3VzZUxlZ2FjeUJlaGF2aW9yKHVzZUxlZ2FjeUJlaGF2aW9y
KQogICAgIHsKICAgICAgICAgQVNTRVJUKCF0cnlDYXRjaC5IYXNDYXVnaHQoKSk7CiAgICAgfQpA
QCAtNTg5LDYgKzU5NCw4IEBAIHB1YmxpYzoKICAgICBTdGF0dXMgc2VyaWFsaXplKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29w
ZTsKKyAgICAgICAgaWYgKCFpbml0aWFsaXplT2JqZWN0UG9vbCgpKQorICAgICAgICAgICAgcmV0
dXJuIG1fc3RhdHVzOwogICAgICAgICBtX3dyaXRlci53cml0ZVZlcnNpb24oKTsKICAgICAgICAg
U3RhdGVCYXNlKiBzdGF0ZSA9IGRvU2VyaWFsaXplKHZhbHVlLCAwKTsKICAgICAgICAgd2hpbGUg
KHN0YXRlKQpAQCAtNjI4LDYgKzYzNSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Cisg
ICAgYm9vbCBpbml0aWFsaXplT2JqZWN0UG9vbCgpOworCiAgICAgY2xhc3MgU3RhdGVCYXNlIHsK
ICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RhdGVCYXNlKTsKICAgICBwdWJsaWM6CkBA
IC0xMDExLDggKzEwMjAsNDQgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIFY4T2JqZWN0TWFwPHY4
OjpPYmplY3QsIHVpbnQzMl90PiBPYmplY3RQb29sOwogICAgIE9iamVjdFBvb2wgbV9vYmplY3RQ
b29sOwogICAgIHVpbnQzMl90IG1fbmV4dE9iamVjdFJlZmVyZW5jZTsKKyAgICBWYWx1ZUhhbmRs
ZUFycmF5KiBtX3RyYW5zZmVyTGlzdDsKKyAgICBib29sIG1fdXNlTGVnYWN5QmVoYXZpb3I7CiB9
OwogCitib29sIFNlcmlhbGl6ZXI6OmluaXRpYWxpemVPYmplY3RQb29sKCkKK3sKKyAgICBpZiAo
IW1fdHJhbnNmZXJMaXN0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobV91c2VMZWdh
Y3lCZWhhdmlvcikgeworICAgICAgICAvLyBPZmZzZXQgbV9uZXh0T2JqZWN0UmVmZXJlbmNlIGJl
Y2F1c2Ugd2hlbiB0aGUgb2JqZWN0IGlzIGRlc2VyaWFsaXplZCB0aGUgb2JqZWN0IHJlZmVyZW5j
ZQorICAgICAgICAvLyBsaXN0IHdpbGwgYmUgcHJlbG9hZGVkIHdpdGggdGhlIHRyYW5zZmVyIGxp
c3QgKHdoZXRoZXIgbV91c2VMZWdhY3lCZWhhdmlvciB3YXMgYXNzZXJ0ZWQgb3IKKyAgICAgICAg
Ly8gbm90IGR1cmluZyBzZXJpYWxpemF0aW9uKS4KKyAgICAgICAgbV9uZXh0T2JqZWN0UmVmZXJl
bmNlID0gbV90cmFuc2Zlckxpc3QtPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RyYW5zZmVyTGlzdC0+c2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVHJhbnNmZXIgPSAoKm1fdHJh
bnNmZXJMaXN0KVtpXTsKKyAgICAgICAgaWYgKHRvVHJhbnNmZXItPklzT2JqZWN0KCkgfHwgdG9U
cmFuc2Zlci0+SXNEYXRlKCkgfHwgdG9UcmFuc2Zlci0+SXNSZWdFeHAoKSkgeworICAgICAgICAg
ICAgQVNTRVJUKCF0b1RyYW5zZmVyLT5Jc1N0cmluZygpKTsKKyAgICAgICAgICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gdjhPYmplY3QodG9UcmFuc2Zlci5Bczx2ODo6T2JqZWN0PigpKTsKKyAg
ICAgICAgICAgIHVpbnQzMl90IG9iamVjdFJlZmVyZW5jZTsKKyAgICAgICAgICAgIGlmIChtX29i
amVjdFBvb2wudHJ5R2V0KHY4T2JqZWN0LCAmb2JqZWN0UmVmZXJlbmNlKSkgeworICAgICAgICAg
ICAgICAgIC8vIEFuIG9iamVjdCB3YXMgaW5jbHVkZWQgaW4gdGhlIHRyYW5zZmVyIGxpc3QgbW9y
ZSB0aGFuIG9uY2UuCisgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBEYXRhQ2xvbmVFcnJvcjsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAvLyBBc3NpZ24gdG9UcmFuc2ZlciB0aGUgbmV4dCByZWZlcmVuY2UgSUQuIElmIHdlIHNlZSBp
dCBpbiB0aGUgb2JqZWN0IGdyYXBoLCB3ZSB3aWxsCisgICAgICAgICAgICAvLyBwYXNzIGl0IGJ5
IHJlZmVyZW5jZS4KKyAgICAgICAgICAgIGdyZXlPYmplY3QodjhPYmplY3QpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gQSBub24tb2JqZWN0IHdhcyBpbmNsdWRlZCBpbiB0aGUg
dHJhbnNmZXIgbGlzdC4KKyAgICAgICAgICAgIG1fc3RhdHVzID0gRGF0YUNsb25lRXJyb3I7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIFNlcmlhbGl6ZXI6OlN0YXRlQmFzZSogU2VyaWFsaXplcjo6ZG9TZXJpYWxpemUo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBTdGF0ZUJhc2UqIG5leHQpCiB7CiAgICAgaWYg
KG1fZXhlY0RlcHRoICsgKG5leHQgPyBuZXh0LT5leGVjRGVwdGgoKSA6IDApID4gMSkgewpAQCAt
MTY1MSwxNCArMTY5NiwxNyBAQCBwcml2YXRlOgogCiBjbGFzcyBEZXNlcmlhbGl6ZXIgOiBwdWJs
aWMgQ29tcG9zaXRlQ3JlYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGVzZXJpYWxpemVy
KFJlYWRlciYgcmVhZGVyKQorICAgIGV4cGxpY2l0IERlc2VyaWFsaXplcihSZWFkZXImIHJlYWRl
ciwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KQogICAgICAgICA6IG1fcmVhZGVyKHJl
YWRlcikKICAgICAgICAgLCBtX3ZlcnNpb24oMCkKKyAgICAgICAgLCBtX3RyYW5zZmVyTGlzdCh0
cmFuc2Zlckxpc3QpCiAgICAgewogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBk
ZXNlcmlhbGl6ZSgpCiAgICAgeworICAgICAgICBpZiAoIWluaXRpYWxpemVPYmplY3RQb29sKCkp
CisgICAgICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICAgICAgaWYgKCFtX3JlYWRlci5y
ZWFkVmVyc2lvbihtX3ZlcnNpb24pIHx8IG1fdmVyc2lvbiA+IHdpcmVGb3JtYXRWZXJzaW9uKQog
ICAgICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAgICAgICAgIG1fcmVhZGVyLnNldFZlcnNp
b24obV92ZXJzaW9uKTsKQEAgLTE3NzIsNiArMTgyMCwxMyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgorICAgIGJvb2wgaW5pdGlhbGl6ZU9iamVjdFBvb2woKQorICAgIHsKKyAgICAgICAg
aWYgKG1fdHJhbnNmZXJMaXN0KQorICAgICAgICAgICAgbV9vYmplY3RQb29sLmFwcGVuZCgqbV90
cmFuc2Zlckxpc3QpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBib29sIGlu
aXRpYWxpemVPYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHVpbnQzMl90IG51
bVByb3BlcnRpZXMsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiogdmFsdWUpCiAgICAgewogICAgICAg
ICB1bnNpZ25lZCBsZW5ndGggPSAyICogbnVtUHJvcGVydGllczsKQEAgLTE4MzcsMzQgKzE4OTIs
NjYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8djg6OkhhbmRsZTx2ODo6VmFsdWU+ID4gbV9vYmpl
Y3RQb29sOwogICAgIFZlY3Rvcjx1aW50MzJfdD4gbV9vcGVuQ29tcG9zaXRlUmVmZXJlbmNlU3Rh
Y2s7CiAgICAgdWludDMyX3QgbV92ZXJzaW9uOworICAgIFZhbHVlSGFuZGxlQXJyYXkqIG1fdHJh
bnNmZXJMaXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UKIAogdm9pZCBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBv
YmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRy
aWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUg
YXR0cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBWYWx1ZUhhbmRsZUFycmF5
KiB0cmFuc2Zlckxpc3QpCiB7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwotICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNlcmlhbGl6ZWQgPSB2YWx1ZS0+ZGVzZXJpYWxpemUo
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemVkID0gdmFsdWUtPmRlc2Vy
aWFsaXplKHRyYW5zZmVyTGlzdCk7CiAgICAgb2JqZWN0LT5Gb3JjZVNldCh2ODo6U3RyaW5nOjpO
ZXdTeW1ib2wocHJvcGVydHlOYW1lKSwgZGVzZXJpYWxpemVkLCBhdHRyaWJ1dGUpOwogfQogCiB2
b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlBy
b3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3Qp
CiB7Ci0gICAgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlLCB2YWx1ZS5nZXQoKSk7CisgICAgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eShv
YmplY3QsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlLCB2YWx1ZS5nZXQoKSwgdHJhbnNmZXJMaXN0
KTsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJv
cGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogdmFsdWUsIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2Zlckxpc3QpCit7CisgICAgVmFsdWVI
YW5kbGVBcnJheSogdmFsdWVIYW5kbGVBcnJheSA9IDA7CisgICAgVmFsdWVIYW5kbGVBcnJheSBs
b2NhbEFycmF5OworICAgIGlmICh0cmFuc2Zlckxpc3QpIHsKKyAgICAgICAgbG9jYWxBcnJheS5y
ZXNlcnZlQ2FwYWNpdHkodHJhbnNmZXJMaXN0LT5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRyYW5zZmVyTGlzdC0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBsb2Nh
bEFycmF5LmFwcGVuZCh0b1Y4VHJhbnNmZXJhYmxlKCgqdHJhbnNmZXJMaXN0KVtpXS5nZXQoKSkp
OworICAgICAgICB2YWx1ZUhhbmRsZUFycmF5ID0gJmxvY2FsQXJyYXk7CisgICAgfQorICAgIGRl
c2VyaWFsaXplQW5kU2V0UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZSwg
dmFsdWUsIHZhbHVlSGFuZGxlQXJyYXkpOworfQorCit2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVj
dCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBUcmFuc2ZlcmFibGVB
cnJheSogdHJhbnNmZXJMaXN0KQoreworICAgIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkob2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZSwgdmFsdWUuZ2V0KCksIHRyYW5zZmVyTGlzdCk7
Cit9CisKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRocm93
LCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3QsIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3Ip
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWUs
IGRpZFRocm93LCB0cmFuc2Zlckxpc3QsIHVzZUxlZ2FjeUJlaGF2aW9yKSk7Cit9CisKK1Bhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVy
TGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvcikKK3sKKyAgICBib29sIGRpZFRocm93OworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJv
dywgdHJhbnNmZXJMaXN0LCB1c2VMZWdhY3lCZWhhdmlvcikpOwogfQogCiBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBkaWRUaHJvdykKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3cpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3cs
IDAsIHRydWUpKTsKIH0KIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKIHsK
ICAgICBib29sIGRpZFRocm93OwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdywgMCwgdHJ1ZSkpOwogfQogCiBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGVGcm9tV2lyZShjb25zdCBTdHJpbmcmIGRhdGEpCkBAIC0xOTIwLDE0ICsyMDA3LDE0IEBAIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKCkKIHsKIH0KIAotU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCBib29sJiBkaWRUaHJvdykKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgZGlk
VGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhh
dmlvcikKIHsKICAgICBkaWRUaHJvdyA9IGZhbHNlOwogICAgIFdyaXRlciB3cml0ZXI7CiAgICAg
U2VyaWFsaXplcjo6U3RhdHVzIHN0YXR1czsKICAgICB7CiAgICAgICAgIHY4OjpUcnlDYXRjaCB0
cnlDYXRjaDsKLSAgICAgICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdyaXRlciwgdHJ5Q2F0Y2gp
OworICAgICAgICBTZXJpYWxpemVyIHNlcmlhbGl6ZXIod3JpdGVyLCB0cnlDYXRjaCwgdHJhbnNm
ZXJMaXN0LCB1c2VMZWdhY3lCZWhhdmlvcik7CiAgICAgICAgIHN0YXR1cyA9IHNlcmlhbGl6ZXIu
c2VyaWFsaXplKHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXR1cyA9PSBTZXJpYWxpemVyOjpKU0V4
Y2VwdGlvbikgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgSlMgZXhjZXB0aW9uIHRo
cm93biwgcmUtdGhyb3cgaXQuCkBAIC0xOTY1LDEzICsyMDUyLDIyIEBAIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFN0cmluZyYgd2lyZURhdGEpCiAg
ICAgbV9kYXRhID0gd2lyZURhdGEuY3Jvc3NUaHJlYWRTdHJpbmcoKTsKIH0KIAotdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoKQorU3RyaW5n
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJlY2VpcHRMaXN0KGNvbnN0IFN0cmluZyYg
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmIHJlY2VpcHRzKSB7CisgICAgLy8gRklYTUU6
IE9uY2UgYSBmbGF0dGVuYWJsZSByZWNlaXB0IGFwcGVhcnMsIHRoaXMgZnVuY3Rpb24gd2lsbCBo
YXZlIG1vcmUgd29yayB0byBkby4KKyAgICAvLyBVbmZsYXR0ZW5hYmxlIHJlY2VpcHRzIG1heSBi
ZSBwYXNzZWQgaW4gYXMgbnVsbC4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY2VpcHRz
LnNpemUoKTsgKytpKQorICAgICAgICBBU1NFUlQoIXJlY2VpcHRzW2ldIHx8ICFyZWNlaXB0c1tp
XS0+aXNGbGF0dGVuYWJsZSgpKTsKKyAgICByZXR1cm4gZGF0YS5jcm9zc1RocmVhZFN0cmluZygp
OworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNl
cmlhbGl6ZShWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3QpCiB7CiAgICAgaWYgKCFtX2Rh
dGEuaW1wbCgpKQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICBDT01QSUxFX0FTU0VS
VChzaXplb2YoQnVmZmVyVmFsdWVUeXBlKSA9PSAyLCBCdWZmZXJWYWx1ZVR5cGVJc1R3b0J5dGVz
KTsKICAgICBSZWFkZXIgcmVhZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1f
ZGF0YS5pbXBsKCktPmNoYXJhY3RlcnMoKSksIDIgKiBtX2RhdGEubGVuZ3RoKCkpOwotICAgIERl
c2VyaWFsaXplciBkZXNlcmlhbGl6ZXIocmVhZGVyKTsKKyAgICBEZXNlcmlhbGl6ZXIgZGVzZXJp
YWxpemVyKHJlYWRlciwgdHJhbnNmZXJMaXN0KTsKICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRl
c2VyaWFsaXplKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNGQyNDkyZC4uZTkzMWUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTMy
LDI1ICszMiw0OSBAQAogI2RlZmluZSBTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAogCiAjaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKKwogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFRyYW5zZmVyYWJsZTsKK2Ns
YXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJhbnNmZXJh
YmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNm
ZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKK3R5cGVkZWYgVmVj
dG9yPHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgMT4gVmFsdWVIYW5kbGVBcnJheTsKKwogY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlc2VyaWFsaXpl
QW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlBy
b3BlcnR5QXR0cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCk7CisgICAg
c3RhdGljIHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCk7CisgICAg
c3RhdGljIHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCk7CiAgICAgc3RhdGljIHZvaWQg
ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBj
aGFyKiBwcm9wZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJv
cGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgVmFsdWVI
YW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KTsKKworICAgIC8vIHRyYW5zZmVyTGlzdCBpcyBhbiBh
cnJheSBvZiBvYmplY3RzIHRoYXQgYXJlIG5vdCBmbGF0dGVuZWQgdG8gdGhlIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSBidXQKKyAgICAvLyBhcmUgaW5zdGVhZCBjb3BpZWQgYnkgcmVmZXJlbmNlLiBU
aGVzZSBvYmplY3RzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZWlyIGluZGljZXMgaW4gdHJhbnNmZXJM
aXN0LgorICAgIC8vIEZvciBleGFtcGxlOgorICAgIC8vICAgICBzZXJpYWxpemUoe2E6T2JqZWN0
MSwgYjpPYmplY3QyfSwgW09iamVjdDAsIE9iamVjdDFdKSA9PiBTCisgICAgLy8gICAgIGRlc2Vy
aWFsaXplKFMsIFtPdGhlck9iamVjdDAsIE90aGVyT2JqZWN0MV0pID0+IHthOk90aGVyT2JqZWN0
MSwgYjpPYmplY3QyJ30KKyAgICAvLyB3aGVyZSBPYmplY3QyJyB3YXMgY3JlYXRlZCBieSBmaXJz
dCBmbGF0dGVuaW5nIE9iamVjdDIuCiAKICAgICAvLyBJZiBhIHNlcmlhbGl6YXRpb24gZXJyb3Ig
b2NjdXJzIChlLmcuLCBjeWNsaWMgaW5wdXQgdmFsdWUpIHRoaXMKICAgICAvLyBmdW5jdGlvbiBy
ZXR1cm5zIGFuIGVtcHR5IHJlcHJlc2VudGF0aW9uLCBzY2hlZHVsZXMgYSBWOCBleGNlcHRpb24g
dG8KICAgICAvLyBiZSB0aHJvd24gdXNpbmcgdjg6OlRocm93RXhjZXB0aW9uKCksIGFuZCBzZXRz
IHxkaWRUaHJvd3wuIEluIHRoaXMgY2FzZQogICAgIC8vIHRoZSBjYWxsZXIgbXVzdCBub3QgaW52
b2tlIGFueSBWOCBvcGVyYXRpb25zIHVudGlsIGNvbnRyb2wgcmV0dXJucyB0bwogICAgIC8vIFY4
LiBXaGVuIHNlcmlhbGl6YXRpb24gaXMgc3VjY2Vzc2Z1bCwgfGRpZFRocm93fCBpcyBmYWxzZS4K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRocm93KTsKKyAgICAvLyBJZiB1c2VM
ZWdhY3lCZWhhdmlvciBpcyBhc3NlcnRlZCwgdGhlbiBpdGVtcyBpbiB0cmFuc2Zlckxpc3Qgd2ls
bCBub3QgYmUgcmVmZXJyZWQgdG8gYnkgb2JqZWN0IHJlZmVyZW5jZSBzaG91bGQgdGhleSBhcHBl
YXIKKyAgICAvLyBpbiB0aGUgc2VyaWFsaXplZCB2YWx1ZS4gdHJhbnNmZXJMaXN0IG1heSBiZSAw
IChhbmQgaWYgc28gaXMgZXF1aXZhbGVudCB0byBhIHplcm8tbGVuZ3RoIHRyYW5zZmVyIGxpc3Qp
LgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgYm9vbCYgZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRy
YW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdhY3lCZWhhdmlvcik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBW
YWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3QsIGJvb2wgdXNlTGVnYWN5QmVoYXZpb3IpOwor
ICAgIC8vIFRoZXNlIGRlZmF1bHQgdG8gdHJhbnNmZXJMaXN0ID0gMCBhbmQgdXNlTGVnYWN5QmVo
YXZpb3IgPSBmYWxzZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIGJvb2wmIGRpZFRocm93KTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4pOworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBjcmVhdGVGcm9tV2lyZShjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSk7
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoKTsK
QEAgLTYyLDkgKzg2LDExIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b1dpcmVTdHJpbmcoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAorICAgIHN0YXRpYyBTdHJpbmcgZmxhdHRlblJlY2Vp
cHRMaXN0KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
JiByZWNlaXB0cyk7CisKICAgICAvLyBEZXNlcmlhbGl6ZXMgdGhlIHZhbHVlIChpbiB0aGUgY3Vy
cmVudCBjb250ZXh0KS4gUmV0dXJucyBhIG51bGwgdmFsdWUgaW4KICAgICAvLyBjYXNlIG9mIGZh
aWx1cmUuCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFsaXplKCk7CisgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFsaXplKFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVy
TGlzdCA9IDApOwogCiBwcml2YXRlOgogICAgIGVudW0gU3RyaW5nRGF0YU1vZGUgewpAQCAtNzMs
NyArOTksOCBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUo
KTsKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBib29s
JiBkaWRUaHJvdyk7CisgICAgLy8gQXMgaW4gdGhlIGFib3ZlLCB0cmFuc2Zlckxpc3QgbWF5IGJl
IDAuCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgYm9v
bCYgZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgYm9vbCB1c2VMZWdh
Y3lCZWhhdmlvcik7CiAgICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFN0
cmluZyYgd2lyZURhdGEpOwogCiAgICAgU3RyaW5nIG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4
IDIzNDJmZTYuLmJlMDIyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzEzLDQzICszMTMsNTYgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnBvc3RNZXNzYWdlQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2soYm9vbCB1c2VMZWdhY3lCZWhhdmlvciwgY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cucG9zdE1l
c3NhZ2UoKSIpOwogICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhET01XaW5kb3c6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgRE9NV2luZG93KiBzb3VyY2UgPSBWOFByb3h5OjpyZXRy
aWV2ZUZyYW1lRm9yQ2FsbGluZ0NvbnRleHQoKS0+ZG9tV2luZG93KCk7CiAgICAgQVNTRVJUKHNv
dXJjZS0+ZnJhbWUoKSk7CiAKLSAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93KTsKLSAgICBpZiAoZGlkVGhyb3cpCi0gICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsK
KyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVBcnJheTsKKyAgICBWYWx1ZUhhbmRs
ZUFycmF5IHZhbHVlSGFuZGxlQXJyYXk7CiAgICAgU3RyaW5nIHRhcmdldE9yaWdpbjsKIAogICAg
IC8vIFRoaXMgZnVuY3Rpb24gaGFzIHZhcmlhYmxlIGFyZ3VtZW50cyBhbmQgY2FuIGVpdGhlciBi
ZToKICAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHBvcnQsIHRhcmdldE9yaWdpbik7CiAg
ICAgLy8gb3IKICAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRhcmdldE9yaWdpbik7Ci0g
ICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMikgewot
ICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFycmF5KSkKKyAg
ICB7CisgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPiAyKSB7CisgICAgICAgICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3Nb
MV0sIHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1ZUhhbmRsZUFycmF5LCB1c2VMZWdhY3lCZWhhdmlv
cikpCisgICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgICAg
IHRhcmdldE9yaWdpbiA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRDaGVjayhh
cmdzWzJdKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0YXJnZXRPcmlnaW4gPSB0b1dl
YkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1sxXSk7CisKKyAgICAgICAg
aWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKLSAgICAgICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVu
ZGVmaW5lZENoZWNrKGFyZ3NbMl0pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRhcmdldE9yaWdp
biA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRDaGVjayhhcmdzWzFdKTsKICAg
ICB9CiAKLSAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgYm9vbCBkaWRUaHJvdyA9
IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdywgJnZhbHVlSGFuZGxl
QXJyYXksIHVzZUxlZ2FjeUJlaGF2aW9yKTsKKyAgICBpZiAoZGlkVGhyb3cpCiAgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3
aW5kb3ctPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmcG9ydEFycmF5LCB0YXJnZXRP
cmlnaW4sIHNvdXJjZSwgZWMpOworICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxl
YXNlKCksICZ0cmFuc2ZlcmFibGVBcnJheSwgdGFyZ2V0T3JpZ2luLCBzb3VyY2UsIGVjKTsKICAg
ICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
eworICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5wb3N0TWVzc2FnZSgpIik7CisgICAgcmV0
dXJuIG1ldGFQb3N0TWVzc2FnZUNhbGxiYWNrKHRydWUsIGFyZ3MpOworfQorCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cud2Vi
a2l0UG9zdE1lc3NhZ2UoKSIpOworICAgIHJldHVybiBtZXRhUG9zdE1lc3NhZ2VDYWxsYmFjayhm
YWxzZSwgYXJncyk7Cit9CisKIC8vIEZJWE1FKGZxaWFuKTogcmV0dXJuaW5nIHN0cmluZyBpcyBj
aGVhdGluZywgYW5kIHdlIHNob3VsZAogLy8gZml4IHRoaXMgYnkgY2FsbGluZyB0b1N0cmluZyBm
dW5jdGlvbiBvbiB0aGUgcmVjZWl2ZXIuCiAvLyBIb3dldmVyLCBWOCBpbXBsZW1lbnRzIHRvU3Ry
aW5nIGluIEphdmFTY3JpcHQsIHdoaWNoIHJlcXVpcmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwCmluZGV4IDhmY2Y5YTguLjY5MGNhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC00MiwyNCArNDIsMzYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGFQb3N0TWVzc2FnZUNhbGxiYWNrKGJvb2wgdXNl
TGVnYWN5QmVoYXZpb3IsIGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NU
QVRTKEwiRE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQucG9zdE1lc3NhZ2UiKTsKICAgICBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBib29sIGRpZFRocm93ID0gZmFsc2U7
Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93KTsKLSAgICBpZiAoZGlkVGhyb3cp
Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBw
b3J0QXJyYXk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlQXJyYXk7CisgICAg
VmFsdWVIYW5kbGVBcnJheSB2YWx1ZUhhbmRsZUFycmF5OwogICAgIGlmIChhcmdzLkxlbmd0aCgp
ID4gMSkgewotICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFy
cmF5KSkKKyAgICAgICAgaWYgKCFnZXRUcmFuc2ZlcmFibGVBcnJheShhcmdzWzFdLCB0cmFuc2Zl
cmFibGVBcnJheSwgdmFsdWVIYW5kbGVBcnJheSwgdXNlTGVnYWN5QmVoYXZpb3IpKQogICAgICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9CisgICAgYm9vbCBkaWRUaHJvdyA9
IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdywgJnZhbHVlSGFuZGxl
QXJyYXksIHVzZUxlZ2FjeUJlaGF2aW9yKTsKKyAgICBpZiAoZGlkVGhyb3cpCisgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd29y
a2VyQ29udGV4dC0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIGVj
KTsKKyAgICB3b3JrZXJDb250ZXh0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnRy
YW5zZmVyYWJsZUFycmF5LCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQogCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2Fn
ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKEwi
RE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQucG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gbWV0
YVBvc3RNZXNzYWdlQ2FsbGJhY2sodHJ1ZSwgYXJncyk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOERlZGljYXRlZFdvcmtlckNvbnRleHQ6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uRGVkaWNh
dGVkV29ya2VyQ29udGV4dC53ZWJraXRQb3N0TWVzc2FnZSIpOworICAgIHJldHVybiBtZXRhUG9z
dE1lc3NhZ2VDYWxsYmFjayhmYWxzZSwgYXJncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXgg
NDc1ZGUyYS4uMmRkYjEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC00NywyNSArNDcsMzIg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29yR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVu
dC5wb3J0cyIpOwogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBWOE1lc3NhZ2VFdmVudDo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAKLSAgICBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cyA9IGV2
ZW50LT5wb3J0cygpOwotICAgIGlmICghcG9ydHMgfHwgcG9ydHMtPmlzRW1wdHkoKSkKKyAgICBU
cmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcyA9IGV2ZW50LT50cmFuc2ZlcmFibGVzKCk7
CisgICAgaWYgKCF0cmFuc2ZlcmFibGVzIHx8IHRyYW5zZmVyYWJsZXMtPmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAKLSAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBwb3J0
QXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyhwb3J0cy0+c2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHBvcnRzLT5zaXplKCk7ICsraSkKLSAgICAgICAgcG9ydEFycmF5LT5TZXQodjg6
OkludGVnZXI6Ok5ldyhpKSwgdG9WOCgoKnBvcnRzKVtpXS5nZXQoKSkpOworICAgIGludCBwb3J0
Q291bnQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCgqdHJhbnNmZXJhYmxlcylbaV0uZ2V0KCktPmFzTWVz
c2FnZVBvcnQoKSkKKyAgICAgICAgICAgICsrcG9ydENvdW50OworICAgIH0KKyAgICAKKyAgICBp
bnQgY3VycmVudFBvcnQgPSAwOworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHBvcnRBcnJheSA9
IHY4OjpBcnJheTo6TmV3KHBvcnRDb3VudCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
cmFuc2ZlcmFibGVzLT5zaXplKCkgJiYgY3VycmVudFBvcnQgPCBwb3J0Q291bnQ7ICsraSkgewor
ICAgICAgICBpZiAoTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gKCp0cmFuc2ZlcmFibGVzKVtp
XS5nZXQoKS0+YXNNZXNzYWdlUG9ydCgpKQorICAgICAgICAgICAgcG9ydEFycmF5LT5TZXQodjg6
OkludGVnZXI6Ok5ldyhjdXJyZW50UG9ydCsrKSwgdG9WOChtZXNzYWdlUG9ydCkpOworICAgIH0K
IAogICAgIHJldHVybiBwb3J0QXJyYXk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1l
c3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGFJbml0TWVzc2FnZUV2ZW50
Q2FsbGJhY2soYm9vbCB1c2VMZWdhY3lCZWhhdmlvciwgY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlRXZlbnQuaW5pdE1lc3NhZ2VFdmVudCIp
OwogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBWOE1lc3NhZ2VFdmVudDo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAgICAgU3RyaW5nIHR5cGVBcmcgPSB2OFZhbHVlVG9XZWJDb3JlU3RyaW5n
KGFyZ3NbMF0pOwogICAgIGJvb2wgY2FuQnViYmxlQXJnID0gYXJnc1sxXS0+Qm9vbGVhblZhbHVl
KCk7CiAgICAgYm9vbCBjYW5jZWxhYmxlQXJnID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7Ci0g
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbM10pOwogICAgIFN0cmluZyBvcmlnaW5BcmcgPSB2OFZhbHVl
VG9XZWJDb3JlU3RyaW5nKGFyZ3NbNF0pOwogICAgIFN0cmluZyBsYXN0RXZlbnRJZEFyZyA9IHY4
VmFsdWVUb1dlYkNvcmVTdHJpbmcoYXJnc1s1XSk7CiAKQEAgLTc2LDE3ICs4MywzNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbgogICAgICAgICBpZiAoIXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAg
ICAgICAgICBzb3VyY2VBcmcgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9
Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRBcnJheTsKKyAgICBPd25QdHI8VHJh
bnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZUFycmF5OworICAgIE93blB0cjxWYWx1ZUhhbmRs
ZUFycmF5PiB2YWx1ZUhhbmRsZUFycmF5OwogCiAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChh
cmdzWzddKSkgewotICAgICAgICBwb3J0QXJyYXkgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRB
cnJheSk7Ci0gICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzddLCAqcG9ydEFy
cmF5KSkKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJyYXkgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJh
YmxlQXJyYXkpOworICAgICAgICB2YWx1ZUhhbmRsZUFycmF5ID0gYWRvcHRQdHIobmV3IFZhbHVl
SGFuZGxlQXJyYXkpOworICAgICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3NbN10s
ICp0cmFuc2ZlcmFibGVBcnJheSwgKnZhbHVlSGFuZGxlQXJyYXksIHVzZUxlZ2FjeUJlaGF2aW9y
KSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQotICAgIGV2ZW50
LT5pbml0TWVzc2FnZUV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywg
ZGF0YUFyZy5yZWxlYXNlKCksIG9yaWdpbkFyZywgbGFzdEV2ZW50SWRBcmcsIHNvdXJjZUFyZywg
cG9ydEFycmF5LnJlbGVhc2UoKSk7CisKKyAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKGFyZ3NbM10sIGRpZFRocm93LCB2YWx1ZUhhbmRsZUFycmF5LmdldCgpLCB1
c2VMZWdhY3lCZWhhdmlvcik7CisgICAgaWYgKGRpZFRocm93KQorICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOworCisgICAgZXZlbnQtPmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2Fu
QnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLnJlbGVhc2UoKSwgb3JpZ2luQXJnLCBs
YXN0RXZlbnRJZEFyZywgc291cmNlQXJnLCB0cmFuc2ZlcmFibGVBcnJheS5yZWxlYXNlKCkpOwog
ICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBkYXRhQXR0ciA9IHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUgfCB2ODo6UmVhZE9ubHkpOwotICAgIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eShhcmdzLkhvbGRlcigp
LCAiZGF0YSIsIGRhdGFBdHRyLCBldmVudC0+ZGF0YSgpKTsKKyAgICBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkoYXJncy5Ib2xkZXIoKSwgImRhdGEiLCBk
YXRhQXR0ciwgZXZlbnQtPmRhdGEoKSwgdmFsdWVIYW5kbGVBcnJheS5nZXQoKSk7CiAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgfQorfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhN
ZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC5pbml0TWVzc2FnZUV2
ZW50Iik7CisgICAgcmV0dXJuIG1ldGFJbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2sodHJ1ZSwgYXJn
cyk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5p
dE1lc3NhZ2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAg
SU5DX1NUQVRTKCJET00uTWVzc2FnZUV2ZW50LndlYmtpdEluaXRNZXNzYWdlRXZlbnQiKTsKKyAg
ICByZXR1cm4gbWV0YUluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhmYWxzZSwgYXJncyk7Cit9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAppbmRleCAzZWQ1YjEyLi4x
MTc4MGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhN
ZXNzYWdlUG9ydEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC00MiwzMyArNDIsNDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9ydDo6cG9z
dE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBtZXRhUG9zdE1lc3NhZ2VDYWxsYmFjayhib29sIHVzZUxlZ2FjeUJl
aGF2aW9yLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9N
Lk1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlIik7CiAgICAgTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0
ID0gVjhNZXNzYWdlUG9ydDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgYm9vbCBkaWRU
aHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Ug
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdyk7Ci0gICAg
aWYgKGRpZFRocm93KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIE1lc3Nh
Z2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJs
ZUFycmF5OworICAgIFZhbHVlSGFuZGxlQXJyYXkgdmFsdWVIYW5kbGVBcnJheTsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdlUG9ydEFycmF5KGFy
Z3NbMV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlmICghZ2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJn
c1sxXSwgdHJhbnNmZXJhYmxlQXJyYXksIHZhbHVlSGFuZGxlQXJyYXksIHVzZUxlZ2FjeUJlaGF2
aW9yKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQorICAgIGJv
b2wgZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZGlkVGhyb3cs
ICZ2YWx1ZUhhbmRsZUFycmF5LCB1c2VMZWdhY3lCZWhhdmlvcik7CisgICAgaWYgKGRpZFRocm93
KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIG1lc3NhZ2VQb3J0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBv
cnRBcnJheSwgZWMpOworICAgIG1lc3NhZ2VQb3J0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVh
c2UoKSwgJnRyYW5zZmVyYWJsZUFycmF5LCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMp
OwogfQogCi1ib29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJheSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UiKTsKKyAg
ICByZXR1cm4gbWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2sodHJ1ZSwgYXJncyk7Cit9CisKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VQb3J0Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uTWVzc2Fn
ZVBvcnQud2Via2l0UG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gbWV0YVBvc3RNZXNzYWdlQ2Fs
bGJhY2soZmFsc2UsIGFyZ3MpOworfQorCitib29sIGdldFRyYW5zZmVyYWJsZUFycmF5KHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBUcmFuc2ZlcmFibGVBcnJheSYgdHJhbnNmZXJhYmxlQXJy
YXksIFZhbHVlSGFuZGxlQXJyYXkmIGhhbmRsZUFycmF5LCBib29sIHVzZUxlZ2FjeUJlaGF2aW9y
KQogewogICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCh2YWx1ZSkpIHsKLSAgICAgICAgcG9ydEFy
cmF5LnJlc2l6ZSgwKTsKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJyYXkucmVzaXplKDApOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIXZhbHVlLT5Jc09iamVjdCgpKSB7
Ci0gICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBh
biBvYmplY3QiKTsKKyAgICAgICAgdGhyb3dFcnJvcih1c2VMZWdhY3lCZWhhdmlvciA/ICJNZXNz
YWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0IgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogIlRyYW5zZmVyYWJsZUFycmF5IGFyZ3VtZW50IG11c3Qg
YmUgYW4gb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgdWludDMy
X3QgbGVuZ3RoID0gMDsKQEAgLTgxLDI4ICs5NCw0NyBAQCBib29sIGdldE1lc3NhZ2VQb3J0QXJy
YXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJh
eQogICAgICAgICAvLyBTZXF1ZW5jZS10eXBlIG9iamVjdCAtIGdldCB0aGUgbGVuZ3RoIGF0dHJp
YnV0ZQogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBzZXF1ZW5jZUxlbmd0aCA9IHBvcnRz
LT5HZXQodjg6OlN0cmluZzo6TmV3KCJsZW5ndGgiKSk7CiAgICAgICAgIGlmICghc2VxdWVuY2VM
ZW5ndGgtPklzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0
QXJyYXkgYXJndW1lbnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUiKTsKKyAgICAgICAgICAgIHRo
cm93RXJyb3IodXNlTGVnYWN5QmVoYXZpb3IgPyAiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBo
YXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAiVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQgaGFzIG5vIGxlbmd0aCBhdHRy
aWJ1dGUiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBs
ZW5ndGggPSBzZXF1ZW5jZUxlbmd0aC0+VWludDMyVmFsdWUoKTsKICAgICB9CiAKLSAgICAvLyBW
YWxpZGF0ZSB0aGUgcGFzc2VkIGFycmF5IG9mIHBvcnRzLgorICAgIC8vIFZhbGlkYXRlIHRoZSBw
YXNzZWQgYXJyYXkgb2YgdHJhbnNmZXJhYmxlcy4KICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHBvcnQg
PSBwb3J0cy0+R2V0KGkpOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB0cmFuc2ZlcmFi
bGUgPSBwb3J0cy0+R2V0KGkpOwogICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIG5vbi1udWxsIG9i
amVjdHMsIHBlciBIVE1MNSBzcGVjIDguMy4zLgotICAgICAgICBpZiAoaXNVbmRlZmluZWRPck51
bGwocG9ydCkpIHsKKyAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKHRyYW5zZmVyYWJsZSkp
IHsKICAgICAgICAgICAgIHRocm93RXJyb3IoSU5WQUxJRF9TVEFURV9FUlIpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIC8vIFZhbGlkYXRpb24gb2YgT2Jq
ZWN0cyBpbXBsZW1lbnRpbmcgYW4gaW50ZXJmYWNlLCBwZXIgV2ViSURMIHNwZWMgNC4xLjE1Lgot
ICAgICAgICBpZiAoIVY4TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNlKHBvcnQpKSB7Ci0gICAgICAg
ICAgICB0aHJvd0Vycm9yKCJNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBv
bmx5IE1lc3NhZ2VQb3J0cyIpOworICAgICAgICBSZWZQdHI8VHJhbnNmZXJhYmxlPiBuYXRpdmVU
cmFuc2ZlcmFibGUgPSB0b05hdGl2ZVRyYW5zZmVyYWJsZSh0cmFuc2ZlcmFibGUpOworICAgICAg
ICBpZiAoIW5hdGl2ZVRyYW5zZmVyYWJsZSB8fCAodXNlTGVnYWN5QmVoYXZpb3IgJiYgIW5hdGl2
ZVRyYW5zZmVyYWJsZS0+YXNNZXNzYWdlUG9ydCgpKSkgeworICAgICAgICAgICAgdGhyb3dFcnJv
cih1c2VMZWdhY3lCZWhhdmlvciA/ICJNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29u
dGFpbiBvbmx5IE1lc3NhZ2VQb3J0cyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAiVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWluIG9ubHkg
VHJhbnNmZXJhYmxlcyIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0g
ICAgICAgIHBvcnRBcnJheS5hcHBlbmQoVjhNZXNzYWdlUG9ydDo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChwb3J0KSkpOworICAgICAgICB0cmFuc2ZlcmFibGVBcnJheS5h
cHBlbmQobmF0aXZlVHJhbnNmZXJhYmxlKTsKKyAgICAgICAgaGFuZGxlQXJyYXkuYXBwZW5kKHRy
YW5zZmVyYWJsZSk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCitQYXNzUmVmUHRyPFRy
YW5zZmVyYWJsZT4gdG9OYXRpdmVUcmFuc2ZlcmFibGUodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUpCit7CisgICAgaWYgKFY4TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNlKHZhbHVlKSkKKyAgICAg
ICAgcmV0dXJuIFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QodmFsdWUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYocmVpbnRlcnByZXRfY2FzdDxUcmFu
c2ZlcmFibGUqPigwKSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4VHJhbnNmZXJh
YmxlKFRyYW5zZmVyYWJsZSogdmFsdWUpCit7CisgICAgaWYgKE1lc3NhZ2VQb3J0KiBtZXNzYWdl
UG9ydCA9IHZhbHVlLT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgIHJldHVybiB0b1Y4KG1lc3Nh
Z2VQb3J0KTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gdjg6OkludGVn
ZXI6Ok5ldygwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmgKaW5k
ZXggN2FiNTAyYi4uYjUzZTcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oCkBAIC0zNSwxMyArMzUsMTcgQEAK
ICNpbmNsdWRlIDx2OC5oPgogCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgLy8g
SGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxzIHRoZSB2YWx1ZXMgb3V0IG9mIGEgSlMgc2VxdWVu
Y2UgYW5kIGludG8gYSBNZXNzYWdlUG9ydEFycmF5LgotICAgIC8vIEFsc28gdmFsaWRhdGVzIHRo
ZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhlIFdlYklETCBz
cGVjIGFuZCBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjIGFuZCBnZW5lcmF0ZXMgZXhj
ZXB0aW9ucyBhcyBhcHByb3ByaWF0ZS4KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGFycmF5
IHdhcyBmaWxsZWQsIG9yIGZhbHNlIGlmIHRoZSBwYXNzZWQgdmFsdWUgd2FzIG5vdCBvZiBhbiBh
cHByb3ByaWF0ZSB0eXBlLgotICAgIGJvb2wgZ2V0TWVzc2FnZVBvcnRBcnJheSh2ODo6TG9jYWw8
djg6OlZhbHVlPiwgTWVzc2FnZVBvcnRBcnJheSYpOworLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNo
IHB1bGxzIHRoZSB2YWx1ZXMgb3V0IG9mIGEgSlMgc2VxdWVuY2UgYW5kIGludG8gYSBUcmFuc2Zl
cmFibGVBcnJheS4KKy8vIEFsc28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMg
NC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9m
IHRoZSBIVE1MNSBzcGVjIGFuZCBnZW5lcmF0ZXMgZXhjZXB0aW9ucyBhcyBhcHByb3ByaWF0ZS4K
Ky8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYXJyYXkgd2FzIGZpbGxlZCwgb3IgZmFsc2UgaWYgdGhl
IHBhc3NlZCB2YWx1ZSB3YXMgbm90IG9mIGFuIGFwcHJvcHJpYXRlIHR5cGUuCitib29sIGdldFRy
YW5zZmVyYWJsZUFycmF5KHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBUcmFuc2ZlcmFibGVBcnJheSYs
IFZhbHVlSGFuZGxlQXJyYXkmLCBib29sIHVzZUxlZ2FjeUJlaGF2aW9yKTsKKworUGFzc1JlZlB0
cjxUcmFuc2ZlcmFibGU+IHRvTmF0aXZlVHJhbnNmZXJhYmxlKHY4OjpMb2NhbDx2ODo6VmFsdWU+
KTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4VHJhbnNmZXJhYmxlKFRyYW5zZmVyYWJsZSop
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCmluZGV4IGZkYzY4MTUuLmY3NGU1
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtl
ckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29y
a2VyQ3VzdG9tLmNwcApAQCAtODcsMjQgKzg3LDM2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFdvcmtlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ICAgIHJldHVybiB3cmFwcGVyT2JqZWN0OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
b3JrZXI6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2soYm9vbCB1
c2VMZWdhY3lCZWhhdmlvciwgY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5Xb3JrZXIucG9zdE1lc3NhZ2UiKTsKICAgICBXb3JrZXIqIHdvcmtlciA9IFY4
V29ya2VyOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBib29sIGRpZFRocm93ID0gZmFs
c2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93KTsKLSAgICBpZiAoZGlkVGhy
b3cpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgTWVzc2FnZVBvcnRBcnJh
eSBwb3J0QXJyYXk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlQXJyYXk7Cisg
ICAgVmFsdWVIYW5kbGVBcnJheSB2YWx1ZUhhbmRsZUFycmF5OwogICAgIGlmIChhcmdzLkxlbmd0
aCgpID4gMSkgewotICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9y
dEFycmF5KSkKKyAgICAgICAgaWYgKCFnZXRUcmFuc2ZlcmFibGVBcnJheShhcmdzWzFdLCB0cmFu
c2ZlcmFibGVBcnJheSwgdmFsdWVIYW5kbGVBcnJheSwgdXNlTGVnYWN5QmVoYXZpb3IpKQogICAg
ICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9CisgICAgYm9vbCBkaWRUaHJv
dyA9IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdywgJnZhbHVlSGFu
ZGxlQXJyYXksIHVzZUxlZ2FjeUJlaGF2aW9yKTsKKyAgICBpZiAoZGlkVGhyb3cpCisgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
d29ya2VyLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOwor
ICAgIHdvcmtlci0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZ0cmFuc2ZlcmFibGVB
cnJheSwgZWMpOwogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIAordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V29ya2VyOjpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uV29ya2VyLnBvc3RNZXNzYWdlIik7Cisg
ICAgcmV0dXJuIG1ldGFQb3N0TWVzc2FnZUNhbGxiYWNrKHRydWUsIGFyZ3MpOworfQorCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXI6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5Xb3JrZXIud2Vi
a2l0UG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gbWV0YVBvc3RNZXNzYWdlQ2FsbGJhY2soZmFs
c2UsIGFyZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCmluZGV4IGUzODljZDEuLjk2
NTg3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcApAQCAtMTI5LDYgKzEyOSw4IEBA
CiAjaW5jbHVkZSAiVG91Y2guY3BwIgogI2luY2x1ZGUgIlRvdWNoRXZlbnQuY3BwIgogI2luY2x1
ZGUgIlRvdWNoTGlzdC5jcHAiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmNwcCIKKyNpbmNsdWRl
ICJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCIKICNpbmNsdWRlICJUcmFuc2Zvcm1Tb3VyY2VMaWJ4
c2x0LmNwcCIKICNpbmNsdWRlICJUcmF2ZXJzYWwuY3BwIgogI2luY2x1ZGUgIlRyZWVTY29wZS5j
cHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCmluZGV4IGI0MzMzODFiLi45NjM2MTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcApAQCAtMjcsNiArMjcsOCBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAi
TWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKIAogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTM4LDEzICs0MCwxMyBAQCBN
ZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCgpCiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2Fn
ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5k
b3c+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKK01lc3NhZ2VF
dmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1Jl
ZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJh
bnNmZXJhYmxlcykKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNl
LCBmYWxzZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAg
ICwgbV9sYXN0RXZlbnRJZChsYXN0RXZlbnRJZCkKICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAg
ICAsIG1fcG9ydHMocG9ydHMpCisgICAgLCBtX3RyYW5zZmVyYWJsZXModHJhbnNmZXJhYmxlcykK
IHsKIH0KIApAQCAtNTIsNyArNTQsNyBAQCBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQog
ewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRBcnJheT4gcG9ydHMpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NP
d25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMpCiB7CiAgICAgaWYgKGRpc3Bh
dGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjMsMjYgKzY1LDM2IEBAIHZvaWQgTWVzc2Fn
ZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvCiAgICAgbV9vcmlnaW4gPSBvcmlnaW47CiAgICAgbV9sYXN0RXZlbnRJZCA9
IGxhc3RFdmVudElkOwogICAgIG1fc291cmNlID0gc291cmNlOwotICAgIG1fcG9ydHMgPSBwb3J0
czsKKyAgICBtX3RyYW5zZmVyYWJsZXMgPSB0cmFuc2ZlcmFibGVzOwogfQogCiAvLyBGSVhNRTog
cmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQp
LgogTWVzc2FnZVBvcnQqIE1lc3NhZ2VFdmVudDo6bWVzc2FnZVBvcnQoKQogewotICAgIGlmICgh
bV9wb3J0cykKKyAgICBpZiAoIW1fdHJhbnNmZXJhYmxlcykKICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgQVNTRVJUKG1fcG9ydHMtPnNpemUoKSA9PSAxKTsKLSAgICByZXR1cm4gKCptX3BvcnRzKVsw
XS5nZXQoKTsKKyAgICBBU1NFUlQobV90cmFuc2ZlcmFibGVzLT5zaXplKCkgPT0gMSk7CisgICAg
VHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUgPSAoKm1fdHJhbnNmZXJhYmxlcylbMF0uZ2V0KCk7
CisgICAgQVNTRVJUKHRyYW5zZmVyYWJsZS0+YXNNZXNzYWdlUG9ydCgpKTsKKyAgICByZXR1cm4g
dHJhbnNmZXJhYmxlLT5hc01lc3NhZ2VQb3J0KCk7CiB9CiAKLXZvaWQgTWVzc2FnZUV2ZW50Ojpp
bml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5k
b3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqIHBvcnQpCitUcmFuc2ZlcmFibGUqIE1lc3NhZ2VFdmVu
dDo6dHJhbnNmZXJhYmxlKCkKIHsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHM7
Ci0gICAgaWYgKHBvcnQpIHsKLSAgICAgICAgcG9ydHMgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBv
cnRBcnJheSk7Ci0gICAgICAgIHBvcnRzLT5hcHBlbmQocG9ydCk7CisgICAgaWYgKCFtX3RyYW5z
ZmVyYWJsZXMpCisgICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChtX3RyYW5zZmVyYWJsZXMt
PnNpemUoKSA9PSAxKTsKKyAgICByZXR1cm4gKCptX3RyYW5zZmVyYWJsZXMpWzBdLmdldCgpOwor
fQorCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFRyYW5zZmVyYWJsZSogdHJhbnNm
ZXJhYmxlKQoreworICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlczsK
KyAgICBpZiAodHJhbnNmZXJhYmxlKSB7CisgICAgICAgIHRyYW5zZmVyYWJsZXMgPSBhZG9wdFB0
cihuZXcgVHJhbnNmZXJhYmxlQXJyYXkpOworICAgICAgICB0cmFuc2ZlcmFibGVzLT5hcHBlbmQo
dHJhbnNmZXJhYmxlKTsKICAgICB9Ci0gICAgaW5pdE1lc3NhZ2VFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgcG9ydHMu
cmVsZWFzZSgpKTsKKyAgICBpbml0TWVzc2FnZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCB0cmFuc2ZlcmFibGVzLnJl
bGVhc2UoKSk7CiB9CiAKIGJvb2wgTWVzc2FnZUV2ZW50Ojppc01lc3NhZ2VFdmVudCgpIGNvbnN0
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IGI3ZjliMDIuLjEwMDhmOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTMwLDEyICszMCwxMyBAQAogCiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5o
IgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVy
YWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBET01XaW5kb3c7Cisg
ICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAKICAgICBjbGFzcyBNZXNzYWdlRXZlbnQgOiBwdWJsaWMg
RXZlbnQgewogICAgIHB1YmxpYzoKQEAgLTQzLDM2ICs0NCwzOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2
ZW50KTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+
IGNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzLCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSA9IDAsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gIiIs
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSAiIiwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNv
dXJjZSA9IDApCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRl
KFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhID0gMCwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSAi
IiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9ICIiLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4g
c291cmNlID0gMCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2lu
LCBsYXN0RXZlbnRJZCwgc291cmNlLCB0cmFuc2ZlcmFibGVzKSk7CiAgICAgICAgIH0KICAgICAg
ICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwg
UGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CisgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2Us
IFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+KTsKIAogICAgICAgICBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICAgICAg
VHJhbnNmZXJhYmxlQXJyYXkqIGRhdGFEZXBlbmRlbmNpZXMoKSBjb25zdCB7IHJldHVybiB0cmFu
c2ZlcmFibGVzKCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJl
dHVybiBtX29yaWdpbjsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0RXZlbnRJZDsgfQogICAgICAgICBET01XaW5kb3cqIHNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9Ci0gICAgICAgIE1lc3NhZ2VQb3J0QXJy
YXkqIHBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0cy5nZXQoKTsgfQorICAgICAgICBUcmFu
c2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmZXJh
Ymxlcy5nZXQoKTsgfQogCiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVw
ZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCisgICAgICAgIFRyYW5zZmVyYWJs
ZSogdHJhbnNmZXJhYmxlKCk7CiAgICAgICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCgpOwog
ICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmlu
ZGluZ3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBNZXNzYWdlUG9y
dCopOworICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
bGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBUcmFuc2ZlcmFibGUqKTsKIAogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKKyAgICAgICAgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093
blB0cjxUcmFuc2ZlcmFibGVBcnJheT4pOwogCiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1fZGF0YTsKICAgICAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgICAgICBTdHJp
bmcgbV9sYXN0RXZlbnRJZDsKICAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9zb3VyY2U7Ci0g
ICAgICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBtX3BvcnRzOworICAgICAgICBPd25QdHI8
VHJhbnNmZXJhYmxlQXJyYXk+IG1fdHJhbnNmZXJhYmxlczsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCmluZGV4IGNmNDViYjQu
LjI1MTMxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCkBAIC00NSw4ICs0NSwx
NyBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIGxhc3RFdmVu
dElkQXJnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NV2luZG93IHNvdXJjZUFyZywgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZh
dWx0VmFsdWVdIEFycmF5IG1lc3NhZ2VQb3J0cyk7CisKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB3
ZWJraXRJbml0TWVzc2FnZUV2ZW50KGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0g
RE9NU3RyaW5nIHR5cGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIGNhbkJ1
YmJsZUFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9u
YWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhQXJnLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG9yaWdpbkFyZywgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhE
ZWZhdWx0VmFsdWVdIERPTVN0cmluZyBsYXN0RXZlbnRJZEFyZywgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0
VmFsdWVdIERPTVdpbmRvdyBzb3VyY2VBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBBcnJh
eSB0cmFuc2ZlcmFibGVzKTsKICNlbHNlCi0gICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkg
dG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0
IGV4cG9zZSBhIHNpbmdsZSBwb3J0LgorICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRv
IGV4cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBl
eHBvc2UgYSBzaW5nbGUgTWVzc2FnZVBvcnQuCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBN
ZXNzYWdlUG9ydCBtZXNzYWdlUG9ydDsKIAogICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQo
aW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgdHlwZUFyZywgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA0NzJiOWIxLi44NjI2ODkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogTWVzc2FnZVBvcnQ6Ok1lc3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgOiBtX3N0YXJ0ZWQoZmFsc2UpCiAgICAgLCBtX2Ns
b3NlZChmYWxzZSkKKyAgICAsIG1fdHJhbnNmZXJDbG9zZWQoZmFsc2UpCiAgICAgLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5jcmVhdGVkTWVzc2FnZVBvcnQodGhpcyk7CkBAIC01OCw0MCAr
NTksNTIgQEAgTWVzc2FnZVBvcnQ6On5NZXNzYWdlUG9ydCgpCiB9CiAKIC8vIEZJWE1FOiByZW1v
dmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi12
b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwotICAgIGlmIChwb3J0KQotICAgICAg
ICBwb3J0cy5hcHBlbmQocG9ydCk7Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnBvcnRzLCBl
Yyk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlczsKKyAgICBpZiAodHJhbnNm
ZXJhYmxlKQorICAgICAgICB0cmFuc2ZlcmFibGVzLmFwcGVuZCh0cmFuc2ZlcmFibGUpOworICAg
IHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZ0cmFuc2ZlcmFibGVzLCBlYyk7CiB9CiAKIHZvaWQgTWVz
c2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBz
dGF0aWNfY2FzdDxNZXNzYWdlUG9ydEFycmF5Kj4oMCksIGVjKTsKKyAgICBwb3N0TWVzc2FnZSht
ZXNzYWdlLCBzdGF0aWNfY2FzdDxUcmFuc2ZlcmFibGVBcnJheSo+KDApLCBlYyk7CiB9CiAKLXZv
aWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyYWJsZXMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghaXNFbnRhbmdsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCi0gICAgT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKLSAgICAvLyBNYWtlIHN1cmUg
d2UgYXJlbid0IGNvbm5lY3RlZCB0byBhbnkgb2YgdGhlIHBhc3NlZC1pbiBwb3J0cy4KLSAgICBp
ZiAocG9ydHMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwb3J0cy0+
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIE1lc3NhZ2VQb3J0KiBkYXRhUG9ydCA9ICgqcG9y
dHMpW2ldLmdldCgpOwotICAgICAgICAgICAgaWYgKGRhdGFQb3J0ID09IHRoaXMgfHwgbV9lbnRh
bmdsZWRDaGFubmVsLT5pc0Nvbm5lY3RlZFRvKGRhdGFQb3J0KSkgewotICAgICAgICAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIE93
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzOworICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmVuJ3QgY29ubmVjdGVkIHRvIGFueSBvZiB0aGUgcGFzc2VkLWluIHRyYW5zZmVyYWJs
ZXMuCisgICAgaWYgKHRyYW5zZmVyYWJsZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgVHJh
bnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUgPSAoKnRyYW5zZmVyYWJsZXMpW2ldLmdldCgpOworICAg
ICAgICAgICAgaWYgKE1lc3NhZ2VQb3J0KiBkYXRhUG9ydCA9IHRyYW5zZmVyYWJsZS0+YXNNZXNz
YWdlUG9ydCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFQb3J0ID09IHRoaXMgfHwgbV9l
bnRhbmdsZWRDaGFubmVsLT5pc0Nvbm5lY3RlZFRvKGRhdGFQb3J0KSkgeworICAgICAgICAgICAg
ICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMsIGVjKTsKKyAg
ICAgICAgcmVjZWlwdHMgPSBUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KHRyYW5zZmVyYWJs
ZXMsIGVjKTsKICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVBvcnRDaGFu
bmVsOjpFdmVudERhdGE6OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscy5yZWxlYXNlKCkpKTsKKyAg
ICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVBvcnRDaGFu
bmVsOjpFdmVudERhdGE6OmNyZWF0ZShtZXNzYWdlLCByZWNlaXB0cy5yZWxlYXNlKCkpKTsKK30K
KworUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiBNZXNzYWdlUG9ydDo6dHJhbnNmZXJP
dXQoRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFtX2VudGFuZ2xlZENoYW5uZWwgfHwg
bV90cmFuc2ZlckNsb3NlZCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICByZXR1cm4gbV9lbnRhbmdsZWRDaGFubmVsLnJlbGVhc2UoKTsKKyAgICB9CisgICAgbV90
cmFuc2ZlckNsb3NlZCA9IHRydWU7CisgICAgcmV0dXJuIGRpc2VudGFuZ2xlKGVjKTsKIH0KIAog
UGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZShF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTE3OSw4ICsxOTIsOCBAQCB2b2lkIE1lc3NhZ2VQb3J0Ojpk
aXNwYXRjaE1lc3NhZ2VzKCkKICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAg
IE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBv
cnRzKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV2ZW50RGF0YS0+Y2hhbm5lbHMoKSk7Ci0g
ICAgICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUocG9ydHMucmVs
ZWFzZSgpLCBldmVudERhdGEtPm1lc3NhZ2UoKSk7CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFi
bGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxs
SW4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXZlbnREYXRhLT5yZWNlaXB0cygpKTsKKyAg
ICAgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0cmFuc2ZlcmFi
bGVzLnJlbGVhc2UoKSwgZXZlbnREYXRhLT5tZXNzYWdlKCkpOwogCiAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgICAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsK
QEAgLTIwNCw0OCArMjE3LDYgQEAgTWVzc2FnZVBvcnQqIE1lc3NhZ2VQb3J0Ojpsb2NhbGx5RW50
YW5nbGVkUG9ydCgpCiAgICAgcmV0dXJuIG1fZW50YW5nbGVkQ2hhbm5lbCA/IG1fZW50YW5nbGVk
Q2hhbm5lbC0+bG9jYWxseUVudGFuZ2xlZFBvcnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSA6
IDA7CiB9CiAKLVBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IE1lc3NhZ2VQb3J0
OjpkaXNlbnRhbmdsZVBvcnRzKGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzLCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXBvcnRzIHx8ICFwb3J0cy0+c2l6ZSgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIEhhc2hTZXQgdXNlZCB0byBlZmZpY2llbnRseSBj
aGVjayBmb3IgZHVwbGljYXRlcyBpbiB0aGUgcGFzc2VkLWluIGFycmF5LgotICAgIEhhc2hTZXQ8
TWVzc2FnZVBvcnQqPiBwb3J0U2V0OwotCi0gICAgLy8gV2FsayB0aGUgaW5jb21pbmcgYXJyYXkg
LSBpZiB0aGVyZSBhcmUgYW55IGR1cGxpY2F0ZSBwb3J0cywgb3IgbnVsbCBwb3J0cyBvciBjbG9u
ZWQgcG9ydHMsIHRocm93IGFuIGVycm9yIChwZXIgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUg
c3BlYykuCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwb3J0cy0+c2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgTWVzc2FnZVBvcnQqIHBvcnQgPSAoKnBvcnRzKVtpXS5nZXQoKTsKLSAg
ICAgICAgaWYgKCFwb3J0IHx8IHBvcnQtPmlzQ2xvbmVkKCkgfHwgcG9ydFNldC5jb250YWlucyhw
b3J0KSkgewotICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHBvcnRTZXQuYWRkKHBvcnQpOwot
ICAgIH0KLQotICAgIC8vIFBhc3NlZC1pbiBwb3J0cyBwYXNzZWQgdmFsaWRpdHkgY2hlY2tzLCBz
byB3ZSBjYW4gZGlzZW50YW5nbGUgdGhlbS4KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IHBvcnRBcnJheSA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENoYW5uZWxBcnJheShw
b3J0cy0+c2l6ZSgpKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDAgOyBpIDwgcG9ydHMt
PnNpemUoKSA7ICsraSkgewotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFu
bmVsID0gKCpwb3J0cylbaV0tPmRpc2VudGFuZ2xlKGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7
IC8vIENhbid0IGdlbmVyYXRlIGV4Y2VwdGlvbiBoZXJlIGlmIHBhc3NlZCBhYm92ZSBjaGVja3Mu
Ci0gICAgICAgICgqcG9ydEFycmF5KVtpXSA9IGNoYW5uZWwucmVsZWFzZSgpOwotICAgIH0KLSAg
ICByZXR1cm4gcG9ydEFycmF5LnJlbGVhc2UoKTsKLX0KLQotUGFzc093blB0cjxNZXNzYWdlUG9y
dEFycmF5PiBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykK
LXsKLSAgICBpZiAoIWNoYW5uZWxzIHx8ICFjaGFubmVscy0+c2l6ZSgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0QXJyYXkgPSBh
ZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJheShjaGFubmVscy0+c2l6ZSgpKSk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjaGFubmVscy0+c2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZShjb250ZXh0
KTsKLSAgICAgICAgcG9ydC0+ZW50YW5nbGUoKCpjaGFubmVscylbaV0ucmVsZWFzZSgpKTsKLSAg
ICAgICAgKCpwb3J0QXJyYXkpW2ldID0gcG9ydC5yZWxlYXNlKCk7Ci0gICAgfQotICAgIHJldHVy
biBwb3J0QXJyYXkucmVsZWFzZSgpOwotfQotCiBFdmVudFRhcmdldERhdGEqIE1lc3NhZ2VQb3J0
OjpldmVudFRhcmdldERhdGEoKQogewogICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IDNhODQwZmUuLmIwMGZlNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFu
bmVsLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
QEAgLTQ1LDIyICs0NiwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2Fn
ZVBvcnQ7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotICAgIC8vIFRoZSBv
dmVyd2hlbG1pbmdseSBjb21tb24gY2FzZSBpcyBzZW5kaW5nIGEgc2luZ2xlIHBvcnQsIHNvIGhh
bmRsZSB0aGF0IGVmZmljaWVudGx5IHdpdGggYW4gaW5saW5lIGJ1ZmZlciBvZiBzaXplIDEuCi0g
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJh
eTsKLQogICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBpbmhlcml0IGZyb20gQWN0aXZl
RE9NT2JqZWN0IGFuZCB1c2UKICAgICAvLyBzZXRQZW5kaW5nQWN0aXZpdHkgLyB1bnNldFBlbmRp
bmdBY3Rpdml0eSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0
J3MgZmVhdHVyZXMgYW5kIHJlbHlpbmcgb24gSmF2YVNjcmlwdCBnYXJiYWdlIGNvbGxlY3Rpb24K
ICAgICAvLyB0byBnZXQgaXRzIGxpZmV0aW1lIHJpZ2h0LgotICAgIGNsYXNzIE1lc3NhZ2VQb3J0
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQgewor
ICAgIGNsYXNzIE1lc3NhZ2VQb3J0IDogcHVibGljIFRyYW5zZmVyYWJsZSwgcHVibGljIEV2ZW50
VGFyZ2V0IHsKICAgICBwdWJsaWM6CisgICAgICAgIE1lc3NhZ2VQb3J0KiBhc01lc3NhZ2VQb3J0
KCkgeyByZXR1cm4gdGhpczsgfQorCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VQ
b3J0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VQb3J0KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpKTsgfQogICAgICAgICB+TWVzc2FnZVBvcnQoKTsKIAogICAgICAgICB2b2lkIHBvc3RNZXNz
YWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZUFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
ICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGlu
Z3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAg
IHZvaWQgc3RhcnQoKTsKICAgICAgICAgdm9pZCBjbG9zZSgpOwpAQCAtNjgsMTQgKzY4LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGVudGFuZ2xlKFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsPik7CiAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
PiBkaXNlbnRhbmdsZShFeGNlcHRpb25Db2RlJik7CiAKLSAgICAgICAgLy8gRGlzZW50YW5nbGUg
YW4gYXJyYXkgb2YgcG9ydHMsIHJldHVybmluZyB0aGUgZW50YW5nbGVkIGNoYW5uZWxzLgotICAg
ICAgICAvLyBQZXIgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYywgZ2VuZXJhdGVzIGFu
IElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBpZiBhbnkgb2YgdGhlIHBhc3NlZCBwb3J0cyBh
cmUgbnVsbCBvciBub3QgZW50YW5nbGVkLgotICAgICAgICAvLyBSZXR1cm5zIDAgaWYgdGhlcmUg
aXMgYW4gZXhjZXB0aW9uLCBvciBpZiB0aGUgcGFzc2VkLWluIGFycmF5IGlzIDAvZW1wdHkuCi0g
ICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBkaXNlbnRh
bmdsZVBvcnRzKGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25Db2RlJik7Ci0KLSAg
ICAgICAgLy8gRW50YW5nbGVzIGFuIGFycmF5IG9mIGNoYW5uZWxzLCByZXR1cm5pbmcgYW4gYXJy
YXkgb2YgTWVzc2FnZVBvcnRzIGluIG1hdGNoaW5nIG9yZGVyLgotICAgICAgICAvLyBSZXR1cm5z
IDAgaWYgdGhlIHBhc3NlZCBhcnJheSBpcyAwL2VtcHR5LgotICAgICAgICBzdGF0aWMgUGFzc093
blB0cjxNZXNzYWdlUG9ydEFycmF5PiBlbnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgIGJvb2wg
aXNUcmFuc2ZlckNsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmZXJDbG9zZWQ7IH0KKyAg
ICAgICAgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiB0cmFuc2Zlck91dChFeGNlcHRp
b25Db2RlJik7CiAKICAgICAgICAgdm9pZCBtZXNzYWdlQXZhaWxhYmxlKCk7CiAgICAgICAgIGJv
b2wgc3RhcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRlZDsgfQpAQCAtODgsOCArODIsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKCk7
CiAKLSAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxNZXNzYWdlUG9ydD46OnJlZjsKLSAgICAgICAg
dXNpbmcgUmVmQ291bnRlZDxNZXNzYWdlUG9ydD46OmRlcmVmOworICAgICAgICB1c2luZyBSZWZD
b3VudGVkPFRyYW5zZmVyYWJsZT46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFu
c2ZlcmFibGU+OjpkZXJlZjsKIAogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpOwog
CkBAIC0xMDUsOSArOTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIE5PVEU6
IFRoaXMgaXMgdXNlZCBzb2xlbHkgdG8gZW5hYmxlIGEgR0Mgb3B0aW1pemF0aW9uLiBTb21lIHBs
YXRmb3JtcyBtYXkgbm90IGJlIGFibGUgdG8gZGV0ZXJtaW5lIG93bmVyc2hpcCBvZiB0aGUgcmVt
b3RlIHBvcnQgKHNpbmNlIGl0IG1heSBsaXZlIGNyb3NzLXByb2Nlc3MpIC0gdGhvc2UgcGxhdGZv
cm1zIG1heSBhbHdheXMgcmV0dXJuIG51bGwuCiAgICAgICAgIE1lc3NhZ2VQb3J0KiBsb2NhbGx5
RW50YW5nbGVkUG9ydCgpOwogICAgICAgICAvLyBBIHBvcnQgc3RhcnRzIG91dCBpdHMgbGlmZSBl
bnRhbmdsZWQsIGFuZCByZW1haW5zIGVudGFuZ2xlZCB1bnRpbCBpdCBpcyBjbG9zZWQgb3IgaXMg
Y2xvbmVkLgotICAgICAgICBib29sIGlzRW50YW5nbGVkKCkgeyByZXR1cm4gIW1fY2xvc2VkICYm
ICFpc0Nsb25lZCgpOyB9CisgICAgICAgIGJvb2wgaXNFbnRhbmdsZWQoKSBjb25zdCB7IHJldHVy
biAhbV9jbG9zZWQgJiYgIWlzQ2xvbmVkKCk7IH0KICAgICAgICAgLy8gQSBwb3J0IGlzIGNsb25l
ZCBpZiBpdHMgZW50YW5nbGVkIGNoYW5uZWwgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgc2VudCB0byBh
IG5ldyBvd25lciB2aWEgcG9zdE1lc3NhZ2UoKS4KLSAgICAgICAgYm9vbCBpc0Nsb25lZCgpIHsg
cmV0dXJuICFtX2VudGFuZ2xlZENoYW5uZWw7IH0KKyAgICAgICAgYm9vbCBpc0Nsb25lZCgpIGNv
bnN0IHsgcmV0dXJuICFtX2VudGFuZ2xlZENoYW5uZWw7IH0KIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIE1lc3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKQEAgLTEyMSw2ICsxMTUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX3N0YXJ0ZWQ7CiAgICAg
ICAgIGJvb2wgbV9jbG9zZWQ7CisgICAgICAgIGJvb2wgbV90cmFuc2ZlckNsb3NlZDsKIAogICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAg
ICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuaWRsCmluZGV4IDI4ODMzY2UuLmY0NTM3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmlkbApAQCAtMzgsNiArMzgsOSBAQCBtb2R1bGUgZXZlbnRzIHsKICNpZiBkZWZpbmVk
KExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICAgICAgW0N1
c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09wdGlvbmFs
XSBBcnJheSBtZXNzYWdlUG9ydHMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
KyAgICAgICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRQb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVz
c2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSB0cmFuc2ZlcikKKyAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworCiAgICAgICAgIHZvaWQgc3RhcnQoKTsKICAgICAgICAgdm9pZCBjbG9z
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCmluZGV4IDM2
N2Y3ZWQuLjkxNzdkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwu
Y3BwCkBAIC0zMCwxOCArMzAsMjkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUG9ydENoYW5uZWwuaCIKIAorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogCi1QYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnRE
YXRhPiBNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBjaGFubmVscykKK1Bhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERh
dGE+IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlw
dEFycmF5PiByZWNlaXB0cykKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50RGF0YSht
ZXNzYWdlLCBjaGFubmVscykpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXZlbnREYXRhKG1l
c3NhZ2UsIHJlY2VpcHRzKSk7CiB9CiAKLU1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpF
dmVudERhdGEoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorTWVzc2FnZVBvcnRDaGFu
bmVsOjpFdmVudERhdGE6OkV2ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRz
KQogICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQor
ICAgICwgbV9yZWNlaXB0cyhyZWNlaXB0cykKK3sKK30KKworUGFzc1JlZlB0cjxUcmFuc2ZlcmFi
bGU+IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJhbnNmZXJJbihQYXNzT3duUHRyPFRyYW5zZmVyYWJs
ZVJlY2VpcHQ+IHRyYW5zZmVyYWJsZVJlY2VpcHQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiB7CisgICAgQVNTRVJUKHRyYW5zZmVyYWJsZVJlY2VpcHQtPmFzTWVzc2FnZVBvcnRD
aGFubmVsKCkpOworICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwgPSBhZG9w
dFB0cih0cmFuc2ZlcmFibGVSZWNlaXB0LmxlYWtQdHIoKS0+YXNNZXNzYWdlUG9ydENoYW5uZWwo
KSk7CisgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZShj
b250ZXh0KTsKKyAgICBwb3J0LT5lbnRhbmdsZShjaGFubmVsLnJlbGVhc2UoKSk7CisgICAgcmV0
dXJuIHBvcnQucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmgKaW5kZXggMDc2NjhhNC4uMDdmMzdmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCiAKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTUwLDE0ICs1MSwxNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
ICAgICBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKLSAgICAvLyBUaGUgb3ZlcndoZWxt
aW5nbHkgY29tbW9uIGNhc2UgaXMgc2VuZGluZyBhIHNpbmdsZSBwb3J0LCBzbyBoYW5kbGUgdGhh
dCBlZmZpY2llbnRseSB3aXRoIGFuIGlubGluZSBidWZmZXIgb2Ygc2l6ZSAxLgotICAgIHR5cGVk
ZWYgVmVjdG9yPE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+LCAxPiBNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheTsKLQogICAgIC8vIE1lc3NhZ2VQb3J0Q2hhbm5lbCBpcyBhIHBsYXRmb3JtLWluZGVw
ZW5kZW50IGludGVyZmFjZSB0byB0aGUgcmVtb3RlIHNpZGUgb2YgYSBtZXNzYWdlIGNoYW5uZWwu
CiAgICAgLy8gSXQgYWN0cyBhcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBwbGF0Zm9ybS1kZXBlbmRl
bnQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwgaW1wbGVtZW50YXRpb24gd2hpY2ggZW5zdXJl
cyB0aGF0IHRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgY2xvc2UoKSBtZXRob2QgaXMgaW52b2tlZCBi
ZWZvcmUgZGVzdHJ1Y3Rpb24uCi0gICAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsIHsKKyAgICBj
bGFzcyBNZXNzYWdlUG9ydENoYW5uZWwgOiBwdWJsaWMgVHJhbnNmZXJhYmxlUmVjZWlwdCB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lc3NhZ2VQb3J0Q2hhbm5lbCk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVs
KiBhc01lc3NhZ2VQb3J0Q2hhbm5lbCgpIHsgcmV0dXJuIHRoaXM7IH0KKworICAgICAgICBQYXNz
UmVmUHRyPFRyYW5zZmVyYWJsZT4gdHJhbnNmZXJJbihQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJl
Y2VpcHQ+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgICAgIGJvb2wgaXNGbGF0dGVu
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAgICAgc3RhdGljIHZvaWQgY3Jl
YXRlQ2hhbm5lbChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiwgUGFzc1JlZlB0cjxNZXNzYWdlUG9y
dD4pOwogCiAgICAgICAgIC8vIENyZWF0ZXMgYSBuZXcgd3JhcHBlciBmb3IgdGhlIHBhc3NlZCBj
aGFubmVsLgpAQCAtODIsMTUgKzg1LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Y2xhc3MgRXZlbnREYXRhIHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50
RGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6Ci0gICAgICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxFdmVudERhdGE+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsK
KyAgICAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2ZW50RGF0YT4gY3JlYXRlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+KTsKIAogICAgICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBtZXNzYWdlKCkg
eyByZXR1cm4gbV9tZXNzYWdlLmdldCgpOyB9Ci0gICAgICAgICAgICBQYXNzT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscygpIHsgcmV0dXJuIG1fY2hhbm5lbHMucmVsZWFz
ZSgpOyB9CisgICAgICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4g
cmVjZWlwdHMoKSB7IHJldHVybiBtX3JlY2VpcHRzLnJlbGVhc2UoKTsgfQogCiAgICAgICAgIHBy
aXZhdGU6Ci0gICAgICAgICAgICBFdmVudERhdGEoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKKyAg
ICAgICAgICAgIEV2ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KTsKICAgICAgICAgICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKLSAgICAgICAgICAgIE93
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKKyAgICAgICAgICAgIE93
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IG1fcmVjZWlwdHM7CiAgICAgICAgIH07CiAK
ICAgICAgICAgLy8gU2VuZHMgYSBtZXNzYWdlIGFuZCBvcHRpb25hbCBjbG9uZWQgcG9ydCB0byB0
aGUgcmVtb3RlIHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAppbmRleCAwYTk4MzEz
Li5kMmQ5MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKQEAgLTMwLDYgKzMwLDEx
IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKIAorY2xhc3MgVHJhbnNmZXJhYmxlOworY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKK3R5
cGVkZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsK
K3R5cGVkZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKQEAgLTQyLDcgKzQ3LDggQEAgcHVibGljOgogICAgIHZvaWQgaW5pdFBv
cFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIGJv
b2wgaXNQb3BTdGF0ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVPYmplY3QuZ2V0
KCk7IH0gICAgCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGVPYmplY3QuZ2V0KCk7IH0KKyAgICBUcmFuc2ZlcmFibGVBcnJheSogZGF0YURl
cGVuZGVuY2llcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogcHJpdmF0ZToKICAgICBQb3BTdGF0
ZUV2ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjRlOWQxOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJhbnNmZXJhYmxlLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKKworI2luY2x1
ZGUgIlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJy
YXk+IFRyYW5zZmVyYWJsZTo6dHJhbnNmZXJBbGxPdXQoVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5z
ZmVyYWJsZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghdHJhbnNmZXJhYmxlcyB8
fCAhdHJhbnNmZXJhYmxlcy0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IC8vIEhhc2hTZXQgdXNlZCB0byBlZmZpY2llbnRseSBjaGVjayBmb3IgZHVwbGljYXRlcyBpbiB0
aGUgcGFzc2VkLWluIGFycmF5LgorICAgIEhhc2hTZXQ8VHJhbnNmZXJhYmxlKj4gdHJhbnNmZXJh
YmxlU2V0OworCisgICAgLy8gV2FsayB0aGUgaW5jb21pbmcgYXJyYXkgLSBpZiB0aGVyZSBhcmUg
YW55IGR1cGxpY2F0ZSB0cmFuc2ZlcmFibGVzLCBvciB0cmFuc2ZlcnJlZCBwb3J0cyBvciBjbG9z
ZWQgcG9ydHMsIHRocm93IGFuIGVycm9yIChwZXIgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUg
c3BlYykuCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5z
aXplKCk7ICsraSkgeworICAgICAgICBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSA9ICgqdHJh
bnNmZXJhYmxlcylbaV0uZ2V0KCk7CisgICAgICAgIGlmICghdHJhbnNmZXJhYmxlIHx8IHRyYW5z
ZmVyYWJsZS0+aXNUcmFuc2ZlckNsb3NlZCgpIHx8IHRyYW5zZmVyYWJsZVNldC5jb250YWlucyh0
cmFuc2ZlcmFibGUpKSB7CisgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgdHJhbnNmZXJhYmxl
U2V0LmFkZCh0cmFuc2ZlcmFibGUpOworICAgIH0KKworICAgIC8vIFBhc3NlZC1pbiBUcmFuc2Zl
cmFibGVzIHBhc3NlZCB2YWxpZGl0eSBjaGVja3MsIHNvIHdlIGNhbiB0cmFuc2ZlciB0aGVtIG91
dC4KKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0QXJyYXkgPSBh
ZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KHRyYW5zZmVyYWJsZXMtPnNpemUo
KSkpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwIDsgaSA8IHRyYW5zZmVyYWJsZXMtPnNp
emUoKSA7ICsraSkgeworICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gcmVjZWlw
dCA9ICgqdHJhbnNmZXJhYmxlcylbaV0tPnRyYW5zZmVyT3V0KGVjKTsKKyAgICAgICAgQVNTRVJU
KCFlYyk7IC8vIENhbid0IGdlbmVyYXRlIGV4Y2VwdGlvbiBoZXJlIGlmIHBhc3NlZCBhYm92ZSBj
aGVja3MuCisgICAgICAgICgqcmVjZWlwdEFycmF5KVtpXSA9IHJlY2VpcHQucmVsZWFzZSgpOwor
ICAgIH0KKyAgICByZXR1cm4gcmVjZWlwdEFycmF5LnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJs
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmFiMjc2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJhbnNmZXJhYmxlLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKwor
I2lmbmRlZiBUcmFuc2ZlcmFibGVfaAorI2RlZmluZSBUcmFuc2ZlcmFibGVfaAorCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lc3NhZ2VQb3J0OworY2xhc3MgTWVzc2FnZVBvcnRD
aGFubmVsOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFRyYW5zZmVyYWJs
ZTsKK2NsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxU
cmFuc2ZlcmFibGU+LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsKK3R5cGVkZWYgVmVjdG9yPE93blB0
cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OworCisv
LyBUcmFuc2ZlcmFibGUgb2JqZWN0cyByZXByZXNlbnQgcmVzb3VyY2VzIHRoYXQgbWF5IGJlIHNl
bnQgYWxvbmcgd2l0aCBtZXNzYWdlcworLy8gdGhyb3VnaCB0aGUgRE9NIG1lc3NhZ2luZyBBUEku
IEEgVHJhbnNmZXJhYmxlIG9iamVjdCBtYXkgYmUgdHJhbnNmZXJyZWQgb25jZS4KKy8vIEludGVy
bmFsbHksIHRyYW5zZmVycmluZyBhIFRyYW5zZmVyYWJsZSBtZWFucyB0dXJuaW5nIGl0IGludG8g
YSBUcmFuc2ZlcmFibGVSZWNlaXB0LAorLy8gZmVycnlpbmcgdGhhdCBUcmFuc2ZlcmFibGVSZWNl
aXB0IHRocm91Z2ggdGhlIHN5c3RlbSBhbG9uZyB3aXRoIGEgbWVzc2FnZSwgYW5kCisvLyBldmVu
dHVhbGx5IHR1cm5pbmcgaXQgYmFjayBpbnRvIGEgVHJhbnNmZXJhYmxlIG9uY2UgdGhlIG1lc3Nh
Z2UgaXMgcmVjZWl2ZWQuCisvLyBUaGlzIHNlY29uZCBUcmFuc2ZlcmFibGUgb2JqZWN0IGNhbiB0
aGVuIGJlIHRyYW5zZmVyZWQgb25jZSBhZ2Fpbi4KK2NsYXNzIFRyYW5zZmVyYWJsZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFRyYW5zZmVyYWJsZT4geworcHVibGljOgorICAgIC8vIEFzIG1vcmUgVHJh
bnNmZXJhYmxlIHR5cGVzIGFyZSBhZGRlZCwgc29tZSBiaW5kaW5nIGNvZGUgbXVzdCBiZSB1cGRh
dGVkOgorICAgIC8vICAgdG9OYXRpdmVUcmFuc2ZlcmFibGUvdG9KU1RyYW5zZmVyYWJsZSBpbiBK
U01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorICAgIC8vICAgdG9OYXRpdmVUcmFuc2ZlcmFibGUvdG9W
OFRyYW5zZmVyYWJsZSBpbiBWOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorICAgIHZpcnR1YWwgTWVz
c2FnZVBvcnQqIGFzTWVzc2FnZVBvcnQoKSB7IHJldHVybiAwOyB9CisKKyAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gdHJhbnNmZXJPdXQoRXhjZXB0aW9uQ29kZSYp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc2ZlckNsb3NlZCgpIGNvbnN0ID0gMDsKKwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gdHJhbnNmZXJB
bGxPdXQoVHJhbnNmZXJhYmxlQXJyYXkqLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICB2aXJ0dWFs
IH5UcmFuc2ZlcmFibGUoKSB7IH0KKworcHJvdGVjdGVkOgorICAgIFRyYW5zZmVyYWJsZSgpIHsg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVHJhbnNmZXJhYmxl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWVkMDVjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuY3BwCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJs
ZVJlY2VpcHQuaCIKKworI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgorCisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFRyYW5zZmVy
YWJsZUFycmF5PiBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
PiByZWNlaXB0cykKK3sKKyAgICBpZiAoIXJlY2VpcHRzIHx8ICFyZWNlaXB0cy0+c2l6ZSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4g
dHJhbnNmZXJhYmxlQXJyYXkgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlQXJyYXkocmVjZWlw
dHMtPnNpemUoKSkpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcmVjZWlwdHMt
PnNpemUoKTsgKytpKQorICAgICAgICAoKnRyYW5zZmVyYWJsZUFycmF5KVtpXSA9ICgqcmVjZWlw
dHMpW2ldLT50cmFuc2ZlckluKCgqcmVjZWlwdHMpW2ldLnJlbGVhc2UoKSwgY29udGV4dCk7Cisg
ICAgcmV0dXJuIHRyYW5zZmVyYWJsZUFycmF5LnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZVJl
Y2VpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNiNmQzMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmgKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBUcmFuc2ZlcmFibGVSZWNlaXB0X2gKKyNkZWZpbmUg
VHJhbnNmZXJhYmxlUmVjZWlwdF9oCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TWVzc2FnZVBvcnQ7CitjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CitjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OworY2xhc3MgVHJhbnNmZXJhYmxlOworY2xhc3MgVHJhbnNmZXJhYmxlUmVj
ZWlwdDsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVy
YWJsZUFycmF5OwordHlwZWRlZiBWZWN0b3I8T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+LCAx
PiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CisKKy8vIEEgVHJhbnNmZXJhYmxlUmVjZWlwdCBp
cyBhIFRyYW5zZmVyYWJsZSBvYmplY3QgdGhhdCBpcyBiZWluZyBzZW50IGFsb25nIHdpdGggc29t
ZQorLy8gbWVzc2FnZS4gSXQgbWF5IGxhdGVyIGJlIHJlZGVlbWVkIGZvciBhIFRyYW5zZmVyYWJs
ZSBvYmplY3QgZXF1aXZhbGVudCB0byB0aGUgb25lCisvLyBmcm9tIHdoaWNoIHRoaXMgVHJhbnNm
ZXJhYmxlUmVjZWlwdCB3YXMgY3JlYXRlZC4gQSBUcmFuc2ZlcmFibGVSZWNlaXB0IG1heSBvbmx5
CisvLyBiZSByZWRlZW1lZCBvbmNlLiBTb21lIFRyYW5zZmVyYWJsZVJlY2VpcHRzIG1heSBiZSBm
bGF0dGVuZWQgYnkgdGhlIHNlcmlhbGl6ZXIKKy8vIChhbiBldmVudCB0aGF0IG1heSBvY2N1ciBz
aG91bGQsIGZvciBleGFtcGxlLCB0aGUgcmVjZWlwdCBuZWVkIHRvIGJlIHNlbnQgYWNyb3NzCisv
LyB0aGUgbmV0d29yayBvciBhbiBJUEMgYm91bmRhcnkpLiBPdGhlcnMgbWF5IGhhdmUgc3BlY2lh
bCBwbGF0Zm9ybS1zcGVjaWZpYyBzZW1hbnRpY3MKKy8vIHRoYXQgYXJlIGludm9rZWQgYXQgdHJh
bnNmZXIgdGltZS4KK2NsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQgeworcHVibGljOgorICAgIHZp
cnR1YWwgflRyYW5zZmVyYWJsZVJlY2VpcHQoKSB7IH0KKworICAgIHZpcnR1YWwgTWVzc2FnZVBv
cnRDaGFubmVsKiBhc01lc3NhZ2VQb3J0Q2hhbm5lbCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNGbGF0dGVuYWJsZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxUcmFuc2ZlcmFibGU+IHRyYW5zZmVySW4oUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNl
aXB0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpID0gMDsKKworICAgIHN0YXRpYyBQYXNzT3du
UHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlckFsbEluKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOworCitwcm90ZWN0ZWQ6
CisgICAgVHJhbnNmZXJhYmxlUmVjZWlwdCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVHJhbnNmZXJhYmxlUmVjZWlwdF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcDJwL1Bl
ZXJDb25uZWN0aW9uLmNwcAppbmRleCBiZGEzZWUzLi5mNmNjYTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Ay
cC9QZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBlZXJDb25uZWN0
aW9uOjpwb3N0U3RhcnROZWdvdGlhdGlvblRhc2soKQogdm9pZCBQZWVyQ29ubmVjdGlvbjo6ZGlz
cGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgaW50JiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGRhdGEpCiB7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZCA9IGRh
dGE7Ci0gICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0QXJyYXk+KCksIGQpKTsKKyAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+KCksIGQpKTsKIH0KIAogdm9pZCBQ
ZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTaWduYWxpbmdFdmVudChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNmNhNWIzNy4uYzI4MWQ5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtOTAsNiArOTAsOCBAQAogI2luY2x1ZGUgIlN0
b3JhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJTdHlsZU1lZGlhLmgiCiAjaW5jbHVkZSAiU3Vk
ZGVuVGVybWluYXRpb24uaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKKyNpbmNsdWRlICJU
cmFuc2ZlcmFibGVSZWNlaXB0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnQuaCIKICNpbmNsdWRl
ICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTEyMSwyMCArMTIz
LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUG9zdE1lc3NhZ2VUaW1lciA6IHB1
YmxpYyBUaW1lckJhc2UgewogcHVibGljOgotICAgIFBvc3RNZXNzYWdlVGltZXIoRE9NV2luZG93
KiB3aW5kb3csIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFNlY3VyaXR5T3JpZ2lu
KiB0YXJnZXRPcmlnaW4pCisgICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdpbmRvdywg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPFRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMsIFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRP
cmlnaW4pCiAgICAgICAgIDogbV93aW5kb3cod2luZG93KQogICAgICAgICAsIG1fbWVzc2FnZSht
ZXNzYWdlKQogICAgICAgICAsIG1fb3JpZ2luKHNvdXJjZU9yaWdpbikKICAgICAgICAgLCBtX3Nv
dXJjZShzb3VyY2UpCi0gICAgICAgICwgbV9jaGFubmVscyhjaGFubmVscykKKyAgICAgICAgLCBt
X3JlY2VpcHRzKHJlY2VpcHRzKQogICAgICAgICAsIG1fdGFyZ2V0T3JpZ2luKHRhcmdldE9yaWdp
bikKICAgICB7CiAgICAgfQogCiAgICAgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBPd25QdHI8TWVz
c2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMo
KmNvbnRleHQsIG1fY2hhbm5lbHMucmVsZWFzZSgpKTsKLSAgICAgICAgcmV0dXJuIE1lc3NhZ2VF
dmVudDo6Y3JlYXRlKG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCksIG1fbWVzc2FnZSwgbV9vcmlnaW4s
ICIiLCBtX3NvdXJjZSk7CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNm
ZXJhYmxlcyA9IFRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oKmNvbnRleHQsIG1f
cmVjZWlwdHMucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuIE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLCBtX21lc3NhZ2UsIG1fb3JpZ2luLCAiIiwgbV9zb3Vy
Y2UpOwogICAgIH0KICAgICBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KIApAQCAtMTQ5LDcgKzE1MSw3IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9tZXNzYWdlOwogICAgIFN0
cmluZyBtX29yaWdpbjsKICAgICBSZWZQdHI8RE9NV2luZG93PiBtX3NvdXJjZTsKLSAgICBPd25Q
dHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CisgICAgT3duUHRyPFRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheT4gbV9yZWNlaXB0czsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG1fdGFyZ2V0T3JpZ2luOwogfTsKIApAQCAtNzk4LDE1ICs4MDAsMTUgQEAgQ09NUElMRV9B
U1NFUlQoc3RhdGljX2Nhc3Q8aW50PihET01XaW5kb3c6OlBFUlNJU1RFTlQpID09IHN0YXRpY19j
YXN0PGludD4oQXN5bmMKIAogI2VuZGlmCiAKLXZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBv
cnQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCit2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlLCBj
b25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7Ci0gICAgaWYgKHBvcnQpCi0g
ICAgICAgIHBvcnRzLmFwcGVuZChwb3J0KTsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmcG9y
dHMsIHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJh
bnNmZXJhYmxlczsKKyAgICBpZiAodHJhbnNmZXJhYmxlKQorICAgICAgICB0cmFuc2ZlcmFibGVz
LmFwcGVuZCh0cmFuc2ZlcmFibGUpOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZ0cmFuc2Zl
cmFibGVzLCB0YXJnZXRPcmlnaW4sIHNvdXJjZSwgZWMpOwogfQogCi12b2lkIERPTVdpbmRvdzo6
cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNv
bnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwg
RE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBET01XaW5kb3c6OnBv
c3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFu
c2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcywgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4s
IERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1fZnJh
bWUpCiAgICAgICAgIHJldHVybjsKQEAgLTgyMiw3ICs4MjQsNyBAQCB2b2lkIERPTVdpbmRvdzo6
cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNv
bnN0IE1lcwogICAgICAgICB9CiAgICAgfQogCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBl
Yyk7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMgPSBUcmFu
c2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KHRyYW5zZmVyYWJsZXMsIGVjKTsKICAgICBpZiAoZWMp
CiAgICAgICAgIHJldHVybjsKIApAQCAtODM0LDcgKzgzNiw3IEBAIHZvaWQgRE9NV2luZG93Ojpw
b3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29u
c3QgTWVzCiAgICAgU3RyaW5nIHNvdXJjZU9yaWdpbiA9IHNvdXJjZURvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLT50b1N0cmluZygpOwogCiAgICAgLy8gU2NoZWR1bGUgdGhlIG1lc3NhZ2UuCi0g
ICAgUG9zdE1lc3NhZ2VUaW1lciogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcih0aGlzLCBt
ZXNzYWdlLCBzb3VyY2VPcmlnaW4sIHNvdXJjZSwgY2hhbm5lbHMucmVsZWFzZSgpLCB0YXJnZXQu
Z2V0KCkpOworICAgIFBvc3RNZXNzYWdlVGltZXIqIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGlt
ZXIodGhpcywgbWVzc2FnZSwgc291cmNlT3JpZ2luLCBzb3VyY2UsIHJlY2VpcHRzLnJlbGVhc2Uo
KSwgdGFyZ2V0LmdldCgpKTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDApOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaAppbmRleCBhMmFkODA5Li5kYjJlM2ZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmgKQEAgLTc0LDcgKzc0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHN0
cnVjdCBXaW5kb3dGZWF0dXJlczsKIAotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJyYXk7CisgICAgY2xhc3MgVHJhbnNmZXJhYmxlOworICAg
IGNsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRy
YW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5OworICAgIHR5cGVkZWYgVmVjdG9yPE93
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Owog
CiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApAQCAtMjI4LDkgKzIzMSw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwYWdlRGVzdHJveWVkKCk7CiAgICAgICAg
IHZvaWQgcmVzZXRHZW9sb2NhdGlvbigpOwogCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0
QXJyYXkqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlQXJyYXkqLCBjb25zdCBTdHJp
bmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRp
bmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBjb25zdCBTdHJpbmcm
IHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAg
ICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgVHJhbnNmZXJhYmxlKiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRv
dyogc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUaW1l
ckZpcmVkKFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUaW1lcj4pOwogCiAgICAgICAgIHZvaWQgc2Ny
b2xsQnkoaW50IHgsIGludCB5KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRl
eCA2MmYxYzMwLi5jYmU1ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0yMTUs
OSArMjE1LDExIEBAIG1vZHVsZSB3aW5kb3cgewogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVND
UklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNl
Y3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVl
IG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gQXJyYXkgbWVzc2FnZVBvcnRzLCBpbiBET01TdHJpbmcg
dGFyZ2V0T3JpZ2luKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAg
IFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCB3ZWJraXRQb3N0TWVzc2Fn
ZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSB0
cmFuc2Zlckxpc3QsIGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4pCisgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkg
dG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0
IGFsbG93IHBhc3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KLSAgICAgICAgW0RvTm90Q2hlY2tEb21h
aW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0LCBpbiBE
T01TdHJpbmcgdGFyZ2V0T3JpZ2luKQorICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5
LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3Nh
Z2UsIGluIFtPcHRpb25hbF0gTWVzc2FnZVBvcnQgdHJhbnNmZXIsIGluIERPTVN0cmluZyB0YXJn
ZXRPcmlnaW4pCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaAppbmRleCA5YWRlOWM4Li4yZjRjZWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKQEAgLTQzLDYgKzQzLDggQEAgY2xhc3MgSURCUmVxdWVz
dDsKIGNsYXNzIElEQlRyYW5zYWN0aW9uOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK2NsYXNzIFRyYW5zZmVyYWJsZTsKK3R5cGVk
ZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsKIAog
Y2xhc3MgSURCQ3Vyc29yIDogcHVibGljIFJlZkNvdW50ZWQ8SURCQ3Vyc29yPiB7CiBwdWJsaWM6
CkBAIC02Myw2ICs2NSw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdDsKICAgICBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUoKSBjb25zdDsKKyAgICAvLyBB
biBJbmRleGVkREIgb25seSBob2xkcyBmbGF0dGVuZWQgZGF0YS4KKyAgICBUcmFuc2ZlcmFibGVB
cnJheSogdmFsdWVEZXBlbmRlbmNpZXMoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgSURCQW55
KiBzb3VyY2UoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gdXBkYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckNvbnRleHQuY3BwCmluZGV4IDU0YjViYTguLmQzNmQyZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcApAQCAtNDcsMjYg
KzQ3LDI1IEBAIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OkRlZGljYXRlZFdvcmtlckNvbnRleHQo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzCiB9CiAKIC8vIEZJWE1FOiByZW1vdmUg
dGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi12b2lk
IERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJs
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsKLSAg
ICBpZiAocG9ydCkKLSAgICAgICAgcG9ydHMuYXBwZW5kKHBvcnQpOwotICAgIHBvc3RNZXNzYWdl
KG1lc3NhZ2UsICZwb3J0cywgZWMpOworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJs
ZXM7CisgICAgaWYgKHRyYW5zZmVyYWJsZSkKKyAgICAgICAgdHJhbnNmZXJhYmxlcy5hcHBlbmQo
dHJhbnNmZXJhYmxlKTsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmdHJhbnNmZXJhYmxlcywg
ZWMpOwogfQogCiB2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxNZXNzYWdlUG9ydEFycmF5
Kj4oMCksIGVjKTsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxUcmFuc2Zl
cmFibGUqPigwKSwgZWMpOwogfQogCi12b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RN
ZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBN
ZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERlZGljYXRl
ZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4gcHJlcGFyYXRpb24g
Zm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgotICAgIE93blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMgPSBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0
cyhwb3J0cywgZWMpOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2Vp
cHRzID0gVHJhbnNmZXJhYmxlOjp0cmFuc2ZlckFsbE91dCh0cmFuc2ZlcmFibGVzLCBlYyk7CiAg
ICAgaWYgKGVjKQogICAgICAgICByZXR1cm47Ci0gICAgdGhyZWFkKCktPndvcmtlck9iamVjdFBy
b3h5KCkucG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlLCBjaGFubmVscy5yZWxlYXNl
KCkpOworICAgIHRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QobWVzc2FnZSwgcmVjZWlwdHMucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxz
LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmgKaW5kZXggZGJhNTJhZS4uM2ZhNjRlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKQEAgLTU2LDkgKzU2LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBFdmVudFRhcmdldAogICAgICAgICB2
aXJ0dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgp
IHsgcmV0dXJuIHRoaXM7IH0KICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBwb3N0
TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IE1lc3NhZ2VQ
b3J0QXJyYXkqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBUcmFuc2ZlcmFibGVBcnJheSosIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRl
IHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAgdm9pZCBwb3N0TWVzc2Fn
ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIE1lc3NhZ2VQb3J0KiwgRXhjZXB0
aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiwgVHJhbnNmZXJhYmxlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobWVzc2FnZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsCmluZGV4IDIyZDM1
MjUuLmIwZmIzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJDb250ZXh0LmlkbApAQCAtNDMsNiArNDMsOCBAQCBtb2R1bGUgdGhyZWFkcyB7CiAjaWYg
ZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCiAgICAg
ICAgIFtDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gYW55IG1lc3NhZ2UsIGluIFtPcHRpb25h
bF0gQXJyYXkgbWVzc2FnZVBvcnRzKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgICAgIFtDdXN0b21dIHZvaWQgd2Via2l0UG9zdE1lc3NhZ2UoaW4gYW55IG1lc3NhZ2Us
IGluIFtPcHRpb25hbF0gQXJyYXkgdHJhbnNmZXJMaXN0KQorICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CiAjZWxzZQogICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGV4
cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBhbGxv
dyBwYXNzaW5nIGluIGEgc2luZ2xlIHBvcnQuCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoaW4g
RE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcAppbmRl
eCAyNDAwMmU0Li5lNTZmOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1No
YXJlZFdvcmtlckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVk
V29ya2VyQ29udGV4dC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisj
aW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgogCkBAIC00NCw5ICs0NSwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVhdGVDb25uZWN0RXZl
bnQoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCkKIHsKLSAgICBSZWZQdHI8TWVzc2FnZUV2
ZW50PiBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9y
dEFycmF5KDEsIHBvcnQpKSk7CisgICAgUmVmUHRyPFRyYW5zZmVyYWJsZT4gdHJhbnNmZXJhYmxl
KHBvcnQpOworICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZUFycmF5KDEsIHRyYW5zZmVyYWJsZSkpKTsK
ICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBm
YWxzZSk7Ci0gICAgcmV0dXJuIGV2ZW50OworICAgIHJldHVybiBldmVudC5yZWxlYXNlKCk7CiB9
CiAKIFNoYXJlZFdvcmtlckNvbnRleHQ6OlNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBTaGFyZWRX
b3JrZXJUaHJlYWQqIHRocmVhZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCAyMzdi
NjEwLi44MTlhMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC04NiwyNiArODYs
MjYgQEAgV29ya2VyOjp+V29ya2VyKCkKIH0KIAogLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4g
d2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLXZvaWQgV29ya2VyOjpw
b3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVz
c2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXb3JrZXI6OnBvc3RNZXNz
YWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFi
bGUqIHRyYW5zZmVyYWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTWVzc2FnZVBvcnRB
cnJheSBwb3J0czsKLSAgICBpZiAocG9ydCkKLSAgICAgICAgcG9ydHMuYXBwZW5kKHBvcnQpOwot
ICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZwb3J0cywgZWMpOworICAgIFRyYW5zZmVyYWJsZUFy
cmF5IHRyYW5zZmVyYWJsZXM7CisgICAgaWYgKHRyYW5zZmVyYWJsZSkKKyAgICAgICAgdHJhbnNm
ZXJhYmxlcy5hcHBlbmQodHJhbnNmZXJhYmxlKTsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAm
dHJhbnNmZXJhYmxlcywgZWMpOwogfQogCiB2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PE1lc3NhZ2VQb3J0QXJyYXkq
PigwKSwgZWMpOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PFRyYW5zZmVy
YWJsZSo+KDApLCBlYyk7CiB9CiAKLXZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSog
cG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGVBcnJheSog
dHJhbnNmZXJhYmxlcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRGlzZW50YW5nbGUg
dGhlIHBvcnQgaW4gcHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250
ZXh0LgotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMgPSBNZXNz
YWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhwb3J0cywgZWMpOworICAgIE93blB0cjxUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0gVHJhbnNmZXJhYmxlOjp0cmFuc2ZlckFsbE91
dCh0cmFuc2ZlcmFibGVzLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jb250ZXh0UHJveHktPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UsIGNoYW5u
ZWxzLnJlbGVhc2UoKSk7CisgICAgbV9jb250ZXh0UHJveHktPnBvc3RNZXNzYWdlVG9Xb3JrZXJD
b250ZXh0KG1lc3NhZ2UsIHJlY2VpcHRzLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgV29ya2VyOjp0
ZXJtaW5hdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggOGU0ZWMzYS4uNzYwMmZjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC01Nyw5ICs1Nyw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBXb3JrZXIqIHRvV29ya2VyKCkgeyByZXR1cm4gdGhpczsg
fQogCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBwb3N0TWVzc2Fn
ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2Fn
ZVBvcnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlQXJy
YXkqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVu
IHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQg
cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1l
c3NhZ2VQb3J0KiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqLCBF
eGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXIuaWRsCmluZGV4IDc2Mzc1NjkuLjM4ZTk2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5pZGwKQEAgLTQyLDYgKzQyLDggQEAgbW9kdWxlIHRocmVhZHMgewogI2lmIGRlZmlu
ZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgICAgICBb
Q3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGlzZWRTY3JpcHRWYWx1ZSBtZXNzYWdl
LCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykKICAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHdlYmtpdFBvc3RNZXNzYWdlKGlu
IFNlcmlhbGlzZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IHRyYW5z
ZmVyTGlzdCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2Vsc2UKICAgICAg
ICAgLy8gVGhlcmUncyBubyBnb29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpD
IGJpbmRpbmdzLCBzbyBmb3Igbm93IGp1c3QgYWxsb3cgcGFzc2luZyBpbiBhIHNpbmdsZSBwb3J0
LgogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNz
YWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgKaW5kZXggODc5OGY1MS4uNDM1YTg4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCkBAIC0zMywx
MyArMzMsMTUgQEAKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogCi0jaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsK
KyAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheTsKICAgICBjbGFzcyBXb3JrZXI7CiAKICAgICAvLyBBIHByb3h5
IHRvIHRhbGsgdG8gdGhlIHdvcmtlciBjb250ZXh0LgpAQCAtNTMsNyArNTUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRl
eHQoKSA9IDA7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250
ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdl
VG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCAwYTZmOGNiLi4yNGFhM2Iz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNw
cApAQCAtNDgsMTUgKzQ4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2Fn
ZVdvcmtlckNvbnRleHRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFz
az4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICBzdGF0aWMgUGFz
c093blB0cjxNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+IHJlY2VpcHRzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNz
YWdlV29ya2VyQ29udGV4dFRhc2sobWVzc2FnZSwgY2hhbm5lbHMpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2VyQ29udGV4dFRhc2sobWVzc2FnZSwgcmVjZWlwdHMp
KTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICBNZXNzYWdlV29ya2VyQ29udGV4dFRhc2so
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKICAgICAgICAgOiBtX21lc3NhZ2UobWVz
c2FnZSkKLSAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICAgICAsIG1fcmVjZWlw
dHMocmVjZWlwdHMpCiAgICAgewogICAgIH0KIApAQCAtNjQsMjcgKzY0LDI3IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBBU1NFUlQoc2NyaXB0Q29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkp
OwogICAgICAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
RGVkaWNhdGVkV29ya2VyQ29udGV4dCo+KHNjcmlwdENvbnRleHQpOwotICAgICAgICBPd25QdHI8
TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqc2Ny
aXB0Q29udGV4dCwgbV9jaGFubmVscy5yZWxlYXNlKCkpOwotICAgICAgICBjb250ZXh0LT5kaXNw
YXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdl
KSk7CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRy
YW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oKnNjcmlwdENvbnRleHQsIG1fcmVjZWlw
dHMucmVsZWFzZSgpKTsKKyAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZl
bnQ6OmNyZWF0ZSh0cmFuc2ZlcmFibGVzLnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7CiAgICAgICAg
IGNvbnRleHQtPnRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJv
bVdvcmtlck9iamVjdChjb250ZXh0LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfQogCiBw
cml2YXRlOgogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKLSAg
ICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CisgICAgT3duUHRy
PFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gbV9yZWNlaXB0czsKIH07CiAKIGNsYXNzIE1lc3Nh
Z2VXb3JrZXJUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJUYXNrPiBjcmVhdGUoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2Fn
aW5nUHJveHkpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlclRhc2s+IGNyZWF0
ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxU
cmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSog
bWVzc2FnaW5nUHJveHkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3Nh
Z2VXb3JrZXJUYXNrKG1lc3NhZ2UsIGNoYW5uZWxzLCBtZXNzYWdpbmdQcm94eSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VXb3JrZXJUYXNrKG1lc3NhZ2UsIHJlY2VpcHRz
LCBtZXNzYWdpbmdQcm94eSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNZXNzYWdlV29ya2Vy
VGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0
cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5
KiBtZXNzYWdpbmdQcm94eSkKKyAgICBNZXNzYWdlV29ya2VyVGFzayhQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+IHJlY2VpcHRzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCiAg
ICAgICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgICwgbV9jaGFubmVscyhjaGFubmVs
cykKKyAgICAgICAgLCBtX3JlY2VpcHRzKHJlY2VpcHRzKQogICAgICAgICAsIG1fbWVzc2FnaW5n
UHJveHkobWVzc2FnaW5nUHJveHkpCiAgICAgewogICAgIH0KQEAgLTk1LDEzICs5NSwxMyBAQCBw
cml2YXRlOgogICAgICAgICBpZiAoIXdvcmtlck9iamVjdCB8fCBtX21lc3NhZ2luZ1Byb3h5LT5h
c2tlZFRvVGVybWluYXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgT3duUHRy
PE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnNj
cmlwdENvbnRleHQsIG1fY2hhbm5lbHMucmVsZWFzZSgpKTsKLSAgICAgICAgd29ya2VyT2JqZWN0
LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgbV9t
ZXNzYWdlKSk7CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxl
cyA9IFRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oKnNjcmlwdENvbnRleHQsIG1f
cmVjZWlwdHMucmVsZWFzZSgpKTsKKyAgICAgICAgd29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2ZW50
KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLCBtX21lc3NhZ2Up
KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bV9tZXNzYWdlOwotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVs
czsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBtX3JlY2VpcHRzOwogICAg
IFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OwogfTsKIApAQCAtMjQyLDIx
ICsyNDIsMjEgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJDb250ZXh0
KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW4KICAgICB0aHJlYWQtPnN0YXJ0KCk7
CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQordm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJl
Y2VpcHRzKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soTWVzc2Fn
ZVdvcmtlclRhc2s6OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscywgdGhpcykpOworICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soTWVzc2FnZVdvcmtlclRhc2s6OmNyZWF0ZSht
ZXNzYWdlLCByZWNlaXB0cywgdGhpcykpOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5l
bHMpCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxU
cmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewogICAgIGlmIChtX2Fza2VkVG9U
ZXJtaW5hdGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dvcmtlclRocmVhZCkgewog
ICAgICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7Ci0gICAgICAgIG1fd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUo
bWVzc2FnZSwgY2hhbm5lbHMpKTsKKyAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFzayhNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdlLCByZWNlaXB0
cykpOwogICAgIH0gZWxzZQotICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3Nh
Z2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAg
IG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVh
dGUobWVzc2FnZSwgcmVjZWlwdHMpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDM3MzE0ODAuLmM3NGFiODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAg
LTU1LDEzICs1NSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIChPbmx5IHVz
ZSB0aGVzZSBtZXRob2RzIGluIHRoZSB3b3JrZXIgb2JqZWN0IHRocmVhZC4pCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzdGFydFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICB2
aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKIAogICAgICAgICAvLyBJbXBs
ZW1lbnRhdGlvbnMgb2YgV29ya2VyT2JqZWN0UHJveHkuCiAgICAgICAgIC8vIChPbmx5IHVzZSB0
aGVzZSBtZXRob2RzIGluIHRoZSB3b3JrZXIgY29udGV4dCB0aHJlYWQuKQotICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4p
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJP
YmplY3QoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9iamVjdFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVj
dFByb3h5LmgKaW5kZXggMzNlMGJjMy4uMDFhMWYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT2JqZWN0UHJveHkuaApAQCAtMzMsMTggKzMzLDIwIEBACiAKICNpZiBFTkFCTEUo
V09SS0VSUykKIAorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IldvcmtlclJlcG9ydGluZ1Byb3h5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFz
cyBNZXNzYWdlUG9ydENoYW5uZWw7CisgICAgY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKKyAg
ICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVy
YWJsZVJlY2VpcHRBcnJheTsKIAogICAgIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2Vy
IG9iamVjdC4KICAgICBjbGFzcyBXb3JrZXJPYmplY3RQcm94eSA6IHB1YmxpYyBXb3JrZXJSZXBv
cnRpbmdQcm94eSB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3Nh
Z2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KSA9IDA7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0Fj
dGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDQyMWMxZmUuLjBhY2NmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMTEtMDgtMDYgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwu
Y29tPgorCisgICAgICAgIE1ha2UgTWVzc2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkIFdlYlRyYW5zZmVy
YWJsZVJlY2VpcHQuaCBhbmQgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAKKyAgICAgICAgLSBS
ZXBhcmVudCBXZWJNZXNzYWdlUG9ydENoYW5uZWwgdG8gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdAor
ICAgICAgICAtIEV4dHJhY3QgY29udmVyc2lvbiBmcm9tIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCB0
by9mcm9tIE1lc3NhZ2VQb3J0Q2hhbm5lbCBhcworICAgICAgICAgIHRoZSBUcmFuc2ZlcmFibGUt
Z2VuZXJpYyBmcm9tV2ViL3RvV2ViCisgICAgICAgIC0gRXhwb3NlIGZsYXR0ZW5SZWNlaXB0TGlz
dCBmcm9tIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBhbmQgdXNlIHRoaXMgd2hlbiBhCisgICAgICAg
ICAgbWVzc2FnZSBuZWVkcyB0byBiZSBzZW50IGFjcm9zcyBhbiBJUEMgY2hhbm5lbC4KKworICAg
ICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5l
bC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWw6OmFzV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsOjpp
c0ZsYXR0ZW5hYmxlKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
Lmg6CisgICAgICAgICogcHVibGljL1dlYlRyYW5zZmVyYWJsZVJlY2VpcHQuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmguCisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmFzV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZmVyYWJs
ZVJlY2VpcHQ6On5XZWJUcmFuc2ZlcmFibGVSZWNlaXB0KToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
V29ya2VyLmg6CisgICAgICAgICogcHVibGljL1dlYldvcmtlckNsaWVudC5oOgorICAgICAgICAq
IHNyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90ZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21S
ZW1vdGUpOgorICAgICAgICAqIHNyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmZsYXR0ZW5SZWNlaXB0TGlz
dCk6CisgICAgICAgICogc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwOgorICAgICAgICAqIHNy
Yy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmZyb21XZWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFu
c2ZlcmFibGVSZWNlaXB0Ojpmcm9tV2ViQWxsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdDo6dG9XZWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0Ojp0b1dlYkFsbCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckJhc2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VUYXNrKToKKyAgICAg
ICAgKiBzcmMvV2ViV29ya2VyQmFzZS5oOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3Nh
Z2VUb1dvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBs
Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2Vy
Q2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2sp
OgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3RUYXNrKToKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJXb3JrZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29y
a2VySW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VySW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgorICAgICAgICAq
IHNyYy9XZWJXb3JrZXJJbXBsLmg6CisKIDIwMTEtMDgtMDQgIEphbWVzIFJvYmluc29uICA8amFt
ZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYjk3YTY3Yy4uMGVmYTRmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjgwLDYgKzI4MCw3IEBACiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
VGV4dFJ1bi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRocmVhZFNhZmVEYXRhLmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlVSTC5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYlVSTEVycm9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMTG9hZGVyLmgn
LApAQCAtNTY1LDYgKzU2Niw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdHJpbmcuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlRleHRSdW4uY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlRocmVhZFNhZmVEYXRhLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJU
cmFuc2ZlcmFibGVSZWNlaXB0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTExvYWRUaW1pbmcuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlVSTFJlcXVlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFubmVsLmgKaW5kZXggMjg4YmQ1NS4u
N2Q2Yzk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVz
c2FnZVBvcnRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
TWVzc2FnZVBvcnRDaGFubmVsLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsX2gKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlRy
YW5zZmVyYWJsZVJlY2VpcHQuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0zOSwxOSArNDAsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJNZXNzYWdlUG9ydENoYW5uZWxDbGllbnQ7CiBjbGFzcyBXZWJTdHJpbmc7CiAKLXR5cGVkZWYg
V2ViVmVjdG9yPGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCo+IFdlYk1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5OwotCiAvLyBQcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gYSBNZXNzYWdlIFBvcnQg
Q2hhbm5lbCBpbXBsZW1lbnRhdGlvbi4gIFRoZSBvYmplY3Qgb3ducyBpdHNlbGYgYW5kCiAvLyBp
cyBzaWduYWxsZWQgdGhhdCBpdHMgbm90IG5lZWRlZCBhbnltb3JlIHdpdGggdGhlIGRlc3Ryb3ko
KSBjYWxsLgotY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsIHsKK2NsYXNzIFdlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbCA6IHB1YmxpYyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVudCopID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpID0gMDsKICAgICAvLyBXZWJLaXQgdmVyc2lv
bnMgb2YgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsLgogICAgIHZpcnR1YWwgdm9pZCBlbnRh
bmdsZShXZWJNZXNzYWdlUG9ydENoYW5uZWwqKSA9IDA7CiAgICAgLy8gQ2FsbGVlIHJlY2VpdmVz
IG93bmVyc2hpcCBvZiB0aGUgcGFzc2VkIHZlY3Rvci4KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1l
c3NhZ2UoY29uc3QgV2ViU3RyaW5nJiwgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqKSA9IDA7
Ci0gICAgdmlydHVhbCBib29sIHRyeUdldE1lc3NhZ2UoV2ViU3RyaW5nKiwgV2ViTWVzc2FnZVBv
cnRDaGFubmVsQXJyYXkmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0
IFdlYlN0cmluZyYsIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSopID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgdHJ5R2V0TWVzc2FnZShXZWJTdHJpbmcqLCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXkmKSA9IDA7CisgICAgdmlydHVhbCBXZWJNZXNzYWdlUG9ydENoYW5uZWwqIGFzV2ViTWVz
c2FnZVBvcnRDaGFubmVsKCkgeyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Zs
YXR0ZW5hYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgogICAgIH5X
ZWJNZXNzYWdlUG9ydENoYW5uZWwoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggZjA1YjI3ZC4u
MTFjZDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTMzLDExICszMywxNiBAQAogCiAjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUgIldl
YlZlY3Rvci5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTsgfQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OworfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlRy
YW5zZmVyYWJsZVJlY2VpcHQ7Cit0eXBlZGVmIFdlYlZlY3RvcjxjbGFzcyBXZWJUcmFuc2ZlcmFi
bGVSZWNlaXB0Kj4gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OwogCiBjbGFzcyBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUgewogcHVibGljOgpAQCAtNjQsNiArNjksMTMgQEAgcHVibGljOgog
ICAgIC8vIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS4KICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB0b1N0cmluZygpIGNv
bnN0OwogCisgICAgLy8gRmxhdHRlbnMgZmxhdHRlbmFibGUgV2ViVHJhbnNmZXJhYmxlUmVjZWlw
dHMgdG8gdGhlIGdpdmVuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhCisgICAgLy8gV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCByZXR1cm5pbmcgYSBuZXcgcmVwcmVzZW50YXRpb24uIFNldHMg
dW5mbGF0dGVuYWJsZUNvdW50T3V0CisgICAgLy8gdG8gdGhlIG51bWJlciBvZiB1bmZsYXR0ZW5h
YmxlIHJlY2VpcHRzIGluIHRoZSBwYXNzZWQtaW4gYXJyYXkuCisgICAgV0VCS0lUX0VYUE9SVCBz
dGF0aWMgV2ViU3RyaW5nIGZsYXR0ZW5SZWNlaXB0TGlzdChjb25zdCBXZWJTdHJpbmcmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JiByZWNlaXB0cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogdW5mbGF0dGVuYWJs
ZUNvdW50T3V0KTsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYpOwogICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgb3BlcmF0b3I9KGNv
bnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJjNTc1NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZmVy
YWJsZVJlY2VpcHQuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUcmFuc2ZlcmFibGVSZWNl
aXB0X2gKKyNkZWZpbmUgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdF9oCisKKyNpbmNsdWRlICJXZWJD
b21tb24uaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
dHlwZWRlZiBWZWN0b3I8T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFi
bGVSZWNlaXB0QXJyYXk7CisjZW5kaWYKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDsKK2NsYXNzIFdlYlN0cmluZzsKKwordHlwZWRlZiBXZWJW
ZWN0b3I8Y2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCo+IFdlYlRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheTsKKworY2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCBXZWJNZXNzYWdlUG9ydENoYW5uZWwqIGFzV2ViTWVzc2FnZVBvcnRDaGFubmVsKCkg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0ZsYXR0ZW5hYmxlKCkgY29uc3QgPSAw
OworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBjb252
ZXJ0IGJldHdlZW4gVHJhbnNmZXJhYmxlUmVjZWlwdHMgYW5kIHRoZWlyIFdlYlRyYW5zZmVyYWJs
ZVJlY2VpcHQKKyAgICAvLyBjb3VudGVycGFydHMuIE5vdGUgdGhhdCB0aGVzZSBjb252ZXJzaW9u
cyBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMuIFRoZSAqQWxsIG1ldGhvZHMKKyAgICAvLyBtYXAgdGhl
IGNvbnZlcnNpb24gbWV0aG9kcyBhY3Jvc3MgdGhlIHBhc3NlZC1pbiBBcnJheXMgKGNoZWNraW5n
IGZvciBudWxsIG9yIGVtcHR5IEFycmF5cworICAgIC8vIGluIHRoZSBwcm9jZXNzKS4KKyAgICBz
dGF0aWMgUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0PiBmcm9tV2ViKFdl
YlRyYW5zZmVyYWJsZVJlY2VpcHQqKTsKKyAgICBzdGF0aWMgV2ViVHJhbnNmZXJhYmxlUmVjZWlw
dCogdG9XZWIoV2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdCopOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gZnJvbVdlYkFsbChjb25z
dCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqKTsKKyAgICBzdGF0aWMgV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5KiB0b1dlYkFsbChjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNl
aXB0QXJyYXkqKTsKKyNlbmRpZgorcHJvdGVjdGVkOgorICAgIFdlYlRyYW5zZmVyYWJsZVJlY2Vp
cHQoKSB7IH0KKyAgICAvLyBOb3RlOiBwdXJwb3NlZnVsbHkgbm90IGEgdmlydHVhbCBkZXN0cnVj
dG9yLgorICAgIH5XZWJUcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJXb3JrZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldv
cmtlci5oCmluZGV4IDY2NGU1YWUuLjkwNmQyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYldvcmtlci5oCkBAIC0zNiw2ICszNiw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDsKK3R5cGVk
ZWYgV2ViVmVjdG9yPGNsYXNzIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqPiBXZWJUcmFuc2ZlcmFi
bGVSZWNlaXB0QXJyYXk7CiBjbGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJXb3JrZXJDbGllbnQ7CiAK
QEAgLTUyLDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3Jr
ZXJDb250ZXh0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29u
dGV4dCgKICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiwKLSAgICAgICAgY29uc3QgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkmKSA9IDA7CisgICAgICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVk
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGllbnREZXN0cm95ZWQoKSA9IDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyQ2xpZW50LmgKaW5kZXggZWIy
ZTYzZS4uNTRhMjM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViV29ya2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
V29ya2VyQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjsKIGNsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdl
YlRyYW5zZmVyYWJsZVJlY2VpcHQ7Cit0eXBlZGVmIFdlYlZlY3RvcjxjbGFzcyBXZWJUcmFuc2Zl
cmFibGVSZWNlaXB0Kj4gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OwogY2xhc3MgV2ViV29y
a2VyOwogCiAvLyBQcm92aWRlcyBhbiBpbnRlcmZhY2UgYmFjayB0byB0aGUgaW4tcGFnZSBzY3Jp
cHQgb2JqZWN0IGZvciBhIHdvcmtlci4KQEAgLTQ3LDcgKzQ5LDcgQEAgY2xhc3MgV2ViV29ya2Vy
Q2xpZW50IDogcHVibGljIFdlYkNvbW1vbldvcmtlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCiAgICAgICAgIGNvbnN0IFdlYlN0
cmluZyYsCi0gICAgICAgIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOwor
ICAgICAgICBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCmluZGV4IDZlNGRl
NDQuLjFmNWJhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKQEAgLTE4MCwxNyArMTgwLDkgQEAgdm9p
ZCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90ZShQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm4KICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViU3RyaW5nIG1l
c3NhZ2VTdHJpbmcgPSBtZXNzYWdlLT5tZXNzYWdlKCktPnRvV2lyZVN0cmluZygpOwotICAgIE93
blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMgPSBtZXNzYWdl
LT5jaGFubmVscygpOwotICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiB3ZWJDaGFubmVs
cyA9IDA7Ci0gICAgaWYgKGNoYW5uZWxzLmdldCgpICYmIGNoYW5uZWxzLT5zaXplKCkpIHsKLSAg
ICAgICAgd2ViQ2hhbm5lbHMgPSBuZXcgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkoY2hhbm5l
bHMtPnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hhbm5lbHMtPnNp
emUoKTsgKytpKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbCogcGxhdGZvcm1DaGFubmVsID0gKCpjaGFubmVscylbaV0tPmNoYW5uZWwoKTsKLSAgICAg
ICAgICAgICgqd2ViQ2hhbm5lbHMpW2ldID0gcGxhdGZvcm1DaGFubmVsLT53ZWJDaGFubmVsUmVs
ZWFzZSgpOwotICAgICAgICAgICAgKCp3ZWJDaGFubmVscylbaV0tPnNldENsaWVudCgwKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBtX3dlYkNoYW5uZWwtPnBvc3RNZXNzYWdlKG1lc3NhZ2VTdHJp
bmcsIHdlYkNoYW5uZWxzKTsKKyAgICBPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlw
dEFycmF5PiByZWNlaXB0cyA9IG1lc3NhZ2UtPnJlY2VpcHRzKCk7CisgICAgV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5KiB3ZWJSZWNlaXB0cyA9IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRv
V2ViQWxsKHJlY2VpcHRzLmdldCgpKTsKKyAgICBtX3dlYkNoYW5uZWwtPnBvc3RNZXNzYWdlKG1l
c3NhZ2VTdHJpbmcsIHdlYlJlY2VpcHRzKTsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bDo6RXZlbnREYXRhPiYgcmVzdWx0KQpAQCAtMTk5LDIwICsxOTEsMTIgQEAgYm9vbCBQbGF0Zm9y
bU1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgV2ViU3RyaW5nIG1lc3Nh
Z2U7Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkgd2ViQ2hhbm5lbHM7Ci0gICAgYm9v
bCBydiA9IG1fd2ViQ2hhbm5lbC0+dHJ5R2V0TWVzc2FnZSgmbWVzc2FnZSwgd2ViQ2hhbm5lbHMp
OworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3ZWJSZWNlaXB0czsKKyAgICBib29s
IHJ2ID0gbV93ZWJDaGFubmVsLT50cnlHZXRNZXNzYWdlKCZtZXNzYWdlLCB3ZWJSZWNlaXB0cyk7
CiAgICAgaWYgKHJ2KSB7Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4g
Y2hhbm5lbHM7Ci0gICAgICAgIGlmICh3ZWJDaGFubmVscy5zaXplKCkpIHsKLSAgICAgICAgICAg
IGNoYW5uZWxzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KHdlYkNoYW5u
ZWxzLnNpemUoKSkpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFu
bmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbD4gcGxhdGZvcm1DaGFubmVsID0gY3JlYXRlKHdlYkNoYW5uZWxzW2ldKTsK
LSAgICAgICAgICAgICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50KHBsYXRmb3JtQ2hhbm5l
bC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgKCpjaGFubmVscylbaV0gPSBNZXNzYWdlUG9ydENo
YW5uZWw6OmNyZWF0ZShwbGF0Zm9ybUNoYW5uZWwpOwotICAgICAgICAgICAgfQotICAgICAgICB9
CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0gV2Vi
VHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYkFsbCgmd2ViUmVjZWlwdHMpOwogICAgICAgICBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkTWVzc2FnZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUobWVzc2FnZSk7Ci0gICAgICAgIHJlc3VsdCA9
IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUoc2VyaWFsaXplZE1lc3NhZ2Uu
cmVsZWFzZSgpLCBjaGFubmVscy5yZWxlYXNlKCkpOworICAgICAgICByZXN1bHQgPSBNZXNzYWdl
UG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKHNlcmlhbGl6ZWRNZXNzYWdlLnJlbGVhc2Uo
KSwgcmVjZWlwdHMucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gcnY7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAppbmRleCA3MTQ5YTRkLi45OTJlOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTMyLDcgKzMy
LDkgQEAKICNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2luY2x1ZGUg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZVJlY2VpcHQu
aCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJUcmFuc2ZlcmFibGVSZWNl
aXB0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03OSw0ICs4MSwyNSBAQCBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om9wZXJhdG9yIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKIH0KIAorV2Vi
U3RyaW5nIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJlY2VpcHRMaXN0KGNvbnN0
IFdlYlN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmIHJl
Y2VpcHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCogdW5mbGF0dGVuYWJsZUNvdW50KSB7CisgICAgc2l6ZV90IHVuZmxhdHRl
bmFibGVzRm91bmQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjZWlwdHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFyZWNlaXB0c1tpXS0+aXNGbGF0dGVuYWJsZSgpKQor
ICAgICAgICAgICAgKyt1bmZsYXR0ZW5hYmxlc0ZvdW5kOworICAgIH0KKyAgICBpZiAodW5mbGF0
dGVuYWJsZUNvdW50KQorICAgICAgICAqdW5mbGF0dGVuYWJsZUNvdW50ID0gdW5mbGF0dGVuYWJs
ZXNGb3VuZDsKKyAgICBpZiAodW5mbGF0dGVuYWJsZXNGb3VuZCA9PSByZWNlaXB0cy5zaXplKCkp
CisgICAgICAgIHJldHVybiBtZXNzYWdlOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+IGNvcmVSZWNlaXB0cyA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVSZWNlaXB0QXJy
YXkocmVjZWlwdHMuc2l6ZSgpKSk7CisgICAgLy8gZnJvbVdlYigpIG1heSBoYXZlIHVud2FudGVk
IHNpZGUtZWZmZWN0cywgc28gb25seSBjb252ZXJ0IGZsYXR0ZW5hYmxlIHJlY2VpcHRzLgorICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjZWlwdHMuc2l6ZSgpOyArK2kpCisgICAgICAgICgq
Y29yZVJlY2VpcHRzKVtpXSA9IHJlY2VpcHRzW2ldLT5pc0ZsYXR0ZW5hYmxlKCkKKyAgICAgICAg
ICAgID8gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYihyZWNlaXB0c1tpXSkKKyAgICAg
ICAgICAgIDogbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpmbGF0dGVuUmVjZWlwdExpc3QobWVzc2FnZSwgKmNvcmVSZWNlaXB0cyk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAppbmRleCA0YTMyZmIzLi41YWUyZWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIktV
UkwuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVHJhbnNmZXJhYmxlUmVj
ZWlwdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUcmFuc2ZlcmFibGVSZWNl
aXB0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzg2OTczCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVHJhbnNmZXJhYmxl
UmVjZWlwdC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKKyNpbmNsdWRl
ICJXZWJNZXNzYWdlUG9ydENoYW5uZWwuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzT3duUHRy
PFRyYW5zZmVyYWJsZVJlY2VpcHQ+IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmZyb21XZWIoV2Vi
VHJhbnNmZXJhYmxlUmVjZWlwdCogcmVjZWlwdCkKK3sKKyAgICBpZiAoV2ViTWVzc2FnZVBvcnRD
aGFubmVsKiB3ZWJNZXNzYWdlUG9ydENoYW5uZWwgPSByZWNlaXB0LT5hc1dlYk1lc3NhZ2VQb3J0
Q2hhbm5lbCgpKSB7CisgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4g
cGxhdGZvcm1DaGFubmVsID0gUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZSh3ZWJN
ZXNzYWdlUG9ydENoYW5uZWwpOworICAgICAgICB3ZWJNZXNzYWdlUG9ydENoYW5uZWwtPnNldENs
aWVudChwbGF0Zm9ybUNoYW5uZWwuZ2V0KCkpOworICAgICAgICByZXR1cm4gTWVzc2FnZVBvcnRD
aGFubmVsOjpjcmVhdGUocGxhdGZvcm1DaGFubmVsKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Bhc3NPd25QdHI8V2ViQ29yZTo6
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojpmcm9tV2Vi
QWxsKGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSogcmVjZWlwdHMpCit7CisgICAg
T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gaW1wb3J0ZWRSZWNlaXB0czsKKyAgICBp
ZiAocmVjZWlwdHMgJiYgcmVjZWlwdHMtPnNpemUoKSkgeworICAgICAgICBpbXBvcnRlZFJlY2Vp
cHRzID0gYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheShyZWNlaXB0cy0+c2l6
ZSgpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjZWlwdHMtPnNpemUoKTsg
KytpKQorICAgICAgICAgICAgKCppbXBvcnRlZFJlY2VpcHRzKVtpXSA9IGZyb21XZWIoKCpyZWNl
aXB0cylbaV0pOworICAgIH0KKyAgICByZXR1cm4gaW1wb3J0ZWRSZWNlaXB0cy5yZWxlYXNlKCk7
Cit9CisKK1dlYlRyYW5zZmVyYWJsZVJlY2VpcHQqIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRv
V2ViKFRyYW5zZmVyYWJsZVJlY2VpcHQqIHJlY2VpcHQpCit7CisgICAgaWYgKE1lc3NhZ2VQb3J0
Q2hhbm5lbCogbWVzc2FnZVBvcnRDaGFubmVsID0gcmVjZWlwdC0+YXNNZXNzYWdlUG9ydENoYW5u
ZWwoKSkgeworICAgICAgICBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogcGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWwgPSBtZXNzYWdlUG9ydENoYW5uZWwtPmNoYW5uZWwoKTsKKyAgICAgICAg
V2ViTWVzc2FnZVBvcnRDaGFubmVsKiB3ZWJNZXNzYWdlUG9ydENoYW5uZWwgPSBwbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC0+d2ViQ2hhbm5lbFJlbGVhc2UoKTsKKyAgICAgICAgd2ViTWVzc2Fn
ZVBvcnRDaGFubmVsLT5zZXRDbGllbnQoMCk7CisgICAgICAgIHJldHVybiB3ZWJNZXNzYWdlUG9y
dENoYW5uZWw7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAw
OworfQorCitXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqIFdlYlRyYW5zZmVyYWJsZVJlY2Vp
cHQ6OnRvV2ViQWxsKGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSogcmVj
ZWlwdHMpCit7CisgICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KiBleHBvcnRlZFJlY2Vp
cHRzID0gMDsKKyAgICBpZiAocmVjZWlwdHMgJiYgcmVjZWlwdHMtPnNpemUoKSkgeworICAgICAg
ICBleHBvcnRlZFJlY2VpcHRzID0gbmV3IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheShyZWNl
aXB0cy0+c2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWNlaXB0cy0+
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKmV4cG9ydGVkUmVjZWlwdHMpW2ldID0gdG9XZWIo
KCpyZWNlaXB0cylbaV0uZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gZXhwb3J0ZWRSZWNlaXB0
czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckJhc2UuY3BwCmluZGV4IGQ2MTg2NzIuLjVhMzg4NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCkBAIC0zNTIsMjcgKzM1Miwy
NiBAQCB2b2lkIFdlYldvcmtlckJhc2U6Om9wZW5GaWxlU3lzdGVtRm9yV29ya2VyKFdlYkZpbGVT
eXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nCiAvLyBXb3JrZXJPYmplY3RQcm94eSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2
b2lkIFdlYldvcmtlckJhc2U6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4g
Y2hhbm5lbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewogICAgIGRp
c3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdlVGFz
aywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UtPnRvV2lyZVN0cmluZygpLCBjaGFubmVs
cykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZS0+dG9XaXJlU3RyaW5nKCksIHJlY2VpcHRzKSk7CiB9CiAKIHZvaWQgV2ViV29ya2VyQmFz
ZTo6cG9zdE1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5PiBjaGFubmVscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKICAgICBp
ZiAoIXRoaXNQdHItPmNsaWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJNZXNzYWdl
UG9ydENoYW5uZWxBcnJheSB3ZWJDaGFubmVscyhjaGFubmVscy5nZXQoKSA/IGNoYW5uZWxzLT5z
aXplKCkgOiAwKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkNoYW5uZWxzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIHdlYkNoYW5uZWxzW2ldID0gKCpjaGFubmVscylbaV0tPmNoYW5u
ZWwoKS0+d2ViQ2hhbm5lbFJlbGVhc2UoKTsKLSAgICAgICAgd2ViQ2hhbm5lbHNbaV0tPnNldENs
aWVudCgwKTsKKyAgICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkgd2ViUmVjZWlwdHMocmVj
ZWlwdHMuZ2V0KCkgPyByZWNlaXB0cy0+c2l6ZSgpIDogMCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3ZWJSZWNlaXB0cy5zaXplKCk7ICsraSkgeworICAgICAgICB3ZWJSZWNlaXB0c1tp
XSA9IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRvV2ViKCgqcmVjZWlwdHMpW2ldLmdldCgpKTsK
ICAgICB9CiAKLSAgICB0aGlzUHRyLT5jbGllbnQoKS0+cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVj
dChtZXNzYWdlLCB3ZWJDaGFubmVscyk7CisgICAgdGhpc1B0ci0+Y2xpZW50KCktPnBvc3RNZXNz
YWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSwgd2ViUmVjZWlwdHMpOwogfQogCiB2b2lkIFdlYldv
cmtlckJhc2U6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtl
ckJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaAppbmRl
eCA5ZWZjZTE1Li41ZjA4YzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJXb3JrZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQmFzZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJM
b2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCkBAIC02OCw3ICs2
OSw3IEBAIHB1YmxpYzoKICAgICAvLyBXZWJDb3JlOjpXb3JrZXJPYmplY3RQcm94eSBtZXRob2Rz
OgogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KAogICAgICAgICBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sCi0gICAgICAgIFBhc3NP
d25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKKyAgICAgICAgUGFzc093
blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KTsKICAgICB2aXJ0dWFsIHZv
aWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KAogICAgICAgICBjb25zdCBXVEY6OlN0cmlu
ZyYsIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCkBAIC0xMjMsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAg
V2ViV29ya2VyQmFzZSogdGhpc1B0ciwKICAgICAgICAgV1RGOjpTdHJpbmcgbWVzc2FnZSwKLSAg
ICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5l
bHMpOworICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eT4gcmVjZWlwdHMpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RFeGNlcHRpb25UYXNrKAogICAgICAg
ICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICBXZWJX
b3JrZXJCYXNlKiB0aGlzUHRyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJDbGllbnRJbXBsLmNwcAppbmRleCBjMTk4Y2NmLi4yYzZiZGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcApAQCAt
NjUsNiArNjUsMTEgQEAKICNpbmNsdWRlICJXZWJXb3JrZXIuaCIKICNpbmNsdWRlICJXZWJXb3Jr
ZXJJbXBsLmgiCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRyYW5zZmVyYWJsZTsKK3R5
cGVkZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsK
K30KKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MTc1LDcgKzE4MCw3IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6dGVybWluYXRlV29ya2Vy
Q29udGV4dCgpCiAKIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtl
ckNvbnRleHQoCiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Us
Ci0gICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAg
UGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewogICAgIC8v
IFdvcmtlci50ZXJtaW5hdGUoKSBjb3VsZCBiZSBjYWxsZWQgZnJvbSBKUyBiZWZvcmUgdGhlIGNv
bnRleHQgaXMgc3RhcnRlZC4KICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQpAQCAtMTg1LDE3
ICsxOTAsMTMgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2Vy
Q29udGV4dCgKICAgICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFk
KGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS0+
dG9XaXJlU3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHMpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0
cykpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5IHdlYkNoYW5uZWxzKGNoYW5uZWxzLmdldCgpID8gY2hhbm5lbHMtPnNpemUoKSA6IDApOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsKiB3ZWJjaGFubmVsID0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICgqY2hhbm5lbHMpW2ldLT5jaGFubmVsKCktPndlYkNoYW5uZWxSZWxlYXNlKCk7
Ci0gICAgICAgIHdlYmNoYW5uZWwtPnNldENsaWVudCgwKTsKLSAgICAgICAgd2ViQ2hhbm5lbHNb
aV0gPSB3ZWJjaGFubmVsOwotICAgIH0KLSAgICBtX3dlYldvcmtlci0+cG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQobWVzc2FnZS0+dG9XaXJlU3RyaW5nKCksIHdlYkNoYW5uZWxzKTsKKyAgICBX
ZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkgd2ViUmVjZWlwdHMocmVjZWlwdHMuZ2V0KCkgPyBy
ZWNlaXB0cy0+c2l6ZSgpIDogMCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSZWNl
aXB0cy5zaXplKCk7ICsraSkKKyAgICAgICAgd2ViUmVjZWlwdHNbaV0gPSBXZWJUcmFuc2ZlcmFi
bGVSZWNlaXB0Ojp0b1dlYigoKnJlY2VpcHRzKVtpXS5nZXQoKSk7CisgICAgbV93ZWJXb3JrZXIt
PnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UtPnRvV2lyZVN0cmluZygpLCB3ZWJS
ZWNlaXB0cyk7CiB9CiAKIGJvb2wgV2ViV29ya2VyQ2xpZW50SW1wbDo6aGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QKQEAgLTIzNiwyOSArMjM3LDIwIEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1w
bDo6c2VuZE1lc3NhZ2VUb0luc3BlY3Rvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB9CiAKIHZv
aWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBX
ZWJTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmIGNoYW5uZWxz
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYgd2ViUmVjZWlwdHMpCiB7Ci0gICAgT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczI7Ci0gICAgaWYgKGNoYW5uZWxz
LnNpemUoKSkgewotICAgICAgICBjaGFubmVsczIgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRD
aGFubmVsQXJyYXkoY2hhbm5lbHMuc2l6ZSgpKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFJlZlB0cjxQbGF0Zm9y
bU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcGxhdGZvcm1fY2hhbm5lbCA9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShjaGFubmVsc1tp
XSk7Ci0gICAgICAgICAgICBjaGFubmVsc1tpXS0+c2V0Q2xpZW50KHBsYXRmb3JtX2NoYW5uZWwu
Z2V0KCkpOwotICAgICAgICAgICAgKCpjaGFubmVsczIpW2ldID0gTWVzc2FnZVBvcnRDaGFubmVs
OjpjcmVhdGUocGxhdGZvcm1fY2hhbm5lbCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgT3duUHRy
PFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMgPSBXZWJUcmFuc2ZlcmFibGVSZWNl
aXB0Ojpmcm9tV2ViQWxsKCZ3ZWJSZWNlaXB0cyk7CiAKICAgICBpZiAoY3VycmVudFRocmVhZCgp
ICE9IG1fd29ya2VyVGhyZWFkSWQpIHsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3RU
YXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcobWVz
c2FnZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5uZWxzMi5yZWxlYXNlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdHMucmVsZWFz
ZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBwb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0VGFzayhtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCksIHRoaXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSwgY2hhbm5lbHMyLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSwgcmVjZWlwdHMucmVs
ZWFzZSgpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBlcnJvck1lc3NhZ2UsCkBAIC0zNjksMTYgKzM2
MSwxNCBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHRU
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbgogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBs
Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKLSAgICBXZWJN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheSB3ZWJDaGFubmVscyhjaGFubmVscy5nZXQoKSA/IGNoYW5u
ZWxzLT5zaXplKCkgOiAwKTsKKyAgICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkgd2ViUmVj
ZWlwdHMocmVjZWlwdHMuZ2V0KCkgPyByZWNlaXB0cy0+c2l6ZSgpIDogMCk7CiAKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHdlYkNoYW5uZWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHdl
YkNoYW5uZWxzW2ldID0gKCpjaGFubmVscylbaV0tPmNoYW5uZWwoKS0+d2ViQ2hhbm5lbFJlbGVh
c2UoKTsKLSAgICAgICAgd2ViQ2hhbm5lbHNbaV0tPnNldENsaWVudCgwKTsKLSAgICB9CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSZWNlaXB0cy5zaXplKCk7ICsraSkKKyAgICAgICAg
d2ViUmVjZWlwdHNbaV0gPSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0b1dlYigoKnJlY2VpcHRz
KVtpXS5nZXQoKSk7CiAKLSAgICB0aGlzUHRyLT5tX3dlYldvcmtlci0+cG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQobWVzc2FnZSwgd2ViQ2hhbm5lbHMpOworICAgIHRoaXNQdHItPm1fd2ViV29y
a2VyLT5wb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChtZXNzYWdlLCB3ZWJSZWNlaXB0cyk7CiB9
CiAKIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6d29ya2VyT2JqZWN0RGVzdHJveWVkVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApAQCAtMzg5LDI1ICszNzksMjIgQEAgdm9p
ZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95ZWRUYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICBkZWxldGUgdGhpc1B0cjsKIH0KIAotdm9pZCBXZWJX
b3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzaygKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKK3ZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViV29ya2VyQ2xpZW50SW1wbCogdGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewogCiAgICAgaWYgKHRoaXNQdHItPm1f
d29ya2VyKSB7Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9Ci0gICAg
ICAgICAgICBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqY29udGV4dCwgY2hhbm5lbHMpOwor
ICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2Zl
cmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKCpjb250ZXh0LCByZWNlaXB0cyk7CiAgICAgICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRNZXNzYWdlID0KICAgICAg
ICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUobWVzc2FnZSk7Ci0g
ICAgICAgIHRoaXNQdHItPm1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKHBvcnRzLnJlbGVhc2UoKSwKKyAgICAgICAgdGhpc1B0ci0+bV93b3JrZXItPmRpc3BhdGNo
RXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUodHJhbnNmZXJhYmxlcy5yZWxlYXNlKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlcmlhbGl6ZWRNZXNzYWdlLnJlbGVhc2UoKSkpOwogICAgIH0KIH0KIAotdm9pZCBXZWJXb3Jr
ZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3RUYXNrKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCit2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBsaW5lTnVtYmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCmluZGV4IGMyNzBmZmMuLjM5Y2NlZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKQEAgLTMz
LDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogCisjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIldl
YldvcmtlckNsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRQcm94eS5oIgpAQCAtNDIs
NiArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OworY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKK3R5cGVkZWYgVmVjdG9yPE93blB0
cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTcwLDcgKzczLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJDb250ZXh0KAogICAgICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwKLSAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpOworICAgICAgICBQYXNzT3duUHRyPFdl
YkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpOwogICAgIHZpcnR1YWwg
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2Vy
T2JqZWN0RGVzdHJveWVkKCk7CiAKQEAgLTgwLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgLy8g
V2ViV29ya2VyQ2xpZW50IG1ldGhvZHM6CiAgICAgLy8gVGhlc2UgYXJlIGNhbGxlZCBvbiB0aGUg
bWFpbiBXZWJLaXQgdGhyZWFkLgotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
Jik7CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoY29uc3QgV2Vi
U3RyaW5nJiwgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Jik7CiAgICAgdmlydHVh
bCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmLCBpbnQs
IGNvbnN0IFdlYlN0cmluZyYpOwogCiAgICAgLy8gRklYTUU6IHRoZSBiZWxvdyBpcyBmb3IgY29t
cGF0aWJpbGl0eSBvbmx5IGFuZCBzaG91bGQgYmUKQEAgLTEyOCw3ICsxMzEsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzayhXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6
OlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hh
bm5lbHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpOwog
ICAgIHN0YXRpYyB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZFRhc2soV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIpOwogCkBAIC0xMzgsNyAr
MTQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2Jq
ZWN0VGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudElt
cGwqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4gY2hhbm5lbHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBy
ZWNlaXB0cyk7CiAgICAgc3RhdGljIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0VGFz
ayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCog
dGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJXb3JrZXJJbXBsLmNwcAppbmRleCA2YzlmNDVjLi41NTU2YjhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcApAQCAtODIsMTggKzgyLDE4IEBA
IFdlYkNvbW1vbldvcmtlckNsaWVudCogV2ViV29ya2VySW1wbDo6Y29tbW9uQ2xpZW50KCkKIHZv
aWQgV2ViV29ya2VySW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJJbXBsKiB0aGlzUHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3du
UHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAgICAgQVNTRVJUKGNv
bnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKICAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3
b3JrZXJDb250ZXh0ID0KICAgICAgICAgc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyQ29udGV4
dCo+KGNvbnRleHQpOwogCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0KLSAg
ICAgICAgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmNvbnRleHQsIGNoYW5uZWxzKTsKKyAg
ICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPQorICAgICAgICBUcmFu
c2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKCpjb250ZXh0LCByZWNlaXB0cyk7CiAgICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZE1lc3NhZ2UgPQogICAgICAg
ICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKG1lc3NhZ2UpOwogICAgIHdv
cmtlckNvbnRleHQtPmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoCi0gICAgICAg
IHBvcnRzLnJlbGVhc2UoKSwgc2VyaWFsaXplZE1lc3NhZ2UucmVsZWFzZSgpKSk7CisgICAgICAg
IHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLCBzZXJpYWxpemVkTWVzc2FnZS5yZWxlYXNlKCkpKTsK
ICAgICB0aGlzUHRyLT5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qod29ya2VyQ29udGV4
dC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogfQogCkBAIC0xMTYsMjIgKzExNiwxMiBAQCB2b2lk
IFdlYldvcmtlckltcGw6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKQogfQogCiB2b2lkIFdlYldv
cmtlckltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYlN0cmluZyYgbWVz
c2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmIHdlYkNoYW5uZWxzKQotewotICAgIE93blB0
cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7Ci0gICAgaWYgKHdlYkNoYW5uZWxz
LnNpemUoKSkgewotICAgICAgICBjaGFubmVscyA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENo
YW5uZWxBcnJheSh3ZWJDaGFubmVscy5zaXplKCkpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUmVmUHRyPFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBwbGF0Zm9ybV9jaGFubmVsID0KLSAgICAgICAgICAg
ICAgICBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHdlYkNoYW5uZWxzW2ldKTsK
LSAgICAgICAgICAgIHdlYkNoYW5uZWxzW2ldLT5zZXRDbGllbnQocGxhdGZvcm1fY2hhbm5lbC5n
ZXQoKSk7Ci0gICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6
Y3JlYXRlKHBsYXRmb3JtX2NoYW5uZWwpOwotICAgICAgICB9Ci0gICAgfQotCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJs
ZVJlY2VpcHRBcnJheSYgd2ViUmVjZWlwdHMpCit7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheT4gcmVjZWlwdHMgPSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojpmcm9tV2ViQWxs
KCZ3ZWJSZWNlaXB0cyk7CiAgICAgd29ya2VyVGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzaygK
ICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRh
c2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpLCBTdHJpbmcobWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2UoKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgU3RyaW5nKG1lc3Nh
Z2UpLCByZWNlaXB0cy5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJJbXBsOjp3b3Jr
ZXJPYmplY3REZXN0cm95ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
SW1wbC5oCmluZGV4IDc5YzljNTQuLmM3YmU3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJJbXBsLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIC8vIFdl
YldvcmtlciBtZXRob2RzOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckNvbnRleHQoY29u
c3QgV2ViVVJMJiwgY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViU3RyaW5nJik7CiAgICAgdmly
dHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9z
dE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtl
ckNvbnRleHQoY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5Jik7CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpOwogICAgIHZp
cnR1YWwgdm9pZCBjbGllbnREZXN0cm95ZWQoKTsKIApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRl
OgogICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAg
ICAgICBXZWJXb3JrZXJJbXBsKiB0aGlzUHRyLAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYg
bWVzc2FnZSwKLSAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMpOworICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJs
ZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpOwogCiAgICAgV2ViV29ya2VyQ2xpZW50KiBtX2NsaWVu
dDsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMWEzYzYxNS4uNjRjOTNjNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTA4LTA2ICBMdWtlIFphcmtvICA8
bHVrZXphcmtvQGdtYWlsLmNvbT4KKworICAgICAgICBNYWtlIE1lc3NhZ2VQb3J0IFRyYW5zZmVy
YWJsZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjUyMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaDoKKyAgICAgICAgKFRlc3RX
ZWJXb3JrZXI6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFRlc3RXZWJX
b3JrZXI6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorCiAyMDExLTA4LTA0ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgbW9kZWwuanMgbmVlZHMgc29tZSB1
bml0IHRlc3RpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RXZWJXb3JrZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3Jr
ZXIuaAppbmRleCA3MWJmZmNlLi4xMmUyYzg0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0V2ViV29ya2VyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFdlYldvcmtlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAv
LyBXZWJXb3JrZXIgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0
KGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJD
b250ZXh0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0
KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgY29uc3QgV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENo
YW5uZWxBcnJheSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29u
dGV4dChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ry
b3llZCgpCiAgICAgewogICAgICAgICAvLyBSZWxlYXNlcyB0aGUgcmVmZXJlbmNlIGhlbGQgZm9y
IHdvcmtlciBvYmplY3QuCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY2xpZW50RGVzdHJveWVkKCkgeyB9CiAKICAgICAvLyBXZWJXb3JrZXJDbGllbnQgbWV0aG9k
czoKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJL
aXQ6OldlYlN0cmluZyYsIGNvbnN0IFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChj
b25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGludCwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50
LCBpbnQsIGludCwgaW50LCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGludCwgY29uc3QgV2Vi
S2l0OjpXZWJTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9t
V29ya2VyT2JqZWN0KGJvb2wpIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103302</attachid>
            <date>2011-08-08 15:15:08 -0700</date>
            <delta_ts>2011-08-10 13:58:53 -0700</delta_ts>
            <desc>Address comments.</desc>
            <filename>postmessage-patch-aug8-313.patch</filename>
            <type>text/plain</type>
            <size>216383</size>
            <attacher name="Luke Zarko">lukezarko+bugzilla</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZGM0NjlkLi5iZjJiZTY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgt
MDggIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgTWVz
c2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gQ2hhbmdlIGluIGVycm9yIG1lc3NhZ2UgdGV4dC4KKyAgICAgICAg
LSBDaGFuZ2UgdG8gaGFuZGxlIGFuZCB0ZXN0IG5ldyBwcmVmaXhlZCB3ZWJraXRQb3N0TWVzc2Fn
ZS4KKyAgICAgICAgLSBDaGFuZ2UgdG8gaGFuZGxlIHNvbWUgSU5WQUxJRF9TVEFURV9FUlIgLT4g
REFUQV9DTE9ORV9FUlIgc3Vic3RpdHV0aW9ucy4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIGRl
ZmF1bHQgd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQgY29udGFpbnMgYSBGQUlMOiBs
aW5lLiBUaGUgY2hlY2sgdGhhdCBnZW5lcmF0ZXMgdGhhdCBsaW5lIGF0dGVtcHRzIHRvIHZlcmlm
eSB0aGF0IG5vbi1wcmVmaXhlZCBwb3N0TWVzc2FnZSBkaXNhbGxvd3MgTWVzc2FnZVBvcnRzIChv
ciBhbnkgb3RoZXIgVHJhbnNmZXJhYmxlcykgZnJvbSBhcHBlYXJpbmcgaW4gbWVzc2FnZSBib2Rp
ZXMgYXMgbWFuZGF0ZWQgYnkgdGhlIHN0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtIChtb2R1bG8g
c2VuZGluZyBUcmFuc2ZlcmFibGVzIGFzIHBhcnQgb2YgdGhlIHByZWZpeCkuIEEgYnVnIHJlbGV2
YW50IHRvIHRoaXMgYmVoYXZpb3IgaXMgYXQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1MjkyLgorCisgICAgICAgIHByb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3Rl
ZCBjb250YWlucyBhbiBleHRyYSBGQUlMOiBsaW5lIGZvciBDaHJvbWl1bSB3aXRoIHJlZ2FyZCB0
byB3ZWJraXRQb3N0TWVzc2FnZTsgdGhpcyBhcHBlYXJzIHRvIGJlIGFuIGFydGlmYWN0IG9mIHRo
ZSB3YXkgYmluZGluZ3MgYXJlIGdlbmVyYXRlZCwgYXMgYSBzaW1pbGFyIEZBSUw6IGxpbmUgcHJl
dmlvdXNseSBleGlzdGVkIGZvciBwbGFpbiBwb3N0TWVzc2FnZS4KKworICAgICAgICAqIGZhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWw6CisgICAgICAg
ICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnR5LWRlc2NyaXB0b3JzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9uZS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS13aW4vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9ldmVudHMv
bWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS13aW4vZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3dvcmtlcnMvd29ya2Vy
LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisKIDIwMTEtMDgtMDUg
IFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBMYXlv
dXQgVGVzdCBmYXN0L3hzbC94c2x0LWltcG9ydC1kZXB0aC54bWwgaXMgZmFpbGluZwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1l
c3NhZ2UtYXJncy1leHBlY3RlZC50eHQKaW5kZXggMDU0ZDkxOC4uMDg0MDNiNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3Rt
ZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGVzdCB0aGF0IHRoZSBz
ZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dl
cnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQ
QVNTIG1lc3NhZ2UgJzEnIHRocm91Z2ggJzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGggbWVz
c2FnZXMgNC03IHJlY2VpdmVkIGJlbG93LgorVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQg
b2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYg
aXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LgogCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcxJywg
MSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1M6IFBvc3Rpbmcg
bWVzc2FnZSAoJzInLCApOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yCkBA
IC03LDEyICs3LDI5IEBAIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzQnLCBbb2JqZWN0IERPTVdp
bmRvd10pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2Ug
KCc1JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVz
c2FnZSAoJzYnLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQ
b3N0aW5nIG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdl
UG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1l
c3NhZ2UgKCc4JywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BB
U1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJzknLCApOiB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdBJywgW29iamVj
dCBPYmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFTUzog
d2Via2l0UG9zdGluZyBtZXNzYWdlICgnQicsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5vdCB0
aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0MnLCBudWxs
KSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdl
ICgnRCcsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtp
dFBvc3RpbmcgbWVzc2FnZSAoJ0UnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3Nh
Z2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNl
cHRpb24gMjUKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0YnLCBbb2JqZWN0IE1lc3Nh
Z2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2Fn
ZSAoJ0cnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFU
QV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2Fn
ZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3Qg
dGhyb3cgYW4gZXhjZXB0aW9uCitGQUlMOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1lc3Nh
Z2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlv
bgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMjE0NzQ4MzY0OCcsIG51bGwpIGRpZCBub3QgdGhy
b3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdkb25lJywgKikgZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb24KIFJlY2VpdmVkIG1lc3NhZ2UgJzQnCiBSZWNlaXZlZCBtZXNz
YWdlICc1JwogUmVjZWl2ZWQgbWVzc2FnZSAnNicKIFJlY2VpdmVkIG1lc3NhZ2UgJzcnIHdpdGgg
MiBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ0InCitSZWNlaXZlZCBtZXNzYWdlICdDJworUmVj
ZWl2ZWQgbWVzc2FnZSAnRCcKK1JlY2VpdmVkIG1lc3NhZ2UgJ0YnIHdpdGggMSBwb3J0cy4KK1Jl
Y2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3QgTWVzc2FnZVBvcnRdJyB3aXRoIDEgcG9ydHMuCitSZWNl
aXZlZCBtZXNzYWdlICdbb2JqZWN0IE9iamVjdF0nIHdpdGggMSBwb3J0cy4KIFJlY2VpdmVkIG1l
c3NhZ2UgJzIxNDc0ODM2NDgnCiBSZWNlaXZlZCBtZXNzYWdlICdkb25lJwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5o
dG1sCmluZGV4IDcyYTI3ZTcuLmJhOWVhNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCkBAIC0zNSw3ICsz
NSwxOSBAQCBmdW5jdGlvbiB0cnlQb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25kLCB0aGlyZCwgc2hv
dWxkRmFpbCkgewogICAgfQogfQogCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRp
b24iKS5pbm5lckhUTUwgPSAiVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93
LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90
IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1lc3NhZ2UgJzEnIHRocm91Z2gg
JzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMgNC03IHJlY2VpdmVkIGJlbG93
Ljxicj48YnI+IjsKK2Z1bmN0aW9uIHRyeVdlYmtpdFBvc3RNZXNzYWdlKGZpcnN0LCBzZWNvbmQs
IHRoaXJkLCBzaG91bGRGYWlsKSB7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKCF0aGlyZCkKKyAg
ICAgICAgICAgIHdpbmRvdy53ZWJraXRQb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25kKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgd2luZG93LndlYmtpdFBvc3RNZXNzYWdlKGZpcnN0LCBzZWNv
bmQsIHRoaXJkKTsKKyAgICAgICAgY29uc29sZS5pbm5lckhUTUwgKz0gKHNob3VsZEZhaWwgPyAi
RkFJTCIgOiAiUEFTUyIpICsgIjogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnIiArIGZpcnN0ICsg
IicsICIgKyBzZWNvbmQgKyAiKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbjxicj4iOworICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBjb25zb2xlLmlubmVySFRNTCArPSAoc2hvdWxkRmFpbCA/
ICJQQVNTIiA6ICJGQUlMIikgKyAiOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCciICsgZmlyc3Qg
KyAiJywgIiArIHNlY29uZCArICIpOiB0aHJldyBleGNlcHRpb24gIiArIGUgKyAiPGJyPiI7Cisg
ICB9Cit9CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmlubmVySFRN
TCA9ICJUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cucG9zdE1lc3NhZ2Ug
aXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBpcyBub3QgYSBtZXNzYWdlIHBv
cnQuPGJyPjxicj4iOwogCiB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKIHRyeVBv
c3RNZXNzYWdlKCcxJywgMSwgJyonLCB0cnVlKTsKQEAgLTQ1LDYgKzU3LDE5IEBAIHRyeVBvc3RN
ZXNzYWdlKCc0Jywgd2luZG93LCAnKicpOyAgLy8gUGFzc2VzIGJlY2F1c2Ugd2luZG93IGhhcyBh
ICJsZW5ndGgiIGF0dHJpCiB0cnlQb3N0TWVzc2FnZSgnNScsIG51bGwsICcqJyk7CiB0cnlQb3N0
TWVzc2FnZSgnNicsIHZvaWQgMCwgJyonKTsKIHRyeVBvc3RNZXNzYWdlKCc3JywgW2NoYW5uZWwu
cG9ydDEsIGNoYW5uZWwucG9ydDJdLCAnKicpOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJzgnLCAx
LCAnKicsIHRydWUpOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJzknLCAiIiwgJyonLCB0cnVlKTsK
K3RyeVdlYmtpdFBvc3RNZXNzYWdlKCdBJywgeyB4OiAxIH0sICcqJywgdHJ1ZSk7Cit0cnlXZWJr
aXRQb3N0TWVzc2FnZSgnQicsIHdpbmRvdywgJyonKTsgIC8vIFBhc3NlcyBiZWNhdXNlIHdpbmRv
dyBoYXMgYSAibGVuZ3RoIiBhdHRyaWJ1dGUgb2YgdmFsdWUgJzAnLCBzbyBpdCBsb29rcyBsaWtl
IGFuIGFycmF5Cit0cnlXZWJraXRQb3N0TWVzc2FnZSgnQycsIG51bGwsICcqJyk7Cit0cnlXZWJr
aXRQb3N0TWVzc2FnZSgnRCcsIHZvaWQgMCwgJyonKTsKK3RyeVdlYmtpdFBvc3RNZXNzYWdlKCdF
JywgW2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDJdLCAnKicsIHRydWUpOyAvLyBmYWlsczog
dGhvc2UgcG9ydHMgaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJyZWQuCitjaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJ0YnLCBbY2hhbm5lbC5wb3J0
MV0sICcqJyk7Cit0cnlQb3N0TWVzc2FnZSgnRycsIFtjaGFubmVsLnBvcnQxXSwgJyonLCB0cnVl
KTsgLy8gZmFpbHM6IHRoYXQgcG9ydCBoYXMgYWxyZWFkeSBiZWVuIHRyYW5zZmVycmVkLgorY2hh
bm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK3RyeVdlYmtpdFBvc3RNZXNzYWdlKGNoYW5uZWwu
cG9ydDEsIFtjaGFubmVsLnBvcnQxXSwgJyonKTsKK3RyeVBvc3RNZXNzYWdlKGNoYW5uZWwucG9y
dDIsIFtjaGFubmVsLnBvcnQyXSwgJyonLCB0cnVlKTsgLy8gZmFpbHM6IHBvc3RNZXNzYWdlIGRv
ZXMgbm90IGFsbG93IFRyYW5zZmVyYWJsZSBhcmd1bWVudHMgaW4gbWVzc2FnZSBib2RpZXMuCiB0
cnlQb3N0TWVzc2FnZSgyMTQ3NDgzNjQ4LCBudWxsLCAnKicpOwogdHJ5UG9zdE1lc3NhZ2UoJ2Rv
bmUnLCAnKicpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCBmMjhhOWI1Li5i
OTE4MjEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTExODMsNiArMTE4Myw3IEBAIHdpbmRv
dy5NZXNzYWdlUG9ydC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCBbZnVuY3Rpb25dCiB3aW5kb3cu
TWVzc2FnZVBvcnQucHJvdG90eXBlLnBvc3RNZXNzYWdlIFtmdW5jdGlvbl0KIHdpbmRvdy5NZXNz
YWdlUG9ydC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25dCiB3aW5kb3cu
TWVzc2FnZVBvcnQucHJvdG90eXBlLnN0YXJ0IFtmdW5jdGlvbl0KK3dpbmRvdy5NZXNzYWdlUG9y
dC5wcm90b3R5cGUud2Via2l0UG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQogd2luZG93Lk1pbWVUeXBl
IFtvYmplY3QgTWltZVR5cGVDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5NaW1lVHlwZS5wcm90b3R5cGUg
W29iamVjdCBNaW1lVHlwZVByb3RvdHlwZV0KIHdpbmRvdy5NaW1lVHlwZUFycmF5IFtvYmplY3Qg
TWltZVR5cGVBcnJheUNvbnN0cnVjdG9yXQpAQCAtMjA4Miw2ICsyMDgzLDcgQEAgd2luZG93Lldv
cmtlci5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCBbZnVuY3Rpb25dCiB3aW5kb3cuV29ya2VyLnBy
b3RvdHlwZS5wb3N0TWVzc2FnZSBbZnVuY3Rpb25dCiB3aW5kb3cuV29ya2VyLnByb3RvdHlwZS5y
ZW1vdmVFdmVudExpc3RlbmVyIFtmdW5jdGlvbl0KIHdpbmRvdy5Xb3JrZXIucHJvdG90eXBlLnRl
cm1pbmF0ZSBbZnVuY3Rpb25dCit3aW5kb3cuV29ya2VyLnByb3RvdHlwZS53ZWJraXRQb3N0TWVz
c2FnZSBbZnVuY3Rpb25dCiB3aW5kb3cuWE1MRG9jdW1lbnQgW3ByaW50ZWQgYWJvdmUgYXMgd2lu
ZG93LkRvY3VtZW50XQogd2luZG93LlhNTEh0dHBSZXF1ZXN0IFtvYmplY3QgWE1MSHR0cFJlcXVl
c3RDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5YTUxIdHRwUmVxdWVzdC5ET05FIFtudW1iZXJdCkBAIC0y
MjgwLDYgKzIyODIsNyBAQCB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90eXBlLnNob3dNb2RhbERp
YWxvZyBbZnVuY3Rpb25dCiB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90eXBlLnN0b3AgW2Z1bmN0
aW9uXQogd2luZG93LmNvbnN0cnVjdG9yLnByb3RvdHlwZS53ZWJraXRDb252ZXJ0UG9pbnRGcm9t
Tm9kZVRvUGFnZSBbZnVuY3Rpb25dCiB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90eXBlLndlYmtp
dENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2RlIFtmdW5jdGlvbl0KK3dpbmRvdy5jb25zdHJ1Y3Rv
ci5wcm90b3R5cGUud2Via2l0UG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQogd2luZG93LmNyeXB0byBb
b2JqZWN0IENyeXB0b10KIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIFtmdW5jdGlvbl0K
IHdpbmRvdy5kZWNvZGVVUkkgW2Z1bmN0aW9uXQpAQCAtMjQ3Myw2ICsyNDc2LDcgQEAgd2luZG93
LnVuZGVmaW5lZCBbdW5kZWZpbmVkXQogd2luZG93LnVuZXNjYXBlIFtmdW5jdGlvbl0KIHdpbmRv
dy53ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZSBbZnVuY3Rpb25dCiB3aW5kb3cud2Vi
a2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUgW2Z1bmN0aW9uXQord2luZG93LndlYmtpdFBv
c3RNZXNzYWdlIFtmdW5jdGlvbl0KIHdpbmRvdy53aW5kb3cgW3ByaW50ZWQgYWJvdmUgYXMgd2lu
ZG93XQogd2luZG93LmdldFNlbGVjdGlvbigpIFtvYmplY3QgRE9NU2VsZWN0aW9uXQogd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlIFtmdW5jdGlvbl0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlw
dG9ycy1leHBlY3RlZC50eHQKaW5kZXggMmFmNjc0NS4uYzU4OTU2NSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQKQEAgLTUzOSw2ICs1MzksNyBAQCBQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAndG9TdHJpbmcnKSBpcyB1bmRlZmlu
ZWQuCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAndmFsdWVP
ZicpIGlzIHVuZGVmaW5lZC4KIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3
aW5kb3csICd3ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZScpIGlzIHVuZGVmaW5lZC4K
IFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICd3ZWJraXRDb252
ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZScpIGlzIHVuZGVmaW5lZC4KK1BBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICd3ZWJraXRQb3N0TWVzc2FnZScpIGlzIHVuZGVm
aW5lZC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1l
eHBlY3RlZC50eHQKaW5kZXggODNjZWNmNC4uOGI4M2NmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CkBAIC03
OTksNiArNzk5LDggQEAgUEFTUyBpbm5lci53ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFn
ZS5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIud2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVU
b1BhZ2UuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndlYmtpdENvbnZl
cnRQb2ludEZyb21QYWdlVG9Ob2RlLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci53ZWJraXRD
b252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKK1BB
U1MgaW5uZXIud2Via2l0UG9zdE1lc3NhZ2UuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLndl
YmtpdFBvc3RNZXNzYWdlLmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci53
aW5kb3cuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndpbmRvdy5jb25zdHJ1Y3Rvci5pc0lu
bmVyIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9uZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUtZXhwZWN0ZWQudHh0
CmluZGV4IGNkMzI3OGEuLmU1ZGJkYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1jbG9uZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb25lLWV4cGVjdGVkLnR4dApAQCAtMiw4ICsyLDggQEAg
VGVzdHMgdmFyaW91cyB1c2UgY2FzZXMgd2hlbiBjbG9uaW5nIE1lc3NhZ2VQb3J0cy4KIAogU2hv
dWxkIGJlIGEgc2VyaWVzIG9mIFNVQ0NFU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS4K
IAotU1VDQ0VTUzogUG9zdGluZyBwb3J0IHRvIGl0c2VsZjogRXJyb3I6IElOVkFMSURfU1RBVEVf
RVJSOiBET00gRXhjZXB0aW9uIDExCi1TVUNDRVNTOiBQb3N0aW5nIGVudGFuZ2xlZCBwb3J0OiBF
cnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEKK1NVQ0NFU1M6IFBvc3Rp
bmcgcG9ydCB0byBpdHNlbGY6IEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAy
NQorU1VDQ0VTUzogUG9zdGluZyBlbnRhbmdsZWQgcG9ydDogRXJyb3I6IERBVEFfQ0xPTkVfRVJS
OiBET00gRXhjZXB0aW9uIDI1CiBTVUNDRVNTOiBQb3N0aW5nIGNsb25lZCBwb3J0LgogU1VDQ0VT
UzogUG9zdGVkIG1lc3NhZ2VzIHRvIGNsb25lZCBwb3J0LgogU1VDQ0VTUzogQ2xvbmVkIGJvdGgg
ZW5kcG9pbnRzIG9mIGEgY2hhbm5lbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CmluZGV4IGZmNzU1NDUuLjQ0MzEy
NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0
aS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LW11bHRpLWV4cGVjdGVkLnR4dApAQCAtMywxMyArMywxMyBAQCBUaGlzIHRlc3QgY2hlY2tzIHRo
ZSB2YXJpb3VzIHVzZSBjYXNlcyBhcm91bmQgc2VuZGluZyBtdWx0aXBsZSBwb3J0cyB0aHJvdWdo
IE1lcwogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgY2hhbm5lbC5wb3J0MS5w
b3N0TWVzc2FnZSgic2FtZSBwb3J0IiwgW2NoYW5uZWwucG9ydDFdKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjaGFubmVs
LnBvcnQxLnBvc3RNZXNzYWdlKCJlbnRhbmdsZWQgcG9ydCIsIFtjaGFubmVsLnBvcnQyXSkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4K
LVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBv
cnQxLCBudWxsLCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJ
RF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1l
c3NhZ2UoInNhbWUgcG9ydCIsIFtjaGFubmVsLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNS4KK1BBU1MgY2hhbm5lbC5wb3J0MS5w
b3N0TWVzc2FnZSgiZW50YW5nbGVkIHBvcnQiLCBbY2hhbm5lbC5wb3J0Ml0pIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUuCitQQVNTIGNoYW5u
ZWwucG9ydDEucG9zdE1lc3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwg
Y2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBE
T00gRXhjZXB0aW9uIDI1LgogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBUG9y
dCIsIFtjaGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgi
bm90QW5BcnJheSIsIGNoYW5uZWwzLnBvcnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2Ui
LCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgot
UEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJsYXJnZVNlcXVlbmNlIiwgbGFyZ2VQb3J0
QXJyYXkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNl
cHRpb24gMTEuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImxhcmdlU2VxdWVuY2Ui
LCBsYXJnZVBvcnRBcnJheSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjog
RE9NIEV4Y2VwdGlvbiAyNS4KIFBBU1MgZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIG5vIHBvcnQg
c2VudAogUEFTUyBldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gZW1wdHkgYXJyYXkgc2VudAogUEFT
UyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgc2VudApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBv
cnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0
LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CmluZGV4IGZjYTFmZjguLmIxZjBmZmQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQt
bXVsdGktcG9ydC1leHBlY3RlZC50eHQKQEAgLTYsNyArNiw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFCiBQQVNTIGV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQKIFBBU1Mg
ZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKIFBBU1MgZXZlbnQucG9y
dHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQKLVBBU1MgcG9zdGluZyBh
IG51bGwgcG9ydCBkaWQgdGhyb3c6IEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxMQorUEFTUyBwb3N0aW5nIGEgbnVsbCBwb3J0IGRpZCB0aHJvdzogRXJyb3I6IERBVEFf
Q0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1CiBQQVNTIHBvc3RpbmcgYSBub24tcG9ydCBkaWQg
dGhyb3c6IFR5cGVFcnJvcjogVHlwZSBlcnJvcgogUEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0
d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBhZnRlciBlcnJvcgogUEFTUyBwb3N0aW5n
IGEgbm9uLWFycmF5IGRpZCB0aHJvdzogVHlwZUVycm9yOiBUeXBlIGVycm9yCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4
dAppbmRleCA4OGI0MDYyLi5mMDAwZjE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3IEBA
IFRoaXMgdGVzdCBjaGVja3MgdGhlIHZhcmlvdXMgdXNlIGNhc2VzIGFyb3VuZCBzZW5kaW5nIG11
bHRpcGxlIHBvcnRzIHRocm91Z2ggV29yCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAot
UEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVs
bCwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVf
RVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm51bGwgcG9y
dCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1LgogUEFTUyB3b3JrZXIu
cG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCB7fSwgY2hhbm5lbDMucG9y
dDJdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyB3b3JrZXIu
cG9zdE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBU2Vx
dWVuY2UiLCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVz
c2FnZS1hcmdzLWV4cGVjdGVkLnR4dAppbmRleCA1ZWNlODQxLi4wNWJiNzMxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4
cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLVRlc3QgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50
IG9mIHdpbmRvdy5wb3N0TWVzc2FnZSBpcyBpZ25vcmVkIG9yIHRyaWdnZXJzIGFuIGVycm9yIGlm
IGl0IGlzIG5vdCBhIG1lc3NhZ2UgcG9ydC4gWW91IHNob3VsZCBzZWUgUEFTUyBtZXNzYWdlICcx
JyB0aHJvdWdoICc3JywgZm9sbG93ZWQgYnkgJ2RvbmUnLCB3aXRoIG1lc3NhZ2VzIDQtNyByZWNl
aXZlZCBiZWxvdy4KK1Rlc3QgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHdpbmRvdy5wb3N0
TWVzc2FnZSBpcyBpZ25vcmVkIG9yIHRyaWdnZXJzIGFuIGVycm9yIGlmIGl0IGlzIG5vdCBhIG1l
c3NhZ2UgcG9ydC4KIAogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMScsIDEpOiB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2Jq
ZWN0CiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcyJywgKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdApAQCAtNywx
MiArNywyOCBAQCBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc0JywgW29iamVjdCBET01XaW5kb3dd
KSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNScs
IG51bGwpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2Ug
KCc2JywgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGlu
ZyBtZXNzYWdlICgnNycsIFtvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBvcnRd
KSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdl
ICgnOCcsIDEpOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlcmFibGVBcnJheSBh
cmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdAorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgn
OScsICk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyYWJsZUFycmF5IGFyZ3Vt
ZW50IG11c3QgYmUgYW4gb2JqZWN0CitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdBJywg
W29iamVjdCBPYmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJhYmxl
QXJyYXkgYXJndW1lbnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUKK1BBU1M6IHdlYmtpdFBvc3Rp
bmcgbWVzc2FnZSAoJ0InLCBbb2JqZWN0IERPTVdpbmRvd10pIGRpZCBub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdDJywgbnVsbCkgZGlkIG5vdCB0
aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0QnLCB1bmRl
ZmluZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1l
c3NhZ2UgKCdFJywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pOiB0
aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1CitQ
QVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdGJywgW29iamVjdCBNZXNzYWdlUG9ydF0pIGRp
ZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdHJywgW29i
amVjdCBNZXNzYWdlUG9ydF0pOiB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJS
OiBET00gRXhjZXB0aW9uIDI1CitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0
IE1lc3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4
Y2VwdGlvbgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnW29iamVjdCBNZXNzYWdlUG9ydF0nLCBb
b2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9F
UlI6IERPTSBFeGNlcHRpb24gMjUKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzIxNDc0ODM2NDgn
LCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdl
ICgnZG9uZScsICopIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBSZWNlaXZlZCBtZXNzYWdl
ICc0JwogUmVjZWl2ZWQgbWVzc2FnZSAnNScKIFJlY2VpdmVkIG1lc3NhZ2UgJzYnCiBSZWNlaXZl
ZCBtZXNzYWdlICc3JyB3aXRoIDIgcG9ydHMuCitSZWNlaXZlZCBtZXNzYWdlICdCJworUmVjZWl2
ZWQgbWVzc2FnZSAnQycKK1JlY2VpdmVkIG1lc3NhZ2UgJ0QnCitSZWNlaXZlZCBtZXNzYWdlICdG
JyB3aXRoIDEgcG9ydHMuCitSZWNlaXZlZCBtZXNzYWdlICdbb2JqZWN0IE1lc3NhZ2VQb3J0XScg
d2l0aCAxIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnMjE0NzQ4MzY0OCcKIFJlY2VpdmVkIG1l
c3NhZ2UgJ2RvbmUnCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKaW5kZXggNWVjZTg0MS4uMDViYjczMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3Nh
Z2UtYXJncy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1UZXN0IHRoYXQgdGhlIHNlY29u
ZCBhcmd1bWVudCBvZiB3aW5kb3cucG9zdE1lc3NhZ2UgaXMgaWdub3JlZCBvciB0cmlnZ2VycyBh
biBlcnJvciBpZiBpdCBpcyBub3QgYSBtZXNzYWdlIHBvcnQuIFlvdSBzaG91bGQgc2VlIFBBU1Mg
bWVzc2FnZSAnMScgdGhyb3VnaCAnNycsIGZvbGxvd2VkIGJ5ICdkb25lJywgd2l0aCBtZXNzYWdl
cyA0LTcgcmVjZWl2ZWQgYmVsb3cuCitUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3
aW5kb3cucG9zdE1lc3NhZ2UgaXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBp
cyBub3QgYSBtZXNzYWdlIHBvcnQuCiAKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzEnLCAxKTog
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0
IGJlIGFuIG9iamVjdAogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMicsICk6IHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmpl
Y3QKQEAgLTcsMTIgKzcsMjggQEAgUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNCcsIFtvYmplY3Qg
RE9NV2luZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVz
c2FnZSAoJzUnLCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGlu
ZyBtZXNzYWdlICgnNicsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBB
U1M6IFBvc3RpbmcgbWVzc2FnZSAoJzcnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1l
c3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3Rp
bmcgbWVzc2FnZSAoJzgnLCAxKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJh
YmxlQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKK1BBU1M6IHdlYmtpdFBvc3Rpbmcg
bWVzc2FnZSAoJzknLCApOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlcmFibGVB
cnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdAorUEFTUzogd2Via2l0UG9zdGluZyBtZXNz
YWdlICgnQScsIFtvYmplY3QgT2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRy
YW5zZmVyYWJsZUFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlCitQQVNTOiB3
ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdCJywgW29iamVjdCBET01XaW5kb3ddKSBkaWQgbm90IHRo
cm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnQycsIG51bGwp
IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2Ug
KCdEJywgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0
UG9zdGluZyBtZXNzYWdlICgnRScsIFtvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2Fn
ZVBvcnRdKTogdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2Vw
dGlvbiAyNQorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnRicsIFtvYmplY3QgTWVzc2Fn
ZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogUG9zdGluZyBtZXNzYWdl
ICgnRycsIFtvYmplY3QgTWVzc2FnZVBvcnRdKTogdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRB
X0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdl
ICgnW29iamVjdCBNZXNzYWdlUG9ydF0nLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0
aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2Fn
ZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0pOiB0aHJldyBleGNlcHRpb24gRXJyb3I6IERB
VEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1CiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcy
MTQ3NDgzNjQ4JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3Rp
bmcgbWVzc2FnZSAoJ2RvbmUnLCAqKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUmVjZWl2
ZWQgbWVzc2FnZSAnNCcKIFJlY2VpdmVkIG1lc3NhZ2UgJzUnCiBSZWNlaXZlZCBtZXNzYWdlICc2
JwogUmVjZWl2ZWQgbWVzc2FnZSAnNycgd2l0aCAyIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAn
QicKK1JlY2VpdmVkIG1lc3NhZ2UgJ0MnCitSZWNlaXZlZCBtZXNzYWdlICdEJworUmVjZWl2ZWQg
bWVzc2FnZSAnRicgd2l0aCAxIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBNZXNz
YWdlUG9ydF0nIHdpdGggMSBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnCiBS
ZWNlaXZlZCBtZXNzYWdlICdkb25lJwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS13aW4vZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CmluZGV4IDk4MWViOTIuLjFjNDE3N2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLXdpbi9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CkBAIC0z
LDkgKzMsOSBAQCBUaGlzIHRlc3QgY2hlY2tzIHRoZSB2YXJpb3VzIHVzZSBjYXNlcyBhcm91bmQg
c2VuZGluZyBtdWx0aXBsZSBwb3J0cyB0aHJvdWdoIE1lcwogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgogCiAKLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgic2FtZSBwb3J0IiwgW2No
YW5uZWwucG9ydDFdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBE
T00gRXhjZXB0aW9uIDExLgotUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJlbnRhbmds
ZWQgcG9ydCIsIFtjaGFubmVsLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElE
X1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVz
c2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFubmVsMy5wb3J0Ml0p
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24g
MTEuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoInNhbWUgcG9ydCIsIFtjaGFubmVs
LnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2Vw
dGlvbiAyNS4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZW50YW5nbGVkIHBvcnQi
LCBbY2hhbm5lbC5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6
IERPTSBFeGNlcHRpb24gMjUuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm51bGwg
cG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1LgogUEFTUyBjaGFu
bmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtjaGFubmVsMy5wb3J0MSwge30sIGNo
YW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJh
eSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBNZXNzYWdlUG9ydHMuCiBQQVNTIGNoYW5uZWwu
cG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVuZ3Ro
IGF0dHJpYnV0ZS4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVNlcXVlbmNl
IiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVzc2FnZVBvcnRB
cnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBNZXNzYWdlUG9ydHMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC93b3JrZXJzL3dvcmtlci1j
b250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0td2luL2Zhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVk
LnR4dAppbmRleCBlNjYyNzBmLi42MDVhOWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0
L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQKQEAgLTYsNyAr
Niw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiBQQVNTIGV2ZW50LnBvcnRzIGlzIG51bGwg
d2hlbiBubyBwb3J0IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFy
cmF5IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBv
cnRzIHNlbnQKLVBBU1MgcG9zdGluZyBhIG51bGwgcG9ydCBkaWQgdGhyb3c6IEVycm9yOiBJTlZB
TElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMQorUEFTUyBwb3N0aW5nIGEgbnVsbCBwb3J0
IGRpZCB0aHJvdzogRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1CiBQQVNT
IHBvc3RpbmcgYSBub24tcG9ydCBkaWQgdGhyb3c6IFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJh
eSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBNZXNzYWdlUG9ydHMKIFBBU1MgZXZlbnQucG9y
dHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHJlLXNlbnQgYWZ0ZXIgZXJyb3IK
IFBBU1MgcG9zdGluZyBhIG5vbi1hcnJheSBkaWQgdGhyb3c6IFR5cGVFcnJvcjogTWVzc2FnZVBv
cnRBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGkt
cG9ydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFz
dC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAppbmRleCBmMTFjNzRjLi5k
OWJiMDljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFz
dC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4
cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGhpcyB0ZXN0IGNoZWNrcyB0aGUgdmFyaW91cyB1
c2UgY2FzZXMgYXJvdW5kIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMgdGhyb3VnaCBXb3IKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibnVsbCBw
b3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIHdv
cmtlci5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFu
bmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBF
eGNlcHRpb24gMjUuCiBQQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hhbm5l
bDMucG9ydDEsIHt9LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWluIG9ubHkgTWVzc2FnZVBvcnRz
LgogUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBoYXMg
bm8gbGVuZ3RoIGF0dHJpYnV0ZS4KIFBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVu
Y2UiLCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9y
dEFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IE1lc3NhZ2VQb3J0cy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhl
cml0YW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IDU1NjM3MTMuLmVj
Y2RkN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9t
L3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4
dApAQCAtODI5LDYgKzgyOSw4IEBAIFBBU1MgaW5uZXIud2Via2l0SURCVHJhbnNhY3Rpb24uaXNJ
bm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndlYmtpdElEQlRyYW5zYWN0aW9uLmNvbnN0cnVjdG9y
LmlzSW5uZXIgaXMgdHJ1ZQogRkFJTCBpbm5lci53ZWJraXRJbmRleGVkREIuaXNJbm5lciBzaG91
bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgogRkFJTCBpbm5lci53ZWJraXRJbmRleGVkREIuY29uc3Ry
dWN0b3IuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJTCBpbm5lci53ZWJr
aXRQb3N0TWVzc2FnZS5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlu
bmVyLndlYmtpdFBvc3RNZXNzYWdlLmNvbnN0cnVjdG9yLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUu
IFdhcyBmYWxzZS4KIFBBU1MgaW5uZXIud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lLmlzSW5u
ZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUuY29uc3Ry
dWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
LmlzSW5uZXIgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3NWU0NWM4Li4wYjgxZmMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTg5LDYgKzU4OSw4IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKICAgICBkb20vVG91Y2guY3BwCiAgICAgZG9tL1RvdWNoRXZlbnQuY3BwCiAgICAgZG9t
L1RvdWNoTGlzdC5jcHAKKyAgICBkb20vVHJhbnNmZXJhYmxlLmNwcAorICAgIGRvbS9UcmFuc2Zl
cmFibGVSZWNlaXB0LmNwcAogICAgIGRvbS9UcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcAogICAg
IGRvbS9UcmF2ZXJzYWwuY3BwCiAgICAgZG9tL1RyZWVTY29wZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3
YjI5NzVlLi5iMTA5MDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAzIEBACisyMDExLTA4LTA4
ICBMdWtlIFphcmtvICA8bHVrZXphcmtvQGdtYWlsLmNvbT4KKworICAgICAgICBNYWtlIE1lc3Nh
Z2VQb3J0IFRyYW5zZmVyYWJsZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjUyMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgU3RydWN0dXJlZCBDbG9uZSBhbGdvcml0aG0gZGVzY3JpYmVzIGFu
IGludGVyZmFjZSBmb3IgVHJhbnNmZXJhYmxlIG9iamVjdHMKKyAgICAgICAgKGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvY29tcGxldGUvY29tbW9uLWRv
bS1pbnRlcmZhY2VzLmh0bWwjdHJhbnNmZXJhYmxlLW9iamVjdHMpLgorICAgICAgICBDdXJyZW50
bHkgdGhlIG9ubHkgb2ZmaWNpYWwgVHJhbnNmZXJhYmxlIG9iamVjdCBpcyB0aGUgTWVzc2FnZVBv
cnQsIGJ1dAorICAgICAgICBBcnJheUJ1ZmZlcnMgYXJlIGV4cGVjdGVkIHRvIGJlIHNhbmN0aW9u
ZWQgYXMgc3VjaCBzb29uLgorCisgICAgICAgIC0gQ3JlYXRlIG5ldyBjbGFzc2VzIFRyYW5zZmVy
YWJsZSBhbmQgVHJhbnNmZXJhYmxlUmVjZWlwdC4KKyAgICAgICAgICAgIC0gQ29udHJvbCBvZiBh
IFRyYW5zZmVyYWJsZSBvYmplY3QgY2FuIGJlIHRyYW5zZmVycmVkIG91dCwgeWllbGRpbmcgYQor
ICAgICAgICAgICAgICBUcmFuc2ZlcmFibGVSZWNlaXB0LgorICAgICAgICAgICAgLSBBIFRyYW5z
ZmVyYWJsZVJlY2VpcHQgY2FuIHRoZW4gYmUgdHJhbnNmZXJyZWQgaW4sIHlpZWxkaW5nIGEgVHJh
bnNmZXJhYmxlLgorICAgICAgICAgICAgLSBNZXNzYWdlUG9ydCBpcyByZXBhcmVudGVkIHRvIFRy
YW5zZmVyYWJsZSBhbmQgTWVzc2FnZVBvcnRDaGFubmVsIGlzCisgICAgICAgICAgICAgIHJlcGFy
ZW50ZWQgdG8gVHJhbnNmZXJhYmxlUmVjZWlwdC4KKyAgICAgICAgLSBJbnN0ZWFkIG9mIHBhc3Np
bmcgYXJvdW5kIGEgU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpdGggYQorICAgICAgICAgIE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5IChmb3IsIGVnLCB3ZWJraXRQb3N0TWVzc2FnZSksIGluc3RlYWQg
YQorICAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpcyBwYWlyZWQgd2l0aCBhIFRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheS4KKyAgICAgICAgICAgIC0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
IHdpbGwgdXNlIG9iamVjdCByZWZlcmVuY2VzIGluc3RlYWQgb2YgY2xvbmVzIGZvcgorICAgICAg
ICAgICAgICBvYmplY3RzIGluIHRoZSB0cmFuc2ZlciBsaXN0LgorICAgICAgICAgICAgLSBUaGUg
VjggU2VyaWFsaXplZFNjcmlwdFZhbHVlIHNvbWV0aW1lcyBuZWVkcyB0byBiZSBzZW50IGFjcm9z
cyBhbiBJUEMKKyAgICAgICAgICAgICAgYm91bmRhcnkuIEluIHRoaXMgY2FzZSBzb21lIFRyYW5z
ZmVyYWJsZVJlY2VpcHRzIHdpdGhvdXQgc3BlY2lhbCBjbG9uaW5nCisgICAgICAgICAgICAgIHNl
bWFudGljcyAoZWcsIG5vbi1NZXNzYWdlUG9ydHMsIHdoaWNoIHNlbmQgYWNyb3NzIHJvdXRpbmcg
aW5mb3JtYXRpb24pCisgICAgICAgICAgICAgIHdpbGwgbmVlZCB0byBiZSBmbGF0dGVuZWQuIFRo
aXMgcGF0Y2ggZXhwb3NlcyBhbiBpbnRlcmZhY2UgZm9yIHN1Y2ggYW4KKyAgICAgICAgICAgICAg
b3BlcmF0aW9uLgorICAgICAgICAtIE1vZGlmeSBJREwgZ2VuZXJhdG9ycyBmb3IgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIHRvIHJlcXVpcmUgYW5kIHBhc3MgdHJhbnNmZXIKKyAgICAgICAgICBsaXN0
cyB0byB0aGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGNvbnN0cnVjdG9yLgorICAgICAgICAtIFRo
ZSBvbGQgcG9zdE1lc3NhZ2UgaXMgcHJlc2VydmVkIHdpdGggdGhhdCBuYW1lOyB3ZWJraXRQb3N0
TWVzc2FnZSBoYW5kbGVzCisgICAgICAgICAgVHJhbnNmZXJhYmxlcyBvdGhlciB0aGFuIE1lc3Nh
Z2VQb3J0cyBhbmQgYWxsb3dzIHRoZXNlIFRyYW5zZmVyYWJsZXMgdG8KKyAgICAgICAgICBhcHBl
YXIgaW4gdGhlIG1lc3NhZ2UgYmVpbmcgcG9zdGVkLiAoRGl0dG8gZm9yIGluaXRNZXNzYWdlRXZl
bnQuKQorICAgICAgICAtIFRocm93IERBVEFfQ0xPTkVfRVJSIGluc3RlYWQgb2YgSU5WQUxJRF9T
VEFURV9FUlIgd2hlcmUgdGhlIHN0YW5kYXJkIGRlbWFuZHMgaXQuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnBvc3RNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp3ZWJraXRQb3N0TWVzc2FnZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojp3ZWJraXRQ
b3N0TWVzc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OnBvcnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OmluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdl
RXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZl
bnQ6OndlYmtpdEluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6cG9z
dE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6d2Via2l0UG9zdE1l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFRyYW5zZmVyYWJsZUFycmF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvTmF0aXZlVHJhbnNmZXJhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OnRv
SlNUcmFuc2ZlcmFibGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0
b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtl
cjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXI6OndlYmtpdFBvc3RN
ZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFs
dWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpDbG9uZVNlcmlhbGl6ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjppbml0aWFsaXplV2l0aFRyYW5zZmVyTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnN0YXJ0T2JqZWN0SW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpDbG9uZURlc2VyaWFsaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6b3BlblRyYW5zZmVyYWJsZUFycmF5KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAg
ICAgIChHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlNl
cmlhbGl6ZXI6OlNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6U2Vy
aWFsaXplcjo6aW5pdGlhbGl6ZU9iamVjdFBvb2wpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmpl
Y3RNYXA6OkRlc2VyaWFsaXplcjo6RGVzZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
T2JqZWN0TWFwOjpEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4T2JqZWN0TWFwOjpEZXNlcmlhbGl6ZXI6OmluaXRpYWxpemVPYmplY3RQb29sKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmZsYXR0
ZW5SZWNlaXB0TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdpbmRvdzo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOERlZGljYXRlZFdvcmtlckNvbnRleHQ6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6cG9ydHNBY2Nlc3NvckdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjppbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VFdmVudENh
bGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhNZXNzYWdlUG9ydDo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRUcmFuc2ZlcmFibGVBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0
b05hdGl2ZVRyYW5zZmVyYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4VHJhbnNmZXJhYmxl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V29y
a2VyOjpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V29ya2VyOjp3
ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3Bw
OgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50
Ojppbml0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6bWVz
c2FnZVBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojp0cmFuc2ZlcmFibGUp
OgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3Nh
Z2VFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6ZGF0YURl
cGVuZGVuY2llcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OnRyYW5zZmVyYWJs
ZXMpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9NZXNz
YWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6TWVzc2FnZVBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojp0cmFuc2Zlck91dCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6YXNNZXNzYWdlUG9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aXNUcmFuc2ZlckNsb3NlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydDo6aXNFbnRhbmdsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OmlzQ2xvbmVkKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuaWRsOgorICAg
ICAgICAqIGRvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6RXZlbnREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJhbnNmZXJJbik6CisgICAgICAgICogZG9tL01lc3Nh
Z2VQb3J0Q2hhbm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjph
c01lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWw6OmlzRmxhdHRlbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVs
OjpFdmVudERhdGE6OnJlY2VpcHRzKToKKyAgICAgICAgKiBkb20vUG9wU3RhdGVFdmVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UG9wU3RhdGVFdmVudDo6c3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wU3RhdGVFdmVudDo6ZGF0YURlcGVuZGVuY2llcyk6CisgICAgICAgICogZG9tL1RyYW5z
ZmVyYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmZXJhYmxlOjp0cmFu
c2ZlckFsbE91dCk6CisgICAgICAgICogZG9tL1RyYW5zZmVyYWJsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZTo6YXNNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFuc2ZlcmFibGU6On5UcmFuc2ZlcmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJh
bnNmZXJhYmxlOjpUcmFuc2ZlcmFibGUpOgorICAgICAgICAqIGRvbS9UcmFuc2ZlcmFibGVSZWNl
aXB0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsLgor
ICAgICAgICAoV2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJbik6Cisg
ICAgICAgICogZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0Ojp+VHJhbnNmZXJhYmxlUmVjZWlwdCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0Ojphc01lc3NhZ2VQb3J0Q2hhbm5lbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0OjpUcmFuc2ZlcmFibGVSZWNlaXB0
KToKKyAgICAgICAgKiBwMnAvUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGVlckNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2FnZVRpbWVyOjpQb3N0TWVz
c2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdlVGltZXI6OmV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHBh
Z2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAq
IHN0b3JhZ2UvSURCQ3Vyc29yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnZhbHVl
RGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3Nh
Z2UpOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oOgorICAgICAg
ICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vy
cy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbm5l
Y3RFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyOjpwb3N0TWVzc2FnZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlci5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250
ZXh0UHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6TWVzc2FnZVdvcmtlckNv
bnRleHRUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6
cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlclRhc2s6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyVGFzazo6TWVzc2FnZVdvcmtlclRh
c2spOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlclRhc2s6OnBlcmZvcm1UYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29y
a2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0
TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaDoKKwogMjAx
MS0wOC0wNSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkOiBjaGFuZ2UgYW4gaW5zdGFuY2Ugb2YgaXNJbXBvcnRSdWxlKCkg
dGhhdCB3YXMgb3Zlcmxvb2tlZCBpbiBjb21taXQgOTI0NDguCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCA1NjM4YmJjLi40ODllMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTEzMDQsNiArMTMwNCwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L1RleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9kb20vVHJhbnNmZXJhYmxlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVy
YWJsZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9UcmFuc2Zvcm1Tb3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9y
bVNvdXJjZUxpYnhzbHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhdmVyc2FsLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGI0MTI5OTguLjRjNjc0YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC01NjYsNyArNTY2LDcgQEAgX19aTjdXZWJDb3JlMjFQbGF0Zm9ybUtleWJvYXJk
RXZlbnRDMUVQN05TRXZlbnQKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjBz
ZXJ2ZVBlbmRpbmdSZXF1ZXN0c0VOU18yMFJlc291cmNlTG9hZFByaW9yaXR5RQogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyNHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZEVQTlNf
NUZyYW1lRVBOU18zMk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50RVJLTlNfMTVSZXNv
dXJjZVJlcXVlc3RFCiBfX1pON1dlYkNvcmUyMVNWR0RvY3VtZW50RXh0ZW5zaW9uczIxc2FtcGxl
QW5pbWF0aW9uQXRUaW1lRVJLTjNXVEY2U3RyaW5nRVBOU18xNFNWR1NNSUxFbGVtZW50RWQKLV9f
Wk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVl
SlNDb250ZXh0UFBLMTNPcGFxdWVKU1ZhbHVlCitfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTExZGVzZXJpYWxpemVFUEsxNU9wYXF1ZUpTQ29udGV4dFBQSzEzT3BhcXVlSlNWYWx1
ZVBOM1dURjZWZWN0b3JJTjNKU0M3SlNWYWx1ZUVMbTFFRUUKIF9fWk43V2ViQ29yZTIxU2VyaWFs
aXplZFNjcmlwdFZhbHVlNmNyZWF0ZUVQSzE1T3BhcXVlSlNDb250ZXh0UEsxM09wYXF1ZUpTVmFs
dWVQUzZfCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUMxRVJOM1dURjZWZWN0
b3JJaExtMEVFRQogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWVEMUV2CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggNWQ1Yjc5YS4uMGM0YWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTAx
Nyw2ICsxMDE3LDggQEAKICAgICAgICAgICAgICdkb20vU3R5bGVkRWxlbWVudC5oJywKICAgICAg
ICAgICAgICdkb20vVGV4dC5oJywKICAgICAgICAgICAgICdkb20vVGV4dEV2ZW50SW5wdXRUeXBl
LmgnLAorICAgICAgICAgICAgJ2RvbS9UcmFuc2ZlcmFibGUuaCcsCisgICAgICAgICAgICAnZG9t
L1RyYW5zZmVyYWJsZVJlY2VpcHQuaCcsCiAgICAgICAgICAgICAnZG9tL1VJRXZlbnQuaCcsCiAg
ICAgICAgICAgICAnZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaCcsCiAgICAgICAgICAgICAnZG9t
L1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgnLApAQCAtNTQwNyw2ICs1NDA5LDEwIEBACiAgICAgICAg
ICAgICAnZG9tL1RvdWNoRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL1RvdWNoTGlzdC5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9Ub3VjaExpc3QuaCcsCisgICAgICAgICAgICAnZG9tL1RyYW5z
ZmVyYWJsZS5jcHAnLAorICAgICAgICAgICAgJ2RvbS9UcmFuc2ZlcmFibGUuaCcsCisgICAgICAg
ICAgICAnZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuY3BwJywKKyAgICAgICAgICAgICdkb20vVHJh
bnNmZXJhYmxlUmVjZWlwdC5oJywKICAgICAgICAgICAgICdkb20vVHJhbnNmb3JtU291cmNlLmgn
LAogICAgICAgICAgICAgJ2RvbS9UcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCcsCiAgICAgICAg
ICAgICAnZG9tL1RyYW5zZm9ybVNvdXJjZVF0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDcwMDhj
MjEuLjhjZTYzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC01NTMsNiArNTUzLDggQEAgU09VUkNFUyAr
PSBcCiAgICAgZG9tL1RvdWNoLmNwcCBcCiAgICAgZG9tL1RvdWNoRXZlbnQuY3BwIFwKICAgICBk
b20vVG91Y2hMaXN0LmNwcCBcCisgICAgZG9tL1RyYW5zZmVyYWJsZS5jcHAgXAorICAgIGRvbS9U
cmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBcCiAgICAgZG9tL1RyYXZlcnNhbC5jcHAgXAogICAgIGRv
bS9UcmVlU2NvcGUuY3BwIFwKICAgICBkb20vVHJlZVdhbGtlci5jcHAgXApAQCAtMTU0NSw2ICsx
NTQ3LDggQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL1RvdWNoLmggXAogICAgIGRvbS9Ub3VjaEV2
ZW50LmggXAogICAgIGRvbS9Ub3VjaExpc3QuaCBcCisgICAgZG9tL1RyYW5zZmVyYWJsZS5oIFwK
KyAgICBkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oIFwKICAgICBkb20vVHJhbnNmb3JtU291cmNl
LmggXAogICAgIGRvbS9UcmF2ZXJzYWwuaCBcCiAgICAgZG9tL1RyZWVEZXB0aExpbWl0LmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGE1ODMwNjQuLjZmZjc1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4MjQsMTIgKzQ4MjQsMTYgQEAKIAkJQjczNEIx
ODExMTlCOTkxMTAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3MzRCMTgwMTE5Qjk5MTEwMDY1ODdCRCAv
KiBGb250VHJhbnNjb2Rlci5jcHAgKi87IH07CiAJCUI3MzRCMTgzMTE5Qjk5MUQwMDY1ODdCRCAv
KiBGb250VHJhbnNjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggKi87
IH07CiAJCUI3NzZENDNEMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjc3NkQ0M0MxMTA0NTI3
NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgKi87IH07CisJCUI4NjE4NzJDMTNEOEVDNDkw
MDhCODc0RiAvKiBUcmFuc2ZlcmFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjg2MTg3MkExM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJs
ZS5jcHAgKi87IH07CisJCUI4NjE4NzJEMTNEOEVDNDkwMDhCODc0RiAvKiBUcmFuc2ZlcmFibGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4NjE4NzJC
MTNEOEVDNDkwMDhCODc0RiAvKiBUcmFuc2ZlcmFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCODg1RThENDExRTA2REQyMDA5RkZCRjQgLyog
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4ODVFOEQyMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwICovOyB9OwogCQlCODg1RThENTExRTA2REQy
MDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCODg1RThEMzExRTA2REQyMDA5RkZC
RjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQjhEQkRCNEIxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNl
bGVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjhEQkRCNDcxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQu
Y3BwICovOyB9OwogCQlCOERCREI0QzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29t
bWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhE
QkRCNDgxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCAqLzsgfTsKIAkJ
QjhEQkRCNEQxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNDkx
MzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwICovOyB9Owog
CQlCOERCREI0RTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNEEx
MzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaCAqLzsgfTsKKwkJ
QjhFMEU4RkYxM0VDN0U1NTAwQzEzNzIwIC8qIFRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhFMEU4RkMxM0VDN0Uw
QzAwQzEzNzIwIC8qIFRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwICovOyB9OworCQlCOEUwRThGRTEz
RUM3RTREMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhFMEU4RkQxM0VDN0UwQzAwQzEzNzIwIC8q
IFRyYW5zZmVyYWJsZVJlY2VpcHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCQUNGMjkwMTEzQjJBMEQ1MDA3ODFGOTAgLyogTGF5b3V0VHlwZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJBQ0YyOTAw
MTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMDBGMDA0MEUwQTE4NTUwMEZEMDRFMyAvKiBE
T01GaWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovOyB9OwogCQlCQzAwRjAwNTBF
MEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1t
ICovOyB9OwpAQCAtMTE1MDMsMTIgKzExNTA3LDE2IEBACiAJCUI3MzRCMTgyMTE5Qjk5MUQwMDY1
ODdCRCAvKiBGb250VHJhbnNjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBGb250VHJhbnNjb2Rlci5oOyBwYXRoID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyog
UHJpbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50Q29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNzc2RDQzQzExMDQ1Mjc1MDBC
RUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFByaW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4
NjE4NzJBMTNEOEVDNDkwMDhCODc0RiAvKiBUcmFuc2ZlcmFibGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNmZXJhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjg2MTg3MkIxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2ZlcmFibGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCODg1RThEMzExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCOERCREI0NzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRTZWxlY3Rpb25Db21t
YW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjhEQkRCNDgxMzBCMEY4QTAw
RjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2V0U2VsZWN0aW9uQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCOERCREI0OTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjhEQkRCNEEx
MzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCOEUwRThGQzEzRUM3RTBDMDBDMTM3MjAgLyogVHJh
bnNmZXJhYmxlUmVjZWlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QjhFMEU4RkQxM0VDN0UwQzAwQzEzNzIwIC8qIFRyYW5zZmVyYWJsZVJlY2VpcHQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNmZXJhYmxlUmVjZWlwdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQUNGMjkwMDEzQjJBMEQ1MDA3ODFGOTAgLyogTGF5b3V0
VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0VHlwZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8q
IERPTUZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRmlsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRjBFMEExODU1MDBGRDA0RTMgLyog
RE9NRmlsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUZp
bGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDAwNyw2ICsyMDAxNSwxMCBA
QAogCQkJCTkzM0ExNDJEMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuaCAqLywKIAkJCQk5
MzNBMTQyQzBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmlkbCAqLywKIAkJCQlBNzdCNDE5
RjEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggKi8sCisJCQkJQjg2MTg3
MkIxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5oICovLAorCQkJCUI4NjE4NzJBMTNE
OEVDNDkwMDhCODc0RiAvKiBUcmFuc2ZlcmFibGUuY3BwICovLAorCQkJCUI4RTBFOEZEMTNFQzdF
MEMwMEMxMzcyMCAvKiBUcmFuc2ZlcmFibGVSZWNlaXB0LmggKi8sCisJCQkJQjhFMEU4RkMxM0VD
N0UwQzAwQzEzNzIwIC8qIFRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwICovLAogCQkJCTVEQjFCQzY4
MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCAqLywKIAkJCQk1REIxQkM2OTEw
NzE1QTY0MDBFRkFBNDkgLyogVHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHAgKi8sCiAJCQkJODU0
RkU3MkMwQTIyOTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5jcHAgKi8sCkBAIC0yMzE3Niw2ICsy
MzE4OCw4IEBACiAJCQkJOTMwNUIyNEQwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDQ2MTNCMDBDRDYzMzEwMDBGQURBNzUgLyogVGltZVJhbmdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUUwRUZBQzkwNjAwOUQwQ0FGIC8qIFRpbWluZ0Z1bmN0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlCODYxODcyRDEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJh
bnNmZXJhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCOEUwRThGRTEzRUM3RTREMDBDMTM3MjAg
LyogVHJhbnNmZXJhYmxlUmVjZWlwdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzQwRUY4
NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUU5MTFDRTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUU5MTFEMDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjAwNiw2ICsyNjAyMCw4IEBACiAJCQkJNzU1M0NG
RTkxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5MzMwOUVBNDA5OUVCNzhDMDA1NkU1ODEgLyogVGltZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTQ0NjEzQUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQjg2MTg3MkMxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJs
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCOEUwRThGRjEzRUM3RTU1MDBDMTM3MjAgLyogVHJh
bnNmZXJhYmxlUmVjZWlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFDMzBFRjg2RDQ3
MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDk0QkM0MEQxMkFFREQ5RTAwNzQzQkQyIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NTgwQjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0
aW9uTWF0cml4Q0cuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNzQ0ODE3Ni4uZWNkODQ1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApA
QCAtNjk0LDE2ICs2OTQsMTYgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9n
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gaGFuZGxlci5yZXR1cm5WYWx1ZSgpOwogfQog
Ci1KU1ZhbHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgSlNWYWx1ZSBwb3N0TWVzc2FnZShFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NV2luZG93KiB3aW5k
b3csIE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUpCiB7Ci0gICAgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0KKyAgICBUcmFuc2ZlcmFibGVB
cnJheSB0cmFuc2ZlcmFibGVzOworICAgIEpTVmFsdWVBcnJheSB2YWx1ZUFycmF5OworICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPiAyKQorICAgICAgICBmaWxsVHJhbnNmZXJhYmxlQXJy
YXkoZXhlYywgZXhlYy0+YXJndW1lbnQoMSksIHRyYW5zZmVyYWJsZXMsIHZhbHVlQXJyYXksIG1l
c3NhZ2VQYXNzaW5nTW9kZSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIE1lc3NhZ2VQb3J0QXJyYXkgbWVzc2FnZVBv
cnRzOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAyKQotICAgICAgICBmaWxsTWVz
c2FnZVBvcnRBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgbWVzc2FnZVBvcnRzKTsKKyAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksICZ2YWx1ZUFycmF5LCBtZXNz
YWdlUGFzc2luZ01vZGUsIFRocm93aW5nKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC03MTIsMTIgKzcxMiwyMiBAQCBK
U1ZhbHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
aW1wbCgpLT5wb3N0TWVzc2FnZShtZXNzYWdlLCAmbWVzc2FnZVBvcnRzLCB0YXJnZXRPcmlnaW4s
IGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZWMpOworICAgIHdpbmRvdy0+aW1wbCgpLT5wb3N0TWVz
c2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnRyYW5zZmVyYWJsZXMsIHRhcmdldE9yaWdpbiwgYWN0
aXZlRE9NV2luZG93KGV4ZWMpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
IAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCitKU1ZhbHVlIEpTRE9NV2luZG93Ojpw
b3N0TWVzc2FnZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBvc3RN
ZXNzYWdlKGV4ZWMsIHRoaXMsIE9ubHlNZXNzYWdlUG9ydHMpOworfQorCitKU1ZhbHVlIEpTRE9N
V2luZG93Ojp3ZWJraXRQb3N0TWVzc2FnZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJu
IFdlYkNvcmU6OnBvc3RNZXNzYWdlKGV4ZWMsIHRoaXMsIFBlcm1pdFRyYW5zZmVyYWJsZXMpOwor
fQorCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRUaW1lb3V0KEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGltcGwo
KS0+ZG9jdW1lbnQoKSA/IGltcGwoKS0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMjIyMjM1My4uM2M0NTQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGlj
YXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC00NCw3ICs0NCwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIEpTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RN
ZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVz
c2FnZShleGVjLCBpbXBsKCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShleGVjLCBp
bXBsKCksIE9ubHlNZXNzYWdlUG9ydHMpOworfQorCitKU0M6OkpTVmFsdWUgSlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0Ojp3ZWJraXRQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgpLCBQZXJtaXRUcmFuc2Zl
cmFibGVzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDQzOTY2NGEu
LjMwYjMwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VFdmVudEN1c3RvbS5jcHAKQEAgLTQ0LDM4ICs0NCw1MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OnBvcnRzKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
IHsKLSAgICBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cyA9IHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVu
dCo+KGltcGwoKSktPnBvcnRzKCk7Ci0gICAgaWYgKCFwb3J0cyB8fCBwb3J0cy0+aXNFbXB0eSgp
KQorICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPihp
bXBsKCkpOworICAgIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzID0gZXZlbnQtPnRy
YW5zZmVyYWJsZXMoKTsKKyAgICBpZiAoIXRyYW5zZmVyYWJsZXMgfHwgdHJhbnNmZXJhYmxlcy0+
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0KICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBsaXN0OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9ydHMtPnNpemUoKTsg
aSsrKQotICAgICAgICBsaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCAoKnBv
cnRzKVtpXS5nZXQoKSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJhYmxl
cy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9
ICgqdHJhbnNmZXJhYmxlcylbaV0uZ2V0KCktPmFzTWVzc2FnZVBvcnQoKSkKKyAgICAgICAgICAg
IGxpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIG1lc3NhZ2VQb3J0KSk7Cisg
ICAgfQogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QoKSwgbGlz
dCk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChK
U0M6OkV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBKU0M6OkpTVmFsdWUgaW5pdE1lc3NhZ2VFdmVu
dChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNNZXNzYWdlRXZlbnQqIGpzRXZlbnQsIE1lc3NhZ2VQ
YXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUpCiB7CiAgICAgY29uc3QgVVN0cmluZyYgdHlw
ZUFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpOwogICAgIGJvb2wgY2FuQnVi
YmxlQXJnID0gZXhlYy0+YXJndW1lbnQoMSkudG9Cb29sZWFuKGV4ZWMpOwogICAgIGJvb2wgY2Fu
Y2VsYWJsZUFyZyA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKTsKLSAgICBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDMpKTsKKyAgICBPd25QdHI8VHJhbnNm
ZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXM7CisgICAgT3duUHRyPEpTVmFsdWVBcnJheT4gdmFs
dWVBcnJheTsKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDcpLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKKyAgICAgICAgdHJhbnNmZXJhYmxlcyA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVBcnJh
eSk7CisgICAgICAgIHZhbHVlQXJyYXkgPSBhZG9wdFB0cihuZXcgSlNWYWx1ZUFycmF5KTsKKyAg
ICAgICAgZmlsbFRyYW5zZmVyYWJsZUFycmF5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDcpLCAqdHJh
bnNmZXJhYmxlcywgKnZhbHVlQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSk7CisgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIH0KKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhQXJnID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMyksIHZhbHVl
QXJyYXkuZ2V0KCksIG1lc3NhZ2VQYXNzaW5nTW9kZSwgVGhyb3dpbmcpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgY29u
c3QgVVN0cmluZyYgb3JpZ2luQXJnID0gZXhlYy0+YXJndW1lbnQoNCkudG9TdHJpbmcoZXhlYyk7
CiAgICAgY29uc3QgVVN0cmluZyYgbGFzdEV2ZW50SWRBcmcgPSBleGVjLT5hcmd1bWVudCg1KS50
b1N0cmluZyhleGVjKTsKICAgICBET01XaW5kb3cqIHNvdXJjZUFyZyA9IHRvRE9NV2luZG93KGV4
ZWMtPmFyZ3VtZW50KDYpKTsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBv
cnRzOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoNykuaXNVbmRlZmluZWRPck51bGwoKSkgewot
ICAgICAgICBtZXNzYWdlUG9ydHMgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJheSk7Ci0g
ICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDcpLCAqbWVz
c2FnZVBvcnRzKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQogCi0gICAgTWVzc2FnZUV2ZW50KiBldmVu
dCA9IHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVudCo+KHRoaXMtPmltcGwoKSk7Ci0gICAgZXZlbnQt
PmluaXRNZXNzYWdlRXZlbnQodXN0cmluZ1RvQXRvbWljU3RyaW5nKHR5cGVBcmcpLCBjYW5CdWJi
bGVBcmcsIGNhbmNlbGFibGVBcmcsIGRhdGFBcmcsIHVzdHJpbmdUb1N0cmluZyhvcmlnaW5Bcmcp
LCB1c3RyaW5nVG9TdHJpbmcobGFzdEV2ZW50SWRBcmcpLCBzb3VyY2VBcmcsIG1lc3NhZ2VQb3J0
cy5yZWxlYXNlKCkpOworICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBzdGF0aWNfY2FzdDxNZXNz
YWdlRXZlbnQqPihqc0V2ZW50LT5pbXBsKCkpOworICAgIGV2ZW50LT5pbml0TWVzc2FnZUV2ZW50
KHVzdHJpbmdUb0F0b21pY1N0cmluZyh0eXBlQXJnKSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxl
QXJnLCBkYXRhQXJnLnJlbGVhc2UoKSwgdXN0cmluZ1RvU3RyaW5nKG9yaWdpbkFyZyksIHVzdHJp
bmdUb1N0cmluZyhsYXN0RXZlbnRJZEFyZyksIHNvdXJjZUFyZywgdHJhbnNmZXJhYmxlcy5yZWxl
YXNlKCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCitKU0M6OkpTVmFsdWUgSlNN
ZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OmluaXRNZXNzYWdlRXZlbnQoZXhlYywgdGhpcywgT25seU1lc3Nh
Z2VQb3J0cyk7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1l
c3NhZ2VFdmVudChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6
aW5pdE1lc3NhZ2VFdmVudChleGVjLCB0aGlzLCBQZXJtaXRUcmFuc2ZlcmFibGVzKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAppbmRleCBhYzA2YzZhLi5lNDA0MTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTU3LDE1ICs1OCwyMSBA
QCB2b2lkIEpTTWVzc2FnZVBvcnQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAKIEpTQzo6SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0
ZSogZXhlYykKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgpKTsK
KyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgpLCBPbmx5TWVzc2FnZVBv
cnRzKTsKIH0KIAotdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0QXJyYXkpCitKU0M6
OkpTVmFsdWUgSlNNZXNzYWdlUG9ydDo6d2Via2l0UG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgLy8gQ29udmVydCBmcm9tIHRoZSBwYXNzZWQtaW4gSlMgYXJyYXktbGlr
ZSBvYmplY3QgdG8gYSBNZXNzYWdlUG9ydEFycmF5LgorICAgIHJldHVybiBoYW5kbGVQb3N0TWVz
c2FnZShleGVjLCBpbXBsKCksIFBlcm1pdFRyYW5zZmVyYWJsZXMpOworfQorCit2b2lkIGZpbGxU
cmFuc2ZlcmFibGVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBUcmFuc2ZlcmFibGVBcnJheSYgdHJhbnNmZXJhYmxlQXJyYXksIEpTVmFsdWVBcnJheSYgdmFs
dWVBcnJheSwgTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSkKK3sKKyAgICAv
LyBDb252ZXJ0IGZyb20gdGhlIHBhc3NlZC1pbiBKUyBhcnJheS1saWtlIG9iamVjdCB0byBhIFRy
YW5zZmVyYWJsZUFycmF5LgogICAgIC8vIEFsc28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIg
c2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9u
IDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjLgogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7Ci0gICAgICAgIHBvcnRBcnJheS5yZXNpemUoMCk7CisgICAgICAgIHRyYW5zZmVyYWJs
ZUFycmF5LnJlc2l6ZSgwKTsKKyAgICAgICAgdmFsdWVBcnJheS5yZXNpemUoMCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTgxLDE4ICs4OCwzOCBAQCB2b2lkIGZpbGxNZXNzYWdlUG9y
dEFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQ
b3J0QQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIG5vbi1u
dWxsIG9iamVjdHMsIHBlciBIVE1MNSBzcGVjIDguMy4zLgogICAgICAgICBpZiAodmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSkgewotICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElO
VkFMSURfU1RBVEVfRVJSKTsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBEQVRB
X0NMT05FX0VSUik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorCiAgICAgICAg
IC8vIFZhbGlkYXRpb24gb2YgT2JqZWN0cyBpbXBsZW1lbnRpbmcgYW4gaW50ZXJmYWNlLCBwZXIg
V2ViSURMIHNwZWMgNC4xLjE1LgotICAgICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSB0
b01lc3NhZ2VQb3J0KHZhbHVlKTsKLSAgICAgICAgaWYgKCFwb3J0KSB7CisgICAgICAgIFJlZlB0
cjxUcmFuc2ZlcmFibGU+IHRyYW5zZmVyYWJsZSA9IHRvTmF0aXZlVHJhbnNmZXJhYmxlKHZhbHVl
KTsKKyAgICAgICAgaWYgKCF0cmFuc2ZlcmFibGUgfHwgKG1lc3NhZ2VQYXNzaW5nTW9kZSA9PSBP
bmx5TWVzc2FnZVBvcnRzICYmICF0cmFuc2ZlcmFibGUtPmFzTWVzc2FnZVBvcnQoKSkpIHsKICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIHBvcnRBcnJheS5hcHBlbmQocG9ydC5yZWxlYXNlKCkpOworICAgICAg
ICB0cmFuc2ZlcmFibGVBcnJheS5hcHBlbmQodHJhbnNmZXJhYmxlLnJlbGVhc2UoKSk7CisgICAg
ICAgIHZhbHVlQXJyYXkuYXBwZW5kKHZhbHVlKTsKICAgICB9CiB9CiAKK1Bhc3NSZWZQdHI8VHJh
bnNmZXJhYmxlPiB0b05hdGl2ZVRyYW5zZmVyYWJsZShKU0M6OkpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgUmVmUHRyPFRyYW5zZmVyYWJsZT4gb3V0VmFsdWUgPSB0b01lc3NhZ2VQb3J0KHZhbHVlKTsK
KyAgICBpZiAob3V0VmFsdWUpCisgICAgICAgIHJldHVybiBvdXRWYWx1ZS5yZWxlYXNlKCk7Cisg
ICAgLy8gV2UnbGwgcmV0dXJuIG51bGwgaWYgdmFsdWUgaXMgbm90IFRyYW5zZmVyYWJsZSBpbiBh
bnkgY2FzZS4KKyAgICByZXR1cm4gb3V0VmFsdWUucmVsZWFzZSgpOworfQorCitKU0M6OkpTVmFs
dWUgdG9KU1RyYW5zZmVyYWJsZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVHJhbnNmZXJhYmxlKiB2YWx1ZSkKK3sKKyAgICBpZiAoTWVzc2Fn
ZVBvcnQqIG1lc3NhZ2VQb3J0ID0gdmFsdWUtPmFzTWVzc2FnZVBvcnQoKSkKKyAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydCk7CisgICAgLy8gVGhpcyB0
eXBlY2FzZSBzaG91bGQgYWx3YXlzIGJlIHRvdGFsLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBv
cnRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0
b20uaAppbmRleCA4Mzk2YWUxLi5jOWEwMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCkBAIC0zMiw2ICszMiw4IEBACiAjZGVmaW5l
IEpTTWVzc2FnZVBvcnRDdXN0b21faAogCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIK
ICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CkBAIC0zOSwyNiArNDEsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdHlwZWRlZiBp
bnQgRXhjZXB0aW9uQ29kZTsKIAotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB3aGljaCBwdWxscyB0
aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBpbnRvIGEgTWVzc2FnZVBvcnRBcnJh
eS4KKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcHVsbHMgdGhlIHZhbHVlcyBvdXQgb2Yg
YSBKUyBzZXF1ZW5jZSBhbmQgaW50byBhIFRyYW5zZmVyYWJsZUFycmF5LCBtaXJyb3JpbmcgdGhl
c2UgaW50byBhIEpTVmFsdWVBcnJheS4KICAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVu
dHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQg
c2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYy4KICAgICAvLyBNYXkgZ2VuZXJhdGUgYW4g
ZXhjZXB0aW9uIHZpYSB0aGUgcGFzc2VkIEV4ZWNTdGF0ZS4KLSAgICB2b2lkIGZpbGxNZXNzYWdl
UG9ydEFycmF5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBNZXNzYWdlUG9ydEFycmF5
Jik7CisgICAgdm9pZCBmaWxsVHJhbnNmZXJhYmxlQXJyYXkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIFRyYW5zZmVyYWJsZUFycmF5JiwgSlNWYWx1ZUFycmF5JiwgTWVzc2FnZVBhc3Np
bmdNb2RlKTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGZyb20gSlMgcG9z
dE1lc3NhZ2UgYXJndW1lbnRzIHRvIFdlYkNvcmUgcG9zdE1lc3NhZ2UgYXJndW1lbnRzLgogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIGlubGluZSBKU0M6OkpTVmFsdWUgaGFuZGxlUG9z
dE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGwpCisgICAgaW5saW5lIEpTQzo6
SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgVCogaW1wbCwg
TWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSkKICAgICB7Ci0gICAgICAgIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwotICAgICAgICBNZXNzYWdl
UG9ydEFycmF5IHBvcnRBcnJheTsKLSAgICAgICAgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoZXhlYywg
ZXhlYy0+YXJndW1lbnQoMSksIHBvcnRBcnJheSk7CisgICAgICAgIFRyYW5zZmVyYWJsZUFycmF5
IHRyYW5zZmVyYWJsZUFycmF5OworICAgICAgICBKU1ZhbHVlQXJyYXkgdmFsdWVSZWZBcnJheTsK
KyAgICAgICAgZmlsbFRyYW5zZmVyYWJsZUFycmF5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCB0
cmFuc2ZlcmFibGVBcnJheSwgdmFsdWVSZWZBcnJheSwgbWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTQzo6
anNVbmRlZmluZWQoKTsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCAmdmFsdWVSZWZBcnJheSwgbWVzc2FnZVBhc3NpbmdNb2RlLCBUaHJvd2luZyk7CiAgICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU0M6Ompz
VW5kZWZpbmVkKCk7CiAKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGlt
cGwtPnBvc3RNZXNzYWdlKG1lc3NhZ2UsICZwb3J0QXJyYXksIGVjKTsKKyAgICAgICAgaW1wbC0+
cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZ0cmFuc2ZlcmFibGVBcnJheSwgZWMpOwog
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgICAgICByZXR1cm4gSlNDOjpq
c1VuZGVmaW5lZCgpOwogICAgIH0KIAorICAgIFBhc3NSZWZQdHI8VHJhbnNmZXJhYmxlPiB0b05h
dGl2ZVRyYW5zZmVyYWJsZShKU0M6OkpTVmFsdWUpOworICAgIEpTQzo6SlNWYWx1ZSB0b0pTVHJh
bnNmZXJhYmxlKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBUcmFuc2ZlcmFi
bGUqKTsKIH0KICNlbmRpZiAvLyBKU01lc3NhZ2VQb3J0Q3VzdG9tX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAppbmRleCAyNzU4MGFlLi4wNDI4YzIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCkBA
IC00MSw3ICs0MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTQzo6SlNWYWx1ZSBKU1dv
cmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGhh
bmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSk7CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNz
YWdlKGV4ZWMsIGltcGwoKSwgT25seU1lc3NhZ2VQb3J0cyk7Cit9CisKK0pTQzo6SlNWYWx1ZSBK
U1dvcmtlcjo6d2Via2l0UG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
cmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSwgUGVybWl0VHJhbnNmZXJhYmxl
cyk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNXb3JrZXJDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDRmNTFkZGIuLjJhOTI2NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTEwMCwxNCArMTAwLDE0
IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmlzRnVuY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBnZXRD
YWxsRGF0YShtX3ZhbHVlLmdldCgpLCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lOwogfQogCi1Q
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShT
Y3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNl
cHRpb25zKQorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpz
ZXJpYWxpemUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVy
TGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSwgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7Ci0gICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCksIHRocm93RXhjZXB0aW9ucyk7
CisgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBq
c1ZhbHVlKCksIHRyYW5zZmVyTGlzdCwgbWVzc2FnZVBhc3NpbmdNb2RlLCB0aHJvd0V4Y2VwdGlv
bnMpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBTZXJpYWxpemF0
aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK1NjcmlwdFZhbHVlIFNjcmlwdFZhbHVlOjpk
ZXNlcmlhbGl6ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogdmFsdWUsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBTZXJpYWxpemF0aW9uRXJyb3JN
b2RlIHRocm93RXhjZXB0aW9ucykKIHsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoc2NyaXB0U3Rh
dGUtPmdsb2JhbERhdGEoKSwgdmFsdWUtPmRlc2VyaWFsaXplKHNjcmlwdFN0YXRlLCBzY3JpcHRT
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB0aHJvd0V4Y2VwdGlvbnMpKTsKKyAgICByZXR1
cm4gU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPmdsb2JhbERhdGEoKSwgdmFsdWUtPmRlc2VyaWFs
aXplKHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB0cmFu
c2Zlckxpc3QsIHRocm93RXhjZXB0aW9ucykpOwogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCmluZGV4IGZhZGU4MzAuLmE2
MDQ5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaApAQCAtNjIs
OCArNjIsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0VmFs
dWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7IH0KIAot
ICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemUoU2NyaXB0U3Rh
dGUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwotICAgIHN0YXRpYyBTY3Jp
cHRWYWx1ZSBkZXNlcmlhbGl6ZShTY3JpcHRTdGF0ZSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSos
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShTY3JpcHRTdGF0ZSosIEpTVmFsdWVBcnJheSog
dHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01vZGUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUg
PSBUaHJvd2luZyk7CisgICAgc3RhdGljIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplKFNjcmlwdFN0
YXRlKiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3Qs
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CiAKICAgICBzdGF0aWMgU2NyaXB0
VmFsdWUgdW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDhiYWY5MTkuLjNhN2Y3ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpTRmlsZS5oIgogI2luY2x1ZGUgIkpT
RmlsZUxpc3QuaCIKICNpbmNsdWRlICJKU0ltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkpTTWVzc2Fn
ZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJKU05hdmlnYXRvci5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTk2LDggKzk3LDkgQEAgZW51bSBTZXJp
YWxpemF0aW9uVGFnIHsKICAqCiAgKiBJbml0aWFsIHZlcnNpb24gd2FzIDEuCiAgKiBWZXJzaW9u
IDIuIGFkZGVkIHRoZSBPYmplY3RSZWZlcmVuY2VUYWcgYW5kIHN1cHBvcnQgZm9yIHNlcmlhbGl6
YXRpb24gb2YgY3ljbGljIGdyYXBocy4KKyAqIFZlcnNpb24gMy4gYWRkZWQgdHJhbnNmZXIgbGlz
dHMuCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgQ3VycmVudFZlcnNpb24gPSAyOwor
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBDdXJyZW50VmVyc2lvbiA9IDM7CiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW50IFRlcm1pbmF0b3JUYWcgPSAweEZGRkZGRkZGOwogc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGludCBTdHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsKIApAQCAtMjUwLDkgKzI1
Miw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgYm9vbCB3cml0ZUxpdHRsZUVuZGlh
bihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uCiAKIGNsYXNzIENsb25lU2VyaWFsaXplciA6
IENsb25lQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNlcmlhbGl6YXRpb25SZXR1cm5Db2Rl
IHNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3Rvcjx1aW50OF90
PiYgb3V0KQorICAgIHN0YXRpYyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBzZXJpYWxpemUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwg
TWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSwgVmVjdG9yPHVpbnQ4X3Q+JiBv
dXQpCiAgICAgewotICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihleGVjLCBvdXQp
OworICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihleGVjLCB0cmFuc2Zlckxpc3Qs
IG1lc3NhZ2VQYXNzaW5nTW9kZSwgb3V0KTsKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIuc2Vy
aWFsaXplKHZhbHVlKTsKICAgICB9CiAKQEAgLTI2OSwxMCArMjcxLDEzIEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgQ2xvbmVTZXJpYWxpemVyKEV4ZWNTdGF0ZSogZXhlYywgVmVj
dG9yPHVpbnQ4X3Q+JiBvdXQpCisgICAgQ2xvbmVTZXJpYWxpemVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdlUGFz
c2luZ01vZGUsIFZlY3Rvcjx1aW50OF90PiYgb3V0KQogICAgICAgICA6IENsb25lQmFzZShleGVj
KQogICAgICAgICAsIG1fYnVmZmVyKG91dCkKICAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihl
eGVjLCBVU3RyaW5nKCIiLCAwKSkKKyAgICAgICAgLCBtX3RyYW5zZmVyTGlzdCh0cmFuc2Zlckxp
c3QpCisgICAgICAgICwgbV9tZXNzYWdlUGFzc2luZ01vZGUobWVzc2FnZVBhc3NpbmdNb2RlKQor
ICAgICAgICAsIG1fbWluaW11bVZhbGlkUmVmZXJlbmNlKDApCiAgICAgewogICAgICAgICB3cml0
ZShDdXJyZW50VmVyc2lvbik7CiAgICAgfQpAQCAtMjg3LDEzICsyOTIsMzMgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIG9iamVjdCkg
fHwgb2JqZWN0LT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKTsKICAgICB9CiAKKyAgICBib29s
IGluaXRpYWxpemVXaXRoVHJhbnNmZXJMaXN0KCkKKyAgICB7CisgICAgICAgIGlmICghbV90cmFu
c2Zlckxpc3QpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3RyYW5zZmVyTGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSAoKm1fdHJhbnNmZXJMaXN0KVtpXTsKKyAgICAgICAgICAgIEpTT2JqZWN0
KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICAgICAgICAgIGlmICghb2JqZWN0KQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHBhaXI8T2JqZWN0UG9v
bDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX29iamVjdFBvb2wuYWRkKG9iamVjdCwgbV9vYmpl
Y3RQb29sLnNpemUoKSk7CisgICAgICAgICAgICAvLyBBbGwgb2JqZWN0cyBpbiB0aGUgdHJhbnNm
ZXIgbGlzdCBtdXN0IGJlIHVuaXF1ZS4KKyAgICAgICAgICAgIGlmICghaXRlci5zZWNvbmQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBl
bmQodmFsdWUpOworICAgICAgICB9CisgICAgICAgIGlmIChtX21lc3NhZ2VQYXNzaW5nTW9kZSA9
PSBPbmx5TWVzc2FnZVBvcnRzKQorICAgICAgICAgICAgbV9taW5pbXVtVmFsaWRSZWZlcmVuY2Ug
PSBtX29iamVjdFBvb2wuc2l6ZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAg
ICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9iamVjdCkKICAgICB7CiAgICAg
ICAgIC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBoIHJlY29uc3RydWN0aW9uCiAgICAgICAgIHBh
aXI8T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX29iamVjdFBvb2wuYWRkKG9i
amVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBIYW5kbGUg
ZHVwbGljYXRlIHJlZmVyZW5jZXMKLSAgICAgICAgaWYgKCFpdGVyLnNlY29uZCkgeworICAgICAg
ICBpZiAoIWl0ZXIuc2Vjb25kICYmIGl0ZXIuZmlyc3QtPnNlY29uZCA+PSBtX21pbmltdW1WYWxp
ZFJlZmVyZW5jZSkgewogICAgICAgICAgICAgd3JpdGUoT2JqZWN0UmVmZXJlbmNlVGFnKTsKICAg
ICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90PihpdGVyLmZpcnN0LT5zZWNvbmQp
IDwgbV9vYmplY3RQb29sLnNpemUoKSk7CiAgICAgICAgICAgICB3cml0ZU9iamVjdEluZGV4KGl0
ZXIuZmlyc3QtPnNlY29uZCk7CkBAIC02MDYsNiArNjMxLDkgQEAgcHJpdmF0ZToKICAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCB1aW50MzJfdCwgSWRlbnRpZmllclJlcEhh
c2g+IFN0cmluZ0NvbnN0YW50UG9vbDsKICAgICBTdHJpbmdDb25zdGFudFBvb2wgbV9jb25zdGFu
dFBvb2w7CiAgICAgSWRlbnRpZmllciBtX2VtcHR5SWRlbnRpZmllcjsKKyAgICBKU1ZhbHVlQXJy
YXkqIG1fdHJhbnNmZXJMaXN0OworICAgIE1lc3NhZ2VQYXNzaW5nTW9kZSBtX21lc3NhZ2VQYXNz
aW5nTW9kZTsKKyAgICBzaXplX3QgbV9taW5pbXVtVmFsaWRSZWZlcmVuY2U7CiB9OwogCiBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGlu
KQpAQCAtNjE4LDYgKzY0NiwxMCBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgIFZlY3RvcjxXYWxrZXJTdGF0ZSwgMTY+
IHN0YXRlU3RhY2s7CiAgICAgV2Fsa2VyU3RhdGUgc3RhdGUgPSBTdGF0ZVVua25vd247CiAgICAg
SlNWYWx1ZSBpblZhbHVlID0gaW47CisgICAgaWYgKCFpbml0aWFsaXplV2l0aFRyYW5zZmVyTGlz
dCgpKSB7CisgICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIFZhbGlkYXRp
b25FcnJvcjsKKyAgICB9CiAgICAgdW5zaWduZWQgdGlja0NvdW50ID0gdGlja3NVbnRpbE5leHRD
aGVjaygpOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKQEAgLTc4
MywxMSArODE1LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cmluZyhzdHIuaW1wbCgp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgRGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFsaXpl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBidWZmZXIpCisgICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBk
ZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZl
cikKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyLnNpemUoKSkKICAgICAgICAgICAgIHJldHVy
biBtYWtlX3BhaXIoanNOdWxsKCksIFVuc3BlY2lmaWVkRXJyb3IpOwotICAgICAgICBDbG9uZURl
c2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBidWZmZXIpOworICAg
ICAgICBDbG9uZURlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCB0
cmFuc2Zlckxpc3QsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVyLmlzVmFsaWQo
KSkKICAgICAgICAgICAgIHJldHVybiBtYWtlX3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9uRXJy
b3IpOwogICAgICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCk7CkBAIC04MzIs
MTMgKzg2NCwxNCBAQCBwcml2YXRlOgogICAgICAgICBzaXplX3QgbV9pbmRleDsKICAgICB9Owog
Ci0gICAgQ2xvbmVEZXNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKKyAgICBDbG9uZURl
c2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZl
cikKICAgICAgICAgOiBDbG9uZUJhc2UoZXhlYykKICAgICAgICAgLCBtX2dsb2JhbE9iamVjdChn
bG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9pc0RPTUdsb2JhbE9iamVjdChnbG9iYWxPYmplY3Qt
PmluaGVyaXRzKCZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvKSkKICAgICAgICAgLCBtX3B0cihi
dWZmZXIuZGF0YSgpKQogICAgICAgICAsIG1fZW5kKGJ1ZmZlci5kYXRhKCkgKyBidWZmZXIuc2l6
ZSgpKQogICAgICAgICAsIG1fdmVyc2lvbigweEZGRkZGRkZGKQorICAgICAgICAsIG1fdHJhbnNm
ZXJMaXN0KHRyYW5zZmVyTGlzdCkKICAgICB7CiAgICAgICAgIGlmICghcmVhZChtX3ZlcnNpb24p
KQogICAgICAgICAgICAgbV92ZXJzaW9uID0gMHhGRkZGRkZGRjsKQEAgLTExODksNiArMTIyMiw3
IEBAIHByaXZhdGU6CiAgICAgY29uc3QgdWludDhfdCogbV9lbmQ7CiAgICAgdW5zaWduZWQgbV92
ZXJzaW9uOwogICAgIFZlY3RvcjxDYWNoZWRTdHJpbmc+IG1fY29uc3RhbnRQb29sOworICAgIEpT
VmFsdWVBcnJheSogbV90cmFuc2Zlckxpc3Q7CiB9OwogCiBEZXNlcmlhbGl6YXRpb25SZXN1bHQg
Q2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkKQEAgLTEyMDEsNiArMTIzNSwxMSBAQCBE
ZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkKICAg
ICBXYWxrZXJTdGF0ZSBzdGF0ZSA9IFN0YXRlVW5rbm93bjsKICAgICBKU1ZhbHVlIG91dFZhbHVl
OwogCisgICAgaWYgKG1fdHJhbnNmZXJMaXN0KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV90cmFuc2Zlckxpc3QtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9nY0J1ZmZl
ci5hcHBlbmQoKCptX3RyYW5zZmVyTGlzdClbaV0pOworICAgIH0KKwogICAgIHVuc2lnbmVkIHRp
Y2tDb3VudCA9IHRpY2tzVW50aWxOZXh0Q2hlY2soKTsKICAgICB3aGlsZSAoMSkgewogICAgICAg
ICBzd2l0Y2ggKHN0YXRlKSB7CkBAIC0xMzM4LDEwICsxMzc3LDE1IEBAIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQog
ICAgIG1fZGF0YS5zd2FwKGJ1ZmZlcik7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQorUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRl
KGV4ZWMsIHZhbHVlLCAwLCBPbmx5TWVzc2FnZVBvcnRzLCBUaHJvd2luZyk7Cit9CisKK1Bhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJM
aXN0LCBNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlLCBTZXJpYWxpemF0aW9u
RXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwotICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZShleGVjLCB2YWx1ZSwgYnVmZmVyKTsKKyAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoZXhlYywgdmFsdWUsIHRyYW5zZmVy
TGlzdCwgbWVzc2FnZVBhc3NpbmdNb2RlLCBidWZmZXIpOwogICAgIGlmICh0aHJvd0V4Y2VwdGlv
bnMgPT0gVGhyb3dpbmcpCiAgICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRp
b25GYWlsZWQoZXhlYywgY29kZSk7CiAKQEAgLTEzNjcsMTAgKzE0MTEsMTUgQEAgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgc3QKIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5Db250ZXh0LCBKU1Zh
bHVlUmVmIGFwaVZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CisgICAgcmV0dXJuIGNy
ZWF0ZShvcmlnaW5Db250ZXh0LCBhcGlWYWx1ZSwgZXhjZXB0aW9uLCAwLCBPbmx5TWVzc2FnZVBv
cnRzKTsKK30KKworUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5Db250ZXh0LCBKU1ZhbHVlUmVm
IGFwaVZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIEpTVmFsdWVBcnJheSogdHJhbnNmZXJM
aXN0LCBNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlKQorewogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMob3JpZ2luQ29udGV4dCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5
U2hpbShleGVjKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gdG9KUyhleGVjLCBhcGlWYWx1ZSk7Ci0g
ICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIHZhbHVlKTsKKyAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShleGVjLCB2YWx1ZSwgdHJhbnNmZXJMaXN0LCBtZXNzYWdlUGFzc2luZ01vZGUs
IFRocm93aW5nKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgaWYg
KGV4Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBleGVjLT5l
eGNlcHRpb24oKSk7CkBAIC0xMzc4LDcgKzE0MjcsNyBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9y
aQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgQVNTRVJUKHNlcmlhbGl6ZWRWYWx1ZSk7
Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZWRWYWx1ZTsKKyAgICByZXR1cm4gc2VyaWFsaXplZFZhbHVl
LnJlbGVhc2UoKTsKIH0KIAogU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dG9TdHJpbmco
KQpAQCAtMTM4NiwxOSArMTQzNSwxOSBAQCBTdHJpbmcgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0
b1N0cmluZygpCiAgICAgcmV0dXJuIENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZVN0cmlu
ZyhtX2RhdGEpOwogfQogCi1KU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTZXJpYWxp
emF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK0pTVmFsdWUgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBTZXJpYWxpemF0aW9uRXJyb3JN
b2RlIHRocm93RXhjZXB0aW9ucykKIHsKLSAgICBEZXNlcmlhbGl6YXRpb25SZXN1bHQgcmVzdWx0
ID0gQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKGV4ZWMsIGdsb2JhbE9iamVjdCwgbV9k
YXRhKTsKKyAgICBEZXNlcmlhbGl6YXRpb25SZXN1bHQgcmVzdWx0ID0gQ2xvbmVEZXNlcmlhbGl6
ZXI6OmRlc2VyaWFsaXplKGV4ZWMsIGdsb2JhbE9iamVjdCwgdHJhbnNmZXJMaXN0LCBtX2RhdGEp
OwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gVGhyb3dpbmcpCiAgICAgICAgIG1heWJlVGhy
b3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoZXhlYywgcmVzdWx0LnNlY29uZCk7CiAg
ICAgcmV0dXJuIHJlc3VsdC5maXJzdDsKIH0KIAotSlNWYWx1ZVJlZiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiBkZXN0aW5hdGlvbkNvbnRleHQsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK0pTVmFsdWVSZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNl
cmlhbGl6ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25Db250ZXh0LCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24sIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0KQogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoZGVzdGluYXRpb25Db250ZXh0KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGlt
KGV4ZWMpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZShleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZShleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHRyYW5zZmVyTGlzdCk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAg
ICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgZXhlYy0+ZXhjZXB0aW9uKCkpOwpAQCAtMTQwOSw2
ICsxNDU4LDI0IEBAIEpTVmFsdWVSZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6
ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25Db250ZXh0LCBKCiAgICAgcmV0dXJuIHRvUmVmKGV4
ZWMsIHZhbHVlKTsKIH0KIAorSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVHJhbnNm
ZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4
Y2VwdGlvbnMpCit7CisgICAgSlNWYWx1ZUFycmF5IHRyYW5zZmVyVmFsdWVMaXN0OworICAgIGlm
ICh0cmFuc2Zlckxpc3QgJiYgIW9wZW5UcmFuc2ZlcmFibGVBcnJheShleGVjLCBnbG9iYWxPYmpl
Y3QsICp0cmFuc2Zlckxpc3QsIHRyYW5zZmVyVmFsdWVMaXN0KSkgeworICAgICAgICBpZiAodGhy
b3dFeGNlcHRpb25zID09IFRocm93aW5nKQorICAgICAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlv
bklmU2VyaWFsaXphdGlvbkZhaWxlZChleGVjLCBWYWxpZGF0aW9uRXJyb3IpOworICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIGRlc2VyaWFsaXplKGV4ZWMs
IGdsb2JhbE9iamVjdCwgJnRyYW5zZmVyVmFsdWVMaXN0LCB0aHJvd0V4Y2VwdGlvbnMpOworfQor
Citib29sIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6b3BlblRyYW5zZmVyYWJsZUFycmF5KEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVHJhbnNmZXJhYmxlQXJy
YXkmIHRyYW5zZmVyTGlzdCwgSlNWYWx1ZUFycmF5JiB2YWx1ZUFycmF5KQoreworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJMaXN0LnNpemUoKTsgKytpKQorICAgICAgICB2YWx1
ZUFycmF5LmFwcGVuZCh0b0pTVHJhbnNmZXJhYmxlKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgdHJhbnNmZXJMaXN0W2ldLmdldCgpKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpudWxsVmFsdWUoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGVtcHR5VmFsdWUsIChTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDNmZTRlMDIuLjQyMmY0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zOCw2ICsz
OCw5IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTVmFsdWVSZWY7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordHlwZWRlZiBWZWN0b3I8SlNDOjpKU1ZhbHVlLCAxPiBK
U1ZhbHVlQXJyYXk7CitjbGFzcyBUcmFuc2ZlcmFibGU7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
VHJhbnNmZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7CiAgCiBlbnVtIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIHsKICAgICBTdWNjZXNzZnVsbHlDb21wbGV0ZWQsCkBAIC01MCwxMiArNTMs
MTggQEAgZW51bSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB7CiAgICAgCiBlbnVtIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKIAorZW51bSBNZXNzYWdl
UGFzc2luZ01vZGUgeyBPbmx5TWVzc2FnZVBvcnRzLCBQZXJtaXRUcmFuc2ZlcmFibGVzIH07CisK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVi
bGljIFJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250
ZXh0UmVmLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworICAgIC8v
IElmIE1lc3NhZ2VQYXNzaW5nTW9kZSBpcyBPbmx5TWVzc2FnZVBvcnRzLCB0aGVuIGl0ZW1zIGlu
IHRyYW5zZmVyTGlzdCB3aWxsIG5vdCBiZSByZWZlcnJlZCB0byBieSBvYmplY3QgcmVmZXJlbmNl
IElEIGluIHRoZSBzZXJpYWxpemVkIHZhbHVlLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBK
U1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlLCBTZXJpYWxpemF0
aW9uRXJyb3JNb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
biwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSk7CisgICAg
Ly8gVGhlc2UgZGVmYXVsdCB0byB0cmFuc2Zlckxpc3QgPSAwLCBNZXNzYWdlUGFzc2luZ01vZGUg
PSBPbmx5TWVzc2FnZVBvcnRzLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcuCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgIHsKQEAg
LTY3LDggKzc2LDExIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b1N0cmluZygpOwogICAgIAot
ICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwotICAgIEpTVmFs
dWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwor
ICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCA9IDAsIFNlcmlhbGl6YXRpb25F
cnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShKU0NvbnRl
eHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3Qg
PSAwKTsKKyAgICAKKyAgICAvLyBQcmVmZXIgdGhlIGFib3ZlIDo6ZGVzZXJpYWxpemUgKGFzIHRo
aXMgY29uc3RydWN0cyBhIEpTVmFsdWVBcnJheSBhbmQgY2FsbHMgdGhlIG90aGVyIGZ1bmN0aW9u
KS4KKyAgICBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgVHJhbnNmZXJhYmxlQXJyYXkqID0gMCwgU2VyaWFsaXphdGlvbkVycm9y
TW9kZSA9IFRocm93aW5nKTsgICAgICAKIAogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0
YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC03Nyw2ICs4OSw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZh
aWxlZChKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKICAgICBzdGF0
aWMgYm9vbCBzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoU2VyaWFsaXphdGlv
blJldHVybkNvZGUpOworICAgIHN0YXRpYyBib29sIG9wZW5UcmFuc2ZlcmFibGVBcnJheShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBUcmFuc2ZlcmFibGVBcnJheSYsIEpT
VmFsdWVBcnJheSYpOwogICAgIAogICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5z
aWduZWQgY2hhcj4mKTsKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRl
eCBiNzZkNjkwLi5mM2EwNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjc0MSw3ICsyNzQxLDcgQEAgc3ViIE5hdGl2
ZVRvSlNWYWx1ZQogICAgICAgICAkaW1wbEluY2x1ZGVzeyIkam9pbmVkTmFtZS5oIn0gPSAxOwog
ICAgIH0gZWxzaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiIG9yICR0eXBlIGVx
ICJhbnkiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
In0gPSAxOwotICAgICAgICByZXR1cm4gIiR2YWx1ZSA/ICR2YWx1ZS0+ZGVzZXJpYWxpemUoZXhl
YywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpIDoganNOdWxsKCkiOworICAgICAgICByZXR1
cm4gIiR2YWx1ZSA/ICR2YWx1ZS0+ZGVzZXJpYWxpemUoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIGltcC0+ZGF0YURlcGVuZGVuY2llcygpKSA6IGpzTnVsbCgpIjsKICAgICB9IGVs
c2UgewogICAgICAgICAjIERlZmF1bHQsIGluY2x1ZGUgaGVhZGVyIHdpdGggc2FtZSBuYW1lLgog
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJKUyR0eXBlLmgifSA9IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDZiMzc5MGUu
LjlkNmRiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCkBAIC0yNTg3LDcgKzI1ODcsNyBAQCBFTkQKICAgICAgICAgJGF0dHJB
dHRyID0gInN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJGF0dHJBdHRyKSI7CiAg
ICAgICAgIG15ICRnZXR0ZXJGdW5jID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJO
YW1lKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkod3JhcHBlciwgIiR7YXR0ck5h
bWV9IiwgJHthdHRyQXR0cn0sIGltcGwtPiR7Z2V0dGVyRnVuY30oKSk7CisgICAgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHdyYXBwZXIsICIke2F0dHJO
YW1lfSIsICR7YXR0ckF0dHJ9LCBpbXBsLT4ke2dldHRlckZ1bmN9KCksIGltcGwtPiR7Z2V0dGVy
RnVuY31EZXBlbmRlbmNpZXMoKSk7CiBFTkQKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJkOWQwY2Qu
LjI1MTFhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNDcsNiArNDcsOCBAQAogI2luY2x1ZGUgIkludDMyQXJy
YXkuaCIKICNpbmNsdWRlICJJbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
KyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNlaXB0
LmgiCiAjaW5jbHVkZSAiVWludDE2QXJyYXkuaCIKICNpbmNsdWRlICJVaW50MzJBcnJheS5oIgog
I2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKQEAgLTYzLDYgKzY1LDcgQEAKICNpbmNsdWRlICJWOElu
dDE2QXJyYXkuaCIKICNpbmNsdWRlICJWOEludDMyQXJyYXkuaCIKICNpbmNsdWRlICJWOEludDhB
cnJheS5oIgorI2luY2x1ZGUgIlY4TWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJWOFBy
b3h5LmgiCiAjaW5jbHVkZSAiVjhVaW50MTZBcnJheS5oIgogI2luY2x1ZGUgIlY4VWludDMyQXJy
YXkuaCIKQEAgLTU3NSwxMyArNTc4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgSlNGYWlsdXJlCiAg
ICAgfTsKIAotICAgIFNlcmlhbGl6ZXIoV3JpdGVyJiB3cml0ZXIsIHY4OjpUcnlDYXRjaCYgdHJ5
Q2F0Y2gpCisgICAgU2VyaWFsaXplcihXcml0ZXImIHdyaXRlciwgdjg6OlRyeUNhdGNoJiB0cnlD
YXRjaCwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01vZGUg
bWVzc2FnZVBhc3NpbmdNb2RlKQogICAgICAgICA6IG1fd3JpdGVyKHdyaXRlcikKICAgICAgICAg
LCBtX3RyeUNhdGNoKHRyeUNhdGNoKQogICAgICAgICAsIG1fZGVwdGgoMCkKICAgICAgICAgLCBt
X2V4ZWNEZXB0aCgwKQogICAgICAgICAsIG1fc3RhdHVzKFN1Y2Nlc3MpCiAgICAgICAgICwgbV9u
ZXh0T2JqZWN0UmVmZXJlbmNlKDApCisgICAgICAgICwgbV90cmFuc2Zlckxpc3QodHJhbnNmZXJM
aXN0KQorICAgICAgICAsIG1fbWVzc2FnZVBhc3NpbmdNb2RlKG1lc3NhZ2VQYXNzaW5nTW9kZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghdHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpOwogICAgIH0KQEAg
LTU4OSw2ICs1OTQsOCBAQCBwdWJsaWM6CiAgICAgU3RhdHVzIHNlcmlhbGl6ZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUpCiAgICAgewogICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7
CisgICAgICAgIGlmICghaW5pdGlhbGl6ZU9iamVjdFBvb2woKSkKKyAgICAgICAgICAgIHJldHVy
biBtX3N0YXR1czsKICAgICAgICAgbV93cml0ZXIud3JpdGVWZXJzaW9uKCk7CiAgICAgICAgIFN0
YXRlQmFzZSogc3RhdGUgPSBkb1NlcmlhbGl6ZSh2YWx1ZSwgMCk7CiAgICAgICAgIHdoaWxlIChz
dGF0ZSkKQEAgLTYyOCw2ICs2MzUsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgorICAg
IGJvb2wgaW5pdGlhbGl6ZU9iamVjdFBvb2woKTsKKwogICAgIGNsYXNzIFN0YXRlQmFzZSB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0YXRlQmFzZSk7CiAgICAgcHVibGljOgpAQCAt
MTAxMSw4ICsxMDIwLDQ0IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWOE9iamVjdE1hcDx2ODo6
T2JqZWN0LCB1aW50MzJfdD4gT2JqZWN0UG9vbDsKICAgICBPYmplY3RQb29sIG1fb2JqZWN0UG9v
bDsKICAgICB1aW50MzJfdCBtX25leHRPYmplY3RSZWZlcmVuY2U7CisgICAgVmFsdWVIYW5kbGVB
cnJheSogbV90cmFuc2Zlckxpc3Q7CisgICAgTWVzc2FnZVBhc3NpbmdNb2RlIG1fbWVzc2FnZVBh
c3NpbmdNb2RlOwogfTsKIAorYm9vbCBTZXJpYWxpemVyOjppbml0aWFsaXplT2JqZWN0UG9vbCgp
Cit7CisgICAgaWYgKCFtX3RyYW5zZmVyTGlzdCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKG1fbWVzc2FnZVBhc3NpbmdNb2RlID09IE9ubHlNZXNzYWdlUG9ydHMpIHsKKyAgICAgICAg
Ly8gT2Zmc2V0IG1fbmV4dE9iamVjdFJlZmVyZW5jZSBiZWNhdXNlIHdoZW4gdGhlIG9iamVjdCBp
cyBkZXNlcmlhbGl6ZWQgdGhlIG9iamVjdCByZWZlcmVuY2UKKyAgICAgICAgLy8gbGlzdCB3aWxs
IGJlIHByZWxvYWRlZCB3aXRoIHRoZSB0cmFuc2ZlciBsaXN0ICh3aGV0aGVyIE9ubHlNZXNzYWdl
UG9ydHMgd2FzIGFzc2VydGVkIG9yCisgICAgICAgIC8vIG5vdCBkdXJpbmcgc2VyaWFsaXphdGlv
bikuCisgICAgICAgIG1fbmV4dE9iamVjdFJlZmVyZW5jZSA9IG1fdHJhbnNmZXJMaXN0LT5zaXpl
KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV90cmFuc2Zlckxpc3QtPnNpemUoKTsgKytpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1RyYW5zZmVyID0gKCptX3RyYW5zZmVyTGlzdClbaV07CisgICAgICAgIGlm
ICh0b1RyYW5zZmVyLT5Jc09iamVjdCgpIHx8IHRvVHJhbnNmZXItPklzRGF0ZSgpIHx8IHRvVHJh
bnNmZXItPklzUmVnRXhwKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdG9UcmFuc2Zlci0+SXNT
dHJpbmcoKSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4T2JqZWN0KHRv
VHJhbnNmZXIuQXM8djg6Ok9iamVjdD4oKSk7CisgICAgICAgICAgICB1aW50MzJfdCBvYmplY3RS
ZWZlcmVuY2U7CisgICAgICAgICAgICBpZiAobV9vYmplY3RQb29sLnRyeUdldCh2OE9iamVjdCwg
Jm9iamVjdFJlZmVyZW5jZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBBbiBvYmplY3Qgd2FzIGlu
Y2x1ZGVkIGluIHRoZSB0cmFuc2ZlciBsaXN0IG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAgICAg
ICAgIG1fc3RhdHVzID0gRGF0YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQXNzaWduIHRvVHJhbnNmZXIgdGhl
IG5leHQgcmVmZXJlbmNlIElELiBJZiB3ZSBzZWUgaXQgaW4gdGhlIG9iamVjdCBncmFwaCwgd2Ug
d2lsbAorICAgICAgICAgICAgLy8gcGFzcyBpdCBieSByZWZlcmVuY2UuCisgICAgICAgICAgICBn
cmV5T2JqZWN0KHY4T2JqZWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEEg
bm9uLW9iamVjdCB3YXMgaW5jbHVkZWQgaW4gdGhlIHRyYW5zZmVyIGxpc3QuCisgICAgICAgICAg
ICBtX3N0YXR1cyA9IERhdGFDbG9uZUVycm9yOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBTZXJpYWxpemVyOjpTdGF0
ZUJhc2UqIFNlcmlhbGl6ZXI6OmRvU2VyaWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgU3RhdGVCYXNlKiBuZXh0KQogewogICAgIGlmIChtX2V4ZWNEZXB0aCArIChuZXh0ID8gbmV4
dC0+ZXhlY0RlcHRoKCkgOiAwKSA+IDEpIHsKQEAgLTE2NTEsMTQgKzE2OTYsMTcgQEAgcHJpdmF0
ZToKIAogY2xhc3MgRGVzZXJpYWxpemVyIDogcHVibGljIENvbXBvc2l0ZUNyZWF0b3IgewogcHVi
bGljOgotICAgIGV4cGxpY2l0IERlc2VyaWFsaXplcihSZWFkZXImIHJlYWRlcikKKyAgICBleHBs
aWNpdCBEZXNlcmlhbGl6ZXIoUmVhZGVyJiByZWFkZXIsIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5z
ZmVyTGlzdCkKICAgICAgICAgOiBtX3JlYWRlcihyZWFkZXIpCiAgICAgICAgICwgbV92ZXJzaW9u
KDApCisgICAgICAgICwgbV90cmFuc2Zlckxpc3QodHJhbnNmZXJMaXN0KQogICAgIHsKICAgICB9
CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemUoKQogICAgIHsKKyAgICAg
ICAgaWYgKCFpbml0aWFsaXplT2JqZWN0UG9vbCgpKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpO
dWxsKCk7CiAgICAgICAgIGlmICghbV9yZWFkZXIucmVhZFZlcnNpb24obV92ZXJzaW9uKSB8fCBt
X3ZlcnNpb24gPiB3aXJlRm9ybWF0VmVyc2lvbikKICAgICAgICAgICAgIHJldHVybiB2ODo6TnVs
bCgpOwogICAgICAgICBtX3JlYWRlci5zZXRWZXJzaW9uKG1fdmVyc2lvbik7CkBAIC0xNzcyLDYg
KzE4MjAsMTMgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBib29sIGluaXRpYWxp
emVPYmplY3RQb29sKCkKKyAgICB7CisgICAgICAgIGlmIChtX3RyYW5zZmVyTGlzdCkKKyAgICAg
ICAgICAgIG1fb2JqZWN0UG9vbC5hcHBlbmQoKm1fdHJhbnNmZXJMaXN0KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCiAgICAgYm9vbCBpbml0aWFsaXplT2JqZWN0KHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb2JqZWN0LCB1aW50MzJfdCBudW1Qcm9wZXJ0aWVzLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4qIHZhbHVlKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gMiAqIG51
bVByb3BlcnRpZXM7CkBAIC0xODM3LDM0ICsxODkyLDY2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PHY4OjpIYW5kbGU8djg6OlZhbHVlPiA+IG1fb2JqZWN0UG9vbDsKICAgICBWZWN0b3I8dWludDMy
X3Q+IG1fb3BlbkNvbXBvc2l0ZVJlZmVyZW5jZVN0YWNrOwogICAgIHVpbnQzMl90IG1fdmVyc2lv
bjsKKyAgICBWYWx1ZUhhbmRsZUFycmF5KiBtX3RyYW5zZmVyTGlzdDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlCiAKIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFBy
b3BlcnR5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBjb25zdCBjaGFyKiBwcm9wZXJ0
eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgYXR0cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgU2VyaWFsaXplZFNjcmlw
dFZhbHVlKiB2YWx1ZSwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KQogewogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVz
ZXJpYWxpemVkID0gdmFsdWUtPmRlc2VyaWFsaXplKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGRlc2VyaWFsaXplZCA9IHZhbHVlLT5kZXNlcmlhbGl6ZSh0cmFuc2Zlckxpc3QpOwogICAg
IG9iamVjdC0+Rm9yY2VTZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKHByb3BlcnR5TmFtZSksIGRl
c2VyaWFsaXplZCwgYXR0cmlidXRlKTsKIH0KIAogdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3Qs
IGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGUs
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZSBhdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwg
VmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KQoreworICAgIGRlc2VyaWFsaXplQW5kU2V0
UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZSwgdmFsdWUuZ2V0KCksIHRy
YW5zZmVyTGlzdCk7Cit9CisKK3ZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6
ZUFuZFNldFByb3BlcnR5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBjb25zdCBjaGFy
KiBwcm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgYXR0cmlidXRlLCBTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIHZhbHVlLCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJMaXN0KQorewor
ICAgIFZhbHVlSGFuZGxlQXJyYXkqIHZhbHVlSGFuZGxlQXJyYXkgPSAwOworICAgIFZhbHVlSGFu
ZGxlQXJyYXkgbG9jYWxBcnJheTsKKyAgICBpZiAodHJhbnNmZXJMaXN0KSB7CisgICAgICAgIGxv
Y2FsQXJyYXkucmVzZXJ2ZUNhcGFjaXR5KHRyYW5zZmVyTGlzdC0+c2l6ZSgpKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zlckxpc3QtPnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgbG9jYWxBcnJheS5hcHBlbmQodG9WOFRyYW5zZmVyYWJsZSgoKnRyYW5zZmVyTGlzdClb
aV0uZ2V0KCkpKTsKKyAgICAgICAgdmFsdWVIYW5kbGVBcnJheSA9ICZsb2NhbEFycmF5OworICAg
IH0KKyAgICBkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGUsIHZhbHVlLCB2YWx1ZUhhbmRsZUFycmF5KTsKK30KKwordm9pZCBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZSBhdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgVHJh
bnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCkKK3sKKyAgICBkZXNlcmlhbGl6ZUFuZFNldFBy
b3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLmdldCgpLCB0cmFu
c2Zlckxpc3QpOworfQorCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29s
JiBkaWRUaHJvdywgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2lu
Z01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlKQogewotICAgIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVy
dHkob2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZSwgdmFsdWUuZ2V0KCkpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdywg
dHJhbnNmZXJMaXN0LCBtZXNzYWdlUGFzc2luZ01vZGUpKTsKK30KKworUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNz
YWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlKQoreworICAgIGJvb2wgZGlkVGhyb3c7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWUsIGRp
ZFRocm93LCB0cmFuc2Zlckxpc3QsIG1lc3NhZ2VQYXNzaW5nTW9kZSkpOwogfQogCiBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBkaWRUaHJvdykKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3cpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlk
VGhyb3csIDAsIE9ubHlNZXNzYWdlUG9ydHMpKTsKIH0KIAogUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSkKIHsKICAgICBib29sIGRpZFRocm93OwotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdykpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdywgMCwg
T25seU1lc3NhZ2VQb3J0cykpOwogfQogCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShjb25zdCBTdHJpbmcmIGRh
dGEpCkBAIC0xOTIwLDE0ICsyMDA3LDE0IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKCkKIHsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBkaWRUaHJv
dykKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRy
YW5zZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSkKIHsKICAg
ICBkaWRUaHJvdyA9IGZhbHNlOwogICAgIFdyaXRlciB3cml0ZXI7CiAgICAgU2VyaWFsaXplcjo6
U3RhdHVzIHN0YXR1czsKICAgICB7CiAgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKLSAg
ICAgICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdyaXRlciwgdHJ5Q2F0Y2gpOworICAgICAgICBT
ZXJpYWxpemVyIHNlcmlhbGl6ZXIod3JpdGVyLCB0cnlDYXRjaCwgdHJhbnNmZXJMaXN0LCBtZXNz
YWdlUGFzc2luZ01vZGUpOwogICAgICAgICBzdGF0dXMgPSBzZXJpYWxpemVyLnNlcmlhbGl6ZSh2
YWx1ZSk7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gU2VyaWFsaXplcjo6SlNFeGNlcHRpb24pIHsK
ICAgICAgICAgICAgIC8vIElmIHRoZXJlIHdhcyBhIEpTIGV4Y2VwdGlvbiB0aHJvd24sIHJlLXRo
cm93IGl0LgpAQCAtMTk2NSwxMyArMjA1MiwyNiBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShjb25zdCBTdHJpbmcmIHdpcmVEYXRhKQogICAgIG1fZGF0YSA9
IHdpcmVEYXRhLmNyb3NzVGhyZWFkU3RyaW5nKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKCkKK1N0cmluZyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmZsYXR0ZW5SZWNlaXB0TGlzdChjb25zdCBTdHJpbmcmIGRhdGEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5JiByZWNlaXB0cykgeworICAgIC8vIEZJWE1FOiBPbmNlIGEgZmxh
dHRlbmFibGUgcmVjZWlwdCBhcHBlYXJzLCB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSBtb3JlIHdv
cmsgdG8gZG8uCisgICAgLy8gVW5mbGF0dGVuYWJsZSByZWNlaXB0cyBtYXkgYmUgcGFzc2VkIGlu
IGFzIG51bGwuCisjaWZuZGVmIE5ERUJVRworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVj
ZWlwdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVCghcmVjZWlwdHNbaV0gfHwgIXJlY2Vp
cHRzW2ldLT5pc0ZsYXR0ZW5hYmxlKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVjZWlw
dHMpOworI2VuZGlmCisgICAgcmV0dXJuIGRhdGEuY3Jvc3NUaHJlYWRTdHJpbmcoKTsKK30KKwor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUo
VmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KQogewogICAgIGlmICghbV9kYXRhLmltcGwo
KSkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KEJ1ZmZlclZhbHVlVHlwZSkgPT0gMiwgQnVmZmVyVmFsdWVUeXBlSXNUd29CeXRlcyk7CiAgICAg
UmVhZGVyIHJlYWRlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2RhdGEuaW1w
bCgpLT5jaGFyYWN0ZXJzKCkpLCAyICogbV9kYXRhLmxlbmd0aCgpKTsKLSAgICBEZXNlcmlhbGl6
ZXIgZGVzZXJpYWxpemVyKHJlYWRlcik7CisgICAgRGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihy
ZWFkZXIsIHRyYW5zZmVyTGlzdCk7CiAgICAgcmV0dXJuIGRlc2VyaWFsaXplci5kZXNlcmlhbGl6
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCmluZGV4IDRkMjQ5MmQuLjFkOWZmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zMiwyNSArMzIs
NTEgQEAKICNkZWZpbmUgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKIAogI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCisKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBUcmFuc2ZlcmFibGU7CitjbGFzcyBUcmFu
c2ZlcmFibGVSZWNlaXB0OwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+
IFRyYW5zZmVyYWJsZUFycmF5OwordHlwZWRlZiBWZWN0b3I8T3duUHRyPFRyYW5zZmVyYWJsZVJl
Y2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7Cit0eXBlZGVmIFZlY3Rvcjx2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4sIDE+IFZhbHVlSGFuZGxlQXJyYXk7CisKK2VudW0gTWVzc2FnZVBh
c3NpbmdNb2RlIHsgT25seU1lc3NhZ2VQb3J0cywgUGVybWl0VHJhbnNmZXJhYmxlcyB9OworCiBj
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVzZXJp
YWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSopOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlLCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBUcmFuc2ZlcmFibGVBcnJheSopOworICAgIHN0YXRpYyB2
b2lkIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgY29u
c3QgY2hhciogcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFRyYW5zZmVyYWJsZUFycmF5Kik7CiAgICAgc3RhdGljIHZvaWQgZGVzZXJpYWxp
emVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBjaGFyKiBwcm9w
ZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6
UHJvcGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRy
aWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVy
TGlzdCk7CisgICAgc3RhdGljIHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJM
aXN0KTsKKworICAgIC8vIHRyYW5zZmVyTGlzdCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIHRoYXQg
YXJlIG5vdCBmbGF0dGVuZWQgdG8gdGhlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBidXQKKyAgICAv
LyBhcmUgaW5zdGVhZCBjb3BpZWQgYnkgcmVmZXJlbmNlLiBUaGVzZSBvYmplY3RzIGFyZSBpZGVu
dGlmaWVkIGJ5IHRoZWlyIGluZGljZXMgaW4gdHJhbnNmZXJMaXN0LgorICAgIC8vIEZvciBleGFt
cGxlOgorICAgIC8vICAgICBzZXJpYWxpemUoe2E6T2JqZWN0MSwgYjpPYmplY3QyfSwgW09iamVj
dDAsIE9iamVjdDFdKSA9PiBTCisgICAgLy8gICAgIGRlc2VyaWFsaXplKFMsIFtPdGhlck9iamVj
dDAsIE90aGVyT2JqZWN0MV0pID0+IHthOk90aGVyT2JqZWN0MSwgYjpPYmplY3QyJ30KKyAgICAv
LyB3aGVyZSBPYmplY3QyJyB3YXMgY3JlYXRlZCBieSBmaXJzdCBmbGF0dGVuaW5nIE9iamVjdDIu
CiAKICAgICAvLyBJZiBhIHNlcmlhbGl6YXRpb24gZXJyb3Igb2NjdXJzIChlLmcuLCBjeWNsaWMg
aW5wdXQgdmFsdWUpIHRoaXMKICAgICAvLyBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IHJlcHJl
c2VudGF0aW9uLCBzY2hlZHVsZXMgYSBWOCBleGNlcHRpb24gdG8KICAgICAvLyBiZSB0aHJvd24g
dXNpbmcgdjg6OlRocm93RXhjZXB0aW9uKCksIGFuZCBzZXRzIHxkaWRUaHJvd3wuIEluIHRoaXMg
Y2FzZQogICAgIC8vIHRoZSBjYWxsZXIgbXVzdCBub3QgaW52b2tlIGFueSBWOCBvcGVyYXRpb25z
IHVudGlsIGNvbnRyb2wgcmV0dXJucyB0bwogICAgIC8vIFY4LiBXaGVuIHNlcmlhbGl6YXRpb24g
aXMgc3VjY2Vzc2Z1bCwgfGRpZFRocm93fCBpcyBmYWxzZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIGJvb2wmIGRpZFRocm93KTsKKyAgICAvLyBJZiBNZXNzYWdlUGFzc2luZ01vZGUgaXMgT25s
eU1lc3NhZ2VQb3J0cywgdGhlbiBpdGVtcyBpbiB0cmFuc2Zlckxpc3Qgd2lsbCBub3QgYmUgcmVm
ZXJyZWQgdG8gYnkgb2JqZWN0IHJlZmVyZW5jZSBzaG91bGQgdGhleSBhcHBlYXIKKyAgICAvLyBp
biB0aGUgc2VyaWFsaXplZCB2YWx1ZS4gdHJhbnNmZXJMaXN0IG1heSBiZSAwIChhbmQgaWYgc28g
aXMgZXF1aXZhbGVudCB0byBhIHplcm8tbGVuZ3RoIHRyYW5zZmVyIGxpc3QpLgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgYm9vbCYgZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwg
TWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIFZhbHVlSGFuZGxlQXJyYXkq
IHRyYW5zZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAgICAvLyBUaGVzZSBkZWZhdWx0
IHRvIHRyYW5zZmVyTGlzdCA9IDAgYW5kIE1lc3NhZ2VQYXNzaW5nTW9kZSA9IE9ubHlNZXNzYWdl
UG9ydHMuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVh
dGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBib29sJiBkaWRUaHJvdyk7CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFs
dWU+KTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3Jl
YXRlRnJvbVdpcmUoY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKCk7CkBAIC02Miw5
ICs4OCwxMSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdG9XaXJlU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CiAKKyAgICBzdGF0aWMgU3RyaW5nIGZsYXR0ZW5SZWNlaXB0TGlzdChj
b25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYpOworCiAg
ICAgLy8gRGVzZXJpYWxpemVzIHRoZSB2YWx1ZSAoaW4gdGhlIGN1cnJlbnQgY29udGV4dCkuIFJl
dHVybnMgYSBudWxsIHZhbHVlIGluCiAgICAgLy8gY2FzZSBvZiBmYWlsdXJlLgotICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBkZXNlcmlhbGl6ZSgpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBkZXNlcmlhbGl6ZShWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3QgPSAwKTsKIAogcHJp
dmF0ZToKICAgICBlbnVtIFN0cmluZ0RhdGFNb2RlIHsKQEAgLTczLDcgKzEwMSw4IEBAIHByaXZh
dGU6CiAgICAgfTsKIAogICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwotICAgIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIGJvb2wmIGRpZFRocm93KTsKKyAg
ICAvLyBBcyBpbiB0aGUgYWJvdmUsIHRyYW5zZmVyTGlzdCBtYXkgYmUgMC4KKyAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBib29sJiBkaWRUaHJvdywgVmFs
dWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01vZGUpOwogICAgIGV4
cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShjb25zdCBTdHJpbmcmIHdpcmVEYXRhKTsKIAog
ICAgIFN0cmluZyBtX2RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyMzQyZmU2Li45YTVmMTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHAKQEAgLTMxMyw0MyArMzEzLDU2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVuCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQ2FsbGJhY2so
TWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSwgY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cucG9zdE1lc3NhZ2UoKSIp
OwogICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwogCiAgICAgRE9NV2luZG93KiBzb3VyY2UgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1l
Rm9yQ2FsbGluZ0NvbnRleHQoKS0+ZG9tV2luZG93KCk7CiAgICAgQVNTRVJUKHNvdXJjZS0+ZnJh
bWUoKSk7CiAKLSAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFy
Z3NbMF0sIGRpZFRocm93KTsKLSAgICBpZiAoZGlkVGhyb3cpCi0gICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7Ci0KLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsKKyAgICBUcmFu
c2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVBcnJheTsKKyAgICBWYWx1ZUhhbmRsZUFycmF5IHZh
bHVlSGFuZGxlQXJyYXk7CiAgICAgU3RyaW5nIHRhcmdldE9yaWdpbjsKIAogICAgIC8vIFRoaXMg
ZnVuY3Rpb24gaGFzIHZhcmlhYmxlIGFyZ3VtZW50cyBhbmQgY2FuIGVpdGhlciBiZToKICAgICAv
LyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHBvcnQsIHRhcmdldE9yaWdpbik7CiAgICAgLy8gb3IK
ICAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRhcmdldE9yaWdpbik7Ci0gICAgdjg6OlRy
eUNhdGNoIHRyeUNhdGNoOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMikgewotICAgICAgICBp
ZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFycmF5KSkKKyAgICB7CisgICAg
ICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAy
KSB7CisgICAgICAgICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3NbMV0sIHRyYW5z
ZmVyYWJsZUFycmF5LCB2YWx1ZUhhbmRsZUFycmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpKQorICAg
ICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgICAgICB0YXJnZXRP
cmlnaW4gPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1syXSk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJDb3JlU3Ry
aW5nV2l0aE51bGxPclVuZGVmaW5lZENoZWNrKGFyZ3NbMV0pOworCisgICAgICAgIGlmICh0cnlD
YXRjaC5IYXNDYXVnaHQoKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0g
ICAgICAgIHRhcmdldE9yaWdpbiA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRD
aGVjayhhcmdzWzJdKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0YXJnZXRPcmlnaW4gPSB0b1dl
YkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1sxXSk7CiAgICAgfQogCi0g
ICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQorICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsK
KyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZGlkVGhyb3csICZ2YWx1ZUhhbmRsZUFycmF5LCBt
ZXNzYWdlUGFzc2luZ01vZGUpOworICAgIGlmIChkaWRUaHJvdykKICAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdpbmRvdy0+
cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIHRhcmdldE9yaWdpbiwg
c291cmNlLCBlYyk7CisgICAgd2luZG93LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwg
JnRyYW5zZmVyYWJsZUFycmF5LCB0YXJnZXRPcmlnaW4sIHNvdXJjZSwgZWMpOwogICAgIHJldHVy
biB0aHJvd0Vycm9yKGVjKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93
Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAg
SU5DX1NUQVRTKCJET00uRE9NV2luZG93LnBvc3RNZXNzYWdlKCkiKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayhPbmx5TWVzc2FnZVBvcnRzLCBhcmdzKTsKK30KKwor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uRE9N
V2luZG93LndlYmtpdFBvc3RNZXNzYWdlKCkiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1l
c3NhZ2VDYWxsYmFjayhQZXJtaXRUcmFuc2ZlcmFibGVzLCBhcmdzKTsKK30KKwogLy8gRklYTUUo
ZnFpYW4pOiByZXR1cm5pbmcgc3RyaW5nIGlzIGNoZWF0aW5nLCBhbmQgd2Ugc2hvdWxkCiAvLyBm
aXggdGhpcyBieSBjYWxsaW5nIHRvU3RyaW5nIGZ1bmN0aW9uIG9uIHRoZSByZWNlaXZlci4KIC8v
IEhvd2V2ZXIsIFY4IGltcGxlbWVudHMgdG9TdHJpbmcgaW4gSmF2YVNjcmlwdCwgd2hpY2ggcmVx
dWlyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERl
ZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggOGZjZjlh
OC4uNDljZThjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAg
LTQyLDI0ICs0MiwzNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9z
dE1lc3NhZ2VDYWxsYmFjayhNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlLCBj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUyhMIkRPTS5EZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LnBvc3RNZXNzYWdlIik7CiAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4
dCogd29ya2VyQ29udGV4dCA9IFY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7Ci0gICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShhcmdzWzBdLCBkaWRUaHJvdyk7Ci0gICAgaWYgKGRpZFRocm93KQotICAgICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOwotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIFRy
YW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZUFycmF5OworICAgIFZhbHVlSGFuZGxlQXJyYXkg
dmFsdWVIYW5kbGVBcnJheTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAg
aWYgKCFnZXRNZXNzYWdlUG9ydEFycmF5KGFyZ3NbMV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlm
ICghZ2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJnc1sxXSwgdHJhbnNmZXJhYmxlQXJyYXksIHZhbHVl
SGFuZGxlQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSkpCiAgICAgICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogICAgIH0KKyAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93LCAmdmFsdWVIYW5kbGVBcnJheSwgbWVzc2FnZVBh
c3NpbmdNb2RlKTsKKyAgICBpZiAoZGlkVGhyb3cpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd29ya2VyQ29udGV4dC0+cG9z
dE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIGVjKTsKKyAgICB3b3JrZXJD
b250ZXh0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnRyYW5zZmVyYWJsZUFycmF5
LCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQogCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkRlZGljYXRlZFdv
cmtlckNvbnRleHQucG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3Nh
Z2VDYWxsYmFjayhPbmx5TWVzc2FnZVBvcnRzLCBhcmdzKTsKK30KKwordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5EZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LndlYmtpdFBvc3RNZXNzYWdlIik7CisgICAgcmV0dXJuIFdlYkNv
cmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2soUGVybWl0VHJhbnNmZXJhYmxlcywgYXJncyk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VF
dmVudEN1c3RvbS5jcHAKaW5kZXggNDc1ZGUyYS4uYTY2YmFjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20u
Y3BwCkBAIC00NywyNSArNDcsMzIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2
ZW50Ojpwb3J0c0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIElOQ19T
VEFUUygiRE9NLk1lc3NhZ2VFdmVudC5wb3J0cyIpOwogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQg
PSBWOE1lc3NhZ2VFdmVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAKLSAgICBNZXNzYWdl
UG9ydEFycmF5KiBwb3J0cyA9IGV2ZW50LT5wb3J0cygpOwotICAgIGlmICghcG9ydHMgfHwgcG9y
dHMtPmlzRW1wdHkoKSkKKyAgICBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcyA9IGV2
ZW50LT50cmFuc2ZlcmFibGVzKCk7CisgICAgaWYgKCF0cmFuc2ZlcmFibGVzIHx8IHRyYW5zZmVy
YWJsZXMtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAKLSAgICB2ODo6
TG9jYWw8djg6OkFycmF5PiBwb3J0QXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyhwb3J0cy0+c2l6ZSgp
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvcnRzLT5zaXplKCk7ICsraSkKLSAgICAg
ICAgcG9ydEFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5ldyhpKSwgdG9WOCgoKnBvcnRzKVtpXS5n
ZXQoKSkpOworICAgIGludCBwb3J0Q291bnQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdHJhbnNmZXJhYmxlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCgqdHJhbnNmZXJh
YmxlcylbaV0uZ2V0KCktPmFzTWVzc2FnZVBvcnQoKSkKKyAgICAgICAgICAgICsrcG9ydENvdW50
OworICAgIH0KKyAgICAKKyAgICBpbnQgY3VycmVudFBvcnQgPSAwOworICAgIHY4OjpMb2NhbDx2
ODo6QXJyYXk+IHBvcnRBcnJheSA9IHY4OjpBcnJheTo6TmV3KHBvcnRDb3VudCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXplKCkgJiYgY3VycmVudFBvcnQg
PCBwb3J0Q291bnQ7ICsraSkgeworICAgICAgICBpZiAoTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0
ID0gKCp0cmFuc2ZlcmFibGVzKVtpXS5nZXQoKS0+YXNNZXNzYWdlUG9ydCgpKQorICAgICAgICAg
ICAgcG9ydEFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5ldyhjdXJyZW50UG9ydCsrKSwgdG9WOCht
ZXNzYWdlUG9ydCkpOworICAgIH0KIAogICAgIHJldHVybiBwb3J0QXJyYXk7CiB9CiAKLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3Np
bmdNb2RlLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9N
Lk1lc3NhZ2VFdmVudC5pbml0TWVzc2FnZUV2ZW50Iik7CiAgICAgTWVzc2FnZUV2ZW50KiBldmVu
dCA9IFY4TWVzc2FnZUV2ZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBTdHJpbmcg
dHlwZUFyZyA9IHY4VmFsdWVUb1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgYm9vbCBjYW5C
dWJibGVBcmcgPSBhcmdzWzFdLT5Cb29sZWFuVmFsdWUoKTsKICAgICBib29sIGNhbmNlbGFibGVB
cmcgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBkYXRhQXJnID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1szXSk7
CiAgICAgU3RyaW5nIG9yaWdpbkFyZyA9IHY4VmFsdWVUb1dlYkNvcmVTdHJpbmcoYXJnc1s0XSk7
CiAgICAgU3RyaW5nIGxhc3RFdmVudElkQXJnID0gdjhWYWx1ZVRvV2ViQ29yZVN0cmluZyhhcmdz
WzVdKTsKIApAQCAtNzYsMTcgKzgzLDM3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3Nh
Z2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAg
ICAgIGlmICghd2luZG93LklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZUFyZyA9IFY4RE9N
V2luZG93Ojp0b05hdGl2ZSh3aW5kb3cpOwogICAgIH0KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4gcG9ydEFycmF5OworICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJh
YmxlQXJyYXk7CisgICAgT3duUHRyPFZhbHVlSGFuZGxlQXJyYXk+IHZhbHVlSGFuZGxlQXJyYXk7
CiAKICAgICBpZiAoIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbN10pKSB7Ci0gICAgICAgIHBvcnRB
cnJheSA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KTsKLSAgICAgICAgaWYgKCFnZXRN
ZXNzYWdlUG9ydEFycmF5KGFyZ3NbN10sICpwb3J0QXJyYXkpKQorICAgICAgICB0cmFuc2ZlcmFi
bGVBcnJheSA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVBcnJheSk7CisgICAgICAgIHZhbHVl
SGFuZGxlQXJyYXkgPSBhZG9wdFB0cihuZXcgVmFsdWVIYW5kbGVBcnJheSk7CisgICAgICAgIGlm
ICghZ2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJnc1s3XSwgKnRyYW5zZmVyYWJsZUFycmF5LCAqdmFs
dWVIYW5kbGVBcnJheSwgbWVzc2FnZVBhc3NpbmdNb2RlKSkKICAgICAgICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CiAgICAgfQotICAgIGV2ZW50LT5pbml0TWVzc2FnZUV2ZW50KHR5cGVB
cmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0YUFyZy5yZWxlYXNlKCksIG9yaWdp
bkFyZywgbGFzdEV2ZW50SWRBcmcsIHNvdXJjZUFyZywgcG9ydEFycmF5LnJlbGVhc2UoKSk7CisK
KyAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbM10sIGRp
ZFRocm93LCB2YWx1ZUhhbmRsZUFycmF5LmdldCgpLCBtZXNzYWdlUGFzc2luZ01vZGUpOworICAg
IGlmIChkaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIGV2
ZW50LT5pbml0TWVzc2FnZUV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFy
ZywgZGF0YUFyZy5yZWxlYXNlKCksIG9yaWdpbkFyZywgbGFzdEV2ZW50SWRBcmcsIHNvdXJjZUFy
ZywgdHJhbnNmZXJhYmxlQXJyYXkucmVsZWFzZSgpKTsKICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1
dGUgZGF0YUF0dHIgPSBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250
RGVsZXRlIHwgdjg6OlJlYWRPbmx5KTsKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2Vy
aWFsaXplQW5kU2V0UHJvcGVydHkoYXJncy5Ib2xkZXIoKSwgImRhdGEiLCBkYXRhQXR0ciwgZXZl
bnQtPmRhdGEoKSk7CisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNl
dFByb3BlcnR5KGFyZ3MuSG9sZGVyKCksICJkYXRhIiwgZGF0YUF0dHIsIGV2ZW50LT5kYXRhKCks
IHZhbHVlSGFuZGxlQXJyYXkuZ2V0KCkpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0g
IH0KK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojppbml0TWVzc2Fn
ZUV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RB
VFMoIkRPTS5NZXNzYWdlRXZlbnQuaW5pdE1lc3NhZ2VFdmVudCIpOworICAgIHJldHVybiBXZWJD
b3JlOjppbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2soT25seU1lc3NhZ2VQb3J0cywgYXJncyk7Cit9
CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3Nh
Z2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NU
QVRTKCJET00uTWVzc2FnZUV2ZW50LndlYmtpdEluaXRNZXNzYWdlRXZlbnQiKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKFBlcm1pdFRyYW5zZmVyYWJsZXMs
IGFyZ3MpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKaW5k
ZXggM2VkNWIxMi4uZjA4NzIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcApAQCAtNDIsMzMgKzQyLDQ2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVz
c2FnZVBvcnQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VDYWxsYmFjayhNZXNzYWdl
UGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewotICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlIik7CiAgICAg
TWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gVjhNZXNzYWdlUG9ydDo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7Ci0gICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShh
cmdzWzBdLCBkaWRUaHJvdyk7Ci0gICAgaWYgKGRpZFRocm93KQotICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIFRyYW5z
ZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZUFycmF5OworICAgIFZhbHVlSGFuZGxlQXJyYXkgdmFs
dWVIYW5kbGVBcnJheTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgaWYg
KCFnZXRNZXNzYWdlUG9ydEFycmF5KGFyZ3NbMV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlmICgh
Z2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJnc1sxXSwgdHJhbnNmZXJhYmxlQXJyYXksIHZhbHVlSGFu
ZGxlQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogICAgIH0KKyAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93LCAmdmFsdWVIYW5kbGVBcnJheSwgbWVzc2FnZVBhc3Np
bmdNb2RlKTsKKyAgICBpZiAoZGlkVGhyb3cpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgbWVzc2FnZVBvcnQtPnBvc3RNZXNz
YWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmcG9ydEFycmF5LCBlYyk7CisgICAgbWVzc2FnZVBvcnQt
PnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmdHJhbnNmZXJhYmxlQXJyYXksIGVjKTsK
ICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAKLWJvb2wgZ2V0TWVzc2FnZVBvcnRBcnJh
eSh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYgcG9ydEFycmF5
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5NZXNz
YWdlUG9ydC5wb3N0TWVzc2FnZSIpOworICAgIHJldHVybiBXZWJDb3JlOjpwb3N0TWVzc2FnZUNh
bGxiYWNrKE9ubHlNZXNzYWdlUG9ydHMsIGFyZ3MpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhNZXNzYWdlUG9ydDo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VQb3J0LndlYmtpdFBv
c3RNZXNzYWdlIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2soUGVy
bWl0VHJhbnNmZXJhYmxlcywgYXJncyk7Cit9CisKK2Jvb2wgZ2V0VHJhbnNmZXJhYmxlQXJyYXko
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIFRyYW5zZmVyYWJsZUFycmF5JiB0cmFuc2ZlcmFi
bGVBcnJheSwgVmFsdWVIYW5kbGVBcnJheSYgaGFuZGxlQXJyYXksIE1lc3NhZ2VQYXNzaW5nTW9k
ZSBtZXNzYWdlUGFzc2luZ01vZGUpCiB7CiAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKHZhbHVl
KSkgewotICAgICAgICBwb3J0QXJyYXkucmVzaXplKDApOworICAgICAgICB0cmFuc2ZlcmFibGVB
cnJheS5yZXNpemUoMCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmICgh
dmFsdWUtPklzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcigiTWVzc2FnZVBvcnRBcnJh
eSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCIpOworICAgICAgICB0aHJvd0Vycm9yKG1lc3Nh
Z2VQYXNzaW5nTW9kZSA9PSBPbmx5TWVzc2FnZVBvcnRzID8gIk1lc3NhZ2VQb3J0QXJyYXkgYXJn
dW1lbnQgbXVzdCBiZSBhbiBvYmplY3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQg
bXVzdCBiZSBhbiBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB1
aW50MzJfdCBsZW5ndGggPSAwOwpAQCAtODEsMjggKzk0LDQ3IEBAIGJvb2wgZ2V0TWVzc2FnZVBv
cnRBcnJheSh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYgcG9y
dEFycmF5CiAgICAgICAgIC8vIFNlcXVlbmNlLXR5cGUgb2JqZWN0IC0gZ2V0IHRoZSBsZW5ndGgg
YXR0cmlidXRlCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHNlcXVlbmNlTGVuZ3RoID0g
cG9ydHMtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIpKTsKICAgICAgICAgaWYgKCFzZXF1
ZW5jZUxlbmd0aC0+SXNOdW1iZXIoKSkgewotICAgICAgICAgICAgdGhyb3dFcnJvcigiTWVzc2Fn
ZVBvcnRBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZSIpOworICAgICAgICAg
ICAgdGhyb3dFcnJvcihtZXNzYWdlUGFzc2luZ01vZGUgPT0gT25seU1lc3NhZ2VQb3J0cyA/ICJN
ZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
ICJUcmFuc2ZlcmFibGVBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZSIpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9IHNl
cXVlbmNlTGVuZ3RoLT5VaW50MzJWYWx1ZSgpOwogICAgIH0KIAotICAgIC8vIFZhbGlkYXRlIHRo
ZSBwYXNzZWQgYXJyYXkgb2YgcG9ydHMuCisgICAgLy8gVmFsaWRhdGUgdGhlIHBhc3NlZCBhcnJh
eSBvZiB0cmFuc2ZlcmFibGVzLgogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcG9ydCA9IHBvcnRzLT5H
ZXQoaSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHRyYW5zZmVyYWJsZSA9IHBvcnRz
LT5HZXQoaSk7CiAgICAgICAgIC8vIFZhbGlkYXRpb24gb2Ygbm9uLW51bGwgb2JqZWN0cywgcGVy
IEhUTUw1IHNwZWMgOC4zLjMuCi0gICAgICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChwb3J0KSkg
ewotICAgICAgICAgICAgdGhyb3dFcnJvcihJTlZBTElEX1NUQVRFX0VSUik7CisgICAgICAgIGlm
IChpc1VuZGVmaW5lZE9yTnVsbCh0cmFuc2ZlcmFibGUpKSB7CisgICAgICAgICAgICB0aHJvd0Vy
cm9yKERBVEFfQ0xPTkVfRVJSKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVy
ZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4xNS4KLSAgICAgICAgaWYgKCFWOE1lc3NhZ2VQb3J0
OjpIYXNJbnN0YW5jZShwb3J0KSkgewotICAgICAgICAgICAgdGhyb3dFcnJvcigiTWVzc2FnZVBv
cnRBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBNZXNzYWdlUG9ydHMiKTsKKyAgICAg
ICAgUmVmUHRyPFRyYW5zZmVyYWJsZT4gbmF0aXZlVHJhbnNmZXJhYmxlID0gdG9OYXRpdmVUcmFu
c2ZlcmFibGUodHJhbnNmZXJhYmxlKTsKKyAgICAgICAgaWYgKCFuYXRpdmVUcmFuc2ZlcmFibGUg
fHwgKG1lc3NhZ2VQYXNzaW5nTW9kZSA9PSBPbmx5TWVzc2FnZVBvcnRzICYmICFuYXRpdmVUcmFu
c2ZlcmFibGUtPmFzTWVzc2FnZVBvcnQoKSkpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3IobWVz
c2FnZVBhc3NpbmdNb2RlID09IE9ubHlNZXNzYWdlUG9ydHMgPyAiTWVzc2FnZVBvcnRBcnJheSBh
cmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBNZXNzYWdlUG9ydHMiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIlRyYW5zZmVy
YWJsZUFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IFRyYW5zZmVyYWJsZXMiKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBwb3J0QXJyYXkuYXBw
ZW5kKFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
cG9ydCkpKTsKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJyYXkuYXBwZW5kKG5hdGl2ZVRyYW5zZmVy
YWJsZSk7CisgICAgICAgIGhhbmRsZUFycmF5LmFwcGVuZCh0cmFuc2ZlcmFibGUpOwogICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRvTmF0aXZl
VHJhbnNmZXJhYmxlKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQoreworICAgIGlmIChWOE1l
c3NhZ2VQb3J0OjpIYXNJbnN0YW5jZSh2YWx1ZSkpCisgICAgICAgIHJldHVybiBWOE1lc3NhZ2VQ
b3J0Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKHJlaW50ZXJwcmV0X2Nhc3Q8VHJhbnNmZXJhYmxlKj4oMCkpOworfQor
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFRyYW5zZmVyYWJsZShUcmFuc2ZlcmFibGUqIHZh
bHVlKQoreworICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSB2YWx1ZS0+YXNNZXNz
YWdlUG9ydCgpKQorICAgICAgICByZXR1cm4gdG9WOChtZXNzYWdlUG9ydCk7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoMCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oCmluZGV4IDdhYjUwMmIuLjAxZjk1Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQ
b3J0Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVz
c2FnZVBvcnRDdXN0b20uaApAQCAtMzUsMTMgKzM1LDE3IEBACiAjaW5jbHVkZSA8djguaD4KIAog
I2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB3aGlj
aCBwdWxscyB0aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBpbnRvIGEgTWVzc2Fn
ZVBvcnRBcnJheS4KLSAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rp
b25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlvbiA4LjMu
MyBvZiB0aGUgSFRNTDUgc3BlYyBhbmQgZ2VuZXJhdGVzIGV4Y2VwdGlvbnMgYXMgYXBwcm9wcmlh
dGUuCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBhcnJheSB3YXMgZmlsbGVkLCBvciBmYWxz
ZSBpZiB0aGUgcGFzc2VkIHZhbHVlIHdhcyBub3Qgb2YgYW4gYXBwcm9wcmlhdGUgdHlwZS4KLSAg
ICBib29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIE1lc3NhZ2VQ
b3J0QXJyYXkmKTsKKy8vIEhlbHBlciBmdW5jdGlvbiB3aGljaCBwdWxscyB0aGUgdmFsdWVzIG91
dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBpbnRvIGEgVHJhbnNmZXJhYmxlQXJyYXkuCisvLyBBbHNv
IHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9m
IHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYyBhbmQg
Z2VuZXJhdGVzIGV4Y2VwdGlvbnMgYXMgYXBwcm9wcmlhdGUuCisvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIGFycmF5IHdhcyBmaWxsZWQsIG9yIGZhbHNlIGlmIHRoZSBwYXNzZWQgdmFsdWUgd2FzIG5v
dCBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlLgorYm9vbCBnZXRUcmFuc2ZlcmFibGVBcnJheSh2ODo6
TG9jYWw8djg6OlZhbHVlPiwgVHJhbnNmZXJhYmxlQXJyYXkmLCBWYWx1ZUhhbmRsZUFycmF5Jiwg
TWVzc2FnZVBhc3NpbmdNb2RlKTsKKworUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRvTmF0aXZl
VHJhbnNmZXJhYmxlKHY4OjpMb2NhbDx2ODo6VmFsdWU+KTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4VHJhbnNmZXJhYmxlKFRyYW5zZmVyYWJsZSopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdv
cmtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3Jr
ZXJDdXN0b20uY3BwCmluZGV4IGZkYzY4MTUuLjFiYmQ3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcApAQCAtODcsMjQg
Kzg3LDM2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlcjo6Y29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB3cmFwcGVyT2JqZWN0
OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXI6OnBvc3RNZXNzYWdlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcG9zdE1lc3NhZ2VDYWxsYmFjayhNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdN
b2RlLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldv
cmtlci5wb3N0TWVzc2FnZSIpOwogICAgIFdvcmtlciogd29ya2VyID0gVjhXb3JrZXI6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoYXJnc1swXSwgZGlkVGhyb3cpOwotICAgIGlmIChkaWRUaHJvdykKLSAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsK
KyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVBcnJheTsKKyAgICBWYWx1ZUhhbmRs
ZUFycmF5IHZhbHVlSGFuZGxlQXJyYXk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0g
ICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAg
ICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3NbMV0sIHRyYW5zZmVyYWJsZUFycmF5
LCB2YWx1ZUhhbmRsZUFycmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpKQogICAgICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9CisgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwor
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdywgJnZhbHVlSGFuZGxlQXJyYXksIG1l
c3NhZ2VQYXNzaW5nTW9kZSk7CisgICAgaWYgKGRpZFRocm93KQorICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdvcmtlci0+cG9z
dE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIGVjKTsKKyAgICB3b3JrZXIt
PnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmdHJhbnNmZXJhYmxlQXJyYXksIGVjKTsK
ICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFdvcmtlcjo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
eworICAgIElOQ19TVEFUUygiRE9NLldvcmtlci5wb3N0TWVzc2FnZSIpOworICAgIHJldHVybiBX
ZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNrKE9ubHlNZXNzYWdlUG9ydHMsIGFyZ3MpOworfQor
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXI6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5Xb3Jr
ZXIud2Via2l0UG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2VD
YWxsYmFjayhQZXJtaXRUcmFuc2ZlcmFibGVzLCBhcmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbElu
T25lLmNwcAppbmRleCBlMzg5Y2QxLi45NjU4NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9u
ZS5jcHAKQEAgLTEyOSw2ICsxMjksOCBAQAogI2luY2x1ZGUgIlRvdWNoLmNwcCIKICNpbmNsdWRl
ICJUb3VjaEV2ZW50LmNwcCIKICNpbmNsdWRlICJUb3VjaExpc3QuY3BwIgorI2luY2x1ZGUgIlRy
YW5zZmVyYWJsZS5jcHAiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAiCiAjaW5j
bHVkZSAiVHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHAiCiAjaW5jbHVkZSAiVHJhdmVyc2FsLmNw
cCIKICNpbmNsdWRlICJUcmVlU2NvcGUuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNw
cAppbmRleCBiNDMzMzgxYi4uOTYzNjE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5j
cHAKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiVHJhbnNm
ZXJhYmxlLmgiCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCkBAIC0zOCwxMyArNDAsMTMgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoKQogewog
fQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRBcnJheT4gcG9ydHMpCitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0
cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25Q
dHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMpCiAgICAgOiBFdmVudChldmVudE5h
bWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAg
ICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQpCiAg
ICAgLCBtX3NvdXJjZShzb3VyY2UpCi0gICAgLCBtX3BvcnRzKHBvcnRzKQorICAgICwgbV90cmFu
c2ZlcmFibGVzKHRyYW5zZmVyYWJsZXMpCiB7CiB9CiAKQEAgLTUyLDcgKzU0LDcgQEAgTWVzc2Fn
ZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRN
ZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyog
c291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQordm9pZCBNZXNzYWdl
RXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2Zl
cmFibGVzKQogewogICAgIGlmIChkaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYz
LDI2ICs2NSwzNiBAQCB2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBibwogICAgIG1fb3JpZ2luID0gb3Jp
Z2luOwogICAgIG1fbGFzdEV2ZW50SWQgPSBsYXN0RXZlbnRJZDsKICAgICBtX3NvdXJjZSA9IHNv
dXJjZTsKLSAgICBtX3BvcnRzID0gcG9ydHM7CisgICAgbV90cmFuc2ZlcmFibGVzID0gdHJhbnNm
ZXJhYmxlczsKIH0KIAogLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBP
YmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KIE1lc3NhZ2VQb3J0KiBNZXNzYWdlRXZlbnQ6Om1l
c3NhZ2VQb3J0KCkKIHsKLSAgICBpZiAoIW1fcG9ydHMpCisgICAgaWYgKCFtX3RyYW5zZmVyYWJs
ZXMpCiAgICAgICAgIHJldHVybiAwOwotICAgIEFTU0VSVChtX3BvcnRzLT5zaXplKCkgPT0gMSk7
Ci0gICAgcmV0dXJuICgqbV9wb3J0cylbMF0uZ2V0KCk7CisgICAgQVNTRVJUKG1fdHJhbnNmZXJh
Ymxlcy0+c2l6ZSgpID09IDEpOworICAgIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlID0gKCpt
X3RyYW5zZmVyYWJsZXMpWzBdLmdldCgpOworICAgIEFTU0VSVCh0cmFuc2ZlcmFibGUtPmFzTWVz
c2FnZVBvcnQoKSk7CisgICAgcmV0dXJuIHRyYW5zZmVyYWJsZS0+YXNNZXNzYWdlUG9ydCgpOwog
fQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIE1lc3NhZ2VQb3J0KiBwb3J0KQor
VHJhbnNmZXJhYmxlKiBNZXNzYWdlRXZlbnQ6OnRyYW5zZmVyYWJsZSgpCiB7Ci0gICAgT3duUHRy
PE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzOwotICAgIGlmIChwb3J0KSB7Ci0gICAgICAgIHBvcnRz
ID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkpOwotICAgICAgICBwb3J0cy0+YXBwZW5k
KHBvcnQpOworICAgIGlmICghbV90cmFuc2ZlcmFibGVzKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICBBU1NFUlQobV90cmFuc2ZlcmFibGVzLT5zaXplKCkgPT0gMSk7CisgICAgcmV0dXJuICgqbV90
cmFuc2ZlcmFibGVzKVswXS5nZXQoKTsKK30KKwordm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNz
YWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291
cmNlLCBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSkKK3sKKyAgICBPd25QdHI8VHJhbnNmZXJh
YmxlQXJyYXk+IHRyYW5zZmVyYWJsZXM7CisgICAgaWYgKHRyYW5zZmVyYWJsZSkgeworICAgICAg
ICB0cmFuc2ZlcmFibGVzID0gYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZUFycmF5KTsKKyAgICAg
ICAgdHJhbnNmZXJhYmxlcy0+YXBwZW5kKHRyYW5zZmVyYWJsZSk7CiAgICAgfQotICAgIGluaXRN
ZXNzYWdlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBkYXRhLCBvcmlnaW4sIGxh
c3RFdmVudElkLCBzb3VyY2UsIHBvcnRzLnJlbGVhc2UoKSk7CisgICAgaW5pdE1lc3NhZ2VFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQs
IHNvdXJjZSwgdHJhbnNmZXJhYmxlcy5yZWxlYXNlKCkpOwogfQogCiBib29sIE1lc3NhZ2VFdmVu
dDo6aXNNZXNzYWdlRXZlbnQoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRl
eCBiN2Y5YjAyLi4xMDA4ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCkBAIC0zMCwx
MiArMzAsMTMgQEAKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50Lmgi
Ci0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgRE9NV2luZG93OworICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogCiAgICAgY2xh
c3MgTWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsKICAgICBwdWJsaWM6CkBAIC00MywzNiAr
NDQsMzggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudCk7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFy
cmF5PiBwb3J0cywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEgPSAwLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiA9ICIiLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0gIiIs
IFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UgPSAwKQorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShQYXNzT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0
cmFuc2ZlcmFibGVzLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSA9IDAs
IGNvbnN0IFN0cmluZyYgb3JpZ2luID0gIiIsIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSAi
IiwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSA9IDApCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2
ZW50SWQsIHNvdXJjZSwgcG9ydHMpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgdHJhbnNmZXJh
YmxlcykpOwogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfk1lc3NhZ2VFdmVudCgpOwogCi0g
ICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZl
bnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwor
ICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5Pik7
CiAKICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmdldCgpOyB9CisgICAgICAgIFRyYW5zZmVyYWJsZUFycmF5KiBkYXRhRGVwZW5kZW5j
aWVzKCkgY29uc3QgeyByZXR1cm4gdHJhbnNmZXJhYmxlcygpOyB9CiAgICAgICAgIGNvbnN0IFN0
cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICAgICAgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEV2ZW50SWQ7IH0KICAg
ICAgICAgRE9NV2luZG93KiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5nZXQoKTsg
fQotICAgICAgICBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cygpIGNvbnN0IHsgcmV0dXJuIG1fcG9y
dHMuZ2V0KCk7IH0KKyAgICAgICAgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyYWJsZXMoKSBj
b25zdCB7IHJldHVybiBtX3RyYW5zZmVyYWJsZXMuZ2V0KCk7IH0KIAogICAgICAgICAvLyBGSVhN
RTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3
NzQpLgorICAgICAgICBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSgpOwogICAgICAgICBNZXNz
YWdlUG9ydCogbWVzc2FnZVBvcnQoKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdo
ZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAgdm9p
ZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRh
dGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01X
aW5kb3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqKTsKKyAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwg
VHJhbnNmZXJhYmxlKik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTWVzc2FnZUV2ZW50KCkg
Y29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBNZXNzYWdlRXZlbnQoKTsKLSAgICAgICAg
TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxE
T01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CisgICAgICAg
IE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8
RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+KTsKIAogICAg
ICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX2RhdGE7CiAgICAgICAgIFN0cmlu
ZyBtX29yaWdpbjsKICAgICAgICAgU3RyaW5nIG1fbGFzdEV2ZW50SWQ7CiAgICAgICAgIFJlZlB0
cjxET01XaW5kb3c+IG1fc291cmNlOwotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4g
bV9wb3J0czsKKyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiBtX3RyYW5zZmVyYWJs
ZXM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmlkbAppbmRleCBjZjQ1YmI0Li4yNTEzMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmlkbApAQCAtNDUsOCArNDUsMTcgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0
VmFsdWVdIERPTVN0cmluZyBsYXN0RXZlbnRJZEFyZywgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVdp
bmRvdyBzb3VyY2VBcmcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBBcnJheSBtZXNzYWdlUG9ydHMpOwor
CisgICAgICAgIFtDdXN0b21dIHZvaWQgd2Via2l0SW5pdE1lc3NhZ2VFdmVudChpbiBbT3B0aW9u
YWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyB0eXBlQXJnLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERl
ZmF1bHRWYWx1ZV0gYm9vbGVhbiBjYW5CdWJibGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVl
XSBib29sZWFuIGNhbmNlbGFibGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBTZXJpYWxp
emVkU2NyaXB0VmFsdWUgZGF0YUFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmlu
ZyBvcmlnaW5BcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgbGFzdEV2ZW50
SWRBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
W09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01XaW5kb3cgc291cmNlQXJnLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1D
YWxsV2l0aERlZmF1bHRWYWx1ZV0gQXJyYXkgdHJhbnNmZXJhYmxlcyk7CiAjZWxzZQotICAgICAg
ICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGV4cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMg
YmluZGluZ3MsIHNvIGZvciBub3cganVzdCBleHBvc2UgYSBzaW5nbGUgcG9ydC4KKyAgICAgICAg
Ly8gVGhlcmUncyBubyBnb29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJp
bmRpbmdzLCBzbyBmb3Igbm93IGp1c3QgZXhwb3NlIGEgc2luZ2xlIE1lc3NhZ2VQb3J0LgogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQ7CiAKICAgICAg
ICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1
ZV0gRE9NU3RyaW5nIHR5cGVBcmcsIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXgg
NDcyYjliMS4uM2QyZWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC00Myw2
ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgIDogbV9z
dGFydGVkKGZhbHNlKQogICAgICwgbV9jbG9zZWQoZmFsc2UpCisgICAgLCBtX3RyYW5zZmVyQ2xv
c2VkKGZhbHNlKQogICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KCZzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQogewogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+Y3JlYXRlZE1lc3Nh
Z2VQb3J0KHRoaXMpOwpAQCAtNTgsNDAgKzU5LDUyIEBAIE1lc3NhZ2VQb3J0Ojp+TWVzc2FnZVBv
cnQoKQogfQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMg
YmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotdm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0
LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqIHRyYW5z
ZmVyYWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0
czsKLSAgICBpZiAocG9ydCkKLSAgICAgICAgcG9ydHMuYXBwZW5kKHBvcnQpOwotICAgIHBvc3RN
ZXNzYWdlKG1lc3NhZ2UsICZwb3J0cywgZWMpOworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5z
ZmVyYWJsZXM7CisgICAgaWYgKHRyYW5zZmVyYWJsZSkKKyAgICAgICAgdHJhbnNmZXJhYmxlcy5h
cHBlbmQodHJhbnNmZXJhYmxlKTsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmdHJhbnNmZXJh
YmxlcywgZWMpOwogfQogCiB2b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgc3RhdGljX2Nhc3Q8TWVzc2FnZVBvcnRBcnJheSo+KDAp
LCBlYyk7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgc3RhdGljX2Nhc3Q8VHJhbnNmZXJhYmxl
QXJyYXkqPigwKSwgZWMpOwogfQogCi12b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRB
cnJheSogcG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1l
c3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVy
YWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
IWlzRW50YW5nbGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KTsKIAotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hh
bm5lbHM7Ci0gICAgLy8gTWFrZSBzdXJlIHdlIGFyZW4ndCBjb25uZWN0ZWQgdG8gYW55IG9mIHRo
ZSBwYXNzZWQtaW4gcG9ydHMuCi0gICAgaWYgKHBvcnRzKSB7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgcG9ydHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBNZXNz
YWdlUG9ydCogZGF0YVBvcnQgPSAoKnBvcnRzKVtpXS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChk
YXRhUG9ydCA9PSB0aGlzIHx8IG1fZW50YW5nbGVkQ2hhbm5lbC0+aXNDb25uZWN0ZWRUbyhkYXRh
UG9ydCkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBy
ZWNlaXB0czsKKyAgICAvLyBNYWtlIHN1cmUgd2UgYXJlbid0IGNvbm5lY3RlZCB0byBhbnkgcGFz
c2VkLWluIE1lc3NhZ2VQb3J0cy4KKyAgICBpZiAodHJhbnNmZXJhYmxlcykgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHRyYW5zZmVyYWJsZXMtPnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSA9ICgqdHJhbnNmZXJhYmxl
cylbaV0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoTWVzc2FnZVBvcnQqIGRhdGFQb3J0ID0gdHJh
bnNmZXJhYmxlLT5hc01lc3NhZ2VQb3J0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YVBv
cnQgPT0gdGhpcyB8fCBtX2VudGFuZ2xlZENoYW5uZWwtPmlzQ29ubmVjdGVkVG8oZGF0YVBvcnQp
KSB7CisgICAgICAgICAgICAgICAgICAgIGVjID0gREFUQV9DTE9ORV9FUlI7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgY2hhbm5lbHMgPSBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhw
b3J0cywgZWMpOworICAgICAgICByZWNlaXB0cyA9IFRyYW5zZmVyYWJsZTo6dHJhbnNmZXJBbGxP
dXQodHJhbnNmZXJhYmxlcywgZWMpOwogICAgICAgICBpZiAoZWMpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIG1fZW50YW5nbGVkQ2hhbm5lbC0+cG9zdE1lc3NhZ2VUb1JlbW90ZShN
ZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzLnJl
bGVhc2UoKSkpOworICAgIG1fZW50YW5nbGVkQ2hhbm5lbC0+cG9zdE1lc3NhZ2VUb1JlbW90ZShN
ZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKG1lc3NhZ2UsIHJlY2VpcHRzLnJl
bGVhc2UoKSkpOworfQorCitQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+IE1lc3NhZ2VQ
b3J0Ojp0cmFuc2Zlck91dChFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW1fZW50YW5n
bGVkQ2hhbm5lbCB8fCBtX3RyYW5zZmVyQ2xvc2VkKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybiBtX2VudGFuZ2xlZENoYW5uZWwucmVsZWFzZSgpOwor
ICAgIH0KKyAgICBtX3RyYW5zZmVyQ2xvc2VkID0gdHJ1ZTsKKyAgICByZXR1cm4gZGlzZW50YW5n
bGUoZWMpOwogfQogCiBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gTWVzc2FnZVBvcnQ6
OmRpc2VudGFuZ2xlKEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTc5LDggKzE5Miw4IEBAIHZvaWQg
TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCiAKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBv
cnQ6OmVudGFuZ2xlUG9ydHMoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXZlbnREYXRhLT5j
aGFubmVscygpKTsKLSAgICAgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNy
ZWF0ZShwb3J0cy5yZWxlYXNlKCksIGV2ZW50RGF0YS0+bWVzc2FnZSgpKTsKKyAgICAgICAgT3du
UHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVzID0gVHJhbnNmZXJhYmxlUmVjZWlw
dDo6dHJhbnNmZXJBbGxJbigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBldmVudERhdGEtPnJl
Y2VpcHRzKCkpOworICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLCBldmVudERhdGEtPm1lc3NhZ2UoKSk7CiAKICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZ0LnJl
bGVhc2UoKSwgZWMpOwpAQCAtMjA0LDQ4ICsyMTcsNiBAQCBNZXNzYWdlUG9ydCogTWVzc2FnZVBv
cnQ6OmxvY2FsbHlFbnRhbmdsZWRQb3J0KCkKICAgICByZXR1cm4gbV9lbnRhbmdsZWRDaGFubmVs
ID8gbV9lbnRhbmdsZWRDaGFubmVsLT5sb2NhbGx5RW50YW5nbGVkUG9ydChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpIDogMDsKIH0KIAotUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoY29uc3QgTWVzc2FnZVBvcnRBcnJheSog
cG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghcG9ydHMgfHwgIXBvcnRzLT5z
aXplKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gSGFzaFNldCB1c2VkIHRv
IGVmZmljaWVudGx5IGNoZWNrIGZvciBkdXBsaWNhdGVzIGluIHRoZSBwYXNzZWQtaW4gYXJyYXku
Ci0gICAgSGFzaFNldDxNZXNzYWdlUG9ydCo+IHBvcnRTZXQ7Ci0KLSAgICAvLyBXYWxrIHRoZSBp
bmNvbWluZyBhcnJheSAtIGlmIHRoZXJlIGFyZSBhbnkgZHVwbGljYXRlIHBvcnRzLCBvciBudWxs
IHBvcnRzIG9yIGNsb25lZCBwb3J0cywgdGhyb3cgYW4gZXJyb3IgKHBlciBzZWN0aW9uIDguMy4z
IG9mIHRoZSBIVE1MNSBzcGVjKS4KLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBv
cnRzLT5zaXplKCk7ICsraSkgewotICAgICAgICBNZXNzYWdlUG9ydCogcG9ydCA9ICgqcG9ydHMp
W2ldLmdldCgpOwotICAgICAgICBpZiAoIXBvcnQgfHwgcG9ydC0+aXNDbG9uZWQoKSB8fCBwb3J0
U2V0LmNvbnRhaW5zKHBvcnQpKSB7Ci0gICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcG9ydFNl
dC5hZGQocG9ydCk7Ci0gICAgfQotCi0gICAgLy8gUGFzc2VkLWluIHBvcnRzIHBhc3NlZCB2YWxp
ZGl0eSBjaGVja3MsIHNvIHdlIGNhbiBkaXNlbnRhbmdsZSB0aGVtLgotICAgIE93blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4gcG9ydEFycmF5ID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5KHBvcnRzLT5zaXplKCkpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MCA7IGkgPCBwb3J0cy0+c2l6ZSgpIDsgKytpKSB7Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9y
dENoYW5uZWw+IGNoYW5uZWwgPSAoKnBvcnRzKVtpXS0+ZGlzZW50YW5nbGUoZWMpOwotICAgICAg
ICBBU1NFUlQoIWVjKTsgLy8gQ2FuJ3QgZ2VuZXJhdGUgZXhjZXB0aW9uIGhlcmUgaWYgcGFzc2Vk
IGFib3ZlIGNoZWNrcy4KLSAgICAgICAgKCpwb3J0QXJyYXkpW2ldID0gY2hhbm5lbC5yZWxlYXNl
KCk7Ci0gICAgfQotICAgIHJldHVybiBwb3J0QXJyYXkucmVsZWFzZSgpOwotfQotCi1QYXNzT3du
UHRyPE1lc3NhZ2VQb3J0QXJyYXk+IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+IGNoYW5uZWxzKQotewotICAgIGlmICghY2hhbm5lbHMgfHwgIWNoYW5uZWxzLT5zaXplKCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+
IHBvcnRBcnJheSA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KGNoYW5uZWxzLT5zaXpl
KCkpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNoYW5uZWxzLT5zaXplKCk7
ICsraSkgewotICAgICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBNZXNzYWdlUG9ydDo6
Y3JlYXRlKGNvbnRleHQpOwotICAgICAgICBwb3J0LT5lbnRhbmdsZSgoKmNoYW5uZWxzKVtpXS5y
ZWxlYXNlKCkpOwotICAgICAgICAoKnBvcnRBcnJheSlbaV0gPSBwb3J0LnJlbGVhc2UoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHBvcnRBcnJheS5yZWxlYXNlKCk7Ci19Ci0KIEV2ZW50VGFyZ2V0RGF0
YSogTWVzc2FnZVBvcnQ6OmV2ZW50VGFyZ2V0RGF0YSgpCiB7CiAgICAgcmV0dXJuICZtX2V2ZW50
VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggM2E4NDBmZS4uYjAwZmU2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUG9ydENoYW5uZWwuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgpAQCAtNDUsMjIgKzQ2LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
Ci0gICAgLy8gVGhlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbiBjYXNlIGlzIHNlbmRpbmcgYSBzaW5n
bGUgcG9ydCwgc28gaGFuZGxlIHRoYXQgZWZmaWNpZW50bHkgd2l0aCBhbiBpbmxpbmUgYnVmZmVy
IG9mIHNpemUgMS4KLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+LCAxPiBN
ZXNzYWdlUG9ydEFycmF5OwotCiAgICAgLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGluaGVy
aXQgZnJvbSBBY3RpdmVET01PYmplY3QgYW5kIHVzZQogICAgIC8vIHNldFBlbmRpbmdBY3Rpdml0
eSAvIHVuc2V0UGVuZGluZ0FjdGl2aXR5IGluc3RlYWQgb2YgZHVwbGljYXRpbmcKICAgICAvLyBB
Y3RpdmVET01PYmplY3QncyBmZWF0dXJlcyBhbmQgcmVseWluZyBvbiBKYXZhU2NyaXB0IGdhcmJh
Z2UgY29sbGVjdGlvbgogICAgIC8vIHRvIGdldCBpdHMgbGlmZXRpbWUgcmlnaHQuCi0gICAgY2xh
c3MgTWVzc2FnZVBvcnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZXNzYWdlUG9ydD4sIHB1YmxpYyBF
dmVudFRhcmdldCB7CisgICAgY2xhc3MgTWVzc2FnZVBvcnQgOiBwdWJsaWMgVHJhbnNmZXJhYmxl
LCBwdWJsaWMgRXZlbnRUYXJnZXQgewogICAgIHB1YmxpYzoKKyAgICAgICAgTWVzc2FnZVBvcnQq
IGFzTWVzc2FnZVBvcnQoKSB7IHJldHVybiB0aGlzOyB9CisKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVzc2FnZVBvcnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZVBvcnQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkpOyB9CiAgICAgICAgIH5NZXNzYWdlUG9ydCgpOwogCiAgICAgICAg
IHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3Nh
Z2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlQXJyYXkqLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0
aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2Uo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0Kiwg
RXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqLCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICAgICAgdm9pZCBzdGFydCgpOwogICAgICAgICB2b2lkIGNsb3NlKCk7CkBAIC02
OCwxNCArNjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZW50YW5nbGUo
UGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+KTsKICAgICAgICAgUGFzc093blB0cjxNZXNz
YWdlUG9ydENoYW5uZWw+IGRpc2VudGFuZ2xlKEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgICAgICAv
LyBEaXNlbnRhbmdsZSBhbiBhcnJheSBvZiBwb3J0cywgcmV0dXJuaW5nIHRoZSBlbnRhbmdsZWQg
Y2hhbm5lbHMuCi0gICAgICAgIC8vIFBlciBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVj
LCBnZW5lcmF0ZXMgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGlmIGFueSBvZiB0aGUg
cGFzc2VkIHBvcnRzIGFyZSBudWxsIG9yIG5vdCBlbnRhbmdsZWQuCi0gICAgICAgIC8vIFJldHVy
bnMgMCBpZiB0aGVyZSBpcyBhbiBleGNlcHRpb24sIG9yIGlmIHRoZSBwYXNzZWQtaW4gYXJyYXkg
aXMgMC9lbXB0eS4KLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IGRpc2VudGFuZ2xlUG9ydHMoY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlv
bkNvZGUmKTsKLQotICAgICAgICAvLyBFbnRhbmdsZXMgYW4gYXJyYXkgb2YgY2hhbm5lbHMsIHJl
dHVybmluZyBhbiBhcnJheSBvZiBNZXNzYWdlUG9ydHMgaW4gbWF0Y2hpbmcgb3JkZXIuCi0gICAg
ICAgIC8vIFJldHVybnMgMCBpZiB0aGUgcGFzc2VkIGFycmF5IGlzIDAvZW1wdHkuCi0gICAgICAg
IHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IGVudGFuZ2xlUG9ydHMoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsK
KyAgICAgICAgYm9vbCBpc1RyYW5zZmVyQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zl
ckNsb3NlZDsgfQorICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+IHRyYW5z
ZmVyT3V0KEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICB2b2lkIG1lc3NhZ2VBdmFpbGFibGUo
KTsKICAgICAgICAgYm9vbCBzdGFydGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydGVkOyB9CkBA
IC04OCw4ICs4Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGRpc3Bh
dGNoTWVzc2FnZXMoKTsKIAotICAgICAgICB1c2luZyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0Pjo6
cmVmOwotICAgICAgICB1c2luZyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0Pjo6ZGVyZWY7CisgICAg
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhbnNmZXJhYmxlPjo6cmVmOworICAgICAgICB1c2luZyBS
ZWZDb3VudGVkPFRyYW5zZmVyYWJsZT46OmRlcmVmOwogCiAgICAgICAgIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCk7CiAKQEAgLTEwNSw5ICs5OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gTk9URTogVGhpcyBpcyB1c2VkIHNvbGVseSB0byBlbmFibGUgYSBHQyBvcHRpbWl6
YXRpb24uIFNvbWUgcGxhdGZvcm1zIG1heSBub3QgYmUgYWJsZSB0byBkZXRlcm1pbmUgb3duZXJz
aGlwIG9mIHRoZSByZW1vdGUgcG9ydCAoc2luY2UgaXQgbWF5IGxpdmUgY3Jvc3MtcHJvY2Vzcykg
LSB0aG9zZSBwbGF0Zm9ybXMgbWF5IGFsd2F5cyByZXR1cm4gbnVsbC4KICAgICAgICAgTWVzc2Fn
ZVBvcnQqIGxvY2FsbHlFbnRhbmdsZWRQb3J0KCk7CiAgICAgICAgIC8vIEEgcG9ydCBzdGFydHMg
b3V0IGl0cyBsaWZlIGVudGFuZ2xlZCwgYW5kIHJlbWFpbnMgZW50YW5nbGVkIHVudGlsIGl0IGlz
IGNsb3NlZCBvciBpcyBjbG9uZWQuCi0gICAgICAgIGJvb2wgaXNFbnRhbmdsZWQoKSB7IHJldHVy
biAhbV9jbG9zZWQgJiYgIWlzQ2xvbmVkKCk7IH0KKyAgICAgICAgYm9vbCBpc0VudGFuZ2xlZCgp
IGNvbnN0IHsgcmV0dXJuICFtX2Nsb3NlZCAmJiAhaXNDbG9uZWQoKTsgfQogICAgICAgICAvLyBB
IHBvcnQgaXMgY2xvbmVkIGlmIGl0cyBlbnRhbmdsZWQgY2hhbm5lbCBoYXMgYmVlbiByZW1vdmVk
IGFuZCBzZW50IHRvIGEgbmV3IG93bmVyIHZpYSBwb3N0TWVzc2FnZSgpLgotICAgICAgICBib29s
IGlzQ2xvbmVkKCkgeyByZXR1cm4gIW1fZW50YW5nbGVkQ2hhbm5lbDsgfQorICAgICAgICBib29s
IGlzQ2xvbmVkKCkgY29uc3QgeyByZXR1cm4gIW1fZW50YW5nbGVkQ2hhbm5lbDsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgTWVzc2FnZVBvcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwpA
QCAtMTIxLDYgKzExNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1f
c3RhcnRlZDsKICAgICAgICAgYm9vbCBtX2Nsb3NlZDsKKyAgICAgICAgYm9vbCBtX3RyYW5zZmVy
Q2xvc2VkOwogCiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKICAgICAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwKaW5kZXggMjg4MzNjZS4uZjQ1MzczZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCkBAIC0zOCw2ICszOCw5IEBAIG1vZHVsZSBldmVudHMg
ewogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQ
VAogICAgICAgICBbQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdl
LCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykKICAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHdlYmtpdFBvc3RNZXNzYWdlKGlu
IERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IHRyYW5zZmVyKQorICAgICAg
ICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAgICAgICAgdm9pZCBzdGFydCgpOwogICAg
ICAgICB2b2lkIGNsb3NlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlUG9ydENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5l
bC5jcHAKaW5kZXggMzY3ZjdlZC4uOTE3N2Q0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0Q2hhbm5lbC5jcHAKQEAgLTMwLDE4ICszMCwyOSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogCisjaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAKLVBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsOjpFdmVudERhdGE+IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorUGFzc093blB0cjxNZXNzYWdlUG9ydENo
YW5uZWw6OkV2ZW50RGF0YT4gTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewotICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgRXZlbnREYXRhKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBFdmVudERhdGEobWVzc2FnZSwgcmVjZWlwdHMpKTsKIH0KIAotTWVzc2FnZVBvcnRDaGFubmVs
OjpFdmVudERhdGE6OkV2ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCitN
ZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6RXZlbnREYXRhKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheT4gcmVjZWlwdHMpCiAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKLSAgICAsIG1fY2hhbm5l
bHMoY2hhbm5lbHMpCisgICAgLCBtX3JlY2VpcHRzKHJlY2VpcHRzKQoreworfQorCitQYXNzUmVm
UHRyPFRyYW5zZmVyYWJsZT4gTWVzc2FnZVBvcnRDaGFubmVsOjp0cmFuc2ZlckluKFBhc3NPd25Q
dHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gdHJhbnNmZXJhYmxlUmVjZWlwdCwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKIHsKKyAgICBBU1NFUlQodHJhbnNmZXJhYmxlUmVjZWlwdC0+
YXNNZXNzYWdlUG9ydENoYW5uZWwoKSk7CisgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4g
Y2hhbm5lbCA9IGFkb3B0UHRyKHRyYW5zZmVyYWJsZVJlY2VpcHQubGVha1B0cigpLT5hc01lc3Nh
Z2VQb3J0Q2hhbm5lbCgpKTsKKyAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBNZXNzYWdl
UG9ydDo6Y3JlYXRlKGNvbnRleHQpOworICAgIHBvcnQtPmVudGFuZ2xlKGNoYW5uZWwucmVsZWFz
ZSgpKTsKKyAgICByZXR1cm4gcG9ydC5yZWxlYXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaAppbmRleCAwNzY2OGE0
Li4wN2YzN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFu
bmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIK
IAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
NTAsMTQgKzUxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAotICAgIC8v
IFRoZSBvdmVyd2hlbG1pbmdseSBjb21tb24gY2FzZSBpcyBzZW5kaW5nIGEgc2luZ2xlIHBvcnQs
IHNvIGhhbmRsZSB0aGF0IGVmZmljaWVudGx5IHdpdGggYW4gaW5saW5lIGJ1ZmZlciBvZiBzaXpl
IDEuCi0gICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIDE+IE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5OwotCiAgICAgLy8gTWVzc2FnZVBvcnRDaGFubmVsIGlzIGEg
cGxhdGZvcm0taW5kZXBlbmRlbnQgaW50ZXJmYWNlIHRvIHRoZSByZW1vdGUgc2lkZSBvZiBhIG1l
c3NhZ2UgY2hhbm5lbC4KICAgICAvLyBJdCBhY3RzIGFzIGEgd3JhcHBlciBhcm91bmQgdGhlIHBs
YXRmb3JtLWRlcGVuZGVudCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCBpbXBsZW1lbnRhdGlv
biB3aGljaCBlbnN1cmVzIHRoYXQgdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBjbG9zZSgpIG1ldGhv
ZCBpcyBpbnZva2VkIGJlZm9yZSBkZXN0cnVjdGlvbi4KLSAgICBjbGFzcyBNZXNzYWdlUG9ydENo
YW5uZWwgeworICAgIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbCA6IHB1YmxpYyBUcmFuc2ZlcmFi
bGVSZWNlaXB0IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVzc2FnZVBvcnRDaGFu
bmVsKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgorICAgICAgICBNZXNz
YWdlUG9ydENoYW5uZWwqIGFzTWVzc2FnZVBvcnRDaGFubmVsKCkgeyByZXR1cm4gdGhpczsgfQor
CisgICAgICAgIFBhc3NSZWZQdHI8VHJhbnNmZXJhYmxlPiB0cmFuc2ZlckluKFBhc3NPd25QdHI8
VHJhbnNmZXJhYmxlUmVjZWlwdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICAgICAg
Ym9vbCBpc0ZsYXR0ZW5hYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgICAgICBz
dGF0aWMgdm9pZCBjcmVhdGVDaGFubmVsKFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+LCBQYXNzUmVm
UHRyPE1lc3NhZ2VQb3J0Pik7CiAKICAgICAgICAgLy8gQ3JlYXRlcyBhIG5ldyB3cmFwcGVyIGZv
ciB0aGUgcGFzc2VkIGNoYW5uZWwuCkBAIC04MiwxNSArODUsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBjbGFzcyBFdmVudERhdGEgewogICAgICAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRXZlbnREYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1
YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2ZW50RGF0YT4gY3JlYXRlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENo
YW5uZWxBcnJheT4pOworICAgICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8RXZlbnREYXRhPiBj
cmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPFRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogCiAgICAgICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIG1lc3NhZ2UoKSB7IHJldHVybiBtX21lc3NhZ2UuZ2V0KCk7IH0KLSAgICAgICAgICAgIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKCkgeyByZXR1cm4gbV9j
aGFubmVscy5yZWxlYXNlKCk7IH0KKyAgICAgICAgICAgIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxl
UmVjZWlwdEFycmF5PiByZWNlaXB0cygpIHsgcmV0dXJuIG1fcmVjZWlwdHMucmVsZWFzZSgpOyB9
CiAKICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIEV2ZW50RGF0YShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4pOworICAgICAgICAgICAgRXZlbnREYXRhKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4p
OwogICAgICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9tZXNzYWdlOwot
ICAgICAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBtX2NoYW5uZWxzOwor
ICAgICAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gbV9yZWNlaXB0czsK
ICAgICAgICAgfTsKIAogICAgICAgICAvLyBTZW5kcyBhIG1lc3NhZ2UgYW5kIG9wdGlvbmFsIGNs
b25lZCBwb3J0IHRvIHRoZSByZW1vdGUgcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3BTdGF0ZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5o
CmluZGV4IDBhOTgzMTMuLmQyZDkxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3BTdGF0ZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaApA
QCAtMzAsNiArMzAsMTEgQEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgogCitjbGFzcyBUcmFuc2ZlcmFibGU7CitjbGFzcyBUcmFuc2ZlcmFi
bGVSZWNlaXB0OwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5z
ZmVyYWJsZUFycmF5OwordHlwZWRlZiBWZWN0b3I8T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+
LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwpAQCAtNDIsNyArNDcsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbml0UG9wU3RhdGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPik7CiAgICAgYm9vbCBpc1BvcFN0YXRlRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZU9iamVjdC5nZXQoKTsgfSAgICAKKyAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU9iamVjdC5nZXQoKTsgfQorICAgIFRyYW5zZmVyYWJs
ZUFycmF5KiBkYXRhRGVwZW5kZW5jaWVzKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiBwcml2YXRl
OgogICAgIFBvcFN0YXRlRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmFuc2ZlcmFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcyZWU3NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuY3BwCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJs
ZS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJs
ZVJlY2VpcHQuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IFRyYW5zZmVyYWJs
ZTo6dHJhbnNmZXJBbGxPdXQoVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyYWJsZXMsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGlmICghdHJhbnNmZXJhYmxlcyB8fCAhdHJhbnNmZXJhYmxl
cy0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEhhc2hTZXQgdXNl
ZCB0byBlZmZpY2llbnRseSBjaGVjayBmb3IgZHVwbGljYXRlcyBpbiB0aGUgcGFzc2VkLWluIGFy
cmF5LgorICAgIEhhc2hTZXQ8VHJhbnNmZXJhYmxlKj4gdHJhbnNmZXJhYmxlU2V0OworCisgICAg
Ly8gV2FsayB0aGUgaW5jb21pbmcgYXJyYXkgLSBpZiB0aGVyZSBhcmUgYW55IGR1cGxpY2F0ZSB0
cmFuc2ZlcmFibGVzLCBvciB0cmFuc2ZlcnJlZCBwb3J0cyBvciBjbG9zZWQgcG9ydHMsIHRocm93
IGFuIGVycm9yIChwZXIgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYykuCisgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXplKCk7ICsraSkgewor
ICAgICAgICBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSA9ICgqdHJhbnNmZXJhYmxlcylbaV0u
Z2V0KCk7CisgICAgICAgIGlmICghdHJhbnNmZXJhYmxlIHx8IHRyYW5zZmVyYWJsZS0+aXNUcmFu
c2ZlckNsb3NlZCgpIHx8IHRyYW5zZmVyYWJsZVNldC5jb250YWlucyh0cmFuc2ZlcmFibGUpKSB7
CisgICAgICAgICAgICBlYyA9IERBVEFfQ0xPTkVfRVJSOworICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgdHJhbnNmZXJhYmxlU2V0LmFkZCh0cmFuc2ZlcmFi
bGUpOworICAgIH0KKworICAgIC8vIFBhc3NlZC1pbiBUcmFuc2ZlcmFibGVzIHBhc3NlZCB2YWxp
ZGl0eSBjaGVja3MsIHNvIHdlIGNhbiB0cmFuc2ZlciB0aGVtIG91dC4KKyAgICBPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0QXJyYXkgPSBhZG9wdFB0cihuZXcgVHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5KHRyYW5zZmVyYWJsZXMtPnNpemUoKSkpOworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwIDsgaSA8IHRyYW5zZmVyYWJsZXMtPnNpemUoKSA7ICsraSkgeworICAg
ICAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gcmVjZWlwdCA9ICgqdHJhbnNmZXJhYmxl
cylbaV0tPnRyYW5zZmVyT3V0KGVjKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7IC8vIENhbid0IGdl
bmVyYXRlIGV4Y2VwdGlvbiBoZXJlIGlmIHBhc3NlZCBhYm92ZSBjaGVja3MuCisgICAgICAgICgq
cmVjZWlwdEFycmF5KVtpXSA9IHJlY2VpcHQucmVsZWFzZSgpOworICAgIH0KKyAgICByZXR1cm4g
cmVjZWlwdEFycmF5LnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyYW5zZmVyYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljc3Y2MyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJh
YmxlLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBUcmFuc2ZlcmFi
bGVfaAorI2RlZmluZSBUcmFuc2ZlcmFibGVfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TWVzc2FnZVBvcnQ7CitjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CitjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OworY2xhc3MgVHJhbnNmZXJhYmxlOworY2xhc3MgVHJhbnNmZXJhYmxlUmVj
ZWlwdDsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0
cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsKK3R5cGVkZWYgVmVjdG9yPE93
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Owor
CisvLyBUcmFuc2ZlcmFibGUgb2JqZWN0cyByZXByZXNlbnQgcmVzb3VyY2VzIHRoYXQgbWF5IGJl
IHNlbnQgYWxvbmcgd2l0aCBtZXNzYWdlcworLy8gdGhyb3VnaCB0aGUgRE9NIG1lc3NhZ2luZyBB
UEkuIEEgVHJhbnNmZXJhYmxlIG9iamVjdCBtYXkgYmUgdHJhbnNmZXJyZWQgb25jZS4KKy8vIElu
dGVybmFsbHksIHRyYW5zZmVycmluZyBhIFRyYW5zZmVyYWJsZSBtZWFucyB0dXJuaW5nIGl0IGlu
dG8gYSBUcmFuc2ZlcmFibGVSZWNlaXB0LAorLy8gZmVycnlpbmcgdGhhdCBUcmFuc2ZlcmFibGVS
ZWNlaXB0IHRocm91Z2ggdGhlIHN5c3RlbSBhbG9uZyB3aXRoIGEgbWVzc2FnZSwgYW5kCisvLyBl
dmVudHVhbGx5IHR1cm5pbmcgaXQgYmFjayBpbnRvIGEgVHJhbnNmZXJhYmxlIG9uY2UgdGhlIG1l
c3NhZ2UgaXMgcmVjZWl2ZWQuCisvLyBUaGlzIHNlY29uZCBUcmFuc2ZlcmFibGUgb2JqZWN0IGNh
biB0aGVuIGJlIHRyYW5zZmVyZWQgb25jZSBhZ2Fpbi4KK2NsYXNzIFRyYW5zZmVyYWJsZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFRyYW5zZmVyYWJsZT4geworcHVibGljOgorICAgIC8vIEFzIG1vcmUg
VHJhbnNmZXJhYmxlIHR5cGVzIGFyZSBhZGRlZCwgc29tZSBiaW5kaW5nIGNvZGUgbXVzdCBiZSB1
cGRhdGVkOgorICAgIC8vICAgdG9OYXRpdmVUcmFuc2ZlcmFibGUvdG9KU1RyYW5zZmVyYWJsZSBp
biBKU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorICAgIC8vICAgdG9OYXRpdmVUcmFuc2ZlcmFibGUv
dG9WOFRyYW5zZmVyYWJsZSBpbiBWOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorICAgIHZpcnR1YWwg
TWVzc2FnZVBvcnQqIGFzTWVzc2FnZVBvcnQoKSB7IHJldHVybiAwOyB9CisKKyAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gdHJhbnNmZXJPdXQoRXhjZXB0aW9uQ29k
ZSYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc2ZlckNsb3NlZCgpIGNvbnN0ID0gMDsK
KworICAgIHN0YXRpYyBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gdHJhbnNm
ZXJBbGxPdXQoVHJhbnNmZXJhYmxlQXJyYXkqLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICB2aXJ0
dWFsIH5UcmFuc2ZlcmFibGUoKSB7IH0KKworcHJvdGVjdGVkOgorICAgIFRyYW5zZmVyYWJsZSgp
IHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVHJhbnNmZXJh
YmxlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODhhZDJjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuY3BwCkBAIC0wLDAgKzEsNDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRyYW5zZmVy
YWJsZVJlY2VpcHQuaCIKKworI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IFRyYW5zZmVyYWJsZVJl
Y2VpcHQ6OnRyYW5zZmVyQWxsSW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFz
c093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQoreworICAgIGlmICgh
cmVjZWlwdHMgfHwgIXJlY2VpcHRzLT5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVBcnJheSA9IGFkb3B0
UHRyKG5ldyBUcmFuc2ZlcmFibGVBcnJheShyZWNlaXB0cy0+c2l6ZSgpKSk7CisgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCByZWNlaXB0cy0+c2l6ZSgpOyArK2kpCisgICAgICAgICgq
dHJhbnNmZXJhYmxlQXJyYXkpW2ldID0gKCpyZWNlaXB0cylbaV0tPnRyYW5zZmVySW4oKCpyZWNl
aXB0cylbaV0ucmVsZWFzZSgpLCBjb250ZXh0KTsKKyAgICByZXR1cm4gdHJhbnNmZXJhYmxlQXJy
YXkucmVsZWFzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mYmI0MmVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5z
ZmVyYWJsZVJlY2VpcHQuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVm
IFRyYW5zZmVyYWJsZVJlY2VpcHRfaAorI2RlZmluZSBUcmFuc2ZlcmFibGVSZWNlaXB0X2gKKwor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBNZXNzYWdlUG9ydENoYW5u
ZWw7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgVHJhbnNmZXJhYmxlOwor
Y2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRyYW5z
ZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5OwordHlwZWRlZiBWZWN0b3I8T3duUHRyPFRy
YW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CisKKy8vIEEg
VHJhbnNmZXJhYmxlUmVjZWlwdCBpcyBhIFRyYW5zZmVyYWJsZSBvYmplY3QgdGhhdCBpcyBiZWlu
ZyBzZW50IGFsb25nIHdpdGggc29tZQorLy8gbWVzc2FnZS4gSXQgbWF5IGxhdGVyIGJlIHJlZGVl
bWVkIGZvciBhIFRyYW5zZmVyYWJsZSBvYmplY3QgZXF1aXZhbGVudCB0byB0aGUgb25lCisvLyBm
cm9tIHdoaWNoIHRoaXMgVHJhbnNmZXJhYmxlUmVjZWlwdCB3YXMgY3JlYXRlZC4gQSBUcmFuc2Zl
cmFibGVSZWNlaXB0IG1heSBvbmx5CisvLyBiZSByZWRlZW1lZCBvbmNlLiBTb21lIFRyYW5zZmVy
YWJsZVJlY2VpcHRzIG1heSBiZSBmbGF0dGVuZWQgYnkgdGhlIHNlcmlhbGl6ZXIKKy8vIChhbiBl
dmVudCB0aGF0IG1heSBvY2N1ciBzaG91bGQsIGZvciBleGFtcGxlLCB0aGUgcmVjZWlwdCBuZWVk
IHRvIGJlIHNlbnQgYWNyb3NzCisvLyB0aGUgbmV0d29yayBvciBhbiBJUEMgYm91bmRhcnkpLiBP
dGhlcnMgbWF5IGhhdmUgc3BlY2lhbCBwbGF0Zm9ybS1zcGVjaWZpYyBzZW1hbnRpY3MKKy8vIHRo
YXQgYXJlIGludm9rZWQgYXQgdHJhbnNmZXIgdGltZS4KK2NsYXNzIFRyYW5zZmVyYWJsZVJlY2Vp
cHQgeworcHVibGljOgorICAgIHZpcnR1YWwgflRyYW5zZmVyYWJsZVJlY2VpcHQoKSB7IH0KKwor
ICAgIHZpcnR1YWwgTWVzc2FnZVBvcnRDaGFubmVsKiBhc01lc3NhZ2VQb3J0Q2hhbm5lbCgpIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGbGF0dGVuYWJsZSgpIGNvbnN0ID0gMDsK
KworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRyYW5zZmVySW4oUGFzc093
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpID0gMDsK
KworICAgIHN0YXRpYyBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlckFsbElu
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheT4pOworCitwcm90ZWN0ZWQ6CisgICAgVHJhbnNmZXJhYmxlUmVjZWlwdCgpIHsgfQorfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVHJhbnNmZXJhYmxlUmVjZWlw
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCBiZGEzZWUzLi5mNmNj
YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTI4Miw3ICsyODIs
NyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpwb3N0U3RhcnROZWdvdGlhdGlvblRhc2soKQogdm9p
ZCBQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgaW50JiwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpCiB7CiAgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gZCA9IGRhdGE7Ci0gICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KCksIGQpKTsKKyAgICBkaXNwYXRj
aEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+
KCksIGQpKTsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTaWduYWxpbmdFdmVu
dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXgg
NmNhNWIzNy4uYzI4MWQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtOTAsNiAr
OTAsOCBAQAogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJTdHlsZU1l
ZGlhLmgiCiAjaW5jbHVkZSAiU3VkZGVuVGVybWluYXRpb24uaCIKKyNpbmNsdWRlICJUcmFuc2Zl
cmFibGUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0UG9pbnQuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KQEAgLTEyMSwyMCArMTIzLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UG9zdE1lc3NhZ2VUaW1lciA6IHB1YmxpYyBUaW1lckJhc2UgewogcHVibGljOgotICAgIFBvc3RN
ZXNzYWdlVGltZXIoRE9NV2luZG93KiB3aW5kb3csIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgUGFzc1JlZlB0cjxE
T01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hh
bm5lbHMsIFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pCisgICAgUG9zdE1lc3NhZ2VUaW1l
cihET01XaW5kb3cqIHdpbmRvdywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4g
c291cmNlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMsIFNl
Y3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pCiAgICAgICAgIDogbV93aW5kb3cod2luZG93KQog
ICAgICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogICAgICAgICAsIG1fb3JpZ2luKHNvdXJjZU9y
aWdpbikKICAgICAgICAgLCBtX3NvdXJjZShzb3VyY2UpCi0gICAgICAgICwgbV9jaGFubmVscyhj
aGFubmVscykKKyAgICAgICAgLCBtX3JlY2VpcHRzKHJlY2VpcHRzKQogICAgICAgICAsIG1fdGFy
Z2V0T3JpZ2luKHRhcmdldE9yaWdpbikKICAgICB7CiAgICAgfQogCiAgICAgUGFzc1JlZlB0cjxN
ZXNzYWdlRXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAg
ewotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmNvbnRleHQsIG1fY2hhbm5lbHMucmVsZWFzZSgpKTsKLSAg
ICAgICAgcmV0dXJuIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCks
IG1fbWVzc2FnZSwgbV9vcmlnaW4sICIiLCBtX3NvdXJjZSk7CisgICAgICAgIE93blB0cjxUcmFu
c2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5z
ZmVyQWxsSW4oKmNvbnRleHQsIG1fcmVjZWlwdHMucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJu
IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLCBtX21lc3NhZ2Us
IG1fb3JpZ2luLCAiIiwgbV9zb3VyY2UpOwogICAgIH0KICAgICBTZWN1cml0eU9yaWdpbiogdGFy
Z2V0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KIApAQCAt
MTQ5LDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbV9tZXNzYWdlOwogICAgIFN0cmluZyBtX29yaWdpbjsKICAgICBSZWZQdHI8RE9NV2luZG93
PiBtX3NvdXJjZTsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5l
bHM7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gbV9yZWNlaXB0czsKICAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2luOwogfTsKIApAQCAtNzk4LDE1
ICs4MDAsMTUgQEAgQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihET01XaW5kb3c6OlBF
UlNJU1RFTlQpID09IHN0YXRpY19jYXN0PGludD4oQXN5bmMKIAogI2VuZGlmCiAKLXZvaWQgRE9N
V2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01X
aW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERPTVdpbmRvdzo6cG9zdE1l
c3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVy
YWJsZSogdHJhbnNmZXJhYmxlLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93
KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9y
dHM7Ci0gICAgaWYgKHBvcnQpCi0gICAgICAgIHBvcnRzLmFwcGVuZChwb3J0KTsKLSAgICBwb3N0
TWVzc2FnZShtZXNzYWdlLCAmcG9ydHMsIHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CisgICAg
VHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlczsKKyAgICBpZiAodHJhbnNmZXJhYmxlKQor
ICAgICAgICB0cmFuc2ZlcmFibGVzLmFwcGVuZCh0cmFuc2ZlcmFibGUpOworICAgIHBvc3RNZXNz
YWdlKG1lc3NhZ2UsICZ0cmFuc2ZlcmFibGVzLCB0YXJnZXRPcmlnaW4sIHNvdXJjZSwgZWMpOwog
fQogCi12b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzLCBjb25zdCBT
dHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcywgY29uc3Qg
U3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTgyMiw3ICs4MjQs
NyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lcwogICAgICAgICB9CiAgICAgfQogCi0gICAgT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNl
bnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheT4gcmVjZWlwdHMgPSBUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KHRyYW5zZmVyYWJs
ZXMsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKIApAQCAtODM0LDcgKzgzNiw3
IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzCiAgICAgU3RyaW5nIHNvdXJjZU9yaWdpbiA9IHNv
dXJjZURvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOwogCiAgICAgLy8gU2No
ZWR1bGUgdGhlIG1lc3NhZ2UuCi0gICAgUG9zdE1lc3NhZ2VUaW1lciogdGltZXIgPSBuZXcgUG9z
dE1lc3NhZ2VUaW1lcih0aGlzLCBtZXNzYWdlLCBzb3VyY2VPcmlnaW4sIHNvdXJjZSwgY2hhbm5l
bHMucmVsZWFzZSgpLCB0YXJnZXQuZ2V0KCkpOworICAgIFBvc3RNZXNzYWdlVGltZXIqIHRpbWVy
ID0gbmV3IFBvc3RNZXNzYWdlVGltZXIodGhpcywgbWVzc2FnZSwgc291cmNlT3JpZ2luLCBzb3Vy
Y2UsIHJlY2VpcHRzLnJlbGVhc2UoKSwgdGFyZ2V0LmdldCgpKTsKICAgICB0aW1lci0+c3RhcnRP
bmVTaG90KDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCBhMmFkODA5Li5kYjJl
M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTc0LDcgKzc0LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIAotICAgIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJyYXk7CisgICAgY2xh
c3MgVHJhbnNmZXJhYmxlOworICAgIGNsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisgICAgdHlw
ZWRlZiBWZWN0b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5Owor
ICAgIHR5cGVkZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5OwogCiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApA
QCAtMjI4LDkgKzIzMSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwYWdl
RGVzdHJveWVkKCk7CiAgICAgICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbigpOwogCi0gICAgICAg
IHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3Nh
Z2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwg
RE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVz
c2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJh
YmxlQXJyYXkqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2Us
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2Ug
dXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAgdm9pZCBwb3N0
TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2Fn
ZVBvcnQqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlKiwgY29uc3QgU3RyaW5nJiB0
YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAg
IHZvaWQgcG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUaW1lcj4p
OwogCiAgICAgICAgIHZvaWQgc2Nyb2xsQnkoaW50IHgsIGludCB5KSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAppbmRleCA2MmYxYzMwLi5lMjFkMmZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCkBAIC0yMTUsNiArMjE1LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVm
aW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCiAgICAgICAg
IFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdl
UG9ydHMsIGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4pCiAgICAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKKyAgICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2
b2lkIHdlYmtpdFBvc3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBp
biBbT3B0aW9uYWxdIEFycmF5IHRyYW5zZmVyTGlzdCwgaW4gRE9NU3RyaW5nIHRhcmdldE9yaWdp
bikKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgLy8g
VGhlcmUncyBubyBnb29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRp
bmdzLCBzbyBmb3Igbm93IGp1c3QgYWxsb3cgcGFzc2luZyBpbiBhIHNpbmdsZSBwb3J0LgogICAg
ICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2Uo
aW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gTWVzc2FnZVBv
cnQgbWVzc2FnZVBvcnQsIGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3IuaAppbmRleCA5YWRlOWM4Li4yZjRjZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCQ3Vyc29yLmgKQEAgLTQzLDYgKzQzLDggQEAgY2xhc3MgSURCUmVxdWVzdDsKIGNsYXNzIElE
QlRyYW5zYWN0aW9uOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKK2NsYXNzIFRyYW5zZmVyYWJsZTsKK3R5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsKIAogY2xhc3MgSURCQ3Vy
c29yIDogcHVibGljIFJlZkNvdW50ZWQ8SURCQ3Vyc29yPiB7CiBwdWJsaWM6CkBAIC02Myw2ICs2
NSw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkgY29uc3Q7CiAgICAg
UGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUoKSBjb25zdDsKKyAgICAvLyBBbiBJbmRleGVkREIg
b25seSBob2xkcyBmbGF0dGVuZWQgZGF0YS4KKyAgICBUcmFuc2ZlcmFibGVBcnJheSogdmFsdWVE
ZXBlbmRlbmNpZXMoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgSURCQW55KiBzb3VyY2UoKSBj
b25zdDsKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gdXBkYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIEV4Y2VwdGlvbkNv
ZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRl
eHQuY3BwCmluZGV4IDU0YjViYTguLmQzNmQyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcApAQCAtNDcsMjYgKzQ3LDI1IEBAIERl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OkRlZGljYXRlZFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHVzCiB9CiAKIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdl
IHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi12b2lkIERlZGljYXRlZFdv
cmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsKLSAgICBpZiAocG9ydCkK
LSAgICAgICAgcG9ydHMuYXBwZW5kKHBvcnQpOwotICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZw
b3J0cywgZWMpOworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZXM7CisgICAgaWYg
KHRyYW5zZmVyYWJsZSkKKyAgICAgICAgdHJhbnNmZXJhYmxlcy5hcHBlbmQodHJhbnNmZXJhYmxl
KTsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmdHJhbnNmZXJhYmxlcywgZWMpOwogfQogCiB2
b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBwb3N0
TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxNZXNzYWdlUG9ydEFycmF5Kj4oMCksIGVjKTsK
KyAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxUcmFuc2ZlcmFibGUqPigwKSwg
ZWMpOwogfQogCi12b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFy
cmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERlZGljYXRlZFdvcmtlckNvbnRl
eHQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0gICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4gcHJlcGFyYXRpb24gZm9yIHNlbmRpbmcg
aXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMgPSBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhwb3J0cywgZWMp
OworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0gVHJhbnNm
ZXJhYmxlOjp0cmFuc2ZlckFsbE91dCh0cmFuc2ZlcmFibGVzLCBlYyk7CiAgICAgaWYgKGVjKQog
ICAgICAgICByZXR1cm47Ci0gICAgdGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkucG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlLCBjaGFubmVscy5yZWxlYXNlKCkpOworICAgIHRo
cmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVz
c2FnZSwgcmVjZWlwdHMucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBFeGNlcHRpb25D
b2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmgKaW5kZXggZGJhNTJhZS4uM2ZhNjRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKQEAgLTU2LDkgKzU2LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAvLyBFdmVudFRhcmdldAogICAgICAgICB2aXJ0dWFsIERlZGlj
YXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpIHsgcmV0dXJuIHRo
aXM7IH0KICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBF
eGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+LCBUcmFuc2ZlcmFibGVBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJp
bmRpbmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIE1lc3NhZ2VQb3J0KiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgVHJhbnNmZXJhYmxlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIobWVzc2FnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsCmluZGV4IDIyZDM1MjUuLmIwZmIzMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LmlkbApAQCAtNDMsNiArNDMsOCBAQCBtb2R1bGUgdGhyZWFkcyB7CiAjaWYgZGVmaW5lZChMQU5H
VUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCiAgICAgICAgIFtDdXN0b21d
IHZvaWQgcG9zdE1lc3NhZ2UoaW4gYW55IG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gQXJyYXkgbWVz
c2FnZVBvcnRzKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtD
dXN0b21dIHZvaWQgd2Via2l0UG9zdE1lc3NhZ2UoaW4gYW55IG1lc3NhZ2UsIGluIFtPcHRpb25h
bF0gQXJyYXkgdHJhbnNmZXJMaXN0KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAjZWxzZQogICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGV4cG9zZSBhbiBhcnJh
eSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBhbGxvdyBwYXNzaW5nIGlu
IGEgc2luZ2xlIHBvcnQuCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1l
c3NhZ2UsIGluIFtPcHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcAppbmRleCAyNDAwMmU0Li5l
NTZmOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4
dC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlclRocmVhZC5oIgogCkBAIC00NCw5ICs0NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVhdGVDb25uZWN0RXZlbnQoUGFzc1JlZlB0
cjxNZXNzYWdlUG9ydD4gcG9ydCkKIHsKLSAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCA9
IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KDEsIHBv
cnQpKSk7CisgICAgUmVmUHRyPFRyYW5zZmVyYWJsZT4gdHJhbnNmZXJhYmxlKHBvcnQpOworICAg
IFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoYWRvcHRQ
dHIobmV3IFRyYW5zZmVyYWJsZUFycmF5KDEsIHRyYW5zZmVyYWJsZSkpKTsKICAgICBldmVudC0+
aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7Ci0gICAg
cmV0dXJuIGV2ZW50OworICAgIHJldHVybiBldmVudC5yZWxlYXNlKCk7CiB9CiAKIFNoYXJlZFdv
cmtlckNvbnRleHQ6OlNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBTaGFyZWRXb3JrZXJUaHJlYWQq
IHRocmVhZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCAyMzdiNjEwLi44MTlhMGEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC04NiwyNiArODYsMjYgQEAgV29ya2Vy
Ojp+V29ya2VyKCkKIH0KIAogLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRo
ZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLXZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBv
cnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqIHRyYW5zZmVy
YWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsK
LSAgICBpZiAocG9ydCkKLSAgICAgICAgcG9ydHMuYXBwZW5kKHBvcnQpOwotICAgIHBvc3RNZXNz
YWdlKG1lc3NhZ2UsICZwb3J0cywgZWMpOworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVy
YWJsZXM7CisgICAgaWYgKHRyYW5zZmVyYWJsZSkKKyAgICAgICAgdHJhbnNmZXJhYmxlcy5hcHBl
bmQodHJhbnNmZXJhYmxlKTsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmdHJhbnNmZXJhYmxl
cywgZWMpOwogfQogCiB2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHBvc3RN
ZXNzYWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PE1lc3NhZ2VQb3J0QXJyYXkqPigwKSwgZWMpOwor
ICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PFRyYW5zZmVyYWJsZSo+KDApLCBl
Yyk7CiB9CiAKLXZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxl
cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4g
cHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgotICAgIE93
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMgPSBNZXNzYWdlUG9ydDo6ZGlz
ZW50YW5nbGVQb3J0cyhwb3J0cywgZWMpOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+IHJlY2VpcHRzID0gVHJhbnNmZXJhYmxlOjp0cmFuc2ZlckFsbE91dCh0cmFuc2ZlcmFi
bGVzLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0UHJv
eHktPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UsIGNoYW5uZWxzLnJlbGVhc2Uo
KSk7CisgICAgbV9jb250ZXh0UHJveHktPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3Nh
Z2UsIHJlY2VpcHRzLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgV29ya2VyOjp0ZXJtaW5hdGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggOGU0ZWMzYS4uNzYwMmZjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5oCkBAIC01Nyw5ICs1Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBXb3JrZXIqIHRvV29ya2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAg
IHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3Nh
Z2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlQXJyYXkqLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0
aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2Uo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0Kiwg
RXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqLCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aWRsCmluZGV4IDc2Mzc1NjkuLjM4ZTk2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwK
QEAgLTQyLDYgKzQyLDggQEAgbW9kdWxlIHRocmVhZHMgewogI2lmIGRlZmluZWQoTEFOR1VBR0Vf
SkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgICAgICBbQ3VzdG9tXSB2b2lk
IHBvc3RNZXNzYWdlKGluIFNlcmlhbGlzZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9u
YWxdIEFycmF5IG1lc3NhZ2VQb3J0cykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgICAgICBbQ3VzdG9tXSB2b2lkIHdlYmtpdFBvc3RNZXNzYWdlKGluIFNlcmlhbGlzZWRT
Y3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IHRyYW5zZmVyTGlzdCkKKyAg
ICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgLy8gVGhlcmUn
cyBubyBnb29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRpbmdzLCBz
byBmb3Igbm93IGp1c3QgYWxsb3cgcGFzc2luZyBpbiBhIHNpbmdsZSBwb3J0LgogICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0
aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dFByb3h5LmgKaW5kZXggODc5OGY1MS4uNDM1YTg4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCkBAIC0zMywxMyArMzMsMTUgQEAK
IAogI2lmIEVOQUJMRShXT1JLRVJTKQogCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKKyAgICB0eXBlZGVm
IFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheTsKICAgICBjbGFzcyBXb3JrZXI7CiAKICAgICAvLyBBIHByb3h5IHRvIHRhbGsgdG8g
dGhlIHdvcmtlciBjb250ZXh0LgpAQCAtNTMsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKSA9IDA7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250
ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXk+KSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCAwYTZmOGNiLi4yNGFhM2IzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNDgsMTUg
KzQ4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2FnZVdvcmtlckNvbnRl
eHRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzaz4gY3JlYXRlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICBzdGF0aWMgUGFzc093blB0cjxNZXNz
YWdlV29ya2VyQ29udGV4dFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2Vp
cHRzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2VyQ29u
dGV4dFRhc2sobWVzc2FnZSwgY2hhbm5lbHMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBNZXNzYWdlV29ya2VyQ29udGV4dFRhc2sobWVzc2FnZSwgcmVjZWlwdHMpKTsKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBjaGFubmVscykKKyAgICBNZXNzYWdlV29ya2VyQ29udGV4dFRhc2soUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVj
ZWlwdEFycmF5PiByZWNlaXB0cykKICAgICAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKLSAgICAg
ICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICAgICAsIG1fcmVjZWlwdHMocmVjZWlwdHMp
CiAgICAgewogICAgIH0KIApAQCAtNjQsMjcgKzY0LDI3IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBBU1NFUlQoc2NyaXB0Q29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogICAgICAgICBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29y
a2VyQ29udGV4dCo+KHNjcmlwdENvbnRleHQpOwotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqc2NyaXB0Q29udGV4dCwg
bV9jaGFubmVscy5yZWxlYXNlKCkpOwotICAgICAgICBjb250ZXh0LT5kaXNwYXRjaEV2ZW50KE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7CisgICAgICAg
IE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRyYW5zZmVyYWJsZVJl
Y2VpcHQ6OnRyYW5zZmVyQWxsSW4oKnNjcmlwdENvbnRleHQsIG1fcmVjZWlwdHMucmVsZWFzZSgp
KTsKKyAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0
cmFuc2ZlcmFibGVzLnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7CiAgICAgICAgIGNvbnRleHQtPnRo
cmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVj
dChjb250ZXh0LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfQogCiBwcml2YXRlOgogICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKLSAgICBPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CisgICAgT3duUHRyPFRyYW5zZmVyYWJs
ZVJlY2VpcHRBcnJheT4gbV9yZWNlaXB0czsKIH07CiAKIGNsYXNzIE1lc3NhZ2VXb3JrZXJUYXNr
IDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisg
ICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXk+IHJlY2VpcHRzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJv
eHkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VXb3JrZXJUYXNr
KG1lc3NhZ2UsIGNoYW5uZWxzLCBtZXNzYWdpbmdQcm94eSkpOworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IE1lc3NhZ2VXb3JrZXJUYXNrKG1lc3NhZ2UsIHJlY2VpcHRzLCBtZXNzYWdpbmdQ
cm94eSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNZXNzYWdlV29ya2VyVGFzayhQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQ
cm94eSkKKyAgICBNZXNzYWdlV29ya2VyVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2Vp
cHRzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCiAgICAgICAgIDogbV9t
ZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgICwgbV9jaGFubmVscyhjaGFubmVscykKKyAgICAgICAg
LCBtX3JlY2VpcHRzKHJlY2VpcHRzKQogICAgICAgICAsIG1fbWVzc2FnaW5nUHJveHkobWVzc2Fn
aW5nUHJveHkpCiAgICAgewogICAgIH0KQEAgLTk1LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAoIXdvcmtlck9iamVjdCB8fCBtX21lc3NhZ2luZ1Byb3h5LT5hc2tlZFRvVGVybWlu
YXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0
QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnNjcmlwdENvbnRleHQs
IG1fY2hhbm5lbHMucmVsZWFzZSgpKTsKLSAgICAgICAgd29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2
ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7Cisg
ICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRyYW5zZmVy
YWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oKnNjcmlwdENvbnRleHQsIG1fcmVjZWlwdHMucmVs
ZWFzZSgpKTsKKyAgICAgICAgd29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLCBtX21lc3NhZ2UpKTsKICAgICB9CiAK
IHByaXZhdGU6CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9tZXNzYWdlOwot
ICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKKyAgICBPd25Q
dHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBtX3JlY2VpcHRzOwogICAgIFdvcmtlck1lc3Nh
Z2luZ1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OwogfTsKIApAQCAtMjQyLDIxICsyNDIsMjEgQEAg
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwm
IHNjcmlwdFVSTCwgY29uc3QgU3RyaW4KICAgICB0aHJlYWQtPnN0YXJ0KCk7CiB9CiAKLXZvaWQg
V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzKQordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewot
ICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soTWVzc2FnZVdvcmtlclRhc2s6
OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscywgdGhpcykpOworICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soTWVzc2FnZVdvcmtlclRhc2s6OmNyZWF0ZShtZXNzYWdlLCByZWNl
aXB0cywgdGhpcykpOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2Fn
ZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCit2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dvcmtlclRocmVhZCkgewogICAgICAgICArK21f
dW5jb25maXJtZWRNZXNzYWdlQ291bnQ7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2soTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hh
bm5lbHMpKTsKKyAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhNZXNz
YWdlV29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdlLCByZWNlaXB0cykpOwogICAgIH0g
ZWxzZQotICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250
ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAgIG1fcXVldWVkRWFy
bHlUYXNrcy5hcHBlbmQoTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSwg
cmVjZWlwdHMpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJDb250ZXh0KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDM3MzE0ODAuLmM3NGFiODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTU1LDEzICs1NSwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVzZSBtZXRo
b2RzIGluIHRoZSB3b3JrZXIgb2JqZWN0IHRocmVhZC4pCiAgICAgICAgIHZpcnR1YWwgdm9pZCBz
dGFydFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNz
YWdlVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICB2aXJ0dWFsIHZvaWQg
cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKIAogICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbnMg
b2YgV29ya2VyT2JqZWN0UHJveHkuCiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVzZSBtZXRob2Rz
IGluIHRoZSB3b3JrZXIgY29udGV4dCB0aHJlYWQuKQotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9z
dE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVj
dFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKaW5k
ZXggMzNlMGJjMy4uMDFhMWYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPYmplY3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2Jq
ZWN0UHJveHkuaApAQCAtMzMsMTggKzMzLDIwIEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAor
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldvcmtlclJlcG9y
dGluZ1Byb3h5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBNZXNzYWdlUG9y
dENoYW5uZWw7CisgICAgY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKKyAgICB0eXBlZGVmIFZl
Y3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheTsKIAogICAgIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIG9iamVjdC4KICAg
ICBjbGFzcyBXb3JrZXJPYmplY3RQcm94eSA6IHB1YmxpYyBXb3JrZXJSZXBvcnRpbmdQcm94eSB7
CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9i
amVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDQy
MWMxZmUuLjY3ODQyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTEtMDgtMDggIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisgICAg
ICAgIE1ha2UgTWVzc2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gUmVwYXJlbnQgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsIHRvIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQKKyAgICAgICAgLSBFeHRyYWN0IGNvbnZlcnNp
b24gZnJvbSBXZWJNZXNzYWdlUG9ydENoYW5uZWwgdG8vZnJvbSBNZXNzYWdlUG9ydENoYW5uZWwg
YXMKKyAgICAgICAgICB0aGUgVHJhbnNmZXJhYmxlLWdlbmVyaWMgZnJvbVdlYi90b1dlYgorICAg
ICAgICAtIEV4cG9zZSBmbGF0dGVuUmVjZWlwdExpc3QgZnJvbSBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgYW5kIHVzZSB0aGlzIHdoZW4gYQorICAgICAgICAgIG1lc3NhZ2UgbmVlZHMgdG8gYmUgc2Vu
dCBhY3Jvc3MgYW4gSVBDIGNoYW5uZWwuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAg
ICAqIHB1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVzc2FnZVBvcnRDaGFubmVsOjphc1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbDo6aXNGbGF0dGVuYWJsZSk6CisgICAgICAgICog
cHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJU
cmFuc2ZlcmFibGVSZWNlaXB0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oLgorICAgICAgICAoV2ViS2l0OjpXZWJU
cmFuc2ZlcmFibGVSZWNlaXB0Ojphc1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OldlYlRyYW5zZmVyYWJsZVJlY2VpcHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojp+V2ViVHJhbnNmZXJhYmxl
UmVjZWlwdCk6CisgICAgICAgICogcHVibGljL1dlYldvcmtlci5oOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJXb3JrZXJDbGllbnQuaDoKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6
OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWw6OnRyeUdldE1lc3NhZ2VGcm9tUmVtb3RlKToKKyAgICAgICAgKiBzcmMvV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpmbGF0dGVuUmVjZWlwdExpc3QpOgorICAgICAgICAqIHNyYy9XZWJTaGFy
ZWRXb3JrZXJJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojpmcm9t
V2ViKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYkFs
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRvV2ViKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6dG9XZWJBbGwpOgorICAgICAg
ICAqIHNyYy9XZWJXb3JrZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFz
ZTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckJhc2U6OnBvc3RNZXNzYWdlVGFzayk6CisgICAgICAgICogc3JjL1dlYldvcmtlckJhc2UuaDoK
KyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9X
b3JrZXJDb250ZXh0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6
OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29y
a2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0VGFzayk6CisgICAgICAg
ICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViV29ya2VySW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckltcGw6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJDb250ZXh0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckltcGw6OnBvc3RNZXNz
YWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiBzcmMvV2ViV29ya2VySW1wbC5oOgorCiAy
MDExLTA4LTA0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmlu
ZGV4IGI5N2E2N2MuLjBlZmE0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTI4
MCw2ICsyODAsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dElucHV0VHlwZS5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRSdW4uaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJUaHJlYWRTYWZlRGF0YS5oJywKKyAgICAgICAgICAgICAgICAncHVibGlj
L1dlYlRyYW5zZmVyYWJsZVJlY2VpcHQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJV
UkwuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxFcnJvci5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlVSTExvYWRlci5oJywKQEAgLTU2NSw2ICs1NjYsNyBAQAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViU3RyaW5nLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJUZXh0UnVuLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJUaHJlYWRTYWZlRGF0YS5j
cHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJVUkxMb2FkVGltaW5nLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxSZXF1ZXN0
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZXNz
YWdlUG9ydENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbC5oCmluZGV4IDI4OGJkNTUuLjdkNmM5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oCkBAIC0z
Miw2ICszMiw3IEBACiAjZGVmaW5lIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbF9oCiAKICNpbmNsdWRl
ICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCiAjaW5j
bHVkZSAiV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzksMTkgKzQwLDE5
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsQ2xpZW50
OwogY2xhc3MgV2ViU3RyaW5nOwogCi10eXBlZGVmIFdlYlZlY3RvcjxjbGFzcyBXZWJNZXNzYWdl
UG9ydENoYW5uZWwqPiBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheTsKLQogLy8gUHJvdmlkZXMg
YW4gaW50ZXJmYWNlIHRvIGEgTWVzc2FnZSBQb3J0IENoYW5uZWwgaW1wbGVtZW50YXRpb24uICBU
aGUgb2JqZWN0IG93bnMgaXRzZWxmIGFuZAogLy8gaXMgc2lnbmFsbGVkIHRoYXQgaXRzIG5vdCBu
ZWVkZWQgYW55bW9yZSB3aXRoIHRoZSBkZXN0cm95KCkgY2FsbC4KLWNsYXNzIFdlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbCB7CitjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWwgOiBwdWJsaWMgV2ViVHJh
bnNmZXJhYmxlUmVjZWlwdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChX
ZWJNZXNzYWdlUG9ydENoYW5uZWxDbGllbnQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3koKSA9IDA7CiAgICAgLy8gV2ViS2l0IHZlcnNpb25zIG9mIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
Q2hhbm5lbC4KICAgICB2aXJ0dWFsIHZvaWQgZW50YW5nbGUoV2ViTWVzc2FnZVBvcnRDaGFubmVs
KikgPSAwOwogICAgIC8vIENhbGxlZSByZWNlaXZlcyBvd25lcnNoaXAgb2YgdGhlIHBhc3NlZCB2
ZWN0b3IuCi0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYsIFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB0cnlHZXRN
ZXNzYWdlKFdlYlN0cmluZyosIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBXZWJTdHJpbmcmLCBXZWJUcmFuc2ZlcmFi
bGVSZWNlaXB0QXJyYXkqKSA9IDA7CisgICAgdmlydHVhbCBib29sIHRyeUdldE1lc3NhZ2UoV2Vi
U3RyaW5nKiwgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JikgPSAwOworICAgIHZpcnR1YWwg
V2ViTWVzc2FnZVBvcnRDaGFubmVsKiBhc1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbCgpIHsgcmV0dXJu
IHRoaXM7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGbGF0dGVuYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKICAgICB+V2ViTWVzc2FnZVBvcnRDaGFubmVsKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGYwNWIyN2QuLjFmMzQ2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CkBAIC0zMywxMSArMzMsMTYgQEAKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUg
IldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIAotbmFtZXNwYWNlIFdl
YkNvcmUgeyBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7IH0KK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0OwordHlwZWRl
ZiBXZWJWZWN0b3I8Y2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCo+IFdlYlRyYW5zZmVyYWJs
ZVJlY2VpcHRBcnJheTsKIAogY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIHsKIHB1Ymxp
YzoKQEAgLTY0LDYgKzY5LDEzIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIHJl
cHJlc2VudGF0aW9uIG9mIHRoZSBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuCiAgICAgV0VCS0lU
X0VYUE9SVCBXZWJTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKIAorICAgIC8vIEZsYXR0ZW5zIGZs
YXR0ZW5hYmxlIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRzIHRvIHRoZSBnaXZlbiBzdHJpbmcgcmVw
cmVzZW50YXRpb24gb2YgYQorICAgIC8vIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgcmV0dXJu
aW5nIGEgbmV3IHJlcHJlc2VudGF0aW9uLiBTZXRzIHVuZmxhdHRlbmFibGVDb3VudE91dAorICAg
IC8vIHRvIHRoZSBudW1iZXIgb2YgdW5mbGF0dGVuYWJsZSByZWNlaXB0cyBpbiB0aGUgcGFzc2Vk
LWluIGFycmF5LgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlN0cmluZyBmbGF0dGVuUmVj
ZWlwdExpc3QoY29uc3QgV2ViU3RyaW5nJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eSYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QqIHVuZmxhdHRlbmFibGVDb3VudE91dCk7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KICAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mKTsKICAgICBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmI5ZjViMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmgKQEAgLTAsMCArMSw4MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdF9oCisjZGVmaW5lIFdlYlRyYW5zZmVyYWJsZVJlY2Vp
cHRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKKyNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KK3R5cGVkZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVS
ZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OworI2VuZGlmCit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWw7CitjbGFzcyBXZWJT
dHJpbmc7CisKK3R5cGVkZWYgV2ViVmVjdG9yPGNsYXNzIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQq
PiBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CisKK2NsYXNzIFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHQgeworcHVibGljOgorICAgIHZpcnR1YWwgV2ViTWVzc2FnZVBvcnRDaGFubmVsKiBhc1dl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNG
bGF0dGVuYWJsZSgpIGNvbnN0ID0gMDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAg
IC8vIFRoZXNlIGZ1bmN0aW9ucyBjb252ZXJ0IGJldHdlZW4gVHJhbnNmZXJhYmxlUmVjZWlwdHMg
YW5kIHRoZWlyIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQKKyAgICAvLyBjb3VudGVycGFydHMuIE5v
dGUgdGhhdCB0aGVzZSBjb252ZXJzaW9ucyBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMuIFRoZSAqQWxs
IG1ldGhvZHMKKyAgICAvLyBtYXAgdGhlIGNvbnZlcnNpb24gbWV0aG9kcyBhY3Jvc3MgdGhlIHBh
c3NlZC1pbiBBcnJheXMgKGNoZWNraW5nIGZvciBudWxsIG9yIGVtcHR5IEFycmF5cworICAgIC8v
IGluIHRoZSBwcm9jZXNzKS4KKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2Zl
cmFibGVSZWNlaXB0PiBmcm9tV2ViKFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqKTsKKyAgICBzdGF0
aWMgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCogdG9XZWIoV2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVj
ZWlwdCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheT4gZnJvbVdlYkFsbChjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqKTsK
KyAgICBzdGF0aWMgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KiB0b1dlYkFsbChjb25zdCBX
ZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqKTsKKyNlbmRpZgorCitwcm90ZWN0ZWQ6
CisgICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCgpIHsgfQorICAgIC8vIE5vdGU6IHB1cnBvc2Vm
dWxseSBub3QgYSB2aXJ0dWFsIGRlc3RydWN0b3IuCisgICAgfldlYlRyYW5zZmVyYWJsZVJlY2Vp
cHQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlci5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyLmgKaW5kZXggNjY0ZTVhZS4uOTA2ZDJlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyLmgKQEAgLTM2LDYgKzM2
LDggQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJU
cmFuc2ZlcmFibGVSZWNlaXB0OwordHlwZWRlZiBXZWJWZWN0b3I8Y2xhc3MgV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdCo+IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKIGNsYXNzIFdlYlVSTDsK
IGNsYXNzIFdlYldvcmtlckNsaWVudDsKIApAQCAtNTIsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KAogICAgICAgICBjb25zdCBXZWJTdHJpbmcm
LAotICAgICAgICBjb25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpID0gMDsKKyAgICAg
ICAgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsaWVu
dERlc3Ryb3llZCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViV29ya2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJXb3JrZXJDbGllbnQuaAppbmRleCBlYjJlNjNlLi41NGEyMzk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJDbGllbnQuaApAQCAtMzgsNiArMzgsOCBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOwog
Y2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDsKK3R5cGVkZWYg
V2ViVmVjdG9yPGNsYXNzIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqPiBXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXk7CiBjbGFzcyBXZWJXb3JrZXI7CiAKIC8vIFByb3ZpZGVzIGFuIGludGVyZmFj
ZSBiYWNrIHRvIHRoZSBpbi1wYWdlIHNjcmlwdCBvYmplY3QgZm9yIGEgd29ya2VyLgpAQCAtNDcs
NyArNDksNyBAQCBjbGFzcyBXZWJXb3JrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29tbW9uV29ya2Vy
Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9i
amVjdCgKICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiwKLSAgICAgICAgY29uc3QgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkmKSA9IDA7CisgICAgICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheSYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjb25maXJtTWVzc2FnZUZyb21X
b3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbC5jcHAKaW5kZXggNmU0ZGU0NC4uMWY1YmFlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNw
cApAQCAtMTgwLDE3ICsxODAsOSBAQCB2b2lkIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpw
b3N0TWVzc2FnZVRvUmVtb3RlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubgogICAgICAgICBy
ZXR1cm47CiAKICAgICBXZWJTdHJpbmcgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2UtPm1lc3NhZ2Uo
KS0+dG9XaXJlU3RyaW5nKCk7Ci0gICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBjaGFubmVscyA9IG1lc3NhZ2UtPmNoYW5uZWxzKCk7Ci0gICAgV2ViTWVzc2FnZVBv
cnRDaGFubmVsQXJyYXkqIHdlYkNoYW5uZWxzID0gMDsKLSAgICBpZiAoY2hhbm5lbHMuZ2V0KCkg
JiYgY2hhbm5lbHMtPnNpemUoKSkgewotICAgICAgICB3ZWJDaGFubmVscyA9IG5ldyBXZWJNZXNz
YWdlUG9ydENoYW5uZWxBcnJheShjaGFubmVscy0+c2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjaGFubmVscy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFdlYkNv
cmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKiBwbGF0Zm9ybUNoYW5uZWwgPSAoKmNoYW5u
ZWxzKVtpXS0+Y2hhbm5lbCgpOwotICAgICAgICAgICAgKCp3ZWJDaGFubmVscylbaV0gPSBwbGF0
Zm9ybUNoYW5uZWwtPndlYkNoYW5uZWxSZWxlYXNlKCk7Ci0gICAgICAgICAgICAoKndlYkNoYW5u
ZWxzKVtpXS0+c2V0Q2xpZW50KDApOwotICAgICAgICB9Ci0gICAgfQotICAgIG1fd2ViQ2hhbm5l
bC0+cG9zdE1lc3NhZ2UobWVzc2FnZVN0cmluZywgd2ViQ2hhbm5lbHMpOworICAgIE93blB0cjxX
ZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0gbWVzc2FnZS0+cmVj
ZWlwdHMoKTsKKyAgICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqIHdlYlJlY2VpcHRzID0g
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6dG9XZWJBbGwocmVjZWlwdHMuZ2V0KCkpOworICAgIG1f
d2ViQ2hhbm5lbC0+cG9zdE1lc3NhZ2UobWVzc2FnZVN0cmluZywgd2ViUmVjZWlwdHMpOwogfQog
CiBib29sIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90
ZShPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE+JiByZXN1bHQpCkBAIC0xOTks
MjAgKzE5MSwxMiBAQCBib29sIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNz
YWdlRnJvbVJlbW90ZShPd25QdHI8TWVzc2FnZVBvcnRDaGFubgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBXZWJTdHJpbmcgbWVzc2FnZTsKLSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxB
cnJheSB3ZWJDaGFubmVsczsKLSAgICBib29sIHJ2ID0gbV93ZWJDaGFubmVsLT50cnlHZXRNZXNz
YWdlKCZtZXNzYWdlLCB3ZWJDaGFubmVscyk7CisgICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5IHdlYlJlY2VpcHRzOworICAgIGJvb2wgcnYgPSBtX3dlYkNoYW5uZWwtPnRyeUdldE1lc3Nh
Z2UoJm1lc3NhZ2UsIHdlYlJlY2VpcHRzKTsKICAgICBpZiAocnYpIHsKLSAgICAgICAgT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKLSAgICAgICAgaWYgKHdlYkNoYW5u
ZWxzLnNpemUoKSkgewotICAgICAgICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcgTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkod2ViQ2hhbm5lbHMuc2l6ZSgpKSk7Ci0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHdlYkNoYW5uZWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBwbGF0Zm9ybUNoYW5uZWwg
PSBjcmVhdGUod2ViQ2hhbm5lbHNbaV0pOwotICAgICAgICAgICAgICAgIHdlYkNoYW5uZWxzW2ld
LT5zZXRDbGllbnQocGxhdGZvcm1DaGFubmVsLmdldCgpKTsKLSAgICAgICAgICAgICAgICAoKmNo
YW5uZWxzKVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3JtQ2hhbm5lbCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheT4gcmVjZWlwdHMgPSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojpmcm9tV2ViQWxs
KCZ3ZWJSZWNlaXB0cyk7CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNl
cmlhbGl6ZWRNZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZSht
ZXNzYWdlKTsKLSAgICAgICAgcmVzdWx0ID0gTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6
OmNyZWF0ZShzZXJpYWxpemVkTWVzc2FnZS5yZWxlYXNlKCksIGNoYW5uZWxzLnJlbGVhc2UoKSk7
CisgICAgICAgIHJlc3VsdCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUo
c2VyaWFsaXplZE1lc3NhZ2UucmVsZWFzZSgpLCByZWNlaXB0cy5yZWxlYXNlKCkpOwogICAgIH0K
IAogICAgIHJldHVybiBydjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDcxNDlhNGQuLjk5MmU5N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcApAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgogCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSAiVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2lu
Y2x1ZGUgIldlYlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTc5LDQgKzgxLDI1IEBAIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6b3BlcmF0
b3IgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KCkgY29uc3QKICAgICByZXR1cm4g
bV9wcml2YXRlLmdldCgpOwogfQogCitXZWJTdHJpbmcgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpmbGF0dGVuUmVjZWlwdExpc3QoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheSYgcmVjZWlwdHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiB1bmZsYXR0ZW5hYmxlQ291
bnQpIHsKKyAgICBzaXplX3QgdW5mbGF0dGVuYWJsZXNGb3VuZCA9IDA7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByZWNlaXB0cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoIXJlY2Vp
cHRzW2ldLT5pc0ZsYXR0ZW5hYmxlKCkpCisgICAgICAgICAgICArK3VuZmxhdHRlbmFibGVzRm91
bmQ7CisgICAgfQorICAgIGlmICh1bmZsYXR0ZW5hYmxlQ291bnQpCisgICAgICAgICp1bmZsYXR0
ZW5hYmxlQ291bnQgPSB1bmZsYXR0ZW5hYmxlc0ZvdW5kOworICAgIGlmICh1bmZsYXR0ZW5hYmxl
c0ZvdW5kID09IHJlY2VpcHRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2U7CisgICAg
T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gY29yZVJlY2VpcHRzID0gYWRvcHRQdHIo
bmV3IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheShyZWNlaXB0cy5zaXplKCkpKTsKKyAgICAvLyBm
cm9tV2ViKCkgbWF5IGhhdmUgdW53YW50ZWQgc2lkZS1lZmZlY3RzLCBzbyBvbmx5IGNvbnZlcnQg
ZmxhdHRlbmFibGUgcmVjZWlwdHMuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWNlaXB0
cy5zaXplKCk7ICsraSkKKyAgICAgICAgKCpjb3JlUmVjZWlwdHMpW2ldID0gcmVjZWlwdHNbaV0t
PmlzRmxhdHRlbmFibGUoKQorICAgICAgICAgICAgPyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojpm
cm9tV2ViKHJlY2VpcHRzW2ldKQorICAgICAgICAgICAgOiBudWxscHRyOworICAgIHJldHVybiBX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmZsYXR0ZW5SZWNlaXB0TGlzdChtZXNzYWdl
LCAqY29yZVJlY2VpcHRzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCmluZGV4IDRh
MzJmYjMuLjVhZTJlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNoYXJlZFdvcmtlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNoYXJlZFdvcmtlckltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ3Jvc3NU
aHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVs
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjI3ODY5NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcApAQCAtMCwwICsxLDg4IEBACisv
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
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKKwor
I2luY2x1ZGUgIlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgiCisjaW5jbHVkZSAiVHJhbnNm
ZXJhYmxlUmVjZWlwdC5oIgorI2luY2x1ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2lu
Y2x1ZGUgIldlYlN0cmluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gV2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYihXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KiByZWNlaXB0KQor
eworICAgIGlmIChXZWJNZXNzYWdlUG9ydENoYW5uZWwqIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCA9
IHJlY2VpcHQtPmFzV2ViTWVzc2FnZVBvcnRDaGFubmVsKCkpIHsKKyAgICAgICAgUmVmUHRyPFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBwbGF0Zm9ybUNoYW5uZWwgPSBQbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCk7CisgICAgICAgIHdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbC0+c2V0Q2xpZW50KHBsYXRmb3JtQ2hhbm5lbC5nZXQoKSk7Cisg
ICAgICAgIHJldHVybiBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShwbGF0Zm9ybUNoYW5uZWwp
OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IFdlYlRy
YW5zZmVyYWJsZVJlY2VpcHQ6OmZyb21XZWJBbGwoY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlw
dEFycmF5KiByZWNlaXB0cykKK3sKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
PiBpbXBvcnRlZFJlY2VpcHRzOworICAgIGlmIChyZWNlaXB0cyAmJiByZWNlaXB0cy0+c2l6ZSgp
KSB7CisgICAgICAgIGltcG9ydGVkUmVjZWlwdHMgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxl
UmVjZWlwdEFycmF5KHJlY2VpcHRzLT5zaXplKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZWNlaXB0cy0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKmltcG9ydGVkUmVj
ZWlwdHMpW2ldID0gZnJvbVdlYigoKnJlY2VpcHRzKVtpXSk7CisgICAgfQorICAgIHJldHVybiBp
bXBvcnRlZFJlY2VpcHRzLnJlbGVhc2UoKTsKK30KKworV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCog
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6dG9XZWIoVHJhbnNmZXJhYmxlUmVjZWlwdCogcmVjZWlw
dCkKK3sKKyAgICBpZiAoTWVzc2FnZVBvcnRDaGFubmVsKiBtZXNzYWdlUG9ydENoYW5uZWwgPSBy
ZWNlaXB0LT5hc01lc3NhZ2VQb3J0Q2hhbm5lbCgpKSB7CisgICAgICAgIFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsKiBwbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCA9IG1lc3NhZ2VQb3J0Q2hh
bm5lbC0+Y2hhbm5lbCgpOworICAgICAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWwqIHdlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbCA9IHBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLT53ZWJDaGFubmVsUmVs
ZWFzZSgpOworICAgICAgICB3ZWJNZXNzYWdlUG9ydENoYW5uZWwtPnNldENsaWVudCgwKTsKKyAg
ICAgICAgcmV0dXJuIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDsKKyAgICB9CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1dlYlRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheSogV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6dG9XZWJBbGwoY29uc3QgV2ViQ29yZTo6VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5KiByZWNlaXB0cykKK3sKKyAgICBXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXkqIGV4cG9ydGVkUmVjZWlwdHMgPSAwOworICAgIGlmIChyZWNlaXB0cyAmJiBy
ZWNlaXB0cy0+c2l6ZSgpKSB7CisgICAgICAgIGV4cG9ydGVkUmVjZWlwdHMgPSBuZXcgV2ViVHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5KHJlY2VpcHRzLT5zaXplKCkpOworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlY2VpcHRzLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICgqZXhw
b3J0ZWRSZWNlaXB0cylbaV0gPSB0b1dlYigoKnJlY2VpcHRzKVtpXS5nZXQoKSk7CisgICAgfQor
ICAgIHJldHVybiBleHBvcnRlZFJlY2VpcHRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKaW5kZXggZDYx
ODY3Mi4uMWRiNjZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
V29ya2VyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
QmFzZS5jcHAKQEAgLTM1MiwyNyArMzUyLDI1IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6b3BlbkZp
bGVTeXN0ZW1Gb3JXb3JrZXIoV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcKIC8v
IFdvcmtlck9iamVjdFByb3h5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheT4gcmVjZWlwdHMpCiB7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNh
bGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZS0+dG9XaXJlU3RyaW5nKCksIGNoYW5uZWxzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwgcmVjZWlwdHMp
KTsKIH0KIAogdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYldvcmtlckJhc2UqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+IHJlY2VpcHRzKQogewogICAgIGlmICghdGhpc1B0ci0+Y2xpZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5IHdlYkNoYW5uZWxzKGNo
YW5uZWxzLmdldCgpID8gY2hhbm5lbHMtPnNpemUoKSA6IDApOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd2ViQ2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgd2ViQ2hhbm5lbHNb
aV0gPSAoKmNoYW5uZWxzKVtpXS0+Y2hhbm5lbCgpLT53ZWJDaGFubmVsUmVsZWFzZSgpOwotICAg
ICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50KDApOwotICAgIH0KKyAgICBXZWJUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXkgd2ViUmVjZWlwdHMocmVjZWlwdHMuZ2V0KCkgPyByZWNlaXB0cy0+
c2l6ZSgpIDogMCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSZWNlaXB0cy5zaXpl
KCk7ICsraSkKKyAgICAgICAgd2ViUmVjZWlwdHNbaV0gPSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0
Ojp0b1dlYigoKnJlY2VpcHRzKVtpXS5nZXQoKSk7CiAKLSAgICB0aGlzUHRyLT5jbGllbnQoKS0+
cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlLCB3ZWJDaGFubmVscyk7CisgICAgdGhp
c1B0ci0+Y2xpZW50KCktPnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSwgd2ViUmVj
ZWlwdHMpOwogfQogCiB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckJhc2UuaAppbmRleCA5ZWZjZTE1Li43YTA1YTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaWYg
RU5BQkxFKFdPUktFUlMpCiAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGll
bnQuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9i
amVjdFByb3h5LmgiCkBAIC02OCw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICAvLyBXZWJDb3JlOjpX
b3JrZXJPYmplY3RQcm94eSBtZXRob2RzOgogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRv
V29ya2VyT2JqZWN0KAogICAgICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sCi0gICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+KTsKKyAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+KTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KAog
ICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYsIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCkBAIC0xMjMs
NyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwKICAgICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKICAgICAgICAg
V1RGOjpTdHJpbmcgbWVzc2FnZSwKLSAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpOworICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6
OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAgIHN0YXRpYyB2b2lkIHBvc3RFeGNlcHRp
b25UYXNrKAogICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LAogICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAppbmRleCBjMTk4Y2NmLi4yYzZi
ZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGll
bnRJbXBsLmNwcApAQCAtNjUsNiArNjUsMTEgQEAKICNpbmNsdWRlICJXZWJXb3JrZXIuaCIKICNp
bmNsdWRlICJXZWJXb3JrZXJJbXBsLmgiCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRy
YW5zZmVyYWJsZTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFu
c2ZlcmFibGVBcnJheTsKK30KKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMTc1LDcgKzE4MCw3IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6
dGVybWluYXRlV29ya2VyQ29udGV4dCgpCiAKIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9z
dE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoCiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsCi0gICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4g
Y2hhbm5lbHMpCisgICAgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2Vp
cHRzKQogewogICAgIC8vIFdvcmtlci50ZXJtaW5hdGUoKSBjb3VsZCBiZSBjYWxsZWQgZnJvbSBK
UyBiZWZvcmUgdGhlIGNvbnRleHQgaXMgc3RhcnRlZC4KICAgICBpZiAobV9hc2tlZFRvVGVybWlu
YXRlKQpAQCAtMTg1LDE3ICsxOTAsMTMgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0
TWVzc2FnZVRvV29ya2VyQ29udGV4dCgKICAgICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hU
YXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUb1dvcmtlckNv
bnRleHRUYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZS0+dG9XaXJlU3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHMpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWNlaXB0cykpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFdlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5IHdlYkNoYW5uZWxzKGNoYW5uZWxzLmdldCgpID8gY2hhbm5lbHMt
PnNpemUoKSA6IDApOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hhbm5lbHMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsKiB3ZWJjaGFubmVsID0K
LSAgICAgICAgICAgICAgICAgICAgICAgICgqY2hhbm5lbHMpW2ldLT5jaGFubmVsKCktPndlYkNo
YW5uZWxSZWxlYXNlKCk7Ci0gICAgICAgIHdlYmNoYW5uZWwtPnNldENsaWVudCgwKTsKLSAgICAg
ICAgd2ViQ2hhbm5lbHNbaV0gPSB3ZWJjaGFubmVsOwotICAgIH0KLSAgICBtX3dlYldvcmtlci0+
cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQobWVzc2FnZS0+dG9XaXJlU3RyaW5nKCksIHdlYkNo
YW5uZWxzKTsKKyAgICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkgd2ViUmVjZWlwdHMocmVj
ZWlwdHMuZ2V0KCkgPyByZWNlaXB0cy0+c2l6ZSgpIDogMCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3ZWJSZWNlaXB0cy5zaXplKCk7ICsraSkKKyAgICAgICAgd2ViUmVjZWlwdHNbaV0g
PSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0b1dlYigoKnJlY2VpcHRzKVtpXS5nZXQoKSk7Cisg
ICAgbV93ZWJXb3JrZXItPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UtPnRvV2ly
ZVN0cmluZygpLCB3ZWJSZWNlaXB0cyk7CiB9CiAKIGJvb2wgV2ViV29ya2VyQ2xpZW50SW1wbDo6
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKQEAgLTIzNiwyOSArMjM3LDIwIEBAIHZvaWQgV2Vi
V29ya2VyQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0luc3BlY3Rvcihjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiB9CiAKIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtl
ck9iamVjdChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViTWVzc2FnZVBvcnRDaGFubmVs
QXJyYXkmIGNoYW5uZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYgd2ViUmVjZWlw
dHMpCiB7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczI7Ci0g
ICAgaWYgKGNoYW5uZWxzLnNpemUoKSkgewotICAgICAgICBjaGFubmVsczIgPSBhZG9wdFB0cihu
ZXcgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkoY2hhbm5lbHMuc2l6ZSgpKSk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcGxhdGZvcm1fY2hhbm5lbCA9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNy
ZWF0ZShjaGFubmVsc1tpXSk7Ci0gICAgICAgICAgICBjaGFubmVsc1tpXS0+c2V0Q2xpZW50KHBs
YXRmb3JtX2NoYW5uZWwuZ2V0KCkpOwotICAgICAgICAgICAgKCpjaGFubmVsczIpW2ldID0gTWVz
c2FnZVBvcnRDaGFubmVsOjpjcmVhdGUocGxhdGZvcm1fY2hhbm5lbCk7Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMgPSBXZWJU
cmFuc2ZlcmFibGVSZWNlaXB0Ojpmcm9tV2ViQWxsKCZ3ZWJSZWNlaXB0cyk7CiAKICAgICBpZiAo
Y3VycmVudFRocmVhZCgpICE9IG1fd29ya2VyVGhyZWFkSWQpIHsKICAgICAgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdl
VG9Xb3JrZXJPYmplY3RUYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcobWVzc2FnZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzMi5yZWxlYXNlKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVjZWlwdHMucmVsZWFzZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBwb3N0
TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzayhtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCks
IHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSwgY2hhbm5l
bHMyLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSwgcmVjZWlwdHMucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBlcnJvck1lc3NhZ2Us
CkBAIC0zNjksMTYgKzM2MSwxNCBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnRlcm1pbmF0
ZVdvcmtlckNvbnRleHRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbgogdm9pZCBXZWJX
b3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBjaGFubmVscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0
cykKIHsKLSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSB3ZWJDaGFubmVscyhjaGFubmVs
cy5nZXQoKSA/IGNoYW5uZWxzLT5zaXplKCkgOiAwKTsKKyAgICBXZWJUcmFuc2ZlcmFibGVSZWNl
aXB0QXJyYXkgd2ViUmVjZWlwdHMocmVjZWlwdHMuZ2V0KCkgPyByZWNlaXB0cy0+c2l6ZSgpIDog
MCk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkNoYW5uZWxzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIHdlYkNoYW5uZWxzW2ldID0gKCpjaGFubmVscylbaV0tPmNoYW5uZWwoKS0+
d2ViQ2hhbm5lbFJlbGVhc2UoKTsKLSAgICAgICAgd2ViQ2hhbm5lbHNbaV0tPnNldENsaWVudCgw
KTsKLSAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSZWNlaXB0cy5zaXplKCk7
ICsraSkKKyAgICAgICAgd2ViUmVjZWlwdHNbaV0gPSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0
b1dlYigoKnJlY2VpcHRzKVtpXS5nZXQoKSk7CiAKLSAgICB0aGlzUHRyLT5tX3dlYldvcmtlci0+
cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQobWVzc2FnZSwgd2ViQ2hhbm5lbHMpOworICAgIHRo
aXNQdHItPm1fd2ViV29ya2VyLT5wb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChtZXNzYWdlLCB3
ZWJSZWNlaXB0cyk7CiB9CiAKIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6d29ya2VyT2JqZWN0
RGVzdHJveWVkVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApAQCAtMzg5LDI1
ICszNzksMjIgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95
ZWRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICBkZWxldGUgdGhpc1B0cjsK
IH0KIAotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0
VGFzaygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKK3ZvaWQgV2ViV29ya2VyQ2xp
ZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogdGhpc1B0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewogCiAgICAg
aWYgKHRoaXNQdHItPm1fd29ya2VyKSB7Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5
PiBwb3J0cyA9Ci0gICAgICAgICAgICBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqY29udGV4
dCwgY2hhbm5lbHMpOworICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVy
YWJsZXMgPSBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKCpjb250ZXh0LCByZWNl
aXB0cyk7CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRN
ZXNzYWdlID0KICAgICAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdp
cmUobWVzc2FnZSk7Ci0gICAgICAgIHRoaXNQdHItPm1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwKKyAgICAgICAgdGhpc1B0ci0+bV93
b3JrZXItPmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUodHJhbnNmZXJhYmxlcy5y
ZWxlYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRNZXNzYWdlLnJlbGVhc2UoKSkpOwogICAgIH0KIH0K
IAotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3RU
YXNrKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCit2b2lkIFdlYldvcmtlckNs
aWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdFRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lTnVtYmVyLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCmluZGV4IGMyNzBmZmMuLjZj
YTlkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNs
aWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGll
bnRJbXBsLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogCisjaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIldlYldvcmtlckNsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRQ
cm94eS5oIgpAQCAtNDIsNiArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKK3R5cGVk
ZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxlUmVj
ZWlwdEFycmF5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTcwLDcgKzczLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7CiAgICAgdmly
dHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KAogICAgICAgICBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwKLSAgICAgICAgUGFzc093
blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpOworICAgICAg
ICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAgIHZp
cnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
d29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiAKQEAgLTgwLDcgKzgzLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gV2ViV29ya2VyQ2xpZW50IG1ldGhvZHM6CiAgICAgLy8gVGhlc2UgYXJlIGNhbGxlZCBv
biB0aGUgbWFpbiBXZWJLaXQgdGhyZWFkLgotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRv
V29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5Jik7CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoY29u
c3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Jik7CiAgICAg
dmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcm
LCBpbnQsIGNvbnN0IFdlYlN0cmluZyYpOwogCiAgICAgLy8gRklYTUU6IHRoZSBiZWxvdyBpcyBm
b3IgY29tcGF0aWJpbGl0eSBvbmx5IGFuZCBzaG91bGQgYmUKQEAgLTEyOCw3ICsxMzEsNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzayhX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlz
UHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXVEY6OlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4gY2hhbm5lbHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAg
IHN0YXRpYyB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZFRhc2soV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIpOwogCkBAIC0xMzgsNyArMTQx
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0
VGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwq
IHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CiAg
ICAgc3RhdGljIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0VGFzayhXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogdGhpc1B0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6
U3RyaW5nJiBtZXNzYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViV29ya2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJ
bXBsLmNwcAppbmRleCA2YzlmNDVjLi41NTU2YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcApAQCAtODIsMTggKzgyLDE4IEBAIFdlYkNvbW1vbldv
cmtlckNsaWVudCogV2ViV29ya2VySW1wbDo6Y29tbW9uQ2xpZW50KCkKIHZvaWQgV2ViV29ya2Vy
SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJXb3JrZXJJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVy
YWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzV29y
a2VyQ29udGV4dCgpKTsKICAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0
ID0KICAgICAgICAgc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyQ29udGV4dCo+KGNvbnRleHQp
OwogCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0KLSAgICAgICAgTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmNvbnRleHQsIGNoYW5uZWxzKTsKKyAgICBPd25QdHI8VHJh
bnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPQorICAgICAgICBUcmFuc2ZlcmFibGVSZWNl
aXB0Ojp0cmFuc2ZlckFsbEluKCpjb250ZXh0LCByZWNlaXB0cyk7CiAgICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZE1lc3NhZ2UgPQogICAgICAgICBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKG1lc3NhZ2UpOwogICAgIHdvcmtlckNvbnRleHQt
PmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoCi0gICAgICAgIHBvcnRzLnJlbGVh
c2UoKSwgc2VyaWFsaXplZE1lc3NhZ2UucmVsZWFzZSgpKSk7CisgICAgICAgIHRyYW5zZmVyYWJs
ZXMucmVsZWFzZSgpLCBzZXJpYWxpemVkTWVzc2FnZS5yZWxlYXNlKCkpKTsKICAgICB0aGlzUHRy
LT5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qod29ya2VyQ29udGV4dC0+aGFzUGVuZGlu
Z0FjdGl2aXR5KCkpOwogfQogCkBAIC0xMTYsMjIgKzExNiwxMiBAQCB2b2lkIFdlYldvcmtlcklt
cGw6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKQogfQogCiB2b2lkIFdlYldvcmtlckltcGw6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkmIHdlYkNoYW5uZWxzKQotewotICAgIE93blB0cjxNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4gY2hhbm5lbHM7Ci0gICAgaWYgKHdlYkNoYW5uZWxzLnNpemUoKSkgewot
ICAgICAgICBjaGFubmVscyA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSh3
ZWJDaGFubmVscy5zaXplKCkpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJD
aGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsPiBwbGF0Zm9ybV9jaGFubmVsID0KLSAgICAgICAgICAgICAgICBQbGF0Zm9y
bU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHdlYkNoYW5uZWxzW2ldKTsKLSAgICAgICAgICAg
IHdlYkNoYW5uZWxzW2ldLT5zZXRDbGllbnQocGxhdGZvcm1fY2hhbm5lbC5nZXQoKSk7Ci0gICAg
ICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBsYXRm
b3JtX2NoYW5uZWwpOwotICAgICAgICB9Ci0gICAgfQotCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eSYgd2ViUmVjZWlwdHMpCit7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4g
cmVjZWlwdHMgPSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojpmcm9tV2ViQWxsKCZ3ZWJSZWNlaXB0
cyk7CiAgICAgd29ya2VyVGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzaygKICAgICAgICAgY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBTdHJpbmco
bWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2UoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgU3RyaW5nKG1lc3NhZ2UpLCByZWNlaXB0
cy5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJJbXBsOjp3b3JrZXJPYmplY3REZXN0
cm95ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5oCmluZGV4
IDc5YzljNTQuLmM3YmU3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYldvcmtlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3Jr
ZXJJbXBsLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIC8vIFdlYldvcmtlciBtZXRo
b2RzOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckNvbnRleHQoY29uc3QgV2ViVVJMJiwg
Y29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHRl
cm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViTWVzc2FnZVBvcnRDaGFubmVs
QXJyYXkmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29u
c3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Jik7CiAgICAg
dmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwgdm9pZCBj
bGllbnREZXN0cm95ZWQoKTsKIApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICBXZWJXb3Jr
ZXJJbXBsKiB0aGlzUHRyLAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwKLSAg
ICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5l
bHMpOworICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eT4gcmVjZWlwdHMpOwogCiAgICAgV2ViV29ya2VyQ2xpZW50KiBtX2NsaWVudDsKIH07CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWEzYzYxNS4u
Y2Y2ZjRjOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTA4LTA4ICBMdWtlIFphcmtvICA8bHVrZXphcmtvQGdt
YWlsLmNvbT4KKworICAgICAgICBNYWtlIE1lc3NhZ2VQb3J0IFRyYW5zZmVyYWJsZS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyMDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaDoKKyAgICAgICAgKFRlc3RXZWJXb3JrZXI6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFRlc3RXZWJXb3JrZXI6OnBvc3RN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorCiAyMDExLTA4LTA0ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgbW9kZWwuanMgbmVlZHMgc29tZSB1bml0IHRlc3RpbmcK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaAppbmRleCA3
MWJmZmNlLi4xMmUyYzg0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0V2ViV29ya2VyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFdlYldvcmtlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZWJXb3JrZXIg
bWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYktp
dDo6V2ViVVJMJiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBjb25zdCBXZWJLaXQ6OldlYlN0
cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiwgY29uc3QgV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpCiAgICAg
ewogICAgICAgICAvLyBSZWxlYXNlcyB0aGUgcmVmZXJlbmNlIGhlbGQgZm9yIHdvcmtlciBvYmpl
Y3QuCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpZW50RGVz
dHJveWVkKCkgeyB9CiAKICAgICAvLyBXZWJXb3JrZXJDbGllbnQgbWV0aG9kczoKLSAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYsIGNvbnN0IFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6OldlYlN0
cmluZyYsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYsIGludCwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50LCBpbnQsIGludCwg
aW50LCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGludCwgY29uc3QgV2ViS2l0OjpXZWJTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0
KGJvb2wpIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103532</attachid>
            <date>2011-08-10 13:58:53 -0700</date>
            <delta_ts>2011-08-17 12:24:37 -0700</delta_ts>
            <desc>Address comments and rebase.</desc>
            <filename>postmessagepatch-157.patch</filename>
            <type>text/plain</type>
            <size>213957</size>
            <attacher name="Luke Zarko">lukezarko+bugzilla</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNWM0YjBjLi5kYzcyZDY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDgt
MTAgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgTWVz
c2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gQ2hhbmdlIGluIGVycm9yIG1lc3NhZ2UgdGV4dC4KKyAgICAgICAg
LSBDaGFuZ2UgdG8gaGFuZGxlIGFuZCB0ZXN0IG5ldyBwcmVmaXhlZCB3ZWJraXRQb3N0TWVzc2Fn
ZS4KKyAgICAgICAgLSBDaGFuZ2UgdG8gaGFuZGxlIHNvbWUgSU5WQUxJRF9TVEFURV9FUlIgLT4g
REFUQV9DTE9ORV9FUlIgc3Vic3RpdHV0aW9ucy4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQ6CisgICAgICAgIE5vdGUgdGhh
dCB0aGUgZGVmYXVsdCB3aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZCBjb250YWlucyBh
IEZBSUw6IGxpbmUuCisgICAgICAgIFRoZSBjaGVjayB0aGF0IGdlbmVyYXRlcyB0aGF0IGxpbmUg
YXR0ZW1wdHMgdG8gdmVyaWZ5IHRoYXQgbm9uLXByZWZpeGVkCisgICAgICAgIHBvc3RNZXNzYWdl
IGRpc2FsbG93cyBNZXNzYWdlUG9ydHMgKG9yIGFueSBvdGhlciBUcmFuc2ZlcmFibGVzKSBmcm9t
IGFwcGVhcmluZworICAgICAgICBpbiBtZXNzYWdlIGJvZGllcyBhcyBtYW5kYXRlZCBieSB0aGUg
c3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG0gKG1vZHVsbyBzZW5kaW5nCisgICAgICAgIFRyYW5z
ZmVyYWJsZXMgYXMgcGFydCBvZiB0aGUgcHJlZml4KS4gQSBidWcgcmVsZXZhbnQgdG8gdGhpcyBi
ZWhhdmlvciBpcyBhdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjUyOTIuCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2Fn
ZS1hcmdzLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnR5
LWRlc2NyaXB0b3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9wcm90b3R5cGUt
aW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2Ut
cG9ydC1jbG9uZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LW11bHRpLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLWNv
bnRleHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC93b3JrZXJzL3dv
cmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS13aW4vZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11
bHRpLXBvcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9m
YXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90
eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgcHJvdG90eXBlLWluaGVyaXRh
bmNlLWV4cGVjdGVkIGNvbnRhaW5zIGFuIGV4dHJhIEZBSUw6IGxpbmUgZm9yIENocm9taXVtIHdp
dGgKKyAgICAgICAgcmVnYXJkIHRvIHdlYmtpdFBvc3RNZXNzYWdlOyB0aGlzIGFwcGVhcnMgdG8g
YmUgYW4gYXJ0aWZhY3Qgb2YgdGhlIHdheSBiaW5kaW5ncworICAgICAgICBhcmUgZ2VuZXJhdGVk
LCBhcyBhIHNpbWlsYXIgRkFJTDogbGluZSBwcmV2aW91c2x5IGV4aXN0ZWQgZm9yIHBsYWluIHBv
c3RNZXNzYWdlLgorCiAyMDExLTA4LTEwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhdXRvLWNvbXBsZXRpb24gZm9yIHN0cmlu
ZyBsaXRlcmFscyBkb2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDA1NGQ5MTguLjA4NDAzYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dApA
QCAtMSw0ICsxLDQgQEAKLVRlc3QgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHdpbmRvdy5w
b3N0TWVzc2FnZSBpcyBpZ25vcmVkIG9yIHRyaWdnZXJzIGFuIGVycm9yIGlmIGl0IGlzIG5vdCBh
IG1lc3NhZ2UgcG9ydC4gWW91IHNob3VsZCBzZWUgUEFTUyBtZXNzYWdlICcxJyB0aHJvdWdoICc3
JywgZm9sbG93ZWQgYnkgJ2RvbmUnLCB3aXRoIG1lc3NhZ2VzIDQtNyByZWNlaXZlZCBiZWxvdy4K
K1Rlc3QgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHdpbmRvdy5wb3N0TWVzc2FnZSBpcyBp
Z25vcmVkIG9yIHRyaWdnZXJzIGFuIGVycm9yIGlmIGl0IGlzIG5vdCBhIG1lc3NhZ2UgcG9ydC4K
IAogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMScsIDEpOiB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcyJywgKTogdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvcgpAQCAtNywxMiArNywyOSBAQCBQQVNTOiBQb3N0
aW5nIG1lc3NhZ2UgKCc0JywgW29iamVjdCBET01XaW5kb3ddKSBkaWQgbm90IHRocm93IGFuIGV4
Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNScsIG51bGwpIGRpZCBub3QgdGhyb3cg
YW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc2JywgdW5kZWZpbmVkKSBkaWQg
bm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNycsIFtvYmpl
Y3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4
Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnOCcsIDEpOiB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2Ug
KCc5JywgKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFTUzogd2Vi
a2l0UG9zdGluZyBtZXNzYWdlICgnQScsIFtvYmplY3QgT2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0In
LCBbb2JqZWN0IERPTVdpbmRvd10pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3
ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdDJywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0QnLCB1bmRlZmluZWQpIGRpZCBub3Qg
dGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdFJywgW29i
amVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pOiB0aHJldyBleGNlcHRpb24g
RXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1CitQQVNTOiB3ZWJraXRQb3N0
aW5nIG1lc3NhZ2UgKCdGJywgW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdHJywgW29iamVjdCBNZXNzYWdlUG9y
dF0pOiB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9u
IDI1CitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1lc3NhZ2VQb3J0XScs
IFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorRkFJTDog
UG9zdGluZyBtZXNzYWdlICgnW29iamVjdCBNZXNzYWdlUG9ydF0nLCBbb2JqZWN0IE1lc3NhZ2VQ
b3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAo
JzIxNDc0ODM2NDgnLCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9z
dGluZyBtZXNzYWdlICgnZG9uZScsICopIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBSZWNl
aXZlZCBtZXNzYWdlICc0JwogUmVjZWl2ZWQgbWVzc2FnZSAnNScKIFJlY2VpdmVkIG1lc3NhZ2Ug
JzYnCiBSZWNlaXZlZCBtZXNzYWdlICc3JyB3aXRoIDIgcG9ydHMuCitSZWNlaXZlZCBtZXNzYWdl
ICdCJworUmVjZWl2ZWQgbWVzc2FnZSAnQycKK1JlY2VpdmVkIG1lc3NhZ2UgJ0QnCitSZWNlaXZl
ZCBtZXNzYWdlICdGJyB3aXRoIDEgcG9ydHMuCitSZWNlaXZlZCBtZXNzYWdlICdbb2JqZWN0IE1l
c3NhZ2VQb3J0XScgd2l0aCAxIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBPYmpl
Y3RdJyB3aXRoIDEgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICcyMTQ3NDgzNjQ4JwogUmVjZWl2
ZWQgbWVzc2FnZSAnZG9uZScKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbAppbmRleCA3MmEyN2U3Li5iYTllYTY0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNz
YWdlLWFyZ3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBv
c3RtZXNzYWdlLWFyZ3MuaHRtbApAQCAtMzUsNyArMzUsMTkgQEAgZnVuY3Rpb24gdHJ5UG9zdE1l
c3NhZ2UoZmlyc3QsIHNlY29uZCwgdGhpcmQsIHNob3VsZEZhaWwpIHsKICAgIH0KIH0KIAotZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0aW9uIikuaW5uZXJIVE1MID0gIlRlc3QgdGhh
dCB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHdpbmRvdy5wb3N0TWVzc2FnZSBpcyBpZ25vcmVkIG9y
IHRyaWdnZXJzIGFuIGVycm9yIGlmIGl0IGlzIG5vdCBhIG1lc3NhZ2UgcG9ydC4gWW91IHNob3Vs
ZCBzZWUgUEFTUyBtZXNzYWdlICcxJyB0aHJvdWdoICc3JywgZm9sbG93ZWQgYnkgJ2RvbmUnLCB3
aXRoIG1lc3NhZ2VzIDQtNyByZWNlaXZlZCBiZWxvdy48YnI+PGJyPiI7CitmdW5jdGlvbiB0cnlX
ZWJraXRQb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25kLCB0aGlyZCwgc2hvdWxkRmFpbCkgeworICAg
IHRyeSB7CisgICAgICAgIGlmICghdGhpcmQpCisgICAgICAgICAgICB3aW5kb3cud2Via2l0UG9z
dE1lc3NhZ2UoZmlyc3QsIHNlY29uZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdpbmRv
dy53ZWJraXRQb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25kLCB0aGlyZCk7CisgICAgICAgIGNvbnNv
bGUuaW5uZXJIVE1MICs9IChzaG91bGRGYWlsID8gIkZBSUwiIDogIlBBU1MiKSArICI6IHdlYmtp
dFBvc3RpbmcgbWVzc2FnZSAoJyIgKyBmaXJzdCArICInLCAiICsgc2Vjb25kICsgIikgZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb248YnI+IjsKKyAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgY29u
c29sZS5pbm5lckhUTUwgKz0gKHNob3VsZEZhaWwgPyAiUEFTUyIgOiAiRkFJTCIpICsgIjogd2Vi
a2l0UG9zdGluZyBtZXNzYWdlICgnIiArIGZpcnN0ICsgIicsICIgKyBzZWNvbmQgKyAiKTogdGhy
ZXcgZXhjZXB0aW9uICIgKyBlICsgIjxicj4iOworICAgfQorfQorCitkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZGVzY3JpcHRpb24iKS5pbm5lckhUTUwgPSAiVGVzdCB0aGF0IHRoZSBzZWNvbmQg
YXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4g
ZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0Ljxicj48YnI+IjsKIAogdmFyIGNoYW5u
ZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CiB0cnlQb3N0TWVzc2FnZSgnMScsIDEsICcqJywgdHJ1
ZSk7CkBAIC00NSw2ICs1NywxOSBAQCB0cnlQb3N0TWVzc2FnZSgnNCcsIHdpbmRvdywgJyonKTsg
IC8vIFBhc3NlcyBiZWNhdXNlIHdpbmRvdyBoYXMgYSAibGVuZ3RoIiBhdHRyaQogdHJ5UG9zdE1l
c3NhZ2UoJzUnLCBudWxsLCAnKicpOwogdHJ5UG9zdE1lc3NhZ2UoJzYnLCB2b2lkIDAsICcqJyk7
CiB0cnlQb3N0TWVzc2FnZSgnNycsIFtjaGFubmVsLnBvcnQxLCBjaGFubmVsLnBvcnQyXSwgJyon
KTsKK3RyeVdlYmtpdFBvc3RNZXNzYWdlKCc4JywgMSwgJyonLCB0cnVlKTsKK3RyeVdlYmtpdFBv
c3RNZXNzYWdlKCc5JywgIiIsICcqJywgdHJ1ZSk7Cit0cnlXZWJraXRQb3N0TWVzc2FnZSgnQScs
IHsgeDogMSB9LCAnKicsIHRydWUpOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJ0InLCB3aW5kb3cs
ICcqJyk7ICAvLyBQYXNzZXMgYmVjYXVzZSB3aW5kb3cgaGFzIGEgImxlbmd0aCIgYXR0cmlidXRl
IG9mIHZhbHVlICcwJywgc28gaXQgbG9va3MgbGlrZSBhbiBhcnJheQordHJ5V2Via2l0UG9zdE1l
c3NhZ2UoJ0MnLCBudWxsLCAnKicpOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJ0QnLCB2b2lkIDAs
ICcqJyk7Cit0cnlXZWJraXRQb3N0TWVzc2FnZSgnRScsIFtjaGFubmVsLnBvcnQxLCBjaGFubmVs
LnBvcnQyXSwgJyonLCB0cnVlKTsgLy8gZmFpbHM6IHRob3NlIHBvcnRzIGhhdmUgYWxyZWFkeSBi
ZWVuIHRyYW5zZmVycmVkLgorY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK3RyeVdlYmtp
dFBvc3RNZXNzYWdlKCdGJywgW2NoYW5uZWwucG9ydDFdLCAnKicpOwordHJ5UG9zdE1lc3NhZ2Uo
J0cnLCBbY2hhbm5lbC5wb3J0MV0sICcqJywgdHJ1ZSk7IC8vIGZhaWxzOiB0aGF0IHBvcnQgaGFz
IGFscmVhZHkgYmVlbiB0cmFuc2ZlcnJlZC4KK2NoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7
Cit0cnlXZWJraXRQb3N0TWVzc2FnZShjaGFubmVsLnBvcnQxLCBbY2hhbm5lbC5wb3J0MV0sICcq
Jyk7Cit0cnlQb3N0TWVzc2FnZShjaGFubmVsLnBvcnQyLCBbY2hhbm5lbC5wb3J0Ml0sICcqJywg
dHJ1ZSk7IC8vIGZhaWxzOiBwb3N0TWVzc2FnZSBkb2VzIG5vdCBhbGxvdyBUcmFuc2ZlcmFibGUg
YXJndW1lbnRzIGluIG1lc3NhZ2UgYm9kaWVzLgogdHJ5UG9zdE1lc3NhZ2UoMjE0NzQ4MzY0OCwg
bnVsbCwgJyonKTsKIHRyeVBvc3RNZXNzYWdlKCdkb25lJywgJyonKTsKIDwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1leHBlY3RlZC50eHQKaW5kZXggZjI4YTliNS4uYjkxODIxMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0CkBAIC0xMTgzLDYgKzExODMsNyBAQCB3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLmRp
c3BhdGNoRXZlbnQgW2Z1bmN0aW9uXQogd2luZG93Lk1lc3NhZ2VQb3J0LnByb3RvdHlwZS5wb3N0
TWVzc2FnZSBbZnVuY3Rpb25dCiB3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLnJlbW92ZUV2
ZW50TGlzdGVuZXIgW2Z1bmN0aW9uXQogd2luZG93Lk1lc3NhZ2VQb3J0LnByb3RvdHlwZS5zdGFy
dCBbZnVuY3Rpb25dCit3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLndlYmtpdFBvc3RNZXNz
YWdlIFtmdW5jdGlvbl0KIHdpbmRvdy5NaW1lVHlwZSBbb2JqZWN0IE1pbWVUeXBlQ29uc3RydWN0
b3JdCiB3aW5kb3cuTWltZVR5cGUucHJvdG90eXBlIFtvYmplY3QgTWltZVR5cGVQcm90b3R5cGVd
CiB3aW5kb3cuTWltZVR5cGVBcnJheSBbb2JqZWN0IE1pbWVUeXBlQXJyYXlDb25zdHJ1Y3Rvcl0K
QEAgLTIwODIsNiArMjA4Myw3IEBAIHdpbmRvdy5Xb3JrZXIucHJvdG90eXBlLmRpc3BhdGNoRXZl
bnQgW2Z1bmN0aW9uXQogd2luZG93Lldvcmtlci5wcm90b3R5cGUucG9zdE1lc3NhZ2UgW2Z1bmN0
aW9uXQogd2luZG93Lldvcmtlci5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciBbZnVuY3Rp
b25dCiB3aW5kb3cuV29ya2VyLnByb3RvdHlwZS50ZXJtaW5hdGUgW2Z1bmN0aW9uXQord2luZG93
Lldvcmtlci5wcm90b3R5cGUud2Via2l0UG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQogd2luZG93LlhN
TERvY3VtZW50IFtwcmludGVkIGFib3ZlIGFzIHdpbmRvdy5Eb2N1bWVudF0KIHdpbmRvdy5YTUxI
dHRwUmVxdWVzdCBbb2JqZWN0IFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3JdCiB3aW5kb3cuWE1M
SHR0cFJlcXVlc3QuRE9ORSBbbnVtYmVyXQpAQCAtMjI4MCw2ICsyMjgyLDcgQEAgd2luZG93LmNv
bnN0cnVjdG9yLnByb3RvdHlwZS5zaG93TW9kYWxEaWFsb2cgW2Z1bmN0aW9uXQogd2luZG93LmNv
bnN0cnVjdG9yLnByb3RvdHlwZS5zdG9wIFtmdW5jdGlvbl0KIHdpbmRvdy5jb25zdHJ1Y3Rvci5w
cm90b3R5cGUud2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UgW2Z1bmN0aW9uXQogd2lu
ZG93LmNvbnN0cnVjdG9yLnByb3RvdHlwZS53ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9k
ZSBbZnVuY3Rpb25dCit3aW5kb3cuY29uc3RydWN0b3IucHJvdG90eXBlLndlYmtpdFBvc3RNZXNz
YWdlIFtmdW5jdGlvbl0KIHdpbmRvdy5jcnlwdG8gW29iamVjdCBDcnlwdG9dCiB3aW5kb3cuY3J5
cHRvLmdldFJhbmRvbVZhbHVlcyBbZnVuY3Rpb25dCiB3aW5kb3cuZGVjb2RlVVJJIFtmdW5jdGlv
bl0KQEAgLTI0NzMsNiArMjQ3Niw3IEBAIHdpbmRvdy51bmRlZmluZWQgW3VuZGVmaW5lZF0KIHdp
bmRvdy51bmVzY2FwZSBbZnVuY3Rpb25dCiB3aW5kb3cud2Via2l0Q29udmVydFBvaW50RnJvbU5v
ZGVUb1BhZ2UgW2Z1bmN0aW9uXQogd2luZG93LndlYmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9O
b2RlIFtmdW5jdGlvbl0KK3dpbmRvdy53ZWJraXRQb3N0TWVzc2FnZSBbZnVuY3Rpb25dCiB3aW5k
b3cud2luZG93IFtwcmludGVkIGFib3ZlIGFzIHdpbmRvd10KIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KSBbb2JqZWN0IERPTVNlbGVjdGlvbl0KIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZSBb
ZnVuY3Rpb25dCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93
LXByb3BlcnR5LWRlc2NyaXB0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0CmluZGV4IDJh
ZjY3NDUuLmM1ODk1NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0
CkBAIC01MzksNiArNTM5LDcgQEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHdpbmRvdywgJ3RvU3RyaW5nJykgaXMgdW5kZWZpbmVkLgogUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ3ZhbHVlT2YnKSBpcyB1bmRlZmluZWQuCiBQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAnd2Via2l0Q29udmVydFBvaW50
RnJvbU5vZGVUb1BhZ2UnKSBpcyB1bmRlZmluZWQuCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Iod2luZG93LCAnd2Via2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUnKSBp
cyB1bmRlZmluZWQuCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93
LCAnd2Via2l0UG9zdE1lc3NhZ2UnKSBpcyB1bmRlZmluZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IDgzY2VjZjQu
LjhiODNjZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhl
cml0YW5jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBl
LWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dApAQCAtNzk5LDYgKzc5OSw4IEBAIFBBU1MgaW5uZXIu
d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlu
bmVyLndlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdlLmNvbnN0cnVjdG9yLmlzSW5uZXIg
aXMgdHJ1ZQogUEFTUyBpbm5lci53ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZS5pc0lu
bmVyIGlzIHRydWUKIFBBU1MgaW5uZXIud2Via2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUu
Y29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLndlYmtpdFBvc3RNZXNzYWdl
LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci53ZWJraXRQb3N0TWVzc2FnZS5jb25zdHJ1Y3Rv
ci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIud2luZG93LmlzSW5uZXIgaXMgdHJ1ZQogUEFT
UyBpbm5lci53aW5kb3cuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
ZXNzYWdlLXBvcnQtY2xvbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
bWVzc2FnZS1wb3J0LWNsb25lLWV4cGVjdGVkLnR4dAppbmRleCBjZDMyNzhhLi5lNWRiZGFjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9u
ZS1leHBlY3RlZC50eHQKQEAgLTIsOCArMiw4IEBAIFRlc3RzIHZhcmlvdXMgdXNlIGNhc2VzIHdo
ZW4gY2xvbmluZyBNZXNzYWdlUG9ydHMuCiAKIFNob3VsZCBiZSBhIHNlcmllcyBvZiBTVUNDRVNT
IG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuCiAKLVNVQ0NFU1M6IFBvc3RpbmcgcG9ydCB0
byBpdHNlbGY6IEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMQotU1VD
Q0VTUzogUG9zdGluZyBlbnRhbmdsZWQgcG9ydDogRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBE
T00gRXhjZXB0aW9uIDExCitTVUNDRVNTOiBQb3N0aW5nIHBvcnQgdG8gaXRzZWxmOiBFcnJvcjog
REFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUKK1NVQ0NFU1M6IFBvc3RpbmcgZW50YW5n
bGVkIHBvcnQ6IEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQogU1VDQ0VT
UzogUG9zdGluZyBjbG9uZWQgcG9ydC4KIFNVQ0NFU1M6IFBvc3RlZCBtZXNzYWdlcyB0byBjbG9u
ZWQgcG9ydC4KIFNVQ0NFU1M6IENsb25lZCBib3RoIGVuZHBvaW50cyBvZiBhIGNoYW5uZWwuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4
cGVjdGVkLnR4dAppbmRleCBmZjc1NTQ1Li40NDMxMjY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQKQEAgLTMs
MTMgKzMsMTMgQEAgVGhpcyB0ZXN0IGNoZWNrcyB0aGUgdmFyaW91cyB1c2UgY2FzZXMgYXJvdW5k
IHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMgdGhyb3VnaCBNZXMKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoInNhbWUgcG9ydCIsIFtj
aGFubmVsLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZW50YW5n
bGVkIHBvcnQiLCBbY2hhbm5lbC5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJ
RF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1l
c3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJd
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9u
IDExLgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJzYW1lIHBvcnQiLCBbY2hhbm5l
bC5wb3J0MV0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNl
cHRpb24gMjUuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImVudGFuZ2xlZCBwb3J0
IiwgW2NoYW5uZWwucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJS
OiBET00gRXhjZXB0aW9uIDI1LgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJudWxs
IHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNS4KIFBBU1MgY2hh
bm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9LCBj
aGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQ
QVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0
MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgY2hhbm5lbC5w
b3J0MS5wb3N0TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVz
c2FnZSgibGFyZ2VTZXF1ZW5jZSIsIGxhcmdlUG9ydEFycmF5KSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjaGFubmVsLnBv
cnQxLnBvc3RNZXNzYWdlKCJsYXJnZVNlcXVlbmNlIiwgbGFyZ2VQb3J0QXJyYXkpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUuCiBQQVNTIGV2
ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgaXMg
bnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdv
IHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dApp
bmRleCBmY2ExZmY4Li5iMWYwZmZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CkBA
IC02LDcgKzYsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogUEFTUyBldmVudC5wb3J0cyBp
cyBudWxsIHdoZW4gbm8gcG9ydCBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBl
bXB0eSBhcnJheSBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVu
IHR3byBwb3J0cyBzZW50Ci1QQVNTIHBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiBFcnJv
cjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEKK1BBU1MgcG9zdGluZyBhIG51
bGwgcG9ydCBkaWQgdGhyb3c6IEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAy
NQogUEFTUyBwb3N0aW5nIGEgbm9uLXBvcnQgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHJl
LXNlbnQgYWZ0ZXIgZXJyb3IKIFBBU1MgcG9zdGluZyBhIG5vbi1hcnJheSBkaWQgdGhyb3c6IFR5
cGVFcnJvcjogVHlwZSBlcnJvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQKaW5kZXggODhiNDA2Mi4uZjAwMGYxNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBv
cnQtZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBUaGlzIHRlc3QgY2hlY2tzIHRoZSB2YXJp
b3VzIHVzZSBjYXNlcyBhcm91bmQgc2VuZGluZyBtdWx0aXBsZSBwb3J0cyB0aHJvdWdoIFdvcgog
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJu
dWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BB
U1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGws
IGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjog
RE9NIEV4Y2VwdGlvbiAyNS4KIFBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtj
aGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KIFBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5Iiwg
Y2hhbm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQ
QVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQKaW5kZXggOTgxZWI5Mi4uMWM0MTc3
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3Rl
ZC50eHQKQEAgLTMsOSArMyw5IEBAIFRoaXMgdGVzdCBjaGVja3MgdGhlIHZhcmlvdXMgdXNlIGNh
c2VzIGFyb3VuZCBzZW5kaW5nIG11bHRpcGxlIHBvcnRzIHRocm91Z2ggTWVzCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJzYW1l
IHBvcnQiLCBbY2hhbm5lbC5wb3J0MV0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9T
VEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3Nh
Z2UoImVudGFuZ2xlZCBwb3J0IiwgW2NoYW5uZWwucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjaGFubmVsLnBv
cnQxLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5u
ZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9N
IEV4Y2VwdGlvbiAxMS4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgic2FtZSBwb3J0
IiwgW2NoYW5uZWwucG9ydDFdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJS
OiBET00gRXhjZXB0aW9uIDI1LgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJlbnRh
bmdsZWQgcG9ydCIsIFtjaGFubmVsLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRB
X0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNS4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVz
c2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFubmVsMy5wb3J0Ml0p
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUu
CiBQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwzLnBv
cnQxLCB7fSwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNz
YWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IE1lc3NhZ2VQb3J0cy4KIFBB
U1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QW5BcnJheSIsIGNoYW5uZWwzLnBvcnQx
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IGhh
cyBubyBsZW5ndGggYXR0cmlidXRlLgogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJu
b3RBU2VxdWVuY2UiLCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBN
ZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IE1lc3NhZ2VQb3J0cy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3dvcmtl
cnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBv
cnQtZXhwZWN0ZWQudHh0CmluZGV4IGU2NjI3MGYuLjYwNWE5ZWIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQt
bXVsdGktcG9ydC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0td2luL2Zhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4
dApAQCAtNiw3ICs2LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIFBBU1MgZXZlbnQucG9y
dHMgaXMgbnVsbCB3aGVuIG5vIHBvcnQgc2VudAogUEFTUyBldmVudC5wb3J0cyBpcyBudWxsIHdo
ZW4gZW1wdHkgYXJyYXkgc2VudAogUEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMg
d2hlbiB0d28gcG9ydHMgc2VudAotUEFTUyBwb3N0aW5nIGEgbnVsbCBwb3J0IGRpZCB0aHJvdzog
RXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExCitQQVNTIHBvc3Rpbmcg
YSBudWxsIHBvcnQgZGlkIHRocm93OiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRp
b24gMjUKIFBBU1MgcG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzogVHlwZUVycm9yOiBNZXNz
YWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IE1lc3NhZ2VQb3J0cwogUEFT
UyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBh
ZnRlciBlcnJvcgogUEFTUyBwb3N0aW5nIGEgbm9uLWFycmF5IGRpZCB0aHJvdzogVHlwZUVycm9y
OiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC93b3JrZXJzL3dv
cmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLXdpbi9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CmluZGV4
IGYxMWM3NGMuLmQ5YmIwOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLXdpbi9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3dvcmtlcnMvd29ya2VyLW11
bHRpLXBvcnQtZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBUaGlzIHRlc3QgY2hlY2tzIHRo
ZSB2YXJpb3VzIHVzZSBjYXNlcyBhcm91bmQgc2VuZGluZyBtdWx0aXBsZSBwb3J0cyB0aHJvdWdo
IFdvcgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1Mgd29ya2VyLnBvc3RNZXNz
YWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAx
MS4KK1BBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEs
IG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05F
X0VSUjogRE9NIEV4Y2VwdGlvbiAyNS4KIFBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBUG9y
dCIsIFtjaGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBN
ZXNzYWdlUG9ydHMuCiBQQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibm90QW5BcnJheSIsIGNoYW5u
ZWwzLnBvcnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFy
Z3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlLgogUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2Uo
Im5vdEFTZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWluIG9ubHkgTWVzc2FnZVBvcnRz
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1l
eHBlY3RlZC50eHQKaW5kZXggNWVjZTg0MS4uMDViYjczMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1h
cmdzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsNCBAQAotVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNz
YWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2Fn
ZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1lc3NhZ2UgJzEnIHRocm91Z2ggJzcnLCBmb2xs
b3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMgNC03IHJlY2VpdmVkIGJlbG93LgorVGVzdCB0
aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQg
b3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LgogCiBQQVNT
OiBQb3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1l
c3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKIFBBU1M6IFBvc3Rpbmcg
bWVzc2FnZSAoJzInLCApOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFy
cmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0CkBAIC03LDEyICs3LDI4IEBAIFBBU1M6IFBv
c3RpbmcgbWVzc2FnZSAoJzQnLCBbb2JqZWN0IERPTVdpbmRvd10pIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc1JywgbnVsbCkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzYnLCB1bmRlZmluZWQpIGRp
ZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc3JywgW29i
amVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCc4JywgMSk6IHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyYWJsZUFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4g
b2JqZWN0CitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCc5JywgKTogdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmpl
Y3QKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0EnLCBbb2JqZWN0IE9iamVjdF0pOiB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlcmFibGVBcnJheSBhcmd1bWVudCBoYXMg
bm8gbGVuZ3RoIGF0dHJpYnV0ZQorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnQicsIFtv
YmplY3QgRE9NV2luZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtp
dFBvc3RpbmcgbWVzc2FnZSAoJ0MnLCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgor
UEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnRCcsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0UnLCBbb2JqZWN0
IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUKK1BBU1M6IHdlYmtpdFBvc3Rpbmcg
bWVzc2FnZSAoJ0YnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNl
cHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ0cnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSk6
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUK
K1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29i
amVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiBQb3N0
aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1lc3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRd
KTogdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAy
NQogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMjE0NzQ4MzY0OCcsIG51bGwpIGRpZCBub3QgdGhy
b3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdkb25lJywgKikgZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb24KIFJlY2VpdmVkIG1lc3NhZ2UgJzQnCiBSZWNlaXZlZCBtZXNz
YWdlICc1JwogUmVjZWl2ZWQgbWVzc2FnZSAnNicKIFJlY2VpdmVkIG1lc3NhZ2UgJzcnIHdpdGgg
MiBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ0InCitSZWNlaXZlZCBtZXNzYWdlICdDJworUmVj
ZWl2ZWQgbWVzc2FnZSAnRCcKK1JlY2VpdmVkIG1lc3NhZ2UgJ0YnIHdpdGggMSBwb3J0cy4KK1Jl
Y2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3QgTWVzc2FnZVBvcnRdJyB3aXRoIDEgcG9ydHMuCiBSZWNl
aXZlZCBtZXNzYWdlICcyMTQ3NDgzNjQ4JwogUmVjZWl2ZWQgbWVzc2FnZSAnZG9uZScKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90eXBl
LWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQKaW5kZXggNTU2Mzcx
My4uZWNjZGQ3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0
ZWQudHh0CkBAIC04MjksNiArODI5LDggQEAgUEFTUyBpbm5lci53ZWJraXRJREJUcmFuc2FjdGlv
bi5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIud2Via2l0SURCVHJhbnNhY3Rpb24uY29uc3Ry
dWN0b3IuaXNJbm5lciBpcyB0cnVlCiBGQUlMIGlubmVyLndlYmtpdEluZGV4ZWREQi5pc0lubmVy
IHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCiBGQUlMIGlubmVyLndlYmtpdEluZGV4ZWREQi5j
b25zdHJ1Y3Rvci5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVy
LndlYmtpdFBvc3RNZXNzYWdlLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZB
SUwgaW5uZXIud2Via2l0UG9zdE1lc3NhZ2UuY29uc3RydWN0b3IuaXNJbm5lciBzaG91bGQgYmUg
dHJ1ZS4gV2FzIGZhbHNlLgogUEFTUyBpbm5lci53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUu
aXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZS5j
b25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIud2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW0uaXNJbm5lciBpcyB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGUzNWJlNGEuLmE3
YTk2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01ODksNiArNTg5LDggQEAgU0VUKFdlYkNv
cmVfU09VUkNFUwogICAgIGRvbS9Ub3VjaC5jcHAKICAgICBkb20vVG91Y2hFdmVudC5jcHAKICAg
ICBkb20vVG91Y2hMaXN0LmNwcAorICAgIGRvbS9UcmFuc2ZlcmFibGUuY3BwCisgICAgZG9tL1Ry
YW5zZmVyYWJsZVJlY2VpcHQuY3BwCiAgICAgZG9tL1RyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3Bw
CiAgICAgZG9tL1RyYXZlcnNhbC5jcHAKICAgICBkb20vVHJlZVNjb3BlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGFlNzRjZDYuLjAyZWJmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMDMgQEAKKzIwMTEt
MDgtMTAgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2Ug
TWVzc2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBTdHJ1Y3R1cmVkIENsb25lIGFsZ29yaXRobSBkZXNjcmli
ZXMgYW4gaW50ZXJmYWNlIGZvciBUcmFuc2ZlcmFibGUgb2JqZWN0cworICAgICAgICAoaHR0cDov
L3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9jb21wbGV0ZS9jb21t
b24tZG9tLWludGVyZmFjZXMuaHRtbCN0cmFuc2ZlcmFibGUtb2JqZWN0cykuCisgICAgICAgIEN1
cnJlbnRseSB0aGUgb25seSBvZmZpY2lhbCBUcmFuc2ZlcmFibGUgb2JqZWN0IGlzIHRoZSBNZXNz
YWdlUG9ydCwgYnV0CisgICAgICAgIEFycmF5QnVmZmVycyBhcmUgZXhwZWN0ZWQgdG8gYmUgc2Fu
Y3Rpb25lZCBhcyBzdWNoIHNvb24uCisKKyAgICAgICAgLSBDcmVhdGUgbmV3IGNsYXNzZXMgVHJh
bnNmZXJhYmxlIGFuZCBUcmFuc2ZlcmFibGVSZWNlaXB0LgorICAgICAgICAgICAgLSBDb250cm9s
IG9mIGEgVHJhbnNmZXJhYmxlIG9iamVjdCBjYW4gYmUgdHJhbnNmZXJyZWQgb3V0LCB5aWVsZGlu
ZyBhCisgICAgICAgICAgICAgIFRyYW5zZmVyYWJsZVJlY2VpcHQuCisgICAgICAgICAgICAtIEEg
VHJhbnNmZXJhYmxlUmVjZWlwdCBjYW4gdGhlbiBiZSB0cmFuc2ZlcnJlZCBpbiwgeWllbGRpbmcg
YSBUcmFuc2ZlcmFibGUuCisgICAgICAgICAgICAtIE1lc3NhZ2VQb3J0IGlzIHJlcGFyZW50ZWQg
dG8gVHJhbnNmZXJhYmxlIGFuZCBNZXNzYWdlUG9ydENoYW5uZWwgaXMKKyAgICAgICAgICAgICAg
cmVwYXJlbnRlZCB0byBUcmFuc2ZlcmFibGVSZWNlaXB0LgorICAgICAgICAtIEluc3RlYWQgb2Yg
cGFzc2luZyBhcm91bmQgYSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgd2l0aCBhCisgICAgICAgICAg
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkgKGZvciwgZWcsIHdlYmtpdFBvc3RNZXNzYWdlKSwgaW5z
dGVhZCBhCisgICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGlzIHBhaXJlZCB3aXRoIGEg
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5LgorICAgICAgICAgICAgLSBTZXJpYWxpemVkU2NyaXB0
VmFsdWUgd2lsbCB1c2Ugb2JqZWN0IHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBjbG9uZXMgZm9yCisg
ICAgICAgICAgICAgIG9iamVjdHMgaW4gdGhlIHRyYW5zZmVyIGxpc3QuCisgICAgICAgICAgICAt
IFRoZSBWOCBTZXJpYWxpemVkU2NyaXB0VmFsdWUgc29tZXRpbWVzIG5lZWRzIHRvIGJlIHNlbnQg
YWNyb3NzIGFuIElQQworICAgICAgICAgICAgICBib3VuZGFyeS4gSW4gdGhpcyBjYXNlIHNvbWUg
VHJhbnNmZXJhYmxlUmVjZWlwdHMgd2l0aG91dCBzcGVjaWFsIGNsb25pbmcKKyAgICAgICAgICAg
ICAgc2VtYW50aWNzIChlZywgbm9uLU1lc3NhZ2VQb3J0cywgd2hpY2ggc2VuZCBhY3Jvc3Mgcm91
dGluZyBpbmZvcm1hdGlvbikKKyAgICAgICAgICAgICAgd2lsbCBuZWVkIHRvIGJlIGZsYXR0ZW5l
ZC4gVGhpcyBwYXRjaCBleHBvc2VzIGFuIGludGVyZmFjZSBmb3Igc3VjaCBhbgorICAgICAgICAg
ICAgICBvcGVyYXRpb24uCisgICAgICAgIC0gTW9kaWZ5IElETCBnZW5lcmF0b3JzIGZvciBTZXJp
YWxpemVkU2NyaXB0VmFsdWUgdG8gcmVxdWlyZSBhbmQgcGFzcyB0cmFuc2ZlcgorICAgICAgICAg
IGxpc3RzIHRvIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgY29uc3RydWN0b3IuCisgICAgICAg
IC0gVGhlIG9sZCBwb3N0TWVzc2FnZSBpcyBwcmVzZXJ2ZWQgd2l0aCB0aGF0IG5hbWU7IHdlYmtp
dFBvc3RNZXNzYWdlIGhhbmRsZXMKKyAgICAgICAgICBUcmFuc2ZlcmFibGVzIG90aGVyIHRoYW4g
TWVzc2FnZVBvcnRzIGFuZCBhbGxvd3MgdGhlc2UgVHJhbnNmZXJhYmxlcyB0bworICAgICAgICAg
IGFwcGVhciBpbiB0aGUgbWVzc2FnZSBiZWluZyBwb3N0ZWQuIChEaXR0byBmb3IgaW5pdE1lc3Nh
Z2VFdmVudC4pCisgICAgICAgIC0gVGhyb3cgREFUQV9DTE9ORV9FUlIgaW5zdGVhZCBvZiBJTlZB
TElEX1NUQVRFX0VSUiB3aGVyZSB0aGUgc3RhbmRhcmQgZGVtYW5kcyBpdC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cG9z
dE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OndlYmtpdFBvc3RNZXNz
YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6Ondl
YmtpdFBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VFdmVudDo6cG9ydHMpOgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU01l
c3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3Nh
Z2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0
Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojp3ZWJraXRQ
b3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsVHJhbnNmZXJhYmxlQXJyYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9OYXRpdmVUcmFuc2ZlcmFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KU1RyYW5zZmVyYWJsZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
V29ya2VyOjpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlcjo6d2Via2l0
UG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRWYWx1ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmluaXRpYWxpemVXaXRoVHJhbnNmZXJMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c3RhcnRPYmplY3RJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxpemVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpvcGVuVHJhbnNmZXJhYmxlQXJyYXkpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoTmF0aXZlVG9K
U1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKEdlbmVyYXRlVG9WOENvbnZlcnRlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1h
cDo6U2VyaWFsaXplcjo6U2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1h
cDo6U2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFw
OjpTZXJpYWxpemVyOjppbml0aWFsaXplT2JqZWN0UG9vbCk6CisgICAgICAgIChXZWJDb3JlOjpW
OE9iamVjdE1hcDo6RGVzZXJpYWxpemVyOjpEZXNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhPYmplY3RNYXA6OkRlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhPYmplY3RNYXA6OkRlc2VyaWFsaXplcjo6aW5pdGlhbGl6ZU9iamVjdFBvb2wpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNl
dFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
ZmxhdHRlblJlY2VpcHRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV2luZG93Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6d2Via2l0UG9zdE1lc3NhZ2VD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29y
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojp3ZWJraXRJbml0TWVzc2FnZUV2
ZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VjhNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VQb3J0Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFRyYW5zZmVyYWJsZUFycmF5KToKKyAgICAgICAgKFdlYkNv
cmU6OnRvTmF0aXZlVHJhbnNmZXJhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhUcmFuc2Zl
cmFibGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9t
Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhXb3JrZXI6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3Jr
ZXI6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9u
ZS5jcHA6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
RXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50
OjptZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OnRyYW5zZmVy
YWJsZSk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVzc2FnZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojpk
YXRhRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6dHJhbnNm
ZXJhYmxlcyk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6CisgICAgICAgICogZG9t
L01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdl
UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnRyYW5zZmVyT3V0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKiBkb20vTWVzc2Fn
ZVBvcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojphc01lc3NhZ2VQb3J0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojppc1RyYW5zZmVyQ2xvc2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojppc0VudGFuZ2xlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNzYWdlUG9ydDo6aXNDbG9uZWQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6
CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVudERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjp0cmFuc2ZlckluKToKKyAgICAgICAgKiBkb20v
TWVzc2FnZVBvcnRDaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWw6OmFzTWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
Q2hhbm5lbDo6aXNGbGF0dGVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENo
YW5uZWw6OkV2ZW50RGF0YTo6cmVjZWlwdHMpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpzdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpkYXRhRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiBkb20v
VHJhbnNmZXJhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2ZlcmFibGU6
OnRyYW5zZmVyQWxsT3V0KToKKyAgICAgICAgKiBkb20vVHJhbnNmZXJhYmxlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VHJhbnNmZXJhYmxlOjphc01lc3NhZ2VQb3J0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZmVyYWJsZTo6flRyYW5zZmVyYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2ZlcmFibGU6OlRyYW5zZmVyYWJsZSk6CisgICAgICAgICogZG9tL1RyYW5zZmVyYWJs
ZVJlY2VpcHQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5p
ZGwuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbElu
KToKKyAgICAgICAgKiBkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6On5UcmFuc2ZlcmFibGVSZWNlaXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmFzTWVzc2FnZVBvcnRDaGFubmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6OlRyYW5zZmVyYWJsZVJl
Y2VpcHQpOgorICAgICAgICAqIHAycC9QZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIHBh
Z2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdlVGltZXI6OlBv
c3RNZXNzYWdlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1lcjo6ZXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAg
ICAgICogc3RvcmFnZS9JREJDdXJzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6
dmFsdWVEZXBlbmRlbmNpZXMpOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0
TWVzc2FnZSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg6Cisg
ICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDoKKyAgICAgICAgKiB3
b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q29ubmVjdEV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5o
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckNvbnRleHRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpNZXNzYWdlV29y
a2VyQ29udGV4dFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRU
YXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyVGFzazo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJUYXNrOjpNZXNzYWdlV29y
a2VyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyVGFzazo6cGVyZm9ybVRh
c2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdl
VG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oOgor
CiAyMDExLTA4LTEwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBhdXRvLWNvbXBsZXRpb24gZm9yIHN0cmluZyBsaXRlcmFscyBk
b2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDZiZWI5MzEuLjJj
NDU3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTMwMiw2ICsxMzAyLDEw
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudElu
cHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVG91Y2hMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5z
ZmVyYWJsZVJlY2VpcHQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9ybVNvdXJjZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXgg
MWUxMmY0MC4uNWRjYTkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTU2NSw3ICs1NjUsNyBA
QCBfX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRFdmVudEMxRVA3TlNFdmVudAogX19aTjdX
ZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMHNlcnZlUGVuZGluZ1JlcXVlc3RzRU5TXzIw
UmVzb3VyY2VMb2FkUHJpb3JpdHlFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxl
cjI0c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkRVBOU181RnJhbWVFUE5TXzMyTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXJDbGllbnRFUktOU18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29y
ZTIxU1ZHRG9jdW1lbnRFeHRlbnNpb25zMjFzYW1wbGVBbmltYXRpb25BdFRpbWVFUktOM1dURjZT
dHJpbmdFUE5TXzE0U1ZHU01JTEVsZW1lbnRFZAotX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2Ny
aXB0VmFsdWUxMWRlc2VyaWFsaXplRVBLMTVPcGFxdWVKU0NvbnRleHRQUEsxM09wYXF1ZUpTVmFs
dWUKK19fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1
T3BhcXVlSlNDb250ZXh0UFBLMTNPcGFxdWVKU1ZhbHVlUE4zV1RGNlZlY3RvcklOM0pTQzdKU1Zh
bHVlRUxtMUVFRQogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBL
MTVPcGFxdWVKU0NvbnRleHRQSzEzT3BhcXVlSlNWYWx1ZVBTNl8KIF9fWk43V2ViQ29yZTIxU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQzFFUk4zV1RGNlZlY3RvckloTG0wRUVFCiBfX1pON1dlYkNvcmUy
MVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQxRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyYzYzMmFkLi5i
M2FlNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMDE1LDYgKzEwMTUsOCBAQAogICAgICAgICAg
ICAgJ2RvbS9TdHlsZWRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0LmgnLAogICAg
ICAgICAgICAgJ2RvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaCcsCisgICAgICAgICAgICAnZG9tL1Ry
YW5zZmVyYWJsZS5oJywKKyAgICAgICAgICAgICdkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oJywK
ICAgICAgICAgICAgICdkb20vVUlFdmVudC5oJywKICAgICAgICAgICAgICdkb20vVUlFdmVudFdp
dGhLZXlTdGF0ZS5oJywKICAgICAgICAgICAgICdkb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaCcs
CkBAIC01NDAyLDYgKzU0MDQsMTAgQEAKICAgICAgICAgICAgICdkb20vVG91Y2hFdmVudC5oJywK
ICAgICAgICAgICAgICdkb20vVG91Y2hMaXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1RvdWNo
TGlzdC5oJywKKyAgICAgICAgICAgICdkb20vVHJhbnNmZXJhYmxlLmNwcCcsCisgICAgICAgICAg
ICAnZG9tL1RyYW5zZmVyYWJsZS5oJywKKyAgICAgICAgICAgICdkb20vVHJhbnNmZXJhYmxlUmVj
ZWlwdC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmgnLAogICAg
ICAgICAgICAgJ2RvbS9UcmFuc2Zvcm1Tb3VyY2UuaCcsCiAgICAgICAgICAgICAnZG9tL1RyYW5z
Zm9ybVNvdXJjZUxpYnhzbHQuY3BwJywKICAgICAgICAgICAgICdkb20vVHJhbnNmb3JtU291cmNl
UXQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYTA3Yjk0YS4uYjdlMWE1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KQEAgLTU1Myw2ICs1NTMsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vVG91Y2guY3BwIFwK
ICAgICBkb20vVG91Y2hFdmVudC5jcHAgXAogICAgIGRvbS9Ub3VjaExpc3QuY3BwIFwKKyAgICBk
b20vVHJhbnNmZXJhYmxlLmNwcCBcCisgICAgZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuY3BwIFwK
ICAgICBkb20vVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL1RyZWVTY29wZS5jcHAgXAogICAgIGRv
bS9UcmVlV2Fsa2VyLmNwcCBcCkBAIC0xNTQ2LDYgKzE1NDgsOCBAQCBIRUFERVJTICs9IFwKICAg
ICBkb20vVG91Y2guaCBcCiAgICAgZG9tL1RvdWNoRXZlbnQuaCBcCiAgICAgZG9tL1RvdWNoTGlz
dC5oIFwKKyAgICBkb20vVHJhbnNmZXJhYmxlLmggXAorICAgIGRvbS9UcmFuc2ZlcmFibGVSZWNl
aXB0LmggXAogICAgIGRvbS9UcmFuc2Zvcm1Tb3VyY2UuaCBcCiAgICAgZG9tL1RyYXZlcnNhbC5o
IFwKICAgICBkb20vVHJlZURlcHRoTGltaXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGJhODQ2NC4uZTBjYTY5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDgyMiwxMiArNDgyMiwxNiBAQAogCQlCNzM0QjE4MTExOUI5OTExMDA2NTg3QkQgLyogRm9u
dFRyYW5zY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjczNEIxODAxMTlCOTkxMTAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmNwcCAqLzsg
fTsKIAkJQjczNEIxODMxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzM0QjE4MjExOUI5OTFE
MDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuaCAqLzsgfTsKIAkJQjc3NkQ0M0QxMTA0NTI3NTAw
QkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0
LmNwcCAqLzsgfTsKKwkJQjg2MTg3MkMxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCODYxODcy
QTEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmNwcCAqLzsgfTsKKwkJQjg2MTg3MkQx
M0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg2MTg3MkIxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5z
ZmVyYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUI4ODVFOEQ0MTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Qjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAgKi87IH07CiAJCUI4ODVFOEQ1MTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI4ODVFOEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQlC
OERCREI0QjEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0NzEzMEIwRjhB
MDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAgKi87IH07CiAJCUI4REJEQjRDMTMw
QjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEgLyog
U2V0U2VsZWN0aW9uQ29tbWFuZC5oICovOyB9OwogCQlCOERCREI0RDEzMEIwRjhBMDBGNUNEQjEg
LyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0OTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxp
bmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgKi87IH07CiAJCUI4REJEQjRFMTMwQjBGOEEwMEY1Q0RC
MSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0QTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxp
bmdDb3JyZWN0aW9uQ29tbWFuZC5oICovOyB9OworCQlCOEUwRThGRjEzRUM3RTU1MDBDMTM3MjAg
LyogVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCOEUwRThGQzEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxl
UmVjZWlwdC5jcHAgKi87IH07CisJCUI4RTBFOEZFMTNFQzdFNEQwMEMxMzcyMCAvKiBUcmFuc2Zl
cmFibGVSZWNlaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCOEUwRThGRDEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJBQ0YyOTAx
MTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkFDRjI5MDAxM0IyQTBENTAwNzgxRjkwIC8qIExheW91
dFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQkMwMEYwMDQwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDBFRkZFMEUwQTE4NTUwMEZEMDRFMyAv
KiBET01GaWxlLmggKi87IH07CiAJCUJDMDBGMDA1MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEVG
RkYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0gKi87IH07CkBAIC0xMTUwNiwxMiArMTE1
MTAsMTYgQEAKIAkJQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZvbnRUcmFuc2NvZGVyLmg7IHBhdGgg
PSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRDb250ZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjg2MTg3MkExM0Q4RUM0OTAwOEI4NzRGIC8q
IFRyYW5zZmVyYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
cmFuc2ZlcmFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCODYxODcyQjEz
RDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRyYW5zZmVyYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
ODg1RThEMjExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4ODVF
OEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4REJEQjQ3MTMwQjBGOEEw
MEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29t
bWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXRTZWxlY3Rpb25Db21t
YW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4REJEQjQ5MTMwQjBGOEEwMEY1
Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0QTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxp
bmdDb3JyZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUI4RTBFOEZDMTNFQzdFMEMwMEMxMzcyMCAvKiBUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZmVyYWJsZVJlY2VpcHQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCOEUwRThGRDEzRUM3RTBDMDBDMTM3MjAg
LyogVHJhbnNmZXJhYmxlUmVjZWlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUcmFuc2ZlcmFibGVSZWNlaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJB
Q0YyOTAwMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMYXlvdXRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwMDIxLDYgKzIwMDI5LDEwIEBACiAJCQkJOTMzQTE0MkQwQjdEMTg4NjAw
QTUzRkZEIC8qIFRleHRFdmVudC5oICovLAogCQkJCTkzM0ExNDJDMEI3RDE4ODYwMEE1M0ZGRCAv
KiBUZXh0RXZlbnQuaWRsICovLAogCQkJCUE3N0I0MTlGMTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0
RXZlbnRJbnB1dFR5cGUuaCAqLywKKwkJCQlCODYxODcyQjEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJh
bnNmZXJhYmxlLmggKi8sCisJCQkJQjg2MTg3MkExM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVy
YWJsZS5jcHAgKi8sCisJCQkJQjhFMEU4RkQxM0VDN0UwQzAwQzEzNzIwIC8qIFRyYW5zZmVyYWJs
ZVJlY2VpcHQuaCAqLywKKwkJCQlCOEUwRThGQzEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJh
YmxlUmVjZWlwdC5jcHAgKi8sCiAJCQkJNURCMUJDNjgxMDcxNUE2NDAwRUZBQTQ5IC8qIFRyYW5z
Zm9ybVNvdXJjZS5oICovLAogCQkJCTVEQjFCQzY5MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zv
cm1Tb3VyY2VMaWJ4c2x0LmNwcCAqLywKIAkJCQk4NTRGRTcyQzBBMjI5N0JFMDA1OEQ3QUQgLyog
VHJhdmVyc2FsLmNwcCAqLywKQEAgLTIzMTk0LDYgKzIzMjA2LDggQEAKIAkJCQk5MzA1QjI0RDA5
OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0IwMENE
NjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJB
RTBFRkFDOTA2MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUI4NjE4NzJEMTNEOEVDNDkwMDhCODc0RiAvKiBUcmFuc2ZlcmFibGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUI4RTBFOEZFMTNFQzdFNEQwMEMxMzcyMCAvKiBUcmFuc2ZlcmFibGVSZWNlaXB0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3Jt
YXRpb25NYXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNFMEVGODZENDcwMDlEMENB
RiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQwMEVG
ODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2MDM5LDYgKzI2MDUzLDggQEAKIAkJCQk3NTUzQ0ZFOTEwOEY0NzNGMDBFQTI4MUUgLyogVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RUE0MDk5RUI3
OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNBRjBDRDYz
MzEwMDBGQURBNzUgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCODYxODcy
QzEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUI4RTBFOEZGMTNFQzdFNTUwMEMxMzcyMCAvKiBUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5RTkxMUMzMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTRCQzQwRDEyQUVERDlFMDA3NDNCRDIg
LyogVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU1
ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAppbmRleCA3NDQ4MTc2Li5lY2Q4NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02OTQsMTYgKzY5NCwxNiBAQCBKU1Zh
bHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBoYW5kbGVyLnJldHVyblZhbHVlKCk7CiB9CiAKLUpTVmFsdWUgSlNET01XaW5kb3c6OnBv
c3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBKU1ZhbHVlIHBvc3RNZXNzYWdlKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01XaW5kb3cqIHdpbmRvdywgTWVzc2FnZVBhc3NpbmdNb2RlIG1l
c3NhZ2VQYXNzaW5nTW9kZSkKIHsKLSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApKTsKLQorICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZXM7CisgICAg
SlNWYWx1ZUFycmF5IHZhbHVlQXJyYXk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+
IDIpCisgICAgICAgIGZpbGxUcmFuc2ZlcmFibGVBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCgx
KSwgdHJhbnNmZXJhYmxlcywgdmFsdWVBcnJheSwgbWVzc2FnZVBhc3NpbmdNb2RlKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9ydHM7Ci0gICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA+IDIpCi0gICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDEpLCBtZXNzYWdlUG9ydHMpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVj
LT5hcmd1bWVudCgwKSwgJnZhbHVlQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSwgVGhyb3dpbmcp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKQEAgLTcxMiwxMiArNzEyLDIyIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnBvc3RN
ZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCktPnBvc3RNZXNzYWdlKG1lc3Nh
Z2UsICZtZXNzYWdlUG9ydHMsIHRhcmdldE9yaWdpbiwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBl
Yyk7CisgICAgd2luZG93LT5pbXBsKCktPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAm
dHJhbnNmZXJhYmxlcywgdGFyZ2V0T3JpZ2luLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGVjKTsK
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiB9CiAKK0pTVmFsdWUgSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2UoZXhlYywgdGhpcywgT25seU1l
c3NhZ2VQb3J0cyk7Cit9CisKK0pTVmFsdWUgSlNET01XaW5kb3c6OndlYmtpdFBvc3RNZXNzYWdl
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2UoZXhl
YywgdGhpcywgUGVybWl0VHJhbnNmZXJhYmxlcyk7Cit9CisKIEpTVmFsdWUgSlNET01XaW5kb3c6
OnNldFRpbWVvdXQoRXhlY1N0YXRlKiBleGVjKQogewogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gaW1wbCgpLT5kb2N1bWVudCgpID8gaW1wbCgpLT5k
b2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcAppbmRleCAyMjIyMzUzLi4zYzQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5j
cHAKQEAgLTQ0LDcgKzQ0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNDOjpKU1ZhbHVl
IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSk7CisgICAg
cmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSwgT25seU1lc3NhZ2VQb3J0cyk7
Cit9CisKK0pTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OndlYmtpdFBvc3RN
ZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBoYW5kbGVQb3N0TWVz
c2FnZShleGVjLCBpbXBsKCksIFBlcm1pdFRyYW5zZmVyYWJsZXMpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VFdmVudEN1c3RvbS5jcHAKaW5kZXggNDM5NjY0YS4uMzBiMzBmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtNDQs
MzggKzQ0LDUyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU01lc3NhZ2VFdmVu
dDo6cG9ydHMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewotICAgIE1lc3NhZ2VQb3J0QXJyYXkq
IHBvcnRzID0gc3RhdGljX2Nhc3Q8TWVzc2FnZUV2ZW50Kj4oaW1wbCgpKS0+cG9ydHMoKTsKLSAg
ICBpZiAoIXBvcnRzIHx8IHBvcnRzLT5pc0VtcHR5KCkpCisgICAgTWVzc2FnZUV2ZW50KiBldmVu
dCA9IHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVudCo+KGltcGwoKSk7CisgICAgVHJhbnNmZXJhYmxl
QXJyYXkqIHRyYW5zZmVyYWJsZXMgPSBldmVudC0+dHJhbnNmZXJhYmxlcygpOworICAgIGlmICgh
dHJhbnNmZXJhYmxlcyB8fCB0cmFuc2ZlcmFibGVzLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBqc051bGwoKTsKLQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwb3J0cy0+c2l6ZSgpOyBpKyspCi0gICAgICAgIGxpc3QuYXBwZW5k
KHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksICgqcG9ydHMpW2ldLmdldCgpKSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXplKCk7ICsraSkgeworICAgICAg
ICBpZiAoTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gKCp0cmFuc2ZlcmFibGVzKVtpXS5nZXQo
KS0+YXNNZXNzYWdlUG9ydCgpKQorICAgICAgICAgICAgbGlzdC5hcHBlbmQodG9KUyhleGVjLCBn
bG9iYWxPYmplY3QoKSwgbWVzc2FnZVBvcnQpKTsKKyAgICB9CiAgICAgcmV0dXJuIGNvbnN0cnVj
dEFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBsaXN0KTsKIH0KIAotSlNDOjpKU1ZhbHVlIEpT
TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEpTQzo6SlNWYWx1ZSBpbml0TWVzc2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U01lc3NhZ2VFdmVudCoganNFdmVudCwgTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5n
TW9kZSkKIHsKICAgICBjb25zdCBVU3RyaW5nJiB0eXBlQXJnID0gZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyk7CiAgICAgYm9vbCBjYW5CdWJibGVBcmcgPSBleGVjLT5hcmd1bWVudCgx
KS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgYm9vbCBjYW5jZWxhYmxlQXJnID0gZXhlYy0+YXJndW1l
bnQoMikudG9Cb29sZWFuKGV4ZWMpOwotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBkYXRhQXJnID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgZXhlYy0+
YXJndW1lbnQoMykpOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxl
czsKKyAgICBPd25QdHI8SlNWYWx1ZUFycmF5PiB2YWx1ZUFycmF5OworICAgIGlmICghZXhlYy0+
YXJndW1lbnQoNykuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICB0cmFuc2ZlcmFibGVz
ID0gYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZUFycmF5KTsKKyAgICAgICAgdmFsdWVBcnJheSA9
IGFkb3B0UHRyKG5ldyBKU1ZhbHVlQXJyYXkpOworICAgICAgICBmaWxsVHJhbnNmZXJhYmxlQXJy
YXkoZXhlYywgZXhlYy0+YXJndW1lbnQoNyksICp0cmFuc2ZlcmFibGVzLCAqdmFsdWVBcnJheSwg
bWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGRhdGFBcmcgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShleGVjLCBleGVjLT5hcmd1bWVudCgzKSwgdmFsdWVBcnJheS5nZXQoKSwgbWVzc2FnZVBhc3Np
bmdNb2RlLCBUaHJvd2luZyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBjb25zdCBVU3RyaW5nJiBvcmlnaW5BcmcgPSBl
eGVjLT5hcmd1bWVudCg0KS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBVU3RyaW5nJiBsYXN0
RXZlbnRJZEFyZyA9IGV4ZWMtPmFyZ3VtZW50KDUpLnRvU3RyaW5nKGV4ZWMpOwogICAgIERPTVdp
bmRvdyogc291cmNlQXJnID0gdG9ET01XaW5kb3coZXhlYy0+YXJndW1lbnQoNikpOwotICAgIE93
blB0cjxNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdlUG9ydHM7Ci0gICAgaWYgKCFleGVjLT5hcmd1
bWVudCg3KS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIG1lc3NhZ2VQb3J0cyA9IGFk
b3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KTsKLSAgICAgICAgZmlsbE1lc3NhZ2VQb3J0QXJy
YXkoZXhlYywgZXhlYy0+YXJndW1lbnQoNyksICptZXNzYWdlUG9ydHMpOwotICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LSAgICB9CiAKLSAgICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0gc3RhdGljX2Nhc3Q8TWVzc2FnZUV2
ZW50Kj4odGhpcy0+aW1wbCgpKTsKLSAgICBldmVudC0+aW5pdE1lc3NhZ2VFdmVudCh1c3RyaW5n
VG9BdG9taWNTdHJpbmcodHlwZUFyZyksIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0
YUFyZywgdXN0cmluZ1RvU3RyaW5nKG9yaWdpbkFyZyksIHVzdHJpbmdUb1N0cmluZyhsYXN0RXZl
bnRJZEFyZyksIHNvdXJjZUFyZywgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSk7CisgICAgTWVzc2Fn
ZUV2ZW50KiBldmVudCA9IHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVudCo+KGpzRXZlbnQtPmltcGwo
KSk7CisgICAgZXZlbnQtPmluaXRNZXNzYWdlRXZlbnQodXN0cmluZ1RvQXRvbWljU3RyaW5nKHR5
cGVBcmcpLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIGRhdGFBcmcucmVsZWFzZSgpLCB1
c3RyaW5nVG9TdHJpbmcob3JpZ2luQXJnKSwgdXN0cmluZ1RvU3RyaW5nKGxhc3RFdmVudElkQXJn
KSwgc291cmNlQXJnLCB0cmFuc2ZlcmFibGVzLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiB9CiAKK0pTQzo6SlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VF
dmVudChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6aW5pdE1l
c3NhZ2VFdmVudChleGVjLCB0aGlzLCBPbmx5TWVzc2FnZVBvcnRzKTsKK30KKworSlNDOjpKU1Zh
bHVlIEpTTWVzc2FnZUV2ZW50Ojp3ZWJraXRJbml0TWVzc2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRl
KiBleGVjKQoreworICAgIHJldHVybiBXZWJDb3JlOjppbml0TWVzc2FnZUV2ZW50KGV4ZWMsIHRo
aXMsIFBlcm1pdFRyYW5zZmVyYWJsZXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
CmluZGV4IGFjMDZjNmEuLmU0MDQxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2Fz
dC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KIApAQCAtNTcsMTUgKzU4LDIxIEBAIHZvaWQgSlNNZXNzYWdlUG9ydDo6dmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIAogSlNDOjpKU1ZhbHVlIEpTTWVzc2Fn
ZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBo
YW5kbGVQb3N0TWVzc2FnZShleGVjLCBpbXBsKCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVz
c2FnZShleGVjLCBpbXBsKCksIE9ubHlNZXNzYWdlUG9ydHMpOwogfQogCi12b2lkIGZpbGxNZXNz
YWdlUG9ydEFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1l
c3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJheSkKK0pTQzo6SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojp3
ZWJraXRQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICAvLyBDb252ZXJ0
IGZyb20gdGhlIHBhc3NlZC1pbiBKUyBhcnJheS1saWtlIG9iamVjdCB0byBhIE1lc3NhZ2VQb3J0
QXJyYXkuCisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSwgUGVybWl0
VHJhbnNmZXJhYmxlcyk7Cit9CisKK3ZvaWQgZmlsbFRyYW5zZmVyYWJsZUFycmF5KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFRyYW5zZmVyYWJsZUFycmF5JiB0cmFu
c2ZlcmFibGVBcnJheSwgSlNWYWx1ZUFycmF5JiB2YWx1ZUFycmF5LCBNZXNzYWdlUGFzc2luZ01v
ZGUgbWVzc2FnZVBhc3NpbmdNb2RlKQoreworICAgIC8vIENvbnZlcnQgZnJvbSB0aGUgcGFzc2Vk
LWluIEpTIGFycmF5LWxpa2Ugb2JqZWN0IHRvIGEgVHJhbnNmZXJhYmxlQXJyYXkuCiAgICAgLy8g
QWxzbyB2YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0LjEuMTMgYW5kIDQuMS4x
NSBvZiB0aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMu
CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgcG9ydEFycmF5
LnJlc2l6ZSgwKTsKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJyYXkucmVzaXplKDApOworICAgICAg
ICB2YWx1ZUFycmF5LnJlc2l6ZSgwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODEs
MTggKzg4LDM4IEBAIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgTWVzc2FnZVBvcnRBCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIC8vIFZhbGlkYXRpb24gb2Ygbm9uLW51bGwgb2JqZWN0cywgcGVyIEhUTUw1IHNw
ZWMgOC4zLjMuCiAgICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAg
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5WQUxJRF9TVEFURV9FUlIpOworICAgICAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIERBVEFfQ0xPTkVfRVJSKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCisKICAgICAgICAgLy8gVmFsaWRhdGlvbiBvZiBPYmplY3Rz
IGltcGxlbWVudGluZyBhbiBpbnRlcmZhY2UsIHBlciBXZWJJREwgc3BlYyA0LjEuMTUuCi0gICAg
ICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IHRvTWVzc2FnZVBvcnQodmFsdWUpOwotICAg
ICAgICBpZiAoIXBvcnQpIHsKKyAgICAgICAgUmVmUHRyPFRyYW5zZmVyYWJsZT4gdHJhbnNmZXJh
YmxlID0gdG9OYXRpdmVUcmFuc2ZlcmFibGUodmFsdWUpOworICAgICAgICBpZiAoIXRyYW5zZmVy
YWJsZSB8fCAobWVzc2FnZVBhc3NpbmdNb2RlID09IE9ubHlNZXNzYWdlUG9ydHMgJiYgIXRyYW5z
ZmVyYWJsZS0+YXNNZXNzYWdlUG9ydCgpKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgcG9ydEFycmF5
LmFwcGVuZChwb3J0LnJlbGVhc2UoKSk7CisgICAgICAgIHRyYW5zZmVyYWJsZUFycmF5LmFwcGVu
ZCh0cmFuc2ZlcmFibGUucmVsZWFzZSgpKTsKKyAgICAgICAgdmFsdWVBcnJheS5hcHBlbmQodmFs
dWUpOwogICAgIH0KIH0KIAorUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRvTmF0aXZlVHJhbnNm
ZXJhYmxlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8VHJhbnNmZXJhYmxlPiBv
dXRWYWx1ZSA9IHRvTWVzc2FnZVBvcnQodmFsdWUpOworICAgIGlmIChvdXRWYWx1ZSkKKyAgICAg
ICAgcmV0dXJuIG91dFZhbHVlLnJlbGVhc2UoKTsKKyAgICAvLyBXZSdsbCByZXR1cm4gbnVsbCBp
ZiB2YWx1ZSBpcyBub3QgVHJhbnNmZXJhYmxlIGluIGFueSBjYXNlLgorICAgIHJldHVybiBvdXRW
YWx1ZS5yZWxlYXNlKCk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTVHJhbnNmZXJhYmxlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUcmFuc2Zl
cmFibGUqIHZhbHVlKQoreworICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSB2YWx1
ZS0+YXNNZXNzYWdlUG9ydCgpKQorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QsIG1lc3NhZ2VQb3J0KTsKKyAgICAvLyBUaGlzIHR5cGVjYXNlIHNob3VsZCBhbHdheXMgYmUg
dG90YWwuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEpTQzo6anNVbmRl
ZmluZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCmluZGV4IDgzOTZhZTEuLmM5YTAx
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgKQEAgLTMyLDYgKzMyLDggQEAKICNkZWZpbmUgSlNNZXNzYWdlUG9ydEN1c3RvbV9oCiAK
ICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTM5LDI2ICs0MSwzMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi0gICAg
Ly8gSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxzIHRoZSB2YWx1ZXMgb3V0IG9mIGEgSlMgc2Vx
dWVuY2UgYW5kIGludG8gYSBNZXNzYWdlUG9ydEFycmF5LgorICAgIC8vIEhlbHBlciBmdW5jdGlv
biB3aGljaCBwdWxscyB0aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBpbnRvIGEg
VHJhbnNmZXJhYmxlQXJyYXksIG1pcnJvcmluZyB0aGVzZSBpbnRvIGEgSlNWYWx1ZUFycmF5Lgog
ICAgIC8vIEFsc28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFu
ZCA0LjEuMTUgb2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1M
NSBzcGVjLgogICAgIC8vIE1heSBnZW5lcmF0ZSBhbiBleGNlcHRpb24gdmlhIHRoZSBwYXNzZWQg
RXhlY1N0YXRlLgotICAgIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmKTsKKyAgICB2b2lkIGZpbGxUcmFuc2Zl
cmFibGVBcnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgVHJhbnNmZXJhYmxlQXJy
YXkmLCBKU1ZhbHVlQXJyYXkmLCBNZXNzYWdlUGFzc2luZ01vZGUpOwogCiAgICAgLy8gSGVscGVy
IGZ1bmN0aW9uIHRvIGNvbnZlcnQgZnJvbSBKUyBwb3N0TWVzc2FnZSBhcmd1bWVudHMgdG8gV2Vi
Q29yZSBwb3N0TWVzc2FnZSBhcmd1bWVudHMuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
ICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgVCogaW1wbCkKKyAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsLCBNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2Fn
ZVBhc3NpbmdNb2RlKQogICAgIHsKLSAgICAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVj
LT5hcmd1bWVudCgwKSk7Ci0gICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwotICAg
ICAgICBmaWxsTWVzc2FnZVBvcnRBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgcG9ydEFy
cmF5KTsKKyAgICAgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlQXJyYXk7CisgICAg
ICAgIEpTVmFsdWVBcnJheSB2YWx1ZVJlZkFycmF5OworICAgICAgICBmaWxsVHJhbnNmZXJhYmxl
QXJyYXkoZXhlYywgZXhlYy0+YXJndW1lbnQoMSksIHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1ZVJl
ZkFycmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgICAgICBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksICZ2YWx1ZVJlZkFycmF5LCBtZXNz
YWdlUGFzc2luZ01vZGUsIFRocm93aW5nKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIAogICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgaW1wbC0+cG9zdE1lc3NhZ2UobWVzc2FnZSwg
JnBvcnRBcnJheSwgZWMpOworICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVh
c2UoKSwgJnRyYW5zZmVyYWJsZUFycmF5LCBlYyk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CiAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CiAgICAgfQogCisg
ICAgUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRvTmF0aXZlVHJhbnNmZXJhYmxlKEpTQzo6SlNW
YWx1ZSk7CisgICAgSlNDOjpKU1ZhbHVlIHRvSlNUcmFuc2ZlcmFibGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIFRyYW5zZmVyYWJsZSopOwogfQogI2VuZGlmIC8vIEpTTWVz
c2FnZVBvcnRDdXN0b21faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJD
dXN0b20uY3BwCmluZGV4IDI3NTgwYWUuLjA0MjhjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKQEAgLTQxLDcgKzQxLDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogSlNDOjpKU1ZhbHVlIEpTV29ya2VyOjpwb3N0TWVzc2FnZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2UoZXhlYywgaW1w
bCgpKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgpLCBPbmx5TWVz
c2FnZVBvcnRzKTsKK30KKworSlNDOjpKU1ZhbHVlIEpTV29ya2VyOjp3ZWJraXRQb3N0TWVzc2Fn
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uo
ZXhlYywgaW1wbCgpLCBQZXJtaXRUcmFuc2ZlcmFibGVzKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1dvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dvcmtlcihFeGVj
U3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAK
aW5kZXggNDk2NmFlMC4uZjU4MjMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFZhbHVlLmNwcApAQCAtMTAwLDE0ICsxMDAsMTQgQEAgYm9vbCBTY3JpcHRWYWx1ZTo6aXNG
dW5jdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIGdldENhbGxEYXRhKG1fdmFsdWUuZ2V0KCksIGNh
bGxEYXRhKSAhPSBDYWxsVHlwZU5vbmU7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwg
U2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01vZGUg
bWVzc2FnZVBhc3NpbmdNb2RlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9u
cykKIHsKLSAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3Rh
dGUsIGpzVmFsdWUoKSwgdGhyb3dFeGNlcHRpb25zKTsKKyAgICByZXR1cm4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3RhdGUsIGpzVmFsdWUoKSwgdHJhbnNmZXJMaXN0LCBt
ZXNzYWdlUGFzc2luZ01vZGUsIHRocm93RXhjZXB0aW9ucyk7CiB9CiAKLVNjcmlwdFZhbHVlIFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRp
b25zKQorU2NyaXB0VmFsdWUgU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFNjcmlwdFN0YXRlKiBz
Y3JpcHRTdGF0ZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgSlNWYWx1ZUFycmF5KiB0
cmFuc2Zlckxpc3QsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewot
ICAgIHJldHVybiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCB2YWx1ZS0+
ZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIHRocm93RXhjZXB0aW9ucykpOworICAgIHJldHVybiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0
ZS0+Z2xvYmFsRGF0YSgpLCB2YWx1ZS0+ZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHRyYW5zZmVyTGlzdCwgdGhyb3dFeGNlcHRpb25z
KSk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFZhbHVlLmgKaW5kZXggZmFkZTgzMC4uYTYwNDkzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShTY3JpcHRTdGF0ZSosIFNlcmlhbGl6YXRpb25FcnJvck1v
ZGUgPSBUaHJvd2luZyk7Ci0gICAgc3RhdGljIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplKFNjcmlw
dFN0YXRlKiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9
IFRocm93aW5nKTsKKyAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFs
aXplKFNjcmlwdFN0YXRlKiwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIE1lc3NhZ2VQYXNz
aW5nTW9kZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKKyAgICBzdGF0aWMg
U2NyaXB0VmFsdWUgZGVzZXJpYWxpemUoU2NyaXB0U3RhdGUqLCBTZXJpYWxpemVkU2NyaXB0VmFs
dWUqLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9
IFRocm93aW5nKTsKIAogICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSB1bmRlZmluZWQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggOGJhZjkxOS4uM2E3Zjc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiSlNGaWxlLmgiCiAjaW5jbHVkZSAiSlNGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkpT
SW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUg
IkpTTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8bGlt
aXRzPgpAQCAtOTYsOCArOTcsOSBAQCBlbnVtIFNlcmlhbGl6YXRpb25UYWcgewogICoKICAqIElu
aXRpYWwgdmVyc2lvbiB3YXMgMS4KICAqIFZlcnNpb24gMi4gYWRkZWQgdGhlIE9iamVjdFJlZmVy
ZW5jZVRhZyBhbmQgc3VwcG9ydCBmb3Igc2VyaWFsaXphdGlvbiBvZiBjeWNsaWMgZ3JhcGhzLgor
ICogVmVyc2lvbiAzLiBhZGRlZCB0cmFuc2ZlciBsaXN0cy4KICAqLwotc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGludCBDdXJyZW50VmVyc2lvbiA9IDI7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50
IEN1cnJlbnRWZXJzaW9uID0gMzsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgVGVybWluYXRv
clRhZyA9IDB4RkZGRkZGRkY7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IFN0cmluZ1Bvb2xU
YWcgPSAweEZGRkZGRkZFOwogCkBAIC0yNTAsOSArMjUyLDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHN0YXRpYyBib29sIHdyaXRlTGl0dGxlRW5kaWFuKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVy
LCBjb24KIAogY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgU2VyaWFsaXphdGlvblJldHVybkNvZGUgc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSwgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQpCisgICAgc3RhdGljIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlIHNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2Fn
ZVBhc3NpbmdNb2RlLCBWZWN0b3I8dWludDhfdD4mIG91dCkKICAgICB7Ci0gICAgICAgIENsb25l
U2VyaWFsaXplciBzZXJpYWxpemVyKGV4ZWMsIG91dCk7CisgICAgICAgIENsb25lU2VyaWFsaXpl
ciBzZXJpYWxpemVyKGV4ZWMsIHRyYW5zZmVyTGlzdCwgbWVzc2FnZVBhc3NpbmdNb2RlLCBvdXQp
OwogICAgICAgICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwogICAgIH0KIApA
QCAtMjY5LDEwICsyNzEsMTMgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDbG9u
ZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBWZWN0b3I8dWludDhfdD4mIG91dCkKKyAgICBD
bG9uZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlz
dCwgTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSwgVmVjdG9yPHVpbnQ4X3Q+
JiBvdXQpCiAgICAgICAgIDogQ2xvbmVCYXNlKGV4ZWMpCiAgICAgICAgICwgbV9idWZmZXIob3V0
KQogICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmcoIiIsIDApKQorICAg
ICAgICAsIG1fdHJhbnNmZXJMaXN0KHRyYW5zZmVyTGlzdCkKKyAgICAgICAgLCBtX21lc3NhZ2VQ
YXNzaW5nTW9kZShtZXNzYWdlUGFzc2luZ01vZGUpCisgICAgICAgICwgbV9taW5pbXVtVmFsaWRS
ZWZlcmVuY2UoMCkKICAgICB7CiAgICAgICAgIHdyaXRlKEN1cnJlbnRWZXJzaW9uKTsKICAgICB9
CkBAIC0yODcsMTMgKzI5MiwzMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gaXNKU0FycmF5
KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgb2JqZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZKU0Fy
cmF5OjpzX2luZm8pOwogICAgIH0KIAorICAgIGJvb2wgaW5pdGlhbGl6ZVdpdGhUcmFuc2Zlckxp
c3QoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3RyYW5zZmVyTGlzdCkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdHJhbnNmZXJMaXN0
LT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9ICgqbV90cmFuc2Zl
ckxpc3QpW2ldOworICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVj
dCgpOworICAgICAgICAgICAgaWYgKCFvYmplY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgcGFpcjxPYmplY3RQb29sOjppdGVyYXRvciwgYm9vbD4gaXRlciA9
IG1fb2JqZWN0UG9vbC5hZGQob2JqZWN0LCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKKyAgICAgICAg
ICAgIC8vIEFsbCBvYmplY3RzIGluIHRoZSB0cmFuc2ZlciBsaXN0IG11c3QgYmUgdW5pcXVlLgor
ICAgICAgICAgICAgaWYgKCFpdGVyLnNlY29uZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKG1fbWVzc2FnZVBhc3NpbmdNb2RlID09IE9ubHlNZXNzYWdlUG9ydHMpCisgICAg
ICAgICAgICBtX21pbmltdW1WYWxpZFJlZmVyZW5jZSA9IG1fb2JqZWN0UG9vbC5zaXplKCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGJvb2wgc3RhcnRPYmplY3RJbnRlcm5h
bChKU09iamVjdCogb2JqZWN0KQogICAgIHsKICAgICAgICAgLy8gUmVjb3JkIG9iamVjdCBmb3Ig
Z3JhcGggcmVjb25zdHJ1Y3Rpb24KICAgICAgICAgcGFpcjxPYmplY3RQb29sOjppdGVyYXRvciwg
Ym9vbD4gaXRlciA9IG1fb2JqZWN0UG9vbC5hZGQob2JqZWN0LCBtX29iamVjdFBvb2wuc2l6ZSgp
KTsKICAgICAgICAgCiAgICAgICAgIC8vIEhhbmRsZSBkdXBsaWNhdGUgcmVmZXJlbmNlcwotICAg
ICAgICBpZiAoIWl0ZXIuc2Vjb25kKSB7CisgICAgICAgIGlmICghaXRlci5zZWNvbmQgJiYgaXRl
ci5maXJzdC0+c2Vjb25kID49IG1fbWluaW11bVZhbGlkUmVmZXJlbmNlKSB7CiAgICAgICAgICAg
ICB3cml0ZShPYmplY3RSZWZlcmVuY2VUYWcpOwogICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19j
YXN0PGludDMyX3Q+KGl0ZXIuZmlyc3QtPnNlY29uZCkgPCBtX29iamVjdFBvb2wuc2l6ZSgpKTsK
ICAgICAgICAgICAgIHdyaXRlT2JqZWN0SW5kZXgoaXRlci5maXJzdC0+c2Vjb25kKTsKQEAgLTYw
Niw2ICs2MzEsOSBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5n
SW1wbD4sIHVpbnQzMl90LCBJZGVudGlmaWVyUmVwSGFzaD4gU3RyaW5nQ29uc3RhbnRQb29sOwog
ICAgIFN0cmluZ0NvbnN0YW50UG9vbCBtX2NvbnN0YW50UG9vbDsKICAgICBJZGVudGlmaWVyIG1f
ZW1wdHlJZGVudGlmaWVyOworICAgIEpTVmFsdWVBcnJheSogbV90cmFuc2Zlckxpc3Q7CisgICAg
TWVzc2FnZVBhc3NpbmdNb2RlIG1fbWVzc2FnZVBhc3NpbmdNb2RlOworICAgIHNpemVfdCBtX21p
bmltdW1WYWxpZFJlZmVyZW5jZTsKIH07CiAKIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25l
U2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCkBAIC02MTgsNiArNjQ2LDEwIEBAIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUg
aW4pCiAgICAgVmVjdG9yPFdhbGtlclN0YXRlLCAxNj4gc3RhdGVTdGFjazsKICAgICBXYWxrZXJT
dGF0ZSBzdGF0ZSA9IFN0YXRlVW5rbm93bjsKICAgICBKU1ZhbHVlIGluVmFsdWUgPSBpbjsKKyAg
ICBpZiAoIWluaXRpYWxpemVXaXRoVHJhbnNmZXJMaXN0KCkpIHsKKyAgICAgICAgbV9mYWlsZWQg
PSB0cnVlOworICAgICAgICByZXR1cm4gVmFsaWRhdGlvbkVycm9yOworICAgIH0KICAgICB1bnNp
Z25lZCB0aWNrQ291bnQgPSB0aWNrc1VudGlsTmV4dENoZWNrKCk7CiAgICAgd2hpbGUgKDEpIHsK
ICAgICAgICAgc3dpdGNoIChzdGF0ZSkgewpAQCAtNzgzLDExICs4MTUsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gU3RyaW5nKHN0ci5pbXBsKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBE
ZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKKyAg
ICBzdGF0aWMgRGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxp
c3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFi
dWZmZXIuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VfcGFpcihqc051bGwoKSwgVW5z
cGVjaWZpZWRFcnJvcik7Ci0gICAgICAgIENsb25lRGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihl
eGVjLCBnbG9iYWxPYmplY3QsIGJ1ZmZlcik7CisgICAgICAgIENsb25lRGVzZXJpYWxpemVyIGRl
c2VyaWFsaXplcihleGVjLCBnbG9iYWxPYmplY3QsIHRyYW5zZmVyTGlzdCwgYnVmZmVyKTsKICAg
ICAgICAgaWYgKCFkZXNlcmlhbGl6ZXIuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuIG1h
a2VfcGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybiBkZXNl
cmlhbGl6ZXIuZGVzZXJpYWxpemUoKTsKQEAgLTgzMiwxMyArODY0LDE0IEBAIHByaXZhdGU6CiAg
ICAgICAgIHNpemVfdCBtX2luZGV4OwogICAgIH07CiAKLSAgICBDbG9uZURlc2VyaWFsaXplcihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYnVmZmVyKQorICAgIENsb25lRGVzZXJpYWxpemVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxp
c3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgICAgICA6IENsb25lQmFzZShl
eGVjKQogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAgICAgLCBt
X2lzRE9NR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+aW5oZXJpdHMoJkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzX2luZm8pKQogICAgICAgICAsIG1fcHRyKGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICwg
bV9lbmQoYnVmZmVyLmRhdGEoKSArIGJ1ZmZlci5zaXplKCkpCiAgICAgICAgICwgbV92ZXJzaW9u
KDB4RkZGRkZGRkYpCisgICAgICAgICwgbV90cmFuc2Zlckxpc3QodHJhbnNmZXJMaXN0KQogICAg
IHsKICAgICAgICAgaWYgKCFyZWFkKG1fdmVyc2lvbikpCiAgICAgICAgICAgICBtX3ZlcnNpb24g
PSAweEZGRkZGRkZGOwpAQCAtMTE4OSw2ICsxMjIyLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCB1
aW50OF90KiBtX2VuZDsKICAgICB1bnNpZ25lZCBtX3ZlcnNpb247CiAgICAgVmVjdG9yPENhY2hl
ZFN0cmluZz4gbV9jb25zdGFudFBvb2w7CisgICAgSlNWYWx1ZUFycmF5KiBtX3RyYW5zZmVyTGlz
dDsKIH07CiAKIERlc2VyaWFsaXphdGlvblJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJp
YWxpemUoKQpAQCAtMTIwMSw2ICsxMjM1LDExIEBAIERlc2VyaWFsaXphdGlvblJlc3VsdCBDbG9u
ZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoKQogICAgIFdhbGtlclN0YXRlIHN0YXRlID0gU3Rh
dGVVbmtub3duOwogICAgIEpTVmFsdWUgb3V0VmFsdWU7CiAKKyAgICBpZiAobV90cmFuc2Zlckxp
c3QpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RyYW5zZmVyTGlzdC0+c2l6
ZSgpOyArK2kpCisgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZCgoKm1fdHJhbnNmZXJMaXN0
KVtpXSk7CisgICAgfQorCiAgICAgdW5zaWduZWQgdGlja0NvdW50ID0gdGlja3NVbnRpbE5leHRD
aGVjaygpOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKQEAgLTEz
MzgsMTAgKzEzNzcsMTUgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiAgICAgbV9kYXRhLnN3YXAoYnVmZmVyKTsK
IH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlKQoreworICAgIHJldHVybiBjcmVhdGUoZXhlYywgdmFsdWUsIDAsIE9ubHlNZXNz
YWdlUG9ydHMsIFRocm93aW5nKTsKK30KKworUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSBt
ZXNzYWdlUGFzc2luZ01vZGUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25z
KQogewogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgU2VyaWFsaXphdGlvblJldHVy
bkNvZGUgY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKGV4ZWMsIHZhbHVlLCBidWZm
ZXIpOworICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZShleGVjLCB2YWx1ZSwgdHJhbnNmZXJMaXN0LCBtZXNzYWdlUGFzc2luZ01vZGUs
IGJ1ZmZlcik7CiAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBUaHJvd2luZykKICAgICAgICAg
bWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChleGVjLCBjb2RlKTsKIApA
QCAtMTM2NywxMCArMTQxMSwxNSBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBzdAogCiBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
SlNDb250ZXh0UmVmIG9yaWdpbkNvbnRleHQsIEpTVmFsdWVSZWYgYXBpVmFsdWUsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKKyAgICByZXR1cm4gY3JlYXRlKG9yaWdpbkNvbnRleHQsIGFwaVZh
bHVlLCBleGNlcHRpb24sIDAsIE9ubHlNZXNzYWdlUG9ydHMpOworfQorCitQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250
ZXh0UmVmIG9yaWdpbkNvbnRleHQsIEpTVmFsdWVSZWYgYXBpVmFsdWUsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbiwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSBt
ZXNzYWdlUGFzc2luZ01vZGUpCit7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhvcmlnaW5D
b250ZXh0KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogICAgIEpTVmFsdWUg
dmFsdWUgPSB0b0pTKGV4ZWMsIGFwaVZhbHVlKTsKLSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoZXhlYywgdmFsdWUpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlh
bGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIHZhbHVlLCB0
cmFuc2Zlckxpc3QsIG1lc3NhZ2VQYXNzaW5nTW9kZSwgVGhyb3dpbmcpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAg
KmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigpKTsKQEAgLTEzNzgsNyAr
MTQyNyw3IEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICBBU1NFUlQoc2VyaWFsaXplZFZhbHVlKTsKLSAgICByZXR1cm4gc2VyaWFsaXplZFZh
bHVlOworICAgIHJldHVybiBzZXJpYWxpemVkVmFsdWUucmVsZWFzZSgpOwogfQogCiBTdHJpbmcg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0b1N0cmluZygpCkBAIC0xMzg2LDE5ICsxNDM1LDE5IEBA
IFN0cmluZyBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRvU3RyaW5nKCkKICAgICByZXR1cm4gQ2xv
bmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplU3RyaW5nKG1fZGF0YSk7CiB9CiAKLUpTVmFsdWUg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNl
cHRpb25zKQorSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZUFycmF5KiB0
cmFuc2Zlckxpc3QsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewot
ICAgIERlc2VyaWFsaXphdGlvblJlc3VsdCByZXN1bHQgPSBDbG9uZURlc2VyaWFsaXplcjo6ZGVz
ZXJpYWxpemUoZXhlYywgZ2xvYmFsT2JqZWN0LCBtX2RhdGEpOworICAgIERlc2VyaWFsaXphdGlv
blJlc3VsdCByZXN1bHQgPSBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoZXhlYywgZ2xv
YmFsT2JqZWN0LCB0cmFuc2Zlckxpc3QsIG1fZGF0YSk7CiAgICAgaWYgKHRocm93RXhjZXB0aW9u
cyA9PSBUaHJvd2luZykKICAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlv
bkZhaWxlZChleGVjLCByZXN1bHQuc2Vjb25kKTsKICAgICByZXR1cm4gcmVzdWx0LmZpcnN0Owog
fQogCi1KU1ZhbHVlUmVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNDb250
ZXh0UmVmIGRlc3RpbmF0aW9uQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorSlNWYWx1
ZVJlZiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiBkZXN0
aW5hdGlvbkNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgSlNWYWx1ZUFycmF5KiB0cmFu
c2Zlckxpc3QpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhkZXN0aW5hdGlvbkNvbnRl
eHQpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IGRlc2VyaWFsaXplKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgdHJhbnNmZXJMaXN0KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVj
LCBleGVjLT5leGNlcHRpb24oKSk7CkBAIC0xNDA5LDYgKzE0NTgsMjQgQEAgSlNWYWx1ZVJlZiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiBkZXN0aW5hdGlv
bkNvbnRleHQsIEoKICAgICByZXR1cm4gdG9SZWYoZXhlYywgdmFsdWUpOwogfQogCitKU1ZhbHVl
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJMaXN0
LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK3sKKyAgICBKU1ZhbHVl
QXJyYXkgdHJhbnNmZXJWYWx1ZUxpc3Q7CisgICAgaWYgKHRyYW5zZmVyTGlzdCAmJiAhb3BlblRy
YW5zZmVyYWJsZUFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgKnRyYW5zZmVyTGlzdCwgdHJhbnNm
ZXJWYWx1ZUxpc3QpKSB7CisgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gVGhyb3dpbmcp
CisgICAgICAgICAgICBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKGV4
ZWMsIFZhbGlkYXRpb25FcnJvcik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IH0KKyAgICByZXR1cm4gZGVzZXJpYWxpemUoZXhlYywgZ2xvYmFsT2JqZWN0LCAmdHJhbnNmZXJW
YWx1ZUxpc3QsIHRocm93RXhjZXB0aW9ucyk7Cit9CisKK2Jvb2wgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpvcGVuVHJhbnNmZXJhYmxlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUcmFuc2ZlcmFibGVBcnJheSYgdHJhbnNmZXJMaXN0LCBKU1ZhbHVl
QXJyYXkmIHZhbHVlQXJyYXkpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zl
ckxpc3Quc2l6ZSgpOyArK2kpCisgICAgICAgIHZhbHVlQXJyYXkuYXBwZW5kKHRvSlNUcmFuc2Zl
cmFibGUoZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
LCB0cmFuc2Zlckxpc3RbaV0uZ2V0KCkpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpCiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgZW1w
dHlWYWx1ZSwgKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggM2Zl
NGUwMi4uMTI3ZDMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTM4LDYgKzM4LDEwIEBAIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZUpTVmFsdWUqIEpTVmFsdWVSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgVHJhbnNmZXJhYmxlOworCit0eXBlZGVmIFZlY3RvcjxKU0M6OkpTVmFsdWUsIDE+IEpT
VmFsdWVBcnJheTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFu
c2ZlcmFibGVBcnJheTsKICAKIGVudW0gU2VyaWFsaXphdGlvblJldHVybkNvZGUgewogICAgIFN1
Y2Nlc3NmdWxseUNvbXBsZXRlZCwKQEAgLTUwLDEyICs1NCwxOCBAQCBlbnVtIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIHsKICAgICAKIGVudW0gU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRo
cm93aW5nLCBUaHJvd2luZyB9OwogCitlbnVtIE1lc3NhZ2VQYXNzaW5nTW9kZSB7IE9ubHlNZXNz
YWdlUG9ydHMsIFBlcm1pdFRyYW5zZmVyYWJsZXMgfTsKKwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgU2Vy
aWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgdmFs
dWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgLy8gSWYgTWVzc2FnZVBhc3NpbmdNb2Rl
IGlzIE9ubHlNZXNzYWdlUG9ydHMsIHRoZW4gaXRlbXMgaW4gdHJhbnNmZXJMaXN0IHdpbGwgbm90
IGJlIHJlZmVycmVkIHRvIGJ5IG9iamVjdCByZWZlcmVuY2UgSUQgaW4gdGhlIHNlcmlhbGl6ZWQg
dmFsdWUuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVh
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJM
aXN0LCBNZXNzYWdlUGFzc2luZ01vZGUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJl
ZiwgSlNWYWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBKU1ZhbHVlQXJyYXkqIHRyYW5z
ZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAgICAvLyBUaGVzZSBkZWZhdWx0IHRvIHRy
YW5zZmVyTGlzdCA9IDAsIE1lc3NhZ2VQYXNzaW5nTW9kZSA9IE9ubHlNZXNzYWdlUG9ydHMsIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZy4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUo
SlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYWRvcHQo
VmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiAgICAgewpAQCAtNjcsOCArNzcsMTEgQEAgcHVibGlj
OgogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCk7CiAgICAgCi0gICAgSlNDOjpKU1ZhbHVlIGRlc2Vy
aWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIFNlcmlhbGl6YXRp
b25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0gICAgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShKU0Nv
bnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgSlNDOjpKU1ZhbHVlIGRlc2Vy
aWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTVmFsdWVBcnJh
eSogdHJhbnNmZXJMaXN0ID0gMCwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsK
KyAgICBKU1ZhbHVlUmVmIGRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCA9IDApOworICAgIAorICAgIC8vIFBy
ZWZlciB0aGUgYWJvdmUgOjpkZXNlcmlhbGl6ZSAoYXMgdGhpcyBjb25zdHJ1Y3RzIGEgSlNWYWx1
ZUFycmF5IGFuZCBjYWxscyB0aGUgb3RoZXIgZnVuY3Rpb24pLgorICAgIEpTQzo6SlNWYWx1ZSBk
ZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBUcmFuc2Zl
cmFibGVBcnJheSogPSAwLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwogCiAg
ICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAg
LTc3LDYgKzkwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBtYXliZVRo
cm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFs
aXphdGlvblJldHVybkNvZGUpOwogICAgIHN0YXRpYyBib29sIHNlcmlhbGl6YXRpb25EaWRDb21w
bGV0ZVN1Y2Nlc3NmdWxseShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CisgICAgc3RhdGljIGJv
b2wgb3BlblRyYW5zZmVyYWJsZUFycmF5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIFRyYW5zZmVyYWJsZUFycmF5JiwgSlNWYWx1ZUFycmF5Jik7CiAgICAgCiAgICAgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYpOwogICAgIFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPiBtX2RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDc0ZjBkMDguLjgxMmU5ODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBA
IC0yNzQxLDcgKzI3NDEsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgICRpbXBsSW5j
bHVkZXN7IiRqb2luZWROYW1lLmgifSA9IDE7CiAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSIgb3IgJHR5cGUgZXEgImFueSIpIHsKICAgICAgICAgJGltcGxJbmNs
dWRlc3siU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgifSA9IDE7Ci0gICAgICAgIHJldHVybiAiJHZh
bHVlID8gJHZhbHVlLT5kZXNlcmlhbGl6ZShleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSkgOiBqc051bGwoKSI7CisgICAgICAgIHJldHVybiAiJHZhbHVlID8gJHZhbHVlLT5kZXNlcmlh
bGl6ZShleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wLT5kYXRhRGVwZW5kZW5j
aWVzKCkpIDoganNOdWxsKCkiOwogICAgIH0gZWxzZSB7CiAgICAgICAgICMgRGVmYXVsdCwgaW5j
bHVkZSBoZWFkZXIgd2l0aCBzYW1lIG5hbWUuCiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTJHR5
cGUuaCJ9ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KaW5kZXggZDZjMGZlMC4uYzU2ODQ3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTI1ODksNyAr
MjU4OSw3IEBAIEVORAogICAgICAgICAkYXR0ckF0dHIgPSAic3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPigkYXR0ckF0dHIpIjsKICAgICAgICAgbXkgJGdldHRlckZ1bmMgPSAkY29k
ZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0ck5hbWUpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgPDxFTkQpOwotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRT
ZXRQcm9wZXJ0eSh3cmFwcGVyLCAiJHthdHRyTmFtZX0iLCAke2F0dHJBdHRyfSwgaW1wbC0+JHtn
ZXR0ZXJGdW5jfSgpKTsKKyAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5k
U2V0UHJvcGVydHkod3JhcHBlciwgIiR7YXR0ck5hbWV9IiwgJHthdHRyQXR0cn0sIGltcGwtPiR7
Z2V0dGVyRnVuY30oKSwgaW1wbC0+JHtnZXR0ZXJGdW5jfURlcGVuZGVuY2llcygpKTsKIEVORAog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKaW5kZXggMmQ5ZDBjZC4uMDg3ZmM0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC00Nyw2
ICs0Nyw4IEBACiAjaW5jbHVkZSAiSW50MzJBcnJheS5oIgogI2luY2x1ZGUgIkludDhBcnJheS5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgor
I2luY2x1ZGUgIlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKICNpbmNsdWRlICJVaW50MTZBcnJheS5o
IgogI2luY2x1ZGUgIlVpbnQzMkFycmF5LmgiCiAjaW5jbHVkZSAiVWludDhBcnJheS5oIgpAQCAt
NjMsNiArNjUsNyBAQAogI2luY2x1ZGUgIlY4SW50MTZBcnJheS5oIgogI2luY2x1ZGUgIlY4SW50
MzJBcnJheS5oIgogI2luY2x1ZGUgIlY4SW50OEFycmF5LmgiCisjaW5jbHVkZSAiVjhNZXNzYWdl
UG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFVpbnQxNkFy
cmF5LmgiCiAjaW5jbHVkZSAiVjhVaW50MzJBcnJheS5oIgpAQCAtNTc1LDEzICs1NzgsMTUgQEAg
cHVibGljOgogICAgICAgICBKU0ZhaWx1cmUKICAgICB9OwogCi0gICAgU2VyaWFsaXplcihXcml0
ZXImIHdyaXRlciwgdjg6OlRyeUNhdGNoJiB0cnlDYXRjaCkKKyAgICBTZXJpYWxpemVyKFdyaXRl
ciYgd3JpdGVyLCB2ODo6VHJ5Q2F0Y2gmIHRyeUNhdGNoLCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFu
c2Zlckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUpCiAgICAgICAg
IDogbV93cml0ZXIod3JpdGVyKQogICAgICAgICAsIG1fdHJ5Q2F0Y2godHJ5Q2F0Y2gpCiAgICAg
ICAgICwgbV9kZXB0aCgwKQogICAgICAgICAsIG1fZXhlY0RlcHRoKDApCiAgICAgICAgICwgbV9z
dGF0dXMoU3VjY2VzcykKICAgICAgICAgLCBtX25leHRPYmplY3RSZWZlcmVuY2UoMCkKKyAgICAg
ICAgLCBtX3RyYW5zZmVyTGlzdCh0cmFuc2Zlckxpc3QpCisgICAgICAgICwgbV9tZXNzYWdlUGFz
c2luZ01vZGUobWVzc2FnZVBhc3NpbmdNb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF0cnlD
YXRjaC5IYXNDYXVnaHQoKSk7CiAgICAgfQpAQCAtNTg5LDYgKzU5NCw4IEBAIHB1YmxpYzoKICAg
ICBTdGF0dXMgc2VyaWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICAgICAgaWYgKCFpbml0aWFsaXplT2Jq
ZWN0UG9vbCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fc3RhdHVzOwogICAgICAgICBtX3dyaXRl
ci53cml0ZVZlcnNpb24oKTsKICAgICAgICAgU3RhdGVCYXNlKiBzdGF0ZSA9IGRvU2VyaWFsaXpl
KHZhbHVlLCAwKTsKICAgICAgICAgd2hpbGUgKHN0YXRlKQpAQCAtNjI4LDYgKzYzNSw4IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgYm9vbCBpbml0aWFsaXplT2JqZWN0UG9vbCgp
OworCiAgICAgY2xhc3MgU3RhdGVCYXNlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U3RhdGVCYXNlKTsKICAgICBwdWJsaWM6CkBAIC0xMDExLDggKzEwMjAsNDQgQEAgcHJpdmF0ZToK
ICAgICB0eXBlZGVmIFY4T2JqZWN0TWFwPHY4OjpPYmplY3QsIHVpbnQzMl90PiBPYmplY3RQb29s
OwogICAgIE9iamVjdFBvb2wgbV9vYmplY3RQb29sOwogICAgIHVpbnQzMl90IG1fbmV4dE9iamVj
dFJlZmVyZW5jZTsKKyAgICBWYWx1ZUhhbmRsZUFycmF5KiBtX3RyYW5zZmVyTGlzdDsKKyAgICBN
ZXNzYWdlUGFzc2luZ01vZGUgbV9tZXNzYWdlUGFzc2luZ01vZGU7CiB9OwogCitib29sIFNlcmlh
bGl6ZXI6OmluaXRpYWxpemVPYmplY3RQb29sKCkKK3sKKyAgICBpZiAoIW1fdHJhbnNmZXJMaXN0
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobV9tZXNzYWdlUGFzc2luZ01vZGUgPT0g
T25seU1lc3NhZ2VQb3J0cykgeworICAgICAgICAvLyBPZmZzZXQgbV9uZXh0T2JqZWN0UmVmZXJl
bmNlIGJlY2F1c2Ugd2hlbiB0aGUgb2JqZWN0IGlzIGRlc2VyaWFsaXplZCB0aGUgb2JqZWN0IHJl
ZmVyZW5jZQorICAgICAgICAvLyBsaXN0IHdpbGwgYmUgcHJlbG9hZGVkIHdpdGggdGhlIHRyYW5z
ZmVyIGxpc3QgKHdoZXRoZXIgT25seU1lc3NhZ2VQb3J0cyB3YXMgYXNzZXJ0ZWQgb3IKKyAgICAg
ICAgLy8gbm90IGR1cmluZyBzZXJpYWxpemF0aW9uKS4KKyAgICAgICAgbV9uZXh0T2JqZWN0UmVm
ZXJlbmNlID0gbV90cmFuc2Zlckxpc3QtPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RyYW5zZmVyTGlzdC0+c2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVHJhbnNmZXIgPSAoKm1f
dHJhbnNmZXJMaXN0KVtpXTsKKyAgICAgICAgaWYgKHRvVHJhbnNmZXItPklzT2JqZWN0KCkgfHwg
dG9UcmFuc2Zlci0+SXNEYXRlKCkgfHwgdG9UcmFuc2Zlci0+SXNSZWdFeHAoKSkgeworICAgICAg
ICAgICAgQVNTRVJUKCF0b1RyYW5zZmVyLT5Jc1N0cmluZygpKTsKKyAgICAgICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gdjhPYmplY3QodG9UcmFuc2Zlci5Bczx2ODo6T2JqZWN0PigpKTsK
KyAgICAgICAgICAgIHVpbnQzMl90IG9iamVjdFJlZmVyZW5jZTsKKyAgICAgICAgICAgIGlmICht
X29iamVjdFBvb2wudHJ5R2V0KHY4T2JqZWN0LCAmb2JqZWN0UmVmZXJlbmNlKSkgeworICAgICAg
ICAgICAgICAgIC8vIEFuIG9iamVjdCB3YXMgaW5jbHVkZWQgaW4gdGhlIHRyYW5zZmVyIGxpc3Qg
bW9yZSB0aGFuIG9uY2UuCisgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBEYXRhQ2xvbmVFcnJv
cjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAvLyBBc3NpZ24gdG9UcmFuc2ZlciB0aGUgbmV4dCByZWZlcmVuY2UgSUQuIElmIHdlIHNl
ZSBpdCBpbiB0aGUgb2JqZWN0IGdyYXBoLCB3ZSB3aWxsCisgICAgICAgICAgICAvLyBwYXNzIGl0
IGJ5IHJlZmVyZW5jZS4KKyAgICAgICAgICAgIGdyZXlPYmplY3QodjhPYmplY3QpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQSBub24tb2JqZWN0IHdhcyBpbmNsdWRlZCBpbiB0
aGUgdHJhbnNmZXIgbGlzdC4KKyAgICAgICAgICAgIG1fc3RhdHVzID0gRGF0YUNsb25lRXJyb3I7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIFNlcmlhbGl6ZXI6OlN0YXRlQmFzZSogU2VyaWFsaXplcjo6ZG9TZXJpYWxp
emUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBTdGF0ZUJhc2UqIG5leHQpCiB7CiAgICAg
aWYgKG1fZXhlY0RlcHRoICsgKG5leHQgPyBuZXh0LT5leGVjRGVwdGgoKSA6IDApID4gMSkgewpA
QCAtMTY1MSwxNCArMTY5NiwxNyBAQCBwcml2YXRlOgogCiBjbGFzcyBEZXNlcmlhbGl6ZXIgOiBw
dWJsaWMgQ29tcG9zaXRlQ3JlYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGVzZXJpYWxp
emVyKFJlYWRlciYgcmVhZGVyKQorICAgIGV4cGxpY2l0IERlc2VyaWFsaXplcihSZWFkZXImIHJl
YWRlciwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KQogICAgICAgICA6IG1fcmVhZGVy
KHJlYWRlcikKICAgICAgICAgLCBtX3ZlcnNpb24oMCkKKyAgICAgICAgLCBtX3RyYW5zZmVyTGlz
dCh0cmFuc2Zlckxpc3QpCiAgICAgewogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBkZXNlcmlhbGl6ZSgpCiAgICAgeworICAgICAgICBpZiAoIWluaXRpYWxpemVPYmplY3RQb29s
KCkpCisgICAgICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICAgICAgaWYgKCFtX3JlYWRl
ci5yZWFkVmVyc2lvbihtX3ZlcnNpb24pIHx8IG1fdmVyc2lvbiA+IHdpcmVGb3JtYXRWZXJzaW9u
KQogICAgICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAgICAgICAgIG1fcmVhZGVyLnNldFZl
cnNpb24obV92ZXJzaW9uKTsKQEAgLTE3NzIsNiArMTgyMCwxMyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgorICAgIGJvb2wgaW5pdGlhbGl6ZU9iamVjdFBvb2woKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fdHJhbnNmZXJMaXN0KQorICAgICAgICAgICAgbV9vYmplY3RQb29sLmFwcGVuZCgq
bV90cmFuc2Zlckxpc3QpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBib29s
IGluaXRpYWxpemVPYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHVpbnQzMl90
IG51bVByb3BlcnRpZXMsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiogdmFsdWUpCiAgICAgewogICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSAyICogbnVtUHJvcGVydGllczsKQEAgLTE4MzcsMzQgKzE4
OTIsNjYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8djg6OkhhbmRsZTx2ODo6VmFsdWU+ID4gbV9v
YmplY3RQb29sOwogICAgIFZlY3Rvcjx1aW50MzJfdD4gbV9vcGVuQ29tcG9zaXRlUmVmZXJlbmNl
U3RhY2s7CiAgICAgdWludDMyX3QgbV92ZXJzaW9uOworICAgIFZhbHVlSGFuZGxlQXJyYXkqIG1f
dHJhbnNmZXJMaXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UKIAogdm9pZCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBh
dHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1
dGUgYXR0cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBWYWx1ZUhhbmRsZUFy
cmF5KiB0cmFuc2Zlckxpc3QpCiB7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwot
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNlcmlhbGl6ZWQgPSB2YWx1ZS0+ZGVzZXJpYWxp
emUoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemVkID0gdmFsdWUtPmRl
c2VyaWFsaXplKHRyYW5zZmVyTGlzdCk7CiAgICAgb2JqZWN0LT5Gb3JjZVNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2wocHJvcGVydHlOYW1lKSwgZGVzZXJpYWxpemVkLCBhdHRyaWJ1dGUpOwogfQog
CiB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6
OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxp
c3QpCiB7Ci0gICAgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlLCB2YWx1ZS5nZXQoKSk7CisgICAgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0
eShvYmplY3QsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlLCB2YWx1ZS5nZXQoKSwgdHJhbnNmZXJM
aXN0KTsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0
UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3Bl
cnR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSogdmFsdWUsIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2Zlckxpc3QpCit7CisgICAgVmFs
dWVIYW5kbGVBcnJheSogdmFsdWVIYW5kbGVBcnJheSA9IDA7CisgICAgVmFsdWVIYW5kbGVBcnJh
eSBsb2NhbEFycmF5OworICAgIGlmICh0cmFuc2Zlckxpc3QpIHsKKyAgICAgICAgbG9jYWxBcnJh
eS5yZXNlcnZlQ2FwYWNpdHkodHJhbnNmZXJMaXN0LT5zaXplKCkpOworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHRyYW5zZmVyTGlzdC0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBs
b2NhbEFycmF5LmFwcGVuZCh0b1Y4VHJhbnNmZXJhYmxlKCgqdHJhbnNmZXJMaXN0KVtpXS5nZXQo
KSkpOworICAgICAgICB2YWx1ZUhhbmRsZUFycmF5ID0gJmxvY2FsQXJyYXk7CisgICAgfQorICAg
IGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZSwgdmFsdWUsIHZhbHVlSGFuZGxlQXJyYXkpOworfQorCit2b2lkIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJp
YnV0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBUcmFuc2ZlcmFi
bGVBcnJheSogdHJhbnNmZXJMaXN0KQoreworICAgIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHko
b2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZSwgdmFsdWUuZ2V0KCksIHRyYW5zZmVyTGlz
dCk7Cit9CisKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRo
cm93LCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSBt
ZXNzYWdlUGFzc2luZ01vZGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUodmFsdWUsIGRpZFRocm93LCB0cmFuc2Zlckxpc3QsIG1lc3NhZ2VQYXNzaW5n
TW9kZSkpOworfQorCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBWYWx1ZUhh
bmRsZUFycmF5KiB0cmFuc2Zlckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdlUGFzc2lu
Z01vZGUpCit7CisgICAgYm9vbCBkaWRUaHJvdzsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3csIHRyYW5zZmVyTGlzdCwgbWVzc2Fn
ZVBhc3NpbmdNb2RlKSk7CiB9CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IGJvb2wmIGRpZFRocm93KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdywgMCwgT25seU1lc3NhZ2VQb3J0cykp
OwogfQogCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogewogICAgIGJvb2wg
ZGlkVGhyb3c7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUo
dmFsdWUsIGRpZFRocm93KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUodmFsdWUsIGRpZFRocm93LCAwLCBPbmx5TWVzc2FnZVBvcnRzKSk7CiB9CiAKIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZUZyb21XaXJlKGNvbnN0IFN0cmluZyYgZGF0YSkKQEAgLTE5MjAsMTQgKzIwMDcsMTQgQEAg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoKQogewogfQogCi1T
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRocm93KQorU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBk
aWRUaHJvdywgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01v
ZGUgbWVzc2FnZVBhc3NpbmdNb2RlKQogewogICAgIGRpZFRocm93ID0gZmFsc2U7CiAgICAgV3Jp
dGVyIHdyaXRlcjsKICAgICBTZXJpYWxpemVyOjpTdGF0dXMgc3RhdHVzOwogICAgIHsKICAgICAg
ICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwotICAgICAgICBTZXJpYWxpemVyIHNlcmlhbGl6ZXIo
d3JpdGVyLCB0cnlDYXRjaCk7CisgICAgICAgIFNlcmlhbGl6ZXIgc2VyaWFsaXplcih3cml0ZXIs
IHRyeUNhdGNoLCB0cmFuc2Zlckxpc3QsIG1lc3NhZ2VQYXNzaW5nTW9kZSk7CiAgICAgICAgIHN0
YXR1cyA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplKHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXR1cyA9
PSBTZXJpYWxpemVyOjpKU0V4Y2VwdGlvbikgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2Fz
IGEgSlMgZXhjZXB0aW9uIHRocm93biwgcmUtdGhyb3cgaXQuCkBAIC0xOTY1LDEzICsyMDUyLDI3
IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFN0
cmluZyYgd2lyZURhdGEpCiAgICAgbV9kYXRhID0gd2lyZURhdGEuY3Jvc3NUaHJlYWRTdHJpbmco
KTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpemUoKQorU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJlY2VpcHRM
aXN0KGNvbnN0IFN0cmluZyYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmIHJlY2VpcHRz
KQoreworICAgIC8vIEZJWE1FOiBPbmNlIGEgZmxhdHRlbmFibGUgcmVjZWlwdCBhcHBlYXJzLCB0
aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSBtb3JlIHdvcmsgdG8gZG8uCisgICAgLy8gVW5mbGF0dGVu
YWJsZSByZWNlaXB0cyBtYXkgYmUgcGFzc2VkIGluIGFzIG51bGwuCisjaWZuZGVmIE5ERUJVRwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjZWlwdHMuc2l6ZSgpOyArK2kpCisgICAgICAg
IEFTU0VSVCghcmVjZWlwdHNbaV0gfHwgIXJlY2VpcHRzW2ldLT5pc0ZsYXR0ZW5hYmxlKCkpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVjZWlwdHMpOworI2VuZGlmCisgICAgcmV0dXJuIGRh
dGEuY3Jvc3NUaHJlYWRTdHJpbmcoKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJM
aXN0KQogewogICAgIGlmICghbV9kYXRhLmltcGwoKSkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxs
KCk7CiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEJ1ZmZlclZhbHVlVHlwZSkgPT0gMiwgQnVm
ZmVyVmFsdWVUeXBlSXNUd29CeXRlcyk7CiAgICAgUmVhZGVyIHJlYWRlcihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihtX2RhdGEuaW1wbCgpLT5jaGFyYWN0ZXJzKCkpLCAyICogbV9k
YXRhLmxlbmd0aCgpKTsKLSAgICBEZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVyKHJlYWRlcik7Cisg
ICAgRGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihyZWFkZXIsIHRyYW5zZmVyTGlzdCk7CiAgICAg
cmV0dXJuIGRlc2VyaWFsaXplci5kZXNlcmlhbGl6ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDRkMjQ5MmQu
LjFkOWZmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zMiwyNSArMzIsNTEgQEAKICNkZWZpbmUgU2VyaWFsaXplZFNj
cmlwdFZhbHVlX2gKIAogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisKICNpbmNsdWRlIDx2OC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBUcmFuc2ZlcmFibGU7CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OwordHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5OwordHlwZWRl
ZiBWZWN0b3I8T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNl
aXB0QXJyYXk7Cit0eXBlZGVmIFZlY3Rvcjx2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIDE+IFZhbHVl
SGFuZGxlQXJyYXk7CisKK2VudW0gTWVzc2FnZVBhc3NpbmdNb2RlIHsgT25seU1lc3NhZ2VQb3J0
cywgUGVybWl0VHJhbnNmZXJhYmxlcyB9OworCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBUcmFu
c2ZlcmFibGVBcnJheSopOworICAgIHN0YXRpYyB2b2lkIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVy
dHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmli
dXRlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFRyYW5zZmVyYWJsZUFycmF5
Kik7CiAgICAgc3RhdGljIHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCk7CisgICAgc3RhdGljIHZvaWQgZGVz
ZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBjaGFy
KiBwcm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KTsKKworICAgIC8vIHRyYW5zZmVyTGlz
dCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIHRoYXQgYXJlIG5vdCBmbGF0dGVuZWQgdG8gdGhlIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSBidXQKKyAgICAvLyBhcmUgaW5zdGVhZCBjb3BpZWQgYnkgcmVm
ZXJlbmNlLiBUaGVzZSBvYmplY3RzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZWlyIGluZGljZXMgaW4g
dHJhbnNmZXJMaXN0LgorICAgIC8vIEZvciBleGFtcGxlOgorICAgIC8vICAgICBzZXJpYWxpemUo
e2E6T2JqZWN0MSwgYjpPYmplY3QyfSwgW09iamVjdDAsIE9iamVjdDFdKSA9PiBTCisgICAgLy8g
ICAgIGRlc2VyaWFsaXplKFMsIFtPdGhlck9iamVjdDAsIE90aGVyT2JqZWN0MV0pID0+IHthOk90
aGVyT2JqZWN0MSwgYjpPYmplY3QyJ30KKyAgICAvLyB3aGVyZSBPYmplY3QyJyB3YXMgY3JlYXRl
ZCBieSBmaXJzdCBmbGF0dGVuaW5nIE9iamVjdDIuCiAKICAgICAvLyBJZiBhIHNlcmlhbGl6YXRp
b24gZXJyb3Igb2NjdXJzIChlLmcuLCBjeWNsaWMgaW5wdXQgdmFsdWUpIHRoaXMKICAgICAvLyBm
dW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IHJlcHJlc2VudGF0aW9uLCBzY2hlZHVsZXMgYSBWOCBl
eGNlcHRpb24gdG8KICAgICAvLyBiZSB0aHJvd24gdXNpbmcgdjg6OlRocm93RXhjZXB0aW9uKCks
IGFuZCBzZXRzIHxkaWRUaHJvd3wuIEluIHRoaXMgY2FzZQogICAgIC8vIHRoZSBjYWxsZXIgbXVz
dCBub3QgaW52b2tlIGFueSBWOCBvcGVyYXRpb25zIHVudGlsIGNvbnRyb2wgcmV0dXJucyB0bwog
ICAgIC8vIFY4LiBXaGVuIHNlcmlhbGl6YXRpb24gaXMgc3VjY2Vzc2Z1bCwgfGRpZFRocm93fCBp
cyBmYWxzZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNy
ZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRocm93KTsKKyAgICAv
LyBJZiBNZXNzYWdlUGFzc2luZ01vZGUgaXMgT25seU1lc3NhZ2VQb3J0cywgdGhlbiBpdGVtcyBp
biB0cmFuc2Zlckxpc3Qgd2lsbCBub3QgYmUgcmVmZXJyZWQgdG8gYnkgb2JqZWN0IHJlZmVyZW5j
ZSBzaG91bGQgdGhleSBhcHBlYXIKKyAgICAvLyBpbiB0aGUgc2VyaWFsaXplZCB2YWx1ZS4gdHJh
bnNmZXJMaXN0IG1heSBiZSAwIChhbmQgaWYgc28gaXMgZXF1aXZhbGVudCB0byBhIHplcm8tbGVu
Z3RoIHRyYW5zZmVyIGxpc3QpLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gY3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgYm9vbCYgZGlkVGhyb3csIFZh
bHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4sIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgTWVzc2FnZVBhc3Np
bmdNb2RlKTsKKyAgICAvLyBUaGVzZSBkZWZhdWx0IHRvIHRyYW5zZmVyTGlzdCA9IDAgYW5kIE1l
c3NhZ2VQYXNzaW5nTW9kZSA9IE9ubHlNZXNzYWdlUG9ydHMuCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBi
b29sJiBkaWRUaHJvdyk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKKwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlRnJvbVdpcmUoY29uc3QgU3RyaW5nJiBk
YXRhKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gY3JlYXRlKCk7CkBAIC02Miw5ICs4OCwxMSBAQCBwdWJsaWM6CiAKICAgICBT
dHJpbmcgdG9XaXJlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKKyAgICBzdGF0
aWMgU3RyaW5nIGZsYXR0ZW5SZWNlaXB0TGlzdChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheSYpOworCiAgICAgLy8gRGVzZXJpYWxpemVzIHRoZSB2YWx1
ZSAoaW4gdGhlIGN1cnJlbnQgY29udGV4dCkuIFJldHVybnMgYSBudWxsIHZhbHVlIGluCiAgICAg
Ly8gY2FzZSBvZiBmYWlsdXJlLgotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNlcmlhbGl6
ZSgpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNlcmlhbGl6ZShWYWx1ZUhhbmRsZUFy
cmF5KiB0cmFuc2Zlckxpc3QgPSAwKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFN0cmluZ0RhdGFN
b2RlIHsKQEAgLTczLDcgKzEwMSw4IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSgpOwotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4sIGJvb2wmIGRpZFRocm93KTsKKyAgICAvLyBBcyBpbiB0aGUgYWJvdmUsIHRyYW5z
ZmVyTGlzdCBtYXkgYmUgMC4KKyAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2
ODo6VmFsdWU+LCBib29sJiBkaWRUaHJvdywgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0
LCBNZXNzYWdlUGFzc2luZ01vZGUpOwogICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShjb25zdCBTdHJpbmcmIHdpcmVEYXRhKTsKIAogICAgIFN0cmluZyBtX2RhdGE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcAppbmRleCAyMzQyZmU2Li45YTVmMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMxMyw0MyAr
MzEzLDU2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRM
aXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpwb3N0TWVzc2Fn
ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHBvc3RNZXNzYWdlQ2FsbGJhY2soTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQ
YXNzaW5nTW9kZSwgY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5ET01XaW5kb3cucG9zdE1lc3NhZ2UoKSIpOwogICAgIERPTVdpbmRvdyogd2luZG93ID0g
VjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgRE9NV2luZG93KiBz
b3VyY2UgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yQ2FsbGluZ0NvbnRleHQoKS0+ZG9tV2lu
ZG93KCk7CiAgICAgQVNTRVJUKHNvdXJjZS0+ZnJhbWUoKSk7CiAKLSAgICBib29sIGRpZFRocm93
ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93KTsKLSAgICBpZiAo
ZGlkVGhyb3cpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBNZXNzYWdl
UG9ydEFycmF5IHBvcnRBcnJheTsKKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVB
cnJheTsKKyAgICBWYWx1ZUhhbmRsZUFycmF5IHZhbHVlSGFuZGxlQXJyYXk7CiAgICAgU3RyaW5n
IHRhcmdldE9yaWdpbjsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFzIHZhcmlhYmxlIGFyZ3Vt
ZW50cyBhbmQgY2FuIGVpdGhlciBiZToKICAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHBv
cnQsIHRhcmdldE9yaWdpbik7CiAgICAgLy8gb3IKICAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3Nh
Z2UsIHRhcmdldE9yaWdpbik7Ci0gICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwotICAgIGlmIChh
cmdzLkxlbmd0aCgpID4gMikgewotICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJn
c1sxXSwgcG9ydEFycmF5KSkKKyAgICB7CisgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsK
KyAgICAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7CisgICAgICAgICAgICBpZiAoIWdldFRy
YW5zZmVyYWJsZUFycmF5KGFyZ3NbMV0sIHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1ZUhhbmRsZUFy
cmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpKQorICAgICAgICAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisgICAgICAgICAgICB0YXJnZXRPcmlnaW4gPSB0b1dlYkNvcmVTdHJpbmdXaXRo
TnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1syXSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5lZENoZWNr
KGFyZ3NbMV0pOworCisgICAgICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKICAgICAgICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgICAgIHRhcmdldE9yaWdpbiA9IHRvV2Vi
Q29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRDaGVjayhhcmdzWzJdKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICB0YXJnZXRPcmlnaW4gPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZp
bmVkQ2hlY2soYXJnc1sxXSk7CiAgICAgfQogCi0gICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgp
KQorICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwg
ZGlkVGhyb3csICZ2YWx1ZUhhbmRsZUFycmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpOworICAgIGlm
IChkaWRUaHJvdykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNl
KCksICZwb3J0QXJyYXksIHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CisgICAgd2luZG93LT5w
b3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnRyYW5zZmVyYWJsZUFycmF5LCB0YXJnZXRP
cmlnaW4sIHNvdXJjZSwgZWMpOwogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIAordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LnBv
c3RNZXNzYWdlKCkiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayhP
bmx5TWVzc2FnZVBvcnRzLCBhcmdzKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9N
V2luZG93Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LndlYmtpdFBvc3RNZXNzYWdlKCki
KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayhQZXJtaXRUcmFuc2Zl
cmFibGVzLCBhcmdzKTsKK30KKwogLy8gRklYTUUoZnFpYW4pOiByZXR1cm5pbmcgc3RyaW5nIGlz
IGNoZWF0aW5nLCBhbmQgd2Ugc2hvdWxkCiAvLyBmaXggdGhpcyBieSBjYWxsaW5nIHRvU3RyaW5n
IGZ1bmN0aW9uIG9uIHRoZSByZWNlaXZlci4KIC8vIEhvd2V2ZXIsIFY4IGltcGxlbWVudHMgdG9T
dHJpbmcgaW4gSmF2YVNjcmlwdCwgd2hpY2ggcmVxdWlyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAKaW5kZXggOGZjZjlhOC4uNDljZThjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNh
dGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTQyLDI0ICs0MiwzNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERlZGljYXRlZFdvcmtlckNv
bnRleHQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VDYWxsYmFjayhNZXNzYWdlUGFz
c2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewotICAgIElOQ19TVEFUUyhMIkRPTS5EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LnBvc3RNZXNzYWdl
Iik7CiAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4RGVkaWNh
dGVkV29ya2VyQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgYm9vbCBkaWRU
aHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Ug
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdyk7Ci0gICAg
aWYgKGRpZFRocm93KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIE1lc3Nh
Z2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJs
ZUFycmF5OworICAgIFZhbHVlSGFuZGxlQXJyYXkgdmFsdWVIYW5kbGVBcnJheTsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdlUG9ydEFycmF5KGFy
Z3NbMV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlmICghZ2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJn
c1sxXSwgdHJhbnNmZXJhYmxlQXJyYXksIHZhbHVlSGFuZGxlQXJyYXksIG1lc3NhZ2VQYXNzaW5n
TW9kZSkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0KKyAgICBi
b29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93
LCAmdmFsdWVIYW5kbGVBcnJheSwgbWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAgICBpZiAoZGlkVGhy
b3cpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgd29ya2VyQ29udGV4dC0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCks
ICZwb3J0QXJyYXksIGVjKTsKKyAgICB3b3JrZXJDb250ZXh0LT5wb3N0TWVzc2FnZShtZXNzYWdl
LnJlbGVhc2UoKSwgJnRyYW5zZmVyYWJsZUFycmF5LCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJy
b3IoZWMpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7Cisg
ICAgSU5DX1NUQVRTKEwiRE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQucG9zdE1lc3NhZ2UiKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayhPbmx5TWVzc2FnZVBvcnRz
LCBhcmdzKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGVkaWNhdGVkV29ya2VyQ29u
dGV4dDo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIElOQ19TVEFUUyhMIkRPTS5EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LndlYmtpdFBv
c3RNZXNzYWdlIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2soUGVy
bWl0VHJhbnNmZXJhYmxlcywgYXJncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggNDc1ZGUy
YS4uYTY2YmFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC00NywyNSArNDcsMzIgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC5wb3J0
cyIpOwogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBWOE1lc3NhZ2VFdmVudDo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CiAKLSAgICBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cyA9IGV2ZW50LT5w
b3J0cygpOwotICAgIGlmICghcG9ydHMgfHwgcG9ydHMtPmlzRW1wdHkoKSkKKyAgICBUcmFuc2Zl
cmFibGVBcnJheSogdHJhbnNmZXJhYmxlcyA9IGV2ZW50LT50cmFuc2ZlcmFibGVzKCk7CisgICAg
aWYgKCF0cmFuc2ZlcmFibGVzIHx8IHRyYW5zZmVyYWJsZXMtPmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHY4OjpOdWxsKCk7CiAKLSAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBwb3J0QXJyYXkg
PSB2ODo6QXJyYXk6Ok5ldyhwb3J0cy0+c2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHBvcnRzLT5zaXplKCk7ICsraSkKLSAgICAgICAgcG9ydEFycmF5LT5TZXQodjg6OkludGVn
ZXI6Ok5ldyhpKSwgdG9WOCgoKnBvcnRzKVtpXS5nZXQoKSkpOworICAgIGludCBwb3J0Q291bnQg
PSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKCgqdHJhbnNmZXJhYmxlcylbaV0uZ2V0KCktPmFzTWVzc2FnZVBv
cnQoKSkKKyAgICAgICAgICAgICsrcG9ydENvdW50OworICAgIH0KKyAgICAKKyAgICBpbnQgY3Vy
cmVudFBvcnQgPSAwOworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHBvcnRBcnJheSA9IHY4OjpB
cnJheTo6TmV3KHBvcnRDb3VudCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zl
cmFibGVzLT5zaXplKCkgJiYgY3VycmVudFBvcnQgPCBwb3J0Q291bnQ7ICsraSkgeworICAgICAg
ICBpZiAoTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gKCp0cmFuc2ZlcmFibGVzKVtpXS5nZXQo
KS0+YXNNZXNzYWdlUG9ydCgpKQorICAgICAgICAgICAgcG9ydEFycmF5LT5TZXQodjg6OkludGVn
ZXI6Ok5ldyhjdXJyZW50UG9ydCsrKSwgdG9WOChtZXNzYWdlUG9ydCkpOworICAgIH0KIAogICAg
IHJldHVybiBwb3J0QXJyYXk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VF
dmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhN
ZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlLCBjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC5pbml0TWVzc2FnZUV2
ZW50Iik7CiAgICAgTWVzc2FnZUV2ZW50KiBldmVudCA9IFY4TWVzc2FnZUV2ZW50Ojp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKICAgICBTdHJpbmcgdHlwZUFyZyA9IHY4VmFsdWVUb1dlYkNvcmVT
dHJpbmcoYXJnc1swXSk7CiAgICAgYm9vbCBjYW5CdWJibGVBcmcgPSBhcmdzWzFdLT5Cb29sZWFu
VmFsdWUoKTsKICAgICBib29sIGNhbmNlbGFibGVBcmcgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUo
KTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhQXJnID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1szXSk7CiAgICAgU3RyaW5nIG9yaWdpbkFyZyA9IHY4
VmFsdWVUb1dlYkNvcmVTdHJpbmcoYXJnc1s0XSk7CiAgICAgU3RyaW5nIGxhc3RFdmVudElkQXJn
ID0gdjhWYWx1ZVRvV2ViQ29yZVN0cmluZyhhcmdzWzVdKTsKIApAQCAtNzYsMTcgKzgzLDM3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgICAgIGlmICghd2luZG93LklzRW1wdHkoKSkK
ICAgICAgICAgICAgIHNvdXJjZUFyZyA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3cpOwog
ICAgIH0KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydEFycmF5OworICAgIE93blB0
cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlQXJyYXk7CisgICAgT3duUHRyPFZhbHVl
SGFuZGxlQXJyYXk+IHZhbHVlSGFuZGxlQXJyYXk7CiAKICAgICBpZiAoIWlzVW5kZWZpbmVkT3JO
dWxsKGFyZ3NbN10pKSB7Ci0gICAgICAgIHBvcnRBcnJheSA9IGFkb3B0UHRyKG5ldyBNZXNzYWdl
UG9ydEFycmF5KTsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdlUG9ydEFycmF5KGFyZ3NbN10sICpw
b3J0QXJyYXkpKQorICAgICAgICB0cmFuc2ZlcmFibGVBcnJheSA9IGFkb3B0UHRyKG5ldyBUcmFu
c2ZlcmFibGVBcnJheSk7CisgICAgICAgIHZhbHVlSGFuZGxlQXJyYXkgPSBhZG9wdFB0cihuZXcg
VmFsdWVIYW5kbGVBcnJheSk7CisgICAgICAgIGlmICghZ2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJn
c1s3XSwgKnRyYW5zZmVyYWJsZUFycmF5LCAqdmFsdWVIYW5kbGVBcnJheSwgbWVzc2FnZVBhc3Np
bmdNb2RlKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQotICAg
IGV2ZW50LT5pbml0TWVzc2FnZUV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJs
ZUFyZywgZGF0YUFyZy5yZWxlYXNlKCksIG9yaWdpbkFyZywgbGFzdEV2ZW50SWRBcmcsIHNvdXJj
ZUFyZywgcG9ydEFycmF5LnJlbGVhc2UoKSk7CisKKyAgICBib29sIGRpZFRocm93ID0gZmFsc2U7
CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbM10sIGRpZFRocm93LCB2YWx1ZUhhbmRsZUFycmF5Lmdl
dCgpLCBtZXNzYWdlUGFzc2luZ01vZGUpOworICAgIGlmIChkaWRUaHJvdykKKyAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIGV2ZW50LT5pbml0TWVzc2FnZUV2ZW50KHR5cGVB
cmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0YUFyZy5yZWxlYXNlKCksIG9yaWdp
bkFyZywgbGFzdEV2ZW50SWRBcmcsIHNvdXJjZUFyZywgdHJhbnNmZXJhYmxlQXJyYXkucmVsZWFz
ZSgpKTsKICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgZGF0YUF0dHIgPSBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KTsKLSAg
ICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkoYXJncy5I
b2xkZXIoKSwgImRhdGEiLCBkYXRhQXR0ciwgZXZlbnQtPmRhdGEoKSk7CisgICAgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KGFyZ3MuSG9sZGVyKCksICJk
YXRhIiwgZGF0YUF0dHIsIGV2ZW50LT5kYXRhKCksIHZhbHVlSGFuZGxlQXJyYXkuZ2V0KCkpOwog
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gIH0KK30KKwordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlRXZlbnQuaW5pdE1l
c3NhZ2VFdmVudCIpOworICAgIHJldHVybiBXZWJDb3JlOjppbml0TWVzc2FnZUV2ZW50Q2FsbGJh
Y2soT25seU1lc3NhZ2VQb3J0cywgYXJncyk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZUV2ZW50LndlYmtp
dEluaXRNZXNzYWdlRXZlbnQiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6aW5pdE1lc3NhZ2VFdmVu
dENhbGxiYWNrKFBlcm1pdFRyYW5zZmVyYWJsZXMsIGFyZ3MpOworfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKaW5kZXggM2VkNWIxMi4uZjA4NzIzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQ
b3J0Q3VzdG9tLmNwcApAQCAtNDIsMzMgKzQyLDQ2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcG9zdE1lc3NhZ2VDYWxsYmFjayhNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdN
b2RlLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLk1l
c3NhZ2VQb3J0LnBvc3RNZXNzYWdlIik7CiAgICAgTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0g
VjhNZXNzYWdlUG9ydDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgYm9vbCBkaWRUaHJv
dyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdyk7Ci0gICAgaWYg
KGRpZFRocm93KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIE1lc3NhZ2VQ
b3J0QXJyYXkgcG9ydEFycmF5OworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZUFy
cmF5OworICAgIFZhbHVlSGFuZGxlQXJyYXkgdmFsdWVIYW5kbGVBcnJheTsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdlUG9ydEFycmF5KGFyZ3Nb
MV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlmICghZ2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJnc1sx
XSwgdHJhbnNmZXJhYmxlQXJyYXksIHZhbHVlSGFuZGxlQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9k
ZSkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0KKyAgICBib29s
IGRpZFRocm93ID0gZmFsc2U7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93LCAm
dmFsdWVIYW5kbGVBcnJheSwgbWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAgICBpZiAoZGlkVGhyb3cp
CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgbWVzc2FnZVBvcnQtPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmcG9y
dEFycmF5LCBlYyk7CisgICAgbWVzc2FnZVBvcnQtPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFz
ZSgpLCAmdHJhbnNmZXJhYmxlQXJyYXksIGVjKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7
CiB9CiAKLWJvb2wgZ2V0TWVzc2FnZVBvcnRBcnJheSh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgTWVzc2FnZVBvcnRBcnJheSYgcG9ydEFycmF5KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSIpOworICAg
IHJldHVybiBXZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNrKE9ubHlNZXNzYWdlUG9ydHMsIGFy
Z3MpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9ydDo6d2Via2l0UG9z
dE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19T
VEFUUygiRE9NLk1lc3NhZ2VQb3J0LndlYmtpdFBvc3RNZXNzYWdlIik7CisgICAgcmV0dXJuIFdl
YkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2soUGVybWl0VHJhbnNmZXJhYmxlcywgYXJncyk7Cit9
CisKK2Jvb2wgZ2V0VHJhbnNmZXJhYmxlQXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IFRyYW5zZmVyYWJsZUFycmF5JiB0cmFuc2ZlcmFibGVBcnJheSwgVmFsdWVIYW5kbGVBcnJheSYg
aGFuZGxlQXJyYXksIE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUpCiB7CiAg
ICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKHZhbHVlKSkgewotICAgICAgICBwb3J0QXJyYXkucmVz
aXplKDApOworICAgICAgICB0cmFuc2ZlcmFibGVBcnJheS5yZXNpemUoMCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmICghdmFsdWUtPklzT2JqZWN0KCkpIHsKLSAgICAg
ICAgdGhyb3dFcnJvcigiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVj
dCIpOworICAgICAgICB0aHJvd0Vycm9yKG1lc3NhZ2VQYXNzaW5nTW9kZSA9PSBPbmx5TWVzc2Fn
ZVBvcnRzID8gIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAiVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QiKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB1aW50MzJfdCBsZW5ndGggPSAwOwpAQCAtODEs
MjggKzk0LDQ3IEBAIGJvb2wgZ2V0TWVzc2FnZVBvcnRBcnJheSh2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYgcG9ydEFycmF5CiAgICAgICAgIC8vIFNlcXVlbmNl
LXR5cGUgb2JqZWN0IC0gZ2V0IHRoZSBsZW5ndGggYXR0cmlidXRlCiAgICAgICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHNlcXVlbmNlTGVuZ3RoID0gcG9ydHMtPkdldCh2ODo6U3RyaW5nOjpOZXco
Imxlbmd0aCIpKTsKICAgICAgICAgaWYgKCFzZXF1ZW5jZUxlbmd0aC0+SXNOdW1iZXIoKSkgewot
ICAgICAgICAgICAgdGhyb3dFcnJvcigiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBoYXMgbm8g
bGVuZ3RoIGF0dHJpYnV0ZSIpOworICAgICAgICAgICAgdGhyb3dFcnJvcihtZXNzYWdlUGFzc2lu
Z01vZGUgPT0gT25seU1lc3NhZ2VQb3J0cyA/ICJNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IGhh
cyBubyBsZW5ndGggYXR0cmlidXRlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJUcmFuc2ZlcmFibGVBcnJheSBhcmd1bWVu
dCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZSIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9IHNlcXVlbmNlTGVuZ3RoLT5VaW50MzJWYWx1ZSgp
OwogICAgIH0KIAotICAgIC8vIFZhbGlkYXRlIHRoZSBwYXNzZWQgYXJyYXkgb2YgcG9ydHMuCisg
ICAgLy8gVmFsaWRhdGUgdGhlIHBhc3NlZCBhcnJheSBvZiB0cmFuc2ZlcmFibGVzLgogICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gcG9ydCA9IHBvcnRzLT5HZXQoaSk7CisgICAgICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHRyYW5zZmVyYWJsZSA9IHBvcnRzLT5HZXQoaSk7CiAgICAgICAgIC8vIFZhbGlk
YXRpb24gb2Ygbm9uLW51bGwgb2JqZWN0cywgcGVyIEhUTUw1IHNwZWMgOC4zLjMuCi0gICAgICAg
IGlmIChpc1VuZGVmaW5lZE9yTnVsbChwb3J0KSkgewotICAgICAgICAgICAgdGhyb3dFcnJvcihJ
TlZBTElEX1NUQVRFX0VSUik7CisgICAgICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCh0cmFuc2Zl
cmFibGUpKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yKERBVEFfQ0xPTkVfRVJSKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAvLyBWYWxpZGF0aW9uIG9m
IE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4x
NS4KLSAgICAgICAgaWYgKCFWOE1lc3NhZ2VQb3J0OjpIYXNJbnN0YW5jZShwb3J0KSkgewotICAg
ICAgICAgICAgdGhyb3dFcnJvcigiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRh
aW4gb25seSBNZXNzYWdlUG9ydHMiKTsKKyAgICAgICAgUmVmUHRyPFRyYW5zZmVyYWJsZT4gbmF0
aXZlVHJhbnNmZXJhYmxlID0gdG9OYXRpdmVUcmFuc2ZlcmFibGUodHJhbnNmZXJhYmxlKTsKKyAg
ICAgICAgaWYgKCFuYXRpdmVUcmFuc2ZlcmFibGUgfHwgKG1lc3NhZ2VQYXNzaW5nTW9kZSA9PSBP
bmx5TWVzc2FnZVBvcnRzICYmICFuYXRpdmVUcmFuc2ZlcmFibGUtPmFzTWVzc2FnZVBvcnQoKSkp
IHsKKyAgICAgICAgICAgIHRocm93RXJyb3IobWVzc2FnZVBhc3NpbmdNb2RlID09IE9ubHlNZXNz
YWdlUG9ydHMgPyAiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBN
ZXNzYWdlUG9ydHMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogIlRyYW5zZmVyYWJsZUFycmF5IGFyZ3VtZW50IG11c3QgY29u
dGFpbiBvbmx5IFRyYW5zZmVyYWJsZXMiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQotICAgICAgICBwb3J0QXJyYXkuYXBwZW5kKFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QocG9ydCkpKTsKKyAgICAgICAgdHJhbnNmZXJh
YmxlQXJyYXkuYXBwZW5kKG5hdGl2ZVRyYW5zZmVyYWJsZSk7CisgICAgICAgIGhhbmRsZUFycmF5
LmFwcGVuZCh0cmFuc2ZlcmFibGUpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorUGFz
c1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRvTmF0aXZlVHJhbnNmZXJhYmxlKHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlKQoreworICAgIGlmIChWOE1lc3NhZ2VQb3J0OjpIYXNJbnN0YW5jZSh2YWx1
ZSkpCisgICAgICAgIHJldHVybiBWOE1lc3NhZ2VQb3J0Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKHJlaW50ZXJwcmV0
X2Nhc3Q8VHJhbnNmZXJhYmxlKj4oMCkpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OFRyYW5zZmVyYWJsZShUcmFuc2ZlcmFibGUqIHZhbHVlKQoreworICAgIGlmIChNZXNzYWdlUG9y
dCogbWVzc2FnZVBvcnQgPSB2YWx1ZS0+YXNNZXNzYWdlUG9ydCgpKQorICAgICAgICByZXR1cm4g
dG9WOChtZXNzYWdlUG9ydCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IHY4OjpJbnRlZ2VyOjpOZXcoMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3Vz
dG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1
c3RvbS5oCmluZGV4IDdhYjUwMmIuLjAxZjk1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaApAQCAtMzUsMTMg
KzM1LDE3IEBACiAjaW5jbHVkZSA8djguaD4KIAogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB3aGljaCBwdWxscyB0aGUgdmFsdWVzIG91dCBvZiBh
IEpTIHNlcXVlbmNlIGFuZCBpbnRvIGEgTWVzc2FnZVBvcnRBcnJheS4KLSAgICAvLyBBbHNvIHZh
bGlkYXRlcyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRo
ZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYyBhbmQgZ2Vu
ZXJhdGVzIGV4Y2VwdGlvbnMgYXMgYXBwcm9wcmlhdGUuCi0gICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBhcnJheSB3YXMgZmlsbGVkLCBvciBmYWxzZSBpZiB0aGUgcGFzc2VkIHZhbHVlIHdhcyBu
b3Qgb2YgYW4gYXBwcm9wcmlhdGUgdHlwZS4KLSAgICBib29sIGdldE1lc3NhZ2VQb3J0QXJyYXko
djg6OkxvY2FsPHY4OjpWYWx1ZT4sIE1lc3NhZ2VQb3J0QXJyYXkmKTsKKy8vIEhlbHBlciBmdW5j
dGlvbiB3aGljaCBwdWxscyB0aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBpbnRv
IGEgVHJhbnNmZXJhYmxlQXJyYXkuCisvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVy
IHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlv
biA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYyBhbmQgZ2VuZXJhdGVzIGV4Y2VwdGlvbnMgYXMgYXBw
cm9wcmlhdGUuCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGFycmF5IHdhcyBmaWxsZWQsIG9yIGZh
bHNlIGlmIHRoZSBwYXNzZWQgdmFsdWUgd2FzIG5vdCBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlLgor
Ym9vbCBnZXRUcmFuc2ZlcmFibGVBcnJheSh2ODo6TG9jYWw8djg6OlZhbHVlPiwgVHJhbnNmZXJh
YmxlQXJyYXkmLCBWYWx1ZUhhbmRsZUFycmF5JiwgTWVzc2FnZVBhc3NpbmdNb2RlKTsKKworUGFz
c1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRvTmF0aXZlVHJhbnNmZXJhYmxlKHY4OjpMb2NhbDx2ODo6
VmFsdWU+KTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4VHJhbnNmZXJhYmxlKFRyYW5zZmVy
YWJsZSopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCmluZGV4IGZkYzY4MTUu
LjFiYmQ3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V29ya2VyQ3VzdG9tLmNwcApAQCAtODcsMjQgKzg3LDM2IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdvcmtlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogICAgIHJldHVybiB3cmFwcGVyT2JqZWN0OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXb3JrZXI6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VDYWxsYmFjayhNZXNz
YWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlLCBjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldvcmtlci5wb3N0TWVzc2FnZSIpOwogICAgIFdv
cmtlciogd29ya2VyID0gVjhXb3JrZXI6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIGJv
b2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZGlkVGhyb3cp
OwotICAgIGlmIChkaWRUaHJvdykKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAg
ICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsKKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFu
c2ZlcmFibGVBcnJheTsKKyAgICBWYWx1ZUhhbmRsZUFycmF5IHZhbHVlSGFuZGxlQXJyYXk7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRB
cnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAgICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFy
cmF5KGFyZ3NbMV0sIHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1ZUhhbmRsZUFycmF5LCBtZXNzYWdl
UGFzc2luZ01vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9
CisgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBk
aWRUaHJvdywgJnZhbHVlSGFuZGxlQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSk7CisgICAgaWYg
KGRpZFRocm93KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIHdvcmtlci0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCks
ICZwb3J0QXJyYXksIGVjKTsKKyAgICB3b3JrZXItPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFz
ZSgpLCAmdHJhbnNmZXJhYmxlQXJyYXksIGVjKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7
CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlcjo6cG9zdE1lc3NhZ2VDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLldvcmtl
ci5wb3N0TWVzc2FnZSIpOworICAgIHJldHVybiBXZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNr
KE9ubHlNZXNzYWdlUG9ydHMsIGFyZ3MpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
b3JrZXI6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5Xb3JrZXIud2Via2l0UG9zdE1lc3NhZ2UiKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayhQZXJtaXRUcmFuc2ZlcmFibGVz
LCBhcmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCBlMzg5Y2QxLi45NjU4
NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKQEAgLTEyOSw2ICsxMjksOCBAQAog
I2luY2x1ZGUgIlRvdWNoLmNwcCIKICNpbmNsdWRlICJUb3VjaEV2ZW50LmNwcCIKICNpbmNsdWRl
ICJUb3VjaExpc3QuY3BwIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5jcHAiCisjaW5jbHVkZSAi
VHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU291cmNlTGlieHNs
dC5jcHAiCiAjaW5jbHVkZSAiVHJhdmVyc2FsLmNwcCIKICNpbmNsdWRlICJUcmVlU2NvcGUuY3Bw
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAppbmRleCBiNDMzMzgxYi4uNmE3MjJlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTMwLDYgKzMwLDggQEAKIAogI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM4LDEzICs0MCwxMyBAQCBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCgp
CiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxNZXNz
YWdlUG9ydEFycmF5PiBwb3J0cykKK01lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFz
c093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcykKICAgICA6IEV2ZW50KGV2
ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fZGF0YShkYXRh
KQogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJZChsYXN0RXZlbnRJ
ZCkKICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAgICAsIG1fcG9ydHMocG9ydHMpCisgICAgLCBt
X3RyYW5zZmVyYWJsZXModHJhbnNmZXJhYmxlcykKIHsKIH0KIApAQCAtNTIsNyArNTQsNyBAQCBN
ZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6
aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2lu
ZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCit2b2lkIE1l
c3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZl
bnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRy
YW5zZmVyYWJsZXMpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNjMsMjYgKzY1LDM2IEBAIHZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvCiAgICAgbV9vcmlnaW4g
PSBvcmlnaW47CiAgICAgbV9sYXN0RXZlbnRJZCA9IGxhc3RFdmVudElkOwogICAgIG1fc291cmNl
ID0gc291cmNlOwotICAgIG1fcG9ydHMgPSBwb3J0czsKKyAgICBtX3RyYW5zZmVyYWJsZXMgPSB0
cmFuc2ZlcmFibGVzOwogfQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUg
dGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogTWVzc2FnZVBvcnQqIE1lc3NhZ2VFdmVu
dDo6bWVzc2FnZVBvcnQoKQogewotICAgIGlmICghbV9wb3J0cykKKyAgICBpZiAoIW1fdHJhbnNm
ZXJhYmxlcykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgQVNTRVJUKG1fcG9ydHMtPnNpemUoKSA9
PSAxKTsKLSAgICByZXR1cm4gKCptX3BvcnRzKVswXS5nZXQoKTsKKyAgICBBU1NFUlQobV90cmFu
c2ZlcmFibGVzLT5zaXplKCkgPT0gMSk7CisgICAgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUg
PSAoKm1fdHJhbnNmZXJhYmxlcylbMF0uZ2V0KCk7CisgICAgQVNTRVJUKHRyYW5zZmVyYWJsZS0+
YXNNZXNzYWdlUG9ydCgpKTsKKyAgICByZXR1cm4gdHJhbnNmZXJhYmxlLT5hc01lc3NhZ2VQb3J0
KCk7CiB9CiAKLXZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqIHBv
cnQpCitUcmFuc2ZlcmFibGUqIE1lc3NhZ2VFdmVudDo6dHJhbnNmZXJhYmxlKCkKIHsKLSAgICBP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHM7Ci0gICAgaWYgKHBvcnQpIHsKLSAgICAgICAg
cG9ydHMgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJheSk7Ci0gICAgICAgIHBvcnRzLT5h
cHBlbmQocG9ydCk7CisgICAgaWYgKCFtX3RyYW5zZmVyYWJsZXMpCisgICAgICAgIHJldHVybiAw
OworICAgIEFTU0VSVChtX3RyYW5zZmVyYWJsZXMtPnNpemUoKSA9PSAxKTsKKyAgICByZXR1cm4g
KCptX3RyYW5zZmVyYWJsZXMpWzBdLmdldCgpOworfQorCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5p
dE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93
KiBzb3VyY2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlKQoreworICAgIE93blB0cjxUcmFu
c2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlczsKKyAgICBpZiAodHJhbnNmZXJhYmxlKSB7Cisg
ICAgICAgIHRyYW5zZmVyYWJsZXMgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlQXJyYXkpOwor
ICAgICAgICB0cmFuc2ZlcmFibGVzLT5hcHBlbmQodHJhbnNmZXJhYmxlKTsKICAgICB9Ci0gICAg
aW5pdE1lc3NhZ2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGRhdGEsIG9yaWdp
biwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgcG9ydHMucmVsZWFzZSgpKTsKKyAgICBpbml0TWVzc2Fn
ZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgZGF0YSwgb3JpZ2luLCBsYXN0RXZl
bnRJZCwgc291cmNlLCB0cmFuc2ZlcmFibGVzLnJlbGVhc2UoKSk7CiB9CiAKIGJvb2wgTWVzc2Fn
ZUV2ZW50Ojppc01lc3NhZ2VFdmVudCgpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5o
CmluZGV4IGI3ZjliMDIuLjEwMDhmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAg
LTMwLDEyICszMCwxMyBAQAogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBET01XaW5kb3c7CisgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAKICAg
ICBjbGFzcyBNZXNzYWdlRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogICAgIHB1YmxpYzoKQEAgLTQz
LDM2ICs0NCwzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KTsKICAgICAgICAgfQotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0QXJyYXk+IHBvcnRzLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSA9
IDAsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gIiIsIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQg
PSAiIiwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSA9IDApCisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJy
YXk+IHRyYW5zZmVyYWJsZXMsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
ID0gMCwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSAiIiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCA9ICIiLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlID0gMCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBs
YXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCB0cmFu
c2ZlcmFibGVzKSk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7
CiAKLSAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxh
c3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5
Pik7CisgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJy
YXk+KTsKIAogICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICAgICAgVHJhbnNmZXJhYmxlQXJyYXkqIGRhdGFEZXBl
bmRlbmNpZXMoKSBjb25zdCB7IHJldHVybiB0cmFuc2ZlcmFibGVzKCk7IH0KICAgICAgICAgY29u
c3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgICAgICBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RXZlbnRJZDsg
fQogICAgICAgICBET01XaW5kb3cqIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdl
dCgpOyB9Ci0gICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzKCkgY29uc3QgeyByZXR1cm4g
bV9wb3J0cy5nZXQoKTsgfQorICAgICAgICBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmZXJhYmxlcy5nZXQoKTsgfQogCiAgICAgICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVn
ICMyODc3NCkuCisgICAgICAgIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlKCk7CiAgICAgICAg
IE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCgpOwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRo
aXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotICAgICAg
ICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IERPTVdpbmRvdyogc291cmNlLCBNZXNzYWdlUG9ydCopOworICAgICAgICB2b2lkIGluaXRNZXNz
YWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291
cmNlLCBUcmFuc2ZlcmFibGUqKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdlRXZl
bnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIE1lc3NhZ2VFdmVudCgpOwotICAg
ICAgICBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVm
UHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKKyAg
ICAgICAgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1Jl
ZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4pOwog
CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fZGF0YTsKICAgICAgICAg
U3RyaW5nIG1fb3JpZ2luOwogICAgICAgICBTdHJpbmcgbV9sYXN0RXZlbnRJZDsKICAgICAgICAg
UmVmUHRyPERPTVdpbmRvdz4gbV9zb3VyY2U7Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydEFy
cmF5PiBtX3BvcnRzOworICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IG1fdHJhbnNm
ZXJhYmxlczsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaWRsCmluZGV4IGNmNDViYjQuLjI1MTMxMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaWRsCkBAIC00NSw4ICs0NSwxNyBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERl
ZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIGxhc3RFdmVudElkQXJnLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0g
RE9NV2luZG93IHNvdXJjZUFyZywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIEFycmF5IG1lc3NhZ2VQb3J0
cyk7CisKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRJbml0TWVzc2FnZUV2ZW50KGluIFtP
cHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIHR5cGVBcmcsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxX
aXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIGNhbkJ1YmJsZUFyZywgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0
VmFsdWVdIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhQXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9N
U3RyaW5nIG9yaWdpbkFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBsYXN0
RXZlbnRJZEFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVdpbmRvdyBzb3VyY2VBcmcs
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlv
bmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBBcnJheSB0cmFuc2ZlcmFibGVzKTsKICNlbHNlCi0g
ICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUg
T2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0IGV4cG9zZSBhIHNpbmdsZSBwb3J0LgorICAg
ICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGV4cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9i
akMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBleHBvc2UgYSBzaW5nbGUgTWVzc2FnZVBvcnQu
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydDsKIAog
ICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVs
dFZhbHVlXSBET01TdHJpbmcgdHlwZUFyZywgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApp
bmRleCA0NzJiOWIxLi5mZWJmN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAg
LTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTWVzc2FnZVBvcnQ6Ok1lc3NhZ2VQ
b3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAg
OiBtX3N0YXJ0ZWQoZmFsc2UpCiAgICAgLCBtX2Nsb3NlZChmYWxzZSkKKyAgICAsIG1fdHJhbnNm
ZXJDbG9zZWQoZmFsc2UpCiAgICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5jcmVhdGVk
TWVzc2FnZVBvcnQodGhpcyk7CkBAIC01OCw0MCArNTksNTIgQEAgTWVzc2FnZVBvcnQ6On5NZXNz
YWdlUG9ydCgpCiB9CiAKIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUg
T2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi12b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2Fn
ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQq
IHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2Uo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSog
dHJhbnNmZXJhYmxlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBNZXNzYWdlUG9ydEFycmF5
IHBvcnRzOwotICAgIGlmIChwb3J0KQotICAgICAgICBwb3J0cy5hcHBlbmQocG9ydCk7Ci0gICAg
cG9zdE1lc3NhZ2UobWVzc2FnZSwgJnBvcnRzLCBlYyk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkg
dHJhbnNmZXJhYmxlczsKKyAgICBpZiAodHJhbnNmZXJhYmxlKQorICAgICAgICB0cmFuc2ZlcmFi
bGVzLmFwcGVuZCh0cmFuc2ZlcmFibGUpOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZ0cmFu
c2ZlcmFibGVzLCBlYyk7CiB9CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxNZXNzYWdlUG9ydEFycmF5
Kj4oMCksIGVjKTsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxUcmFuc2Zl
cmFibGVBcnJheSo+KDApLCBlYyk7CiB9CiAKLXZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdl
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdl
UG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIE1lc3NhZ2VQb3J0Ojpw
b3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29u
c3QgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyYWJsZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIGlmICghaXNFbnRhbmdsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBjaGFubmVsczsKLSAgICAvLyBNYWtlIHN1cmUgd2UgYXJlbid0IGNvbm5lY3RlZCB0
byBhbnkgb2YgdGhlIHBhc3NlZC1pbiBwb3J0cy4KLSAgICBpZiAocG9ydHMpIHsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwb3J0cy0+c2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgIE1lc3NhZ2VQb3J0KiBkYXRhUG9ydCA9ICgqcG9ydHMpW2ldLmdldCgpOwotICAgICAg
ICAgICAgaWYgKGRhdGFQb3J0ID09IHRoaXMgfHwgbV9lbnRhbmdsZWRDaGFubmVsLT5pc0Nvbm5l
Y3RlZFRvKGRhdGFQb3J0KSkgewotICAgICAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNl
aXB0QXJyYXk+IHJlY2VpcHRzOworICAgIC8vIE1ha2Ugc3VyZSB3ZSBhcmVuJ3QgY29ubmVjdGVk
IHRvIGFueSBwYXNzZWQtaW4gTWVzc2FnZVBvcnRzLgorICAgIGlmICh0cmFuc2ZlcmFibGVzKSB7
CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlID0gKCp0
cmFuc2ZlcmFibGVzKVtpXS5nZXQoKTsKKyAgICAgICAgICAgIGlmIChNZXNzYWdlUG9ydCogZGF0
YVBvcnQgPSB0cmFuc2ZlcmFibGUtPmFzTWVzc2FnZVBvcnQoKSkgeworICAgICAgICAgICAgICAg
IGlmIChkYXRhUG9ydCA9PSB0aGlzIHx8IG1fZW50YW5nbGVkQ2hhbm5lbC0+aXNDb25uZWN0ZWRU
byhkYXRhUG9ydCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZWMgPSBEQVRBX0NMT05FX0VSUjsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRh
bmdsZVBvcnRzKHBvcnRzLCBlYyk7CisgICAgICAgIHJlY2VpcHRzID0gVHJhbnNmZXJhYmxlOjp0
cmFuc2ZlckFsbE91dCh0cmFuc2ZlcmFibGVzLCBlYyk7CiAgICAgICAgIGlmIChlYykKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9lbnRhbmdsZWRDaGFubmVsLT5wb3N0TWVzc2Fn
ZVRvUmVtb3RlKE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUobWVzc2FnZSwg
Y2hhbm5lbHMucmVsZWFzZSgpKSk7CisgICAgbV9lbnRhbmdsZWRDaGFubmVsLT5wb3N0TWVzc2Fn
ZVRvUmVtb3RlKE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUobWVzc2FnZSwg
cmVjZWlwdHMucmVsZWFzZSgpKSk7Cit9CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlw
dD4gTWVzc2FnZVBvcnQ6OnRyYW5zZmVyT3V0KEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
ICghbV9lbnRhbmdsZWRDaGFubmVsIHx8IG1fdHJhbnNmZXJDbG9zZWQpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIG1fZW50YW5nbGVkQ2hhbm5lbC5y
ZWxlYXNlKCk7CisgICAgfQorICAgIG1fdHJhbnNmZXJDbG9zZWQgPSB0cnVlOworICAgIHJldHVy
biBkaXNlbnRhbmdsZShlYyk7CiB9CiAKIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBN
ZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUoRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xNzksOCArMTky
LDggQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAgICAgICAgICAgICBy
ZXR1cm47CiAjZW5kaWYKIAotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMg
PSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBl
dmVudERhdGEtPmNoYW5uZWxzKCkpOwotICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IE1lc3Nh
Z2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgZXZlbnREYXRhLT5tZXNzYWdlKCkpOwor
ICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2Zl
cmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV2
ZW50RGF0YS0+cmVjZWlwdHMoKSk7CisgICAgICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gTWVzc2Fn
ZUV2ZW50OjpjcmVhdGUodHJhbnNmZXJhYmxlcy5yZWxlYXNlKCksIGV2ZW50RGF0YS0+bWVzc2Fn
ZSgpKTsKIAogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgZGlzcGF0Y2hF
dmVudChldnQucmVsZWFzZSgpLCBlYyk7CkBAIC0yMDQsNDggKzIxNyw2IEBAIE1lc3NhZ2VQb3J0
KiBNZXNzYWdlUG9ydDo6bG9jYWxseUVudGFuZ2xlZFBvcnQoKQogICAgIHJldHVybiBtX2VudGFu
Z2xlZENoYW5uZWwgPyBtX2VudGFuZ2xlZENoYW5uZWwtPmxvY2FsbHlFbnRhbmdsZWRQb3J0KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgOiAwOwogfQogCi1QYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdl
UG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFwb3J0cyB8
fCAhcG9ydHMtPnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBIYXNo
U2V0IHVzZWQgdG8gZWZmaWNpZW50bHkgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgaW4gdGhlIHBhc3Nl
ZC1pbiBhcnJheS4KLSAgICBIYXNoU2V0PE1lc3NhZ2VQb3J0Kj4gcG9ydFNldDsKLQotICAgIC8v
IFdhbGsgdGhlIGluY29taW5nIGFycmF5IC0gaWYgdGhlcmUgYXJlIGFueSBkdXBsaWNhdGUgcG9y
dHMsIG9yIG51bGwgcG9ydHMgb3IgY2xvbmVkIHBvcnRzLCB0aHJvdyBhbiBlcnJvciAocGVyIHNl
Y3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMpLgotICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgcG9ydHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE1lc3NhZ2VQb3J0KiBwb3J0
ID0gKCpwb3J0cylbaV0uZ2V0KCk7Ci0gICAgICAgIGlmICghcG9ydCB8fCBwb3J0LT5pc0Nsb25l
ZCgpIHx8IHBvcnRTZXQuY29udGFpbnMocG9ydCkpIHsKLSAgICAgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAg
ICAgICBwb3J0U2V0LmFkZChwb3J0KTsKLSAgICB9Ci0KLSAgICAvLyBQYXNzZWQtaW4gcG9ydHMg
cGFzc2VkIHZhbGlkaXR5IGNoZWNrcywgc28gd2UgY2FuIGRpc2VudGFuZ2xlIHRoZW0uCi0gICAg
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBwb3J0QXJyYXkgPSBhZG9wdFB0cihuZXcg
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkocG9ydHMtPnNpemUoKSkpOwotICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwIDsgaSA8IHBvcnRzLT5zaXplKCkgOyArK2kpIHsKLSAgICAgICAgT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCA9ICgqcG9ydHMpW2ldLT5kaXNlbnRhbmdsZShl
Yyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOyAvLyBDYW4ndCBnZW5lcmF0ZSBleGNlcHRpb24gaGVy
ZSBpZiBwYXNzZWQgYWJvdmUgY2hlY2tzLgotICAgICAgICAoKnBvcnRBcnJheSlbaV0gPSBjaGFu
bmVsLnJlbGVhc2UoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHBvcnRBcnJheS5yZWxlYXNlKCk7Ci19
Ci0KLVBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9y
dHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc093blB0cjxNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCi17Ci0gICAgaWYgKCFjaGFubmVscyB8fCAhY2hhbm5l
bHMtPnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBPd25QdHI8TWVzc2Fn
ZVBvcnRBcnJheT4gcG9ydEFycmF5ID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkoY2hh
bm5lbHMtPnNpemUoKSkpOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY2hhbm5l
bHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1l
c3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4dCk7Ci0gICAgICAgIHBvcnQtPmVudGFuZ2xlKCgqY2hh
bm5lbHMpW2ldLnJlbGVhc2UoKSk7Ci0gICAgICAgICgqcG9ydEFycmF5KVtpXSA9IHBvcnQucmVs
ZWFzZSgpOwotICAgIH0KLSAgICByZXR1cm4gcG9ydEFycmF5LnJlbGVhc2UoKTsKLX0KLQogRXZl
bnRUYXJnZXREYXRhKiBNZXNzYWdlUG9ydDo6ZXZlbnRUYXJnZXREYXRhKCkKIHsKICAgICByZXR1
cm4gJm1fZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAppbmRleCAzYTg0
MGZlLi5iYmZlZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00NSwyMiArNDYsMjEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAKLSAgICAvLyBUaGUgb3ZlcndoZWxtaW5nbHkgY29tbW9uIGNhc2UgaXMgc2Vu
ZGluZyBhIHNpbmdsZSBwb3J0LCBzbyBoYW5kbGUgdGhhdCBlZmZpY2llbnRseSB3aXRoIGFuIGlu
bGluZSBidWZmZXIgb2Ygc2l6ZSAxLgotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJyYXk7Ci0KICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBz
aG91bGQgaW5oZXJpdCBmcm9tIEFjdGl2ZURPTU9iamVjdCBhbmQgdXNlCiAgICAgLy8gc2V0UGVu
ZGluZ0FjdGl2aXR5IC8gdW5zZXRQZW5kaW5nQWN0aXZpdHkgaW5zdGVhZCBvZiBkdXBsaWNhdGlu
ZwogICAgIC8vIEFjdGl2ZURPTU9iamVjdCdzIGZlYXR1cmVzIGFuZCByZWx5aW5nIG9uIEphdmFT
Y3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9uCiAgICAgLy8gdG8gZ2V0IGl0cyBsaWZldGltZSByaWdo
dC4KLSAgICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0
PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKyAgICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1YmxpYyBU
cmFuc2ZlcmFibGUsIHB1YmxpYyBFdmVudFRhcmdldCB7CiAgICAgcHVibGljOgorICAgICAgICBN
ZXNzYWdlUG9ydCogYXNNZXNzYWdlUG9ydCgpIHsgcmV0dXJuIHRoaXM7IH0KKwogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdl
UG9ydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KICAgICAgICAgfk1lc3NhZ2VQb3J0KCk7
CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBvc3RNZXNzYWdl
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdl
UG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBUcmFuc2ZlcmFi
bGVBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlz
IHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAg
dm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3Nh
Z2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJs
ZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgICAgIHZv
aWQgY2xvc2UoKTsKQEAgLTY4LDE0ICs2OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBlbnRhbmdsZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4pOwogICAgICAg
ICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gZGlzZW50YW5nbGUoRXhjZXB0aW9uQ29k
ZSYpOwogCi0gICAgICAgIC8vIERpc2VudGFuZ2xlIGFuIGFycmF5IG9mIHBvcnRzLCByZXR1cm5p
bmcgdGhlIGVudGFuZ2xlZCBjaGFubmVscy4KLSAgICAgICAgLy8gUGVyIHNlY3Rpb24gOC4zLjMg
b2YgdGhlIEhUTUw1IHNwZWMsIGdlbmVyYXRlcyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRp
b24gaWYgYW55IG9mIHRoZSBwYXNzZWQgcG9ydHMgYXJlIG51bGwgb3Igbm90IGVudGFuZ2xlZC4K
LSAgICAgICAgLy8gUmV0dXJucyAwIGlmIHRoZXJlIGlzIGFuIGV4Y2VwdGlvbiwgb3IgaWYgdGhl
IHBhc3NlZC1pbiBhcnJheSBpcyAwL2VtcHR5LgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gZGlzZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUG9y
dEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgICAgIC8vIEVudGFuZ2xlcyBhbiBhcnJh
eSBvZiBjaGFubmVscywgcmV0dXJuaW5nIGFuIGFycmF5IG9mIE1lc3NhZ2VQb3J0cyBpbiBtYXRj
aGluZyBvcmRlci4KLSAgICAgICAgLy8gUmV0dXJucyAwIGlmIHRoZSBwYXNzZWQgYXJyYXkgaXMg
MC9lbXB0eS4KLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gZW50
YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc093blB0cjxNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4pOworICAgICAgICBib29sIGlzVHJhbnNmZXJDbG9zZWQoKSBjb25zdCB7
IHJldHVybiBtX3RyYW5zZmVyQ2xvc2VkOyB9CisgICAgICAgIFBhc3NPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdD4gdHJhbnNmZXJPdXQoRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIHZvaWQg
bWVzc2FnZUF2YWlsYWJsZSgpOwogICAgICAgICBib29sIHN0YXJ0ZWQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0ZWQ7IH0KQEAgLTg4LDggKzgyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlcygpOwogCi0gICAgICAgIHVzaW5nIFJlZkNvdW50
ZWQ8TWVzc2FnZVBvcnQ+OjpyZWY7Ci0gICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2FnZVBv
cnQ+OjpkZXJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFuc2ZlcmFibGU+OjpyZWY7
CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhbnNmZXJhYmxlPjo6ZGVyZWY7CiAKICAgICAg
ICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIApAQCAtMTA1LDkgKzk5LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIHVzZWQgc29sZWx5IHRvIGVu
YWJsZSBhIEdDIG9wdGltaXphdGlvbi4gU29tZSBwbGF0Zm9ybXMgbWF5IG5vdCBiZSBhYmxlIHRv
IGRldGVybWluZSBvd25lcnNoaXAgb2YgdGhlIHJlbW90ZSBwb3J0IChzaW5jZSBpdCBtYXkgbGl2
ZSBjcm9zcy1wcm9jZXNzKSAtIHRob3NlIHBsYXRmb3JtcyBtYXkgYWx3YXlzIHJldHVybiBudWxs
LgogICAgICAgICBNZXNzYWdlUG9ydCogbG9jYWxseUVudGFuZ2xlZFBvcnQoKTsKICAgICAgICAg
Ly8gQSBwb3J0IHN0YXJ0cyBvdXQgaXRzIGxpZmUgZW50YW5nbGVkLCBhbmQgcmVtYWlucyBlbnRh
bmdsZWQgdW50aWwgaXQgaXMgY2xvc2VkIG9yIGlzIGNsb25lZC4KLSAgICAgICAgYm9vbCBpc0Vu
dGFuZ2xlZCgpIHsgcmV0dXJuICFtX2Nsb3NlZCAmJiAhaXNDbG9uZWQoKTsgfQorICAgICAgICBi
b29sIGlzRW50YW5nbGVkKCkgY29uc3QgeyByZXR1cm4gIW1fY2xvc2VkICYmICFpc0Nsb25lZCgp
OyB9CiAgICAgICAgIC8vIEEgcG9ydCBpcyBjbG9uZWQgaWYgaXRzIGVudGFuZ2xlZCBjaGFubmVs
IGhhcyBiZWVuIHJlbW92ZWQgYW5kIHNlbnQgdG8gYSBuZXcgb3duZXIgdmlhIHBvc3RNZXNzYWdl
KCkuCi0gICAgICAgIGJvb2wgaXNDbG9uZWQoKSB7IHJldHVybiAhbV9lbnRhbmdsZWRDaGFubmVs
OyB9CisgICAgICAgIGJvb2wgaXNDbG9uZWQoKSBjb25zdCB7IHJldHVybiAhbV9lbnRhbmdsZWRD
aGFubmVsOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBNZXNzYWdlUG9ydChTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CkBAIC0xMjEsNiArMTE1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIGJvb2wgbV9zdGFydGVkOwogICAgICAgICBib29sIG1fY2xvc2VkOworICAgICAg
ICBib29sIG1fdHJhbnNmZXJDbG9zZWQ7CiAKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgICAgICBFdmVudFRhcmdldERhdGEgbV9l
dmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAppbmRleCAyODgzM2Nl
Li5mNDUzNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwKQEAgLTM4LDYgKzM4LDkg
QEAgbW9kdWxlIGV2ZW50cyB7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBM
QU5HVUFHRV9KQVZBU0NSSVBUCiAgICAgICAgIFtDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4g
RE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gQXJyYXkgbWVzc2FnZVBvcnRzKQogICAg
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgd2Vi
a2l0UG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gQXJyYXkg
dHJhbnNmZXIpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwogICAgICAgICB2
b2lkIHN0YXJ0KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnRDaGFubmVsLmNwcAppbmRleCAzNjdmN2VkLi45MTc3ZDQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmNwcApAQCAtMzAsMTggKzMwLDI5IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAKKyNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIAotUGFzc093
blB0cjxNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YT4gTWVzc2FnZVBvcnRDaGFubmVsOjpF
dmVudERhdGE6OmNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCitQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBNZXNzYWdlUG9ydENoYW5uZWw6OkV2
ZW50RGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBFdmVudERhdGEobWVzc2FnZSwgY2hhbm5lbHMpKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50RGF0YShtZXNzYWdlLCByZWNlaXB0cykpOwogfQogCi1N
ZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6RXZlbnREYXRhKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBjaGFubmVscykKK01lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVudERhdGEo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKICAgICA6IG1fbWVzc2FnZShtZXNzYWdl
KQotICAgICwgbV9jaGFubmVscyhjaGFubmVscykKKyAgICAsIG1fcmVjZWlwdHMocmVjZWlwdHMp
Cit7Cit9CisKK1Bhc3NSZWZQdHI8VHJhbnNmZXJhYmxlPiBNZXNzYWdlUG9ydENoYW5uZWw6OnRy
YW5zZmVySW4oUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiB0cmFuc2ZlcmFibGVSZWNl
aXB0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogeworICAgIEFTU0VSVCh0cmFu
c2ZlcmFibGVSZWNlaXB0LT5hc01lc3NhZ2VQb3J0Q2hhbm5lbCgpKTsKKyAgICBPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsPiBjaGFubmVsID0gYWRvcHRQdHIodHJhbnNmZXJhYmxlUmVjZWlwdC5s
ZWFrUHRyKCktPmFzTWVzc2FnZVBvcnRDaGFubmVsKCkpOworICAgIFJlZlB0cjxNZXNzYWdlUG9y
dD4gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4dCk7CisgICAgcG9ydC0+ZW50YW5n
bGUoY2hhbm5lbC5yZWxlYXNlKCkpOworICAgIHJldHVybiBwb3J0LnJlbGVhc2UoKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5l
bC5oCmluZGV4IDA3NjY4YTQuLjA3ZjM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnRDaGFubmVsLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVHJhbnNm
ZXJhYmxlUmVjZWlwdC5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CkBAIC01MCwxNCArNTEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOwogCi0gICAgLy8gVGhlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbiBjYXNlIGlzIHNlbmRp
bmcgYSBzaW5nbGUgcG9ydCwgc28gaGFuZGxlIHRoYXQgZWZmaWNpZW50bHkgd2l0aCBhbiBpbmxp
bmUgYnVmZmVyIG9mIHNpemUgMS4KLSAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsPiwgMT4gTWVzc2FnZVBvcnRDaGFubmVsQXJyYXk7Ci0KICAgICAvLyBNZXNzYWdl
UG9ydENoYW5uZWwgaXMgYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBpbnRlcmZhY2UgdG8gdGhlIHJl
bW90ZSBzaWRlIG9mIGEgbWVzc2FnZSBjaGFubmVsLgogICAgIC8vIEl0IGFjdHMgYXMgYSB3cmFw
cGVyIGFyb3VuZCB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsIGltcGxlbWVudGF0aW9uIHdoaWNoIGVuc3VyZXMgdGhhdCB0aGUgcGxhdGZvcm0tZGVwZW5k
ZW50IGNsb3NlKCkgbWV0aG9kIGlzIGludm9rZWQgYmVmb3JlIGRlc3RydWN0aW9uLgotICAgIGNs
YXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbCB7CisgICAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsIDog
cHVibGljIFRyYW5zZmVyYWJsZVJlY2VpcHQgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShNZXNzYWdlUG9ydENoYW5uZWwpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbCogYXNNZXNzYWdlUG9ydENoYW5uZWwoKSB7
IHJldHVybiB0aGlzOyB9CisKKyAgICAgICAgUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRyYW5z
ZmVySW4oUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpOworICAgICAgICBib29sIGlzRmxhdHRlbmFibGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorCiAgICAgICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUNoYW5uZWwoUGFzc1JlZlB0cjxNZXNz
YWdlUG9ydD4sIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+KTsKIAogICAgICAgICAvLyBDcmVhdGVz
IGEgbmV3IHdyYXBwZXIgZm9yIHRoZSBwYXNzZWQgY2hhbm5lbC4KQEAgLTgyLDE1ICs4NSwxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIEV2ZW50RGF0YSB7CiAgICAgICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8RXZl
bnREYXRhPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgICAgICBzdGF0aWMgUGFzc093
blB0cjxFdmVudERhdGE+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CiAKICAgICAgICAgICAgIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogbWVzc2FnZSgpIHsgcmV0dXJuIG1fbWVzc2FnZS5nZXQoKTsg
fQotICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5l
bHMoKSB7IHJldHVybiBtX2NoYW5uZWxzLnJlbGVhc2UoKTsgfQorICAgICAgICAgICAgUGFzc093
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKCkgeyByZXR1cm4gbV9yZWNl
aXB0cy5yZWxlYXNlKCk7IH0KIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgRXZlbnRE
YXRhKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgICAgICBFdmVudERhdGEoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5Pik7CiAgICAgICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtX21lc3NhZ2U7Ci0gICAgICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+IG1fY2hhbm5lbHM7CisgICAgICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5PiBtX3JlY2VpcHRzOwogICAgICAgICB9OwogCiAgICAgICAgIC8vIFNlbmRzIGEgbWVzc2Fn
ZSBhbmQgb3B0aW9uYWwgY2xvbmVkIHBvcnQgdG8gdGhlIHJlbW90ZSBwb3J0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggMGE5ODMxMy4uZDJkOTE1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9wU3RhdGVFdmVudC5oCkBAIC0zMCw2ICszMCwxMSBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKK2NsYXNzIFRyYW5zZmVyYWJsZTsK
K2NsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJhbnNm
ZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CkBAIC00Miw3ICs0
Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRQb3BTdGF0ZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICBib29sIGlzUG9wU3RhdGVFdmVudCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlT2JqZWN0LmdldCgpOyB9ICAgIAorICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlT2JqZWN0LmdldCgpOyB9
CisgICAgVHJhbnNmZXJhYmxlQXJyYXkqIGRhdGFEZXBlbmRlbmNpZXMoKSBjb25zdCB7IHJldHVy
biAwOyB9CiAKIHByaXZhdGU6CiAgICAgUG9wU3RhdGVFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJh
bnNmZXJhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDNmZGY0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZS5jcHAK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVHJhbnNmZXJhYmxlLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheT4gVHJhbnNmZXJhYmxlOjp0cmFuc2ZlckFsbE91dChjb25zdCBUcmFuc2ZlcmFibGVBcnJh
eSogdHJhbnNmZXJhYmxlcywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCF0cmFuc2Zl
cmFibGVzIHx8ICF0cmFuc2ZlcmFibGVzLT5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgLy8gSGFzaFNldCB1c2VkIHRvIGVmZmljaWVudGx5IGNoZWNrIGZvciBkdXBsaWNh
dGVzIGluIHRoZSBwYXNzZWQtaW4gYXJyYXkuCisgICAgSGFzaFNldDxUcmFuc2ZlcmFibGUqPiB0
cmFuc2ZlcmFibGVTZXQ7CisKKyAgICAvLyBXYWxrIHRoZSBpbmNvbWluZyBhcnJheSAtIGlmIHRo
ZXJlIGFyZSBhbnkgZHVwbGljYXRlIHRyYW5zZmVyYWJsZXMsIG9yIHRyYW5zZmVycmVkIHBvcnRz
IG9yIGNsb3NlZCBwb3J0cywgdGhyb3cgYW4gZXJyb3IgKHBlciBzZWN0aW9uIDguMy4zIG9mIHRo
ZSBIVE1MNSBzcGVjKS4KKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHRyYW5zZmVy
YWJsZXMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxl
ID0gKCp0cmFuc2ZlcmFibGVzKVtpXS5nZXQoKTsKKyAgICAgICAgaWYgKCF0cmFuc2ZlcmFibGUg
fHwgdHJhbnNmZXJhYmxlLT5pc1RyYW5zZmVyQ2xvc2VkKCkgfHwgdHJhbnNmZXJhYmxlU2V0LmNv
bnRhaW5zKHRyYW5zZmVyYWJsZSkpIHsKKyAgICAgICAgICAgIGVjID0gREFUQV9DTE9ORV9FUlI7
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICB0cmFuc2Zl
cmFibGVTZXQuYWRkKHRyYW5zZmVyYWJsZSk7CisgICAgfQorCisgICAgLy8gUGFzc2VkLWluIFRy
YW5zZmVyYWJsZXMgcGFzc2VkIHZhbGlkaXR5IGNoZWNrcywgc28gd2UgY2FuIHRyYW5zZmVyIHRo
ZW0gb3V0LgorICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRBcnJh
eSA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkodHJhbnNmZXJhYmxlcy0+
c2l6ZSgpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDAgOyBpIDwgdHJhbnNmZXJhYmxl
cy0+c2l6ZSgpIDsgKytpKSB7CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiBy
ZWNlaXB0ID0gKCp0cmFuc2ZlcmFibGVzKVtpXS0+dHJhbnNmZXJPdXQoZWMpOworICAgICAgICBB
U1NFUlQoIWVjKTsgLy8gQ2FuJ3QgZ2VuZXJhdGUgZXhjZXB0aW9uIGhlcmUgaWYgcGFzc2VkIGFi
b3ZlIGNoZWNrcy4KKyAgICAgICAgKCpyZWNlaXB0QXJyYXkpW2ldID0gcmVjZWlwdC5yZWxlYXNl
KCk7CisgICAgfQorICAgIHJldHVybiByZWNlaXB0QXJyYXkucmVsZWFzZSgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNm
ZXJhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRiOGYyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAq
LworCisjaWZuZGVmIFRyYW5zZmVyYWJsZV9oCisjZGVmaW5lIFRyYW5zZmVyYWJsZV9oCisKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIE1lc3NhZ2VQb3J0Q2hh
bm5lbDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBUcmFuc2ZlcmFibGU7
CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFy
cmF5OwordHlwZWRlZiBWZWN0b3I8T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk7CisKKy8vIFRyYW5zZmVyYWJsZSBvYmplY3RzIHJlcHJlc2Vu
dCByZXNvdXJjZXMgdGhhdCBtYXkgYmUgc2VudCBhbG9uZyB3aXRoIG1lc3NhZ2VzCisvLyB0aHJv
dWdoIHRoZSBET00gbWVzc2FnaW5nIEFQSS4gQSBUcmFuc2ZlcmFibGUgb2JqZWN0IG1heSBiZSB0
cmFuc2ZlcnJlZCBvbmNlLgorLy8gSW50ZXJuYWxseSwgdHJhbnNmZXJyaW5nIGEgVHJhbnNmZXJh
YmxlIG1lYW5zIHR1cm5pbmcgaXQgaW50byBhIFRyYW5zZmVyYWJsZVJlY2VpcHQsCisvLyBmZXJy
eWluZyB0aGF0IFRyYW5zZmVyYWJsZVJlY2VpcHQgdGhyb3VnaCB0aGUgc3lzdGVtIGFsb25nIHdp
dGggYSBtZXNzYWdlLCBhbmQKKy8vIGV2ZW50dWFsbHkgdHVybmluZyBpdCBiYWNrIGludG8gYSBU
cmFuc2ZlcmFibGUgb25jZSB0aGUgbWVzc2FnZSBpcyByZWNlaXZlZC4KKy8vIFRoaXMgc2Vjb25k
IFRyYW5zZmVyYWJsZSBvYmplY3QgY2FuIHRoZW4gYmUgdHJhbnNmZXJlZCBvbmNlIGFnYWluLgor
Y2xhc3MgVHJhbnNmZXJhYmxlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhbnNmZXJhYmxlPiB7Citw
dWJsaWM6CisgICAgLy8gQXMgbW9yZSBUcmFuc2ZlcmFibGUgdHlwZXMgYXJlIGFkZGVkLCBzb21l
IGJpbmRpbmcgY29kZSBtdXN0IGJlIHVwZGF0ZWQ6CisgICAgLy8gICB0b05hdGl2ZVRyYW5zZmVy
YWJsZS90b0pTVHJhbnNmZXJhYmxlIGluIEpTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisgICAgLy8g
ICB0b05hdGl2ZVRyYW5zZmVyYWJsZS90b1Y4VHJhbnNmZXJhYmxlIGluIFY4TWVzc2FnZVBvcnRD
dXN0b20uY3BwCisgICAgdmlydHVhbCBNZXNzYWdlUG9ydCogYXNNZXNzYWdlUG9ydCgpIHsgcmV0
dXJuIDA7IH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiB0
cmFuc2Zlck91dChFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5z
ZmVyQ2xvc2VkKCkgY29uc3QgPSAwOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5PiB0cmFuc2ZlckFsbE91dChjb25zdCBUcmFuc2ZlcmFibGVBcnJheSos
IEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIHZpcnR1YWwgflRyYW5zZmVyYWJsZSgpIHsgfQorCitw
cm90ZWN0ZWQ6CisgICAgVHJhbnNmZXJhYmxlKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBUcmFuc2ZlcmFibGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ry
YW5zZmVyYWJsZVJlY2VpcHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjM4OGFkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJh
YmxlUmVjZWlwdC5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgorCisjaW5jbHVkZSAi
VHJhbnNmZXJhYmxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxUcmFu
c2ZlcmFibGVBcnJheT4gVHJhbnNmZXJhYmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheT4gcmVjZWlwdHMpCit7CisgICAgaWYgKCFyZWNlaXB0cyB8fCAhcmVjZWlwdHMtPnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJy
YXk+IHRyYW5zZmVyYWJsZUFycmF5ID0gYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZUFycmF5KHJl
Y2VpcHRzLT5zaXplKCkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHJlY2Vp
cHRzLT5zaXplKCk7ICsraSkKKyAgICAgICAgKCp0cmFuc2ZlcmFibGVBcnJheSlbaV0gPSAoKnJl
Y2VpcHRzKVtpXS0+dHJhbnNmZXJJbigoKnJlY2VpcHRzKVtpXS5yZWxlYXNlKCksIGNvbnRleHQp
OworICAgIHJldHVybiB0cmFuc2ZlcmFibGVBcnJheS5yZWxlYXNlKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFi
bGVSZWNlaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYjQyZWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oCkBAIC0wLDAgKzEs
NzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgVHJhbnNmZXJhYmxlUmVjZWlwdF9oCisjZGVm
aW5lIFRyYW5zZmVyYWJsZVJlY2VpcHRfaAorCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXNzYWdl
UG9ydDsKK2NsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CitjbGFzcyBUcmFuc2ZlcmFibGU7CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0Owor
Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJhbnNmZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJy
YXk7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheTsKKworLy8gQSBUcmFuc2ZlcmFibGVSZWNlaXB0IGlzIGEgVHJh
bnNmZXJhYmxlIG9iamVjdCB0aGF0IGlzIGJlaW5nIHNlbnQgYWxvbmcgd2l0aCBzb21lCisvLyBt
ZXNzYWdlLiBJdCBtYXkgbGF0ZXIgYmUgcmVkZWVtZWQgZm9yIGEgVHJhbnNmZXJhYmxlIG9iamVj
dCBlcXVpdmFsZW50IHRvIHRoZSBvbmUKKy8vIGZyb20gd2hpY2ggdGhpcyBUcmFuc2ZlcmFibGVS
ZWNlaXB0IHdhcyBjcmVhdGVkLiBBIFRyYW5zZmVyYWJsZVJlY2VpcHQgbWF5IG9ubHkKKy8vIGJl
IHJlZGVlbWVkIG9uY2UuIFNvbWUgVHJhbnNmZXJhYmxlUmVjZWlwdHMgbWF5IGJlIGZsYXR0ZW5l
ZCBieSB0aGUgc2VyaWFsaXplcgorLy8gKGFuIGV2ZW50IHRoYXQgbWF5IG9jY3VyIHNob3VsZCwg
Zm9yIGV4YW1wbGUsIHRoZSByZWNlaXB0IG5lZWQgdG8gYmUgc2VudCBhY3Jvc3MKKy8vIHRoZSBu
ZXR3b3JrIG9yIGFuIElQQyBib3VuZGFyeSkuIE90aGVycyBtYXkgaGF2ZSBzcGVjaWFsIHBsYXRm
b3JtLXNwZWNpZmljIHNlbWFudGljcworLy8gdGhhdCBhcmUgaW52b2tlZCBhdCB0cmFuc2ZlciB0
aW1lLgorY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
VHJhbnNmZXJhYmxlUmVjZWlwdCgpIHsgfQorCisgICAgdmlydHVhbCBNZXNzYWdlUG9ydENoYW5u
ZWwqIGFzTWVzc2FnZVBvcnRDaGFubmVsKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc0ZsYXR0ZW5hYmxlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRy
YW5zZmVyYWJsZT4gdHJhbnNmZXJJbihQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgPSAwOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8VHJh
bnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyQWxsSW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBh
c3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CisKK3Byb3RlY3RlZDoKKyAgICBU
cmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBUcmFuc2ZlcmFibGVSZWNlaXB0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5l
Y3Rpb24uY3BwCmluZGV4IGJkYTNlZTMuLmY2Y2NhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcDJwL1BlZXJD
b25uZWN0aW9uLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OnBv
c3RTdGFydE5lZ290aWF0aW9uVGFzaygpCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2VFdmVudChjb25zdCBpbnQmLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ZGF0YSkKIHsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkID0gZGF0YTsKLSAg
ICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRBcnJheT4oKSwgZCkpOworICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUo
UGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4oKSwgZCkpOwogfQogCiB2b2lkIFBlZXJDb25u
ZWN0aW9uOjpkaXNwYXRjaFNpZ25hbGluZ0V2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2Y2E1YjM3Li4yOTBlNjQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCkBAIC05MCw2ICs5MCw4IEBACiAjaW5jbHVkZSAiU3RvcmFnZU5h
bWVzcGFjZS5oIgogI2luY2x1ZGUgIlN0eWxlTWVkaWEuaCIKICNpbmNsdWRlICJTdWRkZW5UZXJt
aW5hdGlvbi5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVy
YWJsZVJlY2VpcHQuaCIKICNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgogI2luY2x1ZGUgIldpbmRv
d0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtMTIxLDIwICsxMjMsMjAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyIDogcHVibGljIFRp
bWVyQmFzZSB7CiBwdWJsaWM6Ci0gICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdpbmRv
dywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgU2VjdXJpdHlPcmlnaW4qIHRhcmdl
dE9yaWdpbikKKyAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdpbmRvdyogd2luZG93LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4sIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cywgU2VjdXJpdHlPcmlnaW4qIHRhcmdldE9yaWdpbikK
ICAgICAgICAgOiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2Up
CiAgICAgICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQogICAgICAgICAsIG1fc291cmNlKHNv
dXJjZSkKLSAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICAgICAsIG1fcmVjZWlw
dHMocmVjZWlwdHMpCiAgICAgICAgICwgbV90YXJnZXRPcmlnaW4odGFyZ2V0T3JpZ2luKQogICAg
IHsKICAgICB9CiAKICAgICBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9y
dEFycmF5PiBtZXNzYWdlUG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqY29udGV4
dCwgbV9jaGFubmVscy5yZWxlYXNlKCkpOwotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50Ojpj
cmVhdGUobWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdlLCBtX29yaWdpbiwgIiIsIG1f
c291cmNlKTsKKyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVz
ID0gVHJhbnNmZXJhYmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJbigqY29udGV4dCwgbV9yZWNlaXB0
cy5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUodHJhbnNm
ZXJhYmxlcy5yZWxlYXNlKCksIG1fbWVzc2FnZSwgbV9vcmlnaW4sICIiLCBtX3NvdXJjZSk7CiAg
ICAgfQogICAgIFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4oKSBjb25zdCB7IHJldHVybiBt
X3RhcmdldE9yaWdpbi5nZXQoKTsgfQogCkBAIC0xNDksNyArMTUxLDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgU3RyaW5nIG1f
b3JpZ2luOwogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNlOwotICAgIE93blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxl
UmVjZWlwdEFycmF5PiBtX3JlY2VpcHRzOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90
YXJnZXRPcmlnaW47CiB9OwogCkBAIC03OTgsMTUgKzgwMCwxNSBAQCBDT01QSUxFX0FTU0VSVChz
dGF0aWNfY2FzdDxpbnQ+KERPTVdpbmRvdzo6UEVSU0lTVEVOVCkgPT0gc3RhdGljX2Nhc3Q8aW50
PihBc3luYwogCiAjZW5kaWYKIAotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgY29u
c3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsKLSAgICBpZiAocG9ydCkKLSAgICAgICAg
cG9ydHMuYXBwZW5kKHBvcnQpOwotICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZwb3J0cywgdGFy
Z2V0T3JpZ2luLCBzb3VyY2UsIGVjKTsKKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFi
bGVzOworICAgIGlmICh0cmFuc2ZlcmFibGUpCisgICAgICAgIHRyYW5zZmVyYWJsZXMuYXBwZW5k
KHRyYW5zZmVyYWJsZSk7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnRyYW5zZmVyYWJsZXMs
IHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CiB9CiAKLXZvaWQgRE9NV2luZG93Ojpwb3N0TWVz
c2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVz
c2FnZVBvcnRBcnJheSogcG9ydHMsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5k
b3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3Nh
Z2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFRyYW5z
ZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwg
RE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghbV9mcmFt
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtODIyLDcgKzgyNCw3IEBAIHZvaWQgRE9NV2luZG93Ojpw
b3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29u
c3QgTWVzCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMsIGVj
KTsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IFRyYW5z
ZmVyYWJsZTo6dHJhbnNmZXJBbGxPdXQodHJhbnNmZXJhYmxlcywgZWMpOwogICAgIGlmIChlYykK
ICAgICAgICAgcmV0dXJuOwogCkBAIC04MzQsNyArODM2LDcgQEAgdm9pZCBET01XaW5kb3c6OnBv
c3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25z
dCBNZXMKICAgICBTdHJpbmcgc291cmNlT3JpZ2luID0gc291cmNlRG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCktPnRvU3RyaW5nKCk7CiAKICAgICAvLyBTY2hlZHVsZSB0aGUgbWVzc2FnZS4KLSAg
ICBQb3N0TWVzc2FnZVRpbWVyKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKHRoaXMsIG1l
c3NhZ2UsIHNvdXJjZU9yaWdpbiwgc291cmNlLCBjaGFubmVscy5yZWxlYXNlKCksIHRhcmdldC5n
ZXQoKSk7CisgICAgUG9zdE1lc3NhZ2VUaW1lciogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1l
cih0aGlzLCBtZXNzYWdlLCBzb3VyY2VPcmlnaW4sIHNvdXJjZSwgcmVjZWlwdHMucmVsZWFzZSgp
LCB0YXJnZXQuZ2V0KCkpOwogICAgIHRpbWVyLT5zdGFydE9uZVNob3QoMCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCmluZGV4IGEyYWQ4MDkuLjIwZmQwODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaApAQCAtNjYsNiArNjYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
U3RvcmFnZTsKICAgICBjbGFzcyBTdG9yYWdlSW5mbzsKICAgICBjbGFzcyBTdHlsZU1lZGlhOwor
ICAgIGNsYXNzIFRyYW5zZmVyYWJsZTsKKyAgICBjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0Owog
ICAgIGNsYXNzIFdlYktpdFBvaW50OwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FKQpAQCAtNzQsNyArNzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBzdHJ1Y3Qg
V2luZG93RmVhdHVyZXM7CiAKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
LCAxPiBNZXNzYWdlUG9ydEFycmF5OworICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2Zl
cmFibGU+LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsKKyAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8
VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKIAogICAg
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTIyOCw5ICsyMzEsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpOwogICAgICAgICB2b2lk
IHJlc2V0R2VvbG9jYXRpb24oKTsKIAotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5
KiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRp
b25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFRyYW5zZmVyYWJsZUFycmF5KiwgY29uc3QgU3Ry
aW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5k
aW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiwgY29uc3QgU3RyaW5n
JiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJik7CisgICAg
ICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UsIFRyYW5zZmVyYWJsZSosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5k
b3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVGlt
ZXJGaXJlZChQYXNzT3duUHRyPFBvc3RNZXNzYWdlVGltZXI+KTsKIAogICAgICAgICB2b2lkIHNj
cm9sbEJ5KGludCB4LCBpbnQgeSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5k
ZXggNjJmMWMzMC4uZTIxZDJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtMjE1
LDYgKzIxNSw4IEBAIG1vZHVsZSB3aW5kb3cgewogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVND
UklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNl
Y3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVl
IG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gQXJyYXkgbWVzc2FnZVBvcnRzLCBpbiBET01TdHJpbmcg
dGFyZ2V0T3JpZ2luKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAg
IFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCB3ZWJraXRQb3N0TWVzc2Fn
ZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSB0
cmFuc2Zlckxpc3QsIGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4pCisgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkg
dG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0
IGFsbG93IHBhc3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KICAgICAgICAgW0RvTm90Q2hlY2tEb21h
aW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0LCBpbiBE
T01TdHJpbmcgdGFyZ2V0T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKaW5kZXgg
OWFkZTljOC4uMmY0Y2VjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJD
dXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCkBAIC00Myw2
ICs0Myw4IEBAIGNsYXNzIElEQlJlcXVlc3Q7CiBjbGFzcyBJREJUcmFuc2FjdGlvbjsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Citj
bGFzcyBUcmFuc2ZlcmFibGU7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJhbnNmZXJhYmxlPiwg
MT4gVHJhbnNmZXJhYmxlQXJyYXk7CiAKIGNsYXNzIElEQkN1cnNvciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPElEQkN1cnNvcj4gewogcHVibGljOgpAQCAtNjMsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBw
cmltYXJ5S2V5KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlKCkgY29uc3Q7CisgICAgLy8gQW4gSW5kZXhlZERCIG9ubHkgaG9sZHMgZmxhdHRlbmVk
IGRhdGEuCisgICAgVHJhbnNmZXJhYmxlQXJyYXkqIHZhbHVlRGVwZW5kZW5jaWVzKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQogICAgIElEQkFueSogc291cmNlKCkgY29uc3Q7CiAKICAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IHVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcAppbmRleCA1NGI1YmE4
Li44NDY0ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5jcHAKQEAgLTQ3LDI2ICs0NywyNSBAQCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
OjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1
cwogfQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmlu
ZGluZ3MgKGJ1ZyAjMjg3NzQpLgotdm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVz
c2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBv
cnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwg
VHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIE1l
c3NhZ2VQb3J0QXJyYXkgcG9ydHM7Ci0gICAgaWYgKHBvcnQpCi0gICAgICAgIHBvcnRzLmFwcGVu
ZChwb3J0KTsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmcG9ydHMsIGVjKTsKKyAgICBUcmFu
c2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVzOworICAgIGlmICh0cmFuc2ZlcmFibGUpCisgICAg
ICAgIHRyYW5zZmVyYWJsZXMuYXBwZW5kKHRyYW5zZmVyYWJsZSk7CisgICAgcG9zdE1lc3NhZ2Uo
bWVzc2FnZSwgJnRyYW5zZmVyYWJsZXMsIGVjKTsKIH0KIAogdm9pZCBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgc3Rh
dGljX2Nhc3Q8TWVzc2FnZVBvcnRBcnJheSo+KDApLCBlYyk7CisgICAgcG9zdE1lc3NhZ2UobWVz
c2FnZSwgc3RhdGljX2Nhc3Q8VHJhbnNmZXJhYmxlKj4oMCksIGVjKTsKIH0KIAotdm9pZCBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgVHJhbnNmZXJhYmxl
QXJyYXkqIHRyYW5zZmVyYWJsZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIERpc2Vu
dGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRvIHRoZSByZW1v
dGUgY29udGV4dC4KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxz
ID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMsIGVjKTsKKyAgICBPd25QdHI8
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IFRyYW5zZmVyYWJsZTo6dHJhbnNm
ZXJBbGxPdXQodHJhbnNmZXJhYmxlcywgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJu
OwotICAgIHRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJP
YmplY3QobWVzc2FnZSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKyAgICB0aHJlYWQoKS0+d29ya2Vy
T2JqZWN0UHJveHkoKS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KG1lc3NhZ2UsIHJlY2VpcHRz
LnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6aW1wb3J0U2Ny
aXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCmluZGV4IGRi
YTUyYWUuLjg4MzkxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5oCkBAIC01Niw5ICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gRXZlbnRUYXJnZXQKICAgICAgICAgdmlydHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0KiB0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9CiAgICAgICAg
IHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+LCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYp
OworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgY29uc3QgVHJhbnNmZXJhYmxlQXJyYXkqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAg
IC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAo
YnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+LCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAg
dm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFRyYW5z
ZmVyYWJsZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKG1lc3NhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbAppbmRleCAyMmQzNTI1Li5iMGZiMzFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwKQEAg
LTQzLDYgKzQzLDggQEAgbW9kdWxlIHRocmVhZHMgewogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFW
QVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgICAgICBbQ3VzdG9tXSB2b2lkIHBv
c3RNZXNzYWdlKGluIGFueSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0
cykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2
b2lkIHdlYmtpdFBvc3RNZXNzYWdlKGluIGFueSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5
IHRyYW5zZmVyTGlzdCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2Vsc2UK
ICAgICAgICAgLy8gVGhlcmUncyBubyBnb29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkgdmlhIHRo
ZSBPYmpDIGJpbmRpbmdzLCBzbyBmb3Igbm93IGp1c3QgYWxsb3cgcGFzc2luZyBpbiBhIHNpbmds
ZSBwb3J0LgogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBp
biBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAKaW5kZXggMjQwMDJlNC4uZTU2Zjk0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJU
aHJlYWQuaCIKIApAQCAtNDQsOSArNDUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNz
UmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlQ29ubmVjdEV2ZW50KFBhc3NSZWZQdHI8TWVzc2Fn
ZVBvcnQ+IHBvcnQpCiB7Ci0gICAgUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJheSgxLCBwb3J0KSkpOwor
ICAgIFJlZlB0cjxUcmFuc2ZlcmFibGU+IHRyYW5zZmVyYWJsZShwb3J0KTsKKyAgICBSZWZQdHI8
TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBU
cmFuc2ZlcmFibGVBcnJheSgxLCB0cmFuc2ZlcmFibGUpKSk7CiAgICAgZXZlbnQtPmluaXRFdmVu
dChldmVudE5hbWVzKCkuY29ubmVjdEV2ZW50LCBmYWxzZSwgZmFsc2UpOwotICAgIHJldHVybiBl
dmVudDsKKyAgICByZXR1cm4gZXZlbnQucmVsZWFzZSgpOwogfQogCiBTaGFyZWRXb3JrZXJDb250
ZXh0OjpTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggMjM3YjYxMC4uOTE4Yzc4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtODYsMjYgKzg2LDI2IEBAIFdvcmtlcjo6fldvcmtl
cigpCiB9CiAKIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBi
aW5kaW5ncyAoYnVnICMyODc3NCkuCi12b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNl
cHRpb25Db2RlJiBlYykKK3ZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7Ci0gICAgaWYg
KHBvcnQpCi0gICAgICAgIHBvcnRzLmFwcGVuZChwb3J0KTsKLSAgICBwb3N0TWVzc2FnZShtZXNz
YWdlLCAmcG9ydHMsIGVjKTsKKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVzOwor
ICAgIGlmICh0cmFuc2ZlcmFibGUpCisgICAgICAgIHRyYW5zZmVyYWJsZXMuYXBwZW5kKHRyYW5z
ZmVyYWJsZSk7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnRyYW5zZmVyYWJsZXMsIGVjKTsK
IH0KIAogdm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBwb3N0TWVzc2FnZSht
ZXNzYWdlLCBzdGF0aWNfY2FzdDxNZXNzYWdlUG9ydEFycmF5Kj4oMCksIGVjKTsKKyAgICBwb3N0
TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxUcmFuc2ZlcmFibGUqPigwKSwgZWMpOwogfQog
Ci12b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyYWJsZXMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHBy
ZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRvIHRoZSByZW1vdGUgY29udGV4dC4KLSAgICBPd25Q
dHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2Vu
dGFuZ2xlUG9ydHMocG9ydHMsIGVjKTsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5PiByZWNlaXB0cyA9IFRyYW5zZmVyYWJsZTo6dHJhbnNmZXJBbGxPdXQodHJhbnNmZXJhYmxl
cywgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dFByb3h5
LT5wb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChtZXNzYWdlLCBjaGFubmVscy5yZWxlYXNlKCkp
OworICAgIG1fY29udGV4dFByb3h5LT5wb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChtZXNzYWdl
LCByZWNlaXB0cy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIFdvcmtlcjo6dGVybWluYXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDhlNGVjM2EuLjY2NjJiNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuaApAQCAtNTcsOSArNTcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgV29ya2VyKiB0b1dvcmtlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBF
eGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFRyYW5zZmVyYWJsZUFycmF5KiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRh
dGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIHBvc3RNZXNz
YWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9y
dCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlKiwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgICAgIHZvaWQgdGVybWluYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmlkbAppbmRleCA3NjM3NTY5Li4zOGU5NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aWRsCkBAIC00Miw2ICs0Miw4IEBAIG1vZHVsZSB0aHJlYWRzIHsKICNpZiBkZWZpbmVkKExBTkdV
QUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICAgICAgW0N1c3RvbV0g
dm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpc2VkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09w
dGlvbmFsXSBBcnJheSBtZXNzYWdlUG9ydHMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRQb3N0TWVzc2FnZShpbiBTZXJpYWxp
c2VkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSB0cmFuc2Zlckxpc3Qp
CisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIFRo
ZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5n
cywgc28gZm9yIG5vdyBqdXN0IGFsbG93IHBhc3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KICAgICAg
ICAgdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4g
W09wdGlvbmFsXSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCmluZGV4IDg3OThmNTEuLjQzNWE4ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaApAQCAtMzMsMTMgKzMzLDE1
IEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisgICAgdHlw
ZWRlZiBWZWN0b3I8T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXk7CiAgICAgY2xhc3MgV29ya2VyOwogCiAgICAgLy8gQSBwcm94eSB0byB0YWxr
IHRvIHRoZSB3b3JrZXIgY29udGV4dC4KQEAgLTUzLDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkgPSAw
OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2Vy
Q29udGV4dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5PikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggMGE2ZjhjYi4uMjRhYTNiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTQ4
LDE1ICs0OCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VXb3JrZXJD
b250ZXh0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s+IGNyZWF0
ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAgc3RhdGljIFBhc3NPd25QdHI8
TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBy
ZWNlaXB0cykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVdvcmtl
ckNvbnRleHRUYXNrKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrKG1lc3NhZ2UsIHJlY2VpcHRzKSk7CiAgICAg
fQogCiBwcml2YXRlOgotICAgIE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzayhQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4gY2hhbm5lbHMpCisgICAgTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJs
ZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiAgICAgICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UpCi0g
ICAgICAgICwgbV9jaGFubmVscyhjaGFubmVscykKKyAgICAgICAgLCBtX3JlY2VpcHRzKHJlY2Vp
cHRzKQogICAgIHsKICAgICB9CiAKQEAgLTY0LDI3ICs2NCwyNyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgQVNTRVJUKHNjcmlwdENvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKICAgICAg
ICAgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PERlZGljYXRl
ZFdvcmtlckNvbnRleHQqPihzY3JpcHRDb250ZXh0KTsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQ
b3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnNjcmlwdENvbnRl
eHQsIG1fY2hhbm5lbHMucmVsZWFzZSgpKTsKLSAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hFdmVu
dChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShwb3J0cy5yZWxlYXNlKCksIG1fbWVzc2FnZSkpOworICAg
ICAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2ZlcmFi
bGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKCpzY3JpcHRDb250ZXh0LCBtX3JlY2VpcHRzLnJlbGVh
c2UoKSk7CisgICAgICAgIGNvbnRleHQtPmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVh
dGUodHJhbnNmZXJhYmxlcy5yZWxlYXNlKCksIG1fbWVzc2FnZSkpOwogICAgICAgICBjb250ZXh0
LT50aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJP
YmplY3QoY29udGV4dC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIH0KIAogcHJpdmF0ZToK
ICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7Ci0gICAgT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBtX2NoYW5uZWxzOworICAgIE93blB0cjxUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXk+IG1fcmVjZWlwdHM7CiB9OwogCiBjbGFzcyBNZXNzYWdlV29ya2Vy
VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlV29ya2VyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5PiBjaGFubmVscywgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5
KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJUYXNrPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cywgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2lu
Z1Byb3h5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2Vy
VGFzayhtZXNzYWdlLCBjaGFubmVscywgbWVzc2FnaW5nUHJveHkpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2VyVGFzayhtZXNzYWdlLCByZWNlaXB0cywgbWVzc2Fn
aW5nUHJveHkpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTWVzc2FnZVdvcmtlclRhc2soUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2Fn
aW5nUHJveHkpCisgICAgTWVzc2FnZVdvcmtlclRhc2soUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBy
ZWNlaXB0cywgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQogICAgICAgICA6
IG1fbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAsIG1fY2hhbm5lbHMoY2hhbm5lbHMpCisgICAg
ICAgICwgbV9yZWNlaXB0cyhyZWNlaXB0cykKICAgICAgICAgLCBtX21lc3NhZ2luZ1Byb3h5KG1l
c3NhZ2luZ1Byb3h5KQogICAgIHsKICAgICB9CkBAIC05NSwxMyArOTUsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgaWYgKCF3b3JrZXJPYmplY3QgfHwgbV9tZXNzYWdpbmdQcm94eS0+YXNrZWRUb1Rl
cm1pbmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIE93blB0cjxNZXNzYWdl
UG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpzY3JpcHRDb250
ZXh0LCBtX2NoYW5uZWxzLnJlbGVhc2UoKSk7Ci0gICAgICAgIHdvcmtlck9iamVjdC0+ZGlzcGF0
Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShwb3J0cy5yZWxlYXNlKCksIG1fbWVzc2FnZSkp
OworICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFu
c2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKCpzY3JpcHRDb250ZXh0LCBtX3JlY2VpcHRz
LnJlbGVhc2UoKSk7CisgICAgICAgIHdvcmtlck9iamVjdC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdl
RXZlbnQ6OmNyZWF0ZSh0cmFuc2ZlcmFibGVzLnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7CiAgICAg
fQogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVzc2Fn
ZTsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CisgICAg
T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gbV9yZWNlaXB0czsKICAgICBXb3JrZXJN
ZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKIH07CiAKQEAgLTI0MiwyMSArMjQyLDIx
IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29ya2VyQ29udGV4dChjb25zdCBL
VVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluCiAgICAgdGhyZWFkLT5zdGFydCgpOwogfQogCi12
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykK
IHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKE1lc3NhZ2VXb3JrZXJU
YXNrOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5lbHMsIHRoaXMpKTsKKyAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnBvc3RUYXNrKE1lc3NhZ2VXb3JrZXJUYXNrOjpjcmVhdGUobWVzc2FnZSwg
cmVjZWlwdHMsIHRoaXMpKTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1l
c3NhZ2VUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQordm9p
ZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRl
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93b3JrZXJUaHJlYWQpIHsKICAgICAgICAg
KyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwotICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2Us
IGNoYW5uZWxzKSk7CisgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2so
TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSwgcmVjZWlwdHMpKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChNZXNzYWdlV29ya2Vy
Q29udGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscykpOworICAgICAgICBtX3F1ZXVl
ZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3Nh
Z2UsIHJlY2VpcHRzKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyQ29udGV4dChQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCAzNzMxNDgwLi5jNzRhYjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC01NSwxMyAr
NTUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2Ug
bWV0aG9kcyBpbiB0aGUgd29ya2VyIG9iamVjdCB0aHJlYWQuKQogICAgICAgICB2aXJ0dWFsIHZv
aWQgc3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0
TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KTsKICAgICAgICAg
dmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFs
IHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiAKICAgICAgICAgLy8gSW1wbGVtZW50YXRp
b25zIG9mIFdvcmtlck9iamVjdFByb3h5LgogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0
aG9kcyBpbiB0aGUgd29ya2VyIGNvbnRleHQgdGhyZWFkLikKLSAgICAgICAgdmlydHVhbCB2b2lk
IHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1l
c3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
YmplY3RQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5o
CmluZGV4IDMzZTBiYzMuLjAxYTFmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT2JqZWN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9iamVjdFByb3h5LmgKQEAgLTMzLDE4ICszMywyMCBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMp
CiAKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXb3JrZXJS
ZXBvcnRpbmdQcm94eS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgTWVzc2Fn
ZVBvcnRDaGFubmVsOworICAgIGNsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisgICAgdHlwZWRl
ZiBWZWN0b3I8T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNl
aXB0QXJyYXk7CiAKICAgICAvLyBBIHByb3h5IHRvIHRhbGsgdG8gdGhlIHdvcmtlciBvYmplY3Qu
CiAgICAgY2xhc3MgV29ya2VyT2JqZWN0UHJveHkgOiBwdWJsaWMgV29ya2VyUmVwb3J0aW5nUHJv
eHkgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBh
c3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PikgPSAwOwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA5MjcyODM5Li4wMjFiYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDU1IEBACisyMDExLTA4LTEwICBMdWtlIFphcmtvICA8bHVrZXphcmtvQGdtYWlsLmNvbT4KKwor
ICAgICAgICBNYWtlIE1lc3NhZ2VQb3J0IFRyYW5zZmVyYWJsZS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIFJlcGFyZW50IFdlYk1lc3NhZ2VQb3J0
Q2hhbm5lbCB0byBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0CisgICAgICAgIC0gRXh0cmFjdCBjb252
ZXJzaW9uIGZyb20gV2ViTWVzc2FnZVBvcnRDaGFubmVsIHRvL2Zyb20gTWVzc2FnZVBvcnRDaGFu
bmVsIGFzCisgICAgICAgICAgdGhlIFRyYW5zZmVyYWJsZS1nZW5lcmljIGZyb21XZWIvdG9XZWIK
KyAgICAgICAgLSBFeHBvc2UgZmxhdHRlblJlY2VpcHRMaXN0IGZyb20gU2VyaWFsaXplZFNjcmlw
dFZhbHVlIGFuZCB1c2UgdGhpcyB3aGVuIGEKKyAgICAgICAgICBtZXNzYWdlIG5lZWRzIHRvIGJl
IHNlbnQgYWNyb3NzIGFuIElQQyBjaGFubmVsLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAg
ICAgICAgKiBwdWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFubmVsLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbDo6YXNXZWJNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWw6OmlzRmxhdHRlbmFibGUpOgorICAgICAg
ICAqIHB1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaC4KKyAgICAgICAgKFdlYktpdDo6
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6YXNXZWJNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVSZWNlaXB0OjpXZWJUcmFuc2ZlcmFibGVSZWNlaXB0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6fldlYlRyYW5zZmVy
YWJsZVJlY2VpcHQpOgorICAgICAgICAqIHB1YmxpYy9XZWJXb3JrZXIuaDoKKyAgICAgICAgKiBw
dWJsaWMvV2ViV29ya2VyQ2xpZW50Lmg6CisgICAgICAgICogc3JjL1BsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90ZSk6CisgICAgICAgICogc3Jj
L1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJlY2VpcHRMaXN0KToKKyAgICAgICAgKiBzcmMvV2Vi
U2hhcmVkV29ya2VySW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYlRyYW5zZmVyYWJsZVJlY2Vp
cHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6
ZnJvbVdlYik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmZyb21X
ZWJBbGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0b1dlYik6
CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRvV2ViQWxsKToKKyAg
ICAgICAgKiBzcmMvV2ViV29ya2VyQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckJhc2U6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJX
b3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRhc2spOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJCYXNl
Lmg6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJP
YmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2Fn
ZVRvV29ya2VyQ29udGV4dFRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJ
bXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzayk6CisgICAgICAgIChXZWJLaXQ6Oldl
YldvcmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdFRhc2spOgorICAg
ICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYldvcmtl
ckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJJbXBsOjpwb3N0TWVzc2FnZVRv
V29ya2VyQ29udGV4dFRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJJbXBsOjpwb3N0
TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckltcGwuaDoK
KwogMjAxMS0wOC0xMCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQuIFJvbGxlZCBERVBTIDk1ODEzOjk2MDA5IHRvIHBpY2sgZGF0YSB1
cmwgdGltaW5nIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiOTdhNjdjLi4w
ZWZhNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yODAsNiArMjgwLDcgQEAK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRJbnB1dFR5cGUuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
VGhyZWFkU2FmZURhdGEuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUcmFuc2ZlcmFi
bGVSZWNlaXB0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVVJMRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJVUkxMb2FkZXIuaCcsCkBAIC01NjUsNiArNTY2LDcgQEAKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlN0cmluZy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dFJ1bi5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViVGhyZWFkU2FmZURhdGEuY3BwJywKKyAgICAgICAg
ICAgICAgICAnc3JjL1dlYlRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlVSTC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMTG9hZFRpbWlu
Zy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVxdWVzdC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFubmVs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwu
aAppbmRleCAyODhiZDU1Li43ZDZjOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwuaApAQCAtMzIsNiArMzIsNyBAQAog
I2RlZmluZSBXZWJNZXNzYWdlUG9ydENoYW5uZWxfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgi
CisjaW5jbHVkZSAiV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgogI2luY2x1ZGUgIldlYlZlY3Rv
ci5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM5LDE5ICs0MCwxOSBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVudDsKIGNsYXNzIFdlYlN0
cmluZzsKIAotdHlwZWRlZiBXZWJWZWN0b3I8Y2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsKj4g
V2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXk7Ci0KIC8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSB0
byBhIE1lc3NhZ2UgUG9ydCBDaGFubmVsIGltcGxlbWVudGF0aW9uLiAgVGhlIG9iamVjdCBvd25z
IGl0c2VsZiBhbmQKIC8vIGlzIHNpZ25hbGxlZCB0aGF0IGl0cyBub3QgbmVlZGVkIGFueW1vcmUg
d2l0aCB0aGUgZGVzdHJveSgpIGNhbGwuCi1jbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWwgewor
Y2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsIDogcHVibGljIFdlYlRyYW5zZmVyYWJsZVJlY2Vp
cHQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2ViTWVzc2FnZVBvcnRD
aGFubmVsQ2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgPSAwOwogICAg
IC8vIFdlYktpdCB2ZXJzaW9ucyBvZiBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWwuCiAgICAg
dmlydHVhbCB2b2lkIGVudGFuZ2xlKFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCopID0gMDsKICAgICAv
LyBDYWxsZWUgcmVjZWl2ZXMgb3duZXJzaGlwIG9mIHRoZSBwYXNzZWQgdmVjdG9yLgotICAgIHZp
cnR1YWwgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBXZWJTdHJpbmcmLCBXZWJNZXNzYWdlUG9ydENo
YW5uZWxBcnJheSopID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgdHJ5R2V0TWVzc2FnZShXZWJTdHJp
bmcqLCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cG9zdE1lc3NhZ2UoY29uc3QgV2ViU3RyaW5nJiwgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
KikgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0cnlHZXRNZXNzYWdlKFdlYlN0cmluZyosIFdlYlRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheSYpID0gMDsKKyAgICB2aXJ0dWFsIFdlYk1lc3NhZ2VQb3J0
Q2hhbm5lbCogYXNXZWJNZXNzYWdlUG9ydENoYW5uZWwoKSB7IHJldHVybiB0aGlzOyB9CisgICAg
dmlydHVhbCBib29sIGlzRmxhdHRlbmFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgfldlYk1lc3NhZ2VQb3J0Q2hhbm5lbCgpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aAppbmRleCBmMDViMjdkLi4xZjM0NmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzMsMTEgKzMz
LDE2IEBACiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJQcml2YXRlUHRy
LmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOyB9CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7Cit9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViU3Ry
aW5nOworY2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDsKK3R5cGVkZWYgV2ViVmVjdG9yPGNs
YXNzIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqPiBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7
CiAKIGNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB7CiBwdWJsaWM6CkBAIC02NCw2ICs2
OSwxMyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBv
ZiB0aGUgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLgogICAgIFdFQktJVF9FWFBPUlQgV2ViU3Ry
aW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKKyAgICAvLyBGbGF0dGVucyBmbGF0dGVuYWJsZSBXZWJU
cmFuc2ZlcmFibGVSZWNlaXB0cyB0byB0aGUgZ2l2ZW4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9m
IGEKKyAgICAvLyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUsIHJldHVybmluZyBhIG5ldyByZXBy
ZXNlbnRhdGlvbi4gU2V0cyB1bmZsYXR0ZW5hYmxlQ291bnRPdXQKKyAgICAvLyB0byB0aGUgbnVt
YmVyIG9mIHVuZmxhdHRlbmFibGUgcmVjZWlwdHMgaW4gdGhlIHBhc3NlZC1pbiBhcnJheS4KKyAg
ICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTdHJpbmcgZmxhdHRlblJlY2VpcHRMaXN0KGNvbnN0
IFdlYlN0cmluZyYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiB1bmZs
YXR0ZW5hYmxlQ291bnRPdXQpOworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU+Jik7CiAgICAgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBvcGVy
YXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRyYW5z
ZmVyYWJsZVJlY2VpcHQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRyYW5z
ZmVyYWJsZVJlY2VpcHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWY1
YjM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
VHJhbnNmZXJhYmxlUmVjZWlwdC5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRyYW5zZmVy
YWJsZVJlY2VpcHRfaAorI2RlZmluZSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0X2gKKworI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKKyNlbmRpZgorfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsOworY2xhc3MgV2ViU3RyaW5nOworCit0eXBl
ZGVmIFdlYlZlY3RvcjxjbGFzcyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Kj4gV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5OworCitjbGFzcyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCogYXNXZWJNZXNzYWdlUG9ydENo
YW5uZWwoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIGlzRmxhdHRlbmFibGUoKSBj
b25zdCA9IDA7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICAvLyBUaGVzZSBmdW5j
dGlvbnMgY29udmVydCBiZXR3ZWVuIFRyYW5zZmVyYWJsZVJlY2VpcHRzIGFuZCB0aGVpciBXZWJU
cmFuc2ZlcmFibGVSZWNlaXB0CisgICAgLy8gY291bnRlcnBhcnRzLiBOb3RlIHRoYXQgdGhlc2Ug
Y29udmVyc2lvbnMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLiBUaGUgKkFsbCBtZXRob2RzCisgICAg
Ly8gbWFwIHRoZSBjb252ZXJzaW9uIG1ldGhvZHMgYWNyb3NzIHRoZSBwYXNzZWQtaW4gQXJyYXlz
IChjaGVja2luZyBmb3IgbnVsbCBvciBlbXB0eSBBcnJheXMKKyAgICAvLyBpbiB0aGUgcHJvY2Vz
cykuCisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdD4g
ZnJvbVdlYihXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Kik7CisgICAgc3RhdGljIFdlYlRyYW5zZmVy
YWJsZVJlY2VpcHQqIHRvV2ViKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQqKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IGZyb21X
ZWJBbGwoY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Kik7CisgICAgc3RhdGljIFdl
YlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSogdG9XZWJBbGwoY29uc3QgV2ViQ29yZTo6VHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5Kik7CisjZW5kaWYKKworcHJvdGVjdGVkOgorICAgIFdlYlRyYW5z
ZmVyYWJsZVJlY2VpcHQoKSB7IH0KKyAgICAvLyBOb3RlOiBwdXJwb3NlZnVsbHkgbm90IGEgdmly
dHVhbCBkZXN0cnVjdG9yLgorICAgIH5XZWJUcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYldvcmtlci5oCmluZGV4IDY2NGU1YWUuLjIyNjBiNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlci5oCkBAIC0zNiw5ICszNiwxMiBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHQ7CiBjbGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJXb3JrZXJDbGllbnQ7CiAKK3R5cGVkZWYg
V2ViVmVjdG9yPGNsYXNzIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqPiBXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXk7CisKIC8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSB0byB0aGUgc2NyaXB0IGV4
ZWN1dGlvbiBjb250ZXh0IGZvciBhIHdvcmtlci4KIGNsYXNzIFdlYldvcmtlciB7CiBwdWJsaWM6
CkBAIC01Miw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29y
a2VyQ29udGV4dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNv
bnRleHQoCiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYsCi0gICAgICAgIGNvbnN0IFdlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOworICAgICAgICBjb25zdCBXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXkmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3ll
ZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpZW50RGVzdHJveWVkKCkgPSAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlckNsaWVudC5oCmluZGV4IGVi
MmU2M2UuLmE0ODNjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldvcmtlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YldvcmtlckNsaWVudC5oCkBAIC0zOCw4ICszOCwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOwogY2xhc3MgV2ViU3RyaW5nOworY2xhc3Mg
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDsKIGNsYXNzIFdlYldvcmtlcjsKIAordHlwZWRlZiBXZWJW
ZWN0b3I8Y2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCo+IFdlYlRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheTsKKwogLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJhY2sgdG8gdGhlIGluLXBhZ2Ug
c2NyaXB0IG9iamVjdCBmb3IgYSB3b3JrZXIuCiAvLyBBbGwgZnVuY3Rpb25zIGFyZSBleHBlY3Rl
ZCB0byBiZSBjYWxsZWQgYmFjayBvbiB0aGUgdGhyZWFkIHRoYXQgY3JlYXRlZAogLy8gdGhlIFdv
cmtlciBvYmplY3QsIHVubGVzcyBub3RlZC4KQEAgLTQ3LDcgKzUwLDcgQEAgY2xhc3MgV2ViV29y
a2VyQ2xpZW50IDogcHVibGljIFdlYkNvbW1vbldvcmtlckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCiAgICAgICAgIGNvbnN0IFdl
YlN0cmluZyYsCi0gICAgICAgIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAw
OworICAgICAgICBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0
eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCmluZGV4IDZl
NGRlNDQuLjFmNWJhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Bs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKQEAgLTE4MCwxNyArMTgwLDkgQEAg
dm9pZCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90ZShQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm4KICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViU3RyaW5n
IG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLT5tZXNzYWdlKCktPnRvV2lyZVN0cmluZygpOwotICAg
IE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMgPSBtZXNz
YWdlLT5jaGFubmVscygpOwotICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiB3ZWJDaGFu
bmVscyA9IDA7Ci0gICAgaWYgKGNoYW5uZWxzLmdldCgpICYmIGNoYW5uZWxzLT5zaXplKCkpIHsK
LSAgICAgICAgd2ViQ2hhbm5lbHMgPSBuZXcgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkoY2hh
bm5lbHMtPnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hhbm5lbHMt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbCogcGxhdGZvcm1DaGFubmVsID0gKCpjaGFubmVscylbaV0tPmNoYW5uZWwoKTsKLSAg
ICAgICAgICAgICgqd2ViQ2hhbm5lbHMpW2ldID0gcGxhdGZvcm1DaGFubmVsLT53ZWJDaGFubmVs
UmVsZWFzZSgpOwotICAgICAgICAgICAgKCp3ZWJDaGFubmVscylbaV0tPnNldENsaWVudCgwKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBtX3dlYkNoYW5uZWwtPnBvc3RNZXNzYWdlKG1lc3NhZ2VT
dHJpbmcsIHdlYkNoYW5uZWxzKTsKKyAgICBPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVj
ZWlwdEFycmF5PiByZWNlaXB0cyA9IG1lc3NhZ2UtPnJlY2VpcHRzKCk7CisgICAgV2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5KiB3ZWJSZWNlaXB0cyA9IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6
OnRvV2ViQWxsKHJlY2VpcHRzLmdldCgpKTsKKyAgICBtX3dlYkNoYW5uZWwtPnBvc3RNZXNzYWdl
KG1lc3NhZ2VTdHJpbmcsIHdlYlJlY2VpcHRzKTsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbDo6RXZlbnREYXRhPiYgcmVzdWx0KQpAQCAtMTk5LDIwICsxOTEsMTIgQEAgYm9vbCBQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgV2ViU3RyaW5nIG1l
c3NhZ2U7Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkgd2ViQ2hhbm5lbHM7Ci0gICAg
Ym9vbCBydiA9IG1fd2ViQ2hhbm5lbC0+dHJ5R2V0TWVzc2FnZSgmbWVzc2FnZSwgd2ViQ2hhbm5l
bHMpOworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3ZWJSZWNlaXB0czsKKyAgICBi
b29sIHJ2ID0gbV93ZWJDaGFubmVsLT50cnlHZXRNZXNzYWdlKCZtZXNzYWdlLCB3ZWJSZWNlaXB0
cyk7CiAgICAgaWYgKHJ2KSB7Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4gY2hhbm5lbHM7Ci0gICAgICAgIGlmICh3ZWJDaGFubmVscy5zaXplKCkpIHsKLSAgICAgICAg
ICAgIGNoYW5uZWxzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KHdlYkNo
YW5uZWxzLnNpemUoKSkpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJD
aGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbD4gcGxhdGZvcm1DaGFubmVsID0gY3JlYXRlKHdlYkNoYW5uZWxzW2ld
KTsKLSAgICAgICAgICAgICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50KHBsYXRmb3JtQ2hh
bm5lbC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgKCpjaGFubmVscylbaV0gPSBNZXNzYWdlUG9y
dENoYW5uZWw6OmNyZWF0ZShwbGF0Zm9ybUNoYW5uZWwpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0g
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYkFsbCgmd2ViUmVjZWlwdHMpOwogICAgICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkTWVzc2FnZSA9IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUobWVzc2FnZSk7Ci0gICAgICAgIHJlc3Vs
dCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUoc2VyaWFsaXplZE1lc3Nh
Z2UucmVsZWFzZSgpLCBjaGFubmVscy5yZWxlYXNlKCkpOworICAgICAgICByZXN1bHQgPSBNZXNz
YWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKHNlcmlhbGl6ZWRNZXNzYWdlLnJlbGVh
c2UoKSwgcmVjZWlwdHMucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gcnY7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAppbmRleCA3MTQ5YTRkLi4xMWQxOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTMyLDcg
KzMyLDkgQEAKICNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZVJlY2Vp
cHQuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03OSw0ICs4MSwyNyBA
QCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om9wZXJhdG9yIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKIH0KIAor
V2ViU3RyaW5nIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJlY2VpcHRMaXN0KGNv
bnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkm
IHJlY2VpcHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCogdW5mbGF0dGVuYWJsZUNvdW50KQoreworICAgIHNpemVfdCB1bmZs
YXR0ZW5hYmxlc0ZvdW5kID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY2VpcHRz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICghcmVjZWlwdHNbaV0tPmlzRmxhdHRlbmFibGUo
KSkKKyAgICAgICAgICAgICsrdW5mbGF0dGVuYWJsZXNGb3VuZDsKKyAgICB9CisgICAgaWYgKHVu
ZmxhdHRlbmFibGVDb3VudCkKKyAgICAgICAgKnVuZmxhdHRlbmFibGVDb3VudCA9IHVuZmxhdHRl
bmFibGVzRm91bmQ7CisgICAgaWYgKHVuZmxhdHRlbmFibGVzRm91bmQgPT0gcmVjZWlwdHMuc2l6
ZSgpKQorICAgICAgICByZXR1cm4gbWVzc2FnZTsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVj
ZWlwdEFycmF5PiBjb3JlUmVjZWlwdHMgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlUmVjZWlw
dEFycmF5KHJlY2VpcHRzLnNpemUoKSkpOworICAgIC8vIGZyb21XZWIoKSBtYXkgaGF2ZSB1bndh
bnRlZCBzaWRlLWVmZmVjdHMsIHNvIG9ubHkgY29udmVydCBmbGF0dGVuYWJsZSByZWNlaXB0cy4K
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY2VpcHRzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICgqY29yZVJlY2VpcHRzKVtpXSA9IHJlY2VpcHRzW2ldLT5pc0ZsYXR0ZW5hYmxlKCkKKyAg
ICAgICAgICAgID8gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYihyZWNlaXB0c1tpXSkK
KyAgICAgICAgICAgIDogbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJlY2VpcHRMaXN0KG1lc3NhZ2UsICpjb3JlUmVjZWlw
dHMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAKaW5kZXggNGEzMmZiMy4uNWFlMmVm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2Vy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2Vy
SW1wbC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIK
ICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAi
TWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWwuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRy
YW5zZmVyYWJsZVJlY2VpcHQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVHJh
bnNmZXJhYmxlUmVjZWlwdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Mjc4Njk3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgorCisjaW5jbHVkZSAiUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNlaXB0
LmgiCisjaW5jbHVkZSAiV2ViTWVzc2FnZVBvcnRDaGFubmVsLmgiCisjaW5jbHVkZSAiV2ViU3Ry
aW5nLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0
Ojpmcm9tV2ViKFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqIHJlY2VpcHQpCit7CisgICAgaWYgKFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbCogd2ViTWVzc2FnZVBvcnRDaGFubmVsID0gcmVjZWlwdC0+YXNX
ZWJNZXNzYWdlUG9ydENoYW5uZWwoKSkgeworICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWw+IHBsYXRmb3JtQ2hhbm5lbCA9IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
OjpjcmVhdGUod2ViTWVzc2FnZVBvcnRDaGFubmVsKTsKKyAgICAgICAgd2ViTWVzc2FnZVBvcnRD
aGFubmVsLT5zZXRDbGllbnQocGxhdGZvcm1DaGFubmVsLmdldCgpKTsKKyAgICAgICAgcmV0dXJu
IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3JtQ2hhbm5lbCk7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitQYXNzT3du
UHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gV2ViVHJhbnNmZXJhYmxlUmVj
ZWlwdDo6ZnJvbVdlYkFsbChjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqIHJlY2Vp
cHRzKQoreworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IGltcG9ydGVkUmVj
ZWlwdHM7CisgICAgaWYgKHJlY2VpcHRzICYmIHJlY2VpcHRzLT5zaXplKCkpIHsKKyAgICAgICAg
aW1wb3J0ZWRSZWNlaXB0cyA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXko
cmVjZWlwdHMtPnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY2Vp
cHRzLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICgqaW1wb3J0ZWRSZWNlaXB0cylbaV0gPSBm
cm9tV2ViKCgqcmVjZWlwdHMpW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIGltcG9ydGVkUmVjZWlw
dHMucmVsZWFzZSgpOworfQorCitXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KiBXZWJUcmFuc2ZlcmFi
bGVSZWNlaXB0Ojp0b1dlYihUcmFuc2ZlcmFibGVSZWNlaXB0KiByZWNlaXB0KQoreworICAgIGlm
IChNZXNzYWdlUG9ydENoYW5uZWwqIG1lc3NhZ2VQb3J0Q2hhbm5lbCA9IHJlY2VpcHQtPmFzTWVz
c2FnZVBvcnRDaGFubmVsKCkpIHsKKyAgICAgICAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwq
IHBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsID0gbWVzc2FnZVBvcnRDaGFubmVsLT5jaGFubmVs
KCk7CisgICAgICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCogd2ViTWVzc2FnZVBvcnRDaGFubmVs
ID0gcGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwtPndlYkNoYW5uZWxSZWxlYXNlKCk7CisgICAg
ICAgIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbC0+c2V0Q2xpZW50KDApOworICAgICAgICByZXR1cm4g
d2ViTWVzc2FnZVBvcnRDaGFubmVsOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KiBXZWJUcmFu
c2ZlcmFibGVSZWNlaXB0Ojp0b1dlYkFsbChjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNl
aXB0QXJyYXkqIHJlY2VpcHRzKQoreworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSog
ZXhwb3J0ZWRSZWNlaXB0cyA9IDA7CisgICAgaWYgKHJlY2VpcHRzICYmIHJlY2VpcHRzLT5zaXpl
KCkpIHsKKyAgICAgICAgZXhwb3J0ZWRSZWNlaXB0cyA9IG5ldyBXZWJUcmFuc2ZlcmFibGVSZWNl
aXB0QXJyYXkocmVjZWlwdHMtPnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVjZWlwdHMtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgKCpleHBvcnRlZFJlY2VpcHRz
KVtpXSA9IHRvV2ViKCgqcmVjZWlwdHMpW2ldLmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGV4
cG9ydGVkUmVjZWlwdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAppbmRleCBkNjE4NjcyLi4xZGI2NmZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcApAQCAt
MzUyLDI3ICszNTIsMjUgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpvcGVuRmlsZVN5c3RlbUZvcldv
cmtlcihXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZwogLy8gV29ya2VyT2JqZWN0
UHJveHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0
cykKIHsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZw
b3N0TWVzc2FnZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLT50b1dpcmVTdHJp
bmcoKSwgY2hhbm5lbHMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2UtPnRvV2lyZVN0cmluZygpLCByZWNlaXB0cykpOwogfQogCiB2b2lk
IFdlYldvcmtlckJhc2U6OnBvc3RNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQmFz
ZSogdGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBt
ZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlw
dHMpCiB7CiAgICAgaWYgKCF0aGlzUHRyLT5jbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkgd2ViQ2hhbm5lbHMoY2hhbm5lbHMuZ2V0KCkg
PyBjaGFubmVscy0+c2l6ZSgpIDogMCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJD
aGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICB3ZWJDaGFubmVsc1tpXSA9ICgqY2hhbm5l
bHMpW2ldLT5jaGFubmVsKCktPndlYkNoYW5uZWxSZWxlYXNlKCk7Ci0gICAgICAgIHdlYkNoYW5u
ZWxzW2ldLT5zZXRDbGllbnQoMCk7Ci0gICAgfQorICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheSB3ZWJSZWNlaXB0cyhyZWNlaXB0cy5nZXQoKSA/IHJlY2VpcHRzLT5zaXplKCkgOiAwKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlJlY2VpcHRzLnNpemUoKTsgKytpKQorICAg
ICAgICB3ZWJSZWNlaXB0c1tpXSA9IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRvV2ViKCgqcmVj
ZWlwdHMpW2ldLmdldCgpKTsKIAotICAgIHRoaXNQdHItPmNsaWVudCgpLT5wb3N0TWVzc2FnZVRv
V29ya2VyT2JqZWN0KG1lc3NhZ2UsIHdlYkNoYW5uZWxzKTsKKyAgICB0aGlzUHRyLT5jbGllbnQo
KS0+cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlLCB3ZWJSZWNlaXB0cyk7CiB9CiAK
IHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyQmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
QmFzZS5oCmluZGV4IDllZmNlMTUuLjdhMDVhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJCYXNlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoV09SS0VS
UykKIAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1
ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIK
QEAgLTY4LDcgKzY5LDcgQEAgcHVibGljOgogICAgIC8vIFdlYkNvcmU6Oldvcmtlck9iamVjdFBy
b3h5IG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3Qo
CiAgICAgICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwKLSAg
ICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAg
ICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAg
IHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoCiAgICAgICAgIGNvbnN0
IFdURjo6U3RyaW5nJiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCgKQEAgLTEyMyw3ICsxMjQsNyBAQCBw
cml2YXRlOgogICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LAogICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAogICAgICAgICBXVEY6OlN0cmluZyBt
ZXNzYWdlLAotICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBjaGFubmVscyk7CisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxl
UmVjZWlwdEFycmF5Pik7CiAgICAgc3RhdGljIHZvaWQgcG9zdEV4Y2VwdGlvblRhc2soCiAgICAg
ICAgIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgIFdl
YldvcmtlckJhc2UqIHRoaXNQdHIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYldvcmtlckNsaWVudEltcGwuY3BwCmluZGV4IGMxOThjY2YuLjJjNmJkZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCkBA
IC02NSw2ICs2NSwxMSBAQAogI2luY2x1ZGUgIldlYldvcmtlci5oIgogI2luY2x1ZGUgIldlYldv
cmtlckltcGwuaCIKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVHJhbnNmZXJhYmxlOwor
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5
OworfQorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC0xNzUsNyArMTgwLDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp0ZXJtaW5hdGVXb3Jr
ZXJDb250ZXh0KCkKIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29y
a2VyQ29udGV4dCgKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwKLSAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAg
ICBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAgICAg
Ly8gV29ya2VyLnRlcm1pbmF0ZSgpIGNvdWxkIGJlIGNhbGxlZCBmcm9tIEpTIGJlZm9yZSB0aGUg
Y29udGV4dCBpcyBzdGFydGVkLgogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCkBAIC0xODUs
MTcgKzE5MCwxMyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJDb250ZXh0KAogICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJl
YWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2ssCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
LT50b1dpcmVTdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVscykpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2Vp
cHRzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVs
QXJyYXkgd2ViQ2hhbm5lbHMoY2hhbm5lbHMuZ2V0KCkgPyBjaGFubmVscy0+c2l6ZSgpIDogMCk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7ICsraSkgewot
ICAgICAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWwqIHdlYmNoYW5uZWwgPQotICAgICAgICAgICAg
ICAgICAgICAgICAgKCpjaGFubmVscylbaV0tPmNoYW5uZWwoKS0+d2ViQ2hhbm5lbFJlbGVhc2Uo
KTsKLSAgICAgICAgd2ViY2hhbm5lbC0+c2V0Q2xpZW50KDApOwotICAgICAgICB3ZWJDaGFubmVs
c1tpXSA9IHdlYmNoYW5uZWw7Ci0gICAgfQotICAgIG1fd2ViV29ya2VyLT5wb3N0TWVzc2FnZVRv
V29ya2VyQ29udGV4dChtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwgd2ViQ2hhbm5lbHMpOworICAg
IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3ZWJSZWNlaXB0cyhyZWNlaXB0cy5nZXQoKSA/
IHJlY2VpcHRzLT5zaXplKCkgOiAwKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlJl
Y2VpcHRzLnNpemUoKTsgKytpKQorICAgICAgICB3ZWJSZWNlaXB0c1tpXSA9IFdlYlRyYW5zZmVy
YWJsZVJlY2VpcHQ6OnRvV2ViKCgqcmVjZWlwdHMpW2ldLmdldCgpKTsKKyAgICBtX3dlYldvcmtl
ci0+cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQobWVzc2FnZS0+dG9XaXJlU3RyaW5nKCksIHdl
YlJlY2VpcHRzKTsKIH0KIAogYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdApAQCAtMjM2LDI5ICsyMzcsMjAgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJ
bXBsOjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIH0KIAog
dm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0
IFdlYlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYgY2hhbm5l
bHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JiB3ZWJSZWNlaXB0cykKIHsKLSAgICBP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzMjsKLSAgICBpZiAoY2hhbm5l
bHMuc2l6ZSgpKSB7Ci0gICAgICAgIGNoYW5uZWxzMiA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9y
dENoYW5uZWxBcnJheShjaGFubmVscy5zaXplKCkpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjaGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUmVmUHRyPFBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsPiBwbGF0Zm9ybV9jaGFubmVsID0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5uZWxz
W2ldKTsKLSAgICAgICAgICAgIGNoYW5uZWxzW2ldLT5zZXRDbGllbnQocGxhdGZvcm1fY2hhbm5l
bC5nZXQoKSk7Ci0gICAgICAgICAgICAoKmNoYW5uZWxzMilbaV0gPSBNZXNzYWdlUG9ydENoYW5u
ZWw6OmNyZWF0ZShwbGF0Zm9ybV9jaGFubmVsKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBPd25Q
dHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHQ6OmZyb21XZWJBbGwoJndlYlJlY2VpcHRzKTsKIAogICAgIGlmIChjdXJyZW50VGhyZWFk
KCkgIT0gbV93b3JrZXJUaHJlYWRJZCkgewogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVj
dFRhc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyht
ZXNzYWdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbm5lbHMyLnJlbGVhc2UoKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0cy5yZWxl
YXNlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3RUYXNrKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgdGhpcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBjaGFubmVsczIucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCByZWNlaXB0cy5y
ZWxlYXNlKCkpOwogfQogCiB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmIGVycm9yTWVzc2FnZSwKQEAgLTM2OSwxNiAr
MzYxLDE0IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6dGVybWluYXRlV29ya2VyQ29udGV4
dFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29uCiB2b2lkIFdlYldvcmtlckNsaWVudElt
cGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogdGhpc1B0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewotICAgIFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5IHdlYkNoYW5uZWxzKGNoYW5uZWxzLmdldCgpID8gY2hh
bm5lbHMtPnNpemUoKSA6IDApOworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3ZWJS
ZWNlaXB0cyhyZWNlaXB0cy5nZXQoKSA/IHJlY2VpcHRzLT5zaXplKCkgOiAwKTsKIAotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
d2ViQ2hhbm5lbHNbaV0gPSAoKmNoYW5uZWxzKVtpXS0+Y2hhbm5lbCgpLT53ZWJDaGFubmVsUmVs
ZWFzZSgpOwotICAgICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50KDApOwotICAgIH0KKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlJlY2VpcHRzLnNpemUoKTsgKytpKQorICAgICAg
ICB3ZWJSZWNlaXB0c1tpXSA9IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRvV2ViKCgqcmVjZWlw
dHMpW2ldLmdldCgpKTsKIAotICAgIHRoaXNQdHItPm1fd2ViV29ya2VyLT5wb3N0TWVzc2FnZVRv
V29ya2VyQ29udGV4dChtZXNzYWdlLCB3ZWJDaGFubmVscyk7CisgICAgdGhpc1B0ci0+bV93ZWJX
b3JrZXItPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UsIHdlYlJlY2VpcHRzKTsK
IH0KIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95ZWRUYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCkBAIC0zODksMjUgKzM3OSwyMiBAQCB2
b2lkIFdlYldvcmtlckNsaWVudEltcGw6Ondvcmtlck9iamVjdERlc3Ryb3llZFRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgIGRlbGV0ZSB0aGlzUHRyOwogfQogCi12b2lkIFdl
YldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAordm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0
TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAKICAgICBpZiAodGhpc1B0ci0+
bV93b3JrZXIpIHsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0KLSAg
ICAgICAgICAgIE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpjb250ZXh0LCBjaGFubmVscyk7
CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRyYW5z
ZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oKmNvbnRleHQsIHJlY2VpcHRzKTsKICAgICAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZE1lc3NhZ2UgPQogICAg
ICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShtZXNzYWdlKTsK
LSAgICAgICAgdGhpc1B0ci0+bV93b3JrZXItPmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50Ojpj
cmVhdGUocG9ydHMucmVsZWFzZSgpLAorICAgICAgICB0aGlzUHRyLT5tX3dvcmtlci0+ZGlzcGF0
Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0cmFuc2ZlcmFibGVzLnJlbGVhc2UoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VyaWFsaXplZE1lc3NhZ2UucmVsZWFzZSgpKSk7CiAgICAgfQogfQogCi12b2lkIFdlYldv
cmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdFRhc2soCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKK3ZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKaW5kZXggYzI3MGZmYy4uNmNhOWRjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaApAQCAt
MzMsNiArMzMsNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKKyNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAi
V2ViV29ya2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dFByb3h5LmgiCkBAIC00
Miw2ICs0Myw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OwordHlwZWRlZiBWZWN0b3I8T3du
UHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzAsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9z
dE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoCiAgICAgICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLAotICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyk7CisgICAgICAgIFBhc3NPd25QdHI8
V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CiAgICAgdmlydHVhbCBib29sIGhh
c1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3RE
ZXN0cm95ZWQoKTsKIApAQCAtODAsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJXb3Jr
ZXJDbGllbnQgbWV0aG9kczoKICAgICAvLyBUaGVzZSBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIFdl
YktpdCB0aHJlYWQuCi0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3Qo
Y29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcm
LCBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmKTsKICAgICB2aXJ0dWFsIHZvaWQg
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYsIGludCwgY29uc3Qg
V2ViU3RyaW5nJik7CiAKICAgICAvLyBGSVhNRTogdGhlIGJlbG93IGlzIGZvciBjb21wYXRpYmls
aXR5IG9ubHkgYW5kIHNob3VsZCBiZQpAQCAtMTI4LDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5n
JiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25Q
dHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CiAgICAgc3RhdGljIHZvaWQg
d29ya2VyT2JqZWN0RGVzdHJveWVkVGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
V29ya2VyQ2xpZW50SW1wbCogdGhpc1B0cik7CiAKQEAgLTEzOCw3ICsxNDEsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogdGhpc1B0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0
cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVs
cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093
blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KTsKICAgICBzdGF0aWMgdm9p
ZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3RUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3Nh
Z2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuY3BwCmluZGV4
IDZjOWY0NWMuLjU1NTZiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYldvcmtlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldv
cmtlckltcGwuY3BwCkBAIC04MiwxOCArODIsMTggQEAgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBX
ZWJXb3JrZXJJbXBsOjpjb21tb25DbGllbnQoKQogdm9pZCBXZWJXb3JrZXJJbXBsOjpwb3N0TWVz
c2FnZVRvV29ya2VyQ29udGV4dFRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYldvcmtlckltcGwqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5PiByZWNlaXB0cykKIHsKICAgICBBU1NFUlQoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkp
OwogICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPQogICAgICAgICBz
dGF0aWNfY2FzdDxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Kj4oY29udGV4dCk7CiAKLSAgICBPd25Q
dHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPQotICAgICAgICBNZXNzYWdlUG9ydDo6ZW50YW5n
bGVQb3J0cygqY29udGV4dCwgY2hhbm5lbHMpOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJh
eT4gdHJhbnNmZXJhYmxlcyA9CisgICAgICAgIFRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVy
QWxsSW4oKmNvbnRleHQsIHJlY2VpcHRzKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkTWVzc2FnZSA9CiAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlRnJvbVdpcmUobWVzc2FnZSk7CiAgICAgd29ya2VyQ29udGV4dC0+ZGlzcGF0Y2hFdmVu
dChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSgKLSAgICAgICAgcG9ydHMucmVsZWFzZSgpLCBzZXJpYWxp
emVkTWVzc2FnZS5yZWxlYXNlKCkpKTsKKyAgICAgICAgdHJhbnNmZXJhYmxlcy5yZWxlYXNlKCks
IHNlcmlhbGl6ZWRNZXNzYWdlLnJlbGVhc2UoKSkpOwogICAgIHRoaXNQdHItPmNvbmZpcm1NZXNz
YWdlRnJvbVdvcmtlck9iamVjdCh3b3JrZXJDb250ZXh0LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7
CiB9CiAKQEAgLTExNiwyMiArMTE2LDEyIEBAIHZvaWQgV2ViV29ya2VySW1wbDo6dGVybWluYXRl
V29ya2VyQ29udGV4dCgpCiB9CiAKIHZvaWQgV2ViV29ya2VySW1wbDo6cG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxB
cnJheSYgd2ViQ2hhbm5lbHMpCi17Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBjaGFubmVsczsKLSAgICBpZiAod2ViQ2hhbm5lbHMuc2l6ZSgpKSB7Ci0gICAgICAgIGNoYW5u
ZWxzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KHdlYkNoYW5uZWxzLnNp
emUoKSkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkNoYW5uZWxzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+
IHBsYXRmb3JtX2NoYW5uZWwgPQotICAgICAgICAgICAgICAgIFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsOjpjcmVhdGUod2ViQ2hhbm5lbHNbaV0pOwotICAgICAgICAgICAgd2ViQ2hhbm5lbHNb
aV0tPnNldENsaWVudChwbGF0Zm9ybV9jaGFubmVsLmdldCgpKTsKLSAgICAgICAgICAgICgqY2hh
bm5lbHMpW2ldID0gTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUocGxhdGZvcm1fY2hhbm5lbCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JiB3ZWJSZWNlaXB0
cykKK3sKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IFdl
YlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmZyb21XZWJBbGwoJndlYlJlY2VpcHRzKTsKICAgICB3b3Jr
ZXJUaHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rh
c2soJnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIFN0cmluZyhtZXNzYWdlKSwgY2hh
bm5lbHMucmVsZWFzZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKHRoaXMpLCBTdHJpbmcobWVzc2FnZSksIHJlY2VpcHRzLnJlbGVhc2UoKSkp
OwogfQogCiB2b2lkIFdlYldvcmtlckltcGw6Ondvcmtlck9iamVjdERlc3Ryb3llZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmgKaW5kZXggNzljOWM1NC4uYzdi
ZTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuaApAQCAt
NTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gV2ViV29ya2VyIG1ldGhvZHM6CiAgICAgdmly
dHVhbCB2b2lkIHN0YXJ0V29ya2VyQ29udGV4dChjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJTdHJp
bmcmLCBjb25zdCBXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2Vy
Q29udGV4dCgpOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChj
b25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpOworICAg
IHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBXZWJTdHJpbmcm
LCBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmKTsKICAgICB2aXJ0dWFsIHZvaWQg
d29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsaWVudERlc3Ryb3ll
ZCgpOwogCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgIFdlYldvcmtlckltcGwqIHRoaXNQ
dHIsCiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLAotICAgICAgICBQYXNzT3du
UHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyk7CisgICAgICAg
IFBhc3NPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyk7
CiAKICAgICBXZWJXb3JrZXJDbGllbnQqIG1fY2xpZW50OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4Y2M5YTJjLi40ZDExNDE5IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTEtMDgtMTAgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisg
ICAgICAgIE1ha2UgTWVzc2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFdlYldvcmtlci5oOgorICAgICAgICAoVGVzdFdlYldvcmtlcjo6cG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQpOgorICAgICAgICAoVGVzdFdlYldvcmtlcjo6cG9zdE1lc3NhZ2VUb1dvcmtl
ck9iamVjdCk6CisKIDIwMTEtMDgtMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBUaGUgVVJMIHdlIHdlcmUgY29tcHV0aW5nIGZvciByZXRyaWV2aW5nIGJhc2Vs
aW5lcyB3YXMgbWlzc2luZyBhIHNsYXNoCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0V2ViV29ya2VyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0V2ViV29ya2VyLmgKaW5kZXggNzFiZmZjZS4uMTJlMmM4NCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYldvcmtlci5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaApAQCAtNjAsNyArNjAsNyBAQCBw
dWJsaWM6CiAgICAgLy8gV2ViV29ya2VyIG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
V29ya2VyQ29udGV4dChjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGNvbnN0IFdlYktpdDo6V2ViU3Ry
aW5nJiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdGVy
bWluYXRlV29ya2VyQ29udGV4dCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRv
V29ya2VyQ29udGV4dChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGNvbnN0IFdlYktpdDo6V2Vi
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3Nh
Z2VUb1dvcmtlckNvbnRleHQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBjb25zdCBXZWJLaXQ6
OldlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3b3Jr
ZXJPYmplY3REZXN0cm95ZWQoKQogICAgIHsKICAgICAgICAgLy8gUmVsZWFzZXMgdGhlIHJlZmVy
ZW5jZSBoZWxkIGZvciB3b3JrZXIgb2JqZWN0LgpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNsaWVudERlc3Ryb3llZCgpIHsgfQogCiAgICAgLy8gV2ViV29ya2Vy
Q2xpZW50IG1ldGhvZHM6Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBjb25zdCBXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJP
YmplY3QoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZmVy
YWJsZVJlY2VpcHRBcnJheSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBpbnQsIGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29y
a2VyT2JqZWN0KGludCwgaW50LCBpbnQsIGludCwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBp
bnQsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbmZp
cm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKSB7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104212</attachid>
            <date>2011-08-17 12:24:37 -0700</date>
            <delta_ts>2011-08-19 13:10:30 -0700</delta_ts>
            <desc>Address comments; add a ScriptExecutionContext* argument to transferOut.</desc>
            <filename>postmessageII-aug17-1222.patch</filename>
            <type>text/plain</type>
            <size>224132</size>
            <attacher name="Luke Zarko">lukezarko+bugzilla</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNWM0YjBjLi4wYzQ2ZDgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDgt
MTcgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgTWVz
c2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gQ2hhbmdlIGluIGVycm9yIG1lc3NhZ2UgdGV4dC4KKyAgICAgICAg
LSBDaGFuZ2UgdG8gaGFuZGxlIGFuZCB0ZXN0IG5ldyBwcmVmaXhlZCB3ZWJraXRQb3N0TWVzc2Fn
ZS4KKyAgICAgICAgLSBDaGFuZ2UgdG8gaGFuZGxlIHNvbWUgSU5WQUxJRF9TVEFURV9FUlIgLT4g
REFUQV9DTE9ORV9FUlIgc3Vic3RpdHV0aW9ucy4KKyAgICAgICAgLSBDaGFuZ2UgdG8gaGFuZGxl
IFtdIGluc3RlYWQgb2YgbnVsbCBmb3IgTWVzc2FnZUV2ZW50LnBvcnRzCisKKyAgICAgICAgKiBm
YXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorICAg
ICAgICBOb3RlIHRoYXQgdGhlIGRlZmF1bHQgd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0
ZWQgY29udGFpbnMgYSBGQUlMOiBsaW5lLgorICAgICAgICBUaGUgY2hlY2sgdGhhdCBnZW5lcmF0
ZXMgdGhhdCBsaW5lIGF0dGVtcHRzIHRvIHZlcmlmeSB0aGF0IG5vbi1wcmVmaXhlZAorICAgICAg
ICBwb3N0TWVzc2FnZSBkaXNhbGxvd3MgTWVzc2FnZVBvcnRzIChvciBhbnkgb3RoZXIgVHJhbnNm
ZXJhYmxlcykgZnJvbSBhcHBlYXJpbmcKKyAgICAgICAgaW4gbWVzc2FnZSBib2RpZXMgYXMgbWFu
ZGF0ZWQgYnkgdGhlIHN0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtIChtb2R1bG8gc2VuZGluZwor
ICAgICAgICBUcmFuc2ZlcmFibGVzIGFzIHBhcnQgb2YgdGhlIHByZWZpeCkuIEEgYnVnIHJlbGV2
YW50IHRvIHRoaXMgYmVoYXZpb3IgaXMgYXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY1MjkyLgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9k
b20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVu
dHMvcmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1tdWx0aS5qczoKKyAgICAgICAgKGNoYW5uZWwucG9y
dDIub25tZXNzYWdlKToKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1j
b250ZXh0LW11bHRpLXBvcnQuanM6CisgICAgICAgICh3b3JrZXIub25tZXNzYWdlKToKKyAgICAg
ICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1tZXNzYWdlcG9ydC5qczoKKyAgICAg
ICAgKG9ubWVzc2FnZSk6CisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXIt
dGhyZWFkLW11bHRpLXBvcnQuanM6CisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICAqIGZh
c3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGkt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3dvcmtl
cnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0td2luL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAg
ICBwcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQgY29udGFpbnMgYW4gZXh0cmEgRkFJTDog
bGluZSBmb3IgQ2hyb21pdW0gd2l0aAorICAgICAgICByZWdhcmQgdG8gd2Via2l0UG9zdE1lc3Nh
Z2U7IHRoaXMgYXBwZWFycyB0byBiZSBhbiBhcnRpZmFjdCBvZiB0aGUgd2F5IGJpbmRpbmdzCisg
ICAgICAgIGFyZSBnZW5lcmF0ZWQsIGFzIGEgc2ltaWxhciBGQUlMOiBsaW5lIHByZXZpb3VzbHkg
ZXhpc3RlZCBmb3IgcGxhaW4gcG9zdE1lc3NhZ2UuCisKIDIwMTEtMDgtMTAgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGF1dG8t
Y29tcGxldGlvbiBmb3Igc3RyaW5nIGxpdGVyYWxzIGRvZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
YXJncy1leHBlY3RlZC50eHQKaW5kZXggMDU0ZDkxOC4uOWY3MDYyYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdl
LWFyZ3MtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGVzdCB0aGF0IHRoZSBzZWNvbmQg
YXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4g
ZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1l
c3NhZ2UgJzEnIHRocm91Z2ggJzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMg
NC03IHJlY2VpdmVkIGJlbG93LgorVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2lu
ZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMg
bm90IGEgbWVzc2FnZSBwb3J0LgogCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1M6IFBvc3RpbmcgbWVzc2Fn
ZSAoJzInLCApOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yCkBAIC03LDEy
ICs3LDI5IEBAIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzQnLCBbb2JqZWN0IERPTVdpbmRvd10p
IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc1Jywg
bnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAo
JzYnLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5n
IG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0p
IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2Ug
KCc4JywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1M6IHdl
YmtpdFBvc3RpbmcgbWVzc2FnZSAoJzknLCApOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdBJywgW29iamVjdCBPYmpl
Y3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFTUzogd2Via2l0
UG9zdGluZyBtZXNzYWdlICgnQicsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5vdCB0aHJvdyBh
biBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0MnLCBudWxsKSBkaWQg
bm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnRCcs
IHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3Rp
bmcgbWVzc2FnZSAoJ0UnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0
XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24g
MjUKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0YnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0
XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ0cn
LCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9O
RV9FUlI6IERPTSBFeGNlcHRpb24gMjUKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ1tv
YmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cg
YW4gZXhjZXB0aW9uCitGQUlMOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1lc3NhZ2VQb3J0
XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFT
UzogUG9zdGluZyBtZXNzYWdlICgnMjE0NzQ4MzY0OCcsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdkb25lJywgKikgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KLVJlY2VpdmVkIG1lc3NhZ2UgJzQnCi1SZWNlaXZlZCBtZXNzYWdlICc1
JwotUmVjZWl2ZWQgbWVzc2FnZSAnNicKK1JlY2VpdmVkIG1lc3NhZ2UgJzQnIHdpdGggMCBwb3J0
cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJzUnIHdpdGggMCBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2Ug
JzYnIHdpdGggMCBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzcnIHdpdGggMiBwb3J0cy4KLVJl
Y2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnCi1SZWNlaXZlZCBtZXNzYWdlICdkb25lJworUmVj
ZWl2ZWQgbWVzc2FnZSAnQicgd2l0aCAwIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnQycgd2l0
aCAwIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnRCcgd2l0aCAwIHBvcnRzLgorUmVjZWl2ZWQg
bWVzc2FnZSAnRicgd2l0aCAxIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBNZXNz
YWdlUG9ydF0nIHdpdGggMSBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3QgT2JqZWN0
XScgd2l0aCAxIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnMjE0NzQ4MzY0OCcgd2l0aCAwIHBv
cnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnZG9uZScgd2l0aCAwIHBvcnRzLgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5o
dG1sCmluZGV4IDcyYTI3ZTcuLmJhOWVhNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCkBAIC0zNSw3ICsz
NSwxOSBAQCBmdW5jdGlvbiB0cnlQb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25kLCB0aGlyZCwgc2hv
dWxkRmFpbCkgewogICAgfQogfQogCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRp
b24iKS5pbm5lckhUTUwgPSAiVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93
LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90
IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1lc3NhZ2UgJzEnIHRocm91Z2gg
JzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMgNC03IHJlY2VpdmVkIGJlbG93
Ljxicj48YnI+IjsKK2Z1bmN0aW9uIHRyeVdlYmtpdFBvc3RNZXNzYWdlKGZpcnN0LCBzZWNvbmQs
IHRoaXJkLCBzaG91bGRGYWlsKSB7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKCF0aGlyZCkKKyAg
ICAgICAgICAgIHdpbmRvdy53ZWJraXRQb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25kKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgd2luZG93LndlYmtpdFBvc3RNZXNzYWdlKGZpcnN0LCBzZWNv
bmQsIHRoaXJkKTsKKyAgICAgICAgY29uc29sZS5pbm5lckhUTUwgKz0gKHNob3VsZEZhaWwgPyAi
RkFJTCIgOiAiUEFTUyIpICsgIjogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnIiArIGZpcnN0ICsg
IicsICIgKyBzZWNvbmQgKyAiKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbjxicj4iOworICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBjb25zb2xlLmlubmVySFRNTCArPSAoc2hvdWxkRmFpbCA/
ICJQQVNTIiA6ICJGQUlMIikgKyAiOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCciICsgZmlyc3Qg
KyAiJywgIiArIHNlY29uZCArICIpOiB0aHJldyBleGNlcHRpb24gIiArIGUgKyAiPGJyPiI7Cisg
ICB9Cit9CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmlubmVySFRN
TCA9ICJUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cucG9zdE1lc3NhZ2Ug
aXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBpcyBub3QgYSBtZXNzYWdlIHBv
cnQuPGJyPjxicj4iOwogCiB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKIHRyeVBv
c3RNZXNzYWdlKCcxJywgMSwgJyonLCB0cnVlKTsKQEAgLTQ1LDYgKzU3LDE5IEBAIHRyeVBvc3RN
ZXNzYWdlKCc0Jywgd2luZG93LCAnKicpOyAgLy8gUGFzc2VzIGJlY2F1c2Ugd2luZG93IGhhcyBh
ICJsZW5ndGgiIGF0dHJpCiB0cnlQb3N0TWVzc2FnZSgnNScsIG51bGwsICcqJyk7CiB0cnlQb3N0
TWVzc2FnZSgnNicsIHZvaWQgMCwgJyonKTsKIHRyeVBvc3RNZXNzYWdlKCc3JywgW2NoYW5uZWwu
cG9ydDEsIGNoYW5uZWwucG9ydDJdLCAnKicpOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJzgnLCAx
LCAnKicsIHRydWUpOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJzknLCAiIiwgJyonLCB0cnVlKTsK
K3RyeVdlYmtpdFBvc3RNZXNzYWdlKCdBJywgeyB4OiAxIH0sICcqJywgdHJ1ZSk7Cit0cnlXZWJr
aXRQb3N0TWVzc2FnZSgnQicsIHdpbmRvdywgJyonKTsgIC8vIFBhc3NlcyBiZWNhdXNlIHdpbmRv
dyBoYXMgYSAibGVuZ3RoIiBhdHRyaWJ1dGUgb2YgdmFsdWUgJzAnLCBzbyBpdCBsb29rcyBsaWtl
IGFuIGFycmF5Cit0cnlXZWJraXRQb3N0TWVzc2FnZSgnQycsIG51bGwsICcqJyk7Cit0cnlXZWJr
aXRQb3N0TWVzc2FnZSgnRCcsIHZvaWQgMCwgJyonKTsKK3RyeVdlYmtpdFBvc3RNZXNzYWdlKCdF
JywgW2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDJdLCAnKicsIHRydWUpOyAvLyBmYWlsczog
dGhvc2UgcG9ydHMgaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJyZWQuCitjaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsOwordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJ0YnLCBbY2hhbm5lbC5wb3J0
MV0sICcqJyk7Cit0cnlQb3N0TWVzc2FnZSgnRycsIFtjaGFubmVsLnBvcnQxXSwgJyonLCB0cnVl
KTsgLy8gZmFpbHM6IHRoYXQgcG9ydCBoYXMgYWxyZWFkeSBiZWVuIHRyYW5zZmVycmVkLgorY2hh
bm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK3RyeVdlYmtpdFBvc3RNZXNzYWdlKGNoYW5uZWwu
cG9ydDEsIFtjaGFubmVsLnBvcnQxXSwgJyonKTsKK3RyeVBvc3RNZXNzYWdlKGNoYW5uZWwucG9y
dDIsIFtjaGFubmVsLnBvcnQyXSwgJyonLCB0cnVlKTsgLy8gZmFpbHM6IHBvc3RNZXNzYWdlIGRv
ZXMgbm90IGFsbG93IFRyYW5zZmVyYWJsZSBhcmd1bWVudHMgaW4gbWVzc2FnZSBib2RpZXMuCiB0
cnlQb3N0TWVzc2FnZSgyMTQ3NDgzNjQ4LCBudWxsLCAnKicpOwogdHJ5UG9zdE1lc3NhZ2UoJ2Rv
bmUnLCAnKicpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCBmMjhhOWI1Li5i
OTE4MjEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTExODMsNiArMTE4Myw3IEBAIHdpbmRv
dy5NZXNzYWdlUG9ydC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCBbZnVuY3Rpb25dCiB3aW5kb3cu
TWVzc2FnZVBvcnQucHJvdG90eXBlLnBvc3RNZXNzYWdlIFtmdW5jdGlvbl0KIHdpbmRvdy5NZXNz
YWdlUG9ydC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25dCiB3aW5kb3cu
TWVzc2FnZVBvcnQucHJvdG90eXBlLnN0YXJ0IFtmdW5jdGlvbl0KK3dpbmRvdy5NZXNzYWdlUG9y
dC5wcm90b3R5cGUud2Via2l0UG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQogd2luZG93Lk1pbWVUeXBl
IFtvYmplY3QgTWltZVR5cGVDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5NaW1lVHlwZS5wcm90b3R5cGUg
W29iamVjdCBNaW1lVHlwZVByb3RvdHlwZV0KIHdpbmRvdy5NaW1lVHlwZUFycmF5IFtvYmplY3Qg
TWltZVR5cGVBcnJheUNvbnN0cnVjdG9yXQpAQCAtMjA4Miw2ICsyMDgzLDcgQEAgd2luZG93Lldv
cmtlci5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCBbZnVuY3Rpb25dCiB3aW5kb3cuV29ya2VyLnBy
b3RvdHlwZS5wb3N0TWVzc2FnZSBbZnVuY3Rpb25dCiB3aW5kb3cuV29ya2VyLnByb3RvdHlwZS5y
ZW1vdmVFdmVudExpc3RlbmVyIFtmdW5jdGlvbl0KIHdpbmRvdy5Xb3JrZXIucHJvdG90eXBlLnRl
cm1pbmF0ZSBbZnVuY3Rpb25dCit3aW5kb3cuV29ya2VyLnByb3RvdHlwZS53ZWJraXRQb3N0TWVz
c2FnZSBbZnVuY3Rpb25dCiB3aW5kb3cuWE1MRG9jdW1lbnQgW3ByaW50ZWQgYWJvdmUgYXMgd2lu
ZG93LkRvY3VtZW50XQogd2luZG93LlhNTEh0dHBSZXF1ZXN0IFtvYmplY3QgWE1MSHR0cFJlcXVl
c3RDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5YTUxIdHRwUmVxdWVzdC5ET05FIFtudW1iZXJdCkBAIC0y
MjgwLDYgKzIyODIsNyBAQCB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90eXBlLnNob3dNb2RhbERp
YWxvZyBbZnVuY3Rpb25dCiB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90eXBlLnN0b3AgW2Z1bmN0
aW9uXQogd2luZG93LmNvbnN0cnVjdG9yLnByb3RvdHlwZS53ZWJraXRDb252ZXJ0UG9pbnRGcm9t
Tm9kZVRvUGFnZSBbZnVuY3Rpb25dCiB3aW5kb3cuY29uc3RydWN0b3IucHJvdG90eXBlLndlYmtp
dENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2RlIFtmdW5jdGlvbl0KK3dpbmRvdy5jb25zdHJ1Y3Rv
ci5wcm90b3R5cGUud2Via2l0UG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQogd2luZG93LmNyeXB0byBb
b2JqZWN0IENyeXB0b10KIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIFtmdW5jdGlvbl0K
IHdpbmRvdy5kZWNvZGVVUkkgW2Z1bmN0aW9uXQpAQCAtMjQ3Myw2ICsyNDc2LDcgQEAgd2luZG93
LnVuZGVmaW5lZCBbdW5kZWZpbmVkXQogd2luZG93LnVuZXNjYXBlIFtmdW5jdGlvbl0KIHdpbmRv
dy53ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZSBbZnVuY3Rpb25dCiB3aW5kb3cud2Vi
a2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUgW2Z1bmN0aW9uXQord2luZG93LndlYmtpdFBv
c3RNZXNzYWdlIFtmdW5jdGlvbl0KIHdpbmRvdy53aW5kb3cgW3ByaW50ZWQgYWJvdmUgYXMgd2lu
ZG93XQogd2luZG93LmdldFNlbGVjdGlvbigpIFtvYmplY3QgRE9NU2VsZWN0aW9uXQogd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlIFtmdW5jdGlvbl0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlw
dG9ycy1leHBlY3RlZC50eHQKaW5kZXggMmFmNjc0NS4uYzU4OTU2NSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQKQEAgLTUzOSw2ICs1MzksNyBAQCBQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAndG9TdHJpbmcnKSBpcyB1bmRlZmlu
ZWQuCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAndmFsdWVP
ZicpIGlzIHVuZGVmaW5lZC4KIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3
aW5kb3csICd3ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZScpIGlzIHVuZGVmaW5lZC4K
IFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICd3ZWJraXRDb252
ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZScpIGlzIHVuZGVmaW5lZC4KK1BBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICd3ZWJraXRQb3N0TWVzc2FnZScpIGlzIHVuZGVm
aW5lZC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1l
eHBlY3RlZC50eHQKaW5kZXggODNjZWNmNC4uOGI4M2NmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CkBAIC03
OTksNiArNzk5LDggQEAgUEFTUyBpbm5lci53ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFn
ZS5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIud2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVU
b1BhZ2UuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndlYmtpdENvbnZl
cnRQb2ludEZyb21QYWdlVG9Ob2RlLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci53ZWJraXRD
b252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKK1BB
U1MgaW5uZXIud2Via2l0UG9zdE1lc3NhZ2UuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLndl
YmtpdFBvc3RNZXNzYWdlLmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci53
aW5kb3cuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndpbmRvdy5jb25zdHJ1Y3Rvci5pc0lu
bmVyIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9uZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUtZXhwZWN0ZWQudHh0
CmluZGV4IGNkMzI3OGEuLmU1ZGJkYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1jbG9uZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb25lLWV4cGVjdGVkLnR4dApAQCAtMiw4ICsyLDggQEAg
VGVzdHMgdmFyaW91cyB1c2UgY2FzZXMgd2hlbiBjbG9uaW5nIE1lc3NhZ2VQb3J0cy4KIAogU2hv
dWxkIGJlIGEgc2VyaWVzIG9mIFNVQ0NFU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS4K
IAotU1VDQ0VTUzogUG9zdGluZyBwb3J0IHRvIGl0c2VsZjogRXJyb3I6IElOVkFMSURfU1RBVEVf
RVJSOiBET00gRXhjZXB0aW9uIDExCi1TVUNDRVNTOiBQb3N0aW5nIGVudGFuZ2xlZCBwb3J0OiBF
cnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEKK1NVQ0NFU1M6IFBvc3Rp
bmcgcG9ydCB0byBpdHNlbGY6IEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAy
NQorU1VDQ0VTUzogUG9zdGluZyBlbnRhbmdsZWQgcG9ydDogRXJyb3I6IERBVEFfQ0xPTkVfRVJS
OiBET00gRXhjZXB0aW9uIDI1CiBTVUNDRVNTOiBQb3N0aW5nIGNsb25lZCBwb3J0LgogU1VDQ0VT
UzogUG9zdGVkIG1lc3NhZ2VzIHRvIGNsb25lZCBwb3J0LgogU1VDQ0VTUzogQ2xvbmVkIGJvdGgg
ZW5kcG9pbnRzIG9mIGEgY2hhbm5lbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CmluZGV4IGZmNzU1NDUuLjUyZjlj
NzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0
aS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LW11bHRpLWV4cGVjdGVkLnR4dApAQCAtMywxNSArMywxNSBAQCBUaGlzIHRlc3QgY2hlY2tzIHRo
ZSB2YXJpb3VzIHVzZSBjYXNlcyBhcm91bmQgc2VuZGluZyBtdWx0aXBsZSBwb3J0cyB0aHJvdWdo
IE1lcwogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgY2hhbm5lbC5wb3J0MS5w
b3N0TWVzc2FnZSgic2FtZSBwb3J0IiwgW2NoYW5uZWwucG9ydDFdKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjaGFubmVs
LnBvcnQxLnBvc3RNZXNzYWdlKCJlbnRhbmdsZWQgcG9ydCIsIFtjaGFubmVsLnBvcnQyXSkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4K
LVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBv
cnQxLCBudWxsLCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJ
RF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1l
c3NhZ2UoInNhbWUgcG9ydCIsIFtjaGFubmVsLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNS4KK1BBU1MgY2hhbm5lbC5wb3J0MS5w
b3N0TWVzc2FnZSgiZW50YW5nbGVkIHBvcnQiLCBbY2hhbm5lbC5wb3J0Ml0pIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUuCitQQVNTIGNoYW5u
ZWwucG9ydDEucG9zdE1lc3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwg
Y2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBE
T00gRXhjZXB0aW9uIDI1LgogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBUG9y
dCIsIFtjaGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgi
bm90QW5BcnJheSIsIGNoYW5uZWwzLnBvcnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2Ui
LCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgot
UEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJsYXJnZVNlcXVlbmNlIiwgbGFyZ2VQb3J0
QXJyYXkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNl
cHRpb24gMTEuCi1QQVNTIGV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQKLVBB
U1MgZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKK1BBU1MgY2hhbm5l
bC5wb3J0MS5wb3N0TWVzc2FnZSgibGFyZ2VTZXF1ZW5jZSIsIGxhcmdlUG9ydEFycmF5KSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1LgorUEFT
UyBldmVudC5wb3J0cyBzaG91bGQgYmUgbm9uLW51bGwgd2hlbiBubyBwb3J0IHNlbnQKK1BBU1Mg
ZXZlbnQucG9ydHMgc2hvdWxkIGJlIG5vbi1udWxsIHdoZW4gZW1wdHkgYXJyYXkgc2VudAogUEFT
UyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgc2VudAogUEFT
UyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBh
ZnRlciBlcnJvcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJj
ZXMvbWVzc2FnZS1wb3J0LW11bHRpLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3Vy
Y2VzL21lc3NhZ2UtcG9ydC1tdWx0aS5qcwppbmRleCA4ZGY1NDllLi5kMDMxMjYzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS1wb3J0LW11bHRp
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tZXNzYWdlLXBvcnQt
bXVsdGkuanMKQEAgLTM2LDE0ICszNiwxNCBAQCBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJk
b25lIik7CiBjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAg
aWYgKGV2ZW50LmRhdGEgPT0gIm5vcG9ydCIpIHsKICAgICAgICAgaWYgKCFldmVudC5wb3J0cykK
LSAgICAgICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBubyBwb3J0
IHNlbnQiKTsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnBvcnRzIGlzIG51bGwgd2hl
biBubyBwb3J0IHNlbnQiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZXZlbnQucG9ydHMgc2hvdWxkIGJlIG51bGwgd2hlbiBubyBwb3J0IHNlbnQiKTsKKyAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVuIG5vIHBv
cnQgc2VudCIpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiemVybyBwb3J0cyIpIHsK
ICAgICAgICAgaWYgKCFldmVudC5wb3J0cykKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoImV2ZW50
LnBvcnRzIGlzIG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50Iik7CisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gZW1wdHkgYXJyYXkgc2VudCIpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBzaG91bGQgYmUg
bnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQiKTsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoImV2
ZW50LnBvcnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQiKTsKICAg
ICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gInR3byBwb3J0cyIpIHsKICAgICAgICAgaWYgKCFl
dmVudC5wb3J0cykgewogICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgc2hvdWxk
IGJlIG5vbi1udWxsIHdoZW4gcG9ydHMgc2VudCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0
LmpzCmluZGV4IDRiNTVjYjguLmE1NWQyZDBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQuanMKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0
LmpzCkBAIC0xMywxNCArMTMsMTQgQEAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50
KSB7CiAgICAgICAgIGV2ZW50LnBvcnRzWzBdLm9ubWVzc2FnZSA9IGRvbmU7CiAgICAgZWxzZSBp
ZiAoZXZlbnQuZGF0YSA9PSAibm9wb3J0IikgewogICAgICAgICBpZiAoIWV2ZW50LnBvcnRzKQot
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIG5vIHBvcnQg
c2VudCIpOworICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVu
IG5vIHBvcnQgc2VudCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJl
dmVudC5wb3J0cyBzaG91bGQgYmUgbnVsbCB3aGVuIG5vIHBvcnQgc2VudCIpOworICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZXZlbnQucG9ydHMgaXMgbm9uLW51bGwgd2hlbiBubyBwb3J0IHNlbnQi
KTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gInplcm8gcG9ydHMiKSB7CiAgICAgICAg
IGlmICghZXZlbnQucG9ydHMpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBp
cyBudWxsIHdoZW4gZW1wdHkgYXJyYXkgc2VudCIpOworICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQiKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgc2hvdWxkIGJlIG51bGwgd2hl
biBlbXB0eSBhcnJheSBzZW50Iik7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0
cyBpcyBub24tbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQiKTsKICAgICB9IGVsc2UgaWYgKGV2
ZW50LmRhdGEgPT0gInR3byBwb3J0cyIpIHsKICAgICAgICAgaWYgKCFldmVudC5wb3J0cykgewog
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgc2hvdWxkIGJlIG5vbi1udWxsIHdo
ZW4gcG9ydHMgc2VudCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jl
c291cmNlcy93b3JrZXItbWVzc2FnZXBvcnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
cmVzb3VyY2VzL3dvcmtlci1tZXNzYWdlcG9ydC5qcwppbmRleCBhN2I0Zjc3Li4xZTAxYjBhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1tZXNz
YWdlcG9ydC5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtl
ci1tZXNzYWdlcG9ydC5qcwpAQCAtOCwxMCArOCwxMCBAQCBvbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpIHsKICAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBEaWQgbm90IHJlY2VpdmUgZXhw
ZWN0ZWQgTWVzc2FnZVBvcnQiKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXZ0LmRhdGEg
PT0gIm5vcG9ydCIpIHsKLSAgICAgICAgaWYgKGV2dC5wb3J0cykgewotICAgICAgICAgICAgcG9z
dE1lc3NhZ2UoIkZBSUw6IFJlY2VpdmVkIG1lc3NhZ2UgcG9ydCIpOworICAgICAgICBpZiAoIWV2
dC5wb3J0cyB8fCBldnQucG9ydHMubGVuZ3RoKSB7CisgICAgICAgICAgICBwb3N0TWVzc2FnZSgi
RkFJTDogUmVjZWl2ZWQgbWVzc2FnZSBwb3J0IG9yIG51bGwgcG9ydHMgYXJyYXkiKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBldnQucG9ydHMgPSBu
dWxsIGFzIGV4cGVjdGVkIik7CisgICAgICAgICAgICBwb3N0TWVzc2FnZSgiUEFTUzogZXZ0LnBv
cnRzID0gW10gYXMgZXhwZWN0ZWQiKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXZ0LmRh
dGEgPT0gInNwYW0iKSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IDEwMDAgOyBpKysp
IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LXRocmVhZC1tdWx0aS1wb3J0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItdGhyZWFkLW11bHRpLXBvcnQuanMKaW5kZXggYmYzNWViMC4uODQ5YTI0NiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItdGhyZWFk
LW11bHRpLXBvcnQuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93
b3JrZXItdGhyZWFkLW11bHRpLXBvcnQuanMKQEAgLTEsMTQgKzEsMTQgQEAKIG9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgaWYgKGV2ZW50LmRhdGEgPT0gIm5vcG9ydCIpIHsKICAg
ICAgICAgaWYgKCFldmVudC5wb3J0cykKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LnBv
cnRzIGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQiKTsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQiKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgc2hvdWxkIGJlIG51bGwgd2hlbiBu
byBwb3J0IHNlbnQiKTsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LnBvcnRzIHNob3Vs
ZCBiZSBub24tbnVsbCB3aGVuIG5vIHBvcnQgc2VudCIpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQu
ZGF0YSA9PSAiemVybyBwb3J0cyIpIHsKICAgICAgICAgaWYgKCFldmVudC5wb3J0cykKLSAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBlbXB0eSBhcnJheSBz
ZW50Iik7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBpcyBudWxsIHdoZW4g
ZW1wdHkgYXJyYXkgc2VudCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVk
KCJldmVudC5wb3J0cyBzaG91bGQgYmUgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQiKTsKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVu
IGVtcHR5IGFycmF5IHNlbnQiKTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gInR3byBw
b3J0cyIpIHsKICAgICAgICAgaWYgKCFldmVudC5wb3J0cykgewogICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZXZlbnQucG9ydHMgc2hvdWxkIGJlIG5vbi1udWxsIHdoZW4gcG9ydHMgc2VudCIpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRp
LXBvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb250
ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CmluZGV4IGZjYTFmZjguLjhlMzljY2YgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRl
eHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQKQEAgLTMsMTAgKzMsMTAgQEAgVGhpcyB0ZXN0IGNo
ZWNrcyB0aGUgdmFyaW91cyB1c2UgY2FzZXMgYXJvdW5kIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMg
dGhyb3VnaCBXb3IKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGV2ZW50LnBv
cnRzIGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQKLVBBU1MgZXZlbnQucG9ydHMgaXMgbnVsbCB3
aGVuIGVtcHR5IGFycmF5IHNlbnQKK1BBU1MgZXZlbnQucG9ydHMgaXMgbm9uLW51bGwgd2hlbiBu
byBwb3J0IHNlbnQKK1BBU1MgZXZlbnQucG9ydHMgaXMgbm9uLW51bGwgd2hlbiBlbXB0eSBhcnJh
eSBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0
cyBzZW50Ci1QQVNTIHBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiBFcnJvcjogSU5WQUxJ
RF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEKK1BBU1MgcG9zdGluZyBhIG51bGwgcG9ydCBk
aWQgdGhyb3c6IEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQogUEFTUyBw
b3N0aW5nIGEgbm9uLXBvcnQgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1Mg
ZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHJlLXNlbnQgYWZ0
ZXIgZXJyb3IKIFBBU1MgcG9zdGluZyBhIG5vbi1hcnJheSBkaWQgdGhyb3c6IFR5cGVFcnJvcjog
VHlwZSBlcnJvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1t
ZXNzYWdlcG9ydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2Vy
LW1lc3NhZ2Vwb3J0LWV4cGVjdGVkLnR4dAppbmRleCA5MDM5OGUxLi45MDZiNmI4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWV4
cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIFRlc3QgdGhhdCBwYWdlcyBhbmQgd29ya2VycyBj
YW4gc2VuZCBNZXNzYWdlUG9ydHMgdG8gb25lIGFub3RoZXIuIFNob3VsZCBwcmludCAiRE9ORSIg
d2hlbiBkb25lLgogCi1QQVNTOiBldnQucG9ydHMgPSBudWxsIGFzIGV4cGVjdGVkCitQQVNTOiBl
dnQucG9ydHMgPSBbXSBhcyBleHBlY3RlZAogUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSBwb3J0CiBQ
QVNTOiBSZWNlaXZlZCByZXNwb25zZSBmcm9tIFdvcmtlciB2aWEgTWVzc2FnZVBvcnQKIFBBU1M6
IEdvdCBwb3J0IGZyb20gd29ya2VyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAppbmRleCA4OGI0MDYyLi4yNDM2ZDYw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGkt
cG9ydC1leHBlY3RlZC50eHQKQEAgLTMsMTIgKzMsMTIgQEAgVGhpcyB0ZXN0IGNoZWNrcyB0aGUg
dmFyaW91cyB1c2UgY2FzZXMgYXJvdW5kIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMgdGhyb3VnaCBX
b3IKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIHdvcmtlci5wb3N0TWVzc2Fn
ZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFubmVsMy5wb3J0Ml0pIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEu
CitQQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBu
dWxsLCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9F
UlI6IERPTSBFeGNlcHRpb24gMjUuCiBQQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibm90QVBvcnQi
LCBbY2hhbm5lbDMucG9ydDEsIHt9LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibm90QW5BcnJh
eSIsIGNoYW5uZWwzLnBvcnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgogUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0p
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIGV2ZW50LnBvcnRz
IGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQKLVBBU1MgZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVu
IGVtcHR5IGFycmF5IHNlbnQKK1BBU1MgZXZlbnQucG9ydHMgc2hvdWxkIGJlIG5vbi1udWxsIHdo
ZW4gbm8gcG9ydCBzZW50CitQQVNTIGV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVu
IGVtcHR5IGFycmF5IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdo
ZW4gdHdvIHBvcnRzIHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdo
ZW4gdHdvIHBvcnRzIHJlLXNlbnQgYWZ0ZXIgZXJyb3IKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dAppbmRleCA5ODFlYjkyLi4yYTFlY2Vl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVk
LnR4dApAQCAtMywxNCArMywxNCBAQCBUaGlzIHRlc3QgY2hlY2tzIHRoZSB2YXJpb3VzIHVzZSBj
YXNlcyBhcm91bmQgc2VuZGluZyBtdWx0aXBsZSBwb3J0cyB0aHJvdWdoIE1lcwogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgic2Ft
ZSBwb3J0IiwgW2NoYW5uZWwucG9ydDFdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURf
U1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNz
YWdlKCJlbnRhbmdsZWQgcG9ydCIsIFtjaGFubmVsLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY2hhbm5lbC5w
b3J0MS5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFu
bmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERP
TSBFeGNlcHRpb24gMTEuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoInNhbWUgcG9y
dCIsIFtjaGFubmVsLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VS
UjogRE9NIEV4Y2VwdGlvbiAyNS4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZW50
YW5nbGVkIHBvcnQiLCBbY2hhbm5lbC5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFU
QV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1l
c3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJd
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1
LgogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtjaGFubmVsMy5w
b3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVz
c2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBNZXNzYWdlUG9ydHMuCiBQ
QVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0
MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBo
YXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZS4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgi
bm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
TWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBNZXNzYWdlUG9ydHMu
Ci1QQVNTIGV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQKLVBBU1MgZXZlbnQu
cG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKK1BBU1MgZXZlbnQucG9ydHMgc2hv
dWxkIGJlIG5vbi1udWxsIHdoZW4gbm8gcG9ydCBzZW50CitQQVNTIGV2ZW50LnBvcnRzIHNob3Vs
ZCBiZSBub24tbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgY29u
dGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgY29u
dGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHJlLXNlbnQgYWZ0ZXIgZXJyb3IKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3Qvd29ya2Vycy93
b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLXdpbi9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1l
eHBlY3RlZC50eHQKaW5kZXggZTY2MjcwZi4uMTBmZWMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0
aS1wb3J0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13
aW4vZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CkBA
IC0zLDEwICszLDEwIEBAIFRoaXMgdGVzdCBjaGVja3MgdGhlIHZhcmlvdXMgdXNlIGNhc2VzIGFy
b3VuZCBzZW5kaW5nIG11bHRpcGxlIHBvcnRzIHRocm91Z2ggV29yCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAotUEFTUyBldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBzZW50
Ci1QQVNTIGV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50CitQQVNTIGV2
ZW50LnBvcnRzIGlzIG5vbi1udWxsIHdoZW4gbm8gcG9ydCBzZW50CitQQVNTIGV2ZW50LnBvcnRz
IGlzIG5vbi1udWxsIHdoZW4gZW1wdHkgYXJyYXkgc2VudAogUEFTUyBldmVudC5wb3J0cyBjb250
YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgc2VudAotUEFTUyBwb3N0aW5nIGEgbnVsbCBw
b3J0IGRpZCB0aHJvdzogRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDEx
CitQQVNTIHBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiBFcnJvcjogREFUQV9DTE9ORV9F
UlI6IERPTSBFeGNlcHRpb24gMjUKIFBBU1MgcG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzog
VHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IE1l
c3NhZ2VQb3J0cwogUEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28g
cG9ydHMgcmUtc2VudCBhZnRlciBlcnJvcgogUEFTUyBwb3N0aW5nIGEgbm9uLWFycmF5IGRpZCB0
aHJvdzogVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGgg
YXR0cmlidXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4v
ZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhw
ZWN0ZWQudHh0CmluZGV4IGYxMWM3NGMuLjdiZWE5M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3dv
cmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CkBAIC0zLDEyICszLDEyIEBAIFRo
aXMgdGVzdCBjaGVja3MgdGhlIHZhcmlvdXMgdXNlIGNhc2VzIGFyb3VuZCBzZW5kaW5nIG11bHRp
cGxlIHBvcnRzIHRocm91Z2ggV29yCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFT
UyB3b3JrZXIucG9zdE1lc3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwg
Y2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJS
OiBET00gRXhjZXB0aW9uIDExLgorUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm51bGwgcG9ydCIs
IFtjaGFubmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1LgogUEFTUyB3b3JrZXIucG9z
dE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCB7fSwgY2hhbm5lbDMucG9ydDJd
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11
c3QgY29udGFpbiBvbmx5IE1lc3NhZ2VQb3J0cy4KIFBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJu
b3RBbkFycmF5IiwgY2hhbm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1l
c3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUuCiBQQVNTIHdv
cmtlci5wb3N0TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4g
b25seSBNZXNzYWdlUG9ydHMuCi1QQVNTIGV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBubyBwb3J0
IHNlbnQKLVBBU1MgZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKK1BB
U1MgZXZlbnQucG9ydHMgc2hvdWxkIGJlIG5vbi1udWxsIHdoZW4gbm8gcG9ydCBzZW50CitQQVNT
IGV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKIFBB
U1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQKIFBB
U1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHJlLXNlbnQg
YWZ0ZXIgZXJyb3IKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1l
c3NhZ2UtYXJncy1leHBlY3RlZC50eHQKaW5kZXggNWVjZTg0MS4uNGM4OGJhYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRvdy1w
b3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsNCBAQAotVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2lu
ZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMg
bm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1lc3NhZ2UgJzEnIHRocm91
Z2ggJzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMgNC03IHJlY2VpdmVkIGJl
bG93LgorVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdl
IGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBw
b3J0LgogCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKIFBB
U1M6IFBvc3RpbmcgbWVzc2FnZSAoJzInLCApOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBN
ZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0CkBAIC03LDEyICs3LDI4
IEBAIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzQnLCBbb2JqZWN0IERPTVdpbmRvd10pIGRpZCBu
b3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc1JywgbnVsbCkg
ZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzYnLCB1
bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3Nh
Z2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBu
b3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCc4Jywg
MSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyYWJsZUFycmF5IGFyZ3VtZW50
IG11c3QgYmUgYW4gb2JqZWN0CitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCc5JywgKTog
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQgbXVz
dCBiZSBhbiBvYmplY3QKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0EnLCBbb2JqZWN0
IE9iamVjdF0pOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlcmFibGVBcnJheSBh
cmd1bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZQorUEFTUzogd2Via2l0UG9zdGluZyBtZXNz
YWdlICgnQicsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24K
K1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0MnLCBudWxsKSBkaWQgbm90IHRocm93IGFu
IGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnRCcsIHVuZGVmaW5lZCkg
ZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAo
J0UnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUKK1BBU1M6IHdl
YmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0YnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0
aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ0cnLCBbb2JqZWN0IE1l
c3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBF
eGNlcHRpb24gMjUKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2Fn
ZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9u
CitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1lc3NhZ2VQb3J0XScsIFtvYmplY3Qg
TWVzc2FnZVBvcnRdKTogdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9N
IEV4Y2VwdGlvbiAyNQogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMjE0NzQ4MzY0OCcsIG51bGwp
IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdkb25l
JywgKikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KLVJlY2VpdmVkIG1lc3NhZ2UgJzQnCi1S
ZWNlaXZlZCBtZXNzYWdlICc1JwotUmVjZWl2ZWQgbWVzc2FnZSAnNicKK1JlY2VpdmVkIG1lc3Nh
Z2UgJzQnIHdpdGggMCBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJzUnIHdpdGggMCBwb3J0cy4K
K1JlY2VpdmVkIG1lc3NhZ2UgJzYnIHdpdGggMCBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzcn
IHdpdGggMiBwb3J0cy4KLVJlY2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnCi1SZWNlaXZlZCBt
ZXNzYWdlICdkb25lJworUmVjZWl2ZWQgbWVzc2FnZSAnQicgd2l0aCAwIHBvcnRzLgorUmVjZWl2
ZWQgbWVzc2FnZSAnQycgd2l0aCAwIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnRCcgd2l0aCAw
IHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnRicgd2l0aCAxIHBvcnRzLgorUmVjZWl2ZWQgbWVz
c2FnZSAnW29iamVjdCBNZXNzYWdlUG9ydF0nIHdpdGggMSBwb3J0cy4KK1JlY2VpdmVkIG1lc3Nh
Z2UgJzIxNDc0ODM2NDgnIHdpdGggMCBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ2RvbmUnIHdp
dGggMCBwb3J0cy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3Rl
ZC50eHQKaW5kZXggNTU2MzcxMy4uZWNjZGQ3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9wcm90b3R5cGUt
aW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CkBAIC04MjksNiArODI5LDggQEAgUEFTUyBpbm5lci53
ZWJraXRJREJUcmFuc2FjdGlvbi5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIud2Via2l0SURC
VHJhbnNhY3Rpb24uY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBGQUlMIGlubmVyLndlYmtp
dEluZGV4ZWREQi5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCiBGQUlMIGlubmVy
LndlYmtpdEluZGV4ZWREQi5jb25zdHJ1Y3Rvci5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMg
ZmFsc2UuCitGQUlMIGlubmVyLndlYmtpdFBvc3RNZXNzYWdlLmlzSW5uZXIgc2hvdWxkIGJlIHRy
dWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIud2Via2l0UG9zdE1lc3NhZ2UuY29uc3RydWN0b3Iu
aXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgogUEFTUyBpbm5lci53ZWJraXRSZXF1
ZXN0QW5pbWF0aW9uRnJhbWUuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndlYmtpdFJlcXVl
c3RBbmltYXRpb25GcmFtZS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIu
d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0uaXNJbm5lciBpcyB0cnVlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IGUzNWJlNGEuLmE3YTk2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01ODksNiAr
NTg5LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9Ub3VjaC5jcHAKICAgICBkb20v
VG91Y2hFdmVudC5jcHAKICAgICBkb20vVG91Y2hMaXN0LmNwcAorICAgIGRvbS9UcmFuc2ZlcmFi
bGUuY3BwCisgICAgZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuY3BwCiAgICAgZG9tL1RyYW5zZm9y
bVNvdXJjZUxpYnhzbHQuY3BwCiAgICAgZG9tL1RyYXZlcnNhbC5jcHAKICAgICBkb20vVHJlZVNj
b3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFlNzRjZDYuLjMyMmU3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDggQEAKKzIwMTEtMDgtMTcgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29t
PgorCisgICAgICAgIE1ha2UgTWVzc2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBTdHJ1Y3R1cmVkIENsb25l
IGFsZ29yaXRobSBkZXNjcmliZXMgYW4gaW50ZXJmYWNlIGZvciBUcmFuc2ZlcmFibGUgb2JqZWN0
cworICAgICAgICAoaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9jb21wbGV0ZS9jb21tb24tZG9tLWludGVyZmFjZXMuaHRtbCN0cmFuc2ZlcmFibGUtb2Jq
ZWN0cykuCisgICAgICAgIEN1cnJlbnRseSB0aGUgb25seSBvZmZpY2lhbCBUcmFuc2ZlcmFibGUg
b2JqZWN0IGlzIHRoZSBNZXNzYWdlUG9ydCwgYnV0CisgICAgICAgIEFycmF5QnVmZmVycyBhcmUg
ZXhwZWN0ZWQgdG8gYmUgc2FuY3Rpb25lZCBhcyBzdWNoIHNvb24uCisKKyAgICAgICAgLSBDcmVh
dGUgbmV3IGNsYXNzZXMgVHJhbnNmZXJhYmxlIGFuZCBUcmFuc2ZlcmFibGVSZWNlaXB0LgorICAg
ICAgICAgICAgLSBDb250cm9sIG9mIGEgVHJhbnNmZXJhYmxlIG9iamVjdCBjYW4gYmUgdHJhbnNm
ZXJyZWQgb3V0LCB5aWVsZGluZyBhCisgICAgICAgICAgICAgIFRyYW5zZmVyYWJsZVJlY2VpcHQu
CisgICAgICAgICAgICAtIEEgVHJhbnNmZXJhYmxlUmVjZWlwdCBjYW4gdGhlbiBiZSB0cmFuc2Zl
cnJlZCBpbiwgeWllbGRpbmcgYSBUcmFuc2ZlcmFibGUuCisgICAgICAgICAgICAtIE1lc3NhZ2VQ
b3J0IGlzIHJlcGFyZW50ZWQgdG8gVHJhbnNmZXJhYmxlLgorICAgICAgICAgICAgLSBUcmFuc2Zl
cnJpbmcgb3V0IGEgTWVzc2FnZVBvcnQgeWllbGRzIGEgTWVzc2FnZVBvcnRDaGFubmVsVHJhbnNm
ZXJhYmxlUmVjZWlwdC4KKyAgICAgICAgLSBJbnN0ZWFkIG9mIHBhc3NpbmcgYXJvdW5kIGEgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIHdpdGggYQorICAgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5IChmb3IsIGVnLCB3ZWJraXRQb3N0TWVzc2FnZSksIGluc3RlYWQgYQorICAgICAgICAgIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSBpcyBwYWlyZWQgd2l0aCBhIFRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheS4KKyAgICAgICAgICAgIC0gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpbGwgdXNlIG9iamVj
dCByZWZlcmVuY2VzIGluc3RlYWQgb2YgY2xvbmVzIGZvcgorICAgICAgICAgICAgICBvYmplY3Rz
IGluIHRoZSB0cmFuc2ZlciBsaXN0LgorICAgICAgICAgICAgLSBUaGUgVjggU2VyaWFsaXplZFNj
cmlwdFZhbHVlIHNvbWV0aW1lcyBuZWVkcyB0byBiZSBzZW50IGFjcm9zcyBhbiBJUEMKKyAgICAg
ICAgICAgICAgYm91bmRhcnkuIEluIHRoaXMgY2FzZSBzb21lIFRyYW5zZmVyYWJsZVJlY2VpcHRz
IHdpdGhvdXQgc3BlY2lhbCBjbG9uaW5nCisgICAgICAgICAgICAgIHNlbWFudGljcyAoZWcsIG5v
bi1NZXNzYWdlUG9ydHMsIHdoaWNoIHNlbmQgYWNyb3NzIHJvdXRpbmcgaW5mb3JtYXRpb24pCisg
ICAgICAgICAgICAgIHdpbGwgbmVlZCB0byBiZSBmbGF0dGVuZWQuIFRoaXMgcGF0Y2ggZXhwb3Nl
cyBhbiBpbnRlcmZhY2UgZm9yIHN1Y2ggYW4KKyAgICAgICAgICAgICAgb3BlcmF0aW9uLgorICAg
ICAgICAtIE1vZGlmeSBJREwgZ2VuZXJhdG9ycyBmb3IgU2VyaWFsaXplZFNjcmlwdFZhbHVlIHRv
IHJlcXVpcmUgYW5kIHBhc3MgdHJhbnNmZXIKKyAgICAgICAgICBsaXN0cyB0byB0aGUgU2VyaWFs
aXplZFNjcmlwdFZhbHVlIGNvbnN0cnVjdG9yLgorICAgICAgICAtIFRoZSBvbGQgcG9zdE1lc3Nh
Z2UgaXMgcHJlc2VydmVkIHdpdGggdGhhdCBuYW1lOyB3ZWJraXRQb3N0TWVzc2FnZSBoYW5kbGVz
CisgICAgICAgICAgVHJhbnNmZXJhYmxlcyBvdGhlciB0aGFuIE1lc3NhZ2VQb3J0cyBhbmQgYWxs
b3dzIHRoZXNlIFRyYW5zZmVyYWJsZXMgdG8KKyAgICAgICAgICBhcHBlYXIgaW4gdGhlIG1lc3Nh
Z2UgYmVpbmcgcG9zdGVkLiAoRGl0dG8gZm9yIGluaXRNZXNzYWdlRXZlbnQuKQorICAgICAgICAt
IFRocm93IERBVEFfQ0xPTkVfRVJSIGluc3RlYWQgb2YgSU5WQUxJRF9TVEFURV9FUlIgd2hlcmUg
dGhlIHN0YW5kYXJkIGRlbWFuZHMgaXQuCisgICAgICAgIC0gUmV0dXJuIGFuIGVtcHR5IGFycmF5
IGluc3RlYWQgb2YgbnVsbCBmb3IgYSBNZXNzYWdlRXZlbnQgdGhhdCB3YXMgc2VudCB3aXRob3V0
CisgICAgICAgICAgYXNzb2NpYXRlZCBwb3J0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0TWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OndlYmtpdFBvc3RNZXNzYWdlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OndlYmtpdFBvc3RNZXNzYWdl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU01lc3NhZ2VFdmVudDo6cG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VFdmVudDo6aW5p
dE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VFdmVudDo6d2Via2l0
SW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojp3ZWJraXRQb3N0TWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxsVHJhbnNmZXJhYmxlQXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9OYXRpdmVUcmFuc2ZlcmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU1RyYW5zZmVy
YWJsZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oOgorICAg
ICAgICAoV2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyOjpwb3N0TWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlcjo6d2Via2l0UG9zdE1lc3NhZ2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdFZhbHVlOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZVNlcmlhbGl6ZXI6OmluaXRpYWxpemVXaXRoVHJhbnNmZXJMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lU2VyaWFsaXplcjo6c3RhcnRPYmplY3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xvbmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpvcGVuVHJhbnNmZXJhYmxlQXJyYXkpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVy
YXRlVG9WOENvbnZlcnRlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6U2VyaWFsaXplcjo6
U2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6U2VyaWFsaXplcjo6
c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpTZXJpYWxpemVyOjpp
bml0aWFsaXplT2JqZWN0UG9vbCk6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6RGVz
ZXJpYWxpemVyOjpEZXNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6
OkRlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RN
YXA6OkRlc2VyaWFsaXplcjo6aW5pdGlhbGl6ZU9iamVjdFBvb2wpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6aXNGbGF0dGVuYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmZsYXR0ZW5SZWNlaXB0
TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERP
TVdpbmRvdzo6cG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdp
bmRvdzo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGVkaWNhdGVk
V29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
OERlZGljYXRlZFdvcmtlckNvbnRleHQ6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6cG9ydHNBY2Nlc3NvckdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjppbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhNZXNzYWdlUG9ydDo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpnZXRUcmFuc2ZlcmFibGVBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b05hdGl2ZVRy
YW5zZmVyYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4VHJhbnNmZXJhYmxlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V29ya2VyOjpwb3N0
TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V29ya2VyOjp3ZWJraXRQb3N0
TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50
OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojppbml0TWVz
c2FnZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6bWVzc2FnZVBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojp0cmFuc2ZlcmFibGUpOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6ZGF0YURlcGVuZGVuY2ll
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OnRyYW5zZmVyYWJsZXMpOgorICAg
ICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6TWVzc2FnZVBvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Ojp0cmFuc2Zlck91dCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9y
dDo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6YXNNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJD
b3JlOjpNZXNzYWdlUG9ydDo6d2FzVHJhbnNmZXJyZWRPdXQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVzc2FnZVBvcnQ6OmlzRW50YW5nbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
Ojppc0Nsb25lZCk6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmlkbDoKKyAgICAgICAgKiBk
b20vTWVzc2FnZVBvcnRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBv
cnRDaGFubmVsOjpFdmVudERhdGE6OkV2ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydENoYW5uZWxUcmFuc2ZlcmFibGVSZWNlaXB0OjpNZXNzYWdlUG9ydENoYW5uZWxUcmFu
c2ZlcmFibGVSZWNlaXB0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFRy
YW5zZmVyYWJsZVJlY2VpcHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9y
dENoYW5uZWxUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckluKToKKyAgICAgICAgKiBkb20v
TWVzc2FnZVBvcnRDaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWw6OkV2ZW50RGF0YTo6cmVjZWlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRD
aGFubmVsVHJhbnNmZXJhYmxlUmVjZWlwdDo6YXNNZXNzYWdlUG9ydENoYW5uZWxUcmFuc2ZlcmFi
bGVSZWNlaXB0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFRyYW5zZmVy
YWJsZVJlY2VpcHQ6Om1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgICogZG9tL1BvcFN0YXRl
RXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OnN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OmRhdGFEZXBlbmRlbmNpZXMpOgorICAgICAgICAq
IGRvbS9UcmFuc2ZlcmFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZmVy
YWJsZTo6dHJhbnNmZXJBbGxPdXQpOgorICAgICAgICAqIGRvbS9UcmFuc2ZlcmFibGUuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2ZlcmFibGU6OmFzTWVzc2FnZVBvcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmZXJhYmxlOjp+VHJhbnNmZXJhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZmVyYWJsZTo6VHJhbnNmZXJhYmxlKToKKyAgICAgICAgKiBkb20vVHJhbnNm
ZXJhYmxlUmVjZWlwdC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmlkbC4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVy
QWxsSW4pOgorICAgICAgICAqIGRvbS9UcmFuc2ZlcmFibGVSZWNlaXB0Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdDo6flRyYW5zZmVyYWJsZVJlY2VpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdDo6YXNNZXNzYWdlUG9ydENo
YW5uZWxUcmFuc2ZlcmFibGVSZWNlaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJs
ZVJlY2VpcHQ6OlRyYW5zZmVyYWJsZVJlY2VpcHQpOgorICAgICAgICAqIHAycC9QZWVyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNz
YWdlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvc3RNZXNzYWdlVGltZXI6OlBvc3RNZXNzYWdlVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9zdE1lc3NhZ2VUaW1lcjo6ZXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dmFsdWVEZXBlbmRlbmNpZXMpOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29ubmVjdEV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdv
cmtlckNvbnRleHRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtl
ckNvbnRleHRUYXNrOjpNZXNzYWdlV29ya2VyQ29udGV4dFRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJD
b3JlOjpNZXNzYWdlV29ya2VyVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3Nh
Z2VXb3JrZXJUYXNrOjpNZXNzYWdlV29ya2VyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlV29ya2VyVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVz
c2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJPYmplY3RQcm94eS5oOgorCiAyMDExLTA4LTEwICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhdXRvLWNvbXBsZXRp
b24gZm9yIHN0cmluZyBsaXRlcmFscyBkb2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDZiZWI5MzEuLjJjNDU3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMTMwMiw2ICsxMzAyLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL1RleHRFdmVudElucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hMaXN0LmggXAorCVNvdXJjZS9XZWJD
b3JlL2RvbS9UcmFuc2ZlcmFibGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJh
YmxlLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuaCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1RyYW5zZm9ybVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3Jt
U291cmNlTGlieHNsdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMWUxMmY0MC4uNWRjYTkwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTU2NSw3ICs1NjUsNyBAQCBfX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRF
dmVudEMxRVA3TlNFdmVudAogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMHNl
cnZlUGVuZGluZ1JlcXVlc3RzRU5TXzIwUmVzb3VyY2VMb2FkUHJpb3JpdHlFCiBfX1pON1dlYkNv
cmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkRVBOU181
RnJhbWVFUE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnRFUktOU18xNVJlc291
cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29yZTIxU1ZHRG9jdW1lbnRFeHRlbnNpb25zMjFzYW1wbGVB
bmltYXRpb25BdFRpbWVFUktOM1dURjZTdHJpbmdFUE5TXzE0U1ZHU01JTEVsZW1lbnRFZAotX19a
TjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWUxMWRlc2VyaWFsaXplRVBLMTVPcGFxdWVK
U0NvbnRleHRQUEsxM09wYXF1ZUpTVmFsdWUKK19fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlw
dFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVlSlNDb250ZXh0UFBLMTNPcGFxdWVKU1ZhbHVl
UE4zV1RGNlZlY3RvcklOM0pTQzdKU1ZhbHVlRUxtMUVFRQogX19aTjdXZWJDb3JlMjFTZXJpYWxp
emVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBLMTVPcGFxdWVKU0NvbnRleHRQSzEzT3BhcXVlSlNWYWx1
ZVBTNl8KIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlQzFFUk4zV1RGNlZlY3Rv
ckloTG0wRUVFCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQxRXYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCAyYzYzMmFkLi5iM2FlNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMDE1
LDYgKzEwMTUsOCBAQAogICAgICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50LmgnLAogICAgICAg
ICAgICAgJ2RvbS9UZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0RXZlbnRJbnB1dFR5cGUu
aCcsCisgICAgICAgICAgICAnZG9tL1RyYW5zZmVyYWJsZS5oJywKKyAgICAgICAgICAgICdkb20v
VHJhbnNmZXJhYmxlUmVjZWlwdC5oJywKICAgICAgICAgICAgICdkb20vVUlFdmVudC5oJywKICAg
ICAgICAgICAgICdkb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oJywKICAgICAgICAgICAgICdkb20v
VXNlckdlc3R1cmVJbmRpY2F0b3IuaCcsCkBAIC01NDAyLDYgKzU0MDQsMTAgQEAKICAgICAgICAg
ICAgICdkb20vVG91Y2hFdmVudC5oJywKICAgICAgICAgICAgICdkb20vVG91Y2hMaXN0LmNwcCcs
CiAgICAgICAgICAgICAnZG9tL1RvdWNoTGlzdC5oJywKKyAgICAgICAgICAgICdkb20vVHJhbnNm
ZXJhYmxlLmNwcCcsCisgICAgICAgICAgICAnZG9tL1RyYW5zZmVyYWJsZS5oJywKKyAgICAgICAg
ICAgICdkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9UcmFu
c2ZlcmFibGVSZWNlaXB0LmgnLAogICAgICAgICAgICAgJ2RvbS9UcmFuc2Zvcm1Tb3VyY2UuaCcs
CiAgICAgICAgICAgICAnZG9tL1RyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwJywKICAgICAgICAg
ICAgICdkb20vVHJhbnNmb3JtU291cmNlUXQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYTA3Yjk0
YS4uYjdlMWE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTU1Myw2ICs1NTMsOCBAQCBTT1VSQ0VTICs9
IFwKICAgICBkb20vVG91Y2guY3BwIFwKICAgICBkb20vVG91Y2hFdmVudC5jcHAgXAogICAgIGRv
bS9Ub3VjaExpc3QuY3BwIFwKKyAgICBkb20vVHJhbnNmZXJhYmxlLmNwcCBcCisgICAgZG9tL1Ry
YW5zZmVyYWJsZVJlY2VpcHQuY3BwIFwKICAgICBkb20vVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9t
L1RyZWVTY29wZS5jcHAgXAogICAgIGRvbS9UcmVlV2Fsa2VyLmNwcCBcCkBAIC0xNTQ2LDYgKzE1
NDgsOCBAQCBIRUFERVJTICs9IFwKICAgICBkb20vVG91Y2guaCBcCiAgICAgZG9tL1RvdWNoRXZl
bnQuaCBcCiAgICAgZG9tL1RvdWNoTGlzdC5oIFwKKyAgICBkb20vVHJhbnNmZXJhYmxlLmggXAor
ICAgIGRvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmggXAogICAgIGRvbS9UcmFuc2Zvcm1Tb3VyY2Uu
aCBcCiAgICAgZG9tL1RyYXZlcnNhbC5oIFwKICAgICBkb20vVHJlZURlcHRoTGltaXQuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMGJhODQ2NC4uZTBjYTY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDgyMiwxMiArNDgyMiwxNiBAQAogCQlCNzM0QjE4
MTExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjczNEIxODAxMTlCOTkxMTAwNjU4N0JEIC8q
IEZvbnRUcmFuc2NvZGVyLmNwcCAqLzsgfTsKIAkJQjczNEIxODMxMTlCOTkxRDAwNjU4N0JEIC8q
IEZvbnRUcmFuc2NvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCNzM0QjE4MjExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuaCAqLzsg
fTsKIAkJQjc3NkQ0M0QxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzc2RDQzQzExMDQ1Mjc1
MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCAqLzsgfTsKKwkJQjg2MTg3MkMxM0Q4RUM0OTAw
OEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCODYxODcyQTEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxl
LmNwcCAqLzsgfTsKKwkJQjg2MTg3MkQxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg2MTg3MkIx
M0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI4ODVFOEQ0MTFFMDZERDIwMDlGRkJGNCAvKiBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgKi87IH07CiAJCUI4ODVFOEQ1MTFFMDZERDIw
MDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4ODVFOEQzMTFFMDZERDIwMDlGRkJG
NCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9ICgpOyB9OyB9OwogCQlCOERCREI0QjEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2Vs
ZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCOERCREI0NzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5j
cHAgKi87IH07CiAJCUI4REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21t
YW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERC
REI0ODEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovOyB9OwogCQlC
OERCREI0RDEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0OTEz
MEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgKi87IH07CiAJ
CUI4REJEQjRFMTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0QTEz
MEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovOyB9OworCQlC
OEUwRThGRjEzRUM3RTU1MDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOEUwRThGQzEzRUM3RTBD
MDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAgKi87IH07CisJCUI4RTBFOEZFMTNF
QzdFNEQwMEMxMzcyMCAvKiBUcmFuc2ZlcmFibGVSZWNlaXB0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOEUwRThGRDEzRUM3RTBDMDBDMTM3MjAgLyog
VHJhbnNmZXJhYmxlUmVjZWlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJBQ0YyOTAxMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkFDRjI5MDAx
M0IyQTBENTAwNzgxRjkwIC8qIExheW91dFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMwMEYwMDQwRTBBMTg1NTAwRkQwNEUzIC8qIERP
TUZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MDBFRkZFMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggKi87IH07CiAJCUJDMDBGMDA1MEUw
QTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMwMEVGRkYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0g
Ki87IH07CkBAIC0xMTUwNiwxMiArMTE1MTAsMTYgQEAKIAkJQjczNEIxODIxMTlCOTkxRDAwNjU4
N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZvbnRUcmFuc2NvZGVyLmg7IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQ
cmludENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRDb250
ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3NzZENDNDMTEwNDUyNzUwMEJF
QjBFQyAvKiBQcmludENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJpbnRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjg2
MTg3MkExM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2ZlcmFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCODYxODcyQjEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZmVyYWJsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCODg1RThEMjExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUI4ODVFOEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUI4REJEQjQ3MTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldFNlbGVjdGlvbkNvbW1h
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0ODEzMEIwRjhBMDBG
NUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZXRTZWxlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUI4REJEQjQ5MTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0QTEz
MEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4RTBFOEZDMTNFQzdFMEMwMEMxMzcyMCAvKiBUcmFu
c2ZlcmFibGVSZWNlaXB0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
OEUwRThGRDEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2ZlcmFibGVSZWNlaXB0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJBQ0YyOTAwMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRU
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRUeXBlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyog
RE9NRmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBE
T01GaWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmls
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMDIxLDYgKzIwMDI5LDEwIEBA
CiAJCQkJOTMzQTE0MkQwQjdEMTg4NjAwQTUzRkZEIC8qIFRleHRFdmVudC5oICovLAogCQkJCTkz
M0ExNDJDMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuaWRsICovLAogCQkJCUE3N0I0MTlG
MTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0RXZlbnRJbnB1dFR5cGUuaCAqLywKKwkJCQlCODYxODcy
QjEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmggKi8sCisJCQkJQjg2MTg3MkExM0Q4
RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgKi8sCisJCQkJQjhFMEU4RkQxM0VDN0Uw
QzAwQzEzNzIwIC8qIFRyYW5zZmVyYWJsZVJlY2VpcHQuaCAqLywKKwkJCQlCOEUwRThGQzEzRUM3
RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAgKi8sCiAJCQkJNURCMUJDNjgx
MDcxNUE2NDAwRUZBQTQ5IC8qIFRyYW5zZm9ybVNvdXJjZS5oICovLAogCQkJCTVEQjFCQzY5MTA3
MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCAqLywKIAkJCQk4NTRG
RTcyQzBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmNwcCAqLywKQEAgLTIzMTk0LDYgKzIz
MjA2LDggQEAKIAkJCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0NDYxM0IwMENENjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRTBFRkFDOTA2MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUI4NjE4NzJEMTNEOEVDNDkwMDhCODc0RiAvKiBUcmFu
c2ZlcmFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUI4RTBFOEZFMTNFQzdFNEQwMEMxMzcyMCAv
KiBUcmFuc2ZlcmFibGVSZWNlaXB0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNDBFRjg2
RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5RTkxMUNFMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5RTkxMUQwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRp
b25zLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDM5LDYgKzI2MDUzLDggQEAKIAkJCQk3NTUzQ0ZF
OTEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzMzA5RUE0MDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFNDQ2MTNBRjBDRDYzMzEwMDBGQURBNzUgLyogVGltZVJhbmdlcy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlCODYxODcyQzEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI4RTBFOEZGMTNFQzdFNTUwMEMxMzcyMCAvKiBUcmFu
c2ZlcmFibGVSZWNlaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUMzMEVGODZENDcw
MDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OTRCQzQwRDEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRp
b25NYXRyaXhDRy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA3NDQ4MTc2Li5lY2Q4NDVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBA
IC02OTQsMTYgKzY5NCwxNiBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2co
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBoYW5kbGVyLnJldHVyblZhbHVlKCk7CiB9CiAK
LUpTVmFsdWUgSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBKU1ZhbHVlIHBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgSlNET01XaW5kb3cqIHdpbmRv
dywgTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSkKIHsKLSAgICBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKLQorICAgIFRyYW5zZmVyYWJsZUFy
cmF5IHRyYW5zZmVyYWJsZXM7CisgICAgSlNWYWx1ZUFycmF5IHZhbHVlQXJyYXk7CisgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDIpCisgICAgICAgIGZpbGxUcmFuc2ZlcmFibGVBcnJh
eShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgdHJhbnNmZXJhYmxlcywgdmFsdWVBcnJheSwgbWVz
c2FnZVBhc3NpbmdNb2RlKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9y
dHM7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDIpCi0gICAgICAgIGZpbGxNZXNz
YWdlUG9ydEFycmF5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCBtZXNzYWdlUG9ydHMpOworICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgJnZhbHVlQXJyYXksIG1lc3Nh
Z2VQYXNzaW5nTW9kZSwgVGhyb3dpbmcpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTcxMiwxMiArNzEyLDIyIEBAIEpT
VmFsdWUgSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBp
bXBsKCktPnBvc3RNZXNzYWdlKG1lc3NhZ2UsICZtZXNzYWdlUG9ydHMsIHRhcmdldE9yaWdpbiwg
YWN0aXZlRE9NV2luZG93KGV4ZWMpLCBlYyk7CisgICAgd2luZG93LT5pbXBsKCktPnBvc3RNZXNz
YWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmdHJhbnNmZXJhYmxlcywgdGFyZ2V0T3JpZ2luLCBhY3Rp
dmVET01XaW5kb3coZXhlYyksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwog
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKK0pTVmFsdWUgSlNET01XaW5kb3c6OnBv
c3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1l
c3NhZ2UoZXhlYywgdGhpcywgT25seU1lc3NhZ2VQb3J0cyk7Cit9CisKK0pTVmFsdWUgSlNET01X
aW5kb3c6OndlYmtpdFBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4g
V2ViQ29yZTo6cG9zdE1lc3NhZ2UoZXhlYywgdGhpcywgUGVybWl0VHJhbnNmZXJhYmxlcyk7Cit9
CisKIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gaW1wbCgp
LT5kb2N1bWVudCgpID8gaW1wbCgpLT5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCAyMjIyMzUzLi4zYzQ1NDZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNh
dGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSlNDOjpKU1ZhbHVlIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1l
c3NhZ2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNz
YWdlKGV4ZWMsIGltcGwoKSk7CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGlt
cGwoKSwgT25seU1lc3NhZ2VQb3J0cyk7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdv
cmtlckNvbnRleHQ6OndlYmtpdFBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQorewor
ICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShleGVjLCBpbXBsKCksIFBlcm1pdFRyYW5zZmVy
YWJsZXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggNDM5NjY0YS4u
ZmVjM2QwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
RXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcApAQCAtNDQsMzggKzQ0LDUyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogSlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6cG9ydHMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAog
ewotICAgIE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzID0gc3RhdGljX2Nhc3Q8TWVzc2FnZUV2ZW50
Kj4oaW1wbCgpKS0+cG9ydHMoKTsKLSAgICBpZiAoIXBvcnRzIHx8IHBvcnRzLT5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBqc051bGwoKTsKLQorICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBz
dGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPihpbXBsKCkpOworICAgIFRyYW5zZmVyYWJsZUFycmF5
KiB0cmFuc2ZlcmFibGVzID0gZXZlbnQtPnRyYW5zZmVyYWJsZXMoKTsKKyAgICBpZiAoIXRyYW5z
ZmVyYWJsZXMgfHwgdHJhbnNmZXJhYmxlcy0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gY29u
c3RydWN0RW1wdHlBcnJheShleGVjLCBnbG9iYWxPYmplY3QoKSk7CiAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgbGlzdDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvcnRzLT5zaXplKCk7
IGkrKykKLSAgICAgICAgbGlzdC5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgKCpw
b3J0cylbaV0uZ2V0KCkpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZmVyYWJs
ZXMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQg
PSAoKnRyYW5zZmVyYWJsZXMpW2ldLmdldCgpLT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgICAg
ICBsaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBtZXNzYWdlUG9ydCkpOwor
ICAgIH0KICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGxp
c3QpOwogfQogCi1KU0M6OkpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgSlNDOjpKU1ZhbHVlIGluaXRNZXNzYWdlRXZl
bnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTTWVzc2FnZUV2ZW50KiBqc0V2ZW50LCBNZXNzYWdl
UGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlKQogewogICAgIGNvbnN0IFVTdHJpbmcmIHR5
cGVBcmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKICAgICBib29sIGNhbkJ1
YmJsZUFyZyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvQm9vbGVhbihleGVjKTsKICAgICBib29sIGNh
bmNlbGFibGVBcmcgPSBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGFBcmcgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgzKSk7CisgICAgT3duUHRyPFRyYW5z
ZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVzOworICAgIE93blB0cjxKU1ZhbHVlQXJyYXk+IHZh
bHVlQXJyYXk7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudCg3KS5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7CisgICAgICAgIHRyYW5zZmVyYWJsZXMgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlQXJy
YXkpOworICAgICAgICB2YWx1ZUFycmF5ID0gYWRvcHRQdHIobmV3IEpTVmFsdWVBcnJheSk7Cisg
ICAgICAgIGZpbGxUcmFuc2ZlcmFibGVBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCg3KSwgKnRy
YW5zZmVyYWJsZXMsICp2YWx1ZUFycmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpOworICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YUFyZyA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDMpLCB2YWx1
ZUFycmF5LmdldCgpLCBtZXNzYWdlUGFzc2luZ01vZGUsIFRocm93aW5nKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGNv
bnN0IFVTdHJpbmcmIG9yaWdpbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDQpLnRvU3RyaW5nKGV4ZWMp
OwogICAgIGNvbnN0IFVTdHJpbmcmIGxhc3RFdmVudElkQXJnID0gZXhlYy0+YXJndW1lbnQoNSku
dG9TdHJpbmcoZXhlYyk7CiAgICAgRE9NV2luZG93KiBzb3VyY2VBcmcgPSB0b0RPTVdpbmRvdyhl
eGVjLT5hcmd1bWVudCg2KSk7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQ
b3J0czsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDcpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsK
LSAgICAgICAgbWVzc2FnZVBvcnRzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkpOwot
ICAgICAgICBmaWxsTWVzc2FnZVBvcnRBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCg3KSwgKm1l
c3NhZ2VQb3J0cyk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KIAotICAgIE1lc3NhZ2VFdmVudCogZXZl
bnQgPSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPih0aGlzLT5pbXBsKCkpOwotICAgIGV2ZW50
LT5pbml0TWVzc2FnZUV2ZW50KHVzdHJpbmdUb0F0b21pY1N0cmluZyh0eXBlQXJnKSwgY2FuQnVi
YmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCB1c3RyaW5nVG9TdHJpbmcob3JpZ2luQXJn
KSwgdXN0cmluZ1RvU3RyaW5nKGxhc3RFdmVudElkQXJnKSwgc291cmNlQXJnLCBtZXNzYWdlUG9y
dHMucmVsZWFzZSgpKTsKKyAgICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0gc3RhdGljX2Nhc3Q8TWVz
c2FnZUV2ZW50Kj4oanNFdmVudC0+aW1wbCgpKTsKKyAgICBldmVudC0+aW5pdE1lc3NhZ2VFdmVu
dCh1c3RyaW5nVG9BdG9taWNTdHJpbmcodHlwZUFyZyksIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJs
ZUFyZywgZGF0YUFyZy5yZWxlYXNlKCksIHVzdHJpbmdUb1N0cmluZyhvcmlnaW5BcmcpLCB1c3Ry
aW5nVG9TdHJpbmcobGFzdEV2ZW50SWRBcmcpLCBzb3VyY2VBcmcsIHRyYW5zZmVyYWJsZXMucmVs
ZWFzZSgpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAorSlNDOjpKU1ZhbHVlIEpT
TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRlKiBleGVjKQorewor
ICAgIHJldHVybiBXZWJDb3JlOjppbml0TWVzc2FnZUV2ZW50KGV4ZWMsIHRoaXMsIE9ubHlNZXNz
YWdlUG9ydHMpOworfQorCitKU0M6OkpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OndlYmtpdEluaXRN
ZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6
OmluaXRNZXNzYWdlRXZlbnQoZXhlYywgdGhpcywgUGVybWl0VHJhbnNmZXJhYmxlcyk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKaW5kZXggYWMwNmM2YS4uZTQwNDE1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRl
ICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCkBAIC01NywxNSArNTgsMjEg
QEAgdm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogCiBKU0M6OkpTVmFsdWUgSlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSk7
CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSwgT25seU1lc3NhZ2VQ
b3J0cyk7CiB9CiAKLXZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYgcG9ydEFycmF5KQorSlND
OjpKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OndlYmtpdFBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRl
KiBleGVjKQogewotICAgIC8vIENvbnZlcnQgZnJvbSB0aGUgcGFzc2VkLWluIEpTIGFycmF5LWxp
a2Ugb2JqZWN0IHRvIGEgTWVzc2FnZVBvcnRBcnJheS4KKyAgICByZXR1cm4gaGFuZGxlUG9zdE1l
c3NhZ2UoZXhlYywgaW1wbCgpLCBQZXJtaXRUcmFuc2ZlcmFibGVzKTsKK30KKwordm9pZCBmaWxs
VHJhbnNmZXJhYmxlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1
ZSwgVHJhbnNmZXJhYmxlQXJyYXkmIHRyYW5zZmVyYWJsZUFycmF5LCBKU1ZhbHVlQXJyYXkmIHZh
bHVlQXJyYXksIE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUpCit7CisgICAg
Ly8gQ29udmVydCBmcm9tIHRoZSBwYXNzZWQtaW4gSlMgYXJyYXktbGlrZSBvYmplY3QgdG8gYSBU
cmFuc2ZlcmFibGVBcnJheS4KICAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVy
IHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlv
biA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYy4KICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkgewotICAgICAgICBwb3J0QXJyYXkucmVzaXplKDApOworICAgICAgICB0cmFuc2ZlcmFi
bGVBcnJheS5yZXNpemUoMCk7CisgICAgICAgIHZhbHVlQXJyYXkucmVzaXplKDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC04MSwxOCArODgsMzggQEAgdm9pZCBmaWxsTWVzc2FnZVBv
cnRBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdl
UG9ydEEKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgLy8gVmFsaWRhdGlvbiBvZiBub24t
bnVsbCBvYmplY3RzLCBwZXIgSFRNTDUgc3BlYyA4LjMuMy4KICAgICAgICAgaWYgKHZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJ
TlZBTElEX1NUQVRFX0VSUik7CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgREFU
QV9DTE9ORV9FUlIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKwogICAgICAg
ICAvLyBWYWxpZGF0aW9uIG9mIE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFjZSwgcGVy
IFdlYklETCBzcGVjIDQuMS4xNS4KLSAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0g
dG9NZXNzYWdlUG9ydCh2YWx1ZSk7Ci0gICAgICAgIGlmICghcG9ydCkgeworICAgICAgICBSZWZQ
dHI8VHJhbnNmZXJhYmxlPiB0cmFuc2ZlcmFibGUgPSB0b05hdGl2ZVRyYW5zZmVyYWJsZSh2YWx1
ZSk7CisgICAgICAgIGlmICghdHJhbnNmZXJhYmxlIHx8IChtZXNzYWdlUGFzc2luZ01vZGUgPT0g
T25seU1lc3NhZ2VQb3J0cyAmJiAhdHJhbnNmZXJhYmxlLT5hc01lc3NhZ2VQb3J0KCkpKSB7CiAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBwb3J0QXJyYXkuYXBwZW5kKHBvcnQucmVsZWFzZSgpKTsKKyAgICAg
ICAgdHJhbnNmZXJhYmxlQXJyYXkuYXBwZW5kKHRyYW5zZmVyYWJsZS5yZWxlYXNlKCkpOworICAg
ICAgICB2YWx1ZUFycmF5LmFwcGVuZCh2YWx1ZSk7CiAgICAgfQogfQogCitQYXNzUmVmUHRyPFRy
YW5zZmVyYWJsZT4gdG9OYXRpdmVUcmFuc2ZlcmFibGUoSlNDOjpKU1ZhbHVlIHZhbHVlKQorewor
ICAgIFJlZlB0cjxUcmFuc2ZlcmFibGU+IG91dFZhbHVlID0gdG9NZXNzYWdlUG9ydCh2YWx1ZSk7
CisgICAgaWYgKG91dFZhbHVlKQorICAgICAgICByZXR1cm4gb3V0VmFsdWUucmVsZWFzZSgpOwor
ICAgIC8vIFdlJ2xsIHJldHVybiBudWxsIGlmIHZhbHVlIGlzIG5vdCBUcmFuc2ZlcmFibGUgaW4g
YW55IGNhc2UuCisgICAgcmV0dXJuIG91dFZhbHVlLnJlbGVhc2UoKTsKK30KKworSlNDOjpKU1Zh
bHVlIHRvSlNUcmFuc2ZlcmFibGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRyYW5zZmVyYWJsZSogdmFsdWUpCit7CisgICAgaWYgKE1lc3Nh
Z2VQb3J0KiBtZXNzYWdlUG9ydCA9IHZhbHVlLT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnQpOworICAgIC8vIFRoaXMg
dHlwZWNhc2Ugc2hvdWxkIGFsd2F5cyBiZSB0b3RhbC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQ
b3J0Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgKaW5kZXggODM5NmFlMS4uYzlhMDEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaApAQCAtMzIsNiArMzIsOCBAQAogI2RlZmlu
ZSBKU01lc3NhZ2VQb3J0Q3VzdG9tX2gKIAogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgi
CiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IApAQCAtMzksMjYgKzQxLDMxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CiAKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcHVsbHMg
dGhlIHZhbHVlcyBvdXQgb2YgYSBKUyBzZXF1ZW5jZSBhbmQgaW50byBhIE1lc3NhZ2VQb3J0QXJy
YXkuCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxzIHRoZSB2YWx1ZXMgb3V0IG9m
IGEgSlMgc2VxdWVuY2UgYW5kIGludG8gYSBUcmFuc2ZlcmFibGVBcnJheSwgbWlycm9yaW5nIHRo
ZXNlIGludG8gYSBKU1ZhbHVlQXJyYXkuCiAgICAgLy8gQWxzbyB2YWxpZGF0ZXMgdGhlIGVsZW1l
bnRzIHBlciBzZWN0aW9ucyA0LjEuMTMgYW5kIDQuMS4xNSBvZiB0aGUgV2ViSURMIHNwZWMgYW5k
IHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMuCiAgICAgLy8gTWF5IGdlbmVyYXRlIGFu
IGV4Y2VwdGlvbiB2aWEgdGhlIHBhc3NlZCBFeGVjU3RhdGUuCi0gICAgdm9pZCBmaWxsTWVzc2Fn
ZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgTWVzc2FnZVBvcnRBcnJh
eSYpOworICAgIHZvaWQgZmlsbFRyYW5zZmVyYWJsZUFycmF5KEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBUcmFuc2ZlcmFibGVBcnJheSYsIEpTVmFsdWVBcnJheSYsIE1lc3NhZ2VQYXNz
aW5nTW9kZSk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBmcm9tIEpTIHBv
c3RNZXNzYWdlIGFyZ3VtZW50cyB0byBXZWJDb3JlIHBvc3RNZXNzYWdlIGFyZ3VtZW50cy4KICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGhhbmRsZVBv
c3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsKQorICAgIGlubGluZSBKU0M6
OkpTVmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGws
IE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUpCiAgICAgewotICAgICAgICBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICAgICAgTWVzc2Fn
ZVBvcnRBcnJheSBwb3J0QXJyYXk7Ci0gICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDEpLCBwb3J0QXJyYXkpOworICAgICAgICBUcmFuc2ZlcmFibGVBcnJh
eSB0cmFuc2ZlcmFibGVBcnJheTsKKyAgICAgICAgSlNWYWx1ZUFycmF5IHZhbHVlUmVmQXJyYXk7
CisgICAgICAgIGZpbGxUcmFuc2ZlcmFibGVBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwg
dHJhbnNmZXJhYmxlQXJyYXksIHZhbHVlUmVmQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSk7Cisg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBKU0M6
OmpzVW5kZWZpbmVkKCk7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVu
dCgwKSwgJnZhbHVlUmVmQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSwgVGhyb3dpbmcpOwogICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpq
c1VuZGVmaW5lZCgpOwogCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBp
bXBsLT5wb3N0TWVzc2FnZShtZXNzYWdlLCAmcG9ydEFycmF5LCBlYyk7CisgICAgICAgIGltcGwt
PnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmdHJhbnNmZXJhYmxlQXJyYXksIGVjKTsK
ICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICAgICAgcmV0dXJuIEpTQzo6
anNVbmRlZmluZWQoKTsKICAgICB9CiAKKyAgICBQYXNzUmVmUHRyPFRyYW5zZmVyYWJsZT4gdG9O
YXRpdmVUcmFuc2ZlcmFibGUoSlNDOjpKU1ZhbHVlKTsKKyAgICBKU0M6OkpTVmFsdWUgdG9KU1Ry
YW5zZmVyYWJsZShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVHJhbnNmZXJh
YmxlKik7CiB9CiAjZW5kaWYgLy8gSlNNZXNzYWdlUG9ydEN1c3RvbV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKaW5kZXggMjc1ODBhZS4uMDQyOGMy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcApA
QCAtNDEsNyArNDEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgSlNX
b3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBo
YW5kbGVQb3N0TWVzc2FnZShleGVjLCBpbXBsKCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVz
c2FnZShleGVjLCBpbXBsKCksIE9ubHlNZXNzYWdlUG9ydHMpOworfQorCitKU0M6OkpTVmFsdWUg
SlNXb3JrZXI6OndlYmtpdFBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQoreworICAg
IHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShleGVjLCBpbXBsKCksIFBlcm1pdFRyYW5zZmVyYWJs
ZXMpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTV29ya2VyQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA0OTY2YWUwLi5mNTgyMzMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMDAsMTQgKzEwMCwx
NCBAQCBib29sIFNjcmlwdFZhbHVlOjppc0Z1bmN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZ2V0
Q2FsbERhdGEobV92YWx1ZS5nZXQoKSwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsKIH0KIAot
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhj
ZXB0aW9ucykKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTY3JpcHRWYWx1ZTo6
c2VyaWFsaXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zl
ckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUsIFNlcmlhbGl6YXRp
b25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewotICAgIHJldHVybiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0ZSwganNWYWx1ZSgpLCB0aHJvd0V4Y2VwdGlvbnMp
OworICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0ZSwg
anNWYWx1ZSgpLCB0cmFuc2Zlckxpc3QsIG1lc3NhZ2VQYXNzaW5nTW9kZSwgdGhyb3dFeGNlcHRp
b25zKTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgU2VyaWFsaXph
dGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitTY3JpcHRWYWx1ZSBTY3JpcHRWYWx1ZTo6
ZGVzZXJpYWxpemUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIHZhbHVlLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgU2VyaWFsaXphdGlvbkVycm9y
TW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0
YXRlLT5nbG9iYWxEYXRhKCksIHZhbHVlLT5kZXNlcmlhbGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0
U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdGhyb3dFeGNlcHRpb25zKSk7CisgICAgcmV0
dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIHZhbHVlLT5kZXNlcmlh
bGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdHJh
bnNmZXJMaXN0LCB0aHJvd0V4Y2VwdGlvbnMpKTsKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaAppbmRleCBmYWRlODMwLi5h
NjA0OTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKQEAgLTYy
LDggKzYyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdFZh
bHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9CiAK
LSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplKFNjcmlwdFN0
YXRlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKLSAgICBzdGF0aWMgU2Ny
aXB0VmFsdWUgZGVzZXJpYWxpemUoU2NyaXB0U3RhdGUqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworICAgIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemUoU2NyaXB0U3RhdGUqLCBKU1ZhbHVlQXJyYXkq
IHRyYW5zZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2Rl
ID0gVGhyb3dpbmcpOworICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZShTY3JpcHRT
dGF0ZSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0
LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwogCiAgICAgc3RhdGljIFNjcmlw
dFZhbHVlIHVuZGVmaW5lZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA4YmFmOTE5Li4zYTdmNzgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJKU0ZpbGUuaCIKICNpbmNsdWRlICJK
U0ZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiSlNJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJKU01lc3Nh
Z2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxsaW1pdHM+CkBAIC05Niw4ICs5Nyw5IEBAIGVudW0gU2Vy
aWFsaXphdGlvblRhZyB7CiAgKgogICogSW5pdGlhbCB2ZXJzaW9uIHdhcyAxLgogICogVmVyc2lv
biAyLiBhZGRlZCB0aGUgT2JqZWN0UmVmZXJlbmNlVGFnIGFuZCBzdXBwb3J0IGZvciBzZXJpYWxp
emF0aW9uIG9mIGN5Y2xpYyBncmFwaHMuCisgKiBWZXJzaW9uIDMuIGFkZGVkIHRyYW5zZmVyIGxp
c3RzLgogICovCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IEN1cnJlbnRWZXJzaW9uID0gMjsK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgQ3VycmVudFZlcnNpb24gPSAzOwogc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGludCBUZXJtaW5hdG9yVGFnID0gMHhGRkZGRkZGRjsKIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpbnQgU3RyaW5nUG9vbFRhZyA9IDB4RkZGRkZGRkU7CiAKQEAgLTI1MCw5ICsy
NTIsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgd3JpdGVMaXR0bGVFbmRp
YW4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbgogCiBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIg
OiBDbG9uZUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSBzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8dWludDhf
dD4mIG91dCkKKyAgICBzdGF0aWMgU2VyaWFsaXphdGlvblJldHVybkNvZGUgc2VyaWFsaXplKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3Qs
IE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUsIFZlY3Rvcjx1aW50OF90PiYg
b3V0KQogICAgIHsKLSAgICAgICAgQ2xvbmVTZXJpYWxpemVyIHNlcmlhbGl6ZXIoZXhlYywgb3V0
KTsKKyAgICAgICAgQ2xvbmVTZXJpYWxpemVyIHNlcmlhbGl6ZXIoZXhlYywgdHJhbnNmZXJMaXN0
LCBtZXNzYWdlUGFzc2luZ01vZGUsIG91dCk7CiAgICAgICAgIHJldHVybiBzZXJpYWxpemVyLnNl
cmlhbGl6ZSh2YWx1ZSk7CiAgICAgfQogCkBAIC0yNjksMTAgKzI3MSwxMyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIENsb25lU2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMsIFZl
Y3Rvcjx1aW50OF90PiYgb3V0KQorICAgIENsb25lU2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBh
c3NpbmdNb2RlLCBWZWN0b3I8dWludDhfdD4mIG91dCkKICAgICAgICAgOiBDbG9uZUJhc2UoZXhl
YykKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCiAgICAgICAgICwgbV9lbXB0eUlkZW50aWZpZXIo
ZXhlYywgVVN0cmluZygiIiwgMCkpCisgICAgICAgICwgbV90cmFuc2Zlckxpc3QodHJhbnNmZXJM
aXN0KQorICAgICAgICAsIG1fbWVzc2FnZVBhc3NpbmdNb2RlKG1lc3NhZ2VQYXNzaW5nTW9kZSkK
KyAgICAgICAgLCBtX21pbmltdW1WYWxpZFJlZmVyZW5jZSgwKQogICAgIHsKICAgICAgICAgd3Jp
dGUoQ3VycmVudFZlcnNpb24pOwogICAgIH0KQEAgLTI4NywxMyArMjkyLDMzIEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBvYmplY3Qp
IHx8IG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbyk7CiAgICAgfQogCisgICAgYm9v
bCBpbml0aWFsaXplV2l0aFRyYW5zZmVyTGlzdCgpCisgICAgeworICAgICAgICBpZiAoIW1fdHJh
bnNmZXJMaXN0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV90cmFuc2Zlckxpc3QtPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gKCptX3RyYW5zZmVyTGlzdClbaV07CisgICAgICAgICAgICBKU09iamVj
dCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CisgICAgICAgICAgICBpZiAoIW9iamVjdCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBwYWlyPE9iamVjdFBv
b2w6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9vYmplY3RQb29sLmFkZChvYmplY3QsIG1fb2Jq
ZWN0UG9vbC5zaXplKCkpOworICAgICAgICAgICAgLy8gQWxsIG9iamVjdHMgaW4gdGhlIHRyYW5z
ZmVyIGxpc3QgbXVzdCBiZSB1bmlxdWUuCisgICAgICAgICAgICBpZiAoIWl0ZXIuc2Vjb25kKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBw
ZW5kKHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9tZXNzYWdlUGFzc2luZ01vZGUg
PT0gT25seU1lc3NhZ2VQb3J0cykKKyAgICAgICAgICAgIG1fbWluaW11bVZhbGlkUmVmZXJlbmNl
ID0gbV9vYmplY3RQb29sLnNpemUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAg
ICAgYm9vbCBzdGFydE9iamVjdEludGVybmFsKEpTT2JqZWN0KiBvYmplY3QpCiAgICAgewogICAg
ICAgICAvLyBSZWNvcmQgb2JqZWN0IGZvciBncmFwaCByZWNvbnN0cnVjdGlvbgogICAgICAgICBw
YWlyPE9iamVjdFBvb2w6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9vYmplY3RQb29sLmFkZChv
YmplY3QsIG1fb2JqZWN0UG9vbC5zaXplKCkpOwogICAgICAgICAKICAgICAgICAgLy8gSGFuZGxl
IGR1cGxpY2F0ZSByZWZlcmVuY2VzCi0gICAgICAgIGlmICghaXRlci5zZWNvbmQpIHsKKyAgICAg
ICAgaWYgKCFpdGVyLnNlY29uZCAmJiBpdGVyLmZpcnN0LT5zZWNvbmQgPj0gbV9taW5pbXVtVmFs
aWRSZWZlcmVuY2UpIHsKICAgICAgICAgICAgIHdyaXRlKE9iamVjdFJlZmVyZW5jZVRhZyk7CiAg
ICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaXRlci5maXJzdC0+c2Vjb25k
KSA8IG1fb2JqZWN0UG9vbC5zaXplKCkpOwogICAgICAgICAgICAgd3JpdGVPYmplY3RJbmRleChp
dGVyLmZpcnN0LT5zZWNvbmQpOwpAQCAtNjA2LDYgKzYzMSw5IEBAIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgdWludDMyX3QsIElkZW50aWZpZXJSZXBI
YXNoPiBTdHJpbmdDb25zdGFudFBvb2w7CiAgICAgU3RyaW5nQ29uc3RhbnRQb29sIG1fY29uc3Rh
bnRQb29sOwogICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CisgICAgSlNWYWx1ZUFy
cmF5KiBtX3RyYW5zZmVyTGlzdDsKKyAgICBNZXNzYWdlUGFzc2luZ01vZGUgbV9tZXNzYWdlUGFz
c2luZ01vZGU7CisgICAgc2l6ZV90IG1fbWluaW11bVZhbGlkUmVmZXJlbmNlOwogfTsKIAogU2Vy
aWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBp
bikKQEAgLTYxOCw2ICs2NDYsMTAgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJp
YWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICBWZWN0b3I8V2Fsa2VyU3RhdGUsIDE2
PiBzdGF0ZVN0YWNrOwogICAgIFdhbGtlclN0YXRlIHN0YXRlID0gU3RhdGVVbmtub3duOwogICAg
IEpTVmFsdWUgaW5WYWx1ZSA9IGluOworICAgIGlmICghaW5pdGlhbGl6ZVdpdGhUcmFuc2Zlckxp
c3QoKSkgeworICAgICAgICBtX2ZhaWxlZCA9IHRydWU7CisgICAgICAgIHJldHVybiBWYWxpZGF0
aW9uRXJyb3I7CisgICAgfQogICAgIHVuc2lnbmVkIHRpY2tDb3VudCA9IHRpY2tzVW50aWxOZXh0
Q2hlY2soKTsKICAgICB3aGlsZSAoMSkgewogICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CkBAIC03
ODMsMTEgKzgxNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJpbmcoc3RyLmltcGwo
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYnVmZmVyKQorICAgIHN0YXRpYyBEZXNlcmlhbGl6YXRpb25SZXN1bHQg
ZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZm
ZXIpCiAgICAgewogICAgICAgICBpZiAoIWJ1ZmZlci5zaXplKCkpCiAgICAgICAgICAgICByZXR1
cm4gbWFrZV9wYWlyKGpzTnVsbCgpLCBVbnNwZWNpZmllZEVycm9yKTsKLSAgICAgICAgQ2xvbmVE
ZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgYnVmZmVyKTsKKyAg
ICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVyKGV4ZWMsIGdsb2JhbE9iamVjdCwg
dHJhbnNmZXJMaXN0LCBidWZmZXIpOwogICAgICAgICBpZiAoIWRlc2VyaWFsaXplci5pc1ZhbGlk
KCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZV9wYWlyKEpTVmFsdWUoKSwgVmFsaWRhdGlvbkVy
cm9yKTsKICAgICAgICAgcmV0dXJuIGRlc2VyaWFsaXplci5kZXNlcmlhbGl6ZSgpOwpAQCAtODMy
LDEzICs4NjQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgc2l6ZV90IG1faW5kZXg7CiAgICAgfTsK
IAotICAgIENsb25lRGVzZXJpYWxpemVyKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCisgICAgQ2xvbmVE
ZXNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZm
ZXIpCiAgICAgICAgIDogQ2xvbmVCYXNlKGV4ZWMpCiAgICAgICAgICwgbV9nbG9iYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0KQogICAgICAgICAsIG1faXNET01HbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
LT5pbmhlcml0cygmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbykpCiAgICAgICAgICwgbV9wdHIo
YnVmZmVyLmRhdGEoKSkKICAgICAgICAgLCBtX2VuZChidWZmZXIuZGF0YSgpICsgYnVmZmVyLnNp
emUoKSkKICAgICAgICAgLCBtX3ZlcnNpb24oMHhGRkZGRkZGRikKKyAgICAgICAgLCBtX3RyYW5z
ZmVyTGlzdCh0cmFuc2Zlckxpc3QpCiAgICAgewogICAgICAgICBpZiAoIXJlYWQobV92ZXJzaW9u
KSkKICAgICAgICAgICAgIG1fdmVyc2lvbiA9IDB4RkZGRkZGRkY7CkBAIC0xMTg5LDYgKzEyMjIs
NyBAQCBwcml2YXRlOgogICAgIGNvbnN0IHVpbnQ4X3QqIG1fZW5kOwogICAgIHVuc2lnbmVkIG1f
dmVyc2lvbjsKICAgICBWZWN0b3I8Q2FjaGVkU3RyaW5nPiBtX2NvbnN0YW50UG9vbDsKKyAgICBK
U1ZhbHVlQXJyYXkqIG1fdHJhbnNmZXJMaXN0OwogfTsKIAogRGVzZXJpYWxpemF0aW9uUmVzdWx0
IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCkBAIC0xMjAxLDYgKzEyMzUsMTEgQEAg
RGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCiAg
ICAgV2Fsa2VyU3RhdGUgc3RhdGUgPSBTdGF0ZVVua25vd247CiAgICAgSlNWYWx1ZSBvdXRWYWx1
ZTsKIAorICAgIGlmIChtX3RyYW5zZmVyTGlzdCkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fdHJhbnNmZXJMaXN0LT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fZ2NCdWZm
ZXIuYXBwZW5kKCgqbV90cmFuc2Zlckxpc3QpW2ldKTsKKyAgICB9CisKICAgICB1bnNpZ25lZCB0
aWNrQ291bnQgPSB0aWNrc1VudGlsTmV4dENoZWNrKCk7CiAgICAgd2hpbGUgKDEpIHsKICAgICAg
ICAgc3dpdGNoIChzdGF0ZSkgewpAQCAtMTMzOCwxMCArMTM3NywxNSBAQCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikK
ICAgICBtX2RhdGEuc3dhcChidWZmZXIpOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK1Bh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIGNyZWF0
ZShleGVjLCB2YWx1ZSwgMCwgT25seU1lc3NhZ2VQb3J0cywgVGhyb3dpbmcpOworfQorCitQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVy
TGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSwgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZl
cjsKLSAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpz
ZXJpYWxpemUoZXhlYywgdmFsdWUsIGJ1ZmZlcik7CisgICAgU2VyaWFsaXphdGlvblJldHVybkNv
ZGUgY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKGV4ZWMsIHZhbHVlLCB0cmFuc2Zl
ckxpc3QsIG1lc3NhZ2VQYXNzaW5nTW9kZSwgYnVmZmVyKTsKICAgICBpZiAodGhyb3dFeGNlcHRp
b25zID09IFRocm93aW5nKQogICAgICAgICBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0
aW9uRmFpbGVkKGV4ZWMsIGNvZGUpOwogCkBAIC0xMzY3LDEwICsxNDExLDE1IEBAIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIHN0CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpZ2luQ29udGV4dCwgSlNW
YWx1ZVJlZiBhcGlWYWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogeworICAgIHJldHVybiBj
cmVhdGUob3JpZ2luQ29udGV4dCwgYXBpVmFsdWUsIGV4Y2VwdGlvbiwgMCwgT25seU1lc3NhZ2VQ
b3J0cyk7Cit9CisKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpZ2luQ29udGV4dCwgSlNWYWx1ZVJl
ZiBhcGlWYWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVy
TGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSkKK3sKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB0b0pTKG9yaWdpbkNvbnRleHQpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRy
eVNoaW0oZXhlYyk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywgYXBpVmFsdWUpOwot
ICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCB2YWx1ZSk7CisgICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoZXhlYywgdmFsdWUsIHRyYW5zZmVyTGlzdCwgbWVzc2FnZVBhc3NpbmdNb2Rl
LCBUaHJvd2luZyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGlm
IChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgZXhlYy0+
ZXhjZXB0aW9uKCkpOwpAQCAtMTM3OCw3ICsxNDI3LDcgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBv
cmkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIEFTU0VSVChzZXJpYWxpemVkVmFsdWUp
OwotICAgIHJldHVybiBzZXJpYWxpemVkVmFsdWU7CisgICAgcmV0dXJuIHNlcmlhbGl6ZWRWYWx1
ZS5yZWxlYXNlKCk7CiB9CiAKIFN0cmluZyBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRvU3RyaW5n
KCkKQEAgLTEzODYsMTkgKzE0MzUsMTkgQEAgU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
dG9TdHJpbmcoKQogICAgIHJldHVybiBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemVTdHJp
bmcobV9kYXRhKTsKIH0KIAotSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitKU1ZhbHVlIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgU2VyaWFsaXphdGlvbkVycm9y
TW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7Ci0gICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJlc3Vs
dCA9IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZShleGVjLCBnbG9iYWxPYmplY3QsIG1f
ZGF0YSk7CisgICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJlc3VsdCA9IENsb25lRGVzZXJpYWxp
emVyOjpkZXNlcmlhbGl6ZShleGVjLCBnbG9iYWxPYmplY3QsIHRyYW5zZmVyTGlzdCwgbV9kYXRh
KTsKICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFRocm93aW5nKQogICAgICAgICBtYXliZVRo
cm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKGV4ZWMsIHJlc3VsdC5zZWNvbmQpOwog
ICAgIHJldHVybiByZXN1bHQuZmlyc3Q7CiB9CiAKLUpTVmFsdWVSZWYgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25Db250ZXh0LCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCitKU1ZhbHVlUmVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpemUoSlNDb250ZXh0UmVmIGRlc3RpbmF0aW9uQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCkKIHsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGRlc3RpbmF0aW9uQ29udGV4dCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hp
bShleGVjKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemUoZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB0cmFuc2Zlckxpc3QpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAg
ICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigpKTsKQEAgLTE0MDks
NiArMTQ1OCwyNCBAQCBKU1ZhbHVlUmVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emUoSlNDb250ZXh0UmVmIGRlc3RpbmF0aW9uQ29udGV4dCwgSgogICAgIHJldHVybiB0b1JlZihl
eGVjLCB2YWx1ZSk7CiB9CiAKK0pTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRyYW5z
ZmVyYWJsZUFycmF5KiB0cmFuc2Zlckxpc3QsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dF
eGNlcHRpb25zKQoreworICAgIEpTVmFsdWVBcnJheSB0cmFuc2ZlclZhbHVlTGlzdDsKKyAgICBp
ZiAodHJhbnNmZXJMaXN0ICYmICFvcGVuVHJhbnNmZXJhYmxlQXJyYXkoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCAqdHJhbnNmZXJMaXN0LCB0cmFuc2ZlclZhbHVlTGlzdCkpIHsKKyAgICAgICAgaWYgKHRo
cm93RXhjZXB0aW9ucyA9PSBUaHJvd2luZykKKyAgICAgICAgICAgIG1heWJlVGhyb3dFeGNlcHRp
b25JZlNlcmlhbGl6YXRpb25GYWlsZWQoZXhlYywgVmFsaWRhdGlvbkVycm9yKTsKKyAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiBkZXNlcmlhbGl6ZShleGVj
LCBnbG9iYWxPYmplY3QsICZ0cmFuc2ZlclZhbHVlTGlzdCwgdGhyb3dFeGNlcHRpb25zKTsKK30K
KworYm9vbCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om9wZW5UcmFuc2ZlcmFibGVBcnJheShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRyYW5zZmVyYWJsZUFy
cmF5JiB0cmFuc2Zlckxpc3QsIEpTVmFsdWVBcnJheSYgdmFsdWVBcnJheSkKK3sKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZmVyTGlzdC5zaXplKCk7ICsraSkKKyAgICAgICAgdmFs
dWVBcnJheS5hcHBlbmQodG9KU1RyYW5zZmVyYWJsZShleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksIHRyYW5zZmVyTGlzdFtpXS5nZXQoKSkpOworICAg
IHJldHVybiB0cnVlOworfQorCiBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6bnVsbFZhbHVlKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBlbXB0eVZhbHVlLCAoU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAppbmRleCAzZmU0ZTAyLi4xMjdkMzA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzgsNiAr
MzgsMTAgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBUcmFuc2ZlcmFibGU7CisKK3R5cGVkZWYg
VmVjdG9yPEpTQzo6SlNWYWx1ZSwgMT4gSlNWYWx1ZUFycmF5OwordHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5OwogIAogZW51bSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZSB7CiAgICAgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkLApAQCAtNTAsMTIg
KzU0LDE4IEBAIGVudW0gU2VyaWFsaXphdGlvblJldHVybkNvZGUgewogICAgIAogZW51bSBTZXJp
YWxpemF0aW9uRXJyb3JNb2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CiAKK2VudW0gTWVz
c2FnZVBhc3NpbmdNb2RlIHsgT25seU1lc3NhZ2VQb3J0cywgUGVybWl0VHJhbnNmZXJhYmxlcyB9
OworCiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcp
OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKKyAg
ICAvLyBJZiBNZXNzYWdlUGFzc2luZ01vZGUgaXMgT25seU1lc3NhZ2VQb3J0cywgdGhlbiBpdGVt
cyBpbiB0cmFuc2Zlckxpc3Qgd2lsbCBub3QgYmUgcmVmZXJyZWQgdG8gYnkgb2JqZWN0IHJlZmVy
ZW5jZSBJRCBpbiB0aGUgc2VyaWFsaXplZCB2YWx1ZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSwgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24sIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01vZGUpOwor
ICAgIC8vIFRoZXNlIGRlZmF1bHQgdG8gdHJhbnNmZXJMaXN0ID0gMCwgTWVzc2FnZVBhc3NpbmdN
b2RlID0gT25seU1lc3NhZ2VQb3J0cywgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5n
LgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBhZG9wdChWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKICAgICB7
CkBAIC02Nyw4ICs3NywxMSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKTsKICAg
ICAKLSAgICBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKLSAgICBK
U1ZhbHVlUmVmIGRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KTsKKyAgICBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QgPSAwLCBTZXJpYWxpemF0
aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworICAgIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlND
b250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIEpTVmFsdWVBcnJheSogdHJhbnNmZXJM
aXN0ID0gMCk7CisgICAgCisgICAgLy8gUHJlZmVyIHRoZSBhYm92ZSA6OmRlc2VyaWFsaXplIChh
cyB0aGlzIGNvbnN0cnVjdHMgYSBKU1ZhbHVlQXJyYXkgYW5kIGNhbGxzIHRoZSBvdGhlciBmdW5j
dGlvbikuCisgICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIFRyYW5zZmVyYWJsZUFycmF5KiA9IDAsIFNlcmlhbGl6YXRpb25F
cnJvck1vZGUgPSBUaHJvd2luZyk7CiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEo
KSB7IHJldHVybiBtX2RhdGE7IH0KIApAQCAtNzcsNiArOTAsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWls
ZWQoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CiAgICAgc3RhdGlj
IGJvb2wgc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlKTsKKyAgICBzdGF0aWMgYm9vbCBvcGVuVHJhbnNmZXJhYmxlQXJyYXkoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgVHJhbnNmZXJhYmxlQXJyYXkmLCBKU1Zh
bHVlQXJyYXkmKTsKICAgICAKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2ln
bmVkIGNoYXI+Jik7CiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
NzRmMGQwOC4uODEyZTk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI3NDEsNyArMjc0MSw3IEBAIHN1YiBOYXRpdmVU
b0pTVmFsdWUKICAgICAgICAgJGltcGxJbmNsdWRlc3siJGpvaW5lZE5hbWUuaCJ9ID0gMTsKICAg
ICB9IGVsc2lmICgkdHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiBvciAkdHlwZSBlcSAi
YW55IikgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCJ9
ID0gMTsKLSAgICAgICAgcmV0dXJuICIkdmFsdWUgPyAkdmFsdWUtPmRlc2VyaWFsaXplKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSA6IGpzTnVsbCgpIjsKKyAgICAgICAgcmV0dXJu
ICIkdmFsdWUgPyAkdmFsdWUtPmRlc2VyaWFsaXplKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBpbXAtPmRhdGFEZXBlbmRlbmNpZXMoKSkgOiBqc051bGwoKSI7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgIyBEZWZhdWx0LCBpbmNsdWRlIGhlYWRlciB3aXRoIHNhbWUgbmFtZS4KICAg
ICAgICAgJGltcGxJbmNsdWRlc3siSlMkdHlwZS5oIn0gPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBkNmMwZmUwLi5j
NTY4NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQpAQCAtMjU4OSw3ICsyNTg5LDcgQEAgRU5ECiAgICAgICAgICRhdHRyQXR0
ciA9ICJzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRhdHRyQXR0cikiOwogICAg
ICAgICBteSAkZ2V0dGVyRnVuYyA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyTmFt
ZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHdyYXBwZXIsICIke2F0dHJOYW1l
fSIsICR7YXR0ckF0dHJ9LCBpbXBsLT4ke2dldHRlckZ1bmN9KCkpOworICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh3cmFwcGVyLCAiJHthdHRyTmFt
ZX0iLCAke2F0dHJBdHRyfSwgaW1wbC0+JHtnZXR0ZXJGdW5jfSgpLCBpbXBsLT4ke2dldHRlckZ1
bmN9RGVwZW5kZW5jaWVzKCkpOwogRU5ECiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAyZDlkMGNkLi5l
NmQ3YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAKICNpbmNsdWRlICJJbnQzMkFycmF5
LmgiCiAjaW5jbHVkZSAiSW50OEFycmF5LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisj
aW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlUmVjZWlwdC5o
IgogI2luY2x1ZGUgIlVpbnQxNkFycmF5LmgiCiAjaW5jbHVkZSAiVWludDMyQXJyYXkuaCIKICNp
bmNsdWRlICJVaW50OEFycmF5LmgiCkBAIC02Myw2ICs2NSw3IEBACiAjaW5jbHVkZSAiVjhJbnQx
NkFycmF5LmgiCiAjaW5jbHVkZSAiVjhJbnQzMkFycmF5LmgiCiAjaW5jbHVkZSAiVjhJbnQ4QXJy
YXkuaCIKKyNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgogI2luY2x1ZGUgIlY4VWludDE2QXJyYXkuaCIKICNpbmNsdWRlICJWOFVpbnQzMkFycmF5
LmgiCkBAIC01NzUsMTMgKzU3OCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIEpTRmFpbHVyZQogICAg
IH07CiAKLSAgICBTZXJpYWxpemVyKFdyaXRlciYgd3JpdGVyLCB2ODo6VHJ5Q2F0Y2gmIHRyeUNh
dGNoKQorICAgIFNlcmlhbGl6ZXIoV3JpdGVyJiB3cml0ZXIsIHY4OjpUcnlDYXRjaCYgdHJ5Q2F0
Y2gsIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlIG1l
c3NhZ2VQYXNzaW5nTW9kZSkKICAgICAgICAgOiBtX3dyaXRlcih3cml0ZXIpCiAgICAgICAgICwg
bV90cnlDYXRjaCh0cnlDYXRjaCkKICAgICAgICAgLCBtX2RlcHRoKDApCiAgICAgICAgICwgbV9l
eGVjRGVwdGgoMCkKICAgICAgICAgLCBtX3N0YXR1cyhTdWNjZXNzKQogICAgICAgICAsIG1fbmV4
dE9iamVjdFJlZmVyZW5jZSgwKQorICAgICAgICAsIG1fdHJhbnNmZXJMaXN0KHRyYW5zZmVyTGlz
dCkKKyAgICAgICAgLCBtX21lc3NhZ2VQYXNzaW5nTW9kZShtZXNzYWdlUGFzc2luZ01vZGUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoIXRyeUNhdGNoLkhhc0NhdWdodCgpKTsKICAgICB9CkBAIC01
ODksNiArNTk0LDggQEAgcHVibGljOgogICAgIFN0YXR1cyBzZXJpYWxpemUodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlKQogICAgIHsKICAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwor
ICAgICAgICBpZiAoIWluaXRpYWxpemVPYmplY3RQb29sKCkpCisgICAgICAgICAgICByZXR1cm4g
bV9zdGF0dXM7CiAgICAgICAgIG1fd3JpdGVyLndyaXRlVmVyc2lvbigpOwogICAgICAgICBTdGF0
ZUJhc2UqIHN0YXRlID0gZG9TZXJpYWxpemUodmFsdWUsIDApOwogICAgICAgICB3aGlsZSAoc3Rh
dGUpCkBAIC02MjgsNiArNjM1LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBi
b29sIGluaXRpYWxpemVPYmplY3RQb29sKCk7CisKICAgICBjbGFzcyBTdGF0ZUJhc2UgewogICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdGF0ZUJhc2UpOwogICAgIHB1YmxpYzoKQEAgLTEw
MTEsOCArMTAyMCw0NCBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgVjhPYmplY3RNYXA8djg6Ok9i
amVjdCwgdWludDMyX3Q+IE9iamVjdFBvb2w7CiAgICAgT2JqZWN0UG9vbCBtX29iamVjdFBvb2w7
CiAgICAgdWludDMyX3QgbV9uZXh0T2JqZWN0UmVmZXJlbmNlOworICAgIFZhbHVlSGFuZGxlQXJy
YXkqIG1fdHJhbnNmZXJMaXN0OworICAgIE1lc3NhZ2VQYXNzaW5nTW9kZSBtX21lc3NhZ2VQYXNz
aW5nTW9kZTsKIH07CiAKK2Jvb2wgU2VyaWFsaXplcjo6aW5pdGlhbGl6ZU9iamVjdFBvb2woKQor
eworICAgIGlmICghbV90cmFuc2Zlckxpc3QpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChtX21lc3NhZ2VQYXNzaW5nTW9kZSA9PSBPbmx5TWVzc2FnZVBvcnRzKSB7CisgICAgICAgIC8v
IE9mZnNldCBtX25leHRPYmplY3RSZWZlcmVuY2UgYmVjYXVzZSB3aGVuIHRoZSBvYmplY3QgaXMg
ZGVzZXJpYWxpemVkIHRoZSBvYmplY3QgcmVmZXJlbmNlCisgICAgICAgIC8vIGxpc3Qgd2lsbCBi
ZSBwcmVsb2FkZWQgd2l0aCB0aGUgdHJhbnNmZXIgbGlzdCAod2hldGhlciBPbmx5TWVzc2FnZVBv
cnRzIHdhcyBhc3NlcnRlZCBvcgorICAgICAgICAvLyBub3QgZHVyaW5nIHNlcmlhbGl6YXRpb24p
LgorICAgICAgICBtX25leHRPYmplY3RSZWZlcmVuY2UgPSBtX3RyYW5zZmVyTGlzdC0+c2l6ZSgp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fdHJhbnNmZXJMaXN0LT5zaXplKCk7ICsraSkgeworICAgICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9UcmFuc2ZlciA9ICgqbV90cmFuc2Zlckxpc3QpW2ldOworICAgICAgICBpZiAo
dG9UcmFuc2Zlci0+SXNPYmplY3QoKSB8fCB0b1RyYW5zZmVyLT5Jc0RhdGUoKSB8fCB0b1RyYW5z
ZmVyLT5Jc1JlZ0V4cCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoIXRvVHJhbnNmZXItPklzU3Ry
aW5nKCkpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OE9iamVjdCh0b1Ry
YW5zZmVyLkFzPHY4OjpPYmplY3Q+KCkpOworICAgICAgICAgICAgdWludDMyX3Qgb2JqZWN0UmVm
ZXJlbmNlOworICAgICAgICAgICAgaWYgKG1fb2JqZWN0UG9vbC50cnlHZXQodjhPYmplY3QsICZv
YmplY3RSZWZlcmVuY2UpKSB7CisgICAgICAgICAgICAgICAgLy8gQW4gb2JqZWN0IHdhcyBpbmNs
dWRlZCBpbiB0aGUgdHJhbnNmZXIgbGlzdCBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAgICAgICAg
ICBtX3N0YXR1cyA9IERhdGFDbG9uZUVycm9yOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEFzc2lnbiB0b1RyYW5zZmVyIHRoZSBu
ZXh0IHJlZmVyZW5jZSBJRC4gSWYgd2Ugc2VlIGl0IGluIHRoZSBvYmplY3QgZ3JhcGgsIHdlIHdp
bGwKKyAgICAgICAgICAgIC8vIHBhc3MgaXQgYnkgcmVmZXJlbmNlLgorICAgICAgICAgICAgZ3Jl
eU9iamVjdCh2OE9iamVjdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBBIG5v
bi1vYmplY3Qgd2FzIGluY2x1ZGVkIGluIHRoZSB0cmFuc2ZlciBsaXN0LgorICAgICAgICAgICAg
bV9zdGF0dXMgPSBEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogU2VyaWFsaXplcjo6U3RhdGVC
YXNlKiBTZXJpYWxpemVyOjpkb1NlcmlhbGl6ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IFN0YXRlQmFzZSogbmV4dCkKIHsKICAgICBpZiAobV9leGVjRGVwdGggKyAobmV4dCA/IG5leHQt
PmV4ZWNEZXB0aCgpIDogMCkgPiAxKSB7CkBAIC0xNjUxLDE0ICsxNjk2LDE3IEBAIHByaXZhdGU6
CiAKIGNsYXNzIERlc2VyaWFsaXplciA6IHB1YmxpYyBDb21wb3NpdGVDcmVhdG9yIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBEZXNlcmlhbGl6ZXIoUmVhZGVyJiByZWFkZXIpCisgICAgZXhwbGlj
aXQgRGVzZXJpYWxpemVyKFJlYWRlciYgcmVhZGVyLCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zl
ckxpc3QpCiAgICAgICAgIDogbV9yZWFkZXIocmVhZGVyKQogICAgICAgICAsIG1fdmVyc2lvbigw
KQorICAgICAgICAsIG1fdHJhbnNmZXJMaXN0KHRyYW5zZmVyTGlzdCkKICAgICB7CiAgICAgfQog
CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFsaXplKCkKICAgICB7CisgICAgICAg
IGlmICghaW5pdGlhbGl6ZU9iamVjdFBvb2woKSkKKyAgICAgICAgICAgIHJldHVybiB2ODo6TnVs
bCgpOwogICAgICAgICBpZiAoIW1fcmVhZGVyLnJlYWRWZXJzaW9uKG1fdmVyc2lvbikgfHwgbV92
ZXJzaW9uID4gd2lyZUZvcm1hdFZlcnNpb24pCiAgICAgICAgICAgICByZXR1cm4gdjg6Ok51bGwo
KTsKICAgICAgICAgbV9yZWFkZXIuc2V0VmVyc2lvbihtX3ZlcnNpb24pOwpAQCAtMTc3Miw2ICsx
ODIwLDEzIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgYm9vbCBpbml0aWFsaXpl
T2JqZWN0UG9vbCgpCisgICAgeworICAgICAgICBpZiAobV90cmFuc2Zlckxpc3QpCisgICAgICAg
ICAgICBtX29iamVjdFBvb2wuYXBwZW5kKCptX3RyYW5zZmVyTGlzdCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKwogICAgIGJvb2wgaW5pdGlhbGl6ZU9iamVjdCh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iamVjdCwgdWludDMyX3QgbnVtUHJvcGVydGllcywgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDIgKiBudW1Q
cm9wZXJ0aWVzOwpAQCAtMTgzNywzNCArMTg5Miw2NiBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gPiBtX29iamVjdFBvb2w7CiAgICAgVmVjdG9yPHVpbnQzMl90
PiBtX29wZW5Db21wb3NpdGVSZWZlcmVuY2VTdGFjazsKICAgICB1aW50MzJfdCBtX3ZlcnNpb247
CisgICAgVmFsdWVIYW5kbGVBcnJheSogbV90cmFuc2Zlckxpc3Q7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZQogCiB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9w
ZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KiB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSogdmFsdWUsIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCkKIHsKICAgICBpZiAo
IXZhbHVlKQogICAgICAgICByZXR1cm47Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2Vy
aWFsaXplZCA9IHZhbHVlLT5kZXNlcmlhbGl6ZSgpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBkZXNlcmlhbGl6ZWQgPSB2YWx1ZS0+ZGVzZXJpYWxpemUodHJhbnNmZXJMaXN0KTsKICAgICBv
YmplY3QtPkZvcmNlU2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbChwcm9wZXJ0eU5hbWUpLCBkZXNl
cmlhbGl6ZWQsIGF0dHJpYnV0ZSk7CiB9CiAKIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpk
ZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBj
b25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgYXR0cmlidXRlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1
dGUgYXR0cmlidXRlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFZh
bHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCkKK3sKKyAgICBkZXNlcmlhbGl6ZUFuZFNldFBy
b3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLmdldCgpLCB0cmFu
c2Zlckxpc3QpOworfQorCit2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVB
bmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgY29uc3QgY2hhciog
cHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKiB2YWx1ZSwgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCkKK3sKKyAg
ICBWYWx1ZUhhbmRsZUFycmF5KiB2YWx1ZUhhbmRsZUFycmF5ID0gMDsKKyAgICBWYWx1ZUhhbmRs
ZUFycmF5IGxvY2FsQXJyYXk7CisgICAgaWYgKHRyYW5zZmVyTGlzdCkgeworICAgICAgICBsb2Nh
bEFycmF5LnJlc2VydmVDYXBhY2l0eSh0cmFuc2Zlckxpc3QtPnNpemUoKSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJMaXN0LT5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgIGxvY2FsQXJyYXkuYXBwZW5kKHRvVjhUcmFuc2ZlcmFibGUoKCp0cmFuc2Zlckxpc3QpW2ld
LmdldCgpKSk7CisgICAgICAgIHZhbHVlSGFuZGxlQXJyYXkgPSAmbG9jYWxBcnJheTsKKyAgICB9
CisgICAgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlLCB2YWx1ZSwgdmFsdWVIYW5kbGVBcnJheSk7Cit9CisKK3ZvaWQgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb2JqZWN0LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUg
YXR0cmlidXRlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFRyYW5z
ZmVyYWJsZUFycmF5KiB0cmFuc2Zlckxpc3QpCit7CisgICAgZGVzZXJpYWxpemVBbmRTZXRQcm9w
ZXJ0eShvYmplY3QsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlLCB2YWx1ZS5nZXQoKSwgdHJhbnNm
ZXJMaXN0KTsKK30KKworUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYg
ZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdN
b2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3csIHRyYW5zZmVyTGlzdCwgbWVzc2FnZVBh
c3NpbmdNb2RlKSk7Cit9CisKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFZh
bHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQ
YXNzaW5nTW9kZSkKIHsKLSAgICBkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KG9iamVjdCwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLmdldCgpKTsKKyAgICBib29sIGRpZFRocm93Owor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRU
aHJvdywgdHJhbnNmZXJMaXN0LCBtZXNzYWdlUGFzc2luZ01vZGUpKTsKIH0KIAogUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgZGlkVGhyb3cpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWUsIGRpZFRocm93KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWUsIGRpZFRo
cm93LCAwLCBPbmx5TWVzc2FnZVBvcnRzKSk7CiB9CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUpCiB7CiAgICAgYm9vbCBkaWRUaHJvdzsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3cpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3csIDAsIE9u
bHlNZXNzYWdlUG9ydHMpKTsKIH0KIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUoY29uc3QgU3RyaW5nJiBkYXRh
KQpAQCAtMTkyMCwxNCArMjAwNywxNCBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSgpCiB7CiB9CiAKLVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgZGlkVGhyb3cp
CitTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRocm93LCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFu
c2Zlckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUpCiB7CiAgICAg
ZGlkVGhyb3cgPSBmYWxzZTsKICAgICBXcml0ZXIgd3JpdGVyOwogICAgIFNlcmlhbGl6ZXI6OlN0
YXR1cyBzdGF0dXM7CiAgICAgewogICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAg
ICAgIFNlcmlhbGl6ZXIgc2VyaWFsaXplcih3cml0ZXIsIHRyeUNhdGNoKTsKKyAgICAgICAgU2Vy
aWFsaXplciBzZXJpYWxpemVyKHdyaXRlciwgdHJ5Q2F0Y2gsIHRyYW5zZmVyTGlzdCwgbWVzc2Fn
ZVBhc3NpbmdNb2RlKTsKICAgICAgICAgc3RhdHVzID0gc2VyaWFsaXplci5zZXJpYWxpemUodmFs
dWUpOwogICAgICAgICBpZiAoc3RhdHVzID09IFNlcmlhbGl6ZXI6OkpTRXhjZXB0aW9uKSB7CiAg
ICAgICAgICAgICAvLyBJZiB0aGVyZSB3YXMgYSBKUyBleGNlcHRpb24gdGhyb3duLCByZS10aHJv
dyBpdC4KQEAgLTE5NjUsMTMgKzIwNTIsMzIgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUoY29uc3QgU3RyaW5nJiB3aXJlRGF0YSkKICAgICBtX2RhdGEgPSB3
aXJlRGF0YS5jcm9zc1RocmVhZFN0cmluZygpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSgpCitib29sIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6aXNGbGF0dGVuYWJsZShUcmFuc2ZlcmFibGVSZWNlaXB0KiByZWNlaXB0KQorewor
ICAgIHJldHVybiAhcmVjZWlwdC0+YXNNZXNzYWdlUG9ydENoYW5uZWxUcmFuc2ZlcmFibGVSZWNl
aXB0KCk7Cit9CisKK1N0cmluZyBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmZsYXR0ZW5SZWNlaXB0
TGlzdChjb25zdCBTdHJpbmcmIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JiByZWNlaXB0
cykKK3sKKyAgICAvLyBGSVhNRTogT25jZSBhIGZsYXR0ZW5hYmxlIHJlY2VpcHQgYXBwZWFycywg
dGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgbW9yZSB3b3JrIHRvIGRvLgorICAgIC8vIFVuZmxhdHRl
bmFibGUgcmVjZWlwdHMgbWF5IGJlIHBhc3NlZCBpbiBhcyBudWxsLgorI2lmbmRlZiBOREVCVUcK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY2VpcHRzLnNpemUoKTsgKytpKQorICAgICAg
ICBBU1NFUlQoIXJlY2VpcHRzW2ldIHx8ICFpc0ZsYXR0ZW5hYmxlKHJlY2VpcHRzW2ldLmdldCgp
KSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWNlaXB0cyk7CisjZW5kaWYKKyAgICByZXR1
cm4gZGF0YS5jcm9zc1RocmVhZFN0cmluZygpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShWYWx1ZUhhbmRsZUFycmF5KiB0cmFu
c2Zlckxpc3QpCiB7CiAgICAgaWYgKCFtX2RhdGEuaW1wbCgpKQogICAgICAgICByZXR1cm4gdjg6
Ok51bGwoKTsKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoQnVmZmVyVmFsdWVUeXBlKSA9PSAy
LCBCdWZmZXJWYWx1ZVR5cGVJc1R3b0J5dGVzKTsKICAgICBSZWFkZXIgcmVhZGVyKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS5pbXBsKCktPmNoYXJhY3RlcnMoKSksIDIg
KiBtX2RhdGEubGVuZ3RoKCkpOwotICAgIERlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIocmVhZGVy
KTsKKyAgICBEZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVyKHJlYWRlciwgdHJhbnNmZXJMaXN0KTsK
ICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNGQy
NDkyZC4uNGNkZTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTMyLDI1ICszMiw1MSBAQAogI2RlZmluZSBTZXJpYWxp
emVkU2NyaXB0VmFsdWVfaAogCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKwogI2luY2x1ZGUg
PHY4Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIFRyYW5zZmVyYWJsZTsKK2NsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7Cit0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8VHJhbnNmZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7Cit0
eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJs
ZVJlY2VpcHRBcnJheTsKK3R5cGVkZWYgVmVjdG9yPHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgMT4g
VmFsdWVIYW5kbGVBcnJheTsKKworZW51bSBNZXNzYWdlUGFzc2luZ01vZGUgeyBPbmx5TWVzc2Fn
ZVBvcnRzLCBQZXJtaXRUcmFuc2ZlcmFibGVzIH07CisKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4sIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwg
U2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSos
IFRyYW5zZmVyYWJsZUFycmF5Kik7CisgICAgc3RhdGljIHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQ
cm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlB
dHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgVHJhbnNmZXJhYmxl
QXJyYXkqKTsKICAgICBzdGF0aWMgdm9pZCBkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4sIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwgU2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KTsKKyAgICBzdGF0aWMgdm9p
ZCBkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIGNvbnN0
IGNoYXIqIHByb3BlcnR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3QpOworCisgICAgLy8gdHJhbnNm
ZXJMaXN0IGlzIGFuIGFycmF5IG9mIG9iamVjdHMgdGhhdCBhcmUgbm90IGZsYXR0ZW5lZCB0byB0
aGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGJ1dAorICAgIC8vIGFyZSBpbnN0ZWFkIGNvcGllZCBi
eSByZWZlcmVuY2UuIFRoZXNlIG9iamVjdHMgYXJlIGlkZW50aWZpZWQgYnkgdGhlaXIgaW5kaWNl
cyBpbiB0cmFuc2Zlckxpc3QuCisgICAgLy8gRm9yIGV4YW1wbGU6CisgICAgLy8gICAgIHNlcmlh
bGl6ZSh7YTpPYmplY3QxLCBiOk9iamVjdDJ9LCBbT2JqZWN0MCwgT2JqZWN0MV0pID0+IFMKKyAg
ICAvLyAgICAgZGVzZXJpYWxpemUoUywgW090aGVyT2JqZWN0MCwgT3RoZXJPYmplY3QxXSkgPT4g
e2E6T3RoZXJPYmplY3QxLCBiOk9iamVjdDInfQorICAgIC8vIHdoZXJlIE9iamVjdDInIHdhcyBj
cmVhdGVkIGJ5IGZpcnN0IGZsYXR0ZW5pbmcgT2JqZWN0Mi4KIAogICAgIC8vIElmIGEgc2VyaWFs
aXphdGlvbiBlcnJvciBvY2N1cnMgKGUuZy4sIGN5Y2xpYyBpbnB1dCB2YWx1ZSkgdGhpcwogICAg
IC8vIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgcmVwcmVzZW50YXRpb24sIHNjaGVkdWxlcyBh
IFY4IGV4Y2VwdGlvbiB0bwogICAgIC8vIGJlIHRocm93biB1c2luZyB2ODo6VGhyb3dFeGNlcHRp
b24oKSwgYW5kIHNldHMgfGRpZFRocm93fC4gSW4gdGhpcyBjYXNlCiAgICAgLy8gdGhlIGNhbGxl
ciBtdXN0IG5vdCBpbnZva2UgYW55IFY4IG9wZXJhdGlvbnMgdW50aWwgY29udHJvbCByZXR1cm5z
IHRvCiAgICAgLy8gVjguIFdoZW4gc2VyaWFsaXphdGlvbiBpcyBzdWNjZXNzZnVsLCB8ZGlkVGhy
b3d8IGlzIGZhbHNlLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gY3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgZGlkVGhyb3cpOwor
ICAgIC8vIElmIE1lc3NhZ2VQYXNzaW5nTW9kZSBpcyBPbmx5TWVzc2FnZVBvcnRzLCB0aGVuIGl0
ZW1zIGluIHRyYW5zZmVyTGlzdCB3aWxsIG5vdCBiZSByZWZlcnJlZCB0byBieSBvYmplY3QgcmVm
ZXJlbmNlIHNob3VsZCB0aGV5IGFwcGVhcgorICAgIC8vIGluIHRoZSBzZXJpYWxpemVkIHZhbHVl
LiB0cmFuc2Zlckxpc3QgbWF5IGJlIDAgKGFuZCBpZiBzbyBpcyBlcXVpdmFsZW50IHRvIGEgemVy
by1sZW5ndGggdHJhbnNmZXIgbGlzdCkuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBib29sJiBkaWRUaHJv
dywgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01vZGUpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdl
UGFzc2luZ01vZGUpOworICAgIC8vIFRoZXNlIGRlZmF1bHQgdG8gdHJhbnNmZXJMaXN0ID0gMCBh
bmQgTWVzc2FnZVBhc3NpbmdNb2RlID0gT25seU1lc3NhZ2VQb3J0cy4KKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4sIGJvb2wmIGRpZFRocm93KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOworCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGVGcm9tV2lyZShjb25zdCBTdHJp
bmcmIGRhdGEpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoKTsKQEAgLTYyLDkgKzg4LDEyIEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyB0b1dpcmVTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAorICAg
IHN0YXRpYyBTdHJpbmcgZmxhdHRlblJlY2VpcHRMaXN0KGNvbnN0IFN0cmluZyYgZGF0YSwgY29u
c3QgVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Jik7CisgICAgc3RhdGljIGJvb2wgaXNGbGF0dGVu
YWJsZShUcmFuc2ZlcmFibGVSZWNlaXB0Kik7CisKICAgICAvLyBEZXNlcmlhbGl6ZXMgdGhlIHZh
bHVlIChpbiB0aGUgY3VycmVudCBjb250ZXh0KS4gUmV0dXJucyBhIG51bGwgdmFsdWUgaW4KICAg
ICAvLyBjYXNlIG9mIGZhaWx1cmUuCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFs
aXplKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFsaXplKFZhbHVlSGFuZGxl
QXJyYXkqIHRyYW5zZmVyTGlzdCA9IDApOwogCiBwcml2YXRlOgogICAgIGVudW0gU3RyaW5nRGF0
YU1vZGUgewpAQCAtNzMsNyArMTAyLDggQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKCk7Ci0gICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiwgYm9vbCYgZGlkVGhyb3cpOworICAgIC8vIEFzIGluIHRoZSBhYm92ZSwgdHJh
bnNmZXJMaXN0IG1heSBiZSAwLgorICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4sIGJvb2wmIGRpZFRocm93LCBWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxp
c3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSk7CiAgICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKGNvbnN0IFN0cmluZyYgd2lyZURhdGEpOwogCiAgICAgU3RyaW5nIG1fZGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwCmluZGV4IDIzNDJmZTYuLjlhNWYxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzEzLDQz
ICszMTMsNTYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpyZW1vdmVFdmVu
dExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnBvc3RNZXNz
YWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VDYWxsYmFjayhNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2Fn
ZVBhc3NpbmdNb2RlLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFU
UygiRE9NLkRPTVdpbmRvdy5wb3N0TWVzc2FnZSgpIik7CiAgICAgRE9NV2luZG93KiB3aW5kb3cg
PSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKICAgICBET01XaW5kb3cq
IHNvdXJjZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JDYWxsaW5nQ29udGV4dCgpLT5kb21X
aW5kb3coKTsKICAgICBBU1NFUlQoc291cmNlLT5mcmFtZSgpKTsKIAotICAgIGJvb2wgZGlkVGhy
b3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZGlkVGhyb3cpOwotICAgIGlm
IChkaWRUaHJvdykKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIE1lc3Nh
Z2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJs
ZUFycmF5OworICAgIFZhbHVlSGFuZGxlQXJyYXkgdmFsdWVIYW5kbGVBcnJheTsKICAgICBTdHJp
bmcgdGFyZ2V0T3JpZ2luOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBoYXMgdmFyaWFibGUgYXJn
dW1lbnRzIGFuZCBjYW4gZWl0aGVyIGJlOgogICAgIC8vICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwg
cG9ydCwgdGFyZ2V0T3JpZ2luKTsKICAgICAvLyBvcgogICAgIC8vICAgcG9zdE1lc3NhZ2UobWVz
c2FnZSwgdGFyZ2V0T3JpZ2luKTsKLSAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPiAyKSB7Ci0gICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShh
cmdzWzFdLCBwb3J0QXJyYXkpKQorICAgIHsKKyAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNo
OworICAgICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDIpIHsKKyAgICAgICAgICAgIGlmICghZ2V0
VHJhbnNmZXJhYmxlQXJyYXkoYXJnc1sxXSwgdHJhbnNmZXJhYmxlQXJyYXksIHZhbHVlSGFuZGxl
QXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKKyAgICAgICAgICAgIHRhcmdldE9yaWdpbiA9IHRvV2ViQ29yZVN0cmluZ1dp
dGhOdWxsT3JVbmRlZmluZWRDaGVjayhhcmdzWzJdKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICB0YXJnZXRPcmlnaW4gPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hl
Y2soYXJnc1sxXSk7CisKKyAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQogICAgICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICAgICAgdGFyZ2V0T3JpZ2luID0gdG9X
ZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5lZENoZWNrKGFyZ3NbMl0pOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHRhcmdldE9yaWdpbiA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRl
ZmluZWRDaGVjayhhcmdzWzFdKTsKICAgICB9CiAKLSAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0
KCkpCisgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBd
LCBkaWRUaHJvdywgJnZhbHVlSGFuZGxlQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSk7CisgICAg
aWYgKGRpZFRocm93KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd2luZG93LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVh
c2UoKSwgJnBvcnRBcnJheSwgdGFyZ2V0T3JpZ2luLCBzb3VyY2UsIGVjKTsKKyAgICB3aW5kb3ct
PnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmdHJhbnNmZXJhYmxlQXJyYXksIHRhcmdl
dE9yaWdpbiwgc291cmNlLCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQogCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cu
cG9zdE1lc3NhZ2UoKSIpOworICAgIHJldHVybiBXZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNr
KE9ubHlNZXNzYWdlUG9ydHMsIGFyZ3MpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
T01XaW5kb3c6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cud2Via2l0UG9zdE1lc3NhZ2Uo
KSIpOworICAgIHJldHVybiBXZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNrKFBlcm1pdFRyYW5z
ZmVyYWJsZXMsIGFyZ3MpOworfQorCiAvLyBGSVhNRShmcWlhbik6IHJldHVybmluZyBzdHJpbmcg
aXMgY2hlYXRpbmcsIGFuZCB3ZSBzaG91bGQKIC8vIGZpeCB0aGlzIGJ5IGNhbGxpbmcgdG9TdHJp
bmcgZnVuY3Rpb24gb24gdGhlIHJlY2VpdmVyLgogLy8gSG93ZXZlciwgVjggaW1wbGVtZW50cyB0
b1N0cmluZyBpbiBKYXZhU2NyaXB0LCB3aGljaCByZXF1aXJlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA4ZmNmOWE4Li40OWNlOGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtNDIsMjQgKzQyLDM2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3N0TWVzc2FnZUNhbGxiYWNrKE1lc3NhZ2VQ
YXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUsIGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7Ci0gICAgSU5DX1NUQVRTKEwiRE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQucG9zdE1lc3Nh
Z2UiKTsKICAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBib29sIGRp
ZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93KTsKLSAg
ICBpZiAoZGlkVGhyb3cpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgTWVz
c2FnZVBvcnRBcnJheSBwb3J0QXJyYXk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJh
YmxlQXJyYXk7CisgICAgVmFsdWVIYW5kbGVBcnJheSB2YWx1ZUhhbmRsZUFycmF5OwogICAgIGlm
IChhcmdzLkxlbmd0aCgpID4gMSkgewotICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXko
YXJnc1sxXSwgcG9ydEFycmF5KSkKKyAgICAgICAgaWYgKCFnZXRUcmFuc2ZlcmFibGVBcnJheShh
cmdzWzFdLCB0cmFuc2ZlcmFibGVBcnJheSwgdmFsdWVIYW5kbGVBcnJheSwgbWVzc2FnZVBhc3Np
bmdNb2RlKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQorICAg
IGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZGlkVGhy
b3csICZ2YWx1ZUhhbmRsZUFycmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpOworICAgIGlmIChkaWRU
aHJvdykKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICB3b3JrZXJDb250ZXh0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2Uo
KSwgJnBvcnRBcnJheSwgZWMpOworICAgIHdvcmtlckNvbnRleHQtPnBvc3RNZXNzYWdlKG1lc3Nh
Z2UucmVsZWFzZSgpLCAmdHJhbnNmZXJhYmxlQXJyYXksIGVjKTsKICAgICByZXR1cm4gdGhyb3dF
cnJvcihlYyk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERlZGljYXRlZFdvcmtlckNv
bnRleHQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sK
KyAgICBJTkNfU1RBVFMoTCJET00uRGVkaWNhdGVkV29ya2VyQ29udGV4dC5wb3N0TWVzc2FnZSIp
OworICAgIHJldHVybiBXZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNrKE9ubHlNZXNzYWdlUG9y
dHMsIGFyZ3MpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQud2Via2l0
UG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayhQ
ZXJtaXRUcmFuc2ZlcmFibGVzLCBhcmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA0NzVk
ZTJhLi5mMWEyN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTQ3LDI1ICs0NywzMiBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OnBvcnRzQWNjZXNzb3JHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZUV2ZW50LnBv
cnRzIik7CiAgICAgTWVzc2FnZUV2ZW50KiBldmVudCA9IFY4TWVzc2FnZUV2ZW50Ojp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKIAotICAgIE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzID0gZXZlbnQt
PnBvcnRzKCk7Ci0gICAgaWYgKCFwb3J0cyB8fCBwb3J0cy0+aXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gdjg6Ok51bGwoKTsKKyAgICBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxlcyA9
IGV2ZW50LT50cmFuc2ZlcmFibGVzKCk7CisgICAgaWYgKCF0cmFuc2ZlcmFibGVzIHx8IHRyYW5z
ZmVyYWJsZXMtPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpBcnJheTo6TmV3KDApOwog
Ci0gICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcG9ydEFycmF5ID0gdjg6OkFycmF5OjpOZXcocG9y
dHMtPnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0cy0+c2l6ZSgpOyAr
K2kpCi0gICAgICAgIHBvcnRBcnJheS0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaSksIHRvVjgoKCpw
b3J0cylbaV0uZ2V0KCkpKTsKKyAgICBpbnQgcG9ydENvdW50ID0gMDsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRyYW5zZmVyYWJsZXMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICgo
KnRyYW5zZmVyYWJsZXMpW2ldLmdldCgpLT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgICAgICAr
K3BvcnRDb3VudDsKKyAgICB9CisgICAgCisgICAgaW50IGN1cnJlbnRQb3J0ID0gMDsKKyAgICB2
ODo6TG9jYWw8djg6OkFycmF5PiBwb3J0QXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyhwb3J0Q291bnQp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6ZSgpICYmIGN1
cnJlbnRQb3J0IDwgcG9ydENvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKE1lc3NhZ2VQb3J0KiBt
ZXNzYWdlUG9ydCA9ICgqdHJhbnNmZXJhYmxlcylbaV0uZ2V0KCktPmFzTWVzc2FnZVBvcnQoKSkK
KyAgICAgICAgICAgIHBvcnRBcnJheS0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoY3VycmVudFBvcnQr
KyksIHRvVjgobWVzc2FnZVBvcnQpKTsKKyAgICB9CiAKICAgICByZXR1cm4gcG9ydEFycmF5Owog
fQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZl
bnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBpbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2soTWVzc2FnZVBhc3NpbmdNb2RlIG1l
c3NhZ2VQYXNzaW5nTW9kZSwgY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS5NZXNzYWdlRXZlbnQuaW5pdE1lc3NhZ2VFdmVudCIpOwogICAgIE1lc3NhZ2VF
dmVudCogZXZlbnQgPSBWOE1lc3NhZ2VFdmVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAg
ICAgU3RyaW5nIHR5cGVBcmcgPSB2OFZhbHVlVG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAg
IGJvb2wgY2FuQnViYmxlQXJnID0gYXJnc1sxXS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgYm9vbCBj
YW5jZWxhYmxlQXJnID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7Ci0gICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KGFyZ3NbM10pOwogICAgIFN0cmluZyBvcmlnaW5BcmcgPSB2OFZhbHVlVG9XZWJDb3JlU3RyaW5n
KGFyZ3NbNF0pOwogICAgIFN0cmluZyBsYXN0RXZlbnRJZEFyZyA9IHY4VmFsdWVUb1dlYkNvcmVT
dHJpbmcoYXJnc1s1XSk7CiAKQEAgLTc2LDE3ICs4MywzNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbgogICAgICAgICBpZiAoIXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3VyY2VB
cmcgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9Ci0gICAgT3duUHRyPE1l
c3NhZ2VQb3J0QXJyYXk+IHBvcnRBcnJheTsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+
IHRyYW5zZmVyYWJsZUFycmF5OworICAgIE93blB0cjxWYWx1ZUhhbmRsZUFycmF5PiB2YWx1ZUhh
bmRsZUFycmF5OwogCiAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzddKSkgewotICAg
ICAgICBwb3J0QXJyYXkgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJheSk7Ci0gICAgICAg
IGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzddLCAqcG9ydEFycmF5KSkKKyAgICAgICAg
dHJhbnNmZXJhYmxlQXJyYXkgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlQXJyYXkpOworICAg
ICAgICB2YWx1ZUhhbmRsZUFycmF5ID0gYWRvcHRQdHIobmV3IFZhbHVlSGFuZGxlQXJyYXkpOwor
ICAgICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3NbN10sICp0cmFuc2ZlcmFibGVB
cnJheSwgKnZhbHVlSGFuZGxlQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0KLSAgICBldmVudC0+aW5pdE1lc3NhZ2VF
dmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIGRhdGFBcmcucmVsZWFz
ZSgpLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBzb3VyY2VBcmcsIHBvcnRBcnJheS5yZWxl
YXNlKCkpOworCisgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOworICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGFBcmcgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShh
cmdzWzNdLCBkaWRUaHJvdywgdmFsdWVIYW5kbGVBcnJheS5nZXQoKSwgbWVzc2FnZVBhc3NpbmdN
b2RlKTsKKyAgICBpZiAoZGlkVGhyb3cpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CisKKyAgICBldmVudC0+aW5pdE1lc3NhZ2VFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNh
bmNlbGFibGVBcmcsIGRhdGFBcmcucmVsZWFzZSgpLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJn
LCBzb3VyY2VBcmcsIHRyYW5zZmVyYWJsZUFycmF5LnJlbGVhc2UoKSk7CiAgICAgdjg6OlByb3Bl
cnR5QXR0cmlidXRlIGRhdGFBdHRyID0gc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6RG9udERlbGV0ZSB8IHY4OjpSZWFkT25seSk7Ci0gICAgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KGFyZ3MuSG9sZGVyKCksICJkYXRhIiwgZGF0
YUF0dHIsIGV2ZW50LT5kYXRhKCkpOworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJp
YWxpemVBbmRTZXRQcm9wZXJ0eShhcmdzLkhvbGRlcigpLCAiZGF0YSIsIGRhdGFBdHRyLCBldmVu
dC0+ZGF0YSgpLCB2YWx1ZUhhbmRsZUFycmF5LmdldCgpKTsKICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwotICB9Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6
aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZUV2ZW50LmluaXRNZXNzYWdlRXZlbnQiKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKE9ubHlNZXNzYWdlUG9ydHMs
IGFyZ3MpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OndlYmtp
dEluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewor
ICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC53ZWJraXRJbml0TWVzc2FnZUV2ZW50Iik7
CisgICAgcmV0dXJuIFdlYkNvcmU6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhQZXJtaXRUcmFu
c2ZlcmFibGVzLCBhcmdzKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0
b20uY3BwCmluZGV4IDNlZDViMTIuLmFjMDIzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKQEAgLTQy
LDY3ICs0Miw5OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQ2FsbGJh
Y2soTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSwgY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlUG9ydC5wb3N0TWVzc2Fn
ZSIpOwogICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9IFY4TWVzc2FnZVBvcnQ6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoYXJnc1swXSwgZGlkVGhyb3cpOwotICAgIGlmIChkaWRUaHJvdykKLSAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsK
KyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVBcnJheTsKKyAgICBWYWx1ZUhhbmRs
ZUFycmF5IHZhbHVlSGFuZGxlQXJyYXk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0g
ICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAg
ICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3NbMV0sIHRyYW5zZmVyYWJsZUFycmF5
LCB2YWx1ZUhhbmRsZUFycmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpKQogICAgICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9CisgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwor
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdywgJnZhbHVlSGFuZGxlQXJyYXksIG1l
c3NhZ2VQYXNzaW5nTW9kZSk7CisgICAgaWYgKGRpZFRocm93KQorICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIG1lc3NhZ2VQb3J0
LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOworICAgIG1l
c3NhZ2VQb3J0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnRyYW5zZmVyYWJsZUFy
cmF5LCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQogCi1ib29sIGdldE1lc3Nh
Z2VQb3J0QXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkm
IHBvcnRBcnJheSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VQb3J0Ojpwb3N0TWVz
c2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRT
KCJET00uTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9z
dE1lc3NhZ2VDYWxsYmFjayhPbmx5TWVzc2FnZVBvcnRzLCBhcmdzKTsKK30KKwordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4TWVzc2FnZVBvcnQ6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlUG9y
dC53ZWJraXRQb3N0TWVzc2FnZSIpOworICAgIHJldHVybiBXZWJDb3JlOjpwb3N0TWVzc2FnZUNh
bGxiYWNrKFBlcm1pdFRyYW5zZmVyYWJsZXMsIGFyZ3MpOworfQorCitib29sIGdldFRyYW5zZmVy
YWJsZUFycmF5KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgVHJhbnNmZXJhYmxlQXJyYXkm
IHRyYW5zZmVyYWJsZUFycmF5LCBWYWx1ZUhhbmRsZUFycmF5JiBoYW5kbGVBcnJheSwgTWVzc2Fn
ZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSkKIHsKICAgICBpZiAoaXNVbmRlZmluZWRP
ck51bGwodmFsdWUpKSB7Ci0gICAgICAgIHBvcnRBcnJheS5yZXNpemUoMCk7CisgICAgICAgIHRy
YW5zZmVyYWJsZUFycmF5LnJlc2l6ZSgwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CiAgICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd0Vycm9yKCJNZXNz
YWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0Iik7CisgICAgICAgIHRocm93
RXJyb3IobWVzc2FnZVBhc3NpbmdNb2RlID09IE9ubHlNZXNzYWdlUG9ydHMgPyAiTWVzc2FnZVBv
cnRBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJUcmFuc2ZlcmFibGVBcnJh
eSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIHVpbnQzMl90IGxlbmd0aCA9IDA7Ci0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IHBvcnRzID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHBvcnRzID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1
ZSk7CiAKICAgICBpZiAodmFsdWUtPklzQXJyYXkoKSkgewotICAgICAgICB2ODo6TG9jYWw8djg6
OkFycmF5PiBhcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KHZhbHVlKTsKKyAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkhhbmRsZTx2ODo6QXJyYXk+OjpD
YXN0KHZhbHVlKTsKICAgICAgICAgbGVuZ3RoID0gYXJyYXktPkxlbmd0aCgpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIC8vIFNlcXVlbmNlLXR5cGUgb2JqZWN0IC0gZ2V0IHRoZSBsZW5ndGggYXR0
cmlidXRlCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHNlcXVlbmNlTGVuZ3RoID0gcG9y
dHMtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIpKTsKICAgICAgICAgaWYgKCFzZXF1ZW5j
ZUxlbmd0aC0+SXNOdW1iZXIoKSkgewotICAgICAgICAgICAgdGhyb3dFcnJvcigiTWVzc2FnZVBv
cnRBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZSIpOworICAgICAgICAgICAg
dGhyb3dFcnJvcihtZXNzYWdlUGFzc2luZ01vZGUgPT0gT25seU1lc3NhZ2VQb3J0cyA/ICJNZXNz
YWdlUG9ydEFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJU
cmFuc2ZlcmFibGVBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZSIpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9IHNlcXVl
bmNlTGVuZ3RoLT5VaW50MzJWYWx1ZSgpOwogICAgIH0KIAotICAgIC8vIFZhbGlkYXRlIHRoZSBw
YXNzZWQgYXJyYXkgb2YgcG9ydHMuCisgICAgLy8gVmFsaWRhdGUgdGhlIHBhc3NlZCBhcnJheSBv
ZiB0cmFuc2ZlcmFibGVzLgogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcG9ydCA9IHBvcnRzLT5HZXQo
aSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHRyYW5zZmVyYWJsZSA9IHBvcnRzLT5H
ZXQoaSk7CiAgICAgICAgIC8vIFZhbGlkYXRpb24gb2Ygbm9uLW51bGwgb2JqZWN0cywgcGVyIEhU
TUw1IHNwZWMgOC4zLjMuCi0gICAgICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChwb3J0KSkgewot
ICAgICAgICAgICAgdGhyb3dFcnJvcihJTlZBTElEX1NUQVRFX0VSUik7CisgICAgICAgIGlmIChp
c1VuZGVmaW5lZE9yTnVsbCh0cmFuc2ZlcmFibGUpKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9y
KERBVEFfQ0xPTkVfRVJSKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFj
ZSwgcGVyIFdlYklETCBzcGVjIDQuMS4xNS4KLSAgICAgICAgaWYgKCFWOE1lc3NhZ2VQb3J0OjpI
YXNJbnN0YW5jZShwb3J0KSkgewotICAgICAgICAgICAgdGhyb3dFcnJvcigiTWVzc2FnZVBvcnRB
cnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBNZXNzYWdlUG9ydHMiKTsKKyAgICAgICAg
UmVmUHRyPFRyYW5zZmVyYWJsZT4gbmF0aXZlVHJhbnNmZXJhYmxlID0gdG9OYXRpdmVUcmFuc2Zl
cmFibGUodHJhbnNmZXJhYmxlKTsKKyAgICAgICAgaWYgKCFuYXRpdmVUcmFuc2ZlcmFibGUgfHwg
KG1lc3NhZ2VQYXNzaW5nTW9kZSA9PSBPbmx5TWVzc2FnZVBvcnRzICYmICFuYXRpdmVUcmFuc2Zl
cmFibGUtPmFzTWVzc2FnZVBvcnQoKSkpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3IobWVzc2Fn
ZVBhc3NpbmdNb2RlID09IE9ubHlNZXNzYWdlUG9ydHMgPyAiTWVzc2FnZVBvcnRBcnJheSBhcmd1
bWVudCBtdXN0IGNvbnRhaW4gb25seSBNZXNzYWdlUG9ydHMiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIlRyYW5zZmVyYWJs
ZUFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IFRyYW5zZmVyYWJsZXMiKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBwb3J0QXJyYXkuYXBwZW5k
KFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QocG9y
dCkpKTsKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJyYXkuYXBwZW5kKG5hdGl2ZVRyYW5zZmVyYWJs
ZSk7CisgICAgICAgIGhhbmRsZUFycmF5LmFwcGVuZCh0cmFuc2ZlcmFibGUpOwogICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRvTmF0aXZlVHJh
bnNmZXJhYmxlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKK3sKKyAgICBpZiAoVjhNZXNz
YWdlUG9ydDo6SGFzSW5zdGFuY2UodmFsdWUpKQorICAgICAgICByZXR1cm4gVjhNZXNzYWdlUG9y
dDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpOworICAgIHJl
dHVybiAwOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFRyYW5zZmVyYWJsZShUcmFu
c2ZlcmFibGUqIHZhbHVlKQoreworICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSB2
YWx1ZS0+YXNNZXNzYWdlUG9ydCgpKQorICAgICAgICByZXR1cm4gdG9WOChtZXNzYWdlUG9ydCk7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXco
MCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oCmluZGV4IDdhYjUw
MmIuLjkzMzZhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaApAQCAtMzUsMTMgKzM1LDE3IEBACiAjaW5jbHVk
ZSA8djguaD4KIAogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIC8vIEhlbHBlciBm
dW5jdGlvbiB3aGljaCBwdWxscyB0aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBp
bnRvIGEgTWVzc2FnZVBvcnRBcnJheS4KLSAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVu
dHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQg
c2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYyBhbmQgZ2VuZXJhdGVzIGV4Y2VwdGlvbnMg
YXMgYXBwcm9wcmlhdGUuCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBhcnJheSB3YXMgZmls
bGVkLCBvciBmYWxzZSBpZiB0aGUgcGFzc2VkIHZhbHVlIHdhcyBub3Qgb2YgYW4gYXBwcm9wcmlh
dGUgdHlwZS4KLSAgICBib29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1
ZT4sIE1lc3NhZ2VQb3J0QXJyYXkmKTsKKy8vIEhlbHBlciBmdW5jdGlvbiB3aGljaCBwdWxscyB0
aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBpbnRvIGEgVHJhbnNmZXJhYmxlQXJy
YXkuCisvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBh
bmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRN
TDUgc3BlYyBhbmQgZ2VuZXJhdGVzIGV4Y2VwdGlvbnMgYXMgYXBwcm9wcmlhdGUuCisvLyBSZXR1
cm5zIHRydWUgaWYgdGhlIGFycmF5IHdhcyBmaWxsZWQsIG9yIGZhbHNlIGlmIHRoZSBwYXNzZWQg
dmFsdWUgd2FzIG5vdCBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlLgorYm9vbCBnZXRUcmFuc2ZlcmFi
bGVBcnJheSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIFRyYW5zZmVyYWJsZUFycmF5JiwgVmFsdWVI
YW5kbGVBcnJheSYsIE1lc3NhZ2VQYXNzaW5nTW9kZSk7CisKK1Bhc3NSZWZQdHI8VHJhbnNmZXJh
YmxlPiB0b05hdGl2ZVRyYW5zZmVyYWJsZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjhUcmFuc2ZlcmFibGUoVHJhbnNmZXJhYmxlKik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKaW5kZXggZmRjNjgxNS4uMWJiZDdhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20u
Y3BwCkBAIC04NywyNCArODcsMzYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyOjpj
b25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJu
IHdyYXBwZXJPYmplY3Q7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlcjo6cG9z
dE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBwb3N0TWVzc2FnZUNhbGxiYWNrKE1lc3NhZ2VQYXNzaW5nTW9kZSBt
ZXNzYWdlUGFzc2luZ01vZGUsIGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uV29ya2VyLnBvc3RNZXNzYWdlIik7CiAgICAgV29ya2VyKiB3b3JrZXIgPSBW
OFdvcmtlcjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgYm9vbCBkaWRUaHJvdyA9IGZh
bHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdyk7Ci0gICAgaWYgKGRpZFRo
cm93KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIE1lc3NhZ2VQb3J0QXJy
YXkgcG9ydEFycmF5OworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZUFycmF5Owor
ICAgIFZhbHVlSGFuZGxlQXJyYXkgdmFsdWVIYW5kbGVBcnJheTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA+IDEpIHsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdlUG9ydEFycmF5KGFyZ3NbMV0sIHBv
cnRBcnJheSkpCisgICAgICAgIGlmICghZ2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJnc1sxXSwgdHJh
bnNmZXJhYmxlQXJyYXksIHZhbHVlSGFuZGxlQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSkpCiAg
ICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0KKyAgICBib29sIGRpZFRo
cm93ID0gZmFsc2U7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93LCAmdmFsdWVI
YW5kbGVBcnJheSwgbWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAgICBpZiAoZGlkVGhyb3cpCisgICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgd29ya2VyLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMp
OworICAgIHdvcmtlci0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZ0cmFuc2ZlcmFi
bGVBcnJheSwgZWMpOwogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIAordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4V29ya2VyOjpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uV29ya2VyLnBvc3RNZXNzYWdlIik7
CisgICAgcmV0dXJuIFdlYkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2soT25seU1lc3NhZ2VQb3J0
cywgYXJncyk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlcjo6d2Via2l0UG9z
dE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19T
VEFUUygiRE9NLldvcmtlci53ZWJraXRQb3N0TWVzc2FnZSIpOworICAgIHJldHVybiBXZWJDb3Jl
Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKFBlcm1pdFRyYW5zZmVyYWJsZXMsIGFyZ3MpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NQWxsSW5PbmUuY3BwCmluZGV4IGUzODljZDEuLjk2NTg3MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RPTUFsbEluT25lLmNwcApAQCAtMTI5LDYgKzEyOSw4IEBACiAjaW5jbHVkZSAiVG91Y2gu
Y3BwIgogI2luY2x1ZGUgIlRvdWNoRXZlbnQuY3BwIgogI2luY2x1ZGUgIlRvdWNoTGlzdC5jcHAi
CisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmNwcCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNl
aXB0LmNwcCIKICNpbmNsdWRlICJUcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCIKICNpbmNsdWRl
ICJUcmF2ZXJzYWwuY3BwIgogI2luY2x1ZGUgIlRyZWVTY29wZS5jcHAiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuY3BwCmluZGV4IGI0MzMzODFiLi42YTcyMmU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcApAQCAtMzAsNiArMzAsOCBAQAogCiAjaW5jbHVkZSAiRE9NV2luZG93
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisj
aW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgs
MTMgKzQwLDEzIEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotTWVzc2Fn
ZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRh
dGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNz
UmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBv
cnRzKQorTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPFRyYW5zZmVy
YWJsZUFycmF5PiB0cmFuc2ZlcmFibGVzKQogICAgIDogRXZlbnQoZXZlbnROYW1lcygpLm1lc3Nh
Z2VFdmVudCwgZmFsc2UsIGZhbHNlKQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX29yaWdp
bihvcmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKGxhc3RFdmVudElkKQogICAgICwgbV9zb3Vy
Y2Uoc291cmNlKQotICAgICwgbV9wb3J0cyhwb3J0cykKKyAgICAsIG1fdHJhbnNmZXJhYmxlcyh0
cmFuc2ZlcmFibGVzKQogewogfQogCkBAIC01Miw3ICs1NCw3IEBAIE1lc3NhZ2VFdmVudDo6fk1l
c3NhZ2VFdmVudCgpCiB7CiB9CiAKLXZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFz
c093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0
TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cq
IHNvdXJjZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcykKIHsK
ICAgICBpZiAoZGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CkBAIC02MywyNiArNjUsMzYg
QEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm8KICAgICBtX29yaWdpbiA9IG9yaWdpbjsKICAgICBt
X2xhc3RFdmVudElkID0gbGFzdEV2ZW50SWQ7CiAgICAgbV9zb3VyY2UgPSBzb3VyY2U7Ci0gICAg
bV9wb3J0cyA9IHBvcnRzOworICAgIG1fdHJhbnNmZXJhYmxlcyA9IHRyYW5zZmVyYWJsZXM7CiB9
CiAKIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5n
cyAoYnVnICMyODc3NCkuCiBNZXNzYWdlUG9ydCogTWVzc2FnZUV2ZW50OjptZXNzYWdlUG9ydCgp
CiB7Ci0gICAgaWYgKCFtX3BvcnRzKQorICAgIGlmICghbV90cmFuc2ZlcmFibGVzKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICBBU1NFUlQobV9wb3J0cy0+c2l6ZSgpID09IDEpOwotICAgIHJldHVy
biAoKm1fcG9ydHMpWzBdLmdldCgpOworICAgIEFTU0VSVChtX3RyYW5zZmVyYWJsZXMtPnNpemUo
KSA9PSAxKTsKKyAgICBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSA9ICgqbV90cmFuc2ZlcmFi
bGVzKVswXS5nZXQoKTsKKyAgICBBU1NFUlQodHJhbnNmZXJhYmxlLT5hc01lc3NhZ2VQb3J0KCkp
OworICAgIHJldHVybiB0cmFuc2ZlcmFibGUtPmFzTWVzc2FnZVBvcnQoKTsKIH0KIAotdm9pZCBN
ZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBNZXNzYWdlUG9ydCogcG9ydCkKK1RyYW5zZmVyYWJs
ZSogTWVzc2FnZUV2ZW50Ojp0cmFuc2ZlcmFibGUoKQogewotICAgIE93blB0cjxNZXNzYWdlUG9y
dEFycmF5PiBwb3J0czsKLSAgICBpZiAocG9ydCkgewotICAgICAgICBwb3J0cyA9IGFkb3B0UHRy
KG5ldyBNZXNzYWdlUG9ydEFycmF5KTsKLSAgICAgICAgcG9ydHMtPmFwcGVuZChwb3J0KTsKKyAg
ICBpZiAoIW1fdHJhbnNmZXJhYmxlcykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQVNTRVJUKG1f
dHJhbnNmZXJhYmxlcy0+c2l6ZSgpID09IDEpOworICAgIHJldHVybiAoKm1fdHJhbnNmZXJhYmxl
cylbMF0uZ2V0KCk7Cit9CisKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgVHJhbnNm
ZXJhYmxlKiB0cmFuc2ZlcmFibGUpCit7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0
cmFuc2ZlcmFibGVzOworICAgIGlmICh0cmFuc2ZlcmFibGUpIHsKKyAgICAgICAgdHJhbnNmZXJh
YmxlcyA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVBcnJheSk7CisgICAgICAgIHRyYW5zZmVy
YWJsZXMtPmFwcGVuZCh0cmFuc2ZlcmFibGUpOwogICAgIH0KLSAgICBpbml0TWVzc2FnZUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwg
c291cmNlLCBwb3J0cy5yZWxlYXNlKCkpOworICAgIGluaXRNZXNzYWdlRXZlbnQodHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCBkYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIHRy
YW5zZmVyYWJsZXMucmVsZWFzZSgpKTsKIH0KIAogYm9vbCBNZXNzYWdlRXZlbnQ6OmlzTWVzc2Fn
ZUV2ZW50KCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggYjdmOWIwMi4u
MTAwOGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMzAsMTIgKzMwLDEzIEBA
CiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUg
Ik1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSAiVHJhbnNmZXJhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IERPTVdpbmRvdzsKKyAgICBjbGFzcyBNZXNzYWdlUG9ydDsKIAogICAgIGNsYXNzIE1lc3NhZ2VF
dmVudCA6IHB1YmxpYyBFdmVudCB7CiAgICAgcHVibGljOgpAQCAtNDMsMzYgKzQ0LDM4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNZXNzYWdlRXZlbnQpOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMs
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhID0gMCwgY29uc3QgU3RyaW5n
JiBvcmlnaW4gPSAiIiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9ICIiLCBQYXNzUmVmUHRy
PERPTVdpbmRvdz4gc291cmNlID0gMCkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2Fn
ZUV2ZW50PiBjcmVhdGUoUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxl
cywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEgPSAwLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiA9ICIiLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0gIiIsIFBhc3NSZWZQ
dHI8RE9NV2luZG93PiBzb3VyY2UgPSAwKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3Vy
Y2UsIHBvcnRzKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVu
dChkYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIHRyYW5zZmVyYWJsZXMpKTsKICAg
ICAgICAgfQogICAgICAgICB2aXJ0dWFsIH5NZXNzYWdlRXZlbnQoKTsKIAotICAgICAgICB2b2lk
IGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdp
bmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKKyAgICAgICAgdm9p
ZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRh
dGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01X
aW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4pOwogCiAgICAgICAg
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQo
KTsgfQorICAgICAgICBUcmFuc2ZlcmFibGVBcnJheSogZGF0YURlcGVuZGVuY2llcygpIGNvbnN0
IHsgcmV0dXJuIHRyYW5zZmVyYWJsZXMoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG9yaWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbGFz
dEV2ZW50SWQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RFdmVudElkOyB9CiAgICAgICAgIERPTVdp
bmRvdyogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KLSAgICAgICAg
TWVzc2FnZVBvcnRBcnJheSogcG9ydHMoKSBjb25zdCB7IHJldHVybiBtX3BvcnRzLmdldCgpOyB9
CisgICAgICAgIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzKCkgY29uc3QgeyByZXR1
cm4gbV90cmFuc2ZlcmFibGVzLmdldCgpOyB9CiAKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0
aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KKyAgICAg
ICAgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUoKTsKICAgICAgICAgTWVzc2FnZVBvcnQqIG1l
c3NhZ2VQb3J0KCk7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0
ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQgaW5pdE1lc3Nh
Z2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3Vy
Y2UsIE1lc3NhZ2VQb3J0Kik7CisgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFRyYW5zZmVyYWJs
ZSopOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VFdmVudCgpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgTWVzc2FnZUV2ZW50KCk7Ci0gICAgICAgIE1lc3NhZ2VFdmVu
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBz
b3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOworICAgICAgICBNZXNzYWdlRXZl
bnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4g
c291cmNlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5Pik7CiAKICAgICAgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9kYXRhOwogICAgICAgICBTdHJpbmcgbV9vcmlnaW47
CiAgICAgICAgIFN0cmluZyBtX2xhc3RFdmVudElkOwogICAgICAgICBSZWZQdHI8RE9NV2luZG93
PiBtX3NvdXJjZTsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IG1fcG9ydHM7Cisg
ICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gbV90cmFuc2ZlcmFibGVzOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwK
aW5kZXggY2Y0NWJiNC4uMjUxMzEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwK
QEAgLTQ1LDggKzQ1LDE3IEBAIG1vZHVsZSBldmVudHMgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01T
dHJpbmcgbGFzdEV2ZW50SWRBcmcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01XaW5kb3cgc291cmNl
QXJnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gQXJyYXkgbWVzc2FnZVBvcnRzKTsKKworICAgICAgICBb
Q3VzdG9tXSB2b2lkIHdlYmtpdEluaXRNZXNzYWdlRXZlbnQoaW4gW09wdGlvbmFsPUNhbGxXaXRo
RGVmYXVsdFZhbHVlXSBET01TdHJpbmcgdHlwZUFyZywgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVd
IGJvb2xlYW4gY2FuQnViYmxlQXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gYm9vbGVhbiBj
YW5jZWxhYmxlQXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlIGRhdGFBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgb3JpZ2luQXJn
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIGxhc3RFdmVudElkQXJnLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1D
YWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NV2luZG93IHNvdXJjZUFyZywgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZh
dWx0VmFsdWVdIEFycmF5IHRyYW5zZmVyYWJsZXMpOwogI2Vsc2UKLSAgICAgICAgLy8gVGhlcmUn
cyBubyBnb29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRpbmdzLCBz
byBmb3Igbm93IGp1c3QgZXhwb3NlIGEgc2luZ2xlIHBvcnQuCisgICAgICAgIC8vIFRoZXJlJ3Mg
bm8gZ29vZCB3YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28g
Zm9yIG5vdyBqdXN0IGV4cG9zZSBhIHNpbmdsZSBNZXNzYWdlUG9ydC4KICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0OwogCiAgICAgICAgIHZvaWQgaW5p
dE1lc3NhZ2VFdmVudChpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmlu
ZyB0eXBlQXJnLCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IDQ3MmI5YjEuLmZh
OWU2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtNDMsNiArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBNZXNzYWdlUG9ydDo6TWVzc2FnZVBvcnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICA6IG1fc3RhcnRlZChmYWxz
ZSkKICAgICAsIG1fY2xvc2VkKGZhbHNlKQorICAgICwgbV90cmFuc2ZlcnJlZE91dChmYWxzZSkK
ICAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
IHsKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNyZWF0ZWRNZXNzYWdlUG9ydCh0aGlz
KTsKQEAgLTU4LDQwICs1OSw1MyBAQCBNZXNzYWdlUG9ydDo6fk1lc3NhZ2VQb3J0KCkKIH0KIAog
Ly8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChi
dWcgIzI4Nzc0KS4KLXZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7Ci0gICAgaWYg
KHBvcnQpCi0gICAgICAgIHBvcnRzLmFwcGVuZChwb3J0KTsKLSAgICBwb3N0TWVzc2FnZShtZXNz
YWdlLCAmcG9ydHMsIGVjKTsKKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVzOwor
ICAgIGlmICh0cmFuc2ZlcmFibGUpCisgICAgICAgIHRyYW5zZmVyYWJsZXMuYXBwZW5kKHRyYW5z
ZmVyYWJsZSk7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnRyYW5zZmVyYWJsZXMsIGVjKTsK
IH0KIAogdm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHBvc3RNZXNz
YWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PE1lc3NhZ2VQb3J0QXJyYXkqPigwKSwgZWMpOworICAg
IHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PFRyYW5zZmVyYWJsZUFycmF5Kj4oMCks
IGVjKTsKIH0KIAotdm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRz
LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBUcmFuc2ZlcmFibGVB
cnJheSogdHJhbnNmZXJhYmxlcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFpc0Vu
dGFuZ2xlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk7CiAKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxz
OwotICAgIC8vIE1ha2Ugc3VyZSB3ZSBhcmVuJ3QgY29ubmVjdGVkIHRvIGFueSBvZiB0aGUgcGFz
c2VkLWluIHBvcnRzLgotICAgIGlmIChwb3J0cykgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHBvcnRzLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgTWVzc2FnZVBv
cnQqIGRhdGFQb3J0ID0gKCpwb3J0cylbaV0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoZGF0YVBv
cnQgPT0gdGhpcyB8fCBtX2VudGFuZ2xlZENoYW5uZWwtPmlzQ29ubmVjdGVkVG8oZGF0YVBvcnQp
KSB7Ci0gICAgICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlw
dHM7CisgICAgLy8gTWFrZSBzdXJlIHdlIGFyZW4ndCBjb25uZWN0ZWQgdG8gYW55IHBhc3NlZC1p
biBNZXNzYWdlUG9ydHMuCisgICAgaWYgKHRyYW5zZmVyYWJsZXMpIHsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUgPSAoKnRyYW5zZmVyYWJsZXMpW2ld
LmdldCgpOworICAgICAgICAgICAgaWYgKE1lc3NhZ2VQb3J0KiBkYXRhUG9ydCA9IHRyYW5zZmVy
YWJsZS0+YXNNZXNzYWdlUG9ydCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFQb3J0ID09
IHRoaXMgfHwgbV9lbnRhbmdsZWRDaGFubmVsLT5pc0Nvbm5lY3RlZFRvKGRhdGFQb3J0KSkgewor
ICAgICAgICAgICAgICAgICAgICBlYyA9IERBVEFfQ0xPTkVfRVJSOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
Ci0gICAgICAgIGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMs
IGVjKTsKKyAgICAgICAgcmVjZWlwdHMgPSBUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KHRy
YW5zZmVyYWJsZXMsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZWMpOwogICAgICAgICBpZiAo
ZWMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fZW50YW5nbGVkQ2hhbm5lbC0+
cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRl
KG1lc3NhZ2UsIGNoYW5uZWxzLnJlbGVhc2UoKSkpOworICAgIG1fZW50YW5nbGVkQ2hhbm5lbC0+
cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRl
KG1lc3NhZ2UsIHJlY2VpcHRzLnJlbGVhc2UoKSkpOworfQorCitQYXNzT3duUHRyPFRyYW5zZmVy
YWJsZVJlY2VpcHQ+IE1lc3NhZ2VQb3J0Ojp0cmFuc2Zlck91dChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBVTlVTRURfUEFSQU0oY29u
dGV4dCk7CisgICAgaWYgKCFtX2VudGFuZ2xlZENoYW5uZWwgfHwgbV90cmFuc2ZlcnJlZE91dCkg
eworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gTWVzc2Fn
ZVBvcnRDaGFubmVsVHJhbnNmZXJhYmxlUmVjZWlwdDo6Y3JlYXRlKG1fZW50YW5nbGVkQ2hhbm5l
bC5yZWxlYXNlKCkpOworICAgIH0KKyAgICBtX3RyYW5zZmVycmVkT3V0ID0gdHJ1ZTsKKyAgICBy
ZXR1cm4gTWVzc2FnZVBvcnRDaGFubmVsVHJhbnNmZXJhYmxlUmVjZWlwdDo6Y3JlYXRlKGRpc2Vu
dGFuZ2xlKGVjKSk7CiB9CiAKIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBNZXNzYWdl
UG9ydDo6ZGlzZW50YW5nbGUoRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xNzksOCArMTkzLDggQEAg
dm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAgICAgICAgICAgICByZXR1cm47
CiAjZW5kaWYKIAotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPSBNZXNz
YWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBldmVudERh
dGEtPmNoYW5uZWxzKCkpOwotICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgZXZlbnREYXRhLT5tZXNzYWdlKCkpOworICAgICAg
ICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2ZlcmFibGVS
ZWNlaXB0Ojp0cmFuc2ZlckFsbEluKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV2ZW50RGF0
YS0+cmVjZWlwdHMoKSk7CisgICAgICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50
OjpjcmVhdGUodHJhbnNmZXJhYmxlcy5yZWxlYXNlKCksIGV2ZW50RGF0YS0+bWVzc2FnZSgpKTsK
IAogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgZGlzcGF0Y2hFdmVudChl
dnQucmVsZWFzZSgpLCBlYyk7CkBAIC0yMDQsNDggKzIxOCw2IEBAIE1lc3NhZ2VQb3J0KiBNZXNz
YWdlUG9ydDo6bG9jYWxseUVudGFuZ2xlZFBvcnQoKQogICAgIHJldHVybiBtX2VudGFuZ2xlZENo
YW5uZWwgPyBtX2VudGFuZ2xlZENoYW5uZWwtPmxvY2FsbHlFbnRhbmdsZWRQb3J0KG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkgOiAwOwogfQogCi1QYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUG9ydEFy
cmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFwb3J0cyB8fCAhcG9y
dHMtPnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBIYXNoU2V0IHVz
ZWQgdG8gZWZmaWNpZW50bHkgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgaW4gdGhlIHBhc3NlZC1pbiBh
cnJheS4KLSAgICBIYXNoU2V0PE1lc3NhZ2VQb3J0Kj4gcG9ydFNldDsKLQotICAgIC8vIFdhbGsg
dGhlIGluY29taW5nIGFycmF5IC0gaWYgdGhlcmUgYXJlIGFueSBkdXBsaWNhdGUgcG9ydHMsIG9y
IG51bGwgcG9ydHMgb3IgY2xvbmVkIHBvcnRzLCB0aHJvdyBhbiBlcnJvciAocGVyIHNlY3Rpb24g
OC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMpLgotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgcG9ydHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE1lc3NhZ2VQb3J0KiBwb3J0ID0gKCpw
b3J0cylbaV0uZ2V0KCk7Ci0gICAgICAgIGlmICghcG9ydCB8fCBwb3J0LT5pc0Nsb25lZCgpIHx8
IHBvcnRTZXQuY29udGFpbnMocG9ydCkpIHsKLSAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBw
b3J0U2V0LmFkZChwb3J0KTsKLSAgICB9Ci0KLSAgICAvLyBQYXNzZWQtaW4gcG9ydHMgcGFzc2Vk
IHZhbGlkaXR5IGNoZWNrcywgc28gd2UgY2FuIGRpc2VudGFuZ2xlIHRoZW0uCi0gICAgT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBwb3J0QXJyYXkgPSBhZG9wdFB0cihuZXcgTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkocG9ydHMtPnNpemUoKSkpOwotICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwIDsgaSA8IHBvcnRzLT5zaXplKCkgOyArK2kpIHsKLSAgICAgICAgT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCA9ICgqcG9ydHMpW2ldLT5kaXNlbnRhbmdsZShlYyk7Ci0g
ICAgICAgIEFTU0VSVCghZWMpOyAvLyBDYW4ndCBnZW5lcmF0ZSBleGNlcHRpb24gaGVyZSBpZiBw
YXNzZWQgYWJvdmUgY2hlY2tzLgotICAgICAgICAoKnBvcnRBcnJheSlbaV0gPSBjaGFubmVsLnJl
bGVhc2UoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHBvcnRBcnJheS5yZWxlYXNlKCk7Ci19Ci0KLVBh
c3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4gY2hhbm5lbHMpCi17Ci0gICAgaWYgKCFjaGFubmVscyB8fCAhY2hhbm5lbHMtPnNp
emUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4gcG9ydEFycmF5ID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkoY2hhbm5lbHMt
PnNpemUoKSkpOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY2hhbm5lbHMtPnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQ
b3J0OjpjcmVhdGUoY29udGV4dCk7Ci0gICAgICAgIHBvcnQtPmVudGFuZ2xlKCgqY2hhbm5lbHMp
W2ldLnJlbGVhc2UoKSk7Ci0gICAgICAgICgqcG9ydEFycmF5KVtpXSA9IHBvcnQucmVsZWFzZSgp
OwotICAgIH0KLSAgICByZXR1cm4gcG9ydEFycmF5LnJlbGVhc2UoKTsKLX0KLQogRXZlbnRUYXJn
ZXREYXRhKiBNZXNzYWdlUG9ydDo6ZXZlbnRUYXJnZXREYXRhKCkKIHsKICAgICByZXR1cm4gJm1f
ZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAppbmRleCAzYTg0MGZlLi44
OGMxMDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00NSwyMiArNDYsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiAKLSAgICAvLyBUaGUgb3ZlcndoZWxtaW5nbHkgY29tbW9uIGNhc2UgaXMgc2VuZGluZyBh
IHNpbmdsZSBwb3J0LCBzbyBoYW5kbGUgdGhhdCBlZmZpY2llbnRseSB3aXRoIGFuIGlubGluZSBi
dWZmZXIgb2Ygc2l6ZSAxLgotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4s
IDE+IE1lc3NhZ2VQb3J0QXJyYXk7Ci0KICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQg
aW5oZXJpdCBmcm9tIEFjdGl2ZURPTU9iamVjdCBhbmQgdXNlCiAgICAgLy8gc2V0UGVuZGluZ0Fj
dGl2aXR5IC8gdW5zZXRQZW5kaW5nQWN0aXZpdHkgaW5zdGVhZCBvZiBkdXBsaWNhdGluZwogICAg
IC8vIEFjdGl2ZURPTU9iamVjdCdzIGZlYXR1cmVzIGFuZCByZWx5aW5nIG9uIEphdmFTY3JpcHQg
Z2FyYmFnZSBjb2xsZWN0aW9uCiAgICAgLy8gdG8gZ2V0IGl0cyBsaWZldGltZSByaWdodC4KLSAg
ICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0PiwgcHVi
bGljIEV2ZW50VGFyZ2V0IHsKKyAgICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1YmxpYyBUcmFuc2Zl
cmFibGUsIHB1YmxpYyBFdmVudFRhcmdldCB7CiAgICAgcHVibGljOgorICAgICAgICBNZXNzYWdl
UG9ydCogYXNNZXNzYWdlUG9ydCgpIHsgcmV0dXJuIHRoaXM7IH0KKwogICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlUG9ydChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KICAgICAgICAgfk1lc3NhZ2VQb3J0KCk7CiAKICAg
ICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFy
cmF5KiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBUcmFuc2ZlcmFibGVBcnJh
eSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4g
d2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAgdm9pZCBw
b3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVz
c2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSosIEV4
Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgICAgIHZvaWQgY2xv
c2UoKTsKQEAgLTY4LDE0ICs2OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBlbnRhbmdsZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4pOwogICAgICAgICBQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gZGlzZW50YW5nbGUoRXhjZXB0aW9uQ29kZSYpOwog
Ci0gICAgICAgIC8vIERpc2VudGFuZ2xlIGFuIGFycmF5IG9mIHBvcnRzLCByZXR1cm5pbmcgdGhl
IGVudGFuZ2xlZCBjaGFubmVscy4KLSAgICAgICAgLy8gUGVyIHNlY3Rpb24gOC4zLjMgb2YgdGhl
IEhUTUw1IHNwZWMsIGdlbmVyYXRlcyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gaWYg
YW55IG9mIHRoZSBwYXNzZWQgcG9ydHMgYXJlIG51bGwgb3Igbm90IGVudGFuZ2xlZC4KLSAgICAg
ICAgLy8gUmV0dXJucyAwIGlmIHRoZXJlIGlzIGFuIGV4Y2VwdGlvbiwgb3IgaWYgdGhlIHBhc3Nl
ZC1pbiBhcnJheSBpcyAwL2VtcHR5LgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4gZGlzZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUG9ydEFycmF5
KiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgICAgIC8vIEVudGFuZ2xlcyBhbiBhcnJheSBvZiBj
aGFubmVscywgcmV0dXJuaW5nIGFuIGFycmF5IG9mIE1lc3NhZ2VQb3J0cyBpbiBtYXRjaGluZyBv
cmRlci4KLSAgICAgICAgLy8gUmV0dXJucyAwIGlmIHRoZSBwYXNzZWQgYXJyYXkgaXMgMC9lbXB0
eS4KLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gZW50YW5nbGVQ
b3J0cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4pOworICAgICAgICBib29sIHdhc1RyYW5zZmVycmVkT3V0KCkgY29uc3QgeyByZXR1
cm4gbV90cmFuc2ZlcnJlZE91dDsgfQorICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJl
Y2VpcHQ+IHRyYW5zZmVyT3V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICAgICAgdm9pZCBtZXNzYWdlQXZhaWxhYmxlKCk7CiAgICAgICAgIGJvb2wgc3Rh
cnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRlZDsgfQpAQCAtODgsOCArODIsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKCk7CiAKLSAg
ICAgICAgdXNpbmcgUmVmQ291bnRlZDxNZXNzYWdlUG9ydD46OnJlZjsKLSAgICAgICAgdXNpbmcg
UmVmQ291bnRlZDxNZXNzYWdlUG9ydD46OmRlcmVmOworICAgICAgICB1c2luZyBSZWZDb3VudGVk
PFRyYW5zZmVyYWJsZT46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFuc2ZlcmFi
bGU+OjpkZXJlZjsKIAogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpOwogCkBAIC0x
MDUsOSArOTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIE5PVEU6IFRoaXMg
aXMgdXNlZCBzb2xlbHkgdG8gZW5hYmxlIGEgR0Mgb3B0aW1pemF0aW9uLiBTb21lIHBsYXRmb3Jt
cyBtYXkgbm90IGJlIGFibGUgdG8gZGV0ZXJtaW5lIG93bmVyc2hpcCBvZiB0aGUgcmVtb3RlIHBv
cnQgKHNpbmNlIGl0IG1heSBsaXZlIGNyb3NzLXByb2Nlc3MpIC0gdGhvc2UgcGxhdGZvcm1zIG1h
eSBhbHdheXMgcmV0dXJuIG51bGwuCiAgICAgICAgIE1lc3NhZ2VQb3J0KiBsb2NhbGx5RW50YW5n
bGVkUG9ydCgpOwogICAgICAgICAvLyBBIHBvcnQgc3RhcnRzIG91dCBpdHMgbGlmZSBlbnRhbmds
ZWQsIGFuZCByZW1haW5zIGVudGFuZ2xlZCB1bnRpbCBpdCBpcyBjbG9zZWQgb3IgaXMgY2xvbmVk
LgotICAgICAgICBib29sIGlzRW50YW5nbGVkKCkgeyByZXR1cm4gIW1fY2xvc2VkICYmICFpc0Ns
b25lZCgpOyB9CisgICAgICAgIGJvb2wgaXNFbnRhbmdsZWQoKSBjb25zdCB7IHJldHVybiAhbV9j
bG9zZWQgJiYgIWlzQ2xvbmVkKCk7IH0KICAgICAgICAgLy8gQSBwb3J0IGlzIGNsb25lZCBpZiBp
dHMgZW50YW5nbGVkIGNoYW5uZWwgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgc2VudCB0byBhIG5ldyBv
d25lciB2aWEgcG9zdE1lc3NhZ2UoKS4KLSAgICAgICAgYm9vbCBpc0Nsb25lZCgpIHsgcmV0dXJu
ICFtX2VudGFuZ2xlZENoYW5uZWw7IH0KKyAgICAgICAgYm9vbCBpc0Nsb25lZCgpIGNvbnN0IHsg
cmV0dXJuICFtX2VudGFuZ2xlZENoYW5uZWw7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIE1l
c3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKQEAgLTEyMSw2ICsxMTUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX3N0YXJ0ZWQ7CiAgICAgICAgIGJv
b2wgbV9jbG9zZWQ7CisgICAgICAgIGJvb2wgbV90cmFuc2ZlcnJlZE91dDsKIAogICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgICAg
IEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuaWRsCmluZGV4IDI4ODMzY2UuLmY0NTM3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmlkbApAQCAtMzgsNiArMzgsOSBAQCBtb2R1bGUgZXZlbnRzIHsKICNpZiBkZWZpbmVkKExBTkdV
QUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICAgICAgW0N1c3RvbV0g
dm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJh
eSBtZXNzYWdlUG9ydHMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAg
ICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRQb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwg
aW4gW09wdGlvbmFsXSBBcnJheSB0cmFuc2ZlcikKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOworCiAgICAgICAgIHZvaWQgc3RhcnQoKTsKICAgICAgICAgdm9pZCBjbG9zZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCmluZGV4IDM2N2Y3ZWQu
LjIwYjVlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCkBA
IC0zMCwxOCArMzAsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZXNzYWdl
UG9ydENoYW5uZWwuaCIKIAorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogCi1QYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBN
ZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBjaGFubmVscykKK1Bhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE+IE1l
c3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
PiByZWNlaXB0cykKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50RGF0YShtZXNzYWdl
LCBjaGFubmVscykpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXZlbnREYXRhKG1lc3NhZ2Us
IHJlY2VpcHRzKSk7CiB9CiAKLU1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVudERh
dGEoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorTWVzc2FnZVBvcnRDaGFubmVsOjpF
dmVudERhdGE6OkV2ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogICAg
IDogbV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICwg
bV9yZWNlaXB0cyhyZWNlaXB0cykKK3sKK30KKworTWVzc2FnZVBvcnRDaGFubmVsVHJhbnNmZXJh
YmxlUmVjZWlwdDo6TWVzc2FnZVBvcnRDaGFubmVsVHJhbnNmZXJhYmxlUmVjZWlwdChQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKKyAgICA6IG1fbWVzc2FnZVBvcnRDaGFu
bmVsKGNoYW5uZWwpCit7Cit9CisKK1Bhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsVHJhbnNm
ZXJhYmxlUmVjZWlwdD4gTWVzc2FnZVBvcnRDaGFubmVsVHJhbnNmZXJhYmxlUmVjZWlwdDo6Y3Jl
YXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQoreworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVsVHJhbnNmZXJhYmxlUmVjZWlwdChjaGFu
bmVsKSk7Cit9CisKK1Bhc3NSZWZQdHI8VHJhbnNmZXJhYmxlPiBNZXNzYWdlUG9ydENoYW5uZWxU
cmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckluKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiB7CisgICAgQVNTRVJUKG1fbWVzc2FnZVBvcnRDaGFubmVsKTsKKyAgICBSZWZQdHI8
TWVzc2FnZVBvcnQ+IHBvcnQgPSBNZXNzYWdlUG9ydDo6Y3JlYXRlKGNvbnRleHQpOworICAgIHBv
cnQtPmVudGFuZ2xlKG1fbWVzc2FnZVBvcnRDaGFubmVsLnJlbGVhc2UoKSk7CisgICAgcmV0dXJu
IHBvcnQucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmgKaW5kZXggMDc2NjhhNC4uN2Y5OGQ1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCiAKICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTUwLDkgKzUxLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAg
Y2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCi0gICAgLy8gVGhlIG92ZXJ3aGVsbWluZ2x5
IGNvbW1vbiBjYXNlIGlzIHNlbmRpbmcgYSBzaW5nbGUgcG9ydCwgc28gaGFuZGxlIHRoYXQgZWZm
aWNpZW50bHkgd2l0aCBhbiBpbmxpbmUgYnVmZmVyIG9mIHNpemUgMS4KLSAgICB0eXBlZGVmIFZl
Y3RvcjxPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgMT4gTWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk7Ci0KICAgICAvLyBNZXNzYWdlUG9ydENoYW5uZWwgaXMgYSBwbGF0Zm9ybS1pbmRlcGVuZGVu
dCBpbnRlcmZhY2UgdG8gdGhlIHJlbW90ZSBzaWRlIG9mIGEgbWVzc2FnZSBjaGFubmVsLgogICAg
IC8vIEl0IGFjdHMgYXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsIGltcGxlbWVudGF0aW9uIHdoaWNoIGVuc3VyZXMgdGhh
dCB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IGNsb3NlKCkgbWV0aG9kIGlzIGludm9rZWQgYmVmb3Jl
IGRlc3RydWN0aW9uLgogICAgIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbCB7CkBAIC04MiwxNSAr
ODAsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjbGFzcyBFdmVudERhdGEgewog
ICAgICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnREYXRhKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBQYXNzT3du
UHRyPEV2ZW50RGF0YT4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
UGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICAgICAgc3RhdGlj
IFBhc3NPd25QdHI8RXZlbnREYXRhPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogCiAgICAgICAg
ICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIG1lc3NhZ2UoKSB7IHJldHVybiBtX21lc3NhZ2Uu
Z2V0KCk7IH0KLSAgICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+
IGNoYW5uZWxzKCkgeyByZXR1cm4gbV9jaGFubmVscy5yZWxlYXNlKCk7IH0KKyAgICAgICAgICAg
IFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cygpIHsgcmV0dXJu
IG1fcmVjZWlwdHMucmVsZWFzZSgpOyB9CiAKICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAg
IEV2ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICAgICAgRXZlbnREYXRh
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPFRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAgICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbV9tZXNzYWdlOwotICAgICAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5PiBtX2NoYW5uZWxzOworICAgICAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheT4gbV9yZWNlaXB0czsKICAgICAgICAgfTsKIAogICAgICAgICAvLyBTZW5kcyBh
IG1lc3NhZ2UgYW5kIG9wdGlvbmFsIGNsb25lZCBwb3J0IHRvIHRoZSByZW1vdGUgcG9ydC4KQEAg
LTExMSw2ICsxMDksMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8UGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IG1fY2hhbm5lbDsKICAgICB9OwogCisgICAgY2xhc3Mg
TWVzc2FnZVBvcnRDaGFubmVsVHJhbnNmZXJhYmxlUmVjZWlwdCA6IHB1YmxpYyBUcmFuc2ZlcmFi
bGVSZWNlaXB0IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVzc2FnZVBvcnRDaGFu
bmVsVHJhbnNmZXJhYmxlUmVjZWlwdCk7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsVHJhbnNmZXJhYmxlUmVjZWlwdD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsPik7CisKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsVHJhbnNmZXJhYmxlUmVjZWlwdCog
YXNNZXNzYWdlUG9ydENoYW5uZWxUcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyByZXR1cm4gdGhpczsg
fQorICAgICAgICBQYXNzUmVmUHRyPFRyYW5zZmVyYWJsZT4gdHJhbnNmZXJJbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbCogbWVzc2FnZVBvcnRD
aGFubmVsKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlUG9ydENoYW5uZWwuZ2V0KCk7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFRyYW5zZmVyYWJsZVJlY2Vp
cHQoUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+KTsKKyAgICAgICAgT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbD4gbV9tZXNzYWdlUG9ydENoYW5uZWw7CisgICAgfTsKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gTWVzc2FnZVBvcnRDaGFubmVsX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9wU3RhdGVFdmVudC5oCmluZGV4IDBhOTgzMTMuLmQyZDkxNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BvcFN0YXRlRXZlbnQuaApAQCAtMzAsNiArMzAsMTEgQEAKICNpbmNsdWRlICJFdmVudC5oIgog
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCitjbGFzcyBUcmFuc2ZlcmFibGU7
CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRyYW5z
ZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5OwordHlwZWRlZiBWZWN0b3I8T3duUHRyPFRy
YW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwpAQCAtNDIsNyAr
NDcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0UG9wU3RhdGVFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgYm9vbCBpc1BvcFN0YXRlRXZlbnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZU9iamVjdC5nZXQoKTsgfSAgICAKKyAgICBTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU9iamVjdC5nZXQoKTsg
fQorICAgIFRyYW5zZmVyYWJsZUFycmF5KiBkYXRhRGVwZW5kZW5jaWVzKCkgY29uc3QgeyByZXR1
cm4gMDsgfQogCiBwcml2YXRlOgogICAgIFBvcFN0YXRlRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ry
YW5zZmVyYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNhMjI4
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuY3Bw
CkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+IFRyYW5zZmVyYWJsZTo6dHJhbnNmZXJBbGxPdXQoY29uc3QgVHJhbnNmZXJhYmxlQXJy
YXkqIHRyYW5zZmVyYWJsZXMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGlmICghdHJhbnNmZXJhYmxlcyB8fCAhdHJhbnNmZXJhYmxl
cy0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEhhc2hTZXQgdXNl
ZCB0byBlZmZpY2llbnRseSBjaGVjayBmb3IgZHVwbGljYXRlcyBpbiB0aGUgcGFzc2VkLWluIGFy
cmF5LgorICAgIEhhc2hTZXQ8VHJhbnNmZXJhYmxlKj4gdHJhbnNmZXJhYmxlU2V0OworCisgICAg
Ly8gV2FsayB0aGUgaW5jb21pbmcgYXJyYXkgLSBpZiB0aGVyZSBhcmUgYW55IGR1cGxpY2F0ZSB0
cmFuc2ZlcmFibGVzLCBvciB0cmFuc2ZlcnJlZCBwb3J0cyBvciBjbG9zZWQgcG9ydHMsIHRocm93
IGFuIGVycm9yIChwZXIgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYykuCisgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXplKCk7ICsraSkgewor
ICAgICAgICBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSA9ICgqdHJhbnNmZXJhYmxlcylbaV0u
Z2V0KCk7CisgICAgICAgIGlmICghdHJhbnNmZXJhYmxlIHx8IHRyYW5zZmVyYWJsZS0+d2FzVHJh
bnNmZXJyZWRPdXQoKSB8fCB0cmFuc2ZlcmFibGVTZXQuY29udGFpbnModHJhbnNmZXJhYmxlKSkg
eworICAgICAgICAgICAgZWMgPSBEQVRBX0NMT05FX0VSUjsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9CisgICAgICAgIHRyYW5zZmVyYWJsZVNldC5hZGQodHJhbnNmZXJh
YmxlKTsKKyAgICB9CisKKyAgICAvLyBQYXNzZWQtaW4gVHJhbnNmZXJhYmxlcyBwYXNzZWQgdmFs
aWRpdHkgY2hlY2tzLCBzbyB3ZSBjYW4gdHJhbnNmZXIgdGhlbSBvdXQuCisgICAgT3duUHRyPFRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdEFycmF5ID0gYWRvcHRQdHIobmV3IFRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheSh0cmFuc2ZlcmFibGVzLT5zaXplKCkpKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMCA7IGkgPCB0cmFuc2ZlcmFibGVzLT5zaXplKCkgOyArK2kpIHsKKyAg
ICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+IHJlY2VpcHQgPSAoKnRyYW5zZmVyYWJs
ZXMpW2ldLT50cmFuc2Zlck91dChjb250ZXh0LCBlYyk7CisgICAgICAgIEFTU0VSVCghZWMpOyAv
LyBDYW4ndCBnZW5lcmF0ZSBleGNlcHRpb24gaGVyZSBpZiBwYXNzZWQgYWJvdmUgY2hlY2tzLgor
ICAgICAgICAoKnJlY2VpcHRBcnJheSlbaV0gPSByZWNlaXB0LnJlbGVhc2UoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHJlY2VpcHRBcnJheS5yZWxlYXNlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40MDkyZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyYW5zZmVyYWJsZS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYg
VHJhbnNmZXJhYmxlX2gKKyNkZWZpbmUgVHJhbnNmZXJhYmxlX2gKKworI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1lc3NhZ2VQb3J0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2Ns
YXNzIFRyYW5zZmVyYWJsZTsKK2NsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisKK3R5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJhbnNmZXJhYmxlPiwg
MT4gVHJhbnNmZXJhYmxlQXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxl
UmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKKworLy8gVHJhbnNmZXJhYmxl
IG9iamVjdHMgcmVwcmVzZW50IHJlc291cmNlcyB0aGF0IG1heSBiZSBzZW50IGFsb25nIHdpdGgg
bWVzc2FnZXMKKy8vIHRocm91Z2ggdGhlIERPTSBtZXNzYWdpbmcgQVBJLiBBIFRyYW5zZmVyYWJs
ZSBvYmplY3QgbWF5IGJlIHRyYW5zZmVycmVkIG9uY2UuCisvLyBJbnRlcm5hbGx5LCB0cmFuc2Zl
cnJpbmcgYSBUcmFuc2ZlcmFibGUgbWVhbnMgdHVybmluZyBpdCBpbnRvIGEgVHJhbnNmZXJhYmxl
UmVjZWlwdCwKKy8vIGZlcnJ5aW5nIHRoYXQgVHJhbnNmZXJhYmxlUmVjZWlwdCB0aHJvdWdoIHRo
ZSBzeXN0ZW0gYWxvbmcgd2l0aCBhIG1lc3NhZ2UsIGFuZAorLy8gZXZlbnR1YWxseSB0dXJuaW5n
IGl0IGJhY2sgaW50byBhIFRyYW5zZmVyYWJsZSBvbmNlIHRoZSBtZXNzYWdlIGlzIHJlY2VpdmVk
LgorLy8gVGhpcyBzZWNvbmQgVHJhbnNmZXJhYmxlIG9iamVjdCBjYW4gdGhlbiBiZSB0cmFuc2Zl
cmVkIG9uY2UgYWdhaW4uCitjbGFzcyBUcmFuc2ZlcmFibGUgOiBwdWJsaWMgUmVmQ291bnRlZDxU
cmFuc2ZlcmFibGU+IHsKK3B1YmxpYzoKKyAgICAvLyBBcyBtb3JlIFRyYW5zZmVyYWJsZSB0eXBl
cyBhcmUgYWRkZWQsIHNvbWUgYmluZGluZyBjb2RlIG11c3QgYmUgdXBkYXRlZDoKKyAgICAvLyAg
IHRvTmF0aXZlVHJhbnNmZXJhYmxlL3RvSlNUcmFuc2ZlcmFibGUgaW4gSlNNZXNzYWdlUG9ydEN1
c3RvbS5jcHAKKyAgICAvLyAgIHRvTmF0aXZlVHJhbnNmZXJhYmxlL3RvVjhUcmFuc2ZlcmFibGUg
aW4gVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKKyAgICB2aXJ0dWFsIE1lc3NhZ2VQb3J0KiBhc01l
c3NhZ2VQb3J0KCkgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFRyYW5z
ZmVyYWJsZVJlY2VpcHQ+IHRyYW5zZmVyT3V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNl
cHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCB3YXNUcmFuc2ZlcnJlZE91dCgpIGNv
bnN0ID0gMDsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eT4gdHJhbnNmZXJBbGxPdXQoY29uc3QgVHJhbnNmZXJhYmxlQXJyYXkqLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgdmlydHVhbCB+VHJhbnNmZXJhYmxl
KCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBUcmFuc2ZlcmFibGUoKSB7IH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRyYW5zZmVyYWJsZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOWMzZGI2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCisK
KyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNz
T3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFs
bEluKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKK3sKKyAgICBpZiAoIXJlY2VpcHRzIHx8ICFyZWNl
aXB0cy0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIE93blB0cjxUcmFu
c2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlQXJyYXkgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJh
YmxlQXJyYXkocmVjZWlwdHMtPnNpemUoKSkpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgcmVjZWlwdHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgICgqdHJhbnNmZXJhYmxlQXJy
YXkpW2ldID0gKCpyZWNlaXB0cylbaV0tPnRyYW5zZmVySW4oY29udGV4dCk7CisgICAgICAgIEFT
U0VSVCgoKnRyYW5zZmVyYWJsZUFycmF5KVtpXSk7CisgICAgfQorICAgIHJldHVybiB0cmFuc2Zl
cmFibGVBcnJheS5yZWxlYXNlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmJkM2E1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisK
KyNpZm5kZWYgVHJhbnNmZXJhYmxlUmVjZWlwdF9oCisjZGVmaW5lIFRyYW5zZmVyYWJsZVJlY2Vp
cHRfaAorCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWxUcmFuc2ZlcmFi
bGVSZWNlaXB0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFRyYW5zZmVy
YWJsZTsKK2NsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0
cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsKK3R5cGVkZWYgVmVjdG9yPE93
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Owor
CisvLyBBIFRyYW5zZmVyYWJsZVJlY2VpcHQgaXMgYSBUcmFuc2ZlcmFibGUgb2JqZWN0IHRoYXQg
aXMgYmVpbmcgc2VudCBhbG9uZyB3aXRoIHNvbWUKKy8vIG1lc3NhZ2UuIEl0IG1heSBsYXRlciBi
ZSByZWRlZW1lZCBmb3IgYSBUcmFuc2ZlcmFibGUgb2JqZWN0IGVxdWl2YWxlbnQgdG8gdGhlIG9u
ZQorLy8gZnJvbSB3aGljaCB0aGlzIFRyYW5zZmVyYWJsZVJlY2VpcHQgd2FzIGNyZWF0ZWQuIEEg
VHJhbnNmZXJhYmxlUmVjZWlwdCBtYXkgb25seQorLy8gYmUgcmVkZWVtZWQgb25jZS4gU29tZSBU
cmFuc2ZlcmFibGVSZWNlaXB0cyBtYXkgYmUgZmxhdHRlbmVkIGJ5IHRoZSBzZXJpYWxpemVyCisv
LyAoYW4gZXZlbnQgdGhhdCBtYXkgb2NjdXIgc2hvdWxkLCBmb3IgZXhhbXBsZSwgdGhlIHJlY2Vp
cHQgbmVlZCB0byBiZSBzZW50IGFjcm9zcworLy8gdGhlIG5ldHdvcmsgb3IgYW4gSVBDIGJvdW5k
YXJ5KS4gT3RoZXJzIG1heSBoYXZlIHNwZWNpYWwgcGxhdGZvcm0tc3BlY2lmaWMgc2VtYW50aWNz
CisvLyB0aGF0IGFyZSBpbnZva2VkIGF0IHRyYW5zZmVyIHRpbWUuIFRyYW5zZmVyYWJsZVJlY2Vp
cHRzIHNob3VsZCBiZSBhYmxlIHRvIGJlIHNlbnQKKy8vIGZyZWVseSBmcm9tIG9uZSB0aHJlYWQg
dG8gYW5vdGhlciAoYnV0IG9ubHkgb25lIHRocmVhZCBzaG91bGQgY2FsbCB0cmFuc2ZlckluKS4K
K2NsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQgeworcHVibGljOgorICAgIHZpcnR1YWwgflRyYW5z
ZmVyYWJsZVJlY2VpcHQoKSB7IH0KKworICAgIHZpcnR1YWwgTWVzc2FnZVBvcnRDaGFubmVsVHJh
bnNmZXJhYmxlUmVjZWlwdCogYXNNZXNzYWdlUG9ydENoYW5uZWxUcmFuc2ZlcmFibGVSZWNlaXB0
KCkgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZmVyYWJsZT4g
dHJhbnNmZXJJbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgPSAwOworCisgICAgc3RhdGljIFBh
c3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyQWxsSW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CisKK3Byb3Rl
Y3RlZDoKKyAgICBUcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBUcmFuc2ZlcmFibGVSZWNlaXB0X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
MnAvUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGJkYTNlZTMuLmY2Y2NhMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcDJwL1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGVlckNv
bm5lY3Rpb246OnBvc3RTdGFydE5lZ290aWF0aW9uVGFzaygpCiB2b2lkIFBlZXJDb25uZWN0aW9u
OjpkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBpbnQmLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gZGF0YSkKIHsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBk
ID0gZGF0YTsKLSAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFBhc3NPd25Q
dHI8TWVzc2FnZVBvcnRBcnJheT4oKSwgZCkpOworICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUoUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4oKSwgZCkpOwogfQogCiB2
b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNpZ25hbGluZ0V2ZW50KGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2Y2E1YjM3Li4wMTliYzg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC05MCw2ICs5MCw4IEBACiAjaW5jbHVk
ZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIlN0eWxlTWVkaWEuaCIKICNpbmNsdWRl
ICJTdWRkZW5UZXJtaW5hdGlvbi5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgorI2luY2x1
ZGUgIlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKICNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgogI2lu
Y2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtMTIxLDIw
ICsxMjMsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQb3N0TWVzc2FnZVRpbWVy
IDogcHVibGljIFRpbWVyQmFzZSB7CiBwdWJsaWM6Ci0gICAgUG9zdE1lc3NhZ2VUaW1lcihET01X
aW5kb3cqIHdpbmRvdywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNl
LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgU2VjdXJpdHlP
cmlnaW4qIHRhcmdldE9yaWdpbikKKyAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdpbmRvdyogd2lu
ZG93LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VPcmlnaW4sIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25Q
dHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cywgU2VjdXJpdHlPcmlnaW4qIHRh
cmdldE9yaWdpbikKICAgICAgICAgOiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNz
YWdlKG1lc3NhZ2UpCiAgICAgICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQogICAgICAgICAs
IG1fc291cmNlKHNvdXJjZSkKLSAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICAg
ICAsIG1fcmVjZWlwdHMocmVjZWlwdHMpCiAgICAgICAgICwgbV90YXJnZXRPcmlnaW4odGFyZ2V0
T3JpZ2luKQogICAgIHsKICAgICB9CiAKICAgICBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIE93blB0
cjxNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdlUG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cygqY29udGV4dCwgbV9jaGFubmVscy5yZWxlYXNlKCkpOwotICAgICAgICByZXR1cm4gTWVz
c2FnZUV2ZW50OjpjcmVhdGUobWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdlLCBtX29y
aWdpbiwgIiIsIG1fc291cmNlKTsKKyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0
cmFuc2ZlcmFibGVzID0gVHJhbnNmZXJhYmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJbigqY29udGV4
dCwgbV9yZWNlaXB0cy5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50Ojpj
cmVhdGUodHJhbnNmZXJhYmxlcy5yZWxlYXNlKCksIG1fbWVzc2FnZSwgbV9vcmlnaW4sICIiLCBt
X3NvdXJjZSk7CiAgICAgfQogICAgIFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX3RhcmdldE9yaWdpbi5nZXQoKTsgfQogCkBAIC0xNDksNyArMTUxLDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAg
ICAgU3RyaW5nIG1fb3JpZ2luOwogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNlOwotICAg
IE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKKyAgICBPd25QdHI8
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBtX3JlY2VpcHRzOwogICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gbV90YXJnZXRPcmlnaW47CiB9OwogCkBAIC03OTgsMTUgKzgwMCwxNSBAQCBDT01Q
SUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KERPTVdpbmRvdzo6UEVSU0lTVEVOVCkgPT0gc3Rh
dGljX2Nhc3Q8aW50PihBc3luYwogCiAjZW5kaWYKIAotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNz
YWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9y
dCogcG9ydCwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFi
bGUsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsKLSAgICBpZiAocG9y
dCkKLSAgICAgICAgcG9ydHMuYXBwZW5kKHBvcnQpOwotICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2Us
ICZwb3J0cywgdGFyZ2V0T3JpZ2luLCBzb3VyY2UsIGVjKTsKKyAgICBUcmFuc2ZlcmFibGVBcnJh
eSB0cmFuc2ZlcmFibGVzOworICAgIGlmICh0cmFuc2ZlcmFibGUpCisgICAgICAgIHRyYW5zZmVy
YWJsZXMuYXBwZW5kKHRyYW5zZmVyYWJsZSk7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnRy
YW5zZmVyYWJsZXMsIHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CiB9CiAKLXZvaWQgRE9NV2lu
ZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3Jp
Z2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERPTVdpbmRv
dzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Us
IGNvbnN0IFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzLCBjb25zdCBTdHJpbmcmIHRh
cmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtODIyLDcgKzgyNCw3IEBAIHZvaWQg
RE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgY29uc3QgTWVzCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9y
dHMocG9ydHMsIGVjKTsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNl
aXB0cyA9IFRyYW5zZmVyYWJsZTo6dHJhbnNmZXJBbGxPdXQodHJhbnNmZXJhYmxlcywgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAK
QEAgLTgzNCw3ICs4MzYsNyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lcwogICAgIFN0cmluZyBz
b3VyY2VPcmlnaW4gPSBzb3VyY2VEb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmco
KTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdlLgotICAgIFBvc3RNZXNzYWdlVGltZXIq
IHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIodGhpcywgbWVzc2FnZSwgc291cmNlT3JpZ2lu
LCBzb3VyY2UsIGNoYW5uZWxzLnJlbGVhc2UoKSwgdGFyZ2V0LmdldCgpKTsKKyAgICBQb3N0TWVz
c2FnZVRpbWVyKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKHRoaXMsIG1lc3NhZ2UsIHNv
dXJjZU9yaWdpbiwgc291cmNlLCByZWNlaXB0cy5yZWxlYXNlKCksIHRhcmdldC5nZXQoKSk7CiAg
ICAgdGltZXItPnN0YXJ0T25lU2hvdCgwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5k
ZXggYTJhZDgwOS4uMjBmZDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC02Niw2ICs2
Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTdG9yYWdlOwogICAgIGNsYXNz
IFN0b3JhZ2VJbmZvOwogICAgIGNsYXNzIFN0eWxlTWVkaWE7CisgICAgY2xhc3MgVHJhbnNmZXJh
YmxlOworICAgIGNsYXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CiAgICAgY2xhc3MgV2ViS2l0UG9p
bnQ7CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCkBAIC03NCw3ICs3Niw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIAot
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJy
YXk7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVy
YWJsZUFycmF5OworICAgIHR5cGVkZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OwogCiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKIApAQCAtMjI4LDkgKzIzMSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBwYWdlRGVzdHJveWVkKCk7CiAgICAgICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbigp
OwogCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBjb25zdCBTdHJpbmcmIHRh
cmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAg
dm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwgY29uc3QgVHJhbnNmZXJhYmxlQXJyYXkqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwg
RE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgLy8gRklYTUU6IHJl
bW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4K
LSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9N
V2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2Fn
ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgVHJhbnNmZXJhYmxl
KiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBhc3NPd25QdHI8
UG9zdE1lc3NhZ2VUaW1lcj4pOwogCiAgICAgICAgIHZvaWQgc2Nyb2xsQnkoaW50IHgsIGludCB5
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA2MmYxYzMwLi5lMjFkMmZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0yMTUsNiArMjE1LDggQEAgbW9kdWxl
IHdpbmRvdyB7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9K
QVZBU0NSSVBUCiAgICAgICAgIFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9p
ZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlv
bmFsXSBBcnJheSBtZXNzYWdlUG9ydHMsIGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4pCiAgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0RvTm90Q2hlY2tEb21haW5T
ZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHdlYmtpdFBvc3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IHRyYW5zZmVyTGlzdCwgaW4gRE9N
U3RyaW5nIHRhcmdldE9yaWdpbikKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwog
I2Vsc2UKICAgICAgICAgLy8gVGhlcmUncyBubyBnb29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkg
dmlhIHRoZSBPYmpDIGJpbmRpbmdzLCBzbyBmb3Igbm93IGp1c3QgYWxsb3cgcGFzc2luZyBpbiBh
IHNpbmdsZSBwb3J0LgogICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21d
IHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3NhZ2UsIGluIFtP
cHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQsIGluIERPTVN0cmluZyB0YXJnZXRPcmln
aW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaAppbmRleCA5YWRlOWM4Li4yZjRjZWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKQEAgLTQzLDYgKzQzLDggQEAgY2xhc3MgSURC
UmVxdWVzdDsKIGNsYXNzIElEQlRyYW5zYWN0aW9uOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK2NsYXNzIFRyYW5zZmVyYWJsZTsK
K3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFuc2ZlcmFibGVBcnJh
eTsKIAogY2xhc3MgSURCQ3Vyc29yIDogcHVibGljIFJlZkNvdW50ZWQ8SURCQ3Vyc29yPiB7CiBw
dWJsaWM6CkBAIC02Myw2ICs2NSw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4g
a2V5KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdDsK
ICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUoKSBjb25zdDsKKyAg
ICAvLyBBbiBJbmRleGVkREIgb25seSBob2xkcyBmbGF0dGVuZWQgZGF0YS4KKyAgICBUcmFuc2Zl
cmFibGVBcnJheSogdmFsdWVEZXBlbmRlbmNpZXMoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAg
SURCQW55KiBzb3VyY2UoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gdXBk
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCmluZGV4IDU0YjViYTguLjk2OTgwNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcApAQCAt
NDcsMjYgKzQ3LDI1IEBAIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OkRlZGljYXRlZFdvcmtlckNv
bnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzCiB9CiAKIC8vIEZJWE1FOiBy
ZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCku
Ci12b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqIHRyYW5z
ZmVyYWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0
czsKLSAgICBpZiAocG9ydCkKLSAgICAgICAgcG9ydHMuYXBwZW5kKHBvcnQpOwotICAgIHBvc3RN
ZXNzYWdlKG1lc3NhZ2UsICZwb3J0cywgZWMpOworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5z
ZmVyYWJsZXM7CisgICAgaWYgKHRyYW5zZmVyYWJsZSkKKyAgICAgICAgdHJhbnNmZXJhYmxlcy5h
cHBlbmQodHJhbnNmZXJhYmxlKTsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmdHJhbnNmZXJh
YmxlcywgZWMpOwogfQogCiB2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdl
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxNZXNzYWdlUG9y
dEFycmF5Kj4oMCksIGVjKTsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxU
cmFuc2ZlcmFibGUqPigwKSwgZWMpOwogfQogCi12b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6
OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBj
b25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJhYmxl
cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4g
cHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgotICAgIE93
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMgPSBNZXNzYWdlUG9ydDo6ZGlz
ZW50YW5nbGVQb3J0cyhwb3J0cywgZWMpOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+IHJlY2VpcHRzID0gVHJhbnNmZXJhYmxlOjp0cmFuc2ZlckFsbE91dCh0cmFuc2ZlcmFi
bGVzLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAg
IHJldHVybjsKLSAgICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHkoKS5wb3N0TWVzc2FnZVRv
V29ya2VyT2JqZWN0KG1lc3NhZ2UsIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisgICAgdGhyZWFkKCkt
Pndvcmtlck9iamVjdFByb3h5KCkucG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlLCBy
ZWNlaXB0cy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6Omlt
cG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaApp
bmRleCBkYmE1MmFlLi44ODM5MTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuaApAQCAtNTYsOSArNTYsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgICAgIHZpcnR1YWwgRGVkaWNhdGVkV29y
a2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgeyByZXR1cm4gdGhpczsgfQog
ICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIGNvbnN0IFRyYW5zZmVyYWJsZUFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmlu
ZGluZ3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBUcmFuc2ZlcmFibGUqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihtZXNzYWdlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwKaW5kZXggMjJkMzUyNS4uYjBmYjMxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQu
aWRsCkBAIC00Myw2ICs0Myw4IEBAIG1vZHVsZSB0aHJlYWRzIHsKICNpZiBkZWZpbmVkKExBTkdV
QUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICAgICAgW0N1c3RvbV0g
dm9pZCBwb3N0TWVzc2FnZShpbiBhbnkgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNz
YWdlUG9ydHMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1
c3RvbV0gdm9pZCB3ZWJraXRQb3N0TWVzc2FnZShpbiBhbnkgbWVzc2FnZSwgaW4gW09wdGlvbmFs
XSBBcnJheSB0cmFuc2Zlckxpc3QpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
ICNlbHNlCiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhwb3NlIGFuIGFycmF5
IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0IGFsbG93IHBhc3NpbmcgaW4g
YSBzaW5nbGUgcG9ydC4KICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVz
c2FnZSwgaW4gW09wdGlvbmFsXSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCmluZGV4IDI0MDAyZTQuLmU1
NmY5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNz
YWdlUG9ydC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyVGhyZWFkLmgiCiAKQEAgLTQ0LDkgKzQ1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZUNvbm5lY3RFdmVudChQYXNzUmVmUHRy
PE1lc3NhZ2VQb3J0PiBwb3J0KQogewotICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50ID0g
TWVzc2FnZUV2ZW50OjpjcmVhdGUoYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkoMSwgcG9y
dCkpKTsKKyAgICBSZWZQdHI8VHJhbnNmZXJhYmxlPiB0cmFuc2ZlcmFibGUocG9ydCk7CisgICAg
UmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShhZG9wdFB0
cihuZXcgVHJhbnNmZXJhYmxlQXJyYXkoMSwgdHJhbnNmZXJhYmxlKSkpOwogICAgIGV2ZW50LT5p
bml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVudCwgZmFsc2UsIGZhbHNlKTsKLSAgICBy
ZXR1cm4gZXZlbnQ7CisgICAgcmV0dXJuIGV2ZW50LnJlbGVhc2UoKTsKIH0KIAogU2hhcmVkV29y
a2VyQ29udGV4dDo6U2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFNoYXJlZFdvcmtlclRocmVhZCog
dGhyZWFkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDIzN2I2MTAuLjUyYzI0NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTg2LDI2ICs4NiwyNiBAQCBXb3JrZXI6
On5Xb3JrZXIoKQogfQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhl
IE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotdm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9y
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJh
YmxlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwot
ICAgIGlmIChwb3J0KQotICAgICAgICBwb3J0cy5hcHBlbmQocG9ydCk7Ci0gICAgcG9zdE1lc3Nh
Z2UobWVzc2FnZSwgJnBvcnRzLCBlYyk7CisgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJh
YmxlczsKKyAgICBpZiAodHJhbnNmZXJhYmxlKQorICAgICAgICB0cmFuc2ZlcmFibGVzLmFwcGVu
ZCh0cmFuc2ZlcmFibGUpOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsICZ0cmFuc2ZlcmFibGVz
LCBlYyk7CiB9CiAKIHZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcG9zdE1l
c3NhZ2UobWVzc2FnZSwgc3RhdGljX2Nhc3Q8TWVzc2FnZVBvcnRBcnJheSo+KDApLCBlYyk7Cisg
ICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgc3RhdGljX2Nhc3Q8VHJhbnNmZXJhYmxlKj4oMCksIGVj
KTsKIH0KIAotdm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0
aW9uQ29kZSYgZWMpCit2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2Zl
cmFibGVzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBEaXNlbnRhbmdsZSB0aGUgcG9y
dCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0byB0aGUgcmVtb3RlIGNvbnRleHQuCi0g
ICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0
OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheT4gcmVjZWlwdHMgPSBUcmFuc2ZlcmFibGU6OnRyYW5zZmVyQWxsT3V0KHRyYW5z
ZmVyYWJsZXMsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMpOwogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dFByb3h5LT5wb3N0TWVzc2FnZVRvV29ya2VyQ29u
dGV4dChtZXNzYWdlLCBjaGFubmVscy5yZWxlYXNlKCkpOworICAgIG1fY29udGV4dFByb3h5LT5w
b3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChtZXNzYWdlLCByZWNlaXB0cy5yZWxlYXNlKCkpOwog
fQogCiB2b2lkIFdvcmtlcjo6dGVybWluYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4
IDhlNGVjM2EuLjY2NjJiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNTcsOSArNTcs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgV29ya2VyKiB0b1dvcmtl
cigpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
ICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAg
IHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3Nh
Z2UsIGNvbnN0IFRyYW5zZmVyYWJsZUFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICAv
LyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1
ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgVHJhbnNmZXJhYmxlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIHZvaWQg
dGVybWluYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAppbmRleCA3NjM3NTY5Li4z
OGU5NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCkBAIC00Miw2ICs0Miw4IEBAIG1v
ZHVsZSB0aHJlYWRzIHsKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdV
QUdFX0pBVkFTQ1JJUFQKICAgICAgICAgW0N1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJp
YWxpc2VkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdlUG9y
dHMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0g
dm9pZCB3ZWJraXRQb3N0TWVzc2FnZShpbiBTZXJpYWxpc2VkU2NyaXB0VmFsdWUgbWVzc2FnZSwg
aW4gW09wdGlvbmFsXSBBcnJheSB0cmFuc2Zlckxpc3QpCisgICAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhw
b3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0IGFsbG93
IHBhc3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShpbiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBNZXNzYWdlUG9ydCBt
ZXNzYWdlUG9ydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5o
CmluZGV4IDg3OThmNTEuLjQzNWE4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0UHJveHkuaApAQCAtMzMsMTMgKzMzLDE1IEBACiAKICNpZiBFTkFCTEUoV09SS0VS
UykKIAotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBLVVJMOworICAgIGNs
YXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPFRyYW5z
ZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CiAgICAgY2xhc3Mg
V29ya2VyOwogCiAgICAgLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIgY29udGV4dC4K
QEAgLTUzLDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Pikg
PSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCA9
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAKaW5kZXggMGE2ZjhjYi4uMjRhYTNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTQ4LDE1ICs0OCwxNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzayA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4g
Y2hhbm5lbHMpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlckNvbnRleHRUYXNr
PiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NP
d25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrKG1lc3NhZ2UsIGNo
YW5uZWxzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVdvcmtlckNvbnRl
eHRUYXNrKG1lc3NhZ2UsIHJlY2VpcHRzKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE1lc3Nh
Z2VXb3JrZXJDb250ZXh0VGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAg
TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMp
CiAgICAgICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgICwgbV9jaGFubmVscyhjaGFu
bmVscykKKyAgICAgICAgLCBtX3JlY2VpcHRzKHJlY2VpcHRzKQogICAgIHsKICAgICB9CiAKQEAg
LTY0LDI3ICs2NCwyNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUKHNjcmlwdENv
bnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKICAgICAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4
dCogY29udGV4dCA9IHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckNvbnRleHQqPihzY3JpcHRD
b250ZXh0KTsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnNjcmlwdENvbnRleHQsIG1fY2hhbm5lbHMucmVsZWFzZSgp
KTsKLSAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShw
b3J0cy5yZWxlYXNlKCksIG1fbWVzc2FnZSkpOworICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxl
QXJyYXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbElu
KCpzY3JpcHRDb250ZXh0LCBtX3JlY2VpcHRzLnJlbGVhc2UoKSk7CisgICAgICAgIGNvbnRleHQt
PmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUodHJhbnNmZXJhYmxlcy5yZWxlYXNl
KCksIG1fbWVzc2FnZSkpOwogICAgICAgICBjb250ZXh0LT50aHJlYWQoKS0+d29ya2VyT2JqZWN0
UHJveHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoY29udGV4dC0+aGFzUGVuZGlu
Z0FjdGl2aXR5KCkpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtX21lc3NhZ2U7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBtX2NoYW5uZWxzOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IG1fcmVj
ZWlwdHM7CiB9OwogCiBjbGFzcyBNZXNzYWdlV29ya2VyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNZXNz
YWdlV29ya2VyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgV29y
a2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQorICAgIHN0YXRpYyBQYXNzT3duUHRy
PE1lc3NhZ2VXb3JrZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0
cywgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2VyVGFzayhtZXNzYWdlLCBjaGFubmVscywg
bWVzc2FnaW5nUHJveHkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29y
a2VyVGFzayhtZXNzYWdlLCByZWNlaXB0cywgbWVzc2FnaW5nUHJveHkpKTsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgTWVzc2FnZVdvcmtlclRhc2soUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5u
ZWxzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgTWVzc2FnZVdv
cmtlclRhc2soUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NP
d25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cywgV29ya2VyTWVzc2FnaW5n
UHJveHkqIG1lc3NhZ2luZ1Byb3h5KQogICAgICAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQotICAg
ICAgICAsIG1fY2hhbm5lbHMoY2hhbm5lbHMpCisgICAgICAgICwgbV9yZWNlaXB0cyhyZWNlaXB0
cykKICAgICAgICAgLCBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQogICAgIHsKICAg
ICB9CkBAIC05NSwxMyArOTUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF3b3JrZXJPYmpl
Y3QgfHwgbV9tZXNzYWdpbmdQcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3Nh
Z2VQb3J0OjplbnRhbmdsZVBvcnRzKCpzY3JpcHRDb250ZXh0LCBtX2NoYW5uZWxzLnJlbGVhc2Uo
KSk7Ci0gICAgICAgIHdvcmtlck9iamVjdC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNy
ZWF0ZShwb3J0cy5yZWxlYXNlKCksIG1fbWVzc2FnZSkpOworICAgICAgICBPd25QdHI8VHJhbnNm
ZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2Zl
ckFsbEluKCpzY3JpcHRDb250ZXh0LCBtX3JlY2VpcHRzLnJlbGVhc2UoKSk7CisgICAgICAgIHdv
cmtlck9iamVjdC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0cmFuc2ZlcmFi
bGVzLnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKLSAgICBPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheT4gbV9yZWNlaXB0czsKICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbV9tZXNzYWdp
bmdQcm94eTsKIH07CiAKQEAgLTI0MiwyMSArMjQyLDIxIEBAIHZvaWQgV29ya2VyTWVzc2FnaW5n
UHJveHk6OnN0YXJ0V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0
cmluCiAgICAgdGhyZWFkLT5zdGFydCgpOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVs
cykKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3Qo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKE1lc3NhZ2VXb3JrZXJUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hh
bm5lbHMsIHRoaXMpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKE1l
c3NhZ2VXb3JrZXJUYXNrOjpjcmVhdGUobWVzc2FnZSwgcmVjZWlwdHMsIHRoaXMpKTsKIH0KIAot
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0
cykKIHsKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAobV93b3JrZXJUaHJlYWQpIHsKICAgICAgICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNv
dW50OwotICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKE1lc3NhZ2VX
b3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAgIG1f
d29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTWVzc2FnZVdvcmtlckNvbnRleHRUYXNr
OjpjcmVhdGUobWVzc2FnZSwgcmVjZWlwdHMpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9xdWV1
ZWRFYXJseVRhc2tzLmFwcGVuZChNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZShtZXNz
YWdlLCBjaGFubmVscykpOworICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3Nh
Z2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UsIHJlY2VpcHRzKSk7CiB9CiAKIHZv
aWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChQ
YXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmlu
ZyYgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
aAppbmRleCAzNzMxNDgwLi5jNzRhYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC01NSwxMyArNTUsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9kcyBpbiB0aGUgd29ya2VyIG9i
amVjdCB0aHJlYWQuKQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNv
bnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgc291cmNlQ29kZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250
ZXh0KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJD
b250ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+KTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJv
eWVkKCk7CiAKICAgICAgICAgLy8gSW1wbGVtZW50YXRpb25zIG9mIFdvcmtlck9iamVjdFByb3h5
LgogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9kcyBpbiB0aGUgd29ya2VyIGNvbnRl
eHQgdGhyZWFkLikKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29y
a2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxU
cmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBv
c3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBl
LCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCmluZGV4IDMzZTBiYzMuLjAxYTFmMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKQEAgLTMzLDE4
ICszMywyMCBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKKyNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgotI2luY2x1
ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsOworICAgIGNsYXNz
IFRyYW5zZmVyYWJsZVJlY2VpcHQ7CisgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPFRyYW5zZmVy
YWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CiAKICAgICAvLyBBIHBy
b3h5IHRvIHRhbGsgdG8gdGhlIHdvcmtlciBvYmplY3QuCiAgICAgY2xhc3MgV29ya2VyT2JqZWN0
UHJveHkgOiBwdWJsaWMgV29ya2VyUmVwb3J0aW5nUHJveHkgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pikg
PSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVj
ZWlwdEFycmF5PikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb25maXJtTWVzc2FnZUZy
b21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5MjcyODM5Li5hNDM4ZmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDExLTA4LTE3ICBMdWtl
IFphcmtvICA8bHVrZXphcmtvQGdtYWlsLmNvbT4KKworICAgICAgICBNYWtlIE1lc3NhZ2VQb3J0
IFRyYW5zZmVyYWJsZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjUyMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAtIFJlcGFyZW50IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCB0byBXZWJUcmFuc2ZlcmFi
bGVSZWNlaXB0CisgICAgICAgIC0gRXh0cmFjdCBjb252ZXJzaW9uIGZyb20gV2ViTWVzc2FnZVBv
cnRDaGFubmVsIHRvL2Zyb20gTWVzc2FnZVBvcnRDaGFubmVsIGFzCisgICAgICAgICAgdGhlIFRy
YW5zZmVyYWJsZS1nZW5lcmljIGZyb21XZWIvdG9XZWIKKyAgICAgICAgLSBFeHBvc2UgZmxhdHRl
blJlY2VpcHRMaXN0IGZyb20gU2VyaWFsaXplZFNjcmlwdFZhbHVlIGFuZCB1c2UgdGhpcyB3aGVu
IGEKKyAgICAgICAgICBtZXNzYWdlIG5lZWRzIHRvIGJlIHNlbnQgYWNyb3NzIGFuIElQQyBjaGFu
bmVsLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbDo6
YXNXZWJNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAqIHB1YmxpYy9XZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6
YXNXZWJNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2ZlcmFi
bGVSZWNlaXB0OjpXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VHJhbnNmZXJhYmxlUmVjZWlwdDo6fldlYlRyYW5zZmVyYWJsZVJlY2VpcHQpOgorICAgICAgICAq
IHB1YmxpYy9XZWJXb3JrZXIuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViV29ya2VyQ2xpZW50Lmg6
CisgICAgICAgICogc3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpwb3N0TWVzc2FnZVRvUmVtb3Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRN
ZXNzYWdlRnJvbVJlbW90ZSk6CisgICAgICAgICogc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6aXNGbGF0
dGVuYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Zmxh
dHRlblJlY2VpcHRMaXN0KToKKyAgICAgICAgKiBzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHA6
CisgICAgICAgICogc3JjL1dlYlRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmZyb21XZWJBbGwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0b1dlYik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRvV2ViQWxsKToKKyAgICAgICAgKiBzcmMvV2ViV29ya2Vy
QmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RNZXNzYWdlVG9X
b3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2Fn
ZVRhc2spOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJCYXNlLmg6CisgICAgICAgICogc3JjL1dl
YldvcmtlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJ
bXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYldv
cmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2sp
OgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29y
a2VyT2JqZWN0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdFRhc2spOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJD
bGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYldvcmtlckltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJXb3JrZXJJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4
dCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckltcGwuaDoKKwogMjAxMS0wOC0xMCAgQW5kcmV5
IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJv
bGxlZCBERVBTIDk1ODEzOjk2MDA5IHRvIHBpY2sgZGF0YSB1cmwgdGltaW5nIGZpeC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiOTdhNjdjLi4wZWZhNGY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCkBAIC0yODAsNiArMjgwLDcgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlRleHRJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0
UnVuLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGhyZWFkU2FmZURhdGEuaCcsCisg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVVJMLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
VVJMRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXIuaCcsCkBA
IC01NjUsNiArNTY2LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN0cmluZy5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dFJ1bi5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViVGhyZWFkU2FmZURhdGEuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlRyYW5z
ZmVyYWJsZVJlY2VpcHQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMTG9hZFRpbWluZy5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViVVJMUmVxdWVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwuaAppbmRleCAyODhiZDU1Li4zNTll
OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdl
UG9ydENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZXNz
YWdlUG9ydENoYW5uZWwuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBXZWJNZXNzYWdlUG9y
dENoYW5uZWxfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdC5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTM5LDE5ICs0MCwxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbENsaWVudDsKIGNsYXNzIFdlYlN0cmluZzsKIAotdHlwZWRlZiBXZWJW
ZWN0b3I8Y2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsKj4gV2ViTWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk7Ci0KIC8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSB0byBhIE1lc3NhZ2UgUG9ydCBDaGFu
bmVsIGltcGxlbWVudGF0aW9uLiAgVGhlIG9iamVjdCBvd25zIGl0c2VsZiBhbmQKIC8vIGlzIHNp
Z25hbGxlZCB0aGF0IGl0cyBub3QgbmVlZGVkIGFueW1vcmUgd2l0aCB0aGUgZGVzdHJveSgpIGNh
bGwuCi1jbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWwgeworY2xhc3MgV2ViTWVzc2FnZVBvcnRD
aGFubmVsIDogcHVibGljIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQgewogcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRDbGllbnQoV2ViTWVzc2FnZVBvcnRDaGFubmVsQ2xpZW50KikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgPSAwOwogICAgIC8vIFdlYktpdCB2ZXJzaW9ucyBv
ZiBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWwuCiAgICAgdmlydHVhbCB2b2lkIGVudGFuZ2xl
KFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCopID0gMDsKICAgICAvLyBDYWxsZWUgcmVjZWl2ZXMgb3du
ZXJzaGlwIG9mIHRoZSBwYXNzZWQgdmVjdG9yLgotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2Fn
ZShjb25zdCBXZWJTdHJpbmcmLCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSopID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgdHJ5R2V0TWVzc2FnZShXZWJTdHJpbmcqLCBXZWJNZXNzYWdlUG9ydENo
YW5uZWxBcnJheSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgV2Vi
U3RyaW5nJiwgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCB0cnlHZXRNZXNzYWdlKFdlYlN0cmluZyosIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eSYpID0gMDsKKyAgICB2aXJ0dWFsIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCogYXNXZWJNZXNzYWdl
UG9ydENoYW5uZWwoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByb3RlY3RlZDoKICAgICB+V2ViTWVz
c2FnZVBvcnRDaGFubmVsKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGYwNWIyN2QuLmJiOGRj
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zMywxMSArMzMsMTYgQEAKIAogI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJWZWN0
b3IuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7
IH0KK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK30K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJUcmFuc2Zl
cmFibGVSZWNlaXB0OwordHlwZWRlZiBXZWJWZWN0b3I8Y2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVj
ZWlwdCo+IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKIAogY2xhc3MgV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIHsKIHB1YmxpYzoKQEAgLTY0LDYgKzY5LDE1IEBAIHB1YmxpYzoKICAgICAv
LyBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK
IAorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGJvb2wgaXNGbGF0dGVuYWJsZShXZWJUcmFuc2Zl
cmFibGVSZWNlaXB0Kik7CisKKyAgICAvLyBGbGF0dGVucyBmbGF0dGVuYWJsZSBXZWJUcmFuc2Zl
cmFibGVSZWNlaXB0cyB0byB0aGUgZ2l2ZW4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEKKyAg
ICAvLyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUsIHJldHVybmluZyBhIG5ldyByZXByZXNlbnRh
dGlvbi4gU2V0cyB1bmZsYXR0ZW5hYmxlQ291bnRPdXQKKyAgICAvLyB0byB0aGUgbnVtYmVyIG9m
IHVuZmxhdHRlbmFibGUgcmVjZWlwdHMgaW4gdGhlIHBhc3NlZC1pbiBhcnJheS4KKyAgICBXRUJL
SVRfRVhQT1JUIHN0YXRpYyBXZWJTdHJpbmcgZmxhdHRlblJlY2VpcHRMaXN0KGNvbnN0IFdlYlN0
cmluZyYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiB1bmZsYXR0ZW5h
YmxlQ291bnRPdXQpOworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU+Jik7CiAgICAgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBvcGVyYXRvcj0o
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZmVyYWJs
ZVJlY2VpcHQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZmVyYWJs
ZVJlY2VpcHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDY4ZDM5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHRfaAorI2RlZmluZSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0X2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBUcmFuc2ZlcmFibGVSZWNlaXB0OwordHlwZWRlZiBWZWN0b3I8T3duUHRyPFRyYW5zZmVyYWJs
ZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7Cit9CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDsKK2NsYXNzIFdl
YlN0cmluZzsKKwordHlwZWRlZiBXZWJWZWN0b3I8Y2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlw
dCo+IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKKworY2xhc3MgV2ViVHJhbnNmZXJhYmxl
UmVjZWlwdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBXZWJNZXNzYWdlUG9ydENoYW5uZWwqIGFz
V2ViTWVzc2FnZVBvcnRDaGFubmVsKCkgeyByZXR1cm4gMDsgfQorCisjaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCisgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNvbnZlcnQgYmV0d2VlbiBUcmFuc2Zl
cmFibGVSZWNlaXB0cyBhbmQgdGhlaXIgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdAorICAgIC8vIGNv
dW50ZXJwYXJ0cy4gTm90ZSB0aGF0IHRoZXNlIGNvbnZlcnNpb25zIG1heSBoYXZlIHNpZGUgZWZm
ZWN0cy4gVGhlICpBbGwgbWV0aG9kcworICAgIC8vIG1hcCB0aGUgY29udmVyc2lvbiBtZXRob2Rz
IGFjcm9zcyB0aGUgcGFzc2VkLWluIEFycmF5cyAoY2hlY2tpbmcgZm9yIG51bGwgb3IgZW1wdHkg
QXJyYXlzCisgICAgLy8gaW4gdGhlIHByb2Nlc3MpLgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdl
YkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ+IGZyb21XZWIoV2ViVHJhbnNmZXJhYmxlUmVjZWlw
dCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheT4gZnJvbVdlYkFsbChjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqKTsKKyAg
ICBzdGF0aWMgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCogdG9XZWIoV2ViQ29yZTo6VHJhbnNmZXJh
YmxlUmVjZWlwdCopOworICAgIHN0YXRpYyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqIHRv
V2ViQWxsKGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSopOworI2VuZGlm
CisKK3Byb3RlY3RlZDoKKyAgICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9CisgICAgLy8g
Tm90ZTogcHVycG9zZWZ1bGx5IG5vdCBhIHZpcnR1YWwgZGVzdHJ1Y3Rvci4KKyAgICB+V2ViVHJh
bnNmZXJhYmxlUmVjZWlwdCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXIuaAppbmRleCA2NjRl
NWFlLi4yMjYwYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXIu
aApAQCAtMzYsOSArMzYsMTIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTdHJp
bmc7CitjbGFzcyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0OwogY2xhc3MgV2ViVVJMOwogY2xhc3Mg
V2ViV29ya2VyQ2xpZW50OwogCit0eXBlZGVmIFdlYlZlY3RvcjxjbGFzcyBXZWJUcmFuc2ZlcmFi
bGVSZWNlaXB0Kj4gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OworCiAvLyBQcm92aWRlcyBh
biBpbnRlcmZhY2UgdG8gdGhlIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBmb3IgYSB3b3JrZXIu
CiBjbGFzcyBXZWJXb3JrZXIgewogcHVibGljOgpAQCAtNTIsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KAogICAgICAgICBjb25zdCBXZWJTdHJp
bmcmLAotICAgICAgICBjb25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpID0gMDsKKyAg
ICAgICAgY29uc3QgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
aWVudERlc3Ryb3llZCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViV29ya2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXb3JrZXJDbGllbnQuaAppbmRleCBlYjJlNjNlLi5hNDgzY2ZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJDbGllbnQuaApAQCAtMzgsOCArMzgs
MTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRl
cjsKIGNsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ7CiBjbGFz
cyBXZWJXb3JrZXI7CiAKK3R5cGVkZWYgV2ViVmVjdG9yPGNsYXNzIFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHQqPiBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7CisKIC8vIFByb3ZpZGVzIGFuIGlu
dGVyZmFjZSBiYWNrIHRvIHRoZSBpbi1wYWdlIHNjcmlwdCBvYmplY3QgZm9yIGEgd29ya2VyLgog
Ly8gQWxsIGZ1bmN0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGJhY2sgb24gdGhlIHRo
cmVhZCB0aGF0IGNyZWF0ZWQKIC8vIHRoZSBXb3JrZXIgb2JqZWN0LCB1bmxlc3Mgbm90ZWQuCkBA
IC00Nyw3ICs1MCw3IEBAIGNsYXNzIFdlYldvcmtlckNsaWVudCA6IHB1YmxpYyBXZWJDb21tb25X
b3JrZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29y
a2VyT2JqZWN0KAogICAgICAgICBjb25zdCBXZWJTdHJpbmcmLAotICAgICAgICBjb25zdCBXZWJN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpID0gMDsKKyAgICAgICAgY29uc3QgV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbmZpcm1NZXNzYWdl
RnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsLmNwcAppbmRleCA2ZTRkZTQ0Li4xZjViYWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWwuY3BwCkBAIC0xODAsMTcgKzE4MCw5IEBAIHZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFdlYlN0cmluZyBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS0+bWVz
c2FnZSgpLT50b1dpcmVTdHJpbmcoKTsKLSAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzID0gbWVzc2FnZS0+Y2hhbm5lbHMoKTsKLSAgICBXZWJNZXNz
YWdlUG9ydENoYW5uZWxBcnJheSogd2ViQ2hhbm5lbHMgPSAwOwotICAgIGlmIChjaGFubmVscy5n
ZXQoKSAmJiBjaGFubmVscy0+c2l6ZSgpKSB7Ci0gICAgICAgIHdlYkNoYW5uZWxzID0gbmV3IFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KGNoYW5uZWxzLT5zaXplKCkpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNoYW5uZWxzLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
V2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwqIHBsYXRmb3JtQ2hhbm5lbCA9ICgq
Y2hhbm5lbHMpW2ldLT5jaGFubmVsKCk7Ci0gICAgICAgICAgICAoKndlYkNoYW5uZWxzKVtpXSA9
IHBsYXRmb3JtQ2hhbm5lbC0+d2ViQ2hhbm5lbFJlbGVhc2UoKTsKLSAgICAgICAgICAgICgqd2Vi
Q2hhbm5lbHMpW2ldLT5zZXRDbGllbnQoMCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbV93ZWJD
aGFubmVsLT5wb3N0TWVzc2FnZShtZXNzYWdlU3RyaW5nLCB3ZWJDaGFubmVscyk7CisgICAgT3du
UHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMgPSBtZXNzYWdl
LT5yZWNlaXB0cygpOworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSogd2ViUmVjZWlw
dHMgPSBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0b1dlYkFsbChyZWNlaXB0cy5nZXQoKSk7Cisg
ICAgbV93ZWJDaGFubmVsLT5wb3N0TWVzc2FnZShtZXNzYWdlU3RyaW5nLCB3ZWJSZWNlaXB0cyk7
CiB9CiAKIGJvb2wgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OnRyeUdldE1lc3NhZ2VGcm9t
UmVtb3RlKE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YT4mIHJlc3VsdCkKQEAg
LTE5OSwyMCArMTkxLDEyIEBAIGJvb2wgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OnRyeUdl
dE1lc3NhZ2VGcm9tUmVtb3RlKE93blB0cjxNZXNzYWdlUG9ydENoYW5uCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIFdlYlN0cmluZyBtZXNzYWdlOwotICAgIFdlYk1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5IHdlYkNoYW5uZWxzOwotICAgIGJvb2wgcnYgPSBtX3dlYkNoYW5uZWwtPnRyeUdl
dE1lc3NhZ2UoJm1lc3NhZ2UsIHdlYkNoYW5uZWxzKTsKKyAgICBXZWJUcmFuc2ZlcmFibGVSZWNl
aXB0QXJyYXkgd2ViUmVjZWlwdHM7CisgICAgYm9vbCBydiA9IG1fd2ViQ2hhbm5lbC0+dHJ5R2V0
TWVzc2FnZSgmbWVzc2FnZSwgd2ViUmVjZWlwdHMpOwogICAgIGlmIChydikgewotICAgICAgICBP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOwotICAgICAgICBpZiAod2Vi
Q2hhbm5lbHMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBjaGFubmVscyA9IGFkb3B0UHRyKG5ldyBN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheSh3ZWJDaGFubmVscy5zaXplKCkpKTsKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IHBsYXRmb3JtQ2hh
bm5lbCA9IGNyZWF0ZSh3ZWJDaGFubmVsc1tpXSk7Ci0gICAgICAgICAgICAgICAgd2ViQ2hhbm5l
bHNbaV0tPnNldENsaWVudChwbGF0Zm9ybUNoYW5uZWwuZ2V0KCkpOwotICAgICAgICAgICAgICAg
ICgqY2hhbm5lbHMpW2ldID0gTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUocGxhdGZvcm1DaGFu
bmVsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmZyb21X
ZWJBbGwoJndlYlJlY2VpcHRzKTsKICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gc2VyaWFsaXplZE1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21X
aXJlKG1lc3NhZ2UpOwotICAgICAgICByZXN1bHQgPSBNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50
RGF0YTo6Y3JlYXRlKHNlcmlhbGl6ZWRNZXNzYWdlLnJlbGVhc2UoKSwgY2hhbm5lbHMucmVsZWFz
ZSgpKTsKKyAgICAgICAgcmVzdWx0ID0gTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNy
ZWF0ZShzZXJpYWxpemVkTWVzc2FnZS5yZWxlYXNlKCksIHJlY2VpcHRzLnJlbGVhc2UoKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHJ2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNzE0OWE0ZC4uYjVhYWQw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCiAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
KyNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgi
CisjaW5jbHVkZSAiV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtNjMsNiArNjUsMzQgQEAgV2ViU3RyaW5nIFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6dG9TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPnRvV2lyZVN0
cmluZygpOwogfQogCitib29sIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6aXNGbGF0dGVuYWJs
ZShXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KiByZWNlaXB0KQoreworICAgIHJldHVybiAhcmVjZWlw
dC0+YXNXZWJNZXNzYWdlUG9ydENoYW5uZWwoKTsKK30KKworV2ViU3RyaW5nIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJlY2VpcHRMaXN0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2Fn
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmIHJlY2VpcHRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogdW5m
bGF0dGVuYWJsZUNvdW50KQoreworICAgIHNpemVfdCB1bmZsYXR0ZW5hYmxlc0ZvdW5kID0gMDsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY2VpcHRzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmICghaXNGbGF0dGVuYWJsZShyZWNlaXB0c1tpXSkpCisgICAgICAgICAgICArK3VuZmxh
dHRlbmFibGVzRm91bmQ7CisgICAgfQorICAgIGlmICh1bmZsYXR0ZW5hYmxlQ291bnQpCisgICAg
ICAgICp1bmZsYXR0ZW5hYmxlQ291bnQgPSB1bmZsYXR0ZW5hYmxlc0ZvdW5kOworICAgIGlmICh1
bmZsYXR0ZW5hYmxlc0ZvdW5kID09IHJlY2VpcHRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1l
c3NhZ2U7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gY29yZVJlY2VpcHRz
ID0gYWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheShyZWNlaXB0cy5zaXplKCkp
KTsKKyAgICAvLyBmcm9tV2ViKCkgbWF5IGhhdmUgdW53YW50ZWQgc2lkZS1lZmZlY3RzLCBzbyBv
bmx5IGNvbnZlcnQgZmxhdHRlbmFibGUgcmVjZWlwdHMuCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCByZWNlaXB0cy5zaXplKCk7ICsraSkgeworICAgICAgICAoKmNvcmVSZWNlaXB0cylbaV0g
PSBpc0ZsYXR0ZW5hYmxlKHJlY2VpcHRzW2ldKQorICAgICAgICAgICAgPyBXZWJUcmFuc2ZlcmFi
bGVSZWNlaXB0Ojpmcm9tV2ViKHJlY2VpcHRzW2ldKQorICAgICAgICAgICAgOiBudWxscHRyOwor
ICAgIH0KKyAgICByZXR1cm4gV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpmbGF0dGVu
UmVjZWlwdExpc3QobWVzc2FnZSwgKmNvcmVSZWNlaXB0cyk7Cit9CisKIFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYgdmFsdWUpCiAgICAgOiBtX3ByaXZhdGUodmFsdWUpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3Bw
CmluZGV4IDRhMzJmYjMuLjVhZTJlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBv
cnRDaGFubmVsLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZmU1YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcApAQCAtMCwwICsx
LDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
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
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlRyYW5zZmVyYWJsZVJlY2Vp
cHQuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgiCisjaW5jbHVk
ZSAiVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgorI2luY2x1ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5l
bC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4g
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYihXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KiBy
ZWNlaXB0KQoreworICAgIGlmIChXZWJNZXNzYWdlUG9ydENoYW5uZWwqIHdlYk1lc3NhZ2VQb3J0
Q2hhbm5lbCA9IHJlY2VpcHQtPmFzV2ViTWVzc2FnZVBvcnRDaGFubmVsKCkpIHsKKyAgICAgICAg
UmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBwbGF0Zm9ybUNoYW5uZWwgPSBQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCk7Cisg
ICAgICAgIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbC0+c2V0Q2xpZW50KHBsYXRmb3JtQ2hhbm5lbC5n
ZXQoKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlUG9ydENoYW5uZWxUcmFuc2ZlcmFibGVSZWNl
aXB0OjpjcmVhdGUoTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUocGxhdGZvcm1DaGFubmVsKSk7
CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gV2ViVHJh
bnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYkFsbChjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXkqIHJlY2VpcHRzKQoreworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+
IGltcG9ydGVkUmVjZWlwdHM7CisgICAgaWYgKHJlY2VpcHRzICYmIHJlY2VpcHRzLT5zaXplKCkp
IHsKKyAgICAgICAgaW1wb3J0ZWRSZWNlaXB0cyA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVS
ZWNlaXB0QXJyYXkocmVjZWlwdHMtPnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJlY2VpcHRzLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICgqaW1wb3J0ZWRSZWNl
aXB0cylbaV0gPSBmcm9tV2ViKCgqcmVjZWlwdHMpW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIGlt
cG9ydGVkUmVjZWlwdHMucmVsZWFzZSgpOworfQorCitXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KiBX
ZWJUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0b1dlYihUcmFuc2ZlcmFibGVSZWNlaXB0KiByZWNlaXB0
KQoreworICAgIGlmIChNZXNzYWdlUG9ydENoYW5uZWxUcmFuc2ZlcmFibGVSZWNlaXB0KiBtZXNz
YWdlUG9ydENoYW5uZWxSZWNlaXB0ID0gcmVjZWlwdC0+YXNNZXNzYWdlUG9ydENoYW5uZWxUcmFu
c2ZlcmFibGVSZWNlaXB0KCkpIHsKKyAgICAgICAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwq
IHBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsID0gbWVzc2FnZVBvcnRDaGFubmVsUmVjZWlwdC0+
bWVzc2FnZVBvcnRDaGFubmVsKCktPmNoYW5uZWwoKTsKKyAgICAgICAgV2ViTWVzc2FnZVBvcnRD
aGFubmVsKiB3ZWJNZXNzYWdlUG9ydENoYW5uZWwgPSBwbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bC0+d2ViQ2hhbm5lbFJlbGVhc2UoKTsKKyAgICAgICAgd2ViTWVzc2FnZVBvcnRDaGFubmVsLT5z
ZXRDbGllbnQoMCk7CisgICAgICAgIHJldHVybiB3ZWJNZXNzYWdlUG9ydENoYW5uZWw7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitXZWJUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXkqIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQ6OnRvV2ViQWxsKGNv
bnN0IFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSogcmVjZWlwdHMpCit7CisgICAg
V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KiBleHBvcnRlZFJlY2VpcHRzID0gMDsKKyAgICBp
ZiAocmVjZWlwdHMgJiYgcmVjZWlwdHMtPnNpemUoKSkgeworICAgICAgICBleHBvcnRlZFJlY2Vp
cHRzID0gbmV3IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheShyZWNlaXB0cy0+c2l6ZSgpKTsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWNlaXB0cy0+c2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICAoKmV4cG9ydGVkUmVjZWlwdHMpW2ldID0gdG9XZWIoKCpyZWNlaXB0cylbaV0u
Z2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gZXhwb3J0ZWRSZWNlaXB0czsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJh
c2UuY3BwCmluZGV4IGQ2MTg2NzIuLjFkYjY2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCkBAIC0zNTIsMjcgKzM1MiwyNSBAQCB2b2lkIFdlYldv
cmtlckJhc2U6Om9wZW5GaWxlU3lzdGVtRm9yV29ya2VyKFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlw
ZSwgbG9uZyBsb25nCiAvLyBXb3JrZXJPYmplY3RQcm94eSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIFdlYldvcmtlckJh
c2U6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewogICAgIGRpc3BhdGNoVGFza1RvTWFp
blRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdlVGFzaywgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2UtPnRvV2lyZVN0cmluZygpLCBjaGFubmVscykpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS0+dG9XaXJlU3Ry
aW5nKCksIHJlY2VpcHRzKSk7CiB9CiAKIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VU
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFu
bmVscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKICAgICBpZiAoIXRoaXNQdHItPmNs
aWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eSB3ZWJDaGFubmVscyhjaGFubmVscy5nZXQoKSA/IGNoYW5uZWxzLT5zaXplKCkgOiAwKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkNoYW5uZWxzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIHdlYkNoYW5uZWxzW2ldID0gKCpjaGFubmVscylbaV0tPmNoYW5uZWwoKS0+d2ViQ2hhbm5l
bFJlbGVhc2UoKTsKLSAgICAgICAgd2ViQ2hhbm5lbHNbaV0tPnNldENsaWVudCgwKTsKLSAgICB9
CisgICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5IHdlYlJlY2VpcHRzKHJlY2VpcHRzLmdl
dCgpID8gcmVjZWlwdHMtPnNpemUoKSA6IDApOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
d2ViUmVjZWlwdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHdlYlJlY2VpcHRzW2ldID0gV2ViVHJh
bnNmZXJhYmxlUmVjZWlwdDo6dG9XZWIoKCpyZWNlaXB0cylbaV0uZ2V0KCkpOwogCi0gICAgdGhp
c1B0ci0+Y2xpZW50KCktPnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSwgd2ViQ2hh
bm5lbHMpOworICAgIHRoaXNQdHItPmNsaWVudCgpLT5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0
KG1lc3NhZ2UsIHdlYlJlY2VpcHRzKTsKIH0KIAogdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmgKaW5kZXggOWVmY2UxNS4uN2EwNWE0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaApAQCAtMzQs
NiArMzQsNyBAQAogI2lmIEVOQUJMRShXT1JLRVJTKQogCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNp
bmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgpAQCAtNjgsNyArNjksNyBAQCBwdWJsaWM6CiAg
ICAgLy8gV2ViQ29yZTo6V29ya2VyT2JqZWN0UHJveHkgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZv
aWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCgKICAgICAgICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LAotICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdCgKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmLCBpbnQsIGNvbnN0IFdU
Rjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2Vy
T2JqZWN0KApAQCAtMTIzLDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgIFdlYldvcmtlckJhc2UqIHRo
aXNQdHIsCiAgICAgICAgIFdURjo6U3RyaW5nIG1lc3NhZ2UsCi0gICAgICAgIFBhc3NPd25QdHI8
V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKTsKKyAgICAgICAgUGFz
c093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KTsKICAgICBzdGF0aWMg
dm9pZCBwb3N0RXhjZXB0aW9uVGFzaygKICAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwKICAgICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKaW5k
ZXggYzE5OGNjZi4uMmM2YmRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKQEAgLTY1LDYgKzY1LDExIEBACiAjaW5jbHVkZSAi
V2ViV29ya2VyLmgiCiAjaW5jbHVkZSAiV2ViV29ya2VySW1wbC5oIgogCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBUcmFuc2ZlcmFibGU7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VHJhbnNm
ZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7Cit9CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE3NSw3ICsxODAsNyBAQCB2b2lkIFdlYldv
cmtlckNsaWVudEltcGw6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKQogCiB2b2lkIFdlYldvcmtl
ckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KAogICAgIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLAotICAgIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVj
ZWlwdEFycmF5PiByZWNlaXB0cykKIHsKICAgICAvLyBXb3JrZXIudGVybWluYXRlKCkgY291bGQg
YmUgY2FsbGVkIGZyb20gSlMgYmVmb3JlIHRoZSBjb250ZXh0IGlzIHN0YXJ0ZWQuCiAgICAgaWYg
KG1fYXNrZWRUb1Rlcm1pbmF0ZSkKQEAgLTE4NSwxNyArMTkwLDEzIEBAIHZvaWQgV2ViV29ya2Vy
Q2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoCiAgICAgICAgIFdlYldvcmtl
ckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RN
ZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UtPnRvV2lyZVN0cmluZygpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYW5uZWxzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdHMpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSB3ZWJDaGFubmVscyhjaGFubmVscy5n
ZXQoKSA/IGNoYW5uZWxzLT5zaXplKCkgOiAwKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHdlYkNoYW5uZWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bCogd2ViY2hhbm5lbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAoKmNoYW5uZWxzKVtpXS0+
Y2hhbm5lbCgpLT53ZWJDaGFubmVsUmVsZWFzZSgpOwotICAgICAgICB3ZWJjaGFubmVsLT5zZXRD
bGllbnQoMCk7Ci0gICAgICAgIHdlYkNoYW5uZWxzW2ldID0gd2ViY2hhbm5lbDsKLSAgICB9Ci0g
ICAgbV93ZWJXb3JrZXItPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UtPnRvV2ly
ZVN0cmluZygpLCB3ZWJDaGFubmVscyk7CisgICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
IHdlYlJlY2VpcHRzKHJlY2VpcHRzLmdldCgpID8gcmVjZWlwdHMtPnNpemUoKSA6IDApOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViUmVjZWlwdHMuc2l6ZSgpOyArK2kpCisgICAgICAg
IHdlYlJlY2VpcHRzW2ldID0gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6dG9XZWIoKCpyZWNlaXB0
cylbaV0uZ2V0KCkpOworICAgIG1fd2ViV29ya2VyLT5wb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4
dChtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwgd2ViUmVjZWlwdHMpOwogfQogCiBib29sIFdlYldv
cmtlckNsaWVudEltcGw6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CkBAIC0yMzYsMjkgKzIz
NywyMCBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3Io
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogfQogCiB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5JiBjaGFubmVscykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXkmIHdlYlJlY2VpcHRzKQogewotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4gY2hhbm5lbHMyOwotICAgIGlmIChjaGFubmVscy5zaXplKCkpIHsKLSAgICAgICAgY2hhbm5l
bHMyID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KGNoYW5uZWxzLnNpemUo
KSkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYW5uZWxzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IHBsYXRm
b3JtX2NoYW5uZWwgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsOjpjcmVhdGUoY2hhbm5lbHNbaV0pOwotICAgICAgICAgICAgY2hhbm5lbHNb
aV0tPnNldENsaWVudChwbGF0Zm9ybV9jaGFubmVsLmdldCgpKTsKLSAgICAgICAgICAgICgqY2hh
bm5lbHMyKVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3JtX2NoYW5uZWwp
OwotICAgICAgICB9Ci0gICAgfQorICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+
IHJlY2VpcHRzID0gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdlYkFsbCgmd2ViUmVjZWlw
dHMpOwogCiAgICAgaWYgKGN1cnJlbnRUaHJlYWQoKSAhPSBtX3dvcmtlclRocmVhZElkKSB7CiAg
ICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzaywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKG1lc3NhZ2UpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsczIucmVs
ZWFzZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlY2VpcHRzLnJlbGVhc2UoKSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2sobV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LmdldCgpLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2UsIGNoYW5uZWxzMi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2UsIHJlY2VpcHRzLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgV2ViV29y
a2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmlu
ZyYgZXJyb3JNZXNzYWdlLApAQCAtMzY5LDE2ICszNjEsMTQgQEAgdm9pZCBXZWJXb3JrZXJDbGll
bnRJbXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb24KIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRl
eHRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJ
bXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheT4gcmVjZWlwdHMpCiB7Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkgd2Vi
Q2hhbm5lbHMoY2hhbm5lbHMuZ2V0KCkgPyBjaGFubmVscy0+c2l6ZSgpIDogMCk7CisgICAgV2Vi
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5IHdlYlJlY2VpcHRzKHJlY2VpcHRzLmdldCgpID8gcmVj
ZWlwdHMtPnNpemUoKSA6IDApOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFu
bmVscy5zaXplKCk7ICsraSkgewotICAgICAgICB3ZWJDaGFubmVsc1tpXSA9ICgqY2hhbm5lbHMp
W2ldLT5jaGFubmVsKCktPndlYkNoYW5uZWxSZWxlYXNlKCk7Ci0gICAgICAgIHdlYkNoYW5uZWxz
W2ldLT5zZXRDbGllbnQoMCk7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2Vi
UmVjZWlwdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHdlYlJlY2VpcHRzW2ldID0gV2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdDo6dG9XZWIoKCpyZWNlaXB0cylbaV0uZ2V0KCkpOwogCi0gICAgdGhpc1B0
ci0+bV93ZWJXb3JrZXItPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UsIHdlYkNo
YW5uZWxzKTsKKyAgICB0aGlzUHRyLT5tX3dlYldvcmtlci0+cG9zdE1lc3NhZ2VUb1dvcmtlckNv
bnRleHQobWVzc2FnZSwgd2ViUmVjZWlwdHMpOwogfQogCiB2b2lkIFdlYldvcmtlckNsaWVudElt
cGw6Ondvcmtlck9iamVjdERlc3Ryb3llZFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwKQEAgLTM4OSwyNSArMzc5LDIyIEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6d29y
a2VyT2JqZWN0RGVzdHJveWVkVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAg
ZGVsZXRlIHRoaXNQdHI7CiB9CiAKLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3Nh
Z2VUb1dvcmtlck9iamVjdFRhc2soCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCit2
b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQ
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNl
aXB0cykKIHsKIAogICAgIGlmICh0aGlzUHRyLT5tX3dvcmtlcikgewotICAgICAgICBPd25QdHI8
TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPQotICAgICAgICAgICAgTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoKmNvbnRleHQsIGNoYW5uZWxzKTsKKyAgICAgICAgT3duUHRyPFRyYW5zZmVyYWJs
ZUFycmF5PiB0cmFuc2ZlcmFibGVzID0gVHJhbnNmZXJhYmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJ
bigqY29udGV4dCwgcmVjZWlwdHMpOwogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkTWVzc2FnZSA9CiAgICAgICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZUZyb21XaXJlKG1lc3NhZ2UpOwotICAgICAgICB0aGlzUHRyLT5tX3dvcmtlci0+
ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShwb3J0cy5yZWxlYXNlKCksCisgICAg
ICAgIHRoaXNQdHItPm1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkTWVzc2FnZS5yZWxlYXNl
KCkpKTsKICAgICB9CiB9CiAKLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAor
dm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3RUYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCog
dGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZU51bWJlciwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaApp
bmRleCBjMjcwZmZjLi42Y2E5ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBFTkFCTEUo
V09SS0VSUykKIAorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IldlYkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJXZWJXb3JrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJXb3JrZXJDb250ZXh0UHJveHkuaCIKQEAgLTQyLDYgKzQzLDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFRyYW5zZmVyYWJs
ZVJlY2VpcHQ7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+
IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03
MCw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyQ29u
dGV4dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCgKICAg
ICAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Us
Ci0gICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNo
YW5uZWxzKTsKKyAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+KTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpOwogCkBAIC04MCw3ICs4Myw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYldvcmtlckNsaWVudCBtZXRob2RzOgogICAgIC8vIFRo
ZXNlIGFyZSBjYWxsZWQgb24gdGhlIG1haW4gV2ViS2l0IHRocmVhZC4KLSAgICB2aXJ0dWFsIHZv
aWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpOworICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRv
V29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheSYpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
Y29uc3QgV2ViU3RyaW5nJiwgaW50LCBjb25zdCBXZWJTdHJpbmcmKTsKIAogICAgIC8vIEZJWE1F
OiB0aGUgYmVsb3cgaXMgZm9yIGNvbXBhdGliaWxpdHkgb25seSBhbmQgc2hvdWxkIGJlCkBAIC0x
MjgsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0TWVzc2FnZVRvV29y
a2VyQ29udGV4dFRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2Vy
Q2xpZW50SW1wbCogdGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNl
aXB0QXJyYXk+KTsKICAgICBzdGF0aWMgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWRUYXNrKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyKTsK
IApAQCAtMTM4LDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcG9zdE1lc3Nh
Z2VUb1dvcmtlck9iamVjdFRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJX
b3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheT4pOwogICAgIHN0YXRpYyB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dFRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudElt
cGwqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViV29ya2VySW1wbC5jcHAKaW5kZXggNmM5ZjQ1Yy4uNTU1NmI4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAKQEAgLTgyLDE4ICs4Miwx
OCBAQCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIFdlYldvcmtlckltcGw6OmNvbW1vbkNsaWVudCgp
CiB2b2lkIFdlYldvcmtlckltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzayhXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VySW1wbCogdGhpc1B0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxz
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewogICAgIEFTU0VS
VChjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CiAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4
dCogd29ya2VyQ29udGV4dCA9CiAgICAgICAgIHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckNv
bnRleHQqPihjb250ZXh0KTsKIAotICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9
Ci0gICAgICAgIE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpjb250ZXh0LCBjaGFubmVscyk7
CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVzID0KKyAgICAgICAg
VHJhbnNmZXJhYmxlUmVjZWlwdDo6dHJhbnNmZXJBbGxJbigqY29udGV4dCwgcmVjZWlwdHMpOwog
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRNZXNzYWdlID0KICAg
ICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShtZXNzYWdlKTsKICAg
ICB3b3JrZXJDb250ZXh0LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKAotICAg
ICAgICBwb3J0cy5yZWxlYXNlKCksIHNlcmlhbGl6ZWRNZXNzYWdlLnJlbGVhc2UoKSkpOworICAg
ICAgICB0cmFuc2ZlcmFibGVzLnJlbGVhc2UoKSwgc2VyaWFsaXplZE1lc3NhZ2UucmVsZWFzZSgp
KSk7CiAgICAgdGhpc1B0ci0+Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KHdvcmtlckNv
bnRleHQtPmhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKIH0KIApAQCAtMTE2LDIyICsxMTYsMTIgQEAg
dm9pZCBXZWJXb3JrZXJJbXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkKIH0KIAogdm9pZCBX
ZWJXb3JrZXJJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBXZWJTdHJpbmcm
IG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JiB3ZWJDaGFubmVscykKLXsKLSAgICBP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOwotICAgIGlmICh3ZWJDaGFu
bmVscy5zaXplKCkpIHsKLSAgICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBv
cnRDaGFubmVsQXJyYXkod2ViQ2hhbm5lbHMuc2l6ZSgpKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgd2ViQ2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcGxhdGZvcm1fY2hhbm5lbCA9Ci0gICAgICAg
ICAgICAgICAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZSh3ZWJDaGFubmVsc1tp
XSk7Ci0gICAgICAgICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50KHBsYXRmb3JtX2NoYW5u
ZWwuZ2V0KCkpOwotICAgICAgICAgICAgKCpjaGFubmVscylbaV0gPSBNZXNzYWdlUG9ydENoYW5u
ZWw6OmNyZWF0ZShwbGF0Zm9ybV9jaGFubmVsKTsKLSAgICAgICAgfQotICAgIH0KLQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXkmIHdlYlJlY2VpcHRzKQoreworICAgIE93blB0cjxUcmFuc2ZlcmFi
bGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6ZnJvbVdl
YkFsbCgmd2ViUmVjZWlwdHMpOwogICAgIHdvcmtlclRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRh
c2soCiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRl
eHRUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cyh0aGlzKSwgU3RyaW5nKG1lc3NhZ2UpLCBjaGFubmVscy5yZWxlYXNlKCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIFN0cmluZyht
ZXNzYWdlKSwgcmVjZWlwdHMucmVsZWFzZSgpKSk7CiB9CiAKIHZvaWQgV2ViV29ya2VySW1wbDo6
d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYldvcmtlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldv
cmtlckltcGwuaAppbmRleCA3OWM5YzU0Li5jN2JlNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VySW1wbC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAv
LyBXZWJXb3JrZXIgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0
KGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlN0cmluZyYpOwogICAg
IHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7Ci0gICAgdmlydHVhbCB2b2lk
IHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5Jik7CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9X
b3JrZXJDb250ZXh0KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheSYpOwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xpZW50RGVzdHJveWVkKCk7CiAKQEAgLTczLDcgKzczLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwK
ICAgICAgICAgV2ViV29ya2VySW1wbCogdGhpc1B0ciwKICAgICAgICAgY29uc3QgV1RGOjpTdHJp
bmcmIG1lc3NhZ2UsCi0gICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+IGNoYW5uZWxzKTsKKyAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKTsKIAogICAgIFdlYldvcmtlckNsaWVudCogbV9j
bGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDhjYzlhMmMuLmUxMDlhZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wOC0xNyAgTHVrZSBaYXJr
byAgPGx1a2V6YXJrb0BnbWFpbC5jb20+CisKKyAgICAgICAgTWFrZSBNZXNzYWdlUG9ydCBUcmFu
c2ZlcmFibGUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1MjA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViV29ya2VyLmg6CisgICAgICAgIChU
ZXN0V2ViV29ya2VyOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgIChUZXN0
V2ViV29ya2VyOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKwogMjAxMS0wOC0xMCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFRoZSBVUkwgd2Ugd2VyZSBj
b21wdXRpbmcgZm9yIHJldHJpZXZpbmcgYmFzZWxpbmVzIHdhcyBtaXNzaW5nIGEgc2xhc2gKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaAppbmRleCA3MWJm
ZmNlLi4xMmUyYzg0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0V2ViV29ya2VyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdl
Yldvcmtlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZWJXb3JrZXIgbWV0
aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYktpdDo6
V2ViVVJMJiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiwgY29uc3QgV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBXZWJL
aXQ6OldlYlN0cmluZyYsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpCiAgICAgewog
ICAgICAgICAvLyBSZWxlYXNlcyB0aGUgcmVmZXJlbmNlIGhlbGQgZm9yIHdvcmtlciBvYmplY3Qu
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpZW50RGVzdHJv
eWVkKCkgeyB9CiAKICAgICAvLyBXZWJXb3JrZXJDbGllbnQgbWV0aG9kczoKLSAgICB2aXJ0dWFs
IHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYs
IGNvbnN0IFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6Oldl
YlN0cmluZyYsIGludCwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50LCBpbnQsIGludCwgaW50
LCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGludCwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJv
b2wpIHsgfQo=
</data>
<flag name="review"
          id="99976"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104550</attachid>
            <date>2011-08-19 13:10:30 -0700</date>
            <delta_ts>2011-08-19 13:10:30 -0700</delta_ts>
            <desc>Address comments; add explicit receipts in WebKit API</desc>
            <filename>postmessageII-108fri.patch</filename>
            <type>text/plain</type>
            <size>226643</size>
            <attacher name="Luke Zarko">lukezarko+bugzilla</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNWM0YjBjLi4xNDA4ZWU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDgt
MTkgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgTWVz
c2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gQ2hhbmdlIGluIGVycm9yIG1lc3NhZ2UgdGV4dC4KKyAgICAgICAg
LSBDaGFuZ2UgdG8gaGFuZGxlIGFuZCB0ZXN0IG5ldyBwcmVmaXhlZCB3ZWJraXRQb3N0TWVzc2Fn
ZS4KKyAgICAgICAgLSBDaGFuZ2UgdG8gaGFuZGxlIHNvbWUgSU5WQUxJRF9TVEFURV9FUlIgLT4g
REFUQV9DTE9ORV9FUlIgc3Vic3RpdHV0aW9ucy4KKyAgICAgICAgLSBDaGFuZ2UgdG8gaGFuZGxl
IFtdIGluc3RlYWQgb2YgbnVsbCBmb3IgTWVzc2FnZUV2ZW50LnBvcnRzCisKKyAgICAgICAgKiBm
YXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sOgorICAg
ICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1tdWx0
aS5qczoKKyAgICAgICAgKGNoYW5uZWwucG9ydDIub25tZXNzYWdlKToKKyAgICAgICAgKiBmYXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQuanM6CisgICAgICAg
ICh3b3JrZXIub25tZXNzYWdlKToKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dv
cmtlci1tZXNzYWdlcG9ydC5qczoKKyAgICAgICAgKG9ubWVzc2FnZSk6CisgICAgICAgICogZmFz
dC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItdGhyZWFkLW11bHRpLXBvcnQuanM6CisgICAgICAg
IChvbm1lc3NhZ2UpOgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0
aS1wb3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW1lc3Nh
Z2Vwb3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW11bHRp
LXBvcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0
L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtLXdpbi9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3Qvd29ya2Vy
cy93b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJp
dGFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICBwcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0
ZWQgY29udGFpbnMgYW4gZXh0cmEgRkFJTDogbGluZSBmb3IgQ2hyb21pdW0gd2l0aAorICAgICAg
ICByZWdhcmQgdG8gd2Via2l0UG9zdE1lc3NhZ2U7IHRoaXMgYXBwZWFycyB0byBiZSBhbiBhcnRp
ZmFjdCBvZiB0aGUgd2F5IGJpbmRpbmdzCisgICAgICAgIGFyZSBnZW5lcmF0ZWQsIGFzIGEgc2lt
aWxhciBGQUlMOiBsaW5lIHByZXZpb3VzbHkgZXhpc3RlZCBmb3IgcGxhaW4gcG9zdE1lc3NhZ2Uu
CisKIDIwMTEtMDgtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGF1dG8tY29tcGxldGlvbiBmb3Igc3RyaW5nIGxpdGVyYWxz
IGRvZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKaW5kZXggMDU0ZDkx
OC4uOGRkNjk2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEs
NCBAQAotVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdl
IGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBw
b3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1lc3NhZ2UgJzEnIHRocm91Z2ggJzcnLCBmb2xsb3dl
ZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMgNC03IHJlY2VpdmVkIGJlbG93LgorVGVzdCB0aGF0
IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3Ig
dHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LgogCiBQQVNTOiBQ
b3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzInLCApOiB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yCkBAIC03LDEyICs3LDI4IEBAIFBBU1M6IFBvc3RpbmcgbWVzc2Fn
ZSAoJzQnLCBbb2JqZWN0IERPTVdpbmRvd10pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQ
QVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc1JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzYnLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cg
YW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdl
UG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQ
QVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCc4JywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJzknLCApOiB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTOiB3ZWJraXRQb3N0aW5n
IG1lc3NhZ2UgKCdBJywgW29iamVjdCBPYmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvcgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnQicsIFtvYmplY3Qg
RE9NV2luZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3Rp
bmcgbWVzc2FnZSAoJ0MnLCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzog
d2Via2l0UG9zdGluZyBtZXNzYWdlICgnRCcsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBl
eGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0UnLCBbb2JqZWN0IE1lc3Nh
Z2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFU
QV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUKK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2Fn
ZSAoJ0YnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24K
K1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ0cnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUKK1BBU1M6
IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVjdCBN
ZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiBQb3N0aW5nIG1l
c3NhZ2UgKCdbb2JqZWN0IE1lc3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdKTogdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQogUEFT
UzogUG9zdGluZyBtZXNzYWdlICgnMjE0NzQ4MzY0OCcsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdkb25lJywgKikgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KLVJlY2VpdmVkIG1lc3NhZ2UgJzQnCi1SZWNlaXZlZCBtZXNzYWdlICc1
JwotUmVjZWl2ZWQgbWVzc2FnZSAnNicKK1JlY2VpdmVkIG1lc3NhZ2UgJzQnIHdpdGggMCBwb3J0
cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJzUnIHdpdGggMCBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2Ug
JzYnIHdpdGggMCBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzcnIHdpdGggMiBwb3J0cy4KLVJl
Y2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnCi1SZWNlaXZlZCBtZXNzYWdlICdkb25lJworUmVj
ZWl2ZWQgbWVzc2FnZSAnQicgd2l0aCAwIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnQycgd2l0
aCAwIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnRCcgd2l0aCAwIHBvcnRzLgorUmVjZWl2ZWQg
bWVzc2FnZSAnRicgd2l0aCAxIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBNZXNz
YWdlUG9ydF0nIHdpdGggMSBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnIHdp
dGggMCBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ2RvbmUnIHdpdGggMCBwb3J0cy4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1h
cmdzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdl
LWFyZ3MuaHRtbAppbmRleCA3MmEyN2U3Li5iYTllYTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbApAQCAt
MzUsNyArMzUsMTkgQEAgZnVuY3Rpb24gdHJ5UG9zdE1lc3NhZ2UoZmlyc3QsIHNlY29uZCwgdGhp
cmQsIHNob3VsZEZhaWwpIHsKICAgIH0KIH0KIAotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRl
c2NyaXB0aW9uIikuaW5uZXJIVE1MID0gIlRlc3QgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50IG9m
IHdpbmRvdy5wb3N0TWVzc2FnZSBpcyBpZ25vcmVkIG9yIHRyaWdnZXJzIGFuIGVycm9yIGlmIGl0
IGlzIG5vdCBhIG1lc3NhZ2UgcG9ydC4gWW91IHNob3VsZCBzZWUgUEFTUyBtZXNzYWdlICcxJyB0
aHJvdWdoICc3JywgZm9sbG93ZWQgYnkgJ2RvbmUnLCB3aXRoIG1lc3NhZ2VzIDQtNyByZWNlaXZl
ZCBiZWxvdy48YnI+PGJyPiI7CitmdW5jdGlvbiB0cnlXZWJraXRQb3N0TWVzc2FnZShmaXJzdCwg
c2Vjb25kLCB0aGlyZCwgc2hvdWxkRmFpbCkgeworICAgIHRyeSB7CisgICAgICAgIGlmICghdGhp
cmQpCisgICAgICAgICAgICB3aW5kb3cud2Via2l0UG9zdE1lc3NhZ2UoZmlyc3QsIHNlY29uZCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXRQb3N0TWVzc2FnZShmaXJz
dCwgc2Vjb25kLCB0aGlyZCk7CisgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9IChzaG91bGRG
YWlsID8gIkZBSUwiIDogIlBBU1MiKSArICI6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJyIgKyBm
aXJzdCArICInLCAiICsgc2Vjb25kICsgIikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb248YnI+
IjsKKyAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgY29uc29sZS5pbm5lckhUTUwgKz0gKHNob3Vs
ZEZhaWwgPyAiUEFTUyIgOiAiRkFJTCIpICsgIjogd2Via2l0UG9zdGluZyBtZXNzYWdlICgnIiAr
IGZpcnN0ICsgIicsICIgKyBzZWNvbmQgKyAiKTogdGhyZXcgZXhjZXB0aW9uICIgKyBlICsgIjxi
cj4iOworICAgfQorfQorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRpb24iKS5p
bm5lckhUTUwgPSAiVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBvc3RN
ZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVz
c2FnZSBwb3J0Ljxicj48YnI+IjsKIAogdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7
CiB0cnlQb3N0TWVzc2FnZSgnMScsIDEsICcqJywgdHJ1ZSk7CkBAIC00NSw2ICs1NywxOSBAQCB0
cnlQb3N0TWVzc2FnZSgnNCcsIHdpbmRvdywgJyonKTsgIC8vIFBhc3NlcyBiZWNhdXNlIHdpbmRv
dyBoYXMgYSAibGVuZ3RoIiBhdHRyaQogdHJ5UG9zdE1lc3NhZ2UoJzUnLCBudWxsLCAnKicpOwog
dHJ5UG9zdE1lc3NhZ2UoJzYnLCB2b2lkIDAsICcqJyk7CiB0cnlQb3N0TWVzc2FnZSgnNycsIFtj
aGFubmVsLnBvcnQxLCBjaGFubmVsLnBvcnQyXSwgJyonKTsKK3RyeVdlYmtpdFBvc3RNZXNzYWdl
KCc4JywgMSwgJyonLCB0cnVlKTsKK3RyeVdlYmtpdFBvc3RNZXNzYWdlKCc5JywgIiIsICcqJywg
dHJ1ZSk7Cit0cnlXZWJraXRQb3N0TWVzc2FnZSgnQScsIHsgeDogMSB9LCAnKicsIHRydWUpOwor
dHJ5V2Via2l0UG9zdE1lc3NhZ2UoJ0InLCB3aW5kb3csICcqJyk7ICAvLyBQYXNzZXMgYmVjYXVz
ZSB3aW5kb3cgaGFzIGEgImxlbmd0aCIgYXR0cmlidXRlIG9mIHZhbHVlICcwJywgc28gaXQgbG9v
a3MgbGlrZSBhbiBhcnJheQordHJ5V2Via2l0UG9zdE1lc3NhZ2UoJ0MnLCBudWxsLCAnKicpOwor
dHJ5V2Via2l0UG9zdE1lc3NhZ2UoJ0QnLCB2b2lkIDAsICcqJyk7Cit0cnlXZWJraXRQb3N0TWVz
c2FnZSgnRScsIFtjaGFubmVsLnBvcnQxLCBjaGFubmVsLnBvcnQyXSwgJyonLCB0cnVlKTsgLy8g
ZmFpbHM6IHRob3NlIHBvcnRzIGhhdmUgYWxyZWFkeSBiZWVuIHRyYW5zZmVycmVkLgorY2hhbm5l
bCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK3RyeVdlYmtpdFBvc3RNZXNzYWdlKCdGJywgW2NoYW5u
ZWwucG9ydDFdLCAnKicpOwordHJ5UG9zdE1lc3NhZ2UoJ0cnLCBbY2hhbm5lbC5wb3J0MV0sICcq
JywgdHJ1ZSk7IC8vIGZhaWxzOiB0aGF0IHBvcnQgaGFzIGFscmVhZHkgYmVlbiB0cmFuc2ZlcnJl
ZC4KK2NoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Cit0cnlXZWJraXRQb3N0TWVzc2FnZShj
aGFubmVsLnBvcnQxLCBbY2hhbm5lbC5wb3J0MV0sICcqJyk7Cit0cnlQb3N0TWVzc2FnZShjaGFu
bmVsLnBvcnQyLCBbY2hhbm5lbC5wb3J0Ml0sICcqJywgdHJ1ZSk7IC8vIGZhaWxzOiBwb3N0TWVz
c2FnZSBkb2VzIG5vdCBhbGxvdyBUcmFuc2ZlcmFibGUgYXJndW1lbnRzIGluIG1lc3NhZ2UgYm9k
aWVzLgogdHJ5UG9zdE1lc3NhZ2UoMjE0NzQ4MzY0OCwgbnVsbCwgJyonKTsKIHRyeVBvc3RNZXNz
YWdlKCdkb25lJywgJyonKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggZjI4
YTliNS4uYjkxODIxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xMTgzLDYgKzExODMsNyBA
QCB3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQgW2Z1bmN0aW9uXQog
d2luZG93Lk1lc3NhZ2VQb3J0LnByb3RvdHlwZS5wb3N0TWVzc2FnZSBbZnVuY3Rpb25dCiB3aW5k
b3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgW2Z1bmN0aW9uXQog
d2luZG93Lk1lc3NhZ2VQb3J0LnByb3RvdHlwZS5zdGFydCBbZnVuY3Rpb25dCit3aW5kb3cuTWVz
c2FnZVBvcnQucHJvdG90eXBlLndlYmtpdFBvc3RNZXNzYWdlIFtmdW5jdGlvbl0KIHdpbmRvdy5N
aW1lVHlwZSBbb2JqZWN0IE1pbWVUeXBlQ29uc3RydWN0b3JdCiB3aW5kb3cuTWltZVR5cGUucHJv
dG90eXBlIFtvYmplY3QgTWltZVR5cGVQcm90b3R5cGVdCiB3aW5kb3cuTWltZVR5cGVBcnJheSBb
b2JqZWN0IE1pbWVUeXBlQXJyYXlDb25zdHJ1Y3Rvcl0KQEAgLTIwODIsNiArMjA4Myw3IEBAIHdp
bmRvdy5Xb3JrZXIucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQgW2Z1bmN0aW9uXQogd2luZG93Lldv
cmtlci5wcm90b3R5cGUucG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQogd2luZG93Lldvcmtlci5wcm90
b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25dCiB3aW5kb3cuV29ya2VyLnByb3Rv
dHlwZS50ZXJtaW5hdGUgW2Z1bmN0aW9uXQord2luZG93Lldvcmtlci5wcm90b3R5cGUud2Via2l0
UG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQogd2luZG93LlhNTERvY3VtZW50IFtwcmludGVkIGFib3Zl
IGFzIHdpbmRvdy5Eb2N1bWVudF0KIHdpbmRvdy5YTUxIdHRwUmVxdWVzdCBbb2JqZWN0IFhNTEh0
dHBSZXF1ZXN0Q29uc3RydWN0b3JdCiB3aW5kb3cuWE1MSHR0cFJlcXVlc3QuRE9ORSBbbnVtYmVy
XQpAQCAtMjI4MCw2ICsyMjgyLDcgQEAgd2luZG93LmNvbnN0cnVjdG9yLnByb3RvdHlwZS5zaG93
TW9kYWxEaWFsb2cgW2Z1bmN0aW9uXQogd2luZG93LmNvbnN0cnVjdG9yLnByb3RvdHlwZS5zdG9w
IFtmdW5jdGlvbl0KIHdpbmRvdy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUud2Via2l0Q29udmVydFBv
aW50RnJvbU5vZGVUb1BhZ2UgW2Z1bmN0aW9uXQogd2luZG93LmNvbnN0cnVjdG9yLnByb3RvdHlw
ZS53ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZSBbZnVuY3Rpb25dCit3aW5kb3cuY29u
c3RydWN0b3IucHJvdG90eXBlLndlYmtpdFBvc3RNZXNzYWdlIFtmdW5jdGlvbl0KIHdpbmRvdy5j
cnlwdG8gW29iamVjdCBDcnlwdG9dCiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBbZnVu
Y3Rpb25dCiB3aW5kb3cuZGVjb2RlVVJJIFtmdW5jdGlvbl0KQEAgLTI0NzMsNiArMjQ3Niw3IEBA
IHdpbmRvdy51bmRlZmluZWQgW3VuZGVmaW5lZF0KIHdpbmRvdy51bmVzY2FwZSBbZnVuY3Rpb25d
CiB3aW5kb3cud2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UgW2Z1bmN0aW9uXQogd2lu
ZG93LndlYmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2RlIFtmdW5jdGlvbl0KK3dpbmRvdy53
ZWJraXRQb3N0TWVzc2FnZSBbZnVuY3Rpb25dCiB3aW5kb3cud2luZG93IFtwcmludGVkIGFib3Zl
IGFzIHdpbmRvd10KIHdpbmRvdy5nZXRTZWxlY3Rpb24oKSBbb2JqZWN0IERPTVNlbGVjdGlvbl0K
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZSBbZnVuY3Rpb25dCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnR5LWRlc2NyaXB0b3JzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHkt
ZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0CmluZGV4IDJhZjY3NDUuLmM1ODk1NjUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRv
cnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cHJvcGVydHktZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0CkBAIC01MzksNiArNTM5LDcgQEAgUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ3RvU3RyaW5nJykgaXMg
dW5kZWZpbmVkLgogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywg
J3ZhbHVlT2YnKSBpcyB1bmRlZmluZWQuCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iod2luZG93LCAnd2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UnKSBpcyB1bmRl
ZmluZWQuCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAnd2Vi
a2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUnKSBpcyB1bmRlZmluZWQuCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAnd2Via2l0UG9zdE1lc3NhZ2UnKSBp
cyB1bmRlZmluZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0
YW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJp
dGFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IDgzY2VjZjQuLjhiODNjZmMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4
dApAQCAtNzk5LDYgKzc5OSw4IEBAIFBBU1MgaW5uZXIud2Via2l0Q29udmVydFBvaW50RnJvbU5v
ZGVUb1BhZ2UuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndlYmtpdENvbnZlcnRQb2ludEZy
b21Ob2RlVG9QYWdlLmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci53ZWJr
aXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZS5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIu
d2Via2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0
cnVlCitQQVNTIGlubmVyLndlYmtpdFBvc3RNZXNzYWdlLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBp
bm5lci53ZWJraXRQb3N0TWVzc2FnZS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1Mg
aW5uZXIud2luZG93LmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci53aW5kb3cuY29uc3RydWN0
b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb25lLWV4cGVj
dGVkLnR4dAppbmRleCBjZDMyNzhhLi5lNWRiZGFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9uZS1leHBlY3RlZC50eHQKQEAgLTIsOCAr
Miw4IEBAIFRlc3RzIHZhcmlvdXMgdXNlIGNhc2VzIHdoZW4gY2xvbmluZyBNZXNzYWdlUG9ydHMu
CiAKIFNob3VsZCBiZSBhIHNlcmllcyBvZiBTVUNDRVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRo
IERPTkUuCiAKLVNVQ0NFU1M6IFBvc3RpbmcgcG9ydCB0byBpdHNlbGY6IEVycm9yOiBJTlZBTElE
X1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMQotU1VDQ0VTUzogUG9zdGluZyBlbnRhbmdsZWQg
cG9ydDogRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExCitTVUNDRVNT
OiBQb3N0aW5nIHBvcnQgdG8gaXRzZWxmOiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNl
cHRpb24gMjUKK1NVQ0NFU1M6IFBvc3RpbmcgZW50YW5nbGVkIHBvcnQ6IEVycm9yOiBEQVRBX0NM
T05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQogU1VDQ0VTUzogUG9zdGluZyBjbG9uZWQgcG9ydC4K
IFNVQ0NFU1M6IFBvc3RlZCBtZXNzYWdlcyB0byBjbG9uZWQgcG9ydC4KIFNVQ0NFU1M6IENsb25l
ZCBib3RoIGVuZHBvaW50cyBvZiBhIGNoYW5uZWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dAppbmRleCBmZjc1NTQ1
Li41MmY5Yzc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBv
cnQtbXVsdGktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQKQEAgLTMsMTUgKzMsMTUgQEAgVGhpcyB0ZXN0IGNo
ZWNrcyB0aGUgdmFyaW91cyB1c2UgY2FzZXMgYXJvdW5kIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMg
dGhyb3VnaCBNZXMKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGNoYW5uZWwu
cG9ydDEucG9zdE1lc3NhZ2UoInNhbWUgcG9ydCIsIFtjaGFubmVsLnBvcnQxXSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1Mg
Y2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZW50YW5nbGVkIHBvcnQiLCBbY2hhbm5lbC5wb3J0
Ml0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRp
b24gMTEuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFu
bmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjaGFubmVsLnBvcnQx
LnBvc3RNZXNzYWdlKCJzYW1lIHBvcnQiLCBbY2hhbm5lbC5wb3J0MV0pIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUuCitQQVNTIGNoYW5uZWwu
cG9ydDEucG9zdE1lc3NhZ2UoImVudGFuZ2xlZCBwb3J0IiwgW2NoYW5uZWwucG9ydDJdKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1LgorUEFT
UyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEs
IG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05F
X0VSUjogRE9NIEV4Y2VwdGlvbiAyNS4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgi
bm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1l
c3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVNl
cXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibGFyZ2VTZXF1ZW5jZSIsIGxh
cmdlUG9ydEFycmF5KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBE
T00gRXhjZXB0aW9uIDExLgotUEFTUyBldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBz
ZW50Ci1QQVNTIGV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50CitQQVNT
IGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImxhcmdlU2VxdWVuY2UiLCBsYXJnZVBvcnRBcnJh
eSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAy
NS4KK1BBU1MgZXZlbnQucG9ydHMgc2hvdWxkIGJlIG5vbi1udWxsIHdoZW4gbm8gcG9ydCBzZW50
CitQQVNTIGV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNl
bnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNl
bnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHJl
LXNlbnQgYWZ0ZXIgZXJyb3IKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
cmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1tdWx0aS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3Jlc291cmNlcy9tZXNzYWdlLXBvcnQtbXVsdGkuanMKaW5kZXggOGRmNTQ5ZS4uZDAzMTI2MyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL21lc3NhZ2UtcG9y
dC1tdWx0aS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2Fn
ZS1wb3J0LW11bHRpLmpzCkBAIC0zNiwxNCArMzYsMTQgQEAgY2hhbm5lbC5wb3J0MS5wb3N0TWVz
c2FnZSgiZG9uZSIpOwogY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkg
ewogICAgIGlmIChldmVudC5kYXRhID09ICJub3BvcnQiKSB7CiAgICAgICAgIGlmICghZXZlbnQu
cG9ydHMpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBpcyBudWxsIHdoZW4g
bm8gcG9ydCBzZW50Iik7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBpcyBu
dWxsIHdoZW4gbm8gcG9ydCBzZW50Iik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RG
YWlsZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBudWxsIHdoZW4gbm8gcG9ydCBzZW50Iik7Cisg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBzaG91bGQgYmUgbm9uLW51bGwgd2hl
biBubyBwb3J0IHNlbnQiKTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gInplcm8gcG9y
dHMiKSB7CiAgICAgICAgIGlmICghZXZlbnQucG9ydHMpCi0gICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gZW1wdHkgYXJyYXkgc2VudCIpOworICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQi
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgc2hv
dWxkIGJlIG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50Iik7CisgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJldmVudC5wb3J0cyBzaG91bGQgYmUgbm9uLW51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50
Iik7CiAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJ0d28gcG9ydHMiKSB7CiAgICAgICAg
IGlmICghZXZlbnQucG9ydHMpIHsKICAgICAgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnBvcnRz
IHNob3VsZCBiZSBub24tbnVsbCB3aGVuIHBvcnRzIHNlbnQiKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC5q
cyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWNvbnRleHQtbXVs
dGktcG9ydC5qcwppbmRleCA0YjU1Y2I4Li5hNTVkMmQwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LmpzCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWNvbnRleHQtbXVs
dGktcG9ydC5qcwpAQCAtMTMsMTQgKzEzLDE0IEBAIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkgewogICAgICAgICBldmVudC5wb3J0c1swXS5vbm1lc3NhZ2UgPSBkb25lOwogICAg
IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gIm5vcG9ydCIpIHsKICAgICAgICAgaWYgKCFldmVudC5w
b3J0cykKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBu
byBwb3J0IHNlbnQiKTsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnBvcnRzIGlzIG51
bGwgd2hlbiBubyBwb3J0IHNlbnQiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZXZlbnQucG9ydHMgc2hvdWxkIGJlIG51bGwgd2hlbiBubyBwb3J0IHNlbnQiKTsKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIHdoZW4gbm8gcG9y
dCBzZW50Iik7CiAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJ6ZXJvIHBvcnRzIikgewog
ICAgICAgICBpZiAoIWV2ZW50LnBvcnRzKQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiZXZlbnQu
cG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQiKTsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoImV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50Iik7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBu
dWxsIHdoZW4gZW1wdHkgYXJyYXkgc2VudCIpOworICAgICAgICAgICAgdGVzdFBhc3NlZCgiZXZl
bnQucG9ydHMgaXMgbm9uLW51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50Iik7CiAgICAgfSBlbHNl
IGlmIChldmVudC5kYXRhID09ICJ0d28gcG9ydHMiKSB7CiAgICAgICAgIGlmICghZXZlbnQucG9y
dHMpIHsKICAgICAgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24t
bnVsbCB3aGVuIHBvcnRzIHNlbnQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9yZXNvdXJjZXMvd29ya2VyLW1lc3NhZ2Vwb3J0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3Jlc291cmNlcy93b3JrZXItbWVzc2FnZXBvcnQuanMKaW5kZXggYTdiNGY3Ny4uMWUw
MWIwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItbWVzc2FnZXBvcnQuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItbWVzc2FnZXBvcnQuanMKQEAgLTgsMTAgKzgsMTAgQEAgb25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZ0KSB7CiAgICAgICAgICAgICBwb3N0TWVzc2FnZSgiRkFJTDogRGlkIG5vdCByZWNl
aXZlIGV4cGVjdGVkIE1lc3NhZ2VQb3J0Iik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGV2
dC5kYXRhID09ICJub3BvcnQiKSB7Ci0gICAgICAgIGlmIChldnQucG9ydHMpIHsKLSAgICAgICAg
ICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBSZWNlaXZlZCBtZXNzYWdlIHBvcnQiKTsKKyAgICAgICAg
aWYgKCFldnQucG9ydHMgfHwgZXZ0LnBvcnRzLmxlbmd0aCkgeworICAgICAgICAgICAgcG9zdE1l
c3NhZ2UoIkZBSUw6IFJlY2VpdmVkIG1lc3NhZ2UgcG9ydCBvciBudWxsIHBvcnRzIGFycmF5Iik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb3N0TWVzc2FnZSgiUEFTUzogZXZ0LnBv
cnRzID0gbnVsbCBhcyBleHBlY3RlZCIpOworICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIlBBU1M6
IGV2dC5wb3J0cyA9IFtdIGFzIGV4cGVjdGVkIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KGV2dC5kYXRhID09ICJzcGFtIikgewogICAgICAgICBmb3IgKHZhciBpID0gMCA7IGkgPCAxMDAw
IDsgaSsrKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2Vz
L3dvcmtlci10aHJlYWQtbXVsdGktcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9y
ZXNvdXJjZXMvd29ya2VyLXRocmVhZC1tdWx0aS1wb3J0LmpzCmluZGV4IGJmMzVlYjAuLjg0OWEy
NDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LXRocmVhZC1tdWx0aS1wb3J0LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLXRocmVhZC1tdWx0aS1wb3J0LmpzCkBAIC0xLDE0ICsxLDE0IEBACiBvbm1l
c3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewogICAgIGlmIChldmVudC5kYXRhID09ICJub3BvcnQi
KSB7CiAgICAgICAgIGlmICghZXZlbnQucG9ydHMpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJl
dmVudC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBzZW50Iik7CisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBzZW50Iik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBudWxs
IHdoZW4gbm8gcG9ydCBzZW50Iik7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0
cyBzaG91bGQgYmUgbm9uLW51bGwgd2hlbiBubyBwb3J0IHNlbnQiKTsKICAgICB9IGVsc2UgaWYg
KGV2ZW50LmRhdGEgPT0gInplcm8gcG9ydHMiKSB7CiAgICAgICAgIGlmICghZXZlbnQucG9ydHMp
Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gZW1wdHkg
YXJyYXkgc2VudCIpOworICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgaXMgbnVs
bCB3aGVuIGVtcHR5IGFycmF5IHNlbnQiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZXZlbnQucG9ydHMgc2hvdWxkIGJlIG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50
Iik7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBzaG91bGQgYmUgbm9uLW51
bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50Iik7CiAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09
ICJ0d28gcG9ydHMiKSB7CiAgICAgICAgIGlmICghZXZlbnQucG9ydHMpIHsKICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVuIHBvcnRzIHNl
bnQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY29udGV4
dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3Jr
ZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAppbmRleCBmY2ExZmY4Li44ZTM5Y2Nm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVs
dGktcG9ydC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtl
ci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CkBAIC0zLDEwICszLDEwIEBAIFRoaXMg
dGVzdCBjaGVja3MgdGhlIHZhcmlvdXMgdXNlIGNhc2VzIGFyb3VuZCBzZW5kaW5nIG11bHRpcGxl
IHBvcnRzIHRocm91Z2ggV29yCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBl
dmVudC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBzZW50Ci1QQVNTIGV2ZW50LnBvcnRzIGlz
IG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50CitQQVNTIGV2ZW50LnBvcnRzIGlzIG5vbi1udWxs
IHdoZW4gbm8gcG9ydCBzZW50CitQQVNTIGV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIHdoZW4gZW1w
dHkgYXJyYXkgc2VudAogUEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0
d28gcG9ydHMgc2VudAotUEFTUyBwb3N0aW5nIGEgbnVsbCBwb3J0IGRpZCB0aHJvdzogRXJyb3I6
IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExCitQQVNTIHBvc3RpbmcgYSBudWxs
IHBvcnQgZGlkIHRocm93OiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUK
IFBBU1MgcG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzogVHlwZUVycm9yOiBUeXBlIGVycm9y
CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyByZS1z
ZW50IGFmdGVyIGVycm9yCiBQQVNTIHBvc3RpbmcgYSBub24tYXJyYXkgZGlkIHRocm93OiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93
b3JrZXItbWVzc2FnZXBvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3dvcmtlci1tZXNzYWdlcG9ydC1leHBlY3RlZC50eHQKaW5kZXggOTAzOThlMS4uOTA2YjZiOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdl
cG9ydC1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiBUZXN0IHRoYXQgcGFnZXMgYW5kIHdv
cmtlcnMgY2FuIHNlbmQgTWVzc2FnZVBvcnRzIHRvIG9uZSBhbm90aGVyLiBTaG91bGQgcHJpbnQg
IkRPTkUiIHdoZW4gZG9uZS4KIAotUEFTUzogZXZ0LnBvcnRzID0gbnVsbCBhcyBleHBlY3RlZAor
UEFTUzogZXZ0LnBvcnRzID0gW10gYXMgZXhwZWN0ZWQKIFBBU1M6IFJlY2VpdmVkIG1lc3NhZ2Ug
cG9ydAogUEFTUzogUmVjZWl2ZWQgcmVzcG9uc2UgZnJvbSBXb3JrZXIgdmlhIE1lc3NhZ2VQb3J0
CiBQQVNTOiBHb3QgcG9ydCBmcm9tIHdvcmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQKaW5kZXggODhiNDA2Mi4u
MjQzNmQ2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0
aS1wb3J0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2Vy
LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CkBAIC0zLDEyICszLDEyIEBAIFRoaXMgdGVzdCBjaGVj
a3MgdGhlIHZhcmlvdXMgdXNlIGNhc2VzIGFyb3VuZCBzZW5kaW5nIG11bHRpcGxlIHBvcnRzIHRo
cm91Z2ggV29yCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyB3b3JrZXIucG9z
dE1lc3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9y
dDJdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0
aW9uIDExLgorUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5w
b3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFf
Q0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1LgogUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5v
dEFQb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCB7fSwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5v
dEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KIFBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2UiLCBbe2xlbmd0
aDogM31dKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBldmVu
dC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBzZW50Ci1QQVNTIGV2ZW50LnBvcnRzIGlzIG51
bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50CitQQVNTIGV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24t
bnVsbCB3aGVuIG5vIHBvcnQgc2VudAorUEFTUyBldmVudC5wb3J0cyBzaG91bGQgYmUgbm9uLW51
bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBw
b3J0cyB3aGVuIHR3byBwb3J0cyBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBw
b3J0cyB3aGVuIHR3byBwb3J0cyByZS1zZW50IGFmdGVyIGVycm9yCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQt
bXVsdGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQKaW5kZXggOTgxZWI5Mi4u
MmExZWNlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1l
eHBlY3RlZC50eHQKQEAgLTMsMTQgKzMsMTQgQEAgVGhpcyB0ZXN0IGNoZWNrcyB0aGUgdmFyaW91
cyB1c2UgY2FzZXMgYXJvdW5kIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMgdGhyb3VnaCBNZXMKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3Nh
Z2UoInNhbWUgcG9ydCIsIFtjaGFubmVsLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJ
TlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY2hhbm5lbC5wb3J0MS5w
b3N0TWVzc2FnZSgiZW50YW5nbGVkIHBvcnQiLCBbY2hhbm5lbC5wb3J0Ml0pIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNo
YW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVs
bCwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVf
RVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJz
YW1lIHBvcnQiLCBbY2hhbm5lbC5wb3J0MV0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9D
TE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3Nh
Z2UoImVudGFuZ2xlZCBwb3J0IiwgW2NoYW5uZWwucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1LgorUEFTUyBjaGFubmVsLnBvcnQx
LnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwz
LnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2Vw
dGlvbiAyNS4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hh
bm5lbDMucG9ydDEsIHt9LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWluIG9ubHkgTWVzc2FnZVBv
cnRzLgogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5IiwgY2hhbm5l
bDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJn
dW1lbnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUuCiBQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1l
c3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWluIG9ubHkgTWVzc2Fn
ZVBvcnRzLgotUEFTUyBldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBzZW50Ci1QQVNT
IGV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50CitQQVNTIGV2ZW50LnBv
cnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVuIG5vIHBvcnQgc2VudAorUEFTUyBldmVudC5wb3J0
cyBzaG91bGQgYmUgbm9uLW51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50CiBQQVNTIGV2ZW50LnBv
cnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyBzZW50CiBQQVNTIGV2ZW50LnBv
cnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyByZS1zZW50IGFmdGVyIGVycm9y
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3dv
cmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRp
LXBvcnQtZXhwZWN0ZWQudHh0CmluZGV4IGU2NjI3MGYuLjEwZmVjM2QgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRl
eHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0td2luL2Zhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVk
LnR4dApAQCAtMywxMCArMywxMCBAQCBUaGlzIHRlc3QgY2hlY2tzIHRoZSB2YXJpb3VzIHVzZSBj
YXNlcyBhcm91bmQgc2VuZGluZyBtdWx0aXBsZSBwb3J0cyB0aHJvdWdoIFdvcgogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIG5vIHBv
cnQgc2VudAotUEFTUyBldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gZW1wdHkgYXJyYXkgc2VudAor
UEFTUyBldmVudC5wb3J0cyBpcyBub24tbnVsbCB3aGVuIG5vIHBvcnQgc2VudAorUEFTUyBldmVu
dC5wb3J0cyBpcyBub24tbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKIFBBU1MgZXZlbnQucG9y
dHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQKLVBBU1MgcG9zdGluZyBh
IG51bGwgcG9ydCBkaWQgdGhyb3c6IEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxMQorUEFTUyBwb3N0aW5nIGEgbnVsbCBwb3J0IGRpZCB0aHJvdzogRXJyb3I6IERBVEFf
Q0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1CiBQQVNTIHBvc3RpbmcgYSBub24tcG9ydCBkaWQg
dGhyb3c6IFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4g
b25seSBNZXNzYWdlUG9ydHMKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdo
ZW4gdHdvIHBvcnRzIHJlLXNlbnQgYWZ0ZXIgZXJyb3IKIFBBU1MgcG9zdGluZyBhIG5vbi1hcnJh
eSBkaWQgdGhyb3c6IFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBoYXMgbm8g
bGVuZ3RoIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0td2luL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1w
b3J0LWV4cGVjdGVkLnR4dAppbmRleCBmMTFjNzRjLi43YmVhOTNiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1w
b3J0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4v
ZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dApAQCAtMywxMiArMywx
MiBAQCBUaGlzIHRlc3QgY2hlY2tzIHRoZSB2YXJpb3VzIHVzZSBjYXNlcyBhcm91bmQgc2VuZGlu
ZyBtdWx0aXBsZSBwb3J0cyB0aHJvdWdoIFdvcgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgog
CiAKLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEs
IG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NU
QVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJudWxs
IHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNS4KIFBBU1Mgd29y
a2VyLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtjaGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwz
LnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1
bWVudCBtdXN0IGNvbnRhaW4gb25seSBNZXNzYWdlUG9ydHMuCiBQQVNTIHdvcmtlci5wb3N0TWVz
c2FnZSgibm90QW5BcnJheSIsIGNoYW5uZWwzLnBvcnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlLgog
UEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0pIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBj
b250YWluIG9ubHkgTWVzc2FnZVBvcnRzLgotUEFTUyBldmVudC5wb3J0cyBpcyBudWxsIHdoZW4g
bm8gcG9ydCBzZW50Ci1QQVNTIGV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBlbXB0eSBhcnJheSBz
ZW50CitQQVNTIGV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVuIG5vIHBvcnQgc2Vu
dAorUEFTUyBldmVudC5wb3J0cyBzaG91bGQgYmUgbm9uLW51bGwgd2hlbiBlbXB0eSBhcnJheSBz
ZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyBz
ZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyBy
ZS1zZW50IGFmdGVyIGVycm9yCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9XaW5kb3cvd2luZG93
LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CmluZGV4IDVlY2U4NDEuLjRjODhiYWEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4
cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLVRlc3QgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50
IG9mIHdpbmRvdy5wb3N0TWVzc2FnZSBpcyBpZ25vcmVkIG9yIHRyaWdnZXJzIGFuIGVycm9yIGlm
IGl0IGlzIG5vdCBhIG1lc3NhZ2UgcG9ydC4gWW91IHNob3VsZCBzZWUgUEFTUyBtZXNzYWdlICcx
JyB0aHJvdWdoICc3JywgZm9sbG93ZWQgYnkgJ2RvbmUnLCB3aXRoIG1lc3NhZ2VzIDQtNyByZWNl
aXZlZCBiZWxvdy4KK1Rlc3QgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHdpbmRvdy5wb3N0
TWVzc2FnZSBpcyBpZ25vcmVkIG9yIHRyaWdnZXJzIGFuIGVycm9yIGlmIGl0IGlzIG5vdCBhIG1l
c3NhZ2UgcG9ydC4KIAogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMScsIDEpOiB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2Jq
ZWN0CiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcyJywgKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdApAQCAtNywx
MiArNywyOCBAQCBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc0JywgW29iamVjdCBET01XaW5kb3dd
KSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNScs
IG51bGwpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2Ug
KCc2JywgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGlu
ZyBtZXNzYWdlICgnNycsIFtvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBvcnRd
KSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdl
ICgnOCcsIDEpOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlcmFibGVBcnJheSBh
cmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdAorUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdlICgn
OScsICk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyYWJsZUFycmF5IGFyZ3Vt
ZW50IG11c3QgYmUgYW4gb2JqZWN0CitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdBJywg
W29iamVjdCBPYmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJhYmxl
QXJyYXkgYXJndW1lbnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUKK1BBU1M6IHdlYmtpdFBvc3Rp
bmcgbWVzc2FnZSAoJ0InLCBbb2JqZWN0IERPTVdpbmRvd10pIGRpZCBub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdDJywgbnVsbCkgZGlkIG5vdCB0
aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ0QnLCB1bmRl
ZmluZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1l
c3NhZ2UgKCdFJywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pOiB0
aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1CitQ
QVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdGJywgW29iamVjdCBNZXNzYWdlUG9ydF0pIGRp
ZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdHJywgW29i
amVjdCBNZXNzYWdlUG9ydF0pOiB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJS
OiBET00gRXhjZXB0aW9uIDI1CitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0
IE1lc3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4
Y2VwdGlvbgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnW29iamVjdCBNZXNzYWdlUG9ydF0nLCBb
b2JqZWN0IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9F
UlI6IERPTSBFeGNlcHRpb24gMjUKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzIxNDc0ODM2NDgn
LCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdl
ICgnZG9uZScsICopIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCi1SZWNlaXZlZCBtZXNzYWdl
ICc0JwotUmVjZWl2ZWQgbWVzc2FnZSAnNScKLVJlY2VpdmVkIG1lc3NhZ2UgJzYnCitSZWNlaXZl
ZCBtZXNzYWdlICc0JyB3aXRoIDAgcG9ydHMuCitSZWNlaXZlZCBtZXNzYWdlICc1JyB3aXRoIDAg
cG9ydHMuCitSZWNlaXZlZCBtZXNzYWdlICc2JyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNz
YWdlICc3JyB3aXRoIDIgcG9ydHMuCi1SZWNlaXZlZCBtZXNzYWdlICcyMTQ3NDgzNjQ4JwotUmVj
ZWl2ZWQgbWVzc2FnZSAnZG9uZScKK1JlY2VpdmVkIG1lc3NhZ2UgJ0InIHdpdGggMCBwb3J0cy4K
K1JlY2VpdmVkIG1lc3NhZ2UgJ0MnIHdpdGggMCBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ0Qn
IHdpdGggMCBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ0YnIHdpdGggMSBwb3J0cy4KK1JlY2Vp
dmVkIG1lc3NhZ2UgJ1tvYmplY3QgTWVzc2FnZVBvcnRdJyB3aXRoIDEgcG9ydHMuCitSZWNlaXZl
ZCBtZXNzYWdlICcyMTQ3NDgzNjQ4JyB3aXRoIDAgcG9ydHMuCitSZWNlaXZlZCBtZXNzYWdlICdk
b25lJyB3aXRoIDAgcG9ydHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2Ut
ZXhwZWN0ZWQudHh0CmluZGV4IDU1NjM3MTMuLmVjY2RkN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJv
dG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dApAQCAtODI5LDYgKzgyOSw4IEBAIFBBU1Mg
aW5uZXIud2Via2l0SURCVHJhbnNhY3Rpb24uaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLndl
YmtpdElEQlRyYW5zYWN0aW9uLmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogRkFJTCBpbm5l
ci53ZWJraXRJbmRleGVkREIuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgogRkFJ
TCBpbm5lci53ZWJraXRJbmRleGVkREIuY29uc3RydWN0b3IuaXNJbm5lciBzaG91bGQgYmUgdHJ1
ZS4gV2FzIGZhbHNlLgorRkFJTCBpbm5lci53ZWJraXRQb3N0TWVzc2FnZS5pc0lubmVyIHNob3Vs
ZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVyLndlYmtpdFBvc3RNZXNzYWdlLmNvbnN0
cnVjdG9yLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KIFBBU1MgaW5uZXIud2Vi
a2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci53ZWJr
aXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNT
IGlubmVyLndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtLmlzSW5uZXIgaXMgdHJ1ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBlMzViZTRhLi5hN2E5NjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
NTg5LDYgKzU4OSw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vVG91Y2guY3BwCiAg
ICAgZG9tL1RvdWNoRXZlbnQuY3BwCiAgICAgZG9tL1RvdWNoTGlzdC5jcHAKKyAgICBkb20vVHJh
bnNmZXJhYmxlLmNwcAorICAgIGRvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNwcAogICAgIGRvbS9U
cmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcAogICAgIGRvbS9UcmF2ZXJzYWwuY3BwCiAgICAgZG9t
L1RyZWVTY29wZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZTc0Y2Q2Li4yOGUwNjc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEyIEBACisyMDExLTA4LTE5ICBMdWtlIFphcmtvICA8bHVrZXphcmtvQGdt
YWlsLmNvbT4KKworICAgICAgICBNYWtlIE1lc3NhZ2VQb3J0IFRyYW5zZmVyYWJsZS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyMDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgU3RydWN0dXJl
ZCBDbG9uZSBhbGdvcml0aG0gZGVzY3JpYmVzIGFuIGludGVyZmFjZSBmb3IgVHJhbnNmZXJhYmxl
IG9iamVjdHMKKyAgICAgICAgKGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvY29tcGxldGUvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjdHJhbnNmZXJh
YmxlLW9iamVjdHMpLgorICAgICAgICBDdXJyZW50bHkgdGhlIG9ubHkgb2ZmaWNpYWwgVHJhbnNm
ZXJhYmxlIG9iamVjdCBpcyB0aGUgTWVzc2FnZVBvcnQsIGJ1dAorICAgICAgICBBcnJheUJ1ZmZl
cnMgYXJlIGV4cGVjdGVkIHRvIGJlIHNhbmN0aW9uZWQgYXMgc3VjaCBzb29uLgorCisgICAgICAg
IC0gQ3JlYXRlIG5ldyBjbGFzc2VzIFRyYW5zZmVyYWJsZSBhbmQgVHJhbnNmZXJhYmxlUmVjZWlw
dC4KKyAgICAgICAgICAgIC0gQ29udHJvbCBvZiBhIFRyYW5zZmVyYWJsZSBvYmplY3QgY2FuIGJl
IHRyYW5zZmVycmVkIG91dCwgeWllbGRpbmcgYQorICAgICAgICAgICAgICBUcmFuc2ZlcmFibGVS
ZWNlaXB0LgorICAgICAgICAgICAgLSBBIFRyYW5zZmVyYWJsZVJlY2VpcHQgY2FuIHRoZW4gYmUg
dHJhbnNmZXJyZWQgaW4sIHlpZWxkaW5nIGEgVHJhbnNmZXJhYmxlLgorICAgICAgICAgICAgLSBN
ZXNzYWdlUG9ydCBpcyByZXBhcmVudGVkIHRvIFRyYW5zZmVyYWJsZS4KKyAgICAgICAgICAgIC0g
VHJhbnNmZXJyaW5nIG91dCBhIE1lc3NhZ2VQb3J0IHlpZWxkcyBhIE1lc3NhZ2VQb3J0UmVjZWlw
dC4KKyAgICAgICAgLSBJbnN0ZWFkIG9mIHBhc3NpbmcgYXJvdW5kIGEgU2VyaWFsaXplZFNjcmlw
dFZhbHVlIHdpdGggYQorICAgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5IChmb3IsIGVn
LCB3ZWJraXRQb3N0TWVzc2FnZSksIGluc3RlYWQgYQorICAgICAgICAgIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSBpcyBwYWlyZWQgd2l0aCBhIFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheS4KKyAgICAg
ICAgICAgIC0gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpbGwgdXNlIG9iamVjdCByZWZlcmVuY2Vz
IGluc3RlYWQgb2YgY2xvbmVzIGZvcgorICAgICAgICAgICAgICBvYmplY3RzIGluIHRoZSB0cmFu
c2ZlciBsaXN0LgorICAgICAgICAgICAgLSBUaGUgVjggU2VyaWFsaXplZFNjcmlwdFZhbHVlIHNv
bWV0aW1lcyBuZWVkcyB0byBiZSBzZW50IGFjcm9zcyBhbiBJUEMKKyAgICAgICAgICAgICAgYm91
bmRhcnkuIEluIHRoaXMgY2FzZSBzb21lIFRyYW5zZmVyYWJsZVJlY2VpcHRzIHdpdGhvdXQgc3Bl
Y2lhbCBjbG9uaW5nCisgICAgICAgICAgICAgIHNlbWFudGljcyAoZWcsIG5vbi1NZXNzYWdlUG9y
dHMsIHdoaWNoIHNlbmQgYWNyb3NzIHJvdXRpbmcgaW5mb3JtYXRpb24pCisgICAgICAgICAgICAg
IHdpbGwgbmVlZCB0byBiZSBmbGF0dGVuZWQuIFRoaXMgcGF0Y2ggZXhwb3NlcyBhbiBpbnRlcmZh
Y2UgZm9yIHN1Y2ggYW4KKyAgICAgICAgICAgICAgb3BlcmF0aW9uLgorICAgICAgICAtIE1vZGlm
eSBJREwgZ2VuZXJhdG9ycyBmb3IgU2VyaWFsaXplZFNjcmlwdFZhbHVlIHRvIHJlcXVpcmUgYW5k
IHBhc3MgdHJhbnNmZXIKKyAgICAgICAgICBsaXN0cyB0byB0aGUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlIGNvbnN0cnVjdG9yLgorICAgICAgICAtIFRoZSBvbGQgcG9zdE1lc3NhZ2UgaXMgcHJlc2Vy
dmVkIHdpdGggdGhhdCBuYW1lOyB3ZWJraXRQb3N0TWVzc2FnZSBoYW5kbGVzCisgICAgICAgICAg
VHJhbnNmZXJhYmxlcyBvdGhlciB0aGFuIE1lc3NhZ2VQb3J0cyBhbmQgYWxsb3dzIHRoZXNlIFRy
YW5zZmVyYWJsZXMgdG8KKyAgICAgICAgICBhcHBlYXIgaW4gdGhlIG1lc3NhZ2UgYmVpbmcgcG9z
dGVkLiAoRGl0dG8gZm9yIGluaXRNZXNzYWdlRXZlbnQuKQorICAgICAgICAtIFRocm93IERBVEFf
Q0xPTkVfRVJSIGluc3RlYWQgb2YgSU5WQUxJRF9TVEFURV9FUlIgd2hlcmUgdGhlIHN0YW5kYXJk
IGRlbWFuZHMgaXQuCisgICAgICAgIC0gUmV0dXJuIGFuIGVtcHR5IGFycmF5IGluc3RlYWQgb2Yg
bnVsbCBmb3IgYSBNZXNzYWdlRXZlbnQgdGhhdCB3YXMgc2VudCB3aXRob3V0CisgICAgICAgICAg
YXNzb2NpYXRlZCBwb3J0cy4KKyAgICAgICAgLSBBZGRlZCBsb2dpYyBpbiBKU0MgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIHRvIHByZXZlbnQgbm9uLVRyYW5zZmVycmVkIE1lc3NhZ2VQb3J0cworICAg
ICAgICAgIGZyb20gYXBwZWFyaW5nIGluIG1lc3NhZ2UgYm9kaWVzOyBhbHNvIGFkZGVkIGxvZ2lj
IHRvIHByZXZlbnQgdGhlbSBmcm9tIGFwcGVhcmluZworICAgICAgICAgIGluIG1lc3NhZ2UgYm9k
aWVzIGluIGxlZ2FjeSBwb3N0TWVzc2FnZSBtb2RlIChub3JtYWxpemluZyB3aXRoIFY4KS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvdzo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OndlYmtp
dFBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RlZGljYXRlZFdvcmtlckNv
bnRleHQ6OndlYmtpdFBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3Nh
Z2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VFdmVudDo6cG9y
dHMpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpKU01lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU01lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01l
c3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0
Ojp3ZWJraXRQb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsVHJhbnNmZXJhYmxl
QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9OYXRpdmVUcmFuc2ZlcmFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KU1RyYW5zZmVyYWJsZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNN
ZXNzYWdlUG9ydEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyOjpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtl
cjo6d2Via2l0UG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmluaXRpYWxpemVXaXRoVHJhbnNm
ZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c3RhcnRPYmplY3RJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1p
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6Q2xvbmVEZXNlcmlhbGl6ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om9wZW5UcmFuc2ZlcmFibGVBcnJh
eSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChOYXRp
dmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtOgorICAgICAgICAoR2VuZXJhdGVUb1Y4Q29udmVydGVycyk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4T2Jq
ZWN0TWFwOjpTZXJpYWxpemVyOjpTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2Jq
ZWN0TWFwOjpTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmpl
Y3RNYXA6OlNlcmlhbGl6ZXI6OmluaXRpYWxpemVPYmplY3RQb29sKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4T2JqZWN0TWFwOjpEZXNlcmlhbGl6ZXI6OkRlc2VyaWFsaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpWOE9iamVjdE1hcDo6RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOE9iamVjdE1hcDo6RGVzZXJpYWxpemVyOjppbml0aWFsaXplT2JqZWN0UG9v
bCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXpl
QW5kU2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjppc0ZsYXR0ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZmxhdHRlblJlY2VpcHRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRv
d0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6d2Via2l0UG9zdE1l
c3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojpwb3J0c0Fj
Y2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojp3ZWJraXRJbml0TWVz
c2FnZUV2ZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VjhNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2VDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VQb3J0Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRyYW5zZmVyYWJsZUFycmF5KToKKyAgICAgICAg
KFdlYkNvcmU6OnRvTmF0aXZlVHJhbnNmZXJhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhU
cmFuc2ZlcmFibGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0
Q3VzdG9tLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VjhXb3JrZXI6OnBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhXb3JrZXI6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9ET01B
bGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZUV2ZW50OjptZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OnRy
YW5zZmVyYWJsZSk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2
ZW50OjpkYXRhRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6
dHJhbnNmZXJhYmxlcyk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6CisgICAgICAg
ICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpN
ZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6Ondhc1RyYW5zZmVycmVkT3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojp0cmFuc2Zlck91dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgICogZG9tL01lc3Nh
Z2VQb3J0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6YXNNZXNzYWdlUG9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aXNFbnRhbmdsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmlzQ2xvbmVkKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBv
cnQuaWRsOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6RXZlbnREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0UmVjZWlwdDo6TWVzc2FnZVBvcnRSZWNlaXB0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0UmVjZWlwdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0UmVjZWlwdDo6dHJhbnNmZXJJbik6CisgICAgICAgICogZG9t
L01lc3NhZ2VQb3J0Q2hhbm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsOjpFdmVudERhdGE6OnJlY2VpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
UmVjZWlwdDo6YXNNZXNzYWdlUG9ydFJlY2VpcHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRSZWNlaXB0OjptZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0
ZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpzdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpkYXRhRGVwZW5kZW5jaWVzKToKKyAgICAgICAg
KiBkb20vVHJhbnNmZXJhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zl
cmFibGU6OnRyYW5zZmVyQWxsT3V0KToKKyAgICAgICAgKiBkb20vVHJhbnNmZXJhYmxlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmZXJhYmxlOjphc01lc3NhZ2VQb3J0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZTo6flRyYW5zZmVyYWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc2ZlcmFibGU6OlRyYW5zZmVyYWJsZSk6CisgICAgICAgICogZG9tL1RyYW5z
ZmVyYWJsZVJlY2VpcHQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5pZGwuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2Zl
ckFsbEluKToKKyAgICAgICAgKiBkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6On5UcmFuc2ZlcmFibGVSZWNlaXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6OmFzTWVzc2FnZVBvcnRS
ZWNlaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHQ6OlRyYW5zZmVy
YWJsZVJlY2VpcHQpOgorICAgICAgICAqIHAycC9QZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQpOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdlVGlt
ZXI6OlBvc3RNZXNzYWdlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1l
cjo6ZXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6Cisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6
CisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6dmFsdWVEZXBlbmRlbmNpZXMpOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Lmg6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDoKKyAgICAg
ICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ29ubmVjdEV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckNvbnRleHRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpNZXNz
YWdlV29ya2VyQ29udGV4dFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNv
bnRleHRUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2Vy
VGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJUYXNrOjpNZXNz
YWdlV29ya2VyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyVGFzazo6cGVy
Zm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5n
UHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94
eS5oOgorCiAyMDExLTA4LTEwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhdXRvLWNvbXBsZXRpb24gZm9yIHN0cmluZyBsaXRl
cmFscyBkb2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDZiZWI5
MzEuLjJjNDU3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTMwMiw2ICsx
MzAyLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHRF
dmVudElucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vVG91Y2hMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFi
bGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmggXAorCVNvdXJjZS9X
ZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9t
L1RyYW5zZmVyYWJsZVJlY2VpcHQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9ybVNv
dXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggMWUxMmY0MC4uNWRjYTkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTU2NSw3ICs1
NjUsNyBAQCBfX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRFdmVudEMxRVA3TlNFdmVudAog
X19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMHNlcnZlUGVuZGluZ1JlcXVlc3Rz
RU5TXzIwUmVzb3VyY2VMb2FkUHJpb3JpdHlFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNj
aGVkdWxlcjI0c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkRVBOU181RnJhbWVFUE5TXzMyTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnRFUktOU18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk43
V2ViQ29yZTIxU1ZHRG9jdW1lbnRFeHRlbnNpb25zMjFzYW1wbGVBbmltYXRpb25BdFRpbWVFUktO
M1dURjZTdHJpbmdFUE5TXzE0U1ZHU01JTEVsZW1lbnRFZAotX19aTjdXZWJDb3JlMjFTZXJpYWxp
emVkU2NyaXB0VmFsdWUxMWRlc2VyaWFsaXplRVBLMTVPcGFxdWVKU0NvbnRleHRQUEsxM09wYXF1
ZUpTVmFsdWUKK19fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6
ZUVQSzE1T3BhcXVlSlNDb250ZXh0UFBLMTNPcGFxdWVKU1ZhbHVlUE4zV1RGNlZlY3RvcklOM0pT
QzdKU1ZhbHVlRUxtMUVFRQogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWU2Y3Jl
YXRlRVBLMTVPcGFxdWVKU0NvbnRleHRQSzEzT3BhcXVlSlNWYWx1ZVBTNl8KIF9fWk43V2ViQ29y
ZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlQzFFUk4zV1RGNlZlY3RvckloTG0wRUVFCiBfX1pON1dl
YkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQxRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyYzYz
MmFkLi5iM2FlNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMDE1LDYgKzEwMTUsOCBAQAogICAg
ICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0Lmgn
LAogICAgICAgICAgICAgJ2RvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaCcsCisgICAgICAgICAgICAn
ZG9tL1RyYW5zZmVyYWJsZS5oJywKKyAgICAgICAgICAgICdkb20vVHJhbnNmZXJhYmxlUmVjZWlw
dC5oJywKICAgICAgICAgICAgICdkb20vVUlFdmVudC5oJywKICAgICAgICAgICAgICdkb20vVUlF
dmVudFdpdGhLZXlTdGF0ZS5oJywKICAgICAgICAgICAgICdkb20vVXNlckdlc3R1cmVJbmRpY2F0
b3IuaCcsCkBAIC01NDAyLDYgKzU0MDQsMTAgQEAKICAgICAgICAgICAgICdkb20vVG91Y2hFdmVu
dC5oJywKICAgICAgICAgICAgICdkb20vVG91Y2hMaXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9t
L1RvdWNoTGlzdC5oJywKKyAgICAgICAgICAgICdkb20vVHJhbnNmZXJhYmxlLmNwcCcsCisgICAg
ICAgICAgICAnZG9tL1RyYW5zZmVyYWJsZS5oJywKKyAgICAgICAgICAgICdkb20vVHJhbnNmZXJh
YmxlUmVjZWlwdC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0Lmgn
LAogICAgICAgICAgICAgJ2RvbS9UcmFuc2Zvcm1Tb3VyY2UuaCcsCiAgICAgICAgICAgICAnZG9t
L1RyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwJywKICAgICAgICAgICAgICdkb20vVHJhbnNmb3Jt
U291cmNlUXQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYTA3Yjk0YS4uYjdlMWE1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KQEAgLTU1Myw2ICs1NTMsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vVG91Y2gu
Y3BwIFwKICAgICBkb20vVG91Y2hFdmVudC5jcHAgXAogICAgIGRvbS9Ub3VjaExpc3QuY3BwIFwK
KyAgICBkb20vVHJhbnNmZXJhYmxlLmNwcCBcCisgICAgZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQu
Y3BwIFwKICAgICBkb20vVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL1RyZWVTY29wZS5jcHAgXAog
ICAgIGRvbS9UcmVlV2Fsa2VyLmNwcCBcCkBAIC0xNTQ2LDYgKzE1NDgsOCBAQCBIRUFERVJTICs9
IFwKICAgICBkb20vVG91Y2guaCBcCiAgICAgZG9tL1RvdWNoRXZlbnQuaCBcCiAgICAgZG9tL1Rv
dWNoTGlzdC5oIFwKKyAgICBkb20vVHJhbnNmZXJhYmxlLmggXAorICAgIGRvbS9UcmFuc2ZlcmFi
bGVSZWNlaXB0LmggXAogICAgIGRvbS9UcmFuc2Zvcm1Tb3VyY2UuaCBcCiAgICAgZG9tL1RyYXZl
cnNhbC5oIFwKICAgICBkb20vVHJlZURlcHRoTGltaXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGJhODQ2NC4uZTBjYTY5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNDgyMiwxMiArNDgyMiwxNiBAQAogCQlCNzM0QjE4MTExOUI5OTExMDA2NTg3QkQg
LyogRm9udFRyYW5zY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjczNEIxODAxMTlCOTkxMTAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmNw
cCAqLzsgfTsKIAkJQjczNEIxODMxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzM0QjE4MjEx
OUI5OTFEMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuaCAqLzsgfTsKIAkJQjc3NkQ0M0QxMTA0
NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRD
b250ZXh0LmNwcCAqLzsgfTsKKwkJQjg2MTg3MkMxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVy
YWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
ODYxODcyQTEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmNwcCAqLzsgfTsKKwkJQjg2
MTg3MkQxM0Q4RUM0OTAwOEI4NzRGIC8qIFRyYW5zZmVyYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg2MTg3MkIxM0Q4RUM0OTAwOEI4NzRGIC8q
IFRyYW5zZmVyYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUI4ODVFOEQ0MTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAgKi87IH07CiAJCUI4ODVFOEQ1MTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI4ODVFOEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9
OwogCQlCOERCREI0QjEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0NzEz
MEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAgKi87IH07CiAJCUI4REJE
QjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0ODEzMEIwRjhBMDBGNUNE
QjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovOyB9OwogCQlCOERCREI0RDEzMEIwRjhBMDBG
NUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0OTEzMEIwRjhBMDBGNUNEQjEgLyog
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgKi87IH07CiAJCUI4REJEQjRFMTMwQjBGOEEw
MEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0QTEzMEIwRjhBMDBGNUNEQjEgLyog
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovOyB9OworCQlCOEUwRThGRjEzRUM3RTU1MDBD
MTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOEUwRThGQzEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNm
ZXJhYmxlUmVjZWlwdC5jcHAgKi87IH07CisJCUI4RTBFOEZFMTNFQzdFNEQwMEMxMzcyMCAvKiBU
cmFuc2ZlcmFibGVSZWNlaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCOEUwRThGRDEzRUM3RTBDMDBDMTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlw
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJB
Q0YyOTAxMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkFDRjI5MDAxM0IyQTBENTAwNzgxRjkwIC8q
IExheW91dFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkMwMEYwMDQwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDBFRkZFMEUwQTE4NTUwMEZE
MDRFMyAvKiBET01GaWxlLmggKi87IH07CiAJCUJDMDBGMDA1MEUwQTE4NTUwMEZEMDRFMyAvKiBE
T01GaWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMwMEVGRkYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0gKi87IH07CkBAIC0xMTUwNiwx
MiArMTE1MTAsMTYgQEAKIAkJQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2Nv
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZvbnRUcmFuc2NvZGVyLmg7
IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRDb250ZXh0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjg2MTg3MkExM0Q4RUM0OTAwOEI4
NzRGIC8qIFRyYW5zZmVyYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUcmFuc2ZlcmFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCODYx
ODcyQjEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRyYW5zZmVyYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCODg1RThEMjExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUI4ODVFOEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4REJEQjQ3MTMw
QjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0
aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXRTZWxlY3Rp
b25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4REJEQjQ5MTMwQjBG
OEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0QTEzMEIwRjhBMDBGNUNEQjEgLyog
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUI4RTBFOEZDMTNFQzdFMEMwMEMxMzcyMCAvKiBUcmFuc2ZlcmFibGVSZWNlaXB0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZmVyYWJsZVJlY2Vp
cHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCOEUwRThGRDEzRUM3RTBDMDBD
MTM3MjAgLyogVHJhbnNmZXJhYmxlUmVjZWlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUcmFuc2ZlcmFibGVSZWNlaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJBQ0YyOTAwMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMDIxLDYgKzIwMDI5LDEwIEBACiAJCQkJOTMzQTE0MkQwQjdE
MTg4NjAwQTUzRkZEIC8qIFRleHRFdmVudC5oICovLAogCQkJCTkzM0ExNDJDMEI3RDE4ODYwMEE1
M0ZGRCAvKiBUZXh0RXZlbnQuaWRsICovLAogCQkJCUE3N0I0MTlGMTJFNjc1QTkwMDU0MzQzRCAv
KiBUZXh0RXZlbnRJbnB1dFR5cGUuaCAqLywKKwkJCQlCODYxODcyQjEzRDhFQzQ5MDA4Qjg3NEYg
LyogVHJhbnNmZXJhYmxlLmggKi8sCisJCQkJQjg2MTg3MkExM0Q4RUM0OTAwOEI4NzRGIC8qIFRy
YW5zZmVyYWJsZS5jcHAgKi8sCisJCQkJQjhFMEU4RkQxM0VDN0UwQzAwQzEzNzIwIC8qIFRyYW5z
ZmVyYWJsZVJlY2VpcHQuaCAqLywKKwkJCQlCOEUwRThGQzEzRUM3RTBDMDBDMTM3MjAgLyogVHJh
bnNmZXJhYmxlUmVjZWlwdC5jcHAgKi8sCiAJCQkJNURCMUJDNjgxMDcxNUE2NDAwRUZBQTQ5IC8q
IFRyYW5zZm9ybVNvdXJjZS5oICovLAogCQkJCTVEQjFCQzY5MTA3MTVBNjQwMEVGQUE0OSAvKiBU
cmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCAqLywKIAkJCQk4NTRGRTcyQzBBMjI5N0JFMDA1OEQ3
QUQgLyogVHJhdmVyc2FsLmNwcCAqLywKQEAgLTIzMTk0LDYgKzIzMjA2LDggQEAKIAkJCQk5MzA1
QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYx
M0IwMENENjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUU5MTJBRTBFRkFDOTA2MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCUI4NjE4NzJEMTNEOEVDNDkwMDhCODc0RiAvKiBUcmFuc2ZlcmFibGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUI4RTBFOEZFMTNFQzdFNEQwMEMxMzcyMCAvKiBUcmFuc2ZlcmFibGVSZWNl
aXB0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJh
bnNmb3JtYXRpb25NYXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNFMEVGODZENDcw
MDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkx
MUQwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKQEAgLTI2MDM5LDYgKzI2MDUzLDggQEAKIAkJCQk3NTUzQ0ZFOTEwOEY0NzNGMDBFQTI4MUUg
LyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RUE0
MDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNB
RjBDRDYzMzEwMDBGQURBNzUgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlC
ODYxODcyQzEzRDhFQzQ5MDA4Qjg3NEYgLyogVHJhbnNmZXJhYmxlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUI4RTBFOEZGMTNFQzdFNTUwMEMxMzcyMCAvKiBUcmFuc2ZlcmFibGVSZWNlaXB0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUMzMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTRCQzQwRDEyQUVERDlFMDA3
NDNCRDIgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Mjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAppbmRleCA3NDQ4MTc2Li5lY2Q4NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02OTQsMTYgKzY5NCwxNiBA
QCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coRXhlY1N0YXRlKiBleGVjKQog
ICAgIHJldHVybiBoYW5kbGVyLnJldHVyblZhbHVlKCk7CiB9CiAKLUpTVmFsdWUgSlNET01XaW5k
b3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBKU1ZhbHVlIHBvc3RNZXNz
YWdlKEV4ZWNTdGF0ZSogZXhlYywgSlNET01XaW5kb3cqIHdpbmRvdywgTWVzc2FnZVBhc3NpbmdN
b2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSkKIHsKLSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApKTsKLQorICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZXM7
CisgICAgSlNWYWx1ZUFycmF5IHZhbHVlQXJyYXk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA+IDIpCisgICAgICAgIGZpbGxUcmFuc2ZlcmFibGVBcnJheShleGVjLCBleGVjLT5hcmd1
bWVudCgxKSwgdHJhbnNmZXJhYmxlcywgdmFsdWVBcnJheSwgbWVzc2FnZVBhc3NpbmdNb2RlKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogCi0gICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9ydHM7Ci0gICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA+IDIpCi0gICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDEpLCBtZXNzYWdlUG9ydHMpOworICAgIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVj
LCBleGVjLT5hcmd1bWVudCgwKSwgJnZhbHVlQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSwgVGhy
b3dpbmcpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKQEAgLTcxMiwxMiArNzEyLDIyIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6
OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCktPnBvc3RNZXNzYWdl
KG1lc3NhZ2UsICZtZXNzYWdlUG9ydHMsIHRhcmdldE9yaWdpbiwgYWN0aXZlRE9NV2luZG93KGV4
ZWMpLCBlYyk7CisgICAgd2luZG93LT5pbXBsKCktPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFz
ZSgpLCAmdHJhbnNmZXJhYmxlcywgdGFyZ2V0T3JpZ2luLCBhY3RpdmVET01XaW5kb3coZXhlYyks
IGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiB9CiAKK0pTVmFsdWUgSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2UoZXhlYywgdGhpcywg
T25seU1lc3NhZ2VQb3J0cyk7Cit9CisKK0pTVmFsdWUgSlNET01XaW5kb3c6OndlYmtpdFBvc3RN
ZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3Nh
Z2UoZXhlYywgdGhpcywgUGVybWl0VHJhbnNmZXJhYmxlcyk7Cit9CisKIEpTVmFsdWUgSlNET01X
aW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlKiBleGVjKQogewogICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gaW1wbCgpLT5kb2N1bWVudCgpID8gaW1w
bCgpLT5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSA6IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcAppbmRleCAyMjIyMzUzLi4zYzQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1
c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNDOjpK
U1ZhbHVlIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSk7
CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSwgT25seU1lc3NhZ2VQ
b3J0cyk7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OndlYmtp
dFBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBoYW5kbGVQ
b3N0TWVzc2FnZShleGVjLCBpbXBsKCksIFBlcm1pdFRyYW5zZmVyYWJsZXMpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggNDM5NjY0YS4uZmVjM2QwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApA
QCAtNDQsMzggKzQ0LDUyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU01lc3Nh
Z2VFdmVudDo6cG9ydHMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewotICAgIE1lc3NhZ2VQb3J0
QXJyYXkqIHBvcnRzID0gc3RhdGljX2Nhc3Q8TWVzc2FnZUV2ZW50Kj4oaW1wbCgpKS0+cG9ydHMo
KTsKLSAgICBpZiAoIXBvcnRzIHx8IHBvcnRzLT5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBq
c051bGwoKTsKLQorICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBzdGF0aWNfY2FzdDxNZXNzYWdl
RXZlbnQqPihpbXBsKCkpOworICAgIFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzID0g
ZXZlbnQtPnRyYW5zZmVyYWJsZXMoKTsKKyAgICBpZiAoIXRyYW5zZmVyYWJsZXMgfHwgdHJhbnNm
ZXJhYmxlcy0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCBnbG9iYWxPYmplY3QoKSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvcnRzLT5zaXplKCk7IGkrKykKLSAgICAgICAgbGlz
dC5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgKCpwb3J0cylbaV0uZ2V0KCkpKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZmVyYWJsZXMtPnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSAoKnRyYW5zZmVyYWJsZXMp
W2ldLmdldCgpLT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgICAgICBsaXN0LmFwcGVuZCh0b0pT
KGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBtZXNzYWdlUG9ydCkpOworICAgIH0KICAgICByZXR1cm4g
Y29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGxpc3QpOwogfQogCi1KU0M6OkpT
VmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgSlNDOjpKU1ZhbHVlIGluaXRNZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTTWVzc2FnZUV2ZW50KiBqc0V2ZW50LCBNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2Fn
ZVBhc3NpbmdNb2RlKQogewogICAgIGNvbnN0IFVTdHJpbmcmIHR5cGVBcmcgPSBleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKTsKICAgICBib29sIGNhbkJ1YmJsZUFyZyA9IGV4ZWMtPmFy
Z3VtZW50KDEpLnRvQm9vbGVhbihleGVjKTsKICAgICBib29sIGNhbmNlbGFibGVBcmcgPSBleGVj
LT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGRhdGFBcmcgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVj
LCBleGVjLT5hcmd1bWVudCgzKSk7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFu
c2ZlcmFibGVzOworICAgIE93blB0cjxKU1ZhbHVlQXJyYXk+IHZhbHVlQXJyYXk7CisgICAgaWYg
KCFleGVjLT5hcmd1bWVudCg3KS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHRyYW5z
ZmVyYWJsZXMgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlQXJyYXkpOworICAgICAgICB2YWx1
ZUFycmF5ID0gYWRvcHRQdHIobmV3IEpTVmFsdWVBcnJheSk7CisgICAgICAgIGZpbGxUcmFuc2Zl
cmFibGVBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCg3KSwgKnRyYW5zZmVyYWJsZXMsICp2YWx1
ZUFycmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YUFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDMpLCB2YWx1ZUFycmF5LmdldCgpLCBtZXNz
YWdlUGFzc2luZ01vZGUsIFRocm93aW5nKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGNvbnN0IFVTdHJpbmcmIG9yaWdp
bkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDQpLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFVTdHJp
bmcmIGxhc3RFdmVudElkQXJnID0gZXhlYy0+YXJndW1lbnQoNSkudG9TdHJpbmcoZXhlYyk7CiAg
ICAgRE9NV2luZG93KiBzb3VyY2VBcmcgPSB0b0RPTVdpbmRvdyhleGVjLT5hcmd1bWVudCg2KSk7
Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0czsKLSAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50KDcpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgbWVzc2FnZVBv
cnRzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkpOwotICAgICAgICBmaWxsTWVzc2Fn
ZVBvcnRBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCg3KSwgKm1lc3NhZ2VQb3J0cyk7Ci0gICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotICAgIH0KIAotICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBzdGF0aWNfY2FzdDxN
ZXNzYWdlRXZlbnQqPih0aGlzLT5pbXBsKCkpOwotICAgIGV2ZW50LT5pbml0TWVzc2FnZUV2ZW50
KHVzdHJpbmdUb0F0b21pY1N0cmluZyh0eXBlQXJnKSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxl
QXJnLCBkYXRhQXJnLCB1c3RyaW5nVG9TdHJpbmcob3JpZ2luQXJnKSwgdXN0cmluZ1RvU3RyaW5n
KGxhc3RFdmVudElkQXJnKSwgc291cmNlQXJnLCBtZXNzYWdlUG9ydHMucmVsZWFzZSgpKTsKKyAg
ICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0gc3RhdGljX2Nhc3Q8TWVzc2FnZUV2ZW50Kj4oanNFdmVu
dC0+aW1wbCgpKTsKKyAgICBldmVudC0+aW5pdE1lc3NhZ2VFdmVudCh1c3RyaW5nVG9BdG9taWNT
dHJpbmcodHlwZUFyZyksIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0YUFyZy5yZWxl
YXNlKCksIHVzdHJpbmdUb1N0cmluZyhvcmlnaW5BcmcpLCB1c3RyaW5nVG9TdHJpbmcobGFzdEV2
ZW50SWRBcmcpLCBzb3VyY2VBcmcsIHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpKTsKICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KIAorSlNDOjpKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50Ojppbml0
TWVzc2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBXZWJDb3Jl
Ojppbml0TWVzc2FnZUV2ZW50KGV4ZWMsIHRoaXMsIE9ubHlNZXNzYWdlUG9ydHMpOworfQorCitK
U0M6OkpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OndlYmtpdEluaXRNZXNzYWdlRXZlbnQoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OmluaXRNZXNzYWdlRXZlbnQo
ZXhlYywgdGhpcywgUGVybWl0VHJhbnNmZXJhYmxlcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBv
cnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1
c3RvbS5jcHAKaW5kZXggYWMwNmM2YS4uZTQwNDE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgogCkBAIC01NywxNSArNTgsMjEgQEAgdm9pZCBKU01lc3NhZ2VQ
b3J0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiBKU0M6OkpTVmFsdWUg
SlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
cmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSk7CisgICAgcmV0dXJuIGhhbmRs
ZVBvc3RNZXNzYWdlKGV4ZWMsIGltcGwoKSwgT25seU1lc3NhZ2VQb3J0cyk7CiB9CiAKLXZvaWQg
ZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2
YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYgcG9ydEFycmF5KQorSlNDOjpKU1ZhbHVlIEpTTWVzc2Fn
ZVBvcnQ6OndlYmtpdFBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIC8v
IENvbnZlcnQgZnJvbSB0aGUgcGFzc2VkLWluIEpTIGFycmF5LWxpa2Ugb2JqZWN0IHRvIGEgTWVz
c2FnZVBvcnRBcnJheS4KKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgp
LCBQZXJtaXRUcmFuc2ZlcmFibGVzKTsKK30KKwordm9pZCBmaWxsVHJhbnNmZXJhYmxlQXJyYXko
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgVHJhbnNmZXJhYmxlQXJy
YXkmIHRyYW5zZmVyYWJsZUFycmF5LCBKU1ZhbHVlQXJyYXkmIHZhbHVlQXJyYXksIE1lc3NhZ2VQ
YXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUpCit7CisgICAgLy8gQ29udmVydCBmcm9tIHRo
ZSBwYXNzZWQtaW4gSlMgYXJyYXktbGlrZSBvYmplY3QgdG8gYSBUcmFuc2ZlcmFibGVBcnJheS4K
ICAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBh
bmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRN
TDUgc3BlYy4KICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBw
b3J0QXJyYXkucmVzaXplKDApOworICAgICAgICB0cmFuc2ZlcmFibGVBcnJheS5yZXNpemUoMCk7
CisgICAgICAgIHZhbHVlQXJyYXkucmVzaXplKDApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC04MSwxOCArODgsMzggQEAgdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdlUG9ydEEKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgLy8gVmFsaWRhdGlvbiBvZiBub24tbnVsbCBvYmplY3RzLCBwZXIg
SFRNTDUgc3BlYyA4LjMuMy4KICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKLSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTlZBTElEX1NUQVRFX0VSUik7
CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgREFUQV9DTE9ORV9FUlIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKwogICAgICAgICAvLyBWYWxpZGF0aW9uIG9m
IE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4x
NS4KLSAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gdG9NZXNzYWdlUG9ydCh2YWx1
ZSk7Ci0gICAgICAgIGlmICghcG9ydCkgeworICAgICAgICBSZWZQdHI8VHJhbnNmZXJhYmxlPiB0
cmFuc2ZlcmFibGUgPSB0b05hdGl2ZVRyYW5zZmVyYWJsZSh2YWx1ZSk7CisgICAgICAgIGlmICgh
dHJhbnNmZXJhYmxlIHx8IChtZXNzYWdlUGFzc2luZ01vZGUgPT0gT25seU1lc3NhZ2VQb3J0cyAm
JiAhdHJhbnNmZXJhYmxlLT5hc01lc3NhZ2VQb3J0KCkpKSB7CiAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBw
b3J0QXJyYXkuYXBwZW5kKHBvcnQucmVsZWFzZSgpKTsKKyAgICAgICAgdHJhbnNmZXJhYmxlQXJy
YXkuYXBwZW5kKHRyYW5zZmVyYWJsZS5yZWxlYXNlKCkpOworICAgICAgICB2YWx1ZUFycmF5LmFw
cGVuZCh2YWx1ZSk7CiAgICAgfQogfQogCitQYXNzUmVmUHRyPFRyYW5zZmVyYWJsZT4gdG9OYXRp
dmVUcmFuc2ZlcmFibGUoSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIFJlZlB0cjxUcmFuc2Zl
cmFibGU+IG91dFZhbHVlID0gdG9NZXNzYWdlUG9ydCh2YWx1ZSk7CisgICAgaWYgKG91dFZhbHVl
KQorICAgICAgICByZXR1cm4gb3V0VmFsdWUucmVsZWFzZSgpOworICAgIC8vIFdlJ2xsIHJldHVy
biBudWxsIGlmIHZhbHVlIGlzIG5vdCBUcmFuc2ZlcmFibGUgaW4gYW55IGNhc2UuCisgICAgcmV0
dXJuIG91dFZhbHVlLnJlbGVhc2UoKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlNUcmFuc2ZlcmFi
bGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRyYW5zZmVyYWJsZSogdmFsdWUpCit7CisgICAgaWYgKE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9y
dCA9IHZhbHVlLT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgbWVzc2FnZVBvcnQpOworICAgIC8vIFRoaXMgdHlwZWNhc2Ugc2hvdWxkIGFs
d2F5cyBiZSB0b3RhbC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSlND
Ojpqc1VuZGVmaW5lZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKaW5kZXggODM5NmFl
MS4uYzlhMDEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNz
YWdlUG9ydEN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZVBvcnRDdXN0b20uaApAQCAtMzIsNiArMzIsOCBAQAogI2RlZmluZSBKU01lc3NhZ2VQb3J0Q3Vz
dG9tX2gKIAogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMzksMjYgKzQxLDMx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7
CiAKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcHVsbHMgdGhlIHZhbHVlcyBvdXQgb2Yg
YSBKUyBzZXF1ZW5jZSBhbmQgaW50byBhIE1lc3NhZ2VQb3J0QXJyYXkuCisgICAgLy8gSGVscGVy
IGZ1bmN0aW9uIHdoaWNoIHB1bGxzIHRoZSB2YWx1ZXMgb3V0IG9mIGEgSlMgc2VxdWVuY2UgYW5k
IGludG8gYSBUcmFuc2ZlcmFibGVBcnJheSwgbWlycm9yaW5nIHRoZXNlIGludG8gYSBKU1ZhbHVl
QXJyYXkuCiAgICAgLy8gQWxzbyB2YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0
LjEuMTMgYW5kIDQuMS4xNSBvZiB0aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2Yg
dGhlIEhUTUw1IHNwZWMuCiAgICAgLy8gTWF5IGdlbmVyYXRlIGFuIGV4Y2VwdGlvbiB2aWEgdGhl
IHBhc3NlZCBFeGVjU3RhdGUuCi0gICAgdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYpOworICAgIHZvaWQgZmls
bFRyYW5zZmVyYWJsZUFycmF5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBUcmFuc2Zl
cmFibGVBcnJheSYsIEpTVmFsdWVBcnJheSYsIE1lc3NhZ2VQYXNzaW5nTW9kZSk7CiAKICAgICAv
LyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBmcm9tIEpTIHBvc3RNZXNzYWdlIGFyZ3VtZW50
cyB0byBXZWJDb3JlIHBvc3RNZXNzYWdlIGFyZ3VtZW50cy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLSAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBUKiBpbXBsKQorICAgIGlubGluZSBKU0M6OkpTVmFsdWUgaGFuZGxlUG9z
dE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGwsIE1lc3NhZ2VQYXNzaW5nTW9k
ZSBtZXNzYWdlUGFzc2luZ01vZGUpCiAgICAgewotICAgICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0QXJy
YXk7Ci0gICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEp
LCBwb3J0QXJyYXkpOworICAgICAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVBcnJh
eTsKKyAgICAgICAgSlNWYWx1ZUFycmF5IHZhbHVlUmVmQXJyYXk7CisgICAgICAgIGZpbGxUcmFu
c2ZlcmFibGVBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgdHJhbnNmZXJhYmxlQXJyYXks
IHZhbHVlUmVmQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSk7CisgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7Cisg
ICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgJnZhbHVlUmVmQXJy
YXksIG1lc3NhZ2VQYXNzaW5nTW9kZSwgVGhyb3dpbmcpOwogICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogCiAg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZSht
ZXNzYWdlLCAmcG9ydEFycmF5LCBlYyk7CisgICAgICAgIGltcGwtPnBvc3RNZXNzYWdlKG1lc3Nh
Z2UucmVsZWFzZSgpLCAmdHJhbnNmZXJhYmxlQXJyYXksIGVjKTsKICAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAg
ICB9CiAKKyAgICBQYXNzUmVmUHRyPFRyYW5zZmVyYWJsZT4gdG9OYXRpdmVUcmFuc2ZlcmFibGUo
SlNDOjpKU1ZhbHVlKTsKKyAgICBKU0M6OkpTVmFsdWUgdG9KU1RyYW5zZmVyYWJsZShKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVHJhbnNmZXJhYmxlKik7CiB9CiAjZW5kaWYg
Ly8gSlNNZXNzYWdlUG9ydEN1c3RvbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckN1c3RvbS5jcHAKaW5kZXggMjc1ODBhZS4uMDQyOGMyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcApAQCAtNDEsNyArNDEsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgSlNXb3JrZXI6OnBvc3RNZXNzYWdl
KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShl
eGVjLCBpbXBsKCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShleGVjLCBpbXBsKCks
IE9ubHlNZXNzYWdlUG9ydHMpOworfQorCitKU0M6OkpTVmFsdWUgSlNXb3JrZXI6OndlYmtpdFBv
c3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBoYW5kbGVQb3N0
TWVzc2FnZShleGVjLCBpbXBsKCksIFBlcm1pdFRyYW5zZmVyYWJsZXMpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTV29ya2VyQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTV29y
a2VyKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZh
bHVlLmNwcAppbmRleCA0OTY2YWUwLi5mNTgyMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMDAsMTQgKzEwMCwxNCBAQCBib29sIFNjcmlwdFZh
bHVlOjppc0Z1bmN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZ2V0Q2FsbERhdGEobV92YWx1ZS5n
ZXQoKSwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsKIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK1Bhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIE1lc3NhZ2VQYXNz
aW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dF
eGNlcHRpb25zKQogewotICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShz
Y3JpcHRTdGF0ZSwganNWYWx1ZSgpLCB0aHJvd0V4Y2VwdGlvbnMpOworICAgIHJldHVybiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0ZSwganNWYWx1ZSgpLCB0cmFuc2Zl
ckxpc3QsIG1lc3NhZ2VQYXNzaW5nTW9kZSwgdGhyb3dFeGNlcHRpb25zKTsKIH0KIAotU2NyaXB0
VmFsdWUgU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwg
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJv
d0V4Y2VwdGlvbnMpCitTY3JpcHRWYWx1ZSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBKU1ZhbHVl
QXJyYXkqIHRyYW5zZmVyTGlzdCwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlv
bnMpCiB7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCks
IHZhbHVlLT5kZXNlcmlhbGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgdGhyb3dFeGNlcHRpb25zKSk7CisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNj
cmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIHZhbHVlLT5kZXNlcmlhbGl6ZShzY3JpcHRTdGF0ZSwg
c2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdHJhbnNmZXJMaXN0LCB0aHJvd0V4
Y2VwdGlvbnMpKTsKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuaAppbmRleCBmYWRlODMwLi5hNjA0OTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKQEAgLTYyLDggKzYyLDggQEAgcHVibGlj
OgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdFZhbHVlJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9CiAKLSAgICBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplKFNjcmlwdFN0YXRlKiwgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSA9IFRocm93aW5nKTsKLSAgICBzdGF0aWMgU2NyaXB0VmFsdWUgZGVzZXJpYWxp
emUoU2NyaXB0U3RhdGUqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBTZXJpYWxpemF0aW9uRXJy
b3JNb2RlID0gVGhyb3dpbmcpOworICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzZXJpYWxpemUoU2NyaXB0U3RhdGUqLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgTWVz
c2FnZVBhc3NpbmdNb2RlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworICAg
IHN0YXRpYyBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZShTY3JpcHRTdGF0ZSosIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBTZXJpYWxpemF0aW9uRXJy
b3JNb2RlID0gVGhyb3dpbmcpOwogCiAgICAgc3RhdGljIFNjcmlwdFZhbHVlIHVuZGVmaW5lZCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCA4YmFmOTE5Li41M2I2YjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2luY2x1ZGUgIkJs
b2IuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgogI2lu
Y2x1ZGUgIkZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkBAIC0zNiw2ICszNyw4
IEBACiAjaW5jbHVkZSAiSlNGaWxlLmgiCiAjaW5jbHVkZSAiSlNGaWxlTGlzdC5oIgogI2luY2x1
ZGUgIkpTSW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
IkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJKU05hdmlnYXRvci5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTk2LDggKzk5LDkgQEAg
ZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAqCiAgKiBJbml0aWFsIHZlcnNpb24gd2FzIDEuCiAg
KiBWZXJzaW9uIDIuIGFkZGVkIHRoZSBPYmplY3RSZWZlcmVuY2VUYWcgYW5kIHN1cHBvcnQgZm9y
IHNlcmlhbGl6YXRpb24gb2YgY3ljbGljIGdyYXBocy4KKyAqIFZlcnNpb24gMy4gYWRkZWQgdHJh
bnNmZXIgbGlzdHMuCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgQ3VycmVudFZlcnNp
b24gPSAyOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBDdXJyZW50VmVyc2lvbiA9IDM7CiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW50IFRlcm1pbmF0b3JUYWcgPSAweEZGRkZGRkZGOwogc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGludCBTdHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsKIApAQCAt
MjUwLDkgKzI1NCw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgYm9vbCB3cml0ZUxp
dHRsZUVuZGlhbihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uCiAKIGNsYXNzIENsb25lU2Vy
aWFsaXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlIHNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3Rv
cjx1aW50OF90PiYgb3V0KQorICAgIHN0YXRpYyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBzZXJp
YWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlQXJyYXkqIHRyYW5z
ZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSwgVmVjdG9yPHVp
bnQ4X3Q+JiBvdXQpCiAgICAgewotICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihl
eGVjLCBvdXQpOworICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihleGVjLCB0cmFu
c2Zlckxpc3QsIG1lc3NhZ2VQYXNzaW5nTW9kZSwgb3V0KTsKICAgICAgICAgcmV0dXJuIHNlcmlh
bGl6ZXIuc2VyaWFsaXplKHZhbHVlKTsKICAgICB9CiAKQEAgLTI2OSwxMCArMjczLDEzIEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2xvbmVTZXJpYWxpemVyKEV4ZWNTdGF0ZSog
ZXhlYywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQpCisgICAgQ2xvbmVTZXJpYWxpemVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSBt
ZXNzYWdlUGFzc2luZ01vZGUsIFZlY3Rvcjx1aW50OF90PiYgb3V0KQogICAgICAgICA6IENsb25l
QmFzZShleGVjKQogICAgICAgICAsIG1fYnVmZmVyKG91dCkKICAgICAgICAgLCBtX2VtcHR5SWRl
bnRpZmllcihleGVjLCBVU3RyaW5nKCIiLCAwKSkKKyAgICAgICAgLCBtX3RyYW5zZmVyTGlzdCh0
cmFuc2Zlckxpc3QpCisgICAgICAgICwgbV9tZXNzYWdlUGFzc2luZ01vZGUobWVzc2FnZVBhc3Np
bmdNb2RlKQorICAgICAgICAsIG1fbWluaW11bVZhbGlkUmVmZXJlbmNlKDApCiAgICAgewogICAg
ICAgICB3cml0ZShDdXJyZW50VmVyc2lvbik7CiAgICAgfQpAQCAtMjg3LDEzICsyOTQsMzMgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCks
IG9iamVjdCkgfHwgb2JqZWN0LT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKTsKICAgICB9CiAK
KyAgICBib29sIGluaXRpYWxpemVXaXRoVHJhbnNmZXJMaXN0KCkKKyAgICB7CisgICAgICAgIGlm
ICghbV90cmFuc2Zlckxpc3QpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3RyYW5zZmVyTGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSAoKm1fdHJhbnNmZXJMaXN0KVtpXTsKKyAgICAgICAgICAg
IEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICAgICAgICAgIGlmICgh
b2JqZWN0KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHBhaXI8
T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX29iamVjdFBvb2wuYWRkKG9iamVj
dCwgbV9vYmplY3RQb29sLnNpemUoKSk7CisgICAgICAgICAgICAvLyBBbGwgb2JqZWN0cyBpbiB0
aGUgdHJhbnNmZXIgbGlzdCBtdXN0IGJlIHVuaXF1ZS4KKyAgICAgICAgICAgIGlmICghaXRlci5z
ZWNvbmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgbV9nY0J1
ZmZlci5hcHBlbmQodmFsdWUpOworICAgICAgICB9CisgICAgICAgIGlmIChtX21lc3NhZ2VQYXNz
aW5nTW9kZSA9PSBPbmx5TWVzc2FnZVBvcnRzKQorICAgICAgICAgICAgbV9taW5pbXVtVmFsaWRS
ZWZlcmVuY2UgPSBtX29iamVjdFBvb2wuc2l6ZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKICAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9iamVjdCkKICAg
ICB7CiAgICAgICAgIC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBoIHJlY29uc3RydWN0aW9uCiAg
ICAgICAgIHBhaXI8T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX29iamVjdFBv
b2wuYWRkKG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7CiAgICAgICAgIAogICAgICAgICAv
LyBIYW5kbGUgZHVwbGljYXRlIHJlZmVyZW5jZXMKLSAgICAgICAgaWYgKCFpdGVyLnNlY29uZCkg
eworICAgICAgICBpZiAoIWl0ZXIuc2Vjb25kICYmIGl0ZXIuZmlyc3QtPnNlY29uZCA+PSBtX21p
bmltdW1WYWxpZFJlZmVyZW5jZSkgewogICAgICAgICAgICAgd3JpdGUoT2JqZWN0UmVmZXJlbmNl
VGFnKTsKICAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90PihpdGVyLmZpcnN0
LT5zZWNvbmQpIDwgbV9vYmplY3RQb29sLnNpemUoKSk7CiAgICAgICAgICAgICB3cml0ZU9iamVj
dEluZGV4KGl0ZXIuZmlyc3QtPnNlY29uZCk7CkBAIC00NzMsNiArNTAwLDEzIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgd3JpdGUoVVN0cmluZyhmbGFncywgZmxhZ0NvdW50KSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
b2JqLT5pbmhlcml0cygmSlNNZXNzYWdlUG9ydDo6c19pbmZvKSAmJiAobV9tZXNzYWdlUGFzc2lu
Z01vZGUgPT0gT25seU1lc3NhZ2VQb3J0cyB8fCAhbV9vYmplY3RQb29sLmNvbnRhaW5zKG9iaikp
KSB7CisgICAgICAgICAgICAgICAgLy8gTm9uLVRyYW5zZmVycmVkIE1lc3NhZ2VQb3J0cyBtYXkg
bm90IGFwcGVhciBpbiBtZXNzYWdlIGJvZGllcyAob3IsIGluIGxlZ2FjeSBtb2RlLCBubyBNZXNz
YWdlUG9ydHMgY2FuIGFwcGVhciBpbgorICAgICAgICAgICAgICAgIC8vIG1lc3NhZ2UgYm9kaWVz
IGF0IGFsbCkuCisgICAgICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKG1fZXhlYywgREFUQV9D
TE9ORV9FUlIpOworICAgICAgICAgICAgICAgIHdyaXRlKE51bGxUYWcpOworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBDYWxsRGF0YSB1
bnVzZWREYXRhOwogICAgICAgICAgICAgaWYgKGdldENhbGxEYXRhKHZhbHVlLCB1bnVzZWREYXRh
KSA9PSBDYWxsVHlwZU5vbmUpCkBAIC02MDYsNiArNjQwLDkgQEAgcHJpdmF0ZToKICAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCB1aW50MzJfdCwgSWRlbnRpZmllclJlcEhh
c2g+IFN0cmluZ0NvbnN0YW50UG9vbDsKICAgICBTdHJpbmdDb25zdGFudFBvb2wgbV9jb25zdGFu
dFBvb2w7CiAgICAgSWRlbnRpZmllciBtX2VtcHR5SWRlbnRpZmllcjsKKyAgICBKU1ZhbHVlQXJy
YXkqIG1fdHJhbnNmZXJMaXN0OworICAgIE1lc3NhZ2VQYXNzaW5nTW9kZSBtX21lc3NhZ2VQYXNz
aW5nTW9kZTsKKyAgICBzaXplX3QgbV9taW5pbXVtVmFsaWRSZWZlcmVuY2U7CiB9OwogCiBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGlu
KQpAQCAtNjE4LDYgKzY1NSwxMCBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgIFZlY3RvcjxXYWxrZXJTdGF0ZSwgMTY+
IHN0YXRlU3RhY2s7CiAgICAgV2Fsa2VyU3RhdGUgc3RhdGUgPSBTdGF0ZVVua25vd247CiAgICAg
SlNWYWx1ZSBpblZhbHVlID0gaW47CisgICAgaWYgKCFpbml0aWFsaXplV2l0aFRyYW5zZmVyTGlz
dCgpKSB7CisgICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIFZhbGlkYXRp
b25FcnJvcjsKKyAgICB9CiAgICAgdW5zaWduZWQgdGlja0NvdW50ID0gdGlja3NVbnRpbE5leHRD
aGVjaygpOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKQEAgLTc4
MywxMSArODI0LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cmluZyhzdHIuaW1wbCgp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgRGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFsaXpl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBidWZmZXIpCisgICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBk
ZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZl
cikKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyLnNpemUoKSkKICAgICAgICAgICAgIHJldHVy
biBtYWtlX3BhaXIoanNOdWxsKCksIFVuc3BlY2lmaWVkRXJyb3IpOwotICAgICAgICBDbG9uZURl
c2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBidWZmZXIpOworICAg
ICAgICBDbG9uZURlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCB0
cmFuc2Zlckxpc3QsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVyLmlzVmFsaWQo
KSkKICAgICAgICAgICAgIHJldHVybiBtYWtlX3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9uRXJy
b3IpOwogICAgICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCk7CkBAIC04MzIs
MTMgKzg3MywxNCBAQCBwcml2YXRlOgogICAgICAgICBzaXplX3QgbV9pbmRleDsKICAgICB9Owog
Ci0gICAgQ2xvbmVEZXNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKKyAgICBDbG9uZURl
c2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZl
cikKICAgICAgICAgOiBDbG9uZUJhc2UoZXhlYykKICAgICAgICAgLCBtX2dsb2JhbE9iamVjdChn
bG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9pc0RPTUdsb2JhbE9iamVjdChnbG9iYWxPYmplY3Qt
PmluaGVyaXRzKCZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvKSkKICAgICAgICAgLCBtX3B0cihi
dWZmZXIuZGF0YSgpKQogICAgICAgICAsIG1fZW5kKGJ1ZmZlci5kYXRhKCkgKyBidWZmZXIuc2l6
ZSgpKQogICAgICAgICAsIG1fdmVyc2lvbigweEZGRkZGRkZGKQorICAgICAgICAsIG1fdHJhbnNm
ZXJMaXN0KHRyYW5zZmVyTGlzdCkKICAgICB7CiAgICAgICAgIGlmICghcmVhZChtX3ZlcnNpb24p
KQogICAgICAgICAgICAgbV92ZXJzaW9uID0gMHhGRkZGRkZGRjsKQEAgLTExODksNiArMTIzMSw3
IEBAIHByaXZhdGU6CiAgICAgY29uc3QgdWludDhfdCogbV9lbmQ7CiAgICAgdW5zaWduZWQgbV92
ZXJzaW9uOwogICAgIFZlY3RvcjxDYWNoZWRTdHJpbmc+IG1fY29uc3RhbnRQb29sOworICAgIEpT
VmFsdWVBcnJheSogbV90cmFuc2Zlckxpc3Q7CiB9OwogCiBEZXNlcmlhbGl6YXRpb25SZXN1bHQg
Q2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkKQEAgLTEyMDEsNiArMTI0NCwxMSBAQCBE
ZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkKICAg
ICBXYWxrZXJTdGF0ZSBzdGF0ZSA9IFN0YXRlVW5rbm93bjsKICAgICBKU1ZhbHVlIG91dFZhbHVl
OwogCisgICAgaWYgKG1fdHJhbnNmZXJMaXN0KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV90cmFuc2Zlckxpc3QtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9nY0J1ZmZl
ci5hcHBlbmQoKCptX3RyYW5zZmVyTGlzdClbaV0pOworICAgIH0KKwogICAgIHVuc2lnbmVkIHRp
Y2tDb3VudCA9IHRpY2tzVW50aWxOZXh0Q2hlY2soKTsKICAgICB3aGlsZSAoMSkgewogICAgICAg
ICBzd2l0Y2ggKHN0YXRlKSB7CkBAIC0xMzM4LDEwICsxMzg2LDE1IEBAIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQog
ICAgIG1fZGF0YS5zd2FwKGJ1ZmZlcik7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQorUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRl
KGV4ZWMsIHZhbHVlLCAwLCBPbmx5TWVzc2FnZVBvcnRzLCBUaHJvd2luZyk7Cit9CisKK1Bhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJM
aXN0LCBNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlLCBTZXJpYWxpemF0aW9u
RXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwotICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZShleGVjLCB2YWx1ZSwgYnVmZmVyKTsKKyAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoZXhlYywgdmFsdWUsIHRyYW5zZmVy
TGlzdCwgbWVzc2FnZVBhc3NpbmdNb2RlLCBidWZmZXIpOwogICAgIGlmICh0aHJvd0V4Y2VwdGlv
bnMgPT0gVGhyb3dpbmcpCiAgICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRp
b25GYWlsZWQoZXhlYywgY29kZSk7CiAKQEAgLTEzNjcsMTAgKzE0MjAsMTUgQEAgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgc3QKIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5Db250ZXh0LCBKU1Zh
bHVlUmVmIGFwaVZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CisgICAgcmV0dXJuIGNy
ZWF0ZShvcmlnaW5Db250ZXh0LCBhcGlWYWx1ZSwgZXhjZXB0aW9uLCAwLCBPbmx5TWVzc2FnZVBv
cnRzKTsKK30KKworUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5Db250ZXh0LCBKU1ZhbHVlUmVm
IGFwaVZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIEpTVmFsdWVBcnJheSogdHJhbnNmZXJM
aXN0LCBNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlKQorewogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMob3JpZ2luQ29udGV4dCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5
U2hpbShleGVjKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gdG9KUyhleGVjLCBhcGlWYWx1ZSk7Ci0g
ICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIHZhbHVlKTsKKyAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShleGVjLCB2YWx1ZSwgdHJhbnNmZXJMaXN0LCBtZXNzYWdlUGFzc2luZ01vZGUs
IFRocm93aW5nKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgaWYg
KGV4Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBleGVjLT5l
eGNlcHRpb24oKSk7CkBAIC0xMzc4LDcgKzE0MzYsNyBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9y
aQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgQVNTRVJUKHNlcmlhbGl6ZWRWYWx1ZSk7
Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZWRWYWx1ZTsKKyAgICByZXR1cm4gc2VyaWFsaXplZFZhbHVl
LnJlbGVhc2UoKTsKIH0KIAogU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dG9TdHJpbmco
KQpAQCAtMTM4NiwxOSArMTQ0NCwxOSBAQCBTdHJpbmcgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0
b1N0cmluZygpCiAgICAgcmV0dXJuIENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZVN0cmlu
ZyhtX2RhdGEpOwogfQogCi1KU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTZXJpYWxp
emF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK0pTVmFsdWUgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0LCBTZXJpYWxpemF0aW9uRXJyb3JN
b2RlIHRocm93RXhjZXB0aW9ucykKIHsKLSAgICBEZXNlcmlhbGl6YXRpb25SZXN1bHQgcmVzdWx0
ID0gQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKGV4ZWMsIGdsb2JhbE9iamVjdCwgbV9k
YXRhKTsKKyAgICBEZXNlcmlhbGl6YXRpb25SZXN1bHQgcmVzdWx0ID0gQ2xvbmVEZXNlcmlhbGl6
ZXI6OmRlc2VyaWFsaXplKGV4ZWMsIGdsb2JhbE9iamVjdCwgdHJhbnNmZXJMaXN0LCBtX2RhdGEp
OwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gVGhyb3dpbmcpCiAgICAgICAgIG1heWJlVGhy
b3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoZXhlYywgcmVzdWx0LnNlY29uZCk7CiAg
ICAgcmV0dXJuIHJlc3VsdC5maXJzdDsKIH0KIAotSlNWYWx1ZVJlZiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiBkZXN0aW5hdGlvbkNvbnRleHQsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK0pTVmFsdWVSZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNl
cmlhbGl6ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25Db250ZXh0LCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24sIEpTVmFsdWVBcnJheSogdHJhbnNmZXJMaXN0KQogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoZGVzdGluYXRpb25Db250ZXh0KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGlt
KGV4ZWMpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZShleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZShleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHRyYW5zZmVyTGlzdCk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAg
ICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgZXhlYy0+ZXhjZXB0aW9uKCkpOwpAQCAtMTQwOSw2
ICsxNDY3LDI0IEBAIEpTVmFsdWVSZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6
ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25Db250ZXh0LCBKCiAgICAgcmV0dXJuIHRvUmVmKGV4
ZWMsIHZhbHVlKTsKIH0KIAorSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVHJhbnNm
ZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4
Y2VwdGlvbnMpCit7CisgICAgSlNWYWx1ZUFycmF5IHRyYW5zZmVyVmFsdWVMaXN0OworICAgIGlm
ICh0cmFuc2Zlckxpc3QgJiYgIW9wZW5UcmFuc2ZlcmFibGVBcnJheShleGVjLCBnbG9iYWxPYmpl
Y3QsICp0cmFuc2Zlckxpc3QsIHRyYW5zZmVyVmFsdWVMaXN0KSkgeworICAgICAgICBpZiAodGhy
b3dFeGNlcHRpb25zID09IFRocm93aW5nKQorICAgICAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlv
bklmU2VyaWFsaXphdGlvbkZhaWxlZChleGVjLCBWYWxpZGF0aW9uRXJyb3IpOworICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIGRlc2VyaWFsaXplKGV4ZWMs
IGdsb2JhbE9iamVjdCwgJnRyYW5zZmVyVmFsdWVMaXN0LCB0aHJvd0V4Y2VwdGlvbnMpOworfQor
Citib29sIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6b3BlblRyYW5zZmVyYWJsZUFycmF5KEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVHJhbnNmZXJhYmxlQXJy
YXkmIHRyYW5zZmVyTGlzdCwgSlNWYWx1ZUFycmF5JiB2YWx1ZUFycmF5KQoreworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmZXJMaXN0LnNpemUoKTsgKytpKQorICAgICAgICB2YWx1
ZUFycmF5LmFwcGVuZCh0b0pTVHJhbnNmZXJhYmxlKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgdHJhbnNmZXJMaXN0W2ldLmdldCgpKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpudWxsVmFsdWUoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGVtcHR5VmFsdWUsIChTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDNmZTRlMDIuLjEyN2QzMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zOCw2ICsz
OCwxMCBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU1ZhbHVlKiBKU1ZhbHVlUmVmOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFRyYW5zZmVyYWJsZTsKKwordHlwZWRlZiBW
ZWN0b3I8SlNDOjpKU1ZhbHVlLCAxPiBKU1ZhbHVlQXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8VHJhbnNmZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7CiAgCiBlbnVtIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlIHsKICAgICBTdWNjZXNzZnVsbHlDb21wbGV0ZWQsCkBAIC01MCwxMiAr
NTQsMTggQEAgZW51bSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB7CiAgICAgCiBlbnVtIFNlcmlh
bGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKIAorZW51bSBNZXNz
YWdlUGFzc2luZ01vZGUgeyBPbmx5TWVzc2FnZVBvcnRzLCBQZXJtaXRUcmFuc2ZlcmFibGVzIH07
CisKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDog
cHVibGljIFJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlND
b250ZXh0UmVmLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworICAg
IC8vIElmIE1lc3NhZ2VQYXNzaW5nTW9kZSBpcyBPbmx5TWVzc2FnZVBvcnRzLCB0aGVuIGl0ZW1z
IGluIHRyYW5zZmVyTGlzdCB3aWxsIG5vdCBiZSByZWZlcnJlZCB0byBieSBvYmplY3QgcmVmZXJl
bmNlIElEIGluIHRoZSBzZXJpYWxpemVkIHZhbHVlLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlLCBTZXJpYWxp
emF0aW9uRXJyb3JNb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbiwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxpc3QsIE1lc3NhZ2VQYXNzaW5nTW9kZSk7Cisg
ICAgLy8gVGhlc2UgZGVmYXVsdCB0byB0cmFuc2Zlckxpc3QgPSAwLCBNZXNzYWdlUGFzc2luZ01v
ZGUgPSBPbmx5TWVzc2FnZVBvcnRzLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcu
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgIHsK
QEAgLTY3LDggKzc3LDExIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b1N0cmluZygpOwogICAg
IAotICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwotICAgIEpT
VmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
OworICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlQXJyYXkqIHRyYW5zZmVyTGlzdCA9IDAsIFNlcmlhbGl6YXRp
b25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShKU0Nv
bnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgSlNWYWx1ZUFycmF5KiB0cmFuc2Zlckxp
c3QgPSAwKTsKKyAgICAKKyAgICAvLyBQcmVmZXIgdGhlIGFib3ZlIDo6ZGVzZXJpYWxpemUgKGFz
IHRoaXMgY29uc3RydWN0cyBhIEpTVmFsdWVBcnJheSBhbmQgY2FsbHMgdGhlIG90aGVyIGZ1bmN0
aW9uKS4KKyAgICBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgVHJhbnNmZXJhYmxlQXJyYXkqID0gMCwgU2VyaWFsaXphdGlvbkVy
cm9yTW9kZSA9IFRocm93aW5nKTsKIAogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSgp
IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC03Nyw2ICs5MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxl
ZChKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKICAgICBzdGF0aWMg
Ym9vbCBzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoU2VyaWFsaXphdGlvblJl
dHVybkNvZGUpOworICAgIHN0YXRpYyBib29sIG9wZW5UcmFuc2ZlcmFibGVBcnJheShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBUcmFuc2ZlcmFibGVBcnJheSYsIEpTVmFs
dWVBcnJheSYpOwogICAgIAogICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWdu
ZWQgY2hhcj4mKTsKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA3
NGYwZDA4Li44MTJlOTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjc0MSw3ICsyNzQxLDcgQEAgc3ViIE5hdGl2ZVRv
SlNWYWx1ZQogICAgICAgICAkaW1wbEluY2x1ZGVzeyIkam9pbmVkTmFtZS5oIn0gPSAxOwogICAg
IH0gZWxzaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiIG9yICR0eXBlIGVxICJh
bnkiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIn0g
PSAxOwotICAgICAgICByZXR1cm4gIiR2YWx1ZSA/ICR2YWx1ZS0+ZGVzZXJpYWxpemUoZXhlYywg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpIDoganNOdWxsKCkiOworICAgICAgICByZXR1cm4g
IiR2YWx1ZSA/ICR2YWx1ZS0+ZGVzZXJpYWxpemUoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIGltcC0+ZGF0YURlcGVuZGVuY2llcygpKSA6IGpzTnVsbCgpIjsKICAgICB9IGVsc2Ug
ewogICAgICAgICAjIERlZmF1bHQsIGluY2x1ZGUgaGVhZGVyIHdpdGggc2FtZSBuYW1lLgogICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJKUyR0eXBlLmgifSA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IGQ2YzBmZTAuLmM1
Njg0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCkBAIC0yNTg5LDcgKzI1ODksNyBAQCBFTkQKICAgICAgICAgJGF0dHJBdHRy
ID0gInN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJGF0dHJBdHRyKSI7CiAgICAg
ICAgIG15ICRnZXR0ZXJGdW5jID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJOYW1l
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkod3JhcHBlciwgIiR7YXR0ck5hbWV9
IiwgJHthdHRyQXR0cn0sIGltcGwtPiR7Z2V0dGVyRnVuY30oKSk7CisgICAgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHdyYXBwZXIsICIke2F0dHJOYW1l
fSIsICR7YXR0ckF0dHJ9LCBpbXBsLT4ke2dldHRlckZ1bmN9KCksIGltcGwtPiR7Z2V0dGVyRnVu
Y31EZXBlbmRlbmNpZXMoKSk7CiBFTkQKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJkOWQwY2QuLmE3
MzIyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcApAQCAtNDcsNiArNDcsOCBAQAogI2luY2x1ZGUgIkludDMyQXJyYXku
aCIKICNpbmNsdWRlICJJbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNp
bmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNlaXB0Lmgi
CiAjaW5jbHVkZSAiVWludDE2QXJyYXkuaCIKICNpbmNsdWRlICJVaW50MzJBcnJheS5oIgogI2lu
Y2x1ZGUgIlVpbnQ4QXJyYXkuaCIKQEAgLTYzLDYgKzY1LDcgQEAKICNpbmNsdWRlICJWOEludDE2
QXJyYXkuaCIKICNpbmNsdWRlICJWOEludDMyQXJyYXkuaCIKICNpbmNsdWRlICJWOEludDhBcnJh
eS5oIgorI2luY2x1ZGUgIlY4TWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJWOFByb3h5
LmgiCiAjaW5jbHVkZSAiVjhVaW50MTZBcnJheS5oIgogI2luY2x1ZGUgIlY4VWludDMyQXJyYXku
aCIKQEAgLTU3NSwxMyArNTc4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgSlNGYWlsdXJlCiAgICAg
fTsKIAotICAgIFNlcmlhbGl6ZXIoV3JpdGVyJiB3cml0ZXIsIHY4OjpUcnlDYXRjaCYgdHJ5Q2F0
Y2gpCisgICAgU2VyaWFsaXplcihXcml0ZXImIHdyaXRlciwgdjg6OlRyeUNhdGNoJiB0cnlDYXRj
aCwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01vZGUgbWVz
c2FnZVBhc3NpbmdNb2RlKQogICAgICAgICA6IG1fd3JpdGVyKHdyaXRlcikKICAgICAgICAgLCBt
X3RyeUNhdGNoKHRyeUNhdGNoKQogICAgICAgICAsIG1fZGVwdGgoMCkKICAgICAgICAgLCBtX2V4
ZWNEZXB0aCgwKQogICAgICAgICAsIG1fc3RhdHVzKFN1Y2Nlc3MpCiAgICAgICAgICwgbV9uZXh0
T2JqZWN0UmVmZXJlbmNlKDApCisgICAgICAgICwgbV90cmFuc2Zlckxpc3QodHJhbnNmZXJMaXN0
KQorICAgICAgICAsIG1fbWVzc2FnZVBhc3NpbmdNb2RlKG1lc3NhZ2VQYXNzaW5nTW9kZSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghdHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpOwogICAgIH0KQEAgLTU4
OSw2ICs1OTQsOCBAQCBwdWJsaWM6CiAgICAgU3RhdHVzIHNlcmlhbGl6ZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUpCiAgICAgewogICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Cisg
ICAgICAgIGlmICghaW5pdGlhbGl6ZU9iamVjdFBvb2woKSkKKyAgICAgICAgICAgIHJldHVybiBt
X3N0YXR1czsKICAgICAgICAgbV93cml0ZXIud3JpdGVWZXJzaW9uKCk7CiAgICAgICAgIFN0YXRl
QmFzZSogc3RhdGUgPSBkb1NlcmlhbGl6ZSh2YWx1ZSwgMCk7CiAgICAgICAgIHdoaWxlIChzdGF0
ZSkKQEAgLTYyOCw2ICs2MzUsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgorICAgIGJv
b2wgaW5pdGlhbGl6ZU9iamVjdFBvb2woKTsKKwogICAgIGNsYXNzIFN0YXRlQmFzZSB7CiAgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0YXRlQmFzZSk7CiAgICAgcHVibGljOgpAQCAtMTAx
MSw4ICsxMDIwLDQ0IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWOE9iamVjdE1hcDx2ODo6T2Jq
ZWN0LCB1aW50MzJfdD4gT2JqZWN0UG9vbDsKICAgICBPYmplY3RQb29sIG1fb2JqZWN0UG9vbDsK
ICAgICB1aW50MzJfdCBtX25leHRPYmplY3RSZWZlcmVuY2U7CisgICAgVmFsdWVIYW5kbGVBcnJh
eSogbV90cmFuc2Zlckxpc3Q7CisgICAgTWVzc2FnZVBhc3NpbmdNb2RlIG1fbWVzc2FnZVBhc3Np
bmdNb2RlOwogfTsKIAorYm9vbCBTZXJpYWxpemVyOjppbml0aWFsaXplT2JqZWN0UG9vbCgpCit7
CisgICAgaWYgKCFtX3RyYW5zZmVyTGlzdCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KG1fbWVzc2FnZVBhc3NpbmdNb2RlID09IE9ubHlNZXNzYWdlUG9ydHMpIHsKKyAgICAgICAgLy8g
T2Zmc2V0IG1fbmV4dE9iamVjdFJlZmVyZW5jZSBiZWNhdXNlIHdoZW4gdGhlIG9iamVjdCBpcyBk
ZXNlcmlhbGl6ZWQgdGhlIG9iamVjdCByZWZlcmVuY2UKKyAgICAgICAgLy8gbGlzdCB3aWxsIGJl
IHByZWxvYWRlZCB3aXRoIHRoZSB0cmFuc2ZlciBsaXN0ICh3aGV0aGVyIE9ubHlNZXNzYWdlUG9y
dHMgd2FzIGFzc2VydGVkIG9yCisgICAgICAgIC8vIG5vdCBkdXJpbmcgc2VyaWFsaXphdGlvbiku
CisgICAgICAgIG1fbmV4dE9iamVjdFJlZmVyZW5jZSA9IG1fdHJhbnNmZXJMaXN0LT5zaXplKCk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV90cmFuc2Zlckxpc3QtPnNpemUoKTsgKytpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1RyYW5zZmVyID0gKCptX3RyYW5zZmVyTGlzdClbaV07CisgICAgICAgIGlmICh0
b1RyYW5zZmVyLT5Jc09iamVjdCgpIHx8IHRvVHJhbnNmZXItPklzRGF0ZSgpIHx8IHRvVHJhbnNm
ZXItPklzUmVnRXhwKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdG9UcmFuc2Zlci0+SXNTdHJp
bmcoKSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4T2JqZWN0KHRvVHJh
bnNmZXIuQXM8djg6Ok9iamVjdD4oKSk7CisgICAgICAgICAgICB1aW50MzJfdCBvYmplY3RSZWZl
cmVuY2U7CisgICAgICAgICAgICBpZiAobV9vYmplY3RQb29sLnRyeUdldCh2OE9iamVjdCwgJm9i
amVjdFJlZmVyZW5jZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBBbiBvYmplY3Qgd2FzIGluY2x1
ZGVkIGluIHRoZSB0cmFuc2ZlciBsaXN0IG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAgICAgICAg
IG1fc3RhdHVzID0gRGF0YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQXNzaWduIHRvVHJhbnNmZXIgdGhlIG5l
eHQgcmVmZXJlbmNlIElELiBJZiB3ZSBzZWUgaXQgaW4gdGhlIG9iamVjdCBncmFwaCwgd2Ugd2ls
bAorICAgICAgICAgICAgLy8gcGFzcyBpdCBieSByZWZlcmVuY2UuCisgICAgICAgICAgICBncmV5
T2JqZWN0KHY4T2JqZWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEEgbm9u
LW9iamVjdCB3YXMgaW5jbHVkZWQgaW4gdGhlIHRyYW5zZmVyIGxpc3QuCisgICAgICAgICAgICBt
X3N0YXR1cyA9IERhdGFDbG9uZUVycm9yOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBTZXJpYWxpemVyOjpTdGF0ZUJh
c2UqIFNlcmlhbGl6ZXI6OmRvU2VyaWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
U3RhdGVCYXNlKiBuZXh0KQogewogICAgIGlmIChtX2V4ZWNEZXB0aCArIChuZXh0ID8gbmV4dC0+
ZXhlY0RlcHRoKCkgOiAwKSA+IDEpIHsKQEAgLTE2NTEsMTQgKzE2OTYsMTcgQEAgcHJpdmF0ZToK
IAogY2xhc3MgRGVzZXJpYWxpemVyIDogcHVibGljIENvbXBvc2l0ZUNyZWF0b3IgewogcHVibGlj
OgotICAgIGV4cGxpY2l0IERlc2VyaWFsaXplcihSZWFkZXImIHJlYWRlcikKKyAgICBleHBsaWNp
dCBEZXNlcmlhbGl6ZXIoUmVhZGVyJiByZWFkZXIsIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVy
TGlzdCkKICAgICAgICAgOiBtX3JlYWRlcihyZWFkZXIpCiAgICAgICAgICwgbV92ZXJzaW9uKDAp
CisgICAgICAgICwgbV90cmFuc2Zlckxpc3QodHJhbnNmZXJMaXN0KQogICAgIHsKICAgICB9CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemUoKQogICAgIHsKKyAgICAgICAg
aWYgKCFpbml0aWFsaXplT2JqZWN0UG9vbCgpKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpOdWxs
KCk7CiAgICAgICAgIGlmICghbV9yZWFkZXIucmVhZFZlcnNpb24obV92ZXJzaW9uKSB8fCBtX3Zl
cnNpb24gPiB3aXJlRm9ybWF0VmVyc2lvbikKICAgICAgICAgICAgIHJldHVybiB2ODo6TnVsbCgp
OwogICAgICAgICBtX3JlYWRlci5zZXRWZXJzaW9uKG1fdmVyc2lvbik7CkBAIC0xNzcyLDYgKzE4
MjAsMTMgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBib29sIGluaXRpYWxpemVP
YmplY3RQb29sKCkKKyAgICB7CisgICAgICAgIGlmIChtX3RyYW5zZmVyTGlzdCkKKyAgICAgICAg
ICAgIG1fb2JqZWN0UG9vbC5hcHBlbmQoKm1fdHJhbnNmZXJMaXN0KTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCiAgICAgYm9vbCBpbml0aWFsaXplT2JqZWN0KHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gb2JqZWN0LCB1aW50MzJfdCBudW1Qcm9wZXJ0aWVzLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4qIHZhbHVlKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gMiAqIG51bVBy
b3BlcnRpZXM7CkBAIC0xODM3LDM0ICsxODkyLDY2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHY4
OjpIYW5kbGU8djg6OlZhbHVlPiA+IG1fb2JqZWN0UG9vbDsKICAgICBWZWN0b3I8dWludDMyX3Q+
IG1fb3BlbkNvbXBvc2l0ZVJlZmVyZW5jZVN0YWNrOwogICAgIHVpbnQzMl90IG1fdmVyc2lvbjsK
KyAgICBWYWx1ZUhhbmRsZUFycmF5KiBtX3RyYW5zZmVyTGlzdDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlCiAKIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3Bl
cnR5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgYXR0cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZSwgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKiB2YWx1ZSwgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KQogewogICAgIGlmICgh
dmFsdWUpCiAgICAgICAgIHJldHVybjsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJp
YWxpemVkID0gdmFsdWUtPmRlc2VyaWFsaXplKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGRlc2VyaWFsaXplZCA9IHZhbHVlLT5kZXNlcmlhbGl6ZSh0cmFuc2Zlckxpc3QpOwogICAgIG9i
amVjdC0+Rm9yY2VTZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKHByb3BlcnR5TmFtZSksIGRlc2Vy
aWFsaXplZCwgYXR0cmlidXRlKTsKIH0KIAogdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIGNv
bnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGUsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZSBhdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgVmFs
dWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KQoreworICAgIGRlc2VyaWFsaXplQW5kU2V0UHJv
cGVydHkob2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZSwgdmFsdWUuZ2V0KCksIHRyYW5z
ZmVyTGlzdCk7Cit9CisKK3ZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFu
ZFNldFByb3BlcnR5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgYXR0cmlidXRlLCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHZhbHVlLCBUcmFuc2ZlcmFibGVBcnJheSogdHJhbnNmZXJMaXN0KQoreworICAg
IFZhbHVlSGFuZGxlQXJyYXkqIHZhbHVlSGFuZGxlQXJyYXkgPSAwOworICAgIFZhbHVlSGFuZGxl
QXJyYXkgbG9jYWxBcnJheTsKKyAgICBpZiAodHJhbnNmZXJMaXN0KSB7CisgICAgICAgIGxvY2Fs
QXJyYXkucmVzZXJ2ZUNhcGFjaXR5KHRyYW5zZmVyTGlzdC0+c2l6ZSgpKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zlckxpc3QtPnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgbG9jYWxBcnJheS5hcHBlbmQodG9WOFRyYW5zZmVyYWJsZSgoKnRyYW5zZmVyTGlzdClbaV0u
Z2V0KCkpKTsKKyAgICAgICAgdmFsdWVIYW5kbGVBcnJheSA9ICZsb2NhbEFycmF5OworICAgIH0K
KyAgICBkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGUsIHZhbHVlLCB2YWx1ZUhhbmRsZUFycmF5KTsKK30KKwordm9pZCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBh
dHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgVHJhbnNm
ZXJhYmxlQXJyYXkqIHRyYW5zZmVyTGlzdCkKK3sKKyAgICBkZXNlcmlhbGl6ZUFuZFNldFByb3Bl
cnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLmdldCgpLCB0cmFuc2Zl
ckxpc3QpOworfQorCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBk
aWRUaHJvdywgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01v
ZGUgbWVzc2FnZVBhc3NpbmdNb2RlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdywgdHJhbnNmZXJMaXN0LCBtZXNzYWdlUGFz
c2luZ01vZGUpKTsKK30KKworUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgVmFs
dWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBh
c3NpbmdNb2RlKQogewotICAgIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkob2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZSwgdmFsdWUuZ2V0KCkpOworICAgIGJvb2wgZGlkVGhyb3c7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWUsIGRpZFRo
cm93LCB0cmFuc2Zlckxpc3QsIG1lc3NhZ2VQYXNzaW5nTW9kZSkpOwogfQogCiBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBkaWRUaHJvdykKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhyb3cpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgZGlkVGhy
b3csIDAsIE9ubHlNZXNzYWdlUG9ydHMpKTsKIH0KIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSkKIHsKICAgICBib29sIGRpZFRocm93OwotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdykpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBkaWRUaHJvdywgMCwgT25s
eU1lc3NhZ2VQb3J0cykpOwogfQogCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShjb25zdCBTdHJpbmcmIGRhdGEp
CkBAIC0xOTIwLDE0ICsyMDA3LDE0IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKCkKIHsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBkaWRUaHJvdykK
K1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkqIHRyYW5z
ZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSkKIHsKICAgICBk
aWRUaHJvdyA9IGZhbHNlOwogICAgIFdyaXRlciB3cml0ZXI7CiAgICAgU2VyaWFsaXplcjo6U3Rh
dHVzIHN0YXR1czsKICAgICB7CiAgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKLSAgICAg
ICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdyaXRlciwgdHJ5Q2F0Y2gpOworICAgICAgICBTZXJp
YWxpemVyIHNlcmlhbGl6ZXIod3JpdGVyLCB0cnlDYXRjaCwgdHJhbnNmZXJMaXN0LCBtZXNzYWdl
UGFzc2luZ01vZGUpOwogICAgICAgICBzdGF0dXMgPSBzZXJpYWxpemVyLnNlcmlhbGl6ZSh2YWx1
ZSk7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gU2VyaWFsaXplcjo6SlNFeGNlcHRpb24pIHsKICAg
ICAgICAgICAgIC8vIElmIHRoZXJlIHdhcyBhIEpTIGV4Y2VwdGlvbiB0aHJvd24sIHJlLXRocm93
IGl0LgpAQCAtMTk2NSwxMyArMjA1MiwzMiBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZShjb25zdCBTdHJpbmcmIHdpcmVEYXRhKQogICAgIG1fZGF0YSA9IHdp
cmVEYXRhLmNyb3NzVGhyZWFkU3RyaW5nKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKCkKK2Jvb2wgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjppc0ZsYXR0ZW5hYmxlKFRyYW5zZmVyYWJsZVJlY2VpcHQqIHJlY2VpcHQpCit7Cisg
ICAgcmV0dXJuICFyZWNlaXB0LT5hc01lc3NhZ2VQb3J0UmVjZWlwdCgpOworfQorCitTdHJpbmcg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpmbGF0dGVuUmVjZWlwdExpc3QoY29uc3QgU3RyaW5nJiBk
YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYgcmVjZWlwdHMpCit7CisgICAgLy8gRklYTUU6
IE9uY2UgYSBmbGF0dGVuYWJsZSByZWNlaXB0IGFwcGVhcnMsIHRoaXMgZnVuY3Rpb24gd2lsbCBo
YXZlIG1vcmUgd29yayB0byBkby4KKyAgICAvLyBVbmZsYXR0ZW5hYmxlIHJlY2VpcHRzIG1heSBi
ZSBwYXNzZWQgaW4gYXMgbnVsbC4KKyNpZm5kZWYgTkRFQlVHCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZWNlaXB0cy5zaXplKCk7ICsraSkKKyAgICAgICAgQVNTRVJUKCFyZWNlaXB0c1tp
XSB8fCAhaXNGbGF0dGVuYWJsZShyZWNlaXB0c1tpXS5nZXQoKSkpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0ocmVjZWlwdHMpOworI2VuZGlmCisgICAgcmV0dXJuIGRhdGEuY3Jvc3NUaHJlYWRT
dHJpbmcoKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemUoVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0KQogewogICAgIGlm
ICghbV9kYXRhLmltcGwoKSkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKEJ1ZmZlclZhbHVlVHlwZSkgPT0gMiwgQnVmZmVyVmFsdWVUeXBlSXNU
d29CeXRlcyk7CiAgICAgUmVhZGVyIHJlYWRlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtX2RhdGEuaW1wbCgpLT5jaGFyYWN0ZXJzKCkpLCAyICogbV9kYXRhLmxlbmd0aCgpKTsK
LSAgICBEZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVyKHJlYWRlcik7CisgICAgRGVzZXJpYWxpemVy
IGRlc2VyaWFsaXplcihyZWFkZXIsIHRyYW5zZmVyTGlzdCk7CiAgICAgcmV0dXJuIGRlc2VyaWFs
aXplci5kZXNlcmlhbGl6ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDRkMjQ5MmQuLjRjZGU0NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CkBAIC0zMiwyNSArMzIsNTEgQEAKICNkZWZpbmUgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKIAog
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBUcmFuc2ZlcmFi
bGU7CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRy
YW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5OwordHlwZWRlZiBWZWN0b3I8T3duUHRy
PFRyYW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7Cit0eXBl
ZGVmIFZlY3Rvcjx2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIDE+IFZhbHVlSGFuZGxlQXJyYXk7CisK
K2VudW0gTWVzc2FnZVBhc3NpbmdNb2RlIHsgT25seU1lc3NhZ2VQb3J0cywgUGVybWl0VHJhbnNm
ZXJhYmxlcyB9OworCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlByb3Bl
cnR5QXR0cmlidXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBUcmFuc2ZlcmFibGVBcnJheSop
OworICAgIHN0YXRpYyB2b2lkIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlLCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFRyYW5zZmVyYWJsZUFycmF5Kik7CiAgICAgc3RhdGlj
IHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBj
b25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
ODo6UHJvcGVydHlBdHRyaWJ1dGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIFZhbHVlSGFuZGxl
QXJyYXkqIHRyYW5zZmVyTGlzdCk7CisgICAgc3RhdGljIHZvaWQgZGVzZXJpYWxpemVBbmRTZXRQ
cm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlB
dHRyaWJ1dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgVmFsdWVIYW5kbGVB
cnJheSogdHJhbnNmZXJMaXN0KTsKKworICAgIC8vIHRyYW5zZmVyTGlzdCBpcyBhbiBhcnJheSBv
ZiBvYmplY3RzIHRoYXQgYXJlIG5vdCBmbGF0dGVuZWQgdG8gdGhlIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSBidXQKKyAgICAvLyBhcmUgaW5zdGVhZCBjb3BpZWQgYnkgcmVmZXJlbmNlLiBUaGVzZSBv
YmplY3RzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZWlyIGluZGljZXMgaW4gdHJhbnNmZXJMaXN0Lgor
ICAgIC8vIEZvciBleGFtcGxlOgorICAgIC8vICAgICBzZXJpYWxpemUoe2E6T2JqZWN0MSwgYjpP
YmplY3QyfSwgW09iamVjdDAsIE9iamVjdDFdKSA9PiBTCisgICAgLy8gICAgIGRlc2VyaWFsaXpl
KFMsIFtPdGhlck9iamVjdDAsIE90aGVyT2JqZWN0MV0pID0+IHthOk90aGVyT2JqZWN0MSwgYjpP
YmplY3QyJ30KKyAgICAvLyB3aGVyZSBPYmplY3QyJyB3YXMgY3JlYXRlZCBieSBmaXJzdCBmbGF0
dGVuaW5nIE9iamVjdDIuCiAKICAgICAvLyBJZiBhIHNlcmlhbGl6YXRpb24gZXJyb3Igb2NjdXJz
IChlLmcuLCBjeWNsaWMgaW5wdXQgdmFsdWUpIHRoaXMKICAgICAvLyBmdW5jdGlvbiByZXR1cm5z
IGFuIGVtcHR5IHJlcHJlc2VudGF0aW9uLCBzY2hlZHVsZXMgYSBWOCBleGNlcHRpb24gdG8KICAg
ICAvLyBiZSB0aHJvd24gdXNpbmcgdjg6OlRocm93RXhjZXB0aW9uKCksIGFuZCBzZXRzIHxkaWRU
aHJvd3wuIEluIHRoaXMgY2FzZQogICAgIC8vIHRoZSBjYWxsZXIgbXVzdCBub3QgaW52b2tlIGFu
eSBWOCBvcGVyYXRpb25zIHVudGlsIGNvbnRyb2wgcmV0dXJucyB0bwogICAgIC8vIFY4LiBXaGVu
IHNlcmlhbGl6YXRpb24gaXMgc3VjY2Vzc2Z1bCwgfGRpZFRocm93fCBpcyBmYWxzZS4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIGRpZFRocm93KTsKKyAgICAvLyBJZiBNZXNzYWdlUGFz
c2luZ01vZGUgaXMgT25seU1lc3NhZ2VQb3J0cywgdGhlbiBpdGVtcyBpbiB0cmFuc2Zlckxpc3Qg
d2lsbCBub3QgYmUgcmVmZXJyZWQgdG8gYnkgb2JqZWN0IHJlZmVyZW5jZSBzaG91bGQgdGhleSBh
cHBlYXIKKyAgICAvLyBpbiB0aGUgc2VyaWFsaXplZCB2YWx1ZS4gdHJhbnNmZXJMaXN0IG1heSBi
ZSAwIChhbmQgaWYgc28gaXMgZXF1aXZhbGVudCB0byBhIHplcm8tbGVuZ3RoIHRyYW5zZmVyIGxp
c3QpLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgYm9vbCYgZGlkVGhyb3csIFZhbHVlSGFuZGxlQXJyYXkq
IHRyYW5zZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIFZh
bHVlSGFuZGxlQXJyYXkqIHRyYW5zZmVyTGlzdCwgTWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAgICAv
LyBUaGVzZSBkZWZhdWx0IHRvIHRyYW5zZmVyTGlzdCA9IDAgYW5kIE1lc3NhZ2VQYXNzaW5nTW9k
ZSA9IE9ubHlNZXNzYWdlUG9ydHMuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBib29sJiBkaWRUaHJvdyk7
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUodjg6
OkhhbmRsZTx2ODo6VmFsdWU+KTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gY3JlYXRlRnJvbVdpcmUoY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IGRhdGEpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3Jl
YXRlKCk7CkBAIC02Miw5ICs4OCwxMiBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdG9XaXJlU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKKyAgICBzdGF0aWMgU3RyaW5nIGZsYXR0
ZW5SZWNlaXB0TGlzdChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheSYpOworICAgIHN0YXRpYyBib29sIGlzRmxhdHRlbmFibGUoVHJhbnNmZXJhYmxlUmVj
ZWlwdCopOworCiAgICAgLy8gRGVzZXJpYWxpemVzIHRoZSB2YWx1ZSAoaW4gdGhlIGN1cnJlbnQg
Y29udGV4dCkuIFJldHVybnMgYSBudWxsIHZhbHVlIGluCiAgICAgLy8gY2FzZSBvZiBmYWlsdXJl
LgotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNlcmlhbGl6ZSgpOworICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBkZXNlcmlhbGl6ZShWYWx1ZUhhbmRsZUFycmF5KiB0cmFuc2Zlckxpc3Qg
PSAwKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFN0cmluZ0RhdGFNb2RlIHsKQEAgLTczLDcgKzEw
Miw4IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwot
ICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIGJvb2wmIGRp
ZFRocm93KTsKKyAgICAvLyBBcyBpbiB0aGUgYWJvdmUsIHRyYW5zZmVyTGlzdCBtYXkgYmUgMC4K
KyAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBib29sJiBk
aWRUaHJvdywgVmFsdWVIYW5kbGVBcnJheSogdHJhbnNmZXJMaXN0LCBNZXNzYWdlUGFzc2luZ01v
ZGUpOwogICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShjb25zdCBTdHJpbmcmIHdp
cmVEYXRhKTsKIAogICAgIFN0cmluZyBtX2RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyMzQyZmU2
Li45YTVmMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMxMyw0MyArMzEzLDU2IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVuCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNz
YWdlQ2FsbGJhY2soTWVzc2FnZVBhc3NpbmdNb2RlIG1lc3NhZ2VQYXNzaW5nTW9kZSwgY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cucG9z
dE1lc3NhZ2UoKSIpOwogICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhET01XaW5kb3c6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgRE9NV2luZG93KiBzb3VyY2UgPSBWOFByb3h5Ojpy
ZXRyaWV2ZUZyYW1lRm9yQ2FsbGluZ0NvbnRleHQoKS0+ZG9tV2luZG93KCk7CiAgICAgQVNTRVJU
KHNvdXJjZS0+ZnJhbWUoKSk7CiAKLSAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93KTsKLSAgICBpZiAoZGlkVGhyb3cpCi0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJh
eTsKKyAgICBUcmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVBcnJheTsKKyAgICBWYWx1ZUhh
bmRsZUFycmF5IHZhbHVlSGFuZGxlQXJyYXk7CiAgICAgU3RyaW5nIHRhcmdldE9yaWdpbjsKIAog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFzIHZhcmlhYmxlIGFyZ3VtZW50cyBhbmQgY2FuIGVpdGhl
ciBiZToKICAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHBvcnQsIHRhcmdldE9yaWdpbik7
CiAgICAgLy8gb3IKICAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRhcmdldE9yaWdpbik7
Ci0gICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMikg
ewotICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFycmF5KSkK
KyAgICB7CisgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICAgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPiAyKSB7CisgICAgICAgICAgICBpZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFy
Z3NbMV0sIHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1ZUhhbmRsZUFycmF5LCBtZXNzYWdlUGFzc2lu
Z01vZGUpKQorICAgICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAg
ICAgICB0YXJnZXRPcmlnaW4gPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hl
Y2soYXJnc1syXSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGFyZ2V0T3JpZ2luID0g
dG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5lZENoZWNrKGFyZ3NbMV0pOworCisgICAg
ICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7Ci0gICAgICAgIHRhcmdldE9yaWdpbiA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxs
T3JVbmRlZmluZWRDaGVjayhhcmdzWzJdKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0YXJnZXRP
cmlnaW4gPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1sxXSk7
CiAgICAgfQogCi0gICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQorICAgIGJvb2wgZGlkVGhy
b3cgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZGlkVGhyb3csICZ2YWx1ZUhh
bmRsZUFycmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpOworICAgIGlmIChkaWRUaHJvdykKICAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIHRh
cmdldE9yaWdpbiwgc291cmNlLCBlYyk7CisgICAgd2luZG93LT5wb3N0TWVzc2FnZShtZXNzYWdl
LnJlbGVhc2UoKSwgJnRyYW5zZmVyYWJsZUFycmF5LCB0YXJnZXRPcmlnaW4sIHNvdXJjZSwgZWMp
OwogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LnBvc3RNZXNzYWdlKCkiKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayhPbmx5TWVzc2FnZVBvcnRzLCBh
cmdzKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp3ZWJraXRQb3N0
TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NU
QVRTKCJET00uRE9NV2luZG93LndlYmtpdFBvc3RNZXNzYWdlKCkiKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayhQZXJtaXRUcmFuc2ZlcmFibGVzLCBhcmdzKTsKK30K
KwogLy8gRklYTUUoZnFpYW4pOiByZXR1cm5pbmcgc3RyaW5nIGlzIGNoZWF0aW5nLCBhbmQgd2Ug
c2hvdWxkCiAvLyBmaXggdGhpcyBieSBjYWxsaW5nIHRvU3RyaW5nIGZ1bmN0aW9uIG9uIHRoZSBy
ZWNlaXZlci4KIC8vIEhvd2V2ZXIsIFY4IGltcGxlbWVudHMgdG9TdHJpbmcgaW4gSmF2YVNjcmlw
dCwgd2hpY2ggcmVxdWlyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAK
aW5kZXggOGZjZjlhOC4uNDljZThjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1
c3RvbS5jcHAKQEAgLTQyLDI0ICs0MiwzNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdl
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gcG9zdE1lc3NhZ2VDYWxsYmFjayhNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBh
c3NpbmdNb2RlLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUyhM
IkRPTS5EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LnBvc3RNZXNzYWdlIik7CiAgICAgRGVkaWNhdGVk
V29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwotICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdyk7Ci0gICAgaWYgKGRpZFRocm93KQotICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFy
cmF5OworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZUFycmF5OworICAgIFZhbHVl
SGFuZGxlQXJyYXkgdmFsdWVIYW5kbGVBcnJheTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEp
IHsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdlUG9ydEFycmF5KGFyZ3NbMV0sIHBvcnRBcnJheSkp
CisgICAgICAgIGlmICghZ2V0VHJhbnNmZXJhYmxlQXJyYXkoYXJnc1sxXSwgdHJhbnNmZXJhYmxl
QXJyYXksIHZhbHVlSGFuZGxlQXJyYXksIG1lc3NhZ2VQYXNzaW5nTW9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0KKyAgICBib29sIGRpZFRocm93ID0gZmFs
c2U7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRpZFRocm93LCAmdmFsdWVIYW5kbGVBcnJh
eSwgbWVzc2FnZVBhc3NpbmdNb2RlKTsKKyAgICBpZiAoZGlkVGhyb3cpCisgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd29ya2Vy
Q29udGV4dC0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIGVjKTsK
KyAgICB3b3JrZXJDb250ZXh0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnRyYW5z
ZmVyYWJsZUFycmF5LCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQogCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKEwiRE9N
LkRlZGljYXRlZFdvcmtlckNvbnRleHQucG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayhPbmx5TWVzc2FnZVBvcnRzLCBhcmdzKTsKK30KKwordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6d2Via2l0UG9zdE1l
c3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFU
UyhMIkRPTS5EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LndlYmtpdFBvc3RNZXNzYWdlIik7CisgICAg
cmV0dXJuIFdlYkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2soUGVybWl0VHJhbnNmZXJhYmxlcywg
YXJncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShX
T1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggNDc1ZGUyYS4uZjFhMjdiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdl
RXZlbnRDdXN0b20uY3BwCkBAIC00NywyNSArNDcsMzIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PgogICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC5wb3J0cyIpOwogICAgIE1lc3NhZ2VF
dmVudCogZXZlbnQgPSBWOE1lc3NhZ2VFdmVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAK
LSAgICBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cyA9IGV2ZW50LT5wb3J0cygpOwotICAgIGlmICgh
cG9ydHMgfHwgcG9ydHMtPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7Cisg
ICAgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyYWJsZXMgPSBldmVudC0+dHJhbnNmZXJhYmxl
cygpOworICAgIGlmICghdHJhbnNmZXJhYmxlcyB8fCB0cmFuc2ZlcmFibGVzLT5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB2ODo6QXJyYXk6Ok5ldygwKTsKIAotICAgIHY4OjpMb2NhbDx2ODo6
QXJyYXk+IHBvcnRBcnJheSA9IHY4OjpBcnJheTo6TmV3KHBvcnRzLT5zaXplKCkpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9ydHMtPnNpemUoKTsgKytpKQotICAgICAgICBwb3J0QXJy
YXktPlNldCh2ODo6SW50ZWdlcjo6TmV3KGkpLCB0b1Y4KCgqcG9ydHMpW2ldLmdldCgpKSk7Cisg
ICAgaW50IHBvcnRDb3VudCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zl
cmFibGVzLT5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoKCp0cmFuc2ZlcmFibGVzKVtpXS5n
ZXQoKS0+YXNNZXNzYWdlUG9ydCgpKQorICAgICAgICAgICAgKytwb3J0Q291bnQ7CisgICAgfQor
ICAgIAorICAgIGludCBjdXJyZW50UG9ydCA9IDA7CisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4g
cG9ydEFycmF5ID0gdjg6OkFycmF5OjpOZXcocG9ydENvdW50KTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHRyYW5zZmVyYWJsZXMtPnNpemUoKSAmJiBjdXJyZW50UG9ydCA8IHBvcnRDb3Vu
dDsgKytpKSB7CisgICAgICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSAoKnRyYW5z
ZmVyYWJsZXMpW2ldLmdldCgpLT5hc01lc3NhZ2VQb3J0KCkpCisgICAgICAgICAgICBwb3J0QXJy
YXktPlNldCh2ODo6SW50ZWdlcjo6TmV3KGN1cnJlbnRQb3J0KyspLCB0b1Y4KG1lc3NhZ2VQb3J0
KSk7CisgICAgfQogCiAgICAgcmV0dXJuIHBvcnRBcnJheTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW5pdE1lc3Nh
Z2VFdmVudENhbGxiYWNrKE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdlUGFzc2luZ01vZGUsIGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZUV2
ZW50LmluaXRNZXNzYWdlRXZlbnQiKTsKICAgICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0gVjhNZXNz
YWdlRXZlbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFN0cmluZyB0eXBlQXJnID0g
djhWYWx1ZVRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKICAgICBib29sIGNhbkJ1YmJsZUFyZyA9
IGFyZ3NbMV0tPkJvb2xlYW5WYWx1ZSgpOwogICAgIGJvb2wgY2FuY2VsYWJsZUFyZyA9IGFyZ3Nb
Ml0tPkJvb2xlYW5WYWx1ZSgpOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRh
dGFBcmcgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzNdKTsKICAgICBTdHJp
bmcgb3JpZ2luQXJnID0gdjhWYWx1ZVRvV2ViQ29yZVN0cmluZyhhcmdzWzRdKTsKICAgICBTdHJp
bmcgbGFzdEV2ZW50SWRBcmcgPSB2OFZhbHVlVG9XZWJDb3JlU3RyaW5nKGFyZ3NbNV0pOwogCkBA
IC03NiwxNyArODMsMzcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojpp
bml0TWVzc2FnZUV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICAgICAgaWYgKCF3
aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICAgICAgc291cmNlQXJnID0gVjhET01XaW5kb3c6OnRv
TmF0aXZlKHdpbmRvdyk7CiAgICAgfQotICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0
QXJyYXk7CisgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVBcnJheTsK
KyAgICBPd25QdHI8VmFsdWVIYW5kbGVBcnJheT4gdmFsdWVIYW5kbGVBcnJheTsKIAogICAgIGlm
ICghaXNVbmRlZmluZWRPck51bGwoYXJnc1s3XSkpIHsKLSAgICAgICAgcG9ydEFycmF5ID0gYWRv
cHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkpOwotICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0
QXJyYXkoYXJnc1s3XSwgKnBvcnRBcnJheSkpCisgICAgICAgIHRyYW5zZmVyYWJsZUFycmF5ID0g
YWRvcHRQdHIobmV3IFRyYW5zZmVyYWJsZUFycmF5KTsKKyAgICAgICAgdmFsdWVIYW5kbGVBcnJh
eSA9IGFkb3B0UHRyKG5ldyBWYWx1ZUhhbmRsZUFycmF5KTsKKyAgICAgICAgaWYgKCFnZXRUcmFu
c2ZlcmFibGVBcnJheShhcmdzWzddLCAqdHJhbnNmZXJhYmxlQXJyYXksICp2YWx1ZUhhbmRsZUFy
cmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKICAgICB9Ci0gICAgZXZlbnQtPmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2FuQnVi
YmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLnJlbGVhc2UoKSwgb3JpZ2luQXJnLCBsYXN0
RXZlbnRJZEFyZywgc291cmNlQXJnLCBwb3J0QXJyYXkucmVsZWFzZSgpKTsKKworICAgIGJvb2wg
ZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
QXJnID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1szXSwgZGlkVGhyb3csIHZh
bHVlSGFuZGxlQXJyYXkuZ2V0KCksIG1lc3NhZ2VQYXNzaW5nTW9kZSk7CisgICAgaWYgKGRpZFRo
cm93KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgZXZlbnQtPmluaXRN
ZXNzYWdlRXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJn
LnJlbGVhc2UoKSwgb3JpZ2luQXJnLCBsYXN0RXZlbnRJZEFyZywgc291cmNlQXJnLCB0cmFuc2Zl
cmFibGVBcnJheS5yZWxlYXNlKCkpOwogICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBkYXRhQXR0
ciA9IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUgfCB2
ODo6UmVhZE9ubHkpOwotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRT
ZXRQcm9wZXJ0eShhcmdzLkhvbGRlcigpLCAiZGF0YSIsIGRhdGFBdHRyLCBldmVudC0+ZGF0YSgp
KTsKKyAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHko
YXJncy5Ib2xkZXIoKSwgImRhdGEiLCBkYXRhQXR0ciwgZXZlbnQtPmRhdGEoKSwgdmFsdWVIYW5k
bGVBcnJheS5nZXQoKSk7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgfQorfQorCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLk1l
c3NhZ2VFdmVudC5pbml0TWVzc2FnZUV2ZW50Iik7CisgICAgcmV0dXJuIFdlYkNvcmU6OmluaXRN
ZXNzYWdlRXZlbnRDYWxsYmFjayhPbmx5TWVzc2FnZVBvcnRzLCBhcmdzKTsKK30KKwordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojp3ZWJraXRJbml0TWVzc2FnZUV2ZW50Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5N
ZXNzYWdlRXZlbnQud2Via2l0SW5pdE1lc3NhZ2VFdmVudCIpOworICAgIHJldHVybiBXZWJDb3Jl
Ojppbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2soUGVybWl0VHJhbnNmZXJhYmxlcywgYXJncyk7Cit9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAppbmRleCAzZWQ1YjEy
Li5hYzAyMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC00Miw2NyArNDIsOTkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9ydDo6
cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBwb3N0TWVzc2FnZUNhbGxiYWNrKE1lc3NhZ2VQYXNzaW5nTW9k
ZSBtZXNzYWdlUGFzc2luZ01vZGUsIGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UiKTsKICAgICBNZXNzYWdlUG9y
dCogbWVzc2FnZVBvcnQgPSBWOE1lc3NhZ2VQb3J0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
LSAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRp
ZFRocm93KTsKLSAgICBpZiAoZGlkVGhyb3cpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0QXJyYXk7CisgICAgVHJhbnNmZXJhYmxlQXJy
YXkgdHJhbnNmZXJhYmxlQXJyYXk7CisgICAgVmFsdWVIYW5kbGVBcnJheSB2YWx1ZUhhbmRsZUFy
cmF5OwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSkgewotICAgICAgICBpZiAoIWdldE1lc3Nh
Z2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFycmF5KSkKKyAgICAgICAgaWYgKCFnZXRUcmFuc2Zl
cmFibGVBcnJheShhcmdzWzFdLCB0cmFuc2ZlcmFibGVBcnJheSwgdmFsdWVIYW5kbGVBcnJheSwg
bWVzc2FnZVBhc3NpbmdNb2RlKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CiAgICAgfQorICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJn
c1swXSwgZGlkVGhyb3csICZ2YWx1ZUhhbmRsZUFycmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpOwor
ICAgIGlmIChkaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBtZXNzYWdlUG9ydC0+cG9zdE1lc3NhZ2UobWVzc2Fn
ZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIGVjKTsKKyAgICBtZXNzYWdlUG9ydC0+cG9zdE1lc3Nh
Z2UobWVzc2FnZS5yZWxlYXNlKCksICZ0cmFuc2ZlcmFibGVBcnJheSwgZWMpOwogICAgIHJldHVy
biB0aHJvd0Vycm9yKGVjKTsKIH0KIAotYm9vbCBnZXRNZXNzYWdlUG9ydEFycmF5KHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0QXJyYXkpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VQb3J0LnBv
c3RNZXNzYWdlIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBvc3RNZXNzYWdlQ2FsbGJhY2soT25s
eU1lc3NhZ2VQb3J0cywgYXJncyk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3Nh
Z2VQb3J0Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZVBvcnQud2Via2l0UG9zdE1lc3NhZ2Ui
KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFjayhQZXJtaXRUcmFuc2Zl
cmFibGVzLCBhcmdzKTsKK30KKworYm9vbCBnZXRUcmFuc2ZlcmFibGVBcnJheSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIFRyYW5zZmVyYWJsZUFycmF5JiB0cmFuc2ZlcmFibGVBcnJheSwg
VmFsdWVIYW5kbGVBcnJheSYgaGFuZGxlQXJyYXksIE1lc3NhZ2VQYXNzaW5nTW9kZSBtZXNzYWdl
UGFzc2luZ01vZGUpCiB7CiAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKHZhbHVlKSkgewotICAg
ICAgICBwb3J0QXJyYXkucmVzaXplKDApOworICAgICAgICB0cmFuc2ZlcmFibGVBcnJheS5yZXNp
emUoMCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmICghdmFsdWUtPklz
T2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcigiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVu
dCBtdXN0IGJlIGFuIG9iamVjdCIpOworICAgICAgICB0aHJvd0Vycm9yKG1lc3NhZ2VQYXNzaW5n
TW9kZSA9PSBPbmx5TWVzc2FnZVBvcnRzID8gIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVz
dCBiZSBhbiBvYmplY3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAiVHJhbnNmZXJhYmxlQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBh
biBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB1aW50MzJfdCBs
ZW5ndGggPSAwOwotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBwb3J0cyA9IHY4OjpMb2NhbDx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwb3J0
cyA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwogCiAgICAgaWYgKHZhbHVl
LT5Jc0FycmF5KCkpIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6
TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OkFy
cmF5PiBhcnJheSA9IHY4OjpIYW5kbGU8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7CiAgICAgICAg
IGxlbmd0aCA9IGFycmF5LT5MZW5ndGgoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBTZXF1
ZW5jZS10eXBlIG9iamVjdCAtIGdldCB0aGUgbGVuZ3RoIGF0dHJpYnV0ZQogICAgICAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiBzZXF1ZW5jZUxlbmd0aCA9IHBvcnRzLT5HZXQodjg6OlN0cmluZzo6
TmV3KCJsZW5ndGgiKSk7CiAgICAgICAgIGlmICghc2VxdWVuY2VMZW5ndGgtPklzTnVtYmVyKCkp
IHsKLSAgICAgICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgaGFz
IG5vIGxlbmd0aCBhdHRyaWJ1dGUiKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IobWVzc2FnZVBh
c3NpbmdNb2RlID09IE9ubHlNZXNzYWdlUG9ydHMgPyAiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVu
dCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiVHJhbnNmZXJhYmxlQXJyYXkgYXJn
dW1lbnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICBsZW5ndGggPSBzZXF1ZW5jZUxlbmd0aC0+VWludDMyVmFs
dWUoKTsKICAgICB9CiAKLSAgICAvLyBWYWxpZGF0ZSB0aGUgcGFzc2VkIGFycmF5IG9mIHBvcnRz
LgorICAgIC8vIFZhbGlkYXRlIHRoZSBwYXNzZWQgYXJyYXkgb2YgdHJhbnNmZXJhYmxlcy4KICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHBvcnQgPSBwb3J0cy0+R2V0KGkpOworICAgICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiB0cmFuc2ZlcmFibGUgPSBwb3J0cy0+R2V0KGkpOwogICAgICAgICAvLyBW
YWxpZGF0aW9uIG9mIG5vbi1udWxsIG9iamVjdHMsIHBlciBIVE1MNSBzcGVjIDguMy4zLgotICAg
ICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwocG9ydCkpIHsKLSAgICAgICAgICAgIHRocm93RXJy
b3IoSU5WQUxJRF9TVEFURV9FUlIpOworICAgICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwodHJh
bnNmZXJhYmxlKSkgeworICAgICAgICAgICAgdGhyb3dFcnJvcihEQVRBX0NMT05FX0VSUik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgLy8gVmFsaWRhdGlv
biBvZiBPYmplY3RzIGltcGxlbWVudGluZyBhbiBpbnRlcmZhY2UsIHBlciBXZWJJREwgc3BlYyA0
LjEuMTUuCi0gICAgICAgIGlmICghVjhNZXNzYWdlUG9ydDo6SGFzSW5zdGFuY2UocG9ydCkpIHsK
LSAgICAgICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBj
b250YWluIG9ubHkgTWVzc2FnZVBvcnRzIik7CisgICAgICAgIFJlZlB0cjxUcmFuc2ZlcmFibGU+
IG5hdGl2ZVRyYW5zZmVyYWJsZSA9IHRvTmF0aXZlVHJhbnNmZXJhYmxlKHRyYW5zZmVyYWJsZSk7
CisgICAgICAgIGlmICghbmF0aXZlVHJhbnNmZXJhYmxlIHx8IChtZXNzYWdlUGFzc2luZ01vZGUg
PT0gT25seU1lc3NhZ2VQb3J0cyAmJiAhbmF0aXZlVHJhbnNmZXJhYmxlLT5hc01lc3NhZ2VQb3J0
KCkpKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yKG1lc3NhZ2VQYXNzaW5nTW9kZSA9PSBPbmx5
TWVzc2FnZVBvcnRzID8gIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWluIG9u
bHkgTWVzc2FnZVBvcnRzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICJUcmFuc2ZlcmFibGVBcnJheSBhcmd1bWVudCBtdXN0
IGNvbnRhaW4gb25seSBUcmFuc2ZlcmFibGVzIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KLSAgICAgICAgcG9ydEFycmF5LmFwcGVuZChWOE1lc3NhZ2VQb3J0Ojp0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHBvcnQpKSk7CisgICAgICAgIHRyYW5z
ZmVyYWJsZUFycmF5LmFwcGVuZChuYXRpdmVUcmFuc2ZlcmFibGUpOworICAgICAgICBoYW5kbGVB
cnJheS5hcHBlbmQodHJhbnNmZXJhYmxlKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K1Bhc3NSZWZQdHI8VHJhbnNmZXJhYmxlPiB0b05hdGl2ZVRyYW5zZmVyYWJsZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUpCit7CisgICAgaWYgKFY4TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNl
KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKKyAgICByZXR1cm4gMDsKK30KKwordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjhUcmFuc2ZlcmFibGUoVHJhbnNmZXJhYmxlKiB2YWx1ZSkKK3sK
KyAgICBpZiAoTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gdmFsdWUtPmFzTWVzc2FnZVBvcnQo
KSkKKyAgICAgICAgcmV0dXJuIHRvVjgobWVzc2FnZVBvcnQpOworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KDApOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaAppbmRleCA3YWI1MDJiLi45MzM2YTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3Rv
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0
Q3VzdG9tLmgKQEAgLTM1LDEzICszNSwxNyBAQAogI2luY2x1ZGUgPHY4Lmg+CiAKICNpbmNsdWRl
ICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcHVsbHMg
dGhlIHZhbHVlcyBvdXQgb2YgYSBKUyBzZXF1ZW5jZSBhbmQgaW50byBhIE1lc3NhZ2VQb3J0QXJy
YXkuCi0gICAgLy8gQWxzbyB2YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0LjEu
MTMgYW5kIDQuMS4xNSBvZiB0aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2YgdGhl
IEhUTUw1IHNwZWMgYW5kIGdlbmVyYXRlcyBleGNlcHRpb25zIGFzIGFwcHJvcHJpYXRlLgotICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYXJyYXkgd2FzIGZpbGxlZCwgb3IgZmFsc2UgaWYgdGhl
IHBhc3NlZCB2YWx1ZSB3YXMgbm90IG9mIGFuIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgYm9vbCBn
ZXRNZXNzYWdlUG9ydEFycmF5KHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBNZXNzYWdlUG9ydEFycmF5
Jik7CisvLyBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcHVsbHMgdGhlIHZhbHVlcyBvdXQgb2YgYSBK
UyBzZXF1ZW5jZSBhbmQgaW50byBhIFRyYW5zZmVyYWJsZUFycmF5LgorLy8gQWxzbyB2YWxpZGF0
ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0LjEuMTMgYW5kIDQuMS4xNSBvZiB0aGUgV2Vi
SURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMgYW5kIGdlbmVyYXRl
cyBleGNlcHRpb25zIGFzIGFwcHJvcHJpYXRlLgorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBhcnJh
eSB3YXMgZmlsbGVkLCBvciBmYWxzZSBpZiB0aGUgcGFzc2VkIHZhbHVlIHdhcyBub3Qgb2YgYW4g
YXBwcm9wcmlhdGUgdHlwZS4KK2Jvb2wgZ2V0VHJhbnNmZXJhYmxlQXJyYXkodjg6OkhhbmRsZTx2
ODo6VmFsdWU+LCBUcmFuc2ZlcmFibGVBcnJheSYsIFZhbHVlSGFuZGxlQXJyYXkmLCBNZXNzYWdl
UGFzc2luZ01vZGUpOworCitQYXNzUmVmUHRyPFRyYW5zZmVyYWJsZT4gdG9OYXRpdmVUcmFuc2Zl
cmFibGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
VHJhbnNmZXJhYmxlKFRyYW5zZmVyYWJsZSopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0
b20uY3BwCmluZGV4IGZkYzY4MTUuLjFiYmQ3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcApAQCAtODcsMjQgKzg3LDM2
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB3cmFwcGVyT2JqZWN0OwogfQog
Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXI6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9z
dE1lc3NhZ2VDYWxsYmFjayhNZXNzYWdlUGFzc2luZ01vZGUgbWVzc2FnZVBhc3NpbmdNb2RlLCBj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLldvcmtlci5w
b3N0TWVzc2FnZSIpOwogICAgIFdvcmtlciogd29ya2VyID0gVjhXb3JrZXI6OnRvTmF0aXZlKGFy
Z3MuSG9sZGVyKCkpOwotICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoYXJnc1swXSwgZGlkVGhyb3cpOwotICAgIGlmIChkaWRUaHJvdykKLSAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKLSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsKKyAgICBU
cmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVBcnJheTsKKyAgICBWYWx1ZUhhbmRsZUFycmF5
IHZhbHVlSGFuZGxlQXJyYXk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAg
IGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAgICAgICBp
ZiAoIWdldFRyYW5zZmVyYWJsZUFycmF5KGFyZ3NbMV0sIHRyYW5zZmVyYWJsZUFycmF5LCB2YWx1
ZUhhbmRsZUFycmF5LCBtZXNzYWdlUGFzc2luZ01vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKICAgICB9CisgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOworICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShhcmdzWzBdLCBkaWRUaHJvdywgJnZhbHVlSGFuZGxlQXJyYXksIG1lc3NhZ2VQ
YXNzaW5nTW9kZSk7CisgICAgaWYgKGRpZFRocm93KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdvcmtlci0+cG9zdE1lc3Nh
Z2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIGVjKTsKKyAgICB3b3JrZXItPnBvc3RN
ZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmdHJhbnNmZXJhYmxlQXJyYXksIGVjKTsKICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtl
cjo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAg
IElOQ19TVEFUUygiRE9NLldvcmtlci5wb3N0TWVzc2FnZSIpOworICAgIHJldHVybiBXZWJDb3Jl
Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKE9ubHlNZXNzYWdlUG9ydHMsIGFyZ3MpOworfQorCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXI6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5Xb3JrZXIud2Vi
a2l0UG9zdE1lc3NhZ2UiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cG9zdE1lc3NhZ2VDYWxsYmFj
ayhQZXJtaXRUcmFuc2ZlcmFibGVzLCBhcmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNw
cAppbmRleCBlMzg5Y2QxLi45NjU4NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAK
QEAgLTEyOSw2ICsxMjksOCBAQAogI2luY2x1ZGUgIlRvdWNoLmNwcCIKICNpbmNsdWRlICJUb3Vj
aEV2ZW50LmNwcCIKICNpbmNsdWRlICJUb3VjaExpc3QuY3BwIgorI2luY2x1ZGUgIlRyYW5zZmVy
YWJsZS5jcHAiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAiCiAjaW5jbHVkZSAi
VHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHAiCiAjaW5jbHVkZSAiVHJhdmVyc2FsLmNwcCIKICNp
bmNsdWRlICJUcmVlU2NvcGUuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAppbmRl
eCBiNDMzMzgxYi4uNmE3MjJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAg
LTMwLDYgKzMwLDggQEAKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJs
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDEzICs0MCwxMyBAQCBNZXNzYWdl
RXZlbnQ6Ok1lc3NhZ2VFdmVudCgpCiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNv
dXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKK01lc3NhZ2VFdmVudDo6
TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxE
T01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJh
YmxlcykKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxz
ZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9s
YXN0RXZlbnRJZChsYXN0RXZlbnRJZCkKICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAgICAsIG1f
cG9ydHMocG9ydHMpCisgICAgLCBtX3RyYW5zZmVyYWJsZXModHJhbnNmZXJhYmxlcykKIHsKIH0K
IApAQCAtNTIsNyArNTQsNyBAQCBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQog
Ci12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4gcG9ydHMpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8
VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjMsMjYgKzY1LDM2IEBAIHZvaWQgTWVzc2FnZUV2ZW50
Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvCiAgICAgbV9vcmlnaW4gPSBvcmlnaW47CiAgICAgbV9sYXN0RXZlbnRJZCA9IGxhc3RF
dmVudElkOwogICAgIG1fc291cmNlID0gc291cmNlOwotICAgIG1fcG9ydHMgPSBwb3J0czsKKyAg
ICBtX3RyYW5zZmVyYWJsZXMgPSB0cmFuc2ZlcmFibGVzOwogfQogCiAvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogTWVz
c2FnZVBvcnQqIE1lc3NhZ2VFdmVudDo6bWVzc2FnZVBvcnQoKQogewotICAgIGlmICghbV9wb3J0
cykKKyAgICBpZiAoIW1fdHJhbnNmZXJhYmxlcykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgQVNT
RVJUKG1fcG9ydHMtPnNpemUoKSA9PSAxKTsKLSAgICByZXR1cm4gKCptX3BvcnRzKVswXS5nZXQo
KTsKKyAgICBBU1NFUlQobV90cmFuc2ZlcmFibGVzLT5zaXplKCkgPT0gMSk7CisgICAgVHJhbnNm
ZXJhYmxlKiB0cmFuc2ZlcmFibGUgPSAoKm1fdHJhbnNmZXJhYmxlcylbMF0uZ2V0KCk7CisgICAg
QVNTRVJUKHRyYW5zZmVyYWJsZS0+YXNNZXNzYWdlUG9ydCgpKTsKKyAgICByZXR1cm4gdHJhbnNm
ZXJhYmxlLT5hc01lc3NhZ2VQb3J0KCk7CiB9CiAKLXZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVz
c2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNv
dXJjZSwgTWVzc2FnZVBvcnQqIHBvcnQpCitUcmFuc2ZlcmFibGUqIE1lc3NhZ2VFdmVudDo6dHJh
bnNmZXJhYmxlKCkKIHsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHM7Ci0gICAg
aWYgKHBvcnQpIHsKLSAgICAgICAgcG9ydHMgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJh
eSk7Ci0gICAgICAgIHBvcnRzLT5hcHBlbmQocG9ydCk7CisgICAgaWYgKCFtX3RyYW5zZmVyYWJs
ZXMpCisgICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChtX3RyYW5zZmVyYWJsZXMtPnNpemUo
KSA9PSAxKTsKKyAgICByZXR1cm4gKCptX3RyYW5zZmVyYWJsZXMpWzBdLmdldCgpOworfQorCit2
b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxl
KQoreworICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlczsKKyAgICBp
ZiAodHJhbnNmZXJhYmxlKSB7CisgICAgICAgIHRyYW5zZmVyYWJsZXMgPSBhZG9wdFB0cihuZXcg
VHJhbnNmZXJhYmxlQXJyYXkpOworICAgICAgICB0cmFuc2ZlcmFibGVzLT5hcHBlbmQodHJhbnNm
ZXJhYmxlKTsKICAgICB9Ci0gICAgaW5pdE1lc3NhZ2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgcG9ydHMucmVsZWFz
ZSgpKTsKKyAgICBpbml0TWVzc2FnZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
ZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCB0cmFuc2ZlcmFibGVzLnJlbGVhc2Uo
KSk7CiB9CiAKIGJvb2wgTWVzc2FnZUV2ZW50Ojppc01lc3NhZ2VFdmVudCgpIGNvbnN0IApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IGI3ZjliMDIuLjEwMDhmOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmgKQEAgLTMwLDEyICszMCwxMyBAQAogCiAjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBET01XaW5kb3c7CisgICAgY2xh
c3MgTWVzc2FnZVBvcnQ7CiAKICAgICBjbGFzcyBNZXNzYWdlRXZlbnQgOiBwdWJsaWMgRXZlbnQg
ewogICAgIHB1YmxpYzoKQEAgLTQzLDM2ICs0NCwzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KTsK
ICAgICAgICAgfQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0
ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzLCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gZGF0YSA9IDAsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gIiIsIGNvbnN0
IFN0cmluZyYgbGFzdEV2ZW50SWQgPSAiIiwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSA9
IDApCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NP
d25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhID0gMCwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSAiIiwgY29u
c3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9ICIiLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNl
ID0gMCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdl
RXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0
RXZlbnRJZCwgc291cmNlLCB0cmFuc2ZlcmFibGVzKSk7CiAgICAgICAgIH0KICAgICAgICAgdmly
dHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093
blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CisgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NP
d25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+KTsKIAogICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICAgICAgVHJhbnNm
ZXJhYmxlQXJyYXkqIGRhdGFEZXBlbmRlbmNpZXMoKSBjb25zdCB7IHJldHVybiB0cmFuc2ZlcmFi
bGVzKCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBt
X29yaWdpbjsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0RXZlbnRJZDsgfQogICAgICAgICBET01XaW5kb3cqIHNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9Ci0gICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkqIHBv
cnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0cy5nZXQoKTsgfQorICAgICAgICBUcmFuc2ZlcmFi
bGVBcnJheSogdHJhbnNmZXJhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmZXJhYmxlcy5n
ZXQoKTsgfQogCiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0
aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCisgICAgICAgIFRyYW5zZmVyYWJsZSogdHJh
bnNmZXJhYmxlKCk7CiAgICAgICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCgpOwogICAgICAg
ICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3Mg
KGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBNZXNzYWdlUG9ydCopOwor
ICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBUcmFuc2ZlcmFibGUqKTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0QXJyYXk+KTsKKyAgICAgICAgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxU
cmFuc2ZlcmFibGVBcnJheT4pOwogCiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1fZGF0YTsKICAgICAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgICAgICBTdHJpbmcgbV9s
YXN0RXZlbnRJZDsKICAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9zb3VyY2U7Ci0gICAgICAg
IE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBtX3BvcnRzOworICAgICAgICBPd25QdHI8VHJhbnNm
ZXJhYmxlQXJyYXk+IG1fdHJhbnNmZXJhYmxlczsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCmluZGV4IGNmNDViYjQuLjI1MTMx
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCkBAIC00NSw4ICs0NSwxNyBAQCBt
b2R1bGUgZXZlbnRzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIGxhc3RFdmVudElkQXJn
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1D
YWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NV2luZG93IHNvdXJjZUFyZywgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFs
dWVdIEFycmF5IG1lc3NhZ2VQb3J0cyk7CisKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRJ
bml0TWVzc2FnZUV2ZW50KGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3Ry
aW5nIHR5cGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIGNhbkJ1YmJsZUFy
ZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0
aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2Fs
bFdpdGhEZWZhdWx0VmFsdWVdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhQXJnLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxs
V2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG9yaWdpbkFyZywgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0
VmFsdWVdIERPTVN0cmluZyBsYXN0RXZlbnRJZEFyZywgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVd
IERPTVdpbmRvdyBzb3VyY2VBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBBcnJheSB0cmFu
c2ZlcmFibGVzKTsKICNlbHNlCi0gICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhw
b3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0IGV4cG9z
ZSBhIHNpbmdsZSBwb3J0LgorICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGV4cG9z
ZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBleHBvc2Ug
YSBzaW5nbGUgTWVzc2FnZVBvcnQuCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdl
UG9ydCBtZXNzYWdlUG9ydDsKIAogICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gW09w
dGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgdHlwZUFyZywgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA0NzJiOWIxLi4wNmJhZmQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
TWVzc2FnZVBvcnQ6Ok1lc3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpCiAgICAgOiBtX3N0YXJ0ZWQoZmFsc2UpCiAgICAgLCBtX2Nsb3NlZChm
YWxzZSkKKyAgICAsIG1fdHJhbnNmZXJyZWRPdXQoZmFsc2UpCiAgICAgLCBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5jcmVhdGVkTWVzc2FnZVBvcnQodGhpcyk7CkBAIC01OCw0MCArNTksNTgg
QEAgTWVzc2FnZVBvcnQ6On5NZXNzYWdlUG9ydCgpCiB9CiAKIC8vIEZJWE1FOiByZW1vdmUgdGhp
cyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi12b2lkIE1l
c3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBNZXNz
YWdlUG9ydDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwotICAgIGlmIChwb3J0KQotICAgICAgICBwb3J0
cy5hcHBlbmQocG9ydCk7Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnBvcnRzLCBlYyk7Cisg
ICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlczsKKyAgICBpZiAodHJhbnNmZXJhYmxl
KQorICAgICAgICB0cmFuc2ZlcmFibGVzLmFwcGVuZCh0cmFuc2ZlcmFibGUpOworICAgIHBvc3RN
ZXNzYWdlKG1lc3NhZ2UsICZ0cmFuc2ZlcmFibGVzLCBlYyk7CiB9CiAKIHZvaWQgTWVzc2FnZVBv
cnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNf
Y2FzdDxNZXNzYWdlUG9ydEFycmF5Kj4oMCksIGVjKTsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdl
LCBzdGF0aWNfY2FzdDxUcmFuc2ZlcmFibGVBcnJheSo+KDApLCBlYyk7CiB9CiAKLXZvaWQgTWVz
c2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyYWJsZXMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghaXNFbnRhbmdsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCi0gICAgT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKLSAgICAvLyBNYWtlIHN1cmUg
d2UgYXJlbid0IGNvbm5lY3RlZCB0byBhbnkgb2YgdGhlIHBhc3NlZC1pbiBwb3J0cy4KLSAgICBp
ZiAocG9ydHMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwb3J0cy0+
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIE1lc3NhZ2VQb3J0KiBkYXRhUG9ydCA9ICgqcG9y
dHMpW2ldLmdldCgpOwotICAgICAgICAgICAgaWYgKGRhdGFQb3J0ID09IHRoaXMgfHwgbV9lbnRh
bmdsZWRDaGFubmVsLT5pc0Nvbm5lY3RlZFRvKGRhdGFQb3J0KSkgewotICAgICAgICAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIE93
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzOworICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmVuJ3QgY29ubmVjdGVkIHRvIGFueSBwYXNzZWQtaW4gTWVzc2FnZVBvcnRzLgorICAg
IGlmICh0cmFuc2ZlcmFibGVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgdHJhbnNmZXJhYmxlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRyYW5zZmVyYWJs
ZSogdHJhbnNmZXJhYmxlID0gKCp0cmFuc2ZlcmFibGVzKVtpXS5nZXQoKTsKKyAgICAgICAgICAg
IGlmIChNZXNzYWdlUG9ydCogZGF0YVBvcnQgPSB0cmFuc2ZlcmFibGUtPmFzTWVzc2FnZVBvcnQo
KSkgeworICAgICAgICAgICAgICAgIGlmIChkYXRhUG9ydCA9PSB0aGlzIHx8IG1fZW50YW5nbGVk
Q2hhbm5lbC0+aXNDb25uZWN0ZWRUbyhkYXRhUG9ydCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZWMgPSBEQVRBX0NMT05FX0VSUjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBjaGFubmVscyA9
IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7CisgICAgICAgIHJlY2Vp
cHRzID0gVHJhbnNmZXJhYmxlOjp0cmFuc2ZlckFsbE91dCh0cmFuc2ZlcmFibGVzLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIGVjKTsKICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUo
TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscy5y
ZWxlYXNlKCkpKTsKKyAgICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUo
TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZShtZXNzYWdlLCByZWNlaXB0cy5y
ZWxlYXNlKCkpKTsKK30KKworYm9vbCBNZXNzYWdlUG9ydDo6d2FzVHJhbnNmZXJyZWRPdXQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3RyYW5zZmVycmVkT3V0OworfQorCitQYXNzT3duUHRyPFRy
YW5zZmVyYWJsZVJlY2VpcHQ+IE1lc3NhZ2VQb3J0Ojp0cmFuc2Zlck91dChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBVTlVTRURfUEFS
QU0oY29udGV4dCk7CisgICAgaWYgKCFtX2VudGFuZ2xlZENoYW5uZWwgfHwgbV90cmFuc2ZlcnJl
ZE91dCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisgICAgbV90cmFuc2ZlcnJlZE91dCA9IHRydWU7CisgICAgcmV0dXJu
IE1lc3NhZ2VQb3J0UmVjZWlwdDo6Y3JlYXRlKGRpc2VudGFuZ2xlKGVjKSk7CiB9CiAKIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUoRXhjZXB0
aW9uQ29kZSYgZWMpCkBAIC0xNzksOCArMTk4LDggQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0
Y2hNZXNzYWdlcygpCiAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgICAgICBPd25Q
dHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygq
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBldmVudERhdGEtPmNoYW5uZWxzKCkpOwotICAgICAg
ICBSZWZQdHI8RXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2Uo
KSwgZXZlbnREYXRhLT5tZXNzYWdlKCkpOworICAgICAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJy
YXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKCpt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV2ZW50RGF0YS0+cmVjZWlwdHMoKSk7CisgICAgICAg
IFJlZlB0cjxFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUodHJhbnNmZXJhYmxlcy5y
ZWxlYXNlKCksIGV2ZW50RGF0YS0+bWVzc2FnZSgpKTsKIAogICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICAgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7CkBAIC0y
MDQsNDggKzIyMyw2IEBAIE1lc3NhZ2VQb3J0KiBNZXNzYWdlUG9ydDo6bG9jYWxseUVudGFuZ2xl
ZFBvcnQoKQogICAgIHJldHVybiBtX2VudGFuZ2xlZENoYW5uZWwgPyBtX2VudGFuZ2xlZENoYW5u
ZWwtPmxvY2FsbHlFbnRhbmdsZWRQb3J0KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgOiAwOwog
fQogCi1QYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBNZXNzYWdlUG9ydDo6ZGlz
ZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgaWYgKCFwb3J0cyB8fCAhcG9ydHMtPnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBIYXNoU2V0IHVzZWQgdG8gZWZmaWNpZW50bHkgY2hlY2sg
Zm9yIGR1cGxpY2F0ZXMgaW4gdGhlIHBhc3NlZC1pbiBhcnJheS4KLSAgICBIYXNoU2V0PE1lc3Nh
Z2VQb3J0Kj4gcG9ydFNldDsKLQotICAgIC8vIFdhbGsgdGhlIGluY29taW5nIGFycmF5IC0gaWYg
dGhlcmUgYXJlIGFueSBkdXBsaWNhdGUgcG9ydHMsIG9yIG51bGwgcG9ydHMgb3IgY2xvbmVkIHBv
cnRzLCB0aHJvdyBhbiBlcnJvciAocGVyIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMp
LgotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcG9ydHMtPnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIE1lc3NhZ2VQb3J0KiBwb3J0ID0gKCpwb3J0cylbaV0uZ2V0KCk7Ci0gICAgICAg
IGlmICghcG9ydCB8fCBwb3J0LT5pc0Nsb25lZCgpIHx8IHBvcnRTZXQuY29udGFpbnMocG9ydCkp
IHsKLSAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBwb3J0U2V0LmFkZChwb3J0KTsKLSAgICB9
Ci0KLSAgICAvLyBQYXNzZWQtaW4gcG9ydHMgcGFzc2VkIHZhbGlkaXR5IGNoZWNrcywgc28gd2Ug
Y2FuIGRpc2VudGFuZ2xlIHRoZW0uCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBwb3J0QXJyYXkgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkocG9ydHMt
PnNpemUoKSkpOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwIDsgaSA8IHBvcnRzLT5zaXpl
KCkgOyArK2kpIHsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCA9
ICgqcG9ydHMpW2ldLT5kaXNlbnRhbmdsZShlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOyAvLyBD
YW4ndCBnZW5lcmF0ZSBleGNlcHRpb24gaGVyZSBpZiBwYXNzZWQgYWJvdmUgY2hlY2tzLgotICAg
ICAgICAoKnBvcnRBcnJheSlbaV0gPSBjaGFubmVsLnJlbGVhc2UoKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHBvcnRBcnJheS5yZWxlYXNlKCk7Ci19Ci0KLVBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJh
eT4gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCi17Ci0g
ICAgaWYgKCFjaGFubmVscyB8fCAhY2hhbm5lbHMtPnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydEFycmF5ID0gYWRvcHRQ
dHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkoY2hhbm5lbHMtPnNpemUoKSkpOwotICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgY2hhbm5lbHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJl
ZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4dCk7Ci0g
ICAgICAgIHBvcnQtPmVudGFuZ2xlKCgqY2hhbm5lbHMpW2ldLnJlbGVhc2UoKSk7Ci0gICAgICAg
ICgqcG9ydEFycmF5KVtpXSA9IHBvcnQucmVsZWFzZSgpOwotICAgIH0KLSAgICByZXR1cm4gcG9y
dEFycmF5LnJlbGVhc2UoKTsKLX0KLQogRXZlbnRUYXJnZXREYXRhKiBNZXNzYWdlUG9ydDo6ZXZl
bnRUYXJnZXREYXRhKCkKIHsKICAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuaAppbmRleCAzYTg0MGZlLi41MDQyYzUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5o
IgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00
NSwyMiArNDYsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE1lc3NhZ2VQb3J0
OwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLSAgICAvLyBUaGUgb3Zlcndo
ZWxtaW5nbHkgY29tbW9uIGNhc2UgaXMgc2VuZGluZyBhIHNpbmdsZSBwb3J0LCBzbyBoYW5kbGUg
dGhhdCBlZmZpY2llbnRseSB3aXRoIGFuIGlubGluZSBidWZmZXIgb2Ygc2l6ZSAxLgotICAgIHR5
cGVkZWYgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJyYXk7Ci0K
ICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgaW5oZXJpdCBmcm9tIEFjdGl2ZURPTU9i
amVjdCBhbmQgdXNlCiAgICAgLy8gc2V0UGVuZGluZ0FjdGl2aXR5IC8gdW5zZXRQZW5kaW5nQWN0
aXZpdHkgaW5zdGVhZCBvZiBkdXBsaWNhdGluZwogICAgIC8vIEFjdGl2ZURPTU9iamVjdCdzIGZl
YXR1cmVzIGFuZCByZWx5aW5nIG9uIEphdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9uCiAgICAg
Ly8gdG8gZ2V0IGl0cyBsaWZldGltZSByaWdodC4KLSAgICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKyAgICBj
bGFzcyBNZXNzYWdlUG9ydCA6IHB1YmxpYyBUcmFuc2ZlcmFibGUsIHB1YmxpYyBFdmVudFRhcmdl
dCB7CiAgICAgcHVibGljOgorICAgICAgICBNZXNzYWdlUG9ydCogYXNNZXNzYWdlUG9ydCgpIHsg
cmV0dXJuIHRoaXM7IH0KKwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlUG9ydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7
IH0KICAgICAgICAgfk1lc3NhZ2VQb3J0KCk7CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYp
OwotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlLCBjb25zdCBUcmFuc2ZlcmFibGVBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRp
bmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIFRyYW5zZmVyYWJsZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAg
ICB2b2lkIHN0YXJ0KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoKTsKQEAgLTY4LDE0ICs2OCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBlbnRhbmdsZShQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbD4pOwogICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bD4gZGlzZW50YW5nbGUoRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgICAgIC8vIERpc2VudGFuZ2xl
IGFuIGFycmF5IG9mIHBvcnRzLCByZXR1cm5pbmcgdGhlIGVudGFuZ2xlZCBjaGFubmVscy4KLSAg
ICAgICAgLy8gUGVyIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMsIGdlbmVyYXRlcyBh
biBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gaWYgYW55IG9mIHRoZSBwYXNzZWQgcG9ydHMg
YXJlIG51bGwgb3Igbm90IGVudGFuZ2xlZC4KLSAgICAgICAgLy8gUmV0dXJucyAwIGlmIHRoZXJl
IGlzIGFuIGV4Y2VwdGlvbiwgb3IgaWYgdGhlIHBhc3NlZC1pbiBhcnJheSBpcyAwL2VtcHR5Lgot
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gZGlzZW50
YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwotCi0g
ICAgICAgIC8vIEVudGFuZ2xlcyBhbiBhcnJheSBvZiBjaGFubmVscywgcmV0dXJuaW5nIGFuIGFy
cmF5IG9mIE1lc3NhZ2VQb3J0cyBpbiBtYXRjaGluZyBvcmRlci4KLSAgICAgICAgLy8gUmV0dXJu
cyAwIGlmIHRoZSBwYXNzZWQgYXJyYXkgaXMgMC9lbXB0eS4KLSAgICAgICAgc3RhdGljIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4gZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICBib29s
IHdhc1RyYW5zZmVycmVkT3V0KCkgY29uc3Q7CisgICAgICAgIFBhc3NPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdD4gdHJhbnNmZXJPdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgICAgICB2b2lkIG1lc3NhZ2VBdmFpbGFibGUoKTsKICAgICAgICAgYm9v
bCBzdGFydGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydGVkOyB9CkBAIC04OCw4ICs4Miw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZXMoKTsK
IAotICAgICAgICB1c2luZyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0Pjo6cmVmOwotICAgICAgICB1
c2luZyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0Pjo6ZGVyZWY7CisgICAgICAgIHVzaW5nIFJlZkNv
dW50ZWQ8VHJhbnNmZXJhYmxlPjo6cmVmOworICAgICAgICB1c2luZyBSZWZDb3VudGVkPFRyYW5z
ZmVyYWJsZT46OmRlcmVmOwogCiAgICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCk7CiAK
QEAgLTEwNSw5ICs5OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gTk9URTog
VGhpcyBpcyB1c2VkIHNvbGVseSB0byBlbmFibGUgYSBHQyBvcHRpbWl6YXRpb24uIFNvbWUgcGxh
dGZvcm1zIG1heSBub3QgYmUgYWJsZSB0byBkZXRlcm1pbmUgb3duZXJzaGlwIG9mIHRoZSByZW1v
dGUgcG9ydCAoc2luY2UgaXQgbWF5IGxpdmUgY3Jvc3MtcHJvY2VzcykgLSB0aG9zZSBwbGF0Zm9y
bXMgbWF5IGFsd2F5cyByZXR1cm4gbnVsbC4KICAgICAgICAgTWVzc2FnZVBvcnQqIGxvY2FsbHlF
bnRhbmdsZWRQb3J0KCk7CiAgICAgICAgIC8vIEEgcG9ydCBzdGFydHMgb3V0IGl0cyBsaWZlIGVu
dGFuZ2xlZCwgYW5kIHJlbWFpbnMgZW50YW5nbGVkIHVudGlsIGl0IGlzIGNsb3NlZCBvciBpcyBj
bG9uZWQuCi0gICAgICAgIGJvb2wgaXNFbnRhbmdsZWQoKSB7IHJldHVybiAhbV9jbG9zZWQgJiYg
IWlzQ2xvbmVkKCk7IH0KKyAgICAgICAgYm9vbCBpc0VudGFuZ2xlZCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2Nsb3NlZCAmJiAhaXNDbG9uZWQoKTsgfQogICAgICAgICAvLyBBIHBvcnQgaXMgY2xvbmVk
IGlmIGl0cyBlbnRhbmdsZWQgY2hhbm5lbCBoYXMgYmVlbiByZW1vdmVkIGFuZCBzZW50IHRvIGEg
bmV3IG93bmVyIHZpYSBwb3N0TWVzc2FnZSgpLgotICAgICAgICBib29sIGlzQ2xvbmVkKCkgeyBy
ZXR1cm4gIW1fZW50YW5nbGVkQ2hhbm5lbDsgfQorICAgICAgICBib29sIGlzQ2xvbmVkKCkgY29u
c3QgeyByZXR1cm4gIW1fZW50YW5nbGVkQ2hhbm5lbDsgfQogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgTWVzc2FnZVBvcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwpAQCAtMTIxLDYgKzExNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fc3RhcnRlZDsKICAgICAg
ICAgYm9vbCBtX2Nsb3NlZDsKKyAgICAgICAgYm9vbCBtX3RyYW5zZmVycmVkT3V0OwogCiAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAg
ICAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlUG9ydC5pZGwKaW5kZXggMjg4MzNjZS4uZjQ1MzczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuaWRsCkBAIC0zOCw2ICszOCw5IEBAIG1vZHVsZSBldmVudHMgewogI2lmIGRlZmluZWQo
TEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgICAgICBbQ3Vz
dG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxd
IEFycmF5IG1lc3NhZ2VQb3J0cykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwor
ICAgICAgICBbQ3VzdG9tXSB2b2lkIHdlYmtpdFBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNz
YWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IHRyYW5zZmVyKQorICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisKICAgICAgICAgdm9pZCBzdGFydCgpOwogICAgICAgICB2b2lkIGNsb3Nl
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKaW5kZXggMzY3
ZjdlZC4uOTBmMTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5j
cHAKQEAgLTMwLDE4ICszMCwzOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0Q2hhbm5lbC5oIgogCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAKLVBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERh
dGE+IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjcmVhdGUoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IGNoYW5uZWxzKQorUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0
YT4gTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+IHJlY2VpcHRzKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXZlbnREYXRhKG1l
c3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFdmVudERhdGEobWVz
c2FnZSwgcmVjZWlwdHMpKTsKIH0KIAotTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OkV2
ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCitNZXNzYWdlUG9ydENoYW5u
ZWw6OkV2ZW50RGF0YTo6RXZlbnREYXRhKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlLCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMp
CiAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKLSAgICAsIG1fY2hhbm5lbHMoY2hhbm5lbHMpCisg
ICAgLCBtX3JlY2VpcHRzKHJlY2VpcHRzKQoreworfQorCitNZXNzYWdlUG9ydFJlY2VpcHQ6Ok1l
c3NhZ2VQb3J0UmVjZWlwdChQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkK
KyAgICA6IG1fbWVzc2FnZVBvcnRDaGFubmVsKGNoYW5uZWwpCit7CisgICAgQVNTRVJUKG1fbWVz
c2FnZVBvcnRDaGFubmVsKTsKK30KKworUGFzc093blB0cjxNZXNzYWdlUG9ydFJlY2VpcHQ+IE1l
c3NhZ2VQb3J0UmVjZWlwdDo6Y3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBj
aGFubmVsKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRSZWNlaXB0KGNo
YW5uZWwpKTsKK30KKworUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IE1lc3NhZ2VQb3J0UmVjZWlw
dDo6dHJhbnNmZXJJbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogeworICAgIEFT
U0VSVChtX21lc3NhZ2VQb3J0Q2hhbm5lbCk7CisgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0
ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZShjb250ZXh0KTsKKyAgICBwb3J0LT5lbnRhbmdsZShtX21l
c3NhZ2VQb3J0Q2hhbm5lbC5yZWxlYXNlKCkpOworICAgIHJldHVybiBwb3J0LnJlbGVhc2UoKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
Q2hhbm5lbC5oCmluZGV4IDA3NjY4YTQuLmE1YjQxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnRDaGFubmVsLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAi
VHJhbnNmZXJhYmxlUmVjZWlwdC5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01MCw5ICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKIAotICAgIC8vIFRoZSBvdmVyd2hlbG1pbmdseSBjb21tb24gY2FzZSBpcyBz
ZW5kaW5nIGEgc2luZ2xlIHBvcnQsIHNvIGhhbmRsZSB0aGF0IGVmZmljaWVudGx5IHdpdGggYW4g
aW5saW5lIGJ1ZmZlciBvZiBzaXplIDEuCi0gICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbD4sIDE+IE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5OwotCiAgICAgLy8gTWVz
c2FnZVBvcnRDaGFubmVsIGlzIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgaW50ZXJmYWNlIHRvIHRo
ZSByZW1vdGUgc2lkZSBvZiBhIG1lc3NhZ2UgY2hhbm5lbC4KICAgICAvLyBJdCBhY3RzIGFzIGEg
d3JhcHBlciBhcm91bmQgdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbCBpbXBsZW1lbnRhdGlvbiB3aGljaCBlbnN1cmVzIHRoYXQgdGhlIHBsYXRmb3JtLWRl
cGVuZGVudCBjbG9zZSgpIG1ldGhvZCBpcyBpbnZva2VkIGJlZm9yZSBkZXN0cnVjdGlvbi4KICAg
ICBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWwgewpAQCAtODIsMTUgKzgwLDE1IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgRXZlbnREYXRhIHsKICAgICAgICAgICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEV2ZW50RGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBzdGF0aWMgUGFzc093blB0cjxFdmVudERhdGE+IGNy
ZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+KTsKKyAgICAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2ZW50
RGF0YT4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0
cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KTsKIAogICAgICAgICAgICAgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKiBtZXNzYWdlKCkgeyByZXR1cm4gbV9tZXNzYWdlLmdldCgpOyB9Ci0gICAgICAg
ICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscygpIHsgcmV0
dXJuIG1fY2hhbm5lbHMucmVsZWFzZSgpOyB9CisgICAgICAgICAgICBQYXNzT3duUHRyPFRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMoKSB7IHJldHVybiBtX3JlY2VpcHRzLnJlbGVh
c2UoKTsgfQogCiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBFdmVudERhdGEoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+KTsKKyAgICAgICAgICAgIEV2ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+KTsKICAgICAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVz
c2FnZTsKLSAgICAgICAgICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFu
bmVsczsKKyAgICAgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IG1fcmVj
ZWlwdHM7CiAgICAgICAgIH07CiAKICAgICAgICAgLy8gU2VuZHMgYSBtZXNzYWdlIGFuZCBvcHRp
b25hbCBjbG9uZWQgcG9ydCB0byB0aGUgcmVtb3RlIHBvcnQuCkBAIC0xMTEsNiArMTA5LDIxIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsPiBtX2NoYW5uZWw7CiAgICAgfTsKIAorICAgIGNsYXNzIE1lc3NhZ2VQb3J0UmVjZWlw
dCA6IHB1YmxpYyBUcmFuc2ZlcmFibGVSZWNlaXB0IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTWVzc2FnZVBvcnRSZWNlaXB0KTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlUG9ydFJl
Y2VpcHQ+IGNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4pOworCisgICAgICAg
IE1lc3NhZ2VQb3J0UmVjZWlwdCogYXNNZXNzYWdlUG9ydFJlY2VpcHQoKSB7IHJldHVybiB0aGlz
OyB9CisgICAgICAgIFBhc3NSZWZQdHI8VHJhbnNmZXJhYmxlPiB0cmFuc2ZlckluKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsKiBtZXNzYWdlUG9y
dENoYW5uZWwoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VQb3J0Q2hhbm5lbC5nZXQoKTsgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgTWVzc2FnZVBvcnRSZWNlaXB0KFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsPik7CisgICAgICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IG1f
bWVzc2FnZVBvcnRDaGFubmVsOworICAgIH07CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIE1lc3NhZ2VQb3J0Q2hhbm5lbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9wU3RhdGVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQu
aAppbmRleCAwYTk4MzEzLi5kMmQ5MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9wU3RhdGVFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgK
QEAgLTMwLDYgKzMwLDExIEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKIAorY2xhc3MgVHJhbnNmZXJhYmxlOworY2xhc3MgVHJhbnNmZXJh
YmxlUmVjZWlwdDsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFu
c2ZlcmFibGVBcnJheTsKK3R5cGVkZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKQEAgLTQyLDcgKzQ3LDggQEAgcHVibGljOgog
ICAgIHZvaWQgaW5pdFBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4pOwogICAgIGJvb2wgaXNQb3BTdGF0ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGVPYmplY3QuZ2V0KCk7IH0gICAgCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVPYmplY3QuZ2V0KCk7IH0KKyAgICBUcmFuc2ZlcmFi
bGVBcnJheSogZGF0YURlcGVuZGVuY2llcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogcHJpdmF0
ZToKICAgICBQb3BTdGF0ZUV2ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJhbnNmZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNDhjYTMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmNwcApAQCAtMCwwICsxLDgxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFi
bGUuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcmFi
bGVSZWNlaXB0LmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBUcmFuc2ZlcmFi
bGU6OnRyYW5zZmVyQWxsT3V0KGNvbnN0IFRyYW5zZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVz
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAoIXRyYW5zZmVyYWJsZXMgfHwgIXRyYW5zZmVyYWJsZXMtPnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBIYXNoU2V0IHVzZWQgdG8gZWZmaWNpZW50bHkg
Y2hlY2sgZm9yIGR1cGxpY2F0ZXMgaW4gdGhlIHBhc3NlZC1pbiBhcnJheS4KKyAgICBIYXNoU2V0
PFRyYW5zZmVyYWJsZSo+IHRyYW5zZmVyYWJsZVNldDsKKworICAgIC8vIFdhbGsgdGhlIGluY29t
aW5nIGFycmF5IC0gaWYgdGhlcmUgYXJlIGFueSBkdXBsaWNhdGUgdHJhbnNmZXJhYmxlcywgb3Ig
dHJhbnNmZXJyZWQgcG9ydHMgb3IgY2xvc2VkIHBvcnRzLCB0aHJvdyBhbiBlcnJvciAocGVyIHNl
Y3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMpLgorICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgdHJhbnNmZXJhYmxlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgVHJhbnNmZXJh
YmxlKiB0cmFuc2ZlcmFibGUgPSAoKnRyYW5zZmVyYWJsZXMpW2ldLmdldCgpOworICAgICAgICBp
ZiAoIXRyYW5zZmVyYWJsZSB8fCB0cmFuc2ZlcmFibGUtPndhc1RyYW5zZmVycmVkT3V0KCkgfHwg
dHJhbnNmZXJhYmxlU2V0LmNvbnRhaW5zKHRyYW5zZmVyYWJsZSkpIHsKKyAgICAgICAgICAgIGVj
ID0gREFUQV9DTE9ORV9FUlI7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
fQorICAgICAgICB0cmFuc2ZlcmFibGVTZXQuYWRkKHRyYW5zZmVyYWJsZSk7CisgICAgfQorCisg
ICAgLy8gUGFzc2VkLWluIFRyYW5zZmVyYWJsZXMgcGFzc2VkIHZhbGlkaXR5IGNoZWNrcywgc28g
d2UgY2FuIHRyYW5zZmVyIHRoZW0gb3V0LgorICAgIEV4Y2VwdGlvbkNvZGUgZmFpbHVyZUNvZGUg
PSAwOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRBcnJheSA9
IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkodHJhbnNmZXJhYmxlcy0+c2l6
ZSgpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDAgOyBpIDwgdHJhbnNmZXJhYmxlcy0+
c2l6ZSgpIDsgKytpKSB7CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiByZWNl
aXB0ID0gKCp0cmFuc2ZlcmFibGVzKVtpXS0+dHJhbnNmZXJPdXQoY29udGV4dCwgZWMpOworICAg
ICAgICBpZiAoZWMgfHwgIXJlY2VpcHQpIHsKKyAgICAgICAgICAgIC8vIFdlIG1heSBmYWlsIHRv
IHRyYW5zZmVyT3V0IGEgVHJhbnNmZXJhYmxlLS0gZm9yIGV4YW1wbGUsIGlmIHRoZSBwb3J0IHdp
dGggd2hpY2ggYQorICAgICAgICAgICAgLy8gTWVzc2FnZVBvcnQgaXMgZW50YW5nbGVkIGlzIGdh
cmJhZ2UgY29sbGVjdGVkLCB0aGUgZGlzZW50YW5nbGUoKSBvcGVyYXRpb24gd2lsbAorICAgICAg
ICAgICAgLy8gcmV0dXJuIGFuIElOVkFMSURfU1RBVEVfRVJSLiBXZSdsbCB0cnkgdG8gdHJhbnNm
ZXIgdGhlIHJlc3Qgb2YgdGhlIG9iamVjdHMgb3V0CisgICAgICAgICAgICAvLyAoc28gdGhhdCBh
dXRob3JzIGNhbiBhc3N1bWUgdGhhdCBUcmFuc2ZlcmFibGVzIHRoYXQgd2VyZSB2YWxpZCB0byB0
cmFuc2ZlciB3aWxsIGluZGVlZAorICAgICAgICAgICAgLy8gYmUgdHJhbnNmZXJyZWQpLgorICAg
ICAgICAgICAgaWYgKCFmYWlsdXJlQ29kZSkKKyAgICAgICAgICAgICAgICBmYWlsdXJlQ29kZSA9
IGVjOworICAgICAgICAgICAgZWMgPSAwOworICAgICAgICB9CisgICAgICAgICgqcmVjZWlwdEFy
cmF5KVtpXSA9IHJlY2VpcHQucmVsZWFzZSgpOworICAgIH0KKyAgICBpZiAoZmFpbHVyZUNvZGUp
IHsKKyAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgbGFzdC1tb21lbnQgZXJyb3IgYXMgZGVzY3Jp
YmVkIGFib3ZlLCBkcm9wIHRoZSByZWNlaXB0cyBvbiB0aGUgZmxvb3IgYW5kCisgICAgICAgIC8v
IHNpZ25hbCBhbiBleGNlcHRpb24uCisgICAgICAgIGVjID0gZmFpbHVyZUNvZGU7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gcmVjZWlwdEFycmF5LnJlbGVhc2Uo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1RyYW5zZmVyYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwOTJkMTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmgKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBUcmFuc2ZlcmFibGVfaAorI2RlZmluZSBUcmFuc2Zl
cmFibGVfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgVHJhbnNmZXJhYmxlOworY2xhc3MgVHJhbnNm
ZXJhYmxlUmVjZWlwdDsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKK3R5cGVkZWYgVmVj
dG9yPFJlZlB0cjxUcmFuc2ZlcmFibGU+LCAxPiBUcmFuc2ZlcmFibGVBcnJheTsKK3R5cGVkZWYg
VmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlw
dEFycmF5OworCisvLyBUcmFuc2ZlcmFibGUgb2JqZWN0cyByZXByZXNlbnQgcmVzb3VyY2VzIHRo
YXQgbWF5IGJlIHNlbnQgYWxvbmcgd2l0aCBtZXNzYWdlcworLy8gdGhyb3VnaCB0aGUgRE9NIG1l
c3NhZ2luZyBBUEkuIEEgVHJhbnNmZXJhYmxlIG9iamVjdCBtYXkgYmUgdHJhbnNmZXJyZWQgb25j
ZS4KKy8vIEludGVybmFsbHksIHRyYW5zZmVycmluZyBhIFRyYW5zZmVyYWJsZSBtZWFucyB0dXJu
aW5nIGl0IGludG8gYSBUcmFuc2ZlcmFibGVSZWNlaXB0LAorLy8gZmVycnlpbmcgdGhhdCBUcmFu
c2ZlcmFibGVSZWNlaXB0IHRocm91Z2ggdGhlIHN5c3RlbSBhbG9uZyB3aXRoIGEgbWVzc2FnZSwg
YW5kCisvLyBldmVudHVhbGx5IHR1cm5pbmcgaXQgYmFjayBpbnRvIGEgVHJhbnNmZXJhYmxlIG9u
Y2UgdGhlIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuCisvLyBUaGlzIHNlY29uZCBUcmFuc2ZlcmFibGUg
b2JqZWN0IGNhbiB0aGVuIGJlIHRyYW5zZmVyZWQgb25jZSBhZ2Fpbi4KK2NsYXNzIFRyYW5zZmVy
YWJsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYW5zZmVyYWJsZT4geworcHVibGljOgorICAgIC8v
IEFzIG1vcmUgVHJhbnNmZXJhYmxlIHR5cGVzIGFyZSBhZGRlZCwgc29tZSBiaW5kaW5nIGNvZGUg
bXVzdCBiZSB1cGRhdGVkOgorICAgIC8vICAgdG9OYXRpdmVUcmFuc2ZlcmFibGUvdG9KU1RyYW5z
ZmVyYWJsZSBpbiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorICAgIC8vICAgdG9OYXRpdmVUcmFu
c2ZlcmFibGUvdG9WOFRyYW5zZmVyYWJsZSBpbiBWOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorICAg
IHZpcnR1YWwgTWVzc2FnZVBvcnQqIGFzTWVzc2FnZVBvcnQoKSB7IHJldHVybiAwOyB9CisKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gdHJhbnNmZXJPdXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHdhc1RyYW5zZmVycmVkT3V0KCkgY29uc3QgPSAwOworCisgICAgc3RhdGljIFBhc3NPd25Q
dHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiB0cmFuc2ZlckFsbE91dChjb25zdCBUcmFuc2Zl
cmFibGVBcnJheSosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CisK
KyAgICB2aXJ0dWFsIH5UcmFuc2ZlcmFibGUoKSB7IH0KKworcHJvdGVjdGVkOgorICAgIFRyYW5z
ZmVyYWJsZSgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
VHJhbnNmZXJhYmxlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFi
bGVSZWNlaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzNkYjZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZVJlY2VpcHQuY3BwCkBAIC0w
LDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKKworI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IFRyYW5z
ZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQorewor
ICAgIGlmICghcmVjZWlwdHMgfHwgIXJlY2VpcHRzLT5zaXplKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgT3duUHRyPFRyYW5zZmVyYWJsZUFycmF5PiB0cmFuc2ZlcmFibGVBcnJh
eSA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVBcnJheShyZWNlaXB0cy0+c2l6ZSgpKSk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCByZWNlaXB0cy0+c2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgKCp0cmFuc2ZlcmFibGVBcnJheSlbaV0gPSAoKnJlY2VpcHRzKVtpXS0+dHJhbnNm
ZXJJbihjb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKCgqdHJhbnNmZXJhYmxlQXJyYXkpW2ldKTsK
KyAgICB9CisgICAgcmV0dXJuIHRyYW5zZmVyYWJsZUFycmF5LnJlbGVhc2UoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5z
ZmVyYWJsZVJlY2VpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNlZTVkNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmgKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBUcmFuc2ZlcmFibGVSZWNlaXB0X2gK
KyNkZWZpbmUgVHJhbnNmZXJhYmxlUmVjZWlwdF9oCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1l
c3NhZ2VQb3J0UmVjZWlwdDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBU
cmFuc2ZlcmFibGU7CitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0OworCit0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8VHJhbnNmZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7Cit0eXBlZGVmIFZl
Y3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJlY2VpcHRB
cnJheTsKKworLy8gQSBUcmFuc2ZlcmFibGVSZWNlaXB0IGlzIGEgVHJhbnNmZXJhYmxlIG9iamVj
dCB0aGF0IGlzIGJlaW5nIHNlbnQgYWxvbmcgd2l0aCBzb21lCisvLyBtZXNzYWdlLiBJdCBtYXkg
bGF0ZXIgYmUgcmVkZWVtZWQgZm9yIGEgVHJhbnNmZXJhYmxlIG9iamVjdCBlcXVpdmFsZW50IHRv
IHRoZSBvbmUKKy8vIGZyb20gd2hpY2ggdGhpcyBUcmFuc2ZlcmFibGVSZWNlaXB0IHdhcyBjcmVh
dGVkLiBBIFRyYW5zZmVyYWJsZVJlY2VpcHQgbWF5IG9ubHkKKy8vIGJlIHJlZGVlbWVkIG9uY2Uu
IFNvbWUgVHJhbnNmZXJhYmxlUmVjZWlwdHMgbWF5IGJlIGZsYXR0ZW5lZCBieSB0aGUgc2VyaWFs
aXplcgorLy8gKGFuIGV2ZW50IHRoYXQgbWF5IG9jY3VyIHNob3VsZCwgZm9yIGV4YW1wbGUsIHRo
ZSByZWNlaXB0IG5lZWQgdG8gYmUgc2VudCBhY3Jvc3MKKy8vIHRoZSBuZXR3b3JrIG9yIGFuIElQ
QyBib3VuZGFyeSkuIE90aGVycyBtYXkgaGF2ZSBzcGVjaWFsIHBsYXRmb3JtLXNwZWNpZmljIHNl
bWFudGljcworLy8gdGhhdCBhcmUgaW52b2tlZCBhdCB0cmFuc2ZlciB0aW1lLiBUcmFuc2ZlcmFi
bGVSZWNlaXB0cyBzaG91bGQgYmUgYWJsZSB0byBiZSBzZW50CisvLyBmcmVlbHkgZnJvbSBvbmUg
dGhyZWFkIHRvIGFub3RoZXIgKGJ1dCBvbmx5IG9uZSB0aHJlYWQgc2hvdWxkIGNhbGwgdHJhbnNm
ZXJJbikuCitjbGFzcyBUcmFuc2ZlcmFibGVSZWNlaXB0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5UcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9CisKKyAgICB2aXJ0dWFsIE1lc3NhZ2VQb3J0UmVj
ZWlwdCogYXNNZXNzYWdlUG9ydFJlY2VpcHQoKSB7IHJldHVybiAwOyB9CisKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8VHJhbnNmZXJhYmxlPiB0cmFuc2ZlckluKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSA9IDA7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJh
bnNmZXJBbGxJbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc093blB0cjxUcmFuc2ZlcmFi
bGVSZWNlaXB0QXJyYXk+KTsKKworcHJvdGVjdGVkOgorICAgIFRyYW5zZmVyYWJsZVJlY2VpcHQo
KSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRyYW5zZmVy
YWJsZVJlY2VpcHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggYmRh
M2VlMy4uZjZjY2ExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0y
ODIsNyArMjgyLDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6cG9zdFN0YXJ0TmVnb3RpYXRpb25U
YXNrKCkKIHZvaWQgUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZUV2ZW50KGNvbnN0IGlu
dCYsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKQogewogICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGQgPSBkYXRhOwotICAgIGRpc3BhdGNoRXZlbnQoTWVz
c2FnZUV2ZW50OjpjcmVhdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PigpLCBkKSk7Cisg
ICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShQYXNzT3duUHRyPFRyYW5zZmVy
YWJsZUFycmF5PigpLCBkKSk7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU2ln
bmFsaW5nRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCmluZGV4IDZjYTViMzcuLjAxOWJjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTkwLDYgKzkwLDggQEAKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVk
ZSAiU3R5bGVNZWRpYS5oIgogI2luY2x1ZGUgIlN1ZGRlblRlcm1pbmF0aW9uLmgiCisjaW5jbHVk
ZSAiVHJhbnNmZXJhYmxlLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgogI2lu
Y2x1ZGUgIldlYktpdFBvaW50LmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CkBAIC0xMjEsMjAgKzEyMywyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFBvc3RNZXNzYWdlVGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoK
LSAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdpbmRvdyogd2luZG93LCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFBh
c3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IGNoYW5uZWxzLCBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luKQorICAgIFBvc3RN
ZXNzYWdlVGltZXIoRE9NV2luZG93KiB3aW5kb3csIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgUGFzc1JlZlB0cjxE
T01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJl
Y2VpcHRzLCBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luKQogICAgICAgICA6IG1fd2luZG93
KHdpbmRvdykKICAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKICAgICAgICAgLCBtX29yaWdp
bihzb3VyY2VPcmlnaW4pCiAgICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQotICAgICAgICAsIG1f
Y2hhbm5lbHMoY2hhbm5lbHMpCisgICAgICAgICwgbV9yZWNlaXB0cyhyZWNlaXB0cykKICAgICAg
ICAgLCBtX3RhcmdldE9yaWdpbih0YXJnZXRPcmlnaW4pCiAgICAgewogICAgIH0KIAogICAgIFBh
c3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgIHsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0
cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpjb250ZXh0LCBtX2NoYW5uZWxzLnJlbGVh
c2UoKSk7Ci0gICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlUG9ydHMu
cmVsZWFzZSgpLCBtX21lc3NhZ2UsIG1fb3JpZ2luLCAiIiwgbV9zb3VyY2UpOworICAgICAgICBP
d25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2ZlcmFibGVSZWNl
aXB0Ojp0cmFuc2ZlckFsbEluKCpjb250ZXh0LCBtX3JlY2VpcHRzLnJlbGVhc2UoKSk7CisgICAg
ICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0cmFuc2ZlcmFibGVzLnJlbGVhc2UoKSwg
bV9tZXNzYWdlLCBtX29yaWdpbiwgIiIsIG1fc291cmNlKTsKICAgICB9CiAgICAgU2VjdXJpdHlP
cmlnaW4qIHRhcmdldE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0T3JpZ2luLmdldCgp
OyB9CiAKQEAgLTE0OSw3ICsxNTEsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKICAgICBTdHJpbmcgbV9vcmlnaW47CiAgICAgUmVmUHRy
PERPTVdpbmRvdz4gbV9zb3VyY2U7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBtX2NoYW5uZWxzOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IG1fcmVj
ZWlwdHM7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3RhcmdldE9yaWdpbjsKIH07CiAK
QEAgLTc5OCwxNSArODAwLDE1IEBAIENPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oRE9N
V2luZG93OjpQRVJTSVNURU5UKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jCiAKICNlbmRpZgog
Ci12b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBjb25zdCBTdHJpbmcmIHRhcmdldE9y
aWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBET01XaW5k
b3c6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBUcmFuc2ZlcmFibGUqIHRyYW5zZmVyYWJsZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4s
IERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBNZXNzYWdlUG9y
dEFycmF5IHBvcnRzOwotICAgIGlmIChwb3J0KQotICAgICAgICBwb3J0cy5hcHBlbmQocG9ydCk7
Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnBvcnRzLCB0YXJnZXRPcmlnaW4sIHNvdXJjZSwg
ZWMpOworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZXM7CisgICAgaWYgKHRyYW5z
ZmVyYWJsZSkKKyAgICAgICAgdHJhbnNmZXJhYmxlcy5hcHBlbmQodHJhbnNmZXJhYmxlKTsKKyAg
ICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmdHJhbnNmZXJhYmxlcywgdGFyZ2V0T3JpZ2luLCBzb3Vy
Y2UsIGVjKTsKIH0KIAotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0
cywgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgVHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5z
ZmVyYWJsZXMsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47
CkBAIC04MjIsNyArODI0LDcgQEAgdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXMKICAgICAgICAgfQog
ICAgIH0KIAotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMgPSBN
ZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhwb3J0cywgZWMpOworICAgIE93blB0cjxUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzID0gVHJhbnNmZXJhYmxlOjp0cmFuc2ZlckFs
bE91dCh0cmFuc2ZlcmFibGVzLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVjKTsKICAgICBp
ZiAoZWMpCiAgICAgICAgIHJldHVybjsKIApAQCAtODM0LDcgKzgzNiw3IEBAIHZvaWQgRE9NV2lu
ZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwgY29uc3QgTWVzCiAgICAgU3RyaW5nIHNvdXJjZU9yaWdpbiA9IHNvdXJjZURvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOwogCiAgICAgLy8gU2NoZWR1bGUgdGhlIG1lc3Nh
Z2UuCi0gICAgUG9zdE1lc3NhZ2VUaW1lciogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcih0
aGlzLCBtZXNzYWdlLCBzb3VyY2VPcmlnaW4sIHNvdXJjZSwgY2hhbm5lbHMucmVsZWFzZSgpLCB0
YXJnZXQuZ2V0KCkpOworICAgIFBvc3RNZXNzYWdlVGltZXIqIHRpbWVyID0gbmV3IFBvc3RNZXNz
YWdlVGltZXIodGhpcywgbWVzc2FnZSwgc291cmNlT3JpZ2luLCBzb3VyY2UsIHJlY2VpcHRzLnJl
bGVhc2UoKSwgdGFyZ2V0LmdldCgpKTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDApOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCBhMmFkODA5Li4yMGZkMDgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmgKQEAgLTY2LDYgKzY2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIFN0b3JhZ2U7CiAgICAgY2xhc3MgU3RvcmFnZUluZm87CiAgICAgY2xhc3MgU3R5bGVN
ZWRpYTsKKyAgICBjbGFzcyBUcmFuc2ZlcmFibGU7CisgICAgY2xhc3MgVHJhbnNmZXJhYmxlUmVj
ZWlwdDsKICAgICBjbGFzcyBXZWJLaXRQb2ludDsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1B
VElPTl9GUkFNRSkKQEAgLTc0LDcgKzc2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
c3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogCi0gICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lc3Nh
Z2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJheTsKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
VHJhbnNmZXJhYmxlPiwgMT4gVHJhbnNmZXJhYmxlQXJyYXk7CisgICAgdHlwZWRlZiBWZWN0b3I8
T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHQ+LCAxPiBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk7
CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBAIC0yMjgsOSArMjMxLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKICAgICAg
ICAgdm9pZCByZXNldEdlb2xvY2F0aW9uKCk7CiAKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBv
cnRBcnJheSosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwg
RXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBUcmFuc2ZlcmFibGVBcnJheSosIGNv
bnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9i
akMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIGNvbnN0
IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYp
OworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwg
RE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0TWVz
c2FnZVRpbWVyRmlyZWQoUGFzc093blB0cjxQb3N0TWVzc2FnZVRpbWVyPik7CiAKICAgICAgICAg
dm9pZCBzY3JvbGxCeShpbnQgeCwgaW50IHkpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCmluZGV4IDYyZjFjMzAuLmUyMWQyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwK
QEAgLTIxNSw2ICsyMTUsOCBAQCBtb2R1bGUgd2luZG93IHsKICNpZiBkZWZpbmVkKExBTkdVQUdF
X0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICAgICAgW0RvTm90Q2hlY2tE
b21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cywgaW4gRE9N
U3RyaW5nIHRhcmdldE9yaWdpbikKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwor
ICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQgd2Via2l0UG9z
dE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0g
QXJyYXkgdHJhbnNmZXJMaXN0LCBpbiBET01TdHJpbmcgdGFyZ2V0T3JpZ2luKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZWxzZQogICAgICAgICAvLyBUaGVyZSdzIG5vIGdv
b2Qgd2F5IHRvIGV4cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBu
b3cganVzdCBhbGxvdyBwYXNzaW5nIGluIGEgc2luZ2xlIHBvcnQuCiAgICAgICAgIFtEb05vdENo
ZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9y
dCwgaW4gRE9NU3RyaW5nIHRhcmdldE9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5o
CmluZGV4IDlhZGU5YzguLjJmNGNlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaApA
QCAtNDMsNiArNDMsOCBAQCBjbGFzcyBJREJSZXF1ZXN0OwogY2xhc3MgSURCVHJhbnNhY3Rpb247
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOworY2xhc3MgVHJhbnNmZXJhYmxlOwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRyYW5zZmVy
YWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5OwogCiBjbGFzcyBJREJDdXJzb3IgOiBwdWJsaWMg
UmVmQ291bnRlZDxJREJDdXJzb3I+IHsKIHB1YmxpYzoKQEAgLTYzLDYgKzY1LDggQEAgcHVibGlj
OgogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElE
QktleT4gcHJpbWFyeUtleSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiB2YWx1ZSgpIGNvbnN0OworICAgIC8vIEFuIEluZGV4ZWREQiBvbmx5IGhvbGRzIGZs
YXR0ZW5lZCBkYXRhLgorICAgIFRyYW5zZmVyYWJsZUFycmF5KiB2YWx1ZURlcGVuZGVuY2llcygp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICBJREJBbnkqIHNvdXJjZSgpIGNvbnN0OwogCiAgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiB1cGRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKaW5kZXgg
NTRiNWJhOC4uOTY5ODA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGlj
YXRlZFdvcmtlckNvbnRleHQuY3BwCkBAIC00NywyNiArNDcsMjUgQEAgRGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6RGVkaWNhdGVkV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdXMKIH0KIAogLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBP
YmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLXZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6
cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1l
c3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UsIFRyYW5zZmVyYWJsZSogdHJhbnNmZXJhYmxlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwotICAgIGlmIChwb3J0KQotICAgICAgICBwb3J0
cy5hcHBlbmQocG9ydCk7Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnBvcnRzLCBlYyk7Cisg
ICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlczsKKyAgICBpZiAodHJhbnNmZXJhYmxl
KQorICAgICAgICB0cmFuc2ZlcmFibGVzLmFwcGVuZCh0cmFuc2ZlcmFibGUpOworICAgIHBvc3RN
ZXNzYWdlKG1lc3NhZ2UsICZ0cmFuc2ZlcmFibGVzLCBlYyk7CiB9CiAKIHZvaWQgRGVkaWNhdGVk
V29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHBvc3RNZXNzYWdlKG1lc3Nh
Z2UsIHN0YXRpY19jYXN0PE1lc3NhZ2VQb3J0QXJyYXkqPigwKSwgZWMpOworICAgIHBvc3RNZXNz
YWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PFRyYW5zZmVyYWJsZSo+KDApLCBlYyk7CiB9CiAKLXZv
aWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3Nh
Z2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFRyYW5z
ZmVyYWJsZUFycmF5KiB0cmFuc2ZlcmFibGVzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAv
LyBEaXNlbnRhbmdsZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0byB0
aGUgcmVtb3RlIGNvbnRleHQuCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBj
aGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7CisgICAg
T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMgPSBUcmFuc2ZlcmFibGU6
OnRyYW5zZmVyQWxsT3V0KHRyYW5zZmVyYWJsZXMsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
ZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwotICAgIHRocmVhZCgpLT53b3JrZXJP
YmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSwgY2hhbm5lbHMu
cmVsZWFzZSgpKTsKKyAgICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHkoKS5wb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KG1lc3NhZ2UsIHJlY2VpcHRzLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQg
RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdXJscywgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCmluZGV4IGRiYTUyYWUuLjg4MzkxMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCkBAIC01Niw5
ICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRXZlbnRUYXJnZXQKICAg
ICAgICAgdmlydHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdvcmtlckNv
bnRleHQoKSB7IHJldHVybiB0aGlzOyB9CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZv
aWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBN
ZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNz
YWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgVHJhbnNmZXJhYmxl
QXJyYXkqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3
aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZv
aWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBNZXNzYWdl
UG9ydCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFRyYW5zZmVyYWJsZSosIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG1lc3NhZ2UpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRl
eHQuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmlk
bAppbmRleCAyMmQzNTI1Li5iMGZiMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwKQEAgLTQzLDYgKzQzLDggQEAgbW9kdWxlIHRo
cmVhZHMgewogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFW
QVNDUklQVAogICAgICAgICBbQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIGFueSBtZXNzYWdl
LCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykKICAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHdlYmtpdFBvc3RNZXNzYWdlKGlu
IGFueSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IHRyYW5zZmVyTGlzdCkKKyAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgLy8gVGhlcmUncyBubyBn
b29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRpbmdzLCBzbyBmb3Ig
bm93IGp1c3QgYWxsb3cgcGFzc2luZyBpbiBhIHNpbmdsZSBwb3J0LgogICAgICAgICB2b2lkIHBv
c3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0
IG1lc3NhZ2VQb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29u
dGV4dC5jcHAKaW5kZXggMjQwMDJlNC4uZTU2Zjk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKIApAQCAtNDQsOSArNDUs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlQ29ubmVjdEV2ZW50KFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQpCiB7Ci0gICAgUmVm
UHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShhZG9wdFB0cihu
ZXcgTWVzc2FnZVBvcnRBcnJheSgxLCBwb3J0KSkpOworICAgIFJlZlB0cjxUcmFuc2ZlcmFibGU+
IHRyYW5zZmVyYWJsZShwb3J0KTsKKyAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCA9IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVBcnJheSgxLCB0cmFu
c2ZlcmFibGUpKSk7CiAgICAgZXZlbnQtPmluaXRFdmVudChldmVudE5hbWVzKCkuY29ubmVjdEV2
ZW50LCBmYWxzZSwgZmFsc2UpOwotICAgIHJldHVybiBldmVudDsKKyAgICByZXR1cm4gZXZlbnQu
cmVsZWFzZSgpOwogfQogCiBTaGFyZWRXb3JrZXJDb250ZXh0OjpTaGFyZWRXb3JrZXJDb250ZXh0
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAKaW5kZXggMjM3YjYxMC4uNTJjMjQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApA
QCAtODYsMjYgKzg2LDI2IEBAIFdvcmtlcjo6fldvcmtlcigpCiB9CiAKIC8vIEZJWE1FOiByZW1v
dmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi12
b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV29y
a2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwgVHJhbnNmZXJhYmxlKiB0cmFuc2ZlcmFibGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7Ci0gICAgaWYgKHBvcnQpCi0gICAgICAgIHBvcnRzLmFw
cGVuZChwb3J0KTsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmcG9ydHMsIGVjKTsKKyAgICBU
cmFuc2ZlcmFibGVBcnJheSB0cmFuc2ZlcmFibGVzOworICAgIGlmICh0cmFuc2ZlcmFibGUpCisg
ICAgICAgIHRyYW5zZmVyYWJsZXMuYXBwZW5kKHRyYW5zZmVyYWJsZSk7CisgICAgcG9zdE1lc3Nh
Z2UobWVzc2FnZSwgJnRyYW5zZmVyYWJsZXMsIGVjKTsKIH0KIAogdm9pZCBXb3JrZXI6OnBvc3RN
ZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNfY2FzdDxNZXNz
YWdlUG9ydEFycmF5Kj4oMCksIGVjKTsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCBzdGF0aWNf
Y2FzdDxUcmFuc2ZlcmFibGUqPigwKSwgZWMpOwogfQogCi12b2lkIFdvcmtlcjo6cG9zdE1lc3Nh
Z2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3Nh
Z2VQb3J0QXJyYXkqIHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV29ya2VyOjpwb3N0
TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3Qg
VHJhbnNmZXJhYmxlQXJyYXkqIHRyYW5zZmVyYWJsZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0
IHRvIHRoZSByZW1vdGUgY29udGV4dC4KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMsIGVjKTsK
KyAgICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IFRyYW5zZmVy
YWJsZTo6dHJhbnNmZXJBbGxPdXQodHJhbnNmZXJhYmxlcywgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0UHJv
eHktPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UsIGNoYW5uZWxzLnJlbGVhc2Uo
KSk7CisgICAgbV9jb250ZXh0UHJveHktPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3Nh
Z2UsIHJlY2VpcHRzLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgV29ya2VyOjp0ZXJtaW5hdGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggOGU0ZWMzYS4uNjY2MmI3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5oCkBAIC01Nyw5ICs1Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBXb3JrZXIqIHRvV29ya2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAg
IHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3Nh
Z2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgVHJhbnNmZXJhYmxlQXJyYXkqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVw
ZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9zdE1l
c3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQ
b3J0KiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBUcmFuc2ZlcmFibGUqLCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuaWRsCmluZGV4IDc2Mzc1NjkuLjM4ZTk2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5pZGwKQEAgLTQyLDYgKzQyLDggQEAgbW9kdWxlIHRocmVhZHMgewogI2lmIGRlZmluZWQoTEFO
R1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgICAgICBbQ3VzdG9t
XSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGlzZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBb
T3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHdlYmtpdFBvc3RNZXNzYWdlKGluIFNlcmlh
bGlzZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IHRyYW5zZmVyTGlz
dCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgLy8g
VGhlcmUncyBubyBnb29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRp
bmdzLCBzbyBmb3Igbm93IGp1c3QgYWxsb3cgcGFzc2luZyBpbiBhIHNpbmdsZSBwb3J0LgogICAg
ICAgICB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBp
biBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgKaW5kZXggODc5OGY1MS4uNDM1YTg4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCkBAIC0zMywxMyArMzMs
MTUgQEAKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIK
KyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKKyAgICB0
eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJs
ZVJlY2VpcHRBcnJheTsKICAgICBjbGFzcyBXb3JrZXI7CiAKICAgICAvLyBBIHByb3h5IHRvIHRh
bGsgdG8gdGhlIHdvcmtlciBjb250ZXh0LgpAQCAtNTMsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKSA9
IDA7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENo
YW5uZWxBcnJheT4pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3Jr
ZXJDb250ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxU
cmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBib29sIGhh
c1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCAwYTZmOGNiLi4yNGFhM2IzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAt
NDgsMTUgKzQ4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2FnZVdvcmtl
ckNvbnRleHRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzaz4gY3Jl
YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICBzdGF0aWMgUGFzc093blB0
cjxNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+
IHJlY2VpcHRzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29y
a2VyQ29udGV4dFRhc2sobWVzc2FnZSwgY2hhbm5lbHMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBNZXNzYWdlV29ya2VyQ29udGV4dFRhc2sobWVzc2FnZSwgcmVjZWlwdHMpKTsKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5PiBjaGFubmVscykKKyAgICBNZXNzYWdlV29ya2VyQ29udGV4dFRhc2soUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKICAgICAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkK
LSAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICAgICAsIG1fcmVjZWlwdHMocmVj
ZWlwdHMpCiAgICAgewogICAgIH0KIApAQCAtNjQsMjcgKzY0LDI3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBBU1NFUlQoc2NyaXB0Q29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogICAg
ICAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8RGVkaWNh
dGVkV29ya2VyQ29udGV4dCo+KHNjcmlwdENvbnRleHQpOwotICAgICAgICBPd25QdHI8TWVzc2Fn
ZVBvcnRBcnJheT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqc2NyaXB0Q29u
dGV4dCwgbV9jaGFubmVscy5yZWxlYXNlKCkpOwotICAgICAgICBjb250ZXh0LT5kaXNwYXRjaEV2
ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7Cisg
ICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRyYW5zZmVy
YWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oKnNjcmlwdENvbnRleHQsIG1fcmVjZWlwdHMucmVs
ZWFzZSgpKTsKKyAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNy
ZWF0ZSh0cmFuc2ZlcmFibGVzLnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7CiAgICAgICAgIGNvbnRl
eHQtPnRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtl
ck9iamVjdChjb250ZXh0LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfQogCiBwcml2YXRl
OgogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKLSAgICBPd25Q
dHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CisgICAgT3duUHRyPFRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheT4gbV9yZWNlaXB0czsKIH07CiAKIGNsYXNzIE1lc3NhZ2VXb3Jr
ZXJUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJv
eHkpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlclRhc2s+IGNyZWF0ZShQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2Fn
aW5nUHJveHkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VXb3Jr
ZXJUYXNrKG1lc3NhZ2UsIGNoYW5uZWxzLCBtZXNzYWdpbmdQcm94eSkpOworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VXb3JrZXJUYXNrKG1lc3NhZ2UsIHJlY2VpcHRzLCBtZXNz
YWdpbmdQcm94eSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNZXNzYWdlV29ya2VyVGFzayhQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNz
YWdpbmdQcm94eSkKKyAgICBNZXNzYWdlV29ya2VyVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+
IHJlY2VpcHRzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCiAgICAgICAg
IDogbV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgICwgbV9jaGFubmVscyhjaGFubmVscykKKyAg
ICAgICAgLCBtX3JlY2VpcHRzKHJlY2VpcHRzKQogICAgICAgICAsIG1fbWVzc2FnaW5nUHJveHko
bWVzc2FnaW5nUHJveHkpCiAgICAgewogICAgIH0KQEAgLTk1LDEzICs5NSwxMyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAoIXdvcmtlck9iamVjdCB8fCBtX21lc3NhZ2luZ1Byb3h5LT5hc2tlZFRv
VGVybWluYXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgT3duUHRyPE1lc3Nh
Z2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnNjcmlwdENv
bnRleHQsIG1fY2hhbm5lbHMucmVsZWFzZSgpKTsKLSAgICAgICAgd29ya2VyT2JqZWN0LT5kaXNw
YXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdl
KSk7CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVBcnJheT4gdHJhbnNmZXJhYmxlcyA9IFRy
YW5zZmVyYWJsZVJlY2VpcHQ6OnRyYW5zZmVyQWxsSW4oKnNjcmlwdENvbnRleHQsIG1fcmVjZWlw
dHMucmVsZWFzZSgpKTsKKyAgICAgICAgd29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2ZW50KE1lc3Nh
Z2VFdmVudDo6Y3JlYXRlKHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLCBtX21lc3NhZ2UpKTsKICAg
ICB9CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9tZXNz
YWdlOwotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKKyAg
ICBPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiBtX3JlY2VpcHRzOwogICAgIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OwogfTsKIApAQCAtMjQyLDIxICsyNDIs
MjEgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0
IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW4KICAgICB0aHJlYWQtPnN0YXJ0KCk7CiB9CiAK
LXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRz
KQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soTWVzc2FnZVdvcmtl
clRhc2s6OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscywgdGhpcykpOworICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2soTWVzc2FnZVdvcmtlclRhc2s6OmNyZWF0ZShtZXNzYWdl
LCByZWNlaXB0cywgdGhpcykpOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0
TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCit2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKQogewogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5h
dGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dvcmtlclRocmVhZCkgewogICAgICAg
ICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5y
dW5Mb29wKCkucG9zdFRhc2soTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2Fn
ZSwgY2hhbm5lbHMpKTsKKyAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFz
ayhNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdlLCByZWNlaXB0cykpOwog
ICAgIH0gZWxzZQotICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3Jr
ZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAgIG1fcXVl
dWVkRWFybHlUYXNrcy5hcHBlbmQoTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVz
c2FnZSwgcmVjZWlwdHMpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDM3MzE0ODAuLmM3NGFiODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTU1LDEz
ICs1NSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVz
ZSBtZXRob2RzIGluIHRoZSB3b3JrZXIgb2JqZWN0IHRocmVhZC4pCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzdGFydFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBv
c3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICB2aXJ0dWFs
IHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKIAogICAgICAgICAvLyBJbXBsZW1lbnRh
dGlvbnMgb2YgV29ya2VyT2JqZWN0UHJveHkuCiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVzZSBt
ZXRob2RzIGluIHRoZSB3b3JrZXIgY29udGV4dCB0aHJlYWQuKQotICAgICAgICB2aXJ0dWFsIHZv
aWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qo
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9iamVjdFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5
LmgKaW5kZXggMzNlMGJjMy4uMDFhMWYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT2JqZWN0UHJveHkuaApAQCAtMzMsMTggKzMzLDIwIEBACiAKICNpZiBFTkFCTEUoV09SS0VS
UykKIAorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldvcmtl
clJlcG9ydGluZ1Byb3h5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBNZXNz
YWdlUG9ydENoYW5uZWw7CisgICAgY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdDsKKyAgICB0eXBl
ZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheTsKIAogICAgIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIG9iamVj
dC4KICAgICBjbGFzcyBXb3JrZXJPYmplY3RQcm94eSA6IHB1YmxpYyBXb3JrZXJSZXBvcnRpbmdQ
cm94eSB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0
TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
UGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+KSA9IDA7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdB
Y3Rpdml0eSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5
KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDkyNzI4MzkuLmVkYzdhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNjAgQEAKKzIwMTEtMDgtMTkgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgor
CisgICAgICAgIE1ha2UgTWVzc2FnZVBvcnQgVHJhbnNmZXJhYmxlLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQ3JlYXRlZCBhIFdlYk1lc3NhZ2VQ
b3J0UmVjZWlwdCBjbGFzcyB0byB3cmFwIE1lc3NhZ2VQb3J0UmVjZWlwdDsKKyAgICAgICAgICB0
aGVzZSBtdXN0IGJlIGRlYWxsb2NhdGVkIGJ5IHRoZSBlbWJlZGRlci4KKyAgICAgICAgLSBFeHRy
YWN0IGNvbnZlcnNpb24gZnJvbSBXZWJNZXNzYWdlUG9ydENoYW5uZWwgdG8vZnJvbSBNZXNzYWdl
UG9ydENoYW5uZWwgYXMKKyAgICAgICAgICB0aGUgVHJhbnNmZXJhYmxlLWdlbmVyaWMgdG9UcmFu
c2ZlcmFibGVSZWNlaXB0L3RvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdAorICAgICAgICAtIEV4cG9z
ZSBmbGF0dGVuUmVjZWlwdExpc3QgZnJvbSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgYW5kIHVzZSB0
aGlzIHdoZW4gYQorICAgICAgICAgIG1lc3NhZ2UgbmVlZHMgdG8gYmUgc2VudCBhY3Jvc3MgYW4g
SVBDIGNoYW5uZWwuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9X
ZWJNZXNzYWdlUG9ydENoYW5uZWwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVzc2FnZVBvcnRS
ZWNlaXB0OjpXZWJNZXNzYWdlUG9ydFJlY2VpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNz
YWdlUG9ydFJlY2VpcHQ6OmNoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9y
dFJlY2VpcHQ6On5XZWJNZXNzYWdlUG9ydFJlY2VpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZXNzYWdlUG9ydFJlY2VpcHQ6OmFzV2ViTWVzc2FnZVBvcnRSZWNlaXB0KToKKyAgICAgICAgKiBw
dWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogcHVibGljL1dlYlRy
YW5zZmVyYWJsZVJlY2VpcHQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmguCisgICAgICAgIChXZWJLaXQ6OldlYlRy
YW5zZmVyYWJsZVJlY2VpcHQ6On5XZWJUcmFuc2ZlcmFibGVSZWNlaXB0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdDo6YXNXZWJNZXNzYWdlUG9ydFJlY2VpcHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2ZlcmFibGVSZWNlaXB0OjpXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0KToKKyAgICAgICAgKiBwdWJsaWMvV2ViV29ya2VyLmg6CisgICAgICAgICogcHVibGlj
L1dlYldvcmtlckNsaWVudC5oOgorICAgICAgICAqIHNyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6
cG9zdE1lc3NhZ2VUb1JlbW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUpOgorICAgICAgICAqIHNyYy9XZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmlzRmxhdHRlbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmZsYXR0ZW5SZWNlaXB0TGlzdCk6CisgICAgICAgICogc3JjL1dlYlNo
YXJlZFdvcmtlckltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnRvVHJhbnNmZXJhYmxlUmVjZWlwdCk6Cisg
ICAgICAgIChXZWJLaXQ6OnRvVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KToKKyAgICAgICAgKFdl
YktpdDo6dG9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0KToKKyAgICAgICAgKFdlYktpdDo6dG9XZWJU
cmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkpOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYk1lc3NhZ2VQ
b3J0UmVjZWlwdCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckJhc2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VUYXNrKToKKyAgICAgICAgKiBz
cmMvV2ViV29ya2VyQmFzZS5oOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0
TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50
SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJP
YmplY3RUYXNrKToKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oOgorICAgICAg
ICAqIHNyYy9XZWJXb3JrZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VySW1w
bDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
V29ya2VySW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgorICAgICAgICAqIHNyYy9X
ZWJXb3JrZXJJbXBsLmg6CisKIDIwMTEtMDgtMTAgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBSb2xsZWQgREVQUyA5NTgxMzo5NjAw
OSB0byBwaWNrIGRhdGEgdXJsIHRpbWluZyBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
aW5kZXggYjk3YTY3Yy4uMGVmYTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAt
MjgwLDYgKzI4MCw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0SW5wdXRUeXBl
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dFJ1bi5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlRocmVhZFNhZmVEYXRhLmgnLAorICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YlVSTC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVSTEVycm9yLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVVJMTG9hZGVyLmgnLApAQCAtNTY1LDYgKzU2Niw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTdHJpbmcuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlRleHRSdW4uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlRocmVhZFNhZmVEYXRh
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkwuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlVSTExvYWRUaW1pbmcuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTFJlcXVl
c3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1l
c3NhZ2VQb3J0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVz
c2FnZVBvcnRDaGFubmVsLmgKaW5kZXggMjg4YmQ1NS4uMzFmMTg0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFubmVsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFubmVsLmgKQEAg
LTMyLDE1ICszMiwxNSBAQAogI2RlZmluZSBXZWJNZXNzYWdlUG9ydENoYW5uZWxfaAogCiAjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgog
I2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vi
TWVzc2FnZVBvcnRDaGFubmVsQ2xpZW50OworY2xhc3MgV2ViTWVzc2FnZVBvcnRSZWNlaXB0Owog
Y2xhc3MgV2ViU3RyaW5nOwogCi10eXBlZGVmIFdlYlZlY3RvcjxjbGFzcyBXZWJNZXNzYWdlUG9y
dENoYW5uZWwqPiBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheTsKLQogLy8gUHJvdmlkZXMgYW4g
aW50ZXJmYWNlIHRvIGEgTWVzc2FnZSBQb3J0IENoYW5uZWwgaW1wbGVtZW50YXRpb24uICBUaGUg
b2JqZWN0IG93bnMgaXRzZWxmIGFuZAogLy8gaXMgc2lnbmFsbGVkIHRoYXQgaXRzIG5vdCBuZWVk
ZWQgYW55bW9yZSB3aXRoIHRoZSBkZXN0cm95KCkgY2FsbC4KIGNsYXNzIFdlYk1lc3NhZ2VQb3J0
Q2hhbm5lbCB7CkBAIC01MCwxMyArNTAsMjUgQEAgcHVibGljOgogICAgIC8vIFdlYktpdCB2ZXJz
aW9ucyBvZiBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWwuCiAgICAgdmlydHVhbCB2b2lkIGVu
dGFuZ2xlKFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCopID0gMDsKICAgICAvLyBDYWxsZWUgcmVjZWl2
ZXMgb3duZXJzaGlwIG9mIHRoZSBwYXNzZWQgdmVjdG9yLgotICAgIHZpcnR1YWwgdm9pZCBwb3N0
TWVzc2FnZShjb25zdCBXZWJTdHJpbmcmLCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSopID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgdHJ5R2V0TWVzc2FnZShXZWJTdHJpbmcqLCBXZWJNZXNzYWdl
UG9ydENoYW5uZWxBcnJheSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2UoY29u
c3QgV2ViU3RyaW5nJiwgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KikgPSAwOworICAgIC8v
IENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHRzIHJldHVybmVkLCBpZiBhbnkuCisgICAgdmlydHVhbCBib29sIHRyeUdldE1lc3NhZ2VX
aXRoTmV3UmVjZWlwdHMoV2ViU3RyaW5nKiwgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5Jikg
PSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYk1lc3NhZ2VQb3J0Q2hhbm5lbCgpIHsgfQogfTsK
IAorY2xhc3MgV2ViTWVzc2FnZVBvcnRSZWNlaXB0IDogcHVibGljIFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHQgeworcHVibGljOgorICAgIFdlYk1lc3NhZ2VQb3J0UmVjZWlwdChXZWJNZXNzYWdlUG9y
dENoYW5uZWwqIGNoYW5uZWwpIDogbV9jaGFubmVsKGNoYW5uZWwpIHsgfQorICAgIFdlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbCogY2hhbm5lbCgpIHsgcmV0dXJuIG1fY2hhbm5lbDsgfQorICAgIH5XZWJN
ZXNzYWdlUG9ydFJlY2VpcHQoKSB7IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgV2ViTWVz
c2FnZVBvcnRSZWNlaXB0KiBhc1dlYk1lc3NhZ2VQb3J0UmVjZWlwdCgpIHsgcmV0dXJuIHRoaXM7
IH0KKyAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWwqIG1fY2hhbm5lbDsKK307CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggZjA1YjI3ZC4uYmI4
ZGM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTMzLDExICszMywxNiBAQAogCiAjaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUgIldlYlZl
Y3Rvci5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsgfQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwor
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlRyYW5z
ZmVyYWJsZVJlY2VpcHQ7Cit0eXBlZGVmIFdlYlZlY3RvcjxjbGFzcyBXZWJUcmFuc2ZlcmFibGVS
ZWNlaXB0Kj4gV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OwogCiBjbGFzcyBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUgewogcHVibGljOgpAQCAtNjQsNiArNjksMTUgQEAgcHVibGljOgogICAg
IC8vIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS4KICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB0b1N0cmluZygpIGNvbnN0
OwogCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0ZsYXR0ZW5hYmxlKFdlYlRyYW5z
ZmVyYWJsZVJlY2VpcHQqKTsKKworICAgIC8vIEZsYXR0ZW5zIGZsYXR0ZW5hYmxlIFdlYlRyYW5z
ZmVyYWJsZVJlY2VpcHRzIHRvIHRoZSBnaXZlbiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYQor
ICAgIC8vIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgcmV0dXJuaW5nIGEgbmV3IHJlcHJlc2Vu
dGF0aW9uLiBTZXRzIHVuZmxhdHRlbmFibGVDb3VudE91dAorICAgIC8vIHRvIHRoZSBudW1iZXIg
b2YgdW5mbGF0dGVuYWJsZSByZWNlaXB0cyBpbiB0aGUgcGFzc2VkLWluIGFycmF5LgorICAgIFdF
QktJVF9FWFBPUlQgc3RhdGljIFdlYlN0cmluZyBmbGF0dGVuUmVjZWlwdExpc3QoY29uc3QgV2Vi
U3RyaW5nJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIHVuZmxhdHRl
bmFibGVDb3VudE91dCk7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mKTsKICAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIG9wZXJhdG9y
PShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMDI1YmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUcmFu
c2ZlcmFibGVSZWNlaXB0LmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
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
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVHJhbnNmZXJhYmxl
UmVjZWlwdF9oCisjZGVmaW5lIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRfaAorCisjaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFRyYW5zZmVyYWJsZVJlY2VpcHQ7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VHJhbnNmZXJh
YmxlUmVjZWlwdD4sIDE+IFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKK30KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVzc2FnZVBvcnRSZWNlaXB0OworY2xhc3Mg
V2ViU3RyaW5nOworY2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDsKKwordHlwZWRlZiBXZWJW
ZWN0b3I8Y2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCo+IFdlYlRyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheTsKKworV0VCS0lUX0VYUE9SVCBXZWJNZXNzYWdlUG9ydFJlY2VpcHQqIHRvV2ViTWVz
c2FnZVBvcnRSZWNlaXB0KFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqKTsKKworI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgorLy8gVGhlc2UgZnVuY3Rpb25zIGNvbnZlcnQgYmV0d2VlbiBUcmFuc2Zl
cmFibGVSZWNlaXB0cyBhbmQgdGhlaXIgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdAorLy8gY291bnRl
cnBhcnRzLiBOb3RlIHRoYXQgdGhlc2UgY29udmVyc2lvbnMgbWF5IGhhdmUgc2lkZSBlZmZlY3Rz
LiBUaGUgKkFsbCBtZXRob2RzCisvLyBtYXAgdGhlIGNvbnZlcnNpb24gbWV0aG9kcyBhY3Jvc3Mg
dGhlIHBhc3NlZC1pbiBBcnJheXMgKGNoZWNraW5nIGZvciBudWxsIG9yIGVtcHR5IEFycmF5cwor
Ly8gaW4gdGhlIHByb2Nlc3MpLgorUGFzc093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNl
aXB0PiB0b1RyYW5zZmVyYWJsZVJlY2VpcHQoV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCopOworUGFz
c093blB0cjxXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IHRvVHJhbnNmZXJhYmxl
UmVjZWlwdEFycmF5KGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSopOworV2ViVHJh
bnNmZXJhYmxlUmVjZWlwdCogdG9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0KFdlYkNvcmU6OlRyYW5z
ZmVyYWJsZVJlY2VpcHQqKTsKK1dlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSogdG9XZWJUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXkoY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5Kik7CisjZW5kaWYKKworY2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCB7CitwdWJsaWM6
CisgICAgLy8gVGhlIGVtYmVkZGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgV2Vi
VHJhbnNmZXJhYmxlUmVjZWlwdHMgaXQgcmVxdWVzdHMuCisgICAgdmlydHVhbCB+V2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdCgpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIFdlYk1lc3NhZ2VQ
b3J0UmVjZWlwdCogdG9XZWJNZXNzYWdlUG9ydFJlY2VpcHQoV2ViVHJhbnNmZXJhYmxlUmVjZWlw
dCopOworICAgIHZpcnR1YWwgV2ViTWVzc2FnZVBvcnRSZWNlaXB0KiBhc1dlYk1lc3NhZ2VQb3J0
UmVjZWlwdCgpIHsgcmV0dXJuIDA7IH0KKyAgICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYldvcmtlci5oCmluZGV4IDY2NGU1YWUuLjIyNjBiNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlci5oCkBAIC0zNiw5ICszNiwxMiBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlRyYW5zZmVy
YWJsZVJlY2VpcHQ7CiBjbGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJXb3JrZXJDbGllbnQ7CiAKK3R5
cGVkZWYgV2ViVmVjdG9yPGNsYXNzIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqPiBXZWJUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXk7CisKIC8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSB0byB0aGUgc2Ny
aXB0IGV4ZWN1dGlvbiBjb250ZXh0IGZvciBhIHdvcmtlci4KIGNsYXNzIFdlYldvcmtlciB7CiBw
dWJsaWM6CkBAIC01Miw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGVybWlu
YXRlV29ya2VyQ29udGV4dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoCiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYsCi0gICAgICAgIGNvbnN0IFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOworICAgICAgICBjb25zdCBXZWJUcmFuc2Zl
cmFibGVSZWNlaXB0QXJyYXkmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERl
c3Ryb3llZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpZW50RGVzdHJveWVkKCkgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlckNsaWVudC5oCmlu
ZGV4IGViMmU2M2UuLmE0ODNjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYldvcmtlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYldvcmtlckNsaWVudC5oCkBAIC0zOCw4ICszOCwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOwogY2xhc3MgV2ViU3RyaW5nOwor
Y2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDsKIGNsYXNzIFdlYldvcmtlcjsKIAordHlwZWRl
ZiBXZWJWZWN0b3I8Y2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCo+IFdlYlRyYW5zZmVyYWJs
ZVJlY2VpcHRBcnJheTsKKwogLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJhY2sgdG8gdGhlIGlu
LXBhZ2Ugc2NyaXB0IG9iamVjdCBmb3IgYSB3b3JrZXIuCiAvLyBBbGwgZnVuY3Rpb25zIGFyZSBl
eHBlY3RlZCB0byBiZSBjYWxsZWQgYmFjayBvbiB0aGUgdGhyZWFkIHRoYXQgY3JlYXRlZAogLy8g
dGhlIFdvcmtlciBvYmplY3QsIHVubGVzcyBub3RlZC4KQEAgLTQ3LDcgKzUwLDcgQEAgY2xhc3Mg
V2ViV29ya2VyQ2xpZW50IDogcHVibGljIFdlYkNvbW1vbldvcmtlckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCiAgICAgICAgIGNv
bnN0IFdlYlN0cmluZyYsCi0gICAgICAgIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
JikgPSAwOworICAgICAgICBjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdB
Y3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCmlu
ZGV4IDZlNGRlNDQuLmQyNGU1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKQEAgLTE4MCwxNyArMTgw
LDkgQEAgdm9pZCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90
ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm4KICAgICAgICAgcmV0dXJuOwogCiAgICAgV2Vi
U3RyaW5nIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLT5tZXNzYWdlKCktPnRvV2lyZVN0cmluZygp
OwotICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMg
PSBtZXNzYWdlLT5jaGFubmVscygpOwotICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiB3
ZWJDaGFubmVscyA9IDA7Ci0gICAgaWYgKGNoYW5uZWxzLmdldCgpICYmIGNoYW5uZWxzLT5zaXpl
KCkpIHsKLSAgICAgICAgd2ViQ2hhbm5lbHMgPSBuZXcgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJy
YXkoY2hhbm5lbHMtPnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hh
bm5lbHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbCogcGxhdGZvcm1DaGFubmVsID0gKCpjaGFubmVscylbaV0tPmNoYW5uZWwo
KTsKLSAgICAgICAgICAgICgqd2ViQ2hhbm5lbHMpW2ldID0gcGxhdGZvcm1DaGFubmVsLT53ZWJD
aGFubmVsUmVsZWFzZSgpOwotICAgICAgICAgICAgKCp3ZWJDaGFubmVscylbaV0tPnNldENsaWVu
dCgwKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtX3dlYkNoYW5uZWwtPnBvc3RNZXNzYWdlKG1l
c3NhZ2VTdHJpbmcsIHdlYkNoYW5uZWxzKTsKKyAgICBPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IG1lc3NhZ2UtPnJlY2VpcHRzKCk7CisgICAgV2Vi
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KiB3ZWJSZWNlaXB0cyA9IHRvV2ViVHJhbnNmZXJhYmxl
UmVjZWlwdEFycmF5KHJlY2VpcHRzLmdldCgpKTsKKyAgICBtX3dlYkNoYW5uZWwtPnBvc3RNZXNz
YWdlKG1lc3NhZ2VTdHJpbmcsIHdlYlJlY2VpcHRzKTsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbDo6RXZlbnREYXRhPiYgcmVzdWx0KQpAQCAtMTk5LDIwICsxOTEsMTggQEAgYm9vbCBQ
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgV2ViU3RyaW5n
IG1lc3NhZ2U7Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkgd2ViQ2hhbm5lbHM7Ci0g
ICAgYm9vbCBydiA9IG1fd2ViQ2hhbm5lbC0+dHJ5R2V0TWVzc2FnZSgmbWVzc2FnZSwgd2ViQ2hh
bm5lbHMpOworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3ZWJSZWNlaXB0czsKKyAg
ICBib29sIHJ2ID0gbV93ZWJDaGFubmVsLT50cnlHZXRNZXNzYWdlV2l0aE5ld1JlY2VpcHRzKCZt
ZXNzYWdlLCB3ZWJSZWNlaXB0cyk7CiAgICAgaWYgKHJ2KSB7Ci0gICAgICAgIE93blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7Ci0gICAgICAgIGlmICh3ZWJDaGFubmVscy5z
aXplKCkpIHsKLSAgICAgICAgICAgIGNoYW5uZWxzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5KHdlYkNoYW5uZWxzLnNpemUoKSkpOwotICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAg
IFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcGxhdGZvcm1DaGFubmVsID0gY3Jl
YXRlKHdlYkNoYW5uZWxzW2ldKTsKLSAgICAgICAgICAgICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0
Q2xpZW50KHBsYXRmb3JtQ2hhbm5lbC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgKCpjaGFubmVs
cylbaV0gPSBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShwbGF0Zm9ybUNoYW5uZWwpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+IHJlY2VpcHRzID0gdG9UcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkoJndlYlJlY2VpcHRz
KTsKICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZE1lc3Nh
Z2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKG1lc3NhZ2UpOwotICAg
ICAgICByZXN1bHQgPSBNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKHNlcmlh
bGl6ZWRNZXNzYWdlLnJlbGVhc2UoKSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKyAgICAgICAgcmVz
dWx0ID0gTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZShzZXJpYWxpemVkTWVz
c2FnZS5yZWxlYXNlKCksIHJlY2VpcHRzLnJlbGVhc2UoKSk7CisjaWZkZWYgV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdF9oCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViUmVjZWlwdHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGRlbGV0ZSB3ZWJSZWNlaXB0c1tpXTsKKyAgICAg
ICAgICAgIHdlYlJlY2VpcHRzW2ldID0gMDsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogCiAg
ICAgcmV0dXJuIHJ2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNzE0OWE0ZC4uYWRiZmExNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRl
ICJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtNjMsNiArNjUsMzQgQEAgV2ViU3RyaW5nIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
dG9TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPnRvV2lyZVN0cmluZygpOwog
fQogCitib29sIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6aXNGbGF0dGVuYWJsZShXZWJUcmFu
c2ZlcmFibGVSZWNlaXB0KiByZWNlaXB0KQoreworICAgIHJldHVybiAhdG9XZWJNZXNzYWdlUG9y
dFJlY2VpcHQocmVjZWlwdCk7Cit9CisKK1dlYlN0cmluZyBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmZsYXR0ZW5SZWNlaXB0TGlzdChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JiByZWNlaXB0cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIHVuZmxhdHRlbmFibGVD
b3VudCkKK3sKKyAgICBzaXplX3QgdW5mbGF0dGVuYWJsZXNGb3VuZCA9IDA7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByZWNlaXB0cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoIWlz
RmxhdHRlbmFibGUocmVjZWlwdHNbaV0pKQorICAgICAgICAgICAgKyt1bmZsYXR0ZW5hYmxlc0Zv
dW5kOworICAgIH0KKyAgICBpZiAodW5mbGF0dGVuYWJsZUNvdW50KQorICAgICAgICAqdW5mbGF0
dGVuYWJsZUNvdW50ID0gdW5mbGF0dGVuYWJsZXNGb3VuZDsKKyAgICBpZiAodW5mbGF0dGVuYWJs
ZXNGb3VuZCA9PSByZWNlaXB0cy5zaXplKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlOworICAg
IE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IGNvcmVSZWNlaXB0cyA9IGFkb3B0UHRy
KG5ldyBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkocmVjZWlwdHMuc2l6ZSgpKSk7CisgICAgLy8g
ZnJvbVdlYigpIG1heSBoYXZlIHVud2FudGVkIHNpZGUtZWZmZWN0cywgc28gb25seSBjb252ZXJ0
IGZsYXR0ZW5hYmxlIHJlY2VpcHRzLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjZWlw
dHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgKCpjb3JlUmVjZWlwdHMpW2ldID0gaXNGbGF0dGVu
YWJsZShyZWNlaXB0c1tpXSkKKyAgICAgICAgICAgID8gdG9UcmFuc2ZlcmFibGVSZWNlaXB0KHJl
Y2VpcHRzW2ldKQorICAgICAgICAgICAgOiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpmbGF0dGVuUmVjZWlwdExpc3QobWVzc2FnZSwg
KmNvcmVSZWNlaXB0cyk7Cit9CisKIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6V2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlKGNvbnN0IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYg
dmFsdWUpCiAgICAgOiBtX3ByaXZhdGUodmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCmluZGV4IDRhMzJmYjMuLjVhZTJl
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtl
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtl
ckltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJU
cmFuc2ZlcmFibGVSZWNlaXB0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRy
YW5zZmVyYWJsZVJlY2VpcHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjdlNWNlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJp
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
Zy5oIgorI2luY2x1ZGUgIldlYlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKKworI2luY2x1ZGUgIlBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlUmVjZWlw
dC5oIgorI2luY2x1ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIldlYlN0
cmluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gdG9UcmFuc2ZlcmFibGVSZWNlaXB0
KFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqIHJlY2VpcHQpCit7CisgICAgaWYgKFdlYk1lc3NhZ2VQ
b3J0UmVjZWlwdCogd2ViTWVzc2FnZVBvcnRSZWNlaXB0ID0gdG9XZWJNZXNzYWdlUG9ydFJlY2Vp
cHQocmVjZWlwdCkpIHsKKyAgICAgICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsKiB3ZWJNZXNzYWdl
UG9ydENoYW5uZWwgPSB3ZWJNZXNzYWdlUG9ydFJlY2VpcHQtPmNoYW5uZWwoKTsKKyAgICAgICAg
UmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBwbGF0Zm9ybUNoYW5uZWwgPSBQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCk7Cisg
ICAgICAgIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbC0+c2V0Q2xpZW50KHBsYXRmb3JtQ2hhbm5lbC5n
ZXQoKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlUG9ydFJlY2VpcHQ6OmNyZWF0ZShNZXNzYWdl
UG9ydENoYW5uZWw6OmNyZWF0ZShwbGF0Zm9ybUNoYW5uZWwpKTsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Bhc3NPd25QdHI8V2Vi
Q29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiB0b1RyYW5zZmVyYWJsZVJlY2VpcHRBcnJh
eShjb25zdCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqIHJlY2VpcHRzKQoreworICAgIE93
blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXk+IGltcG9ydGVkUmVjZWlwdHM7CisgICAgaWYg
KHJlY2VpcHRzICYmIHJlY2VpcHRzLT5zaXplKCkpIHsKKyAgICAgICAgaW1wb3J0ZWRSZWNlaXB0
cyA9IGFkb3B0UHRyKG5ldyBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkocmVjZWlwdHMtPnNpemUo
KSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY2VpcHRzLT5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgICgqaW1wb3J0ZWRSZWNlaXB0cylbaV0gPSB0b1RyYW5zZmVyYWJsZVJl
Y2VpcHQoKCpyZWNlaXB0cylbaV0pOworICAgIH0KKyAgICByZXR1cm4gaW1wb3J0ZWRSZWNlaXB0
cy5yZWxlYXNlKCk7Cit9CisKK1dlYlRyYW5zZmVyYWJsZVJlY2VpcHQqIHRvV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdChUcmFuc2ZlcmFibGVSZWNlaXB0KiByZWNlaXB0KQoreworICAgIGlmIChNZXNz
YWdlUG9ydFJlY2VpcHQqIG1lc3NhZ2VQb3J0Q2hhbm5lbFJlY2VpcHQgPSByZWNlaXB0LT5hc01l
c3NhZ2VQb3J0UmVjZWlwdCgpKSB7CisgICAgICAgIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
KiBwbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCA9IG1lc3NhZ2VQb3J0Q2hhbm5lbFJlY2VpcHQt
Pm1lc3NhZ2VQb3J0Q2hhbm5lbCgpLT5jaGFubmVsKCk7CisgICAgICAgIFdlYk1lc3NhZ2VQb3J0
Q2hhbm5lbCogd2ViTWVzc2FnZVBvcnRDaGFubmVsID0gcGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWwtPndlYkNoYW5uZWxSZWxlYXNlKCk7CisgICAgICAgIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbC0+
c2V0Q2xpZW50KDApOworICAgICAgICByZXR1cm4gbmV3IFdlYk1lc3NhZ2VQb3J0UmVjZWlwdCh3
ZWJNZXNzYWdlUG9ydENoYW5uZWwpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KiB0b1dlYlRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheShjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXkqIHJlY2VpcHRzKQoreworICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSogZXhw
b3J0ZWRSZWNlaXB0cyA9IDA7CisgICAgaWYgKHJlY2VpcHRzICYmIHJlY2VpcHRzLT5zaXplKCkp
IHsKKyAgICAgICAgZXhwb3J0ZWRSZWNlaXB0cyA9IG5ldyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXkocmVjZWlwdHMtPnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cmVjZWlwdHMtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgKCpleHBvcnRlZFJlY2VpcHRzKVtp
XSA9IHRvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCgoKnJlY2VpcHRzKVtpXS5nZXQoKSk7CisgICAg
fQorICAgIHJldHVybiBleHBvcnRlZFJlY2VpcHRzOworfQorCitXZWJNZXNzYWdlUG9ydFJlY2Vp
cHQqIHRvV2ViTWVzc2FnZVBvcnRSZWNlaXB0KFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqIHJlY2Vp
cHQpCit7CisgICAgcmV0dXJuIHJlY2VpcHQtPmFzV2ViTWVzc2FnZVBvcnRSZWNlaXB0KCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJCYXNlLmNwcAppbmRleCBkNjE4NjcyLi44OWQ3ZWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcApAQCAtMzUyLDI3ICszNTIsMzAgQEAg
dm9pZCBXZWJXb3JrZXJCYXNlOjpvcGVuRmlsZVN5c3RlbUZvcldvcmtlcihXZWJGaWxlU3lzdGVt
OjpUeXBlIHR5cGUsIGxvbmcgbG9uZwogLy8gV29ya2VyT2JqZWN0UHJveHkgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBX
ZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5u
ZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NP
d25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKICAgICBkaXNwYXRj
aFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRhc2ssIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwgY2hhbm5lbHMpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Ut
PnRvV2lyZVN0cmluZygpLCByZWNlaXB0cykpOwogfQogCiB2b2lkIFdlYldvcmtlckJhc2U6OnBv
c3RNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNz
T3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAgICAgaWYgKCF0
aGlzUHRyLT5jbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViTWVzc2FnZVBvcnRD
aGFubmVsQXJyYXkgd2ViQ2hhbm5lbHMoY2hhbm5lbHMuZ2V0KCkgPyBjaGFubmVscy0+c2l6ZSgp
IDogMCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7ICsr
aSkgewotICAgICAgICB3ZWJDaGFubmVsc1tpXSA9ICgqY2hhbm5lbHMpW2ldLT5jaGFubmVsKCkt
PndlYkNoYW5uZWxSZWxlYXNlKCk7Ci0gICAgICAgIHdlYkNoYW5uZWxzW2ldLT5zZXRDbGllbnQo
MCk7Ci0gICAgfQorICAgIFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSB3ZWJSZWNlaXB0cyhy
ZWNlaXB0cy5nZXQoKSA/IHJlY2VpcHRzLT5zaXplKCkgOiAwKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHdlYlJlY2VpcHRzLnNpemUoKTsgKytpKQorICAgICAgICB3ZWJSZWNlaXB0c1tp
XSA9IHRvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCgoKnJlY2VpcHRzKVtpXS5nZXQoKSk7CisKKyAg
ICB0aGlzUHRyLT5jbGllbnQoKS0+cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlLCB3
ZWJSZWNlaXB0cyk7CiAKLSAgICB0aGlzUHRyLT5jbGllbnQoKS0+cG9zdE1lc3NhZ2VUb1dvcmtl
ck9iamVjdChtZXNzYWdlLCB3ZWJDaGFubmVscyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB3ZWJSZWNlaXB0cy5zaXplKCk7ICsraSkgeworICAgICAgICBkZWxldGUgd2ViUmVjZWlwdHNb
aV07CisgICAgICAgIHdlYlJlY2VpcHRzW2ldID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgV2ViV29y
a2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
QmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCmluZGV4
IDllZmNlMTUuLjdhMDVhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYldvcmtlckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3Jr
ZXJCYXNlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoV09SS0VSUykKIAogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckxv
YWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKQEAgLTY4LDcgKzY5
LDcgQEAgcHVibGljOgogICAgIC8vIFdlYkNvcmU6Oldvcmtlck9iamVjdFByb3h5IG1ldGhvZHM6
CiAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCiAgICAgICAgIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwKLSAgICAgICAgUGFzc093
blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICBQYXNzT3du
UHRyPFdlYkNvcmU6OlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAgIHZpcnR1YWwgdm9p
ZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoCiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5n
JiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29s
ZU1lc3NhZ2VUb1dvcmtlck9iamVjdCgKQEAgLTEyMyw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAg
ICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICBX
ZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAogICAgICAgICBXVEY6OlN0cmluZyBtZXNzYWdlLAotICAg
ICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVs
cyk7CisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6VHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
Pik7CiAgICAgc3RhdGljIHZvaWQgcG9zdEV4Y2VwdGlvblRhc2soCiAgICAgICAgIFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgIFdlYldvcmtlckJhc2Uq
IHRoaXNQdHIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3Jr
ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNs
aWVudEltcGwuY3BwCmluZGV4IGMxOThjY2YuLjJiNGQzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCkBAIC02NSw2ICs2NSwx
MSBAQAogI2luY2x1ZGUgIldlYldvcmtlci5oIgogI2luY2x1ZGUgIldlYldvcmtlckltcGwuaCIK
IAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVHJhbnNmZXJhYmxlOwordHlwZWRlZiBWZWN0
b3I8UmVmUHRyPFRyYW5zZmVyYWJsZT4sIDE+IFRyYW5zZmVyYWJsZUFycmF5OworfQorCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNzUsNyArMTgw
LDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkK
IAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCgK
ICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwKLSAgICBQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICBQYXNzT3duUHRy
PFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7CiAgICAgLy8gV29ya2VyLnRl
cm1pbmF0ZSgpIGNvdWxkIGJlIGNhbGxlZCBmcm9tIEpTIGJlZm9yZSB0aGUgY29udGV4dCBpcyBz
dGFydGVkLgogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCkBAIC0xODUsMTcgKzE5MCwxNyBA
QCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KAog
ICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2ssCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLT50b1dpcmVTdHJp
bmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFubmVscykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHRzKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkgd2ViQ2hh
bm5lbHMoY2hhbm5lbHMuZ2V0KCkgPyBjaGFubmVscy0+c2l6ZSgpIDogMCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICBXZWJN
ZXNzYWdlUG9ydENoYW5uZWwqIHdlYmNoYW5uZWwgPQotICAgICAgICAgICAgICAgICAgICAgICAg
KCpjaGFubmVscylbaV0tPmNoYW5uZWwoKS0+d2ViQ2hhbm5lbFJlbGVhc2UoKTsKLSAgICAgICAg
d2ViY2hhbm5lbC0+c2V0Q2xpZW50KDApOwotICAgICAgICB3ZWJDaGFubmVsc1tpXSA9IHdlYmNo
YW5uZWw7CisgICAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5IHdlYlJlY2VpcHRzKHJlY2Vp
cHRzLmdldCgpID8gcmVjZWlwdHMtPnNpemUoKSA6IDApOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgd2ViUmVjZWlwdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHdlYlJlY2VpcHRzW2ldID0g
dG9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0KCgqcmVjZWlwdHMpW2ldLmdldCgpKTsKKyAgICBtX3dl
Yldvcmtlci0+cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQobWVzc2FnZS0+dG9XaXJlU3RyaW5n
KCksIHdlYlJlY2VpcHRzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlJlY2VpcHRz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGRlbGV0ZSB3ZWJSZWNlaXB0c1tpXTsKKyAgICAgICAg
d2ViUmVjZWlwdHNbaV0gPSAwOwogICAgIH0KLSAgICBtX3dlYldvcmtlci0+cG9zdE1lc3NhZ2VU
b1dvcmtlckNvbnRleHQobWVzc2FnZS0+dG9XaXJlU3RyaW5nKCksIHdlYkNoYW5uZWxzKTsKIH0K
IAogYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApA
QCAtMjM2LDI5ICsyNDEsMjAgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpzZW5kTWVzc2Fn
ZVRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIH0KIAogdm9pZCBXZWJXb3JrZXJD
bGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYgbWVz
c2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYgY2hhbm5lbHMpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5JiB3ZWJSZWNlaXB0cykKIHsKLSAgICBPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzMjsKLSAgICBpZiAoY2hhbm5lbHMuc2l6ZSgpKSB7Ci0g
ICAgICAgIGNoYW5uZWxzMiA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENoYW5uZWxBcnJheShj
aGFubmVscy5zaXplKCkpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGFubmVs
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsPiBwbGF0Zm9ybV9jaGFubmVsID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5uZWxzW2ldKTsKLSAgICAgICAg
ICAgIGNoYW5uZWxzW2ldLT5zZXRDbGllbnQocGxhdGZvcm1fY2hhbm5lbC5nZXQoKSk7Ci0gICAg
ICAgICAgICAoKmNoYW5uZWxzMilbaV0gPSBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShwbGF0
Zm9ybV9jaGFubmVsKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBPd25QdHI8VHJhbnNmZXJhYmxl
UmVjZWlwdEFycmF5PiByZWNlaXB0cyA9IHRvVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KCZ3ZWJS
ZWNlaXB0cyk7CiAKICAgICBpZiAoY3VycmVudFRocmVhZCgpICE9IG1fd29ya2VyVGhyZWFkSWQp
IHsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcobWVzc2FnZSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxz
Mi5yZWxlYXNlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdHMucmVsZWFzZSgpKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzayhtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuZ2V0KCksIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZSwgY2hhbm5lbHMyLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZSwgcmVjZWlwdHMucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBX
ZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgV2Vi
U3RyaW5nJiBlcnJvck1lc3NhZ2UsCkBAIC0zNjksMTYgKzM2NSwxOSBAQCB2b2lkIFdlYldvcmtl
ckNsaWVudEltcGw6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbgogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2Vy
Q29udGV4dFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNs
aWVudEltcGwqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8VHJhbnNmZXJhYmxl
UmVjZWlwdEFycmF5PiByZWNlaXB0cykKIHsKLSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eSB3ZWJDaGFubmVscyhjaGFubmVscy5nZXQoKSA/IGNoYW5uZWxzLT5zaXplKCkgOiAwKTsKKyAg
ICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkgd2ViUmVjZWlwdHMocmVjZWlwdHMuZ2V0KCkg
PyByZWNlaXB0cy0+c2l6ZSgpIDogMCk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdl
YkNoYW5uZWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHdlYkNoYW5uZWxzW2ldID0gKCpjaGFu
bmVscylbaV0tPmNoYW5uZWwoKS0+d2ViQ2hhbm5lbFJlbGVhc2UoKTsKLSAgICAgICAgd2ViQ2hh
bm5lbHNbaV0tPnNldENsaWVudCgwKTsKLSAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB3ZWJSZWNlaXB0cy5zaXplKCk7ICsraSkKKyAgICAgICAgd2ViUmVjZWlwdHNbaV0gPSB0b1dl
YlRyYW5zZmVyYWJsZVJlY2VpcHQoKCpyZWNlaXB0cylbaV0uZ2V0KCkpOworCisgICAgdGhpc1B0
ci0+bV93ZWJXb3JrZXItPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UsIHdlYlJl
Y2VpcHRzKTsKIAotICAgIHRoaXNQdHItPm1fd2ViV29ya2VyLT5wb3N0TWVzc2FnZVRvV29ya2Vy
Q29udGV4dChtZXNzYWdlLCB3ZWJDaGFubmVscyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB3ZWJSZWNlaXB0cy5zaXplKCk7ICsraSkgeworICAgICAgICBkZWxldGUgd2ViUmVjZWlwdHNb
aV07CisgICAgICAgIHdlYlJlY2VpcHRzW2ldID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgV2ViV29y
a2VyQ2xpZW50SW1wbDo6d29ya2VyT2JqZWN0RGVzdHJveWVkVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LApAQCAtMzg5LDI1ICszODgsMjIgQEAgdm9pZCBXZWJXb3JrZXJDbGll
bnRJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95ZWRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnQKICAgICBkZWxldGUgdGhpc1B0cjsKIH0KIAotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBs
Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKK3ZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9i
amVjdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50
SW1wbCogdGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+IHJlY2VpcHRzKQogewogCiAgICAgaWYgKHRoaXNQdHItPm1fd29ya2VyKSB7Ci0gICAg
ICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9Ci0gICAgICAgICAgICBNZXNzYWdl
UG9ydDo6ZW50YW5nbGVQb3J0cygqY29udGV4dCwgY2hhbm5lbHMpOworICAgICAgICBPd25QdHI8
VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMgPSBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0
cmFuc2ZlckFsbEluKCpjb250ZXh0LCByZWNlaXB0cyk7CiAgICAgICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRNZXNzYWdlID0KICAgICAgICAgICAgIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUobWVzc2FnZSk7Ci0gICAgICAgIHRoaXNQdHIt
Pm1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVh
c2UoKSwKKyAgICAgICAgdGhpc1B0ci0+bV93b3JrZXItPmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUodHJhbnNmZXJhYmxlcy5yZWxlYXNlKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRNZXNz
YWdlLnJlbGVhc2UoKSkpOwogICAgIH0KIH0KIAotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3RUYXNrKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsCit2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJD
bGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBs
aW5lTnVtYmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xp
ZW50SW1wbC5oCmluZGV4IGMyNzBmZmMuLjZjYTlkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAog
I2lmIEVOQUJMRShXT1JLRVJTKQogCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIldlYldvcmtlckNsaWVudC5o
IgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRQcm94eS5oIgpAQCAtNDIsNiArNDMsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3Mg
VHJhbnNmZXJhYmxlUmVjZWlwdDsKK3R5cGVkZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVS
ZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTcwLDcgKzczLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5h
dGVXb3JrZXJDb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJD
b250ZXh0KAogICAgICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwKLSAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4gY2hhbm5lbHMpOworICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5zZmVy
YWJsZVJlY2VpcHRBcnJheT4pOwogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiAKQEAg
LTgwLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgLy8gV2ViV29ya2VyQ2xpZW50IG1ldGhvZHM6
CiAgICAgLy8gVGhlc2UgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiBXZWJLaXQgdGhyZWFkLgotICAg
IHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYs
IGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Jik7CisgICAgdmlydHVhbCB2b2lkIHBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViVHJhbnNm
ZXJhYmxlUmVjZWlwdEFycmF5Jik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmLCBpbnQsIGNvbnN0IFdlYlN0cmluZyYpOwogCiAg
ICAgLy8gRklYTUU6IHRoZSBiZWxvdyBpcyBmb3IgY29tcGF0aWJpbGl0eSBvbmx5IGFuZCBzaG91
bGQgYmUKQEAgLTEyOCw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxXZWJD
b3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlRyYW5z
ZmVyYWJsZVJlY2VpcHRBcnJheT4pOwogICAgIHN0YXRpYyB2b2lkIHdvcmtlck9iamVjdERlc3Ry
b3llZFRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwq
IHRoaXNQdHIpOwogCkBAIC0xMzgsNyArMTQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6VHJh
bnNmZXJhYmxlUmVjZWlwdEFycmF5Pik7CiAgICAgc3RhdGljIHZvaWQgcG9zdEV4Y2VwdGlvblRv
V29ya2VyT2JqZWN0VGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29y
a2VyQ2xpZW50SW1wbCogdGhpc1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcAppbmRleCA2YzlmNDVjLi41NTY2OTI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcApAQCAt
ODIsMTggKzgyLDE4IEBAIFdlYkNvbW1vbldvcmtlckNsaWVudCogV2ViV29ya2VySW1wbDo6Y29t
bW9uQ2xpZW50KCkKIHZvaWQgV2ViV29ya2VySW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRl
eHRUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJJbXBs
KiB0aGlzUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4gY2hhbm5lbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXNzT3duUHRyPFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMpCiB7
CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKICAgICBEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0KICAgICAgICAgc3RhdGljX2Nhc3Q8RGVkaWNh
dGVkV29ya2VyQ29udGV4dCo+KGNvbnRleHQpOwogCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJy
YXk+IHBvcnRzID0KLSAgICAgICAgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmNvbnRleHQs
IGNoYW5uZWxzKTsKKyAgICBPd25QdHI8VHJhbnNmZXJhYmxlQXJyYXk+IHRyYW5zZmVyYWJsZXMg
PQorICAgICAgICBUcmFuc2ZlcmFibGVSZWNlaXB0Ojp0cmFuc2ZlckFsbEluKCpjb250ZXh0LCBy
ZWNlaXB0cyk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZE1l
c3NhZ2UgPQogICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKG1l
c3NhZ2UpOwogICAgIHdvcmtlckNvbnRleHQtPmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoCi0gICAgICAgIHBvcnRzLnJlbGVhc2UoKSwgc2VyaWFsaXplZE1lc3NhZ2UucmVsZWFz
ZSgpKSk7CisgICAgICAgIHRyYW5zZmVyYWJsZXMucmVsZWFzZSgpLCBzZXJpYWxpemVkTWVzc2Fn
ZS5yZWxlYXNlKCkpKTsKICAgICB0aGlzUHRyLT5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmpl
Y3Qod29ya2VyQ29udGV4dC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogfQogCkBAIC0xMTYsMjIg
KzExNiwxMiBAQCB2b2lkIFdlYldvcmtlckltcGw6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKQog
fQogCiB2b2lkIFdlYldvcmtlckltcGw6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0
IFdlYlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmIHdlYkNoYW5uZWxz
KQotewotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7Ci0gICAg
aWYgKHdlYkNoYW5uZWxzLnNpemUoKSkgewotICAgICAgICBjaGFubmVscyA9IGFkb3B0UHRyKG5l
dyBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSh3ZWJDaGFubmVscy5zaXplKCkpKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBwbGF0Zm9ybV9jaGFubmVs
ID0KLSAgICAgICAgICAgICAgICBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHdl
YkNoYW5uZWxzW2ldKTsKLSAgICAgICAgICAgIHdlYkNoYW5uZWxzW2ldLT5zZXRDbGllbnQocGxh
dGZvcm1fY2hhbm5lbC5nZXQoKSk7Ci0gICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IE1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3JtX2NoYW5uZWwpOwotICAgICAgICB9Ci0gICAg
fQotCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYlRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheSYgd2ViUmVjZWlwdHMpCit7CisgICAgT3duUHRy
PFRyYW5zZmVyYWJsZVJlY2VpcHRBcnJheT4gcmVjZWlwdHMgPSB0b1RyYW5zZmVyYWJsZVJlY2Vp
cHRBcnJheSgmd2ViUmVjZWlwdHMpOwogICAgIHdvcmtlclRocmVhZCgpLT5ydW5Mb29wKCkucG9z
dFRhc2soCiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VUb1dvcmtlckNv
bnRleHRUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwgU3RyaW5nKG1lc3NhZ2UpLCBjaGFubmVscy5yZWxlYXNlKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIFN0cmlu
ZyhtZXNzYWdlKSwgcmVjZWlwdHMucmVsZWFzZSgpKSk7CiB9CiAKIHZvaWQgV2ViV29ya2VySW1w
bDo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYldvcmtlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckltcGwuaAppbmRleCA3OWM5YzU0Li5jN2JlNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICAvLyBXZWJXb3JrZXIgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250
ZXh0KGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlN0cmluZyYpOwog
ICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7Ci0gICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Jik7CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdl
VG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlRyYW5zZmVyYWJsZVJl
Y2VpcHRBcnJheSYpOwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xpZW50RGVzdHJveWVkKCk7CiAKQEAgLTczLDcgKzczLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwKICAgICAgICAgV2ViV29ya2VySW1wbCogdGhpc1B0ciwKICAgICAgICAgY29uc3QgV1RGOjpT
dHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzKTsKKyAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpUcmFu
c2ZlcmFibGVSZWNlaXB0QXJyYXk+IHJlY2VpcHRzKTsKIAogICAgIFdlYldvcmtlckNsaWVudCog
bV9jbGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDhjYzlhMmMuLmMyNmMyMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wOC0xOSAgTHVrZSBa
YXJrbyAgPGx1a2V6YXJrb0BnbWFpbC5jb20+CisKKyAgICAgICAgTWFrZSBNZXNzYWdlUG9ydCBU
cmFuc2ZlcmFibGUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1MjA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViV29ya2VyLmg6CisgICAgICAg
IChUZXN0V2ViV29ya2VyOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgIChU
ZXN0V2ViV29ya2VyOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKwogMjAxMS0wOC0xMCAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFRoZSBVUkwgd2Ugd2Vy
ZSBjb21wdXRpbmcgZm9yIHJldHJpZXZpbmcgYmFzZWxpbmVzIHdhcyBtaXNzaW5nIGEgc2xhc2gK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaAppbmRleCA3
MWJmZmNlLi4xMmUyYzg0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0V2ViV29ya2VyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFdlYldvcmtlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZWJXb3JrZXIg
bWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYktp
dDo6V2ViVVJMJiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBjb25zdCBXZWJLaXQ6OldlYlN0
cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiwgY29uc3QgV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFy
cmF5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpCiAgICAg
ewogICAgICAgICAvLyBSZWxlYXNlcyB0aGUgcmVmZXJlbmNlIGhlbGQgZm9yIHdvcmtlciBvYmpl
Y3QuCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpZW50RGVz
dHJveWVkKCkgeyB9CiAKICAgICAvLyBXZWJXb3JrZXJDbGllbnQgbWV0aG9kczoKLSAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYsIGNvbnN0IFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6OldlYlN0
cmluZyYsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYsIGludCwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50LCBpbnQsIGludCwg
aW50LCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGludCwgY29uc3QgV2ViS2l0OjpXZWJTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0
KGJvb2wpIHsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>