<?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>166752</bug_id>
          
          <creation_ts>2017-01-05 21:02:28 -0800</creation_ts>
          <short_desc>Handle IDLPromise&lt;&gt; properly</short_desc>
          <delta_ts>2017-05-09 08:06:34 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1264343</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-05 21:02:28 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268182</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-01-19 13:52:03 -0800</bug_when>
    <thetext>Any thoughts on a design for this, I have been struggling a bit. 

The biggest issue is that unlike all other types, the way our promise code works, you always have to pass a JSDOMGlobalObject and an ExecState to any function that might want to create a promise. Ideally, what we would do would be to have a new type that can be instantiated without a JSDOMGlobalObject and an ExecState, that gets wrapped by the JS promise once it enters the bindings. e.g.

Ref&lt;NonJSPromise&gt; MyClass::load()
{
    ...

    m_promise = NonJSPromise::create();

    ...

    return m_promise.releaseNonNull();
}

And then the bindings layer does something that creates a JSPromiseDeferred from the NonJSPromise, but I am not clear on how the lifetime of the JSPromiseDeferred would be managed. Perhaps the NonJSPromise (now even more poorly named) could act as a lazy WebCore::DeferredPromise, and fill in the JSPromiseDeferred and JSDOMGlobalObject when it gets passed into the bindings layer?

Anyway, maybe you have a better design in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300461</commentid>
    <comment_count>2</comment_count>
      <attachid>307964</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-24 04:20:13 -0700</bug_when>
    <thetext>Created attachment 307964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300462</commentid>
    <comment_count>3</comment_count>
      <attachid>307965</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-24 04:22:04 -0700</bug_when>
    <thetext>Created attachment 307965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303015</commentid>
    <comment_count>4</comment_count>
      <attachid>308672</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-29 10:57:05 -0700</bug_when>
    <thetext>Created attachment 308672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303017</commentid>
    <comment_count>5</comment_count>
      <attachid>308672</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-29 11:05:48 -0700</bug_when>
    <thetext>Comment on attachment 308672
Patch

Still I&apos;m considering about the design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303021</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-29 11:14:43 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #1)
&gt; Any thoughts on a design for this, I have been struggling a bit. 
&gt; 
&gt; The biggest issue is that unlike all other types, the way our promise code
&gt; works, you always have to pass a JSDOMGlobalObject and an ExecState to any
&gt; function that might want to create a promise. Ideally, what we would do
&gt; would be to have a new type that can be instantiated without a
&gt; JSDOMGlobalObject and an ExecState, that gets wrapped by the JS promise once
&gt; it enters the bindings. e.g.
&gt; 
&gt; Ref&lt;NonJSPromise&gt; MyClass::load()
&gt; {
&gt;     ...
&gt; 
&gt;     m_promise = NonJSPromise::create();
&gt; 
&gt;     ...
&gt; 
&gt;     return m_promise.releaseNonNull();
&gt; }
&gt; 
&gt; And then the bindings layer does something that creates a JSPromiseDeferred
&gt; from the NonJSPromise, but I am not clear on how the lifetime of the
&gt; JSPromiseDeferred would be managed. Perhaps the NonJSPromise (now even more
&gt; poorly named) could act as a lazy WebCore::DeferredPromise, and fill in the
&gt; JSPromiseDeferred and JSDOMGlobalObject when it gets passed into the
&gt; bindings layer?
&gt; 
&gt; Anyway, maybe you have a better design in mind.

Is there any case that poses promise&lt;&gt; as an attribute and that promise&lt;&gt; does not come from userspace?
Currently, PromiseRejectionEvent always takes promise from user-space. Thus, the promise is always JSPromise thing.
So we have no way other than holding it in the event object in some manner since users can observe the promise identity by `event.promise === passedPromise`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303022</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-29 11:28:58 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #6)
&gt; (In reply to Sam Weinig from comment #1)
&gt; &gt; Any thoughts on a design for this, I have been struggling a bit. 
&gt; &gt; 
&gt; &gt; The biggest issue is that unlike all other types, the way our promise code
&gt; &gt; works, you always have to pass a JSDOMGlobalObject and an ExecState to any
&gt; &gt; function that might want to create a promise. Ideally, what we would do
&gt; &gt; would be to have a new type that can be instantiated without a
&gt; &gt; JSDOMGlobalObject and an ExecState, that gets wrapped by the JS promise once
&gt; &gt; it enters the bindings. e.g.
&gt; &gt; 
&gt; &gt; Ref&lt;NonJSPromise&gt; MyClass::load()
&gt; &gt; {
&gt; &gt;     ...
&gt; &gt; 
&gt; &gt;     m_promise = NonJSPromise::create();
&gt; &gt; 
&gt; &gt;     ...
&gt; &gt; 
&gt; &gt;     return m_promise.releaseNonNull();
&gt; &gt; }
&gt; &gt; 
&gt; &gt; And then the bindings layer does something that creates a JSPromiseDeferred
&gt; &gt; from the NonJSPromise, but I am not clear on how the lifetime of the
&gt; &gt; JSPromiseDeferred would be managed. Perhaps the NonJSPromise (now even more
&gt; &gt; poorly named) could act as a lazy WebCore::DeferredPromise, and fill in the
&gt; &gt; JSPromiseDeferred and JSDOMGlobalObject when it gets passed into the
&gt; &gt; bindings layer?
&gt; &gt; 
&gt; &gt; Anyway, maybe you have a better design in mind.
&gt; 
&gt; Is there any case that poses promise&lt;&gt; as an attribute and that promise&lt;&gt;
&gt; does not come from userspace?
&gt; Currently, PromiseRejectionEvent always takes promise from user-space. Thus,
&gt; the promise is always JSPromise thing.
&gt; So we have no way other than holding it in the event object in some manner
&gt; since users can observe the promise identity by `event.promise ===
&gt; passedPromise`.

Currently, I&apos;m considering about just using Ref&lt;DOMGuarded&lt;JSPromise&gt;&gt; for PromiseRejectionEvent.
Strong&lt;JSPromise&gt; causes cyclic reference if the wrapper has a ref to the promise and promise has a ref to the wrapper.

BTW, currently the PromiseRejectionEvent holds reason as Strong&lt;JSC::Unknown&gt;. It is also not good. (And CustomEvent::detail too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303110</commentid>
    <comment_count>8</comment_count>
      <attachid>308693</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-30 09:05:53 -0700</bug_when>
    <thetext>Created attachment 308693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303112</commentid>
    <comment_count>9</comment_count>
      <attachid>308693</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-30 09:32:56 -0700</bug_when>
    <thetext>Comment on attachment 308693
Patch

I&apos;ll do a bit more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303210</commentid>
    <comment_count>10</comment_count>
      <attachid>308714</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-01 01:51:43 -0700</bug_when>
    <thetext>Created attachment 308714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304428</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-03 17:40:47 -0700</bug_when>
    <thetext>Does this allow us to remove any of the custom bindings that only exist for promises (e.g. JSFontFaceCustom.cpp, JSFontFaceSetCustom.cpp, JSMediaKeySessionCustom.cpp, and JSWebGPUCommandBuffer.cpp)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304587</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-04 05:45:31 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #11)
&gt; Does this allow us to remove any of the custom bindings that only exist for
&gt; promises (e.g. JSFontFaceCustom.cpp, JSFontFaceSetCustom.cpp,
&gt; JSMediaKeySessionCustom.cpp, and JSWebGPUCommandBuffer.cpp)?

This patch does nothing right now for these things. It is now focusing on PromiseRejectionEvent&apos;s promise, which is super tricky because `attribute promise&lt;any&gt;`.

On the other hand, JSFontFaceCustom.cpp etc.&apos;s promise definitions are like

attribute Promise&lt;IDLInterface|void&gt;

And there is no Promise&lt;any&gt; thing. In that case, we can implement it easier.
We can implement these thing as you suggested. I&apos;ll implement it in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304588</commentid>
    <comment_count>13</comment_count>
      <attachid>309038</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-04 05:46:59 -0700</bug_when>
    <thetext>Created attachment 309038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304768</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-04 12:33:05 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #12)
&gt; (In reply to Sam Weinig from comment #11)
&gt; &gt; Does this allow us to remove any of the custom bindings that only exist for
&gt; &gt; promises (e.g. JSFontFaceCustom.cpp, JSFontFaceSetCustom.cpp,
&gt; &gt; JSMediaKeySessionCustom.cpp, and JSWebGPUCommandBuffer.cpp)?
&gt; 
&gt; This patch does nothing right now for these things. It is now focusing on
&gt; PromiseRejectionEvent&apos;s promise, which is super tricky because `attribute
&gt; promise&lt;any&gt;`.
&gt; 
&gt; On the other hand, JSFontFaceCustom.cpp etc.&apos;s promise definitions are like
&gt; 
&gt; attribute Promise&lt;IDLInterface|void&gt;
&gt; 
&gt; And there is no Promise&lt;any&gt; thing. In that case, we can implement it easier.
&gt; We can implement these thing as you suggested. I&apos;ll implement it in a
&gt; separate patch.

👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304769</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-04 12:34:26 -0700</bug_when>
    <thetext>Rebasing the patch right now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304770</commentid>
    <comment_count>16</comment_count>
      <attachid>309087</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-04 12:35:01 -0700</bug_when>
    <thetext>Created attachment 309087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304771</commentid>
    <comment_count>17</comment_count>
      <attachid>309087</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-04 12:37:22 -0700</bug_when>
    <thetext>Comment on attachment 309087
Patch

Attachment 309087 did not pass bindings-ews (mac):
Output: http://webkit-queues.webkit.org/results/3674137

New failing tests:
(JS) JSTestPromiseRejectionEvent.cpp
(JS) JSTestPromiseRejectionEvent.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304775</commentid>
    <comment_count>18</comment_count>
      <attachid>309089</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-04 12:44:47 -0700</bug_when>
    <thetext>Created attachment 309089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304804</commentid>
    <comment_count>19</comment_count>
      <attachid>309038</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-04 13:15:56 -0700</bug_when>
    <thetext>Comment on attachment 309038
Patch

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

&gt; Source/WebCore/ChangeLog:20
&gt; +        In conversion phase, we just convert the value to JSC::JSPromise* and hold it in
&gt; +        PromiseRejectionEvent. On the other hand, In this patch, we newly introduce a new
&gt; +        type DOMPromise and use it in RejectedPromiseTracker. And we also rename the previous
&gt; +        DOMPromise to DOMPromiseDeferred since it is corresponding to JSPromiseDeferred.
&gt; +        DOMPromise is DOMGuarded object. So it is strongly referenced from ScriptExecutionContext
&gt; +        and it is weakly referenced from the object itself. This is important since Strong&lt;JSPromise&gt;
&gt; +        reference in C++ object that has a wrapper (in this case, PromiseRejectionEvent) easily causes
&gt; +        cyclic reference. We hold it as DOMPromise instead of Strong&lt;JSPromise&gt; in RejectedPromiseTracker
&gt; +        to break the cyclic reference edge with weak reference.

I&apos;m still lost on all of the different types, but at least the list appears consistent now.

Here is how I understand them, please correct me if I&apos;m wrong:

    JSC::JSPromise
    JSC::JSPromiseDeferred
      - Native Promise JSValue instances

    JSC::JSInternalPromise
    JSC::JSInternalPromiseDeferred
      - A separate implementation of Promises that has no web exposed overridable APIs
      - Safe to use internally without the possibility of user overridden behavior anywhere
      - Used only for module loading right now, but presumably any internal feature could use them

    DOMPromise
    DOMPromiseDeferred
      - Wrapper around a Native Promise JSValue instances
      - Attempts to tie lifetime to a JSGlobalObject (ScriptExecutionContext)

Could you clarify what the difference is between a Promise and a PromiseDeferred? Is a Deferred just a Promise with its Resolve + Reject functions so that C++ can resolve/reject the promise if needed?

----

I&apos;m also confused by DOMGuarded in general. There should really be some short comment in that class to describe its use case!

It seems like it is just JSC::Weak that is also an ActiveDOMCallback so it is aware of whether or not a ScriptExecutionContext is suspended or not. Can its GlobalObject ever be different from its ScriptExecutionContext?

&gt; Source/WebCore/bindings/js/JSDOMConvertPromise.h:51
&gt; +        if (scope.exception()) {
&gt; +            exceptionThrower(state, scope);

Is there a test we can write for this exception case or is it only possible for cases like exhausted stack / out of memory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304810</commentid>
    <comment_count>20</comment_count>
      <attachid>309038</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-04 13:38:03 -0700</bug_when>
    <thetext>Comment on attachment 309038
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:20
&gt;&gt; +        to break the cyclic reference edge with weak reference.
&gt; 
&gt; I&apos;m still lost on all of the different types, but at least the list appears consistent now.
&gt; 
&gt; Here is how I understand them, please correct me if I&apos;m wrong:
&gt; 
&gt;     JSC::JSPromise
&gt;     JSC::JSPromiseDeferred
&gt;       - Native Promise JSValue instances
&gt; 
&gt;     JSC::JSInternalPromise
&gt;     JSC::JSInternalPromiseDeferred
&gt;       - A separate implementation of Promises that has no web exposed overridable APIs
&gt;       - Safe to use internally without the possibility of user overridden behavior anywhere
&gt;       - Used only for module loading right now, but presumably any internal feature could use them
&gt; 
&gt;     DOMPromise
&gt;     DOMPromiseDeferred
&gt;       - Wrapper around a Native Promise JSValue instances
&gt;       - Attempts to tie lifetime to a JSGlobalObject (ScriptExecutionContext)
&gt; 
&gt; Could you clarify what the difference is between a Promise and a PromiseDeferred? Is a Deferred just a Promise with its Resolve + Reject functions so that C++ can resolve/reject the promise if needed?
&gt; 
&gt; ----
&gt; 
&gt; I&apos;m also confused by DOMGuarded in general. There should really be some short comment in that class to describe its use case!
&gt; 
&gt; It seems like it is just JSC::Weak that is also an ActiveDOMCallback so it is aware of whether or not a ScriptExecutionContext is suspended or not. Can its GlobalObject ever be different from its ScriptExecutionContext?

&gt; Is a Deferred just a Promise with its Resolve + Reject functions so that C++ can resolve/reject the promise if needed?

Right. Deferred is the name conventionally used for the tuple of (promise, resolve, reject). Promise is the abstraction of the future value.
And it does not offer the way to resolve / reject itself. Deferred&apos;s resolve / reject functions are the way to do this.
This is a good separation: API will expose promise, but won&apos;t expose resolve and reject functions.

&gt; It seems like it is just JSC::Weak that is also an ActiveDOMCallback so it is aware of whether or not a ScriptExecutionContext is suspended or not. Can its GlobalObject ever be different from its ScriptExecutionContext?

No. DOMGuarded&apos;s constructor uses ScriptExecutionContext of the given GlobalObject. And that GlobalObject will be never replaced.
It is a bit special function. In WebCore, many APIs tied to ScriptExecutionContext will resolve / reject exposed promises. CustomElementRegistry&apos;s promise is one example.
But if we hold it Strong&lt;&gt;, it easily causes cyclic reference... So we should have a way to break this reference cycle. DOMPromiseDeferred / DOMPromise are things.
It is Weak reference, but it is referenced by ScriptExecutionContext. So it is live during (1) Ref&lt;DOMPromise&gt; is live and (2) ScriptExecutionContext is live.

Since these promises are never shown from the DOM objects once ScriptExecutionContext is gone, this wrapper works super well.

&gt;&gt; Source/WebCore/bindings/js/JSDOMConvertPromise.h:51
&gt;&gt; +            exceptionThrower(state, scope);
&gt; 
&gt; Is there a test we can write for this exception case or is it only possible for cases like exhausted stack / out of memory?

Right. It only happens if the stack is exhausted.

In a long term, I&apos;m planning to clean up the current Promise implementation.
I think we should have 2 ways to construct Promises. Normal JS way, and C++ way. Both should be super fast. And in C++ way,
we should not create resolve / reject callbacks. At that time, the above function should not call JS functions. And this check will be eliminated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304811</commentid>
    <comment_count>21</comment_count>
      <attachid>309098</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-04 13:42:18 -0700</bug_when>
    <thetext>Created attachment 309098
Patch

Fix debug build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305024</commentid>
    <comment_count>22</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-04 23:16:28 -0700</bug_when>
    <thetext>I am not sure whether DOMPromise is more aligned with JSPromiseDeferred or JSPromise.
Is it the case? If so, why?
If it is more aligned with JSPromiseDeferred, I am fine with this change.

If I were to implement PromiseRejectionEvent, I would probably use JS builtin to accomodate for the fact that the promise passed value may either be a promise or a value that would be promise-resolved.
Can you describe what is the advantage of your approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305153</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-05 09:37:04 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #22)
&gt; I am not sure whether DOMPromise is more aligned with JSPromiseDeferred or
&gt; JSPromise.
&gt; Is it the case? If so, why?
&gt; If it is more aligned with JSPromiseDeferred, I am fine with this change.

Newly introduced DOMPromise is aligned to JSPromise.
Previous DOMPromise, which is now renamed to DOMPromiseDeferred, is aligned to JSPromiseDeferred.

&gt; If I were to implement PromiseRejectionEvent, I would probably use JS
&gt; builtin to accomodate for the fact that the promise passed value may either
&gt; be a promise or a value that would be promise-resolved.
&gt; Can you describe what is the advantage of your approach?

IDL code generator can emit the conversion code instead of writing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305592</commentid>
    <comment_count>24</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-06 11:23:53 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #23)
&gt; (In reply to youenn fablet from comment #22)
&gt; &gt; I am not sure whether DOMPromise is more aligned with JSPromiseDeferred or
&gt; &gt; JSPromise.
&gt; &gt; Is it the case? If so, why?
&gt; &gt; If it is more aligned with JSPromiseDeferred, I am fine with this change.
&gt; 
&gt; Newly introduced DOMPromise is aligned to JSPromise.
&gt; Previous DOMPromise, which is now renamed to DOMPromiseDeferred, is aligned
&gt; to JSPromiseDeferred.

Right, it makes sense to rename DOMPromise in DOMPromiseDeferred.

There may be a small risk of confusion by having both DOMPromise and DOMPromiseDeferred in the code base though.
I guess the vast majority of DOM C++ code will stick to DOMPromiseDeferred since they will want to resolve/reject the promise.

&gt; &gt; If I were to implement PromiseRejectionEvent, I would probably use JS
&gt; &gt; builtin to accomodate for the fact that the promise passed value may either
&gt; &gt; be a promise or a value that would be promise-resolved.
&gt; &gt; Can you describe what is the advantage of your approach?
&gt; 
&gt; IDL code generator can emit the conversion code instead of writing it.

If RejectedPromiseEvent is the only case of DOMPromise use, I would tend to stick with JS built-in, since this introduces less code.
If we envision other usages, it seems fine to introduce DOMPromise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305593</commentid>
    <comment_count>25</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-06 11:25:04 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #1)
&gt; Any thoughts on a design for this, I have been struggling a bit. 
&gt; 
&gt; The biggest issue is that unlike all other types, the way our promise code
&gt; works, you always have to pass a JSDOMGlobalObject and an ExecState to any
&gt; function that might want to create a promise. Ideally, what we would do
&gt; would be to have a new type that can be instantiated without a
&gt; JSDOMGlobalObject and an ExecState, that gets wrapped by the JS promise once
&gt; it enters the bindings. e.g.
&gt; 
&gt; Ref&lt;NonJSPromise&gt; MyClass::load()
&gt; {
&gt;     ...
&gt; 
&gt;     m_promise = NonJSPromise::create();
&gt; 
&gt;     ...
&gt; 
&gt;     return m_promise.releaseNonNull();
&gt; }
&gt; 
&gt; And then the bindings layer does something that creates a JSPromiseDeferred
&gt; from the NonJSPromise, but I am not clear on how the lifetime of the
&gt; JSPromiseDeferred would be managed. Perhaps the NonJSPromise (now even more
&gt; poorly named) could act as a lazy WebCore::DeferredPromise, and fill in the
&gt; JSPromiseDeferred and JSDOMGlobalObject when it gets passed into the
&gt; bindings layer?
&gt; 
&gt; Anyway, maybe you have a better design in mind.

Yep, that would be great to have that.
I think this is how Chromium is doing and the code looks nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305613</commentid>
    <comment_count>26</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-06 13:33:10 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #24)
&gt; (In reply to Yusuke Suzuki from comment #23)
&gt; &gt; (In reply to youenn fablet from comment #22)
&gt; &gt; &gt; I am not sure whether DOMPromise is more aligned with JSPromiseDeferred or
&gt; &gt; &gt; JSPromise.
&gt; &gt; &gt; Is it the case? If so, why?
&gt; &gt; &gt; If it is more aligned with JSPromiseDeferred, I am fine with this change.
&gt; &gt; 
&gt; &gt; Newly introduced DOMPromise is aligned to JSPromise.
&gt; &gt; Previous DOMPromise, which is now renamed to DOMPromiseDeferred, is aligned
&gt; &gt; to JSPromiseDeferred.
&gt; 
&gt; Right, it makes sense to rename DOMPromise in DOMPromiseDeferred.
&gt; 
&gt; There may be a small risk of confusion by having both DOMPromise and
&gt; DOMPromiseDeferred in the code base though.
&gt; I guess the vast majority of DOM C++ code will stick to DOMPromiseDeferred
&gt; since they will want to resolve/reject the promise.

Yeah. I think it&apos;s ok because DOMPromsie does not have resolve / reject functions.
Its interface tells us that DOMPromise is not resolvable one.
Thus, users will hold DOMPromiseDeferred if users need to resolve / reject it.
I think holding promises as DOMPromise in RejectedPromiseTracker is good since RejectedPromiseTracker&apos;s event emission lifetime is tied to ScriptExecutionContext. Thus, current DOMPromise / DOMPromiseDeferred lifetime is completely matched against this.

&gt; 
&gt; &gt; &gt; If I were to implement PromiseRejectionEvent, I would probably use JS
&gt; &gt; &gt; builtin to accomodate for the fact that the promise passed value may either
&gt; &gt; &gt; be a promise or a value that would be promise-resolved.
&gt; &gt; &gt; Can you describe what is the advantage of your approach?
&gt; &gt; 
&gt; &gt; IDL code generator can emit the conversion code instead of writing it.
&gt; 
&gt; If RejectedPromiseEvent is the only case of DOMPromise use, I would tend to
&gt; stick with JS built-in, since this introduces less code.
&gt; If we envision other usages, it seems fine to introduce DOMPromise.

You mean using JSBuiltinConstructor, and private method to store promise value to C++ PromiseRejectionEvent, correct? If so, I agree with you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305629</commentid>
    <comment_count>27</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-06 16:25:24 -0700</bug_when>
    <thetext>&gt; You mean using JSBuiltinConstructor, and private method to store promise
&gt; value to C++ PromiseRejectionEvent, correct? If so, I agree with you.

Yes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306176</commentid>
    <comment_count>28</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-08 17:47:22 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #27)
&gt; &gt; You mean using JSBuiltinConstructor, and private method to store promise
&gt; &gt; value to C++ PromiseRejectionEvent, correct? If so, I agree with you.
&gt; 
&gt; Yes

I&apos;ve a bit prototyped this, and I think the current design is rather simple.
I&apos;ll describe why I think so.

1. PromiseRejectionEvent is derived class of Event.

While FetchReponse etc. is not derived class from any existing DOM interface, PromiseRejectionEvent is derived class of Event. When creating Event, we need AtomicString type parameter. So, the current JSBuiltinConstructor design is not suitable for that. Of course, we can change Event not to get type string in its constructor (and add a setter to set type string later), but I think it is not good design since we always assume that Event should have type string.

2. Not reduce the code

If we use JSBulitinConstructor, we additionally need,

(1) PromiseRejectionEvent.js, which should have initializePromiseRejectionEvent() and its code.
(2) initializeWith(any, promise&lt;any&gt;) private function to fill the fields from promise rejection event.

I think it increases the code rather than introducing DOM conversion. Current PromiseRejectionEvent constructor is well handled in DOM binding IDL: event init dictionary is automatically extracted by IDL generator. So only required thing is DOM conversion part.

What do you think of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306201</commentid>
    <comment_count>29</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-08 18:40:13 -0700</bug_when>
    <thetext>&gt; 1. PromiseRejectionEvent is derived class of Event.
&gt; 
&gt; While FetchReponse etc. is not derived class from any existing DOM
&gt; interface, PromiseRejectionEvent is derived class of Event. When creating
&gt; Event, we need AtomicString type parameter. So, the current
&gt; JSBuiltinConstructor design is not suitable for that. Of course, we can
&gt; change Event not to get type string in its constructor (and add a setter to
&gt; set type string later), but I think it is not good design since we always
&gt; assume that Event should have type string.

I see, that may be an issue indeed.


&gt; 2. Not reduce the code
&gt; 
&gt; If we use JSBulitinConstructor, we additionally need,
&gt; 
&gt; (1) PromiseRejectionEvent.js, which should have
&gt; initializePromiseRejectionEvent() and its code.
&gt; (2) initializeWith(any, promise&lt;any&gt;) private function to fill the fields
&gt; from promise rejection event.

The idea would be to JSBuiltin the constructor so as to add @promise/@reason fields created from values passed to the constructor in initializePromiseRejectionEvent.
Then we would JSBuiltin the promise/reason attributes to either return @promise/@reason slots if defined or call the DOM C++ getter otherwise.

&gt; I think it increases the code rather than introducing DOM conversion.
&gt; Current PromiseRejectionEvent constructor is well handled in DOM binding
&gt; IDL: event init dictionary is automatically extracted by IDL generator. So
&gt; only required thing is DOM conversion part.
&gt; 
&gt; What do you think of?

Yeah, the fact that PromiseRejectionEvent is an event and JSBuiltinConstructor does not work out of the box might indeed be an issue.

Looking at PromiseRejectionEvent, it looks really JSish at the moment.
I wonder whether using more JS builtins would help or not there in the implementation of RejectedPromiseTracker.
If so, then maybe it is worth going the JSBuiltinConstructor way.

I guess either way is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306212</commentid>
    <comment_count>30</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-08 18:59:55 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #29)
&gt; &gt; 1. PromiseRejectionEvent is derived class of Event.
&gt; &gt; 
&gt; &gt; While FetchReponse etc. is not derived class from any existing DOM
&gt; &gt; interface, PromiseRejectionEvent is derived class of Event. When creating
&gt; &gt; Event, we need AtomicString type parameter. So, the current
&gt; &gt; JSBuiltinConstructor design is not suitable for that. Of course, we can
&gt; &gt; change Event not to get type string in its constructor (and add a setter to
&gt; &gt; set type string later), but I think it is not good design since we always
&gt; &gt; assume that Event should have type string.
&gt; 
&gt; I see, that may be an issue indeed.
&gt; 
&gt; 
&gt; &gt; 2. Not reduce the code
&gt; &gt; 
&gt; &gt; If we use JSBulitinConstructor, we additionally need,
&gt; &gt; 
&gt; &gt; (1) PromiseRejectionEvent.js, which should have
&gt; &gt; initializePromiseRejectionEvent() and its code.
&gt; &gt; (2) initializeWith(any, promise&lt;any&gt;) private function to fill the fields
&gt; &gt; from promise rejection event.
&gt; 
&gt; The idea would be to JSBuiltin the constructor so as to add @promise/@reason
&gt; fields created from values passed to the constructor in
&gt; initializePromiseRejectionEvent.
&gt; Then we would JSBuiltin the promise/reason attributes to either return
&gt; @promise/@reason slots if defined or call the DOM C++ getter otherwise.

What happens if the wrapper object is gone?
I think the problem is that PromiseRejectionEvent is derived class of Event.
And we usually use Event, Ref&lt;Event&gt; and RefPtr&lt;Event&gt; in WebCore code. So, I think wrapper can be gone.
When the wrapper is gone, we need to retrieve reason and promise from C++ PromiseRejectionEvent. So anyway, we need to call `initializeWith(any, promise&lt;any&gt;)` private function to fill the C++ fields in initializePromiseRejectionEvent.

&gt; 
&gt; &gt; I think it increases the code rather than introducing DOM conversion.
&gt; &gt; Current PromiseRejectionEvent constructor is well handled in DOM binding
&gt; &gt; IDL: event init dictionary is automatically extracted by IDL generator. So
&gt; &gt; only required thing is DOM conversion part.
&gt; &gt; 
&gt; &gt; What do you think of?
&gt; 
&gt; Yeah, the fact that PromiseRejectionEvent is an event and
&gt; JSBuiltinConstructor does not work out of the box might indeed be an issue.
&gt; 
&gt; Looking at PromiseRejectionEvent, it looks really JSish at the moment.
&gt; I wonder whether using more JS builtins would help or not there in the
&gt; implementation of RejectedPromiseTracker.

I agree with you about this thing. RejectedPromiseTracker can be implemented in JSC world, and I think, in the future, we should do that.
It will offer the way to handle unhandled-rejected-promises even in JSC shell. (And it is very nice to debug async tests in JSC shell).

&gt; If so, then maybe it is worth going the JSBuiltinConstructor way.

But when doing that, maybe, we will just hold the promise, and we do not create event in JS side since JSC does not have the notion of events.
If I implement it, I&apos;ll merge large part of RejectedPromiseTracker into JSC, and JSC will invoke handlers with the reason and promises.
And WebCore sets handlers to JSC, and WebCore will create events based on the passed rejected promises. And dispatch events.

&gt; 
&gt; I guess either way is fine.

So, for PromiseRejectionEvent, I think the current design is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306235</commentid>
    <comment_count>31</comment_count>
      <attachid>309098</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-08 20:41:06 -0700</bug_when>
    <thetext>Comment on attachment 309098
Patch

OK, let&apos;s go!
Some nits below.

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

&gt; Source/JavaScriptCore/runtime/JSPromise.cpp:99
&gt; +    auto scope = DECLARE_THROW_SCOPE(vm);

maybe use auto for all 3 and below as well?

&gt; Source/JavaScriptCore/runtime/JSPromise.h:55
&gt; +    JS_EXPORT_PRIVATE static JSPromise* resolve(JSGlobalObject*, JSValue);

Shouldn&apos;t we try to pass a JSGlobalObject&amp;?

&gt; Source/WebCore/bindings/js/JSDOMConvertPromise.h:43
&gt; +        JSDOMGlobalObject* globalObject = jsDynamicDowncast&lt;JSDOMGlobalObject*&gt;(vm, state.lexicalGlobalObject());

auto*

&gt; Source/WebCore/bindings/js/JSDOMConvertPromise.h:49
&gt; +        JSC::JSPromise* promise = JSC::JSPromise::resolve(globalObject, value);

Ditto

&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:53
&gt;  class RejectedPromise {

Do we still need RejectedPromise?

&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:125
&gt; +void RejectedPromiseTracker::promiseHandled(ExecState&amp;, JSDOMGlobalObject&amp; globalObject, JSPromise&amp; promise)

Change signature in a follow-up?

&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:167
&gt; +        Ref&lt;DOMPromise&gt; domPromise = unhandledPromise.promise();

Why do we need to take a Ref here?

&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:170
&gt; +        ExecState&amp; state = *domPromise-&gt;globalObject()-&gt;globalExec();

auto?

&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:200
&gt; +    Ref&lt;DOMPromise&gt; domPromise = rejectedPromise.promise();

Why taking a ref here?

&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:209
&gt; +    initializer.reason = promise.result(vm);

Brace initializer maybe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306328</commentid>
    <comment_count>32</comment_count>
      <attachid>309098</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-09 03:27:09 -0700</bug_when>
    <thetext>Comment on attachment 309098
Patch

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

Thanks for your review!

&gt;&gt; Source/JavaScriptCore/runtime/JSPromise.cpp:99
&gt;&gt; +    auto scope = DECLARE_THROW_SCOPE(vm);
&gt; 
&gt; maybe use auto for all 3 and below as well?

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSPromise.h:55
&gt;&gt; +    JS_EXPORT_PRIVATE static JSPromise* resolve(JSGlobalObject*, JSValue);
&gt; 
&gt; Shouldn&apos;t we try to pass a JSGlobalObject&amp;?

Changed.

&gt;&gt; Source/WebCore/bindings/js/JSDOMConvertPromise.h:43
&gt;&gt; +        JSDOMGlobalObject* globalObject = jsDynamicDowncast&lt;JSDOMGlobalObject*&gt;(vm, state.lexicalGlobalObject());
&gt; 
&gt; auto*

Changed.

&gt;&gt; Source/WebCore/bindings/js/JSDOMConvertPromise.h:49
&gt;&gt; +        JSC::JSPromise* promise = JSC::JSPromise::resolve(globalObject, value);
&gt; 
&gt; Ditto

Changed.

&gt;&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:53
&gt;&gt;  class RejectedPromise {
&gt; 
&gt; Do we still need RejectedPromise?

Yeah, we can drop this. Dropped.

&gt;&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:125
&gt;&gt; +void RejectedPromiseTracker::promiseHandled(ExecState&amp;, JSDOMGlobalObject&amp; globalObject, JSPromise&amp; promise)
&gt; 
&gt; Change signature in a follow-up?

That sound fine! Filed. https://bugs.webkit.org/show_bug.cgi?id=171856

&gt;&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:167
&gt;&gt; +        Ref&lt;DOMPromise&gt; domPromise = unhandledPromise.promise();
&gt; 
&gt; Why do we need to take a Ref here?

Right, we do not need to take it. Changed it to auto&amp;.

&gt;&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:170
&gt;&gt; +        ExecState&amp; state = *domPromise-&gt;globalObject()-&gt;globalExec();
&gt; 
&gt; auto?

Changed.

&gt;&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:200
&gt;&gt; +    Ref&lt;DOMPromise&gt; domPromise = rejectedPromise.promise();
&gt; 
&gt; Why taking a ref here?

Yeah, fixed.

&gt;&gt; Source/WebCore/dom/RejectedPromiseTracker.cpp:209
&gt;&gt; +    initializer.reason = promise.result(vm);
&gt; 
&gt; Brace initializer maybe?

PromiseRejectionEvent::Init inherits Event::Init, which has default initializers for members.
This disables brace initializer here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306329</commentid>
    <comment_count>33</comment_count>
      <attachid>309489</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-09 03:44:41 -0700</bug_when>
    <thetext>Created attachment 309489
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306340</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-09 05:17:27 -0700</bug_when>
    <thetext>Committed r216501: &lt;http://trac.webkit.org/changeset/216501&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306346</commentid>
    <comment_count>35</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-09 06:01:02 -0700</bug_when>
    <thetext>Committed r216503: &lt;http://trac.webkit.org/changeset/216503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306380</commentid>
    <comment_count>36</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-09 08:06:34 -0700</bug_when>
    <thetext>Committed r216507: &lt;http://trac.webkit.org/changeset/216507&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307964</attachid>
            <date>2017-04-24 04:20:13 -0700</date>
            <delta_ts>2017-04-24 04:22:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166752-20170424202012.patch</filename>
            <type>text/plain</type>
            <size>35399</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YjA0YTMyMTVlNTRiN2NmMjQ2YzNiYzkyZWJmMzBmOGFjMzEzNzYwLi42MWZiOTBkYmM0NDE1NDYz
YmY3YjIwNWU2ZDhiZDJkY2EzOGVlNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNy0wNC0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNl
UmVzb2x2ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTUHJvbWlzZTo6cmVzb2x2ZSk6CisgICAgICAgICogcnVudGltZS9KU1Byb21p
c2UuaDoKKwogMjAxNy0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNTY3NC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBmZDcwN2M5MGVlYWVmOTc1NGU2NjIyYTU0Zjg0YzJmMWQ5M2E2MmRlLi5kZGUzODdhNjM0
OGU1OGE3ZjhmOGEzN2RjNTE5YmUzMjExODY1YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTctMDQtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
KyAgICAgICAgSGFuZGxlIElETFByb21pc2U8PiBwcm9wZXJseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udmVydGVyPElETFByb21pc2U8VD4+Ojpjb252ZXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ29udmVydGVyPElETFByb21pc2U8VD4+Ojpjb252ZXJ0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChJc1Byb21pc2VU
eXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEFkZFRvSW5jbHVkZXNGb3JJRExUeXBlKToKKyAgICAgICAgKEdldEJhc2VJRExUeXBl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFy
eTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0Pik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90
b3R5cGU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50OjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnByb3RvdHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dD46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OndyYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5pZGw6IEFkZGVkLgorCiAyMDE3LTA0LTIz
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjE1NjU3IGFuZCByMjE1Njc2LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGRkNmM4ZmZmMTg4
NmNiY2I0MGZkYTBlMDcyZWY5NWE1ODQ4ZjVkYWEuLjg1Y2ZjNTc1NDk0NWFmZDU5MzhjYzNkYmRm
NGY0MTEwMWJmZWE3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKQEAgLTQyNyw2ICs0MjcsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6aW5pdChWTSYgdm0pCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGVC
dWlsdGluRnVuY3Rpb24oaW5pdC52bSwgaXRlcmF0b3JIZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNv
ZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKICAgICAgICAgfSk7CiAKKyAgICBt
X3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVu
Y3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihpbml0LnZtLCBwcm9taXNlQ29uc3RydWN0b3JS
ZXNvbHZlQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAgICAgICB9KTsK
KwogICAgIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVu
Y3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9t
aXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CiAgICAgbV9mdW5jdGlvblBy
b3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3lt
Ym9sRnVuY3Rpb24pOwogICAgIG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVy
KApAQCAtMTE4NSw2ICsxMTkwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1f
YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlz
T2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbik7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0
aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9IYXNJ
bnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGEyODYzMzkxZmQ1ZmRlZDNlYmNmMzJkNjZlYzllZWJl
NDI1NTgxZGIuLjNiOTc4Y2E0NDA3ZDliZTU3YjkyNjBhMDVlNDJmZWQyYTM1M2JkYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjYy
LDYgKzI2Miw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlv
bj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb247CiAgICAgTGF6
eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xG
dW5jdGlvbjsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1f
cHJvbWlzZVJlc29sdmVGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9v
YmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uOwpAQCAtNTEyLDYg
KzUxMyw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAg
IEpTRnVuY3Rpb24qIGluaXRpYWxpemVQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiog
aXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3Rv
Y29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CisgICAgSlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhp
cyk7IH0KICAgICBKU0Z1bmN0aW9uKiBvYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1
bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9u
ZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAppbmRleCA5NThkNDViMGNkNTU2ZDIz
NTQ4MmZkMjY5MjBhZTM1ZTJhZTY5YTc2Li43ZGExYzQ0NTNiMDZjNGU1YmM2Y2QwMWQ2NmUyZDQ1
MDFhYTAzZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5j
cHAKQEAgLTg1LDQgKzg1LDI1IEBAIEpTVmFsdWUgSlNQcm9taXNlOjpyZXN1bHQoVk0mIHZtKSBj
b25zdAogICAgIHJldHVybiBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnByb21pc2VSZXN1bHRQcml2YXRlTmFtZSgpKTsKIH0KIAorSlNQcm9taXNlKiBKU1By
b21pc2U6OnJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKKyAgICBKU0Z1bmN0aW9uKiBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uID0g
Z2xvYmFsT2JqZWN0LT5wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uKCk7CisgICAgQ2FsbERhdGEgY2Fs
bERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHByb21pc2VS
ZXNvbHZlRnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5
cGU6Ok5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFy
Z3VtZW50cy5hcHBlbmQoZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ29uc3RydWN0b3IoKSk7CisgICAg
YXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMs
IHByb21pc2VSZXNvbHZlRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQo
KSwgYXJndW1lbnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
KyAgICBBU1NFUlQocHJvbWlzZS5pbmhlcml0cyh2bSwgSlNQcm9taXNlOjppbmZvKCkpKTsKKyAg
ICByZXR1cm4ganNDYXN0PEpTUHJvbWlzZSo+KHJlc3VsdCk7Cit9CisKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCmluZGV4IDYz
OWY2NTBiYzYxMWMyMmNiYjFlNDJmYWE1YWE4OWNjZTQzYTc4YmEuLjlhZTIzY2VmM2JiYjczNjhh
MmQ5NzM0NDI3NWFmODBjMzc0YzliZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZS5oCkBAIC01MSw2ICs1MSw4IEBAIGNsYXNzIEpTUHJvbWlzZSA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKICAgICAvLyBUaGlzIG1heSByYWlzZSBhIEpTIGV4Y2VwdGlvbi4K
ICAgICB2b2lkIGluaXRpYWxpemUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IGV4ZWN1dG9yKTsKIAorICAgIHN0YXRpYyBKU1Byb21pc2UqIHJlc29sdmUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSk7CisKIHByb3RlY3RlZDoKICAgICBKU1Byb21pc2UoVk0mLCBTdHJ1Y3R1cmUqKTsK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdiODRlYWQ4M2NhYTEx
ZjZmOGQ2YmM5MjAzYTZhZTQ4YjhhODE0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFByb21pc2UuaApAQCAtMCwwICsxLDY4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJRExUeXBlcy5oIgor
I2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElETFByb21pc2U8VD4+IDogRGVm
YXVsdENvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7CisgICAgdXNpbmcgUmV0dXJuVHlwZSA9IEpT
Qzo6U3Ryb25nPEpTQzo6SlNQcm9taXNlPjsKKworICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2VzLXByb21pc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25U
aHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CisgICAgc3RhdGljIFJldHVyblR5cGUg
Y29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0
aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCisgICAg
eworICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICAvLyAxLiBMZXQgcmVzb2x2ZSBi
ZSB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgJVByb21pc2UlLnJlc29sdmUuCisgICAgICAgIC8vIDIu
IExldCBwcm9taXNlIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyByZXNvbHZlIHdpdGggJVByb21p
c2UlIGFzIHRoZSB0aGlzIHZhbHVlIGFuZCBWIGFzIHRoZSBzaW5nbGUgYXJndW1lbnQgdmFsdWUu
CisgICAgICAgIEpTQzo6SlNQcm9taXNlKiBwcm9taXNlID0gSlNDOjpKU1Byb21pc2U6OnJlc29s
dmUoJnN0YXRlLCB2YWx1ZSk7CisgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgeworICAg
ICAgICAgICAgZXhjZXB0aW9uVGhyb3dlcihzdGF0ZSwgc2NvcGUpOworICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDMuIFJldHVybiB0aGUgSURMIHByb21p
c2UgdHlwZSB2YWx1ZSB0aGF0IGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIG9iamVjdCBhcyBw
cm9taXNlLgorICAgICAgICByZXR1cm4geyB2bSwgcHJvbWlzZSB9OworICAgIH0KK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSBmYWxzZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbmVlZHNHbG9iYWxPYmplY3QgPSBmYWxzZTsKKworICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgY29udmVydChjb25zdCBKU0M6OlN0cm9uZzxKU0M6OkpTUHJvbWlzZT4mIHBy
b21pc2UpCisgICAgeworICAgICAgICAvLyBUaGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgYW4gSURM
IHByb21pc2UgdHlwZSB2YWx1ZSB0byBhbiBFQ01BU2NyaXB0IHZhbHVlIGlzIHRoZSBQcm9taXNl
IHZhbHVlCisgICAgICAgIC8vIHRoYXQgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byB0aGUgc2Ft
ZSBvYmplY3QgdGhhdCB0aGUgSURMIHByb21pc2UgdHlwZSByZXByZXNlbnRzLgorICAgICAgICBy
ZXR1cm4gcHJvbWlzZS5nZXQoKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0K
aW5kZXggMjEzMGEwOWVkYzE0NGI0MjJmZDhiNDFmY2U1ODFmZjEwZmU2MDdhNi4uYTIzOGQ5M2Uy
YTEyYjkzYTBlYWNkZWE2ZmRhY2M4ODkxZmFhMGUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtNjg4LDYgKzY4OCwxNiBAQCBz
dWIgSXNSZWNvcmRUeXBlCiAgICAgcmV0dXJuICR0eXBlLT5uYW1lIGVxICJyZWNvcmQiOwogfQog
CisKK3N1YiBJc1Byb21pc2VUeXBlCit7CisgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwor
CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CisK
KyAgICByZXR1cm4gJHR5cGUtPm5hbWUgZXEgIlByb21pc2UiOworfQorCiAjIFRoZXNlIG1hdGNo
IFdLX2xjZmlyc3QgYW5kIFdLX3VjZmlyc3QgZGVmaW5lZCBpbiBidWlsdGluc19nZW5lcmF0b3Iu
cHkuCiAjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxlIHJlc3BlY3RpbmcgV2ViS2l0
IHN0eWxlIGd1aWRlbGluZXMuCiAjIEUuZy4sIHhtbEVuY29kaW5nIGJlY29tZXMgWE1MRW5jb2Rp
bmcsIGJ1dCB4bWxsbGFuZyBiZWNvbWVzIFhtbGxhbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGM1MGMwZmVlZjEyZmQz
NTUwN2FlODZiNTZmNzk2OTE3MzVhMzJjOGMuLjFjNjczMjkwNjYwMTg4ZDQxYTQyYWE5YjE3M2I5
OGMxM2UwZjU0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0zMDMsNiArMzAzLDEyIEBAIHN1YiBBZGRUb0luY2x1ZGVz
Rm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc1Byb21pc2VUeXBlKCR0eXBlKSkgeworICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RP
TVByb21pc2UuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKKyAgICAgICAgQWRkVG9J
bmNsdWRlc0ZvcklETFR5cGUoQHskdHlwZS0+c3VidHlwZXN9WzBdLCAkaW5jbHVkZXNSZWYsICRj
b25kaXRpb25hbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc0V4dGVybmFs
RGljdGlvbmFyeVR5cGUoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc0V4dGVybmFsRW51bVR5
cGUoJHR5cGUpIHx8ICR0eXBlLT5uYW1lIGVxICJFdmVudExpc3RlbmVyIikgewogICAgICAgICBB
ZGRUb0luY2x1ZGVzKCJKUyIgLiAkdHlwZS0+bmFtZSAuICIuaCIsICRpbmNsdWRlc1JlZiwgJGNv
bmRpdGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTQzMiw2ICs1NDM4LDcgQEAgc3ViIEdl
dEJhc2VJRExUeXBlCiAgICAgcmV0dXJuICJJRExTZXF1ZW5jZTwiIC4gR2V0SURMVHlwZSgkaW50
ZXJmYWNlLCBAeyR0eXBlLT5zdWJ0eXBlc31bMF0pIC4gIj4iIGlmICRjb2RlR2VuZXJhdG9yLT5J
c1NlcXVlbmNlVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICJJRExGcm96ZW5BcnJheTwiIC4gR2V0
SURMVHlwZSgkaW50ZXJmYWNlLCBAeyR0eXBlLT5zdWJ0eXBlc31bMF0pIC4gIj4iIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc0Zyb3plbkFycmF5VHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICJJRExSZWNv
cmQ8IiAuIEdldElETFR5cGUoJGludGVyZmFjZSwgQHskdHlwZS0+c3VidHlwZXN9WzBdKSAuICIs
ICIgLiBHZXRJRExUeXBlKCRpbnRlcmZhY2UsIEB7JHR5cGUtPnN1YnR5cGVzfVsxXSkgLiAiPiIg
aWYgJGNvZGVHZW5lcmF0b3ItPklzUmVjb3JkVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuICJJRExQ
cm9taXNlPCIgLiBHZXRJRExUeXBlKCRpbnRlcmZhY2UsIEB7JHR5cGUtPnN1YnR5cGVzfVswXSkg
LiAiPiIgaWYgJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJHR5cGUpOwogICAgIHJldHVy
biAiSURMVW5pb248IiAuIGpvaW4oIiwgIiwgR2V0SURMVW5pb25NZW1iZXJUeXBlcygkaW50ZXJm
YWNlLCAkdHlwZSkpIC4gIj4iIGlmICR0eXBlLT5pc1VuaW9uOwogICAgIHJldHVybiAiSURMQ2Fs
bGJhY2tGdW5jdGlvbjwiIC4gR2V0Q2FsbGJhY2tDbGFzc05hbWUoJHR5cGUtPm5hbWUpIC4gIj4i
IGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrRnVuY3Rpb24oJHR5cGUpOwogICAgIHJldHVy
biAiSURMQ2FsbGJhY2tJbnRlcmZhY2U8IiAuIEdldENhbGxiYWNrQ2xhc3NOYW1lKCR0eXBlLT5u
YW1lKSAuICI+IiBpZiAkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0ludGVyZmFjZSgkdHlwZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzZGJkZWJiYTE1YTQwMjMwOTVkNGZlMDZiNTZhZjQ3ZjNkMDRmMWEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50LmNwcApAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50LmgiCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RP
TUJpbmRpbmdDYWxsZXIuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCisjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgor
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5o
PgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTw+IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6
OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdD4o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IGJvb2wgaXNOdWxsT3JVbmRlZmluZWQgPSB2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOworICAg
IGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8gbnVsbHB0ciA6IHZhbHVlLmdldE9i
amVjdCgpOworICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JVbmRlZmluZWQgJiYgIW9iamVjdCkp
IHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICB9CisgICAgaWYgKFVOTElLRUxZKG9iamVjdCAmJiBvYmplY3QtPnR5
cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IHJlc3VsdDsKKyAgICBKU1ZhbHVlIGJ1YmJsZXNWYWx1
ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJidWJibGVzIikpOworICAgIGlmICgh
YnViYmxlc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmJ1YmJsZXMgPSBj
b252ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBidWJibGVzVmFsdWUpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3Vs
dC5idWJibGVzID0gZmFsc2U7CisgICAgSlNWYWx1ZSBjYW5jZWxhYmxlVmFsdWUgPSBpc051bGxP
clVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiY2FuY2VsYWJsZSIpKTsKKyAgICBpZiAoIWNhbmNlbGFi
bGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5jYW5jZWxhYmxlID0gY29u
dmVydDxJRExCb29sZWFuPihzdGF0ZSwgY2FuY2VsYWJsZVZhbHVlKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0gZWxzZQorICAgICAgICByZXN1
bHQuY2FuY2VsYWJsZSA9IGZhbHNlOworICAgIEpTVmFsdWUgY29tcG9zZWRWYWx1ZSA9IGlzTnVs
bE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJjb21wb3NlZCIpKTsKKyAgICBpZiAoIWNvbXBvc2Vk
VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuY29tcG9zZWQgPSBjb252ZXJ0
PElETEJvb2xlYW4+KHN0YXRlLCBjb21wb3NlZFZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQuY29t
cG9zZWQgPSBmYWxzZTsKKyAgICBKU1ZhbHVlIHByb21pc2VWYWx1ZSA9IGlzTnVsbE9yVW5kZWZp
bmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsICJwcm9taXNlIikpOworICAgIGlmICghcHJvbWlzZVZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnByb21pc2UgPSBjb252ZXJ0PElETFByb21pc2U8
SURMQW55Pj4oc3RhdGUsIHByb21pc2VWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICB0aHJvd1JlcXVpcmVk
TWVtYmVyVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCAicHJvbWlzZSIsICJUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50SW5pdCIsICJQcm9taXNlIik7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorICAgIEpTVmFsdWUgcmVhc29uVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5k
ZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0
YXRlLCAicmVhc29uIikpOworICAgIGlmICghcmVhc29uVmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICByZXN1bHQucmVhc29uID0gY29udmVydDxJRExBbnk+KHN0YXRlLCByZWFzb25WYWx1
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcmVzdWx0LnJlYXNvbiA9IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisKK2NsYXNzIEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGlj
OgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xB
UkVfSU5GTzsKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNO
b25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK3VzaW5nIEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudENvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ+OworCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUq
IHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudENvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOworICAgIEFTU0VSVChjYXN0ZWRU
aGlzKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQorICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gdHlwZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRvIGV2
ZW50SW5pdERpY3QgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8VGVzdFByb21pc2VSZWplY3Rpb25F
dmVudDo6SW5pdD4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1
dG8gb2JqZWN0ID0gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlKCpzdGF0ZSwgV1RG
TW92ZSh0eXBlKSwgV1RGTW92ZShldmVudEluaXREaWN0KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmpl
Y3QpKSk7Cit9CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU0V2ZW50Ojpn
ZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwg
RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0
b3IiLCBEb250RW51bSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9IH0sCisgICAg
eyAicHJvbWlzZSIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJyZWFzb24iLCBSZWFkT25s
eSB8IEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJl
YXNvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90
b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworfQorCitj
b25zdCBDbGFzc0luZm8gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpzX2luZm8gPSB7ICJU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpIH07CisKK0pTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudDo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudD4mJiBpbXBsKQorICAgIDogSlNFdmVudChzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworfQorCitKU09iamVj
dCogSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBKU0V2ZW50Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpKTsKK30KKworSlNP
YmplY3QqIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6cHJvdG90eXBlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBl
PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK3Rl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCogQmluZGluZ0NhbGxl
cjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0
ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Kj4oc3RhdGUudm0oKSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2Rl
ZEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OjphdHRyaWJ1dGU8
anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OlJlamVjdFByb21pc2U+KHN0YXRlLCB0aGlzVmFsdWUsICJwcm9taXNlIik7Cit9
CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9t
aXNlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYg
dGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFByb21p
c2U8SURMQW55Pj4oaW1wbC5wcm9taXNlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0
ZXIoRXhlY1N0YXRlJiwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dFJlYXNvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ+OjphdHRyaWJ1dGU8anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29uR2V0
dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAicmVhc29uIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQW55PihpbXBsLnJlYXNvbigpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmdldENvbnN0cnVjdG9yKHN0
YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOworICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJv
dG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3Rh
dGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKK30K
KworSlNWYWx1ZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9
CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQorI3By
YWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpj
b25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50QFdlYkNvcmVA
QDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dl
YkNvcmUyNVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRFW107IH0KKyNlbmRpZgorI2VuZGlmCisK
K0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYg
aW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICB2b2lkKiBhY3R1
YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkp
OworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50QFdlYkNvcmVAQDZCQCIpKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFi
bGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUyNVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRFWzJd
OworI2lmIENPTVBJTEVSKENMQU5HKQorICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudCBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQg
dGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGlu
dGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChfX2lzX3BvbHltb3JwaGljKFRl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpLCAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCBpcyBu
b3QgcG9seW1vcnBoaWMiKTsKKyNlbmRpZgorI2VuZGlmCisgICAgLy8gSWYgeW91IGhpdCB0aGlz
IGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAg
Ly8gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudCBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0
byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCB5
b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUg
U2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmlu
aXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVk
VlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmIGltcGwpCit7CisgICAg
cmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzYzRjZmZkNzk3
OTY3YTUzMmFkOTBlZmI1YjgxMzQ2YWYyMmZlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgorI2luY2x1ZGUgIkpTRXZlbnQuaCIK
KyNpbmNsdWRlICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IDogcHVibGljIEpTRXZl
bnQgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0V2ZW50OworICAgIHVzaW5nIERPTVdy
YXBwZWQgPSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OworICAgIHN0YXRpYyBKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dD4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4g
cHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUo
SlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6SlNUeXBl
KEpTRXZlbnRUeXBlKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKKyAgICBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiB3cmFwcGVkKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50Jj4oQmFzZTo6d3JhcHBlZCgpKTsKKyAgICB9Citwcm90ZWN0ZWQ6CisgICAgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBSZWY8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4mJik7CisKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Jik7Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KiBpbXBsKSB7
IHJldHVybiBpbXBsID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6Ompz
TnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYpOwor
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQoc3Rh
dGUsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7
IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ7CisgICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqOworfTsKK3RlbXBsYXRlPD4gVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudDo6SW5pdCBjb252ZXJ0RGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50OjpJbml0PihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CisKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYwZDg3NTA0NDE4Y2I4MWVhN2M5NGUyNGQxNDc1OTZkYmYwYmY5MzUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudC5pZGwKQEAgLTAsMCArMSwzOCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CitbCisgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIHR5cGUsIFRlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRJbml0IGV2ZW50SW5pdERpY3QpLAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0
U3RhdGUsCisgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCitdIGludGVyZmFjZSBUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50IDogRXZlbnQgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9t
aXNlPGFueT4gcHJvbWlzZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYW55IHJlYXNvbjsKK307
CisKK2RpY3Rpb25hcnkgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudEluaXQgOiBFdmVudEluaXQg
eworICAgIHJlcXVpcmVkIFByb21pc2U8YW55PiBwcm9taXNlOworICAgIGFueSByZWFzb247Cit9
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307965</attachid>
            <date>2017-04-24 04:22:04 -0700</date>
            <delta_ts>2017-04-29 10:57:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166752-20170424202203.patch</filename>
            <type>text/plain</type>
            <size>35361</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YjA0YTMyMTVlNTRiN2NmMjQ2YzNiYzkyZWJmMzBmOGFjMzEzNzYwLi42MWZiOTBkYmM0NDE1NDYz
YmY3YjIwNWU2ZDhiZDJkY2EzOGVlNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNy0wNC0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNl
UmVzb2x2ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTUHJvbWlzZTo6cmVzb2x2ZSk6CisgICAgICAgICogcnVudGltZS9KU1Byb21p
c2UuaDoKKwogMjAxNy0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNTY3NC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBmZDcwN2M5MGVlYWVmOTc1NGU2NjIyYTU0Zjg0YzJmMWQ5M2E2MmRlLi5kZGUzODdhNjM0
OGU1OGE3ZjhmOGEzN2RjNTE5YmUzMjExODY1YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTctMDQtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
KyAgICAgICAgSGFuZGxlIElETFByb21pc2U8PiBwcm9wZXJseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udmVydGVyPElETFByb21pc2U8VD4+Ojpjb252ZXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ29udmVydGVyPElETFByb21pc2U8VD4+Ojpjb252ZXJ0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChJc1Byb21pc2VU
eXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEFkZFRvSW5jbHVkZXNGb3JJRExUeXBlKToKKyAgICAgICAgKEdldEJhc2VJRExUeXBl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFy
eTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0Pik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90
b3R5cGU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50OjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnByb3RvdHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dD46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OndyYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5pZGw6IEFkZGVkLgorCiAyMDE3LTA0LTIz
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjE1NjU3IGFuZCByMjE1Njc2LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGRkNmM4ZmZmMTg4
NmNiY2I0MGZkYTBlMDcyZWY5NWE1ODQ4ZjVkYWEuLjg1Y2ZjNTc1NDk0NWFmZDU5MzhjYzNkYmRm
NGY0MTEwMWJmZWE3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKQEAgLTQyNyw2ICs0MjcsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6aW5pdChWTSYgdm0pCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGVC
dWlsdGluRnVuY3Rpb24oaW5pdC52bSwgaXRlcmF0b3JIZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNv
ZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKICAgICAgICAgfSk7CiAKKyAgICBt
X3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVu
Y3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihpbml0LnZtLCBwcm9taXNlQ29uc3RydWN0b3JS
ZXNvbHZlQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAgICAgICB9KTsK
KwogICAgIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVu
Y3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9t
aXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CiAgICAgbV9mdW5jdGlvblBy
b3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3lt
Ym9sRnVuY3Rpb24pOwogICAgIG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVy
KApAQCAtMTE4NSw2ICsxMTkwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1f
YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlz
T2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbik7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0
aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9IYXNJ
bnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGEyODYzMzkxZmQ1ZmRlZDNlYmNmMzJkNjZlYzllZWJl
NDI1NTgxZGIuLjNiOTc4Y2E0NDA3ZDliZTU3YjkyNjBhMDVlNDJmZWQyYTM1M2JkYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjYy
LDYgKzI2Miw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlv
bj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb247CiAgICAgTGF6
eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xG
dW5jdGlvbjsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1f
cHJvbWlzZVJlc29sdmVGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9v
YmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uOwpAQCAtNTEyLDYg
KzUxMyw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAg
IEpTRnVuY3Rpb24qIGluaXRpYWxpemVQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiog
aXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3Rv
Y29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CisgICAgSlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhp
cyk7IH0KICAgICBKU0Z1bmN0aW9uKiBvYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1
bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9u
ZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAppbmRleCA5NThkNDViMGNkNTU2ZDIz
NTQ4MmZkMjY5MjBhZTM1ZTJhZTY5YTc2Li4yOTMyYTkxM2M4ZWZiZjliODdmMjA5OWNjOTI0NzE3
NjE2NTA1YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5j
cHAKQEAgLTg1LDQgKzg1LDI0IEBAIEpTVmFsdWUgSlNQcm9taXNlOjpyZXN1bHQoVk0mIHZtKSBj
b25zdAogICAgIHJldHVybiBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnByb21pc2VSZXN1bHRQcml2YXRlTmFtZSgpKTsKIH0KIAorSlNQcm9taXNlKiBKU1By
b21pc2U6OnJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKKyAgICBKU0Z1bmN0aW9uKiBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uID0g
Z2xvYmFsT2JqZWN0LT5wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uKCk7CisgICAgQ2FsbERhdGEgY2Fs
bERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHByb21pc2VS
ZXNvbHZlRnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5
cGU6Ok5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFy
Z3VtZW50cy5hcHBlbmQodmFsdWUpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBw
cm9taXNlUmVzb2x2ZUZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbE9iamVjdC0+
cHJvbWlzZUNvbnN0cnVjdG9yKCksIGFyZ3VtZW50cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CisgICAgQVNTRVJUKHByb21pc2UuaW5oZXJpdHModm0sIEpTUHJv
bWlzZTo6aW5mbygpKSk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU1Byb21pc2UqPihyZXN1bHQpOwor
fQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2UuaAppbmRleCA2MzlmNjUwYmM2MTFjMjJjYmIxZTQyZmFhNWFhODljY2U0M2E3OGJh
Li45YWUyM2NlZjNiYmI3MzY4YTJkOTczNDQyNzVhZjgwYzM3NGM5YmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaApAQCAtNTEsNiArNTEsOCBAQCBjbGFzcyBK
U1Byb21pc2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgLy8gVGhpcyBtYXkgcmFp
c2UgYSBKUyBleGNlcHRpb24uCiAgICAgdm9pZCBpbml0aWFsaXplKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBleGVjdXRvcik7CiAKKyAgICBzdGF0aWMgSlNQcm9taXNlKiBy
ZXNvbHZlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworCiBwcm90ZWN0ZWQ6CiAgICAgSlNQcm9taXNl
KFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlzZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlzZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE3Yjg0ZWFkODNjYWExMWY2ZjhkNmJjOTIwM2E2YWU0OGI4YTgxNGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmgK
QEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJ
RExQcm9taXNlPFQ+PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj4geworICAgIHVz
aW5nIFJldHVyblR5cGUgPSBKU0M6OlN0cm9uZzxKU0M6OkpTUHJvbWlzZT47CisKKyAgICAvLyBo
dHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1wcm9taXNlCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgorICAg
IHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpT
VmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0
aW9uVGhyb3dlcigpKQorICAgIHsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAg
Ly8gMS4gTGV0IHJlc29sdmUgYmUgdGhlIG9yaWdpbmFsIHZhbHVlIG9mICVQcm9taXNlJS5yZXNv
bHZlLgorICAgICAgICAvLyAyLiBMZXQgcHJvbWlzZSBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcg
cmVzb2x2ZSB3aXRoICVQcm9taXNlJSBhcyB0aGUgdGhpcyB2YWx1ZSBhbmQgViBhcyB0aGUgc2lu
Z2xlIGFyZ3VtZW50IHZhbHVlLgorICAgICAgICBKU0M6OkpTUHJvbWlzZSogcHJvbWlzZSA9IEpT
Qzo6SlNQcm9taXNlOjpyZXNvbHZlKCZzdGF0ZSwgdmFsdWUpOworICAgICAgICBpZiAoc2NvcGUu
ZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIGV4Y2VwdGlvblRocm93ZXIoc3RhdGUsIHNjb3Bl
KTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKworICAgICAgICAvLyAzLiBS
ZXR1cm4gdGhlIElETCBwcm9taXNlIHR5cGUgdmFsdWUgdGhhdCBpcyBhIHJlZmVyZW5jZSB0byB0
aGUgc2FtZSBvYmplY3QgYXMgcHJvbWlzZS4KKyAgICAgICAgcmV0dXJuIHsgdm0sIHByb21pc2Ug
fTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8
SURMUHJvbWlzZTxUPj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc1N0YXRlID0g
ZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzR2xvYmFsT2JqZWN0ID0gZmFs
c2U7CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZlcnQoY29uc3QgSlNDOjpTdHJvbmc8
SlNDOjpKU1Byb21pc2U+JiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHJlc3VsdCBv
ZiBjb252ZXJ0aW5nIGFuIElETCBwcm9taXNlIHR5cGUgdmFsdWUgdG8gYW4gRUNNQVNjcmlwdCB2
YWx1ZSBpcyB0aGUgUHJvbWlzZSB2YWx1ZQorICAgICAgICAvLyB0aGF0IHJlcHJlc2VudHMgYSBy
ZWZlcmVuY2UgdG8gdGhlIHNhbWUgb2JqZWN0IHRoYXQgdGhlIElETCBwcm9taXNlIHR5cGUgcmVw
cmVzZW50cy4KKyAgICAgICAgcmV0dXJuIHByb21pc2UuZ2V0KCk7CisgICAgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDIxMzBhMDllZGMxNDRiNDIyZmQ4YjQxZmNlNTgxZmYx
MGZlNjA3YTYuLmEyMzhkOTNlMmExMmI5M2EwZWFjZGVhNmZkYWNjODg5MWZhYTBlM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAg
LTY4OCw2ICs2ODgsMTYgQEAgc3ViIElzUmVjb3JkVHlwZQogICAgIHJldHVybiAkdHlwZS0+bmFt
ZSBlcSAicmVjb3JkIjsKIH0KIAorCitzdWIgSXNQcm9taXNlVHlwZQoreworICAgIG15ICgkb2Jq
ZWN0LCAkdHlwZSkgPSBAXzsKKworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlw
ZSkgbmUgIklETFR5cGUiOworCisgICAgcmV0dXJuICR0eXBlLT5uYW1lIGVxICJQcm9taXNlIjsK
K30KKwogIyBUaGVzZSBtYXRjaCBXS19sY2ZpcnN0IGFuZCBXS191Y2ZpcnN0IGRlZmluZWQgaW4g
YnVpbHRpbnNfZ2VuZXJhdG9yLnB5LgogIyBVcHBlcmNhc2UgdGhlIGZpcnN0IGxldHRlciB3aGls
ZSByZXNwZWN0aW5nIFdlYktpdCBzdHlsZSBndWlkZWxpbmVzLgogIyBFLmcuLCB4bWxFbmNvZGlu
ZyBiZWNvbWVzIFhNTEVuY29kaW5nLCBidXQgeG1sbGxhbmcgYmVjb21lcyBYbWxsYW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCBjNTBjMGZlZWYxMmZkMzU1MDdhZTg2YjU2Zjc5NjkxNzM1YTMyYzhjLi4xYzY3MzI5MDY2
MDE4OGQ0MWE0MmFhOWIxNzNiOThjMTNlMGY1NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzAzLDYgKzMwMywxMiBA
QCBzdWIgQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkdHlwZSkpIHsKKyAgICAgICAg
QWRkVG9JbmNsdWRlcygiSlNET01Qcm9taXNlLmgiLCAkaW5jbHVkZXNSZWYsICRjb25kaXRpb25h
bCk7CisgICAgICAgIEFkZFRvSW5jbHVkZXNGb3JJRExUeXBlKEB7JHR5cGUtPnN1YnR5cGVzfVsw
XSwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdl
bmVyYXRvci0+SXNFeHRlcm5hbERpY3Rpb25hcnlUeXBlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRv
ci0+SXNFeHRlcm5hbEVudW1UeXBlKCR0eXBlKSB8fCAkdHlwZS0+bmFtZSBlcSAiRXZlbnRMaXN0
ZW5lciIpIHsKICAgICAgICAgQWRkVG9JbmNsdWRlcygiSlMiIC4gJHR5cGUtPm5hbWUgLiAiLmgi
LCAkaW5jbHVkZXNSZWYsICRjb25kaXRpb25hbCk7CiAgICAgICAgIHJldHVybjsKQEAgLTU0MzIs
NiArNTQzOCw3IEBAIHN1YiBHZXRCYXNlSURMVHlwZQogICAgIHJldHVybiAiSURMU2VxdWVuY2U8
IiAuIEdldElETFR5cGUoJGludGVyZmFjZSwgQHskdHlwZS0+c3VidHlwZXN9WzBdKSAuICI+IiBp
ZiAkY29kZUdlbmVyYXRvci0+SXNTZXF1ZW5jZVR5cGUoJHR5cGUpOwogICAgIHJldHVybiAiSURM
RnJvemVuQXJyYXk8IiAuIEdldElETFR5cGUoJGludGVyZmFjZSwgQHskdHlwZS0+c3VidHlwZXN9
WzBdKSAuICI+IiBpZiAkY29kZUdlbmVyYXRvci0+SXNGcm96ZW5BcnJheVR5cGUoJHR5cGUpOwog
ICAgIHJldHVybiAiSURMUmVjb3JkPCIgLiBHZXRJRExUeXBlKCRpbnRlcmZhY2UsIEB7JHR5cGUt
PnN1YnR5cGVzfVswXSkgLiAiLCAiIC4gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCBAeyR0eXBlLT5z
dWJ0eXBlc31bMV0pIC4gIj4iIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1JlY29yZFR5cGUoJHR5cGUp
OworICAgIHJldHVybiAiSURMUHJvbWlzZTwiIC4gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCBAeyR0
eXBlLT5zdWJ0eXBlc31bMF0pIC4gIj4iIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBl
KCR0eXBlKTsKICAgICByZXR1cm4gIklETFVuaW9uPCIgLiBqb2luKCIsICIsIEdldElETFVuaW9u
TWVtYmVyVHlwZXMoJGludGVyZmFjZSwgJHR5cGUpKSAuICI+IiBpZiAkdHlwZS0+aXNVbmlvbjsK
ICAgICByZXR1cm4gIklETENhbGxiYWNrRnVuY3Rpb248IiAuIEdldENhbGxiYWNrQ2xhc3NOYW1l
KCR0eXBlLT5uYW1lKSAuICI+IiBpZiAkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0Z1bmN0aW9u
KCR0eXBlKTsKICAgICByZXR1cm4gIklETENhbGxiYWNrSW50ZXJmYWNlPCIgLiBHZXRDYWxsYmFj
a0NsYXNzTmFtZSgkdHlwZS0+bmFtZSkgLiAiPiIgaWYgJGNvZGVHZW5lcmF0b3ItPklzQ2FsbGJh
Y2tJbnRlcmZhY2UoJHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xM2RiZGViYmExNWE0MDIzMDk1ZDRmZTA2YjU2YWY0N2YzZDA0
ZjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKQEAgLTAsMCArMSwyOTkgQEAK
Ky8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oIgorCisjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCisjaW5jbHVkZSAiSlNET01Db25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8PiBUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OkluaXQ+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBib29sIGlzTnVsbE9yVW5kZWZpbmVkID0gdmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKTsKKyAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51
bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5k
ZWZpbmVkICYmICFvYmplY3QpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhy
b3dTY29wZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmIChVTkxJS0VMWShv
YmplY3QgJiYgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9CisgICAgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdCByZXN1bHQ7CisgICAg
SlNWYWx1ZSBidWJibGVzVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkg
OiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYnVi
YmxlcyIpKTsKKyAgICBpZiAoIWJ1YmJsZXNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAg
IHJlc3VsdC5idWJibGVzID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgYnViYmxlc1ZhbHVl
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0g
ZWxzZQorICAgICAgICByZXN1bHQuYnViYmxlcyA9IGZhbHNlOworICAgIEpTVmFsdWUgY2FuY2Vs
YWJsZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5n
ZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImNhbmNlbGFibGUiKSk7
CisgICAgaWYgKCFjYW5jZWxhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1
bHQuY2FuY2VsYWJsZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIGNhbmNlbGFibGVWYWx1
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcmVzdWx0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICBKU1ZhbHVlIGNv
bXBvc2VkVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3Qt
PmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiY29tcG9zZWQiKSk7
CisgICAgaWYgKCFjb21wb3NlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0
LmNvbXBvc2VkID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgY29tcG9zZWRWYWx1ZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UK
KyAgICAgICAgcmVzdWx0LmNvbXBvc2VkID0gZmFsc2U7CisgICAgSlNWYWx1ZSBwcm9taXNlVmFs
dWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3Rh
dGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicHJvbWlzZSIpKTsKKyAgICBpZiAo
IXByb21pc2VWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5wcm9taXNlID0g
Y29udmVydDxJRExQcm9taXNlPElETEFueT4+KHN0YXRlLCBwcm9taXNlVmFsdWUpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdGhyb3dSZXF1aXJlZE1lbWJlclR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgInBy
b21pc2UiLCAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudEluaXQiLCAiUHJvbWlzZSIpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBKU1ZhbHVlIHJlYXNvblZhbHVlID0gaXNOdWxs
T3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlYXNvbiIpKTsKKyAgICBpZiAoIXJlYXNvblZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnJlYXNvbiA9IGNvbnZlcnQ8SURMQW55
PihzdGF0ZSwgcmVhc29uVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdC5yZWFzb24gPSBqc1VuZGVm
aW5lZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9v
bCBzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworCitjbGFzcyBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OworICAgIHN0YXRpYyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsK
KyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCit1c2luZyBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PjsKKwordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsK
KyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAyKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIHR5
cGUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CisgICAgYXV0byBldmVudEluaXREaWN0ID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQ+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKKyAgICBhdXRvIG9iamVjdCA9IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6
OmNyZWF0ZSgqc3RhdGUsIFdURk1vdmUodHlwZSksIFdURk1vdmUoZXZlbnRJbml0RGljdCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOworfQorCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICByZXR1cm4gSlNFdmVudDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOworfQor
Cit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Ojpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3Qp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVND
SUlMaXRlcmFsKCJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IikpKSwgUmVhZE9ubHkgfCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDIpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9OworCisv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQor
eworICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3RvcikgfSB9LAorICAgIHsgInByb21pc2UiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29y
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAg
eyAicmVhc29uIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRSZWFzb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUpIH07CisKK3ZvaWQg
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlVGFibGVWYWx1
ZXMsICp0aGlzKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudDo6c19pbmZvID0geyAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KSB9
OworCitKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYgaW1wbCkKKyAgICA6IEpTRXZlbnQo
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7CisKK30KKworSlNPYmplY3QqIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRl
UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBy
ZXR1cm4gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgSlNFdmVudDo6cHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnBy
b3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0
dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KHZtLCBnbG9i
YWxPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6Y2FzdEZv
ckF0dHJpYnV0ZShFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7
CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dCo+KHN0YXRlLnZtKCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKK30KKworc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2VHZXR0ZXIo
RXhlY1N0YXRlJiwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFBy
b21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50Pjo6YXR0cmlidXRlPGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2VHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZWplY3RQcm9taXNlPihzdGF0ZSwgdGhpc1Zh
bHVlLCAicHJvbWlzZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExQcm9taXNlPElETEFueT4+KGltcGwucHJvbWlzZSgpKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UmVhc29uR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6YXR0cmlidXRlPGpzVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudFJlYXNvbkdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInJlYXNvbiIpOworfQor
CitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29u
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYgdGhp
c09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEFueT4oaW1w
bC5yZWFzb24oKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRW5jb2RlZEpTVmFsdWUganNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkp
OworfQorCitib29sIHNldEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIGRvbU9i
amVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCB2YWx1ZSk7Cit9CisKK0pTVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lm
IFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJD
IiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudEBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjVUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RVtdOyB9
CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50PiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KGltcGwucHRyKCkpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0
ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVyKCI/
P183VGVzdFByb21pc2VSZWplY3Rpb25FdmVudEBXZWJDb3JlQEA2QkAiKSk7CisjZWxzZQorICAg
IHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMjVUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50RVsyXTsKKyNpZiBDT01QSUxFUihDTEFORykKKyAgICAvLyBJZiB0aGlz
IGZhaWxzIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwg
c28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUg
YXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQo
X19pc19wb2x5bW9ycGhpYyhUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KSwgIlRlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQgaXMgbm90IHBvbHltb3JwaGljIik7CisjZW5kaWYKKyNlbmRpZgorICAg
IC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVy
IGZyZWUgYnVnLCBvcgorICAgIC8vIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgaGFzIHN1YmNs
YXNzZXMuIElmIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgaGFzIHN1YmNsYXNzZXMgdGhhdCBn
ZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAg
ICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUg
aW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxl
UG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNy
ZWF0ZVdyYXBwZXI8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50JiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwp
OworfQorCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kM2M0Y2ZmZDc5Nzk2N2E1MzJhZDkwZWZiNWI4MTM0NmFmMjJmZTNlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudC5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMg
ZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBN
T0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNp
bmNsdWRlICJKU0V2ZW50LmgiCisjaW5jbHVkZSAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCA6IHB1YmxpYyBKU0V2ZW50IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNFdmVu
dDsKKyAgICB1c2luZyBET01XcmFwcGVkID0gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDsKKyAg
ICBzdGF0aWMgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgp
KTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6OkpTVHlwZShKU0V2ZW50VHlwZSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudCYgd3JhcHBlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudCY+KEJhc2U6OndyYXBwZWQoKSk7CisgICAgfQor
cHJvdGVjdGVkOgorICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudChKU0M6OlN0cnVjdHVy
ZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYp
OworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudCYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudCogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMoc3RhdGUsIGdsb2JhbE9iamVj
dCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50PiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZlB0cjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0
b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwo
KSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNv
bnZlcnRlclRyYWl0czxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiB7CisgICAgdXNpbmcgV3Jh
cHBlckNsYXNzID0gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OworICAgIHVzaW5nIFRvV3Jh
cHBlZFJldHVyblR5cGUgPSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KjsKK307Cit0ZW1wbGF0
ZTw+IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVz
dFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdD4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpOworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGQ4NzUwNDQxOGNiODFlYTdjOTRlMjRkMTQ3NTk2ZGJm
MGJmOTM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisq
CisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisq
CisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorKi8KKworWworICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBlLCBU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50SW5pdCBldmVudEluaXREaWN0KSwKKyAgICBDb25zdHJ1
Y3RvckNhbGxXaXRoPVNjcmlwdFN0YXRlLAorICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAor
XSBpbnRlcmZhY2UgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA6IEV2ZW50IHsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgUHJvbWlzZTxhbnk+IHByb21pc2U7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGFueSByZWFzb247Cit9OworCitkaWN0aW9uYXJ5IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRJbml0IDogRXZlbnRJbml0IHsKKyAgICByZXF1aXJlZCBQcm9taXNlPGFueT4gcHJvbWlzZTsK
KyAgICBhbnkgcmVhc29uOworfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308672</attachid>
            <date>2017-04-29 10:57:05 -0700</date>
            <delta_ts>2017-04-30 09:05:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166752-20170430025704.patch</filename>
            <type>text/plain</type>
            <size>38352</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1OTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTY2MmU0MmExY2ZhN2U5ZjU4NGZmOTVhNmYxYjA5YjU1YTgzNGRiLi42NjNmNTY4MDNmZTRlODZi
YzhmOTY5YTA1YTE1NmEwY2EwZjFmMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyNCBAQAogMjAxNy0wNC0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSlNQcm9taXNlOjpyZXNv
bHZlIHN0YXRpYyBmdW5jdGlvbi4KKyAgICAgICAgVGhpcyBhcHBsaWVzIGBQcm9taXNlLnJlc29s
dmUoKWAgY29udmVyc2lvbiB0byBhIGdpdmVuIHZhbHVlLgorCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnByb21pc2VSZXNvbHZlRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZS5oOgorCisyMDE3LTA0LTI5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCiAgICAgICAgIFtKU0NdIExhYmVsU2NvcGVQdHIgaXMgbm90IG5lY2Vzc2Fy
eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNDc0
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBjZDI5NDQyOWRlYmIzMjRhZTgyMGU2OTViMDY0YzhkMzAwNjU4MTky
Li4yNTEyMzM3MTk1M2ZhMDk3OTExMzNiMTkwNzI4MWVmNmRlN2E3M2Y1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMTctMDQtMjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgSGFuZGxlIElETFByb21pc2U8PiBwcm9wZXJseQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBs
ZW1lbnRzIFdlYklETCBQcm9taXNlIHR5cGUgY29udmVyc2lvbi4KKyAgICAgICAgQWNjb3JkaW5n
IHRvIHRoZSBzcGVjLCBQcm9taXNlIHRha2VzIGEgdmFsdWUgYW5kIGNvbnZlcnQgaXQgdG8gUHJv
bWlzZSBieSB1c2luZworICAgICAgICBQcm9taXNlLnJlc29sdmUgZnVuY3Rpb24uIFdlIGltcGxl
bWVudCBKU1Byb21pc2U6OnJlc29sdmUgaW4gSlNDIGFuZCB1c2UgaXQKKyAgICAgICAgaW4gSlNE
T01Db252ZXJ0UHJvbWlzZS4KKworICAgICAgICBXZSBkbyBub3Qgc2VsZWN0IERPTVByb21pc2Ug
b3IgRGVmZXJyZWRQcm9taXNlIGZvciBQcm9taXNlIEMrKyB0eXBlIGluIFdlYkNvcmUKKyAgICAg
ICAgc2luY2UgdGhleSBhcmUgdHlwZXMgZm9yIEpTUHJvbWlzZURlZmVycmVkLiBJbnN0ZWFkLCB3
ZSBqdXN0IHVzZSBTdHJvbmc8SlNQcm9taXNlPgorICAgICAgICByaWdodCBub3cuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNvbnZlcnQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQ6OkluaXQ+KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZTo6SlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50UHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudDo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudDo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRp
bmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6Y2FzdEZvckF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2VHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29u
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbkdl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQ6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6d3JhcHBlZCk6
CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNy
ZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50LmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL1Byb21pc2VSZWplY3Rpb25FdmVu
dC5oOgorICAgICAgICAqIGRvbS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9ydFVuaGFuZGxlZFJlamVjdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cmVwb3J0UmVq
ZWN0aW9uSGFuZGxlZCk6CisKIDIwMTctMDQtMjggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHVuZGVyIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBhNGFiODdjNGRi
ZDE5MzEyY2I5OWFjYTg2NmJkYmRkMjI1OTY2ZTY0Li41MjdmMzJiNTU0NTFhZGFhNTUzNDAxZWU4
MTUzOWI5NDJkM2ViYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC00MjgsNiArNDI4LDExIEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OmluaXQoVk0mIHZtKQogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
QnVpbHRpbkZ1bmN0aW9uKGluaXQudm0sIGl0ZXJhdG9ySGVscGVyc1BlcmZvcm1JdGVyYXRpb25D
b2RlR2VuZXJhdG9yKGluaXQudm0pLCBpbml0Lm93bmVyKSk7CiAgICAgICAgIH0pOwogCisgICAg
bV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oaW5pdC52bSwgcHJvbWlzZUNvbnN0cnVjdG9y
UmVzb2x2ZUNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKKyAgICAgICAgfSk7
CisKICAgICBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1
bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHByb21pc2VPcGVyYXRpb25zTmV3UHJv
bWlzZUNhcGFiaWxpdHlDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOwogICAgIG1fZnVuY3Rpb25Q
cm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5
bWJvbEZ1bmN0aW9uKTsKICAgICBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmluaXRMYXRl
cigKQEAgLTExODcsNiArMTE5Miw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5t
X2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0
LT5tX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09i
amVjdC0+bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CisgICAgdGhp
c09iamVjdC0+bV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24pOwog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5j
dGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvSGFz
SW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA3ZTlmZWNiNzFhYjEzYTBlYjE4ZjQyN2RlMzg4MDU4
MTAzZWJlNThlLi5iMzNkNmQzNTY0MmFlMzNmZGUxNjI1YjhiZDg3OGZiMzgwZmM5NzhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI2
NSw2ICsyNjUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rp
b24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pdGVyYXRvclByb3RvY29s
RnVuY3Rpb247CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBt
X3Byb21pc2VSZXNvbHZlRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1f
b2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+
IG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5j
dGlvbj4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbjsKQEAgLTUxNSw2
ICs1MTYsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAg
ICBKU0Z1bmN0aW9uKiBpbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24q
IGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90
b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQorICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZl
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRo
aXMpOyB9CiAgICAgSlNGdW5jdGlvbiogb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNG
dW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9m
dW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKaW5kZXggYTgzZDJiZjUyZjc2YTg0
ZmVhNzBjZGIxNDYzN2Y5ZTIwNzRmMjMxYi4uNWNlMGVkNjJhYzYwNjU4YTI3OTk0YjAzMTUyM2Ji
YjJiZDczOWVlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2Uu
Y3BwCkBAIC05Miw0ICs5MiwyMyBAQCBib29sIEpTUHJvbWlzZTo6aXNIYW5kbGVkKFZNJiB2bSkg
Y29uc3QKICAgICByZXR1cm4gdmFsdWUuYXNCb29sZWFuKCk7CiB9CiAKK0pTUHJvbWlzZSogSlNQ
cm9taXNlOjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7CisgICAgSlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVGdW5jdGlvbiA9
IGdsb2JhbE9iamVjdC0+cHJvbWlzZVJlc29sdmVGdW5jdGlvbigpOworICAgIENhbGxEYXRhIGNh
bGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShwcm9taXNl
UmVzb2x2ZUZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxU
eXBlOjpOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBh
cmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZXhlYywg
cHJvbWlzZVJlc29sdmVGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3Qt
PnByb21pc2VDb25zdHJ1Y3RvcigpLCBhcmd1bWVudHMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOworICAgIEFTU0VSVChwcm9taXNlLmluaGVyaXRzKHZtLCBKU1By
b21pc2U6OmluZm8oKSkpOworICAgIHJldHVybiBqc0Nhc3Q8SlNQcm9taXNlKj4ocmVzdWx0KTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZS5oCmluZGV4IGM3ZDdkOTljYWE0ZDg2ZDIyYzdmYWI0MGNjNGYzZDAwNTA0M2JiYzAu
LjJmNzdjY2M0OWVjYTI2ZjlmYTAwNjA1MWNjNzNiYjQ1NDA1MDE5MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCkBAIC01Miw2ICs1Miw4IEBAIGNsYXNzIEpT
UHJvbWlzZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAvLyBUaGlzIG1heSByYWlz
ZSBhIEpTIGV4Y2VwdGlvbi4KICAgICB2b2lkIGluaXRpYWxpemUoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIGV4ZWN1dG9yKTsKIAorICAgIHN0YXRpYyBKU1Byb21pc2UqIHJl
c29sdmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisKIHByb3RlY3RlZDoKICAgICBKU1Byb21pc2Uo
Vk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmgKaW5kZXggYzIy
MzcwZTI2NjRjYmU3MjYwMTIwODliYjY5NTI4OTgyYjllY2Q5MS4uODg5YmI4NDZkMTRjNWYxMDll
MDk1M2E1ZjJjYjQzOTA3OTlmZTg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0UHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydFByb21pc2UuaApAQCAtMjcsMzAgKzI3LDQ3IEBACiAKICNpbmNsdWRl
ICJJRExUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2UuaCIKKyNpbmNsdWRlIDxy
dW50aW1lL0pTUHJvbWlzZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBJ
bXBsZW1lbnQgSURMUHJvbWlzZTw+IGNvbnZlcnNpb25zLgotLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njc1MgotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVj
dCBDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj4gOiBEZWZhdWx0Q29udmVydGVyPElETFByb21pc2U8
VD4+IHsKLSAgICB1c2luZyBSZXR1cm5UeXBlID0gSlNDOjpKU1ZhbHVlOwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiA6IERlZmF1bHRDb252ZXJ0
ZXI8SURMUHJvbWlzZTxUPj4geworICAgIHVzaW5nIFJldHVyblR5cGUgPSBKU0M6OlN0cm9uZzxK
U0M6OkpTUHJvbWlzZT47CiAKLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZlcnQoSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jZXMtcHJvbWlzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlv
blRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KKyAgICBzdGF0aWMgUmV0dXJuVHlw
ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNl
cHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICAgICAgLy8gMS4gTGV0IHJlc29sdmUgYmUgdGhlIG9yaWdpbmFsIHZhbHVlIG9mICVQcm9taXNl
JS5yZXNvbHZlLgorICAgICAgICAvLyAyLiBMZXQgcHJvbWlzZSBiZSB0aGUgcmVzdWx0IG9mIGNh
bGxpbmcgcmVzb2x2ZSB3aXRoICVQcm9taXNlJSBhcyB0aGUgdGhpcyB2YWx1ZSBhbmQgViBhcyB0
aGUgc2luZ2xlIGFyZ3VtZW50IHZhbHVlLgorICAgICAgICBKU0M6OkpTUHJvbWlzZSogcHJvbWlz
ZSA9IEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKCZzdGF0ZSwgdmFsdWUpOworICAgICAgICBpZiAo
c2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIGV4Y2VwdGlvblRocm93ZXIoc3RhdGUs
IHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKworICAgICAgICAv
LyAzLiBSZXR1cm4gdGhlIElETCBwcm9taXNlIHR5cGUgdmFsdWUgdGhhdCBpcyBhIHJlZmVyZW5j
ZSB0byB0aGUgc2FtZSBvYmplY3QgYXMgcHJvbWlzZS4KKyAgICAgICAgcmV0dXJuIHsgdm0sIHBy
b21pc2UgfTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEpTQ29u
dmVydGVyPElETFByb21pc2U8VD4+IHsKLSAgICB1c2luZyBUeXBlID0gSlNDOjpKU1ZhbHVlOwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEpTQ29udmVydGVyPElETFByb21pc2U8VD4+IHsK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNTdGF0ZSA9IGZhbHNlOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZhbHNlOwogCi0gICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGNvbnZlcnQoSlNDOjpKU1Byb21pc2UmIHByb21pc2UpCisgICAgeworICAgICAg
ICByZXR1cm4gJnByb21pc2U7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252
ZXJ0KGNvbnN0IEpTQzo6U3Ryb25nPEpTQzo6SlNQcm9taXNlPiYgcHJvbWlzZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgLy8gVGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5n
IGFuIElETCBwcm9taXNlIHR5cGUgdmFsdWUgdG8gYW4gRUNNQVNjcmlwdCB2YWx1ZSBpcyB0aGUg
UHJvbWlzZSB2YWx1ZQorICAgICAgICAvLyB0aGF0IHJlcHJlc2VudHMgYSByZWZlcmVuY2UgdG8g
dGhlIHNhbWUgb2JqZWN0IHRoYXQgdGhlIElETCBwcm9taXNlIHR5cGUgcmVwcmVzZW50cy4KKyAg
ICAgICAgcmV0dXJuIHByb21pc2UuZ2V0KCk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2RiZGViYmExNWE0MDIz
MDk1ZDRmZTA2YjU2YWY0N2YzZDA0ZjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5j
cHAKQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oIgorCisj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgi
CisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordGVtcGxhdGU8PiBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IGNvbnZlcnREaWN0
aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQ+KEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBib29sIGlzTnVsbE9yVW5k
ZWZpbmVkID0gdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBhdXRvKiBvYmplY3QgPSBp
c051bGxPclVuZGVmaW5lZCA/IG51bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAo
VU5MSUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVkICYmICFvYmplY3QpKSB7CisgICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAg
fQorICAgIGlmIChVTkxJS0VMWShvYmplY3QgJiYgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2Jq
ZWN0VHlwZSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dDo6SW5pdCByZXN1bHQ7CisgICAgSlNWYWx1ZSBidWJibGVzVmFsdWUgPSBpc051bGxPclVuZGVm
aW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCAiYnViYmxlcyIpKTsKKyAgICBpZiAoIWJ1YmJsZXNWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5idWJibGVzID0gY29udmVydDxJRExCb29sZWFu
PihzdGF0ZSwgYnViYmxlc1ZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQuYnViYmxlcyA9IGZhbHNl
OworICAgIEpTVmFsdWUgY2FuY2VsYWJsZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1Vu
ZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZSwgImNhbmNlbGFibGUiKSk7CisgICAgaWYgKCFjYW5jZWxhYmxlVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgeworICAgICAgICByZXN1bHQuY2FuY2VsYWJsZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4o
c3RhdGUsIGNhbmNlbGFibGVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0LmNhbmNlbGFibGUgPSBm
YWxzZTsKKyAgICBKU1ZhbHVlIGNvbXBvc2VkVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpz
VW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCAiY29tcG9zZWQiKSk7CisgICAgaWYgKCFjb21wb3NlZFZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgcmVzdWx0LmNvbXBvc2VkID0gY29udmVydDxJRExCb29sZWFuPihzdGF0
ZSwgY29tcG9zZWRWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0LmNvbXBvc2VkID0gZmFsc2U7Cisg
ICAgSlNWYWx1ZSBwcm9taXNlVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVk
KCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAi
cHJvbWlzZSIpKTsKKyAgICBpZiAoIXByb21pc2VWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAg
ICAgIHJlc3VsdC5wcm9taXNlID0gY29udmVydDxJRExQcm9taXNlPElETEFueT4+KHN0YXRlLCBw
cm9taXNlVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGhyb3dSZXF1aXJlZE1lbWJlclR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgInByb21pc2UiLCAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudElu
aXQiLCAiUHJvbWlzZSIpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBKU1ZhbHVl
IHJlYXNvblZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0
LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlYXNvbiIpKTsK
KyAgICBpZiAoIXJlYXNvblZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnJl
YXNvbiA9IGNvbnZlcnQ8SURMQW55PihzdGF0ZSwgcmVhc29uVmFsdWUpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHJl
c3VsdC5yZWFzb24gPSBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8v
IEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRQcm9taXNlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRSZWFzb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworCitjbGFzcyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUg
OiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNl
ID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAg
ICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlw
ZT4odm0uaGVhcCkpIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJik7Cit9OworCit1c2luZyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PjsKKwordGVt
cGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcio+
KHN0YXRlLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CisgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKKyAgICBhdXRvIHR5cGUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYXV0byBldmVudEluaXREaWN0ID0gY29u
dmVydDxJRExEaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQ+Pigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRvIG9iamVjdCA9IFRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZSgqc3RhdGUsIFdURk1vdmUodHlwZSksIFdURk1v
dmUoZXZlbnRJbml0RGljdCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlD
cmVhdGVkPElETEludGVyZmFjZTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pj4oKnN0YXRlLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOworfQorCit0ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNFdmVudDo6Z2V0Q29uc3RydWN0b3Iodm0s
ICZnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Ojpwcm90b3R5
cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxT
dHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
IikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDIpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKwor
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dENvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0sIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgInByb21pc2UiLCBSZWFk
T25seSB8IEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dFByb21pc2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCisgICAgeyAicmVhc29uIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3Nv
ciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24pLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCit9Owor
Citjb25zdCBDbGFzc0luZm8gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpz
X2luZm8gPSB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQ
cm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6c19pbmZvID0geyAiVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50KSB9OworCitKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYg
aW1wbCkKKyAgICA6IEpTRXZlbnQoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VS
VChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKK30KKworSlNPYmplY3QqIEpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudDo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJv
dG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgSlNFdmVudDo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQ6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Pjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudCo+KHN0YXRlLnZtKCksIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudFByb21pc2VHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50JiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudFByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6YXR0cmlidXRlPGpzVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudFByb21pc2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZWplY3RQ
cm9taXNlPihzdGF0ZSwgdGhpc1ZhbHVlLCAicHJvbWlzZSIpOworfQorCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmIHRoaXNPYmplY3QsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExQcm9taXNlPElETEFueT4+KGltcGwu
cHJvbWlzZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29uR2V0dGVyKEV4ZWNTdGF0ZSYsIEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24oRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6YXR0cmli
dXRlPGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbkdldHRlcj4oc3RhdGUsIHRoaXNW
YWx1ZSwgInJlYXNvbiIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UmVhc29uR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTPElETEFueT4oaW1wbC5yZWFzb24oKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworRW5jb2RlZEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
Cit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSkpOworfQorCitib29sIHNldEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7Cit9CisKK0pTVmFsdWUgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCisjaWYgRU5BQkxFKEJJ
TkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVy
KCI/P183VGVzdFByb21pc2VSZWplY3Rpb25FdmVudEBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9Cisj
ZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjVUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50RVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiYmIGltcGwpCit7CisKKyNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9
ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGltcGwucHRyKCkpKTsKKyNpZiBQTEFURk9STShX
SU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oX19pZGVudGlmaWVyKCI/P183VGVzdFByb21pc2VSZWplY3Rpb25FdmVudEBXZWJDb3Jl
QEA2QkAiKSk7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRW
TjdXZWJDb3JlMjVUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RVsyXTsKKyNpZiBDT01QSUxFUihD
TEFORykKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgZG9l
cyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlv
bgorICAgIHN0YXRpY19hc3NlcnQoX19pc19wb2x5bW9ycGhpYyhUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50KSwgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgaXMgbm90IHBvbHltb3JwaGljIik7
CisjZW5kaWYKKyNlbmRpZgorICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVp
dGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQg
aGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJl
bnRseSByZXF1aXJlIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgeW91IHRvIG9wdCBvdXQgb2Yg
YmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0
aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFT
RV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwor
I2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRl
LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2M0Y2ZmZDc5Nzk2N2E1MzJhZDkwZWZiNWI4
MTM0NmFmMjJmZTNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oCkBAIC0wLDAgKzEs
NzMgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJKU0RPTUNvbnZlcnQuaCIKKyNpbmNsdWRlICJKU0V2ZW50LmgiCisjaW5jbHVkZSAiVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA6IHB1YmxpYyBKU0V2ZW50IHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSlNFdmVudDsKKyAgICB1c2luZyBET01XcmFwcGVkID0gVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudDsKKyAgICBzdGF0aWMgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYgaW1wbCkKKyAgICB7
CisgICAgICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KHN0cnVjdHVyZSwg
Kmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6OkpTVHlwZShKU0V2ZW50VHlwZSksIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYgd3JhcHBlZCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudCY+KEJhc2U6
OndyYXBwZWQoKSk7CisgICAgfQorcHJvdGVjdGVkOgorICAgIEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudChKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQ+JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZN
Jik7Cit9OworCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYpOworaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRv
SlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCosIFJlZjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiYmKTsKK2lubGluZSBKU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiYmIGlt
cGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3Qs
IGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK3RlbXBsYXRlPD4g
c3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50OworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50KjsKK307Cit0ZW1wbGF0ZTw+IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQg
Y29udmVydERpY3Rpb25hcnk8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdD4oSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTZhOTQ5MWFkN2E1
MTE3YzU4YTE3YTFmODg4NzUwZWFmYjg3YzkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaWRs
CkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitbCisgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIHR5cGUsIFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRJbml0IGV2ZW50SW5pdERpY3QpLAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9
U2NyaXB0U3RhdGUsCisgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCitdIGludGVyZmFjZSBU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IDogRXZlbnQgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBQcm9taXNlPGFueT4gcHJvbWlzZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYW55IHJlYXNv
bjsKK307CisKK2RpY3Rpb25hcnkgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudEluaXQgOiBFdmVu
dEluaXQgeworICAgIHJlcXVpcmVkIFByb21pc2U8YW55PiBwcm9taXNlOworICAgIGFueSByZWFz
b247Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rpb25F
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rpb25FdmVudC5oCmluZGV4
IDBmYjFhNGMwYTA2MTk3ZDQzYzAwNmZiYzczMDQ3NzRmYjMxMzdlNzIuLjI4M2M4NWVhN2UwMDE5
YTQwZGJkNDZjYzIwMzE3NGYzMzMzYTFlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlz
ZVJlamVjdGlvbkV2ZW50LmgKQEAgLTI3LDEzICsyNywxNCBAQAogCiAjaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNQcm9taXNl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHJvbWlzZVJlamVjdGlvbkV2ZW50
IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50
SW5pdCB7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSBwcm9taXNlOworICAgICAgICBKU0M6OlN0cm9u
ZzxKU0M6OkpTUHJvbWlzZT4gcHJvbWlzZTsKICAgICAgICAgSlNDOjpKU1ZhbHVlIHJlYXNvbjsK
ICAgICB9OwogCkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIFByb21pc2VSZWplY3Rpb25FdmVudCBm
aW5hbCA6IHB1YmxpYyBFdmVudCB7CiAKICAgICB2aXJ0dWFsIH5Qcm9taXNlUmVqZWN0aW9uRXZl
bnQoKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9t
aXNlLmdldCgpOyB9CisgICAgSlNDOjpKU1Byb21pc2UmIHByb21pc2UoKSBjb25zdCB7IHJldHVy
biAqbV9wcm9taXNlLmdldCgpOyB9CiAgICAgSlNDOjpKU1ZhbHVlIHJlYXNvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVhc29uLmdldCgpOyB9CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVy
ZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFByb21pc2VSZWplY3Rpb25FdmVudEludGVy
ZmFjZVR5cGU7IH0KQEAgLTUyLDcgKzUzLDcgQEAgY2xhc3MgUHJvbWlzZVJlamVjdGlvbkV2ZW50
IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIHByaXZhdGU6CiAgICAgUHJvbWlzZVJlamVjdGlvbkV2
ZW50KEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElz
VHJ1c3RlZCk7CiAKLSAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fcHJvbWlzZTsKKyAg
ICBKU0M6OlN0cm9uZzxKU0M6OkpTUHJvbWlzZT4gbV9wcm9taXNlOwogICAgIEpTQzo6U3Ryb25n
PEpTQzo6VW5rbm93bj4gbV9yZWFzb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVq
ZWN0ZWRQcm9taXNlVHJhY2tlci5jcHAKaW5kZXggNWQxZjkyNGUwOGI4YTVjYzUyNGJlNWU2Mzg0
NDhmMGU4Zjg1M2E2OS4uMDUxYWEzNTZiN2MyMTMzMThmNjZkNzE4MTc5YmYzZTU5YWVjNGQ4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcApAQCAt
MTcwLDcgKzE3MCw3IEBAIHZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cmVwb3J0VW5oYW5k
bGVkUmVqZWN0aW9ucyhWZWN0b3I8VW5oYW5kbGVkUHJvbWlzZT4mCiAKICAgICAgICAgUHJvbWlz
ZVJlamVjdGlvbkV2ZW50OjpJbml0IGluaXRpYWxpemVyOwogICAgICAgICBpbml0aWFsaXplci5j
YW5jZWxhYmxlID0gdHJ1ZTsKLSAgICAgICAgaW5pdGlhbGl6ZXIucHJvbWlzZSA9ICZwcm9taXNl
OworICAgICAgICBpbml0aWFsaXplci5wcm9taXNlLnNldCh2bSwgJnByb21pc2UpOwogICAgICAg
ICBpbml0aWFsaXplci5yZWFzb24gPSBwcm9taXNlLnJlc3VsdCh2bSk7CiAKICAgICAgICAgYXV0
byBldmVudCA9IFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlKHN0YXRlLCBldmVudE5hbWVz
KCkudW5oYW5kbGVkcmVqZWN0aW9uRXZlbnQsIGluaXRpYWxpemVyKTsKQEAgLTE5NSw3ICsxOTUs
NyBAQCB2b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9ydFJlamVjdGlvbkhhbmRsZWQo
UmVqZWN0ZWRQcm9taXNlJiYgcmVqZWN0ZWRQcgogICAgIEV4ZWNTdGF0ZSYgc3RhdGUgPSAqcmVq
ZWN0ZWRQcm9taXNlLmdsb2JhbE9iamVjdCgpLmdsb2JhbEV4ZWMoKTsKIAogICAgIFByb21pc2VS
ZWplY3Rpb25FdmVudDo6SW5pdCBpbml0aWFsaXplcjsKLSAgICBpbml0aWFsaXplci5wcm9taXNl
ID0gJnJlamVjdGVkUHJvbWlzZS5wcm9taXNlKCk7CisgICAgaW5pdGlhbGl6ZXIucHJvbWlzZS5z
ZXQodm0sICZyZWplY3RlZFByb21pc2UucHJvbWlzZSgpKTsKICAgICBpbml0aWFsaXplci5yZWFz
b24gPSByZWplY3RlZFByb21pc2UucHJvbWlzZSgpLnJlc3VsdChzdGF0ZS52bSgpKTsKIAogICAg
IGF1dG8gZXZlbnQgPSBQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZShzdGF0ZSwgZXZlbnRO
YW1lcygpLnJlamVjdGlvbmhhbmRsZWRFdmVudCwgaW5pdGlhbGl6ZXIpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM3NGE4
NTU1NTZmOGU5ZjdhNTQyZmE1YWEzZWM1MDhiZDExOWRiMDUuLmIyYjdkYjI0YzFlNjkxMzllNmQ5
YTU2MGYzZWU5NjFlY2ZjMTYxYjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wNC0yOSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBIYW5kbGUg
SURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGpzL2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9s
bG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGpzL2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9sbG93LXdl
YmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS5odG1sOiBBZGRlZC4KKwogMjAxNy0wNC0yOCAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggdW5k
ZXIgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFuZGxlQXJpYUV4cGFuZGVk
Q2hhbmdlZCgpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21pc2UtcmVqZWN0
aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lvbi1ydWxlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVudC1z
aG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzRlMzk3NzdjMmNhOTJiYjVkNjY4ZTBmMjEyNmMyZjIyNDZiNTVlYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVu
dC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdCBQcm9taXNlUmVqZWN0aW9uRXZlbnQgY29uc3RydWN0
b3IgZm9sbG93cyBXZWJJREwgcHJvbWlzZSBjb252ZXJzaW9uIHJ1bGUuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworUEFTUyBldmVudC5wcm9taXNlIGlzIGFuIGluc3RhbmNlIG9mIFBy
b21pc2UKK1BBU1MgZXZlbnQucmVhc29uIGlzICJDYXBwdWNjaW5vIgorUEFTUyB2YWx1ZSBpcyA0
MgorUEFTUyBldmVudC5wcm9taXNlIGlzIGFuIGluc3RhbmNlIG9mIFByb21pc2UKK1BBU1MgZXZl
bnQucHJvbWlzZSBpcyBwcm9taXNlCitQQVNTIGV2ZW50LnJlYXNvbiBpcyAiQ29jb2EiCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xs
b3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lvbi1ydWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9k
b20vcHJvbWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1j
b252ZXJzaW9uLXJ1bGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjA3MGEzNDlmMDE3OGFjZmRlMDdiZjU0
MWE0NmNlMGNjMWUxYzA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3By
b21pc2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVy
c2lvbi1ydWxlLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21p
c2VSZWplY3Rpb25FdmVudCBjb25zdHJ1Y3RvciBmb2xsb3dzIFdlYklETCBwcm9taXNlIGNvbnZl
cnNpb24gcnVsZS4nKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGV2ZW50
ID0gbnVsbDsKK3ZhciB2YWx1ZSA9IG51bGw7Cit2YXIgcHJvbWlzZSA9IG51bGw7CisKK2V2ZW50
ID0gbmV3IFByb21pc2VSZWplY3Rpb25FdmVudCgicmVqZWN0aW9uaGFuZGxlZCIsIHsKKyAgICBw
cm9taXNlOiA0MiwKKyAgICByZWFzb246IGBDYXBwdWNjaW5vYAorfSk7CitzaG91bGRCZVR5cGUo
YGV2ZW50LnByb21pc2VgLCBgUHJvbWlzZWApOworc2hvdWxkQmUoYGV2ZW50LnJlYXNvbmAsIGAi
Q2FwcHVjY2lubyJgKTsKK2V2ZW50LnByb21pc2UudGhlbihmdW5jdGlvbiAodikgeworICAgIHZh
bHVlID0gdjsKKyAgICBzaG91bGRCZShgdmFsdWVgLCBgNDJgKTsKKworICAgIHByb21pc2UgPSBQ
cm9taXNlLnJlc29sdmUoNDIpOworICAgIGV2ZW50ID0gbmV3IFByb21pc2VSZWplY3Rpb25FdmVu
dCgicmVqZWN0aW9uaGFuZGxlZCIsIHsKKyAgICAgICAgcHJvbWlzZTogcHJvbWlzZSwKKyAgICAg
ICAgcmVhc29uOiBgQ29jb2FgCisgICAgfSk7CisKKyAgICBzaG91bGRCZVR5cGUoYGV2ZW50LnBy
b21pc2VgLCBgUHJvbWlzZWApOworICAgIHNob3VsZEJlKGBldmVudC5wcm9taXNlYCwgYHByb21p
c2VgKTsKKyAgICBzaG91bGRCZShgZXZlbnQucmVhc29uYCwgYCJDb2NvYSJgKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308693</attachid>
            <date>2017-04-30 09:05:53 -0700</date>
            <delta_ts>2017-05-01 01:51:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166752-20170501010551.patch</filename>
            <type>text/plain</type>
            <size>143192</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1OTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OGNmOWYxMjAwZGE3Zjc4NmNjMTJjMGMxY2NhNDA3ZTIwOGYwZWEwLi4yNThlNzk2MDFhODIzZDIz
YmEzMjJhM2VkNzM0ODk3NjE4MTYwMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNy0wNC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSlNQcm9taXNlOjpyZXNv
bHZlIHN0YXRpYyBmdW5jdGlvbi4KKyAgICAgICAgVGhpcyBhcHBsaWVzIGBQcm9taXNlLnJlc29s
dmUoKWAgY29udmVyc2lvbiB0byBhIGdpdmVuIHZhbHVlLgorCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnByb21pc2VSZXNvbHZlRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZS5oOgorCiAyMDE3LTA0LTMwICBPbGVrc2FuZHIgU2thY2hrb3YgIDxnc2thY2hr
b3ZAZ21haWwuY29tPgogCiAgICAgICAgIFdlIGluaXRpYWxpemUgZnVuY3Rpb25zIHRvbyBlYXJs
eSBpbiBhbiBldmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U3MGY0MzFkZjI2NzQ3YzRjNWJiMTFkM2Y3N2Y1
ZTM3YTM3YjE0MC4uMmRkN2VmYzk2NmFkMTIxYjM5NGJkZjQ2MWNjZjZlMWIzN2M1NDAwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwMCBAQAorMjAxNy0wNC0zMCAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Bl
cmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3
NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgV2ViSURMIFByb21pc2UgdHlwZSBjb252ZXJzaW9uLiBBY2NvcmRp
bmcgdG8gdGhlIHNwZWMsCisgICAgICAgIFByb21pc2UgdGFrZXMgYSB2YWx1ZSBhbmQgY29udmVy
dCBpdCB0byBQcm9taXNlIGJ5IHVzaW5nIFByb21pc2UucmVzb2x2ZSBmdW5jdGlvbi4KKyAgICAg
ICAgV2UgaW1wbGVtZW50IEpTUHJvbWlzZTo6cmVzb2x2ZSBpbiBKU0MgYW5kIHVzZSBpdCBpbiBK
U0RPTUNvbnZlcnRQcm9taXNlLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIG5ld2x5IGlu
dHJvZHVjZSBhIG5ldyB0eXBlIERPTVByb21pc2UuIEFuZCB3ZSBhbHNvIHJlbmFtZSB0aGUgcHJl
dmlvdXMKKyAgICAgICAgRE9NUHJvbWlzZSB0byBET01Qcm9taXNlRGVmZXJyZWQgc2luY2UgaXQg
aXMgY29ycmVzcG9uZGluZyB0byBKU1Byb21pc2VEZWZlcnJlZC4KKyAgICAgICAgRE9NUHJvbWlz
ZSBpcyBET01HdWFyZGVkIG9iamVjdC4gU28gaXQgaXMgc3Ryb25nbHkgcmVmZXJlbmNlZCBmcm9t
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgYW5kIGl0IGlzIHdlYWtseSByZWZlcmVu
Y2VkIGZyb20gdGhlIG9iamVjdCBpdHNlbGYuIFRoaXMgaXMgaW1wb3J0YW50IHNpbmNlIFN0cm9u
ZzxKU1Byb21pc2U+CisgICAgICAgIHJlZmVyZW5jZSBpbiBDKysgb2JqZWN0IHRoYXQgaGFzIGEg
d3JhcHBlciAoaW4gdGhpcyBjYXNlLCBQcm9taXNlUmVqZWN0aW9uRXZlbnQpIGVhc2lseSBjYXVz
ZXMKKyAgICAgICAgY3ljbGljIHJlZmVyZW5jZS4gV2UgaG9sZCBpdCBhcyBET01Qcm9taXNlIGlu
c3RlYWQgb2YgU3Ryb25nPEpTUHJvbWlzZT4gdG8gYnJlYWsgdGhlCisgICAgICAgIGN5Y2xpYyBy
ZWZlcmVuY2UgZWRnZSB3aXRoIHdlYWsgcmVmZXJlbmNlLiBPbmUgcHJvYmxlbSBpcyB0aGF0IGhl
bGQgb2JqZWN0IGJ5IERPTVByb21pc2Ugd2lsbAorICAgICAgICBiZSBtaXNzZWQgd2hlbiB0aGUg
d3JhcHBlciB3b3JsZCBpcyBkZXN0cm95ZWQuIFRoaXMgaXMgdGhlIHNhbWUgdG8gdGhlIGN1cnJl
bnQgRE9NUHJvbWlzZURlZmVycmVkLgorCisgICAgICAgIEN1cnJlbnRseSwgd2UgZG8gbm90IHRh
a2UgdGhlIGFwcHJvYWNoLCBsaWtlLgorICAgICAgICBlLmcuIFRoZXJlIGlzIEMrKyBvYmplY3Qg
dGhhdCByZXByZXNlbnRzIFByb21pc2UuIEFuZCBpdHMgd3JhcHBlciBvYmplY3QgaXMgSlNQcm9t
aXNlIHRoaW5nLgorICAgICAgICBXaGVuIGV4cG9zaW5nIHRoZSBDKysgb2JqZWN0LCBpdCB3aWxs
IGJlIGNvbnZlcnRlZCB0byBhIHdyYXBwZXIgb2JqZWN0LgorICAgICAgICBXZSBkbyBub3QgdGFr
ZSB0aGlzIGFwcHJvYWNoIGJlY2F1c2UgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGNhbiB0YWtlIHVz
ZXItcHJvdmlkZWQgcHJvbWlzZS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHVzZXJzIGNhbiBjcmVh
dGUgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGluIGEgZm9ybQorICAgICAgICBgbmV3IFByb21pc2VS
ZWplY3Rpb25FdmVudCgiLi4uIiwgeyBwcm9taXNlOiBwcm9taXNlIH0pYC4gSW4gdGhpcyBjYXNl
LCBgZXZlbnQucHJvbWlzZSA9PT0gcHJvbWlzZWAKKyAgICAgICAgaXMgcmVxdWlyZWQuIEFuZCB0
aGlzIGlzIG5vdCBzdWl0YWJsZSBmb3IgdGhlIGFib3ZlIEMrKyBvYmplY3QgbW9kZWwuCisKKyAg
ICAgICAgTGFyZ2UgcGFydCBvZiB0aGlzIHBhdGNoIGlzIG1lY2hhbmljYWwgb25lIHRvIHJlcGxh
Y2UgRE9NUHJvbWlzZSB3aXRoIERPTVByb21pc2VEZWZlcnJlZC4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmg6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9ET01XaW5kb3dGZXRjaC5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZSk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRh
dGVzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRMb2NhbERl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRT
ZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlv
bjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpyZXBsYWNl
VHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmg6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlcGxhY2VUcmFj
ayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVNvdXJjZTo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Db250ZXh0OjpzZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1
c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpyZXN1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnRQcm9taXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMUHJv
bWlzZTxUPj46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMUHJv
bWlzZTxUPj46OmNvbnZlcnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVByb21pc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpw
cm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OkRPTVByb21pc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZWplY3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlV2l0aENhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0V2l0
aENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6
RGVmZXJyZWRQcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJv
bWlzZTo6ZGVmZXJyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJh
c2U6OkRPTVByb21pc2VCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21p
c2VCYXNlOjpvcGVyYXRvcj0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlz
ZUJhc2U6OnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFz
ZTo6cmVqZWN0VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFz
ZTo6cHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpyZXNv
bHZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U8dm9pZD46OnJlc29s
dmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2FsbFByb21pc2VGdW5jdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRlcik6
IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cHJvbWlzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZFByb21pc2U6OnJlamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpyZWplY3RQ
cm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURlZmVy
cmVkUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWplY3RlZFByb21pc2VXaXRo
VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQXNKU09OKToKKyAgICAgICAgKFdl
YkNvcmU6OmZ1bGZpbGxQcm9taXNlV2l0aEpTT04pOgorICAgICAgICAoV2ViQ29yZTo6ZnVsZmls
bFByb21pc2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZS5oLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZWplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlV2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0V2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlZmVycmVkUHJvbWlzZTo6RGVmZXJyZWRQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlZmVycmVkUHJvbWlzZTo6ZGVmZXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlz
ZURlZmVycmVkQmFzZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6
RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cmVqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBy
b21pc2VEZWZlcnJlZEJhc2U6OnJlamVjdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJv
bWlzZURlZmVycmVkQmFzZTo6cHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNl
RGVmZXJyZWQ6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+OjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxQcm9taXNlRnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6YmluZGluZ1Byb21pc2VGdW5jdGlvbkFkYXB0ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRCdWZmZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50OjpJbml0Pik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OkpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aW5kaW5nQ2FsbGVyPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD46OmNhc3RGb3JBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNl
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJl
YXNvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFz
b25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlD
cmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OndyYXBw
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3
bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudC5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oLgorICAgICAgICAqIGNzcy9Gb250RmFj
ZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5oOgorICAgICAgICAqIGRvbS9DdXN0b21F
bGVtZW50UmVnaXN0cnkuaDoKKyAgICAgICAgKiBkb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlByb21pc2VSZWplY3Rpb25FdmVudDo6UHJvbWlzZVJlamVj
dGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50Lmg6CisgICAg
ICAgICogZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVqZWN0ZWRQcm9taXNlOjpSZWplY3RlZFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVq
ZWN0ZWRQcm9taXNlOjpwcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlVuaGFuZGxlZFByb21p
c2U6OlVuaGFuZGxlZFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNl
VHJhY2tlcjo6cHJvbWlzZVJlamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlamVjdGVkUHJv
bWlzZVRyYWNrZXI6OnByb21pc2VIYW5kbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlamVjdGVk
UHJvbWlzZVRyYWNrZXI6OnJlcG9ydFVuaGFuZGxlZFJlamVjdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cmVwb3J0UmVqZWN0aW9uSGFuZGxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWplY3RlZFByb21pc2U6Omdsb2JhbE9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnJlamVjdFBlbmRpbmdQbGF5UHJvbWlzZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlzZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheSk6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbW1hbmRCdWZmZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorCiAyMDE3
LTA0LTMwICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
QVRLXSBFbWl0IG9iamVjdDpzdGF0ZS1jaGFuZ2VkOmJ1c3kgZXZlbnQgd2hlbiBhcmlhLWJ1c3kg
dmFsdWUgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCmluZGV4IGE0YWI4N2M0ZGJkMTkzMTJjYjk5YWNhODY2YmRiZGQyMjU5NjZl
NjQuLjUyN2YzMmI1NTQ1MWFkYWE1NTM0MDFlZTgxNTM5Yjk0MmQzZWJhMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQyOCw2
ICs0MjgsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oaW5pdC52bSwgaXRl
cmF0b3JIZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQu
b3duZXIpKTsKICAgICAgICAgfSk7CiAKKyAgICBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uaW5p
dExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQp
IHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihpbml0LnZtLCBwcm9taXNlQ29uc3RydWN0b3JSZXNvbHZlQ29kZUdlbmVyYXRvcihpbml0LnZt
KSwgaW5pdC5vd25lcikpOworICAgICAgICB9KTsKKwogICAgIG1fbmV3UHJvbWlzZUNhcGFiaWxp
dHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bih2bSwgcHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSk7CiAgICAgbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlv
bi5zZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIG1fdGhyb3dU
eXBlRXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKApAQCAtMTE4Nyw2ICsxMTkyLDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlv
bi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG9jb2xGdW5j
dGlvbi52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlRnVu
Y3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9v
YmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDdl
OWZlY2I3MWFiMTNhMGViMThmNDI3ZGUzODgwNTgxMDNlYmU1OGUuLmIzM2Q2ZDM1NjQyYWUzM2Zk
ZTE2MjViOGJkODc4ZmIzODBmYzk3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjY1LDYgKzI2NSw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rp
b247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2luaXRp
YWxpemVQcm9taXNlRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBK
U0Z1bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbjsKKyAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbjsKICAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbjsK
ICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0
aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0
YW5jZVN5bWJvbEZ1bmN0aW9uOwpAQCAtNTE1LDYgKzUxNiw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24q
IGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1Zh
bHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVQcm9t
aXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24u
Z2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9Cisg
ICAgSlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvbWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBvYmpl
Y3RQcm90b1ZhbHVlT2ZGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJvdG9WYWx1
ZU9mRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJpbGl0
eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9u
LmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9s
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJv
bEZ1bmN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlLmNwcAppbmRleCBhODNkMmJmNTJmNzZhODRmZWE3MGNkYjE0NjM3ZjllMjA3NGYyMzFiLi5k
NzRmYWEwODE3NTU2NmY4MGY5ZDRjZGQyMGEwOGM5ZTY3NzJhODVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKQEAgLTkyLDQgKzkyLDIzIEBAIGJvb2wg
SlNQcm9taXNlOjppc0hhbmRsZWQoVk0mIHZtKSBjb25zdAogICAgIHJldHVybiB2YWx1ZS5hc0Jv
b2xlYW4oKTsKIH0KIAorSlNQcm9taXNlKiBKU1Byb21pc2U6OnJlc29sdmUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTRnVuY3Rp
b24qIHByb21pc2VSZXNvbHZlRnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPnByb21pc2VSZXNvbHZl
RnVuY3Rpb24oKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IEpTQzo6Z2V0Q2FsbERhdGEocHJvbWlzZVJlc29sdmVGdW5jdGlvbiwgY2FsbERhdGEpOwor
ICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisKKyAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIHByb21pc2VSZXNvbHZlRnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ29uc3RydWN0b3IoKSwgYXJndW1l
bnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBBU1NF
UlQocHJvbWlzZS5pbmhlcml0cyh2bSwgSlNQcm9taXNlOjppbmZvKCkpKTsKKyAgICByZXR1cm4g
anNDYXN0PEpTUHJvbWlzZSo+KHJlc3VsdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAppbmRleCBjN2Q3ZDk5Y2FhNGQ4
NmQyMmM3ZmFiNDBjYzRmM2QwMDUwNDNiYmMwLi5lMTI5NGUzZmUwOTk3ZGZjY2MxYWQ0ZmU2YjY3
M2I1NmQ5MzQ4NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2Uu
aApAQCAtNTIsNiArNTIsOCBAQCBjbGFzcyBKU1Byb21pc2UgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAgICAgLy8gVGhpcyBtYXkgcmFpc2UgYSBKUyBleGNlcHRpb24uCiAgICAgdm9pZCBp
bml0aWFsaXplKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBleGVjdXRvcik7
CiAKKyAgICBzdGF0aWMgSlNQcm9taXNlKiByZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSk7CisKIHByb3RlY3RlZDoKICAgICBKU1Byb21pc2UoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDlmMDI5ZGE4
MWFlNzcxYmYxODQyYWM3MGM3NGM0YWVkZGJjMTYyYjUuLjc5YmM3NjFhOWZiYThmMjNhZWFhZjMy
OTFkNDBlNjUzOGVmYzcwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTY0LDcgKzExNjQs
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3RUYXNrLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwCi0gICAgYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmNwcAorICAgIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAogICAgIGJpbmRp
bmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcApp
bmRleCA3NDQ5NzkzMGUzYjlhZTg5YTRkM2MzZjBjZWFkMDcyNTA1ZTgwMDViLi42MWE5ZTVjYTAx
NWRlMWRkZTI4ZGMyYTBmYzAwZTBlZjVhMzk2ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCkBAIC00Myw3ICs0Myw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkxpbmtJY29uQ29sbGVjdG9yLmgi
CiAjaW5jbHVkZSAiTGlua0ljb25UeXBlLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaAppbmRleCAwY2U4NzVkODkzNTg1ZWUwMzljZmJmZDU2ZTJhNmE3YzUyYTIwY2VmLi4w
NTkyMjQzOWUxMmYyOTIyMTA4MWUzMmM4NzA2Y2FkZGI1ZjViMzE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgK
QEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkdl
bmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgotI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAj
aW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlVHlwZS5oIgogI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lv
blR5cGUuaCIKICNpbmNsdWRlICJNZWRpYUtleVN0YXR1cy5oIgpAQCAtNzAsNyArNzAsNyBAQCBj
bGFzcyBNZWRpYUtleVNlc3Npb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleVNl
c3Npb24+LCBwdWJsaWMgRXZlbnRUYQogICAgIHZvaWQgY2xvc2UoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAgICAgdm9pZCByZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICB1
c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZTx2b2lkPjsKKyAgICB1c2luZyBDbG9zZWRQ
cm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+OwogICAgIHZvaWQgcmVnaXN0ZXJDbG9z
ZWRQcm9taXNlKENsb3NlZFByb21pc2UmJik7CiAKICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWly
PFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdHVzZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaAppbmRleCBhMTEzZTI2
MDEwMDFlZDY3YmY3Y2JmOGRmZjcwNWIxMjM2NDBlNWM2Li4wYTNiNmUxZDQ4YzA2OTczYmRkZGNm
ODhhMzQ1MjE5ZTViNzhmMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5oCkBAIC0zMSw3ICsz
MSw3IEBACiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkdlbmVyaWNU
YXNrUXVldWUuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVBy
b21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IGJkODBiZDJjOTg0M2E4YWY4ZDdkYmFkNWI4
NTM1MjU3ZDkwNTFhZDUuLjlhNTlkMTcxMTRlYzNlZGJhNjE0NzE3MDk4YWEyZDRmYmZlMzA4M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNs
dWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5j
bHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJNZWRpYUtleVNlc3Npb25U
eXBlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmln
YXRvckVNRS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0
b3JFTUUuaAppbmRleCA0YzIwNGU5NDFmZmI2ZGYzYjExZTYzOGFkMjIzN2RkNWE3OTM0OWNkLi44
MTY1ZmFlYjFmZmM2ZWFjZGQ0MDRkMDVmOGE1NzI3MzAyNDBhMDc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmgKQEAgLTMw
LDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKLSNpbmNsdWRlICJK
U0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIk1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlN1cHBsZW1lbnRh
YmxlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRE9NV2lu
ZG93RmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2gu
aAppbmRleCBiM2QxNTc1N2FhZGIzMmUxMTU4NjE1MDUzYWMxMzZlZTVkZDJkYzkxLi4xM2JmNzVh
MmRjODRiMWYzMjg5YWEyNGFlM2Q2ZjljMWE0ZjE5ZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0RPTVdpbmRvd0ZldGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNpZiBF
TkFCTEUoRkVUQ0hfQVBJKQogCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAi
SlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApp
bmRleCBmZWVhNmRjZjE2Nzc1NzE1ZDZiOWJmMjcxN2QxZDBiYTg1MmEyMGE2Li44MmI4MzljNmRj
OTIyMzA3ZjM2NzZjODMwMzdkY2M4MDhhZTZkNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGZXRjaEJvZHlD
b25zdW1lci5oIgogI2luY2x1ZGUgIkZldGNoTG9hZGVyLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEu
aCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIlVSTFNlYXJjaFBhcmFtcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggNGEwZmIzOWYxMGU2MGMyY2M2
YjFkNDk4ZDgxNDgyNGZlNzk3MjU0Mi4uMzhiNzY4OWVkZTJlOTFhYjdhZWViZjcyNjBmYjQ0MzBl
NWJjMzhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxFKEZFVENIX0FQSSkKIAot
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggZjVhOWUy
NzE3MDY0ZTFmYzI2YmFkN2IyMzNkMjVhNTlmNDAyYzAxMC4uYTkwNjM3ZmJiY2Q0ZjE1MzQ3NjEz
NTkxMWQxOTc4MmIxMDJmMTYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgRmV0Y2hSZXNwb25zZSBmaW5h
bCA6IHB1YmxpYyBGZXRjaEJvZHlPd25lciB7CiAgICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNl
PiBlcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxGZXRjaFJlc3BvbnNlPj4gcmVkaXJlY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhdHVzKTsKIAotICAgIHVzaW5nIEZldGNoUHJvbWlzZSA9
IERPTVByb21pc2U8SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+PjsKKyAgICB1c2luZyBGZXRj
aFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+
PjsKICAgICBzdGF0aWMgdm9pZCBmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmV0Y2hS
ZXF1ZXN0JiwgRmV0Y2hQcm9taXNlJiYpOwogCiAgICAgdm9pZCBjb25zdW1lKHVuc2lnbmVkLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmgKaW5kZXggNWJiYjI4Yjg4NTNiZjIxMWE3
ZDgyOGU2ZDgwYTkxOWQwZWFlZWZiNS4uNDc3MDY5ZjM0NGI5OWQ0ZDJkY2Q5MmQ5MzJlYWM1YTUx
ODM0Zjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Xb3JrZXJH
bG9iYWxTY29wZUZldGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Xb3Jr
ZXJHbG9iYWxTY29wZUZldGNoLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShGRVRD
SF9BUEkpCiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCmluZGV4IDI4NTVlYTUyZDRl
ZDMyM2NjMjU4MDkxNGM3ZWUwY2FmYTc3MmVlZDguLjkzZjkzODBmZTY2Nzc5ZDMxMmM4M2M2MTEw
NTViNWE5ZDdjMDhiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuaApAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTWVkaWFU
cmFja0NvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC01Niw4ICs1Niw4IEBAIGNsYXNzIE1lZGlhRGV2aWNl
cyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2aWNlcz4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1
Y3Rpb25PCiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAotICAgIHVzaW5nIFBy
b21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+OwotICAgIHVzaW5n
IEVudW1lcmF0ZURldmljZXNQcm9taXNlID0gRE9NUHJvbWlzZTxJRExTZXF1ZW5jZTxJRExJbnRl
cmZhY2U8TWVkaWFEZXZpY2VJbmZvPj4+OworICAgIHVzaW5nIFByb21pc2UgPSBET01Qcm9taXNl
RGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj47CisgICAgdXNpbmcgRW51bWVyYXRl
RGV2aWNlc1Byb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJm
YWNlPE1lZGlhRGV2aWNlSW5mbz4+PjsKIAogICAgIHN0cnVjdCBTdHJlYW1Db25zdHJhaW50cyB7
CiAgICAgICAgIFZhcmlhbnQ8Ym9vbCwgTWVkaWFUcmFja0NvbnN0cmFpbnRzPiB2aWRlbzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dFBlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAppbmRleCA2ZGZlYzkzMjJmOWI5YzQ0MDhj
ODc2MTVkMjA4NzkxMzRhYmQyMjE5Li4xZGQwMzliY2E4NzQ0NzQ4MDk5M2UwOTEzYmM1M2M3ZDhk
MDdmNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCkBAIC02OTYsNyAr
Njk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2gKICAgICByZXR1cm4gbV9tZWRpYUVuZHBv
aW50LT5jcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIobGFiZWwsIG9wdGlvbnMpOwogfQogCi12b2lk
IE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYg
c2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnJlcGxhY2VU
cmFjayhSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRy
YWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIFJUQ1J0cFRy
YW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9IG1hdGNoVHJhbnNjZWl2ZXIobV9wZWVyQ29ubmVjdGlv
bi5nZXRUcmFuc2NlaXZlcnMoKSwgWyZzZW5kZXJdIChSVENSdHBUcmFuc2NlaXZlciYgY3VycmVu
dCkgewogICAgICAgICByZXR1cm4gJmN1cnJlbnQuc2VuZGVyKCkgPT0gJnNlbmRlcjsKQEAgLTcx
Niw3ICs3MTYsNyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRy
YWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdAogICAgIH0pOwogfQogCi12b2lk
IE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrVGFzayhSVENSdHBTZW5k
ZXImIHNlbmRlciwgY29uc3QgU3RyaW5nJiBtaWQsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdp
dGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYgcHJvbWlzZSkKK3ZvaWQgTWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2tUYXNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBjb25z
dCBTdHJpbmcmIG1pZCwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mIHByb21pc2UpCiB7CiAgICAgaWYgKG1fcGVlckNvbm5lY3Rpb24u
aXNDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
LmgKaW5kZXggY2U3ZWMzZWQ3OTQzODcyMzUwYjhmMDdlYWZhNjMyOWI1YjBmN2E2OS4uMWUzMWNk
NDUwZmQyNzYxYjIwMjMxZTI0OTliNTE1MjdlMWVhYTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIE1lZGlhRW5kcG9pbnRQZWVyQ29u
bmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBNCiAg
ICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IGdldFJlbW90ZVN0cmVhbXMoKSBjb25zdCBm
aW5hbDsKIAogICAgIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2ZXIoY29uc3QgU3Ry
aW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmlu
ZyYgdHJhY2tJZCkgZmluYWw7Ci0gICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwg
UmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4mJikgZmluYWw7CisgICAg
dm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYs
IERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZW11bGF0ZVBs
YXRmb3JtRXZlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24pIGZpbmFsOwogCkBAIC04NSw3ICs4NSw3
IEBAIGNsYXNzIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBQZWVy
Q29ubmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBNCiAKICAgICB2b2lkIGFkZEljZUNhbmRpZGF0ZVRh
c2soUlRDSWNlQ2FuZGlkYXRlJik7CiAKLSAgICB2b2lkIHJlcGxhY2VUcmFja1Rhc2soUlRDUnRw
U2VuZGVyJiwgY29uc3QgU3RyaW5nJiBtaWQsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Q
cm9taXNlPHZvaWQ+Jik7CisgICAgdm9pZCByZXBsYWNlVHJhY2tUYXNrKFJUQ1J0cFNlbmRlciYs
IGNvbnN0IFN0cmluZyYgbWlkLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+Jik7CiAKICAgICBib29sIGxvY2FsRGVzY3JpcHRpb25UeXBlVmFsaWRGb3JT
dGF0ZShSVENTZHBUeXBlKSBjb25zdDsKICAgICBib29sIHJlbW90ZURlc2NyaXB0aW9uVHlwZVZh
bGlkRm9yU3RhdGUoUlRDU2RwVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCBjMGVmZWEx
YWQ0ZTlkZTA0Y2FmMTZjMTFkMDIyZGNmOTI2NzdiY2EwLi5hNGJhNGJiMTVkNTdjNjdhMzg2OTc3
YWJlZDdmMDQ4ZWNhY2I4ODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTI0OCw3ICsyNDgsNyBAQCBz
dGF0aWMgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzSW1w
bChjb25zdCBzdGQ6Om9wdGlvbmFsPAogICAgIHJldHVybiBjcmVhdGVNZWRpYUNvbnN0cmFpbnRz
SW1wbChjb25zdHJhaW50cy52YWx1ZSgpKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjph
cHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRz
PiYgY29uc3RyYWludHMsIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBNZWRpYVN0
cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFj
a0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCiB7CiAgICAgbV9wcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaApp
bmRleCA0YjIxMmRlMzBkNmVmMjVmNzQ3MWEwMGU4ODJjYjY0MzFjZDFhZTEwLi42MWVmMjg3MDQ5
NzBhMzA0MTU5OTU2MDcwM2MwZDU3YmMwNjU5ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaApAQCAtMzIsNyArMzIs
NyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkRvdWJsZVJhbmdl
LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIK
KyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkxvbmdSYW5nZS5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFU
cmFja0NvbnN0cmFpbnRzLmgiCkBAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1U
cmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+LCBwdWJsaWMgQWN0aXZl
RE9NT2IKICAgICBUcmFja0NhcGFiaWxpdGllcyBnZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKIAog
ICAgIGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50cyYgZ2V0Q29uc3RyYWludHMoKSBjb25zdCB7
IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9Ci0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYsIERPTVByb21pc2U8dm9pZD4m
Jik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFU
cmFja0NvbnN0cmFpbnRzPiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAogICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSgpIHsgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlKCk7
IH0KICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgcHJpdmF0ZVRyYWNrKCkgeyByZXR1cm4g
bV9wcml2YXRlLmdldCgpOyB9CkBAIC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1U
cmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+LCBwdWJsaWMgQWN0aXZl
RE9NT2IKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKIAogICAg
IE1lZGlhVHJhY2tDb25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOwotICAgIHN0ZDo6b3B0aW9uYWw8
RE9NUHJvbWlzZTx2b2lkPj4gbV9wcm9taXNlOworICAgIHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+PiBtX3Byb21pc2U7CiAgICAgV2Vha1B0ckZhY3Rvcnk8TWVkaWFTdHJl
YW1UcmFjaz4gbV93ZWFrUHRyRmFjdG9yeTsKIAogICAgIGJvb2wgbV9lbmRlZCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggYjFkNTNlZDM0NGM2YzkyYTBlZTFiYmQ0MjE0
MThmMjhjODJlZGU4Ni4uYjhhZDg5ZmM2MmQ2MWRiMmI4Y2UwNjliY2RmZGVkYjRhMjc2YWRiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0xvY2FsRGVzY3JpcHRpb25UeXBlVmFsaWRGb3JTdGF0ZShSVENTZHBUeXBlIHR5
cGUsIFJUQ1NpZ25hCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFBlZXJDb25uZWN0aW9u
QmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIHNlc3Np
b25EZXNjcmlwdGlvbiwgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIFBlZXJDb25u
ZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
IHNlc3Npb25EZXNjcmlwdGlvbiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
IHsKICAgICBBU1NFUlQoIW1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSk7CiAKQEAgLTE4Niw3
ICsxODYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW1vdGVEZXNjcmlwdGlvblR5cGVWYWxp
ZEZvclN0YXRlKFJUQ1NkcFR5cGUgdHlwZSwgUlRDU2lnbgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbiYgc2Vzc2lvbkRlc2NyaXB0aW9uLCBET01Qcm9taXNlPHZvaWQ+JiYg
cHJvbWlzZSkKK3ZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlv
bihSVENTZXNzaW9uRGVzY3JpcHRpb24mIHNlc3Npb25EZXNjcmlwdGlvbiwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcGVlckNvbm5lY3Rpb24u
aXNDbG9zZWQoKSk7CiAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQog
ICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlID0gc3RkOjpudWxsb3B0OwogfQogCi12b2lkIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSogaWNl
Q2FuZGlkYXRlLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiBpY2VDYW5kaWRhdGUs
IERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgQVNTRVJUKCFtX3Bl
ZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA1NTVi
ZmI4NjViMzNhM2I3Y2U2YjNlN2Y4Y2FkNTg3YTc2MDZlYmUwLi4xYjg1ZjA4ZDVlZDcyZjY1NGQ5
ODI3MTgyMzdhMzc1MmNlMWNkMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTMzLDcgKzMz
LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfUlRDKQogCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgi
CisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJSVENSdHBQYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiUlRDU2lnbmFsaW5nU3RhdGUuaCIKIApAQCAtNTYsOCArNTYs
OCBAQCBzdHJ1Y3QgUlRDRGF0YUNoYW5uZWxJbml0Owogc3RydWN0IFJUQ09mZmVyT3B0aW9uczsK
IAogbmFtZXNwYWNlIFBlZXJDb25uZWN0aW9uIHsKLXVzaW5nIFNlc3Npb25EZXNjcmlwdGlvblBy
b21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFjZTxSVENTZXNzaW9uRGVzY3JpcHRpb24+PjsK
LXVzaW5nIFN0YXRzUHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPFJUQ1N0YXRzUmVw
b3J0Pj47Cit1c2luZyBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVy
cmVkPElETEludGVyZmFjZTxSVENTZXNzaW9uRGVzY3JpcHRpb24+PjsKK3VzaW5nIFN0YXRzUHJv
bWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8UlRDU3RhdHNSZXBvcnQ+PjsK
IH0KIAogdXNpbmcgQ3JlYXRlUGVlckNvbm5lY3Rpb25CYWNrZW5kID0gc3RkOjp1bmlxdWVfcHRy
PFBlZXJDb25uZWN0aW9uQmFja2VuZD4gKCopKFJUQ1BlZXJDb25uZWN0aW9uJik7CkBAIC03MSw5
ICs3MSw5IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CiAKICAgICB2b2lkIGNyZWF0
ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmLCBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0
aW9uUHJvbWlzZSYmKTsKICAgICB2b2lkIGNyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYs
IFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYpOwotICAgIHZvaWQg
c2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNlPHZv
aWQ+JiYpOwotICAgIHZvaWQgc2V0UmVtb3RlRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKLSAgICB2b2lkIGFkZEljZUNhbmRpZGF0ZShSVENJ
Y2VDYW5kaWRhdGUqLCBET01Qcm9taXNlPHZvaWQ+JiYpOworICAgIHZvaWQgc2V0TG9jYWxEZXNj
cmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
Jik7CisgICAgdm9pZCBzZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBhZGRJY2VDYW5kaWRhdGUo
UlRDSWNlQ2FuZGlkYXRlKiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCiAgICAgdmly
dHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGVEYXRhQ2hh
bm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0JikgPSAw
OwogCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CiAgICAg
dmlydHVhbCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNv
bnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGVSZWNlaXZl
cihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlkLCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwg
Y29uc3QgU3RyaW5nJiB0cmFja0lkKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFj
ayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lk
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBS
ZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QWRkZWRUcmFjayhSVENSdHBTZW5kZXImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5UmVtb3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIHsgfQogCkBA
IC0xMzcsNyArMTM3LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKICAgICB2aXJ0
dWFsIHZvaWQgZG9TZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVz
Y3JpcHRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRvQWRkSWNlQ2FuZGlkYXRlKFJUQ0lj
ZUNhbmRpZGF0ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZJY2VDYW5kaWRhdGVzKERP
TVByb21pc2U8dm9pZD4mJiBwcm9taXNlKSB7IHByb21pc2UucmVzb2x2ZSgpOyB9CisgICAgdmly
dHVhbCB2b2lkIGVuZE9mSWNlQ2FuZGlkYXRlcyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlKSB7IHByb21pc2UucmVzb2x2ZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRvU3RvcCgp
ID0gMDsKIAogcHJvdGVjdGVkOgpAQCAtMTQ1LDggKzE0NSw4IEBAIGNsYXNzIFBlZXJDb25uZWN0
aW9uQmFja2VuZCB7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxQZWVyQ29ubmVjdGlv
bjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZT4gbV9vZmZlckFuc3dlclByb21pc2U7Ci0gICAg
c3RkOjpvcHRpb25hbDxET01Qcm9taXNlPHZvaWQ+PiBtX3NldERlc2NyaXB0aW9uUHJvbWlzZTsK
LSAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2U8dm9pZD4+IG1fYWRkSWNlQ2FuZGlkYXRlUHJv
bWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gbV9zZXRE
ZXNjcmlwdGlvblByb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4+IG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZTsKIAogICAgIGJvb2wgbV9zaG91bGRGaWx0
ZXJJQ0VDYW5kaWRhdGVzIHsgdHJ1ZSB9OwogICAgIHN0cnVjdCBQZW5kaW5nSUNFQ2FuZGlkYXRl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdiZjY0ZTQ0NTBjZDk3YTAxNTYzYzFhYWM3YzJkNmUy
YjY5ZWI5OS4uYTE4YzU2NWFiM2Y4NzJmODEzZjc4ZGIwODZjNzBmM2NiYTMzODRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpx
dWV1ZWRDcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmIG9wdGlvbnMsIFNlc3Npb25EZQog
ICAgIG1fYmFja2VuZC0+Y3JlYXRlQW5zd2VyKFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocHJv
bWlzZSkpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRMb2NhbERlc2Ny
aXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkU2V0TG9jYWxEZXNj
cmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIGlmIChpc0Nsb3NlZCgpKSB7CiAgICAgICAg
IHByb21pc2UucmVqZWN0KElOVkFMSURfU1RBVEVfRVJSKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6cGVuZGluZ0xv
Y2FsRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tlbmQtPnBlbmRpbmdMb2Nh
bERlc2NyaXB0aW9uKCk7CiB9CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZFNldFJl
bW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIERPTVBy
b21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkU2V0
UmVtb3RlRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNDbG9zZWQoKSkg
ewogICAgICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7CkBAIC0yODEsNyAr
MjgxLDcgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246
OnBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnMKICAgICByZXR1cm4gbV9iYWNrZW5kLT5w
ZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6
cXVldWVkQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSogcnRjQ2FuZGlkYXRlLCBET01Q
cm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZEFk
ZEljZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUqIHJ0Y0NhbmRpZGF0ZSwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNDbG9zZWQoKSkgewogICAgICAg
ICBwcm9taXNlLnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7CkBAIC01MDUsNyArNTA1LDcgQEAg
dm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6ZmlyZUV2ZW50KEV2ZW50JiBldmVudCkKICAgICBkaXNw
YXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJl
cGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIFJUQ1BlZXJD
b25uZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwg
UmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlKQogewogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2so
W3Byb3RlY3RlZFNlbmRlciA9IG1ha2VSZWYoc2VuZGVyKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIHdpdGhUcmFjayA9IFdURk1vdmUod2l0aFRyYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRTZW5kZXItPnNldFRyYWNrKFdURk1v
dmUod2l0aFRyYWNrKSk7CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlv
bjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZjxNZWRp
YVMKICAgICB9KTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJU
Q1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ss
IERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVw
bGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4m
JiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAg
aWYgKCF3aXRoVHJhY2spIHsKICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0
VGFzayhbcHJvdGVjdGVkU2VuZGVyID0gbWFrZVJlZihzZW5kZXIpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5o
CmluZGV4IDA0NzQyNmMxNDUzMWU1NDE1ODMyNTI2NjQ5OTNhMmM0Y2JhMDdmYTAuLmY1ZTVmYzM0
OWFiZDcyN2IwZWMwODhiOTEwMGQ3Y2Y2YjBhYjU3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTc2LDE3
ICs3NiwxNyBAQCBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVibGljIFJUQwogICAgIHZvaWQgcXVldWVkQ3JlYXRl
T2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRp
b25Qcm9taXNlJiYpOwogICAgIHZvaWQgcXVldWVkQ3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlv
bnMmJiwgUGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21pc2UmJik7CiAKLSAg
ICB2b2lkIHF1ZXVlZFNldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiwg
RE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2b2lkIHF1ZXVlZFNldExvY2FsRGVzY3JpcHRpb24o
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAg
IFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGxvY2FsRGVzY3JpcHRpb24oKSBjb25zdDsK
ICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50TG9jYWxEZXNjcmlwdGlv
bigpIGNvbnN0OwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IHBlbmRpbmdMb2Nh
bERlc2NyaXB0aW9uKCkgY29uc3Q7CiAKLSAgICB2b2lkIHF1ZXVlZFNldFJlbW90ZURlc2NyaXB0
aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYsIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9p
ZCBxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bj4gcmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdDsKIAot
ICAgIHZvaWQgcXVldWVkQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSosIERPTVByb21p
c2U8dm9pZD4mJik7CisgICAgdm9pZCBxdWV1ZWRBZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlk
YXRlKiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCiAgICAgUlRDU2lnbmFsaW5nU3Rh
dGUgc2lnbmFsaW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NpZ25hbGluZ1N0YXRlOyB9CiAg
ICAgUlRDSWNlR2F0aGVyaW5nU3RhdGUgaWNlR2F0aGVyaW5nU3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX2ljZUdhdGhlcmluZ1N0YXRlOyB9CkBAIC0xNDMsNyArMTQzLDcgQEAgY2xhc3MgUlRDUGVl
ckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj4s
IHB1YmxpYyBSVEMKICAgICB2b2lkIGRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKSB7IG1f
YmFja2VuZC0+ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOyB9CiAgICAgdm9pZCBlbmFi
bGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKSB7IG1fYmFja2VuZC0+ZW5hYmxlSUNFQ2FuZGlkYXRl
RmlsdGVyaW5nKCk7IH0KIAotICAgIHZvaWQgZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRw
U2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4mJik7Cisg
ICAgdm9pZCBlbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCiAgICAgdm9pZCBj
bGVhckNvbnRyb2xsZXIoKSB7IG1fY29udHJvbGxlciA9IG51bGxwdHI7IH0KIApAQCAtMTY2LDcg
KzE2Niw3IEBAIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50
ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgUlRDCiAKICAgICAvLyBGSVhNRTogV2UgbWln
aHQgd2FudCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQgdG8gYmUgdGhlIEJhY2tlbmQKICAgICAvLyBS
VENSdHBTZW5kZXI6OkJhY2tlbmQKLSAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXIm
LCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpIGZpbmFsOwogICAgIFJUQ1J0cFBh
cmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImKSBjb25zdCBmaW5hbDsKIAogICAg
IHZvaWQgdXBkYXRlQ29ubmVjdGlvblN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKaW5kZXggMDJmMjliMjAxYzFhYTRh
ZmRjZGM4MmI2MjdhNDQ5MWEyMTEwMTk5OS4uMGQ0NjY0MTEyZDU5YjcwYTQzOGNlYTVmNjI2ZWFi
Njk1MTJhYjQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFJUQ1J0cFNlbmRlcjo6
c2V0VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2spCiAgICAgbV90cmFjayA9IFdU
Rk1vdmUodHJhY2spOwogfQogCi12b2lkIFJUQ1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21p
c2UpCit2b2lkIFJUQ1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsK
ICAgICBpZiAoaXNTdG9wcGVkKCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSU5WQUxJRF9T
VEFURV9FUlIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmgKaW5kZXggM2M1MDdhNjMyNjUzY2YwNDhkNzBhM2MxYzc4M2RlNWZmODcyMjY0
OS4uMzBhNTE1Yjg5ZjZiZDFjZGRhNDZiY2M5NDE4YjQwOWI5ZGNmMjUwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCkBAIC00MSw3
ICs0MSw3IEBAIGNsYXNzIFJUQ1J0cFNlbmRlciA6IHB1YmxpYyBSVENSdHBTZW5kZXJSZWNlaXZl
ckJhc2UgewogcHVibGljOgogICAgIGNsYXNzIEJhY2tlbmQgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUlRD
UnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0ID0gMDsKICAg
ICAgICAgdmlydHVhbCB+QmFja2VuZCgpIHsgfQogICAgIH07CkBAIC02MCw3ICs2MCw3IEBAIGNs
YXNzIFJUQ1J0cFNlbmRlciA6IHB1YmxpYyBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UgewogICAg
IHZvaWQgc2V0VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYpOwogICAgIHZvaWQgc2V0VHJh
Y2tUb051bGwoKTsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpOworICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAg
ICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXgg
NGQyYmZiYzY1MjUxMGZiZGRjZTcyNzRiZGNlOGQ2NTg5MGY5OWQ1Yi4uOTYxMjVmZDQ0M2YwODMz
ZjUzZTczMGI4ZmEzZGJlOGM5YjVhYmViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC00OSw3ICs0OSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXhjZXB0aW9uT3I8dm9pZD4gVXNlck1lZGlh
UmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVkaWFDb25zdHJhaW50c0lt
cGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVv
Q29uc3RyYWludHMsIERPTVByb21pc2U8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9t
aXNlKQorRXhjZXB0aW9uT3I8dm9pZD4gVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQm
IGRvY3VtZW50LCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywg
UmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVByb21pc2VE
ZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmIHByb21pc2UpCiB7CiAgICAgYXV0
byogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC5wYWdlKCkp
OwogICAgIGlmICghdXNlck1lZGlhKQpAQCAtNjQsNyArNjQsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRpYUNv
bnN0cmFpbgogICAgIHJldHVybiB7IH07CiB9CiAKLVVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRp
YVJlcXVlc3QoRG9jdW1lbnQmIGRvY3VtZW50LCBVc2VyTWVkaWFDb250cm9sbGVyJiBjb250cm9s
bGVyLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1l
ZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVByb21pc2U8SURMSW50
ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorVXNlck1lZGlhUmVxdWVzdDo6VXNlck1l
ZGlhUmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQsIFVzZXJNZWRpYUNvbnRyb2xsZXImIGNvbnRy
b2xsZXIsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8
TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJvbWlzZURlZmVy
cmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYgcHJvbWlzZSkKICAgICA6IENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyKCZkb2N1bWVudCkKICAgICAsIG1fYXVkaW9Db25zdHJhaW50cyhX
VEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpKQogICAgICwgbV92aWRlb0NvbnN0cmFpbnRzKFdURk1v
dmUodmlkZW9Db25zdHJhaW50cykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IDMxNmZlZTE1NDhkOTU0NGUyMTk1
MjY3ZDg2ODhiMWVlMjJmN2RhYjEuLmEzZTk2OTAyOTI2NTc5YWZhZDI4MTQyNzhiZWM2ZTcyZjkw
NmM4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5oCkBAIC0zNSw3ICszNSw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBVc2VyTWVkaWFDb250cm9sbGVyOwog
CiBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVx
dWVzdD4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydChEb2N1bWVudCYsIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+
JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+
PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnQoRG9jdW1lbnQmLCBSZWY8
TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3Ry
YWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRl
cmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKIAogICAgIHZpcnR1YWwgflVzZXJNZWRpYVJlcXVlc3Qo
KTsKIApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIFJl
ZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4sIHByaXZhdGUgQ29udGV4dERlcwogICAgIFdFQkNP
UkVfRVhQT1JUIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFVz
ZXJNZWRpYVJlcXVlc3QoRG9jdW1lbnQmLCBVc2VyTWVkaWFDb250cm9sbGVyJiwgUmVmPE1lZGlh
Q29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBET01Qcm9taXNlPElETEludGVyZmFjZTxNZWRpYVN0
cmVhbT4+JiYpOworICAgIFVzZXJNZWRpYVJlcXVlc3QoRG9jdW1lbnQmLCBVc2VyTWVkaWFDb250
cm9sbGVyJiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJl
ZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJik7CiAKICAgICB2b2lkIGNvbnRleHRE
ZXN0cm95ZWQoKSBmaW5hbDsKICAgICAKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgVXNlck1lZGlh
UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYVJlcXVlc3Q+LCBwcml2YXRlIENv
bnRleHREZXMKICAgICBTdHJpbmcgbV9hbGxvd2VkQXVkaW9EZXZpY2VVSUQ7CiAKICAgICBVc2Vy
TWVkaWFDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Ci0gICAgRE9NUHJvbWlzZTxJRExJbnRlcmZh
Y2U8TWVkaWFTdHJlYW0+PiBtX3Byb21pc2U7CisgICAgRE9NUHJvbWlzZURlZmVycmVkPElETElu
dGVyZmFjZTxNZWRpYVN0cmVhbT4+IG1fcHJvbWlzZTsKICAgICBSZWZQdHI8VXNlck1lZGlhUmVx
dWVzdD4gbV9wcm90ZWN0b3I7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAzMTAyMDRiMmIzYTU1ZDBkN2ZkNWQ3
YjVhYTM1MzEzOGMxYjM4ZTFiLi4xODE3ZTY1ZjdlMzI0ODI0YjQxMjM2MzNjY2VhYjViYmEzNTJm
NTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6YWRkUmVtb3RlU3RyZWFtKFJlZjxNZWRpYVN0cmVhbT4mJiBtZWRpYVN0cgog
ICAgIG1fcmVtb3RlU3RyZWFtcy5hcHBlbmQoV1RGTW92ZShtZWRpYVN0cmVhbSkpOwogfQogCi12
b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNl
bmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgRE9NUHJvbWlzZTx2
b2lkPiYmIHByb21pc2UpCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVw
bGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0
cmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQo
c2VuZGVyLnRyYWNrKCkpOwogICAgIGF1dG8qIGN1cnJlbnRUcmFjayA9IHNlbmRlci50cmFjaygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAppbmRleCA5MmU2OGE2MzgyNDZiYmZmODNiOWUyNGEzYjc1NzVhZTQ2NmRlM2ZiLi41NDM2Zjhm
ODliNTg2NTZkMDlmMDAyMmZlOWI0ZDRhMGVhNWZmYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtNjksNyArNjksNyBAQCBj
bGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUGVlckNv
bm5lY3Rpb25CYWNrZW5kIHsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJy
ZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8UlRDU2Vzc2lv
bkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAot
ICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpIGZpbmFsOworICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJU
Q1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJikgZmluYWw7CiAgICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0
cFNlbmRlciYpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVudChj
b25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKaW5kZXggOWMxNmNhOGEwN2Q2ZTE3ZjZm
YTM3OTU1Yjk2N2Y3ZWIxZmZhYWYwMS4uNDEwM2FjODI5NTA3NmU5NDhlYzNjNzNhYWJkMmY1YWEy
ZDg4ZjJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtU291cmNlLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShTVFJF
QU1TX0FQSSkKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNz
IFJlYWRhYmxlU3RyZWFtU291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1T
b3VyY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZWFkYWJsZVN0cmVhbVNvdXJjZSgpIHsg
fQogCi0gICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJiYsIERP
TVByb21pc2U8dm9pZD4mJik7Ci0gICAgdm9pZCBwdWxsKERPTVByb21pc2U8dm9pZD4mJik7Cisg
ICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJiYsIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIHB1bGwoRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYpOwogICAgIHZvaWQgY2FuY2VsKEpTQzo6SlNWYWx1ZSk7CiAKICAgICBib29sIGlzUHVs
bGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9wcm9taXNlOyB9CkBAIC02MywxMSArNjMsMTEgQEAg
Y2xhc3MgUmVhZGFibGVTdHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0
cmVhbVNvdXJjZT4gewogICAgIHZpcnR1YWwgdm9pZCBkb0NhbmNlbCgpID0gMDsKIAogcHJpdmF0
ZToKLSAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2U8dm9pZD4+IG1fcHJvbWlzZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gbV9wcm9taXNlOwogICAgIHN0
ZDo6b3B0aW9uYWw8UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcj4gbV9jb250cm9sbGVy
OwogfTsKIAotaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KFJlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiBjb250cm9sbGVyLCBET01Qcm9taXNlPHZvaWQ+JiYg
cHJvbWlzZSkKK2lubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtU291cmNlOjpzdGFydChSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJiYgY29udHJvbGxlciwgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcHJvbWlzZSk7CiAgICAgbV9wcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKTsKQEAgLTc3LDcgKzc3LDcgQEAgaW5saW5lIHZvaWQgUmVh
ZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIm
JiBjb250cm8KICAgICBkb1N0YXJ0KCk7CiB9CiAKLWlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFt
U291cmNlOjpwdWxsKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQoraW5saW5lIHZvaWQgUmVh
ZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKIHsKICAgICBBU1NFUlQoIW1fcHJvbWlzZSk7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAK
aW5kZXggMTFkZTA0YTk5NzlmYWY4ZDFmYTcyNjU4OWYxNDQzMDc2YWUzODc2ZC4uMjM1Mjk5Y2Jl
NTNkZTcwNDI2NjdiZTljYmU4ZWJiZTEzNGZkYzQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNTMsNyArNTMsNyBAQAogI2lu
Y2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVy
LmgiCiAjaW5jbHVkZSAiSFJURlBhbm5lci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29t
cGxldGlvbkV2ZW50LmgiCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBBdWRpb0NvbnRleHQ6Omlz
SW5pdGlhbGl6ZWQoKSBjb25zdAogICAgIHJldHVybiBtX2lzSW5pdGlhbGl6ZWQ7CiB9CiAKLXZv
aWQgQXVkaW9Db250ZXh0OjphZGRSZWFjdGlvbihTdGF0ZSBzdGF0ZSwgRE9NUHJvbWlzZTx2b2lk
PiYmIHByb21pc2UpCit2b2lkIEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rpb24oU3RhdGUgc3RhdGUs
IERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgc2l6ZV90IHN0YXRl
SW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKICAgICBpZiAoc3RhdGVJbmRleCA+
PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6c2V0U3RhdGUoU3RhdGUgc3RhdGUpCiAgICAgaWYgKHN0YXRlSW5kZXggPj0gbV9z
dGF0ZVJlYWN0aW9ucy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxET01Q
cm9taXNlPHZvaWQ+PiByZWFjdGlvbnM7CisgICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPj4gcmVhY3Rpb25zOwogICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChy
ZWFjdGlvbnMpOwogCiAgICAgZm9yIChhdXRvJiBwcm9taXNlIDogcmVhY3Rpb25zKQpAQCAtMTA0
MCw3ICsxMDQwLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNv
dW50KCkKICAgICAtLW1fYWN0aXZlU291cmNlQ291bnQ7CiB9CiAKLXZvaWQgQXVkaW9Db250ZXh0
OjpzdXNwZW5kKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBBdWRpb0NvbnRleHQ6
OnN1c3BlbmQoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAo
aXNPZmZsaW5lQ29udGV4dCgpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KElOVkFMSURfU1RB
VEVfRVJSKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5k
KERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQogICAgIH0pOwogfQogCi12b2lkIEF1ZGlvQ29u
dGV4dDo6cmVzdW1lKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBBdWRpb0NvbnRl
eHQ6OnJlc3VtZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIGlm
IChpc09mZmxpbmVDb250ZXh0KCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSU5WQUxJRF9T
VEFURV9FUlIpOwpAQCAtMTA5OCw3ICsxMDk4LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnJlc3Vt
ZShET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKICAgICB9KTsKIH0KIAotdm9pZCBBdWRpb0Nv
bnRleHQ6OmNsb3NlKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBBdWRpb0NvbnRl
eHQ6OmNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgaWYg
KGlzT2ZmbGluZUNvbnRleHQoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX1NU
QVRFX0VSUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaAppbmRleCBlNDExNjhlNzgwY2FkNzYyMzk4NDUwY2E5YzE1MzBkYjZjYmY4ZTYzLi40OWJi
MTM3Y2M4YWIyMWRkNGY5OGJlMTVjY2FkZmY4MTgwODMyNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNp
bmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIu
aCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFy
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uLmgiCkBAIC0xMTEsOSArMTExLDkgQEAgY2xhc3MgQXVkaW9Db250ZXh0
IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1
ZGlvQ28KICAgICB1c2luZyBBY3RpdmVET01PYmplY3Q6OnN1c3BlbmQ7CiAgICAgdXNpbmcgQWN0
aXZlRE9NT2JqZWN0OjpyZXN1bWU7CiAKLSAgICB2b2lkIHN1c3BlbmQoRE9NUHJvbWlzZTx2b2lk
PiYmKTsKLSAgICB2b2lkIHJlc3VtZShET01Qcm9taXNlPHZvaWQ+JiYpOwotICAgIHZvaWQgY2xv
c2UoRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2b2lkIHN1c3BlbmQoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOworICAgIHZvaWQgcmVzdW1lKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKKyAgICB2b2lkIGNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAogICAgIGVu
dW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9zZWQg
fTsKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OwpAQCAtMzI5LDcgKzMyOSw3IEBAIGNsYXNzIEF1
ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxBdWRpb0NvCiAgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9u
cygpOwogICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRzKCk7CiAKLSAgICB2b2lk
IGFkZFJlYWN0aW9uKFN0YXRlLCBET01Qcm9taXNlPHZvaWQ+JiYpOworICAgIHZvaWQgYWRkUmVh
Y3Rpb24oU3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKICAgICB2b2lkIHVwZGF0
ZUF1dG9tYXRpY1B1bGxOb2RlcygpOwogCiAgICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVk
aW8gdGhyZWFkLgpAQCAtMzY2LDcgKzM2Niw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1Ymxp
YyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvCiAg
ICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOwogICAg
IC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KICAgICBWZWN0b3I8QXVkaW9O
b2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsKLSAgICBWZWN0b3I8VmVjdG9yPERPTVBy
b21pc2U8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOworICAgIFZlY3RvcjxWZWN0b3I8RE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+Pj4gbV9zdGF0ZVJlYWN0aW9uczsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjk3Yjc2Mzg2NWVm
ODZlNDAxNzEzODE5Mjk5YzEwZjIwMjk5MjUxOC4uYzY0ZDQ2OTc5MTNmYzkxMzllZWY1OWFkMzhl
YWY5YzBkMWI1NzIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjUzMyw4ICs2NTMzLDggQEAKIAkJRTE3MkFGNkQxODBGMjRD
NjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcyQUY2QjE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRv
QWxnb3JpdGhtLmNwcCAqLzsgfTsKIAkJRTE3MkFGNkUxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0
b0FsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE3MkFGNkMxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5oICovOyB9Owog
CQlFMTcyQUY3MDE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5VXNhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjZGMTgwRjI4OTUwMEZC
QURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oICovOyB9OwotCQlFMTcyQUY4RjE4MTFCQzM3MDBGQkFE
QjkgLyogSlNET01Qcm9taXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3Bw
ICovOyB9OwotCQlFMTcyQUY5MDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcyQUY4RTE4MTFC
QzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTE3MkFGOEYxODExQkMzNzAwRkJBREI5IC8qIEpTRE9N
UHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2VEZWZlcnJl
ZC5jcHAgKi87IH07CisJCUUxNzJBRjkwMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2VE
ZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE3NUJBOTkxRThB
RTMzODAwNzE0NTRGIC8qIEdyaWRQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MTc0NTFFODk3QTUyMDBGMjJDRDAgLyogR3JpZFBv
c2l0aW9uLmNwcCAqLzsgfTsKIAkJRTE3OUYwREExQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFs
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzlG
MEQ5MUI5Nzc0RkUwMEVEMEEyNyAvKiBJbnRlcm5hbHMubW0gKi87IH07CiAJCUUxN0I0OTE1MTZB
OUIwOTQwMDFDODgzOSAvKiBUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3QjQ5MTMxNkE5QjA5MzAwMUM4ODM5IC8qIFRy
YW5zaXRpb25FdmVudC5jcHAgKi87IH07CkBAIC02NjYzLDYgKzY2NjMsNyBAQAogCQlFMzU2NUI3
QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpT
RXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzU4MDJCNjFEQzg0MzVEMDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUx
REM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQw
MjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzdDODY1
MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNE
T01Qcm9taXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NDFC
QUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLzsgfTsKIAkJRTM4ODM4
OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUz
IC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovOyB9OwogCQlFMzk4RkMyNDFEQzMyQTIwMDAzQzQ2
ODQgLyogRE9NSklUSGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzk4RkMyMzFEQzMyQTFCMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5j
cHAgKi87IH07CkBAIC0xNTA2Nyw4ICsxNTA2OCw4IEBACiAJCUUxNzJBRjZCMTgwRjI0QzYwMEZC
QURCOSAvKiBDcnlwdG9BbGdvcml0aG0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTE3MkFGNkMxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MkFGNkYxODBGMjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVz
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0tleVVzYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAv
KiBKU0RPTVByb21pc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNET01Qcm9taXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTE3MkFGOEUx
ODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RPTVByb21pc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTE3MkFGOEQxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NUHJvbWlzZURlZmVycmVkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE3MkFGOEUxODExQkMzNzAwRkJBREI5
IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRE9NUHJvbWlzZURlZmVycmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxNzY1ODBDMTgwREYzQTAwMDVBOTZEMSAvKiBPRVNFbGVtZW50SW5kZXhVaW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBPRVNFbGVtZW50SW5kZXhVaW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTE3OUYwRDkxQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludGVybmFscy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTE3QjQ5MEIxNkE5NzI2OTAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVHJhbnNpdGlvbkV2ZW50LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjExLDYgKzE1MjEyLDcgQEAKIAkJRTMzNDgyNUUxREM5
M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRFRTQ5RjFEQzJENTc1MDBFQUE5RDMgLyog
SlNFdmVudEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50
Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTgwMkI1MURDODQzNTgw
MEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUpJVElETFR5cGVGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM3Qzg2NEYxRUI2M0UyRDAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVByb21pc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxv
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1
bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQx
NDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk4RkMyMzFEQzMyQTFCMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRIZWxwZXJzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNDE5LDggKzIzNDIxLDkgQEAKIAkJCQk0MTM4
Rjg1NjFEMjUzRUVFMDAxQ0I2MUUgLyogSlNET01JdGVyYXRvci5oICovLAogCQkJCTQxREVGQ0Iz
MUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1hcExpa2UuY3BwICovLAogCQkJCTQxREVGQ0I0MUU1
NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1hcExpa2UuaCAqLywKLQkJCQlFMTcyQUY4RDE4MTFCQzM3
MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNwcCAqLywKLQkJCQlFMTcyQUY4RTE4MTFCQzM3MDBG
QkFEQjkgLyogSlNET01Qcm9taXNlLmggKi8sCisJCQkJRTM3Qzg2NEYxRUI2M0UyRDAwODdDNkNB
IC8qIEpTRE9NUHJvbWlzZS5oICovLAorCQkJCUUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAvKiBK
U0RPTVByb21pc2VEZWZlcnJlZC5jcHAgKi8sCisJCQkJRTE3MkFGOEUxODExQkMzNzAwRkJBREI5
IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmggKi8sCiAJCQkJQkM2OTMyNzEwRDdFMjkzOTAwQUU0
NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi8sCiAJCQkJQkM2OTMyNzIwRDdFMjkzOTAwQUU0
NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oICovLAogCQkJCTQ2MENCRjMzMUQ0QkNDRkUwMDkyRTg4
RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwICovLApAQCAtMjcyMTQsNiArMjcyMTcsNyBA
QAogCQkJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBp
biBIZWFkZXJzICovLAogCQkJCUJDMjNGMERCMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJ
bWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM3Qzg2NTAx
RUI2M0UzRjAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcy
MEIwQTExNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRDYyRkI5NjFBRjAxOEU3MDAxMkVEN0QgLyogR2VuZXJpY1Rhc2tRdWV1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjQxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9u
LmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzU3LDcgKzI3NzYxLDcgQEAKIAkJCQkwRjQ5NjZBQjFE
QjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0OTY2
QUQxREI0MEM0MzAwQTI3NEJCIC8qIEpTRE9NUG9pbnRJbml0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjQ5NjZBRjFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludFJlYWRPbmx5LmggaW4gSGVh
ZGVycyAqLywKLQkJCQlFMTcyQUY5MDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMTcyQUY5MDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDcxMEJDMURCNTZCRTgwMDJEQ0VD
MyAvKiBKU0RPTVJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDcxMEJFMURCNTZCRTgwMDJE
Q0VDMyAvKiBKU0RPTVJlY3RJbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ3MTBDMDFEQjU2
QkU4MDAyRENFQzMgLyogSlNET01SZWN0UmVhZE9ubHkuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3
MDYsNyArMzE3MTAsNyBAQAogCQkJCTBGNDk2NkFBMURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBv
aW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDk2NkFDMURCNDBDNDMwMEEyNzRCQiAvKiBK
U0RPTVBvaW50SW5pdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ5NjZBRTFEQjQwQzQzMDBB
Mjc0QkIgLyogSlNET01Qb2ludFJlYWRPbmx5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxNzJB
RjhGMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTE3MkFGOEYxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNDcxMEJCMURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NzEwQkQxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9N
UmVjdEluaXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NzEwQkYxREI1NkJFODAwMkRDRUMz
IC8qIEpTRE9NUmVjdFJlYWRPbmx5LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L0lETFR5cGVzLmgKaW5kZXggMjgxMjA1MGE2MTk0ZGNjZmFjYzY5Yjg0MzM1NGNlM2M2YjMwM2Nm
NS4uYjViMTQyYzliOTFkNjMzN2VjOTA3MmU1MTNiMjEwYzVjMTY2YzQ0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9JRExUeXBlcy5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIElEQktleTsKIGNsYXNzIElEQktleURhdGE7CiBjbGFzcyBJREJWYWx1ZTsKLXRlbXBs
YXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9taXNlOworY2xhc3MgRE9NUHJvbWlzZTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBJRExUeXBlIHsKQEAgLTE4NSw3ICsxODUsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPiBzdHJ1Y3QgSURMUmVjb3JkIDogSURMVHlw
ZTxWZWN0b3I8V1RGOjpLZXlWYWx1ZQogICAgIHVzaW5nIFBhcmFtZXRlclR5cGUgPSBjb25zdCBW
ZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgSzo6SW1wbGVtZW50YXRpb25UeXBlLCB0
eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5cGU+PiY7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSURMUHJvbWlzZSA6IElETFR5cGU8RE9NUHJvbWlzZTxUPj4gewordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFByb21pc2UgOiBJRExUeXBlPERPTVByb21pc2U+IHsK
ICAgICB1c2luZyBJbm5lclR5cGUgPSBUOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaAppbmRl
eCA2Y2NkYmNjY2E3N2E5ZWRkNmNjZDFjZTBmYjMzYTA3YzAxNjk0MjBjLi41NTBlYmI1NTljYWJl
ZDFiZDFkYjc2MmVmZGE1MmQ3ZTJlMWNjYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaApAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5o
IgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAKaW5kZXggYTZkM2MxOGQxNDc0MDJkMjA4MzNhMThhZDM2NzkxODZiM2YzZTVmNS4uMmRj
ODQxZDQ4ZTFjYzY5MTUyZTU1MTE5OWEyMGE3NjM4ZmViZDYyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC01MSw3ICs1MSw3
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAiCiAjaW5jbHVkZSAiSlNE
T01HbG9iYWxPYmplY3QuY3BwIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAi
Ci0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmNwcCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5jcHAiCiAjaW5jbHVkZSAiSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTRE9NV2luZG93QmFzZS5jcHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uY3BwIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVn
aXN0cnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50UmVnaXN0cnlDdXN0b20uY3BwCmluZGV4IGNmOWU5NmQyNzc2MzE0ODc4ODBkZTVmNTY4ZjI0
YTg2NDgxODZiZWUuLjkxOGI5NWQzMDFhY2RlYjg2OTg0ZjVlNjQwNDkwZDQyZWE0NjJlNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJKU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnZlcnQuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmgKaW5kZXgg
YzIyMzcwZTI2NjRjYmU3MjYwMTIwODliYjY5NTI4OTgyYjllY2Q5MS4uMzZmOWI5NGVlMDBiYWI2
YzM4YWZlM2Y3YmIwZThlYzg4NzQ2MDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFByb21pc2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICog
Q29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDMwICsyNyw0OCBAQAogCiAj
aW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCisjaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gRklYTUU6
IEltcGxlbWVudCBJRExQcm9taXNlPD4gY29udmVyc2lvbnMuCi0vLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3Ry
dWN0IENvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMUHJvbWlz
ZTxUPj4gewotICAgIHVzaW5nIFJldHVyblR5cGUgPSBKU0M6OkpTVmFsdWU7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElETFByb21pc2U8VD4+IDogRGVmYXVsdENvbnZl
cnRlcjxJRExQcm9taXNlPFQ+PiB7CisgICAgdXNpbmcgUmV0dXJuVHlwZSA9IFJlZlB0cjxET01Q
cm9taXNlPjsKIAotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICAvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNlcy1wcm9taXNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dl
ciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgorICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZl
cnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRo
cm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4odm0sIHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGlm
ICghZ2xvYmFsT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAg
Ly8gMS4gTGV0IHJlc29sdmUgYmUgdGhlIG9yaWdpbmFsIHZhbHVlIG9mICVQcm9taXNlJS5yZXNv
bHZlLgorICAgICAgICAvLyAyLiBMZXQgcHJvbWlzZSBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcg
cmVzb2x2ZSB3aXRoICVQcm9taXNlJSBhcyB0aGUgdGhpcyB2YWx1ZSBhbmQgViBhcyB0aGUgc2lu
Z2xlIGFyZ3VtZW50IHZhbHVlLgorICAgICAgICBKU0M6OkpTUHJvbWlzZSogcHJvbWlzZSA9IEpT
Qzo6SlNQcm9taXNlOjpyZXNvbHZlKGdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgICAgICBpZiAo
c2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIGV4Y2VwdGlvblRocm93ZXIoc3RhdGUs
IHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVChwcm9taXNlKTsKKworICAgICAgICAvLyAzLiBSZXR1cm4gdGhlIElETCBwcm9taXNl
IHR5cGUgdmFsdWUgdGhhdCBpcyBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBvYmplY3QgYXMgcHJv
bWlzZS4KKyAgICAgICAgcmV0dXJuIERPTVByb21pc2U6OmNyZWF0ZSgqZ2xvYmFsT2JqZWN0LCAq
cHJvbWlzZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBKU0Nv
bnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7Ci0gICAgdXNpbmcgVHlwZSA9IEpTQzo6SlNWYWx1ZTsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSBmYWxzZTsKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgbmVlZHNHbG9iYWxPYmplY3QgPSBmYWxzZTsKIAotICAgIHN0YXRp
YyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBjb252ZXJ0KERPTVByb21pc2UmIHByb21pc2UpCiAgICAgewotICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgICAgIC8vIFRoZSByZXN1bHQgb2YgY29udmVydGluZyBhbiBJREwg
cHJvbWlzZSB0eXBlIHZhbHVlIHRvIGFuIEVDTUFTY3JpcHQgdmFsdWUgaXMgdGhlIFByb21pc2Ug
dmFsdWUKKyAgICAgICAgLy8gdGhhdCByZXByZXNlbnRzIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1l
IG9iamVjdCB0aGF0IHRoZSBJREwgcHJvbWlzZSB0eXBlIHJlcHJlc2VudHMuCisgICAgICAgIGlm
IChwcm9taXNlLmlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVm
aW5lZCgpOworICAgICAgICByZXR1cm4gcHJvbWlzZS5wcm9taXNlKCk7CiAgICAgfQogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5k
bGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRs
aW5nLmNwcAppbmRleCA1ODU1NTNkMTZjMmNmMDY5NGU1NGY2ZmQ0YzBmNmMyYmExYThlYTcwLi4y
MWNmZDRjZDExZGFhNDI2OTNhYTk0MzY3OTU4NzI3ZmE2YmRlNjQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcApAQCAt
MjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkhlYWRlcnMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25JbnRlcmZhY2Vz
LmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVm
ZXJyZWQuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRHluYW1pY0Rv
d25jYXN0LmgiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggNWJkMDZjN2Q5MGQ4
OWFiNmZhZjI1YWFiODYxZTQyNTMwZmMyOTliOC4uN2I5MWVlYzQxNzIxNDE5YmNlYmJjZWFkYTU1
ZmYzMGM3Nzk3Mzk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkpTRE9NR2xvYmFs
T2JqZWN0LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNET01X
aW5kb3cuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU01lZGlh
U3RyZWFtLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBy
b21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM5NzE3ODhlYTBmNDUwYmIwZTQyODEzODEx
YzM3ZjcwMGVlYjRlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCi0jaW5jbHVkZSAiSlNET01FcnJvci5oIgotI2luY2x1ZGUgIkpTRE9NV2luZG93Lmgi
Ci0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9F
eGNlcHRpb24uaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTT05PYmplY3QuaD4KLSNpbmNsdWRlIDxy
dW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNDOjpKU1ZhbHVlIERlZmVycmVkUHJvbWlzZTo6cHJv
bWlzZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgIHJldHVybiBkZWZl
cnJlZCgpLT5wcm9taXNlKCk7Ci19Ci0KLXZvaWQgRGVmZXJyZWRQcm9taXNlOjpjYWxsRnVuY3Rp
b24oRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uLCBKU1ZhbHVlIHJlc29sdXRpb24p
Ci17Ci0gICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpO
b25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVu
dHMuYXBwZW5kKHJlc29sdXRpb24pOwotCi0gICAgY2FsbCgmZXhlYywgZnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKLQotICAgIGNsZWFyKCk7
Ci19Ci0KLXZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoKQotewotICAgIGlmIChpc1N1c3Bl
bmRlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAg
QVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmc3RhdGUpOwot
ICAgIHJlamVjdChzdGF0ZSwgSlNDOjpqc1VuZGVmaW5lZCgpKTsKLX0KLQotdm9pZCBEZWZlcnJl
ZFByb21pc2U6OnJlamVjdChzdGQ6Om51bGxwdHJfdCkKLXsKLSAgICBpZiAoaXNTdXNwZW5kZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgIEFTU0VS
VChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRlKTsKLSAgICBy
ZWplY3Qoc3RhdGUsIEpTQzo6anNOdWxsKCkpOwotfQotCi12b2lkIERlZmVycmVkUHJvbWlzZTo6
cmVqZWN0KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKLXsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgIEFTU0VSVCht
X2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRlKTsKLQotICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOwotICAgIGF1dG8gZXJy
b3IgPSBjcmVhdGVET01FeGNlcHRpb24oc3RhdGUsIFdURk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAg
aWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewotICAgICAgICBBU1NFUlQoaXNUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHN0YXRlLnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByZWplY3Qoc3RhdGUsIGVycm9yKTsKLX0K
LQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChFeGNlcHRpb25Db2RlIGVjLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAgICBBU1NFUlQobV9nbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCZzdGF0ZSk7Ci0KLSAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKLSAgICBhdXRvIGVycm9yID0gY3JlYXRlRE9N
RXhjZXB0aW9uKCZzdGF0ZSwgZWMsIG1lc3NhZ2UpOwotICAgIGlmIChVTkxJS0VMWShzY29wZS5l
eGNlcHRpb24oKSkpIHsKLSAgICAgICAgQVNTRVJUKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbihzdGF0ZS52bSgpLCBzY29wZS5leGNlcHRpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0KLSAgICByZWplY3Qoc3RhdGUsIGVycm9yKTsKLX0KLQotdm9pZCBEZWZlcnJlZFBy
b21pc2U6OnJlamVjdChjb25zdCBKU0M6OlByaXZhdGVOYW1lJiBwcml2YXRlTmFtZSkKLXsKLSAg
ICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGRlZmVy
cmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgSlNDOjpFeGVjU3RhdGUq
IHN0YXRlID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrZXIoc3RhdGUpOwotICAgIHJlamVjdCgqc3RhdGUsIEpTQzo6U3ltYm9sOjpjcmVh
dGUoc3RhdGUtPnZtKCksIHByaXZhdGVOYW1lLnVpZCgpKSk7Ci19Ci0KLXZvaWQgcmVqZWN0UHJv
bWlzZVdpdGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZURlZmVycmVkJiBwcm9taXNlRGVmZXJyZWQp
Ci17Ci0gICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRSh2bSk7Ci0KLSAgICBpZiAoTElLRUxZKCFzY29wZS5leGNlcHRpb24oKSkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgZXJyb3IgPSBzY29wZS5leGNlcHRpb24oKS0+
dmFsdWUoKTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotCi0gICAgRGVmZXJyZWRQcm9t
aXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNlRGVmZXJyZWQpLT5yZWplY3Q8SURMQW55
PihlcnJvcik7Ci19Ci0KLVJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlz
ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NV2luZG93JiBkb21XaW5kb3cpCi17Ci0gICAg
SlNDOjpKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVk
OjpjcmVhdGUoJnN0YXRlLCAmZG9tV2luZG93KTsKLSAgICAvLyBkZWZlcnJlZCBjYW4gb25seSBi
ZSBudWxsIGluIHdvcmtlcnMuCi0gICAgQVNTRVJUKGRlZmVycmVkKTsKLSAgICByZXR1cm4gRGVm
ZXJyZWRQcm9taXNlOjpjcmVhdGUoZG9tV2luZG93LCAqZGVmZXJyZWQpOwotfQotCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKLXsKLSAgICBBU1NFUlQo
c3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAq
c3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0gICAgYXV0byBwcm9taXNlQ29uc3RydWN0
b3IgPSBnbG9iYWxPYmplY3QucHJvbWlzZUNvbnN0cnVjdG9yKCk7Ci0gICAgYXV0byByZWplY3RG
dW5jdGlvbiA9IHByb21pc2VDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgc3RhdGUudm0oKS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRv
IHJlamVjdGlvblZhbHVlID0gY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsK
LQotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShyZWplY3RGdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxs
VHlwZTo6Tm9uZSk7Ci0KLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAg
YXJndW1lbnRzLmFwcGVuZChyZWplY3Rpb25WYWx1ZSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhbGwoJnN0YXRlLCByZWplY3RGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBw
cm9taXNlQ29uc3RydWN0b3IsIGFyZ3VtZW50cykpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6
SlNWYWx1ZSBwYXJzZUFzSlNPTihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYg
ZGF0YSkKLXsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKLSAgICByZXR1cm4g
SlNDOjpKU09OUGFyc2Uoc3RhdGUsIGRhdGEpOwotfQotCi12b2lkIGZ1bGZpbGxQcm9taXNlV2l0
aEpTT04oUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGRhdGEp
Ci17Ci0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcGFyc2VBc0pTT04ocHJvbWlzZS0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgZGF0YSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KFNZTlRBWF9FUlIpOwotICAgIGVsc2UKLSAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExBbnk+KHZhbHVlKTsKLX0KLQotdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJh
eUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEFycmF5QnVmZmVyKiBhcnJh
eUJ1ZmZlcikKLXsKLSAgICBpZiAoIWFycmF5QnVmZmVyKSB7Ci0gICAgICAgIHByb21pc2UtPnJl
amVjdDxJRExBbnk+KGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IocHJvbWlzZS0+Z2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHByb21pc2Ut
PnJlc29sdmU8SURMSW50ZXJmYWNlPEFycmF5QnVmZmVyPj4oKmFycmF5QnVmZmVyKTsKLX0KLQot
dm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgZnVsZmls
bFByb21pc2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuaAppbmRleCBlZjEwNDllNzdmY2IxNzlmNDI5MDdkYjk3M2Qz
YTFiODUyNDRhOTBkLi4xMGFjNzRiYzNjMTcxMjUyYzMxNmM3YzgyNjJlMDMxOTJlODMwZGQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDIzMSArMjUs
MjkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKICNpbmNs
dWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZURl
ZmVycmVkLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1Byb21pc2UuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBEZWZlcnJlZFByb21pc2UgOiBwdWJsaWMgRE9NR3VhcmRlZDxKU0M6
OkpTUHJvbWlzZURlZmVycmVkPiB7CitjbGFzcyBET01Qcm9taXNlIDogcHVibGljIERPTUd1YXJk
ZWQ8SlNDOjpKU1Byb21pc2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERlZmVycmVkUHJv
bWlzZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNQcm9t
aXNlRGVmZXJyZWQmIGRlZmVycmVkKQorICAgIHN0YXRpYyBSZWY8RE9NUHJvbWlzZT4gY3JlYXRl
KEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNQcm9taXNlJiBwcm9taXNl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmZXJyZWRQcm9taXNlKGds
b2JhbE9iamVjdCwgZGVmZXJyZWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9N
UHJvbWlzZShnbG9iYWxPYmplY3QsIHByb21pc2UpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBJRExUeXBlPgotICAgIHZvaWQgcmVzb2x2ZSh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0
ZXJUeXBlIHZhbHVlKQorICAgIEpTQzo6SlNQcm9taXNlKiBwcm9taXNlKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7Ci0g
ICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KTsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgICAgICByZXNv
bHZlKCpleGVjLCB0b0pTPElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCksIHN0ZDo6Zm9y
d2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpKTsKKyAgICAgICAg
QVNTRVJUKCFpc1N1c3BlbmRlZCgpKTsKKyAgICAgICAgcmV0dXJuIGd1YXJkZWQoKTsKICAgICB9
CiAKLSAgICB2b2lkIHJlc29sdmUoKQotICAgIHsKLSAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAgICAg
ICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMg
PSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoZXhlYyk7Ci0gICAgICAgIHJlc29sdmUoKmV4ZWMsIEpTQzo6anNVbmRlZmluZWQo
KSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KLSAgICB2b2lkIHJlc29s
dmVXaXRoTmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUp
Ci0gICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0
KCkpOwotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCk7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICAg
ICAgcmVzb2x2ZSgqZXhlYywgdG9KU05ld2x5Q3JlYXRlZDxJRExUeXBlPigqZXhlYywgKmdsb2Jh
bE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4o
dmFsdWUpKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KLSAgICB2b2lk
IHJlamVjdCh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQotICAgIHsKLSAg
ICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFT
U0VSVChkZWZlcnJlZCgpKTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKLSAgICAg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwot
ICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgICAgIHJlamVjdCgq
ZXhlYywgdG9KUzxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8
dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7Ci0gICAgfQotCi0gICAg
dm9pZCByZWplY3QoKTsKLSAgICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJfdCk7Ci0gICAgdm9p
ZCByZWplY3QoRXhjZXB0aW9uJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0KEV4
Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0pOwotICAgIHZvaWQgcmVqZWN0KGNvbnN0
IEpTQzo6UHJpdmF0ZU5hbWUmKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrPgot
ICAgIHZvaWQgcmVzb2x2ZVdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaykKLSAgICB7Ci0g
ICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBB
U1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7Ci0gICAg
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsK
LSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgICAgICByZXNvbHZl
KCpleGVjLCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+Ci0gICAgdm9pZCByZWplY3RXaXRoQ2FsbGJhY2so
Q2FsbGJhY2sgY2FsbGJhY2spCi0gICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgICAgICBB
U1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGds
b2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2tlcihleGVjKTsKLSAgICAgICAgcmVqZWN0KCpleGVjLCBjYWxsYmFjaygqZXhlYywgKmdsb2Jh
bE9iamVjdCgpKSk7Ci0gICAgfQotCi0gICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBjb25zdDsK
LQogcHJpdmF0ZToKLSAgICBEZWZlcnJlZFByb21pc2UoSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYgZGVmZXJyZWQpIDogRE9NR3VhcmRlZDxK
U0M6OkpTUHJvbWlzZURlZmVycmVkPihnbG9iYWxPYmplY3QsIGRlZmVycmVkKSB7IH0KLQotICAg
IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gZ3VhcmRl
ZCgpOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbGxGdW5jdGlvbihKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pOwot
ICAgIHZvaWQgcmVzb2x2ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNv
bHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwgZGVmZXJyZWQoKS0+cmVzb2x2ZSgpLCByZXNv
bHV0aW9uKTsgfQotICAgIHZvaWQgcmVqZWN0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpK
U1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRlLCBkZWZlcnJlZCgpLT5yZWpl
Y3QoKSwgcmVzb2x1dGlvbik7IH0KLX07Ci0KLWNsYXNzIERPTVByb21pc2VCYXNlIHsKLXB1Ymxp
YzoKLSAgICBET01Qcm9taXNlQmFzZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIGdlbmVyaWNQcm9t
aXNlKQotICAgICAgICA6IG1fcHJvbWlzZURlZmVycmVkKFdURk1vdmUoZ2VuZXJpY1Byb21pc2Up
KQotICAgIHsKLSAgICB9Ci0KLSAgICBET01Qcm9taXNlQmFzZShET01Qcm9taXNlQmFzZSYmIHBy
b21pc2UpCi0gICAgICAgIDogbV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShwcm9taXNlLm1fcHJv
bWlzZURlZmVycmVkKSkKLSAgICB7Ci0gICAgfQotCi0gICAgRE9NUHJvbWlzZUJhc2UoY29uc3Qg
RE9NUHJvbWlzZUJhc2UmIG90aGVyKQotICAgICAgICA6IG1fcHJvbWlzZURlZmVycmVkKG90aGVy
Lm1fcHJvbWlzZURlZmVycmVkLmNvcHlSZWYoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgRE9NUHJv
bWlzZUJhc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9taXNlQmFzZSYgb3RoZXIpCi0gICAgewot
ICAgICAgICBtX3Byb21pc2VEZWZlcnJlZCA9IG90aGVyLm1fcHJvbWlzZURlZmVycmVkLmNvcHlS
ZWYoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIERPTVByb21pc2VCYXNl
JiBvcGVyYXRvcj0oRE9NUHJvbWlzZUJhc2UmJiBvdGhlcikKKyAgICBET01Qcm9taXNlKEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNQcm9taXNlJiBwcm9taXNlKQorICAg
ICAgICA6IERPTUd1YXJkZWQ8SlNDOjpKU1Byb21pc2U+KGdsb2JhbE9iamVjdCwgcHJvbWlzZSkK
ICAgICB7Ci0gICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gV1RGTW92ZShvdGhlci5tX3Byb21p
c2VEZWZlcnJlZCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB2b2lkIHJl
amVjdCgpCi0gICAgewotICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+cmVqZWN0KCk7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gRXJyb3JUeXBlPiAKLSAgICB2b2lkIHJlamVj
dChFcnJvclR5cGUmJi4uLiBlcnJvcikKLSAgICB7Ci0gICAgICAgIG1fcHJvbWlzZURlZmVycmVk
LT5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyb3IpLi4uKTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgotICAgIHZvaWQgcmVqZWN0VHlwZSh0eXBlbmFt
ZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQotICAgIHsKLSAgICAgICAgbV9wcm9taXNl
RGVmZXJyZWQtPnJlamVjdDxJRExUeXBlPihzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6
UGFyYW1ldGVyVHlwZT4odmFsdWUpKTsKLSAgICB9Ci0KLSAgICBKU0M6OkpTVmFsdWUgcHJvbWlz
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7IH07Ci0KLXBy
b3RlY3RlZDoKLSAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBtX3Byb21pc2VEZWZlcnJlZDsKLX07
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IAotY2xhc3MgRE9NUHJvbWlzZSA6IHB1Ymxp
YyBET01Qcm9taXNlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OkRP
TVByb21pc2VCYXNlOwotICAgIHVzaW5nIERPTVByb21pc2VCYXNlOjpvcGVyYXRvcj07Ci0gICAg
dXNpbmcgRE9NUHJvbWlzZUJhc2U6OnByb21pc2U7Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6
OnJlamVjdDsKLQotICAgIHZvaWQgcmVzb2x2ZSh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJU
eXBlIHZhbHVlKQotICAgIHsgCi0gICAgICAgIG1fcHJvbWlzZURlZmVycmVkLT5yZXNvbHZlPElE
TFR5cGU+KHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1
ZSkpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gY2xhc3MgRE9NUHJvbWlzZTx2b2lkPiA6IHB1
YmxpYyBET01Qcm9taXNlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6
OkRPTVByb21pc2VCYXNlOwotICAgIHVzaW5nIERPTVByb21pc2VCYXNlOjpvcGVyYXRvcj07Ci0g
ICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnByb21pc2U7Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJh
c2U6OnJlamVjdDsKLQotICAgIHZvaWQgcmVzb2x2ZSgpCi0gICAgeyAKLSAgICAgICAgbV9wcm9t
aXNlRGVmZXJyZWQtPnJlc29sdmUoKTsKLSAgICB9Ci19OwotCi0KLVJlZjxEZWZlcnJlZFByb21p
c2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NV2luZG93Jik7
Ci0KLXZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihSZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBj
b25zdCBTdHJpbmcmKTsKLXZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiwgQXJyYXlCdWZmZXIqKTsKLXZvaWQgZnVsZmlsbFByb21pc2VXaXRo
QXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7
Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHJlamVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoSlND
OjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQm
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVqZWN0ZWRQcm9taXNlV2l0aFR5cGVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYpOwotCi11c2luZyBQcm9taXNlRnVuY3Rp
b24gPSB2b2lkKEpTQzo6RXhlY1N0YXRlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7Ci0KLWVu
dW0gY2xhc3MgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIHsgV2luZG93T25seSwgV2luZG93T3JXb3Jr
ZXIgfTsKLQotdGVtcGxhdGU8UHJvbWlzZUZ1bmN0aW9uIHByb21pc2VGdW5jdGlvbiwgUHJvbWlz
ZUV4ZWN1dGlvblNjb3BlIGV4ZWN1dGlvblNjb3BlPgotaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxs
UHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBKU0M6OlZNJiB2
bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0p
OwotCi0gICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgSlND
OjpKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0gSlNDOjpKU1Byb21pc2VEZWZl
cnJlZDo6Y3JlYXRlKCZzdGF0ZSwgJmdsb2JhbE9iamVjdCk7Ci0KLSAgICAvLyBwcm9taXNlRGVm
ZXJyZWQgY2FuIGJlIG51bGwgd2hlbiB0ZXJtaW5hdGluZyBhIFdvcmtlciBhYnJ1cHRseS4KLSAg
ICBpZiAoZXhlY3V0aW9uU2NvcGUgPT0gUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldv
cmtlciAmJiAhcHJvbWlzZURlZmVycmVkKQotICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5l
ZCgpOwotCi0gICAgcHJvbWlzZUZ1bmN0aW9uKHN0YXRlLCBEZWZlcnJlZFByb21pc2U6OmNyZWF0
ZShnbG9iYWxPYmplY3QsICpwcm9taXNlRGVmZXJyZWQpKTsKLQotICAgIHJlamVjdFByb21pc2VX
aXRoRXhjZXB0aW9uSWZBbnkoc3RhdGUsIGdsb2JhbE9iamVjdCwgKnByb21pc2VEZWZlcnJlZCk7
Ci0gICAgQVNTRVJUX1VOVVNFRChzY29wZSwgIXNjb3BlLmV4Y2VwdGlvbigpKTsKLSAgICByZXR1
cm4gcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7Ci19Ci0KLXVzaW5nIEJpbmRpbmdQcm9taXNl
RnVuY3Rpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJik7Ci10ZW1wbGF0ZTxCaW5kaW5nUHJvbWlzZUZ1bmN0aW9uIGJpbmRpbmdG
dW5jdGlvbj4KLWlubGluZSB2b2lkIGJpbmRpbmdQcm9taXNlRnVuY3Rpb25BZGFwdGVyKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQotewotICAg
IGJpbmRpbmdGdW5jdGlvbigmc3RhdGUsIFdURk1vdmUocHJvbWlzZSkpOwotfQotCi10ZW1wbGF0
ZTxCaW5kaW5nUHJvbWlzZUZ1bmN0aW9uIGJpbmRpbmdQcm9taXNlRnVuY3Rpb24sIFByb21pc2VF
eGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZT4KLWlubGluZSBKU0M6OkpTVmFsdWUgY2FsbFBy
b21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgcmV0dXJuIGNhbGxQ
cm9taXNlRnVuY3Rpb248YmluZGluZ1Byb21pc2VGdW5jdGlvbkFkYXB0ZXI8YmluZGluZ1Byb21p
c2VGdW5jdGlvbj4sIGV4ZWN1dGlvblNjb3BlPihzdGF0ZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZURlZmVycmVkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTVhMmQyOWVmZDNmZDdhZGIzMjU4MDFiYjQ2NWJm
YTZmY2UzN2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCkBAIC0wLDAgKzEsMjExIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01FcnJvci5o
IgorI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb24uaD4KKyNpbmNsdWRlIDxydW50aW1l
L0pTT05PYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNDOjpK
U1ZhbHVlIERlZmVycmVkUHJvbWlzZTo6cHJvbWlzZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGRl
ZmVycmVkKCkpOworICAgIHJldHVybiBkZWZlcnJlZCgpLT5wcm9taXNlKCk7Cit9CisKK3ZvaWQg
RGVmZXJyZWRQcm9taXNlOjpjYWxsRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGZ1
bmN0aW9uLCBKU1ZhbHVlIHJlc29sdXRpb24pCit7CisgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFj
aygpKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNT
RVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHJlc29sdXRpb24pOworCisgICAg
Y2FsbCgmZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwg
YXJndW1lbnRzKTsKKworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgRGVmZXJyZWRQcm9taXNlOjpy
ZWplY3QoKQoreworICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2tlcigmc3RhdGUpOworICAgIHJlamVjdChzdGF0ZSwgSlNDOjpqc1VuZGVm
aW5lZCgpKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChzdGQ6Om51bGxwdHJf
dCkKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNT
RVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CisgICAgYXV0byYg
c3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrZXIoJnN0YXRlKTsKKyAgICByZWplY3Qoc3RhdGUsIEpTQzo6anNOdWxsKCkpOwor
fQorCit2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikK
K3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJU
KGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CisgICAgYXV0byYgc3Rh
dGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoJnN0YXRlKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHN0YXRlLnZtKCkpOworICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNlcHRpb24oc3RhdGUs
IFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigp
KSkgeworICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHN0YXRl
LnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICByZWplY3Qoc3RhdGUsIGVycm9yKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVj
dChFeGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKGlz
U3VzcGVuZGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChkZWZlcnJlZCgpKTsK
KyAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOworICAgIGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCZzdGF0
ZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsK
KyAgICBhdXRvIGVycm9yID0gY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMsIG1lc3NhZ2Up
OworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgQVNTRVJU
KGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihzdGF0ZS52bSgpLCBzY29wZS5leGNlcHRp
b24oKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICByZWplY3Qoc3RhdGUsIGVy
cm9yKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChjb25zdCBKU0M6OlByaXZh
dGVOYW1lJiBwcml2YXRlTmFtZSkKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2dsb2JhbE9i
amVjdCk7CisgICAgSlNDOjpFeGVjU3RhdGUqIHN0YXRlID0gbV9nbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoc3RhdGUpOworICAgIHJlamVj
dCgqc3RhdGUsIEpTQzo6U3ltYm9sOjpjcmVhdGUoc3RhdGUtPnZtKCksIHByaXZhdGVOYW1lLnVp
ZCgpKSk7Cit9CisKK3ZvaWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlz
ZURlZmVycmVkJiBwcm9taXNlRGVmZXJyZWQpCit7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBpZiAoTElL
RUxZKCFzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTVmFsdWUg
ZXJyb3IgPSBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUoKTsKKyAgICBzY29wZS5jbGVhckV4Y2Vw
dGlvbigpOworCisgICAgRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBwcm9t
aXNlRGVmZXJyZWQpLT5yZWplY3Q8SURMQW55PihlcnJvcik7Cit9CisKK1JlZjxEZWZlcnJlZFBy
b21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9N
V2luZG93JiBkb21XaW5kb3cpCit7CisgICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJy
ZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCAmZG9tV2luZG93KTsK
KyAgICAvLyBkZWZlcnJlZCBjYW4gb25seSBiZSBudWxsIGluIHdvcmtlcnMuCisgICAgQVNTRVJU
KGRlZmVycmVkKTsKKyAgICByZXR1cm4gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZG9tV2luZG93
LCAqZGVmZXJyZWQpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJv
bWlzZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKTsK
KyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpOwor
CisgICAgYXV0byBwcm9taXNlQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QucHJvbWlzZUNvbnN0
cnVjdG9yKCk7CisgICAgYXV0byByZWplY3RGdW5jdGlvbiA9IHByb21pc2VDb25zdHJ1Y3Rvci0+
Z2V0KCZzdGF0ZSwgc3RhdGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWpl
Y3RQcml2YXRlTmFtZSgpKTsKKyAgICBhdXRvIHJlamVjdGlvblZhbHVlID0gY3JlYXRlVHlwZUVy
cm9yKCZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsKKworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAg
IGF1dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWplY3RGdW5jdGlvbiwgY2FsbERhdGEpOwor
ICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisKKyAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChyZWplY3Rpb25WYWx1
ZSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoJnN0YXRlLCByZWplY3RGdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBwcm9taXNlQ29uc3RydWN0b3IsIGFyZ3VtZW50cykp
OworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBwYXJzZUFzSlNPTihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKK3sKKyAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrKHN0YXRlKTsKKyAgICByZXR1cm4gSlNDOjpKU09OUGFyc2Uoc3RhdGUsIGRhdGEpOwor
fQorCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlLCBjb25zdCBTdHJpbmcmIGRhdGEpCit7CisgICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0g
cGFyc2VBc0pTT04ocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgZGF0YSk7
CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFNZTlRBWF9FUlIpOwor
ICAgIGVsc2UKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExBbnk+KHZhbHVlKTsKK30KKwor
dm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKK3sKKyAgICBpZiAoIWFycmF5QnVm
ZmVyKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdDxJRExBbnk+KGNyZWF0ZU91dE9mTWVtb3J5
RXJyb3IocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEFycmF5QnVm
ZmVyPj4oKmFycmF5QnVmZmVyKTsKK30KKwordm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1
ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCit7CisgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92
ZShwcm9taXNlKSwgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURl
ZmVycmVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYxM2NhYzdiMjhiNGM3ZWZhOTI0ZGQ2OTkzMTc3MjcxOTYw
ZjhmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZURlZmVycmVkLmgKQEAgLTAsMCArMSwyNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgorI2luY2x1ZGUgIkpTRE9NR3VhcmRl
ZE9iamVjdC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZWZlcnJlZFByb21pc2UgOiBwdWJsaWMgRE9NR3Vh
cmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxE
ZWZlcnJlZFByb21pc2U+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTUHJvbWlzZURlZmVycmVkJiBkZWZlcnJlZCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IERlZmVycmVkUHJvbWlzZShnbG9iYWxPYmplY3QsIGRlZmVycmVkKSk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAgICB2b2lkIHJlc29sdmUodHlw
ZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChp
c1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoZGVmZXJy
ZWQoKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CisgICAgICAgIEpTQzo6RXhl
Y1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICByZXNvbHZlKCpleGVjLCB0b0pT
PElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCksIHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJ
RExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc29s
dmUoKQorICAgIHsKKyAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9i
amVjdCgpKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpOworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Cisg
ICAgICAgIHJlc29sdmUoKmV4ZWMsIEpTQzo6anNVbmRlZmluZWQoKSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAgICB2b2lkIHJlc29sdmVXaXRoTmV3bHlDcmVhdGVk
KHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKGRl
ZmVycmVkKCkpOworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOworICAgICAgICBKU0M6
OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICAgICAgcmVzb2x2ZSgqZXhlYywg
dG9KU05ld2x5Q3JlYXRlZDxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZv
cndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAgICB2b2lkIHJlamVjdCh0eXBlbmFtZSBJ
RExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKGlzU3VzcGVu
ZGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsK
KyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgICAgIHJlamVjdCgqZXhlYywgdG9KUzxJRExUeXBl
PigqZXhlYywgKmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6
UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7CisgICAgfQorCisgICAgdm9pZCByZWplY3QoKTsKKyAg
ICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJfdCk7CisgICAgdm9pZCByZWplY3QoRXhjZXB0aW9u
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUsIGNvbnN0
IFN0cmluZyYgPSB7IH0pOworICAgIHZvaWQgcmVqZWN0KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUm
KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrPgorICAgIHZvaWQgcmVzb2x2ZVdp
dGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmIChpc1N1c3Bl
bmRlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7
CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CisgICAgICAgIEpTQzo6RXhlY1N0YXRl
KiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICByZXNvbHZlKCpleGVjLCBjYWxsYmFjaygq
ZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2FsbGJhY2s+CisgICAgdm9pZCByZWplY3RXaXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2sp
CisgICAgeworICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0
KCkpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICAg
ICAgcmVqZWN0KCpleGVjLCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7CisgICAg
fQorCisgICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBE
ZWZlcnJlZFByb21pc2UoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1By
b21pc2VEZWZlcnJlZCYgZGVmZXJyZWQpCisgICAgICAgIDogRE9NR3VhcmRlZDxKU0M6OkpTUHJv
bWlzZURlZmVycmVkPihnbG9iYWxPYmplY3QsIGRlZmVycmVkKQorICAgIHsKKyAgICB9CisKKyAg
ICBKU0M6OkpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCgpIGNvbnN0IHsgcmV0dXJuIGd1YXJk
ZWQoKTsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYWxsRnVuY3Rpb24oSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24sIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKTsK
KyAgICB2b2lkIHJlc29sdmUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgcmVz
b2x1dGlvbikgeyBjYWxsRnVuY3Rpb24oc3RhdGUsIGRlZmVycmVkKCktPnJlc29sdmUoKSwgcmVz
b2x1dGlvbik7IH0KKyAgICB2b2lkIHJlamVjdChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwgZGVmZXJyZWQoKS0+cmVq
ZWN0KCksIHJlc29sdXRpb24pOyB9Cit9OworCitjbGFzcyBET01Qcm9taXNlRGVmZXJyZWRCYXNl
IHsKK3B1YmxpYzoKKyAgICBET01Qcm9taXNlRGVmZXJyZWRCYXNlKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgZ2VuZXJpY1Byb21pc2UpCisgICAgICAgIDogbV9wcm9taXNlRGVmZXJyZWQoV1RGTW92
ZShnZW5lcmljUHJvbWlzZSkpCisgICAgeworICAgIH0KKworICAgIERPTVByb21pc2VEZWZlcnJl
ZEJhc2UoRE9NUHJvbWlzZURlZmVycmVkQmFzZSYmIHByb21pc2UpCisgICAgICAgIDogbV9wcm9t
aXNlRGVmZXJyZWQoV1RGTW92ZShwcm9taXNlLm1fcHJvbWlzZURlZmVycmVkKSkKKyAgICB7Cisg
ICAgfQorCisgICAgRE9NUHJvbWlzZURlZmVycmVkQmFzZShjb25zdCBET01Qcm9taXNlRGVmZXJy
ZWRCYXNlJiBvdGhlcikKKyAgICAgICAgOiBtX3Byb21pc2VEZWZlcnJlZChvdGhlci5tX3Byb21p
c2VEZWZlcnJlZC5jb3B5UmVmKCkpCisgICAgeworICAgIH0KKworICAgIERPTVByb21pc2VEZWZl
cnJlZEJhc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9taXNlRGVmZXJyZWRCYXNlJiBvdGhlcikK
KyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gb3RoZXIubV9wcm9taXNlRGVmZXJy
ZWQuY29weVJlZigpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgRE9NUHJv
bWlzZURlZmVycmVkQmFzZSYgb3BlcmF0b3I9KERPTVByb21pc2VEZWZlcnJlZEJhc2UmJiBvdGhl
cikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gV1RGTW92ZShvdGhlci5tX3By
b21pc2VEZWZlcnJlZCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB2b2lk
IHJlamVjdCgpCisgICAgeworICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+cmVqZWN0KCk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gRXJyb3JUeXBlPiAKKyAgICB2b2lkIHJl
amVjdChFcnJvclR5cGUmJi4uLiBlcnJvcikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVy
cmVkLT5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyb3IpLi4uKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorICAgIHZvaWQgcmVqZWN0VHlwZSh0eXBl
bmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9wcm9t
aXNlRGVmZXJyZWQtPnJlamVjdDxJRExUeXBlPihzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlw
ZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKTsKKyAgICB9CisKKyAgICBKU0M6OkpTVmFsdWUgcHJv
bWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7IH07CisK
K3Byb3RlY3RlZDoKKyAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBtX3Byb21pc2VEZWZlcnJlZDsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IAorY2xhc3MgRE9NUHJvbWlzZURlZmVy
cmVkIDogcHVibGljIERPTVByb21pc2VEZWZlcnJlZEJhc2UgeworcHVibGljOgorICAgIHVzaW5n
IERPTVByb21pc2VEZWZlcnJlZEJhc2U6OkRPTVByb21pc2VEZWZlcnJlZEJhc2U7CisgICAgdXNp
bmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6b3BlcmF0b3I9OworICAgIHVzaW5nIERPTVByb21p
c2VEZWZlcnJlZEJhc2U6OnByb21pc2U7CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFz
ZTo6cmVqZWN0OworCisgICAgdm9pZCByZXNvbHZlKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRl
clR5cGUgdmFsdWUpCisgICAgeyAKKyAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlc29sdmU8
SURMVHlwZT4oc3RkOjpmb3J3YXJkPHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGU+KHZh
bHVlKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4gOiBwdWJsaWMgRE9NUHJvbWlzZURlZmVycmVkQmFzZSB7CitwdWJsaWM6CisgICAgdXNp
bmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTsKKyAgICB1
c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpvcGVyYXRvcj07CisgICAgdXNpbmcgRE9NUHJv
bWlzZURlZmVycmVkQmFzZTo6cHJvbWlzZTsKKyAgICB1c2luZyBET01Qcm9taXNlRGVmZXJyZWRC
YXNlOjpyZWplY3Q7CisKKyAgICB2b2lkIHJlc29sdmUoKQorICAgIHsgCisgICAgICAgIG1fcHJv
bWlzZURlZmVycmVkLT5yZXNvbHZlKCk7CisgICAgfQorfTsKKworCitSZWY8RGVmZXJyZWRQcm9t
aXNlPiBjcmVhdGVEZWZlcnJlZFByb21pc2UoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTVdpbmRvdyYp
OworCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVkUHJvbWlzZT4mJiwg
Y29uc3QgU3RyaW5nJik7Cit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYsIEFycmF5QnVmZmVyKik7Cit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0
aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIGNvbnN0IHZvaWQqLCBzaXplX3Qp
OworV0VCQ09SRV9FWFBPUlQgdm9pZCByZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KEpT
Qzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTUHJvbWlzZURlZmVycmVk
Jik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBTdHJpbmcmKTsKKwordXNpbmcgUHJvbWlzZUZ1bmN0
aW9uID0gdm9pZChKU0M6OkV4ZWNTdGF0ZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworCitl
bnVtIGNsYXNzIFByb21pc2VFeGVjdXRpb25TY29wZSB7IFdpbmRvd09ubHksIFdpbmRvd09yV29y
a2VyIH07CisKK3RlbXBsYXRlPFByb21pc2VGdW5jdGlvbiBwcm9taXNlRnVuY3Rpb24sIFByb21p
c2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZT4KK2lubGluZSBKU0M6OkpTVmFsdWUgY2Fs
bFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgSlNDOjpWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIEpT
Qzo6SlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTQzo6SlNQcm9taXNlRGVm
ZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsICZnbG9iYWxPYmplY3QpOworCisgICAgLy8gcHJvbWlzZURl
ZmVycmVkIGNhbiBiZSBudWxsIHdoZW4gdGVybWluYXRpbmcgYSBXb3JrZXIgYWJydXB0bHkuCisg
ICAgaWYgKGV4ZWN1dGlvblNjb3BlID09IFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JX
b3JrZXIgJiYgIXByb21pc2VEZWZlcnJlZCkKKyAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmlu
ZWQoKTsKKworICAgIHByb21pc2VGdW5jdGlvbihzdGF0ZSwgRGVmZXJyZWRQcm9taXNlOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCAqcHJvbWlzZURlZmVycmVkKSk7CisKKyAgICByZWplY3RQcm9taXNl
V2l0aEV4Y2VwdGlvbklmQW55KHN0YXRlLCBnbG9iYWxPYmplY3QsICpwcm9taXNlRGVmZXJyZWQp
OworICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFzY29wZS5leGNlcHRpb24oKSk7CisgICAgcmV0
dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit1c2luZyBCaW5kaW5nUHJvbWlz
ZUZ1bmN0aW9uID0gSlNDOjpFbmNvZGVkSlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYpOwordGVtcGxhdGU8QmluZGluZ1Byb21pc2VGdW5jdGlvbiBiaW5kaW5n
RnVuY3Rpb24+CitpbmxpbmUgdm9pZCBiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRlcihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAg
ICBiaW5kaW5nRnVuY3Rpb24oJnN0YXRlLCBXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordGVtcGxh
dGU8QmluZGluZ1Byb21pc2VGdW5jdGlvbiBiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uLCBQcm9taXNl
RXhlY3V0aW9uU2NvcGUgZXhlY3V0aW9uU2NvcGU+CitpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQ
cm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHJldHVybiBjYWxs
UHJvbWlzZUZ1bmN0aW9uPGJpbmRpbmdQcm9taXNlRnVuY3Rpb25BZGFwdGVyPGJpbmRpbmdQcm9t
aXNlRnVuY3Rpb24+LCBleGVjdXRpb25TY29wZT4oc3RhdGUpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRs
ZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNy
eXB0b0N1c3RvbS5jcHAKaW5kZXggZWYzN2FlYWFkODA0YWNiNGRiNjM0NDIxN2I4MDY2OGJmMzYw
YTI1MC4uNDEwZGU3NjQzMmQyODM5MjU0MzNmMmQwNzJiMDlkYjk3NjRmMDc1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApA
QCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkpTQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIkpTQ3J5cHRvS2V5LmgiCiAjaW5jbHVkZSAiSlNDcnlwdG9LZXlQYWlyLmgi
Ci0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0VjS2V5UGFyYW1z
LmgiCiAjaW5jbHVkZSAiSlNFY2RoS2V5RGVyaXZlUGFyYW1zLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRCdWZmZXJDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVDb21tYW5kQnVmZmVyQ3VzdG9tLmNw
cAppbmRleCAyZmIzZjBiOTIyNjIyZDQ2YTkyMmY3YjYyYjk2OGY4Y2VlOGQ4NGUyLi45MzBjNGZk
M2E3ZjFlNGQ4ZjgzNGU3MjRlOTY0NDg0YjI4NDNlNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRCdWZmZXJDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BVQ29tbWFuZEJ1ZmZlckN1c3RvbS5jcHAK
QEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiR1BVQ29t
bWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCiAjaW5jbHVkZSA8
cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAppbmRleCA2MzhiMzdlNGFj
NTFlZmY4ZmNkNmNiZGFiM2MyMDlkM2ZmZjFhYjY2Li40Y2IzZTJjNWU5MDMzOGNlN2VjY2RlNjI4
ZDRiNzk2YTA3NWViNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBACiAj
aW5jbHVkZSAiSlNDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLLmgiCiAjaW5jbHVkZSAiSlNDcnlwdG9PcGVyYXRpb25EYXRhLmgiCi0jaW5jbHVk
ZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2Ri
ZGViYmExNWE0MDIzMDk1ZDRmZTA2YjU2YWY0N2YzZDA0ZjFhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudC5jcHAKQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudC5oIgorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01CaW5k
aW5nQ2FsbGVyLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8PiBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0
IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQ+KEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBib29s
IGlzTnVsbE9yVW5kZWZpbmVkID0gdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBhdXRv
KiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3Qo
KTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVkICYmICFvYmplY3QpKSB7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVy
biB7IH07CisgICAgfQorICAgIGlmIChVTkxJS0VMWShvYmplY3QgJiYgb2JqZWN0LT50eXBlKCkg
PT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0
aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudDo6SW5pdCByZXN1bHQ7CisgICAgSlNWYWx1ZSBidWJibGVzVmFsdWUgPSBp
c051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYnViYmxlcyIpKTsKKyAgICBpZiAoIWJ1YmJs
ZXNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5idWJibGVzID0gY29udmVy
dDxJRExCb29sZWFuPihzdGF0ZSwgYnViYmxlc1ZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQuYnVi
YmxlcyA9IGZhbHNlOworICAgIEpTVmFsdWUgY2FuY2VsYWJsZVZhbHVlID0gaXNOdWxsT3JVbmRl
ZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgImNhbmNlbGFibGUiKSk7CisgICAgaWYgKCFjYW5jZWxhYmxlVmFs
dWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuY2FuY2VsYWJsZSA9IGNvbnZlcnQ8
SURMQm9vbGVhbj4oc3RhdGUsIGNhbmNlbGFibGVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0LmNh
bmNlbGFibGUgPSBmYWxzZTsKKyAgICBKU1ZhbHVlIGNvbXBvc2VkVmFsdWUgPSBpc051bGxPclVu
ZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAiY29tcG9zZWQiKSk7CisgICAgaWYgKCFjb21wb3NlZFZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmNvbXBvc2VkID0gY29udmVydDxJRExC
b29sZWFuPihzdGF0ZSwgY29tcG9zZWRWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0LmNvbXBvc2Vk
ID0gZmFsc2U7CisgICAgSlNWYWx1ZSBwcm9taXNlVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/
IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnN0YXRlLCAicHJvbWlzZSIpKTsKKyAgICBpZiAoIXByb21pc2VWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CisgICAgICAgIHJlc3VsdC5wcm9taXNlID0gY29udmVydDxJRExQcm9taXNlPElETEFu
eT4+KHN0YXRlLCBwcm9taXNlVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGhyb3dSZXF1aXJlZE1lbWJl
clR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgInByb21pc2UiLCAiVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudEluaXQiLCAiUHJvbWlzZSIpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KyAgICBKU1ZhbHVlIHJlYXNvblZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5l
ZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwg
InJlYXNvbiIpKTsKKyAgICBpZiAoIXJlYXNvblZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAg
ICAgcmVzdWx0LnJlYXNvbiA9IGNvbnZlcnQ8SURMQW55PihzdGF0ZSwgcmVhc29uVmFsdWUpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNl
CisgICAgICAgIHJlc3VsdC5yZWFzb24gPSBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRSZWFzb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworCitjbGFzcyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIHsKKyAgICAgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lO
Rk87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmlu
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0M6OlZNJik7Cit9OworCit1c2luZyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50PjsKKwordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0
ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Cisg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRD
b25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7
CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIHR5cGUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYXV0byBldmVudElu
aXREaWN0ID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6
OkluaXQ+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRvIG9i
amVjdCA9IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZSgqc3RhdGUsIFdURk1vdmUo
dHlwZSksIFdURk1vdmUoZXZlbnRJbml0RGljdCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkp
OworfQorCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNFdmVudDo6Z2V0Q29u
c3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50Ojpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50IikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDIpLCBSZWFkT25seSB8IERvbnRF
bnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5
cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwg
RG9udEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgInBy
b21pc2UiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudFByb21pc2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAicmVhc29uIiwgUmVhZE9ubHkgfCBD
dXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBl
IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKK30KKworY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6c19pbmZvID0geyAiVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KSB9OworCitKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ+JiYgaW1wbCkKKyAgICA6IEpTRXZlbnQoc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKK30KKworSlNPYmplY3QqIEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVj
dCwgSlNFdmVudDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7Cit9CisKK0pTT2JqZWN0
KiBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCo+KHN0YXRlLnZtKCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudFByb21pc2VHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50JiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6YXR0cmlidXRlPGpzVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpSZWplY3RQcm9taXNlPihzdGF0ZSwgdGhpc1ZhbHVlLCAicHJvbWlzZSIpOworfQorCitz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdl
dHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmIHRoaXNP
YmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExQcm9taXNlPElE
TEFueT4+KGltcGwucHJvbWlzZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29uR2V0dGVyKEV4
ZWNTdGF0ZSYsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFz
b24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50Pjo6YXR0cmlidXRlPGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbkdldHRlcj4o
c3RhdGUsIHRoaXNWYWx1ZSwgInJlYXNvbiIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29uR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEFueT4oaW1wbC5yZWFzb24oKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+
dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOworfQorCitib29sIHNldEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKyAgICBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlw
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52
bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7Cit9CisKK0pT
VmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0s
IGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERP
TUNvbnN0cnVjdG9yPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yPih2bSwg
KmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCisj
aWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEg
d2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3Qg
X19pZGVudGlmaWVyKCI/P183VGVzdFByb21pc2VSZWplY3Rpb25FdmVudEBXZWJDb3JlQEA2QkAi
KVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3Jl
MjVUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiYmIGltcGwp
Cit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgdm9pZCogYWN0dWFsVlRh
YmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGltcGwucHRyKCkpKTsKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVyKCI/P183VGVzdFByb21pc2VSZWplY3Rpb25F
dmVudEBXZWJDb3JlQEA2QkAiKSk7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9p
bnRlciA9ICZfWlRWTjdXZWJDb3JlMjVUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RVsyXTsKKyNp
ZiBDT01QSUxFUihDTEFORykKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQor
ICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZh
Y2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoX19pc19wb2x5bW9ycGhpYyhUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50KSwgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgaXMgbm90IHBv
bHltb3JwaGljIik7CisjZW5kaWYKKyNlbmRpZgorICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3Nl
cnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIFRl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9K
UygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgeW91IHRv
IG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBW
VGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9u
CisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiBpbXBsKQoreworICAgIHJldHVy
biB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2M0Y2ZmZDc5Nzk2N2E1
MzJhZDkwZWZiNWI4MTM0NmFmMjJmZTNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5o
CkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNpbmNsdWRlICJKU0V2ZW50LmgiCisjaW5j
bHVkZSAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA6IHB1YmxpYyBKU0V2ZW50IHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNFdmVudDsKKyAgICB1c2luZyBET01XcmFwcGVk
ID0gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDsKKyAgICBzdGF0aWMgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYg
aW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQ+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsK
KyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6
Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHBy
b3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6OkpTVHlwZShKU0V2
ZW50VHlwZSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYgd3JhcHBlZCgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCY+KEJhc2U6OndyYXBwZWQoKSk7CisgICAgfQorcHJvdGVjdGVkOgorICAgIEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudChKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jiwg
UmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0M6OlZNJik7Cit9OworCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYpOworaW5saW5l
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCogaW1wbCkgeyByZXR1
cm4gaW1wbCA/IHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwo
KTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCosIFJlZjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiYmKTsKK2lubGlu
ZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50PiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBn
bG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CisK
K3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50OworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50KjsKK307Cit0ZW1wbGF0ZTw+IFRlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQ6OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6
SW5pdD4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOworCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NTZhOTQ5MWFkN2E1MTE3YzU4YTE3YTFmODg4NzUwZWFmYjg3YzkxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIHR5cGUsIFRl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRJbml0IGV2ZW50SW5pdERpY3QpLAorICAgIENvbnN0cnVj
dG9yQ2FsbFdpdGg9U2NyaXB0U3RhdGUsCisgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCitd
IGludGVyZmFjZSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IDogRXZlbnQgeworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBQcm9taXNlPGFueT4gcHJvbWlzZTsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgYW55IHJlYXNvbjsKK307CisKK2RpY3Rpb25hcnkgVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dEluaXQgOiBFdmVudEluaXQgeworICAgIHJlcXVpcmVkIFByb21pc2U8YW55PiBwcm9taXNlOwor
ICAgIGFueSByZWFzb247Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRleCAwYjA2Y2U5NzcyODNi
NzZkMzE1NTFlYjg5OGUyNmJkNDE4OWViZTUyLi44MTM0MDNhZTc4ZDIyZTM5MGE2OTc2MGVmOTQ3
NjM2YTQ2Y2UyYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtMjcsNyArMjcsNyBAQAogCiAj
aW5jbHVkZSAiQ1NTRm9udEZhY2UuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCi0j
aW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
QEAgLTczLDcgKzczLDcgQEAgY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxGb250RmFjZT4sIHByaXZhdGUgQ1NTRm9udEZhY2U6OkNsaWVudAogICAgIGVudW0gY2xhc3Mg
TG9hZFN0YXR1cyB7IFVubG9hZGVkLCBMb2FkaW5nLCBMb2FkZWQsIEVycm9yIH07CiAgICAgTG9h
ZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsKIAotICAgIHVzaW5nIFByb21pc2UgPSBET01Qcm9taXNl
PElETEludGVyZmFjZTxGb250RmFjZT4+OworICAgIHVzaW5nIFByb21pc2UgPSBET01Qcm9taXNl
RGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZvbnRGYWNlPj47CiAgICAgc3RkOjpvcHRpb25hbDxQcm9t
aXNlPiYgcHJvbWlzZSgpIHsgcmV0dXJuIG1fcHJvbWlzZTsgfQogICAgIHZvaWQgcmVnaXN0ZXJM
b2FkZWQoUHJvbWlzZSYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCBmYThmZTJh
MWM4MzkwM2UyMzVkOGNiZjQ5OGZkY2QyYjNhNzg3ZGE2Li5lODRkMDk1ZWNjYmRhYjAwNzg2ODAx
NGIyMzg2MjIwNDJjZTEzOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtMjgsNyAr
MjgsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNTU0ZvbnRG
YWNlU2V0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ2LDE0ICs0NiwxNCBAQCBjbGFzcyBGb250RmFjZVNldCBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlU2V0PiwgcHJpdmF0ZSBDU1NGb250RmFjZVNldAogICAg
IGJvb2wgcmVtb3ZlKEZvbnRGYWNlJik7CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgdXNpbmcg
TG9hZFByb21pc2UgPSBET01Qcm9taXNlPElETFNlcXVlbmNlPElETEludGVyZmFjZTxGb250RmFj
ZT4+PjsKKyAgICB1c2luZyBMb2FkUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1
ZW5jZTxJRExJbnRlcmZhY2U8Rm9udEZhY2U+Pj47CiAgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmlu
ZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBMb2FkUHJvbWlzZSYmKTsKICAgICBFeGNlcHRp
b25Pcjxib29sPiBjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCk7
CiAKICAgICBlbnVtIGNsYXNzIExvYWRTdGF0dXMgeyBMb2FkaW5nLCBMb2FkZWQgfTsKICAgICBM
b2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCi0gICAgdXNpbmcgUmVhZHlQcm9taXNlID0gRE9N
UHJvbWlzZTxJRExJbnRlcmZhY2U8Rm9udEZhY2VTZXQ+PjsKKyAgICB1c2luZyBSZWFkeVByb21p
c2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZvbnRGYWNlU2V0Pj47CiAgICAg
dm9pZCByZWdpc3RlclJlYWR5KFJlYWR5UHJvbWlzZSYmKTsKIAogICAgIENTU0ZvbnRGYWNlU2V0
JiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmgKaW5kZXggMTEyMDk3YjFjMjgzZjhjMDg0NDdmMWQwYWMzMTVm
ZmM2ZTNhMWIyYy4uZWZkZmMyNDYyNjg2YmRlNjc1NjRhZDRiZmE1MjgwYmI5ODNkMDYzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaApAQCAtMjUsNyArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IGEzNjhj
YzU4ZGVmNjNkMjdjYzQyOGRiMDYwNWVhZjkxZTE0YTk4NGIuLmM3ODc1NGUyNDk3YjA1NGRkMmUy
ZDQzYjQ2NDNiZTgwNTI1N2FmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9t
aXNlUmVqZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9taXNlUmVq
ZWN0aW9uRXZlbnQuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpQcm9taXNlUmVqZWN0aW9uRXZlbnQoRXhlY1N0YXRlJiBz
dGF0ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwg
SXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1Ry
dXN0ZWQpCi0gICAgLCBtX3Byb21pc2Uoc3RhdGUudm0oKSwgaW5pdGlhbGl6ZXIucHJvbWlzZSkK
KyAgICAsIG1fcHJvbWlzZSgqaW5pdGlhbGl6ZXIucHJvbWlzZSkKICAgICAsIG1fcmVhc29uKHN0
YXRlLnZtKCksIGluaXRpYWxpemVyLnJlYXNvbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
cm9taXNlUmVqZWN0aW9uRXZlbnQuaAppbmRleCAwZmIxYTRjMGEwNjE5N2Q0M2MwMDZmYmM3MzA0
Nzc0ZmIzMTM3ZTcyLi43YmEwMzZhNTJkMThlYmQ3Y2RhMDFhYmI4ZmY0OTUxOGQzY2I1ZjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rpb25FdmVudC5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiSlNE
T01Qcm9taXNlLmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzMsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQcm9taXNl
UmVqZWN0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgogICAgIHN0cnVj
dCBJbml0IDogRXZlbnRJbml0IHsKLSAgICAgICAgSlNDOjpKU1ZhbHVlIHByb21pc2U7CisgICAg
ICAgIFJlZlB0cjxET01Qcm9taXNlPiBwcm9taXNlOwogICAgICAgICBKU0M6OkpTVmFsdWUgcmVh
c29uOwogICAgIH07CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xhc3MgUHJvbWlzZVJlamVjdGlvbkV2
ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIAogICAgIHZpcnR1YWwgflByb21pc2VSZWplY3Rp
b25FdmVudCgpOwogCi0gICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBjb25zdCB7IHJldHVybiBt
X3Byb21pc2UuZ2V0KCk7IH0KKyAgICBET01Qcm9taXNlJiBwcm9taXNlKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9taXNlLmdldCgpOyB9CiAgICAgSlNDOjpKU1ZhbHVlIHJlYXNvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVhc29uLmdldCgpOyB9CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVy
ZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFByb21pc2VSZWplY3Rpb25FdmVudEludGVy
ZmFjZVR5cGU7IH0KQEAgLTUyLDcgKzUzLDkgQEAgY2xhc3MgUHJvbWlzZVJlamVjdGlvbkV2ZW50
IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIHByaXZhdGU6CiAgICAgUHJvbWlzZVJlamVjdGlvbkV2
ZW50KEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElz
VHJ1c3RlZCk7CiAKLSAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fcHJvbWlzZTsKKyAg
ICAvLyBGSVhNRTogRE9NUHJvbWlzZSdzIGhvbGRpbmcgb2JqZWN0IHdpbGwgYmUgbWlzc2VkIGlm
IHRoZSB3cmFwcGVyIHdvcmxkIGlzIGRlc3RydWN0ZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTQ4NAorICAgIFJlZjxET01Qcm9taXNlPiBtX3By
b21pc2U7CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX3JlYXNvbjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcAppbmRleCA1ZDFm
OTI0ZTA4YjhhNWNjNTI0YmU1ZTYzODQ0OGYwZThmODUzYTY5Li4zYWNhNzVmNjQzMTRlMTU1Y2E3
N2YwMWFjOTZjOGJmZjczNGNmNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVq
ZWN0ZWRQcm9taXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlamVjdGVk
UHJvbWlzZVRyYWNrZXIuY3BwCkBAIC01MywzMyArNTMsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVqZWN0ZWRQcm9taXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWpl
Y3RlZFByb21pc2UpOwogcHVibGljOgotICAgIFJlamVjdGVkUHJvbWlzZShWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSYgcHJvbWlzZSkKLSAgICAgICAg
OiBtX2dsb2JhbE9iamVjdCh2bSwgJmdsb2JhbE9iamVjdCkKLSAgICAgICAgLCBtX3Byb21pc2Uo
dm0sICZwcm9taXNlKQorICAgIFJlamVjdGVkUHJvbWlzZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBKU1Byb21pc2UmIHByb21pc2UpCisgICAgICAgIDogbV9wcm9taXNlKERPTVBy
b21pc2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHByb21pc2UpKQogICAgIHsKICAgICB9CiAKICAg
ICBSZWplY3RlZFByb21pc2UoUmVqZWN0ZWRQcm9taXNlJiYpID0gZGVmYXVsdDsKIAotICAgIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKQorICAgIERPTVByb21pc2UmIHByb21pc2Uo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICptX2dsb2JhbE9iamVjdC5nZXQoKTsKLSAgICB9Ci0K
LSAgICBKU1Byb21pc2UmIHByb21pc2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICptX3Byb21p
c2UuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX3Byb21pc2UuZ2V0KCk7CiAgICAgfQogCiBwcml2
YXRlOgotICAgIFN0cm9uZzxKU0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7Ci0gICAg
U3Ryb25nPEpTUHJvbWlzZT4gbV9wcm9taXNlOworICAgIFJlZjxET01Qcm9taXNlPiBtX3Byb21p
c2U7CiB9OwogCiBjbGFzcyBVbmhhbmRsZWRQcm9taXNlIDogcHVibGljIFJlamVjdGVkUHJvbWlz
ZSB7CiBwdWJsaWM6Ci0gICAgVW5oYW5kbGVkUHJvbWlzZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSYgcHJvbWlzZSwgUmVmPFNjcmlwdENhbGxTdGFj
az4mJiBzdGFjaykKLSAgICAgICAgOiBSZWplY3RlZFByb21pc2Uodm0sIGdsb2JhbE9iamVjdCwg
cHJvbWlzZSkKKyAgICBVbmhhbmRsZWRQcm9taXNlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QsIEpTUHJvbWlzZSYgcHJvbWlzZSwgUmVmPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFjaykK
KyAgICAgICAgOiBSZWplY3RlZFByb21pc2UoZ2xvYmFsT2JqZWN0LCBwcm9taXNlKQogICAgICAg
ICAsIG1fc3RhY2soV1RGTW92ZShzdGFjaykpCiAgICAgewogICAgIH0KQEAgLTExNiwxNyArMTA5
LDE5IEBAIHZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlzZVJlamVjdGVkKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0CiB7CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3RoZS1ob3N0cHJvbWlzZXJl
amVjdGlvbnRyYWNrZXItaW1wbGVtZW50YXRpb24KIAotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
Ci0gICAgSlNWYWx1ZSByZWFzb24gPSBwcm9taXNlLnJlc3VsdCh2bSk7Ci0gICAgbV9hYm91dFRv
QmVOb3RpZmllZFJlamVjdGVkUHJvbWlzZXMuYXBwZW5kKFVuaGFuZGxlZFByb21pc2UgeyB2bSwg
Z2xvYmFsT2JqZWN0LCBwcm9taXNlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGcm9tUmVhc29uKHN0
YXRlLCByZWFzb24pIH0pOworICAgIEpTVmFsdWUgcmVhc29uID0gcHJvbWlzZS5yZXN1bHQoc3Rh
dGUudm0oKSk7CisgICAgbV9hYm91dFRvQmVOb3RpZmllZFJlamVjdGVkUHJvbWlzZXMuYXBwZW5k
KFVuaGFuZGxlZFByb21pc2UgeyBnbG9iYWxPYmplY3QsIHByb21pc2UsIGNyZWF0ZVNjcmlwdENh
bGxTdGFja0Zyb21SZWFzb24oc3RhdGUsIHJlYXNvbikgfSk7CiB9CiAKLXZvaWQgUmVqZWN0ZWRQ
cm9taXNlVHJhY2tlcjo6cHJvbWlzZUhhbmRsZWQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBwcm9taXNlKQordm9pZCBSZWplY3Rl
ZFByb21pc2VUcmFja2VyOjpwcm9taXNlSGFuZGxlZChFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3RoZS1ob3N0
cHJvbWlzZXJlamVjdGlvbnRyYWNrZXItaW1wbGVtZW50YXRpb24KIAogICAgIGJvb2wgcmVtb3Zl
ZCA9IG1fYWJvdXRUb0JlTm90aWZpZWRSZWplY3RlZFByb21pc2VzLnJlbW92ZUZpcnN0TWF0Y2hp
bmcoWyZdIChVbmhhbmRsZWRQcm9taXNlJiB1bmhhbmRsZWRQcm9taXNlKSB7Ci0gICAgICAgIHJl
dHVybiAmdW5oYW5kbGVkUHJvbWlzZS5wcm9taXNlKCkgPT0gJnByb21pc2U7CisgICAgICAgIGF1
dG8mIGRvbVByb21pc2UgPSB1bmhhbmRsZWRQcm9taXNlLnByb21pc2UoKTsKKyAgICAgICAgaWYg
KGRvbVByb21pc2UuaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIGRvbVByb21pc2UucHJvbWlzZSgpID09ICZwcm9taXNlOwogICAgIH0pOwog
ICAgIGlmIChyZW1vdmVkKQogICAgICAgICByZXR1cm47CkBAIC0xMzQsOSArMTI5LDcgQEAgdm9p
ZCBSZWplY3RlZFByb21pc2VUcmFja2VyOjpwcm9taXNlSGFuZGxlZChFeGVjU3RhdGUmIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCYKICAgICBpZiAoIW1fb3V0c3RhbmRpbmdSZWplY3RlZFByb21p
c2VzLnJlbW92ZSgmcHJvbWlzZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZNJiB2bSA9IHN0
YXRlLnZtKCk7Ci0KLSAgICBtX2NvbnRleHQucG9zdFRhc2soW3RoaXMsIHJlamVjdGVkUHJvbWlz
ZSA9IFJlamVjdGVkUHJvbWlzZSB7IHZtLCBnbG9iYWxPYmplY3QsIHByb21pc2UgfV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX2NvbnRleHQucG9zdFRhc2soW3Ro
aXMsIHJlamVjdGVkUHJvbWlzZSA9IFJlamVjdGVkUHJvbWlzZSB7IGdsb2JhbE9iamVjdCwgcHJv
bWlzZSB9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICByZXBv
cnRSZWplY3Rpb25IYW5kbGVkKFdURk1vdmUocmVqZWN0ZWRQcm9taXNlKSk7CiAgICAgfSk7CiB9
CkBAIC0xNjIsMTUgKzE1NSwxOCBAQCB2b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9y
dFVuaGFuZGxlZFJlamVjdGlvbnMoVmVjdG9yPFVuaGFuZGxlZFByb21pc2U+JgogICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCiAgICAgZm9yIChhdXRvJiB1bmhhbmRsZWRQcm9taXNl
IDogdW5oYW5kbGVkUHJvbWlzZXMpIHsKLSAgICAgICAgRXhlY1N0YXRlJiBzdGF0ZSA9ICp1bmhh
bmRsZWRQcm9taXNlLmdsb2JhbE9iamVjdCgpLmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgYXV0byYg
cHJvbWlzZSA9IHVuaGFuZGxlZFByb21pc2UucHJvbWlzZSgpOworICAgICAgICBSZWY8RE9NUHJv
bWlzZT4gZG9tUHJvbWlzZSA9IHVuaGFuZGxlZFByb21pc2UucHJvbWlzZSgpOworICAgICAgICBp
ZiAoZG9tUHJvbWlzZS0+aXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBFeGVjU3RhdGUmIHN0YXRlID0gKmRvbVByb21pc2UtPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCk7CisgICAgICAgIGF1dG8mIHByb21pc2UgPSAqZG9tUHJvbWlzZS0+cHJvbWlzZSgp
OwogCiAgICAgICAgIGlmIChwcm9taXNlLmlzSGFuZGxlZCh2bSkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQgaW5pdGlhbGl6ZXI7
CiAgICAgICAgIGluaXRpYWxpemVyLmNhbmNlbGFibGUgPSB0cnVlOwotICAgICAgICBpbml0aWFs
aXplci5wcm9taXNlID0gJnByb21pc2U7CisgICAgICAgIGluaXRpYWxpemVyLnByb21pc2UgPSBk
b21Qcm9taXNlLmNvcHlSZWYoKTsKICAgICAgICAgaW5pdGlhbGl6ZXIucmVhc29uID0gcHJvbWlz
ZS5yZXN1bHQodm0pOwogCiAgICAgICAgIGF1dG8gZXZlbnQgPSBQcm9taXNlUmVqZWN0aW9uRXZl
bnQ6OmNyZWF0ZShzdGF0ZSwgZXZlbnROYW1lcygpLnVuaGFuZGxlZHJlamVjdGlvbkV2ZW50LCBp
bml0aWFsaXplcik7CkBAIC0xNzgsNyArMTc0LDcgQEAgdm9pZCBSZWplY3RlZFByb21pc2VUcmFj
a2VyOjpyZXBvcnRVbmhhbmRsZWRSZWplY3Rpb25zKFZlY3RvcjxVbmhhbmRsZWRQcm9taXNlPiYK
ICAgICAgICAgYm9vbCBuZWVkc0RlZmF1bHRBY3Rpb24gPSB0YXJnZXQtPmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOwogCiAgICAgICAgIGlmIChuZWVkc0RlZmF1bHRBY3Rpb24pCi0gICAgICAgICAgICBt
X2NvbnRleHQucmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbihzdGF0ZSwgdW5oYW5kbGVk
UHJvbWlzZS5wcm9taXNlKCksIHVuaGFuZGxlZFByb21pc2UuY2FsbFN0YWNrKCkpOworICAgICAg
ICAgICAgbV9jb250ZXh0LnJlcG9ydFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24oc3RhdGUsIHBy
b21pc2UsIHVuaGFuZGxlZFByb21pc2UuY2FsbFN0YWNrKCkpOwogCiAgICAgICAgIGlmICghcHJv
bWlzZS5pc0hhbmRsZWQodm0pKQogICAgICAgICAgICAgbV9vdXRzdGFuZGluZ1JlamVjdGVkUHJv
bWlzZXMuc2V0KCZwcm9taXNlLCAmcHJvbWlzZSk7CkBAIC0xOTIsMTEgKzE4OCwxNiBAQCB2b2lk
IFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9ydFJlamVjdGlvbkhhbmRsZWQoUmVqZWN0ZWRQ
cm9taXNlJiYgcmVqZWN0ZWRQcgogICAgIFZNJiB2bSA9IG1fY29udGV4dC52bSgpOwogICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCi0gICAgRXhlY1N0YXRlJiBzdGF0ZSA9ICpyZWpl
Y3RlZFByb21pc2UuZ2xvYmFsT2JqZWN0KCkuZ2xvYmFsRXhlYygpOworICAgIFJlZjxET01Qcm9t
aXNlPiBkb21Qcm9taXNlID0gcmVqZWN0ZWRQcm9taXNlLnByb21pc2UoKTsKKyAgICBpZiAoZG9t
UHJvbWlzZS0+aXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhlY1N0YXRl
JiBzdGF0ZSA9ICpkb21Qcm9taXNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAg
IGF1dG8mIHByb21pc2UgPSAqZG9tUHJvbWlzZS0+cHJvbWlzZSgpOwogCiAgICAgUHJvbWlzZVJl
amVjdGlvbkV2ZW50OjpJbml0IGluaXRpYWxpemVyOwotICAgIGluaXRpYWxpemVyLnByb21pc2Ug
PSAmcmVqZWN0ZWRQcm9taXNlLnByb21pc2UoKTsKLSAgICBpbml0aWFsaXplci5yZWFzb24gPSBy
ZWplY3RlZFByb21pc2UucHJvbWlzZSgpLnJlc3VsdChzdGF0ZS52bSgpKTsKKyAgICBpbml0aWFs
aXplci5wcm9taXNlID0gZG9tUHJvbWlzZS5jb3B5UmVmKCk7CisgICAgaW5pdGlhbGl6ZXIucmVh
c29uID0gcHJvbWlzZS5yZXN1bHQodm0pOwogCiAgICAgYXV0byBldmVudCA9IFByb21pc2VSZWpl
Y3Rpb25FdmVudDo6Y3JlYXRlKHN0YXRlLCBldmVudE5hbWVzKCkucmVqZWN0aW9uaGFuZGxlZEV2
ZW50LCBpbml0aWFsaXplcik7CiAgICAgYXV0byB0YXJnZXQgPSBtX2NvbnRleHQuZXJyb3JFdmVu
dFRhcmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
MDY3NzIwN2RlYmFkNTMyYzZiM2YzNzM2OTg2YzViNDZmYTdhYzYwYS4uM2M2OTg5ZTY0ZmRjNGRi
MzRkZmVlM2M5OTc5OWE5NzhjNzM5NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBACiAjaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNET01FcnJv
ci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURl
ZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGFu
Z3VhZ2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlUmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlzZXMoKQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlamVjdFBlbmRpbmdQbGF5UHJvbWlzZXMoRE9NRXJy
b3ImIGVycm9yKQogewotICAgIFZlY3RvcjxET01Qcm9taXNlPHZvaWQ+PiBwZW5kaW5nUGxheVBy
b21pc2VzID0gV1RGTW92ZShtX3BlbmRpbmdQbGF5UHJvbWlzZXMpOworICAgIFZlY3RvcjxET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4+IHBlbmRpbmdQbGF5UHJvbWlzZXMgPSBXVEZNb3ZlKG1fcGVu
ZGluZ1BsYXlQcm9taXNlcyk7CiAKICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBwZW5kaW5nUGxh
eVByb21pc2VzKQogICAgICAgICBwcm9taXNlLnJlamVjdFR5cGU8SURMSW50ZXJmYWNlPERPTUVy
cm9yPj4oZXJyb3IpOwpAQCAtMTAyMiw3ICsxMDIyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZWplY3RQZW5kaW5nUGxheVByb21pc2VzKERPTUVycm9yJiBlcnJvcikKIAogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZXNvbHZlUGVuZGluZ1BsYXlQcm9taXNlcygpCiB7Ci0gICAgVmVjdG9y
PERPTVByb21pc2U8dm9pZD4+IHBlbmRpbmdQbGF5UHJvbWlzZXMgPSBXVEZNb3ZlKG1fcGVuZGlu
Z1BsYXlQcm9taXNlcyk7CisgICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcGVu
ZGluZ1BsYXlQcm9taXNlcyA9IFdURk1vdmUobV9wZW5kaW5nUGxheVByb21pc2VzKTsKIAogICAg
IGZvciAoYXV0byYgcHJvbWlzZSA6IHBlbmRpbmdQbGF5UHJvbWlzZXMpCiAgICAgICAgIHByb21p
c2UucmVzb2x2ZSgpOwpAQCAtMzEzOCw3ICszMTM4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYgcHJlbG9hZCkKICAgICBzZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHByZWxvYWRBdHRyLCBwcmVsb2FkKTsKIH0KIAotdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpwbGF5KERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpwbGF5KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7
CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGxheSglcCkiLCB0aGlzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA5NmUwYTk1ZDY4OGU4MmE0
ZTI3MDk4YmU5YzE1NTQxNTk2NDQxMzAxLi4xOGQ2ZmJmYmQ5ZDVmOTM5ZThiZDA3ZjhlYzZhNzU0
M2JlODk3OTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTMs
NyArOTMsNyBAQCBjbGFzcyBWaWRlb1RyYWNrTGlzdDsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRl
OwogY2xhc3MgV2ViS2l0TWVkaWFLZXlzOwogCi10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRE9N
UHJvbWlzZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CiAK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiB1c2luZyBDdWVJbnRlcnZhbFRyZWUgPSBQT0RJbnRl
cnZhbFRyZWU8TWVkaWFUaW1lLCBUZXh0VHJhY2tDdWUqPjsKQEAgLTIzOCw3ICsyMzgsNyBAQCBj
bGFzcyBIVE1MTWVkaWFFbGVtZW50CiAgICAgYm9vbCBsb29wKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRMb29wKGJvb2wgYik7CiAKLSAgICB2b2lkIHBsYXkoRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAg
ICB2b2lkIHBsYXkoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVz
ZSgpIG92ZXJyaWRlOwpAQCAtODcxLDcgKzg3MSw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQK
ICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9wbGF5ZWRUaW1lUmFuZ2VzOwogICAgIEdlbmVyaWNF
dmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwogCi0gICAgVmVjdG9yPERPTVByb21pc2U8dm9p
ZD4+IG1fcGVuZGluZ1BsYXlQcm9taXNlczsKKyAgICBWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+PiBtX3BlbmRpbmdQbGF5UHJvbWlzZXM7CiAKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRQ
bGF5YmFja1JhdGUgeyAxIH07CiAgICAgZG91YmxlIG1fcmVwb3J0ZWRQbGF5YmFja1JhdGUgeyAx
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
Q29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbW1hbmRCdWZmZXIuaAppbmRleCBiZjExYzNmZjYxOGYxNWE0NzAyNTU5OGFhMmJlZmRlYWVm
OGE3YTczLi5lODNkNjBmODU0OGU3ZDNjYmQ5YTg2NDQ0ZjcwODg3MTBmNjM1NmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5k
QnVmZmVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKLSNpbmNs
dWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBkN2NkOTYwMWJmMzA1N2Y4ZWUyMjIwOWU5
YzMxYWJiM2Q1ZDYxNWYxLi4yNTM4ZGUxY2Q2NTEyMDc5MjU0OTRmMWRiYmIzNjk1ZDE0ZWU4OTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAi
SlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNs
dWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2Uu
aCIKICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgpAQCAtNTczLDcgKzU3Myw3IEBA
IGNsYXNzIEludGVybmFscyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVybmFscz4sICBw
cml2YXRlIENvbnRleHREZXN0cnVjdGlvCiAgICAgdW5zaWduZWQgbG9uZyB0cmFja0F1ZGlvU2Ft
cGxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrQXVkaW9TYW1wbGVDb3VudDsgfQogICAg
IHVuc2lnbmVkIGxvbmcgdHJhY2tWaWRlb1NhbXBsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV90
cmFja1ZpZGVvU2FtcGxlQ291bnQ7IH0KICAgICB2b2lkIG9ic2VydmVNZWRpYVN0cmVhbVRyYWNr
KE1lZGlhU3RyZWFtVHJhY2smKTsKLSAgICB1c2luZyBUcmFja0ZyYW1lUHJvbWlzZSA9IERPTVBy
b21pc2U8SURMSW50ZXJmYWNlPEltYWdlRGF0YT4+OworICAgIHVzaW5nIFRyYWNrRnJhbWVQcm9t
aXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxJbWFnZURhdGE+PjsKICAgICB2
b2lkIGdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKFRyYWNrRnJhbWVQcm9taXNlJiYpOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAwYThhMDQ0MWJjOTAwNjQ2OWVjZjMyYjBiZGQ5MGE1OGU5ZGI5Yzk3
Li41NjJmMjZmMGE3ZTcwOTRlOWQ1ZWVlYWMwYmVkNTdhNGY3ZjM4OWM3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTctMDQtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgSGFuZGxlIElETFByb21pc2U8PiBwcm9wZXJseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vcHJvbWlzZS1yZWpl
Y3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vcHJvbWlzZS1yZWplY3Rpb24t
ZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUuaHRtbDog
QWRkZWQuCisKIDIwMTctMDQtMzAgIEpvYW5tYXJpZSBEaWdncyAgPGpkaWdnc0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtBVEtdIEVtaXQgb2JqZWN0OnN0YXRlLWNoYW5nZWQ6YnVzeSBldmVudCB3
aGVuIGFyaWEtYnVzeSB2YWx1ZSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9k
b20vcHJvbWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1j
b252ZXJzaW9uLXJ1bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21pc2Ut
cmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lvbi1y
dWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGUzOTc3N2MyY2E5MmJiNWQ2NjhlMGYyMTI2
YzJmMjI0NmI1NWVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21p
c2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lv
bi1ydWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IFByb21pc2VSZWplY3Rp
b25FdmVudCBjb25zdHJ1Y3RvciBmb2xsb3dzIFdlYklETCBwcm9taXNlIGNvbnZlcnNpb24gcnVs
ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGV2ZW50LnByb21pc2UgaXMg
YW4gaW5zdGFuY2Ugb2YgUHJvbWlzZQorUEFTUyBldmVudC5yZWFzb24gaXMgIkNhcHB1Y2Npbm8i
CitQQVNTIHZhbHVlIGlzIDQyCitQQVNTIGV2ZW50LnByb21pc2UgaXMgYW4gaW5zdGFuY2Ugb2Yg
UHJvbWlzZQorUEFTUyBldmVudC5wcm9taXNlIGlzIHByb21pc2UKK1BBU1MgZXZlbnQucmVhc29u
IGlzICJDb2NvYSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcHJvbWlzZS1yZWplY3Rpb24t
ZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUuaHRtbCBi
L0xheW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9sbG93
LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMDcwYTM0
OWYwMTc4YWNmZGUwN2JmNTQxYTQ2Y2UwY2MxZTFjMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9kb20vcHJvbWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJp
ZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oJ1Rlc3QgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGNvbnN0cnVjdG9yIGZvbGxvd3MgV2Vi
SURMIHByb21pc2UgY29udmVyc2lvbiBydWxlLicpOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCit2YXIgZXZlbnQgPSBudWxsOwordmFyIHZhbHVlID0gbnVsbDsKK3ZhciBwcm9taXNl
ID0gbnVsbDsKKworZXZlbnQgPSBuZXcgUHJvbWlzZVJlamVjdGlvbkV2ZW50KCJyZWplY3Rpb25o
YW5kbGVkIiwgeworICAgIHByb21pc2U6IDQyLAorICAgIHJlYXNvbjogYENhcHB1Y2Npbm9gCit9
KTsKK3Nob3VsZEJlVHlwZShgZXZlbnQucHJvbWlzZWAsIGBQcm9taXNlYCk7CitzaG91bGRCZShg
ZXZlbnQucmVhc29uYCwgYCJDYXBwdWNjaW5vImApOworZXZlbnQucHJvbWlzZS50aGVuKGZ1bmN0
aW9uICh2KSB7CisgICAgdmFsdWUgPSB2OworICAgIHNob3VsZEJlKGB2YWx1ZWAsIGA0MmApOwor
CisgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSg0Mik7CisgICAgZXZlbnQgPSBuZXcgUHJv
bWlzZVJlamVjdGlvbkV2ZW50KCJyZWplY3Rpb25oYW5kbGVkIiwgeworICAgICAgICBwcm9taXNl
OiBwcm9taXNlLAorICAgICAgICByZWFzb246IGBDb2NvYWAKKyAgICB9KTsKKworICAgIHNob3Vs
ZEJlVHlwZShgZXZlbnQucHJvbWlzZWAsIGBQcm9taXNlYCk7CisgICAgc2hvdWxkQmUoYGV2ZW50
LnByb21pc2VgLCBgcHJvbWlzZWApOworICAgIHNob3VsZEJlKGBldmVudC5yZWFzb25gLCBgIkNv
Y29hImApOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308714</attachid>
            <date>2017-05-01 01:51:43 -0700</date>
            <delta_ts>2017-05-04 05:46:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166752-20170501175142.patch</filename>
            <type>text/plain</type>
            <size>142248</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OGNmOWYxMjAwZGE3Zjc4NmNjMTJjMGMxY2NhNDA3ZTIwOGYwZWEwLi5jMmRiMmYzYTJjMDY4ZmY0
MGQwNGI2YTUxNzg0ZDIzOTk5ZDcxNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNy0wNS0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSlNQcm9taXNlOjpyZXNv
bHZlIHN0YXRpYyBmdW5jdGlvbi4KKyAgICAgICAgVGhpcyBhcHBsaWVzIGBQcm9taXNlLnJlc29s
dmUoKWAgY29udmVyc2lvbiB0byBhIGdpdmVuIHZhbHVlLgorCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnByb21pc2VSZXNvbHZlRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZS5oOgorCiAyMDE3LTA0LTMwICBPbGVrc2FuZHIgU2thY2hrb3YgIDxnc2thY2hr
b3ZAZ21haWwuY29tPgogCiAgICAgICAgIFdlIGluaXRpYWxpemUgZnVuY3Rpb25zIHRvbyBlYXJs
eSBpbiBhbiBldmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTVhOWEyNDJhYWQxY2M4MTBmZjVlNWE3NDE0MzZi
ZDg0OTczYTA2Zi4uMzVkYjVjOGYyNjAzOWJjOTk1NGJmOTZjNmYwY2NkYjM0NjliMmQ1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwMyBAQAorMjAxNy0wNS0wMSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Bl
cmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3
NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgV2ViSURMIFByb21pc2UgdHlwZSBjb252ZXJzaW9uLiBBY2NvcmRp
bmcgdG8gdGhlIHNwZWMsCisgICAgICAgIFByb21pc2UgdGFrZXMgYSB2YWx1ZSBhbmQgY29udmVy
dCBpdCB0byBQcm9taXNlIGJ5IHVzaW5nIFByb21pc2UucmVzb2x2ZSBmdW5jdGlvbi4KKyAgICAg
ICAgV2UgaW1wbGVtZW50IEpTUHJvbWlzZTo6cmVzb2x2ZSBpbiBKU0MgYW5kIHVzZSBpdCBpbiBK
U0RPTUNvbnZlcnRQcm9taXNlLgorCisgICAgICAgIEluIGNvbnZlcnNpb24gcGhhc2UsIHdlIGp1
c3QgY29udmVydCB0aGUgdmFsdWUgdG8gSlNDOjpKU1Byb21pc2UqIGFuZCBob2xkIGl0IGluCisg
ICAgICAgIFByb21pc2VSZWplY3Rpb25FdmVudC4gT24gdGhlIG90aGVyIGhhbmQsIEluIHRoaXMg
cGF0Y2gsIHdlIG5ld2x5IGludHJvZHVjZSBhIG5ldworICAgICAgICB0eXBlIERPTVByb21pc2Ug
YW5kIHVzZSBpdCBpbiBSZWplY3RlZFByb21pc2VUcmFja2VyLiBBbmQgd2UgYWxzbyByZW5hbWUg
dGhlIHByZXZpb3VzCisgICAgICAgIERPTVByb21pc2UgdG8gRE9NUHJvbWlzZURlZmVycmVkIHNp
bmNlIGl0IGlzIGNvcnJlc3BvbmRpbmcgdG8gSlNQcm9taXNlRGVmZXJyZWQuCisgICAgICAgIERP
TVByb21pc2UgaXMgRE9NR3VhcmRlZCBvYmplY3QuIFNvIGl0IGlzIHN0cm9uZ2x5IHJlZmVyZW5j
ZWQgZnJvbSBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIGFuZCBpdCBpcyB3ZWFrbHkg
cmVmZXJlbmNlZCBmcm9tIHRoZSBvYmplY3QgaXRzZWxmLiBUaGlzIGlzIGltcG9ydGFudCBzaW5j
ZSBTdHJvbmc8SlNQcm9taXNlPgorICAgICAgICByZWZlcmVuY2UgaW4gQysrIG9iamVjdCB0aGF0
IGhhcyBhIHdyYXBwZXIgKGluIHRoaXMgY2FzZSwgUHJvbWlzZVJlamVjdGlvbkV2ZW50KSBlYXNp
bHkgY2F1c2VzCisgICAgICAgIGN5Y2xpYyByZWZlcmVuY2UuIFdlIGhvbGQgaXQgYXMgRE9NUHJv
bWlzZSBpbnN0ZWFkIG9mIFN0cm9uZzxKU1Byb21pc2U+IGluIFJlamVjdGVkUHJvbWlzZVRyYWNr
ZXIKKyAgICAgICAgdG8gYnJlYWsgdGhlIGN5Y2xpYyByZWZlcmVuY2UgZWRnZSB3aXRoIHdlYWsg
cmVmZXJlbmNlLgorCisgICAgICAgIEluIHRoZSBtZWFudGltZSwgd2Ugc3RpbGwgdXNlIEpTQzo6
U3Ryb25nPD4gaW4gUHJvbWlzZVJlamVjdGlvbkV2ZW50LiBJdCBsZWFrcyBtZW1vcnkgaWYgcHJv
bWlzZQorICAgICAgICByZWZlcnMgdGhlIHdyYXBwZXIgb2JqZWN0IG9mIFByb21pc2VSZWplY3Rp
b25FdmVudC4gQ3VzdG9tRXZlbnQgYWxzbyBoYXMgdGhlIHNhbWUgcHJvYmxlbS4KKyAgICAgICAg
VGhpcyBpcyBhIGdlbmVyYWwgcHJvYmxlbSB0aGF0IGBhdHRyaWJ1dGUgYW55YCBjYW4gY3JlYXRl
IGN5Y2xpYyByZWZlcmVuY2UuIEFuZCB0aGV5IHNob3VsZCBiZQorICAgICAgICBmaXhlZCBpbiBh
IGRpZmZlcmVudCBwYXRjaC4KKworICAgICAgICBDdXJyZW50bHksIHdlIGRvIG5vdCB0YWtlIHRo
ZSBmb2xsb3dpbmcgYXBwcm9hY2guIGUuZy4gVGhlcmUgaXMgQysrIG9iamVjdCB0aGF0IHJlcHJl
c2VudHMgUHJvbWlzZS4KKyAgICAgICAgQW5kIGl0cyB3cmFwcGVyIG9iamVjdCBpcyBKU1Byb21p
c2UgdGhpbmcuIFdoZW4gZXhwb3NpbmcgdGhlIEMrKyBvYmplY3QsIGl0IHdpbGwgYmUgY29udmVy
dGVkIHRvIGEKKyAgICAgICAgd3JhcHBlciBvYmplY3QuIFdlIGRvIG5vdCB0YWtlIHRoaXMgYXBw
cm9hY2ggYmVjYXVzZSBQcm9taXNlUmVqZWN0aW9uRXZlbnQgY2FuIHRha2UgdXNlci1wcm92aWRl
ZCBwcm9taXNlLgorICAgICAgICBGb3IgZXhhbXBsZSwgdXNlcnMgY2FuIGNyZWF0ZSBQcm9taXNl
UmVqZWN0aW9uRXZlbnQgaW4gYSBmb3JtCisgICAgICAgIGBuZXcgUHJvbWlzZVJlamVjdGlvbkV2
ZW50KCIuLi4iLCB7IHByb21pc2U6IHByb21pc2UgfSlgLiBJbiB0aGlzIGNhc2UsIGBldmVudC5w
cm9taXNlID09PSBwcm9taXNlYAorICAgICAgICBpcyByZXF1aXJlZC4gQW5kIHRoaXMgaXMgbm90
IHN1aXRhYmxlIGZvciB0aGUgYWJvdmUgQysrIG9iamVjdCBtb2RlbC4KKworICAgICAgICBMYXJn
ZSBwYXJ0IG9mIHRoaXMgcGF0Y2ggaXMgbWVjaGFuaWNhbCBvbmUgdG8gcmVwbGFjZSBET01Qcm9t
aXNlIHdpdGggRE9NUHJvbWlzZURlZmVycmVkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5oOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0RP
TVdpbmRvd0ZldGNoLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9Xb3Jr
ZXJHbG9iYWxTY29wZUZldGNoLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQ
ZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb246OnJlcGxhY2VUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50
UGVlckNvbm5lY3Rpb246OnJlcGxhY2VUcmFja1Rhc2spOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2FuZGlkYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAo
V2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjplbmRPZkljZUNhbmRpZGF0ZXMpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZFNldExvY2FsRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZFNldFJlbW90ZURl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRB
ZGRJY2VDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmVu
cXVldWVSZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0
aW9uOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnJlcGxhY2VUcmFjayk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlh
UmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVwbGFjZVRyYWNrKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3Vy
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtU291cmNlOjpzdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVNvdXJjZTo6cHVsbCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Db250ZXh0OjphZGRSZWFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6
OnNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c3VzcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9JRExUeXBlcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0Nh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
QmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50UmVnaXN0cnlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dFByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExQcm9taXNlPFQ+Pjo6
Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NvbnZlcnRlcjxJRExQcm9taXNlPFQ+Pjo6
Y29udmVydCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJv
bWlzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnByb21pc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZTo6RE9NUHJvbWlzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZFByb21pc2U6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEZWZlcnJlZFByb21pc2U6OnJlc29sdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlc29sdmVXaXRoQ2FsbGJhY2spOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZWplY3RXaXRoQ2FsbGJhY2sp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpEZWZlcnJlZFBy
b21pc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpkZWZl
cnJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6RE9NUHJv
bWlzZUJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJhc2U6Om9w
ZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6cmVq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VCYXNlOjpyZWplY3RU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VCYXNlOjpwcm9taXNl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnJlc29sdmUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZTx2b2lkPjo6cmVzb2x2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjYWxsUHJvbWlzZUZ1bmN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmJpbmRpbmdQcm9taXNlRnVuY3Rpb25BZGFwdGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwLgorICAgICAg
ICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpwcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlZmVycmVkUHJvbWlzZTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVy
cmVkUHJvbWlzZTo6cmVqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlamVjdFByb21pc2VXaXRo
RXhjZXB0aW9uSWZBbnkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRGVmZXJyZWRQcm9taXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBc0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6ZnVs
ZmlsbFByb21pc2VXaXRoSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpmdWxmaWxsUHJvbWlzZVdp
dGhBcnJheUJ1ZmZlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJy
ZWQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmguCisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6
RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZFByb21pc2U6OnJlamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJl
ZFByb21pc2U6OnJlc29sdmVXaXRoQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRQcm9taXNlOjpyZWplY3RXaXRoQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRQcm9taXNlOjpEZWZlcnJlZFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQ
cm9taXNlOjpkZWZlcnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJyZWRC
YXNlOjpET01Qcm9taXNlRGVmZXJyZWRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21p
c2VEZWZlcnJlZEJhc2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNl
RGVmZXJyZWRCYXNlOjpyZWplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVy
cmVkQmFzZTo6cmVqZWN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJy
ZWRCYXNlOjpwcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VEZWZlcnJlZDo6
cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD46OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbFByb21pc2VGdW5jdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV2ViR1BVQ29tbWFuZEJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6
OkluaXQ+KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFBy
b3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50UHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudDo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudDo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxs
ZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2VHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbkdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6
OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6d3JhcHBlZCk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9k
dWxlU2NyaXB0TG9hZGVyQ2xpZW50LmguCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmg6CisgICAg
ICAgICogY3NzL0ZvbnRGYWNlU2V0Lmg6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdp
c3RyeS5oOgorICAgICAgICAqIGRvbS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQuaDoKKyAgICAgICAg
KiBkb20vUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWpl
Y3RlZFByb21pc2U6OlJlamVjdGVkUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWplY3Rl
ZFByb21pc2U6OnByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6VW5oYW5kbGVkUHJvbWlzZTo6
VW5oYW5kbGVkUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWplY3RlZFByb21pc2VUcmFj
a2VyOjpwcm9taXNlUmVqZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNl
VHJhY2tlcjo6cHJvbWlzZUhhbmRsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9t
aXNlVHJhY2tlcjo6cmVwb3J0VW5oYW5kbGVkUmVqZWN0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWplY3RlZFByb21pc2VUcmFja2VyOjpyZXBvcnRSZWplY3Rpb25IYW5kbGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlamVjdGVkUHJvbWlzZTo6Z2xvYmFsT2JqZWN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6cmVqZWN0UGVuZGluZ1BsYXlQcm9taXNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXNvbHZlUGVuZGluZ1BsYXlQcm9taXNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5KToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29t
bWFuZEJ1ZmZlci5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisKIDIwMTctMDUt
MDEgIEpvYW5tYXJpZSBEaWdncyAgPGpkaWdnc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFYOiBB
Y2Nlc3NpYmlsaXR5VGFibGU6OmFyaWFSb3dDb3VudCgpIGFuZCBhcmlhQ29sdW1uQ291bnQoKSBz
aG91bGQgbm90IHJldHVybiAtMSB1bmxlc3MgdGhhdCBpcyB0aGUgYXV0aG9yLXByb3ZpZGVkIHZh
bHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggYTRhYjg3YzRkYmQxOTMxMmNiOTlhY2E4NjZiZGJkZDIyNTk2NmU2NC4uNTI3ZjMy
YjU1NDUxYWRhYTU1MzQwMWVlODE1MzliOTQyZDNlYmEyZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDI4LDYgKzQyOCwxMSBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihpbml0LnZtLCBpdGVyYXRvckhlbHBl
cnNQZXJmb3JtSXRlcmF0aW9uQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOwog
ICAgICAgICB9KTsKIAorICAgIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi5pbml0TGF0ZXIoCisg
ICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKGluaXQudm0s
IHByb21pc2VDb25zdHJ1Y3RvclJlc29sdmVDb2RlR2VuZXJhdG9yKGluaXQudm0pLCBpbml0Lm93
bmVyKSk7CisgICAgICAgIH0pOworCiAgICAgbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9u
LnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBwcm9t
aXNlT3BlcmF0aW9uc05ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUdlbmVyYXRvcih2bSksIHRoaXMp
KTsKICAgICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2bSwg
dGhpcywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5cGVFcnJvckdl
dHRlclNldHRlci5pbml0TGF0ZXIoCkBAIC0xMTg3LDYgKzExOTIsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24udmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uLnZpc2l0KHZp
c2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLnZpc2l0
KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi52aXNp
dCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdFByb3Rv
VmFsdWVPZkZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX25ld1By
b21pc2VDYXBhYmlsaXR5RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggN2U5ZmVjYjcxYWIx
M2EwZWIxOGY0MjdkZTM4ODA1ODEwM2ViZTU4ZS4uYjMzZDZkMzU2NDJhZTMzZmRlMTYyNWI4YmQ4
NzhmYjM4MGZjOTc4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCkBAIC0yNjUsNiArMjY1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsKICAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1faW5pdGlhbGl6ZVByb21p
c2VGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+
IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uOwogICAgIFdyaXRlQmFy
cmllcjxKU0Z1bmN0aW9uPiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uOwogICAgIFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPiBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb247CiAgICAg
V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9s
RnVuY3Rpb247CkBAIC01MTUsNiArNTE2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90
b1ZhbHVlc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogaW5pdGlhbGl6ZVByb21pc2VGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi5nZXQodGhpcyk7
IH0KICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRvclByb3RvY29sRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi5nZXQodGhpcyk7IH0KKyAgICBKU0Z1bmN0
aW9uKiBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlUmVz
b2x2ZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIG9iamVjdFByb3RvVmFs
dWVPZkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlv
bi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uZ2V0KCk7IH0K
ICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24u
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCmlu
ZGV4IGE4M2QyYmY1MmY3NmE4NGZlYTcwY2RiMTQ2MzdmOWUyMDc0ZjIzMWIuLmQ3NGZhYTA4MTc1
NTY2ZjgwZjlkNGNkZDIwYTA4YzllNjc3MmE4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlLmNwcApAQCAtOTIsNCArOTIsMjMgQEAgYm9vbCBKU1Byb21pc2U6
OmlzSGFuZGxlZChWTSYgdm0pIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlLmFzQm9vbGVhbigpOwog
fQogCitKU1Byb21pc2UqIEpTUHJvbWlzZTo6cmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNGdW5jdGlvbiogcHJvbWlz
ZVJlc29sdmVGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+cHJvbWlzZVJlc29sdmVGdW5jdGlvbigp
OworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpn
ZXRDYWxsRGF0YShwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJU
KGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGNhbGwoZXhlYywgcHJvbWlzZVJlc29sdmVGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBnbG9iYWxPYmplY3QtPnByb21pc2VDb25zdHJ1Y3RvcigpLCBhcmd1bWVudHMpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIEFTU0VSVChwcm9taXNl
LmluaGVyaXRzKHZtLCBKU1Byb21pc2U6OmluZm8oKSkpOworICAgIHJldHVybiBqc0Nhc3Q8SlNQ
cm9taXNlKj4ocmVzdWx0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCmluZGV4IGM3ZDdkOTljYWE0ZDg2ZDIyYzdmYWI0
MGNjNGYzZDAwNTA0M2JiYzAuLmUxMjk0ZTNmZTA5OTdkZmNjYzFhZDRmZTZiNjczYjU2ZDkzNDg1
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCkBAIC01Miw2
ICs1Miw4IEBAIGNsYXNzIEpTUHJvbWlzZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICAvLyBUaGlzIG1heSByYWlzZSBhIEpTIGV4Y2VwdGlvbi4KICAgICB2b2lkIGluaXRpYWxpemUo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGV4ZWN1dG9yKTsKIAorICAgIHN0
YXRpYyBKU1Byb21pc2UqIHJlc29sdmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKwogcHJv
dGVjdGVkOgogICAgIEpTUHJvbWlzZShWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDBmNjRlMDRkMjk5OTRhZDE1
YWRhNWNkMzIxMzRkNmVjZDg2MmIxNS4uMzllNGViMjM0YmJlYzM1OTQ1MzVmOTQ5ZmMzY2JmODMz
NDAwZDFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNjIsNyArMTE2Miw3IEBAIHNldChX
ZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3Bw
CiAgICAgYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmNwcAogICAgIGJpbmRpbmdzL2pz
L0pTRE9NTWFwTGlrZS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCisgICAg
YmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCiAgICAgYmluZGluZ3MvanMvSlNE
T01TdHJpbmdNYXBDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCmluZGV4IDc0NDk3
OTMwZTNiOWFlODlhNGQzYzNmMGNlYWQwNzI1MDVlODAwNWIuLjYxYTllNWNhMDE1ZGUxZGRlMjhk
YzJhMGZjMDBlMGVmNWEzOTZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTGlua0ljb25Db2xsZWN0b3IuaCIKICNpbmNsdWRl
ICJMaW5rSWNvblR5cGUuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmlu
ZGV4IDBjZTg3NWQ4OTM1ODVlZTAzOWNmYmZkNTZlMmE2YTdjNTJhMjBjZWYuLjA1OTIyNDM5ZTEy
ZjI5MjIxMDgxZTMyYzg3MDZjYWRkYjVmNWIzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMzUsNyAr
MzUsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50
UXVldWUuaCIKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCi0jaW5jbHVkZSAiSlNET01Q
cm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJN
ZWRpYUtleU1lc3NhZ2VUeXBlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9uVHlwZS5oIgog
I2luY2x1ZGUgIk1lZGlhS2V5U3RhdHVzLmgiCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIE1lZGlh
S2V5U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4sIHB1
YmxpYyBFdmVudFRhCiAgICAgdm9pZCBjbG9zZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAg
ICB2b2lkIHJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgIHVzaW5nIENsb3Nl
ZFByb21pc2UgPSBET01Qcm9taXNlPHZvaWQ+OworICAgIHVzaW5nIENsb3NlZFByb21pc2UgPSBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD47CiAgICAgdm9pZCByZWdpc3RlckNsb3NlZFByb21pc2Uo
Q2xvc2VkUHJvbWlzZSYmKTsKIAogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJl
ZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0dXNlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5oCmluZGV4IGExMTNlMjYwMTAwMWVkNjdi
ZjdjYmY4ZGZmNzA1YjEyMzY0MGU1YzYuLjBhM2I2ZTFkNDhjMDY5NzNiZGRkY2Y4OGEzNDUyMTll
NWI3OGYwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5o
IgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmgKaW5kZXggYmQ4MGJkMmM5ODQzYThhZjhkN2RiYWQ1Yjg1MzUyNTdkOTA1
MWFkNS4uOWE1OWQxNzExNGVjM2VkYmE2MTQ3MTcwOThhYTJkNGZiZmUzMDgzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC0z
Miw3ICszMiw3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkdlbmVy
aWNUYXNrUXVldWUuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvblR5cGUuaCIKICNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5oCmlu
ZGV4IDRjMjA0ZTk0MWZmYjZkZjNiMTFlNjM4YWQyMjM3ZGQ1YTc5MzQ5Y2QuLjgxNjVmYWViMWZm
YzZlYWNkZDQwNGQwNWY4YTU3MjczMDI0MGEwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuaApAQCAtMzAsNyArMzAsNyBA
QAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5oCmluZGV4IGIz
ZDE1NzU3YWFkYjMyZTExNTg2MTUwNTNhYzEzNmVlNWRkMmRjOTEuLjEzYmY3NWEyZGM4NGIxZjMy
ODlhYTI0YWUzZDZmOWMxYTRmMTlkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0RPTVdpbmRvd0ZldGNoLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShGRVRD
SF9BUEkpCiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGZlZWE2
ZGNmMTY3NzU3MTVkNmI5YmYyNzE3ZDFkMGJhODUyYTIwYTYuLjgyYjgzOWM2ZGM5MjIzMDdmMzY3
NmM4MzAzN2RjYzgwOGFlNmQ2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1bWVyLmgi
CiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXIuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgotI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAj
aW5jbHVkZSAiVVJMU2VhcmNoUGFyYW1zLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAj
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCA0YTBmYjM5ZjEwZTYwYzJjYzZiMWQ0OThkODE0
ODI0ZmU3OTcyNTQyLi4zOGI3Njg5ZWRlMmU5MWFiN2FlZWJmNzI2MGZiNDQzMGU1YmMzOGQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CkBAIC0zMCw3ICszMCw3IEBACiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCi0jaW5jbHVkZSAi
SlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBmNWE5ZTI3MTcwNjRlMWZj
MjZiYWQ3YjIzM2QyNWE1OWY0MDJjMDEwLi5hOTA2MzdmYmJjZDRmMTUzNDc2MTM1OTExZDE5Nzgy
YjEwMmYxNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBGZXRjaFJlc3BvbnNlIGZpbmFsIDogcHVibGlj
IEZldGNoQm9keU93bmVyIHsKICAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGVycm9yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNo
UmVzcG9uc2U+PiByZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5n
JiB1cmwsIGludCBzdGF0dXMpOwogCi0gICAgdXNpbmcgRmV0Y2hQcm9taXNlID0gRE9NUHJvbWlz
ZTxJRExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+OworICAgIHVzaW5nIEZldGNoUHJvbWlzZSA9
IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+OwogICAgIHN0
YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRjaFJlcXVlc3QmLCBG
ZXRjaFByb21pc2UmJik7CiAKICAgICB2b2lkIGNvbnN1bWUodW5zaWduZWQsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9X
b3JrZXJHbG9iYWxTY29wZUZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL1dv
cmtlckdsb2JhbFNjb3BlRmV0Y2guaAppbmRleCA1YmJiMjhiODg1M2JmMjExYTdkODI4ZTZkODBh
OTE5ZDBlYWVlZmI1Li40NzcwNjlmMzQ0Yjk5ZDRkMmRjZDkyZDkzMmVhYzVhNTE4MzRmODdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL1dvcmtlckdsb2JhbFNjb3Bl
RmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL1dvcmtlckdsb2JhbFNj
b3BlRmV0Y2guaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxFKEZFVENIX0FQSSkKIAot
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggMjg1NWVhNTJkNGVkMzIzY2MyNTgw
OTE0YzdlZTBjYWZhNzcyZWVkOC4uOTNmOTM4MGZlNjY3NzlkMzEyYzgzYzYxMTA1NWI1YTlkN2Mw
OGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5oCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5j
bHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJNZWRpYVRyYWNrQ29uc3Ry
YWludHMuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKQEAgLTU2LDggKzU2LDggQEAgY2xhc3MgTWVkaWFEZXZpY2VzIDogcHVibGlj
IFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2VzPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk8KIAog
ICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCi0gICAgdXNpbmcgUHJvbWlzZSA9IERP
TVByb21pc2U8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj47Ci0gICAgdXNpbmcgRW51bWVyYXRl
RGV2aWNlc1Byb21pc2UgPSBET01Qcm9taXNlPElETFNlcXVlbmNlPElETEludGVyZmFjZTxNZWRp
YURldmljZUluZm8+Pj47CisgICAgdXNpbmcgUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJ
RExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PjsKKyAgICB1c2luZyBFbnVtZXJhdGVEZXZpY2VzUHJv
bWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8TWVkaWFE
ZXZpY2VJbmZvPj4+OwogCiAgICAgc3RydWN0IFN0cmVhbUNvbnN0cmFpbnRzIHsKICAgICAgICAg
VmFyaWFudDxib29sLCBNZWRpYVRyYWNrQ29uc3RyYWludHM+IHZpZGVvOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDZkZmVjOTMyMmY5YjljNDQwOGM4NzYxNWQyMDg3
OTEzNGFiZDIyMTkuLjFkZDAzOWJjYTg3NDQ3NDgwOTkzZTA5MTNiYzUzYzdkOGQwN2Y3N2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dFBlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTY5Niw3ICs2OTYsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBNZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb246OmNyZWF0ZURhdGFDaAogICAgIHJldHVybiBtX21lZGlhRW5kcG9pbnQtPmNyZWF0
ZURhdGFDaGFubmVsSGFuZGxlcihsYWJlbCwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21p
c2UpCit2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0
cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgUlRDUnRwVHJhbnNjZWl2ZXIq
IHRyYW5zY2VpdmVyID0gbWF0Y2hUcmFuc2NlaXZlcihtX3BlZXJDb25uZWN0aW9uLmdldFRyYW5z
Y2VpdmVycygpLCBbJnNlbmRlcl0gKFJUQ1J0cFRyYW5zY2VpdmVyJiBjdXJyZW50KSB7CiAgICAg
ICAgIHJldHVybiAmY3VycmVudC5zZW5kZXIoKSA9PSAmc2VuZGVyOwpAQCAtNzE2LDcgKzcxNiw3
IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2soUlRDUnRw
U2VuZGVyJiBzZW5kZXIsIFJlZjxNZWRpYVN0CiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2tUYXNrKFJUQ1J0cFNlbmRlciYgc2VuZGVy
LCBjb25zdCBTdHJpbmcmIG1pZCwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBE
T01Qcm9taXNlPHZvaWQ+JiBwcm9taXNlKQordm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rp
b246OnJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIGNvbnN0IFN0cmluZyYg
bWlkLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYgcHJvbWlzZSkKIHsKICAgICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAppbmRleCBj
ZTdlYzNlZDc5NDM4NzIzNTBiOGYwN2VhZmE2MzI5YjViMGY3YTY5Li4xZTMxY2Q0NTBmZDI3NjFi
MjAyMzFlMjQ5OWI1MTUyN2UxZWFhM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
LmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uIGZp
bmFsIDogcHVibGljIFBlZXJDb25uZWN0aW9uQmFja2VuZCwgcHVibGljIE0KICAgICBWZWN0b3I8
UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0IGZpbmFsOwogCiAg
ICAgUmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGVSZWNlaXZlcihjb25zdCBTdHJpbmcmIHRyYW5z
Y2VpdmVyTWlkLCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lk
KSBmaW5hbDsKLSAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcGxh
Y2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVu
dChjb25zdCBTdHJpbmcmIGFjdGlvbikgZmluYWw7CiAKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3Mg
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFBlZXJDb25uZWN0aW9u
QmFja2VuZCwgcHVibGljIE0KIAogICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlVGFzayhSVENJY2VD
YW5kaWRhdGUmKTsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrVGFzayhSVENSdHBTZW5kZXImLCBj
b25zdCBTdHJpbmcmIG1pZCwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9p
ZD4mKTsKKyAgICB2b2lkIHJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiwgY29uc3QgU3Ry
aW5nJiBtaWQsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mKTsKIAogICAgIGJvb2wgbG9jYWxEZXNjcmlwdGlvblR5cGVWYWxpZEZvclN0YXRlKFJUQ1Nk
cFR5cGUpIGNvbnN0OwogICAgIGJvb2wgcmVtb3RlRGVzY3JpcHRpb25UeXBlVmFsaWRGb3JTdGF0
ZShSVENTZHBUeXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IGMwZWZlYTFhZDRlOWRlMDRj
YWYxNmMxMWQwMjJkY2Y5MjY3N2JjYTAuLmE0YmE0YmIxNWQ1N2M2N2EzODY5NzdhYmVkN2YwNDhl
Y2FjYjg4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBSZWY8
TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZU1lZGlhQ29uc3RyYWludHNJbXBsKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8CiAgICAgcmV0dXJuIGNyZWF0ZU1lZGlhQ29uc3RyYWludHNJbXBsKGNvbnN0
cmFpbnRzLnZhbHVlKCkpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3Ry
YWludHMoY29uc3Qgc3RkOjpvcHRpb25hbDxNZWRpYVRyYWNrQ29uc3RyYWludHM+JiBjb25zdHJh
aW50cywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6
OmFwcGx5Q29uc3RyYWludHMoY29uc3Qgc3RkOjpvcHRpb25hbDxNZWRpYVRyYWNrQ29uc3RyYWlu
dHM+JiBjb25zdHJhaW50cywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsK
ICAgICBtX3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDRiMjEy
ZGUzMGQ2ZWYyNWY3NDcxYTAwZTg4MmNiNjQzMWNkMWFlMTAuLjYxZWYyODcwNDk3MGEzMDQxNTk5
NTYwNzAzYzBkNTdiYzA2NTlkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRG91YmxlUmFuZ2UuaCIKICNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9uZ1JhbmdlLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVRyYWNrQ29uc3Ry
YWludHMuaCIKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBBY3RpdmVET01PYgogICAg
IFRyYWNrQ2FwYWJpbGl0aWVzIGdldENhcGFiaWxpdGllcygpIGNvbnN0OwogCiAgICAgY29uc3Qg
TWVkaWFUcmFja0NvbnN0cmFpbnRzJiBnZXRDb25zdHJhaW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29uc3RyYWludHM7IH0KLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3Qgc3RkOjpvcHRp
b25hbDxNZWRpYVRyYWNrQ29uc3RyYWludHM+JiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2
b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3Qgc3RkOjpvcHRpb25hbDxNZWRpYVRyYWNrQ29uc3Ry
YWludHM+JiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCiAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZSYgc291cmNlKCkgeyByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2UoKTsgfQogICAgIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBwcml2YXRlVHJhY2soKSB7IHJldHVybiBtX3ByaXZhdGUu
Z2V0KCk7IH0KQEAgLTE1MCw3ICsxNTAsNyBAQCBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBBY3RpdmVET01PYgogICAg
IFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOwogCiAgICAgTWVkaWFUcmFj
a0NvbnN0cmFpbnRzIG1fY29uc3RyYWludHM7Ci0gICAgc3RkOjpvcHRpb25hbDxET01Qcm9taXNl
PHZvaWQ+PiBtX3Byb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4+IG1fcHJvbWlzZTsKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVN0cmVhbVRyYWNrPiBt
X3dlYWtQdHJGYWN0b3J5OwogCiAgICAgYm9vbCBtX2VuZGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcAppbmRleCBiMWQ1M2VkMzQ0YzZjOTJhMGVlMWJiZDQyMTQxOGYyOGM4MmVk
ZTg2Li5iOGFkODlmYzYyZDYxZGIyYjhjZTA2OWJjZGZkZWRiNGEyNzZhZGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
TG9jYWxEZXNjcmlwdGlvblR5cGVWYWxpZEZvclN0YXRlKFJUQ1NkcFR5cGUgdHlwZSwgUlRDU2ln
bmEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpz
ZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgc2Vzc2lvbkRlc2NyaXB0
aW9uLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpzZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgc2Vzc2lvbkRl
c2NyaXB0aW9uLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIEFT
U0VSVCghbV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgpKTsKIApAQCAtMTg2LDcgKzE4Niw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JlbW90ZURlc2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUo
UlRDU2RwVHlwZSB0eXBlLCBSVENTaWduCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uJiBzZXNzaW9uRGVzY3JpcHRpb24sIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQor
dm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbiYgc2Vzc2lvbkRlc2NyaXB0aW9uLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlKQogewogICAgIEFTU0VSVCghbV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgp
KTsKIApAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRS
ZW1vdGVEZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb24mJiBleGNlcHRpb24pCiAgICAgbV9zZXRE
ZXNjcmlwdGlvblByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiBpY2VDYW5kaWRhdGUs
IERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUqIGljZUNhbmRpZGF0ZSwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcGVlckNvbm5lY3Rp
b24uaXNDbG9zZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IDU1NWJmYjg2NWIzM2Ez
YjdjZTZiM2U3ZjhjYWQ1ODdhNzYwNmViZTAuLjFiODVmMDhkNWVkNzJmNjU0ZDk4MjcxODIzN2Ez
NzUyY2UxY2QxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtMzMsNyArMzMsNyBAQAogCiAj
aWYgRU5BQkxFKFdFQl9SVEMpCiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlJUQ1J0cFBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJSVENTaWduYWxpbmdTdGF0ZS5oIgogCkBAIC01Niw4ICs1Niw4IEBAIHN0cnVj
dCBSVENEYXRhQ2hhbm5lbEluaXQ7CiBzdHJ1Y3QgUlRDT2ZmZXJPcHRpb25zOwogCiBuYW1lc3Bh
Y2UgUGVlckNvbm5lY3Rpb24gewotdXNpbmcgU2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSA9IERP
TVByb21pc2U8SURMSW50ZXJmYWNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4+OwotdXNpbmcgU3Rh
dHNQcm9taXNlID0gRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8UlRDU3RhdHNSZXBvcnQ+PjsKK3Vz
aW5nIFNlc3Npb25EZXNjcmlwdGlvblByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50
ZXJmYWNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4+OwordXNpbmcgU3RhdHNQcm9taXNlID0gRE9N
UHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxSVENTdGF0c1JlcG9ydD4+OwogfQogCiB1c2lu
ZyBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tlbmQgPSBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5l
Y3Rpb25CYWNrZW5kPiAoKikoUlRDUGVlckNvbm5lY3Rpb24mKTsKQEAgLTcxLDkgKzcxLDkgQEAg
Y2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKIAogICAgIHZvaWQgY3JlYXRlT2ZmZXIoUlRD
T2ZmZXJPcHRpb25zJiYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNl
JiYpOwogICAgIHZvaWQgY3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmJiwgUGVlckNvbm5l
Y3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21pc2UmJik7Ci0gICAgdm9pZCBzZXRMb2NhbERl
c2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYsIERPTVByb21pc2U8dm9pZD4mJik7Ci0g
ICAgdm9pZCBzZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Q
cm9taXNlPHZvaWQ+JiYpOwotICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0
ZSosIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBzZXRMb2NhbERlc2NyaXB0aW9uKFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2
b2lkIHNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYsIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIGFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5k
aWRhdGUqLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsSGFuZGxl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmKSA9IDA7CiAKQEAgLTk0
LDcgKzk0LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKICAgICB2aXJ0dWFsIFZl
Y3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiBnZXRSZW1vdGVTdHJlYW1zKCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCBSZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZVJlY2VpdmVyKGNvbnN0IFN0
cmluZyYgdHJhbnNjZWl2ZXJNaWQsIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBjb25zdCBTdHJp
bmcmIHRyYWNrSWQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNl
bmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlBZGRlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlSZW1vdmVkVHJhY2soUlRDUnRwU2VuZGVyJikgeyB9CiAKQEAgLTEzNyw3ICsx
MzcsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQgewogICAgIHZpcnR1YWwgdm9pZCBk
b1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZG9BZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRl
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZTx2
b2lkPiYmIHByb21pc2UpIHsgcHJvbWlzZS5yZXNvbHZlKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpIHsg
cHJvbWlzZS5yZXNvbHZlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZG9TdG9wKCkgPSAwOwogCiBw
cm90ZWN0ZWQ6CkBAIC0xNDUsOCArMTQ1LDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5k
IHsKIAogcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFBlZXJDb25uZWN0aW9uOjpTZXNzaW9u
RGVzY3JpcHRpb25Qcm9taXNlPiBtX29mZmVyQW5zd2VyUHJvbWlzZTsKLSAgICBzdGQ6Om9wdGlv
bmFsPERPTVByb21pc2U8dm9pZD4+IG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlOwotICAgIHN0ZDo6
b3B0aW9uYWw8RE9NUHJvbWlzZTx2b2lkPj4gbV9hZGRJY2VDYW5kaWRhdGVQcm9taXNlOworICAg
IHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3NldERlc2NyaXB0aW9u
UHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gbV9h
ZGRJY2VDYW5kaWRhdGVQcm9taXNlOwogCiAgICAgYm9vbCBtX3Nob3VsZEZpbHRlcklDRUNhbmRp
ZGF0ZXMgeyB0cnVlIH07CiAgICAgc3RydWN0IFBlbmRpbmdJQ0VDYW5kaWRhdGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcAppbmRleCA0N2JmNjRlNDQ1MGNkOTdhMDE1NjNjMWFhYzdjMmQ2ZTJiNjllYjk5Li5h
MThjNTY1YWIzZjg3MmY4MTNmNzhkYjA4NmM3MGYzY2JhMzM4NGZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENyZWF0
ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYgb3B0aW9ucywgU2Vzc2lvbkRlCiAgICAgbV9iYWNr
ZW5kLT5jcmVhdGVBbnN3ZXIoV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiB9
CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZFNldExvY2FsRGVzY3JpcHRpb24oUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21p
c2UpCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGlzQ2xvc2VkKCkpIHsKICAgICAgICAgcHJvbWlzZS5y
ZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwpAQCAtMjU2LDcgKzI1Niw3IEBAIFJlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb24+IFJUQ1BlZXJDb25uZWN0aW9uOjpwZW5kaW5nTG9jYWxEZXNjcmlw
dGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmFja2VuZC0+cGVuZGluZ0xvY2FsRGVzY3JpcHRp
b24oKTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkU2V0UmVtb3RlRGVzY3Jp
cHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgRE9NUHJvbWlzZTx2b2lk
PiYmIHByb21pc2UpCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRSZW1vdGVEZXNj
cmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIGlmIChpc0Nsb3NlZCgpKSB7CiAgICAgICAg
IHByb21pc2UucmVqZWN0KElOVkFMSURfU1RBVEVfRVJSKTsKQEAgLTI4MSw3ICsyODEsNyBAQCBS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6cGVuZGluZ1Jl
bW90ZURlc2NyaXB0aW9uKCkgY29ucwogICAgIHJldHVybiBtX2JhY2tlbmQtPnBlbmRpbmdSZW1v
dGVEZXNjcmlwdGlvbigpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRBZGRJ
Y2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiBydGNDYW5kaWRhdGUsIERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlk
YXRlKFJUQ0ljZUNhbmRpZGF0ZSogcnRjQ2FuZGlkYXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlKQogewogICAgIGlmIChpc0Nsb3NlZCgpKSB7CiAgICAgICAgIHByb21pc2Uu
cmVqZWN0KElOVkFMSURfU1RBVEVfRVJSKTsKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIFJUQ1Bl
ZXJDb25uZWN0aW9uOjpmaXJlRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIGRpc3BhdGNoRXZlbnQo
ZXZlbnQpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRyYWNr
VGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRy
YWNrLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246
OmVucXVldWVSZXBsYWNlVHJhY2tUYXNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFT
dHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCiB7CiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbcHJvdGVjdGVk
U2VuZGVyID0gbWFrZVJlZihzZW5kZXIpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgd2l0
aFRyYWNrID0gV1RGTW92ZSh3aXRoVHJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0
YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFNlbmRlci0+c2V0VHJhY2soV1RGTW92ZSh3aXRoVHJh
Y2spKTsKQEAgLTUxMyw3ICs1MTMsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjplbnF1ZXVl
UmVwbGFjZVRyYWNrVGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmPE1lZGlhUwogICAgIH0p
OwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVy
JiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlz
ZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2so
UlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFj
aywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoIXdpdGhU
cmFjaykgewogICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFtwcm90
ZWN0ZWRTZW5kZXIgPSBtYWtlUmVmKHNlbmRlciksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggMDQ3
NDI2YzE0NTMxZTU0MTU4MzI1MjY2NDk5M2EyYzRjYmEwN2ZhMC4uZjVlNWZjMzQ5YWJkNzI3YjBl
YzA4OGI5MTAwZDdjZjZiMGFiNTdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNzYsMTcgKzc2LDE3IEBA
IGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUGVl
ckNvbm5lY3Rpb24+LCBwdWJsaWMgUlRDCiAgICAgdm9pZCBxdWV1ZWRDcmVhdGVPZmZlcihSVENP
ZmZlck9wdGlvbnMmJiwgUGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21pc2Um
Jik7CiAgICAgdm9pZCBxdWV1ZWRDcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmLCBQZWVy
Q29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmKTsKIAotICAgIHZvaWQgcXVl
dWVkU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNl
PHZvaWQ+JiYpOworICAgIHZvaWQgcXVldWVkU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9u
RGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbj4gbG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIFJlZlB0
cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKCkgY29uc3Q7
CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gcGVuZGluZ0xvY2FsRGVzY3JpcHRp
b24oKSBjb25zdDsKIAotICAgIHZvaWQgcXVldWVkU2V0UmVtb3RlRGVzY3JpcHRpb24oUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2b2lkIHF1ZXVlZFNl
dFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmKTsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiByZW1vdGVE
ZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGN1
cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVz
Y3JpcHRpb24+IHBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0OwogCi0gICAgdm9pZCBx
dWV1ZWRBZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiwgRE9NUHJvbWlzZTx2b2lkPiYm
KTsKKyAgICB2b2lkIHF1ZXVlZEFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUqLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAgICBSVENTaWduYWxpbmdTdGF0ZSBzaWduYWxp
bmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbmFsaW5nU3RhdGU7IH0KICAgICBSVENJY2VH
YXRoZXJpbmdTdGF0ZSBpY2VHYXRoZXJpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faWNlR2F0
aGVyaW5nU3RhdGU7IH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBjbGFzcyBSVENQZWVyQ29ubmVjdGlv
biBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVibGljIFJU
QwogICAgIHZvaWQgZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpIHsgbV9iYWNrZW5kLT5k
aXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7IH0KICAgICB2b2lkIGVuYWJsZUlDRUNhbmRp
ZGF0ZUZpbHRlcmluZygpIHsgbV9iYWNrZW5kLT5lbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmco
KTsgfQogCi0gICAgdm9pZCBlbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhSVENSdHBTZW5kZXImLCBS
ZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2b2lkIGVu
cXVldWVSZXBsYWNlVHJhY2tUYXNrKFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAgICB2b2lkIGNsZWFyQ29udHJv
bGxlcigpIHsgbV9jb250cm9sbGVyID0gbnVsbHB0cjsgfQogCkBAIC0xNjYsNyArMTY2LDcgQEAg
Y2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENQZWVy
Q29ubmVjdGlvbj4sIHB1YmxpYyBSVEMKIAogICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IFBl
ZXJDb25uZWN0aW9uQmFja2VuZCB0byBiZSB0aGUgQmFja2VuZAogICAgIC8vIFJUQ1J0cFNlbmRl
cjo6QmFja2VuZAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpIGZpbmFsOworICAgIHZvaWQg
cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7CiAgICAgUlRDUnRwUGFyYW1ldGVycyBn
ZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCB1cGRh
dGVDb25uZWN0aW9uU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAppbmRleCAwMmYyOWIyMDFjMWFhNGFmZGNkYzgyYjYy
N2E0NDkxYTIxMTAxOTk5Li4wZDQ2NjQxMTJkNTliNzBhNDM4Y2VhNWY2MjZlYWI2OTUxMmFiNDBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgUlRDUnRwU2VuZGVyOjpzZXRUcmFjayhS
ZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaykKICAgICBtX3RyYWNrID0gV1RGTW92ZSh0cmFj
ayk7CiB9CiAKLXZvaWQgUlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2soUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQg
UlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0
aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIGlmIChp
c1N0b3BwZWQoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIu
aAppbmRleCAzYzUwN2E2MzI2NTNjZjA0OGQ3MGEzYzFjNzgzZGU1ZmY4NzIyNjQ5Li4zMGE1MTVi
ODlmNmJkMWNkZGE0NmJjYzk0MThiNDA5YjlkY2YyNTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAg
Y2xhc3MgUlRDUnRwU2VuZGVyIDogcHVibGljIFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSB7CiBw
dWJsaWM6CiAgICAgY2xhc3MgQmFja2VuZCB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcGxh
Y2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYpID0gMDsKICAgICAgICAgdmlydHVhbCBSVENSdHBQYXJhbWV0
ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0
dWFsIH5CYWNrZW5kKCkgeyB9CiAgICAgfTsKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgUlRDUnRw
U2VuZGVyIDogcHVibGljIFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSB7CiAgICAgdm9pZCBzZXRU
cmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJik7CiAgICAgdm9pZCBzZXRUcmFja1RvTnVsbCgp
OwogCi0gICAgdm9pZCByZXBsYWNlVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERP
TVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCByZXBsYWNlVHJhY2soUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAogICAgIFJUQ1J0cFBh
cmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCA0ZDJiZmJjNjUy
NTEwZmJkZGNlNzI3NGJkY2U4ZDY1ODkwZjk5ZDViLi45NjEyNWZkNDQzZjA4MzNmNTNlNzMwYjhm
YTNkYmU4YzliNWFiZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1FeGNlcHRpb25Pcjx2b2lkPiBVc2VyTWVkaWFSZXF1ZXN0Ojpz
dGFydChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRp
b0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50
cywgRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmIHByb21pc2UpCitFeGNl
cHRpb25Pcjx2b2lkPiBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFD
b25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJvbWlzZURlZmVycmVkPElE
TEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYgcHJvbWlzZSkKIHsKICAgICBhdXRvKiB1c2VyTWVk
aWEgPSBVc2VyTWVkaWFDb250cm9sbGVyOjpmcm9tKGRvY3VtZW50LnBhZ2UoKSk7CiAgICAgaWYg
KCF1c2VyTWVkaWEpCkBAIC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFVzZXJNZWRp
YVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lZGlhQ29uc3RyYWluCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotVXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdChE
b2N1bWVudCYgZG9jdW1lbnQsIFVzZXJNZWRpYUNvbnRyb2xsZXImIGNvbnRyb2xsZXIsIFJlZjxN
ZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJh
aW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8TWVk
aWFTdHJlYW0+PiYmIHByb21pc2UpCitVc2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0
KERvY3VtZW50JiBkb2N1bWVudCwgVXNlck1lZGlhQ29udHJvbGxlciYgY29udHJvbGxlciwgUmVm
PE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50
ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQogICAgIDogQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIoJmRvY3VtZW50KQogICAgICwgbV9hdWRpb0NvbnN0cmFpbnRzKFdURk1vdmUoYXVk
aW9Db25zdHJhaW50cykpCiAgICAgLCBtX3ZpZGVvQ29uc3RyYWludHMoV1RGTW92ZSh2aWRlb0Nv
bnN0cmFpbnRzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggMzE2ZmVlMTU0OGQ5NTQ0ZTIxOTUyNjdkODY4OGIx
ZWUyMmY3ZGFiMS4uYTNlOTY5MDI5MjY1NzlhZmFkMjgxNDI3OGJlYzZlNzJmOTA2YzhlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1
ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFVzZXJNZWRpYUNvbnRyb2xsZXI7CiAKIGNsYXNzIFVz
ZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyTWVkaWFSZXF1ZXN0PiwgcHJp
dmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4
Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0KERvY3VtZW50JiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBs
PiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0Nv
bnN0cmFpbnRzLCBET01Qcm9taXNlPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOworICAg
IHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydChEb2N1bWVudCYsIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+
JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRp
YVN0cmVhbT4+JiYpOwogCiAgICAgdmlydHVhbCB+VXNlck1lZGlhUmVxdWVzdCgpOwogCkBAIC03
Miw3ICs3Miw3IEBAIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxV
c2VyTWVkaWFSZXF1ZXN0PiwgcHJpdmF0ZSBDb250ZXh0RGVzCiAgICAgV0VCQ09SRV9FWFBPUlQg
RG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgVXNlck1lZGlhUmVx
dWVzdChEb2N1bWVudCYsIFVzZXJNZWRpYUNvbnRyb2xsZXImLCBSZWY8TWVkaWFDb25zdHJhaW50
c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZp
ZGVvQ29uc3RyYWludHMsIERPTVByb21pc2U8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJik7
CisgICAgVXNlck1lZGlhUmVxdWVzdChEb2N1bWVudCYsIFVzZXJNZWRpYUNvbnRyb2xsZXImLCBS
ZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29u
c3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVByb21pc2VEZWZlcnJlZDxJRExJ
bnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKIAogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgp
IGZpbmFsOwogICAgIApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDog
cHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4sIHByaXZhdGUgQ29udGV4dERlcwog
ICAgIFN0cmluZyBtX2FsbG93ZWRBdWRpb0RldmljZVVJRDsKIAogICAgIFVzZXJNZWRpYUNvbnRy
b2xsZXIqIG1fY29udHJvbGxlcjsKLSAgICBET01Qcm9taXNlPElETEludGVyZmFjZTxNZWRpYVN0
cmVhbT4+IG1fcHJvbWlzZTsKKyAgICBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1l
ZGlhU3RyZWFtPj4gbV9wcm9taXNlOwogICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBtX3By
b3RlY3RvcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDMxMDIwNGIyYjNhNTVkMGQ3ZmQ1ZDdiNWFhMzUzMTM4
YzFiMzhlMWIuLjE4MTdlNjVmN2UzMjQ4MjRiNDEyMzYzM2NjZWFiNWJiYTM1MmY1M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cApAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjphZGRSZW1vdGVTdHJlYW0oUmVmPE1lZGlhU3RyZWFtPiYmIG1lZGlhU3RyCiAgICAgbV9yZW1v
dGVTdHJlYW1zLmFwcGVuZChXVEZNb3ZlKG1lZGlhU3RyZWFtKSk7CiB9CiAKLXZvaWQgTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5k
ZXIsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJv
bWlzZSkKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZXBsYWNlVHJhY2so
UlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIEFTU0VSVChzZW5kZXIudHJh
Y2soKSk7CiAgICAgYXV0byogY3VycmVudFRyYWNrID0gc2VuZGVyLnRyYWNrKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IDky
ZTY4YTYzODI0NmJiZmY4M2I5ZTI0YTNiNzU3NWFlNDY2ZGUzZmIuLjU0MzZmOGY4OWI1ODY1NmQw
OWYwMDIyZmU5YjRkNGEwZWE1ZmZiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQgewogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGN1cnJlbnRSZW1vdGVE
ZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRp
b24+IHBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBy
ZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVBy
b21pc2U8dm9pZD4mJikgZmluYWw7CisgICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVy
JiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBm
aW5hbDsKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikg
Y29uc3QgZmluYWw7CiAKICAgICB2b2lkIGVtdWxhdGVQbGF0Zm9ybUV2ZW50KGNvbnN0IFN0cmlu
ZyYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1Tb3VyY2UuaAppbmRleCA5YzE2Y2E4YTA3ZDZlMTdmNmZhMzc5NTViOTY3
ZjdlYjFmZmFhZjAxLi40MTAzYWM4Mjk1MDc2ZTk0OGVjM2M3M2FhYmQyZjVhYTJkODhmMmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1T
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1Tb3VyY2UuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQog
Ci0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKQEAgLTQwLDggKzQwLDggQEAgY2xhc3MgUmVhZGFibGVT
dHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gewog
cHVibGljOgogICAgIHZpcnR1YWwgflJlYWRhYmxlU3RyZWFtU291cmNlKCkgeyB9CiAKLSAgICB2
b2lkIHN0YXJ0KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiwgRE9NUHJvbWlzZTx2
b2lkPiYmKTsKLSAgICB2b2lkIHB1bGwoRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2b2lkIHN0
YXJ0KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiwgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpOworICAgIHZvaWQgcHVsbChET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAg
ICAgdm9pZCBjYW5jZWwoSlNDOjpKU1ZhbHVlKTsKIAogICAgIGJvb2wgaXNQdWxsaW5nKCkgY29u
c3QgeyByZXR1cm4gISFtX3Byb21pc2U7IH0KQEAgLTYzLDExICs2MywxMSBAQCBjbGFzcyBSZWFk
YWJsZVN0cmVhbVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtU291cmNl
PiB7CiAgICAgdmlydHVhbCB2b2lkIGRvQ2FuY2VsKCkgPSAwOwogCiBwcml2YXRlOgotICAgIHN0
ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZTx2b2lkPj4gbV9wcm9taXNlOworICAgIHN0ZDo6b3B0aW9u
YWw8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3Byb21pc2U7CiAgICAgc3RkOjpvcHRpb25h
bDxSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CiB9OwogCi1p
bmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQoUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlciYmIGNvbnRyb2xsZXIsIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQor
aW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KFJlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXImJiBjb250cm9sbGVyLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlKQogewogICAgIEFTU0VSVCghbV9wcm9taXNlKTsKICAgICBtX3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpOwpAQCAtNzcsNyArNzcsNyBAQCBpbmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVh
bVNvdXJjZTo6c3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciYmIGNvbnRybwog
ICAgIGRvU3RhcnQoKTsKIH0KIAotaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1
bGwoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCitpbmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVh
bVNvdXJjZTo6cHVsbChET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAg
IEFTU0VSVCghbV9wcm9taXNlKTsKICAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAxMWRl
MDRhOTk3OWZhZjhkMWZhNzI2NTg5ZjE0NDMwNzZhZTM4NzZkLi4yMzUyOTljYmU1M2RlNzA0MjY2
N2JlOWNiZThlYmJlMTM0ZmRjNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAiR2Vu
ZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKICNpbmNs
dWRlICJIUlRGUGFubmVyLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAi
SlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZl
bnQuaCIKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIEF1ZGlvQ29udGV4dDo6aXNJbml0aWFsaXpl
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNJbml0aWFsaXplZDsKIH0KIAotdm9pZCBBdWRpb0Nv
bnRleHQ6OmFkZFJlYWN0aW9uKFN0YXRlIHN0YXRlLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlz
ZSkKK3ZvaWQgQXVkaW9Db250ZXh0OjphZGRSZWFjdGlvbihTdGF0ZSBzdGF0ZSwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0
YXRpY19jYXN0PHNpemVfdD4oc3RhdGUpOwogICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVS
ZWFjdGlvbnMuc2l6ZSgpKQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpz
ZXRTdGF0ZShTdGF0ZSBzdGF0ZSkKICAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rp
b25zLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPERPTVByb21pc2U8dm9p
ZD4+IHJlYWN0aW9uczsKKyAgICBWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiByZWFj
dGlvbnM7CiAgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4XS5zd2FwKHJlYWN0aW9ucyk7
CiAKICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiByZWFjdGlvbnMpCkBAIC0xMDQwLDcgKzEwNDAs
NyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6ZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKQogICAg
IC0tbV9hY3RpdmVTb3VyY2VDb3VudDsKIH0KIAotdm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmQo
RE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZChE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIGlmIChpc09mZmxpbmVD
b250ZXh0KCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwpA
QCAtMTA2OSw3ICsxMDY5LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmQoRE9NUHJvbWlz
ZTx2b2lkPiYmIHByb21pc2UpCiAgICAgfSk7CiB9CiAKLXZvaWQgQXVkaW9Db250ZXh0OjpyZXN1
bWUoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1l
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGlzT2ZmbGlu
ZUNvbnRleHQoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7
CkBAIC0xMDk4LDcgKzEwOTgsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lKERPTVByb21p
c2U8dm9pZD4mJiBwcm9taXNlKQogICAgIH0pOwogfQogCi12b2lkIEF1ZGlvQ29udGV4dDo6Y2xv
c2UoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIEF1ZGlvQ29udGV4dDo6Y2xvc2Uo
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNPZmZsaW5l
Q29udGV4dCgpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KElOVkFMSURfU1RBVEVfRVJSKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4
IGU0MTE2OGU3ODBjYWQ3NjIzOTg0NTBjYTljMTUzMGRiNmNiZjhlNjMuLjQ5YmIxMzdjYzhhYjIx
ZGQ0Zjk4YmUxNWNjYWRmZjgxODA4MzI1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkF1
ZGlvRGVzdGluYXRpb25Ob2RlLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAi
SlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIu
aCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNl
c3Npb24uaCIKQEAgLTExMSw5ICsxMTEsOSBAQCBjbGFzcyBBdWRpb0NvbnRleHQgOiBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9DbwogICAg
IHVzaW5nIEFjdGl2ZURPTU9iamVjdDo6c3VzcGVuZDsKICAgICB1c2luZyBBY3RpdmVET01PYmpl
Y3Q6OnJlc3VtZTsKIAotICAgIHZvaWQgc3VzcGVuZChET01Qcm9taXNlPHZvaWQ+JiYpOwotICAg
IHZvaWQgcmVzdW1lKERPTVByb21pc2U8dm9pZD4mJik7Ci0gICAgdm9pZCBjbG9zZShET01Qcm9t
aXNlPHZvaWQ+JiYpOworICAgIHZvaWQgc3VzcGVuZChET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
Jik7CisgICAgdm9pZCByZXN1bWUoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZv
aWQgY2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCiAgICAgZW51bSBjbGFzcyBT
dGF0ZSB7IFN1c3BlbmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OwogICAgIFN0
YXRlIHN0YXRlKCkgY29uc3Q7CkBAIC0zMjksNyArMzI5LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0
IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1
ZGlvQ28KICAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CiAgICAg
dm9pZCBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKIAotICAgIHZvaWQgYWRkUmVhY3Rp
b24oU3RhdGUsIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBhZGRSZWFjdGlvbihTdGF0
ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgdXBkYXRlQXV0b21hdGlj
UHVsbE5vZGVzKCk7CiAKICAgICAvLyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQu
CkBAIC0zNjYsNyArMzY2LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURP
TU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ28KICAgICBWZWN0b3I8
QXVkaW9Ob2RlKj4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXM7CiAgICAgLy8gT25seSBh
Y2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgogICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX2Rl
ZmVycmVkRmluaXNoRGVyZWZMaXN0OwotICAgIFZlY3RvcjxWZWN0b3I8RE9NUHJvbWlzZTx2b2lk
Pj4+IG1fc3RhdGVSZWFjdGlvbnM7CisgICAgVmVjdG9yPFZlY3RvcjxET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtTWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R2Vu
ZXJpY0V2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNDE2Y2E0MGI5OTUxODAyOWM4NDQ2
ODcxYTE4NTllZGMxYjkxMmM3Li41NDU5NmFkNDNjYWE1MzY3OWVkMTA4OTYzNjY2YWQ4ZTUxMGUy
ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC02NTI1LDggKzY1MjUsOCBAQAogCQlFMTcyQUY2RDE4MEYyNEM2MDBGQkFEQjkg
LyogQ3J5cHRvQWxnb3JpdGhtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxNzJBRjZCMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0u
Y3BwICovOyB9OwogCQlFMTcyQUY2RTE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGht
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcyQUY2
QzE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmggKi87IH07CiAJCUUxNzJBRjcw
MTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGNkYxODBGMjg5NTAwRkJBREI5IC8qIENy
eXB0b0tleVVzYWdlLmggKi87IH07Ci0JCUUxNzJBRjhGMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RP
TVByb21pc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE3MkFGOEQxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZS5jcHAgKi87IH07Ci0J
CUUxNzJBRjkwMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjhFMTgxMUJDMzcwMEZCQURC
OSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlFMTcyQUY4RjE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVm
ZXJyZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE3MkFGOEQxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCAqLzsg
fTsKKwkJRTE3MkFGOTAxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcyQUY4RTE4
MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTc1QkE5OTFFOEFFMzM4MDA3MTQ1
NEYgLyogR3JpZFBvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRjgxNzQ1MUU4OTdBNTIwMEYyMkNEMCAvKiBHcmlkUG9zaXRpb24uY3Bw
ICovOyB9OwogCQlFMTc5RjBEQTFCOTc3NEZFMDBFRDBBMjcgLyogSW50ZXJuYWxzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3OUYwRDkxQjk3NzRG
RTAwRUQwQTI3IC8qIEludGVybmFscy5tbSAqLzsgfTsKIAkJRTE3QjQ5MTUxNkE5QjA5NDAwMUM4
ODM5IC8qIFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTdCNDkxMzE2QTlCMDkzMDAxQzg4MzkgLyogVHJhbnNpdGlvbkV2
ZW50LmNwcCAqLzsgfTsKQEAgLTY2NTUsNiArNjY1NSw3IEBACiAJCUUzNTY1QjdCMURDMkQ2Qzkw
MDIxN0RCRCAvKiBKU0V2ZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzRFRTQ5RjFEQzJENTc1MDBFQUE5RDMgLyogSlNFdmVudEN1c3Rv
bS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
NTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU4MDJCNTFEQzg0MzU4MDBB
OTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2Rl
Q29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0QwNDk5MzFEQURDMDQ1MDA3MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzN0M4NjUwMUVCNjNFM0Yw
MDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4
Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2
MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVG
MDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0
TW9kdWxlTG9hZGVyLmggKi87IH07CiAJCUUzOThGQzI0MURDMzJBMjAwMDNDNDY4NCAvKiBET01K
SVRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLzsgfTsK
QEAgLTE1MDQ5LDggKzE1MDUwLDggQEAKIAkJRTE3MkFGNkIxODBGMjRDNjAwRkJBREI5IC8qIENy
eXB0b0FsZ29yaXRobS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
cnlwdG9BbGdvcml0aG0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTcyQUY2
QzE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTcyQUY2RjE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5VXNhZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvS2V5VXNhZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTE3MkFGOEQxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJv
bWlzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVByb21p
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTcyQUY4RTE4MTFCQzM3MDBG
QkFEQjkgLyogSlNET01Qcm9taXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRE9NUHJvbWlzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTcyQUY4RDE4
MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Q
cm9taXNlRGVmZXJyZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Q
cm9taXNlRGVmZXJyZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3NjU4MEMx
ODBERjNBMDAwNUE5NkQxIC8qIE9FU0VsZW1lbnRJbmRleFVpbnQuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE9FU0VsZW1l
bnRJbmRleFVpbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTc5RjBEOTFC
OTc3NEZFMDBFRDBBMjcgLyogSW50ZXJuYWxzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gSW50ZXJuYWxzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMTdCNDkwQjE2QTk3MjY5MDAxQzg4MzkgLyogVHJhbnNpdGlvbkV2ZW50LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBUcmFuc2l0aW9uRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTUxOTMsNiArMTUxOTQsNyBAQAogCQlFMzM0ODI1RTFEQzkzQUEwMDA5Qzk1
NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlGMURDMkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3Vz
dG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRDdXN0b20uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUSURMVHlwZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzdD
ODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRE9NUHJvbWlzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVF
MyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjMzOTcsOCArMjMzOTksOSBAQAogCQkJCTQxMzhGODU2MUQyNTNF
RUUwMDFDQjYxRSAvKiBKU0RPTUl0ZXJhdG9yLmggKi8sCiAJCQkJNDFERUZDQjMxRTU2QzFCOTAw
MEQ5RTVGIC8qIEpTRE9NTWFwTGlrZS5jcHAgKi8sCiAJCQkJNDFERUZDQjQxRTU2QzFCOTAwMEQ5
RTVGIC8qIEpTRE9NTWFwTGlrZS5oICovLAotCQkJCUUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAv
KiBKU0RPTVByb21pc2UuY3BwICovLAotCQkJCUUxNzJBRjhFMTgxMUJDMzcwMEZCQURCOSAvKiBK
U0RPTVByb21pc2UuaCAqLywKKwkJCQlFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Q
cm9taXNlLmggKi8sCisJCQkJRTE3MkFGOEQxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlz
ZURlZmVycmVkLmNwcCAqLywKKwkJCQlFMTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Q
cm9taXNlRGVmZXJyZWQuaCAqLywKIAkJCQlCQzY5MzI3MTBEN0UyOTM5MDBBRTQ0RDEgLyogSlNE
T01XaW5kb3dCYXNlLmNwcCAqLywKIAkJCQlCQzY5MzI3MjBEN0UyOTM5MDBBRTQ0RDEgLyogSlNE
T01XaW5kb3dCYXNlLmggKi8sCiAJCQkJNDYwQ0JGMzMxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9N
V2luZG93UHJvcGVydGllcy5jcHAgKi8sCkBAIC0yNzE4NCw2ICsyNzE4Nyw3IEBACiAJCQkJQzBD
MDU0Q0MxMTE4QzhFNDAwQ0UyNjM2IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzIwQjBBMTE0RDMz
MjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
NjJGQjk2MUFGMDE4RTcwMDEyRUQ3RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NzQ2QUYyNDE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMjc3MjUsNyArMjc3MjksNyBAQAogCQkJCTBGNDk2NkFCMURCNDBDNDMwMEEy
NzRCQiAvKiBKU0RPTVBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ5NjZBRDFEQjQwQzQz
MDBBMjc0QkIgLyogSlNET01Qb2ludEluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDk2NkFG
MURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50UmVhZE9ubHkuaCBpbiBIZWFkZXJzICovLAot
CQkJCUUxNzJBRjkwMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUxNzJBRjkwMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2VEZWZlcnJl
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwQkMxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9N
UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwQkUxREI1NkJFODAwMkRDRUMzIC8qIEpT
RE9NUmVjdEluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDcxMEMwMURCNTZCRTgwMDJEQ0VD
MyAvKiBKU0RPTVJlY3RSZWFkT25seS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTY3MCw3ICszMTY3
NCw3IEBACiAJCQkJMEY0OTY2QUExREI0MEM0MzAwQTI3NEJCIC8qIEpTRE9NUG9pbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY0OTY2QUMxREI0MEM0MzAwQTI3NEJCIC8qIEpTRE9NUG9pbnRJ
bml0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDk2NkFFMURCNDBDNDMwMEEyNzRCQiAvKiBK
U0RPTVBvaW50UmVhZE9ubHkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTE3MkFGOEYxODExQkMz
NzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTcyQUY4
RjE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY0NzEwQkIxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjQ3MTBCRDFEQjU2QkU4MDAyRENFQzMgLyogSlNET01SZWN0SW5pdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ3MTBCRjFEQjU2QkU4MDAyRENFQzMgLyogSlNET01S
ZWN0UmVhZE9ubHkuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMu
aAppbmRleCAyODEyMDUwYTYxOTRkY2NmYWNjNjliODQzMzU0Y2UzYzZiMzAzY2Y1Li5iNWIxNDJj
OWI5MWQ2MzM3ZWM5MDcyZTUxM2IyMTBjNWMxNjZjNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lE
TFR5cGVzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSURC
S2V5OwogY2xhc3MgSURCS2V5RGF0YTsKIGNsYXNzIElEQlZhbHVlOwotdGVtcGxhdGU8dHlwZW5h
bWU+IGNsYXNzIERPTVByb21pc2U7CitjbGFzcyBET01Qcm9taXNlOwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogc3RydWN0IElETFR5cGUgewpAQCAtMTg1LDcgKzE4NSw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEssIHR5cGVuYW1lIFY+IHN0cnVjdCBJRExSZWNvcmQgOiBJRExUeXBlPFZlY3RvcjxX
VEY6OktleVZhbHVlCiAgICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9IGNvbnN0IFZlY3RvcjxXVEY6
OktleVZhbHVlUGFpcjx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUsIHR5cGVuYW1lIFY6
OkltcGxlbWVudGF0aW9uVHlwZT4+JjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBJRExQcm9taXNlIDogSURMVHlwZTxET01Qcm9taXNlPFQ+PiB7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSURMUHJvbWlzZSA6IElETFR5cGU8RE9NUHJvbWlzZT4gewogICAgIHVzaW5n
IElubmVyVHlwZSA9IFQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oCmluZGV4IDZjY2RiY2Nj
YTc3YTllZGQ2Y2NkMWNlMGZiMzNhMDdjMDE2OTQyMGMuLjU1MGViYjU1OWNhYmVkMWJkMWRiNzYy
ZWZkYTUyZDdlMmUxY2NjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yNSw3ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRl
eCBhNmQzYzE4ZDE0NzQwMmQyMDgzM2ExOGFkMzY3OTE4NmIzZjNlNWY1Li4yZGM4NDFkNDhlMWNj
NjkxNTJlNTUxMTk5YTIwYTc2MzhmZWJkNjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAKICNpbmNs
dWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9i
amVjdC5jcHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCIKLSNpbmNsdWRl
ICJKU0RPTVByb21pc2UuY3BwIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCIK
ICNpbmNsdWRlICJKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01XaW5k
b3dCYXNlLmNwcCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5jcHAiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3Ry
eUN1c3RvbS5jcHAKaW5kZXggY2Y5ZTk2ZDI3NzYzMTQ4Nzg4MGRlNWY1NjhmMjRhODY0ODE4NmJl
ZS4uOTE4Yjk1ZDMwMWFjZGViODY5ODRmNWU2NDA0OTBkNDJlYTQ2MmU0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5Q3VzdG9tLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
Q29udmVydC5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFByb21pc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFByb21pc2UuaAppbmRleCBjMjIzNzBlMjY2
NGNiZTcyNjAxMjA4OWJiNjk1Mjg5ODJiOWVjZDkxLi5iNGQ5MzQ2NWVmM2M1OTdhYzQ0ZmY0NGQx
YjliZWM5YzIxNzUyNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnRQcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0UHJvbWlzZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMzAgKzI3LDQ2IEBACiAKICNpbmNsdWRlICJJ
RExUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2UuaCIKKyNpbmNsdWRlICJKU0RP
TVByb21pc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGSVhNRTogSW1wbGVtZW50
IElETFByb21pc2U8PiBjb252ZXJzaW9ucy4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjY3NTIKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQ29udmVy
dGVyPElETFByb21pc2U8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7Ci0g
ICAgdXNpbmcgUmV0dXJuVHlwZSA9IEpTQzo6SlNWYWx1ZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj4gOiBEZWZhdWx0Q29udmVydGVyPElETFBy
b21pc2U8VD4+IHsKKyAgICB1c2luZyBSZXR1cm5UeXBlID0gSlNDOjpKU1Byb21pc2UqOwogCi0g
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQorICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VzLXBy
b21pc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4
Y2VwdGlvblRocm93ZXI+CisgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2Vw
dGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNET01HbG9iYWxPYmplY3QqPih2
bSwgc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmpl
Y3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyAxLiBMZXQgcmVz
b2x2ZSBiZSB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgJVByb21pc2UlLnJlc29sdmUuCisgICAgICAg
IC8vIDIuIExldCBwcm9taXNlIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyByZXNvbHZlIHdpdGgg
JVByb21pc2UlIGFzIHRoZSB0aGlzIHZhbHVlIGFuZCBWIGFzIHRoZSBzaW5nbGUgYXJndW1lbnQg
dmFsdWUuCisgICAgICAgIEpTQzo6SlNQcm9taXNlKiBwcm9taXNlID0gSlNDOjpKU1Byb21pc2U6
OnJlc29sdmUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIGlmIChzY29wZS5leGNlcHRp
b24oKSkgeworICAgICAgICAgICAgZXhjZXB0aW9uVGhyb3dlcihzdGF0ZSwgc2NvcGUpOworICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHByb21p
c2UpOworCisgICAgICAgIC8vIDMuIFJldHVybiB0aGUgSURMIHByb21pc2UgdHlwZSB2YWx1ZSB0
aGF0IGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIG9iamVjdCBhcyBwcm9taXNlLgorICAgICAg
ICByZXR1cm4gcHJvbWlzZTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3Ry
dWN0IEpTQ29udmVydGVyPElETFByb21pc2U8VD4+IHsKLSAgICB1c2luZyBUeXBlID0gSlNDOjpK
U1ZhbHVlOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEpTQ29udmVydGVyPElETFByb21p
c2U8VD4+IHsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNTdGF0ZSA9IGZhbHNlOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZhbHNlOwogCi0g
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZlcnQoSlNDOjpKU1Byb21pc2UmIHByb21pc2UpCiAgICAg
ewotICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIC8vIFRoZSByZXN1bHQgb2YgY29udmVy
dGluZyBhbiBJREwgcHJvbWlzZSB0eXBlIHZhbHVlIHRvIGFuIEVDTUFTY3JpcHQgdmFsdWUgaXMg
dGhlIFByb21pc2UgdmFsdWUKKyAgICAgICAgLy8gdGhhdCByZXByZXNlbnRzIGEgcmVmZXJlbmNl
IHRvIHRoZSBzYW1lIG9iamVjdCB0aGF0IHRoZSBJREwgcHJvbWlzZSB0eXBlIHJlcHJlc2VudHMu
CisgICAgICAgIHJldHVybiAmcHJvbWlzZTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwCmluZGV4IDU4
NTU1M2QxNmMyY2YwNjk0ZTU0ZjZmZDRjMGY2YzJiYTFhOGVhNzAuLjIxY2ZkNGNkMTFkYWE0MjY5
M2FhOTQzNjc5NTg3MjdmYTZiZGU2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
SGVhZGVycy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkludGVyZmFjZXMuaCIKLSNpbmNsdWRlICJK
U0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNEeW5hbWljRG93bmNhc3QuaCIKICNpbmNs
dWRlICJKU0V4Y2VwdGlvbkJhc2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1YmQwNmM3ZDkwZDg5YWI2ZmFmMjVhYWI4NjFl
NDI1MzBmYzI5OWI4Li43YjkxZWVjNDE3MjE0MTliY2ViYmNlYWRhNTVmZjMwYzc3OTczOTQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKIAogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAi
SlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTTWVkaWFTdHJlYW0uaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2Yzk3MTc4OGVhMGY0NTBiYjBlNDI4MTM4MTFjMzdmNzAwZWViNGUwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRl
ICJKU0RPTUVycm9yLmgiCi0jaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKLSNpbmNsdWRlIDxidWls
dGlucy9CdWlsdGluTmFtZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlvbi5oPgotI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNPTk9iamVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1KU0M6OkpTVmFsdWUgRGVmZXJyZWRQcm9taXNlOjpwcm9taXNlKCkgY29uc3QKLXsK
LSAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgcmV0dXJuIGRlZmVycmVkKCktPnByb21pc2Uo
KTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OmNhbGxGdW5jdGlvbihFeGVjU3RhdGUmIGV4
ZWMsIEpTVmFsdWUgZnVuY3Rpb24sIEpTVmFsdWUgcmVzb2x1dGlvbikKLXsKLSAgICBpZiAoIWNh
bkludm9rZUNhbGxiYWNrKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENhbGxEYXRhIGNhbGxE
YXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxE
YXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwotCi0gICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQocmVzb2x1
dGlvbik7Ci0KLSAgICBjYWxsKCZleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBq
c1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOwotCi0gICAgY2xlYXIoKTsKLX0KLQotdm9pZCBEZWZl
cnJlZFByb21pc2U6OnJlamVjdCgpCi17Ci0gICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAgICBBU1NFUlQobV9nbG9iYWxP
YmplY3QpOwotICAgIGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCZzdGF0ZSk7Ci0gICAgcmVqZWN0KHN0YXRl
LCBKU0M6OmpzVW5kZWZpbmVkKCkpOwotfQotCi12b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0
KHN0ZDo6bnVsbHB0cl90KQotewotICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0
KTsKLSAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmc3RhdGUpOwotICAgIHJlamVjdChzdGF0ZSwgSlND
Ojpqc051bGwoKSk7Ci19Ci0KLXZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoRXhjZXB0aW9u
JiYgZXhjZXB0aW9uKQotewotICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsK
LSAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmc3RhdGUpOwotCi0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoc3RhdGUudm0oKSk7Ci0gICAgYXV0byBlcnJvciA9IGNyZWF0ZURPTUV4
Y2VwdGlvbihzdGF0ZSwgV1RGTW92ZShleGNlcHRpb24pKTsKLSAgICBpZiAoVU5MSUtFTFkoc2Nv
cGUuZXhjZXB0aW9uKCkpKSB7Ci0gICAgICAgIEFTU0VSVChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24oc3RhdGUudm0oKSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHJlamVjdChzdGF0ZSwgZXJyb3IpOwotfQotCi12b2lkIERlZmVycmVk
UHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbkNvZGUgZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
LXsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJU
KGRlZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3Rh
dGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoJnN0YXRlKTsKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHN0YXRlLnZtKCkpOwotICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRl
LCBlYywgbWVzc2FnZSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewot
ICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHN0YXRlLnZtKCks
IHNjb3BlLmV4Y2VwdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLQotICAgIHJl
amVjdChzdGF0ZSwgZXJyb3IpOwotfQotCi12b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KGNv
bnN0IEpTQzo6UHJpdmF0ZU5hbWUmIHByaXZhdGVOYW1lKQotewotICAgIGlmIChpc1N1c3BlbmRl
ZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgQVNT
RVJUKG1fZ2xvYmFsT2JqZWN0KTsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUgPSBtX2dsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihzdGF0
ZSk7Ci0gICAgcmVqZWN0KCpzdGF0ZSwgSlNDOjpTeW1ib2w6OmNyZWF0ZShzdGF0ZS0+dm0oKSwg
cHJpdmF0ZU5hbWUudWlkKCkpKTsKLX0KLQotdm9pZCByZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlv
bklmQW55KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgSlNQcm9taXNlRGVmZXJyZWQmIHByb21pc2VEZWZlcnJlZCkKLXsKLSAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
LQotICAgIGlmIChMSUtFTFkoIXNjb3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgSlNWYWx1ZSBlcnJvciA9IHNjb3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpOwotICAgIHNj
b3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0KLSAgICBEZWZlcnJlZFByb21pc2U6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIHByb21pc2VEZWZlcnJlZCktPnJlamVjdDxJRExBbnk+KGVycm9yKTsKLX0KLQot
UmVmPERlZmVycmVkUHJvbWlzZT4gY3JlYXRlRGVmZXJyZWRQcm9taXNlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNET01XaW5kb3cmIGRvbVdpbmRvdykKLXsKLSAgICBKU0M6OkpTUHJvbWlzZURl
ZmVycmVkKiBkZWZlcnJlZCA9IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUs
ICZkb21XaW5kb3cpOwotICAgIC8vIGRlZmVycmVkIGNhbiBvbmx5IGJlIG51bGwgaW4gd29ya2Vy
cy4KLSAgICBBU1NFUlQoZGVmZXJyZWQpOwotICAgIHJldHVybiBEZWZlcnJlZFByb21pc2U6OmNy
ZWF0ZShkb21XaW5kb3csICpkZWZlcnJlZCk7Ci19Ci0KLUpTQzo6RW5jb2RlZEpTVmFsdWUgY3Jl
YXRlUmVqZWN0ZWRQcm9taXNlV2l0aFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAgIEFTU0VSVChzdGF0ZS5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpOwotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpzdGF0ZS5sZXhpY2FsR2xv
YmFsT2JqZWN0KCk7Ci0KLSAgICBhdXRvIHByb21pc2VDb25zdHJ1Y3RvciA9IGdsb2JhbE9iamVj
dC5wcm9taXNlQ29uc3RydWN0b3IoKTsKLSAgICBhdXRvIHJlamVjdEZ1bmN0aW9uID0gcHJvbWlz
ZUNvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBzdGF0ZS52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gcmVqZWN0aW9uVmFsdWUg
PSBjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCBlcnJvck1lc3NhZ2UpOwotCi0gICAgQ2FsbERhdGEg
Y2FsbERhdGE7Ci0gICAgYXV0byBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHJlamVjdEZ1bmN0aW9u
LCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLQot
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5k
KHJlamVjdGlvblZhbHVlKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbCgmc3Rh
dGUsIHJlamVjdEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHByb21pc2VDb25zdHJ1Y3Rv
ciwgYXJndW1lbnRzKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIHBhcnNlQXNK
U09OKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBkYXRhKQotewotICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2soc3RhdGUpOwotICAgIHJldHVybiBKU0M6OkpTT05QYXJzZShz
dGF0ZSwgZGF0YSk7Ci19Ci0KLXZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgZGF0YSkKLXsKLSAgICBKU0M6OkpT
VmFsdWUgdmFsdWUgPSBwYXJzZUFzSlNPTihwcm9taXNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpLCBkYXRhKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICBwcm9taXNlLT5yZWplY3Qo
U1lOVEFYX0VSUik7Ci0gICAgZWxzZQotICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4o
dmFsdWUpOwotfQotCi12b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyKQotewotICAg
IGlmICghYXJyYXlCdWZmZXIpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0PElETEFueT4oY3Jl
YXRlT3V0T2ZNZW1vcnlFcnJvcihwcm9taXNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRl
cmZhY2U8QXJyYXlCdWZmZXI+PigqYXJyYXlCdWZmZXIpOwotfQotCi12b2lkIGZ1bGZpbGxQcm9t
aXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJh
eUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpLCBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIGxl
bmd0aCkuZ2V0KCkpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZS5oCmluZGV4IGVmMTA0OWU3N2ZjYjE3OWY0MjkwN2RiOTczZDNhMWI4NTI0NGE5MGQuLjEw
YWM3NGJjM2MxNzEyNTJjMzE2YzdjODI2MmUwMzE5MmU4MzBkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjMxICsyNSwyOSBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRl
ZE9iamVjdC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTUHJvbWlzZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IERlZmVycmVkUHJvbWlzZSA6IHB1YmxpYyBET01HdWFyZGVkPEpTQzo6SlNQcm9taXNlRGVmZXJy
ZWQ+IHsKK2NsYXNzIERPTVByb21pc2UgOiBwdWJsaWMgRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlz
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RGVmZXJyZWRQcm9taXNlPiBjcmVhdGUoSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYgZGVm
ZXJyZWQpCisgICAgc3RhdGljIFJlZjxET01Qcm9taXNlPiBjcmVhdGUoSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2UmIHByb21pc2UpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWZlcnJlZFByb21pc2UoZ2xvYmFsT2JqZWN0LCBkZWZl
cnJlZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01Qcm9taXNlKGdsb2JhbE9i
amVjdCwgcHJvbWlzZSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIElETFR5cGU+Ci0g
ICAgdm9pZCByZXNvbHZlKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCisg
ICAgSlNDOjpKU1Byb21pc2UqIHByb21pc2UoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGlz
U3VzcGVuZGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChkZWZlcnJl
ZCgpKTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgICAgIHJlc29sdmUoKmV4ZWMsIHRvSlM8
SURMVHlwZT4oKmV4ZWMsICpnbG9iYWxPYmplY3QoKSwgc3RkOjpmb3J3YXJkPHR5cGVuYW1lIElE
TFR5cGU6OlBhcmFtZXRlclR5cGU+KHZhbHVlKSkpOworICAgICAgICBBU1NFUlQoIWlzU3VzcGVu
ZGVkKCkpOworICAgICAgICByZXR1cm4gZ3VhcmRlZCgpOwogICAgIH0KIAotICAgIHZvaWQgcmVz
b2x2ZSgpCi0gICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgICAgICBBU1NFUlQoZ2xvYmFs
T2JqZWN0KCkpOwotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsK
LSAgICAgICAgcmVzb2x2ZSgqZXhlYywgSlNDOjpqc1VuZGVmaW5lZCgpKTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBJRExUeXBlPgotICAgIHZvaWQgcmVzb2x2ZVdpdGhOZXdseUNyZWF0
ZWQodHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAg
IGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBBU1NFUlQo
ZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7Ci0gICAgICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgICAgICByZXNvbHZlKCpleGVj
LCB0b0pTTmV3bHlDcmVhdGVkPElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCksIHN0ZDo6
Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJRExUeXBlPgotICAgIHZvaWQgcmVqZWN0KHR5cGVuYW1l
IElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaXNTdXNw
ZW5kZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkp
OwotICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBKU0M6OkV4ZWNTdGF0
ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICAgICAgcmVqZWN0KCpleGVjLCB0b0pTPElETFR5
cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCksIHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBl
OjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlamVjdCgpOwot
ICAgIHZvaWQgcmVqZWN0KHN0ZDo6bnVsbHB0cl90KTsKLSAgICB2b2lkIHJlamVjdChFeGNlcHRp
b24mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWplY3QoRXhjZXB0aW9uQ29kZSwgY29u
c3QgU3RyaW5nJiA9IHsgfSk7Ci0gICAgdm9pZCByZWplY3QoY29uc3QgSlNDOjpQcml2YXRlTmFt
ZSYpOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+Ci0gICAgdm9pZCByZXNvbHZl
V2l0aENhbGxiYWNrKENhbGxiYWNrIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgaWYgKGlzU3Vz
cGVuZGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChkZWZlcnJlZCgp
KTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgICAgIHJlc29sdmUoKmV4ZWMsIGNhbGxiYWNr
KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCkpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDYWxsYmFjaz4KLSAgICB2b2lkIHJlamVjdFdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFj
aykKLSAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFTU0VSVChnbG9iYWxPYmpl
Y3QoKSk7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAg
ICAgICByZWplY3QoKmV4ZWMsIGNhbGxiYWNrKCpleGVjLCAqZ2xvYmFsT2JqZWN0KCkpKTsKLSAg
ICB9Ci0KLSAgICBKU0M6OkpTVmFsdWUgcHJvbWlzZSgpIGNvbnN0OwotCiBwcml2YXRlOgotICAg
IERlZmVycmVkUHJvbWlzZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
UHJvbWlzZURlZmVycmVkJiBkZWZlcnJlZCkgOiBET01HdWFyZGVkPEpTQzo6SlNQcm9taXNlRGVm
ZXJyZWQ+KGdsb2JhbE9iamVjdCwgZGVmZXJyZWQpIHsgfQotCi0gICAgSlNDOjpKU1Byb21pc2VE
ZWZlcnJlZCogZGVmZXJyZWQoKSBjb25zdCB7IHJldHVybiBndWFyZGVkKCk7IH0KLQotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2FsbEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlIGZ1bmN0aW9uLCBKU0M6OkpTVmFsdWUgcmVzb2x1dGlvbik7Ci0gICAgdm9pZCByZXNvbHZl
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1
bmN0aW9uKHN0YXRlLCBkZWZlcnJlZCgpLT5yZXNvbHZlKCksIHJlc29sdXRpb24pOyB9Ci0gICAg
dm9pZCByZWplY3QoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgcmVzb2x1dGlv
bikgeyBjYWxsRnVuY3Rpb24oc3RhdGUsIGRlZmVycmVkKCktPnJlamVjdCgpLCByZXNvbHV0aW9u
KTsgfQotfTsKLQotY2xhc3MgRE9NUHJvbWlzZUJhc2UgewotcHVibGljOgotICAgIERPTVByb21p
c2VCYXNlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgZ2VuZXJpY1Byb21pc2UpCi0gICAgICAgIDog
bV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShnZW5lcmljUHJvbWlzZSkpCi0gICAgewotICAgIH0K
LQotICAgIERPTVByb21pc2VCYXNlKERPTVByb21pc2VCYXNlJiYgcHJvbWlzZSkKLSAgICAgICAg
OiBtX3Byb21pc2VEZWZlcnJlZChXVEZNb3ZlKHByb21pc2UubV9wcm9taXNlRGVmZXJyZWQpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBET01Qcm9taXNlQmFzZShjb25zdCBET01Qcm9taXNlQmFzZSYg
b3RoZXIpCi0gICAgICAgIDogbV9wcm9taXNlRGVmZXJyZWQob3RoZXIubV9wcm9taXNlRGVmZXJy
ZWQuY29weVJlZigpKQotICAgIHsKLSAgICB9Ci0KLSAgICBET01Qcm9taXNlQmFzZSYgb3BlcmF0
b3I9KGNvbnN0IERPTVByb21pc2VCYXNlJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIG1fcHJvbWlz
ZURlZmVycmVkID0gb3RoZXIubV9wcm9taXNlRGVmZXJyZWQuY29weVJlZigpOwotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgRE9NUHJvbWlzZUJhc2UmIG9wZXJhdG9yPShET01Q
cm9taXNlQmFzZSYmIG90aGVyKQorICAgIERPTVByb21pc2UoSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2UmIHByb21pc2UpCisgICAgICAgIDogRE9NR3VhcmRl
ZDxKU0M6OkpTUHJvbWlzZT4oZ2xvYmFsT2JqZWN0LCBwcm9taXNlKQogICAgIHsKLSAgICAgICAg
bV9wcm9taXNlRGVmZXJyZWQgPSBXVEZNb3ZlKG90aGVyLm1fcHJvbWlzZURlZmVycmVkKTsKLSAg
ICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHZvaWQgcmVqZWN0KCkKLSAgICB7Ci0g
ICAgICAgIG1fcHJvbWlzZURlZmVycmVkLT5yZWplY3QoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBFcnJvclR5cGU+IAotICAgIHZvaWQgcmVqZWN0KEVycm9yVHlwZSYmLi4u
IGVycm9yKQotICAgIHsKLSAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdChzdGQ6OmZv
cndhcmQ8RXJyb3JUeXBlPihlcnJvcikuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+Ci0gICAgdm9pZCByZWplY3RUeXBlKHR5cGVuYW1lIElETFR5cGU6OlBhcmFt
ZXRlclR5cGUgdmFsdWUpCi0gICAgewotICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+cmVqZWN0
PElETFR5cGU+KHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2
YWx1ZSkpOwotICAgIH0KLQotICAgIEpTQzo6SlNWYWx1ZSBwcm9taXNlKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9taXNlRGVmZXJyZWQtPnByb21pc2UoKTsgfTsKLQotcHJvdGVjdGVkOgotICAgIFJl
ZjxEZWZlcnJlZFByb21pc2U+IG1fcHJvbWlzZURlZmVycmVkOwotfTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgSURMVHlwZT4gCi1jbGFzcyBET01Qcm9taXNlIDogcHVibGljIERPTVByb21pc2VCYXNl
IHsKLXB1YmxpYzoKLSAgICB1c2luZyBET01Qcm9taXNlQmFzZTo6RE9NUHJvbWlzZUJhc2U7Ci0g
ICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6Om9wZXJhdG9yPTsKLSAgICB1c2luZyBET01Qcm9taXNl
QmFzZTo6cHJvbWlzZTsKLSAgICB1c2luZyBET01Qcm9taXNlQmFzZTo6cmVqZWN0OwotCi0gICAg
dm9pZCByZXNvbHZlKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCi0gICAg
eyAKLSAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlc29sdmU8SURMVHlwZT4oc3RkOjpmb3J3
YXJkPHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGU+KHZhbHVlKSk7CiAgICAgfQogfTsK
IAotdGVtcGxhdGU8PiBjbGFzcyBET01Qcm9taXNlPHZvaWQ+IDogcHVibGljIERPTVByb21pc2VC
YXNlIHsKLXB1YmxpYzoKLSAgICB1c2luZyBET01Qcm9taXNlQmFzZTo6RE9NUHJvbWlzZUJhc2U7
Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6Om9wZXJhdG9yPTsKLSAgICB1c2luZyBET01Qcm9t
aXNlQmFzZTo6cHJvbWlzZTsKLSAgICB1c2luZyBET01Qcm9taXNlQmFzZTo6cmVqZWN0OwotCi0g
ICAgdm9pZCByZXNvbHZlKCkKLSAgICB7IAotICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+cmVz
b2x2ZSgpOwotICAgIH0KLX07Ci0KLQotUmVmPERlZmVycmVkUHJvbWlzZT4gY3JlYXRlRGVmZXJy
ZWRQcm9taXNlKEpTQzo6RXhlY1N0YXRlJiwgSlNET01XaW5kb3cmKTsKLQotdm9pZCBmdWxmaWxs
UHJvbWlzZVdpdGhKU09OKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIGNvbnN0IFN0cmluZyYpOwot
dm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYm
LCBBcnJheUJ1ZmZlciopOwotdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8
RGVmZXJyZWRQcm9taXNlPiYmLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKLVdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNTdGF0ZSYsIEpT
RE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYpOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBjcmVhdGVSZWplY3RlZFByb21pc2VXaXRoVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRl
JiwgY29uc3QgU3RyaW5nJik7Ci0KLXVzaW5nIFByb21pc2VGdW5jdGlvbiA9IHZvaWQoSlNDOjpF
eGVjU3RhdGUmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKLQotZW51bSBjbGFzcyBQcm9taXNl
RXhlY3V0aW9uU2NvcGUgeyBXaW5kb3dPbmx5LCBXaW5kb3dPcldvcmtlciB9OwotCi10ZW1wbGF0
ZTxQcm9taXNlRnVuY3Rpb24gcHJvbWlzZUZ1bmN0aW9uLCBQcm9taXNlRXhlY3V0aW9uU2NvcGUg
ZXhlY3V0aW9uU2NvcGU+Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9taXNlRnVuY3Rpb24o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsK
LSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0KLSAgICBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBKU0M6OkpTUHJvbWlzZURlZmVy
cmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0
YXRlLCAmZ2xvYmFsT2JqZWN0KTsKLQotICAgIC8vIHByb21pc2VEZWZlcnJlZCBjYW4gYmUgbnVs
bCB3aGVuIHRlcm1pbmF0aW5nIGEgV29ya2VyIGFicnVwdGx5LgotICAgIGlmIChleGVjdXRpb25T
Y29wZSA9PSBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyICYmICFwcm9taXNl
RGVmZXJyZWQpCi0gICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7Ci0KLSAgICBwcm9t
aXNlRnVuY3Rpb24oc3RhdGUsIERlZmVycmVkUHJvbWlzZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwg
KnByb21pc2VEZWZlcnJlZCkpOwotCi0gICAgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFu
eShzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAqcHJvbWlzZURlZmVycmVkKTsKLSAgICBBU1NFUlRfVU5V
U0VEKHNjb3BlLCAhc2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIHJldHVybiBwcm9taXNlRGVmZXJy
ZWQtPnByb21pc2UoKTsKLX0KLQotdXNpbmcgQmluZGluZ1Byb21pc2VGdW5jdGlvbiA9IEpTQzo6
RW5jb2RlZEpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsK
LXRlbXBsYXRlPEJpbmRpbmdQcm9taXNlRnVuY3Rpb24gYmluZGluZ0Z1bmN0aW9uPgotaW5saW5l
IHZvaWQgYmluZGluZ1Byb21pc2VGdW5jdGlvbkFkYXB0ZXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCi17Ci0gICAgYmluZGluZ0Z1bmN0aW9u
KCZzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSk7Ci19Ci0KLXRlbXBsYXRlPEJpbmRpbmdQcm9taXNl
RnVuY3Rpb24gYmluZGluZ1Byb21pc2VGdW5jdGlvbiwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIGV4
ZWN1dGlvblNjb3BlPgotaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gY2FsbFByb21pc2VGdW5jdGlvbjxi
aW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRlcjxiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uPiwgZXhl
Y3V0aW9uU2NvcGU+KHN0YXRlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA5NWEyZDI5ZWZkM2ZkN2FkYjMyNTgwMWJiNDY1YmZhNmZjZTM3YTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZl
cnJlZC5jcHAKQEAgLTAsMCArMSwyMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKworI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUVycm9yLmgiCisjaW5jbHVkZSAiSlNE
T01XaW5kb3cuaCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluTmFtZXMuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0V4Y2VwdGlvbi5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNPTk9iamVjdC5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuaD4KKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU0M6OkpTVmFsdWUgRGVmZXJyZWRQ
cm9taXNlOjpwcm9taXNlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAg
cmV0dXJuIGRlZmVycmVkKCktPnByb21pc2UoKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6
OmNhbGxGdW5jdGlvbihFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb24sIEpTVmFsdWUg
cmVzb2x1dGlvbikKK3sKKyAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0g
Q2FsbFR5cGU6Ok5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwor
ICAgIGFyZ3VtZW50cy5hcHBlbmQocmVzb2x1dGlvbik7CisKKyAgICBjYWxsKCZleGVjLCBmdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOworCisg
ICAgY2xlYXIoKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdCgpCit7CisgICAg
aWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChkZWZlcnJl
ZCgpKTsKKyAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOworICAgIGF1dG8mIHN0YXRlID0gKm1f
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2Vy
KCZzdGF0ZSk7CisgICAgcmVqZWN0KHN0YXRlLCBKU0M6OmpzVW5kZWZpbmVkKCkpOworfQorCit2
b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KHN0ZDo6bnVsbHB0cl90KQoreworICAgIGlmIChp
c1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZGVmZXJyZWQoKSk7
CisgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmc3Rh
dGUpOworICAgIHJlamVjdChzdGF0ZSwgSlNDOjpqc051bGwoKSk7Cit9CisKK3ZvaWQgRGVmZXJy
ZWRQcm9taXNlOjpyZWplY3QoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQoreworICAgIGlmIChpc1N1
c3BlbmRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Cisg
ICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmc3RhdGUp
OworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUudm0oKSk7Cisg
ICAgYXV0byBlcnJvciA9IGNyZWF0ZURPTUV4Y2VwdGlvbihzdGF0ZSwgV1RGTW92ZShleGNlcHRp
b24pKTsKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAgICAgIEFT
U0VSVChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oc3RhdGUudm0oKSwgc2NvcGUuZXhj
ZXB0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlamVjdChzdGF0ZSwg
ZXJyb3IpOworfQorCit2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbkNvZGUg
ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2ds
b2JhbE9iamVjdCk7CisgICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRlKTsKKworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOworICAgIGF1dG8gZXJyb3Ig
PSBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBlYywgbWVzc2FnZSk7CisgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKHN0YXRlLnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKworICAgIHJlamVjdChzdGF0ZSwgZXJyb3IpOworfQorCit2b2lk
IERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmIHByaXZhdGVO
YW1lKQoreworICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBB
U1NFUlQoZGVmZXJyZWQoKSk7CisgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2tlcihzdGF0ZSk7CisgICAgcmVqZWN0KCpzdGF0ZSwgSlNDOjpT
eW1ib2w6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgcHJpdmF0ZU5hbWUudWlkKCkpKTsKK30KKwordm9p
ZCByZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlRGVmZXJyZWQmIHByb21p
c2VEZWZlcnJlZCkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIGlmIChMSUtFTFkoIXNjb3BlLmV4Y2Vw
dGlvbigpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZSBlcnJvciA9IHNjb3BlLmV4
Y2VwdGlvbigpLT52YWx1ZSgpOworICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICBE
ZWZlcnJlZFByb21pc2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHByb21pc2VEZWZlcnJlZCktPnJl
amVjdDxJRExBbnk+KGVycm9yKTsKK30KKworUmVmPERlZmVycmVkUHJvbWlzZT4gY3JlYXRlRGVm
ZXJyZWRQcm9taXNlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01XaW5kb3cmIGRvbVdpbmRv
dykKK3sKKyAgICBKU0M6OkpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTQzo6SlNQcm9t
aXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsICZkb21XaW5kb3cpOworICAgIC8vIGRlZmVycmVk
IGNhbiBvbmx5IGJlIG51bGwgaW4gd29ya2Vycy4KKyAgICBBU1NFUlQoZGVmZXJyZWQpOworICAg
IHJldHVybiBEZWZlcnJlZFByb21pc2U6OmNyZWF0ZShkb21XaW5kb3csICpkZWZlcnJlZCk7Cit9
CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVqZWN0ZWRQcm9taXNlV2l0aFR5cGVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQorewor
ICAgIEFTU0VSVChzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIGF1dG8mIGdsb2Jh
bE9iamVjdCA9ICpzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisKKyAgICBhdXRvIHByb21p
c2VDb25zdHJ1Y3RvciA9IGdsb2JhbE9iamVjdC5wcm9taXNlQ29uc3RydWN0b3IoKTsKKyAgICBh
dXRvIHJlamVjdEZ1bmN0aW9uID0gcHJvbWlzZUNvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBzdGF0
ZS52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkp
OworICAgIGF1dG8gcmVqZWN0aW9uVmFsdWUgPSBjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCBlcnJv
ck1lc3NhZ2UpOworCisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgYXV0byBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKHJlamVjdEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxU
eXBlICE9IENhbGxUeXBlOjpOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3Vt
ZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHJlamVjdGlvblZhbHVlKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FsbCgmc3RhdGUsIHJlamVjdEZ1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIHByb21pc2VDb25zdHJ1Y3RvciwgYXJndW1lbnRzKSk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgSlNDOjpKU1ZhbHVlIHBhcnNlQXNKU09OKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgY29u
c3QgU3RyaW5nJiBkYXRhKQoreworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soc3RhdGUpOwor
ICAgIHJldHVybiBKU0M6OkpTT05QYXJzZShzdGF0ZSwgZGF0YSk7Cit9CisKK3ZvaWQgZnVsZmls
bFByb21pc2VXaXRoSlNPTihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0
cmluZyYgZGF0YSkKK3sKKyAgICBKU0M6OkpTVmFsdWUgdmFsdWUgPSBwYXJzZUFzSlNPTihwcm9t
aXNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBkYXRhKTsKKyAgICBpZiAoIXZhbHVl
KQorICAgICAgICBwcm9taXNlLT5yZWplY3QoU1lOVEFYX0VSUik7CisgICAgZWxzZQorICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4odmFsdWUpOworfQorCit2b2lkIGZ1bGZpbGxQcm9t
aXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgQXJyYXlC
dWZmZXIqIGFycmF5QnVmZmVyKQoreworICAgIGlmICghYXJyYXlCdWZmZXIpIHsKKyAgICAgICAg
cHJvbWlzZS0+cmVqZWN0PElETEFueT4oY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihwcm9taXNlLT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8QXJyYXlCdWZmZXI+PigqYXJyYXlCdWZm
ZXIpOworfQorCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sK
KyAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpLCBBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIGxlbmd0aCkuZ2V0KCkpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNjEzY2FjN2IyOGI0YzdlZmE5MjRkZDY5OTMxNzcyNzE5NjBmOGY0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQu
aApAQCAtMCwwICsxLDI1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSlNET01Db252ZXJ0LmgiCisjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCisjaW5j
bHVkZSA8cnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIERlZmVycmVkUHJvbWlzZSA6IHB1YmxpYyBET01HdWFyZGVkPEpTQzo6SlNQcm9t
aXNlRGVmZXJyZWQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERlZmVycmVkUHJvbWlzZT4g
Y3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNQcm9taXNlRGVm
ZXJyZWQmIGRlZmVycmVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVm
ZXJyZWRQcm9taXNlKGdsb2JhbE9iamVjdCwgZGVmZXJyZWQpKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBJRExUeXBlPgorICAgIHZvaWQgcmVzb2x2ZSh0eXBlbmFtZSBJRExUeXBlOjpQ
YXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKKyAgICAgICAg
QVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBn
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIoZXhlYyk7CisgICAgICAgIHJlc29sdmUoKmV4ZWMsIHRvSlM8SURMVHlwZT4oKmV4ZWMs
ICpnbG9iYWxPYmplY3QoKSwgc3RkOjpmb3J3YXJkPHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRl
clR5cGU+KHZhbHVlKSkpOworICAgIH0KKworICAgIHZvaWQgcmVzb2x2ZSgpCisgICAgeworICAg
ICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQVNT
RVJUKGRlZmVycmVkKCkpOworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOworICAgICAg
ICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Cisg
ICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICAgICAgcmVzb2x2ZSgq
ZXhlYywgSlNDOjpqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBJ
RExUeXBlPgorICAgIHZvaWQgcmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQodHlwZW5hbWUgSURMVHlw
ZTo6UGFyYW1ldGVyVHlwZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpc1N1c3BlbmRlZCgp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAg
ICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVj
ID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICByZXNvbHZlKCpleGVjLCB0b0pTTmV3bHlDcmVhdGVk
PElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCksIHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJ
RExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBJRExUeXBlPgorICAgIHZvaWQgcmVqZWN0KHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRl
clR5cGUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihl
eGVjKTsKKyAgICAgICAgcmVqZWN0KCpleGVjLCB0b0pTPElETFR5cGU+KCpleGVjLCAqZ2xvYmFs
T2JqZWN0KCksIHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2
YWx1ZSkpKTsKKyAgICB9CisKKyAgICB2b2lkIHJlamVjdCgpOworICAgIHZvaWQgcmVqZWN0KHN0
ZDo6bnVsbHB0cl90KTsKKyAgICB2b2lkIHJlamVjdChFeGNlcHRpb24mJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZWplY3QoRXhjZXB0aW9uQ29kZSwgY29uc3QgU3RyaW5nJiA9IHsgfSk7
CisgICAgdm9pZCByZWplY3QoY29uc3QgSlNDOjpQcml2YXRlTmFtZSYpOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2FsbGJhY2s+CisgICAgdm9pZCByZXNvbHZlV2l0aENhbGxiYWNrKENhbGxi
YWNrIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKKyAgICAgICAgQVNTRVJU
KGdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIo
ZXhlYyk7CisgICAgICAgIHJlc29sdmUoKmV4ZWMsIGNhbGxiYWNrKCpleGVjLCAqZ2xvYmFsT2Jq
ZWN0KCkpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFjaz4KKyAgICB2
b2lkIHJlamVjdFdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQo
ZGVmZXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CisgICAgICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICByZWplY3QoKmV4ZWMs
IGNhbGxiYWNrKCpleGVjLCAqZ2xvYmFsT2JqZWN0KCkpKTsKKyAgICB9CisKKyAgICBKU0M6OkpT
VmFsdWUgcHJvbWlzZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIERlZmVycmVkUHJvbWlzZShK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJiBk
ZWZlcnJlZCkKKyAgICAgICAgOiBET01HdWFyZGVkPEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ+KGds
b2JhbE9iamVjdCwgZGVmZXJyZWQpCisgICAgeworICAgIH0KKworICAgIEpTQzo6SlNQcm9taXNl
RGVmZXJyZWQqIGRlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gZ3VhcmRlZCgpOyB9CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNhbGxGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNW
YWx1ZSBmdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pOworICAgIHZvaWQgcmVzb2x2
ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxG
dW5jdGlvbihzdGF0ZSwgZGVmZXJyZWQoKS0+cmVzb2x2ZSgpLCByZXNvbHV0aW9uKTsgfQorICAg
IHZvaWQgcmVqZWN0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRp
b24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRlLCBkZWZlcnJlZCgpLT5yZWplY3QoKSwgcmVzb2x1dGlv
bik7IH0KK307CisKK2NsYXNzIERPTVByb21pc2VEZWZlcnJlZEJhc2UgeworcHVibGljOgorICAg
IERPTVByb21pc2VEZWZlcnJlZEJhc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBnZW5lcmljUHJv
bWlzZSkKKyAgICAgICAgOiBtX3Byb21pc2VEZWZlcnJlZChXVEZNb3ZlKGdlbmVyaWNQcm9taXNl
KSkKKyAgICB7CisgICAgfQorCisgICAgRE9NUHJvbWlzZURlZmVycmVkQmFzZShET01Qcm9taXNl
RGVmZXJyZWRCYXNlJiYgcHJvbWlzZSkKKyAgICAgICAgOiBtX3Byb21pc2VEZWZlcnJlZChXVEZN
b3ZlKHByb21pc2UubV9wcm9taXNlRGVmZXJyZWQpKQorICAgIHsKKyAgICB9CisKKyAgICBET01Q
cm9taXNlRGVmZXJyZWRCYXNlKGNvbnN0IERPTVByb21pc2VEZWZlcnJlZEJhc2UmIG90aGVyKQor
ICAgICAgICA6IG1fcHJvbWlzZURlZmVycmVkKG90aGVyLm1fcHJvbWlzZURlZmVycmVkLmNvcHlS
ZWYoKSkKKyAgICB7CisgICAgfQorCisgICAgRE9NUHJvbWlzZURlZmVycmVkQmFzZSYgb3BlcmF0
b3I9KGNvbnN0IERPTVByb21pc2VEZWZlcnJlZEJhc2UmIG90aGVyKQorICAgIHsKKyAgICAgICAg
bV9wcm9taXNlRGVmZXJyZWQgPSBvdGhlci5tX3Byb21pc2VEZWZlcnJlZC5jb3B5UmVmKCk7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBET01Qcm9taXNlRGVmZXJyZWRCYXNl
JiBvcGVyYXRvcj0oRE9NUHJvbWlzZURlZmVycmVkQmFzZSYmIG90aGVyKQorICAgIHsKKyAgICAg
ICAgbV9wcm9taXNlRGVmZXJyZWQgPSBXVEZNb3ZlKG90aGVyLm1fcHJvbWlzZURlZmVycmVkKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHZvaWQgcmVqZWN0KCkKKyAgICB7
CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkLT5yZWplY3QoKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBFcnJvclR5cGU+IAorICAgIHZvaWQgcmVqZWN0KEVycm9yVHlwZSYm
Li4uIGVycm9yKQorICAgIHsKKyAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdChzdGQ6
OmZvcndhcmQ8RXJyb3JUeXBlPihlcnJvcikuLi4pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIElETFR5cGU+CisgICAgdm9pZCByZWplY3RUeXBlKHR5cGVuYW1lIElETFR5cGU6OlBh
cmFtZXRlclR5cGUgdmFsdWUpCisgICAgeworICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+cmVq
ZWN0PElETFR5cGU+KHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBl
Pih2YWx1ZSkpOworICAgIH0KKworICAgIEpTQzo6SlNWYWx1ZSBwcm9taXNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9taXNlRGVmZXJyZWQtPnByb21pc2UoKTsgfTsKKworcHJvdGVjdGVkOgorICAg
IFJlZjxEZWZlcnJlZFByb21pc2U+IG1fcHJvbWlzZURlZmVycmVkOworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZT4gCitjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQgOiBwdWJsaWMgRE9N
UHJvbWlzZURlZmVycmVkQmFzZSB7CitwdWJsaWM6CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVy
cmVkQmFzZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTsKKyAgICB1c2luZyBET01Qcm9taXNlRGVm
ZXJyZWRCYXNlOjpvcGVyYXRvcj07CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6
cHJvbWlzZTsKKyAgICB1c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpyZWplY3Q7CisKKyAg
ICB2b2lkIHJlc29sdmUodHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1ZSkKKyAg
ICB7IAorICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+cmVzb2x2ZTxJRExUeXBlPihzdGQ6OmZv
cndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKTsKKyAgICB9Cit9
OworCit0ZW1wbGF0ZTw+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiA6IHB1YmxpYyBE
T01Qcm9taXNlRGVmZXJyZWRCYXNlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBET01Qcm9taXNlRGVm
ZXJyZWRCYXNlOjpET01Qcm9taXNlRGVmZXJyZWRCYXNlOworICAgIHVzaW5nIERPTVByb21pc2VE
ZWZlcnJlZEJhc2U6Om9wZXJhdG9yPTsKKyAgICB1c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNl
Ojpwcm9taXNlOworICAgIHVzaW5nIERPTVByb21pc2VEZWZlcnJlZEJhc2U6OnJlamVjdDsKKwor
ICAgIHZvaWQgcmVzb2x2ZSgpCisgICAgeyAKKyAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJl
c29sdmUoKTsKKyAgICB9Cit9OworCisKK1JlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVy
cmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NV2luZG93Jik7CisKK3ZvaWQgZnVsZmls
bFByb21pc2VXaXRoSlNPTihSZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBjb25zdCBTdHJpbmcmKTsK
K3ZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiwgQXJyYXlCdWZmZXIqKTsKK3ZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlamVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoSlNDOjpFeGVjU3RhdGUmLCBK
U0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgY3JlYXRlUmVqZWN0ZWRQcm9taXNlV2l0aFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0
ZSYsIGNvbnN0IFN0cmluZyYpOworCit1c2luZyBQcm9taXNlRnVuY3Rpb24gPSB2b2lkKEpTQzo6
RXhlY1N0YXRlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisKK2VudW0gY2xhc3MgUHJvbWlz
ZUV4ZWN1dGlvblNjb3BlIHsgV2luZG93T25seSwgV2luZG93T3JXb3JrZXIgfTsKKwordGVtcGxh
dGU8UHJvbWlzZUZ1bmN0aW9uIHByb21pc2VGdW5jdGlvbiwgUHJvbWlzZUV4ZWN1dGlvblNjb3Bl
IGV4ZWN1dGlvblNjb3BlPgoraW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9u
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgSlNDOjpKU1Byb21pc2VEZWZl
cnJlZCogcHJvbWlzZURlZmVycmVkID0gSlNDOjpKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZz
dGF0ZSwgJmdsb2JhbE9iamVjdCk7CisKKyAgICAvLyBwcm9taXNlRGVmZXJyZWQgY2FuIGJlIG51
bGwgd2hlbiB0ZXJtaW5hdGluZyBhIFdvcmtlciBhYnJ1cHRseS4KKyAgICBpZiAoZXhlY3V0aW9u
U2NvcGUgPT0gUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlciAmJiAhcHJvbWlz
ZURlZmVycmVkKQorICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworCisgICAgcHJv
bWlzZUZ1bmN0aW9uKHN0YXRlLCBEZWZlcnJlZFByb21pc2U6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
ICpwcm9taXNlRGVmZXJyZWQpKTsKKworICAgIHJlamVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZB
bnkoc3RhdGUsIGdsb2JhbE9iamVjdCwgKnByb21pc2VEZWZlcnJlZCk7CisgICAgQVNTRVJUX1VO
VVNFRChzY29wZSwgIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gcHJvbWlzZURlZmVy
cmVkLT5wcm9taXNlKCk7Cit9CisKK3VzaW5nIEJpbmRpbmdQcm9taXNlRnVuY3Rpb24gPSBKU0M6
OkVuY29kZWRKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7
Cit0ZW1wbGF0ZTxCaW5kaW5nUHJvbWlzZUZ1bmN0aW9uIGJpbmRpbmdGdW5jdGlvbj4KK2lubGlu
ZSB2b2lkIGJpbmRpbmdQcm9taXNlRnVuY3Rpb25BZGFwdGVyKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIGJpbmRpbmdGdW5jdGlv
bigmc3RhdGUsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit0ZW1wbGF0ZTxCaW5kaW5nUHJvbWlz
ZUZ1bmN0aW9uIGJpbmRpbmdQcm9taXNlRnVuY3Rpb24sIFByb21pc2VFeGVjdXRpb25TY29wZSBl
eGVjdXRpb25TY29wZT4KK2lubGluZSBKU0M6OkpTVmFsdWUgY2FsbFByb21pc2VGdW5jdGlvbihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgcmV0dXJuIGNhbGxQcm9taXNlRnVuY3Rpb248
YmluZGluZ1Byb21pc2VGdW5jdGlvbkFkYXB0ZXI8YmluZGluZ1Byb21pc2VGdW5jdGlvbj4sIGV4
ZWN1dGlvblNjb3BlPihzdGF0ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApp
bmRleCBlZjM3YWVhYWQ4MDRhY2I0ZGI2MzQ0MjE3YjgwNjY4YmYzNjBhMjUwLi40MTBkZTc2NDMy
ZDI4MzkyNTQzM2YyZDA3MmIwOWRiOTc2NGYwNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBA
CiAjaW5jbHVkZSAiSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiSlND
cnlwdG9LZXkuaCIKICNpbmNsdWRlICJKU0NyeXB0b0tleVBhaXIuaCIKLSNpbmNsdWRlICJKU0RP
TVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTRWNLZXlQYXJhbXMuaCIKICNpbmNsdWRlICJK
U0VjZGhLZXlEZXJpdmVQYXJhbXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViR1BVQ29tbWFuZEJ1ZmZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRCdWZmZXJDdXN0b20uY3BwCmluZGV4IDJmYjNmMGI5
MjI2MjJkNDZhOTIyZjdiNjJiOTY4ZjhjZWU4ZDg0ZTIuLjkzMGM0ZmQzYTdmMWU0ZDhmODM0ZTcy
NGU5NjQ0ODRiMjg0M2U1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR1BVQ29tbWFuZEJ1ZmZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJHUFVDb21tYW5kQnVmZmVyQ3VzdG9tLmNwcApAQCAtMjksNyArMjksNyBA
QAogI2lmIEVOQUJMRShXRUJHUFUpCiAKICNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0j
aW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFs
dWUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRT
dWJ0bGVDcnlwdG9DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJL
aXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCmluZGV4IDYzOGIzN2U0YWM1MWVmZjhmY2Q2Y2JkYWIz
YzIwOWQzZmZmMWFiNjYuLjRjYjNlMmM1ZTkwMzM4Y2U3ZWNjZGU2MjhkNGI3OTZhMDc1ZWI2NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5
cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1
YnRsZUNyeXB0b0N1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJKU0NyeXB0
b0tleVBhaXIuaCIKICNpbmNsdWRlICJKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaCIKICNp
bmNsdWRlICJKU0NyeXB0b09wZXJhdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2Uu
aCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZGJkZWJiYTE1YTQwMjMwOTVk
NGZlMDZiNTZhZjQ3ZjNkMDRmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApA
QCAtMCwwICsxLDI5OSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmgiCisKKyNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmdDYWxsZXIuaCIKKyNp
bmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0
ZW1wbGF0ZTw+IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQgY29udmVydERpY3Rpb25h
cnk8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdD4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGJvb2wgaXNOdWxsT3JVbmRlZmlu
ZWQgPSB2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOworICAgIGF1dG8qIG9iamVjdCA9IGlzTnVs
bE9yVW5kZWZpbmVkID8gbnVsbHB0ciA6IHZhbHVlLmdldE9iamVjdCgpOworICAgIGlmIChVTkxJ
S0VMWSghaXNOdWxsT3JVbmRlZmluZWQgJiYgIW9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Cisg
ICAgaWYgKFVOTElLRUxZKG9iamVjdCAmJiBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RU
eXBlKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJ
bml0IHJlc3VsdDsKKyAgICBKU1ZhbHVlIGJ1YmJsZXNWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVk
ID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmc3RhdGUsICJidWJibGVzIikpOworICAgIGlmICghYnViYmxlc1ZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmJ1YmJsZXMgPSBjb252ZXJ0PElETEJvb2xlYW4+KHN0
YXRlLCBidWJibGVzVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdC5idWJibGVzID0gZmFsc2U7Cisg
ICAgSlNWYWx1ZSBjYW5jZWxhYmxlVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZp
bmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRl
LCAiY2FuY2VsYWJsZSIpKTsKKyAgICBpZiAoIWNhbmNlbGFibGVWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIHJlc3VsdC5jYW5jZWxhYmxlID0gY29udmVydDxJRExCb29sZWFuPihzdGF0
ZSwgY2FuY2VsYWJsZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQuY2FuY2VsYWJsZSA9IGZhbHNl
OworICAgIEpTVmFsdWUgY29tcG9zZWRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRl
ZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3Rh
dGUsICJjb21wb3NlZCIpKTsKKyAgICBpZiAoIWNvbXBvc2VkVmFsdWUuaXNVbmRlZmluZWQoKSkg
eworICAgICAgICByZXN1bHQuY29tcG9zZWQgPSBjb252ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBj
b21wb3NlZFZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQuY29tcG9zZWQgPSBmYWxzZTsKKyAgICBK
U1ZhbHVlIHByb21pc2VWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6
IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJwcm9t
aXNlIikpOworICAgIGlmICghcHJvbWlzZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAg
cmVzdWx0LnByb21pc2UgPSBjb252ZXJ0PElETFByb21pc2U8SURMQW55Pj4oc3RhdGUsIHByb21p
c2VWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
KyAgICB9IGVsc2UgeworICAgICAgICB0aHJvd1JlcXVpcmVkTWVtYmVyVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCAicHJvbWlzZSIsICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50SW5pdCIs
ICJQcm9taXNlIik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIEpTVmFsdWUgcmVh
c29uVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicmVhc29uIikpOworICAg
IGlmICghcmVhc29uVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQucmVhc29u
ID0gY29udmVydDxJRExBbnk+KHN0YXRlLCByZWFzb25WYWx1ZSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0
LnJlYXNvbiA9IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gQXR0
cmlidXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dFByb21pc2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dFJlYXNvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CisKK2NsYXNzIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlPih2
bS5oZWFwKSkgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAg
ICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3Ry
dWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0m
KTsKK307CisKK3VzaW5nIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OworCit0ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKj4oc3Rh
dGUtPmpzQ2FsbGVlKCkpOworICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKKyAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgIGF1dG8gdHlwZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRvIGV2ZW50SW5pdERpY3QgPSBjb252ZXJ0
PElETERpY3Rpb25hcnk8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdD4+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1dG8gb2JqZWN0ID0gVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlKCpzdGF0ZSwgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShl
dmVudEluaXREaWN0KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0
ZWQ8SURMSW50ZXJmYWNlPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+Pigqc3RhdGUsICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7Cit9CisKK3RlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU0V2ZW50OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmds
b2JhbE9iamVjdCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnByb3RvdHlwZSh2
bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmlu
Zygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiKSkp
LCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29u
c3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBEb250RW51bSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAicHJvbWlzZSIsIFJlYWRPbmx5
IHwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJv
bWlzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKKyAgICB7ICJyZWFzb24iLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbiksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKK307CisKK2Nv
bnN0IENsYXNzSW5mbyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3Rv
dHlwZSkgfTsKKwordm9pZCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQ
cm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpzX2luZm8gPSB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQpIH07CisKK0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4mJiBpbXBs
KQorICAgIDogSlNFdmVudChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkK
K3sKK30KKwordm9pZCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKKworfQorCitKU09iamVjdCogSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5
cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU0V2ZW50Ojpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudDo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudD4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudCogQmluZGluZ0NhbGxlcjxKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Kj4oc3RhdGUudm0oKSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50UHJvbWlzZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQm
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OjphdHRyaWJ1dGU8anNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50UHJvbWlzZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21p
c2U+KHN0YXRlLCB0aGlzVmFsdWUsICJwcm9taXNlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYgdGhpc09iamVjdCwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFByb21pc2U8SURMQW55Pj4oaW1wbC5wcm9t
aXNlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50JiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OjphdHRyaWJ1dGU8
anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29uR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVl
LCAicmVhc29uIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMQW55PihpbXBsLnJlYXNvbigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudFByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQ6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3Qt
Pmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93
bmNhc3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKKyAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IK
KyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKK30KKworSlNWYWx1ZSBKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKKyNpZiBFTkFCTEUoQklORElO
R19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/
XzdUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNl
CitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyNVRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOworI2lmIFBMQVRGT1JNKFdJTikK
KyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQq
PihfX2lkZW50aWZpZXIoIj8/XzdUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50QFdlYkNvcmVAQDZC
QCIpKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dl
YkNvcmUyNVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRFWzJdOworI2lmIENPTVBJTEVSKENMQU5H
KQorICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCBkb2VzIG5v
dCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisg
ICAgc3RhdGljX2Fzc2VydChfX2lzX3BvbHltb3JwaGljKFRlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQpLCAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCBpcyBub3QgcG9seW1vcnBoaWMiKTsKKyNl
bmRpZgorI2VuZGlmCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVy
IGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudCBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCBoYXMg
c3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5
IHJlcXVpcmUgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCB5b3UgdG8gb3B0IG91dCBvZiBiaW5k
aW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24g
YXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FT
U0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5k
aWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pihn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGds
b2JhbE9iamVjdCwgaW1wbCk7Cit9CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzYzRjZmZkNzk3OTY3YTUzMmFkOTBlZmI1YjgxMzQ2
YWYyMmZlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmgKQEAgLTAsMCArMSw3MyBA
QAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpT
RE9NQ29udmVydC5oIgorI2luY2x1ZGUgIkpTRXZlbnQuaCIKKyNpbmNsdWRlICJUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50IDogcHVibGljIEpTRXZlbnQgeworcHVibGljOgorICAgIHVz
aW5nIEJhc2UgPSBKU0V2ZW50OworICAgIHVzaW5nIERPTVdyYXBwZWQgPSBUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50OworICAgIHN0YXRpYyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqIGNy
ZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4mJiBpbXBsKQorICAgIHsKKyAg
ICAgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4oZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApKSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6SlNUeXBlKEpTRXZlbnRUeXBlKSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiB3cmFwcGVkKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Jj4oQmFzZTo6d3Jh
cHBlZCgpKTsKKyAgICB9Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudD4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsK
K307CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Jik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kiwg
UmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYgaW1wbCkg
eyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1w
bC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+
IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ7
CisgICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQqOworfTsKK3RlbXBsYXRlPD4gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdCBjb252
ZXJ0RGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0PihKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1NmE5NDkxYWQ3YTUxMTdj
NThhMTdhMWY4ODg3NTBlYWZiODdjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5pZGwKQEAg
LTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK1sKKyAgICBDb25zdHJ1Y3RvcihET01TdHJpbmcgdHlwZSwgVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudEluaXQgZXZlbnRJbml0RGljdCksCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3Jp
cHRTdGF0ZSwKKyAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKK10gaW50ZXJmYWNlIFRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQgOiBFdmVudCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFBy
b21pc2U8YW55PiBwcm9taXNlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgcmVhc29uOwor
fTsKKworZGljdGlvbmFyeSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50SW5pdCA6IEV2ZW50SW5p
dCB7CisgICAgcmVxdWlyZWQgUHJvbWlzZTxhbnk+IHByb21pc2U7CisgICAgYW55IHJlYXNvbjsK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZS5oCmluZGV4IDBiMDZjZTk3NzI4M2I3NmQzMTU1MWViODk4ZTI2
YmQ0MTg5ZWJlNTIuLjgxMzQwM2FlNzhkMjJlMzkwYTY5NzYwZWY5NDc2MzZhNDZjZTJiM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJDU1NGb250
RmFjZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJKU0RPTVBy
b21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNzMsNyArNzMsNyBA
QCBjbGFzcyBGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlPiwgcHJp
dmF0ZSBDU1NGb250RmFjZTo6Q2xpZW50CiAgICAgZW51bSBjbGFzcyBMb2FkU3RhdHVzIHsgVW5s
b2FkZWQsIExvYWRpbmcsIExvYWRlZCwgRXJyb3IgfTsKICAgICBMb2FkU3RhdHVzIHN0YXR1cygp
IGNvbnN0OwogCi0gICAgdXNpbmcgUHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPEZv
bnRGYWNlPj47CisgICAgdXNpbmcgUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRl
cmZhY2U8Rm9udEZhY2U+PjsKICAgICBzdGQ6Om9wdGlvbmFsPFByb21pc2U+JiBwcm9taXNlKCkg
eyByZXR1cm4gbV9wcm9taXNlOyB9CiAgICAgdm9pZCByZWdpc3RlckxvYWRlZChQcm9taXNlJiYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCmluZGV4IGZhOGZlMmExYzgzOTAzZTIzNWQ4Y2Jm
NDk4ZmRjZDJiM2E3ODdkYTYuLmU4NGQwOTVlY2NiZGFiMDA3ODY4MDE0YjIzODYyMjA0MmNlMTM5
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTZXQuaCIKICNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYs
MTQgKzQ2LDE0IEBAIGNsYXNzIEZvbnRGYWNlU2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8
Rm9udEZhY2VTZXQ+LCBwcml2YXRlIENTU0ZvbnRGYWNlU2V0CiAgICAgYm9vbCByZW1vdmUoRm9u
dEZhY2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICB1c2luZyBMb2FkUHJvbWlzZSA9IERP
TVByb21pc2U8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEZvbnRGYWNlPj4+OworICAgIHVzaW5n
IExvYWRQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETEludGVyZmFj
ZTxGb250RmFjZT4+PjsKICAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBT
dHJpbmcmIHRleHQsIExvYWRQcm9taXNlJiYpOwogICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGNoZWNr
KGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKIAogICAgIGVudW0gY2xh
c3MgTG9hZFN0YXR1cyB7IExvYWRpbmcsIExvYWRlZCB9OwogICAgIExvYWRTdGF0dXMgc3RhdHVz
KCkgY29uc3Q7CiAKLSAgICB1c2luZyBSZWFkeVByb21pc2UgPSBET01Qcm9taXNlPElETEludGVy
ZmFjZTxGb250RmFjZVNldD4+OworICAgIHVzaW5nIFJlYWR5UHJvbWlzZSA9IERPTVByb21pc2VE
ZWZlcnJlZDxJRExJbnRlcmZhY2U8Rm9udEZhY2VTZXQ+PjsKICAgICB2b2lkIHJlZ2lzdGVyUmVh
ZHkoUmVhZHlQcm9taXNlJiYpOwogCiAgICAgQ1NTRm9udEZhY2VTZXQmIGJhY2tpbmcoKSB7IHJl
dHVybiBtX2JhY2tpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
bGVtZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0
cnkuaAppbmRleCAxMTIwOTdiMWMyODNmOGMwODQ0N2YxZDBhYzMxNWZmYzZlM2ExYjJjLi5lZmRm
YzI0NjI2ODZiZGU2NzU2NGFkNGJmYTUyODBiYjk4M2QwNjMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNl
RGVmZXJyZWQuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQuaAppbmRleCAwZmIxYTRjMGEwNjE5N2Q0M2MwMDZmYmM3
MzA0Nzc0ZmIzMTM3ZTcyLi4xNjQyNzU3NjIwNjk5ZTE3MTE0YTgxN2Q5NmFlNjJjYjUyZGFjYmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rpb25FdmVudC5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAi
SlNET01Qcm9taXNlLmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzMsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQcm9t
aXNlUmVqZWN0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgogICAgIHN0
cnVjdCBJbml0IDogRXZlbnRJbml0IHsKLSAgICAgICAgSlNDOjpKU1ZhbHVlIHByb21pc2U7Cisg
ICAgICAgIEpTQzo6SlNQcm9taXNlKiBwcm9taXNlOwogICAgICAgICBKU0M6OkpTVmFsdWUgcmVh
c29uOwogICAgIH07CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xhc3MgUHJvbWlzZVJlamVjdGlvbkV2
ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIAogICAgIHZpcnR1YWwgflByb21pc2VSZWplY3Rp
b25FdmVudCgpOwogCi0gICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBjb25zdCB7IHJldHVybiBt
X3Byb21pc2UuZ2V0KCk7IH0KKyAgICBKU0M6OkpTUHJvbWlzZSYgcHJvbWlzZSgpIGNvbnN0IHsg
cmV0dXJuICptX3Byb21pc2UuZ2V0KCk7IH0KICAgICBKU0M6OkpTVmFsdWUgcmVhc29uKCkgY29u
c3QgeyByZXR1cm4gbV9yZWFzb24uZ2V0KCk7IH0KIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50
SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUHJvbWlzZVJlamVjdGlvbkV2ZW50
SW50ZXJmYWNlVHlwZTsgfQpAQCAtNTIsNyArNTMsNyBAQCBjbGFzcyBQcm9taXNlUmVqZWN0aW9u
RXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHJpdmF0ZToKICAgICBQcm9taXNlUmVqZWN0
aW9uRXZlbnQoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBJbml0
JiwgSXNUcnVzdGVkKTsKIAotICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gbV9wcm9taXNl
OworICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNQcm9taXNlPiBtX3Byb21pc2U7CiAgICAgSlNDOjpT
dHJvbmc8SlNDOjpVbmtub3duPiBtX3JlYXNvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcAppbmRleCA1ZDFmOTI0ZTA4YjhhNWNjNTI0YmU1
ZTYzODQ0OGYwZThmODUzYTY5Li42NWQ5NDE2NGU0ZDFlZGNlOGJkNDU0NDFhNzdmZTNhYzE3Mjc2
MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVqZWN0ZWRQcm9taXNlVHJhY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIuY3Bw
CkBAIC01MywzMyArNTMsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVqZWN0ZWRQ
cm9taXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWplY3RlZFByb21pc2UpOwogcHVi
bGljOgotICAgIFJlamVjdGVkUHJvbWlzZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIEpTUHJvbWlzZSYgcHJvbWlzZSkKLSAgICAgICAgOiBtX2dsb2JhbE9iamVjdCh2
bSwgJmdsb2JhbE9iamVjdCkKLSAgICAgICAgLCBtX3Byb21pc2Uodm0sICZwcm9taXNlKQorICAg
IFJlamVjdGVkUHJvbWlzZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1Byb21p
c2UmIHByb21pc2UpCisgICAgICAgIDogbV9wcm9taXNlKERPTVByb21pc2U6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIHByb21pc2UpKQogICAgIHsKICAgICB9CiAKICAgICBSZWplY3RlZFByb21pc2Uo
UmVqZWN0ZWRQcm9taXNlJiYpID0gZGVmYXVsdDsKIAotICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QoKQorICAgIERPTVByb21pc2UmIHByb21pc2UoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICptX2dsb2JhbE9iamVjdC5nZXQoKTsKLSAgICB9Ci0KLSAgICBKU1Byb21pc2UmIHBy
b21pc2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICptX3Byb21pc2UuZ2V0KCk7CisgICAgICAg
IHJldHVybiBtX3Byb21pc2UuZ2V0KCk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFN0cm9uZzxK
U0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7Ci0gICAgU3Ryb25nPEpTUHJvbWlzZT4g
bV9wcm9taXNlOworICAgIFJlZjxET01Qcm9taXNlPiBtX3Byb21pc2U7CiB9OwogCiBjbGFzcyBV
bmhhbmRsZWRQcm9taXNlIDogcHVibGljIFJlamVjdGVkUHJvbWlzZSB7CiBwdWJsaWM6Ci0gICAg
VW5oYW5kbGVkUHJvbWlzZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTUHJvbWlzZSYgcHJvbWlzZSwgUmVmPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFjaykKLSAgICAg
ICAgOiBSZWplY3RlZFByb21pc2Uodm0sIGdsb2JhbE9iamVjdCwgcHJvbWlzZSkKKyAgICBVbmhh
bmRsZWRQcm9taXNlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSYg
cHJvbWlzZSwgUmVmPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFjaykKKyAgICAgICAgOiBSZWplY3Rl
ZFByb21pc2UoZ2xvYmFsT2JqZWN0LCBwcm9taXNlKQogICAgICAgICAsIG1fc3RhY2soV1RGTW92
ZShzdGFjaykpCiAgICAgewogICAgIH0KQEAgLTExNiwxNyArMTA5LDE5IEBAIHZvaWQgUmVqZWN0
ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlzZVJlamVjdGVkKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9N
R2xvYmFsT2JqZWN0CiB7CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3RoZS1ob3N0cHJvbWlzZXJlamVjdGlvbnRyYWNrZXItaW1w
bGVtZW50YXRpb24KIAotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgSlNWYWx1ZSByZWFz
b24gPSBwcm9taXNlLnJlc3VsdCh2bSk7Ci0gICAgbV9hYm91dFRvQmVOb3RpZmllZFJlamVjdGVk
UHJvbWlzZXMuYXBwZW5kKFVuaGFuZGxlZFByb21pc2UgeyB2bSwgZ2xvYmFsT2JqZWN0LCBwcm9t
aXNlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGcm9tUmVhc29uKHN0YXRlLCByZWFzb24pIH0pOwor
ICAgIEpTVmFsdWUgcmVhc29uID0gcHJvbWlzZS5yZXN1bHQoc3RhdGUudm0oKSk7CisgICAgbV9h
Ym91dFRvQmVOb3RpZmllZFJlamVjdGVkUHJvbWlzZXMuYXBwZW5kKFVuaGFuZGxlZFByb21pc2Ug
eyBnbG9iYWxPYmplY3QsIHByb21pc2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zyb21SZWFzb24o
c3RhdGUsIHJlYXNvbikgfSk7CiB9CiAKLXZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cHJv
bWlzZUhhbmRsZWQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgSlNQcm9taXNlJiBwcm9taXNlKQordm9pZCBSZWplY3RlZFByb21pc2VUcmFja2VyOjpw
cm9taXNlSGFuZGxlZChFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBKU1Byb21pc2UmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3RoZS1ob3N0cHJvbWlzZXJlamVjdGlvbnRy
YWNrZXItaW1wbGVtZW50YXRpb24KIAogICAgIGJvb2wgcmVtb3ZlZCA9IG1fYWJvdXRUb0JlTm90
aWZpZWRSZWplY3RlZFByb21pc2VzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZdIChVbmhhbmRsZWRQ
cm9taXNlJiB1bmhhbmRsZWRQcm9taXNlKSB7Ci0gICAgICAgIHJldHVybiAmdW5oYW5kbGVkUHJv
bWlzZS5wcm9taXNlKCkgPT0gJnByb21pc2U7CisgICAgICAgIGF1dG8mIGRvbVByb21pc2UgPSB1
bmhhbmRsZWRQcm9taXNlLnByb21pc2UoKTsKKyAgICAgICAgaWYgKGRvbVByb21pc2UuaXNTdXNw
ZW5kZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGRvbVBy
b21pc2UucHJvbWlzZSgpID09ICZwcm9taXNlOwogICAgIH0pOwogICAgIGlmIChyZW1vdmVkKQog
ICAgICAgICByZXR1cm47CkBAIC0xMzQsOSArMTI5LDcgQEAgdm9pZCBSZWplY3RlZFByb21pc2VU
cmFja2VyOjpwcm9taXNlSGFuZGxlZChFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVj
dCYKICAgICBpZiAoIW1fb3V0c3RhbmRpbmdSZWplY3RlZFByb21pc2VzLnJlbW92ZSgmcHJvbWlz
ZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0KLSAgICBt
X2NvbnRleHQucG9zdFRhc2soW3RoaXMsIHJlamVjdGVkUHJvbWlzZSA9IFJlamVjdGVkUHJvbWlz
ZSB7IHZtLCBnbG9iYWxPYmplY3QsIHByb21pc2UgfV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KSBtdXRhYmxlIHsKKyAgICBtX2NvbnRleHQucG9zdFRhc2soW3RoaXMsIHJlamVjdGVkUHJvbWlz
ZSA9IFJlamVjdGVkUHJvbWlzZSB7IGdsb2JhbE9iamVjdCwgcHJvbWlzZSB9XSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICByZXBvcnRSZWplY3Rpb25IYW5kbGVk
KFdURk1vdmUocmVqZWN0ZWRQcm9taXNlKSk7CiAgICAgfSk7CiB9CkBAIC0xNjIsOCArMTU1LDEx
IEBAIHZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cmVwb3J0VW5oYW5kbGVkUmVqZWN0aW9u
cyhWZWN0b3I8VW5oYW5kbGVkUHJvbWlzZT4mCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2
bSk7CiAKICAgICBmb3IgKGF1dG8mIHVuaGFuZGxlZFByb21pc2UgOiB1bmhhbmRsZWRQcm9taXNl
cykgewotICAgICAgICBFeGVjU3RhdGUmIHN0YXRlID0gKnVuaGFuZGxlZFByb21pc2UuZ2xvYmFs
T2JqZWN0KCkuZ2xvYmFsRXhlYygpOwotICAgICAgICBhdXRvJiBwcm9taXNlID0gdW5oYW5kbGVk
UHJvbWlzZS5wcm9taXNlKCk7CisgICAgICAgIFJlZjxET01Qcm9taXNlPiBkb21Qcm9taXNlID0g
dW5oYW5kbGVkUHJvbWlzZS5wcm9taXNlKCk7CisgICAgICAgIGlmIChkb21Qcm9taXNlLT5pc1N1
c3BlbmRlZCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEV4ZWNTdGF0ZSYgc3Rh
dGUgPSAqZG9tUHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAg
YXV0byYgcHJvbWlzZSA9ICpkb21Qcm9taXNlLT5wcm9taXNlKCk7CiAKICAgICAgICAgaWYgKHBy
b21pc2UuaXNIYW5kbGVkKHZtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTc4LDcgKzE3
NCw3IEBAIHZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cmVwb3J0VW5oYW5kbGVkUmVqZWN0
aW9ucyhWZWN0b3I8VW5oYW5kbGVkUHJvbWlzZT4mCiAgICAgICAgIGJvb2wgbmVlZHNEZWZhdWx0
QWN0aW9uID0gdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKIAogICAgICAgICBpZiAobmVl
ZHNEZWZhdWx0QWN0aW9uKQotICAgICAgICAgICAgbV9jb250ZXh0LnJlcG9ydFVuaGFuZGxlZFBy
b21pc2VSZWplY3Rpb24oc3RhdGUsIHVuaGFuZGxlZFByb21pc2UucHJvbWlzZSgpLCB1bmhhbmRs
ZWRQcm9taXNlLmNhbGxTdGFjaygpKTsKKyAgICAgICAgICAgIG1fY29udGV4dC5yZXBvcnRVbmhh
bmRsZWRQcm9taXNlUmVqZWN0aW9uKHN0YXRlLCBwcm9taXNlLCB1bmhhbmRsZWRQcm9taXNlLmNh
bGxTdGFjaygpKTsKIAogICAgICAgICBpZiAoIXByb21pc2UuaXNIYW5kbGVkKHZtKSkKICAgICAg
ICAgICAgIG1fb3V0c3RhbmRpbmdSZWplY3RlZFByb21pc2VzLnNldCgmcHJvbWlzZSwgJnByb21p
c2UpOwpAQCAtMTkyLDExICsxODgsMTYgQEAgdm9pZCBSZWplY3RlZFByb21pc2VUcmFja2VyOjpy
ZXBvcnRSZWplY3Rpb25IYW5kbGVkKFJlamVjdGVkUHJvbWlzZSYmIHJlamVjdGVkUHIKICAgICBW
TSYgdm0gPSBtX2NvbnRleHQudm0oKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
IAotICAgIEV4ZWNTdGF0ZSYgc3RhdGUgPSAqcmVqZWN0ZWRQcm9taXNlLmdsb2JhbE9iamVjdCgp
Lmdsb2JhbEV4ZWMoKTsKKyAgICBSZWY8RE9NUHJvbWlzZT4gZG9tUHJvbWlzZSA9IHJlamVjdGVk
UHJvbWlzZS5wcm9taXNlKCk7CisgICAgaWYgKGRvbVByb21pc2UtPmlzU3VzcGVuZGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0ZSYgc3RhdGUgPSAqZG9tUHJvbWlzZS0+Z2xv
YmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICBhdXRvJiBwcm9taXNlID0gKmRvbVByb21p
c2UtPnByb21pc2UoKTsKIAogICAgIFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdCBpbml0aWFs
aXplcjsKLSAgICBpbml0aWFsaXplci5wcm9taXNlID0gJnJlamVjdGVkUHJvbWlzZS5wcm9taXNl
KCk7Ci0gICAgaW5pdGlhbGl6ZXIucmVhc29uID0gcmVqZWN0ZWRQcm9taXNlLnByb21pc2UoKS5y
ZXN1bHQoc3RhdGUudm0oKSk7CisgICAgaW5pdGlhbGl6ZXIucHJvbWlzZSA9ICZwcm9taXNlOwor
ICAgIGluaXRpYWxpemVyLnJlYXNvbiA9IHByb21pc2UucmVzdWx0KHZtKTsKIAogICAgIGF1dG8g
ZXZlbnQgPSBQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZShzdGF0ZSwgZXZlbnROYW1lcygp
LnJlamVjdGlvbmhhbmRsZWRFdmVudCwgaW5pdGlhbGl6ZXIpOwogICAgIGF1dG8gdGFyZ2V0ID0g
bV9jb250ZXh0LmVycm9yRXZlbnRUYXJnZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCmluZGV4IDg5ZjhlZGIxODM1ZDlkNjIyZDM3MDRmMTQ2YjkxYjdiYWU0ZTEw
MWIuLjk0NzRlNDIwMjIzMTRiZjY3Nzg1NjE2MmY0M2YwODA0YjI1Yjg4YzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQAogI2luY2x1
ZGUgIkhUTUxTb3VyY2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgog
I2luY2x1ZGUgIkpTRE9NRXJyb3IuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTSFRNTE1lZGlhRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMTAx
Miw3ICsxMDEyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVJlc29sdmVQZW5k
aW5nUGxheVByb21pc2VzKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZWplY3RQZW5kaW5n
UGxheVByb21pc2VzKERPTUVycm9yJiBlcnJvcikKIHsKLSAgICBWZWN0b3I8RE9NUHJvbWlzZTx2
b2lkPj4gcGVuZGluZ1BsYXlQcm9taXNlcyA9IFdURk1vdmUobV9wZW5kaW5nUGxheVByb21pc2Vz
KTsKKyAgICBWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBwZW5kaW5nUGxheVByb21p
c2VzID0gV1RGTW92ZShtX3BlbmRpbmdQbGF5UHJvbWlzZXMpOwogCiAgICAgZm9yIChhdXRvJiBw
cm9taXNlIDogcGVuZGluZ1BsYXlQcm9taXNlcykKICAgICAgICAgcHJvbWlzZS5yZWplY3RUeXBl
PElETEludGVyZmFjZTxET01FcnJvcj4+KGVycm9yKTsKQEAgLTEwMjAsNyArMTAyMCw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cmVqZWN0UGVuZGluZ1BsYXlQcm9taXNlcyhET01FcnJvciYg
ZXJyb3IpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlz
ZXMoKQogewotICAgIFZlY3RvcjxET01Qcm9taXNlPHZvaWQ+PiBwZW5kaW5nUGxheVByb21pc2Vz
ID0gV1RGTW92ZShtX3BlbmRpbmdQbGF5UHJvbWlzZXMpOworICAgIFZlY3RvcjxET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4+IHBlbmRpbmdQbGF5UHJvbWlzZXMgPSBXVEZNb3ZlKG1fcGVuZGluZ1Bs
YXlQcm9taXNlcyk7CiAKICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBwZW5kaW5nUGxheVByb21p
c2VzKQogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UHJlbG9hZChjb25zdCBTdHJpbmcmIHByZWxvYWQpCiAg
ICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwcmVsb2FkQXR0ciwgcHJlbG9h
ZCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheShET01Qcm9taXNlPHZvaWQ+JiYg
cHJvbWlzZSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheShET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiBwcm9taXNlKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnBs
YXkoJXApIiwgdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5k
ZXggOTZlMGE5NWQ2ODhlODJhNGUyNzA5OGJlOWMxNTU0MTU5NjQ0MTMwMS4uMThkNmZiZmJkOWQ1
ZjkzOWU4YmQwN2Y4ZWM2YTc1NDNiZTg5Nzk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgVmlkZW9UcmFja0xpc3Q7CiBjbGFz
cyBWaWRlb1RyYWNrUHJpdmF0ZTsKIGNsYXNzIFdlYktpdE1lZGlhS2V5czsKIAotdGVtcGxhdGU8
dHlwZW5hbWU+IGNsYXNzIERPTVByb21pc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRE9N
UHJvbWlzZURlZmVycmVkOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogdXNpbmcgQ3VlSW50
ZXJ2YWxUcmVlID0gUE9ESW50ZXJ2YWxUcmVlPE1lZGlhVGltZSwgVGV4dFRyYWNrQ3VlKj47CkBA
IC0yMzgsNyArMjM4LDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogICAgIGJvb2wgbG9vcCgp
IGNvbnN0OwogICAgIHZvaWQgc2V0TG9vcChib29sIGIpOwogCi0gICAgdm9pZCBwbGF5KERPTVBy
b21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBwbGF5KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxheSgpIG92ZXJyaWRlOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcGF1c2UoKSBvdmVycmlkZTsKQEAgLTg3MSw3ICs4NzEsNyBAQCBjbGFz
cyBIVE1MTWVkaWFFbGVtZW50CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGltZVJh
bmdlczsKICAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKIAotICAgIFZl
Y3RvcjxET01Qcm9taXNlPHZvaWQ+PiBtX3BlbmRpbmdQbGF5UHJvbWlzZXM7CisgICAgVmVjdG9y
PERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gbV9wZW5kaW5nUGxheVByb21pc2VzOwogCiAgICAg
ZG91YmxlIG1fcmVxdWVzdGVkUGxheWJhY2tSYXRlIHsgMSB9OwogICAgIGRvdWJsZSBtX3JlcG9y
dGVkUGxheWJhY2tSYXRlIHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgKaW5kZXggYmYxMWMzZmY2MThmMTVh
NDcwMjU1OThhYTJiZWZkZWFlZjhhN2E3My4uZTgzZDYwZjg1NDhlN2QzY2JkOWE4NjQ0NGY3MDg4
NzEwZjYzNTZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUNvbW1hbmRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFC
TEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Q
cm9taXNlRGVmZXJyZWQuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZDdjZDk2
MDFiZjMwNTdmOGVlMjIyMDllOWMzMWFiYjNkNWQ2MTVmMS4uMjUzOGRlMWNkNjUxMjA3OTI1NDk0
ZjFkYmJiMzY5NWQxNGVlODk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0y
OSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAj
aW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Pci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4K
QEAgLTU3Myw3ICs1NzMsNyBAQCBjbGFzcyBJbnRlcm5hbHMgZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxJbnRlcm5hbHM+LCAgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3RpbwogICAgIHVuc2lnbmVk
IGxvbmcgdHJhY2tBdWRpb1NhbXBsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV90cmFja0F1ZGlv
U2FtcGxlQ291bnQ7IH0KICAgICB1bnNpZ25lZCBsb25nIHRyYWNrVmlkZW9TYW1wbGVDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tWaWRlb1NhbXBsZUNvdW50OyB9CiAgICAgdm9pZCBvYnNl
cnZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrJik7Ci0gICAgdXNpbmcgVHJhY2tG
cmFtZVByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFjZTxJbWFnZURhdGE+PjsKKyAgICB1
c2luZyBUcmFja0ZyYW1lUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8
SW1hZ2VEYXRhPj47CiAgICAgdm9pZCBncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZShUcmFj
a0ZyYW1lUHJvbWlzZSYmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjM1OGJmNzNiNTk4Y2FlZjI5NDFm
NTA4N2IzMzdkZjFjMTY4ZjE0YS4uMGEzNDZjMjJiMzVjZTU1ZWVjZDI0MDY3MTg4ZWJhZDQxYmM3
YWQ4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA1LTAxICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEhhbmRsZSBJRExQcm9taXNlPD4gcHJv
cGVybHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
Njc1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
anMvZG9tL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21p
c2UtY29udmVyc2lvbi1ydWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9t
L3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29u
dmVyc2lvbi1ydWxlLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA1LTAxICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSysgZ2Fy
ZGVuaW5nLiBSZWJhc2VsaW5lIGdpYW50Um93c3BhbiB0ZXN0cyBhZnRlciByMjE1OTE0LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50LXNob3Vs
ZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lvbi1ydWxlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9sbG93LXdl
YmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRl
Mzk3NzdjMmNhOTJiYjVkNjY4ZTBmMjEyNmMyZjIyNDZiNTVlYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9sbG93
LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdCBQcm9taXNlUmVqZWN0aW9uRXZlbnQgY29uc3RydWN0b3IgZm9sbG93cyBXZWJJ
REwgcHJvbWlzZSBjb252ZXJzaW9uIHJ1bGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworUEFTUyBldmVudC5wcm9taXNlIGlzIGFuIGluc3RhbmNlIG9mIFByb21pc2UKK1BBU1MgZXZl
bnQucmVhc29uIGlzICJDYXBwdWNjaW5vIgorUEFTUyB2YWx1ZSBpcyA0MgorUEFTUyBldmVudC5w
cm9taXNlIGlzIGFuIGluc3RhbmNlIG9mIFByb21pc2UKK1BBU1MgZXZlbnQucHJvbWlzZSBpcyBw
cm9taXNlCitQQVNTIGV2ZW50LnJlYXNvbiBpcyAiQ29jb2EiCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21p
c2UtY29udmVyc2lvbi1ydWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vcHJvbWlzZS1yZWpl
Y3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYjA3MGEzNDlmMDE3OGFjZmRlMDdiZjU0MWE0NmNlMGNjMWUxYzA1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21pc2UtcmVqZWN0aW9u
LWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lvbi1ydWxlLmh0bWwK
QEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2VSZWplY3Rpb25FdmVu
dCBjb25zdHJ1Y3RvciBmb2xsb3dzIFdlYklETCBwcm9taXNlIGNvbnZlcnNpb24gcnVsZS4nKTsK
K3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGV2ZW50ID0gbnVsbDsKK3ZhciB2
YWx1ZSA9IG51bGw7Cit2YXIgcHJvbWlzZSA9IG51bGw7CisKK2V2ZW50ID0gbmV3IFByb21pc2VS
ZWplY3Rpb25FdmVudCgicmVqZWN0aW9uaGFuZGxlZCIsIHsKKyAgICBwcm9taXNlOiA0MiwKKyAg
ICByZWFzb246IGBDYXBwdWNjaW5vYAorfSk7CitzaG91bGRCZVR5cGUoYGV2ZW50LnByb21pc2Vg
LCBgUHJvbWlzZWApOworc2hvdWxkQmUoYGV2ZW50LnJlYXNvbmAsIGAiQ2FwcHVjY2lubyJgKTsK
K2V2ZW50LnByb21pc2UudGhlbihmdW5jdGlvbiAodikgeworICAgIHZhbHVlID0gdjsKKyAgICBz
aG91bGRCZShgdmFsdWVgLCBgNDJgKTsKKworICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUo
NDIpOworICAgIGV2ZW50ID0gbmV3IFByb21pc2VSZWplY3Rpb25FdmVudCgicmVqZWN0aW9uaGFu
ZGxlZCIsIHsKKyAgICAgICAgcHJvbWlzZTogcHJvbWlzZSwKKyAgICAgICAgcmVhc29uOiBgQ29j
b2FgCisgICAgfSk7CisKKyAgICBzaG91bGRCZVR5cGUoYGV2ZW50LnByb21pc2VgLCBgUHJvbWlz
ZWApOworICAgIHNob3VsZEJlKGBldmVudC5wcm9taXNlYCwgYHByb21pc2VgKTsKKyAgICBzaG91
bGRCZShgZXZlbnQucmVhc29uYCwgYCJDb2NvYSJgKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30p
OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309038</attachid>
            <date>2017-05-04 05:46:59 -0700</date>
            <delta_ts>2017-05-04 13:42:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166752-20170504214657.patch</filename>
            <type>text/plain</type>
            <size>142443</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTg5ZDlhMjFjZDYxNDdkNzZmNDBjNzZmMGRiNjZlYTNhNzgyOGZhLi5kNmFlZWNmNTllYmE1OTI2
OTlhY2FkMzE2NmZhZDkyYjgxODA4ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNy0wNS0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSlNQcm9taXNlOjpyZXNv
bHZlIHN0YXRpYyBmdW5jdGlvbi4KKyAgICAgICAgVGhpcyBhcHBsaWVzIGBQcm9taXNlLnJlc29s
dmUoKWAgY29udmVyc2lvbiB0byBhIGdpdmVuIHZhbHVlLgorCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnByb21pc2VSZXNvbHZlRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZS5oOgorCiAyMDE3LTA1LTA0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIHN0cmVzcy9jYWxsLWFwcGx5LWV4cG9uZW50aWFsLWJ5dGVjb2RlLXNp
emUuanMubm8tbGxpbnQgZmFpbGluZyBvbiAzMi1iaXQgZGVidWcgZm9yIE9PTSBvbiBleGVjdXRh
YmxlIG1lbW9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQyMmYxMGViMzBhNzEzMDVmZWNiM2U2MDJlNGYzZGVm
OGY5MDQ5ZDcuLjUzYzI2NDdhNWYzNjdkN2QwNjA1ZmEwMjMyNjBhZTk3MjI3MzRkNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMDMgQEAKKzIwMTctMDUtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSGFuZGxlIElETFByb21pc2U8PiBwcm9wZXJs
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbXBsZW1lbnRzIFdlYklETCBQcm9taXNlIHR5cGUgY29udmVyc2lvbi4gQWNjb3JkaW5n
IHRvIHRoZSBzcGVjLAorICAgICAgICBQcm9taXNlIHRha2VzIGEgdmFsdWUgYW5kIGNvbnZlcnQg
aXQgdG8gUHJvbWlzZSBieSB1c2luZyBQcm9taXNlLnJlc29sdmUgZnVuY3Rpb24uCisgICAgICAg
IFdlIGltcGxlbWVudCBKU1Byb21pc2U6OnJlc29sdmUgaW4gSlNDIGFuZCB1c2UgaXQgaW4gSlNE
T01Db252ZXJ0UHJvbWlzZS4KKworICAgICAgICBJbiBjb252ZXJzaW9uIHBoYXNlLCB3ZSBqdXN0
IGNvbnZlcnQgdGhlIHZhbHVlIHRvIEpTQzo6SlNQcm9taXNlKiBhbmQgaG9sZCBpdCBpbgorICAg
ICAgICBQcm9taXNlUmVqZWN0aW9uRXZlbnQuIE9uIHRoZSBvdGhlciBoYW5kLCBJbiB0aGlzIHBh
dGNoLCB3ZSBuZXdseSBpbnRyb2R1Y2UgYSBuZXcKKyAgICAgICAgdHlwZSBET01Qcm9taXNlIGFu
ZCB1c2UgaXQgaW4gUmVqZWN0ZWRQcm9taXNlVHJhY2tlci4gQW5kIHdlIGFsc28gcmVuYW1lIHRo
ZSBwcmV2aW91cworICAgICAgICBET01Qcm9taXNlIHRvIERPTVByb21pc2VEZWZlcnJlZCBzaW5j
ZSBpdCBpcyBjb3JyZXNwb25kaW5nIHRvIEpTUHJvbWlzZURlZmVycmVkLgorICAgICAgICBET01Q
cm9taXNlIGlzIERPTUd1YXJkZWQgb2JqZWN0LiBTbyBpdCBpcyBzdHJvbmdseSByZWZlcmVuY2Vk
IGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICBhbmQgaXQgaXMgd2Vha2x5IHJl
ZmVyZW5jZWQgZnJvbSB0aGUgb2JqZWN0IGl0c2VsZi4gVGhpcyBpcyBpbXBvcnRhbnQgc2luY2Ug
U3Ryb25nPEpTUHJvbWlzZT4KKyAgICAgICAgcmVmZXJlbmNlIGluIEMrKyBvYmplY3QgdGhhdCBo
YXMgYSB3cmFwcGVyIChpbiB0aGlzIGNhc2UsIFByb21pc2VSZWplY3Rpb25FdmVudCkgZWFzaWx5
IGNhdXNlcworICAgICAgICBjeWNsaWMgcmVmZXJlbmNlLiBXZSBob2xkIGl0IGFzIERPTVByb21p
c2UgaW5zdGVhZCBvZiBTdHJvbmc8SlNQcm9taXNlPiBpbiBSZWplY3RlZFByb21pc2VUcmFja2Vy
CisgICAgICAgIHRvIGJyZWFrIHRoZSBjeWNsaWMgcmVmZXJlbmNlIGVkZ2Ugd2l0aCB3ZWFrIHJl
ZmVyZW5jZS4KKworICAgICAgICBJbiB0aGUgbWVhbnRpbWUsIHdlIHN0aWxsIHVzZSBKU0M6OlN0
cm9uZzw+IGluIFByb21pc2VSZWplY3Rpb25FdmVudC4gSXQgbGVha3MgbWVtb3J5IGlmIHByb21p
c2UKKyAgICAgICAgcmVmZXJzIHRoZSB3cmFwcGVyIG9iamVjdCBvZiBQcm9taXNlUmVqZWN0aW9u
RXZlbnQuIEN1c3RvbUV2ZW50IGFsc28gaGFzIHRoZSBzYW1lIHByb2JsZW0uCisgICAgICAgIFRo
aXMgaXMgYSBnZW5lcmFsIHByb2JsZW0gdGhhdCBgYXR0cmlidXRlIGFueWAgY2FuIGNyZWF0ZSBj
eWNsaWMgcmVmZXJlbmNlLiBBbmQgdGhleSBzaG91bGQgYmUKKyAgICAgICAgZml4ZWQgaW4gYSBk
aWZmZXJlbnQgcGF0Y2guCisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBkbyBub3QgdGFrZSB0aGUg
Zm9sbG93aW5nIGFwcHJvYWNoLiBlLmcuIFRoZXJlIGlzIEMrKyBvYmplY3QgdGhhdCByZXByZXNl
bnRzIFByb21pc2UuCisgICAgICAgIEFuZCBpdHMgd3JhcHBlciBvYmplY3QgaXMgSlNQcm9taXNl
IHRoaW5nLiBXaGVuIGV4cG9zaW5nIHRoZSBDKysgb2JqZWN0LCBpdCB3aWxsIGJlIGNvbnZlcnRl
ZCB0byBhCisgICAgICAgIHdyYXBwZXIgb2JqZWN0LiBXZSBkbyBub3QgdGFrZSB0aGlzIGFwcHJv
YWNoIGJlY2F1c2UgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGNhbiB0YWtlIHVzZXItcHJvdmlkZWQg
cHJvbWlzZS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHVzZXJzIGNhbiBjcmVhdGUgUHJvbWlzZVJl
amVjdGlvbkV2ZW50IGluIGEgZm9ybQorICAgICAgICBgbmV3IFByb21pc2VSZWplY3Rpb25FdmVu
dCgiLi4uIiwgeyBwcm9taXNlOiBwcm9taXNlIH0pYC4gSW4gdGhpcyBjYXNlLCBgZXZlbnQucHJv
bWlzZSA9PT0gcHJvbWlzZWAKKyAgICAgICAgaXMgcmVxdWlyZWQuIEFuZCB0aGlzIGlzIG5vdCBz
dWl0YWJsZSBmb3IgdGhlIGFib3ZlIEMrKyBvYmplY3QgbW9kZWwuCisKKyAgICAgICAgTGFyZ2Ug
cGFydCBvZiB0aGlzIHBhdGNoIGlzIG1lY2hhbmljYWwgb25lIHRvIHJlcGxhY2UgRE9NUHJvbWlz
ZSB3aXRoIERPTVByb21pc2VEZWZlcnJlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9ET01X
aW5kb3dGZXRjaC5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvV29ya2Vy
R2xvYmFsU2NvcGVGZXRjaC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZSk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRSZW1vdGVEZXNj
cmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRk
SWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjplbnF1
ZXVlUmVwbGFjZVRyYWNrVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlv
bjo6cmVwbGFjZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2spOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlcGxhY2VUcmFjayk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6YWRkUmVhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpz
ZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9Db250ZXh0OjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYmluZGluZ3MvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQ
cm9taXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNv
bnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNv
bnZlcnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21p
c2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpwcm9taXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OkRPTVByb21pc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRl
ZmVycmVkUHJvbWlzZTo6cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZWplY3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlV2l0aENhbGxiYWNrKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0V2l0aENhbGxiYWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6RGVmZXJyZWRQcm9t
aXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6ZGVmZXJy
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJhc2U6OkRPTVByb21p
c2VCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VCYXNlOjpvcGVy
YXRvcj0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJhc2U6OnJlamVj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6cmVqZWN0VHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6cHJvbWlzZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpyZXNvbHZlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U8dm9pZD46OnJlc29sdmUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Y2FsbFByb21pc2VGdW5jdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRlcik6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWZlcnJlZFByb21pc2U6OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJl
ZFByb21pc2U6OnJlamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpyZWplY3RQcm9taXNlV2l0aEV4
Y2VwdGlvbklmQW55KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURlZmVycmVkUHJvbWlzZSk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWplY3RlZFByb21pc2VXaXRoVHlwZUVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQXNKU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmZ1bGZp
bGxQcm9taXNlV2l0aEpTT04pOgorICAgICAgICAoV2ViQ29yZTo6ZnVsZmlsbFByb21pc2VXaXRo
QXJyYXlCdWZmZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVk
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5o
LgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZmVycmVkUHJvbWlzZTo6cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVmZXJyZWRQcm9taXNlOjpyZWplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQ
cm9taXNlOjpyZXNvbHZlV2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVk
UHJvbWlzZTo6cmVqZWN0V2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVk
UHJvbWlzZTo6RGVmZXJyZWRQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJv
bWlzZTo6ZGVmZXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFz
ZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNl
RGVmZXJyZWRCYXNlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURl
ZmVycmVkQmFzZTo6cmVqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VEZWZlcnJl
ZEJhc2U6OnJlamVjdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVk
QmFzZTo6cHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJyZWQ6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+OjpyZXNv
bHZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxQcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6YmluZGluZ1Byb21pc2VGdW5jdGlvbkFkYXB0ZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dlYkdQVUNvbW1hbmRCdWZmZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
V2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJ
bml0Pik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90
b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudFByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQ6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVy
PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Ojpn
ZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OndyYXBwZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dC5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlckNsaWVudC5oLgorICAgICAgICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAg
ICAqIGNzcy9Gb250RmFjZVNldC5oOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0
cnkuaDoKKyAgICAgICAgKiBkb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50Lmg6CisgICAgICAgICog
ZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0
ZWRQcm9taXNlOjpSZWplY3RlZFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQ
cm9taXNlOjpwcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlVuaGFuZGxlZFByb21pc2U6OlVu
aGFuZGxlZFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlVHJhY2tl
cjo6cHJvbWlzZVJlamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlamVjdGVkUHJvbWlzZVRy
YWNrZXI6OnByb21pc2VIYW5kbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlamVjdGVkUHJvbWlz
ZVRyYWNrZXI6OnJlcG9ydFVuaGFuZGxlZFJlamVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cmVwb3J0UmVqZWN0aW9uSGFuZGxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWplY3RlZFByb21pc2U6Omdsb2JhbE9iamVjdCk6IERlbGV0ZWQuCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnJlamVjdFBlbmRpbmdQbGF5UHJvbWlzZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlzZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheSk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorCiAyMDE3LTA1LTAz
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyMTU2ODYpOiBJbmNyZW1lbnRhbCByZWFkcyBmcm9tIFNoYXJlZEJ1ZmZlciBh
cmUgd3JvbmcgYWZ0ZXIgcjIxNTY4NgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGE0YWI4N2M0ZGJkMTkzMTJjYjk5YWNhODY2YmRi
ZGQyMjU5NjZlNjQuLjUyN2YzMmI1NTQ1MWFkYWE1NTM0MDFlZTgxNTM5Yjk0MmQzZWJhMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTQyOCw2ICs0MjgsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oaW5p
dC52bSwgaXRlcmF0b3JIZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNvZGVHZW5lcmF0b3IoaW5pdC52
bSksIGluaXQub3duZXIpKTsKICAgICAgICAgfSk7CiAKKyAgICBtX3Byb21pc2VSZXNvbHZlRnVu
Y3Rpb24uaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlv
bj4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0
aW5GdW5jdGlvbihpbml0LnZtLCBwcm9taXNlQ29uc3RydWN0b3JSZXNvbHZlQ29kZUdlbmVyYXRv
cihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAgICAgICB9KTsKKwogICAgIG1fbmV3UHJvbWlz
ZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0
aW5GdW5jdGlvbih2bSwgcHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVH
ZW5lcmF0b3Iodm0pLCB0aGlzKSk7CiAgICAgbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1i
b2xGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAg
IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKApAQCAtMTE4Nyw2ICsxMTky
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1
bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVByb21p
c2VGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJv
dG9jb2xGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX3Byb21pc2VS
ZXNvbHZlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CmluZGV4IDdlOWZlY2I3MWFiMTNhMGViMThmNDI3ZGUzODgwNTgxMDNlYmU1OGUuLmIzM2Q2ZDM1
NjQyYWUzM2ZkZTE2MjViOGJkODc4ZmIzODBmYzk3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjY1LDYgKzI2NSw3IEBAIGNsYXNz
IEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAg
IExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFs
dWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9u
PiBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbjsKKyAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJvbWlzZVJlc29sdmVGdW5j
dGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmplY3RQcm90b1ZhbHVlT2ZG
dW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9uZXdQcm9taXNlQ2FwYWJp
bGl0eUZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Z1bmN0aW9uUHJv
dG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uOwpAQCAtNTE1LDYgKzUxNiw3IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpT
RnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJy
YXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGluaXRp
YWxpemVQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVQcm9taXNl
RnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRo
aXMpOyB9CisgICAgSlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0
aW9uKiBvYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0
UHJvdG9WYWx1ZU9mRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNl
Q2FwYWJpbGl0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0
eUZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3Rh
bmNlU3ltYm9sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0
YW5jZVN5bWJvbEZ1bmN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlLmNwcAppbmRleCBhODNkMmJmNTJmNzZhODRmZWE3MGNkYjE0NjM3ZjllMjA3
NGYyMzFiLi5kNzRmYWEwODE3NTU2NmY4MGY5ZDRjZGQyMGEwOGM5ZTY3NzJhODVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKQEAgLTkyLDQgKzkyLDIz
IEBAIGJvb2wgSlNQcm9taXNlOjppc0hhbmRsZWQoVk0mIHZtKSBjb25zdAogICAgIHJldHVybiB2
YWx1ZS5hc0Jvb2xlYW4oKTsKIH0KIAorSlNQcm9taXNlKiBKU1Byb21pc2U6OnJlc29sdmUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPnByb21p
c2VSZXNvbHZlRnVuY3Rpb24oKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEocHJvbWlzZVJlc29sdmVGdW5jdGlvbiwgY2Fs
bERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisKKyAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1
ZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIHByb21pc2VSZXNvbHZlRnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ29uc3RydWN0b3Io
KSwgYXJndW1lbnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
KyAgICBBU1NFUlQocHJvbWlzZS5pbmhlcml0cyh2bSwgSlNQcm9taXNlOjppbmZvKCkpKTsKKyAg
ICByZXR1cm4ganNDYXN0PEpTUHJvbWlzZSo+KHJlc3VsdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAppbmRleCBjN2Q3
ZDk5Y2FhNGQ4NmQyMmM3ZmFiNDBjYzRmM2QwMDUwNDNiYmMwLi4zNDg0NTRiMjU0MTAyZDU2NTJl
MzliY2MwOTE1NjEyNzU1NTI2NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2UuaApAQCAtNTIsNiArNTIsOCBAQCBjbGFzcyBKU1Byb21pc2UgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiAgICAgLy8gVGhpcyBtYXkgcmFpc2UgYSBKUyBleGNlcHRpb24uCiAg
ICAgdm9pZCBpbml0aWFsaXplKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBl
eGVjdXRvcik7CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNQcm9taXNlKiByZXNv
bHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKIHByb3RlY3RlZDoKICAgICBKU1Byb21p
c2UoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDI4MjViZTQzOGQ4ZjQxOTYxYTM1MDA4MTZiZDU5ZjZjNjIwNzdm
NWMuLjVjOWM5ZDE2YTRlZWFiYzZlNGM3YWY1ODMyMWI0YzhjZDJiOGMzMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0xMTYyLDcgKzExNjIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
RE9NR3VhcmRlZE9iamVjdC5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwCi0g
ICAgYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAppbmRleCA3NDQ5NzkzMGUzYjlhZTg5YTRkM2MzZjBj
ZWFkMDcyNTA1ZTgwMDViLi42MWE5ZTVjYTAxNWRlMWRkZTI4ZGMyYTBmYzAwZTBlZjVhMzk2ZmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNl
c3Npb24uY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2lu
Y2x1ZGUgIkxpbmtJY29uQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiTGlua0ljb25UeXBlLmgiCiAj
aW5jbHVkZSAiTWFpbkZyYW1lLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAwY2U4NzVkODkzNTg1ZWUw
MzljZmJmZDU2ZTJhNmE3YzUyYTIwY2VmLi4wNTkyMjQzOWUxMmYyOTIyMTA4MWUzMmM4NzA2Y2Fk
ZGI1ZjViMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAi
R2VuZXJpY1Rhc2tRdWV1ZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlVHlwZS5o
IgogI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvblR5cGUuaCIKICNpbmNsdWRlICJNZWRpYUtleVN0
YXR1cy5oIgpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBNZWRpYUtleVNlc3Npb24gZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYQogICAgIHZv
aWQgY2xvc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCByZW1vdmUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlz
ZTx2b2lkPjsKKyAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+OwogICAgIHZvaWQgcmVnaXN0ZXJDbG9zZWRQcm9taXNlKENsb3NlZFByb21pc2UmJik7CiAK
ICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0
YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1B
Y2Nlc3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
eXN0ZW1BY2Nlc3MuaAppbmRleCBhMTEzZTI2MDEwMDFlZDY3YmY3Y2JmOGRmZjcwNWIxMjM2NDBl
NWM2Li4wYTNiNmUxZDQ4YzA2OTczYmRkZGNmODhhMzQ1MjE5ZTViNzhmMDQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNj
ZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN5c3RlbUFjY2Vzcy5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKIAogI2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKLSNpbmNsdWRlICJKU0RPTVBy
b21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4
IGJkODBiZDJjOTg0M2E4YWY4ZDdkYmFkNWI4NTM1MjU3ZDkwNTFhZDUuLjlhNTlkMTcxMTRlYzNl
ZGJhNjE0NzE3MDk4YWEyZDRmYmZlMzA4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5j
bHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCi0jaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIK
ICNpbmNsdWRlICJNZWRpYUtleVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuaAppbmRleCA0YzIwNGU5NDFmZmI2ZGYz
YjExZTYzOGFkMjIzN2RkNWE3OTM0OWNkLi44MTY1ZmFlYjFmZmM2ZWFjZGQ0MDRkMDVmOGE1NzI3
MzAyNDBhMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL05hdmlnYXRvckVNRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTmF2aWdhdG9yRU1FLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlv
bi5oIgogI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guaAppbmRleCBiM2QxNTc1N2FhZGIzMmUxMTU4NjE1
MDUzYWMxMzZlZTVkZDJkYzkxLi4xM2JmNzVhMmRjODRiMWYzMjg5YWEyNGFlM2Q2ZjljMWE0ZjE5
ZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0RPTVdpbmRvd0Zl
dGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5o
CkBAIC0zMCw3ICszMCw3IEBACiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCi0jaW5jbHVkZSAi
SlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBmZWVhNmRjZjE2Nzc1NzE1ZDZiOWJmMjcx
N2QxZDBiYTg1MmEyMGE2Li44MmI4MzljNmRjOTIyMzA3ZjM2NzZjODMwMzdkY2M4MDhhZTZkNjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTM0LDcgKzM0
LDcgQEAKICNpbmNsdWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIkZldGNoTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIK
KyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlVSTFNlYXJjaFBh
cmFtcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmgKaW5kZXggNGEwZmIzOWYxMGU2MGMyY2M2YjFkNDk4ZDgxNDgyNGZlNzk3MjU0Mi4uMzhiNzY4
OWVkZTJlOTFhYjdhZWViZjcyNjBmYjQ0MzBlNWJjMzhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtMzAsNyArMzAsNyBAQAog
CiAjaWYgRU5BQkxFKEZFVENIX0FQSSkKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmgKaW5kZXggZjVhOWUyNzE3MDY0ZTFmYzI2YmFkN2IyMzNkMjVhNTlmNDAy
YzAxMC4uYTkwNjM3ZmJiY2Q0ZjE1MzQ3NjEzNTkxMWQxOTc4MmIxMDJmMTYwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTUyLDcgKzUyLDcg
QEAgY2xhc3MgRmV0Y2hSZXNwb25zZSBmaW5hbCA6IHB1YmxpYyBGZXRjaEJvZHlPd25lciB7CiAg
ICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBlcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik7CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gcmVkaXJlY3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhdHVzKTsK
IAotICAgIHVzaW5nIEZldGNoUHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPEZldGNo
UmVzcG9uc2U+PjsKKyAgICB1c2luZyBGZXRjaFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8
SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+PjsKICAgICBzdGF0aWMgdm9pZCBmZXRjaChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hQcm9taXNlJiYpOwogCiAg
ICAgdm9pZCBjb25zdW1lKHVuc2lnbmVkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvV29ya2VyR2xvYmFsU2NvcGVGZXRj
aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNo
LmgKaW5kZXggNWJiYjI4Yjg4NTNiZjIxMWE3ZDgyOGU2ZDgwYTkxOWQwZWFlZWZiNS4uNDc3MDY5
ZjM0NGI5OWQ0ZDJkY2Q5MmQ5MzJlYWM1YTUxODM0Zjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmgKQEAgLTMwLDcg
KzMwLDcgQEAKIAogI2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKLSNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5oCmluZGV4IDI4NTVlYTUyZDRlZDMyM2NjMjU4MDkxNGM3ZWUwY2FmYTc3MmVlZDgu
LjkzZjkzODBmZTY2Nzc5ZDMxMmM4M2M2MTEwNTViNWE5ZDdjMDhiZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaApAQCAtMzUsNyAr
MzUsNyBAQAogCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25P
ci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURl
ZmVycmVkLmgiCiAjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAi
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC01Niw4
ICs1Niw4IEBAIGNsYXNzIE1lZGlhRGV2aWNlcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2
aWNlcz4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PCiAKICAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdDsKIAotICAgIHVzaW5nIFByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFj
ZTxNZWRpYVN0cmVhbT4+OwotICAgIHVzaW5nIEVudW1lcmF0ZURldmljZXNQcm9taXNlID0gRE9N
UHJvbWlzZTxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8TWVkaWFEZXZpY2VJbmZvPj4+OworICAg
IHVzaW5nIFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3Ry
ZWFtPj47CisgICAgdXNpbmcgRW51bWVyYXRlRGV2aWNlc1Byb21pc2UgPSBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE1lZGlhRGV2aWNlSW5mbz4+PjsKIAogICAg
IHN0cnVjdCBTdHJlYW1Db25zdHJhaW50cyB7CiAgICAgICAgIFZhcmlhbnQ8Ym9vbCwgTWVkaWFU
cmFja0NvbnN0cmFpbnRzPiB2aWRlbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNw
cAppbmRleCA2ZGZlYzkzMjJmOWI5YzQ0MDhjODc2MTVkMjA4NzkxMzRhYmQyMjE5Li4xZGQwMzli
Y2E4NzQ0NzQ4MDk5M2UwOTEzYmM1M2M3ZDhkMDdmNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb24uY3BwCkBAIC02OTYsNyArNjk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0Rh
dGFDaGFubmVsSGFuZGxlcj4gTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRh
Q2gKICAgICByZXR1cm4gbV9tZWRpYUVuZHBvaW50LT5jcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIo
bGFiZWwsIG9wdGlvbnMpOwogfQogCi12b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6
cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4m
JiB3aXRoVHJhY2ssIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBNZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb246OnJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImIHNlbmRlciwgUmVm
PE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlKQogewogICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9IG1hdGNo
VHJhbnNjZWl2ZXIobV9wZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKSwgWyZzZW5kZXJd
IChSVENSdHBUcmFuc2NlaXZlciYgY3VycmVudCkgewogICAgICAgICByZXR1cm4gJmN1cnJlbnQu
c2VuZGVyKCkgPT0gJnNlbmRlcjsKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIE1lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8
TWVkaWFTdAogICAgIH0pOwogfQogCi12b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6
cmVwbGFjZVRyYWNrVGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwgY29uc3QgU3RyaW5nJiBtaWQs
IFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYgcHJv
bWlzZSkKK3ZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2tUYXNr
KFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBjb25zdCBTdHJpbmcmIG1pZCwgUmVmPE1lZGlhU3RyZWFt
VHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mIHByb21pc2UpCiB7
CiAgICAgaWYgKG1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKaW5kZXggY2U3ZWMzZWQ3OTQzODcyMzUwYjhm
MDdlYWZhNjMyOWI1YjBmN2E2OS4uMWUzMWNkNDUwZmQyNzYxYjIwMjMxZTI0OTliNTE1MjdlMWVh
YTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBA
IGNsYXNzIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBNCiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+
IGdldFJlbW90ZVN0cmVhbXMoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxSVENSdHBSZWNlaXZl
cj4gY3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3Ry
aW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkgZmluYWw7Ci0gICAgdm9pZCBy
ZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVBy
b21pc2U8dm9pZD4mJikgZmluYWw7CisgICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVy
JiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBm
aW5hbDsKIAogICAgIHZvaWQgZW11bGF0ZVBsYXRmb3JtRXZlbnQoY29uc3QgU3RyaW5nJiBhY3Rp
b24pIGZpbmFsOwogCkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIE1lZGlhRW5kcG9pbnRQZWVyQ29u
bmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBNCiAK
ICAgICB2b2lkIGFkZEljZUNhbmRpZGF0ZVRhc2soUlRDSWNlQ2FuZGlkYXRlJik7CiAKLSAgICB2
b2lkIHJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiwgY29uc3QgU3RyaW5nJiBtaWQsIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+Jik7CisgICAgdm9pZCByZXBs
YWNlVHJhY2tUYXNrKFJUQ1J0cFNlbmRlciYsIGNvbnN0IFN0cmluZyYgbWlkLCBSZWY8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Jik7CiAKICAgICBib29sIGxv
Y2FsRGVzY3JpcHRpb25UeXBlVmFsaWRGb3JTdGF0ZShSVENTZHBUeXBlKSBjb25zdDsKICAgICBi
b29sIHJlbW90ZURlc2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUoUlRDU2RwVHlwZSkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcAppbmRleCA2YTZiYTUxNWFlN2VjNDg0MzNiNDE0M2Q3ZWJmYTk5MjNhMjJl
YzRkLi5kZmY0ZWZmZmQxYTdmODg3MDZlZTM5MzgyMDY5ZDM3YTA5MTYwNTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBs
PiBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzSW1wbChjb25zdCBzdGQ6Om9wdGlvbmFsPAogICAgIHJl
dHVybiBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzSW1wbChjb25zdHJhaW50cy52YWx1ZSgpKTsKIH0K
IAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgbV9wcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAppbmRleCAzYjdlYmY5NTM3NTNhMzU0ZmFmNGU5NzY1
ZDI3YWFjODdjMTIxZjg5Li43NTU1NDZlNGM0MTFmM2MzMmIxNGMzZTA5YmU0NzU2OTM2YjYzYTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgogI2luY2x1ZGUgIkRvdWJsZVJhbmdlLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
LSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJl
ZC5oIgogI2luY2x1ZGUgIkxvbmdSYW5nZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCkBAIC0xMDgsNyAr
MTA4LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
U3RyZWFtVHJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NT2IKICAgICBUcmFja0NhcGFiaWxpdGllcyBn
ZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKIAogICAgIGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50
cyYgZ2V0Q29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9Ci0gICAg
dm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0
cmFpbnRzPiYsIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRz
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKTsKIAogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSgpIHsg
cmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlKCk7IH0KICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYgcHJpdmF0ZVRyYWNrKCkgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CkBAIC0xNTIsNyAr
MTUyLDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
U3RyZWFtVHJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NT2IKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+IG1fcHJpdmF0ZTsKIAogICAgIE1lZGlhVHJhY2tDb25zdHJhaW50cyBtX2NvbnN0
cmFpbnRzOwotICAgIHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZTx2b2lkPj4gbV9wcm9taXNlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3Byb21pc2U7CiAg
ICAgV2Vha1B0ckZhY3Rvcnk8TWVkaWFTdHJlYW1UcmFjaz4gbV93ZWFrUHRyRmFjdG9yeTsKIAog
ICAgIGJvb2wgbV9lbmRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXgg
MjI4NTRlYTMwMWMxODI2ZmQ3ODQ5NDUyNzI1ODY4NWUwYjFkMzQwOS4uMjIwMDYxNjIyMjU5N2Nm
ODQwZjRkOGNmYTI3MGZmNTcyNzdiODhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAt
MTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0xvY2FsRGVzY3JpcHRpb25UeXBl
VmFsaWRGb3JTdGF0ZShSVENTZHBUeXBlIHR5cGUsIFJUQ1NpZ25hCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbihS
VENTZXNzaW9uRGVzY3JpcHRpb24mIHNlc3Npb25EZXNjcmlwdGlvbiwgRE9NUHJvbWlzZTx2b2lk
PiYmIHByb21pc2UpCit2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlw
dGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIHNlc3Npb25EZXNjcmlwdGlvbiwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcGVlckNvbm5lY3Rp
b24uaXNDbG9zZWQoKSk7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNSZW1vdGVEZXNjcmlwdGlvblR5cGVWYWxpZEZvclN0YXRlKFJUQ1NkcFR5cGUgdHlwZSwgUlRD
U2lnbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OnNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgc2Vzc2lvbkRlc2Ny
aXB0aW9uLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIHNlc3Np
b25EZXNjcmlwdGlvbiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAg
ICBBU1NFUlQoIW1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSk7CiAKQEAgLTIzNCw3ICsyMzQs
NyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRpb25GYWls
ZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlID0g
c3RkOjpudWxsb3B0OwogfQogCi12b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2Fu
ZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSogaWNlQ2FuZGlkYXRlLCBET01Qcm9taXNlPHZvaWQ+JiYg
cHJvbWlzZSkKK3ZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGUoUlRD
SWNlQ2FuZGlkYXRlKiBpY2VDYW5kaWRhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCiB7CiAgICAgQVNTRVJUKCFtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaAppbmRleCA1NTViZmI4NjViMzNhM2I3Y2U2YjNlN2Y4Y2FkNTg3YTc2
MDZlYmUwLi4xYjg1ZjA4ZDVlZDcyZjY1NGQ5ODI3MTgyMzdhMzc1MmNlMWNkMTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfUlRDKQog
Ci0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUlRDU2lnbmFs
aW5nU3RhdGUuaCIKIApAQCAtNTYsOCArNTYsOCBAQCBzdHJ1Y3QgUlRDRGF0YUNoYW5uZWxJbml0
Owogc3RydWN0IFJUQ09mZmVyT3B0aW9uczsKIAogbmFtZXNwYWNlIFBlZXJDb25uZWN0aW9uIHsK
LXVzaW5nIFNlc3Npb25EZXNjcmlwdGlvblByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFj
ZTxSVENTZXNzaW9uRGVzY3JpcHRpb24+PjsKLXVzaW5nIFN0YXRzUHJvbWlzZSA9IERPTVByb21p
c2U8SURMSW50ZXJmYWNlPFJUQ1N0YXRzUmVwb3J0Pj47Cit1c2luZyBTZXNzaW9uRGVzY3JpcHRp
b25Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxSVENTZXNzaW9uRGVz
Y3JpcHRpb24+PjsKK3VzaW5nIFN0YXRzUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJ
bnRlcmZhY2U8UlRDU3RhdHNSZXBvcnQ+PjsKIH0KIAogdXNpbmcgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kID0gc3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4gKCopKFJU
Q1BlZXJDb25uZWN0aW9uJik7CkBAIC03MSw5ICs3MSw5IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9u
QmFja2VuZCB7CiAKICAgICB2b2lkIGNyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmLCBQZWVy
Q29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmKTsKICAgICB2b2lkIGNyZWF0
ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3Jp
cHRpb25Qcm9taXNlJiYpOwotICAgIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9u
RGVzY3JpcHRpb24mLCBET01Qcm9taXNlPHZvaWQ+JiYpOwotICAgIHZvaWQgc2V0UmVtb3RlRGVz
Y3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKLSAg
ICB2b2lkIGFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUqLCBET01Qcm9taXNlPHZvaWQ+
JiYpOworICAgIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBzZXRSZW1vdGVEZXNjcmlw
dGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7
CisgICAgdm9pZCBhZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYpOwogCiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNo
YW5uZWxIYW5kbGVyPiBjcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgUlRDRGF0YUNoYW5uZWxJbml0JikgPSAwOwogCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIFBl
ZXJDb25uZWN0aW9uQmFja2VuZCB7CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUmVmPFJU
Q1J0cFJlY2VpdmVyPiBjcmVhdGVSZWNlaXZlcihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlk
LCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lkKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
cGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QWRkZWRU
cmFjayhSVENSdHBTZW5kZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UmVtb3ZlZFRy
YWNrKFJUQ1J0cFNlbmRlciYpIHsgfQogCkBAIC0xMzcsNyArMTM3LDcgQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb25CYWNrZW5kIHsKICAgICB2aXJ0dWFsIHZvaWQgZG9TZXRMb2NhbERlc2NyaXB0aW9u
KFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZG9TZXRSZW1v
dGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRvQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKSB7IHBy
b21pc2UucmVzb2x2ZSgpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZE9mSWNlQ2FuZGlkYXRlcyhE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKSB7IHByb21pc2UucmVzb2x2ZSgpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGRvU3RvcCgpID0gMDsKIAogcHJvdGVjdGVkOgpAQCAtMTQ1LDgg
KzE0NSw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CiAKIHByaXZhdGU6CiAgICAg
c3RkOjpvcHRpb25hbDxQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZT4g
bV9vZmZlckFuc3dlclByb21pc2U7Ci0gICAgc3RkOjpvcHRpb25hbDxET01Qcm9taXNlPHZvaWQ+
PiBtX3NldERlc2NyaXB0aW9uUHJvbWlzZTsKLSAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2U8
dm9pZD4+IG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPj4gbV9zZXREZXNjcmlwdGlvblByb21pc2U7CisgICAgc3RkOjpv
cHRpb25hbDxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+IG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlz
ZTsKIAogICAgIGJvb2wgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzIHsgdHJ1ZSB9OwogICAg
IHN0cnVjdCBQZW5kaW5nSUNFQ2FuZGlkYXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTAzNjQ2
YzQ2MjMxMDliNjMzMzhjODk5YTEwMjQyOTA3MDdmMDBjMS4uOTEzMTYwMzcwMThhYzYzZTc5ZTE0
YjViYjczNTJhNDNjMTdjZjFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTIzNCw3ICsyMzQsNyBA
QCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0
aW9ucyYmIG9wdGlvbnMsIFNlc3Npb25EZQogICAgIG1fYmFja2VuZC0+Y3JlYXRlQW5zd2VyKFdU
Rk1vdmUob3B0aW9ucyksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIFJUQ1BlZXJDb25u
ZWN0aW9uOjpxdWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6cXVldWVkU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAg
IExPRyhXZWJSVEMsICJTZXR0aW5nIGxvY2FsIGRlc2NyaXB0aW9uOlxuJXNcbiIsIGRlc2NyaXB0
aW9uLnNkcCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmIChpc0Nsb3NlZCgpKSB7CkBAIC0yNjAs
NyArMjYwLDcgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gUlRDUGVlckNvbm5lY3Rp
b246OnBlbmRpbmdMb2NhbERlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9iYWNrZW5k
LT5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbigpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9u
OjpxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUlRDUGVlckNvbm5lY3Rp
b246OnF1ZXVlZFNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVz
Y3JpcHRpb24sIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgTE9H
KFdlYlJUQywgIlNldHRpbmcgcmVtb3RlIGRlc2NyaXB0aW9uOlxuJXNcbiIsIGRlc2NyaXB0aW9u
LnNkcCgpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgUmVmUHRyPFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OnBlbmRpbmdSZW1vdGVEZXNjcmlw
dGlvbigpIGNvbnMKICAgICByZXR1cm4gbV9iYWNrZW5kLT5wZW5kaW5nUmVtb3RlRGVzY3JpcHRp
b24oKTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRl
KFJUQ0ljZUNhbmRpZGF0ZSogcnRjQ2FuZGlkYXRlLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlz
ZSkKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZEFkZEljZUNhbmRpZGF0ZShSVENJY2VD
YW5kaWRhdGUqIHJ0Y0NhbmRpZGF0ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKIHsKICAgICBMT0coV2ViUlRDLCAiUmVjZWl2ZWQgaWNlIGNhbmRpZGF0ZTpcbiVzXG4iLCBy
dGNDYW5kaWRhdGUgPyBydGNDYW5kaWRhdGUtPmNhbmRpZGF0ZSgpLnV0ZjgoKS5kYXRhKCkgOiAi
bnVsbCIpOwogCkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Zmly
ZUV2ZW50KEV2ZW50JiBldmVudCkKICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotdm9p
ZCBSVENQZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVy
JiBzZW5kZXIsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2
b2lkPiYmIHByb21pc2UpCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRy
YWNrVGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0
aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZFNlbmRlciA9IG1ha2VSZWYo
c2VuZGVyKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHdpdGhUcmFjayA9IFdURk1vdmUo
d2l0aFRyYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICBw
cm90ZWN0ZWRTZW5kZXItPnNldFRyYWNrKFdURk1vdmUod2l0aFRyYWNrKSk7CkBAIC01MjAsNyAr
NTIwLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2so
UlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZjxNZWRpYVMKICAgICB9KTsKIH0KIAotdm9pZCBSVENQ
ZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2Vu
ZGVyLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKCF3aXRoVHJhY2spIHsKICAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbcHJvdGVjdGVkU2VuZGVyID0gbWFr
ZVJlZihzZW5kZXIpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDA0NzQyNmMxNDUzMWU1NDE1ODMy
NTI2NjQ5OTNhMmM0Y2JhMDdmYTAuLmY1ZTVmYzM0OWFiZDcyN2IwZWMwODhiOTEwMGQ3Y2Y2YjBh
YjU3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTc2LDE3ICs3NiwxNyBAQCBjbGFzcyBSVENQZWVyQ29u
bmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVi
bGljIFJUQwogICAgIHZvaWQgcXVldWVkQ3JlYXRlT2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYsIFBl
ZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYpOwogICAgIHZvaWQgcXVl
dWVkQ3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmJiwgUGVlckNvbm5lY3Rpb246OlNlc3Np
b25EZXNjcmlwdGlvblByb21pc2UmJik7CiAKLSAgICB2b2lkIHF1ZXVlZFNldExvY2FsRGVzY3Jp
cHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2
b2lkIHF1ZXVlZFNldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRp
b24+IGxvY2FsRGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uPiBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIFJlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb24+IHBlbmRpbmdMb2NhbERlc2NyaXB0aW9uKCkgY29uc3Q7CiAKLSAg
ICB2b2lkIHF1ZXVlZFNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYs
IERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlv
bihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAg
ICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gcmVtb3RlRGVzY3JpcHRpb24oKSBjb25z
dDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3Jp
cHRpb24oKSBjb25zdDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5n
UmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdDsKIAotICAgIHZvaWQgcXVldWVkQWRkSWNlQ2FuZGlk
YXRlKFJUQ0ljZUNhbmRpZGF0ZSosIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBxdWV1
ZWRBZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiwgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYpOwogCiAgICAgUlRDU2lnbmFsaW5nU3RhdGUgc2lnbmFsaW5nU3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NpZ25hbGluZ1N0YXRlOyB9CiAgICAgUlRDSWNlR2F0aGVyaW5nU3RhdGUgaWNl
R2F0aGVyaW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2ljZUdhdGhlcmluZ1N0YXRlOyB9CkBA
IC0xNDMsNyArMTQzLDcgQEAgY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBSVEMKICAgICB2b2lkIGRpc2Fi
bGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKSB7IG1fYmFja2VuZC0+ZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZygpOyB9CiAgICAgdm9pZCBlbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKSB7
IG1fYmFja2VuZC0+ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7IH0KIAotICAgIHZvaWQg
ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBlbnF1ZXVlUmVwbGFjZVRyYWNr
VGFzayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYpOwogCiAgICAgdm9pZCBjbGVhckNvbnRyb2xsZXIoKSB7IG1fY29udHJv
bGxlciA9IG51bGxwdHI7IH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNzIFJUQ1BlZXJDb25u
ZWN0aW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJs
aWMgUlRDCiAKICAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQgdG8gYmUgdGhlIEJhY2tlbmQKICAgICAvLyBSVENSdHBTZW5kZXI6OkJhY2tlbmQKLSAgICB2
b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4m
JiwgRE9NUHJvbWlzZTx2b2lkPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENS
dHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpIGZpbmFsOwogICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENS
dHBTZW5kZXImKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgdXBkYXRlQ29ubmVjdGlvblN0YXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5jcHAKaW5kZXggMDJmMjliMjAxYzFhYTRhZmRjZGM4MmI2MjdhNDQ5MWEyMTEwMTk5OS4u
MGQ0NjY0MTEyZDU5YjcwYTQzOGNlYTVmNjI2ZWFiNjk1MTJhYjQwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtNzIs
NyArNzIsNyBAQCB2b2lkIFJUQ1J0cFNlbmRlcjo6c2V0VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJh
Y2s+JiYgdHJhY2spCiAgICAgbV90cmFjayA9IFdURk1vdmUodHJhY2spOwogfQogCi12b2lkIFJU
Q1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhU
cmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIFJUQ1J0cFNlbmRlcjo6cmVw
bGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNTdG9wcGVkKCkpIHsKICAg
ICAgICAgcHJvbWlzZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKaW5kZXggM2M1MDdhNjMy
NjUzY2YwNDhkNzBhM2MxYzc4M2RlNWZmODcyMjY0OS4uMzBhNTE1Yjg5ZjZiZDFjZGRhNDZiY2M5
NDE4YjQwOWI5ZGNmMjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlci5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFJUQ1J0cFNlbmRl
ciA6IHB1YmxpYyBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UgewogcHVibGljOgogICAgIGNsYXNz
IEJhY2tlbmQgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFj
ayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2
b2lkPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2Vu
ZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJz
KFJUQ1J0cFNlbmRlciYpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB+QmFja2VuZCgpIHsg
fQogICAgIH07CkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFJUQ1J0cFNlbmRlciA6IHB1YmxpYyBS
VENSdHBTZW5kZXJSZWNlaXZlckJhc2UgewogICAgIHZvaWQgc2V0VHJhY2soUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYpOwogICAgIHZvaWQgc2V0VHJhY2tUb051bGwoKTsKIAotICAgIHZvaWQgcmVw
bGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYp
OworICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFt
ZXRlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggNGQyYmZiYzY1MjUxMGZiZGRjZTcyNzRiZGNl
OGQ2NTg5MGY5OWQ1Yi4uOTYxMjVmZDQ0M2YwODMzZjUzZTczMGI4ZmEzZGJlOGM5YjVhYmViZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCkBAIC00OSw3ICs0OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRXhjZXB0aW9uT3I8dm9pZD4gVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVm
PE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVByb21pc2U8SURM
SW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorRXhjZXB0aW9uT3I8dm9pZD4gVXNl
ck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVkaWFDb25zdHJh
aW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYm
IHZpZGVvQ29uc3RyYWludHMsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFT
dHJlYW0+PiYmIHByb21pc2UpCiB7CiAgICAgYXV0byogdXNlck1lZGlhID0gVXNlck1lZGlhQ29u
dHJvbGxlcjo6ZnJvbShkb2N1bWVudC5wYWdlKCkpOwogICAgIGlmICghdXNlck1lZGlhKQpAQCAt
NjQsNyArNjQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFpbgogICAgIHJldHVybiB7IH07CiB9
CiAKLVVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoRG9jdW1lbnQmIGRvY3VtZW50
LCBVc2VyTWVkaWFDb250cm9sbGVyJiBjb250cm9sbGVyLCBSZWY8TWVkaWFDb25zdHJhaW50c0lt
cGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVv
Q29uc3RyYWludHMsIERPTVByb21pc2U8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9t
aXNlKQorVXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdChEb2N1bWVudCYgZG9jdW1l
bnQsIFVzZXJNZWRpYUNvbnRyb2xsZXImIGNvbnRyb2xsZXIsIFJlZjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlk
ZW9Db25zdHJhaW50cywgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVh
bT4+JiYgcHJvbWlzZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZkb2N1bWVu
dCkKICAgICAsIG1fYXVkaW9Db25zdHJhaW50cyhXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpKQog
ICAgICwgbV92aWRlb0NvbnN0cmFpbnRzKFdURk1vdmUodmlkZW9Db25zdHJhaW50cykpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5oCmluZGV4IDMxNmZlZTE1NDhkOTU0NGUyMTk1MjY3ZDg2ODhiMWVlMjJmN2RhYjEuLmEzZTk2
OTAyOTI2NTc5YWZhZDI4MTQyNzhiZWM2ZTcyZjkwNmM4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCkBAIC0zNSw3
ICszNSw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBVc2VyTWVkaWFDb250cm9sbGVyOwogCiBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDog
cHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4sIHByaXZhdGUgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBz
dGFydChEb2N1bWVudCYsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFp
bnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJv
bWlzZTxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8dm9pZD4gc3RhcnQoRG9jdW1lbnQmLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVk
aW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWlu
dHMsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKIAog
ICAgIHZpcnR1YWwgflVzZXJNZWRpYVJlcXVlc3QoKTsKIApAQCAtNzIsNyArNzIsNyBAQCBjbGFz
cyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4s
IHByaXZhdGUgQ29udGV4dERlcwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBkb2N1bWVu
dCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFVzZXJNZWRpYVJlcXVlc3QoRG9jdW1lbnQmLCBV
c2VyTWVkaWFDb250cm9sbGVyJiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29u
c3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBE
T01Qcm9taXNlPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOworICAgIFVzZXJNZWRpYVJl
cXVlc3QoRG9jdW1lbnQmLCBVc2VyTWVkaWFDb250cm9sbGVyJiwgUmVmPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2
aWRlb0NvbnN0cmFpbnRzLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3Ry
ZWFtPj4mJik7CiAKICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKICAgICAKQEAg
LTg2LDcgKzg2LDcgQEAgY2xhc3MgVXNlck1lZGlhUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFVzZXJNZWRpYVJlcXVlc3Q+LCBwcml2YXRlIENvbnRleHREZXMKICAgICBTdHJpbmcgbV9hbGxv
d2VkQXVkaW9EZXZpY2VVSUQ7CiAKICAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBtX2NvbnRyb2xs
ZXI7Ci0gICAgRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiBtX3Byb21pc2U7
CisgICAgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+IG1fcHJv
bWlzZTsKICAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gbV9wcm90ZWN0b3I7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cAppbmRleCAzMTAyMDRiMmIzYTU1ZDBkN2ZkNWQ3YjVhYTM1MzEzOGMxYjM4ZTFiLi4xODE3ZTY1
ZjdlMzI0ODI0YjQxMjM2MzNjY2VhYjViYmEzNTJmNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTMyOCw3ICszMjgs
NyBAQCB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkUmVtb3RlU3RyZWFt
KFJlZjxNZWRpYVN0cmVhbT4mJiBtZWRpYVN0cgogICAgIG1fcmVtb3RlU3RyZWFtcy5hcHBlbmQo
V1RGTW92ZShtZWRpYVN0cmVhbSkpOwogfQogCi12b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiB0cmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2Vu
ZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoc2VuZGVyLnRyYWNrKCkpOwogICAgIGF1dG8q
IGN1cnJlbnRUcmFjayA9IHNlbmRlci50cmFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA5MmU2OGE2MzgyNDZiYmZmODNi
OWUyNGEzYjc1NzVhZTQ2NmRlM2ZiLi41NDM2ZjhmODliNTg2NTZkMDlmMDAyMmZlOWI0ZDRhMGVh
NWZmYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaApAQCAtNjksNyArNjksNyBAQCBjbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKICAgICBSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25z
dCBmaW5hbDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3Rl
RGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0
cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpIGZp
bmFsOworICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7CiAgICAgUlRDUnRw
UGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwogCiAg
ICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291
cmNlLmgKaW5kZXggOWMxNmNhOGEwN2Q2ZTE3ZjZmYTM3OTU1Yjk2N2Y3ZWIxZmZhYWYwMS4uNDEw
M2FjODI5NTA3NmU5NDhlYzNjNzNhYWJkMmY1YWEyZDg4ZjJhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKQEAgLTMw
LDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIAotI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIFJlYWRhYmxlU3RyZWFtU291cmNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1Tb3VyY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZWFkYWJsZVN0cmVhbVNvdXJjZSgpIHsgfQogCi0gICAgdm9pZCBzdGFydChSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJiYsIERPTVByb21pc2U8dm9pZD4mJik7Ci0gICAgdm9p
ZCBwdWxsKERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyJiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2
b2lkIHB1bGwoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgY2FuY2VsKEpT
Qzo6SlNWYWx1ZSk7CiAKICAgICBib29sIGlzUHVsbGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9w
cm9taXNlOyB9CkBAIC02MywxMSArNjMsMTEgQEAgY2xhc3MgUmVhZGFibGVTdHJlYW1Tb3VyY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gewogICAgIHZpcnR1YWwg
dm9pZCBkb0NhbmNlbCgpID0gMDsKIAogcHJpdmF0ZToKLSAgICBzdGQ6Om9wdGlvbmFsPERPTVBy
b21pc2U8dm9pZD4+IG1fcHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPj4gbV9wcm9taXNlOwogICAgIHN0ZDo6b3B0aW9uYWw8UmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogfTsKIAotaW5saW5lIHZvaWQgUmVhZGFi
bGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiBj
b250cm9sbGVyLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK2lubGluZSB2b2lkIFJlYWRh
YmxlU3RyZWFtU291cmNlOjpzdGFydChSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJiYg
Y29udHJvbGxlciwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBB
U1NFUlQoIW1fcHJvbWlzZSk7CiAgICAgbV9wcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKQEAg
LTc3LDcgKzc3LDcgQEAgaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KFJl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiBjb250cm8KICAgICBkb1N0YXJ0KCk7CiB9
CiAKLWlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtU291cmNlOjpwdWxsKERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQoraW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcHJvbWlz
ZSk7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMTFkZTA0YTk5NzlmYWY4ZDFmYTcy
NjU4OWYxNDQzMDc2YWUzODc2ZC4uMjM1Mjk5Y2JlNTNkZTcwNDI2NjdiZTljYmU4ZWJiZTEzNGZk
YzQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcApAQCAtNTMsNyArNTMsNyBAQAogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgi
CiAjaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFJURlBhbm5lci5o
IgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgiCkBAIC0yODMsNyAr
MjgzLDcgQEAgYm9vbCBBdWRpb0NvbnRleHQ6OmlzSW5pdGlhbGl6ZWQoKSBjb25zdAogICAgIHJl
dHVybiBtX2lzSW5pdGlhbGl6ZWQ7CiB9CiAKLXZvaWQgQXVkaW9Db250ZXh0OjphZGRSZWFjdGlv
bihTdGF0ZSBzdGF0ZSwgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIEF1ZGlvQ29u
dGV4dDo6YWRkUmVhY3Rpb24oU3RhdGUgc3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pc2UpCiB7CiAgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHN0YXRlKTsKICAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkK
QEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3RhdGUgc3Rh
dGUpCiAgICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5zaXplKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxET01Qcm9taXNlPHZvaWQ+PiByZWFjdGlvbnM7Cisg
ICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcmVhY3Rpb25zOwogICAgIG1fc3Rh
dGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOwogCiAgICAgZm9yIChhdXRv
JiBwcm9taXNlIDogcmVhY3Rpb25zKQpAQCAtMTA0MCw3ICsxMDQwLDcgQEAgdm9pZCBBdWRpb0Nv
bnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKICAgICAtLW1fYWN0aXZlU291cmNl
Q291bnQ7CiB9CiAKLXZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kKERPTVByb21pc2U8dm9pZD4m
JiBwcm9taXNlKQordm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmQoRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpKSB7CiAgICAg
ICAgIHByb21pc2UucmVqZWN0KElOVkFMSURfU1RBVEVfRVJSKTsKQEAgLTEwNjksNyArMTA2OSw3
IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQogICAgIH0pOwogfQogCi12b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lKERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBBdWRpb0NvbnRleHQ6OnJlc3VtZShET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkpIHsKICAg
ICAgICAgcHJvbWlzZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwpAQCAtMTA5OCw3ICsxMDk4
LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnJlc3VtZShET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlz
ZSkKICAgICB9KTsKIH0KIAotdm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSkgewogICAg
ICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBlNDExNjhlNzgwY2FkNzYy
Mzk4NDUwY2E5YzE1MzBkYjZjYmY4ZTYzLi40OWJiMTM3Y2M4YWIyMWRkNGY5OGJlMTVjY2FkZmY4
MTgwODMyNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCkBAIC0xMTEs
OSArMTExLDkgQEAgY2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwg
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ28KICAgICB1c2luZyBBY3RpdmVET01P
YmplY3Q6OnN1c3BlbmQ7CiAgICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpyZXN1bWU7CiAKLSAg
ICB2b2lkIHN1c3BlbmQoRE9NUHJvbWlzZTx2b2lkPiYmKTsKLSAgICB2b2lkIHJlc3VtZShET01Q
cm9taXNlPHZvaWQ+JiYpOwotICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAg
ICB2b2lkIHN1c3BlbmQoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgcmVz
dW1lKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIGNsb3NlKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKTsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQs
IFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0
OwpAQCAtMzI5LDcgKzMyOSw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVE
T01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvCiAgICAgdm9pZCBo
YW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOwogICAgIHZvaWQgaGFuZGxlRGlydHlB
dWRpb05vZGVPdXRwdXRzKCk7CiAKLSAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBET01Qcm9t
aXNlPHZvaWQ+JiYpOworICAgIHZvaWQgYWRkUmVhY3Rpb24oU3RhdGUsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmKTsKICAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOwogCiAg
ICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgpAQCAtMzY2LDcgKzM2Niw3
IEBAIGNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVu
ZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOwogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1
ZGlvIHRocmVhZC4KICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVm
TGlzdDsKLSAgICBWZWN0b3I8VmVjdG9yPERPTVByb21pc2U8dm9pZD4+PiBtX3N0YXRlUmVhY3Rp
b25zOworICAgIFZlY3RvcjxWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Pj4gbV9zdGF0
ZVJlYWN0aW9uczsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4g
bV9tZWRpYVNlc3Npb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBt
X2V2ZW50UXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMmE3ZDc5MDQ2M2YxMjYyNzlkZjMyZDg2OWQ5NGNiMmE5NzEzOGE1
YS4uYzYyODJmNTFiMmFjMTM1MmI2MzUxYzg1MzQ5MjkyYzU3ZmE2MTg0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjUyNyw4
ICs2NTI3LDggQEAKIAkJRTE3MkFGNkQxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRo
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcy
QUY2QjE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmNwcCAqLzsgfTsKIAkJRTE3
MkFGNkUxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGNkMxODBGMjRDNjAwRkJBREI5
IC8qIENyeXB0b0FsZ29yaXRobS5oICovOyB9OwogCQlFMTcyQUY3MDE4MEYyODk1MDBGQkFEQjkg
LyogQ3J5cHRvS2V5VXNhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxNzJBRjZGMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oICov
OyB9OwotCQlFMTcyQUY4RjE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjhEMTgxMUJD
MzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwICovOyB9OwotCQlFMTcyQUY5MDE4MTFCQzM3
MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTE3
MkFGOEYxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjhEMTgxMUJDMzcw
MEZCQURCOSAvKiBKU0RPTVByb21pc2VEZWZlcnJlZC5jcHAgKi87IH07CisJCUUxNzJBRjkwMTgx
MUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8q
IEpTRE9NUHJvbWlzZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTE3NUJBOTkxRThBRTMzODAwNzE0NTRGIC8qIEdyaWRQb3NpdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4
MTc0NTFFODk3QTUyMDBGMjJDRDAgLyogR3JpZFBvc2l0aW9uLmNwcCAqLzsgfTsKIAkJRTE3OUYw
REExQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzlGMEQ5MUI5Nzc0RkUwMEVEMEEyNyAvKiBJbnRl
cm5hbHMubW0gKi87IH07CiAJCUUxN0I0OTE1MTZBOUIwOTQwMDFDODgzOSAvKiBUcmFuc2l0aW9u
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE3QjQ5MTMxNkE5QjA5MzAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5jcHAgKi87IH07CkBA
IC02NjU3LDYgKzY2NTcsNyBAQAogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVu
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU4MDJCNjFEQzg0MzVEMDBB
OTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElE
TFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0
NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlFMzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNET01Q
cm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYy
RUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9k
dWxlTG9hZGVyLmNwcCAqLzsgfTsKIAkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlw
dE1vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICov
OyB9OwogCQlFMzk4RkMyNDFEQzMyQTIwMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4RkMyMzFEQzMy
QTFCMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi87IH07CkBAIC0xNTA1Myw4ICsxNTA1
NCw4IEBACiAJCUUxNzJBRjZCMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MkFGNkMxODBGMjRDNjAwRkJBREI5
IC8qIENyeXB0b0FsZ29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
cnlwdG9BbGdvcml0aG0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MkFGNkYx
ODBGMjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENyeXB0b0tleVVzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Qcm9taXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJv
bWlzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVByb21pc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE3MkFGOEQxODExQkMzNzAwRkJBREI5IC8q
IEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NUHJvbWlzZURlZmVycmVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNzY1ODBDMTgwREYzQTAwMDVBOTZEMSAv
KiBPRVNFbGVtZW50SW5kZXhVaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBPRVNFbGVtZW50SW5kZXhVaW50LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3OUYwRDkxQjk3NzRGRTAwRUQwQTI3IC8q
IEludGVybmFscy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElu
dGVybmFscy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3QjQ5MEIxNkE5NzI2
OTAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
VHJhbnNpdGlvbkV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTk3
LDYgKzE1MTk4LDcgQEAKIAkJRTMzNDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzRFRTQ5RjFEQzJENTc1MDBFQUE5RDMgLyogSlNFdmVudEN1c3RvbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNTgwMkI1MURDODQzNTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmls
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVElETFR5cGVGaWx0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3Qzg2NEYxRUI2M0UyRDAwODdD
NkNBIC8qIEpTRE9NUHJvbWlzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RPTVByb21pc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTQxQkFE
MTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxl
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk4RkMyMzFEQzMyQTFCMDAz
QzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBET01KSVRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIzNDAwLDggKzIzNDAyLDkgQEAKIAkJCQk0MTM4Rjg1NjFEMjUzRUVFMDAxQ0I2MUUgLyogSlNE
T01JdGVyYXRvci5oICovLAogCQkJCTQxREVGQ0IzMUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1h
cExpa2UuY3BwICovLAogCQkJCTQxREVGQ0I0MUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1hcExp
a2UuaCAqLywKLQkJCQlFMTcyQUY4RDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNw
cCAqLywKLQkJCQlFMTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggKi8s
CisJCQkJRTM3Qzg2NEYxRUI2M0UyRDAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oICovLAorCQkJ
CUUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2VEZWZlcnJlZC5jcHAgKi8s
CisJCQkJRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmgg
Ki8sCiAJCQkJQkM2OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAg
Ki8sCiAJCQkJQkM2OTMyNzIwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oICov
LAogCQkJCTQ2MENCRjMzMUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMu
Y3BwICovLApAQCAtMjcxOTgsNiArMjcyMDEsNyBAQAogCQkJCUMwQzA1NENDMTExOEM4RTQwMENF
MjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjNGMERC
MERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTM3Qzg2NTAxRUI2M0UzRjAwODdDNkNBIC8qIEpTRE9NUHJv
bWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyMEIwQTExNEQzMzIzNTAwNjQyOTU1IC8qIEdl
bmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDYyRkI5NjFBRjAxOEU3MDAx
MkVEN0QgLyogR2VuZXJpY1Rhc2tRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjQx
NEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzQw
LDcgKzI3NzQ0LDcgQEAKIAkJCQkwRjQ5NjZBQjFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2lu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0OTY2QUQxREI0MEM0MzAwQTI3NEJCIC8qIEpTRE9N
UG9pbnRJbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ5NjZBRjFEQjQwQzQzMDBBMjc0QkIg
LyogSlNET01Qb2ludFJlYWRPbmx5LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTcyQUY5MDE4MTFC
QzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTcyQUY5
MDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNDcxMEJDMURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNDcxMEJFMURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3RJbml0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjQ3MTBDMDFEQjU2QkU4MDAyRENFQzMgLyogSlNET01SZWN0UmVh
ZE9ubHkuaCBpbiBIZWFkZXJzICovLApAQCAtMzE2ODYsNyArMzE2OTAsNyBAQAogCQkJCTBGNDk2
NkFBMURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNDk2NkFDMURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50SW5pdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjQ5NjZBRTFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludFJlYWRPbmx5
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxNzJBRjhGMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RP
TVByb21pc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE3MkFGOEYxODExQkMzNzAwRkJBREI5
IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDcxMEJC
MURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0
NzEwQkQxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdEluaXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY0NzEwQkYxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdFJlYWRPbmx5LmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKaW5kZXggMjgxMjA1MGE2
MTk0ZGNjZmFjYzY5Yjg0MzM1NGNlM2M2YjMwM2NmNS4uYjViMTQyYzliOTFkNjMzN2VjOTA3MmU1
MTNiMjEwYzVjMTY2YzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURM
VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC00OCw3
ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktl
eURhdGE7CiBjbGFzcyBJREJWYWx1ZTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9t
aXNlOworY2xhc3MgRE9NUHJvbWlzZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBJ
RExUeXBlIHsKQEAgLTE4NSw3ICsxODUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFt
ZSBWPiBzdHJ1Y3QgSURMUmVjb3JkIDogSURMVHlwZTxWZWN0b3I8V1RGOjpLZXlWYWx1ZQogICAg
IHVzaW5nIFBhcmFtZXRlclR5cGUgPSBjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8dHlw
ZW5hbWUgSzo6SW1wbGVtZW50YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5
cGU+PiY7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMUHJvbWlzZSA6IElE
TFR5cGU8RE9NUHJvbWlzZTxUPj4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFBy
b21pc2UgOiBJRExUeXBlPERPTVByb21pc2U+IHsKICAgICB1c2luZyBJbm5lclR5cGUgPSBUOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaAppbmRleCA2Y2NkYmNjY2E3N2E5ZWRkNmNjZDFjZTBm
YjMzYTA3YzAxNjk0MjBjLi41NTBlYmI1NTljYWJlZDFiZDFkYjc2MmVmZGE1MmQ3ZTJlMWNjYzVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURl
ZmVycmVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggYTZkM2MxOGQxNDc0MDJk
MjA4MzNhMThhZDM2NzkxODZiM2YzZTVmNS4uMmRjODQxZDQ4ZTFjYzY5MTUyZTU1MTE5OWEyMGE3
NjM4ZmViZDYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRp
bmdzQWxsSW5PbmUuY3BwCkBAIC01MSw3ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5jcHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuY3BwIgogI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmNw
cCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5jcHAiCiAjaW5jbHVkZSAiSlNET01T
dHJpbmdNYXBDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5jcHAiCiAjaW5j
bHVkZSAiSlNET01XaW5kb3dDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwCmluZGV4
IGNmOWU5NmQyNzc2MzE0ODc4ODBkZTVmNTY4ZjI0YTg2NDgxODZiZWUuLjkxOGI5NWQzMDFhY2Rl
Yjg2OTg0ZjVlNjQwNDkwZDQyZWE0NjJlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKLSNpbmNs
dWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnRQcm9taXNlLmgKaW5kZXggYzIyMzcwZTI2NjRjYmU3MjYwMTIwODliYjY5
NTI4OTgyYjllY2Q5MS4uYjRkOTM0NjVlZjNjNTk3YWM0NGZmNDRkMWI5YmVjOWMyMTc1MjQyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFByb21pc2Uu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI3LDMwICsyNyw0NiBAQAogCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gRklYTUU6IEltcGxlbWVudCBJRExQcm9taXNlPD4gY29u
dmVyc2lvbnMuCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2
NzUyCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IENvbnZlcnRlcjxJRExQcm9taXNlPFQ+
PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj4gewotICAgIHVzaW5nIFJldHVyblR5
cGUgPSBKU0M6OkpTVmFsdWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVy
PElETFByb21pc2U8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7CisgICAg
dXNpbmcgUmV0dXJuVHlwZSA9IEpTQzo6SlNQcm9taXNlKjsKIAotICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICAv
LyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1wcm9taXNlCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgor
ICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhj
ZXB0aW9uVGhyb3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICBK
U0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odm0sIHN0YXRlLmxleGljYWxH
bG9iYWxPYmplY3QoKSk7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gMS4gTGV0IHJlc29sdmUgYmUgdGhlIG9yaWdp
bmFsIHZhbHVlIG9mICVQcm9taXNlJS5yZXNvbHZlLgorICAgICAgICAvLyAyLiBMZXQgcHJvbWlz
ZSBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgcmVzb2x2ZSB3aXRoICVQcm9taXNlJSBhcyB0aGUg
dGhpcyB2YWx1ZSBhbmQgViBhcyB0aGUgc2luZ2xlIGFyZ3VtZW50IHZhbHVlLgorICAgICAgICBK
U0M6OkpTUHJvbWlzZSogcHJvbWlzZSA9IEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKGdsb2JhbE9i
amVjdCwgdmFsdWUpOworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
ICAgIGV4Y2VwdGlvblRocm93ZXIoc3RhdGUsIHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwcm9taXNlKTsKKworICAgICAgICAv
LyAzLiBSZXR1cm4gdGhlIElETCBwcm9taXNlIHR5cGUgdmFsdWUgdGhhdCBpcyBhIHJlZmVyZW5j
ZSB0byB0aGUgc2FtZSBvYmplY3QgYXMgcHJvbWlzZS4KKyAgICAgICAgcmV0dXJuIHByb21pc2U7
CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBKU0NvbnZlcnRlcjxJ
RExQcm9taXNlPFQ+PiB7Ci0gICAgdXNpbmcgVHlwZSA9IEpTQzo6SlNWYWx1ZTsKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgbmVlZHNHbG9iYWxPYmplY3QgPSBmYWxzZTsKIAotICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgY29udmVydChKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb252ZXJ0KEpTQzo6SlNQcm9taXNlJiBwcm9taXNlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgICAgICAvLyBUaGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgYW4gSURMIHByb21p
c2UgdHlwZSB2YWx1ZSB0byBhbiBFQ01BU2NyaXB0IHZhbHVlIGlzIHRoZSBQcm9taXNlIHZhbHVl
CisgICAgICAgIC8vIHRoYXQgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBvYmpl
Y3QgdGhhdCB0aGUgSURMIHByb21pc2UgdHlwZSByZXByZXNlbnRzLgorICAgICAgICByZXR1cm4g
JnByb21pc2U7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcAppbmRleCA1ODU1NTNkMTZjMmNmMDY5NGU1
NGY2ZmQ0YzBmNmMyYmExYThlYTcwLi4yMWNmZDRjZDExZGFhNDI2OTNhYTk0MzY3OTU4NzI3ZmE2
YmRlNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlYWRlcnMuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25JbnRlcmZhY2VzLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkpTRHluYW1pY0Rvd25jYXN0LmgiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25C
YXNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAKaW5kZXggNWJkMDZjN2Q5MGQ4OWFiNmZhZjI1YWFiODYxZTQyNTMwZmMyOTliOC4uN2I5
MWVlYzQxNzIxNDE5YmNlYmJjZWFkYTU1ZmYzMGM3Nzk3Mzk0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjgsNyArMjgsNyBA
QAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJKU01lZGlhU3RyZWFtLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM5
NzE3ODhlYTBmNDUwYmIwZTQyODEzODExYzM3ZjcwMGVlYjRlMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVByb21pc2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgi
Ci0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNET01FcnJvci5oIgot
I2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCi0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpbk5hbWVz
Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb24uaD4KLSNpbmNsdWRlIDxydW50aW1lL0pT
T05PYmplY3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNDOjpKU1Zh
bHVlIERlZmVycmVkUHJvbWlzZTo6cHJvbWlzZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGRlZmVy
cmVkKCkpOwotICAgIHJldHVybiBkZWZlcnJlZCgpLT5wcm9taXNlKCk7Ci19Ci0KLXZvaWQgRGVm
ZXJyZWRQcm9taXNlOjpjYWxsRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGZ1bmN0
aW9uLCBKU1ZhbHVlIHJlc29sdXRpb24pCi17Ci0gICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJU
KGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKHJlc29sdXRpb24pOwotCi0gICAgY2Fs
bCgmZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJn
dW1lbnRzKTsKLQotICAgIGNsZWFyKCk7Ci19Ci0KLXZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWpl
Y3QoKQotewotICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBB
U1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
JiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcigmc3RhdGUpOwotICAgIHJlamVjdChzdGF0ZSwgSlNDOjpqc1VuZGVmaW5l
ZCgpKTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChzdGQ6Om51bGxwdHJfdCkK
LXsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJU
KGRlZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3Rh
dGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoJnN0YXRlKTsKLSAgICByZWplY3Qoc3RhdGUsIEpTQzo6anNOdWxsKCkpOwotfQot
Ci12b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKLXsK
LSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGRl
ZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3RhdGUg
PSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIoJnN0YXRlKTsKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0
YXRlLnZtKCkpOwotICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNlcHRpb24oc3RhdGUsIFdU
Rk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkg
ewotICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHN0YXRlLnZt
KCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBy
ZWplY3Qoc3RhdGUsIGVycm9yKTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChF
eGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgaWYgKGlzU3Vz
cGVuZGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAg
ICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwotICAgIGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCZzdGF0ZSk7
Ci0KLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKLSAg
ICBhdXRvIGVycm9yID0gY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMsIG1lc3NhZ2UpOwot
ICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgQVNTRVJUKGlz
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihzdGF0ZS52bSgpLCBzY29wZS5leGNlcHRpb24o
KSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0KLSAgICByZWplY3Qoc3RhdGUsIGVycm9y
KTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChjb25zdCBKU0M6OlByaXZhdGVO
YW1lJiBwcml2YXRlTmFtZSkKLXsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVj
dCk7Ci0gICAgSlNDOjpFeGVjU3RhdGUqIHN0YXRlID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoc3RhdGUpOwotICAgIHJlamVjdCgq
c3RhdGUsIEpTQzo6U3ltYm9sOjpjcmVhdGUoc3RhdGUtPnZtKCksIHByaXZhdGVOYW1lLnVpZCgp
KSk7Ci19Ci0KLXZvaWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZURl
ZmVycmVkJiBwcm9taXNlRGVmZXJyZWQpCi17Ci0gICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLSAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0KLSAgICBpZiAoTElLRUxZ
KCFzY29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgZXJy
b3IgPSBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUoKTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlv
bigpOwotCi0gICAgRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNl
RGVmZXJyZWQpLT5yZWplY3Q8SURMQW55PihlcnJvcik7Ci19Ci0KLVJlZjxEZWZlcnJlZFByb21p
c2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NV2lu
ZG93JiBkb21XaW5kb3cpCi17Ci0gICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQg
PSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCAmZG9tV2luZG93KTsKLSAg
ICAvLyBkZWZlcnJlZCBjYW4gb25seSBiZSBudWxsIGluIHdvcmtlcnMuCi0gICAgQVNTRVJUKGRl
ZmVycmVkKTsKLSAgICByZXR1cm4gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZG9tV2luZG93LCAq
ZGVmZXJyZWQpOwotfQotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlz
ZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKLXsKLSAgICBBU1NFUlQoc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAg
ICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0g
ICAgYXV0byBwcm9taXNlQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QucHJvbWlzZUNvbnN0cnVj
dG9yKCk7Ci0gICAgYXV0byByZWplY3RGdW5jdGlvbiA9IHByb21pc2VDb25zdHJ1Y3Rvci0+Z2V0
KCZzdGF0ZSwgc3RhdGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWplY3RQ
cml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIHJlamVjdGlvblZhbHVlID0gY3JlYXRlVHlwZUVycm9y
KCZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsKLQotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1
dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWplY3RGdW5jdGlvbiwgY2FsbERhdGEpOwotICAg
IEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0KLSAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChyZWplY3Rpb25WYWx1ZSk7
Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoJnN0YXRlLCByZWplY3RGdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBwcm9taXNlQ29uc3RydWN0b3IsIGFyZ3VtZW50cykpOwot
fQotCi1zdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBwYXJzZUFzSlNPTihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKLXsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrKHN0YXRlKTsKLSAgICByZXR1cm4gSlNDOjpKU09OUGFyc2Uoc3RhdGUsIGRhdGEpOwotfQot
Ci12b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBjb25zdCBTdHJpbmcmIGRhdGEpCi17Ci0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcGFy
c2VBc0pTT04ocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgZGF0YSk7Ci0g
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFNZTlRBWF9FUlIpOwotICAg
IGVsc2UKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExBbnk+KHZhbHVlKTsKLX0KLQotdm9p
ZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UsIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKLXsKLSAgICBpZiAoIWFycmF5QnVmZmVy
KSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdDxJRExBbnk+KGNyZWF0ZU91dE9mTWVtb3J5RXJy
b3IocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEFycmF5QnVmZmVy
Pj4oKmFycmF5QnVmZmVyKTsKLX0KLQotdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZl
cihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCi17Ci0gICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShw
cm9taXNlKSwgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAppbmRleCBlZjEw
NDllNzdmY2IxNzlmNDI5MDdkYjk3M2QzYTFiODUyNDRhOTBkLi4xMGFjNzRiYzNjMTcxMjUyYzMx
NmM3YzgyNjJlMDMxOTJlODMwZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVByb21pc2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDIzMSArMjUsMjkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJKU0RPTUNvbnZlcnQuaCIKICNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNs
dWRlIDxydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1By
b21pc2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEZWZlcnJlZFByb21pc2Ug
OiBwdWJsaWMgRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiB7CitjbGFzcyBET01Q
cm9taXNlIDogcHVibGljIERPTUd1YXJkZWQ8SlNDOjpKU1Byb21pc2U+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPERlZmVycmVkUHJvbWlzZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmIGRlZmVycmVkKQorICAgIHN0YXRp
YyBSZWY8RE9NUHJvbWlzZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNQcm9taXNlJiBwcm9taXNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGVmZXJyZWRQcm9taXNlKGdsb2JhbE9iamVjdCwgZGVmZXJyZWQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NUHJvbWlzZShnbG9iYWxPYmplY3QsIHByb21pc2UpKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBJRExUeXBlPgotICAgIHZvaWQgcmVzb2x2ZSh0
eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIEpTQzo6SlNQcm9taXNl
KiBwcm9taXNlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFT
U0VSVChnbG9iYWxPYmplY3QoKSk7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xv
YmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
a2VyKGV4ZWMpOwotICAgICAgICByZXNvbHZlKCpleGVjLCB0b0pTPElETFR5cGU+KCpleGVjLCAq
Z2xvYmFsT2JqZWN0KCksIHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJU
eXBlPih2YWx1ZSkpKTsKKyAgICAgICAgQVNTRVJUKCFpc1N1c3BlbmRlZCgpKTsKKyAgICAgICAg
cmV0dXJuIGd1YXJkZWQoKTsKICAgICB9CiAKLSAgICB2b2lkIHJlc29sdmUoKQotICAgIHsKLSAg
ICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFT
U0VSVChkZWZlcnJlZCgpKTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKLSAgICAg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwot
ICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgICAgIHJlc29sdmUo
KmV4ZWMsIEpTQzo6anNVbmRlZmluZWQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3Mg
SURMVHlwZT4KLSAgICB2b2lkIHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5
cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQo
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAg
ICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcihleGVjKTsKLSAgICAgICAgcmVzb2x2ZSgqZXhlYywgdG9KU05ld2x5Q3JlYXRl
ZDxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUg
SURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8
Y2xhc3MgSURMVHlwZT4KLSAgICB2b2lkIHJlamVjdCh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0
ZXJUeXBlIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAgICAgICAgQVNTRVJU
KGdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIo
ZXhlYyk7Ci0gICAgICAgIHJlamVjdCgqZXhlYywgdG9KUzxJRExUeXBlPigqZXhlYywgKmdsb2Jh
bE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4o
dmFsdWUpKSk7Ci0gICAgfQotCi0gICAgdm9pZCByZWplY3QoKTsKLSAgICB2b2lkIHJlamVjdChz
dGQ6Om51bGxwdHJfdCk7Ci0gICAgdm9pZCByZWplY3QoRXhjZXB0aW9uJiYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0p
OwotICAgIHZvaWQgcmVqZWN0KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmKTsKLQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENhbGxiYWNrPgotICAgIHZvaWQgcmVzb2x2ZVdpdGhDYWxsYmFjayhDYWxs
YmFjayBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFTU0VS
VChnbG9iYWxPYmplY3QoKSk7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2Vy
KGV4ZWMpOwotICAgICAgICByZXNvbHZlKCpleGVjLCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9i
amVjdCgpKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+Ci0gICAg
dm9pZCByZWplY3RXaXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCi0gICAgewotICAgICAg
ICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJU
KGRlZmVycmVkKCkpOwotICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBK
U0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAg
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICAgICAgcmVqZWN0KCpleGVj
LCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7Ci0gICAgfQotCi0gICAgSlNDOjpK
U1ZhbHVlIHByb21pc2UoKSBjb25zdDsKLQogcHJpdmF0ZToKLSAgICBEZWZlcnJlZFByb21pc2Uo
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYg
ZGVmZXJyZWQpIDogRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPihnbG9iYWxPYmpl
Y3QsIGRlZmVycmVkKSB7IH0KLQotICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVk
KCkgY29uc3QgeyByZXR1cm4gZ3VhcmRlZCgpOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNhbGxGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgSlND
OjpKU1ZhbHVlIHJlc29sdXRpb24pOwotICAgIHZvaWQgcmVzb2x2ZShKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwgZGVm
ZXJyZWQoKS0+cmVzb2x2ZSgpLCByZXNvbHV0aW9uKTsgfQotICAgIHZvaWQgcmVqZWN0KEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1bmN0aW9u
KHN0YXRlLCBkZWZlcnJlZCgpLT5yZWplY3QoKSwgcmVzb2x1dGlvbik7IH0KLX07Ci0KLWNsYXNz
IERPTVByb21pc2VCYXNlIHsKLXB1YmxpYzoKLSAgICBET01Qcm9taXNlQmFzZShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIGdlbmVyaWNQcm9taXNlKQotICAgICAgICA6IG1fcHJvbWlzZURlZmVycmVk
KFdURk1vdmUoZ2VuZXJpY1Byb21pc2UpKQotICAgIHsKLSAgICB9Ci0KLSAgICBET01Qcm9taXNl
QmFzZShET01Qcm9taXNlQmFzZSYmIHByb21pc2UpCi0gICAgICAgIDogbV9wcm9taXNlRGVmZXJy
ZWQoV1RGTW92ZShwcm9taXNlLm1fcHJvbWlzZURlZmVycmVkKSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgRE9NUHJvbWlzZUJhc2UoY29uc3QgRE9NUHJvbWlzZUJhc2UmIG90aGVyKQotICAgICAgICA6
IG1fcHJvbWlzZURlZmVycmVkKG90aGVyLm1fcHJvbWlzZURlZmVycmVkLmNvcHlSZWYoKSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgRE9NUHJvbWlzZUJhc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9t
aXNlQmFzZSYgb3RoZXIpCi0gICAgewotICAgICAgICBtX3Byb21pc2VEZWZlcnJlZCA9IG90aGVy
Lm1fcHJvbWlzZURlZmVycmVkLmNvcHlSZWYoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
IH0KLQotICAgIERPTVByb21pc2VCYXNlJiBvcGVyYXRvcj0oRE9NUHJvbWlzZUJhc2UmJiBvdGhl
cikKKyAgICBET01Qcm9taXNlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNQcm9taXNlJiBwcm9taXNlKQorICAgICAgICA6IERPTUd1YXJkZWQ8SlNDOjpKU1Byb21pc2U+
KGdsb2JhbE9iamVjdCwgcHJvbWlzZSkKICAgICB7Ci0gICAgICAgIG1fcHJvbWlzZURlZmVycmVk
ID0gV1RGTW92ZShvdGhlci5tX3Byb21pc2VEZWZlcnJlZCk7Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9Ci0KLSAgICB2b2lkIHJlamVjdCgpCi0gICAgewotICAgICAgICBtX3Byb21pc2VE
ZWZlcnJlZC0+cmVqZWN0KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gRXJy
b3JUeXBlPiAKLSAgICB2b2lkIHJlamVjdChFcnJvclR5cGUmJi4uLiBlcnJvcikKLSAgICB7Ci0g
ICAgICAgIG1fcHJvbWlzZURlZmVycmVkLT5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4o
ZXJyb3IpLi4uKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgotICAg
IHZvaWQgcmVqZWN0VHlwZSh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdDxJRExUeXBlPihzdGQ6OmZv
cndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKTsKLSAgICB9Ci0K
LSAgICBKU0M6OkpTVmFsdWUgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZURlZmVy
cmVkLT5wcm9taXNlKCk7IH07Ci0KLXByb3RlY3RlZDoKLSAgICBSZWY8RGVmZXJyZWRQcm9taXNl
PiBtX3Byb21pc2VEZWZlcnJlZDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IAot
Y2xhc3MgRE9NUHJvbWlzZSA6IHB1YmxpYyBET01Qcm9taXNlQmFzZSB7Ci1wdWJsaWM6Ci0gICAg
dXNpbmcgRE9NUHJvbWlzZUJhc2U6OkRPTVByb21pc2VCYXNlOwotICAgIHVzaW5nIERPTVByb21p
c2VCYXNlOjpvcGVyYXRvcj07Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnByb21pc2U7Ci0g
ICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnJlamVjdDsKLQotICAgIHZvaWQgcmVzb2x2ZSh0eXBl
bmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQotICAgIHsgCi0gICAgICAgIG1fcHJv
bWlzZURlZmVycmVkLT5yZXNvbHZlPElETFR5cGU+KHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExU
eXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gY2xh
c3MgRE9NUHJvbWlzZTx2b2lkPiA6IHB1YmxpYyBET01Qcm9taXNlQmFzZSB7Ci1wdWJsaWM6Ci0g
ICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OkRPTVByb21pc2VCYXNlOwotICAgIHVzaW5nIERPTVBy
b21pc2VCYXNlOjpvcGVyYXRvcj07Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnByb21pc2U7
Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnJlamVjdDsKLQotICAgIHZvaWQgcmVzb2x2ZSgp
Ci0gICAgeyAKLSAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlc29sdmUoKTsKLSAgICB9Ci19
OwotCi0KLVJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4
ZWNTdGF0ZSYsIEpTRE9NV2luZG93Jik7Ci0KLXZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBjb25zdCBTdHJpbmcmKTsKLXZvaWQgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgQXJyYXlCdWZmZXIqKTsK
LXZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiwgY29uc3Qgdm9pZCosIHNpemVfdCk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHJlamVjdFByb21p
c2VXaXRoRXhjZXB0aW9uSWZBbnkoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYs
IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVq
ZWN0ZWRQcm9taXNlV2l0aFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYp
OwotCi11c2luZyBQcm9taXNlRnVuY3Rpb24gPSB2b2lkKEpTQzo6RXhlY1N0YXRlJiwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7Ci0KLWVudW0gY2xhc3MgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIHsg
V2luZG93T25seSwgV2luZG93T3JXb3JrZXIgfTsKLQotdGVtcGxhdGU8UHJvbWlzZUZ1bmN0aW9u
IHByb21pc2VGdW5jdGlvbiwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIGV4ZWN1dGlvblNjb3BlPgot
aW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSkKLXsKLSAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotCi0gICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxH
bG9iYWxPYmplY3QoKSk7Ci0gICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVy
cmVkID0gSlNDOjpKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgJmdsb2JhbE9iamVj
dCk7Ci0KLSAgICAvLyBwcm9taXNlRGVmZXJyZWQgY2FuIGJlIG51bGwgd2hlbiB0ZXJtaW5hdGlu
ZyBhIFdvcmtlciBhYnJ1cHRseS4KLSAgICBpZiAoZXhlY3V0aW9uU2NvcGUgPT0gUHJvbWlzZUV4
ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlciAmJiAhcHJvbWlzZURlZmVycmVkKQotICAgICAg
ICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwotCi0gICAgcHJvbWlzZUZ1bmN0aW9uKHN0YXRl
LCBEZWZlcnJlZFByb21pc2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsICpwcm9taXNlRGVmZXJyZWQp
KTsKLQotICAgIHJlamVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoc3RhdGUsIGdsb2JhbE9i
amVjdCwgKnByb21pc2VEZWZlcnJlZCk7Ci0gICAgQVNTRVJUX1VOVVNFRChzY29wZSwgIXNjb3Bl
LmV4Y2VwdGlvbigpKTsKLSAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7Ci19
Ci0KLXVzaW5nIEJpbmRpbmdQcm9taXNlRnVuY3Rpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7Ci10ZW1wbGF0ZTxCaW5kaW5n
UHJvbWlzZUZ1bmN0aW9uIGJpbmRpbmdGdW5jdGlvbj4KLWlubGluZSB2b2lkIGJpbmRpbmdQcm9t
aXNlRnVuY3Rpb25BZGFwdGVyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQotewotICAgIGJpbmRpbmdGdW5jdGlvbigmc3RhdGUsIFdURk1vdmUo
cHJvbWlzZSkpOwotfQotCi10ZW1wbGF0ZTxCaW5kaW5nUHJvbWlzZUZ1bmN0aW9uIGJpbmRpbmdQ
cm9taXNlRnVuY3Rpb24sIFByb21pc2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZT4KLWlu
bGluZSBKU0M6OkpTVmFsdWUgY2FsbFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUpCi17Ci0gICAgcmV0dXJuIGNhbGxQcm9taXNlRnVuY3Rpb248YmluZGluZ1Byb21pc2VGdW5j
dGlvbkFkYXB0ZXI8YmluZGluZ1Byb21pc2VGdW5jdGlvbj4sIGV4ZWN1dGlvblNjb3BlPihzdGF0
ZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTVhMmQy
OWVmZDNmZDdhZGIzMjU4MDFiYjQ2NWJmYTZmY2UzN2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCkBAIC0wLDAg
KzEsMjExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSAiSlNET01FcnJvci5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5j
bHVkZSA8YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRp
b24uaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT05PYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworSlNDOjpKU1ZhbHVlIERlZmVycmVkUHJvbWlzZTo6cHJvbWlzZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIHJldHVybiBkZWZlcnJlZCgp
LT5wcm9taXNlKCk7Cit9CisKK3ZvaWQgRGVmZXJyZWRQcm9taXNlOjpjYWxsRnVuY3Rpb24oRXhl
Y1N0YXRlJiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uLCBKU1ZhbHVlIHJlc29sdXRpb24pCit7Cisg
ICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsK
KworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBw
ZW5kKHJlc29sdXRpb24pOworCisgICAgY2FsbCgmZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKKworICAgIGNsZWFyKCk7Cit9CisK
K3ZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoKQoreworICAgIGlmIChpc1N1c3BlbmRlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgQVNTRVJU
KG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmc3RhdGUpOworICAgIHJl
amVjdChzdGF0ZSwgSlNDOjpqc1VuZGVmaW5lZCgpKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21p
c2U6OnJlamVjdChzdGQ6Om51bGxwdHJfdCkKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2ds
b2JhbE9iamVjdCk7CisgICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRlKTsKKyAgICByZWplY3Qo
c3RhdGUsIEpTQzo6anNOdWxsKCkpOworfQorCit2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0
KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2dsb2Jh
bE9iamVjdCk7CisgICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRlKTsKKworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOworICAgIGF1dG8gZXJyb3IgPSBj
cmVhdGVET01FeGNlcHRpb24oc3RhdGUsIFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgaWYgKFVO
TElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKHN0YXRlLnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZWplY3Qoc3RhdGUsIGVycm9yKTsKK30KKwordm9p
ZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChFeGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKKyAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOworICAg
IGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKCZzdGF0ZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShzdGF0ZS52bSgpKTsKKyAgICBhdXRvIGVycm9yID0gY3JlYXRlRE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMsIG1lc3NhZ2UpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpIHsKKyAgICAgICAgQVNTRVJUKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihz
dGF0ZS52bSgpLCBzY29wZS5leGNlcHRpb24oKSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisKKyAgICByZWplY3Qoc3RhdGUsIGVycm9yKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6
OnJlamVjdChjb25zdCBKU0M6OlByaXZhdGVOYW1lJiBwcml2YXRlTmFtZSkKK3sKKyAgICBpZiAo
aXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRlZmVycmVkKCkp
OworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CisgICAgSlNDOjpFeGVjU3RhdGUqIHN0YXRl
ID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIoc3RhdGUpOworICAgIHJlamVjdCgqc3RhdGUsIEpTQzo6U3ltYm9sOjpjcmVhdGUoc3Rh
dGUtPnZtKCksIHByaXZhdGVOYW1lLnVpZCgpKSk7Cit9CisKK3ZvaWQgcmVqZWN0UHJvbWlzZVdp
dGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZURlZmVycmVkJiBwcm9taXNlRGVmZXJyZWQpCit7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9T
Q09QRSh2bSk7CisKKyAgICBpZiAoTElLRUxZKCFzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIEpTVmFsdWUgZXJyb3IgPSBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUo
KTsKKyAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworCisgICAgRGVmZXJyZWRQcm9taXNlOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNlRGVmZXJyZWQpLT5yZWplY3Q8SURMQW55PihlcnJv
cik7Cit9CisKK1JlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NV2luZG93JiBkb21XaW5kb3cpCit7CisgICAgSlNDOjpK
U1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVh
dGUoJnN0YXRlLCAmZG9tV2luZG93KTsKKyAgICAvLyBkZWZlcnJlZCBjYW4gb25seSBiZSBudWxs
IGluIHdvcmtlcnMuCisgICAgQVNTRVJUKGRlZmVycmVkKTsKKyAgICByZXR1cm4gRGVmZXJyZWRQ
cm9taXNlOjpjcmVhdGUoZG9tV2luZG93LCAqZGVmZXJyZWQpOworfQorCitKU0M6OkVuY29kZWRK
U1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoc3RhdGUu
bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqc3RhdGUu
bGV4aWNhbEdsb2JhbE9iamVjdCgpOworCisgICAgYXV0byBwcm9taXNlQ29uc3RydWN0b3IgPSBn
bG9iYWxPYmplY3QucHJvbWlzZUNvbnN0cnVjdG9yKCk7CisgICAgYXV0byByZWplY3RGdW5jdGlv
biA9IHByb21pc2VDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgc3RhdGUudm0oKS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgpKTsKKyAgICBhdXRvIHJlamVj
dGlvblZhbHVlID0gY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsKKworICAg
IENhbGxEYXRhIGNhbGxEYXRhOworICAgIGF1dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWpl
Y3RGdW5jdGlvbiwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6
Tm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1l
bnRzLmFwcGVuZChyZWplY3Rpb25WYWx1ZSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhbGwoJnN0YXRlLCByZWplY3RGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBwcm9taXNl
Q29uc3RydWN0b3IsIGFyZ3VtZW50cykpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1
ZSBwYXJzZUFzSlNPTihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZGF0YSkK
K3sKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKKyAgICByZXR1cm4gSlNDOjpK
U09OUGFyc2Uoc3RhdGUsIGRhdGEpOworfQorCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04o
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGRhdGEpCit7Cisg
ICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcGFyc2VBc0pTT04ocHJvbWlzZS0+Z2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKSwgZGF0YSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KFNZTlRBWF9FUlIpOworICAgIGVsc2UKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZTxJRExBbnk+KHZhbHVlKTsKK30KKwordm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZl
cihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZl
cikKK3sKKyAgICBpZiAoIWFycmF5QnVmZmVyKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdDxJ
RExBbnk+KGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHByb21pc2UtPnJlc29s
dmU8SURMSW50ZXJmYWNlPEFycmF5QnVmZmVyPj4oKmFycmF5QnVmZmVyKTsKK30KKwordm9pZCBm
dWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYxM2NhYzdiMjhi
NGM3ZWZhOTI0ZGQ2OTkzMTc3MjcxOTYwZjhmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKQEAgLTAsMCArMSwyNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NQ29udmVydC5o
IgorI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNQ
cm9taXNlRGVmZXJyZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZWZlcnJl
ZFByb21pc2UgOiBwdWJsaWMgRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZShKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJiBkZWZlcnJlZCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkUHJvbWlzZShnbG9i
YWxPYmplY3QsIGRlZmVycmVkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlw
ZT4KKyAgICB2b2lkIHJlc29sdmUodHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1
ZSkKKyAgICB7CisgICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmpl
Y3QoKSk7CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAg
ICAgICByZXNvbHZlKCpleGVjLCB0b0pTPElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCks
IHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpKTsK
KyAgICB9CisKKyAgICB2b2lkIHJlc29sdmUoKQorICAgIHsKKyAgICAgICAgaWYgKGlzU3VzcGVu
ZGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsK
KyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgICAgIHJlc29sdmUoKmV4ZWMsIEpTQzo6anNVbmRl
ZmluZWQoKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAgICB2b2lk
IHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUg
dmFsdWUpCisgICAgeworICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgICAgICBBU1NFUlQoZ2xvYmFs
T2JqZWN0KCkpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsK
KyAgICAgICAgcmVzb2x2ZSgqZXhlYywgdG9KU05ld2x5Q3JlYXRlZDxJRExUeXBlPigqZXhlYywg
Kmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVy
VHlwZT4odmFsdWUpKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAg
ICB2b2lkIHJlamVjdCh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAg
IHsKKyAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsK
KyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpOworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgICAgIHJl
amVjdCgqZXhlYywgdG9KUzxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZv
cndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7CisgICAgfQor
CisgICAgdm9pZCByZWplY3QoKTsKKyAgICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJfdCk7Cisg
ICAgdm9pZCByZWplY3QoRXhjZXB0aW9uJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVq
ZWN0KEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0pOworICAgIHZvaWQgcmVqZWN0
KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxi
YWNrPgorICAgIHZvaWQgcmVzb2x2ZVdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7
CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKTsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICBy
ZXNvbHZlKCpleGVjLCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+CisgICAgdm9pZCByZWplY3RXaXRoQ2Fs
bGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoaXNTdXNwZW5kZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAg
ICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcihleGVjKTsKKyAgICAgICAgcmVqZWN0KCpleGVjLCBjYWxsYmFjaygqZXhlYywg
Kmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQorCisgICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBEZWZlcnJlZFByb21pc2UoSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYgZGVmZXJyZWQpCisgICAgICAg
IDogRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPihnbG9iYWxPYmplY3QsIGRlZmVy
cmVkKQorICAgIHsKKyAgICB9CisKKyAgICBKU0M6OkpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJl
ZCgpIGNvbnN0IHsgcmV0dXJuIGd1YXJkZWQoKTsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjYWxsRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24sIEpT
Qzo6SlNWYWx1ZSByZXNvbHV0aW9uKTsKKyAgICB2b2lkIHJlc29sdmUoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OkpTVmFsdWUgcmVzb2x1dGlvbikgeyBjYWxsRnVuY3Rpb24oc3RhdGUsIGRl
ZmVycmVkKCktPnJlc29sdmUoKSwgcmVzb2x1dGlvbik7IH0KKyAgICB2b2lkIHJlamVjdChKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlv
bihzdGF0ZSwgZGVmZXJyZWQoKS0+cmVqZWN0KCksIHJlc29sdXRpb24pOyB9Cit9OworCitjbGFz
cyBET01Qcm9taXNlRGVmZXJyZWRCYXNlIHsKK3B1YmxpYzoKKyAgICBET01Qcm9taXNlRGVmZXJy
ZWRCYXNlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgZ2VuZXJpY1Byb21pc2UpCisgICAgICAgIDog
bV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShnZW5lcmljUHJvbWlzZSkpCisgICAgeworICAgIH0K
KworICAgIERPTVByb21pc2VEZWZlcnJlZEJhc2UoRE9NUHJvbWlzZURlZmVycmVkQmFzZSYmIHBy
b21pc2UpCisgICAgICAgIDogbV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShwcm9taXNlLm1fcHJv
bWlzZURlZmVycmVkKSkKKyAgICB7CisgICAgfQorCisgICAgRE9NUHJvbWlzZURlZmVycmVkQmFz
ZShjb25zdCBET01Qcm9taXNlRGVmZXJyZWRCYXNlJiBvdGhlcikKKyAgICAgICAgOiBtX3Byb21p
c2VEZWZlcnJlZChvdGhlci5tX3Byb21pc2VEZWZlcnJlZC5jb3B5UmVmKCkpCisgICAgeworICAg
IH0KKworICAgIERPTVByb21pc2VEZWZlcnJlZEJhc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9t
aXNlRGVmZXJyZWRCYXNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVk
ID0gb3RoZXIubV9wcm9taXNlRGVmZXJyZWQuY29weVJlZigpOworICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorCisgICAgRE9NUHJvbWlzZURlZmVycmVkQmFzZSYgb3BlcmF0b3I9KERPTVBy
b21pc2VEZWZlcnJlZEJhc2UmJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVy
cmVkID0gV1RGTW92ZShvdGhlci5tX3Byb21pc2VEZWZlcnJlZCk7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICB2b2lkIHJlamVjdCgpCisgICAgeworICAgICAgICBtX3Byb21p
c2VEZWZlcnJlZC0+cmVqZWN0KCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
RXJyb3JUeXBlPiAKKyAgICB2b2lkIHJlamVjdChFcnJvclR5cGUmJi4uLiBlcnJvcikKKyAgICB7
CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkLT5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlw
ZT4oZXJyb3IpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgor
ICAgIHZvaWQgcmVqZWN0VHlwZSh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVl
KQorICAgIHsKKyAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdDxJRExUeXBlPihzdGQ6
OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKTsKKyAgICB9
CisKKyAgICBKU0M6OkpTVmFsdWUgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZURl
ZmVycmVkLT5wcm9taXNlKCk7IH07CisKK3Byb3RlY3RlZDoKKyAgICBSZWY8RGVmZXJyZWRQcm9t
aXNlPiBtX3Byb21pc2VEZWZlcnJlZDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+
IAorY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkIDogcHVibGljIERPTVByb21pc2VEZWZlcnJlZEJh
c2UgeworcHVibGljOgorICAgIHVzaW5nIERPTVByb21pc2VEZWZlcnJlZEJhc2U6OkRPTVByb21p
c2VEZWZlcnJlZEJhc2U7CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6b3BlcmF0
b3I9OworICAgIHVzaW5nIERPTVByb21pc2VEZWZlcnJlZEJhc2U6OnByb21pc2U7CisgICAgdXNp
bmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cmVqZWN0OworCisgICAgdm9pZCByZXNvbHZlKHR5
cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCisgICAgeyAKKyAgICAgICAgbV9w
cm9taXNlRGVmZXJyZWQtPnJlc29sdmU8SURMVHlwZT4oc3RkOjpmb3J3YXJkPHR5cGVuYW1lIElE
TFR5cGU6OlBhcmFtZXRlclR5cGU+KHZhbHVlKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBj
bGFzcyBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4gOiBwdWJsaWMgRE9NUHJvbWlzZURlZmVycmVk
QmFzZSB7CitwdWJsaWM6CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6RE9NUHJv
bWlzZURlZmVycmVkQmFzZTsKKyAgICB1c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpvcGVy
YXRvcj07CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cHJvbWlzZTsKKyAgICB1
c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpyZWplY3Q7CisKKyAgICB2b2lkIHJlc29sdmUo
KQorICAgIHsgCisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkLT5yZXNvbHZlKCk7CisgICAgfQor
fTsKKworCitSZWY8RGVmZXJyZWRQcm9taXNlPiBjcmVhdGVEZWZlcnJlZFByb21pc2UoSlNDOjpF
eGVjU3RhdGUmLCBKU0RPTVdpbmRvdyYpOworCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04o
UmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3QgU3RyaW5nJik7Cit2b2lkIGZ1bGZpbGxQcm9t
aXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIEFycmF5QnVmZmVyKik7
Cit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYsIGNvbnN0IHZvaWQqLCBzaXplX3QpOworV0VCQ09SRV9FWFBPUlQgdm9pZCByZWplY3RQcm9t
aXNlV2l0aEV4Y2VwdGlvbklmQW55KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3Qm
LCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJl
amVjdGVkUHJvbWlzZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBTdHJpbmcm
KTsKKwordXNpbmcgUHJvbWlzZUZ1bmN0aW9uID0gdm9pZChKU0M6OkV4ZWNTdGF0ZSYsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYpOworCitlbnVtIGNsYXNzIFByb21pc2VFeGVjdXRpb25TY29wZSB7
IFdpbmRvd09ubHksIFdpbmRvd09yV29ya2VyIH07CisKK3RlbXBsYXRlPFByb21pc2VGdW5jdGlv
biBwcm9taXNlRnVuY3Rpb24sIFByb21pc2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZT4K
K2lubGluZSBKU0M6OkpTVmFsdWUgY2FsbFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUpCit7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpOworICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZl
cnJlZCA9IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsICZnbG9iYWxPYmpl
Y3QpOworCisgICAgLy8gcHJvbWlzZURlZmVycmVkIGNhbiBiZSBudWxsIHdoZW4gdGVybWluYXRp
bmcgYSBXb3JrZXIgYWJydXB0bHkuCisgICAgaWYgKGV4ZWN1dGlvblNjb3BlID09IFByb21pc2VF
eGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXIgJiYgIXByb21pc2VEZWZlcnJlZCkKKyAgICAg
ICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKworICAgIHByb21pc2VGdW5jdGlvbihzdGF0
ZSwgRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCAqcHJvbWlzZURlZmVycmVk
KSk7CisKKyAgICByZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KHN0YXRlLCBnbG9iYWxP
YmplY3QsICpwcm9taXNlRGVmZXJyZWQpOworICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFzY29w
ZS5leGNlcHRpb24oKSk7CisgICAgcmV0dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOwor
fQorCit1c2luZyBCaW5kaW5nUHJvbWlzZUZ1bmN0aW9uID0gSlNDOjpFbmNvZGVkSlNWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSosIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwordGVtcGxhdGU8QmluZGlu
Z1Byb21pc2VGdW5jdGlvbiBiaW5kaW5nRnVuY3Rpb24+CitpbmxpbmUgdm9pZCBiaW5kaW5nUHJv
bWlzZUZ1bmN0aW9uQWRhcHRlcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBiaW5kaW5nRnVuY3Rpb24oJnN0YXRlLCBXVEZNb3Zl
KHByb21pc2UpKTsKK30KKwordGVtcGxhdGU8QmluZGluZ1Byb21pc2VGdW5jdGlvbiBiaW5kaW5n
UHJvbWlzZUZ1bmN0aW9uLCBQcm9taXNlRXhlY3V0aW9uU2NvcGUgZXhlY3V0aW9uU2NvcGU+Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0
YXRlKQoreworICAgIHJldHVybiBjYWxsUHJvbWlzZUZ1bmN0aW9uPGJpbmRpbmdQcm9taXNlRnVu
Y3Rpb25BZGFwdGVyPGJpbmRpbmdQcm9taXNlRnVuY3Rpb24+LCBleGVjdXRpb25TY29wZT4oc3Rh
dGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggZWYzN2FlYWFkODA0
YWNiNGRiNjM0NDIxN2I4MDY2OGJmMzYwYTI1MC4uNDEwZGU3NjQzMmQyODM5MjU0MzNmMmQwNzJi
MDlkYjk3NjRmMDc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
dWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkpTQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkpTQ3J5cHRvS2V5LmgiCiAjaW5j
bHVkZSAiSlNDcnlwdG9LZXlQYWlyLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5j
bHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIK
ICNpbmNsdWRlICJKU0VjS2V5UGFyYW1zLmgiCiAjaW5jbHVkZSAiSlNFY2RoS2V5RGVyaXZlUGFy
YW1zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVUNv
bW1hbmRCdWZmZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJH
UFVDb21tYW5kQnVmZmVyQ3VzdG9tLmNwcAppbmRleCAyZmIzZjBiOTIyNjIyZDQ2YTkyMmY3YjYy
Yjk2OGY4Y2VlOGQ4NGUyLi45MzBjNGZkM2E3ZjFlNGQ4ZjgzNGU3MjRlOTY0NDg0YjI4NDNlNTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRC
dWZmZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BV
Q29tbWFuZEJ1ZmZlckN1c3RvbS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VC
R1BVKQogCiAjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3Vz
dG9tLmNwcAppbmRleCA2MzhiMzdlNGFjNTFlZmY4ZmNkNmNiZGFiM2MyMDlkM2ZmZjFhYjY2Li40
Y2IzZTJjNWU5MDMzOGNlN2VjY2RlNjI4ZDRiNzk2YTA3NWViNjVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20u
Y3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNDcnlwdG9LZXlQYWlyLmgiCiAjaW5j
bHVkZSAiSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmgiCiAjaW5jbHVkZSAiSlNDcnlwdG9P
cGVyYXRpb25EYXRhLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvRXJyb3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xM2RiZGViYmExNWE0MDIzMDk1ZDRmZTA2YjU2YWY0N2YzZDA0
ZjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKQEAgLTAsMCArMSwyOTkgQEAK
Ky8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oIgorCisjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCisjaW5jbHVkZSAiSlNET01Db25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8PiBUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OkluaXQ+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBib29sIGlzTnVsbE9yVW5kZWZpbmVkID0gdmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKTsKKyAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51
bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5k
ZWZpbmVkICYmICFvYmplY3QpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhy
b3dTY29wZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmIChVTkxJS0VMWShv
YmplY3QgJiYgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9CisgICAgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdCByZXN1bHQ7CisgICAg
SlNWYWx1ZSBidWJibGVzVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkg
OiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYnVi
YmxlcyIpKTsKKyAgICBpZiAoIWJ1YmJsZXNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAg
IHJlc3VsdC5idWJibGVzID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgYnViYmxlc1ZhbHVl
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0g
ZWxzZQorICAgICAgICByZXN1bHQuYnViYmxlcyA9IGZhbHNlOworICAgIEpTVmFsdWUgY2FuY2Vs
YWJsZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5n
ZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImNhbmNlbGFibGUiKSk7
CisgICAgaWYgKCFjYW5jZWxhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1
bHQuY2FuY2VsYWJsZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIGNhbmNlbGFibGVWYWx1
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcmVzdWx0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICBKU1ZhbHVlIGNv
bXBvc2VkVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3Qt
PmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiY29tcG9zZWQiKSk7
CisgICAgaWYgKCFjb21wb3NlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0
LmNvbXBvc2VkID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgY29tcG9zZWRWYWx1ZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UK
KyAgICAgICAgcmVzdWx0LmNvbXBvc2VkID0gZmFsc2U7CisgICAgSlNWYWx1ZSBwcm9taXNlVmFs
dWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3Rh
dGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicHJvbWlzZSIpKTsKKyAgICBpZiAo
IXByb21pc2VWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5wcm9taXNlID0g
Y29udmVydDxJRExQcm9taXNlPElETEFueT4+KHN0YXRlLCBwcm9taXNlVmFsdWUpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdGhyb3dSZXF1aXJlZE1lbWJlclR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgInBy
b21pc2UiLCAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudEluaXQiLCAiUHJvbWlzZSIpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBKU1ZhbHVlIHJlYXNvblZhbHVlID0gaXNOdWxs
T3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlYXNvbiIpKTsKKyAgICBpZiAoIXJlYXNvblZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnJlYXNvbiA9IGNvbnZlcnQ8SURMQW55
PihzdGF0ZSwgcmVhc29uVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdC5yZWFzb24gPSBqc1VuZGVm
aW5lZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9v
bCBzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworCitjbGFzcyBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OworICAgIHN0YXRpYyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsK
KyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCit1c2luZyBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PjsKKwordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsK
KyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAyKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIHR5
cGUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CisgICAgYXV0byBldmVudEluaXREaWN0ID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQ+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKKyAgICBhdXRvIG9iamVjdCA9IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6
OmNyZWF0ZSgqc3RhdGUsIFdURk1vdmUodHlwZSksIFdURk1vdmUoZXZlbnRJbml0RGljdCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOworfQorCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICByZXR1cm4gSlNFdmVudDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOworfQor
Cit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Ojpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3Qp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVND
SUlMaXRlcmFsKCJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IikpKSwgUmVhZE9ubHkgfCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDIpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9OworCisv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQor
eworICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3RvcikgfSB9LAorICAgIHsgInByb21pc2UiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29y
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAg
eyAicmVhc29uIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRSZWFzb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUpIH07CisKK3ZvaWQg
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlVGFibGVWYWx1
ZXMsICp0aGlzKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudDo6c19pbmZvID0geyAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KSB9
OworCitKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYgaW1wbCkKKyAgICA6IEpTRXZlbnQo
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7CisKK30KKworSlNPYmplY3QqIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRl
UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBy
ZXR1cm4gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgSlNFdmVudDo6cHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnBy
b3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0
dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KHZtLCBnbG9i
YWxPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6Y2FzdEZv
ckF0dHJpYnV0ZShFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7
CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dCo+KHN0YXRlLnZtKCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKK30KKworc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2VHZXR0ZXIo
RXhlY1N0YXRlJiwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFBy
b21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50Pjo6YXR0cmlidXRlPGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2VHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZWplY3RQcm9taXNlPihzdGF0ZSwgdGhpc1Zh
bHVlLCAicHJvbWlzZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExQcm9taXNlPElETEFueT4+KGltcGwucHJvbWlzZSgpKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UmVhc29uR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6YXR0cmlidXRlPGpzVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudFJlYXNvbkdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInJlYXNvbiIpOworfQor
CitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29u
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYgdGhp
c09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEFueT4oaW1w
bC5yZWFzb24oKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRW5jb2RlZEpTVmFsdWUganNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkp
OworfQorCitib29sIHNldEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIGRvbU9i
amVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCB2YWx1ZSk7Cit9CisKK0pTVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lm
IFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJD
IiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudEBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjVUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RVtdOyB9
CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50PiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KGltcGwucHRyKCkpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0
ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVyKCI/
P183VGVzdFByb21pc2VSZWplY3Rpb25FdmVudEBXZWJDb3JlQEA2QkAiKSk7CisjZWxzZQorICAg
IHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMjVUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50RVsyXTsKKyNpZiBDT01QSUxFUihDTEFORykKKyAgICAvLyBJZiB0aGlz
IGZhaWxzIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwg
c28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUg
YXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQo
X19pc19wb2x5bW9ycGhpYyhUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KSwgIlRlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQgaXMgbm90IHBvbHltb3JwaGljIik7CisjZW5kaWYKKyNlbmRpZgorICAg
IC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVy
IGZyZWUgYnVnLCBvcgorICAgIC8vIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgaGFzIHN1YmNs
YXNzZXMuIElmIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgaGFzIHN1YmNsYXNzZXMgdGhhdCBn
ZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAg
ICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUg
aW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxl
UG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNy
ZWF0ZVdyYXBwZXI8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50JiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwp
OworfQorCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kM2M0Y2ZmZDc5Nzk2N2E1MzJhZDkwZWZiNWI4MTM0NmFmMjJmZTNlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudC5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMg
ZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBN
T0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNp
bmNsdWRlICJKU0V2ZW50LmgiCisjaW5jbHVkZSAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCA6IHB1YmxpYyBKU0V2ZW50IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNFdmVu
dDsKKyAgICB1c2luZyBET01XcmFwcGVkID0gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDsKKyAg
ICBzdGF0aWMgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgp
KTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6OkpTVHlwZShKU0V2ZW50VHlwZSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudCYgd3JhcHBlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudCY+KEJhc2U6OndyYXBwZWQoKSk7CisgICAgfQor
cHJvdGVjdGVkOgorICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudChKU0M6OlN0cnVjdHVy
ZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYp
OworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudCYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudCogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMoc3RhdGUsIGdsb2JhbE9iamVj
dCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50PiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZlB0cjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0
b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwo
KSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNv
bnZlcnRlclRyYWl0czxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiB7CisgICAgdXNpbmcgV3Jh
cHBlckNsYXNzID0gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OworICAgIHVzaW5nIFRvV3Jh
cHBlZFJldHVyblR5cGUgPSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KjsKK307Cit0ZW1wbGF0
ZTw+IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVz
dFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdD4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpOworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTZhOTQ5MWFkN2E1MTE3YzU4YTE3YTFmODg4NzUwZWFm
Yjg3YzkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uc3Ry
dWN0b3IoRE9NU3RyaW5nIHR5cGUsIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRJbml0IGV2ZW50
SW5pdERpY3QpLAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0U3RhdGUsCisgICAgRXhw
b3NlZD0oV2luZG93LFdvcmtlciksCitdIGludGVyZmFjZSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50IDogRXZlbnQgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPGFueT4gcHJvbWlz
ZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYW55IHJlYXNvbjsKK307CisKK2RpY3Rpb25hcnkg
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudEluaXQgOiBFdmVudEluaXQgeworICAgIHJlcXVpcmVk
IFByb21pc2U8YW55PiBwcm9taXNlOworICAgIGFueSByZWFzb247Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2UuaAppbmRleCAwYjA2Y2U5NzcyODNiNzZkMzE1NTFlYjg5OGUyNmJkNDE4OWViZTUyLi44MTM0
MDNhZTc4ZDIyZTM5MGE2OTc2MGVmOTQ3NjM2YTQ2Y2UyYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2Uu
aApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2UuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgRm9udEZhY2Ug
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFjZT4sIHByaXZhdGUgQ1NTRm9udEZhY2U6
OkNsaWVudAogICAgIGVudW0gY2xhc3MgTG9hZFN0YXR1cyB7IFVubG9hZGVkLCBMb2FkaW5nLCBM
b2FkZWQsIEVycm9yIH07CiAgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsKIAotICAgIHVz
aW5nIFByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFjZTxGb250RmFjZT4+OworICAgIHVz
aW5nIFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZvbnRGYWNlPj47
CiAgICAgc3RkOjpvcHRpb25hbDxQcm9taXNlPiYgcHJvbWlzZSgpIHsgcmV0dXJuIG1fcHJvbWlz
ZTsgfQogICAgIHZvaWQgcmVnaXN0ZXJMb2FkZWQoUHJvbWlzZSYmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2VTZXQuaAppbmRleCBmYThmZTJhMWM4MzkwM2UyMzVkOGNiZjQ5OGZkY2QyYjNhNzg3ZGE2
Li5lODRkMDk1ZWNjYmRhYjAwNzg2ODAxNGIyMzg2MjIwNDJjZTEzOTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2VTZXQuaApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU2V0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQu
aCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDE0ICs0NiwxNCBAQCBjbGFz
cyBGb250RmFjZVNldCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlU2V0PiwgcHJp
dmF0ZSBDU1NGb250RmFjZVNldAogICAgIGJvb2wgcmVtb3ZlKEZvbnRGYWNlJik7CiAgICAgdm9p
ZCBjbGVhcigpOwogCi0gICAgdXNpbmcgTG9hZFByb21pc2UgPSBET01Qcm9taXNlPElETFNlcXVl
bmNlPElETEludGVyZmFjZTxGb250RmFjZT4+PjsKKyAgICB1c2luZyBMb2FkUHJvbWlzZSA9IERP
TVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8Rm9udEZhY2U+Pj47CiAg
ICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBMb2Fk
UHJvbWlzZSYmKTsKICAgICBFeGNlcHRpb25Pcjxib29sPiBjaGVjayhjb25zdCBTdHJpbmcmIGZv
bnQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKICAgICBlbnVtIGNsYXNzIExvYWRTdGF0dXMgeyBM
b2FkaW5nLCBMb2FkZWQgfTsKICAgICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCi0gICAg
dXNpbmcgUmVhZHlQcm9taXNlID0gRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8Rm9udEZhY2VTZXQ+
PjsKKyAgICB1c2luZyBSZWFkeVByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJm
YWNlPEZvbnRGYWNlU2V0Pj47CiAgICAgdm9pZCByZWdpc3RlclJlYWR5KFJlYWR5UHJvbWlzZSYm
KTsKIAogICAgIENTU0ZvbnRGYWNlU2V0JiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKaW5kZXggMTEyMDk3
YjFjMjgzZjhjMDg0NDdmMWQwYWMzMTVmZmM2ZTNhMWIyYy4uZWZkZmMyNDYyNjg2YmRlNjc1NjRh
ZDRiZmE1MjgwYmI5ODNkMDYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVnaXN0cnkuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL1NldEZvclNjb3BlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJv
bWlzZVJlamVjdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlv
bkV2ZW50LmgKaW5kZXggMGZiMWE0YzBhMDYxOTdkNDNjMDA2ZmJjNzMwNDc3NGZiMzEzN2U3Mi4u
MTY0Mjc1NzYyMDY5OWUxNzExNGE4MTdkOTZhZTYyY2I1MmRhY2JlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgog
I2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzLDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUHJvbWlzZVJlamVjdGlvbkV2ZW50
IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50
SW5pdCB7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSBwcm9taXNlOworICAgICAgICBKU0M6OkpTUHJv
bWlzZSogcHJvbWlzZTsKICAgICAgICAgSlNDOjpKU1ZhbHVlIHJlYXNvbjsKICAgICB9OwogCkBA
IC00NCw3ICs0NSw3IEBAIGNsYXNzIFByb21pc2VSZWplY3Rpb25FdmVudCBmaW5hbCA6IHB1Ymxp
YyBFdmVudCB7CiAKICAgICB2aXJ0dWFsIH5Qcm9taXNlUmVqZWN0aW9uRXZlbnQoKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlLmdldCgpOyB9
CisgICAgSlNDOjpKU1Byb21pc2UmIHByb21pc2UoKSBjb25zdCB7IHJldHVybiAqbV9wcm9taXNl
LmdldCgpOyB9CiAgICAgSlNDOjpKU1ZhbHVlIHJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVh
c29uLmdldCgpOyB9CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFByb21pc2VSZWplY3Rpb25FdmVudEludGVyZmFjZVR5cGU7IH0K
QEAgLTUyLDcgKzUzLDcgQEAgY2xhc3MgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGZpbmFsIDogcHVi
bGljIEV2ZW50IHsKIHByaXZhdGU6CiAgICAgUHJvbWlzZVJlamVjdGlvbkV2ZW50KEpTQzo6RXhl
Y1N0YXRlJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAK
LSAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fcHJvbWlzZTsKKyAgICBKU0M6OlN0cm9u
ZzxKU0M6OkpTUHJvbWlzZT4gbV9wcm9taXNlOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93
bj4gbV9yZWFzb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVqZWN0
ZWRQcm9taXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVqZWN0ZWRQcm9taXNl
VHJhY2tlci5jcHAKaW5kZXggMjMyYWJiODJmMDkxMTZlNjNhN2M2OGZlODkzNzkxZGU1M2UyMDM2
Ny4uYWI5N2FkNDFlMzRmZmQ0OTczOTE5ZGJkNGM4Y2NlZjI1ZTFjOTBlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcApAQCAtNTMsMzMgKzUzLDI2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlamVjdGVkUHJvbWlzZSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUmVqZWN0ZWRQcm9taXNlKTsKIHB1YmxpYzoKLSAgICBSZWplY3Rl
ZFByb21pc2UoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1Byb21p
c2UmIHByb21pc2UpCi0gICAgICAgIDogbV9nbG9iYWxPYmplY3Qodm0sICZnbG9iYWxPYmplY3Qp
Ci0gICAgICAgICwgbV9wcm9taXNlKHZtLCAmcHJvbWlzZSkKKyAgICBSZWplY3RlZFByb21pc2Uo
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBwcm9taXNlKQorICAg
ICAgICA6IG1fcHJvbWlzZShET01Qcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNl
KSkKICAgICB7CiAgICAgfQogCiAgICAgUmVqZWN0ZWRQcm9taXNlKFJlamVjdGVkUHJvbWlzZSYm
KSA9IGRlZmF1bHQ7CiAKLSAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkKKyAg
ICBET01Qcm9taXNlJiBwcm9taXNlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAqbV9nbG9iYWxP
YmplY3QuZ2V0KCk7Ci0gICAgfQotCi0gICAgSlNQcm9taXNlJiBwcm9taXNlKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAqbV9wcm9taXNlLmdldCgpOworICAgICAgICByZXR1cm4gbV9wcm9taXNl
LmdldCgpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTdHJvbmc8SlNET01HbG9iYWxPYmplY3Q+
IG1fZ2xvYmFsT2JqZWN0OwotICAgIFN0cm9uZzxKU1Byb21pc2U+IG1fcHJvbWlzZTsKKyAgICBS
ZWY8RE9NUHJvbWlzZT4gbV9wcm9taXNlOwogfTsKIAogY2xhc3MgVW5oYW5kbGVkUHJvbWlzZSA6
IHB1YmxpYyBSZWplY3RlZFByb21pc2UgewogcHVibGljOgotICAgIFVuaGFuZGxlZFByb21pc2Uo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UmIHByb21p
c2UsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2spCi0gICAgICAgIDogUmVqZWN0ZWRQ
cm9taXNlKHZtLCBnbG9iYWxPYmplY3QsIHByb21pc2UpCisgICAgVW5oYW5kbGVkUHJvbWlzZShK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UmIHByb21pc2UsIFJlZjxT
Y3JpcHRDYWxsU3RhY2s+JiYgc3RhY2spCisgICAgICAgIDogUmVqZWN0ZWRQcm9taXNlKGdsb2Jh
bE9iamVjdCwgcHJvbWlzZSkKICAgICAgICAgLCBtX3N0YWNrKFdURk1vdmUoc3RhY2spKQogICAg
IHsKICAgICB9CkBAIC0xMjUsMTcgKzExOCwxOSBAQCB2b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNr
ZXI6OnByb21pc2VSZWplY3RlZChFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdAog
ewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFw
aXMuaHRtbCN0aGUtaG9zdHByb21pc2VyZWplY3Rpb250cmFja2VyLWltcGxlbWVudGF0aW9uCiAK
LSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIEpTVmFsdWUgcmVhc29uID0gcHJvbWlzZS5y
ZXN1bHQodm0pOwotICAgIG1fYWJvdXRUb0JlTm90aWZpZWRSZWplY3RlZFByb21pc2VzLmFwcGVu
ZChVbmhhbmRsZWRQcm9taXNlIHsgdm0sIGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRnJvbVJlYXNvbihzdGF0ZSwgcmVhc29uKSB9KTsKKyAgICBKU1ZhbHVlIHJl
YXNvbiA9IHByb21pc2UucmVzdWx0KHN0YXRlLnZtKCkpOworICAgIG1fYWJvdXRUb0JlTm90aWZp
ZWRSZWplY3RlZFByb21pc2VzLmFwcGVuZChVbmhhbmRsZWRQcm9taXNlIHsgZ2xvYmFsT2JqZWN0
LCBwcm9taXNlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGcm9tUmVhc29uKHN0YXRlLCByZWFzb24p
IH0pOwogfQogCi12b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnByb21pc2VIYW5kbGVkKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlz
ZSYgcHJvbWlzZSkKK3ZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlzZUhhbmRsZWQo
RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBw
cm9taXNlKQogewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L3dlYmFwcGFwaXMuaHRtbCN0aGUtaG9zdHByb21pc2VyZWplY3Rpb250cmFja2VyLWltcGxlbWVu
dGF0aW9uCiAKICAgICBib29sIHJlbW92ZWQgPSBtX2Fib3V0VG9CZU5vdGlmaWVkUmVqZWN0ZWRQ
cm9taXNlcy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmXSAoVW5oYW5kbGVkUHJvbWlzZSYgdW5oYW5k
bGVkUHJvbWlzZSkgewotICAgICAgICByZXR1cm4gJnVuaGFuZGxlZFByb21pc2UucHJvbWlzZSgp
ID09ICZwcm9taXNlOworICAgICAgICBhdXRvJiBkb21Qcm9taXNlID0gdW5oYW5kbGVkUHJvbWlz
ZS5wcm9taXNlKCk7CisgICAgICAgIGlmIChkb21Qcm9taXNlLmlzU3VzcGVuZGVkKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBkb21Qcm9taXNlLnByb21pc2Uo
KSA9PSAmcHJvbWlzZTsKICAgICB9KTsKICAgICBpZiAocmVtb3ZlZCkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTQzLDkgKzEzOCw3IEBAIHZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlz
ZUhhbmRsZWQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmCiAgICAgaWYgKCFt
X291dHN0YW5kaW5nUmVqZWN0ZWRQcm9taXNlcy5yZW1vdmUoJnByb21pc2UpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotCi0gICAgbV9jb250ZXh0LnBvc3RU
YXNrKFt0aGlzLCByZWplY3RlZFByb21pc2UgPSBSZWplY3RlZFByb21pc2UgeyB2bSwgZ2xvYmFs
T2JqZWN0LCBwcm9taXNlIH1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7Cisg
ICAgbV9jb250ZXh0LnBvc3RUYXNrKFt0aGlzLCByZWplY3RlZFByb21pc2UgPSBSZWplY3RlZFBy
b21pc2UgeyBnbG9iYWxPYmplY3QsIHByb21pc2UgfV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KSBtdXRhYmxlIHsKICAgICAgICAgcmVwb3J0UmVqZWN0aW9uSGFuZGxlZChXVEZNb3ZlKHJlamVj
dGVkUHJvbWlzZSkpOwogICAgIH0pOwogfQpAQCAtMTcxLDggKzE2NCwxMSBAQCB2b2lkIFJlamVj
dGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9ydFVuaGFuZGxlZFJlamVjdGlvbnMoVmVjdG9yPFVuaGFu
ZGxlZFByb21pc2U+JgogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCiAgICAgZm9y
IChhdXRvJiB1bmhhbmRsZWRQcm9taXNlIDogdW5oYW5kbGVkUHJvbWlzZXMpIHsKLSAgICAgICAg
RXhlY1N0YXRlJiBzdGF0ZSA9ICp1bmhhbmRsZWRQcm9taXNlLmdsb2JhbE9iamVjdCgpLmdsb2Jh
bEV4ZWMoKTsKLSAgICAgICAgYXV0byYgcHJvbWlzZSA9IHVuaGFuZGxlZFByb21pc2UucHJvbWlz
ZSgpOworICAgICAgICBSZWY8RE9NUHJvbWlzZT4gZG9tUHJvbWlzZSA9IHVuaGFuZGxlZFByb21p
c2UucHJvbWlzZSgpOworICAgICAgICBpZiAoZG9tUHJvbWlzZS0+aXNTdXNwZW5kZWQoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBFeGVjU3RhdGUmIHN0YXRlID0gKmRvbVByb21p
c2UtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgIGF1dG8mIHByb21pc2Ug
PSAqZG9tUHJvbWlzZS0+cHJvbWlzZSgpOwogCiAgICAgICAgIGlmIChwcm9taXNlLmlzSGFuZGxl
ZCh2bSkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4Nyw3ICsxODMsNyBAQCB2b2lkIFJl
amVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9ydFVuaGFuZGxlZFJlamVjdGlvbnMoVmVjdG9yPFVu
aGFuZGxlZFByb21pc2U+JgogICAgICAgICBib29sIG5lZWRzRGVmYXVsdEFjdGlvbiA9IHRhcmdl
dC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CiAKICAgICAgICAgaWYgKG5lZWRzRGVmYXVsdEFjdGlv
bikKLSAgICAgICAgICAgIG1fY29udGV4dC5yZXBvcnRVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9u
KHN0YXRlLCB1bmhhbmRsZWRQcm9taXNlLnByb21pc2UoKSwgdW5oYW5kbGVkUHJvbWlzZS5jYWxs
U3RhY2soKSk7CisgICAgICAgICAgICBtX2NvbnRleHQucmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJl
amVjdGlvbihzdGF0ZSwgcHJvbWlzZSwgdW5oYW5kbGVkUHJvbWlzZS5jYWxsU3RhY2soKSk7CiAK
ICAgICAgICAgaWYgKCFwcm9taXNlLmlzSGFuZGxlZCh2bSkpCiAgICAgICAgICAgICBtX291dHN0
YW5kaW5nUmVqZWN0ZWRQcm9taXNlcy5zZXQoJnByb21pc2UsICZwcm9taXNlKTsKQEAgLTIwMSwx
MSArMTk3LDE2IEBAIHZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cmVwb3J0UmVqZWN0aW9u
SGFuZGxlZChSZWplY3RlZFByb21pc2UmJiByZWplY3RlZFByCiAgICAgVk0mIHZtID0gbV9jb250
ZXh0LnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICBFeGVjU3Rh
dGUmIHN0YXRlID0gKnJlamVjdGVkUHJvbWlzZS5nbG9iYWxPYmplY3QoKS5nbG9iYWxFeGVjKCk7
CisgICAgUmVmPERPTVByb21pc2U+IGRvbVByb21pc2UgPSByZWplY3RlZFByb21pc2UucHJvbWlz
ZSgpOworICAgIGlmIChkb21Qcm9taXNlLT5pc1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBFeGVjU3RhdGUmIHN0YXRlID0gKmRvbVByb21pc2UtPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxFeGVjKCk7CisgICAgYXV0byYgcHJvbWlzZSA9ICpkb21Qcm9taXNlLT5wcm9taXNlKCk7
CiAKICAgICBQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQgaW5pdGlhbGl6ZXI7Ci0gICAgaW5p
dGlhbGl6ZXIucHJvbWlzZSA9ICZyZWplY3RlZFByb21pc2UucHJvbWlzZSgpOwotICAgIGluaXRp
YWxpemVyLnJlYXNvbiA9IHJlamVjdGVkUHJvbWlzZS5wcm9taXNlKCkucmVzdWx0KHN0YXRlLnZt
KCkpOworICAgIGluaXRpYWxpemVyLnByb21pc2UgPSAmcHJvbWlzZTsKKyAgICBpbml0aWFsaXpl
ci5yZWFzb24gPSBwcm9taXNlLnJlc3VsdCh2bSk7CiAKICAgICBhdXRvIGV2ZW50ID0gUHJvbWlz
ZVJlamVjdGlvbkV2ZW50OjpjcmVhdGUoc3RhdGUsIGV2ZW50TmFtZXMoKS5yZWplY3Rpb25oYW5k
bGVkRXZlbnQsIGluaXRpYWxpemVyKTsKICAgICBhdXRvIHRhcmdldCA9IG1fY29udGV4dC5lcnJv
ckV2ZW50VGFyZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCA4OWY4ZWRiMTgzNWQ5ZDYyMmQzNzA0ZjE0NmI5MWI3YmFlNGUxMDFiLi45NDc0ZTQyMDIy
MzE0YmY2Nzc4NTYxNjJmNDNmMDgwNGIyNWI4OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAKICNpbmNsdWRlICJIVE1MU291cmNl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU0RP
TUVycm9yLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0hUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTEwMTIsNyArMTAxMiw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVSZXNvbHZlUGVuZGluZ1BsYXlQcm9taXNl
cygpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVqZWN0UGVuZGluZ1BsYXlQcm9taXNlcyhE
T01FcnJvciYgZXJyb3IpCiB7Ci0gICAgVmVjdG9yPERPTVByb21pc2U8dm9pZD4+IHBlbmRpbmdQ
bGF5UHJvbWlzZXMgPSBXVEZNb3ZlKG1fcGVuZGluZ1BsYXlQcm9taXNlcyk7CisgICAgVmVjdG9y
PERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcGVuZGluZ1BsYXlQcm9taXNlcyA9IFdURk1vdmUo
bV9wZW5kaW5nUGxheVByb21pc2VzKTsKIAogICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHBlbmRp
bmdQbGF5UHJvbWlzZXMpCiAgICAgICAgIHByb21pc2UucmVqZWN0VHlwZTxJRExJbnRlcmZhY2U8
RE9NRXJyb3I+PihlcnJvcik7CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlamVjdFBlbmRpbmdQbGF5UHJvbWlzZXMoRE9NRXJyb3ImIGVycm9yKQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlc29sdmVQZW5kaW5nUGxheVByb21pc2VzKCkKIHsKLSAgICBW
ZWN0b3I8RE9NUHJvbWlzZTx2b2lkPj4gcGVuZGluZ1BsYXlQcm9taXNlcyA9IFdURk1vdmUobV9w
ZW5kaW5nUGxheVByb21pc2VzKTsKKyAgICBWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
PiBwZW5kaW5nUGxheVByb21pc2VzID0gV1RGTW92ZShtX3BlbmRpbmdQbGF5UHJvbWlzZXMpOwog
CiAgICAgZm9yIChhdXRvJiBwcm9taXNlIDogcGVuZGluZ1BsYXlQcm9taXNlcykKICAgICAgICAg
cHJvbWlzZS5yZXNvbHZlKCk7CkBAIC0zMTM2LDcgKzMxMzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFByZWxvYWQoY29uc3QgU3RyaW5nJiBwcmVsb2FkKQogICAgIHNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIsIHByZWxvYWQpOwogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwbGF5KCVwKSIsIHRoaXMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDk2ZTBhOTVkNjg4
ZTgyYTRlMjcwOThiZTljMTU1NDE1OTY0NDEzMDEuLjE4ZDZmYmZiZDlkNWY5MzllOGJkMDdmOGVj
NmE3NTQzYmU4OTc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC05Myw3ICs5Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tMaXN0OwogY2xhc3MgVmlkZW9UcmFja1By
aXZhdGU7CiBjbGFzcyBXZWJLaXRNZWRpYUtleXM7CiAKLXRlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBET01Qcm9taXNlOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJl
ZDsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIHVzaW5nIEN1ZUludGVydmFsVHJlZSA9IFBP
REludGVydmFsVHJlZTxNZWRpYVRpbWUsIFRleHRUcmFja0N1ZSo+OwpAQCAtMjM4LDcgKzIzOCw3
IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICBib29sIGxvb3AoKSBjb25zdDsKICAgICB2
b2lkIHNldExvb3AoYm9vbCBiKTsKIAotICAgIHZvaWQgcGxheShET01Qcm9taXNlPHZvaWQ+JiYp
OworICAgIHZvaWQgcGxheShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHBsYXkoKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBhdXNlKCkgb3ZlcnJpZGU7CkBAIC04NzEsNyArODcxLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxl
bWVudAogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7CiAgICAgR2Vu
ZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVldWU7CiAKLSAgICBWZWN0b3I8RE9NUHJvbWlz
ZTx2b2lkPj4gbV9wZW5kaW5nUGxheVByb21pc2VzOworICAgIFZlY3RvcjxET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4+IG1fcGVuZGluZ1BsYXlQcm9taXNlczsKIAogICAgIGRvdWJsZSBtX3JlcXVl
c3RlZFBsYXliYWNrUmF0ZSB7IDEgfTsKICAgICBkb3VibGUgbV9yZXBvcnRlZFBsYXliYWNrUmF0
ZSB7IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQ29tbWFuZEJ1ZmZlci5oCmluZGV4IGJmMTFjM2ZmNjE4ZjE1YTQ3MDI1NTk4YWEyYmVm
ZGVhZWY4YTdhNzMuLmU4M2Q2MGY4NTQ4ZTdkM2NiZDlhODY0NDRmNzA4ODcxMGY2MzU2ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5k
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNv
bW1hbmRCdWZmZXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAot
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGJhOGEyMTVjY2MzYTg1YjJhOGUx
ZjEwMzc5N2Q2YTU4YWY2NDIwYmMuLjgzN2E1NDI4M2NkZWZiMzFiMWVmMTMyNTgyNzJkM2M1NzNm
NjZmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNs
dWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNv
dXJjZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CkBAIC01NzMsNyArNTcz
LDcgQEAgY2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxz
PiwgIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW8KICAgICB1bnNpZ25lZCBsb25nIHRyYWNrQXVk
aW9TYW1wbGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tBdWRpb1NhbXBsZUNvdW50OyB9
CiAgICAgdW5zaWduZWQgbG9uZyB0cmFja1ZpZGVvU2FtcGxlQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX3RyYWNrVmlkZW9TYW1wbGVDb3VudDsgfQogICAgIHZvaWQgb2JzZXJ2ZU1lZGlhU3RyZWFt
VHJhY2soTWVkaWFTdHJlYW1UcmFjayYpOwotICAgIHVzaW5nIFRyYWNrRnJhbWVQcm9taXNlID0g
RE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8SW1hZ2VEYXRhPj47CisgICAgdXNpbmcgVHJhY2tGcmFt
ZVByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEltYWdlRGF0YT4+Owog
ICAgIHZvaWQgZ3JhYk5leHRNZWRpYVN0cmVhbVRyYWNrRnJhbWUoVHJhY2tGcmFtZVByb21pc2Um
Jik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE4MDU0NzM1ZWViZDVkYmQyZWMxOTFjYTQ4ZDFlODQ3OTUy
NTA3N2IuLmZhOTUzMmU1MGQxODhiMGZhYzUyYTE0ZWQxOWEyMTNiZDU0YTlkNWYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0wNS0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2RvbS9wcm9taXNl
LXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24t
cnVsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9wcm9taXNlLXJlamVj
dGlvbi1ldmVudC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS5o
dG1sOiBBZGRlZC4KKwogMjAxNy0wNS0wNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuIFVwZGF0ZSBtYWlu
IGV4cGVjdGF0aW9ucyBvZiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXJl
cXVlc3QtaGVhZGVycy5odG1sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21p
c2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lv
bi1ydWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVjdGlv
bi1ldmVudC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRlMzk3NzdjMmNhOTJiYjVkNjY4ZTBmMjEyNmMyZjIyNDZi
NTVlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVj
dGlvbi1ldmVudC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdCBQcm9taXNlUmVqZWN0aW9uRXZlbnQg
Y29uc3RydWN0b3IgZm9sbG93cyBXZWJJREwgcHJvbWlzZSBjb252ZXJzaW9uIHJ1bGUuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBldmVudC5wcm9taXNlIGlzIGFuIGluc3Rh
bmNlIG9mIFByb21pc2UKK1BBU1MgZXZlbnQucmVhc29uIGlzICJDYXBwdWNjaW5vIgorUEFTUyB2
YWx1ZSBpcyA0MgorUEFTUyBldmVudC5wcm9taXNlIGlzIGFuIGluc3RhbmNlIG9mIFByb21pc2UK
K1BBU1MgZXZlbnQucHJvbWlzZSBpcyBwcm9taXNlCitQQVNTIGV2ZW50LnJlYXNvbiBpcyAiQ29j
b2EiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50LXNo
b3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lvbi1ydWxlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9qcy9kb20vcHJvbWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwt
cHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjA3MGEzNDlmMDE3OGFj
ZmRlMDdiZjU0MWE0NmNlMGNjMWUxYzA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvZG9tL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21p
c2UtY29udmVyc2lvbi1ydWxlLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IFByb21pc2VSZWplY3Rpb25FdmVudCBjb25zdHJ1Y3RvciBmb2xsb3dzIFdlYklETCBwcm9t
aXNlIGNvbnZlcnNpb24gcnVsZS4nKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
dmFyIGV2ZW50ID0gbnVsbDsKK3ZhciB2YWx1ZSA9IG51bGw7Cit2YXIgcHJvbWlzZSA9IG51bGw7
CisKK2V2ZW50ID0gbmV3IFByb21pc2VSZWplY3Rpb25FdmVudCgicmVqZWN0aW9uaGFuZGxlZCIs
IHsKKyAgICBwcm9taXNlOiA0MiwKKyAgICByZWFzb246IGBDYXBwdWNjaW5vYAorfSk7CitzaG91
bGRCZVR5cGUoYGV2ZW50LnByb21pc2VgLCBgUHJvbWlzZWApOworc2hvdWxkQmUoYGV2ZW50LnJl
YXNvbmAsIGAiQ2FwcHVjY2lubyJgKTsKK2V2ZW50LnByb21pc2UudGhlbihmdW5jdGlvbiAodikg
eworICAgIHZhbHVlID0gdjsKKyAgICBzaG91bGRCZShgdmFsdWVgLCBgNDJgKTsKKworICAgIHBy
b21pc2UgPSBQcm9taXNlLnJlc29sdmUoNDIpOworICAgIGV2ZW50ID0gbmV3IFByb21pc2VSZWpl
Y3Rpb25FdmVudCgicmVqZWN0aW9uaGFuZGxlZCIsIHsKKyAgICAgICAgcHJvbWlzZTogcHJvbWlz
ZSwKKyAgICAgICAgcmVhc29uOiBgQ29jb2FgCisgICAgfSk7CisKKyAgICBzaG91bGRCZVR5cGUo
YGV2ZW50LnByb21pc2VgLCBgUHJvbWlzZWApOworICAgIHNob3VsZEJlKGBldmVudC5wcm9taXNl
YCwgYHByb21pc2VgKTsKKyAgICBzaG91bGRCZShgZXZlbnQucmVhc29uYCwgYCJDb2NvYSJgKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309087</attachid>
            <date>2017-05-04 12:35:01 -0700</date>
            <delta_ts>2017-05-04 12:44:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166752-20170505043459.patch</filename>
            <type>text/plain</type>
            <size>142321</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NzY0Yjk4ZmNjZGY0NjhhMzZmMmRkYWRlMTRkMTcwZGNlOTExNzM2Li4yOGMwYzU4ZWU5ZGRhY2Q0
ZDhhNGM2ZjczNGFjYmUxODVhNGM3MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNy0wNS0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSlNQcm9taXNlOjpyZXNv
bHZlIHN0YXRpYyBmdW5jdGlvbi4KKyAgICAgICAgVGhpcyBhcHBsaWVzIGBQcm9taXNlLnJlc29s
dmUoKWAgY29udmVyc2lvbiB0byBhIGdpdmVuIHZhbHVlLgorCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnByb21pc2VSZXNvbHZlRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZS5oOgorCiAyMDE3LTA1LTA0ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVu
QHlhbmRleC5ydT4KIAogICAgICAgICBGaXggY29tcGlsYXRpb24gd2l0aCBJQ1UgNTkuMQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDdiYzM0MzU1NTE0NjRhNzQ0MzAxN2M1YzM5MzczODQ0YWU3NWQ5NDUuLjcwMjdm
Y2U5YzA5MDM5OGY1OGY1MGEzZjdjNDYzNTk3NTE2MzhiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMDMgQEAKKzIwMTctMDUtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgSGFuZGxlIElETFByb21pc2U8PiBwcm9wZXJseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRz
IFdlYklETCBQcm9taXNlIHR5cGUgY29udmVyc2lvbi4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjLAor
ICAgICAgICBQcm9taXNlIHRha2VzIGEgdmFsdWUgYW5kIGNvbnZlcnQgaXQgdG8gUHJvbWlzZSBi
eSB1c2luZyBQcm9taXNlLnJlc29sdmUgZnVuY3Rpb24uCisgICAgICAgIFdlIGltcGxlbWVudCBK
U1Byb21pc2U6OnJlc29sdmUgaW4gSlNDIGFuZCB1c2UgaXQgaW4gSlNET01Db252ZXJ0UHJvbWlz
ZS4KKworICAgICAgICBJbiBjb252ZXJzaW9uIHBoYXNlLCB3ZSBqdXN0IGNvbnZlcnQgdGhlIHZh
bHVlIHRvIEpTQzo6SlNQcm9taXNlKiBhbmQgaG9sZCBpdCBpbgorICAgICAgICBQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuIE9uIHRoZSBvdGhlciBoYW5kLCBJbiB0aGlzIHBhdGNoLCB3ZSBuZXdseSBp
bnRyb2R1Y2UgYSBuZXcKKyAgICAgICAgdHlwZSBET01Qcm9taXNlIGFuZCB1c2UgaXQgaW4gUmVq
ZWN0ZWRQcm9taXNlVHJhY2tlci4gQW5kIHdlIGFsc28gcmVuYW1lIHRoZSBwcmV2aW91cworICAg
ICAgICBET01Qcm9taXNlIHRvIERPTVByb21pc2VEZWZlcnJlZCBzaW5jZSBpdCBpcyBjb3JyZXNw
b25kaW5nIHRvIEpTUHJvbWlzZURlZmVycmVkLgorICAgICAgICBET01Qcm9taXNlIGlzIERPTUd1
YXJkZWQgb2JqZWN0LiBTbyBpdCBpcyBzdHJvbmdseSByZWZlcmVuY2VkIGZyb20gU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dAorICAgICAgICBhbmQgaXQgaXMgd2Vha2x5IHJlZmVyZW5jZWQgZnJvbSB0
aGUgb2JqZWN0IGl0c2VsZi4gVGhpcyBpcyBpbXBvcnRhbnQgc2luY2UgU3Ryb25nPEpTUHJvbWlz
ZT4KKyAgICAgICAgcmVmZXJlbmNlIGluIEMrKyBvYmplY3QgdGhhdCBoYXMgYSB3cmFwcGVyIChp
biB0aGlzIGNhc2UsIFByb21pc2VSZWplY3Rpb25FdmVudCkgZWFzaWx5IGNhdXNlcworICAgICAg
ICBjeWNsaWMgcmVmZXJlbmNlLiBXZSBob2xkIGl0IGFzIERPTVByb21pc2UgaW5zdGVhZCBvZiBT
dHJvbmc8SlNQcm9taXNlPiBpbiBSZWplY3RlZFByb21pc2VUcmFja2VyCisgICAgICAgIHRvIGJy
ZWFrIHRoZSBjeWNsaWMgcmVmZXJlbmNlIGVkZ2Ugd2l0aCB3ZWFrIHJlZmVyZW5jZS4KKworICAg
ICAgICBJbiB0aGUgbWVhbnRpbWUsIHdlIHN0aWxsIHVzZSBKU0M6OlN0cm9uZzw+IGluIFByb21p
c2VSZWplY3Rpb25FdmVudC4gSXQgbGVha3MgbWVtb3J5IGlmIHByb21pc2UKKyAgICAgICAgcmVm
ZXJzIHRoZSB3cmFwcGVyIG9iamVjdCBvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQuIEN1c3RvbUV2
ZW50IGFsc28gaGFzIHRoZSBzYW1lIHByb2JsZW0uCisgICAgICAgIFRoaXMgaXMgYSBnZW5lcmFs
IHByb2JsZW0gdGhhdCBgYXR0cmlidXRlIGFueWAgY2FuIGNyZWF0ZSBjeWNsaWMgcmVmZXJlbmNl
LiBBbmQgdGhleSBzaG91bGQgYmUKKyAgICAgICAgZml4ZWQgaW4gYSBkaWZmZXJlbnQgcGF0Y2gu
CisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBkbyBub3QgdGFrZSB0aGUgZm9sbG93aW5nIGFwcHJv
YWNoLiBlLmcuIFRoZXJlIGlzIEMrKyBvYmplY3QgdGhhdCByZXByZXNlbnRzIFByb21pc2UuCisg
ICAgICAgIEFuZCBpdHMgd3JhcHBlciBvYmplY3QgaXMgSlNQcm9taXNlIHRoaW5nLiBXaGVuIGV4
cG9zaW5nIHRoZSBDKysgb2JqZWN0LCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhCisgICAgICAg
IHdyYXBwZXIgb2JqZWN0LiBXZSBkbyBub3QgdGFrZSB0aGlzIGFwcHJvYWNoIGJlY2F1c2UgUHJv
bWlzZVJlamVjdGlvbkV2ZW50IGNhbiB0YWtlIHVzZXItcHJvdmlkZWQgcHJvbWlzZS4KKyAgICAg
ICAgRm9yIGV4YW1wbGUsIHVzZXJzIGNhbiBjcmVhdGUgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGlu
IGEgZm9ybQorICAgICAgICBgbmV3IFByb21pc2VSZWplY3Rpb25FdmVudCgiLi4uIiwgeyBwcm9t
aXNlOiBwcm9taXNlIH0pYC4gSW4gdGhpcyBjYXNlLCBgZXZlbnQucHJvbWlzZSA9PT0gcHJvbWlz
ZWAKKyAgICAgICAgaXMgcmVxdWlyZWQuIEFuZCB0aGlzIGlzIG5vdCBzdWl0YWJsZSBmb3IgdGhl
IGFib3ZlIEMrKyBvYmplY3QgbW9kZWwuCisKKyAgICAgICAgTGFyZ2UgcGFydCBvZiB0aGlzIHBh
dGNoIGlzIG1lY2hhbmljYWwgb25lIHRvIHJlcGxhY2UgRE9NUHJvbWlzZSB3aXRoIERPTVByb21p
c2VEZWZlcnJlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2
aWdhdG9yRU1FLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvV29ya2VyR2xvYmFsU2NvcGVGZXRj
aC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmg6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNl
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpy
ZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjph
cHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNl
dExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1Bl
ZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRyYWNr
VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNr
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVl
c3Q6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRp
YVJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OnJlcGxhY2VUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAg
ICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6YWRkUmVh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9Db250ZXh0OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpj
bG9zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNvbnZlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNvbnZlcnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpwcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVByb21pc2U6OkRPTVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9t
aXNlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNl
OjpyZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6
cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVm
ZXJyZWRQcm9taXNlOjpyZWplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRQcm9taXNlOjpyZXNvbHZlV2l0aENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0V2l0aENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6RGVmZXJyZWRQcm9taXNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6ZGVmZXJyZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJhc2U6OkRPTVByb21pc2VCYXNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VCYXNlOjpvcGVyYXRvcj0pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJhc2U6OnJlamVjdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6cmVqZWN0VHlwZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6cHJvbWlzZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpyZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVByb21pc2U8dm9pZD46OnJlc29sdmUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y2FsbFByb21pc2VGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpi
aW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRlcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVy
cmVkUHJvbWlzZTo6cHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpyZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURlZmVycmVkUHJvbWlzZSk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVSZWplY3RlZFByb21pc2VXaXRoVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlQXNKU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmZ1bGZpbGxQcm9taXNlV2l0aEpT
T04pOgorICAgICAgICAoV2ViQ29yZTo6ZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oLgorICAgICAgICAoV2Vi
Q29yZTo6RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6
cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9t
aXNlOjpyZWplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZl
V2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0
V2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6RGVmZXJy
ZWRQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6ZGVmZXJyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6RE9NUHJvbWlzZURl
ZmVycmVkQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpv
cGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cmVq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VEZWZlcnJlZEJhc2U6OnJlamVjdFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cHJvbWlzZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+OjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbGxQcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6YmluZGlu
Z1Byb21pc2VGdW5jdGlvbkFkYXB0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRC
dWZmZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5
cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0RGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0Pik6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRQcm90b3R5cGU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50OjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVByb3Rv
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnBy
b3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudD46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OndyYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9K
Uyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5pZGw6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNs
aWVudC5oLgorICAgICAgICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFj
ZVNldC5oOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaDoKKyAgICAgICAg
KiBkb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL1JlamVjdGVkUHJv
bWlzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlOjpSZWpl
Y3RlZFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlOjpwcm9taXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlVuaGFuZGxlZFByb21pc2U6OlVuaGFuZGxlZFByb21pc2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlzZVJlamVj
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnByb21pc2VI
YW5kbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9y
dFVuaGFuZGxlZFJlamVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNl
VHJhY2tlcjo6cmVwb3J0UmVqZWN0aW9uSGFuZGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWpl
Y3RlZFByb21pc2U6Omdsb2JhbE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
amVjdFBlbmRpbmdQbGF5UHJvbWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6cmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6cGxheSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaDoKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorCiAyMDE3LTA1LTA0ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSB0aGUgW0VuYWJsZWRCeVNldHRpbmddIGV4
dGVuZGVkIGF0dHJpYnV0ZSB3b3JrIGZvciBhbnkgYXR0cmlidXRlIG9yIG9wZXJhdGlvbiBvbiBh
IHByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCmluZGV4IGE0YWI4N2M0ZGJkMTkzMTJjYjk5YWNhODY2YmRiZGQyMjU5NjZlNjQu
LjUyN2YzMmI1NTQ1MWFkYWE1NTM0MDFlZTgxNTM5Yjk0MmQzZWJhMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQyOCw2ICs0
MjgsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oaW5pdC52bSwgaXRlcmF0
b3JIZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3du
ZXIpKTsKICAgICAgICAgfSk7CiAKKyAgICBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uaW5pdExh
dGVyKAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsK
KyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihp
bml0LnZtLCBwcm9taXNlQ29uc3RydWN0b3JSZXNvbHZlQ29kZUdlbmVyYXRvcihpbml0LnZtKSwg
aW5pdC5vd25lcikpOworICAgICAgICB9KTsKKwogICAgIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlG
dW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2
bSwgcHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0b3Iodm0p
LCB0aGlzKSk7CiAgICAgbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIG1fdGhyb3dUeXBl
RXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKApAQCAtMTE4Nyw2ICsxMTkyLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlv
bi52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlRnVuY3Rp
b24udmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmpl
Y3RQcm90b1ZhbHVlT2ZGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDdlOWZl
Y2I3MWFiMTNhMGViMThmNDI3ZGUzODgwNTgxMDNlYmU1OGUuLmIzM2Q2ZDM1NjQyYWUzM2ZkZTE2
MjViOGJkODc4ZmIzODBmYzk3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjY1LDYgKzI2NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2luaXRpYWxp
emVQcm9taXNlRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1
bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbjsKKyAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbjsKICAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbjsKICAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9u
OwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uOwpAQCAtNTE1LDYgKzUxNiw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24qIGFy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVl
c0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVQcm9taXNl
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24uZ2V0
KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CisgICAg
SlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
bWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBvYmplY3RQ
cm90b1ZhbHVlT2ZGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJvdG9WYWx1ZU9m
RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLmdl
dCgpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1
bmN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
LmNwcAppbmRleCBhODNkMmJmNTJmNzZhODRmZWE3MGNkYjE0NjM3ZjllMjA3NGYyMzFiLi5kNzRm
YWEwODE3NTU2NmY4MGY5ZDRjZGQyMGEwOGM5ZTY3NzJhODVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKQEAgLTkyLDQgKzkyLDIzIEBAIGJvb2wgSlNQ
cm9taXNlOjppc0hhbmRsZWQoVk0mIHZtKSBjb25zdAogICAgIHJldHVybiB2YWx1ZS5hc0Jvb2xl
YW4oKTsKIH0KIAorSlNQcm9taXNlKiBKU1Byb21pc2U6OnJlc29sdmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTRnVuY3Rpb24q
IHByb21pc2VSZXNvbHZlRnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPnByb21pc2VSZXNvbHZlRnVu
Y3Rpb24oKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IEpTQzo6Z2V0Q2FsbERhdGEocHJvbWlzZVJlc29sdmVGdW5jdGlvbiwgY2FsbERhdGEpOworICAg
IEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIHByb21pc2VSZXNvbHZlRnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ29uc3RydWN0b3IoKSwgYXJndW1lbnRz
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBBU1NFUlQo
cHJvbWlzZS5pbmhlcml0cyh2bSwgSlNQcm9taXNlOjppbmZvKCkpKTsKKyAgICByZXR1cm4ganND
YXN0PEpTUHJvbWlzZSo+KHJlc3VsdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAppbmRleCBjN2Q3ZDk5Y2FhNGQ4NmQy
MmM3ZmFiNDBjYzRmM2QwMDUwNDNiYmMwLi4zNDg0NTRiMjU0MTAyZDU2NTJlMzliY2MwOTE1NjEy
NzU1NTI2NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaApA
QCAtNTIsNiArNTIsOCBAQCBjbGFzcyBKU1Byb21pc2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgLy8gVGhpcyBtYXkgcmFpc2UgYSBKUyBleGNlcHRpb24uCiAgICAgdm9pZCBpbml0
aWFsaXplKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBleGVjdXRvcik7CiAK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNQcm9taXNlKiByZXNvbHZlKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CisKIHByb3RlY3RlZDoKICAgICBKU1Byb21pc2UoVk0mLCBTdHJ1
Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDI4MjViZTQzOGQ4ZjQxOTYxYTM1MDA4MTZiZDU5ZjZjNjIwNzdmNWMuLjVjOWM5ZDE2
YTRlZWFiYzZlNGM3YWY1ODMyMWI0YzhjZDJiOGMzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0xMTYyLDcgKzExNjIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9i
amVjdC5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwCi0gICAgYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVk
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAogICAgIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uLmNwcAppbmRleCA3NDQ5NzkzMGUzYjlhZTg5YTRkM2MzZjBjZWFkMDcyNTA1ZTgw
MDViLi42MWE5ZTVjYTAxNWRlMWRkZTI4ZGMyYTBmYzAwZTBlZjVhMzk2ZmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCkBA
IC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkxpbmtJ
Y29uQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiTGlua0ljb25UeXBlLmgiCiAjaW5jbHVkZSAiTWFp
bkZyYW1lLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAwY2U4NzVkODkzNTg1ZWUwMzljZmJmZDU2ZTJh
NmE3YzUyYTIwY2VmLi4wNTkyMjQzOWUxMmYyOTIyMTA4MWUzMmM4NzA2Y2FkZGI1ZjViMzE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tR
dWV1ZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlVHlwZS5oIgogI2luY2x1ZGUg
Ik1lZGlhS2V5U2Vzc2lvblR5cGUuaCIKICNpbmNsdWRlICJNZWRpYUtleVN0YXR1cy5oIgpAQCAt
NzAsNyArNzAsNyBAQCBjbGFzcyBNZWRpYUtleVNlc3Npb24gZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYQogICAgIHZvaWQgY2xvc2UoUmVm
PERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCByZW1vdmUoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAKLSAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZTx2b2lkPjsKKyAg
ICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+OwogICAgIHZv
aWQgcmVnaXN0ZXJDbG9zZWRQcm9taXNlKENsb3NlZFByb21pc2UmJik7CiAKICAgICBjb25zdCBW
ZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0
dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3Mu
aAppbmRleCBhMTEzZTI2MDEwMDFlZDY3YmY3Y2JmOGRmZjcwNWIxMjM2NDBlNWM2Li4wYTNiNmUx
ZDQ4YzA2OTczYmRkZGNmODhhMzQ1MjE5ZTViNzhmMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vz
cy5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAogI2lu
Y2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNp
bmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IGJkODBiZDJjOTg0
M2E4YWY4ZDdkYmFkNWI4NTM1MjU3ZDkwNTFhZDUuLjlhNTlkMTcxMTRlYzNlZGJhNjE0NzE3MDk4
YWEyZDRmYmZlMzA4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCi0jaW5jbHVkZSAiSlNET01Q
cm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJN
ZWRpYUtleVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL05hdmlnYXRvckVNRS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuaAppbmRleCA0YzIwNGU5NDFmZmI2ZGYzYjExZTYzOGFkMjIz
N2RkNWE3OTM0OWNkLi44MTY1ZmFlYjFmZmM2ZWFjZGQ0MDRkMDVmOGE1NzI3MzAyNDBhMDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRv
ckVNRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdh
dG9yRU1FLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIk1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oIgogI2luY2x1
ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RE9NV2luZG93RmV0Y2guaAppbmRleCBiM2QxNTc1N2FhZGIzMmUxMTU4NjE1MDUzYWMxMzZlZTVk
ZDJkYzkxLi4xM2JmNzVhMmRjODRiMWYzMjg5YWEyNGFlM2Q2ZjljMWE0ZjE5ZDEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0RPTVdpbmRvd0ZldGNoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5oCkBAIC0zMCw3ICsz
MCw3IEBACiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCi0jaW5jbHVkZSAiSlNET01Qcm9taXNl
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaAppbmRleCBmZWVhNmRjZjE2Nzc1NzE1ZDZiOWJmMjcxN2QxZDBiYTg1MmEy
MGE2Li44MmI4MzljNmRjOTIyMzA3ZjM2NzZjODMwMzdkY2M4MDhhZTZkNjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNs
dWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIkZldGNoTG9hZGVyLmgiCiAjaW5j
bHVkZSAiRm9ybURhdGEuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJK
U0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlVSTFNlYXJjaFBhcmFtcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggNGEw
ZmIzOWYxMGU2MGMyY2M2YjFkNDk4ZDgxNDgyNGZlNzk3MjU0Mi4uMzhiNzY4OWVkZTJlOTFhYjdh
ZWViZjcyNjBmYjQ0MzBlNWJjMzhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxF
KEZFVENIX0FQSSkKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKaW5kZXggZjVhOWUyNzE3MDY0ZTFmYzI2YmFkN2IyMzNkMjVhNTlmNDAyYzAxMC4uYTkwNjM3
ZmJiY2Q0ZjE1MzQ3NjEzNTkxMWQxOTc4MmIxMDJmMTYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgRmV0
Y2hSZXNwb25zZSBmaW5hbCA6IHB1YmxpYyBGZXRjaEJvZHlPd25lciB7CiAgICAgc3RhdGljIFJl
ZjxGZXRjaFJlc3BvbnNlPiBlcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gcmVkaXJlY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhdHVzKTsKIAotICAgIHVzaW5n
IEZldGNoUHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+PjsK
KyAgICB1c2luZyBGZXRjaFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNl
PEZldGNoUmVzcG9uc2U+PjsKICAgICBzdGF0aWMgdm9pZCBmZXRjaChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hQcm9taXNlJiYpOwogCiAgICAgdm9pZCBjb25z
dW1lKHVuc2lnbmVkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmgKaW5kZXggNWJi
YjI4Yjg4NTNiZjIxMWE3ZDgyOGU2ZDgwYTkxOWQwZWFlZWZiNS4uNDc3MDY5ZjM0NGI5OWQ0ZDJk
Y2Q5MmQ5MzJlYWM1YTUxODM0Zjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAog
I2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCmlu
ZGV4IDI4NTVlYTUyZDRlZDMyM2NjMjU4MDkxNGM3ZWUwY2FmYTc3MmVlZDguLjkzZjkzODBmZTY2
Nzc5ZDMxMmM4M2M2MTEwNTViNWE5ZDdjMDhiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaApAQCAtMzUsNyArMzUsNyBAQAogCiAj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAj
aW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC01Niw4ICs1Niw4IEBAIGNs
YXNzIE1lZGlhRGV2aWNlcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2aWNlcz4sIHB1Ymxp
YyBDb250ZXh0RGVzdHJ1Y3Rpb25PCiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsK
IAotICAgIHVzaW5nIFByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFjZTxNZWRpYVN0cmVh
bT4+OwotICAgIHVzaW5nIEVudW1lcmF0ZURldmljZXNQcm9taXNlID0gRE9NUHJvbWlzZTxJRExT
ZXF1ZW5jZTxJRExJbnRlcmZhY2U8TWVkaWFEZXZpY2VJbmZvPj4+OworICAgIHVzaW5nIFByb21p
c2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj47CisgICAg
dXNpbmcgRW51bWVyYXRlRGV2aWNlc1Byb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2Vx
dWVuY2U8SURMSW50ZXJmYWNlPE1lZGlhRGV2aWNlSW5mbz4+PjsKIAogICAgIHN0cnVjdCBTdHJl
YW1Db25zdHJhaW50cyB7CiAgICAgICAgIFZhcmlhbnQ8Ym9vbCwgTWVkaWFUcmFja0NvbnN0cmFp
bnRzPiB2aWRlbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAppbmRleCA2ZGZl
YzkzMjJmOWI5YzQ0MDhjODc2MTVkMjA4NzkxMzRhYmQyMjE5Li4xZGQwMzliY2E4NzQ0NzQ4MDk5
M2UwOTEzYmM1M2M3ZDhkMDdmNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24u
Y3BwCkBAIC02OTYsNyArNjk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFu
ZGxlcj4gTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2gKICAgICByZXR1
cm4gbV9tZWRpYUVuZHBvaW50LT5jcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIobGFiZWwsIG9wdGlv
bnMpOwogfQogCi12b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNr
KFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ss
IERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb246OnJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmPE1lZGlhU3RyZWFt
VHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQog
ewogICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9IG1hdGNoVHJhbnNjZWl2ZXIo
bV9wZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKSwgWyZzZW5kZXJdIChSVENSdHBUcmFu
c2NlaXZlciYgY3VycmVudCkgewogICAgICAgICByZXR1cm4gJmN1cnJlbnQuc2VuZGVyKCkgPT0g
JnNlbmRlcjsKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVj
dGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdAogICAg
IH0pOwogfQogCi12b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNr
VGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwgY29uc3QgU3RyaW5nJiBtaWQsIFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYgcHJvbWlzZSkKK3ZvaWQg
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2tUYXNrKFJUQ1J0cFNlbmRl
ciYgc2VuZGVyLCBjb25zdCBTdHJpbmcmIG1pZCwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0
aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mIHByb21pc2UpCiB7CiAgICAgaWYgKG1f
cGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dFBlZXJDb25uZWN0aW9uLmgKaW5kZXggY2U3ZWMzZWQ3OTQzODcyMzUwYjhmMDdlYWZhNjMyOWI1
YjBmN2E2OS4uMWUzMWNkNDUwZmQyNzYxYjIwMjMxZTI0OTliNTE1MjdlMWVhYTNkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIE1lZGlh
RW5kcG9pbnRQZWVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQsIHB1YmxpYyBNCiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IGdldFJlbW90ZVN0
cmVhbXMoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVj
ZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tp
bmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkgZmluYWw7Ci0gICAgdm9pZCByZXBsYWNlVHJhY2so
UlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4m
JikgZmluYWw7CisgICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlh
U3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKIAogICAg
IHZvaWQgZW11bGF0ZVBsYXRmb3JtRXZlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24pIGZpbmFsOwog
CkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbiBmaW5h
bCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBNCiAKICAgICB2b2lkIGFk
ZEljZUNhbmRpZGF0ZVRhc2soUlRDSWNlQ2FuZGlkYXRlJik7CiAKLSAgICB2b2lkIHJlcGxhY2VU
cmFja1Rhc2soUlRDUnRwU2VuZGVyJiwgY29uc3QgU3RyaW5nJiBtaWQsIFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+Jik7CisgICAgdm9pZCByZXBsYWNlVHJhY2tUYXNr
KFJUQ1J0cFNlbmRlciYsIGNvbnN0IFN0cmluZyYgbWlkLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4m
JiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Jik7CiAKICAgICBib29sIGxvY2FsRGVzY3JpcHRp
b25UeXBlVmFsaWRGb3JTdGF0ZShSVENTZHBUeXBlKSBjb25zdDsKICAgICBib29sIHJlbW90ZURl
c2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUoUlRDU2RwVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cAppbmRleCA2YTZiYTUxNWFlN2VjNDg0MzNiNDE0M2Q3ZWJmYTk5MjNhMjJlYzRkLi5kZmY0ZWZm
ZmQxYTdmODg3MDZlZTM5MzgyMDY5ZDM3YTA5MTYwNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTI1
Myw3ICsyNTMsNyBAQCBzdGF0aWMgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGVNZWRp
YUNvbnN0cmFpbnRzSW1wbChjb25zdCBzdGQ6Om9wdGlvbmFsPAogICAgIHJldHVybiBjcmVhdGVN
ZWRpYUNvbnN0cmFpbnRzSW1wbChjb25zdHJhaW50cy52YWx1ZSgpKTsKIH0KIAotdm9pZCBNZWRp
YVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFU
cmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgbV9wcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaAppbmRleCAzYjdlYmY5NTM3NTNhMzU0ZmFmNGU5NzY1ZDI3YWFjODdjMTIx
Zjg5Li43NTU1NDZlNGM0MTFmM2MzMmIxNGMzZTA5YmU0NzU2OTM2YjYzYTczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1
ZGUgIkRvdWJsZVJhbmdlLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJK
U0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIkxvbmdSYW5nZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCiAj
aW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xh
c3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+
LCBwdWJsaWMgQWN0aXZlRE9NT2IKICAgICBUcmFja0NhcGFiaWxpdGllcyBnZXRDYXBhYmlsaXRp
ZXMoKSBjb25zdDsKIAogICAgIGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50cyYgZ2V0Q29uc3Ry
YWludHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9Ci0gICAgdm9pZCBhcHBseUNv
bnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYsIERP
TVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmKTsKIAogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSgpIHsgcmV0dXJuIG1fcHJp
dmF0ZS0+c291cmNlKCk7IH0KICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgcHJpdmF0ZVRy
YWNrKCkgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CkBAIC0xNTIsNyArMTUyLDcgQEAgY2xh
c3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+
LCBwdWJsaWMgQWN0aXZlRE9NT2IKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1f
cHJpdmF0ZTsKIAogICAgIE1lZGlhVHJhY2tDb25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOwotICAg
IHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZTx2b2lkPj4gbV9wcm9taXNlOworICAgIHN0ZDo6b3B0
aW9uYWw8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3Byb21pc2U7CiAgICAgV2Vha1B0ckZh
Y3Rvcnk8TWVkaWFTdHJlYW1UcmFjaz4gbV93ZWFrUHRyRmFjdG9yeTsKIAogICAgIGJvb2wgbV9l
bmRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjI4NTRlYTMwMWMx
ODI2ZmQ3ODQ5NDUyNzI1ODY4NWUwYjFkMzQwOS4uMjIwMDYxNjIyMjU5N2NmODQwZjRkOGNmYTI3
MGZmNTcyNzdiODhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMTMzLDcgKzEzMyw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0xvY2FsRGVzY3JpcHRpb25UeXBlVmFsaWRGb3JTdGF0
ZShSVENTZHBUeXBlIHR5cGUsIFJUQ1NpZ25hCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVz
Y3JpcHRpb24mIHNlc3Npb25EZXNjcmlwdGlvbiwgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2Up
Cit2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNz
aW9uRGVzY3JpcHRpb24mIHNlc3Npb25EZXNjcmlwdGlvbiwgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQo
KSk7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW1vdGVEZXNj
cmlwdGlvblR5cGVWYWxpZEZvclN0YXRlKFJUQ1NkcFR5cGUgdHlwZSwgUlRDU2lnbgogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURl
c2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgc2Vzc2lvbkRlc2NyaXB0aW9uLCBET01Q
cm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRS
ZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIHNlc3Npb25EZXNjcmlwdGlv
biwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1f
cGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSk7CiAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9u
JiYgZXhjZXB0aW9uKQogICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlID0gc3RkOjpudWxsb3B0
OwogfQogCi12b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2FuZGlkYXRlKFJUQ0lj
ZUNhbmRpZGF0ZSogaWNlQ2FuZGlkYXRlLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3Zv
aWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRl
KiBpY2VDYW5kaWRhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAg
ICAgQVNTRVJUKCFtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaAppbmRleCA1NTViZmI4NjViMzNhM2I3Y2U2YjNlN2Y4Y2FkNTg3YTc2MDZlYmUwLi4xYjg1
ZjA4ZDVlZDcyZjY1NGQ5ODI3MTgyMzdhMzc1MmNlMWNkMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfUlRDKQogCi0jaW5jbHVkZSAi
SlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNs
dWRlICJSVENSdHBQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUlRDU2lnbmFsaW5nU3RhdGUuaCIK
IApAQCAtNTYsOCArNTYsOCBAQCBzdHJ1Y3QgUlRDRGF0YUNoYW5uZWxJbml0Owogc3RydWN0IFJU
Q09mZmVyT3B0aW9uczsKIAogbmFtZXNwYWNlIFBlZXJDb25uZWN0aW9uIHsKLXVzaW5nIFNlc3Np
b25EZXNjcmlwdGlvblByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFjZTxSVENTZXNzaW9u
RGVzY3JpcHRpb24+PjsKLXVzaW5nIFN0YXRzUHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJm
YWNlPFJUQ1N0YXRzUmVwb3J0Pj47Cit1c2luZyBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlID0g
RE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxSVENTZXNzaW9uRGVzY3JpcHRpb24+PjsK
K3VzaW5nIFN0YXRzUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8UlRD
U3RhdHNSZXBvcnQ+PjsKIH0KIAogdXNpbmcgQ3JlYXRlUGVlckNvbm5lY3Rpb25CYWNrZW5kID0g
c3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4gKCopKFJUQ1BlZXJDb25uZWN0
aW9uJik7CkBAIC03MSw5ICs3MSw5IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CiAK
ICAgICB2b2lkIGNyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmLCBQZWVyQ29ubmVjdGlvbjo6
U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmKTsKICAgICB2b2lkIGNyZWF0ZUFuc3dlcihSVENB
bnN3ZXJPcHRpb25zJiYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNl
JiYpOwotICAgIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
LCBET01Qcm9taXNlPHZvaWQ+JiYpOwotICAgIHZvaWQgc2V0UmVtb3RlRGVzY3JpcHRpb24oUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKLSAgICB2b2lkIGFkZElj
ZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUqLCBET01Qcm9taXNlPHZvaWQ+JiYpOworICAgIHZv
aWQgc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBzZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNz
aW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBh
ZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYpOwogCiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVy
PiBjcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNo
YW5uZWxJbml0JikgPSAwOwogCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9u
QmFja2VuZCB7CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVt
b3RlU3RyZWFtcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUmVmPFJUQ1J0cFJlY2VpdmVy
PiBjcmVhdGVSZWNlaXZlcihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlkLCBjb25zdCBTdHJp
bmcmIHRyYWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lkKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwg
RE9NUHJvbWlzZTx2b2lkPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhS
VENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QWRkZWRUcmFjayhSVENSdHBT
ZW5kZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UmVtb3ZlZFRyYWNrKFJUQ1J0cFNl
bmRlciYpIHsgfQogCkBAIC0xMzcsNyArMTM3LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNr
ZW5kIHsKICAgICB2aXJ0dWFsIHZvaWQgZG9TZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZG9TZXRSZW1vdGVEZXNjcmlwdGlv
bihSVENTZXNzaW9uRGVzY3JpcHRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRvQWRkSWNl
Q2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZJ
Y2VDYW5kaWRhdGVzKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKSB7IHByb21pc2UucmVzb2x2
ZSgpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZE9mSWNlQ2FuZGlkYXRlcyhET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKSB7IHByb21pc2UucmVzb2x2ZSgpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGRvU3RvcCgpID0gMDsKIAogcHJvdGVjdGVkOgpAQCAtMTQ1LDggKzE0NSw4IEBAIGNs
YXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25h
bDxQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZT4gbV9vZmZlckFuc3dl
clByb21pc2U7Ci0gICAgc3RkOjpvcHRpb25hbDxET01Qcm9taXNlPHZvaWQ+PiBtX3NldERlc2Ny
aXB0aW9uUHJvbWlzZTsKLSAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2U8dm9pZD4+IG1fYWRk
SWNlQ2FuZGlkYXRlUHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPj4gbV9zZXREZXNjcmlwdGlvblByb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4+IG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZTsKIAogICAgIGJv
b2wgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzIHsgdHJ1ZSB9OwogICAgIHN0cnVjdCBQZW5k
aW5nSUNFQ2FuZGlkYXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTAzNjQ2YzQ2MjMxMDliNjMz
MzhjODk5YTEwMjQyOTA3MDdmMDBjMS4uOTEzMTYwMzcwMThhYzYzZTc5ZTE0YjViYjczNTJhNDNj
MTdjZjFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFJUQ1Bl
ZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmIG9wdGlv
bnMsIFNlc3Npb25EZQogICAgIG1fYmFja2VuZC0+Y3JlYXRlQW5zd2VyKFdURk1vdmUob3B0aW9u
cyksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1
ZWRTZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVl
dWVkU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIExPRyhXZWJSVEMs
ICJTZXR0aW5nIGxvY2FsIGRlc2NyaXB0aW9uOlxuJXNcbiIsIGRlc2NyaXB0aW9uLnNkcCgpLnV0
ZjgoKS5kYXRhKCkpOwogICAgIGlmIChpc0Nsb3NlZCgpKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAg
UmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OnBlbmRpbmdM
b2NhbERlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9iYWNrZW5kLT5wZW5kaW5nTG9j
YWxEZXNjcmlwdGlvbigpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRS
ZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBET01Q
cm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZFNl
dFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgTE9HKFdlYlJUQywgIlNl
dHRpbmcgcmVtb3RlIGRlc2NyaXB0aW9uOlxuJXNcbiIsIGRlc2NyaXB0aW9uLnNkcCgpLnV0Zjgo
KS5kYXRhKCkpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OnBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnMK
ICAgICByZXR1cm4gbV9iYWNrZW5kLT5wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKTsKIH0KIAot
dm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRp
ZGF0ZSogcnRjQ2FuZGlkYXRlLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUlRD
UGVlckNvbm5lY3Rpb246OnF1ZXVlZEFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUqIHJ0
Y0NhbmRpZGF0ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBM
T0coV2ViUlRDLCAiUmVjZWl2ZWQgaWNlIGNhbmRpZGF0ZTpcbiVzXG4iLCBydGNDYW5kaWRhdGUg
PyBydGNDYW5kaWRhdGUtPmNhbmRpZGF0ZSgpLnV0ZjgoKS5kYXRhKCkgOiAibnVsbCIpOwogCkBA
IC01MTIsNyArNTEyLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6ZmlyZUV2ZW50KEV2ZW50
JiBldmVudCkKICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotdm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21p
c2UpCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhSVENS
dHBTZW5kZXImIHNlbmRlciwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZFNlbmRlciA9IG1ha2VSZWYoc2VuZGVyKSwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHdpdGhUcmFjayA9IFdURk1vdmUod2l0aFRyYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRTZW5k
ZXItPnNldFRyYWNrKFdURk1vdmUod2l0aFRyYWNrKSk7CkBAIC01MjAsNyArNTIwLDcgQEAgdm9p
ZCBSVENQZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVy
JiBzZW5kZXIsIFJlZjxNZWRpYVMKICAgICB9KTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlv
bjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBSVENQ
ZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pc2UpCiB7CiAgICAgaWYgKCF3aXRoVHJhY2spIHsKICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbcHJvdGVjdGVkU2VuZGVyID0gbWFrZVJlZihzZW5kZXIp
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11
dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDA0NzQyNmMxNDUzMWU1NDE1ODMyNTI2NjQ5OTNhMmM0
Y2JhMDdmYTAuLmY1ZTVmYzM0OWFiZDcyN2IwZWMwODhiOTEwMGQ3Y2Y2YjBhYjU3ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmgKQEAgLTc2LDE3ICs3NiwxNyBAQCBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbiBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVibGljIFJUQwogICAg
IHZvaWQgcXVldWVkQ3JlYXRlT2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYsIFBlZXJDb25uZWN0aW9u
OjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYpOwogICAgIHZvaWQgcXVldWVkQ3JlYXRlQW5z
d2VyKFJUQ0Fuc3dlck9wdGlvbnMmJiwgUGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlv
blByb21pc2UmJik7CiAKLSAgICB2b2lkIHF1ZXVlZFNldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2b2lkIHF1ZXVlZFNl
dExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGxvY2FsRGVz
Y3JpcHRpb24oKSBjb25zdDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJy
ZW50TG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3Jp
cHRpb24+IHBlbmRpbmdMb2NhbERlc2NyaXB0aW9uKCkgY29uc3Q7CiAKLSAgICB2b2lkIHF1ZXVl
ZFNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYsIERPTVByb21pc2U8
dm9pZD4mJik7CisgICAgdm9pZCBxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9u
RGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbj4gcmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25z
dDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3Jp
cHRpb24oKSBjb25zdDsKIAotICAgIHZvaWQgcXVldWVkQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNh
bmRpZGF0ZSosIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBxdWV1ZWRBZGRJY2VDYW5k
aWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCiAg
ICAgUlRDU2lnbmFsaW5nU3RhdGUgc2lnbmFsaW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Np
Z25hbGluZ1N0YXRlOyB9CiAgICAgUlRDSWNlR2F0aGVyaW5nU3RhdGUgaWNlR2F0aGVyaW5nU3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX2ljZUdhdGhlcmluZ1N0YXRlOyB9CkBAIC0xNDMsNyArMTQz
LDcgQEAgY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxS
VENQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBSVEMKICAgICB2b2lkIGRpc2FibGVJQ0VDYW5kaWRh
dGVGaWx0ZXJpbmcoKSB7IG1fYmFja2VuZC0+ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygp
OyB9CiAgICAgdm9pZCBlbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKSB7IG1fYmFja2VuZC0+
ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7IH0KIAotICAgIHZvaWQgZW5xdWV1ZVJlcGxh
Y2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVBy
b21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBlbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhSVENSdHBT
ZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYpOwogCiAgICAgdm9pZCBjbGVhckNvbnRyb2xsZXIoKSB7IG1fY29udHJvbGxlciA9IG51bGxw
dHI7IH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgUlRDCiAKICAg
ICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQgdG8gYmUgdGhl
IEJhY2tlbmQKICAgICAvLyBSVENSdHBTZW5kZXI6OkJhY2tlbmQKLSAgICB2b2lkIHJlcGxhY2VU
cmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlz
ZTx2b2lkPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpIGZp
bmFsOwogICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgdXBkYXRlQ29ubmVjdGlvblN0YXRlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKaW5k
ZXggMDJmMjliMjAxYzFhYTRhZmRjZGM4MmI2MjdhNDQ5MWEyMTEwMTk5OS4uMGQ0NjY0MTEyZDU5
YjcwYTQzOGNlYTVmNjI2ZWFiNjk1MTJhYjQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2
b2lkIFJUQ1J0cFNlbmRlcjo6c2V0VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2sp
CiAgICAgbV90cmFjayA9IFdURk1vdmUodHJhY2spOwogfQogCi12b2lkIFJUQ1J0cFNlbmRlcjo6
cmVwbGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJv
bWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIFJUQ1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNTdG9wcGVkKCkpIHsKICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKaW5kZXggM2M1MDdhNjMyNjUzY2YwNDhkNzBh
M2MxYzc4M2RlNWZmODcyMjY0OS4uMzBhNTE1Yjg5ZjZiZDFjZGRhNDZiY2M5NDE4YjQwOWI5ZGNm
MjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlci5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFJUQ1J0cFNlbmRlciA6IHB1YmxpYyBS
VENSdHBTZW5kZXJSZWNlaXZlckJhc2UgewogcHVibGljOgogICAgIGNsYXNzIEJhY2tlbmQgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5k
ZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRl
ciYpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB+QmFja2VuZCgpIHsgfQogICAgIH07CkBA
IC02MCw3ICs2MCw3IEBAIGNsYXNzIFJUQ1J0cFNlbmRlciA6IHB1YmxpYyBSVENSdHBTZW5kZXJS
ZWNlaXZlckJhc2UgewogICAgIHZvaWQgc2V0VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYp
OwogICAgIHZvaWQgc2V0VHJhY2tUb051bGwoKTsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpOworICAgIHZvaWQg
cmVwbGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJik7CiAKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKaW5kZXggNGQyYmZiYzY1MjUxMGZiZGRjZTcyNzRiZGNlOGQ2NTg5MGY5OWQ1
Yi4uOTYxMjVmZDQ0M2YwODMzZjUzZTczMGI4ZmEzZGJlOGM5YjVhYmViZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCkBAIC00OSw3ICs0OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXhjZXB0aW9u
T3I8dm9pZD4gVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8
TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3Ry
YWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVByb21pc2U8SURMSW50ZXJmYWNlPE1l
ZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorRXhjZXB0aW9uT3I8dm9pZD4gVXNlck1lZGlhUmVxdWVz
dDo6c3RhcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYg
YXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3Ry
YWludHMsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmIHBy
b21pc2UpCiB7CiAgICAgYXV0byogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJv
bShkb2N1bWVudC5wYWdlKCkpOwogICAgIGlmICghdXNlck1lZGlhKQpAQCAtNjQsNyArNjQsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFpbgogICAgIHJldHVybiB7IH07CiB9CiAKLVVzZXJNZWRp
YVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoRG9jdW1lbnQmIGRvY3VtZW50LCBVc2VyTWVkaWFD
b250cm9sbGVyJiBjb250cm9sbGVyLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9D
b25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMs
IERPTVByb21pc2U8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorVXNlck1l
ZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQsIFVzZXJNZWRp
YUNvbnRyb2xsZXImIGNvbnRyb2xsZXIsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRp
b0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50
cywgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYgcHJvbWlz
ZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZkb2N1bWVudCkKICAgICAsIG1f
YXVkaW9Db25zdHJhaW50cyhXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpKQogICAgICwgbV92aWRl
b0NvbnN0cmFpbnRzKFdURk1vdmUodmlkZW9Db25zdHJhaW50cykpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IDMx
NmZlZTE1NDhkOTU0NGUyMTk1MjY3ZDg2ODhiMWVlMjJmN2RhYjEuLmEzZTk2OTAyOTI2NTc5YWZh
ZDI4MTQyNzhiZWM2ZTcyZjkwNmM4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCkBAIC0zNSw3ICszNSw3IEBACiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgot
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBVc2Vy
TWVkaWFDb250cm9sbGVyOwogCiBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIFJlZkNv
dW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydChEb2N1bWVu
dCYsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVk
aWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJvbWlzZTxJRExJbnRl
cmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc3Rh
cnQoRG9jdW1lbnQmLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50
cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVByb21p
c2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKIAogICAgIHZpcnR1YWwg
flVzZXJNZWRpYVJlcXVlc3QoKTsKIApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBVc2VyTWVkaWFS
ZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4sIHByaXZhdGUgQ29u
dGV4dERlcwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIFVzZXJNZWRpYVJlcXVlc3QoRG9jdW1lbnQmLCBVc2VyTWVkaWFDb250
cm9sbGVyJiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJl
ZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBET01Qcm9taXNlPElE
TEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOworICAgIFVzZXJNZWRpYVJlcXVlc3QoRG9jdW1l
bnQmLCBVc2VyTWVkaWFDb250cm9sbGVyJiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1
ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFp
bnRzLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJik7CiAK
ICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKICAgICAKQEAgLTg2LDcgKzg2LDcg
QEAgY2xhc3MgVXNlck1lZGlhUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYVJl
cXVlc3Q+LCBwcml2YXRlIENvbnRleHREZXMKICAgICBTdHJpbmcgbV9hbGxvd2VkQXVkaW9EZXZp
Y2VVSUQ7CiAKICAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Ci0gICAgRE9N
UHJvbWlzZTxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiBtX3Byb21pc2U7CisgICAgRE9NUHJv
bWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+IG1fcHJvbWlzZTsKICAgICBS
ZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gbV9wcm90ZWN0b3I7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAzMTAy
MDRiMmIzYTU1ZDBkN2ZkNWQ3YjVhYTM1MzEzOGMxYjM4ZTFiLi4xODE3ZTY1ZjdlMzI0ODI0YjQx
MjM2MzNjY2VhYjViYmEzNTJmNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkUmVtb3RlU3RyZWFtKFJlZjxNZWRpYVN0
cmVhbT4mJiBtZWRpYVN0cgogICAgIG1fcmVtb3RlU3RyZWFtcy5hcHBlbmQoV1RGTW92ZShtZWRp
YVN0cmVhbSkpOwogfQogCi12b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVw
bGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0
cmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVk
aWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKIHsKICAgICBBU1NFUlQoc2VuZGVyLnRyYWNrKCkpOwogICAgIGF1dG8qIGN1cnJlbnRUcmFj
ayA9IHNlbmRlci50cmFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA5MmU2OGE2MzgyNDZiYmZmODNiOWUyNGEzYjc1NzVh
ZTQ2NmRlM2ZiLi41NDM2ZjhmODliNTg2NTZkMDlmMDAyMmZlOWI0ZDRhMGVhNWZmYjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApA
QCAtNjksNyArNjksNyBAQCBjbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQgZmlu
YWwgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKICAgICBSZWZQdHI8UlRDU2Vzc2lv
bkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKICAg
ICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24o
KSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpIGZpbmFsOworICAgIHZv
aWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7CiAgICAgUlRDUnRwUGFyYW1ldGVycyBn
ZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBlbXVs
YXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKaW5kZXgg
OWMxNmNhOGEwN2Q2ZTE3ZjZmYTM3OTU1Yjk2N2Y3ZWIxZmZhYWYwMS4uNDEwM2FjODI5NTA3NmU5
NDhlYzNjNzNhYWJkMmY1YWEyZDg4ZjJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKQEAgLTMwLDcgKzMwLDcgQEAK
IAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCkBAIC00
MCw4ICs0MCw4IEBAIGNsYXNzIFJlYWRhYmxlU3RyZWFtU291cmNlIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVhZGFibGVTdHJlYW1Tb3VyY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZWFkYWJs
ZVN0cmVhbVNvdXJjZSgpIHsgfQogCi0gICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyJiYsIERPTVByb21pc2U8dm9pZD4mJik7Ci0gICAgdm9pZCBwdWxsKERPTVBy
b21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250
cm9sbGVyJiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIHB1bGwoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgY2FuY2VsKEpTQzo6SlNWYWx1ZSk7
CiAKICAgICBib29sIGlzUHVsbGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9wcm9taXNlOyB9CkBA
IC02MywxMSArNjMsMTEgQEAgY2xhc3MgUmVhZGFibGVTdHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gewogICAgIHZpcnR1YWwgdm9pZCBkb0NhbmNl
bCgpID0gMDsKIAogcHJpdmF0ZToKLSAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2U8dm9pZD4+
IG1fcHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4g
bV9wcm9taXNlOwogICAgIHN0ZDo6b3B0aW9uYWw8UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlcj4gbV9jb250cm9sbGVyOwogfTsKIAotaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3Vy
Y2U6OnN0YXJ0KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiBjb250cm9sbGVyLCBE
T01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK2lubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtU291
cmNlOjpzdGFydChSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJiYgY29udHJvbGxlciwg
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcHJv
bWlzZSk7CiAgICAgbV9wcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKQEAgLTc3LDcgKzc3LDcg
QEAgaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KFJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXImJiBjb250cm8KICAgICBkb1N0YXJ0KCk7CiB9CiAKLWlubGluZSB2
b2lkIFJlYWRhYmxlU3RyZWFtU291cmNlOjpwdWxsKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQoraW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcHJvbWlzZSk7CiAgICAgQVNT
RVJUKG1fY29udHJvbGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMTFkZTA0YTk5NzlmYWY4ZDFmYTcyNjU4OWYxNDQzMDc2
YWUzODc2ZC4uMjM1Mjk5Y2JlNTNkZTcwNDI2NjdiZTljYmU4ZWJiZTEzNGZkYzQ1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAt
NTMsNyArNTMsNyBAQAogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAi
SFJURkRhdGFiYXNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFJURlBhbm5lci5oIgotI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgiCkBAIC0yODMsNyArMjgzLDcgQEAgYm9v
bCBBdWRpb0NvbnRleHQ6OmlzSW5pdGlhbGl6ZWQoKSBjb25zdAogICAgIHJldHVybiBtX2lzSW5p
dGlhbGl6ZWQ7CiB9CiAKLXZvaWQgQXVkaW9Db250ZXh0OjphZGRSZWFjdGlvbihTdGF0ZSBzdGF0
ZSwgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIEF1ZGlvQ29udGV4dDo6YWRkUmVh
Y3Rpb24oU3RhdGUgc3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7
CiAgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKICAg
ICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKQEAgLTMwNCw3ICsz
MDQsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3RhdGUgc3RhdGUpCiAgICAgaWYg
KHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5zaXplKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFZlY3RvcjxET01Qcm9taXNlPHZvaWQ+PiByZWFjdGlvbnM7CisgICAgVmVjdG9yPERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcmVhY3Rpb25zOwogICAgIG1fc3RhdGVSZWFjdGlvbnNb
c3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOwogCiAgICAgZm9yIChhdXRvJiBwcm9taXNlIDog
cmVhY3Rpb25zKQpAQCAtMTA0MCw3ICsxMDQwLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmRlY3Jl
bWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKICAgICAtLW1fYWN0aXZlU291cmNlQ291bnQ7CiB9CiAK
LXZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQor
dm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmQoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSkKIHsKICAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpKSB7CiAgICAgICAgIHByb21pc2Uu
cmVqZWN0KElOVkFMSURfU1RBVEVfRVJSKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIHZvaWQgQXVk
aW9Db250ZXh0OjpzdXNwZW5kKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQogICAgIH0pOwog
fQogCi12b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBBdWRpb0NvbnRleHQ6OnJlc3VtZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlKQogewogICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkpIHsKICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwpAQCAtMTA5OCw3ICsxMDk4LDcgQEAgdm9pZCBB
dWRpb0NvbnRleHQ6OnJlc3VtZShET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKICAgICB9KTsK
IH0KIAotdm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCiB7CiAgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSkgewogICAgICAgICBwcm9taXNl
LnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBlNDExNjhlNzgwY2FkNzYyMzk4NDUwY2E5YzE1
MzBkYjZjYmY4ZTYzLi40OWJiMTM3Y2M4YWIyMWRkNGY5OGJlMTVjY2FkZmY4MTgwODMyNTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgogI2luY2x1
ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCkBAIC0xMTEsOSArMTExLDkgQEAg
Y2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ28KICAgICB1c2luZyBBY3RpdmVET01PYmplY3Q6OnN1c3Bl
bmQ7CiAgICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpyZXN1bWU7CiAKLSAgICB2b2lkIHN1c3Bl
bmQoRE9NUHJvbWlzZTx2b2lkPiYmKTsKLSAgICB2b2lkIHJlc3VtZShET01Qcm9taXNlPHZvaWQ+
JiYpOwotICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2b2lkIHN1c3Bl
bmQoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgcmVzdW1lKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIGNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmKTsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIElu
dGVycnVwdGVkLCBDbG9zZWQgfTsKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OwpAQCAtMzI5LDcg
KzMyOSw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvCiAgICAgdm9pZCBoYW5kbGVEaXJ0eUF1
ZGlvU3VtbWluZ0p1bmN0aW9ucygpOwogICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRw
dXRzKCk7CiAKLSAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBET01Qcm9taXNlPHZvaWQ+JiYp
OworICAgIHZvaWQgYWRkUmVhY3Rpb24oU3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKICAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOwogCiAgICAgLy8gT25seSBh
Y2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgpAQCAtMzY2LDcgKzM2Niw3IEBAIGNsYXNzIEF1
ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxBdWRpb0NvCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVuZGVyaW5nQXV0b21h
dGljUHVsbE5vZGVzOwogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4K
ICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsKLSAgICBW
ZWN0b3I8VmVjdG9yPERPTVByb21pc2U8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOworICAgIFZl
Y3RvcjxWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Pj4gbV9zdGF0ZVJlYWN0aW9uczsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Np
b247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMmE3ZDc5MDQ2M2YxMjYyNzlkZjMyZDg2OWQ5NGNiMmE5NzEzOGE1YS4uYzYyODJmNTFi
MmFjMTM1MmI2MzUxYzg1MzQ5MjkyYzU3ZmE2MTg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjUyNyw4ICs2NTI3LDggQEAK
IAkJRTE3MkFGNkQxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcyQUY2QjE4MEYyNEM2
MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmNwcCAqLzsgfTsKIAkJRTE3MkFGNkUxODBGMjRD
NjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGNkMxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0Fs
Z29yaXRobS5oICovOyB9OwogCQlFMTcyQUY3MDE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5
VXNhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
NzJBRjZGMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oICovOyB9OwotCQlFMTcy
QUY4RjE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAv
KiBKU0RPTVByb21pc2UuY3BwICovOyB9OwotCQlFMTcyQUY5MDE4MTFCQzM3MDBGQkFEQjkgLyog
SlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTE3MkFGOEYxODExQkMz
NzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAvKiBK
U0RPTVByb21pc2VEZWZlcnJlZC5jcHAgKi87IH07CisJCUUxNzJBRjkwMTgxMUJDMzcwMEZCQURC
OSAvKiBKU0RPTVByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlz
ZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTE3NUJBOTkxRThBRTMzODAwNzE0NTRGIC8qIEdyaWRQb3NpdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MTc0NTFFODk3QTUy
MDBGMjJDRDAgLyogR3JpZFBvc2l0aW9uLmNwcCAqLzsgfTsKIAkJRTE3OUYwREExQjk3NzRGRTAw
RUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxNzlGMEQ5MUI5Nzc0RkUwMEVEMEEyNyAvKiBJbnRlcm5hbHMubW0gKi87
IH07CiAJCUUxN0I0OTE1MTZBOUIwOTQwMDFDODgzOSAvKiBUcmFuc2l0aW9uRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3QjQ5MTMxNkE5
QjA5MzAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5jcHAgKi87IH07CkBAIC02NjU3LDYgKzY2
NTcsNyBAQAogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RUU0OUYxREMy
RDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU4MDJCNjFEQzg0MzVEMDBBOTc3M0MgLyogRE9N
SklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3
RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8q
IE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFMzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYz
RTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlw
dE1vZHVsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNw
cCAqLzsgfTsKIAkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4
OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovOyB9OwogCQlFMzk4
RkMyNDFEQzMyQTIwMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4RkMyMzFEQzMyQTFCMDAzQzQ2ODQg
LyogRE9NSklUSGVscGVycy5jcHAgKi87IH07CkBAIC0xNTA1Myw4ICsxNTA1NCw4IEBACiAJCUUx
NzJBRjZCMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MkFGNkMxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0Fs
Z29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0
aG0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MkFGNkYxODBGMjg5NTAwRkJB
REI5IC8qIENyeXB0b0tleVVzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENyeXB0b0tleVVzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxNzJBRjhE
MTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNET01Qcm9taXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVByb21pc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTE3MkFGOEQxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlz
ZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9N
UHJvbWlzZURlZmVycmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE3MkFG
OEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NUHJvbWlzZURlZmVycmVkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxNzY1ODBDMTgwREYzQTAwMDVBOTZEMSAvKiBPRVNFbGVtZW50
SW5kZXhVaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBPRVNFbGVtZW50SW5kZXhVaW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTE3OUYwRDkxQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludGVybmFscy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3QjQ5MEIxNkE5NzI2OTAwMUM4ODM5IC8q
IFRyYW5zaXRpb25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVHJhbnNpdGlvbkV2
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTk3LDYgKzE1MTk4LDcg
QEAKIAkJRTMzNDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRFRTQ5RjFE
QzJENTc1MDBFQUE5RDMgLyogSlNFdmVudEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0V2ZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNTgwMkI1MURDODQzNTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVElETFR5cGVGaWx0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3Qzg2NEYxRUI2M0UyRDAwODdDNkNBIC8qIEpTRE9N
UHJvbWlzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVByb21pc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUz
IC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk4RkMyMzFEQzMyQTFCMDAzQzQ2ODQgLyogRE9N
SklUSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01K
SVRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNDAwLDggKzIz
NDAyLDkgQEAKIAkJCQk0MTM4Rjg1NjFEMjUzRUVFMDAxQ0I2MUUgLyogSlNET01JdGVyYXRvci5o
ICovLAogCQkJCTQxREVGQ0IzMUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1hcExpa2UuY3BwICov
LAogCQkJCTQxREVGQ0I0MUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1hcExpa2UuaCAqLywKLQkJ
CQlFMTcyQUY4RDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNwcCAqLywKLQkJCQlF
MTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggKi8sCisJCQkJRTM3Qzg2
NEYxRUI2M0UyRDAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oICovLAorCQkJCUUxNzJBRjhEMTgx
MUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2VEZWZlcnJlZC5jcHAgKi8sCisJCQkJRTE3MkFG
OEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmggKi8sCiAJCQkJQkM2
OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi8sCiAJCQkJQkM2
OTMyNzIwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oICovLAogCQkJCTQ2MENC
RjMzMUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwICovLApAQCAt
MjcxOTgsNiArMjcyMDEsNyBAQAogCQkJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5l
cmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjNGMERCMERBRkY0QTQwMDlG
REM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMDMwRjYxQjdE
MzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM3Qzg2NTAxRUI2M0UzRjAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDcyMEIwQTExNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1
ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDYyRkI5NjFBRjAxOEU3MDAxMkVEN0QgLyogR2Vu
ZXJpY1Rhc2tRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjQxNEY0RERFNjAwM0U3
QTcwIC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzQwLDcgKzI3NzQ0LDcg
QEAKIAkJCQkwRjQ5NjZBQjFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY0OTY2QUQxREI0MEM0MzAwQTI3NEJCIC8qIEpTRE9NUG9pbnRJbml0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjQ5NjZBRjFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2lu
dFJlYWRPbmx5LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTcyQUY5MDE4MTFCQzM3MDBGQkFEQjkg
LyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTcyQUY5MDE4MTFCQzM3MDBG
QkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDcx
MEJDMURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NDcxMEJFMURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3RJbml0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjQ3MTBDMDFEQjU2QkU4MDAyRENFQzMgLyogSlNET01SZWN0UmVhZE9ubHkuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzE2ODYsNyArMzE2OTAsNyBAQAogCQkJCTBGNDk2NkFBMURCNDBDNDMw
MEEyNzRCQiAvKiBKU0RPTVBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDk2NkFDMURC
NDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50SW5pdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjQ5NjZBRTFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludFJlYWRPbmx5LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUUxNzJBRjhGMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTE3MkFGOEYxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJv
bWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDcxMEJCMURCNTZCRTgwMDJE
Q0VDMyAvKiBKU0RPTVJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NzEwQkQxREI1NkJF
ODAwMkRDRUMzIC8qIEpTRE9NUmVjdEluaXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NzEw
QkYxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdFJlYWRPbmx5LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKaW5kZXggMjgxMjA1MGE2MTk0ZGNjZmFjYzY5
Yjg0MzM1NGNlM2M2YjMwM2NmNS4uYjViMTQyYzliOTFkNjMzN2VjOTA3MmU1MTNiMjEwYzVjMTY2
YzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC00OCw3ICs0OCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktleURhdGE7CiBjbGFz
cyBJREJWYWx1ZTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9taXNlOworY2xhc3Mg
RE9NUHJvbWlzZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBJRExUeXBlIHsKQEAg
LTE4NSw3ICsxODUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPiBzdHJ1Y3Qg
SURMUmVjb3JkIDogSURMVHlwZTxWZWN0b3I8V1RGOjpLZXlWYWx1ZQogICAgIHVzaW5nIFBhcmFt
ZXRlclR5cGUgPSBjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgSzo6SW1w
bGVtZW50YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5cGU+PiY7CiB9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMUHJvbWlzZSA6IElETFR5cGU8RE9NUHJv
bWlzZTxUPj4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFByb21pc2UgOiBJRExU
eXBlPERPTVByb21pc2U+IHsKICAgICB1c2luZyBJbm5lclR5cGUgPSBUOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXJDbGllbnQuaAppbmRleCA2Y2NkYmNjY2E3N2E5ZWRkNmNjZDFjZTBmYjMzYTA3YzAxNjk0
MjBjLi41NTBlYmI1NTljYWJlZDFiZDFkYjc2MmVmZGE1MmQ3ZTJlMWNjYzVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXJDbGllbnQuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggYTZkM2MxOGQxNDc0MDJkMjA4MzNhMThhZDM2
NzkxODZiM2YzZTVmNS4uMmRjODQxZDQ4ZTFjYzY5MTUyZTU1MTE5OWEyMGE3NjM4ZmViZDYyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwCkBAIC01MSw3ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5j
cHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuY3BwIgogI2luY2x1ZGUgIkpTRE9NR2xv
YmFsT2JqZWN0VGFzay5jcHAiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmNwcCIKKyNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5jcHAiCiAjaW5jbHVkZSAiSlNET01TdHJpbmdNYXBDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5jcHAiCiAjaW5jbHVkZSAiSlNET01X
aW5kb3dDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwCmluZGV4IGNmOWU5NmQyNzc2
MzE0ODc4ODBkZTVmNTY4ZjI0YTg2NDgxODZiZWUuLjkxOGI5NWQzMDFhY2RlYjg2OTg0ZjVlNjQw
NDkwZDQyZWE0NjJlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKLSNpbmNsdWRlICJKU0RPTVBy
b21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRQcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnRQcm9taXNlLmgKaW5kZXggYzIyMzcwZTI2NjRjYmU3MjYwMTIwODliYjY5NTI4OTgyYjllY2Q5
MS4uYjRkOTM0NjVlZjNjNTk3YWM0NGZmNDRkMWI5YmVjOWMyMTc1MjQyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFByb21pc2UuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3
LDMwICsyNyw0NiBAQAogCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnZlcnRCYXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gRklYTUU6IEltcGxlbWVudCBJRExQcm9taXNlPD4gY29udmVyc2lvbnMuCi0v
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotc3RydWN0IENvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiA6IERlZmF1bHRD
b252ZXJ0ZXI8SURMUHJvbWlzZTxUPj4gewotICAgIHVzaW5nIFJldHVyblR5cGUgPSBKU0M6OkpT
VmFsdWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElETFByb21pc2U8
VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7CisgICAgdXNpbmcgUmV0dXJu
VHlwZSA9IEpTQzo6SlNQcm9taXNlKjsKIAotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVy
dChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICAvLyBodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1wcm9taXNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgorICAgIHN0YXRpYyBS
ZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFs
dWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dl
cigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICBKU0M6OlZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odm0sIHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3Qo
KSk7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgLy8gMS4gTGV0IHJlc29sdmUgYmUgdGhlIG9yaWdpbmFsIHZhbHVlIG9m
ICVQcm9taXNlJS5yZXNvbHZlLgorICAgICAgICAvLyAyLiBMZXQgcHJvbWlzZSBiZSB0aGUgcmVz
dWx0IG9mIGNhbGxpbmcgcmVzb2x2ZSB3aXRoICVQcm9taXNlJSBhcyB0aGUgdGhpcyB2YWx1ZSBh
bmQgViBhcyB0aGUgc2luZ2xlIGFyZ3VtZW50IHZhbHVlLgorICAgICAgICBKU0M6OkpTUHJvbWlz
ZSogcHJvbWlzZSA9IEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKGdsb2JhbE9iamVjdCwgdmFsdWUp
OworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIGV4Y2VwdGlv
blRocm93ZXIoc3RhdGUsIHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVChwcm9taXNlKTsKKworICAgICAgICAvLyAzLiBSZXR1cm4g
dGhlIElETCBwcm9taXNlIHR5cGUgdmFsdWUgdGhhdCBpcyBhIHJlZmVyZW5jZSB0byB0aGUgc2Ft
ZSBvYmplY3QgYXMgcHJvbWlzZS4KKyAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgfQogfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBKU0NvbnZlcnRlcjxJRExQcm9taXNlPFQ+
PiB7Ci0gICAgdXNpbmcgVHlwZSA9IEpTQzo6SlNWYWx1ZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIG5lZWRzU3RhdGUgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVl
ZHNHbG9iYWxPYmplY3QgPSBmYWxzZTsKIAotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVy
dChKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpT
Qzo6SlNQcm9taXNlJiBwcm9taXNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
ICAgICAvLyBUaGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgYW4gSURMIHByb21pc2UgdHlwZSB2YWx1
ZSB0byBhbiBFQ01BU2NyaXB0IHZhbHVlIGlzIHRoZSBQcm9taXNlIHZhbHVlCisgICAgICAgIC8v
IHRoYXQgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBvYmplY3QgdGhhdCB0aGUg
SURMIHByb21pc2UgdHlwZSByZXByZXNlbnRzLgorICAgICAgICByZXR1cm4gJnByb21pc2U7CiAg
ICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01F
eGNlcHRpb25IYW5kbGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmNwcAppbmRleCA1ODU1NTNkMTZjMmNmMDY5NGU1NGY2ZmQ0YzBmNmMy
YmExYThlYTcwLi4yMWNmZDRjZDExZGFhNDI2OTNhYTk0MzY3OTU4NzI3ZmE2YmRlNjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRs
aW5nLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlYWRlcnMuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25JbnRlcmZhY2VzLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkpTRHluYW1pY0Rvd25jYXN0LmgiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXgg
NWJkMDZjN2Q5MGQ4OWFiNmZhZjI1YWFiODYxZTQyNTMwZmMyOTliOC4uN2I5MWVlYzQxNzIxNDE5
YmNlYmJjZWFkYTU1ZmYzMGM3Nzk3Mzk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUg
IkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJKU01lZGlhU3RyZWFtLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM5NzE3ODhlYTBmNDUw
YmIwZTQyODEzODExYzM3ZjcwMGVlYjRlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCi0KLSNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNET01FcnJvci5oIgotI2luY2x1ZGUgIkpT
RE9NV2luZG93LmgiCi0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9FeGNlcHRpb24uaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTT05PYmplY3QuaD4K
LSNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNDOjpKU1ZhbHVlIERlZmVycmVk
UHJvbWlzZTo6cHJvbWlzZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAg
IHJldHVybiBkZWZlcnJlZCgpLT5wcm9taXNlKCk7Ci19Ci0KLXZvaWQgRGVmZXJyZWRQcm9taXNl
OjpjYWxsRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uLCBKU1ZhbHVl
IHJlc29sdXRpb24pCi17Ci0gICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9
IENhbGxUeXBlOjpOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsK
LSAgICBhcmd1bWVudHMuYXBwZW5kKHJlc29sdXRpb24pOwotCi0gICAgY2FsbCgmZXhlYywgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKLQot
ICAgIGNsZWFyKCk7Ci19Ci0KLXZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoKQotewotICAg
IGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoZGVmZXJy
ZWQoKSk7Ci0gICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvJiBzdGF0ZSA9ICpt
X2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tl
cigmc3RhdGUpOwotICAgIHJlamVjdChzdGF0ZSwgSlNDOjpqc1VuZGVmaW5lZCgpKTsKLX0KLQot
dm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChzdGQ6Om51bGxwdHJfdCkKLXsKLSAgICBpZiAo
aXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGRlZmVycmVkKCkp
OwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3RhdGUgPSAqbV9nbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0
YXRlKTsKLSAgICByZWplY3Qoc3RhdGUsIEpTQzo6anNOdWxsKCkpOwotfQotCi12b2lkIERlZmVy
cmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKLXsKLSAgICBpZiAoaXNT
dXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGRlZmVycmVkKCkpOwot
ICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRl
KTsKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOwot
ICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNlcHRpb24oc3RhdGUsIFdURk1vdmUoZXhjZXB0
aW9uKSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewotICAgICAgICBB
U1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHN0YXRlLnZtKCksIHNjb3BlLmV4
Y2VwdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByZWplY3Qoc3RhdGUs
IGVycm9yKTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChFeGNlcHRpb25Db2Rl
IGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAgICBBU1NFUlQobV9n
bG9iYWxPYmplY3QpOwotICAgIGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCZzdGF0ZSk7Ci0KLSAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKLSAgICBhdXRvIGVycm9y
ID0gY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMsIG1lc3NhZ2UpOwotICAgIGlmIChVTkxJ
S0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgQVNTRVJUKGlzVGVybWluYXRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbihzdGF0ZS52bSgpLCBzY29wZS5leGNlcHRpb24oKSkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0KLSAgICByZWplY3Qoc3RhdGUsIGVycm9yKTsKLX0KLQotdm9p
ZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChjb25zdCBKU0M6OlByaXZhdGVOYW1lJiBwcml2YXRl
TmFtZSkKLXsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
QVNTRVJUKGRlZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgSlND
OjpFeGVjU3RhdGUqIHN0YXRlID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoc3RhdGUpOwotICAgIHJlamVjdCgqc3RhdGUsIEpTQzo6
U3ltYm9sOjpjcmVhdGUoc3RhdGUtPnZtKCksIHByaXZhdGVOYW1lLnVpZCgpKSk7Ci19Ci0KLXZv
aWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZURlZmVycmVkJiBwcm9t
aXNlRGVmZXJyZWQpCi17Ci0gICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLSAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0KLSAgICBpZiAoTElLRUxZKCFzY29wZS5leGNl
cHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgZXJyb3IgPSBzY29wZS5l
eGNlcHRpb24oKS0+dmFsdWUoKTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotCi0gICAg
RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNlRGVmZXJyZWQpLT5y
ZWplY3Q8SURMQW55PihlcnJvcik7Ci19Ci0KLVJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURl
ZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NV2luZG93JiBkb21XaW5k
b3cpCi17Ci0gICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0M6OkpTUHJv
bWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCAmZG9tV2luZG93KTsKLSAgICAvLyBkZWZlcnJl
ZCBjYW4gb25seSBiZSBudWxsIGluIHdvcmtlcnMuCi0gICAgQVNTRVJUKGRlZmVycmVkKTsKLSAg
ICByZXR1cm4gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZG9tV2luZG93LCAqZGVmZXJyZWQpOwot
fQotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKLXsK
LSAgICBBU1NFUlQoc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBhdXRvJiBnbG9i
YWxPYmplY3QgPSAqc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0gICAgYXV0byBwcm9t
aXNlQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QucHJvbWlzZUNvbnN0cnVjdG9yKCk7Ci0gICAg
YXV0byByZWplY3RGdW5jdGlvbiA9IHByb21pc2VDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgc3Rh
dGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgp
KTsKLSAgICBhdXRvIHJlamVjdGlvblZhbHVlID0gY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgZXJy
b3JNZXNzYWdlKTsKLQotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YShyZWplY3RGdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxs
VHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0KLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChyZWplY3Rpb25WYWx1ZSk7Ci0KLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoJnN0YXRlLCByZWplY3RGdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBwcm9taXNlQ29uc3RydWN0b3IsIGFyZ3VtZW50cykpOwotfQotCi1zdGF0aWMg
aW5saW5lIEpTQzo6SlNWYWx1ZSBwYXJzZUFzSlNPTihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIGNv
bnN0IFN0cmluZyYgZGF0YSkKLXsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsK
LSAgICByZXR1cm4gSlNDOjpKU09OUGFyc2Uoc3RhdGUsIGRhdGEpOwotfQotCi12b2lkIGZ1bGZp
bGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBT
dHJpbmcmIGRhdGEpCi17Ci0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcGFyc2VBc0pTT04ocHJv
bWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgZGF0YSk7Ci0gICAgaWYgKCF2YWx1
ZSkKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFNZTlRBWF9FUlIpOwotICAgIGVsc2UKLSAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExBbnk+KHZhbHVlKTsKLX0KLQotdm9pZCBmdWxmaWxsUHJv
bWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEFycmF5
QnVmZmVyKiBhcnJheUJ1ZmZlcikKLXsKLSAgICBpZiAoIWFycmF5QnVmZmVyKSB7Ci0gICAgICAg
IHByb21pc2UtPnJlamVjdDxJRExBbnk+KGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IocHJvbWlzZS0+
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEFycmF5QnVmZmVyPj4oKmFycmF5QnVm
ZmVyKTsKLX0KLQotdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17
Ci0gICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAppbmRleCBlZjEwNDllNzdmY2IxNzlm
NDI5MDdkYjk3M2QzYTFiODUyNDRhOTBkLi4xMGFjNzRiYzNjMTcxMjUyYzMxNmM3YzgyNjJlMDMx
OTJlODMwZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBy
b21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI1LDIzMSArMjUsMjkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU0RPTUNvbnZl
cnQuaCIKICNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNsdWRlIDxydW50aW1l
L0pTUHJvbWlzZURlZmVycmVkLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1Byb21pc2UuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEZWZlcnJlZFByb21pc2UgOiBwdWJsaWMgRE9N
R3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiB7CitjbGFzcyBET01Qcm9taXNlIDogcHVi
bGljIERPTUd1YXJkZWQ8SlNDOjpKU1Byb21pc2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PERlZmVycmVkUHJvbWlzZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmIGRlZmVycmVkKQorICAgIHN0YXRpYyBSZWY8RE9NUHJv
bWlzZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNQcm9t
aXNlJiBwcm9taXNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmZXJy
ZWRQcm9taXNlKGdsb2JhbE9iamVjdCwgZGVmZXJyZWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRE9NUHJvbWlzZShnbG9iYWxPYmplY3QsIHByb21pc2UpKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBJRExUeXBlPgotICAgIHZvaWQgcmVzb2x2ZSh0eXBlbmFtZSBJRExU
eXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIEpTQzo6SlNQcm9taXNlKiBwcm9taXNlKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFTU0VSVChnbG9iYWxP
YmplY3QoKSk7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwot
ICAgICAgICByZXNvbHZlKCpleGVjLCB0b0pTPElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0
KCksIHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkp
KTsKKyAgICAgICAgQVNTRVJUKCFpc1N1c3BlbmRlZCgpKTsKKyAgICAgICAgcmV0dXJuIGd1YXJk
ZWQoKTsKICAgICB9CiAKLSAgICB2b2lkIHJlc29sdmUoKQotICAgIHsKLSAgICAgICAgaWYgKGlz
U3VzcGVuZGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChkZWZlcnJl
ZCgpKTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgICAgIHJlc29sdmUoKmV4ZWMsIEpTQzo6
anNVbmRlZmluZWQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KLSAg
ICB2b2lkIHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRl
clR5cGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihl
eGVjKTsKLSAgICAgICAgcmVzb2x2ZSgqZXhlYywgdG9KU05ld2x5Q3JlYXRlZDxJRExUeXBlPigq
ZXhlYywgKmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFy
YW1ldGVyVHlwZT4odmFsdWUpKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlw
ZT4KLSAgICB2b2lkIHJlamVjdCh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVl
KQotICAgIHsKLSAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVj
dCgpKTsKLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpOwotICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAg
ICAgIHJlamVjdCgqZXhlYywgdG9KUzxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVjdCgpLCBz
dGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7Ci0g
ICAgfQotCi0gICAgdm9pZCByZWplY3QoKTsKLSAgICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJf
dCk7Ci0gICAgdm9pZCByZWplY3QoRXhjZXB0aW9uJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0pOwotICAgIHZvaWQg
cmVqZWN0KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENhbGxiYWNrPgotICAgIHZvaWQgcmVzb2x2ZVdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFj
aykKLSAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFTU0VSVChnbG9iYWxPYmpl
Y3QoKSk7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAg
ICAgICByZXNvbHZlKCpleGVjLCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+Ci0gICAgdm9pZCByZWplY3RX
aXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCi0gICAgewotICAgICAgICBpZiAoaXNTdXNw
ZW5kZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkp
OwotICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBKU0M6OkV4ZWNTdGF0
ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICAgICAgcmVqZWN0KCpleGVjLCBjYWxsYmFjaygq
ZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7Ci0gICAgfQotCi0gICAgSlNDOjpKU1ZhbHVlIHByb21p
c2UoKSBjb25zdDsKLQogcHJpdmF0ZToKLSAgICBEZWZlcnJlZFByb21pc2UoSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYgZGVmZXJyZWQpIDog
RE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPihnbG9iYWxPYmplY3QsIGRlZmVycmVk
KSB7IH0KLQotICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkKCkgY29uc3QgeyBy
ZXR1cm4gZ3VhcmRlZCgpOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbGxGdW5jdGlv
bihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIHJl
c29sdXRpb24pOwotICAgIHZvaWQgcmVzb2x2ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwgZGVmZXJyZWQoKS0+cmVz
b2x2ZSgpLCByZXNvbHV0aW9uKTsgfQotICAgIHZvaWQgcmVqZWN0KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRlLCBkZWZl
cnJlZCgpLT5yZWplY3QoKSwgcmVzb2x1dGlvbik7IH0KLX07Ci0KLWNsYXNzIERPTVByb21pc2VC
YXNlIHsKLXB1YmxpYzoKLSAgICBET01Qcm9taXNlQmFzZShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IGdlbmVyaWNQcm9taXNlKQotICAgICAgICA6IG1fcHJvbWlzZURlZmVycmVkKFdURk1vdmUoZ2Vu
ZXJpY1Byb21pc2UpKQotICAgIHsKLSAgICB9Ci0KLSAgICBET01Qcm9taXNlQmFzZShET01Qcm9t
aXNlQmFzZSYmIHByb21pc2UpCi0gICAgICAgIDogbV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShw
cm9taXNlLm1fcHJvbWlzZURlZmVycmVkKSkKLSAgICB7Ci0gICAgfQotCi0gICAgRE9NUHJvbWlz
ZUJhc2UoY29uc3QgRE9NUHJvbWlzZUJhc2UmIG90aGVyKQotICAgICAgICA6IG1fcHJvbWlzZURl
ZmVycmVkKG90aGVyLm1fcHJvbWlzZURlZmVycmVkLmNvcHlSZWYoKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgRE9NUHJvbWlzZUJhc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9taXNlQmFzZSYgb3Ro
ZXIpCi0gICAgewotICAgICAgICBtX3Byb21pc2VEZWZlcnJlZCA9IG90aGVyLm1fcHJvbWlzZURl
ZmVycmVkLmNvcHlSZWYoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIERP
TVByb21pc2VCYXNlJiBvcGVyYXRvcj0oRE9NUHJvbWlzZUJhc2UmJiBvdGhlcikKKyAgICBET01Q
cm9taXNlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNQcm9taXNlJiBw
cm9taXNlKQorICAgICAgICA6IERPTUd1YXJkZWQ8SlNDOjpKU1Byb21pc2U+KGdsb2JhbE9iamVj
dCwgcHJvbWlzZSkKICAgICB7Ci0gICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gV1RGTW92ZShv
dGhlci5tX3Byb21pc2VEZWZlcnJlZCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0K
LSAgICB2b2lkIHJlamVjdCgpCi0gICAgewotICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+cmVq
ZWN0KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gRXJyb3JUeXBlPiAKLSAg
ICB2b2lkIHJlamVjdChFcnJvclR5cGUmJi4uLiBlcnJvcikKLSAgICB7Ci0gICAgICAgIG1fcHJv
bWlzZURlZmVycmVkLT5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyb3IpLi4uKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgotICAgIHZvaWQgcmVqZWN0
VHlwZSh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdDxJRExUeXBlPihzdGQ6OmZvcndhcmQ8dHlwZW5h
bWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKTsKLSAgICB9Ci0KLSAgICBKU0M6OkpT
VmFsdWUgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZURlZmVycmVkLT5wcm9taXNl
KCk7IH07Ci0KLXByb3RlY3RlZDoKLSAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBtX3Byb21pc2VE
ZWZlcnJlZDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IAotY2xhc3MgRE9NUHJv
bWlzZSA6IHB1YmxpYyBET01Qcm9taXNlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgRE9NUHJv
bWlzZUJhc2U6OkRPTVByb21pc2VCYXNlOwotICAgIHVzaW5nIERPTVByb21pc2VCYXNlOjpvcGVy
YXRvcj07Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnByb21pc2U7Ci0gICAgdXNpbmcgRE9N
UHJvbWlzZUJhc2U6OnJlamVjdDsKLQotICAgIHZvaWQgcmVzb2x2ZSh0eXBlbmFtZSBJRExUeXBl
OjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQotICAgIHsgCi0gICAgICAgIG1fcHJvbWlzZURlZmVycmVk
LT5yZXNvbHZlPElETFR5cGU+KHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0
ZXJUeXBlPih2YWx1ZSkpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gY2xhc3MgRE9NUHJvbWlz
ZTx2b2lkPiA6IHB1YmxpYyBET01Qcm9taXNlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgRE9N
UHJvbWlzZUJhc2U6OkRPTVByb21pc2VCYXNlOwotICAgIHVzaW5nIERPTVByb21pc2VCYXNlOjpv
cGVyYXRvcj07Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnByb21pc2U7Ci0gICAgdXNpbmcg
RE9NUHJvbWlzZUJhc2U6OnJlamVjdDsKLQotICAgIHZvaWQgcmVzb2x2ZSgpCi0gICAgeyAKLSAg
ICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlc29sdmUoKTsKLSAgICB9Ci19OwotCi0KLVJlZjxE
ZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYsIEpT
RE9NV2luZG93Jik7Ci0KLXZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmLCBjb25zdCBTdHJpbmcmKTsKLXZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlC
dWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgQXJyYXlCdWZmZXIqKTsKLXZvaWQgZnVsZmls
bFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3Qgdm9p
ZCosIHNpemVfdCk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHJlamVjdFByb21pc2VXaXRoRXhjZXB0
aW9uSWZBbnkoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNQcm9t
aXNlRGVmZXJyZWQmKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVqZWN0ZWRQcm9taXNl
V2l0aFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYpOwotCi11c2luZyBQ
cm9taXNlRnVuY3Rpb24gPSB2b2lkKEpTQzo6RXhlY1N0YXRlJiwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7Ci0KLWVudW0gY2xhc3MgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIHsgV2luZG93T25seSwg
V2luZG93T3JXb3JrZXIgfTsKLQotdGVtcGxhdGU8UHJvbWlzZUZ1bmN0aW9uIHByb21pc2VGdW5j
dGlvbiwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIGV4ZWN1dGlvblNjb3BlPgotaW5saW5lIEpTQzo6
SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAg
ICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwotCi0gICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCA9ICpK
U0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3Qo
KSk7Ci0gICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0gSlNDOjpK
U1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgJmdsb2JhbE9iamVjdCk7Ci0KLSAgICAv
LyBwcm9taXNlRGVmZXJyZWQgY2FuIGJlIG51bGwgd2hlbiB0ZXJtaW5hdGluZyBhIFdvcmtlciBh
YnJ1cHRseS4KLSAgICBpZiAoZXhlY3V0aW9uU2NvcGUgPT0gUHJvbWlzZUV4ZWN1dGlvblNjb3Bl
OjpXaW5kb3dPcldvcmtlciAmJiAhcHJvbWlzZURlZmVycmVkKQotICAgICAgICByZXR1cm4gSlND
Ojpqc1VuZGVmaW5lZCgpOwotCi0gICAgcHJvbWlzZUZ1bmN0aW9uKHN0YXRlLCBEZWZlcnJlZFBy
b21pc2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsICpwcm9taXNlRGVmZXJyZWQpKTsKLQotICAgIHJl
amVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoc3RhdGUsIGdsb2JhbE9iamVjdCwgKnByb21p
c2VEZWZlcnJlZCk7Ci0gICAgQVNTRVJUX1VOVVNFRChzY29wZSwgIXNjb3BlLmV4Y2VwdGlvbigp
KTsKLSAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7Ci19Ci0KLXVzaW5nIEJp
bmRpbmdQcm9taXNlRnVuY3Rpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6RXhlY1N0YXRl
KiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7Ci10ZW1wbGF0ZTxCaW5kaW5nUHJvbWlzZUZ1bmN0
aW9uIGJpbmRpbmdGdW5jdGlvbj4KLWlubGluZSB2b2lkIGJpbmRpbmdQcm9taXNlRnVuY3Rpb25B
ZGFwdGVyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQotewotICAgIGJpbmRpbmdGdW5jdGlvbigmc3RhdGUsIFdURk1vdmUocHJvbWlzZSkpOwot
fQotCi10ZW1wbGF0ZTxCaW5kaW5nUHJvbWlzZUZ1bmN0aW9uIGJpbmRpbmdQcm9taXNlRnVuY3Rp
b24sIFByb21pc2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZT4KLWlubGluZSBKU0M6OkpT
VmFsdWUgY2FsbFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAg
cmV0dXJuIGNhbGxQcm9taXNlRnVuY3Rpb248YmluZGluZ1Byb21pc2VGdW5jdGlvbkFkYXB0ZXI8
YmluZGluZ1Byb21pc2VGdW5jdGlvbj4sIGV4ZWN1dGlvblNjb3BlPihzdGF0ZSk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTVhMmQyOWVmZDNmZDdhZGIz
MjU4MDFiYjQ2NWJmYTZmY2UzN2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCkBAIC0wLDAgKzEsMjExIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAi
SlNET01FcnJvci5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSA8YnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb24uaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTT05PYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZUNv
bnN0cnVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworSlNDOjpKU1ZhbHVlIERlZmVycmVkUHJvbWlzZTo6cHJvbWlzZSgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIHJldHVybiBkZWZlcnJlZCgpLT5wcm9taXNlKCk7
Cit9CisKK3ZvaWQgRGVmZXJyZWRQcm9taXNlOjpjYWxsRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVj
LCBKU1ZhbHVlIGZ1bmN0aW9uLCBKU1ZhbHVlIHJlc29sdXRpb24pCit7CisgICAgaWYgKCFjYW5J
bnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0
YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKworICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHJlc29sdXRp
b24pOworCisgICAgY2FsbCgmZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNV
bmRlZmluZWQoKSwgYXJndW1lbnRzKTsKKworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgRGVmZXJy
ZWRQcm9taXNlOjpyZWplY3QoKQoreworICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgQVNTRVJUKG1fZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwor
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmc3RhdGUpOworICAgIHJlamVjdChzdGF0ZSwg
SlNDOjpqc1VuZGVmaW5lZCgpKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChz
dGQ6Om51bGxwdHJfdCkKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7
CisgICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRlKTsKKyAgICByZWplY3Qoc3RhdGUsIEpTQzo6
anNOdWxsKCkpOworfQorCit2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbiYm
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Cisg
ICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRlKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOworICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNl
cHRpb24oc3RhdGUsIFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkgeworICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKHN0YXRlLnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICByZWplY3Qoc3RhdGUsIGVycm9yKTsKK30KKwordm9pZCBEZWZlcnJlZFBy
b21pc2U6OnJlamVjdChFeGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChk
ZWZlcnJlZCgpKTsKKyAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOworICAgIGF1dG8mIHN0YXRl
ID0gKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIg
bG9ja2VyKCZzdGF0ZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShz
dGF0ZS52bSgpKTsKKyAgICBhdXRvIGVycm9yID0gY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMsIG1lc3NhZ2UpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAg
ICAgICAgQVNTRVJUKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihzdGF0ZS52bSgpLCBz
Y29wZS5leGNlcHRpb24oKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICByZWpl
Y3Qoc3RhdGUsIGVycm9yKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChjb25z
dCBKU0M6OlByaXZhdGVOYW1lJiBwcml2YXRlTmFtZSkKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VS
VChtX2dsb2JhbE9iamVjdCk7CisgICAgSlNDOjpFeGVjU3RhdGUqIHN0YXRlID0gbV9nbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoc3RhdGUp
OworICAgIHJlamVjdCgqc3RhdGUsIEpTQzo6U3ltYm9sOjpjcmVhdGUoc3RhdGUtPnZtKCksIHBy
aXZhdGVOYW1lLnVpZCgpKSk7Cit9CisKK3ZvaWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25J
ZkFueShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QsIEpTUHJvbWlzZURlZmVycmVkJiBwcm9taXNlRGVmZXJyZWQpCit7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisK
KyAgICBpZiAoTElLRUxZKCFzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEpTVmFsdWUgZXJyb3IgPSBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUoKTsKKyAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOworCisgICAgRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LCBwcm9taXNlRGVmZXJyZWQpLT5yZWplY3Q8SURMQW55PihlcnJvcik7Cit9CisKK1Jl
ZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTRE9NV2luZG93JiBkb21XaW5kb3cpCit7CisgICAgSlNDOjpKU1Byb21pc2VEZWZl
cnJlZCogZGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCAm
ZG9tV2luZG93KTsKKyAgICAvLyBkZWZlcnJlZCBjYW4gb25seSBiZSBudWxsIGluIHdvcmtlcnMu
CisgICAgQVNTRVJUKGRlZmVycmVkKTsKKyAgICByZXR1cm4gRGVmZXJyZWRQcm9taXNlOjpjcmVh
dGUoZG9tV2luZG93LCAqZGVmZXJyZWQpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0
ZVJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoc3RhdGUubGV4aWNhbEdsb2Jh
bE9iamVjdCgpKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqc3RhdGUubGV4aWNhbEdsb2Jh
bE9iamVjdCgpOworCisgICAgYXV0byBwcm9taXNlQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3Qu
cHJvbWlzZUNvbnN0cnVjdG9yKCk7CisgICAgYXV0byByZWplY3RGdW5jdGlvbiA9IHByb21pc2VD
b25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgc3RhdGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgpKTsKKyAgICBhdXRvIHJlamVjdGlvblZhbHVlID0g
Y3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsKKworICAgIENhbGxEYXRhIGNh
bGxEYXRhOworICAgIGF1dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWplY3RGdW5jdGlvbiwg
Y2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisKKyAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChy
ZWplY3Rpb25WYWx1ZSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoJnN0YXRl
LCByZWplY3RGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBwcm9taXNlQ29uc3RydWN0b3Is
IGFyZ3VtZW50cykpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBwYXJzZUFzSlNP
TihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKK3sKKyAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKKyAgICByZXR1cm4gSlNDOjpKU09OUGFyc2Uoc3Rh
dGUsIGRhdGEpOworfQorCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGRhdGEpCit7CisgICAgSlNDOjpKU1Zh
bHVlIHZhbHVlID0gcGFyc2VBc0pTT04ocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKSwgZGF0YSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFNZ
TlRBWF9FUlIpOworICAgIGVsc2UKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExBbnk+KHZh
bHVlKTsKK30KKwordm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UsIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKK3sKKyAgICBp
ZiAoIWFycmF5QnVmZmVyKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdDxJRExBbnk+KGNyZWF0
ZU91dE9mTWVtb3J5RXJyb3IocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJm
YWNlPEFycmF5QnVmZmVyPj4oKmFycmF5QnVmZmVyKTsKK30KKwordm9pZCBmdWxmaWxsUHJvbWlz
ZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IHZv
aWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlC
dWZmZXIoV1RGTW92ZShwcm9taXNlKSwgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBsZW5n
dGgpLmdldCgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlRGVmZXJyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZURlZmVycmVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYxM2NhYzdiMjhiNGM3ZWZhOTI0ZGQ2
OTkzMTc3MjcxOTYwZjhmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKQEAgLTAsMCArMSwyNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgorI2luY2x1ZGUg
IkpTRE9NR3VhcmRlZE9iamVjdC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNQcm9taXNlRGVmZXJy
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZWZlcnJlZFByb21pc2UgOiBw
dWJsaWMgRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJiBkZWZlcnJlZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkUHJvbWlzZShnbG9iYWxPYmplY3QsIGRl
ZmVycmVkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAgICB2b2lk
IHJlc29sdmUodHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBB
U1NFUlQoZGVmZXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CisgICAg
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsK
KyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICByZXNvbHZl
KCpleGVjLCB0b0pTPElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCksIHN0ZDo6Zm9yd2Fy
ZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpKTsKKyAgICB9CisKKyAg
ICB2b2lkIHJlc29sdmUoKQorICAgIHsKKyAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKKyAgICAgICAgQVNT
RVJUKGdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
ZXIoZXhlYyk7CisgICAgICAgIHJlc29sdmUoKmV4ZWMsIEpTQzo6anNVbmRlZmluZWQoKSk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAgICB2b2lkIHJlc29sdmVXaXRo
TmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCisgICAg
eworICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwor
ICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICAgICAgcmVz
b2x2ZSgqZXhlYywgdG9KU05ld2x5Q3JlYXRlZDxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVj
dCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUp
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAgICB2b2lkIHJlamVj
dCh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAg
aWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChk
ZWZlcnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgSlND
OjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgICAgIHJlamVjdCgqZXhlYywg
dG9KUzxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5h
bWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7CisgICAgfQorCisgICAgdm9pZCBy
ZWplY3QoKTsKKyAgICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJfdCk7CisgICAgdm9pZCByZWpl
Y3QoRXhjZXB0aW9uJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0KEV4Y2VwdGlv
bkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0pOworICAgIHZvaWQgcmVqZWN0KGNvbnN0IEpTQzo6
UHJpdmF0ZU5hbWUmKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrPgorICAgIHZv
aWQgcmVzb2x2ZVdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQo
ZGVmZXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CisgICAgICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICByZXNvbHZlKCpleGVj
LCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2FsbGJhY2s+CisgICAgdm9pZCByZWplY3RXaXRoQ2FsbGJhY2soQ2FsbGJh
Y2sgY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihl
eGVjKTsKKyAgICAgICAgcmVqZWN0KCpleGVjLCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVj
dCgpKSk7CisgICAgfQorCisgICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBEZWZlcnJlZFByb21pc2UoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYgZGVmZXJyZWQpCisgICAgICAgIDogRE9NR3VhcmRl
ZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPihnbG9iYWxPYmplY3QsIGRlZmVycmVkKQorICAgIHsK
KyAgICB9CisKKyAgICBKU0M6OkpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCgpIGNvbnN0IHsg
cmV0dXJuIGd1YXJkZWQoKTsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYWxsRnVuY3Rp
b24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24sIEpTQzo6SlNWYWx1ZSBy
ZXNvbHV0aW9uKTsKKyAgICB2b2lkIHJlc29sdmUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgcmVzb2x1dGlvbikgeyBjYWxsRnVuY3Rpb24oc3RhdGUsIGRlZmVycmVkKCktPnJl
c29sdmUoKSwgcmVzb2x1dGlvbik7IH0KKyAgICB2b2lkIHJlamVjdChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwgZGVm
ZXJyZWQoKS0+cmVqZWN0KCksIHJlc29sdXRpb24pOyB9Cit9OworCitjbGFzcyBET01Qcm9taXNl
RGVmZXJyZWRCYXNlIHsKK3B1YmxpYzoKKyAgICBET01Qcm9taXNlRGVmZXJyZWRCYXNlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgZ2VuZXJpY1Byb21pc2UpCisgICAgICAgIDogbV9wcm9taXNlRGVm
ZXJyZWQoV1RGTW92ZShnZW5lcmljUHJvbWlzZSkpCisgICAgeworICAgIH0KKworICAgIERPTVBy
b21pc2VEZWZlcnJlZEJhc2UoRE9NUHJvbWlzZURlZmVycmVkQmFzZSYmIHByb21pc2UpCisgICAg
ICAgIDogbV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShwcm9taXNlLm1fcHJvbWlzZURlZmVycmVk
KSkKKyAgICB7CisgICAgfQorCisgICAgRE9NUHJvbWlzZURlZmVycmVkQmFzZShjb25zdCBET01Q
cm9taXNlRGVmZXJyZWRCYXNlJiBvdGhlcikKKyAgICAgICAgOiBtX3Byb21pc2VEZWZlcnJlZChv
dGhlci5tX3Byb21pc2VEZWZlcnJlZC5jb3B5UmVmKCkpCisgICAgeworICAgIH0KKworICAgIERP
TVByb21pc2VEZWZlcnJlZEJhc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9taXNlRGVmZXJyZWRC
YXNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gb3RoZXIubV9w
cm9taXNlRGVmZXJyZWQuY29weVJlZigpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
CisgICAgRE9NUHJvbWlzZURlZmVycmVkQmFzZSYgb3BlcmF0b3I9KERPTVByb21pc2VEZWZlcnJl
ZEJhc2UmJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gV1RGTW92
ZShvdGhlci5tX3Byb21pc2VEZWZlcnJlZCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKKyAgICB2b2lkIHJlamVjdCgpCisgICAgeworICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+
cmVqZWN0KCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gRXJyb3JUeXBlPiAK
KyAgICB2b2lkIHJlamVjdChFcnJvclR5cGUmJi4uLiBlcnJvcikKKyAgICB7CisgICAgICAgIG1f
cHJvbWlzZURlZmVycmVkLT5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyb3IpLi4u
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorICAgIHZvaWQgcmVq
ZWN0VHlwZSh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdDxJRExUeXBlPihzdGQ6OmZvcndhcmQ8dHlw
ZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKTsKKyAgICB9CisKKyAgICBKU0M6
OkpTVmFsdWUgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZURlZmVycmVkLT5wcm9t
aXNlKCk7IH07CisKK3Byb3RlY3RlZDoKKyAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBtX3Byb21p
c2VEZWZlcnJlZDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IAorY2xhc3MgRE9N
UHJvbWlzZURlZmVycmVkIDogcHVibGljIERPTVByb21pc2VEZWZlcnJlZEJhc2UgeworcHVibGlj
OgorICAgIHVzaW5nIERPTVByb21pc2VEZWZlcnJlZEJhc2U6OkRPTVByb21pc2VEZWZlcnJlZEJh
c2U7CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6b3BlcmF0b3I9OworICAgIHVz
aW5nIERPTVByb21pc2VEZWZlcnJlZEJhc2U6OnByb21pc2U7CisgICAgdXNpbmcgRE9NUHJvbWlz
ZURlZmVycmVkQmFzZTo6cmVqZWN0OworCisgICAgdm9pZCByZXNvbHZlKHR5cGVuYW1lIElETFR5
cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCisgICAgeyAKKyAgICAgICAgbV9wcm9taXNlRGVmZXJy
ZWQtPnJlc29sdmU8SURMVHlwZT4oc3RkOjpmb3J3YXJkPHR5cGVuYW1lIElETFR5cGU6OlBhcmFt
ZXRlclR5cGU+KHZhbHVlKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBjbGFzcyBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4gOiBwdWJsaWMgRE9NUHJvbWlzZURlZmVycmVkQmFzZSB7CitwdWJs
aWM6CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6RE9NUHJvbWlzZURlZmVycmVk
QmFzZTsKKyAgICB1c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpvcGVyYXRvcj07CisgICAg
dXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cHJvbWlzZTsKKyAgICB1c2luZyBET01Qcm9t
aXNlRGVmZXJyZWRCYXNlOjpyZWplY3Q7CisKKyAgICB2b2lkIHJlc29sdmUoKQorICAgIHsgCisg
ICAgICAgIG1fcHJvbWlzZURlZmVycmVkLT5yZXNvbHZlKCk7CisgICAgfQorfTsKKworCitSZWY8
RGVmZXJyZWRQcm9taXNlPiBjcmVhdGVEZWZlcnJlZFByb21pc2UoSlNDOjpFeGVjU3RhdGUmLCBK
U0RPTVdpbmRvdyYpOworCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVk
UHJvbWlzZT4mJiwgY29uc3QgU3RyaW5nJik7Cit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5
QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIEFycmF5QnVmZmVyKik7Cit2b2lkIGZ1bGZp
bGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIGNvbnN0IHZv
aWQqLCBzaXplX3QpOworV0VCQ09SRV9FWFBPUlQgdm9pZCByZWplY3RQcm9taXNlV2l0aEV4Y2Vw
dGlvbklmQW55KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTUHJv
bWlzZURlZmVycmVkJik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlz
ZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBTdHJpbmcmKTsKKwordXNpbmcg
UHJvbWlzZUZ1bmN0aW9uID0gdm9pZChKU0M6OkV4ZWNTdGF0ZSYsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYpOworCitlbnVtIGNsYXNzIFByb21pc2VFeGVjdXRpb25TY29wZSB7IFdpbmRvd09ubHks
IFdpbmRvd09yV29ya2VyIH07CisKK3RlbXBsYXRlPFByb21pc2VGdW5jdGlvbiBwcm9taXNlRnVu
Y3Rpb24sIFByb21pc2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZT4KK2lubGluZSBKU0M6
OkpTVmFsdWUgY2FsbFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCit7Cisg
ICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QgPSAq
SlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOworICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTQzo6
SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsICZnbG9iYWxPYmplY3QpOworCisgICAg
Ly8gcHJvbWlzZURlZmVycmVkIGNhbiBiZSBudWxsIHdoZW4gdGVybWluYXRpbmcgYSBXb3JrZXIg
YWJydXB0bHkuCisgICAgaWYgKGV4ZWN1dGlvblNjb3BlID09IFByb21pc2VFeGVjdXRpb25TY29w
ZTo6V2luZG93T3JXb3JrZXIgJiYgIXByb21pc2VEZWZlcnJlZCkKKyAgICAgICAgcmV0dXJuIEpT
Qzo6anNVbmRlZmluZWQoKTsKKworICAgIHByb21pc2VGdW5jdGlvbihzdGF0ZSwgRGVmZXJyZWRQ
cm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCAqcHJvbWlzZURlZmVycmVkKSk7CisKKyAgICBy
ZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KHN0YXRlLCBnbG9iYWxPYmplY3QsICpwcm9t
aXNlRGVmZXJyZWQpOworICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFzY29wZS5leGNlcHRpb24o
KSk7CisgICAgcmV0dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit1c2luZyBC
aW5kaW5nUHJvbWlzZUZ1bmN0aW9uID0gSlNDOjpFbmNvZGVkSlNWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSosIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwordGVtcGxhdGU8QmluZGluZ1Byb21pc2VGdW5j
dGlvbiBiaW5kaW5nRnVuY3Rpb24+CitpbmxpbmUgdm9pZCBiaW5kaW5nUHJvbWlzZUZ1bmN0aW9u
QWRhcHRlcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKK3sKKyAgICBiaW5kaW5nRnVuY3Rpb24oJnN0YXRlLCBXVEZNb3ZlKHByb21pc2UpKTsK
K30KKwordGVtcGxhdGU8QmluZGluZ1Byb21pc2VGdW5jdGlvbiBiaW5kaW5nUHJvbWlzZUZ1bmN0
aW9uLCBQcm9taXNlRXhlY3V0aW9uU2NvcGUgZXhlY3V0aW9uU2NvcGU+CitpbmxpbmUgSlNDOjpK
U1ZhbHVlIGNhbGxQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQoreworICAg
IHJldHVybiBjYWxsUHJvbWlzZUZ1bmN0aW9uPGJpbmRpbmdQcm9taXNlRnVuY3Rpb25BZGFwdGVy
PGJpbmRpbmdQcm9taXNlRnVuY3Rpb24+LCBleGVjdXRpb25TY29wZT4oc3RhdGUpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggZWYzN2FlYWFkODA0YWNiNGRiNjM0NDIx
N2I4MDY2OGJmMzYwYTI1MC4uNDEwZGU3NjQzMmQyODM5MjU0MzNmMmQwNzJiMDlkYjk3NjRmMDc1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9D
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRv
Q3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkpTQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkpTQ3J5cHRvS2V5LmgiCiAjaW5jbHVkZSAiSlNDcnlw
dG9LZXlQYWlyLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Q
cm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJK
U0VjS2V5UGFyYW1zLmgiCiAjaW5jbHVkZSAiSlNFY2RoS2V5RGVyaXZlUGFyYW1zLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRCdWZmZXJD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVDb21tYW5kQnVm
ZmVyQ3VzdG9tLmNwcAppbmRleCAyZmIzZjBiOTIyNjIyZDQ2YTkyMmY3YjYyYjk2OGY4Y2VlOGQ4
NGUyLi45MzBjNGZkM2E3ZjFlNGQ4ZjgzNGU3MjRlOTY0NDg0YjI4NDNlNTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRCdWZmZXJDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BVQ29tbWFuZEJ1ZmZl
ckN1c3RvbS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5j
bHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgi
CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAppbmRl
eCA2MzhiMzdlNGFjNTFlZmY4ZmNkNmNiZGFiM2MyMDlkM2ZmZjFhYjY2Li40Y2IzZTJjNWU5MDMz
OGNlN2VjY2RlNjI4ZDRiNzk2YTA3NWViNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBAIC00MCw3
ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiSlNDcnlw
dG9LZXlTZXJpYWxpemF0aW9uSldLLmgiCiAjaW5jbHVkZSAiSlNDcnlwdG9PcGVyYXRpb25EYXRh
LmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVm
ZXJyZWQuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xM2RiZGViYmExNWE0MDIzMDk1ZDRmZTA2YjU2YWY0N2YzZDA0ZjFhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudC5oIgorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVk
ZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUv
RXJyb3IuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8PiBUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50OjpJbml0IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6
OkluaXQ+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBib29sIGlzTnVsbE9yVW5kZWZpbmVkID0gdmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KTsKKyAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51bGxwdHIgOiB2YWx1
ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVkICYmICFv
YmplY3QpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmIChVTkxJS0VMWShvYmplY3QgJiYgb2Jq
ZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAg
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdCByZXN1bHQ7CisgICAgSlNWYWx1ZSBidWJi
bGVzVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYnViYmxlcyIpKTsKKyAg
ICBpZiAoIWJ1YmJsZXNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5idWJi
bGVzID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgYnViYmxlc1ZhbHVlKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0gZWxzZQorICAgICAg
ICByZXN1bHQuYnViYmxlcyA9IGZhbHNlOworICAgIEpTVmFsdWUgY2FuY2VsYWJsZVZhbHVlID0g
aXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImNhbmNlbGFibGUiKSk7CisgICAgaWYgKCFj
YW5jZWxhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuY2FuY2VsYWJs
ZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIGNhbmNlbGFibGVWYWx1ZSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgcmVzdWx0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICBKU1ZhbHVlIGNvbXBvc2VkVmFsdWUg
PSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiY29tcG9zZWQiKSk7CisgICAgaWYgKCFj
b21wb3NlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmNvbXBvc2VkID0g
Y29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgY29tcG9zZWRWYWx1ZSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVz
dWx0LmNvbXBvc2VkID0gZmFsc2U7CisgICAgSlNWYWx1ZSBwcm9taXNlVmFsdWUgPSBpc051bGxP
clVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicHJvbWlzZSIpKTsKKyAgICBpZiAoIXByb21pc2VWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5wcm9taXNlID0gY29udmVydDxJRExQ
cm9taXNlPElETEFueT4+KHN0YXRlLCBwcm9taXNlVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGhyb3dS
ZXF1aXJlZE1lbWJlclR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgInByb21pc2UiLCAiVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudEluaXQiLCAiUHJvbWlzZSIpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKyAgICBKU1ZhbHVlIHJlYXNvblZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQg
PyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgInJlYXNvbiIpKTsKKyAgICBpZiAoIXJlYXNvblZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgcmVzdWx0LnJlYXNvbiA9IGNvbnZlcnQ8SURMQW55PihzdGF0ZSwgcmVh
c29uVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdC5yZWFzb24gPSBqc1VuZGVmaW5lZCgpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworCitjbGFzcyBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0
YXRpYyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJv
dG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAg
ICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBK
U0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCit1c2luZyBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50PjsKKwordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQo
Y2FzdGVkVGhpcyk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAy
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIHR5cGUgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAg
YXV0byBldmVudEluaXREaWN0ID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OkluaXQ+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KyAgICBhdXRvIG9iamVjdCA9IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZSgqc3Rh
dGUsIFdURk1vdmUodHlwZSksIFdURk1vdmUoZXZlbnRJbml0RGljdCkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1v
dmUob2JqZWN0KSkpOworfQorCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNF
dmVudDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50Ojpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDIpLCBSZWFk
T25seSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxl
IGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNv
bnN0cnVjdG9yIiwgRG9udEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcikgfSB9
LAorICAgIHsgInByb21pc2UiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAicmVhc29uIiwg
UmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRSZWFzb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50UHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwg
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
K30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6c19pbmZv
ID0geyAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KSB9OworCitKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudChTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYgaW1wbCkKKyAgICA6IEpTRXZlbnQoc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKK30KKwor
SlNPYmplY3QqIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlUHJvdG90eXBlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IGdsb2JhbE9iamVjdCwgSlNFdmVudDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7Cit9
CisKK0pTT2JqZWN0KiBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnByb3RvdHlwZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVBy
b3RvdHlwZTxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KHZtLCBnbG9iYWxPYmplY3QpOwor
fQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqIEJpbmRp
bmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6Y2FzdEZvckF0dHJpYnV0ZShF
eGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJu
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCo+KHN0YXRlLnZt
KCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKK30KKworc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2VHZXR0ZXIoRXhlY1N0YXRlJiwg
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2UoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7Cisg
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6YXR0
cmlidXRlPGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2VHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpSZWplY3RQcm9taXNlPihzdGF0ZSwgdGhpc1ZhbHVlLCAicHJvbWlz
ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50UHJvbWlzZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExQcm9taXNlPElETEFueT4+KGltcGwucHJvbWlzZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVh
c29uR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRSZWFzb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50Pjo6YXR0cmlidXRlPGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJl
YXNvbkdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInJlYXNvbiIpOworfQorCitzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29uR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYgdGhpc09iamVjdCwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEFueT4oaW1wbC5yZWFzb24oKSk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1
Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOworfQorCitib29s
IHNldEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudFByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGly
ZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1
ZSk7Cit9CisKK0pTVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1
Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0
cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJ
TikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2
b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdFByb21pc2VSZWplY3Rpb25FdmVudEBX
ZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBf
WlRWTjdXZWJDb3JlMjVUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RVtdOyB9CisjZW5kaWYKKyNl
bmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50PiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgdm9p
ZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGltcGwu
cHRyKCkpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2lu
dGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVyKCI/P183VGVzdFByb21p
c2VSZWplY3Rpb25FdmVudEBXZWJDb3JlQEA2QkAiKSk7CisjZWxzZQorICAgIHZvaWQqIGV4cGVj
dGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMjVUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50RVsyXTsKKyNpZiBDT01QSUxFUihDTEFORykKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQg
dG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoX19pc19wb2x5bW9y
cGhpYyhUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KSwgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQgaXMgbm90IHBvbHltb3JwaGljIik7CisjZW5kaWYKKyNlbmRpZgorICAgIC8vIElmIHlvdSBo
aXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBv
cgorICAgIC8vIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgaGFzIHN1YmNsYXNzZXMuIElmIFRl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisg
ICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRp
bmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElE
TCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBl
eHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
K30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiBpbXBsKQor
eworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2M0
Y2ZmZDc5Nzk2N2E1MzJhZDkwZWZiNWI4MTM0NmFmMjJmZTNlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudC5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNpbmNsdWRlICJKU0V2
ZW50LmgiCisjaW5jbHVkZSAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA6IHB1Ymxp
YyBKU0V2ZW50IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNFdmVudDsKKyAgICB1c2lu
ZyBET01XcmFwcGVkID0gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDsKKyAgICBzdGF0aWMgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cisg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAg
cmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJv
dG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworCisg
ICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
OkpTVHlwZShKU0V2ZW50VHlwZSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYgd3Jh
cHBlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdFByb21p
c2VSZWplY3Rpb25FdmVudCY+KEJhc2U6OndyYXBwZWQoKSk7CisgICAgfQorcHJvdGVjdGVkOgor
ICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudChKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0JiwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYpOworCisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dCYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCog
aW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgKmltcGwpIDog
SlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
PiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50PiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVh
dGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6Ompz
TnVsbCgpOyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0
czxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0g
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5
cGUgPSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KjsKK307Cit0ZW1wbGF0ZTw+IFRlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudDo6SW5pdD4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOworCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNTZhOTQ5MWFkN2E1MTE3YzU4YTE3YTFmODg4NzUwZWFmYjg3YzkxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uc3RydWN0b3IoRE9NU3Ry
aW5nIHR5cGUsIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRJbml0IGV2ZW50SW5pdERpY3QpLAor
ICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0U3RhdGUsCisgICAgRXhwb3NlZD0oV2luZG93
LFdvcmtlciksCitdIGludGVyZmFjZSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IDogRXZlbnQg
eworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPGFueT4gcHJvbWlzZTsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgYW55IHJlYXNvbjsKK307CisKK2RpY3Rpb25hcnkgVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudEluaXQgOiBFdmVudEluaXQgeworICAgIHJlcXVpcmVkIFByb21pc2U8YW55
PiBwcm9taXNlOworICAgIGFueSByZWFzb247Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRleCAw
YjA2Y2U5NzcyODNiNzZkMzE1NTFlYjg5OGUyNmJkNDE4OWViZTUyLi44MTM0MDNhZTc4ZDIyZTM5
MGE2OTc2MGVmOTQ3NjM2YTQ2Y2UyYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtMjcsNyAr
MjcsNyBAQAogCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2UuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0
eU5hbWVzLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxGb250RmFjZT4sIHByaXZhdGUgQ1NTRm9udEZhY2U6OkNsaWVudAogICAg
IGVudW0gY2xhc3MgTG9hZFN0YXR1cyB7IFVubG9hZGVkLCBMb2FkaW5nLCBMb2FkZWQsIEVycm9y
IH07CiAgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsKIAotICAgIHVzaW5nIFByb21pc2Ug
PSBET01Qcm9taXNlPElETEludGVyZmFjZTxGb250RmFjZT4+OworICAgIHVzaW5nIFByb21pc2Ug
PSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZvbnRGYWNlPj47CiAgICAgc3RkOjpv
cHRpb25hbDxQcm9taXNlPiYgcHJvbWlzZSgpIHsgcmV0dXJuIG1fcHJvbWlzZTsgfQogICAgIHZv
aWQgcmVnaXN0ZXJMb2FkZWQoUHJvbWlzZSYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApp
bmRleCBmYThmZTJhMWM4MzkwM2UyMzVkOGNiZjQ5OGZkY2QyYjNhNzg3ZGE2Li5lODRkMDk1ZWNj
YmRhYjAwNzg2ODAxNGIyMzg2MjIwNDJjZTEzOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQu
aApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRGYWNlU2V0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDE0ICs0NiwxNCBAQCBjbGFzcyBGb250RmFjZVNl
dCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlU2V0PiwgcHJpdmF0ZSBDU1NGb250
RmFjZVNldAogICAgIGJvb2wgcmVtb3ZlKEZvbnRGYWNlJik7CiAgICAgdm9pZCBjbGVhcigpOwog
Ci0gICAgdXNpbmcgTG9hZFByb21pc2UgPSBET01Qcm9taXNlPElETFNlcXVlbmNlPElETEludGVy
ZmFjZTxGb250RmFjZT4+PjsKKyAgICB1c2luZyBMb2FkUHJvbWlzZSA9IERPTVByb21pc2VEZWZl
cnJlZDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8Rm9udEZhY2U+Pj47CiAgICAgdm9pZCBsb2Fk
KGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBMb2FkUHJvbWlzZSYmKTsK
ICAgICBFeGNlcHRpb25Pcjxib29sPiBjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCk7CiAKICAgICBlbnVtIGNsYXNzIExvYWRTdGF0dXMgeyBMb2FkaW5nLCBMb2Fk
ZWQgfTsKICAgICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCi0gICAgdXNpbmcgUmVhZHlQ
cm9taXNlID0gRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8Rm9udEZhY2VTZXQ+PjsKKyAgICB1c2lu
ZyBSZWFkeVByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZvbnRGYWNl
U2V0Pj47CiAgICAgdm9pZCByZWdpc3RlclJlYWR5KFJlYWR5UHJvbWlzZSYmKTsKIAogICAgIENT
U0ZvbnRGYWNlU2V0JiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKaW5kZXggMTEyMDk3YjFjMjgzZjhjMDg0
NDdmMWQwYWMzMTVmZmM2ZTNhMWIyYy4uZWZkZmMyNDYyNjg2YmRlNjc1NjRhZDRiZmE1MjgwYmI5
ODNkMDYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaApA
QCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUXVhbGlm
aWVkTmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZv
clNjb3BlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlv
bkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmgKaW5k
ZXggMGZiMWE0YzBhMDYxOTdkNDNjMDA2ZmJjNzMwNDc3NGZiMzEzN2U3Mi4uMTY0Mjc1NzYyMDY5
OWUxNzExNGE4MTdkOTZhZTYyY2I1MmRhY2JlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb21pc2VSZWplY3Rpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9t
aXNlUmVqZWN0aW9uRXZlbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgogI2luY2x1ZGUgPGhl
YXAvU3Ryb25nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzLDcgKzM0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGZpbmFsIDogcHVi
bGljIEV2ZW50IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50SW5pdCB7Ci0gICAg
ICAgIEpTQzo6SlNWYWx1ZSBwcm9taXNlOworICAgICAgICBKU0M6OkpTUHJvbWlzZSogcHJvbWlz
ZTsKICAgICAgICAgSlNDOjpKU1ZhbHVlIHJlYXNvbjsKICAgICB9OwogCkBAIC00NCw3ICs0NSw3
IEBAIGNsYXNzIFByb21pc2VSZWplY3Rpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiAK
ICAgICB2aXJ0dWFsIH5Qcm9taXNlUmVqZWN0aW9uRXZlbnQoKTsKIAotICAgIEpTQzo6SlNWYWx1
ZSBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlLmdldCgpOyB9CisgICAgSlNDOjpK
U1Byb21pc2UmIHByb21pc2UoKSBjb25zdCB7IHJldHVybiAqbV9wcm9taXNlLmdldCgpOyB9CiAg
ICAgSlNDOjpKU1ZhbHVlIHJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uLmdldCgpOyB9
CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFByb21pc2VSZWplY3Rpb25FdmVudEludGVyZmFjZVR5cGU7IH0KQEAgLTUyLDcgKzUz
LDcgQEAgY2xhc3MgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsK
IHByaXZhdGU6CiAgICAgUHJvbWlzZVJlamVjdGlvbkV2ZW50KEpTQzo6RXhlY1N0YXRlJiwgY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKLSAgICBKU0M6OlN0
cm9uZzxKU0M6OlVua25vd24+IG1fcHJvbWlzZTsKKyAgICBKU0M6OlN0cm9uZzxKU0M6OkpTUHJv
bWlzZT4gbV9wcm9taXNlOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gbV9yZWFzb247
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVqZWN0ZWRQcm9taXNlVHJh
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5jcHAK
aW5kZXggMjMyYWJiODJmMDkxMTZlNjNhN2M2OGZlODkzNzkxZGU1M2UyMDM2Ny4uMDA0N2Q2OGEw
NjcxZmEyNjlmMWM1MDVhZTc1NTA4NjY0MDM3ZDY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcApAQCAtNTMsMzMgKzUzLDI2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFJlamVjdGVkUHJvbWlzZSB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVqZWN0ZWRQcm9taXNlKTsKIHB1YmxpYzoKLSAgICBSZWplY3RlZFByb21pc2UoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UmIHByb21pc2Up
Ci0gICAgICAgIDogbV9nbG9iYWxPYmplY3Qodm0sICZnbG9iYWxPYmplY3QpCi0gICAgICAgICwg
bV9wcm9taXNlKHZtLCAmcHJvbWlzZSkKKyAgICBSZWplY3RlZFByb21pc2UoSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBwcm9taXNlKQorICAgICAgICA6IG1fcHJv
bWlzZShET01Qcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNlKSkKICAgICB7CiAg
ICAgfQogCiAgICAgUmVqZWN0ZWRQcm9taXNlKFJlamVjdGVkUHJvbWlzZSYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkKKyAgICBET01Qcm9taXNl
JiBwcm9taXNlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAqbV9nbG9iYWxPYmplY3QuZ2V0KCk7
Ci0gICAgfQotCi0gICAgSlNQcm9taXNlJiBwcm9taXNlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biAqbV9wcm9taXNlLmdldCgpOworICAgICAgICByZXR1cm4gbV9wcm9taXNlLmdldCgpOwogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBTdHJvbmc8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2Jq
ZWN0OwotICAgIFN0cm9uZzxKU1Byb21pc2U+IG1fcHJvbWlzZTsKKyAgICBSZWY8RE9NUHJvbWlz
ZT4gbV9wcm9taXNlOwogfTsKIAogY2xhc3MgVW5oYW5kbGVkUHJvbWlzZSA6IHB1YmxpYyBSZWpl
Y3RlZFByb21pc2UgewogcHVibGljOgotICAgIFVuaGFuZGxlZFByb21pc2UoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UmIHByb21pc2UsIFJlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+JiYgc3RhY2spCi0gICAgICAgIDogUmVqZWN0ZWRQcm9taXNlKHZtLCBn
bG9iYWxPYmplY3QsIHByb21pc2UpCisgICAgVW5oYW5kbGVkUHJvbWlzZShKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UmIHByb21pc2UsIFJlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+JiYgc3RhY2spCisgICAgICAgIDogUmVqZWN0ZWRQcm9taXNlKGdsb2JhbE9iamVjdCwg
cHJvbWlzZSkKICAgICAgICAgLCBtX3N0YWNrKFdURk1vdmUoc3RhY2spKQogICAgIHsKICAgICB9
CkBAIC0xMjUsMTcgKzExOCwxOSBAQCB2b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnByb21p
c2VSZWplY3RlZChFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdAogewogICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCN0
aGUtaG9zdHByb21pc2VyZWplY3Rpb250cmFja2VyLWltcGxlbWVudGF0aW9uCiAKLSAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOwotICAgIEpTVmFsdWUgcmVhc29uID0gcHJvbWlzZS5yZXN1bHQodm0p
OwotICAgIG1fYWJvdXRUb0JlTm90aWZpZWRSZWplY3RlZFByb21pc2VzLmFwcGVuZChVbmhhbmRs
ZWRQcm9taXNlIHsgdm0sIGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgY3JlYXRlU2NyaXB0Q2FsbFN0
YWNrRnJvbVJlYXNvbihzdGF0ZSwgcmVhc29uKSB9KTsKKyAgICBKU1ZhbHVlIHJlYXNvbiA9IHBy
b21pc2UucmVzdWx0KHN0YXRlLnZtKCkpOworICAgIG1fYWJvdXRUb0JlTm90aWZpZWRSZWplY3Rl
ZFByb21pc2VzLmFwcGVuZChVbmhhbmRsZWRQcm9taXNlIHsgZ2xvYmFsT2JqZWN0LCBwcm9taXNl
LCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGcm9tUmVhc29uKHN0YXRlLCByZWFzb24pIH0pOwogfQog
Ci12b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnByb21pc2VIYW5kbGVkKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSYgcHJvbWlz
ZSkKK3ZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlzZUhhbmRsZWQoRXhlY1N0YXRl
JiwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBwcm9taXNlKQog
ewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFw
aXMuaHRtbCN0aGUtaG9zdHByb21pc2VyZWplY3Rpb250cmFja2VyLWltcGxlbWVudGF0aW9uCiAK
ICAgICBib29sIHJlbW92ZWQgPSBtX2Fib3V0VG9CZU5vdGlmaWVkUmVqZWN0ZWRQcm9taXNlcy5y
ZW1vdmVGaXJzdE1hdGNoaW5nKFsmXSAoVW5oYW5kbGVkUHJvbWlzZSYgdW5oYW5kbGVkUHJvbWlz
ZSkgewotICAgICAgICByZXR1cm4gJnVuaGFuZGxlZFByb21pc2UucHJvbWlzZSgpID09ICZwcm9t
aXNlOworICAgICAgICBhdXRvJiBkb21Qcm9taXNlID0gdW5oYW5kbGVkUHJvbWlzZS5wcm9taXNl
KCk7CisgICAgICAgIGlmIChkb21Qcm9taXNlLmlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBkb21Qcm9taXNlLnByb21pc2UoKSA9PSAmcHJv
bWlzZTsKICAgICB9KTsKICAgICBpZiAocmVtb3ZlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQz
LDkgKzEzOCw3IEBAIHZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlzZUhhbmRsZWQo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmCiAgICAgaWYgKCFtX291dHN0YW5k
aW5nUmVqZWN0ZWRQcm9taXNlcy5yZW1vdmUoJnByb21pc2UpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotCi0gICAgbV9jb250ZXh0LnBvc3RUYXNrKFt0aGlz
LCByZWplY3RlZFByb21pc2UgPSBSZWplY3RlZFByb21pc2UgeyB2bSwgZ2xvYmFsT2JqZWN0LCBw
cm9taXNlIH1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgbV9jb250
ZXh0LnBvc3RUYXNrKFt0aGlzLCByZWplY3RlZFByb21pc2UgPSBSZWplY3RlZFByb21pc2UgeyBn
bG9iYWxPYmplY3QsIHByb21pc2UgfV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxl
IHsKICAgICAgICAgcmVwb3J0UmVqZWN0aW9uSGFuZGxlZChXVEZNb3ZlKHJlamVjdGVkUHJvbWlz
ZSkpOwogICAgIH0pOwogfQpAQCAtMTcxLDggKzE2NCwxMSBAQCB2b2lkIFJlamVjdGVkUHJvbWlz
ZVRyYWNrZXI6OnJlcG9ydFVuaGFuZGxlZFJlamVjdGlvbnMoVmVjdG9yPFVuaGFuZGxlZFByb21p
c2U+JgogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCiAgICAgZm9yIChhdXRvJiB1
bmhhbmRsZWRQcm9taXNlIDogdW5oYW5kbGVkUHJvbWlzZXMpIHsKLSAgICAgICAgRXhlY1N0YXRl
JiBzdGF0ZSA9ICp1bmhhbmRsZWRQcm9taXNlLmdsb2JhbE9iamVjdCgpLmdsb2JhbEV4ZWMoKTsK
LSAgICAgICAgYXV0byYgcHJvbWlzZSA9IHVuaGFuZGxlZFByb21pc2UucHJvbWlzZSgpOworICAg
ICAgICBSZWY8RE9NUHJvbWlzZT4gZG9tUHJvbWlzZSA9IHVuaGFuZGxlZFByb21pc2UucHJvbWlz
ZSgpOworICAgICAgICBpZiAoZG9tUHJvbWlzZS0+aXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBFeGVjU3RhdGUmIHN0YXRlID0gKmRvbVByb21pc2UtPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgIGF1dG8mIHByb21pc2UgPSAqZG9tUHJv
bWlzZS0+cHJvbWlzZSgpOwogCiAgICAgICAgIGlmIChwcm9taXNlLmlzSGFuZGxlZCh2bSkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4Nyw3ICsxODMsNyBAQCB2b2lkIFJlamVjdGVkUHJv
bWlzZVRyYWNrZXI6OnJlcG9ydFVuaGFuZGxlZFJlamVjdGlvbnMoVmVjdG9yPFVuaGFuZGxlZFBy
b21pc2U+JgogICAgICAgICBib29sIG5lZWRzRGVmYXVsdEFjdGlvbiA9IHRhcmdldC0+ZGlzcGF0
Y2hFdmVudChldmVudCk7CiAKICAgICAgICAgaWYgKG5lZWRzRGVmYXVsdEFjdGlvbikKLSAgICAg
ICAgICAgIG1fY29udGV4dC5yZXBvcnRVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uKHN0YXRlLCB1
bmhhbmRsZWRQcm9taXNlLnByb21pc2UoKSwgdW5oYW5kbGVkUHJvbWlzZS5jYWxsU3RhY2soKSk7
CisgICAgICAgICAgICBtX2NvbnRleHQucmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbihz
dGF0ZSwgcHJvbWlzZSwgdW5oYW5kbGVkUHJvbWlzZS5jYWxsU3RhY2soKSk7CiAKICAgICAgICAg
aWYgKCFwcm9taXNlLmlzSGFuZGxlZCh2bSkpCiAgICAgICAgICAgICBtX291dHN0YW5kaW5nUmVq
ZWN0ZWRQcm9taXNlcy5zZXQoJnByb21pc2UsICZwcm9taXNlKTsKQEAgLTIwMSwxMSArMTk3LDE2
IEBAIHZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cmVwb3J0UmVqZWN0aW9uSGFuZGxlZChS
ZWplY3RlZFByb21pc2UmJiByZWplY3RlZFByCiAgICAgVk0mIHZtID0gbV9jb250ZXh0LnZtKCk7
CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICBFeGVjU3RhdGUmIHN0YXRl
ID0gKnJlamVjdGVkUHJvbWlzZS5nbG9iYWxPYmplY3QoKS5nbG9iYWxFeGVjKCk7CisgICAgUmVm
PERPTVByb21pc2U+IGRvbVByb21pc2UgPSByZWplY3RlZFByb21pc2UucHJvbWlzZSgpOworICAg
IGlmIChkb21Qcm9taXNlLT5pc1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBF
eGVjU3RhdGUmIHN0YXRlID0gKmRvbVByb21pc2UtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7CisgICAgYXV0byYgcHJvbWlzZSA9ICpkb21Qcm9taXNlLT5wcm9taXNlKCk7CiAKICAgICBQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQgaW5pdGlhbGl6ZXI7Ci0gICAgaW5pdGlhbGl6ZXIu
cHJvbWlzZSA9ICZyZWplY3RlZFByb21pc2UucHJvbWlzZSgpOwotICAgIGluaXRpYWxpemVyLnJl
YXNvbiA9IHJlamVjdGVkUHJvbWlzZS5wcm9taXNlKCkucmVzdWx0KHN0YXRlLnZtKCkpOworICAg
IGluaXRpYWxpemVyLnByb21pc2UgPSAmcHJvbWlzZTsKKyAgICBpbml0aWFsaXplci5yZWFzb24g
PSBwcm9taXNlLnJlc3VsdCh2bSk7CiAKICAgICBhdXRvIGV2ZW50ID0gUHJvbWlzZVJlamVjdGlv
bkV2ZW50OjpjcmVhdGUoc3RhdGUsIGV2ZW50TmFtZXMoKS5yZWplY3Rpb25oYW5kbGVkRXZlbnQs
IGluaXRpYWxpemVyKTsKICAgICBhdXRvIHRhcmdldCA9IG1fY29udGV4dC5lcnJvckV2ZW50VGFy
Z2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA4OWY4
ZWRiMTgzNWQ5ZDYyMmQzNzA0ZjE0NmI5MWI3YmFlNGUxMDFiLi45NDc0ZTQyMDIyMzE0YmY2Nzc4
NTYxNjJmNDNmMDgwNGIyNWI4OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAKICNpbmNsdWRlICJIVE1MU291cmNlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTUVycm9yLmgi
Ci0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJKU0hUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJMYW5ndWFn
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTEwMTIsNyArMTAxMiw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2NoZWR1bGVSZXNvbHZlUGVuZGluZ1BsYXlQcm9taXNlcygpCiAKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cmVqZWN0UGVuZGluZ1BsYXlQcm9taXNlcyhET01FcnJvciYg
ZXJyb3IpCiB7Ci0gICAgVmVjdG9yPERPTVByb21pc2U8dm9pZD4+IHBlbmRpbmdQbGF5UHJvbWlz
ZXMgPSBXVEZNb3ZlKG1fcGVuZGluZ1BsYXlQcm9taXNlcyk7CisgICAgVmVjdG9yPERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPj4gcGVuZGluZ1BsYXlQcm9taXNlcyA9IFdURk1vdmUobV9wZW5kaW5n
UGxheVByb21pc2VzKTsKIAogICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHBlbmRpbmdQbGF5UHJv
bWlzZXMpCiAgICAgICAgIHByb21pc2UucmVqZWN0VHlwZTxJRExJbnRlcmZhY2U8RE9NRXJyb3I+
PihlcnJvcik7CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
amVjdFBlbmRpbmdQbGF5UHJvbWlzZXMoRE9NRXJyb3ImIGVycm9yKQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlc29sdmVQZW5kaW5nUGxheVByb21pc2VzKCkKIHsKLSAgICBWZWN0b3I8RE9N
UHJvbWlzZTx2b2lkPj4gcGVuZGluZ1BsYXlQcm9taXNlcyA9IFdURk1vdmUobV9wZW5kaW5nUGxh
eVByb21pc2VzKTsKKyAgICBWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBwZW5kaW5n
UGxheVByb21pc2VzID0gV1RGTW92ZShtX3BlbmRpbmdQbGF5UHJvbWlzZXMpOwogCiAgICAgZm9y
IChhdXRvJiBwcm9taXNlIDogcGVuZGluZ1BsYXlQcm9taXNlcykKICAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKCk7CkBAIC0zMTM2LDcgKzMxMzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFByZWxvYWQoY29uc3QgU3RyaW5nJiBwcmVsb2FkKQogICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIsIHByZWxvYWQpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnBsYXkoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnBsYXkoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwbGF5KCVwKSIsIHRoaXMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDk2ZTBhOTVkNjg4ZTgyYTRlMjcw
OThiZTljMTU1NDE1OTY0NDEzMDEuLjE4ZDZmYmZiZDlkNWY5MzllOGJkMDdmOGVjNmE3NTQzYmU4
OTc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC05Myw3ICs5
Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tMaXN0OwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGU7CiBj
bGFzcyBXZWJLaXRNZWRpYUtleXM7CiAKLXRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9t
aXNlOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKIAogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKIHVzaW5nIEN1ZUludGVydmFsVHJlZSA9IFBPREludGVydmFs
VHJlZTxNZWRpYVRpbWUsIFRleHRUcmFja0N1ZSo+OwpAQCAtMjM4LDcgKzIzOCw3IEBAIGNsYXNz
IEhUTUxNZWRpYUVsZW1lbnQKICAgICBib29sIGxvb3AoKSBjb25zdDsKICAgICB2b2lkIHNldExv
b3AoYm9vbCBiKTsKIAotICAgIHZvaWQgcGxheShET01Qcm9taXNlPHZvaWQ+JiYpOworICAgIHZv
aWQgcGxheShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHBsYXkoKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhdXNlKCkg
b3ZlcnJpZGU7CkBAIC04NzEsNyArODcxLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogICAg
IFJlZlB0cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7CiAgICAgR2VuZXJpY0V2ZW50
UXVldWUgbV9hc3luY0V2ZW50UXVldWU7CiAKLSAgICBWZWN0b3I8RE9NUHJvbWlzZTx2b2lkPj4g
bV9wZW5kaW5nUGxheVByb21pc2VzOworICAgIFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4+IG1fcGVuZGluZ1BsYXlQcm9taXNlczsKIAogICAgIGRvdWJsZSBtX3JlcXVlc3RlZFBsYXli
YWNrUmF0ZSB7IDEgfTsKICAgICBkb3VibGUgbV9yZXBvcnRlZFBsYXliYWNrUmF0ZSB7IDEgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21t
YW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29t
bWFuZEJ1ZmZlci5oCmluZGV4IGJmMTFjM2ZmNjE4ZjE1YTQ3MDI1NTk4YWEyYmVmZGVhZWY4YTdh
NzMuLmU4M2Q2MGY4NTQ4ZTdkM2NiZDlhODY0NDRmNzA4ODcxMGY2MzU2ZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZm
ZXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAotI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGJhOGEyMTVjY2MzYTg1YjJhOGUxZjEwMzc5N2Q2
YTU4YWY2NDIwYmMuLjgzN2E1NDI4M2NkZWZiMzFiMWVmMTMyNTgyNzJkM2M1NzNmNjZmOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUg
IkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNsdWRlICJKU0RP
TVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUg
IlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgog
I2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CkBAIC01NzMsNyArNTczLDcgQEAgY2xh
c3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgIHByaXZh
dGUgQ29udGV4dERlc3RydWN0aW8KICAgICB1bnNpZ25lZCBsb25nIHRyYWNrQXVkaW9TYW1wbGVD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tBdWRpb1NhbXBsZUNvdW50OyB9CiAgICAgdW5z
aWduZWQgbG9uZyB0cmFja1ZpZGVvU2FtcGxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNr
VmlkZW9TYW1wbGVDb3VudDsgfQogICAgIHZvaWQgb2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVk
aWFTdHJlYW1UcmFjayYpOwotICAgIHVzaW5nIFRyYWNrRnJhbWVQcm9taXNlID0gRE9NUHJvbWlz
ZTxJRExJbnRlcmZhY2U8SW1hZ2VEYXRhPj47CisgICAgdXNpbmcgVHJhY2tGcmFtZVByb21pc2Ug
PSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEltYWdlRGF0YT4+OwogICAgIHZvaWQg
Z3JhYk5leHRNZWRpYVN0cmVhbVRyYWNrRnJhbWUoVHJhY2tGcmFtZVByb21pc2UmJik7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDQ5NzMzYjk3ZDAzZThlNDYwYjJkNzJkYjA4MDRmYzBjYzc5NThlMTYuLmUy
OWYzOWExMmYxNDEyMmE3MTQ0NDEwNmI4NWIxMGZmODdlNGRjNmUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxNy0wNS0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2RvbS9wcm9taXNlLXJlamVjdGlv
bi1ldmVudC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVu
dC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS5odG1sOiBBZGRl
ZC4KKwogMjAxNy0wNS0wNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgaW1wb3J0U2NyaXB0cygpIHNob3VsZCByZXNwZWN0IFgtQ29udGVudC1UeXBlLU9wdGlv
bnM6IG5vc25pZmYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVj
dGlvbi1ldmVudC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vcHJvbWlzZS1yZWplY3Rpb24tZXZlbnQt
c2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM0ZTM5Nzc3YzJjYTkyYmI1ZDY2OGUwZjIxMjZjMmYyMjQ2YjU1ZWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vcHJvbWlzZS1yZWplY3Rpb24tZXZl
bnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3QgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGNvbnN0cnVj
dG9yIGZvbGxvd3MgV2ViSURMIHByb21pc2UgY29udmVyc2lvbiBydWxlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1BBU1MgZXZlbnQucHJvbWlzZSBpcyBhbiBpbnN0YW5jZSBvZiBQ
cm9taXNlCitQQVNTIGV2ZW50LnJlYXNvbiBpcyAiQ2FwcHVjY2lubyIKK1BBU1MgdmFsdWUgaXMg
NDIKK1BBU1MgZXZlbnQucHJvbWlzZSBpcyBhbiBpbnN0YW5jZSBvZiBQcm9taXNlCitQQVNTIGV2
ZW50LnByb21pc2UgaXMgcHJvbWlzZQorUEFTUyBldmVudC5yZWFzb24gaXMgIkNvY29hIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9s
bG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS5odG1sIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2Ut
Y29udmVyc2lvbi1ydWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2IwNzBhMzQ5ZjAxNzhhY2ZkZTA3YmY1
NDFhNDZjZTBjYzFlMWMwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9w
cm9taXNlLXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNlLWNvbnZl
cnNpb24tcnVsZS5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9t
aXNlUmVqZWN0aW9uRXZlbnQgY29uc3RydWN0b3IgZm9sbG93cyBXZWJJREwgcHJvbWlzZSBjb252
ZXJzaW9uIHJ1bGUuJyk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBldmVu
dCA9IG51bGw7Cit2YXIgdmFsdWUgPSBudWxsOwordmFyIHByb21pc2UgPSBudWxsOworCitldmVu
dCA9IG5ldyBQcm9taXNlUmVqZWN0aW9uRXZlbnQoInJlamVjdGlvbmhhbmRsZWQiLCB7CisgICAg
cHJvbWlzZTogNDIsCisgICAgcmVhc29uOiBgQ2FwcHVjY2lub2AKK30pOworc2hvdWxkQmVUeXBl
KGBldmVudC5wcm9taXNlYCwgYFByb21pc2VgKTsKK3Nob3VsZEJlKGBldmVudC5yZWFzb25gLCBg
IkNhcHB1Y2Npbm8iYCk7CitldmVudC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gKHYpIHsKKyAgICB2
YWx1ZSA9IHY7CisgICAgc2hvdWxkQmUoYHZhbHVlYCwgYDQyYCk7CisKKyAgICBwcm9taXNlID0g
UHJvbWlzZS5yZXNvbHZlKDQyKTsKKyAgICBldmVudCA9IG5ldyBQcm9taXNlUmVqZWN0aW9uRXZl
bnQoInJlamVjdGlvbmhhbmRsZWQiLCB7CisgICAgICAgIHByb21pc2U6IHByb21pc2UsCisgICAg
ICAgIHJlYXNvbjogYENvY29hYAorICAgIH0pOworCisgICAgc2hvdWxkQmVUeXBlKGBldmVudC5w
cm9taXNlYCwgYFByb21pc2VgKTsKKyAgICBzaG91bGRCZShgZXZlbnQucHJvbWlzZWAsIGBwcm9t
aXNlYCk7CisgICAgc2hvdWxkQmUoYGV2ZW50LnJlYXNvbmAsIGAiQ29jb2EiYCk7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309089</attachid>
            <date>2017-05-04 12:44:47 -0700</date>
            <delta_ts>2017-05-04 13:42:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166752-20170505044446.patch</filename>
            <type>text/plain</type>
            <size>142322</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NzY0Yjk4ZmNjZGY0NjhhMzZmMmRkYWRlMTRkMTcwZGNlOTExNzM2Li4yOGMwYzU4ZWU5ZGRhY2Q0
ZDhhNGM2ZjczNGFjYmUxODVhNGM3MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNy0wNS0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSlNQcm9taXNlOjpyZXNv
bHZlIHN0YXRpYyBmdW5jdGlvbi4KKyAgICAgICAgVGhpcyBhcHBsaWVzIGBQcm9taXNlLnJlc29s
dmUoKWAgY29udmVyc2lvbiB0byBhIGdpdmVuIHZhbHVlLgorCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnByb21pc2VSZXNvbHZlRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZS5oOgorCiAyMDE3LTA1LTA0ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVu
QHlhbmRleC5ydT4KIAogICAgICAgICBGaXggY29tcGlsYXRpb24gd2l0aCBJQ1UgNTkuMQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDdiYzM0MzU1NTE0NjRhNzQ0MzAxN2M1YzM5MzczODQ0YWU3NWQ5NDUuLjcwMjdm
Y2U5YzA5MDM5OGY1OGY1MGEzZjdjNDYzNTk3NTE2MzhiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMDMgQEAKKzIwMTctMDUtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgSGFuZGxlIElETFByb21pc2U8PiBwcm9wZXJseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRz
IFdlYklETCBQcm9taXNlIHR5cGUgY29udmVyc2lvbi4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjLAor
ICAgICAgICBQcm9taXNlIHRha2VzIGEgdmFsdWUgYW5kIGNvbnZlcnQgaXQgdG8gUHJvbWlzZSBi
eSB1c2luZyBQcm9taXNlLnJlc29sdmUgZnVuY3Rpb24uCisgICAgICAgIFdlIGltcGxlbWVudCBK
U1Byb21pc2U6OnJlc29sdmUgaW4gSlNDIGFuZCB1c2UgaXQgaW4gSlNET01Db252ZXJ0UHJvbWlz
ZS4KKworICAgICAgICBJbiBjb252ZXJzaW9uIHBoYXNlLCB3ZSBqdXN0IGNvbnZlcnQgdGhlIHZh
bHVlIHRvIEpTQzo6SlNQcm9taXNlKiBhbmQgaG9sZCBpdCBpbgorICAgICAgICBQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuIE9uIHRoZSBvdGhlciBoYW5kLCBJbiB0aGlzIHBhdGNoLCB3ZSBuZXdseSBp
bnRyb2R1Y2UgYSBuZXcKKyAgICAgICAgdHlwZSBET01Qcm9taXNlIGFuZCB1c2UgaXQgaW4gUmVq
ZWN0ZWRQcm9taXNlVHJhY2tlci4gQW5kIHdlIGFsc28gcmVuYW1lIHRoZSBwcmV2aW91cworICAg
ICAgICBET01Qcm9taXNlIHRvIERPTVByb21pc2VEZWZlcnJlZCBzaW5jZSBpdCBpcyBjb3JyZXNw
b25kaW5nIHRvIEpTUHJvbWlzZURlZmVycmVkLgorICAgICAgICBET01Qcm9taXNlIGlzIERPTUd1
YXJkZWQgb2JqZWN0LiBTbyBpdCBpcyBzdHJvbmdseSByZWZlcmVuY2VkIGZyb20gU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dAorICAgICAgICBhbmQgaXQgaXMgd2Vha2x5IHJlZmVyZW5jZWQgZnJvbSB0
aGUgb2JqZWN0IGl0c2VsZi4gVGhpcyBpcyBpbXBvcnRhbnQgc2luY2UgU3Ryb25nPEpTUHJvbWlz
ZT4KKyAgICAgICAgcmVmZXJlbmNlIGluIEMrKyBvYmplY3QgdGhhdCBoYXMgYSB3cmFwcGVyIChp
biB0aGlzIGNhc2UsIFByb21pc2VSZWplY3Rpb25FdmVudCkgZWFzaWx5IGNhdXNlcworICAgICAg
ICBjeWNsaWMgcmVmZXJlbmNlLiBXZSBob2xkIGl0IGFzIERPTVByb21pc2UgaW5zdGVhZCBvZiBT
dHJvbmc8SlNQcm9taXNlPiBpbiBSZWplY3RlZFByb21pc2VUcmFja2VyCisgICAgICAgIHRvIGJy
ZWFrIHRoZSBjeWNsaWMgcmVmZXJlbmNlIGVkZ2Ugd2l0aCB3ZWFrIHJlZmVyZW5jZS4KKworICAg
ICAgICBJbiB0aGUgbWVhbnRpbWUsIHdlIHN0aWxsIHVzZSBKU0M6OlN0cm9uZzw+IGluIFByb21p
c2VSZWplY3Rpb25FdmVudC4gSXQgbGVha3MgbWVtb3J5IGlmIHByb21pc2UKKyAgICAgICAgcmVm
ZXJzIHRoZSB3cmFwcGVyIG9iamVjdCBvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQuIEN1c3RvbUV2
ZW50IGFsc28gaGFzIHRoZSBzYW1lIHByb2JsZW0uCisgICAgICAgIFRoaXMgaXMgYSBnZW5lcmFs
IHByb2JsZW0gdGhhdCBgYXR0cmlidXRlIGFueWAgY2FuIGNyZWF0ZSBjeWNsaWMgcmVmZXJlbmNl
LiBBbmQgdGhleSBzaG91bGQgYmUKKyAgICAgICAgZml4ZWQgaW4gYSBkaWZmZXJlbnQgcGF0Y2gu
CisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBkbyBub3QgdGFrZSB0aGUgZm9sbG93aW5nIGFwcHJv
YWNoLiBlLmcuIFRoZXJlIGlzIEMrKyBvYmplY3QgdGhhdCByZXByZXNlbnRzIFByb21pc2UuCisg
ICAgICAgIEFuZCBpdHMgd3JhcHBlciBvYmplY3QgaXMgSlNQcm9taXNlIHRoaW5nLiBXaGVuIGV4
cG9zaW5nIHRoZSBDKysgb2JqZWN0LCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhCisgICAgICAg
IHdyYXBwZXIgb2JqZWN0LiBXZSBkbyBub3QgdGFrZSB0aGlzIGFwcHJvYWNoIGJlY2F1c2UgUHJv
bWlzZVJlamVjdGlvbkV2ZW50IGNhbiB0YWtlIHVzZXItcHJvdmlkZWQgcHJvbWlzZS4KKyAgICAg
ICAgRm9yIGV4YW1wbGUsIHVzZXJzIGNhbiBjcmVhdGUgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGlu
IGEgZm9ybQorICAgICAgICBgbmV3IFByb21pc2VSZWplY3Rpb25FdmVudCgiLi4uIiwgeyBwcm9t
aXNlOiBwcm9taXNlIH0pYC4gSW4gdGhpcyBjYXNlLCBgZXZlbnQucHJvbWlzZSA9PT0gcHJvbWlz
ZWAKKyAgICAgICAgaXMgcmVxdWlyZWQuIEFuZCB0aGlzIGlzIG5vdCBzdWl0YWJsZSBmb3IgdGhl
IGFib3ZlIEMrKyBvYmplY3QgbW9kZWwuCisKKyAgICAgICAgTGFyZ2UgcGFydCBvZiB0aGlzIHBh
dGNoIGlzIG1lY2hhbmljYWwgb25lIHRvIHJlcGxhY2UgRE9NUHJvbWlzZSB3aXRoIERPTVByb21p
c2VEZWZlcnJlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2
aWdhdG9yRU1FLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvV29ya2VyR2xvYmFsU2NvcGVGZXRj
aC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmg6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNl
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpy
ZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjph
cHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNl
dExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1Bl
ZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRyYWNr
VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNr
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVl
c3Q6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRp
YVJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OnJlcGxhY2VUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAg
ICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6YWRkUmVh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9Db250ZXh0OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpj
bG9zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNvbnZlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNvbnZlcnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpwcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVByb21pc2U6OkRPTVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9t
aXNlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNl
OjpyZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6
cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVm
ZXJyZWRQcm9taXNlOjpyZWplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRQcm9taXNlOjpyZXNvbHZlV2l0aENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0V2l0aENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6RGVmZXJyZWRQcm9taXNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6ZGVmZXJyZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJhc2U6OkRPTVByb21pc2VCYXNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VCYXNlOjpvcGVyYXRvcj0pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJhc2U6OnJlamVjdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6cmVqZWN0VHlwZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6cHJvbWlzZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpyZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVByb21pc2U8dm9pZD46OnJlc29sdmUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y2FsbFByb21pc2VGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpi
aW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRlcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVy
cmVkUHJvbWlzZTo6cHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpyZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURlZmVycmVkUHJvbWlzZSk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVSZWplY3RlZFByb21pc2VXaXRoVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlQXNKU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmZ1bGZpbGxQcm9taXNlV2l0aEpT
T04pOgorICAgICAgICAoV2ViQ29yZTo6ZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oLgorICAgICAgICAoV2Vi
Q29yZTo6RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6
cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9t
aXNlOjpyZWplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZl
V2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0
V2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6RGVmZXJy
ZWRQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6ZGVmZXJyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6RE9NUHJvbWlzZURl
ZmVycmVkQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpv
cGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cmVq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VEZWZlcnJlZEJhc2U6OnJlamVjdFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cHJvbWlzZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+OjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbGxQcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6YmluZGlu
Z1Byb21pc2VGdW5jdGlvbkFkYXB0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRC
dWZmZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5
cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0RGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0Pik6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRQcm90b3R5cGU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50OjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVByb3Rv
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnBy
b3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudD46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OndyYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9K
Uyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5pZGw6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNs
aWVudC5oLgorICAgICAgICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFj
ZVNldC5oOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaDoKKyAgICAgICAg
KiBkb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL1JlamVjdGVkUHJv
bWlzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlOjpSZWpl
Y3RlZFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlOjpwcm9taXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlVuaGFuZGxlZFByb21pc2U6OlVuaGFuZGxlZFByb21pc2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlzZVJlamVj
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnByb21pc2VI
YW5kbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9y
dFVuaGFuZGxlZFJlamVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNl
VHJhY2tlcjo6cmVwb3J0UmVqZWN0aW9uSGFuZGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWpl
Y3RlZFByb21pc2U6Omdsb2JhbE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
amVjdFBlbmRpbmdQbGF5UHJvbWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6cmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6cGxheSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaDoKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorCiAyMDE3LTA1LTA0ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSB0aGUgW0VuYWJsZWRCeVNldHRpbmddIGV4
dGVuZGVkIGF0dHJpYnV0ZSB3b3JrIGZvciBhbnkgYXR0cmlidXRlIG9yIG9wZXJhdGlvbiBvbiBh
IHByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCmluZGV4IGE0YWI4N2M0ZGJkMTkzMTJjYjk5YWNhODY2YmRiZGQyMjU5NjZlNjQu
LjUyN2YzMmI1NTQ1MWFkYWE1NTM0MDFlZTgxNTM5Yjk0MmQzZWJhMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQyOCw2ICs0
MjgsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oaW5pdC52bSwgaXRlcmF0
b3JIZWxwZXJzUGVyZm9ybUl0ZXJhdGlvbkNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3du
ZXIpKTsKICAgICAgICAgfSk7CiAKKyAgICBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uaW5pdExh
dGVyKAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsK
KyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihp
bml0LnZtLCBwcm9taXNlQ29uc3RydWN0b3JSZXNvbHZlQ29kZUdlbmVyYXRvcihpbml0LnZtKSwg
aW5pdC5vd25lcikpOworICAgICAgICB9KTsKKwogICAgIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlG
dW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2
bSwgcHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVHZW5lcmF0b3Iodm0p
LCB0aGlzKSk7CiAgICAgbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIG1fdGhyb3dUeXBl
RXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKApAQCAtMTE4Nyw2ICsxMTkyLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlv
bi52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlRnVuY3Rp
b24udmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmpl
Y3RQcm90b1ZhbHVlT2ZGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDdlOWZl
Y2I3MWFiMTNhMGViMThmNDI3ZGUzODgwNTgxMDNlYmU1OGUuLmIzM2Q2ZDM1NjQyYWUzM2ZkZTE2
MjViOGJkODc4ZmIzODBmYzk3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjY1LDYgKzI2NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2luaXRpYWxp
emVQcm9taXNlRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1
bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbjsKKyAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbjsKICAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbjsKICAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9u
OwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uOwpAQCAtNTE1LDYgKzUxNiw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24qIGFy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVl
c0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVQcm9taXNl
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24uZ2V0
KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CisgICAg
SlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
bWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBvYmplY3RQ
cm90b1ZhbHVlT2ZGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJvdG9WYWx1ZU9m
RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLmdl
dCgpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1
bmN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
LmNwcAppbmRleCBhODNkMmJmNTJmNzZhODRmZWE3MGNkYjE0NjM3ZjllMjA3NGYyMzFiLi5kNzRm
YWEwODE3NTU2NmY4MGY5ZDRjZGQyMGEwOGM5ZTY3NzJhODVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKQEAgLTkyLDQgKzkyLDIzIEBAIGJvb2wgSlNQ
cm9taXNlOjppc0hhbmRsZWQoVk0mIHZtKSBjb25zdAogICAgIHJldHVybiB2YWx1ZS5hc0Jvb2xl
YW4oKTsKIH0KIAorSlNQcm9taXNlKiBKU1Byb21pc2U6OnJlc29sdmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTRnVuY3Rpb24q
IHByb21pc2VSZXNvbHZlRnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPnByb21pc2VSZXNvbHZlRnVu
Y3Rpb24oKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IEpTQzo6Z2V0Q2FsbERhdGEocHJvbWlzZVJlc29sdmVGdW5jdGlvbiwgY2FsbERhdGEpOworICAg
IEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIHByb21pc2VSZXNvbHZlRnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ29uc3RydWN0b3IoKSwgYXJndW1lbnRz
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBBU1NFUlQo
cHJvbWlzZS5pbmhlcml0cyh2bSwgSlNQcm9taXNlOjppbmZvKCkpKTsKKyAgICByZXR1cm4ganND
YXN0PEpTUHJvbWlzZSo+KHJlc3VsdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAppbmRleCBjN2Q3ZDk5Y2FhNGQ4NmQy
MmM3ZmFiNDBjYzRmM2QwMDUwNDNiYmMwLi4zNDg0NTRiMjU0MTAyZDU2NTJlMzliY2MwOTE1NjEy
NzU1NTI2NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaApA
QCAtNTIsNiArNTIsOCBAQCBjbGFzcyBKU1Byb21pc2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgLy8gVGhpcyBtYXkgcmFpc2UgYSBKUyBleGNlcHRpb24uCiAgICAgdm9pZCBpbml0
aWFsaXplKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBleGVjdXRvcik7CiAK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNQcm9taXNlKiByZXNvbHZlKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CisKIHByb3RlY3RlZDoKICAgICBKU1Byb21pc2UoVk0mLCBTdHJ1
Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDI4MjViZTQzOGQ4ZjQxOTYxYTM1MDA4MTZiZDU5ZjZjNjIwNzdmNWMuLjVjOWM5ZDE2
YTRlZWFiYzZlNGM3YWY1ODMyMWI0YzhjZDJiOGMzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0xMTYyLDcgKzExNjIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9i
amVjdC5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwCi0gICAgYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVk
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAogICAgIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uLmNwcAppbmRleCA3NDQ5NzkzMGUzYjlhZTg5YTRkM2MzZjBjZWFkMDcyNTA1ZTgw
MDViLi42MWE5ZTVjYTAxNWRlMWRkZTI4ZGMyYTBmYzAwZTBlZjVhMzk2ZmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCkBA
IC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkxpbmtJ
Y29uQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiTGlua0ljb25UeXBlLmgiCiAjaW5jbHVkZSAiTWFp
bkZyYW1lLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAwY2U4NzVkODkzNTg1ZWUwMzljZmJmZDU2ZTJh
NmE3YzUyYTIwY2VmLi4wNTkyMjQzOWUxMmYyOTIyMTA4MWUzMmM4NzA2Y2FkZGI1ZjViMzE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tR
dWV1ZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlVHlwZS5oIgogI2luY2x1ZGUg
Ik1lZGlhS2V5U2Vzc2lvblR5cGUuaCIKICNpbmNsdWRlICJNZWRpYUtleVN0YXR1cy5oIgpAQCAt
NzAsNyArNzAsNyBAQCBjbGFzcyBNZWRpYUtleVNlc3Npb24gZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYQogICAgIHZvaWQgY2xvc2UoUmVm
PERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCByZW1vdmUoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAKLSAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZTx2b2lkPjsKKyAg
ICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+OwogICAgIHZv
aWQgcmVnaXN0ZXJDbG9zZWRQcm9taXNlKENsb3NlZFByb21pc2UmJik7CiAKICAgICBjb25zdCBW
ZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0
dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3Mu
aAppbmRleCBhMTEzZTI2MDEwMDFlZDY3YmY3Y2JmOGRmZjcwNWIxMjM2NDBlNWM2Li4wYTNiNmUx
ZDQ4YzA2OTczYmRkZGNmODhhMzQ1MjE5ZTViNzhmMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vz
cy5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAogI2lu
Y2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNp
bmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IGJkODBiZDJjOTg0
M2E4YWY4ZDdkYmFkNWI4NTM1MjU3ZDkwNTFhZDUuLjlhNTlkMTcxMTRlYzNlZGJhNjE0NzE3MDk4
YWEyZDRmYmZlMzA4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCi0jaW5jbHVkZSAiSlNET01Q
cm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJN
ZWRpYUtleVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL05hdmlnYXRvckVNRS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuaAppbmRleCA0YzIwNGU5NDFmZmI2ZGYzYjExZTYzOGFkMjIz
N2RkNWE3OTM0OWNkLi44MTY1ZmFlYjFmZmM2ZWFjZGQ0MDRkMDVmOGE1NzI3MzAyNDBhMDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRv
ckVNRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdh
dG9yRU1FLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIk1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oIgogI2luY2x1
ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RE9NV2luZG93RmV0Y2guaAppbmRleCBiM2QxNTc1N2FhZGIzMmUxMTU4NjE1MDUzYWMxMzZlZTVk
ZDJkYzkxLi4xM2JmNzVhMmRjODRiMWYzMjg5YWEyNGFlM2Q2ZjljMWE0ZjE5ZDEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0RPTVdpbmRvd0ZldGNoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5oCkBAIC0zMCw3ICsz
MCw3IEBACiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCi0jaW5jbHVkZSAiSlNET01Qcm9taXNl
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaAppbmRleCBmZWVhNmRjZjE2Nzc1NzE1ZDZiOWJmMjcxN2QxZDBiYTg1MmEy
MGE2Li44MmI4MzljNmRjOTIyMzA3ZjM2NzZjODMwMzdkY2M4MDhhZTZkNjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNs
dWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIkZldGNoTG9hZGVyLmgiCiAjaW5j
bHVkZSAiRm9ybURhdGEuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJK
U0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlVSTFNlYXJjaFBhcmFtcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggNGEw
ZmIzOWYxMGU2MGMyY2M2YjFkNDk4ZDgxNDgyNGZlNzk3MjU0Mi4uMzhiNzY4OWVkZTJlOTFhYjdh
ZWViZjcyNjBmYjQ0MzBlNWJjMzhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxF
KEZFVENIX0FQSSkKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKaW5kZXggZjVhOWUyNzE3MDY0ZTFmYzI2YmFkN2IyMzNkMjVhNTlmNDAyYzAxMC4uYTkwNjM3
ZmJiY2Q0ZjE1MzQ3NjEzNTkxMWQxOTc4MmIxMDJmMTYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgRmV0
Y2hSZXNwb25zZSBmaW5hbCA6IHB1YmxpYyBGZXRjaEJvZHlPd25lciB7CiAgICAgc3RhdGljIFJl
ZjxGZXRjaFJlc3BvbnNlPiBlcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gcmVkaXJlY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhdHVzKTsKIAotICAgIHVzaW5n
IEZldGNoUHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+PjsK
KyAgICB1c2luZyBGZXRjaFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNl
PEZldGNoUmVzcG9uc2U+PjsKICAgICBzdGF0aWMgdm9pZCBmZXRjaChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hQcm9taXNlJiYpOwogCiAgICAgdm9pZCBjb25z
dW1lKHVuc2lnbmVkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmgKaW5kZXggNWJi
YjI4Yjg4NTNiZjIxMWE3ZDgyOGU2ZDgwYTkxOWQwZWFlZWZiNS4uNDc3MDY5ZjM0NGI5OWQ0ZDJk
Y2Q5MmQ5MzJlYWM1YTUxODM0Zjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAog
I2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCmlu
ZGV4IDI4NTVlYTUyZDRlZDMyM2NjMjU4MDkxNGM3ZWUwY2FmYTc3MmVlZDguLjkzZjkzODBmZTY2
Nzc5ZDMxMmM4M2M2MTEwNTViNWE5ZDdjMDhiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaApAQCAtMzUsNyArMzUsNyBAQAogCiAj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAj
aW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC01Niw4ICs1Niw4IEBAIGNs
YXNzIE1lZGlhRGV2aWNlcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2aWNlcz4sIHB1Ymxp
YyBDb250ZXh0RGVzdHJ1Y3Rpb25PCiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsK
IAotICAgIHVzaW5nIFByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFjZTxNZWRpYVN0cmVh
bT4+OwotICAgIHVzaW5nIEVudW1lcmF0ZURldmljZXNQcm9taXNlID0gRE9NUHJvbWlzZTxJRExT
ZXF1ZW5jZTxJRExJbnRlcmZhY2U8TWVkaWFEZXZpY2VJbmZvPj4+OworICAgIHVzaW5nIFByb21p
c2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj47CisgICAg
dXNpbmcgRW51bWVyYXRlRGV2aWNlc1Byb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2Vx
dWVuY2U8SURMSW50ZXJmYWNlPE1lZGlhRGV2aWNlSW5mbz4+PjsKIAogICAgIHN0cnVjdCBTdHJl
YW1Db25zdHJhaW50cyB7CiAgICAgICAgIFZhcmlhbnQ8Ym9vbCwgTWVkaWFUcmFja0NvbnN0cmFp
bnRzPiB2aWRlbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAppbmRleCA2ZGZl
YzkzMjJmOWI5YzQ0MDhjODc2MTVkMjA4NzkxMzRhYmQyMjE5Li4xZGQwMzliY2E4NzQ0NzQ4MDk5
M2UwOTEzYmM1M2M3ZDhkMDdmNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24u
Y3BwCkBAIC02OTYsNyArNjk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFu
ZGxlcj4gTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2gKICAgICByZXR1
cm4gbV9tZWRpYUVuZHBvaW50LT5jcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIobGFiZWwsIG9wdGlv
bnMpOwogfQogCi12b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNr
KFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ss
IERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb246OnJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmPE1lZGlhU3RyZWFt
VHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQog
ewogICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9IG1hdGNoVHJhbnNjZWl2ZXIo
bV9wZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKSwgWyZzZW5kZXJdIChSVENSdHBUcmFu
c2NlaXZlciYgY3VycmVudCkgewogICAgICAgICByZXR1cm4gJmN1cnJlbnQuc2VuZGVyKCkgPT0g
JnNlbmRlcjsKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVj
dGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdAogICAg
IH0pOwogfQogCi12b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNr
VGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwgY29uc3QgU3RyaW5nJiBtaWQsIFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYgcHJvbWlzZSkKK3ZvaWQg
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2tUYXNrKFJUQ1J0cFNlbmRl
ciYgc2VuZGVyLCBjb25zdCBTdHJpbmcmIG1pZCwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0
aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mIHByb21pc2UpCiB7CiAgICAgaWYgKG1f
cGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dFBlZXJDb25uZWN0aW9uLmgKaW5kZXggY2U3ZWMzZWQ3OTQzODcyMzUwYjhmMDdlYWZhNjMyOWI1
YjBmN2E2OS4uMWUzMWNkNDUwZmQyNzYxYjIwMjMxZTI0OTliNTE1MjdlMWVhYTNkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIE1lZGlh
RW5kcG9pbnRQZWVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQsIHB1YmxpYyBNCiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IGdldFJlbW90ZVN0
cmVhbXMoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVj
ZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tp
bmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkgZmluYWw7Ci0gICAgdm9pZCByZXBsYWNlVHJhY2so
UlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4m
JikgZmluYWw7CisgICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlh
U3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKIAogICAg
IHZvaWQgZW11bGF0ZVBsYXRmb3JtRXZlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24pIGZpbmFsOwog
CkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbiBmaW5h
bCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBNCiAKICAgICB2b2lkIGFk
ZEljZUNhbmRpZGF0ZVRhc2soUlRDSWNlQ2FuZGlkYXRlJik7CiAKLSAgICB2b2lkIHJlcGxhY2VU
cmFja1Rhc2soUlRDUnRwU2VuZGVyJiwgY29uc3QgU3RyaW5nJiBtaWQsIFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+Jik7CisgICAgdm9pZCByZXBsYWNlVHJhY2tUYXNr
KFJUQ1J0cFNlbmRlciYsIGNvbnN0IFN0cmluZyYgbWlkLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4m
JiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Jik7CiAKICAgICBib29sIGxvY2FsRGVzY3JpcHRp
b25UeXBlVmFsaWRGb3JTdGF0ZShSVENTZHBUeXBlKSBjb25zdDsKICAgICBib29sIHJlbW90ZURl
c2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUoUlRDU2RwVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cAppbmRleCA2YTZiYTUxNWFlN2VjNDg0MzNiNDE0M2Q3ZWJmYTk5MjNhMjJlYzRkLi5kZmY0ZWZm
ZmQxYTdmODg3MDZlZTM5MzgyMDY5ZDM3YTA5MTYwNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTI1
Myw3ICsyNTMsNyBAQCBzdGF0aWMgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGVNZWRp
YUNvbnN0cmFpbnRzSW1wbChjb25zdCBzdGQ6Om9wdGlvbmFsPAogICAgIHJldHVybiBjcmVhdGVN
ZWRpYUNvbnN0cmFpbnRzSW1wbChjb25zdHJhaW50cy52YWx1ZSgpKTsKIH0KIAotdm9pZCBNZWRp
YVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFU
cmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgbV9wcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaAppbmRleCAzYjdlYmY5NTM3NTNhMzU0ZmFmNGU5NzY1ZDI3YWFjODdjMTIx
Zjg5Li43NTU1NDZlNGM0MTFmM2MzMmIxNGMzZTA5YmU0NzU2OTM2YjYzYTczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1
ZGUgIkRvdWJsZVJhbmdlLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJK
U0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIkxvbmdSYW5nZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCiAj
aW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xh
c3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+
LCBwdWJsaWMgQWN0aXZlRE9NT2IKICAgICBUcmFja0NhcGFiaWxpdGllcyBnZXRDYXBhYmlsaXRp
ZXMoKSBjb25zdDsKIAogICAgIGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50cyYgZ2V0Q29uc3Ry
YWludHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9Ci0gICAgdm9pZCBhcHBseUNv
bnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYsIERP
TVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmKTsKIAogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSgpIHsgcmV0dXJuIG1fcHJp
dmF0ZS0+c291cmNlKCk7IH0KICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgcHJpdmF0ZVRy
YWNrKCkgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CkBAIC0xNTIsNyArMTUyLDcgQEAgY2xh
c3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+
LCBwdWJsaWMgQWN0aXZlRE9NT2IKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1f
cHJpdmF0ZTsKIAogICAgIE1lZGlhVHJhY2tDb25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOwotICAg
IHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZTx2b2lkPj4gbV9wcm9taXNlOworICAgIHN0ZDo6b3B0
aW9uYWw8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3Byb21pc2U7CiAgICAgV2Vha1B0ckZh
Y3Rvcnk8TWVkaWFTdHJlYW1UcmFjaz4gbV93ZWFrUHRyRmFjdG9yeTsKIAogICAgIGJvb2wgbV9l
bmRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjI4NTRlYTMwMWMx
ODI2ZmQ3ODQ5NDUyNzI1ODY4NWUwYjFkMzQwOS4uMjIwMDYxNjIyMjU5N2NmODQwZjRkOGNmYTI3
MGZmNTcyNzdiODhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMTMzLDcgKzEzMyw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0xvY2FsRGVzY3JpcHRpb25UeXBlVmFsaWRGb3JTdGF0
ZShSVENTZHBUeXBlIHR5cGUsIFJUQ1NpZ25hCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVz
Y3JpcHRpb24mIHNlc3Npb25EZXNjcmlwdGlvbiwgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2Up
Cit2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNz
aW9uRGVzY3JpcHRpb24mIHNlc3Npb25EZXNjcmlwdGlvbiwgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQo
KSk7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW1vdGVEZXNj
cmlwdGlvblR5cGVWYWxpZEZvclN0YXRlKFJUQ1NkcFR5cGUgdHlwZSwgUlRDU2lnbgogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURl
c2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgc2Vzc2lvbkRlc2NyaXB0aW9uLCBET01Q
cm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRS
ZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIHNlc3Npb25EZXNjcmlwdGlv
biwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1f
cGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSk7CiAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9u
JiYgZXhjZXB0aW9uKQogICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlID0gc3RkOjpudWxsb3B0
OwogfQogCi12b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2FuZGlkYXRlKFJUQ0lj
ZUNhbmRpZGF0ZSogaWNlQ2FuZGlkYXRlLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3Zv
aWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRl
KiBpY2VDYW5kaWRhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAg
ICAgQVNTRVJUKCFtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaAppbmRleCA1NTViZmI4NjViMzNhM2I3Y2U2YjNlN2Y4Y2FkNTg3YTc2MDZlYmUwLi4xYjg1
ZjA4ZDVlZDcyZjY1NGQ5ODI3MTgyMzdhMzc1MmNlMWNkMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfUlRDKQogCi0jaW5jbHVkZSAi
SlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNs
dWRlICJSVENSdHBQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUlRDU2lnbmFsaW5nU3RhdGUuaCIK
IApAQCAtNTYsOCArNTYsOCBAQCBzdHJ1Y3QgUlRDRGF0YUNoYW5uZWxJbml0Owogc3RydWN0IFJU
Q09mZmVyT3B0aW9uczsKIAogbmFtZXNwYWNlIFBlZXJDb25uZWN0aW9uIHsKLXVzaW5nIFNlc3Np
b25EZXNjcmlwdGlvblByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFjZTxSVENTZXNzaW9u
RGVzY3JpcHRpb24+PjsKLXVzaW5nIFN0YXRzUHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJm
YWNlPFJUQ1N0YXRzUmVwb3J0Pj47Cit1c2luZyBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlID0g
RE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxSVENTZXNzaW9uRGVzY3JpcHRpb24+PjsK
K3VzaW5nIFN0YXRzUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8UlRD
U3RhdHNSZXBvcnQ+PjsKIH0KIAogdXNpbmcgQ3JlYXRlUGVlckNvbm5lY3Rpb25CYWNrZW5kID0g
c3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4gKCopKFJUQ1BlZXJDb25uZWN0
aW9uJik7CkBAIC03MSw5ICs3MSw5IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CiAK
ICAgICB2b2lkIGNyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmLCBQZWVyQ29ubmVjdGlvbjo6
U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmKTsKICAgICB2b2lkIGNyZWF0ZUFuc3dlcihSVENB
bnN3ZXJPcHRpb25zJiYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNl
JiYpOwotICAgIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
LCBET01Qcm9taXNlPHZvaWQ+JiYpOwotICAgIHZvaWQgc2V0UmVtb3RlRGVzY3JpcHRpb24oUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKLSAgICB2b2lkIGFkZElj
ZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUqLCBET01Qcm9taXNlPHZvaWQ+JiYpOworICAgIHZv
aWQgc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBzZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNz
aW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBh
ZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYpOwogCiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVy
PiBjcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNo
YW5uZWxJbml0JikgPSAwOwogCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9u
QmFja2VuZCB7CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVt
b3RlU3RyZWFtcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUmVmPFJUQ1J0cFJlY2VpdmVy
PiBjcmVhdGVSZWNlaXZlcihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlkLCBjb25zdCBTdHJp
bmcmIHRyYWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lkKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwg
RE9NUHJvbWlzZTx2b2lkPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhS
VENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QWRkZWRUcmFjayhSVENSdHBT
ZW5kZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UmVtb3ZlZFRyYWNrKFJUQ1J0cFNl
bmRlciYpIHsgfQogCkBAIC0xMzcsNyArMTM3LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNr
ZW5kIHsKICAgICB2aXJ0dWFsIHZvaWQgZG9TZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZG9TZXRSZW1vdGVEZXNjcmlwdGlv
bihSVENTZXNzaW9uRGVzY3JpcHRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRvQWRkSWNl
Q2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZJ
Y2VDYW5kaWRhdGVzKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKSB7IHByb21pc2UucmVzb2x2
ZSgpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZE9mSWNlQ2FuZGlkYXRlcyhET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKSB7IHByb21pc2UucmVzb2x2ZSgpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGRvU3RvcCgpID0gMDsKIAogcHJvdGVjdGVkOgpAQCAtMTQ1LDggKzE0NSw4IEBAIGNs
YXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25h
bDxQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZT4gbV9vZmZlckFuc3dl
clByb21pc2U7Ci0gICAgc3RkOjpvcHRpb25hbDxET01Qcm9taXNlPHZvaWQ+PiBtX3NldERlc2Ny
aXB0aW9uUHJvbWlzZTsKLSAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2U8dm9pZD4+IG1fYWRk
SWNlQ2FuZGlkYXRlUHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPj4gbV9zZXREZXNjcmlwdGlvblByb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4+IG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZTsKIAogICAgIGJv
b2wgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzIHsgdHJ1ZSB9OwogICAgIHN0cnVjdCBQZW5k
aW5nSUNFQ2FuZGlkYXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTAzNjQ2YzQ2MjMxMDliNjMz
MzhjODk5YTEwMjQyOTA3MDdmMDBjMS4uOTEzMTYwMzcwMThhYzYzZTc5ZTE0YjViYjczNTJhNDNj
MTdjZjFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFJUQ1Bl
ZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmIG9wdGlv
bnMsIFNlc3Npb25EZQogICAgIG1fYmFja2VuZC0+Y3JlYXRlQW5zd2VyKFdURk1vdmUob3B0aW9u
cyksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1
ZWRTZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVl
dWVkU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIExPRyhXZWJSVEMs
ICJTZXR0aW5nIGxvY2FsIGRlc2NyaXB0aW9uOlxuJXNcbiIsIGRlc2NyaXB0aW9uLnNkcCgpLnV0
ZjgoKS5kYXRhKCkpOwogICAgIGlmIChpc0Nsb3NlZCgpKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAg
UmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OnBlbmRpbmdM
b2NhbERlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9iYWNrZW5kLT5wZW5kaW5nTG9j
YWxEZXNjcmlwdGlvbigpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRS
ZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBET01Q
cm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZFNl
dFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgTE9HKFdlYlJUQywgIlNl
dHRpbmcgcmVtb3RlIGRlc2NyaXB0aW9uOlxuJXNcbiIsIGRlc2NyaXB0aW9uLnNkcCgpLnV0Zjgo
KS5kYXRhKCkpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OnBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnMK
ICAgICByZXR1cm4gbV9iYWNrZW5kLT5wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKTsKIH0KIAot
dm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRp
ZGF0ZSogcnRjQ2FuZGlkYXRlLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUlRD
UGVlckNvbm5lY3Rpb246OnF1ZXVlZEFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUqIHJ0
Y0NhbmRpZGF0ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBM
T0coV2ViUlRDLCAiUmVjZWl2ZWQgaWNlIGNhbmRpZGF0ZTpcbiVzXG4iLCBydGNDYW5kaWRhdGUg
PyBydGNDYW5kaWRhdGUtPmNhbmRpZGF0ZSgpLnV0ZjgoKS5kYXRhKCkgOiAibnVsbCIpOwogCkBA
IC01MTIsNyArNTEyLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6ZmlyZUV2ZW50KEV2ZW50
JiBldmVudCkKICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotdm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21p
c2UpCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhSVENS
dHBTZW5kZXImIHNlbmRlciwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZFNlbmRlciA9IG1ha2VSZWYoc2VuZGVyKSwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHdpdGhUcmFjayA9IFdURk1vdmUod2l0aFRyYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRTZW5k
ZXItPnNldFRyYWNrKFdURk1vdmUod2l0aFRyYWNrKSk7CkBAIC01MjAsNyArNTIwLDcgQEAgdm9p
ZCBSVENQZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVy
JiBzZW5kZXIsIFJlZjxNZWRpYVMKICAgICB9KTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlv
bjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBSVENQ
ZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pc2UpCiB7CiAgICAgaWYgKCF3aXRoVHJhY2spIHsKICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbcHJvdGVjdGVkU2VuZGVyID0gbWFrZVJlZihzZW5kZXIp
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11
dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDA0NzQyNmMxNDUzMWU1NDE1ODMyNTI2NjQ5OTNhMmM0
Y2JhMDdmYTAuLmY1ZTVmYzM0OWFiZDcyN2IwZWMwODhiOTEwMGQ3Y2Y2YjBhYjU3ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmgKQEAgLTc2LDE3ICs3NiwxNyBAQCBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbiBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVibGljIFJUQwogICAg
IHZvaWQgcXVldWVkQ3JlYXRlT2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYsIFBlZXJDb25uZWN0aW9u
OjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYpOwogICAgIHZvaWQgcXVldWVkQ3JlYXRlQW5z
d2VyKFJUQ0Fuc3dlck9wdGlvbnMmJiwgUGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlv
blByb21pc2UmJik7CiAKLSAgICB2b2lkIHF1ZXVlZFNldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2b2lkIHF1ZXVlZFNl
dExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGxvY2FsRGVz
Y3JpcHRpb24oKSBjb25zdDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJy
ZW50TG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3Jp
cHRpb24+IHBlbmRpbmdMb2NhbERlc2NyaXB0aW9uKCkgY29uc3Q7CiAKLSAgICB2b2lkIHF1ZXVl
ZFNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYsIERPTVByb21pc2U8
dm9pZD4mJik7CisgICAgdm9pZCBxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9u
RGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbj4gcmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25z
dDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3Jp
cHRpb24oKSBjb25zdDsKIAotICAgIHZvaWQgcXVldWVkQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNh
bmRpZGF0ZSosIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBxdWV1ZWRBZGRJY2VDYW5k
aWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCiAg
ICAgUlRDU2lnbmFsaW5nU3RhdGUgc2lnbmFsaW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Np
Z25hbGluZ1N0YXRlOyB9CiAgICAgUlRDSWNlR2F0aGVyaW5nU3RhdGUgaWNlR2F0aGVyaW5nU3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX2ljZUdhdGhlcmluZ1N0YXRlOyB9CkBAIC0xNDMsNyArMTQz
LDcgQEAgY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxS
VENQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBSVEMKICAgICB2b2lkIGRpc2FibGVJQ0VDYW5kaWRh
dGVGaWx0ZXJpbmcoKSB7IG1fYmFja2VuZC0+ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygp
OyB9CiAgICAgdm9pZCBlbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKSB7IG1fYmFja2VuZC0+
ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7IH0KIAotICAgIHZvaWQgZW5xdWV1ZVJlcGxh
Y2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVBy
b21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBlbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhSVENSdHBT
ZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYpOwogCiAgICAgdm9pZCBjbGVhckNvbnRyb2xsZXIoKSB7IG1fY29udHJvbGxlciA9IG51bGxw
dHI7IH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgUlRDCiAKICAg
ICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQgdG8gYmUgdGhl
IEJhY2tlbmQKICAgICAvLyBSVENSdHBTZW5kZXI6OkJhY2tlbmQKLSAgICB2b2lkIHJlcGxhY2VU
cmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlz
ZTx2b2lkPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpIGZp
bmFsOwogICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgdXBkYXRlQ29ubmVjdGlvblN0YXRlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKaW5k
ZXggMDJmMjliMjAxYzFhYTRhZmRjZGM4MmI2MjdhNDQ5MWEyMTEwMTk5OS4uMGQ0NjY0MTEyZDU5
YjcwYTQzOGNlYTVmNjI2ZWFiNjk1MTJhYjQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2
b2lkIFJUQ1J0cFNlbmRlcjo6c2V0VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2sp
CiAgICAgbV90cmFjayA9IFdURk1vdmUodHJhY2spOwogfQogCi12b2lkIFJUQ1J0cFNlbmRlcjo6
cmVwbGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJv
bWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIFJUQ1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNTdG9wcGVkKCkpIHsKICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKaW5kZXggM2M1MDdhNjMyNjUzY2YwNDhkNzBh
M2MxYzc4M2RlNWZmODcyMjY0OS4uMzBhNTE1Yjg5ZjZiZDFjZGRhNDZiY2M5NDE4YjQwOWI5ZGNm
MjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlci5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFJUQ1J0cFNlbmRlciA6IHB1YmxpYyBS
VENSdHBTZW5kZXJSZWNlaXZlckJhc2UgewogcHVibGljOgogICAgIGNsYXNzIEJhY2tlbmQgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5k
ZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRl
ciYpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB+QmFja2VuZCgpIHsgfQogICAgIH07CkBA
IC02MCw3ICs2MCw3IEBAIGNsYXNzIFJUQ1J0cFNlbmRlciA6IHB1YmxpYyBSVENSdHBTZW5kZXJS
ZWNlaXZlckJhc2UgewogICAgIHZvaWQgc2V0VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYp
OwogICAgIHZvaWQgc2V0VHJhY2tUb051bGwoKTsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpOworICAgIHZvaWQg
cmVwbGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJik7CiAKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKaW5kZXggNGQyYmZiYzY1MjUxMGZiZGRjZTcyNzRiZGNlOGQ2NTg5MGY5OWQ1
Yi4uOTYxMjVmZDQ0M2YwODMzZjUzZTczMGI4ZmEzZGJlOGM5YjVhYmViZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCkBAIC00OSw3ICs0OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXhjZXB0aW9u
T3I8dm9pZD4gVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8
TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3Ry
YWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVByb21pc2U8SURMSW50ZXJmYWNlPE1l
ZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorRXhjZXB0aW9uT3I8dm9pZD4gVXNlck1lZGlhUmVxdWVz
dDo6c3RhcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYg
YXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3Ry
YWludHMsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmIHBy
b21pc2UpCiB7CiAgICAgYXV0byogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJv
bShkb2N1bWVudC5wYWdlKCkpOwogICAgIGlmICghdXNlck1lZGlhKQpAQCAtNjQsNyArNjQsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFpbgogICAgIHJldHVybiB7IH07CiB9CiAKLVVzZXJNZWRp
YVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoRG9jdW1lbnQmIGRvY3VtZW50LCBVc2VyTWVkaWFD
b250cm9sbGVyJiBjb250cm9sbGVyLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9D
b25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMs
IERPTVByb21pc2U8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorVXNlck1l
ZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQsIFVzZXJNZWRp
YUNvbnRyb2xsZXImIGNvbnRyb2xsZXIsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRp
b0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50
cywgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYgcHJvbWlz
ZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZkb2N1bWVudCkKICAgICAsIG1f
YXVkaW9Db25zdHJhaW50cyhXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpKQogICAgICwgbV92aWRl
b0NvbnN0cmFpbnRzKFdURk1vdmUodmlkZW9Db25zdHJhaW50cykpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IDMx
NmZlZTE1NDhkOTU0NGUyMTk1MjY3ZDg2ODhiMWVlMjJmN2RhYjEuLmEzZTk2OTAyOTI2NTc5YWZh
ZDI4MTQyNzhiZWM2ZTcyZjkwNmM4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCkBAIC0zNSw3ICszNSw3IEBACiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgot
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBVc2Vy
TWVkaWFDb250cm9sbGVyOwogCiBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIFJlZkNv
dW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydChEb2N1bWVu
dCYsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVk
aWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJvbWlzZTxJRExJbnRl
cmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc3Rh
cnQoRG9jdW1lbnQmLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50
cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVByb21p
c2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKIAogICAgIHZpcnR1YWwg
flVzZXJNZWRpYVJlcXVlc3QoKTsKIApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBVc2VyTWVkaWFS
ZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4sIHByaXZhdGUgQ29u
dGV4dERlcwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIFVzZXJNZWRpYVJlcXVlc3QoRG9jdW1lbnQmLCBVc2VyTWVkaWFDb250
cm9sbGVyJiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJl
ZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBET01Qcm9taXNlPElE
TEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOworICAgIFVzZXJNZWRpYVJlcXVlc3QoRG9jdW1l
bnQmLCBVc2VyTWVkaWFDb250cm9sbGVyJiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1
ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFp
bnRzLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJik7CiAK
ICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKICAgICAKQEAgLTg2LDcgKzg2LDcg
QEAgY2xhc3MgVXNlck1lZGlhUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYVJl
cXVlc3Q+LCBwcml2YXRlIENvbnRleHREZXMKICAgICBTdHJpbmcgbV9hbGxvd2VkQXVkaW9EZXZp
Y2VVSUQ7CiAKICAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Ci0gICAgRE9N
UHJvbWlzZTxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiBtX3Byb21pc2U7CisgICAgRE9NUHJv
bWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+IG1fcHJvbWlzZTsKICAgICBS
ZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gbV9wcm90ZWN0b3I7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAzMTAy
MDRiMmIzYTU1ZDBkN2ZkNWQ3YjVhYTM1MzEzOGMxYjM4ZTFiLi4xODE3ZTY1ZjdlMzI0ODI0YjQx
MjM2MzNjY2VhYjViYmEzNTJmNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkUmVtb3RlU3RyZWFtKFJlZjxNZWRpYVN0
cmVhbT4mJiBtZWRpYVN0cgogICAgIG1fcmVtb3RlU3RyZWFtcy5hcHBlbmQoV1RGTW92ZShtZWRp
YVN0cmVhbSkpOwogfQogCi12b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVw
bGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0
cmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVk
aWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKIHsKICAgICBBU1NFUlQoc2VuZGVyLnRyYWNrKCkpOwogICAgIGF1dG8qIGN1cnJlbnRUcmFj
ayA9IHNlbmRlci50cmFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA5MmU2OGE2MzgyNDZiYmZmODNiOWUyNGEzYjc1NzVh
ZTQ2NmRlM2ZiLi41NDM2ZjhmODliNTg2NTZkMDlmMDAyMmZlOWI0ZDRhMGVhNWZmYjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApA
QCAtNjksNyArNjksNyBAQCBjbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQgZmlu
YWwgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKICAgICBSZWZQdHI8UlRDU2Vzc2lv
bkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKICAg
ICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24o
KSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpIGZpbmFsOworICAgIHZv
aWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7CiAgICAgUlRDUnRwUGFyYW1ldGVycyBn
ZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBlbXVs
YXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKaW5kZXgg
OWMxNmNhOGEwN2Q2ZTE3ZjZmYTM3OTU1Yjk2N2Y3ZWIxZmZhYWYwMS4uNDEwM2FjODI5NTA3NmU5
NDhlYzNjNzNhYWJkMmY1YWEyZDg4ZjJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKQEAgLTMwLDcgKzMwLDcgQEAK
IAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCkBAIC00
MCw4ICs0MCw4IEBAIGNsYXNzIFJlYWRhYmxlU3RyZWFtU291cmNlIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVhZGFibGVTdHJlYW1Tb3VyY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZWFkYWJs
ZVN0cmVhbVNvdXJjZSgpIHsgfQogCi0gICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyJiYsIERPTVByb21pc2U8dm9pZD4mJik7Ci0gICAgdm9pZCBwdWxsKERPTVBy
b21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250
cm9sbGVyJiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIHB1bGwoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgY2FuY2VsKEpTQzo6SlNWYWx1ZSk7
CiAKICAgICBib29sIGlzUHVsbGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9wcm9taXNlOyB9CkBA
IC02MywxMSArNjMsMTEgQEAgY2xhc3MgUmVhZGFibGVTdHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gewogICAgIHZpcnR1YWwgdm9pZCBkb0NhbmNl
bCgpID0gMDsKIAogcHJpdmF0ZToKLSAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2U8dm9pZD4+
IG1fcHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4g
bV9wcm9taXNlOwogICAgIHN0ZDo6b3B0aW9uYWw8UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlcj4gbV9jb250cm9sbGVyOwogfTsKIAotaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3Vy
Y2U6OnN0YXJ0KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiBjb250cm9sbGVyLCBE
T01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK2lubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtU291
cmNlOjpzdGFydChSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJiYgY29udHJvbGxlciwg
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcHJv
bWlzZSk7CiAgICAgbV9wcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKQEAgLTc3LDcgKzc3LDcg
QEAgaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KFJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXImJiBjb250cm8KICAgICBkb1N0YXJ0KCk7CiB9CiAKLWlubGluZSB2
b2lkIFJlYWRhYmxlU3RyZWFtU291cmNlOjpwdWxsKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQoraW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcHJvbWlzZSk7CiAgICAgQVNT
RVJUKG1fY29udHJvbGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMTFkZTA0YTk5NzlmYWY4ZDFmYTcyNjU4OWYxNDQzMDc2
YWUzODc2ZC4uMjM1Mjk5Y2JlNTNkZTcwNDI2NjdiZTljYmU4ZWJiZTEzNGZkYzQ1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAt
NTMsNyArNTMsNyBAQAogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAi
SFJURkRhdGFiYXNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFJURlBhbm5lci5oIgotI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgiCkBAIC0yODMsNyArMjgzLDcgQEAgYm9v
bCBBdWRpb0NvbnRleHQ6OmlzSW5pdGlhbGl6ZWQoKSBjb25zdAogICAgIHJldHVybiBtX2lzSW5p
dGlhbGl6ZWQ7CiB9CiAKLXZvaWQgQXVkaW9Db250ZXh0OjphZGRSZWFjdGlvbihTdGF0ZSBzdGF0
ZSwgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIEF1ZGlvQ29udGV4dDo6YWRkUmVh
Y3Rpb24oU3RhdGUgc3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7
CiAgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKICAg
ICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKQEAgLTMwNCw3ICsz
MDQsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3RhdGUgc3RhdGUpCiAgICAgaWYg
KHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5zaXplKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFZlY3RvcjxET01Qcm9taXNlPHZvaWQ+PiByZWFjdGlvbnM7CisgICAgVmVjdG9yPERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcmVhY3Rpb25zOwogICAgIG1fc3RhdGVSZWFjdGlvbnNb
c3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOwogCiAgICAgZm9yIChhdXRvJiBwcm9taXNlIDog
cmVhY3Rpb25zKQpAQCAtMTA0MCw3ICsxMDQwLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmRlY3Jl
bWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKICAgICAtLW1fYWN0aXZlU291cmNlQ291bnQ7CiB9CiAK
LXZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQor
dm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmQoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSkKIHsKICAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpKSB7CiAgICAgICAgIHByb21pc2Uu
cmVqZWN0KElOVkFMSURfU1RBVEVfRVJSKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIHZvaWQgQXVk
aW9Db250ZXh0OjpzdXNwZW5kKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQogICAgIH0pOwog
fQogCi12b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBBdWRpb0NvbnRleHQ6OnJlc3VtZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlKQogewogICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkpIHsKICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwpAQCAtMTA5OCw3ICsxMDk4LDcgQEAgdm9pZCBB
dWRpb0NvbnRleHQ6OnJlc3VtZShET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKICAgICB9KTsK
IH0KIAotdm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCiB7CiAgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSkgewogICAgICAgICBwcm9taXNl
LnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBlNDExNjhlNzgwY2FkNzYyMzk4NDUwY2E5YzE1
MzBkYjZjYmY4ZTYzLi40OWJiMTM3Y2M4YWIyMWRkNGY5OGJlMTVjY2FkZmY4MTgwODMyNTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgogI2luY2x1
ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCkBAIC0xMTEsOSArMTExLDkgQEAg
Y2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ28KICAgICB1c2luZyBBY3RpdmVET01PYmplY3Q6OnN1c3Bl
bmQ7CiAgICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpyZXN1bWU7CiAKLSAgICB2b2lkIHN1c3Bl
bmQoRE9NUHJvbWlzZTx2b2lkPiYmKTsKLSAgICB2b2lkIHJlc3VtZShET01Qcm9taXNlPHZvaWQ+
JiYpOwotICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2b2lkIHN1c3Bl
bmQoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgcmVzdW1lKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIGNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmKTsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIElu
dGVycnVwdGVkLCBDbG9zZWQgfTsKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OwpAQCAtMzI5LDcg
KzMyOSw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvCiAgICAgdm9pZCBoYW5kbGVEaXJ0eUF1
ZGlvU3VtbWluZ0p1bmN0aW9ucygpOwogICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRw
dXRzKCk7CiAKLSAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBET01Qcm9taXNlPHZvaWQ+JiYp
OworICAgIHZvaWQgYWRkUmVhY3Rpb24oU3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKICAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOwogCiAgICAgLy8gT25seSBh
Y2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgpAQCAtMzY2LDcgKzM2Niw3IEBAIGNsYXNzIEF1
ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxBdWRpb0NvCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVuZGVyaW5nQXV0b21h
dGljUHVsbE5vZGVzOwogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4K
ICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsKLSAgICBW
ZWN0b3I8VmVjdG9yPERPTVByb21pc2U8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOworICAgIFZl
Y3RvcjxWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Pj4gbV9zdGF0ZVJlYWN0aW9uczsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Np
b247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMmE3ZDc5MDQ2M2YxMjYyNzlkZjMyZDg2OWQ5NGNiMmE5NzEzOGE1YS4uYzYyODJmNTFi
MmFjMTM1MmI2MzUxYzg1MzQ5MjkyYzU3ZmE2MTg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjUyNyw4ICs2NTI3LDggQEAK
IAkJRTE3MkFGNkQxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcyQUY2QjE4MEYyNEM2
MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmNwcCAqLzsgfTsKIAkJRTE3MkFGNkUxODBGMjRD
NjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGNkMxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0Fs
Z29yaXRobS5oICovOyB9OwogCQlFMTcyQUY3MDE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5
VXNhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
NzJBRjZGMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oICovOyB9OwotCQlFMTcy
QUY4RjE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAv
KiBKU0RPTVByb21pc2UuY3BwICovOyB9OwotCQlFMTcyQUY5MDE4MTFCQzM3MDBGQkFEQjkgLyog
SlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTE3MkFGOEYxODExQkMz
NzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAvKiBK
U0RPTVByb21pc2VEZWZlcnJlZC5jcHAgKi87IH07CisJCUUxNzJBRjkwMTgxMUJDMzcwMEZCQURC
OSAvKiBKU0RPTVByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlz
ZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTE3NUJBOTkxRThBRTMzODAwNzE0NTRGIC8qIEdyaWRQb3NpdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MTc0NTFFODk3QTUy
MDBGMjJDRDAgLyogR3JpZFBvc2l0aW9uLmNwcCAqLzsgfTsKIAkJRTE3OUYwREExQjk3NzRGRTAw
RUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxNzlGMEQ5MUI5Nzc0RkUwMEVEMEEyNyAvKiBJbnRlcm5hbHMubW0gKi87
IH07CiAJCUUxN0I0OTE1MTZBOUIwOTQwMDFDODgzOSAvKiBUcmFuc2l0aW9uRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3QjQ5MTMxNkE5
QjA5MzAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5jcHAgKi87IH07CkBAIC02NjU3LDYgKzY2
NTcsNyBAQAogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RUU0OUYxREMy
RDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU4MDJCNjFEQzg0MzVEMDBBOTc3M0MgLyogRE9N
SklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3
RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8q
IE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFMzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYz
RTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlw
dE1vZHVsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNw
cCAqLzsgfTsKIAkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4
OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovOyB9OwogCQlFMzk4
RkMyNDFEQzMyQTIwMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4RkMyMzFEQzMyQTFCMDAzQzQ2ODQg
LyogRE9NSklUSGVscGVycy5jcHAgKi87IH07CkBAIC0xNTA1Myw4ICsxNTA1NCw4IEBACiAJCUUx
NzJBRjZCMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MkFGNkMxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0Fs
Z29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0
aG0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MkFGNkYxODBGMjg5NTAwRkJB
REI5IC8qIENyeXB0b0tleVVzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENyeXB0b0tleVVzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxNzJBRjhE
MTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNET01Qcm9taXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVByb21pc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTE3MkFGOEQxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlz
ZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9N
UHJvbWlzZURlZmVycmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE3MkFG
OEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NUHJvbWlzZURlZmVycmVkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxNzY1ODBDMTgwREYzQTAwMDVBOTZEMSAvKiBPRVNFbGVtZW50
SW5kZXhVaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBPRVNFbGVtZW50SW5kZXhVaW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTE3OUYwRDkxQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludGVybmFscy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3QjQ5MEIxNkE5NzI2OTAwMUM4ODM5IC8q
IFRyYW5zaXRpb25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVHJhbnNpdGlvbkV2
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTk3LDYgKzE1MTk4LDcg
QEAKIAkJRTMzNDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRFRTQ5RjFE
QzJENTc1MDBFQUE5RDMgLyogSlNFdmVudEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0V2ZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNTgwMkI1MURDODQzNTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVElETFR5cGVGaWx0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3Qzg2NEYxRUI2M0UyRDAwODdDNkNBIC8qIEpTRE9N
UHJvbWlzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVByb21pc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUz
IC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk4RkMyMzFEQzMyQTFCMDAzQzQ2ODQgLyogRE9N
SklUSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01K
SVRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNDAwLDggKzIz
NDAyLDkgQEAKIAkJCQk0MTM4Rjg1NjFEMjUzRUVFMDAxQ0I2MUUgLyogSlNET01JdGVyYXRvci5o
ICovLAogCQkJCTQxREVGQ0IzMUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1hcExpa2UuY3BwICov
LAogCQkJCTQxREVGQ0I0MUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1hcExpa2UuaCAqLywKLQkJ
CQlFMTcyQUY4RDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNwcCAqLywKLQkJCQlF
MTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggKi8sCisJCQkJRTM3Qzg2
NEYxRUI2M0UyRDAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oICovLAorCQkJCUUxNzJBRjhEMTgx
MUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2VEZWZlcnJlZC5jcHAgKi8sCisJCQkJRTE3MkFG
OEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmggKi8sCiAJCQkJQkM2
OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi8sCiAJCQkJQkM2
OTMyNzIwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oICovLAogCQkJCTQ2MENC
RjMzMUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwICovLApAQCAt
MjcxOTgsNiArMjcyMDEsNyBAQAogCQkJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5l
cmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjNGMERCMERBRkY0QTQwMDlG
REM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMDMwRjYxQjdE
MzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM3Qzg2NTAxRUI2M0UzRjAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDcyMEIwQTExNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1
ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDYyRkI5NjFBRjAxOEU3MDAxMkVEN0QgLyogR2Vu
ZXJpY1Rhc2tRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjQxNEY0RERFNjAwM0U3
QTcwIC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzQwLDcgKzI3NzQ0LDcg
QEAKIAkJCQkwRjQ5NjZBQjFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY0OTY2QUQxREI0MEM0MzAwQTI3NEJCIC8qIEpTRE9NUG9pbnRJbml0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjQ5NjZBRjFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2lu
dFJlYWRPbmx5LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTcyQUY5MDE4MTFCQzM3MDBGQkFEQjkg
LyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTcyQUY5MDE4MTFCQzM3MDBG
QkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDcx
MEJDMURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NDcxMEJFMURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3RJbml0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjQ3MTBDMDFEQjU2QkU4MDAyRENFQzMgLyogSlNET01SZWN0UmVhZE9ubHkuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzE2ODYsNyArMzE2OTAsNyBAQAogCQkJCTBGNDk2NkFBMURCNDBDNDMw
MEEyNzRCQiAvKiBKU0RPTVBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDk2NkFDMURC
NDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50SW5pdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjQ5NjZBRTFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludFJlYWRPbmx5LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUUxNzJBRjhGMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTE3MkFGOEYxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJv
bWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDcxMEJCMURCNTZCRTgwMDJE
Q0VDMyAvKiBKU0RPTVJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NzEwQkQxREI1NkJF
ODAwMkRDRUMzIC8qIEpTRE9NUmVjdEluaXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NzEw
QkYxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdFJlYWRPbmx5LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKaW5kZXggMjgxMjA1MGE2MTk0ZGNjZmFjYzY5
Yjg0MzM1NGNlM2M2YjMwM2NmNS4uYjViMTQyYzliOTFkNjMzN2VjOTA3MmU1MTNiMjEwYzVjMTY2
YzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC00OCw3ICs0OCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktleURhdGE7CiBjbGFz
cyBJREJWYWx1ZTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9taXNlOworY2xhc3Mg
RE9NUHJvbWlzZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBJRExUeXBlIHsKQEAg
LTE4NSw3ICsxODUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPiBzdHJ1Y3Qg
SURMUmVjb3JkIDogSURMVHlwZTxWZWN0b3I8V1RGOjpLZXlWYWx1ZQogICAgIHVzaW5nIFBhcmFt
ZXRlclR5cGUgPSBjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgSzo6SW1w
bGVtZW50YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5cGU+PiY7CiB9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMUHJvbWlzZSA6IElETFR5cGU8RE9NUHJv
bWlzZTxUPj4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFByb21pc2UgOiBJRExU
eXBlPERPTVByb21pc2U+IHsKICAgICB1c2luZyBJbm5lclR5cGUgPSBUOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXJDbGllbnQuaAppbmRleCA2Y2NkYmNjY2E3N2E5ZWRkNmNjZDFjZTBmYjMzYTA3YzAxNjk0
MjBjLi41NTBlYmI1NTljYWJlZDFiZDFkYjc2MmVmZGE1MmQ3ZTJlMWNjYzVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXJDbGllbnQuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggYTZkM2MxOGQxNDc0MDJkMjA4MzNhMThhZDM2
NzkxODZiM2YzZTVmNS4uMmRjODQxZDQ4ZTFjYzY5MTUyZTU1MTE5OWEyMGE3NjM4ZmViZDYyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwCkBAIC01MSw3ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5j
cHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuY3BwIgogI2luY2x1ZGUgIkpTRE9NR2xv
YmFsT2JqZWN0VGFzay5jcHAiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmNwcCIKKyNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5jcHAiCiAjaW5jbHVkZSAiSlNET01TdHJpbmdNYXBDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5jcHAiCiAjaW5jbHVkZSAiSlNET01X
aW5kb3dDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwCmluZGV4IGNmOWU5NmQyNzc2
MzE0ODc4ODBkZTVmNTY4ZjI0YTg2NDgxODZiZWUuLjkxOGI5NWQzMDFhY2RlYjg2OTg0ZjVlNjQw
NDkwZDQyZWE0NjJlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKLSNpbmNsdWRlICJKU0RPTVBy
b21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRQcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnRQcm9taXNlLmgKaW5kZXggYzIyMzcwZTI2NjRjYmU3MjYwMTIwODliYjY5NTI4OTgyYjllY2Q5
MS4uYjRkOTM0NjVlZjNjNTk3YWM0NGZmNDRkMWI5YmVjOWMyMTc1MjQyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFByb21pc2UuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3
LDMwICsyNyw0NiBAQAogCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnZlcnRCYXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gRklYTUU6IEltcGxlbWVudCBJRExQcm9taXNlPD4gY29udmVyc2lvbnMuCi0v
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotc3RydWN0IENvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiA6IERlZmF1bHRD
b252ZXJ0ZXI8SURMUHJvbWlzZTxUPj4gewotICAgIHVzaW5nIFJldHVyblR5cGUgPSBKU0M6OkpT
VmFsdWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElETFByb21pc2U8
VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7CisgICAgdXNpbmcgUmV0dXJu
VHlwZSA9IEpTQzo6SlNQcm9taXNlKjsKIAotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVy
dChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICAvLyBodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1wcm9taXNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgorICAgIHN0YXRpYyBS
ZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFs
dWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dl
cigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICBKU0M6OlZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odm0sIHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3Qo
KSk7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgLy8gMS4gTGV0IHJlc29sdmUgYmUgdGhlIG9yaWdpbmFsIHZhbHVlIG9m
ICVQcm9taXNlJS5yZXNvbHZlLgorICAgICAgICAvLyAyLiBMZXQgcHJvbWlzZSBiZSB0aGUgcmVz
dWx0IG9mIGNhbGxpbmcgcmVzb2x2ZSB3aXRoICVQcm9taXNlJSBhcyB0aGUgdGhpcyB2YWx1ZSBh
bmQgViBhcyB0aGUgc2luZ2xlIGFyZ3VtZW50IHZhbHVlLgorICAgICAgICBKU0M6OkpTUHJvbWlz
ZSogcHJvbWlzZSA9IEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKGdsb2JhbE9iamVjdCwgdmFsdWUp
OworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIGV4Y2VwdGlv
blRocm93ZXIoc3RhdGUsIHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVChwcm9taXNlKTsKKworICAgICAgICAvLyAzLiBSZXR1cm4g
dGhlIElETCBwcm9taXNlIHR5cGUgdmFsdWUgdGhhdCBpcyBhIHJlZmVyZW5jZSB0byB0aGUgc2Ft
ZSBvYmplY3QgYXMgcHJvbWlzZS4KKyAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgfQogfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBKU0NvbnZlcnRlcjxJRExQcm9taXNlPFQ+
PiB7Ci0gICAgdXNpbmcgVHlwZSA9IEpTQzo6SlNWYWx1ZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIG5lZWRzU3RhdGUgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVl
ZHNHbG9iYWxPYmplY3QgPSBmYWxzZTsKIAotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVy
dChKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpT
Qzo6SlNQcm9taXNlJiBwcm9taXNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
ICAgICAvLyBUaGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgYW4gSURMIHByb21pc2UgdHlwZSB2YWx1
ZSB0byBhbiBFQ01BU2NyaXB0IHZhbHVlIGlzIHRoZSBQcm9taXNlIHZhbHVlCisgICAgICAgIC8v
IHRoYXQgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBvYmplY3QgdGhhdCB0aGUg
SURMIHByb21pc2UgdHlwZSByZXByZXNlbnRzLgorICAgICAgICByZXR1cm4gJnByb21pc2U7CiAg
ICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01F
eGNlcHRpb25IYW5kbGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmNwcAppbmRleCA1ODU1NTNkMTZjMmNmMDY5NGU1NGY2ZmQ0YzBmNmMy
YmExYThlYTcwLi4yMWNmZDRjZDExZGFhNDI2OTNhYTk0MzY3OTU4NzI3ZmE2YmRlNjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRs
aW5nLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlYWRlcnMuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25JbnRlcmZhY2VzLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkpTRHluYW1pY0Rvd25jYXN0LmgiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXgg
NWJkMDZjN2Q5MGQ4OWFiNmZhZjI1YWFiODYxZTQyNTMwZmMyOTliOC4uN2I5MWVlYzQxNzIxNDE5
YmNlYmJjZWFkYTU1ZmYzMGM3Nzk3Mzk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUg
IkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJKU01lZGlhU3RyZWFtLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM5NzE3ODhlYTBmNDUw
YmIwZTQyODEzODExYzM3ZjcwMGVlYjRlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCi0KLSNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNET01FcnJvci5oIgotI2luY2x1ZGUgIkpT
RE9NV2luZG93LmgiCi0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9FeGNlcHRpb24uaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTT05PYmplY3QuaD4K
LSNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNDOjpKU1ZhbHVlIERlZmVycmVk
UHJvbWlzZTo6cHJvbWlzZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAg
IHJldHVybiBkZWZlcnJlZCgpLT5wcm9taXNlKCk7Ci19Ci0KLXZvaWQgRGVmZXJyZWRQcm9taXNl
OjpjYWxsRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uLCBKU1ZhbHVl
IHJlc29sdXRpb24pCi17Ci0gICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9
IENhbGxUeXBlOjpOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsK
LSAgICBhcmd1bWVudHMuYXBwZW5kKHJlc29sdXRpb24pOwotCi0gICAgY2FsbCgmZXhlYywgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKLQot
ICAgIGNsZWFyKCk7Ci19Ci0KLXZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoKQotewotICAg
IGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoZGVmZXJy
ZWQoKSk7Ci0gICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvJiBzdGF0ZSA9ICpt
X2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tl
cigmc3RhdGUpOwotICAgIHJlamVjdChzdGF0ZSwgSlNDOjpqc1VuZGVmaW5lZCgpKTsKLX0KLQot
dm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChzdGQ6Om51bGxwdHJfdCkKLXsKLSAgICBpZiAo
aXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGRlZmVycmVkKCkp
OwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3RhdGUgPSAqbV9nbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0
YXRlKTsKLSAgICByZWplY3Qoc3RhdGUsIEpTQzo6anNOdWxsKCkpOwotfQotCi12b2lkIERlZmVy
cmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKLXsKLSAgICBpZiAoaXNT
dXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGRlZmVycmVkKCkpOwot
ICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRl
KTsKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOwot
ICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNlcHRpb24oc3RhdGUsIFdURk1vdmUoZXhjZXB0
aW9uKSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewotICAgICAgICBB
U1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHN0YXRlLnZtKCksIHNjb3BlLmV4
Y2VwdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByZWplY3Qoc3RhdGUs
IGVycm9yKTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChFeGNlcHRpb25Db2Rl
IGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAgICBBU1NFUlQobV9n
bG9iYWxPYmplY3QpOwotICAgIGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCZzdGF0ZSk7Ci0KLSAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKLSAgICBhdXRvIGVycm9y
ID0gY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMsIG1lc3NhZ2UpOwotICAgIGlmIChVTkxJ
S0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgQVNTRVJUKGlzVGVybWluYXRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbihzdGF0ZS52bSgpLCBzY29wZS5leGNlcHRpb24oKSkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0KLSAgICByZWplY3Qoc3RhdGUsIGVycm9yKTsKLX0KLQotdm9p
ZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChjb25zdCBKU0M6OlByaXZhdGVOYW1lJiBwcml2YXRl
TmFtZSkKLXsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
QVNTRVJUKGRlZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgSlND
OjpFeGVjU3RhdGUqIHN0YXRlID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoc3RhdGUpOwotICAgIHJlamVjdCgqc3RhdGUsIEpTQzo6
U3ltYm9sOjpjcmVhdGUoc3RhdGUtPnZtKCksIHByaXZhdGVOYW1lLnVpZCgpKSk7Ci19Ci0KLXZv
aWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZURlZmVycmVkJiBwcm9t
aXNlRGVmZXJyZWQpCi17Ci0gICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLSAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0KLSAgICBpZiAoTElLRUxZKCFzY29wZS5leGNl
cHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgZXJyb3IgPSBzY29wZS5l
eGNlcHRpb24oKS0+dmFsdWUoKTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotCi0gICAg
RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNlRGVmZXJyZWQpLT5y
ZWplY3Q8SURMQW55PihlcnJvcik7Ci19Ci0KLVJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURl
ZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NV2luZG93JiBkb21XaW5k
b3cpCi17Ci0gICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0M6OkpTUHJv
bWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCAmZG9tV2luZG93KTsKLSAgICAvLyBkZWZlcnJl
ZCBjYW4gb25seSBiZSBudWxsIGluIHdvcmtlcnMuCi0gICAgQVNTRVJUKGRlZmVycmVkKTsKLSAg
ICByZXR1cm4gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZG9tV2luZG93LCAqZGVmZXJyZWQpOwot
fQotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKLXsK
LSAgICBBU1NFUlQoc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBhdXRvJiBnbG9i
YWxPYmplY3QgPSAqc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0gICAgYXV0byBwcm9t
aXNlQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QucHJvbWlzZUNvbnN0cnVjdG9yKCk7Ci0gICAg
YXV0byByZWplY3RGdW5jdGlvbiA9IHByb21pc2VDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgc3Rh
dGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgp
KTsKLSAgICBhdXRvIHJlamVjdGlvblZhbHVlID0gY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgZXJy
b3JNZXNzYWdlKTsKLQotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YShyZWplY3RGdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxs
VHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0KLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChyZWplY3Rpb25WYWx1ZSk7Ci0KLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoJnN0YXRlLCByZWplY3RGdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBwcm9taXNlQ29uc3RydWN0b3IsIGFyZ3VtZW50cykpOwotfQotCi1zdGF0aWMg
aW5saW5lIEpTQzo6SlNWYWx1ZSBwYXJzZUFzSlNPTihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIGNv
bnN0IFN0cmluZyYgZGF0YSkKLXsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsK
LSAgICByZXR1cm4gSlNDOjpKU09OUGFyc2Uoc3RhdGUsIGRhdGEpOwotfQotCi12b2lkIGZ1bGZp
bGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBT
dHJpbmcmIGRhdGEpCi17Ci0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcGFyc2VBc0pTT04ocHJv
bWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgZGF0YSk7Ci0gICAgaWYgKCF2YWx1
ZSkKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFNZTlRBWF9FUlIpOwotICAgIGVsc2UKLSAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExBbnk+KHZhbHVlKTsKLX0KLQotdm9pZCBmdWxmaWxsUHJv
bWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEFycmF5
QnVmZmVyKiBhcnJheUJ1ZmZlcikKLXsKLSAgICBpZiAoIWFycmF5QnVmZmVyKSB7Ci0gICAgICAg
IHByb21pc2UtPnJlamVjdDxJRExBbnk+KGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IocHJvbWlzZS0+
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEFycmF5QnVmZmVyPj4oKmFycmF5QnVm
ZmVyKTsKLX0KLQotdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17
Ci0gICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAppbmRleCBlZjEwNDllNzdmY2IxNzlm
NDI5MDdkYjk3M2QzYTFiODUyNDRhOTBkLi4xMGFjNzRiYzNjMTcxMjUyYzMxNmM3YzgyNjJlMDMx
OTJlODMwZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBy
b21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI1LDIzMSArMjUsMjkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU0RPTUNvbnZl
cnQuaCIKICNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNsdWRlIDxydW50aW1l
L0pTUHJvbWlzZURlZmVycmVkLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1Byb21pc2UuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEZWZlcnJlZFByb21pc2UgOiBwdWJsaWMgRE9N
R3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiB7CitjbGFzcyBET01Qcm9taXNlIDogcHVi
bGljIERPTUd1YXJkZWQ8SlNDOjpKU1Byb21pc2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PERlZmVycmVkUHJvbWlzZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmIGRlZmVycmVkKQorICAgIHN0YXRpYyBSZWY8RE9NUHJv
bWlzZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNQcm9t
aXNlJiBwcm9taXNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmZXJy
ZWRQcm9taXNlKGdsb2JhbE9iamVjdCwgZGVmZXJyZWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRE9NUHJvbWlzZShnbG9iYWxPYmplY3QsIHByb21pc2UpKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBJRExUeXBlPgotICAgIHZvaWQgcmVzb2x2ZSh0eXBlbmFtZSBJRExU
eXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIEpTQzo6SlNQcm9taXNlKiBwcm9taXNlKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFTU0VSVChnbG9iYWxP
YmplY3QoKSk7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwot
ICAgICAgICByZXNvbHZlKCpleGVjLCB0b0pTPElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0
KCksIHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkp
KTsKKyAgICAgICAgQVNTRVJUKCFpc1N1c3BlbmRlZCgpKTsKKyAgICAgICAgcmV0dXJuIGd1YXJk
ZWQoKTsKICAgICB9CiAKLSAgICB2b2lkIHJlc29sdmUoKQotICAgIHsKLSAgICAgICAgaWYgKGlz
U3VzcGVuZGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChkZWZlcnJl
ZCgpKTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgICAgIHJlc29sdmUoKmV4ZWMsIEpTQzo6
anNVbmRlZmluZWQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KLSAg
ICB2b2lkIHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRl
clR5cGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihl
eGVjKTsKLSAgICAgICAgcmVzb2x2ZSgqZXhlYywgdG9KU05ld2x5Q3JlYXRlZDxJRExUeXBlPigq
ZXhlYywgKmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFy
YW1ldGVyVHlwZT4odmFsdWUpKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlw
ZT4KLSAgICB2b2lkIHJlamVjdCh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVl
KQotICAgIHsKLSAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVj
dCgpKTsKLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpOwotICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAg
ICAgIHJlamVjdCgqZXhlYywgdG9KUzxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVjdCgpLCBz
dGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7Ci0g
ICAgfQotCi0gICAgdm9pZCByZWplY3QoKTsKLSAgICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJf
dCk7Ci0gICAgdm9pZCByZWplY3QoRXhjZXB0aW9uJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0pOwotICAgIHZvaWQg
cmVqZWN0KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENhbGxiYWNrPgotICAgIHZvaWQgcmVzb2x2ZVdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFj
aykKLSAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFTU0VSVChnbG9iYWxPYmpl
Y3QoKSk7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAg
ICAgICByZXNvbHZlKCpleGVjLCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+Ci0gICAgdm9pZCByZWplY3RX
aXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCi0gICAgewotICAgICAgICBpZiAoaXNTdXNw
ZW5kZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkp
OwotICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBKU0M6OkV4ZWNTdGF0
ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICAgICAgcmVqZWN0KCpleGVjLCBjYWxsYmFjaygq
ZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7Ci0gICAgfQotCi0gICAgSlNDOjpKU1ZhbHVlIHByb21p
c2UoKSBjb25zdDsKLQogcHJpdmF0ZToKLSAgICBEZWZlcnJlZFByb21pc2UoSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYgZGVmZXJyZWQpIDog
RE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPihnbG9iYWxPYmplY3QsIGRlZmVycmVk
KSB7IH0KLQotICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkKCkgY29uc3QgeyBy
ZXR1cm4gZ3VhcmRlZCgpOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbGxGdW5jdGlv
bihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIHJl
c29sdXRpb24pOwotICAgIHZvaWQgcmVzb2x2ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwgZGVmZXJyZWQoKS0+cmVz
b2x2ZSgpLCByZXNvbHV0aW9uKTsgfQotICAgIHZvaWQgcmVqZWN0KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRlLCBkZWZl
cnJlZCgpLT5yZWplY3QoKSwgcmVzb2x1dGlvbik7IH0KLX07Ci0KLWNsYXNzIERPTVByb21pc2VC
YXNlIHsKLXB1YmxpYzoKLSAgICBET01Qcm9taXNlQmFzZShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IGdlbmVyaWNQcm9taXNlKQotICAgICAgICA6IG1fcHJvbWlzZURlZmVycmVkKFdURk1vdmUoZ2Vu
ZXJpY1Byb21pc2UpKQotICAgIHsKLSAgICB9Ci0KLSAgICBET01Qcm9taXNlQmFzZShET01Qcm9t
aXNlQmFzZSYmIHByb21pc2UpCi0gICAgICAgIDogbV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShw
cm9taXNlLm1fcHJvbWlzZURlZmVycmVkKSkKLSAgICB7Ci0gICAgfQotCi0gICAgRE9NUHJvbWlz
ZUJhc2UoY29uc3QgRE9NUHJvbWlzZUJhc2UmIG90aGVyKQotICAgICAgICA6IG1fcHJvbWlzZURl
ZmVycmVkKG90aGVyLm1fcHJvbWlzZURlZmVycmVkLmNvcHlSZWYoKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgRE9NUHJvbWlzZUJhc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9taXNlQmFzZSYgb3Ro
ZXIpCi0gICAgewotICAgICAgICBtX3Byb21pc2VEZWZlcnJlZCA9IG90aGVyLm1fcHJvbWlzZURl
ZmVycmVkLmNvcHlSZWYoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIERP
TVByb21pc2VCYXNlJiBvcGVyYXRvcj0oRE9NUHJvbWlzZUJhc2UmJiBvdGhlcikKKyAgICBET01Q
cm9taXNlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNQcm9taXNlJiBw
cm9taXNlKQorICAgICAgICA6IERPTUd1YXJkZWQ8SlNDOjpKU1Byb21pc2U+KGdsb2JhbE9iamVj
dCwgcHJvbWlzZSkKICAgICB7Ci0gICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gV1RGTW92ZShv
dGhlci5tX3Byb21pc2VEZWZlcnJlZCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0K
LSAgICB2b2lkIHJlamVjdCgpCi0gICAgewotICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+cmVq
ZWN0KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gRXJyb3JUeXBlPiAKLSAg
ICB2b2lkIHJlamVjdChFcnJvclR5cGUmJi4uLiBlcnJvcikKLSAgICB7Ci0gICAgICAgIG1fcHJv
bWlzZURlZmVycmVkLT5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyb3IpLi4uKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgotICAgIHZvaWQgcmVqZWN0
VHlwZSh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdDxJRExUeXBlPihzdGQ6OmZvcndhcmQ8dHlwZW5h
bWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKTsKLSAgICB9Ci0KLSAgICBKU0M6OkpT
VmFsdWUgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZURlZmVycmVkLT5wcm9taXNl
KCk7IH07Ci0KLXByb3RlY3RlZDoKLSAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBtX3Byb21pc2VE
ZWZlcnJlZDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IAotY2xhc3MgRE9NUHJv
bWlzZSA6IHB1YmxpYyBET01Qcm9taXNlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgRE9NUHJv
bWlzZUJhc2U6OkRPTVByb21pc2VCYXNlOwotICAgIHVzaW5nIERPTVByb21pc2VCYXNlOjpvcGVy
YXRvcj07Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnByb21pc2U7Ci0gICAgdXNpbmcgRE9N
UHJvbWlzZUJhc2U6OnJlamVjdDsKLQotICAgIHZvaWQgcmVzb2x2ZSh0eXBlbmFtZSBJRExUeXBl
OjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQotICAgIHsgCi0gICAgICAgIG1fcHJvbWlzZURlZmVycmVk
LT5yZXNvbHZlPElETFR5cGU+KHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0
ZXJUeXBlPih2YWx1ZSkpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gY2xhc3MgRE9NUHJvbWlz
ZTx2b2lkPiA6IHB1YmxpYyBET01Qcm9taXNlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgRE9N
UHJvbWlzZUJhc2U6OkRPTVByb21pc2VCYXNlOwotICAgIHVzaW5nIERPTVByb21pc2VCYXNlOjpv
cGVyYXRvcj07Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnByb21pc2U7Ci0gICAgdXNpbmcg
RE9NUHJvbWlzZUJhc2U6OnJlamVjdDsKLQotICAgIHZvaWQgcmVzb2x2ZSgpCi0gICAgeyAKLSAg
ICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlc29sdmUoKTsKLSAgICB9Ci19OwotCi0KLVJlZjxE
ZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYsIEpT
RE9NV2luZG93Jik7Ci0KLXZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmLCBjb25zdCBTdHJpbmcmKTsKLXZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlC
dWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgQXJyYXlCdWZmZXIqKTsKLXZvaWQgZnVsZmls
bFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3Qgdm9p
ZCosIHNpemVfdCk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHJlamVjdFByb21pc2VXaXRoRXhjZXB0
aW9uSWZBbnkoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNQcm9t
aXNlRGVmZXJyZWQmKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVqZWN0ZWRQcm9taXNl
V2l0aFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYpOwotCi11c2luZyBQ
cm9taXNlRnVuY3Rpb24gPSB2b2lkKEpTQzo6RXhlY1N0YXRlJiwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7Ci0KLWVudW0gY2xhc3MgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIHsgV2luZG93T25seSwg
V2luZG93T3JXb3JrZXIgfTsKLQotdGVtcGxhdGU8UHJvbWlzZUZ1bmN0aW9uIHByb21pc2VGdW5j
dGlvbiwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIGV4ZWN1dGlvblNjb3BlPgotaW5saW5lIEpTQzo6
SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAg
ICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwotCi0gICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCA9ICpK
U0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3Qo
KSk7Ci0gICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0gSlNDOjpK
U1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgJmdsb2JhbE9iamVjdCk7Ci0KLSAgICAv
LyBwcm9taXNlRGVmZXJyZWQgY2FuIGJlIG51bGwgd2hlbiB0ZXJtaW5hdGluZyBhIFdvcmtlciBh
YnJ1cHRseS4KLSAgICBpZiAoZXhlY3V0aW9uU2NvcGUgPT0gUHJvbWlzZUV4ZWN1dGlvblNjb3Bl
OjpXaW5kb3dPcldvcmtlciAmJiAhcHJvbWlzZURlZmVycmVkKQotICAgICAgICByZXR1cm4gSlND
Ojpqc1VuZGVmaW5lZCgpOwotCi0gICAgcHJvbWlzZUZ1bmN0aW9uKHN0YXRlLCBEZWZlcnJlZFBy
b21pc2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsICpwcm9taXNlRGVmZXJyZWQpKTsKLQotICAgIHJl
amVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoc3RhdGUsIGdsb2JhbE9iamVjdCwgKnByb21p
c2VEZWZlcnJlZCk7Ci0gICAgQVNTRVJUX1VOVVNFRChzY29wZSwgIXNjb3BlLmV4Y2VwdGlvbigp
KTsKLSAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7Ci19Ci0KLXVzaW5nIEJp
bmRpbmdQcm9taXNlRnVuY3Rpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6RXhlY1N0YXRl
KiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7Ci10ZW1wbGF0ZTxCaW5kaW5nUHJvbWlzZUZ1bmN0
aW9uIGJpbmRpbmdGdW5jdGlvbj4KLWlubGluZSB2b2lkIGJpbmRpbmdQcm9taXNlRnVuY3Rpb25B
ZGFwdGVyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQotewotICAgIGJpbmRpbmdGdW5jdGlvbigmc3RhdGUsIFdURk1vdmUocHJvbWlzZSkpOwot
fQotCi10ZW1wbGF0ZTxCaW5kaW5nUHJvbWlzZUZ1bmN0aW9uIGJpbmRpbmdQcm9taXNlRnVuY3Rp
b24sIFByb21pc2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZT4KLWlubGluZSBKU0M6OkpT
VmFsdWUgY2FsbFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAg
cmV0dXJuIGNhbGxQcm9taXNlRnVuY3Rpb248YmluZGluZ1Byb21pc2VGdW5jdGlvbkFkYXB0ZXI8
YmluZGluZ1Byb21pc2VGdW5jdGlvbj4sIGV4ZWN1dGlvblNjb3BlPihzdGF0ZSk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTVhMmQyOWVmZDNmZDdhZGIz
MjU4MDFiYjQ2NWJmYTZmY2UzN2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCkBAIC0wLDAgKzEsMjExIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAi
SlNET01FcnJvci5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSA8YnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb24uaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTT05PYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZUNv
bnN0cnVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworSlNDOjpKU1ZhbHVlIERlZmVycmVkUHJvbWlzZTo6cHJvbWlzZSgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIHJldHVybiBkZWZlcnJlZCgpLT5wcm9taXNlKCk7
Cit9CisKK3ZvaWQgRGVmZXJyZWRQcm9taXNlOjpjYWxsRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVj
LCBKU1ZhbHVlIGZ1bmN0aW9uLCBKU1ZhbHVlIHJlc29sdXRpb24pCit7CisgICAgaWYgKCFjYW5J
bnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0
YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKworICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHJlc29sdXRp
b24pOworCisgICAgY2FsbCgmZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNV
bmRlZmluZWQoKSwgYXJndW1lbnRzKTsKKworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgRGVmZXJy
ZWRQcm9taXNlOjpyZWplY3QoKQoreworICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgQVNTRVJUKG1fZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwor
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmc3RhdGUpOworICAgIHJlamVjdChzdGF0ZSwg
SlNDOjpqc1VuZGVmaW5lZCgpKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChz
dGQ6Om51bGxwdHJfdCkKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7
CisgICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRlKTsKKyAgICByZWplY3Qoc3RhdGUsIEpTQzo6
anNOdWxsKCkpOworfQorCit2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbiYm
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Cisg
ICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRlKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOworICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNl
cHRpb24oc3RhdGUsIFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkgeworICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKHN0YXRlLnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICByZWplY3Qoc3RhdGUsIGVycm9yKTsKK30KKwordm9pZCBEZWZlcnJlZFBy
b21pc2U6OnJlamVjdChFeGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChk
ZWZlcnJlZCgpKTsKKyAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOworICAgIGF1dG8mIHN0YXRl
ID0gKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIg
bG9ja2VyKCZzdGF0ZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShz
dGF0ZS52bSgpKTsKKyAgICBhdXRvIGVycm9yID0gY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMsIG1lc3NhZ2UpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAg
ICAgICAgQVNTRVJUKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihzdGF0ZS52bSgpLCBz
Y29wZS5leGNlcHRpb24oKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICByZWpl
Y3Qoc3RhdGUsIGVycm9yKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChjb25z
dCBKU0M6OlByaXZhdGVOYW1lJiBwcml2YXRlTmFtZSkKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VS
VChtX2dsb2JhbE9iamVjdCk7CisgICAgSlNDOjpFeGVjU3RhdGUqIHN0YXRlID0gbV9nbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoc3RhdGUp
OworICAgIHJlamVjdCgqc3RhdGUsIEpTQzo6U3ltYm9sOjpjcmVhdGUoc3RhdGUtPnZtKCksIHBy
aXZhdGVOYW1lLnVpZCgpKSk7Cit9CisKK3ZvaWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25J
ZkFueShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QsIEpTUHJvbWlzZURlZmVycmVkJiBwcm9taXNlRGVmZXJyZWQpCit7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisK
KyAgICBpZiAoTElLRUxZKCFzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEpTVmFsdWUgZXJyb3IgPSBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUoKTsKKyAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOworCisgICAgRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LCBwcm9taXNlRGVmZXJyZWQpLT5yZWplY3Q8SURMQW55PihlcnJvcik7Cit9CisKK1Jl
ZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTRE9NV2luZG93JiBkb21XaW5kb3cpCit7CisgICAgSlNDOjpKU1Byb21pc2VEZWZl
cnJlZCogZGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCAm
ZG9tV2luZG93KTsKKyAgICAvLyBkZWZlcnJlZCBjYW4gb25seSBiZSBudWxsIGluIHdvcmtlcnMu
CisgICAgQVNTRVJUKGRlZmVycmVkKTsKKyAgICByZXR1cm4gRGVmZXJyZWRQcm9taXNlOjpjcmVh
dGUoZG9tV2luZG93LCAqZGVmZXJyZWQpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0
ZVJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoc3RhdGUubGV4aWNhbEdsb2Jh
bE9iamVjdCgpKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqc3RhdGUubGV4aWNhbEdsb2Jh
bE9iamVjdCgpOworCisgICAgYXV0byBwcm9taXNlQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3Qu
cHJvbWlzZUNvbnN0cnVjdG9yKCk7CisgICAgYXV0byByZWplY3RGdW5jdGlvbiA9IHByb21pc2VD
b25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgc3RhdGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgpKTsKKyAgICBhdXRvIHJlamVjdGlvblZhbHVlID0g
Y3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsKKworICAgIENhbGxEYXRhIGNh
bGxEYXRhOworICAgIGF1dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWplY3RGdW5jdGlvbiwg
Y2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisKKyAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChy
ZWplY3Rpb25WYWx1ZSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoJnN0YXRl
LCByZWplY3RGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBwcm9taXNlQ29uc3RydWN0b3Is
IGFyZ3VtZW50cykpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBwYXJzZUFzSlNP
TihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKK3sKKyAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKKyAgICByZXR1cm4gSlNDOjpKU09OUGFyc2Uoc3Rh
dGUsIGRhdGEpOworfQorCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGRhdGEpCit7CisgICAgSlNDOjpKU1Zh
bHVlIHZhbHVlID0gcGFyc2VBc0pTT04ocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKSwgZGF0YSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFNZ
TlRBWF9FUlIpOworICAgIGVsc2UKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExBbnk+KHZh
bHVlKTsKK30KKwordm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UsIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKK3sKKyAgICBp
ZiAoIWFycmF5QnVmZmVyKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdDxJRExBbnk+KGNyZWF0
ZU91dE9mTWVtb3J5RXJyb3IocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJm
YWNlPEFycmF5QnVmZmVyPj4oKmFycmF5QnVmZmVyKTsKK30KKwordm9pZCBmdWxmaWxsUHJvbWlz
ZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IHZv
aWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlC
dWZmZXIoV1RGTW92ZShwcm9taXNlKSwgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBsZW5n
dGgpLmdldCgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlRGVmZXJyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZURlZmVycmVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYxM2NhYzdiMjhiNGM3ZWZhOTI0ZGQ2
OTkzMTc3MjcxOTYwZjhmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKQEAgLTAsMCArMSwyNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgorI2luY2x1ZGUg
IkpTRE9NR3VhcmRlZE9iamVjdC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNQcm9taXNlRGVmZXJy
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZWZlcnJlZFByb21pc2UgOiBw
dWJsaWMgRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJiBkZWZlcnJlZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkUHJvbWlzZShnbG9iYWxPYmplY3QsIGRl
ZmVycmVkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAgICB2b2lk
IHJlc29sdmUodHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBB
U1NFUlQoZGVmZXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CisgICAg
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsK
KyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICByZXNvbHZl
KCpleGVjLCB0b0pTPElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCksIHN0ZDo6Zm9yd2Fy
ZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpKTsKKyAgICB9CisKKyAg
ICB2b2lkIHJlc29sdmUoKQorICAgIHsKKyAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKKyAgICAgICAgQVNT
RVJUKGdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
ZXIoZXhlYyk7CisgICAgICAgIHJlc29sdmUoKmV4ZWMsIEpTQzo6anNVbmRlZmluZWQoKSk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAgICB2b2lkIHJlc29sdmVXaXRo
TmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCisgICAg
eworICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwor
ICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICAgICAgcmVz
b2x2ZSgqZXhlYywgdG9KU05ld2x5Q3JlYXRlZDxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVj
dCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUp
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAgICB2b2lkIHJlamVj
dCh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAg
aWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChk
ZWZlcnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgSlND
OjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgICAgIHJlamVjdCgqZXhlYywg
dG9KUzxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5h
bWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7CisgICAgfQorCisgICAgdm9pZCBy
ZWplY3QoKTsKKyAgICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJfdCk7CisgICAgdm9pZCByZWpl
Y3QoRXhjZXB0aW9uJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0KEV4Y2VwdGlv
bkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0pOworICAgIHZvaWQgcmVqZWN0KGNvbnN0IEpTQzo6
UHJpdmF0ZU5hbWUmKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrPgorICAgIHZv
aWQgcmVzb2x2ZVdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQo
ZGVmZXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CisgICAgICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICByZXNvbHZlKCpleGVj
LCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2FsbGJhY2s+CisgICAgdm9pZCByZWplY3RXaXRoQ2FsbGJhY2soQ2FsbGJh
Y2sgY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihl
eGVjKTsKKyAgICAgICAgcmVqZWN0KCpleGVjLCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVj
dCgpKSk7CisgICAgfQorCisgICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBEZWZlcnJlZFByb21pc2UoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYgZGVmZXJyZWQpCisgICAgICAgIDogRE9NR3VhcmRl
ZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPihnbG9iYWxPYmplY3QsIGRlZmVycmVkKQorICAgIHsK
KyAgICB9CisKKyAgICBKU0M6OkpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCgpIGNvbnN0IHsg
cmV0dXJuIGd1YXJkZWQoKTsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYWxsRnVuY3Rp
b24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24sIEpTQzo6SlNWYWx1ZSBy
ZXNvbHV0aW9uKTsKKyAgICB2b2lkIHJlc29sdmUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgcmVzb2x1dGlvbikgeyBjYWxsRnVuY3Rpb24oc3RhdGUsIGRlZmVycmVkKCktPnJl
c29sdmUoKSwgcmVzb2x1dGlvbik7IH0KKyAgICB2b2lkIHJlamVjdChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwgZGVm
ZXJyZWQoKS0+cmVqZWN0KCksIHJlc29sdXRpb24pOyB9Cit9OworCitjbGFzcyBET01Qcm9taXNl
RGVmZXJyZWRCYXNlIHsKK3B1YmxpYzoKKyAgICBET01Qcm9taXNlRGVmZXJyZWRCYXNlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgZ2VuZXJpY1Byb21pc2UpCisgICAgICAgIDogbV9wcm9taXNlRGVm
ZXJyZWQoV1RGTW92ZShnZW5lcmljUHJvbWlzZSkpCisgICAgeworICAgIH0KKworICAgIERPTVBy
b21pc2VEZWZlcnJlZEJhc2UoRE9NUHJvbWlzZURlZmVycmVkQmFzZSYmIHByb21pc2UpCisgICAg
ICAgIDogbV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShwcm9taXNlLm1fcHJvbWlzZURlZmVycmVk
KSkKKyAgICB7CisgICAgfQorCisgICAgRE9NUHJvbWlzZURlZmVycmVkQmFzZShjb25zdCBET01Q
cm9taXNlRGVmZXJyZWRCYXNlJiBvdGhlcikKKyAgICAgICAgOiBtX3Byb21pc2VEZWZlcnJlZChv
dGhlci5tX3Byb21pc2VEZWZlcnJlZC5jb3B5UmVmKCkpCisgICAgeworICAgIH0KKworICAgIERP
TVByb21pc2VEZWZlcnJlZEJhc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9taXNlRGVmZXJyZWRC
YXNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gb3RoZXIubV9w
cm9taXNlRGVmZXJyZWQuY29weVJlZigpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
CisgICAgRE9NUHJvbWlzZURlZmVycmVkQmFzZSYgb3BlcmF0b3I9KERPTVByb21pc2VEZWZlcnJl
ZEJhc2UmJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gV1RGTW92
ZShvdGhlci5tX3Byb21pc2VEZWZlcnJlZCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKKyAgICB2b2lkIHJlamVjdCgpCisgICAgeworICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+
cmVqZWN0KCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gRXJyb3JUeXBlPiAK
KyAgICB2b2lkIHJlamVjdChFcnJvclR5cGUmJi4uLiBlcnJvcikKKyAgICB7CisgICAgICAgIG1f
cHJvbWlzZURlZmVycmVkLT5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyb3IpLi4u
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorICAgIHZvaWQgcmVq
ZWN0VHlwZSh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdDxJRExUeXBlPihzdGQ6OmZvcndhcmQ8dHlw
ZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKTsKKyAgICB9CisKKyAgICBKU0M6
OkpTVmFsdWUgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZURlZmVycmVkLT5wcm9t
aXNlKCk7IH07CisKK3Byb3RlY3RlZDoKKyAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBtX3Byb21p
c2VEZWZlcnJlZDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IAorY2xhc3MgRE9N
UHJvbWlzZURlZmVycmVkIDogcHVibGljIERPTVByb21pc2VEZWZlcnJlZEJhc2UgeworcHVibGlj
OgorICAgIHVzaW5nIERPTVByb21pc2VEZWZlcnJlZEJhc2U6OkRPTVByb21pc2VEZWZlcnJlZEJh
c2U7CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6b3BlcmF0b3I9OworICAgIHVz
aW5nIERPTVByb21pc2VEZWZlcnJlZEJhc2U6OnByb21pc2U7CisgICAgdXNpbmcgRE9NUHJvbWlz
ZURlZmVycmVkQmFzZTo6cmVqZWN0OworCisgICAgdm9pZCByZXNvbHZlKHR5cGVuYW1lIElETFR5
cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCisgICAgeyAKKyAgICAgICAgbV9wcm9taXNlRGVmZXJy
ZWQtPnJlc29sdmU8SURMVHlwZT4oc3RkOjpmb3J3YXJkPHR5cGVuYW1lIElETFR5cGU6OlBhcmFt
ZXRlclR5cGU+KHZhbHVlKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBjbGFzcyBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4gOiBwdWJsaWMgRE9NUHJvbWlzZURlZmVycmVkQmFzZSB7CitwdWJs
aWM6CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6RE9NUHJvbWlzZURlZmVycmVk
QmFzZTsKKyAgICB1c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpvcGVyYXRvcj07CisgICAg
dXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cHJvbWlzZTsKKyAgICB1c2luZyBET01Qcm9t
aXNlRGVmZXJyZWRCYXNlOjpyZWplY3Q7CisKKyAgICB2b2lkIHJlc29sdmUoKQorICAgIHsgCisg
ICAgICAgIG1fcHJvbWlzZURlZmVycmVkLT5yZXNvbHZlKCk7CisgICAgfQorfTsKKworCitSZWY8
RGVmZXJyZWRQcm9taXNlPiBjcmVhdGVEZWZlcnJlZFByb21pc2UoSlNDOjpFeGVjU3RhdGUmLCBK
U0RPTVdpbmRvdyYpOworCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVk
UHJvbWlzZT4mJiwgY29uc3QgU3RyaW5nJik7Cit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5
QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIEFycmF5QnVmZmVyKik7Cit2b2lkIGZ1bGZp
bGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIGNvbnN0IHZv
aWQqLCBzaXplX3QpOworV0VCQ09SRV9FWFBPUlQgdm9pZCByZWplY3RQcm9taXNlV2l0aEV4Y2Vw
dGlvbklmQW55KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTUHJv
bWlzZURlZmVycmVkJik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlz
ZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBTdHJpbmcmKTsKKwordXNpbmcg
UHJvbWlzZUZ1bmN0aW9uID0gdm9pZChKU0M6OkV4ZWNTdGF0ZSYsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYpOworCitlbnVtIGNsYXNzIFByb21pc2VFeGVjdXRpb25TY29wZSB7IFdpbmRvd09ubHks
IFdpbmRvd09yV29ya2VyIH07CisKK3RlbXBsYXRlPFByb21pc2VGdW5jdGlvbiBwcm9taXNlRnVu
Y3Rpb24sIFByb21pc2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZT4KK2lubGluZSBKU0M6
OkpTVmFsdWUgY2FsbFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCit7Cisg
ICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QgPSAq
SlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOworICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTQzo6
SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsICZnbG9iYWxPYmplY3QpOworCisgICAg
Ly8gcHJvbWlzZURlZmVycmVkIGNhbiBiZSBudWxsIHdoZW4gdGVybWluYXRpbmcgYSBXb3JrZXIg
YWJydXB0bHkuCisgICAgaWYgKGV4ZWN1dGlvblNjb3BlID09IFByb21pc2VFeGVjdXRpb25TY29w
ZTo6V2luZG93T3JXb3JrZXIgJiYgIXByb21pc2VEZWZlcnJlZCkKKyAgICAgICAgcmV0dXJuIEpT
Qzo6anNVbmRlZmluZWQoKTsKKworICAgIHByb21pc2VGdW5jdGlvbihzdGF0ZSwgRGVmZXJyZWRQ
cm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCAqcHJvbWlzZURlZmVycmVkKSk7CisKKyAgICBy
ZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KHN0YXRlLCBnbG9iYWxPYmplY3QsICpwcm9t
aXNlRGVmZXJyZWQpOworICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFzY29wZS5leGNlcHRpb24o
KSk7CisgICAgcmV0dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCit1c2luZyBC
aW5kaW5nUHJvbWlzZUZ1bmN0aW9uID0gSlNDOjpFbmNvZGVkSlNWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSosIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwordGVtcGxhdGU8QmluZGluZ1Byb21pc2VGdW5j
dGlvbiBiaW5kaW5nRnVuY3Rpb24+CitpbmxpbmUgdm9pZCBiaW5kaW5nUHJvbWlzZUZ1bmN0aW9u
QWRhcHRlcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKK3sKKyAgICBiaW5kaW5nRnVuY3Rpb24oJnN0YXRlLCBXVEZNb3ZlKHByb21pc2UpKTsK
K30KKwordGVtcGxhdGU8QmluZGluZ1Byb21pc2VGdW5jdGlvbiBiaW5kaW5nUHJvbWlzZUZ1bmN0
aW9uLCBQcm9taXNlRXhlY3V0aW9uU2NvcGUgZXhlY3V0aW9uU2NvcGU+CitpbmxpbmUgSlNDOjpK
U1ZhbHVlIGNhbGxQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQoreworICAg
IHJldHVybiBjYWxsUHJvbWlzZUZ1bmN0aW9uPGJpbmRpbmdQcm9taXNlRnVuY3Rpb25BZGFwdGVy
PGJpbmRpbmdQcm9taXNlRnVuY3Rpb24+LCBleGVjdXRpb25TY29wZT4oc3RhdGUpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggZWYzN2FlYWFkODA0YWNiNGRiNjM0NDIx
N2I4MDY2OGJmMzYwYTI1MC4uNDEwZGU3NjQzMmQyODM5MjU0MzNmMmQwNzJiMDlkYjk3NjRmMDc1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9D
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRv
Q3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkpTQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkpTQ3J5cHRvS2V5LmgiCiAjaW5jbHVkZSAiSlNDcnlw
dG9LZXlQYWlyLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Q
cm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJK
U0VjS2V5UGFyYW1zLmgiCiAjaW5jbHVkZSAiSlNFY2RoS2V5RGVyaXZlUGFyYW1zLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRCdWZmZXJD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVDb21tYW5kQnVm
ZmVyQ3VzdG9tLmNwcAppbmRleCAyZmIzZjBiOTIyNjIyZDQ2YTkyMmY3YjYyYjk2OGY4Y2VlOGQ4
NGUyLi45MzBjNGZkM2E3ZjFlNGQ4ZjgzNGU3MjRlOTY0NDg0YjI4NDNlNTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRCdWZmZXJDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BVQ29tbWFuZEJ1ZmZl
ckN1c3RvbS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5j
bHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgi
CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAppbmRl
eCA2MzhiMzdlNGFjNTFlZmY4ZmNkNmNiZGFiM2MyMDlkM2ZmZjFhYjY2Li40Y2IzZTJjNWU5MDMz
OGNlN2VjY2RlNjI4ZDRiNzk2YTA3NWViNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBAIC00MCw3
ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiSlNDcnlw
dG9LZXlTZXJpYWxpemF0aW9uSldLLmgiCiAjaW5jbHVkZSAiSlNDcnlwdG9PcGVyYXRpb25EYXRh
LmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVm
ZXJyZWQuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZGJiNDdiZGRiYmZlM2VlMzA4MGYzYmU5NjY2YjQ2OGZmYzFjNTcxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudC5oIgorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVk
ZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUv
RXJyb3IuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8PiBUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50OjpJbml0IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6
OkluaXQ+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBib29sIGlzTnVsbE9yVW5kZWZpbmVkID0gdmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KTsKKyAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51bGxwdHIgOiB2YWx1
ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVkICYmICFv
YmplY3QpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmIChVTkxJS0VMWShvYmplY3QgJiYgb2Jq
ZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAg
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdCByZXN1bHQ7CisgICAgSlNWYWx1ZSBidWJi
bGVzVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYnViYmxlcyIpKTsKKyAg
ICBpZiAoIWJ1YmJsZXNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5idWJi
bGVzID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgYnViYmxlc1ZhbHVlKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0gZWxzZQorICAgICAg
ICByZXN1bHQuYnViYmxlcyA9IGZhbHNlOworICAgIEpTVmFsdWUgY2FuY2VsYWJsZVZhbHVlID0g
aXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImNhbmNlbGFibGUiKSk7CisgICAgaWYgKCFj
YW5jZWxhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuY2FuY2VsYWJs
ZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIGNhbmNlbGFibGVWYWx1ZSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgcmVzdWx0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICBKU1ZhbHVlIGNvbXBvc2VkVmFsdWUg
PSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiY29tcG9zZWQiKSk7CisgICAgaWYgKCFj
b21wb3NlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmNvbXBvc2VkID0g
Y29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgY29tcG9zZWRWYWx1ZSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVz
dWx0LmNvbXBvc2VkID0gZmFsc2U7CisgICAgSlNWYWx1ZSBwcm9taXNlVmFsdWUgPSBpc051bGxP
clVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicHJvbWlzZSIpKTsKKyAgICBpZiAoIXByb21pc2VWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5wcm9taXNlID0gY29udmVydDxJRExQ
cm9taXNlPElETEFueT4+KHN0YXRlLCBwcm9taXNlVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGhyb3dS
ZXF1aXJlZE1lbWJlclR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgInByb21pc2UiLCAiVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudEluaXQiLCAiUHJvbWlzZSIpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKyAgICBKU1ZhbHVlIHJlYXNvblZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQg
PyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgInJlYXNvbiIpKTsKKyAgICBpZiAoIXJlYXNvblZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgcmVzdWx0LnJlYXNvbiA9IGNvbnZlcnQ8SURMQW55PihzdGF0ZSwgcmVh
c29uVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdC5yZWFzb24gPSBqc1VuZGVmaW5lZCgpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworCitjbGFzcyBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0
YXRpYyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3Rv
dHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAg
REVDTEFSRV9JTkZPOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlND
OjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKwordXNpbmcgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudD47CisKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNT
dGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50Q29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJUKGNh
c3RlZFRoaXMpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byB0eXBlID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1
dG8gZXZlbnRJbml0RGljdCA9IGNvbnZlcnQ8SURMRGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50OjpJbml0Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Cisg
ICAgYXV0byBvYmplY3QgPSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpjcmVhdGUoKnN0YXRl
LCBXVEZNb3ZlKHR5cGUpLCBXVEZNb3ZlKGV2ZW50SW5pdERpY3QpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3Zl
KG9iamVjdCkpKTsKK30KKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTRXZl
bnQ6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKK30KKwordGVtcGxhdGU8PiB2
b2lkIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50IikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDIpLCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZv
ciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0
cnVjdG9yIiwgRG9udEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcikgfSB9LAor
ICAgIHsgInByb21pc2UiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAicmVhc29uIiwgUmVh
ZE9ubHkgfCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRSZWFzb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
UHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKK30K
KworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6c19pbmZvID0g
eyAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KSB9OworCitKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQ6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudChTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQ+JiYgaW1wbCkKKyAgICA6IEpTRXZlbnQoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKK30KKworSlNP
YmplY3QqIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3Qs
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCAmZ2xvYmFsT2JqZWN0LCBKU0V2ZW50Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpKTsK
K30KKworSlNPYmplY3QqIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6cHJvdG90eXBlKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0
RE9NUHJvdG90eXBlPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4odm0sIGdsb2JhbE9iamVj
dCk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCog
QmluZGluZ0NhbGxlcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OjpjYXN0Rm9yQXR0cmli
dXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICBy
ZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Kj4oc3Rh
dGUudm0oKSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworfQorCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdldHRlcihFeGVjU3Rh
dGUmLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
K3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+
OjphdHRyaWJ1dGU8anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2U+KHN0YXRlLCB0aGlzVmFsdWUsICJw
cm9taXNlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRQcm9taXNlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETFByb21pc2U8SURMQW55Pj4oaW1wbC5wcm9taXNlKCkpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRSZWFzb25HZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Jiwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudFJlYXNvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ+OjphdHRyaWJ1dGU8anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50UmVhc29uR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAicmVhc29uIik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiB0aGlzT2JqZWN0
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQW55PihpbXBsLnJlYXNv
bigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisK
K2Jvb2wgc2V0SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5w
dXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IHZhbHVlKTsKK30KKworSlNWYWx1ZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZP
Uk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0
ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZv
aWQqIF9aVFZON1dlYkNvcmUyNVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRFW107IH0KKyNlbmRp
ZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAg
ICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4o
aW1wbC5wdHIoKSkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50QFdlYkNvcmVAQDZCQCIpKTsKKyNlbHNlCisgICAgdm9pZCog
ZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUyNVRlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRFWzJdOworI2lmIENPTVBJTEVSKENMQU5HKQorICAgIC8vIElmIHRoaXMgZmFpbHMg
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudCBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3Ug
bmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1
dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChfX2lzX3Bv
bHltb3JwaGljKFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpLCAiVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudCBpcyBub3QgcG9seW1vcnBoaWMiKTsKKyNlbmRpZgorI2VuZGlmCisgICAgLy8gSWYg
eW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBi
dWcsIG9yCisgICAgLy8gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCBoYXMgc3ViY2xhc3Nlcy4g
SWYgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNz
ZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudCB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5
IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZh
Y2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVy
ID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmIGlt
cGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA3MTA5NGExMDM1NjFmZjM1OWFhNTE4N2Y4M2ZkOTA3MjE5MTQzZDYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgorI2luY2x1ZGUg
IkpTRXZlbnQuaCIKKyNpbmNsdWRlICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IDog
cHVibGljIEpTRXZlbnQgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0V2ZW50OworICAg
IHVzaW5nIERPTVdyYXBwZWQgPSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OworICAgIHN0YXRp
YyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudD4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAg
ICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVh
dGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpKU1R5cGUoSlNFdmVudFR5cGUpLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3Qg
SlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmIHdy
YXBwZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQmPihCYXNlOjp3cmFwcGVkKCkpOworICAgIH0KK3Byb3RlY3RlZDoK
KyAgICBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYsIFJlZjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiYmKTsKKworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKworSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQq
IGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKHN0YXRlLCBnbG9iYWxPYmplY3QsICppbXBsKSA6
IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dD4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudD4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3Jl
YXRlZChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpq
c051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFp
dHM8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCo7Cit9OwordGVtcGxhdGU8PiBUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OkluaXQ+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKKworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDU2YTk0OTFhZDdhNTExN2M1OGExN2ExZjg4ODc1MGVhZmI4N2M5MQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50LmlkbApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbnN0cnVjdG9yKERPTVN0
cmluZyB0eXBlLCBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50SW5pdCBldmVudEluaXREaWN0KSwK
KyAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdFN0YXRlLAorICAgIEV4cG9zZWQ9KFdpbmRv
dyxXb3JrZXIpLAorXSBpbnRlcmZhY2UgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA6IEV2ZW50
IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZTxhbnk+IHByb21pc2U7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGFueSByZWFzb247Cit9OworCitkaWN0aW9uYXJ5IFRlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRJbml0IDogRXZlbnRJbml0IHsKKyAgICByZXF1aXJlZCBQcm9taXNlPGFu
eT4gcHJvbWlzZTsKKyAgICBhbnkgcmVhc29uOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXgg
MGIwNmNlOTc3MjgzYjc2ZDMxNTUxZWI4OThlMjZiZDQxODllYmU1Mi4uODEzNDAzYWU3OGQyMmUz
OTBhNjk3NjBlZjk0NzYzNmE0NmNlMmIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTI3LDcg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlOYW1lcy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIEZvbnRGYWNlIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8Rm9udEZhY2U+LCBwcml2YXRlIENTU0ZvbnRGYWNlOjpDbGllbnQKICAg
ICBlbnVtIGNsYXNzIExvYWRTdGF0dXMgeyBVbmxvYWRlZCwgTG9hZGluZywgTG9hZGVkLCBFcnJv
ciB9OwogICAgIExvYWRTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CiAKLSAgICB1c2luZyBQcm9taXNl
ID0gRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8Rm9udEZhY2U+PjsKKyAgICB1c2luZyBQcm9taXNl
ID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxGb250RmFjZT4+OwogICAgIHN0ZDo6
b3B0aW9uYWw8UHJvbWlzZT4mIHByb21pc2UoKSB7IHJldHVybiBtX3Byb21pc2U7IH0KICAgICB2
b2lkIHJlZ2lzdGVyTG9hZGVkKFByb21pc2UmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgK
aW5kZXggZmE4ZmUyYTFjODM5MDNlMjM1ZDhjYmY0OThmZGNkMmIzYTc4N2RhNi4uZTg0ZDA5NWVj
Y2JkYWIwMDc4NjgwMTRiMjM4NjIyMDQyY2UxMzk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNs
dWRlICJDU1NGb250RmFjZVNldC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVk
ZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NiwxNCArNDYsMTQgQEAgY2xhc3MgRm9udEZhY2VT
ZXQgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFjZVNldD4sIHByaXZhdGUgQ1NTRm9u
dEZhY2VTZXQKICAgICBib29sIHJlbW92ZShGb250RmFjZSYpOwogICAgIHZvaWQgY2xlYXIoKTsK
IAotICAgIHVzaW5nIExvYWRQcm9taXNlID0gRE9NUHJvbWlzZTxJRExTZXF1ZW5jZTxJRExJbnRl
cmZhY2U8Rm9udEZhY2U+Pj47CisgICAgdXNpbmcgTG9hZFByb21pc2UgPSBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEZvbnRGYWNlPj4+OwogICAgIHZvaWQgbG9h
ZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgTG9hZFByb21pc2UmJik7
CiAgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBT
dHJpbmcmIHRleHQpOwogCiAgICAgZW51bSBjbGFzcyBMb2FkU3RhdHVzIHsgTG9hZGluZywgTG9h
ZGVkIH07CiAgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsKIAotICAgIHVzaW5nIFJlYWR5
UHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPEZvbnRGYWNlU2V0Pj47CisgICAgdXNp
bmcgUmVhZHlQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxGb250RmFj
ZVNldD4+OwogICAgIHZvaWQgcmVnaXN0ZXJSZWFkeShSZWFkeVByb21pc2UmJik7CiAKICAgICBD
U1NGb250RmFjZVNldCYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCmluZGV4IDExMjA5N2IxYzI4M2Y4YzA4
NDQ3ZjFkMGFjMzE1ZmZjNmUzYTFiMmMuLmVmZGZjMjQ2MjY4NmJkZTY3NTY0YWQ0YmZhNTI4MGJi
OTgzZDA2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVn
aXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlF1YWxp
ZmllZE5hbWUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRG
b3JTY29wZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rp
b25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rpb25FdmVudC5oCmlu
ZGV4IDBmYjFhNGMwYTA2MTk3ZDQzYzAwNmZiYzczMDQ3NzRmYjMxMzdlNzIuLjE2NDI3NTc2MjA2
OTllMTcxMTRhODE3ZDk2YWU2MmNiNTJkYWNiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJv
bWlzZVJlamVjdGlvbkV2ZW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlIDxo
ZWFwL1N0cm9uZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMyw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFByb21pc2VSZWplY3Rpb25FdmVudCBmaW5hbCA6IHB1
YmxpYyBFdmVudCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewotICAg
ICAgICBKU0M6OkpTVmFsdWUgcHJvbWlzZTsKKyAgICAgICAgSlNDOjpKU1Byb21pc2UqIHByb21p
c2U7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSByZWFzb247CiAgICAgfTsKIApAQCAtNDQsNyArNDUs
NyBAQCBjbGFzcyBQcm9taXNlUmVqZWN0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewog
CiAgICAgdmlydHVhbCB+UHJvbWlzZVJlamVjdGlvbkV2ZW50KCk7CiAKLSAgICBKU0M6OkpTVmFs
dWUgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZS5nZXQoKTsgfQorICAgIEpTQzo6
SlNQcm9taXNlJiBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4gKm1fcHJvbWlzZS5nZXQoKTsgfQog
ICAgIEpTQzo6SlNWYWx1ZSByZWFzb24oKSBjb25zdCB7IHJldHVybiBtX3JlYXNvbi5nZXQoKTsg
fQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQcm9taXNlUmVqZWN0aW9uRXZlbnRJbnRlcmZhY2VUeXBlOyB9CkBAIC01Miw3ICs1
Myw3IEBAIGNsYXNzIFByb21pc2VSZWplY3Rpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7
CiBwcml2YXRlOgogICAgIFByb21pc2VSZWplY3Rpb25FdmVudChKU0M6OkV4ZWNTdGF0ZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCi0gICAgSlNDOjpT
dHJvbmc8SlNDOjpVbmtub3duPiBtX3Byb21pc2U7CisgICAgSlNDOjpTdHJvbmc8SlNDOjpKU1By
b21pc2U+IG1fcHJvbWlzZTsKICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fcmVhc29u
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlamVjdGVkUHJvbWlzZVRy
YWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIuY3Bw
CmluZGV4IDIzMmFiYjgyZjA5MTE2ZTYzYTdjNjhmZTg5Mzc5MWRlNTNlMjAzNjcuLjAwNDdkNjhh
MDY3MWZhMjY5ZjFjNTA1YWU3NTUwODY2NDAzN2Q2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5jcHAKQEAgLTUzLDMzICs1MywyNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZWplY3RlZFByb21pc2UgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFJlamVjdGVkUHJvbWlzZSk7CiBwdWJsaWM6Ci0gICAgUmVqZWN0ZWRQcm9taXNlKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBwcm9taXNl
KQotICAgICAgICA6IG1fZ2xvYmFsT2JqZWN0KHZtLCAmZ2xvYmFsT2JqZWN0KQotICAgICAgICAs
IG1fcHJvbWlzZSh2bSwgJnByb21pc2UpCisgICAgUmVqZWN0ZWRQcm9taXNlKEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSYgcHJvbWlzZSkKKyAgICAgICAgOiBtX3By
b21pc2UoRE9NUHJvbWlzZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgcHJvbWlzZSkpCiAgICAgewog
ICAgIH0KIAogICAgIFJlamVjdGVkUHJvbWlzZShSZWplY3RlZFByb21pc2UmJikgPSBkZWZhdWx0
OwogCi0gICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpCisgICAgRE9NUHJvbWlz
ZSYgcHJvbWlzZSgpCiAgICAgewotICAgICAgICByZXR1cm4gKm1fZ2xvYmFsT2JqZWN0LmdldCgp
OwotICAgIH0KLQotICAgIEpTUHJvbWlzZSYgcHJvbWlzZSgpCi0gICAgewotICAgICAgICByZXR1
cm4gKm1fcHJvbWlzZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fcHJvbWlzZS5nZXQoKTsKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgU3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9i
amVjdDsKLSAgICBTdHJvbmc8SlNQcm9taXNlPiBtX3Byb21pc2U7CisgICAgUmVmPERPTVByb21p
c2U+IG1fcHJvbWlzZTsKIH07CiAKIGNsYXNzIFVuaGFuZGxlZFByb21pc2UgOiBwdWJsaWMgUmVq
ZWN0ZWRQcm9taXNlIHsKIHB1YmxpYzoKLSAgICBVbmhhbmRsZWRQcm9taXNlKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBwcm9taXNlLCBSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrKQotICAgICAgICA6IFJlamVjdGVkUHJvbWlzZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm9taXNlKQorICAgIFVuaGFuZGxlZFByb21pc2UoSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBwcm9taXNlLCBSZWZQdHI8U2NyaXB0Q2Fs
bFN0YWNrPiYmIHN0YWNrKQorICAgICAgICA6IFJlamVjdGVkUHJvbWlzZShnbG9iYWxPYmplY3Qs
IHByb21pc2UpCiAgICAgICAgICwgbV9zdGFjayhXVEZNb3ZlKHN0YWNrKSkKICAgICB7CiAgICAg
fQpAQCAtMTI1LDE3ICsxMTgsMTkgQEAgdm9pZCBSZWplY3RlZFByb21pc2VUcmFja2VyOjpwcm9t
aXNlUmVqZWN0ZWQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QKIHsKICAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwj
dGhlLWhvc3Rwcm9taXNlcmVqZWN0aW9udHJhY2tlci1pbXBsZW1lbnRhdGlvbgogCi0gICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKLSAgICBKU1ZhbHVlIHJlYXNvbiA9IHByb21pc2UucmVzdWx0KHZt
KTsKLSAgICBtX2Fib3V0VG9CZU5vdGlmaWVkUmVqZWN0ZWRQcm9taXNlcy5hcHBlbmQoVW5oYW5k
bGVkUHJvbWlzZSB7IHZtLCBnbG9iYWxPYmplY3QsIHByb21pc2UsIGNyZWF0ZVNjcmlwdENhbGxT
dGFja0Zyb21SZWFzb24oc3RhdGUsIHJlYXNvbikgfSk7CisgICAgSlNWYWx1ZSByZWFzb24gPSBw
cm9taXNlLnJlc3VsdChzdGF0ZS52bSgpKTsKKyAgICBtX2Fib3V0VG9CZU5vdGlmaWVkUmVqZWN0
ZWRQcm9taXNlcy5hcHBlbmQoVW5oYW5kbGVkUHJvbWlzZSB7IGdsb2JhbE9iamVjdCwgcHJvbWlz
ZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRnJvbVJlYXNvbihzdGF0ZSwgcmVhc29uKSB9KTsKIH0K
IAotdm9pZCBSZWplY3RlZFByb21pc2VUcmFja2VyOjpwcm9taXNlSGFuZGxlZChFeGVjU3RhdGUm
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UmIHByb21p
c2UpCit2b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnByb21pc2VIYW5kbGVkKEV4ZWNTdGF0
ZSYsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSYgcHJvbWlzZSkK
IHsKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBh
cGlzLmh0bWwjdGhlLWhvc3Rwcm9taXNlcmVqZWN0aW9udHJhY2tlci1pbXBsZW1lbnRhdGlvbgog
CiAgICAgYm9vbCByZW1vdmVkID0gbV9hYm91dFRvQmVOb3RpZmllZFJlamVjdGVkUHJvbWlzZXMu
cmVtb3ZlRmlyc3RNYXRjaGluZyhbJl0gKFVuaGFuZGxlZFByb21pc2UmIHVuaGFuZGxlZFByb21p
c2UpIHsKLSAgICAgICAgcmV0dXJuICZ1bmhhbmRsZWRQcm9taXNlLnByb21pc2UoKSA9PSAmcHJv
bWlzZTsKKyAgICAgICAgYXV0byYgZG9tUHJvbWlzZSA9IHVuaGFuZGxlZFByb21pc2UucHJvbWlz
ZSgpOworICAgICAgICBpZiAoZG9tUHJvbWlzZS5pc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gZG9tUHJvbWlzZS5wcm9taXNlKCkgPT0gJnBy
b21pc2U7CiAgICAgfSk7CiAgICAgaWYgKHJlbW92ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0
Myw5ICsxMzgsNyBAQCB2b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnByb21pc2VIYW5kbGVk
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JgogICAgIGlmICghbV9vdXRzdGFu
ZGluZ1JlamVjdGVkUHJvbWlzZXMucmVtb3ZlKCZwcm9taXNlKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLQotICAgIG1fY29udGV4dC5wb3N0VGFzayhbdGhp
cywgcmVqZWN0ZWRQcm9taXNlID0gUmVqZWN0ZWRQcm9taXNlIHsgdm0sIGdsb2JhbE9iamVjdCwg
cHJvbWlzZSB9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgIG1fY29u
dGV4dC5wb3N0VGFzayhbdGhpcywgcmVqZWN0ZWRQcm9taXNlID0gUmVqZWN0ZWRQcm9taXNlIHsg
Z2xvYmFsT2JqZWN0LCBwcm9taXNlIH1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJs
ZSB7CiAgICAgICAgIHJlcG9ydFJlamVjdGlvbkhhbmRsZWQoV1RGTW92ZShyZWplY3RlZFByb21p
c2UpKTsKICAgICB9KTsKIH0KQEAgLTE3MSw4ICsxNjQsMTEgQEAgdm9pZCBSZWplY3RlZFByb21p
c2VUcmFja2VyOjpyZXBvcnRVbmhhbmRsZWRSZWplY3Rpb25zKFZlY3RvcjxVbmhhbmRsZWRQcm9t
aXNlPiYKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKIAogICAgIGZvciAoYXV0byYg
dW5oYW5kbGVkUHJvbWlzZSA6IHVuaGFuZGxlZFByb21pc2VzKSB7Ci0gICAgICAgIEV4ZWNTdGF0
ZSYgc3RhdGUgPSAqdW5oYW5kbGVkUHJvbWlzZS5nbG9iYWxPYmplY3QoKS5nbG9iYWxFeGVjKCk7
Ci0gICAgICAgIGF1dG8mIHByb21pc2UgPSB1bmhhbmRsZWRQcm9taXNlLnByb21pc2UoKTsKKyAg
ICAgICAgUmVmPERPTVByb21pc2U+IGRvbVByb21pc2UgPSB1bmhhbmRsZWRQcm9taXNlLnByb21p
c2UoKTsKKyAgICAgICAgaWYgKGRvbVByb21pc2UtPmlzU3VzcGVuZGVkKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgRXhlY1N0YXRlJiBzdGF0ZSA9ICpkb21Qcm9taXNlLT5nbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBhdXRvJiBwcm9taXNlID0gKmRvbVBy
b21pc2UtPnByb21pc2UoKTsKIAogICAgICAgICBpZiAocHJvbWlzZS5pc0hhbmRsZWQodm0pKQog
ICAgICAgICAgICAgY29udGludWU7CkBAIC0xODcsNyArMTgzLDcgQEAgdm9pZCBSZWplY3RlZFBy
b21pc2VUcmFja2VyOjpyZXBvcnRVbmhhbmRsZWRSZWplY3Rpb25zKFZlY3RvcjxVbmhhbmRsZWRQ
cm9taXNlPiYKICAgICAgICAgYm9vbCBuZWVkc0RlZmF1bHRBY3Rpb24gPSB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoZXZlbnQpOwogCiAgICAgICAgIGlmIChuZWVkc0RlZmF1bHRBY3Rpb24pCi0gICAg
ICAgICAgICBtX2NvbnRleHQucmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbihzdGF0ZSwg
dW5oYW5kbGVkUHJvbWlzZS5wcm9taXNlKCksIHVuaGFuZGxlZFByb21pc2UuY2FsbFN0YWNrKCkp
OworICAgICAgICAgICAgbV9jb250ZXh0LnJlcG9ydFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24o
c3RhdGUsIHByb21pc2UsIHVuaGFuZGxlZFByb21pc2UuY2FsbFN0YWNrKCkpOwogCiAgICAgICAg
IGlmICghcHJvbWlzZS5pc0hhbmRsZWQodm0pKQogICAgICAgICAgICAgbV9vdXRzdGFuZGluZ1Jl
amVjdGVkUHJvbWlzZXMuc2V0KCZwcm9taXNlLCAmcHJvbWlzZSk7CkBAIC0yMDEsMTEgKzE5Nywx
NiBAQCB2b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9ydFJlamVjdGlvbkhhbmRsZWQo
UmVqZWN0ZWRQcm9taXNlJiYgcmVqZWN0ZWRQcgogICAgIFZNJiB2bSA9IG1fY29udGV4dC52bSgp
OwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCi0gICAgRXhlY1N0YXRlJiBzdGF0
ZSA9ICpyZWplY3RlZFByb21pc2UuZ2xvYmFsT2JqZWN0KCkuZ2xvYmFsRXhlYygpOworICAgIFJl
ZjxET01Qcm9taXNlPiBkb21Qcm9taXNlID0gcmVqZWN0ZWRQcm9taXNlLnByb21pc2UoKTsKKyAg
ICBpZiAoZG9tUHJvbWlzZS0+aXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
RXhlY1N0YXRlJiBzdGF0ZSA9ICpkb21Qcm9taXNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpOworICAgIGF1dG8mIHByb21pc2UgPSAqZG9tUHJvbWlzZS0+cHJvbWlzZSgpOwogCiAgICAg
UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IGluaXRpYWxpemVyOwotICAgIGluaXRpYWxpemVy
LnByb21pc2UgPSAmcmVqZWN0ZWRQcm9taXNlLnByb21pc2UoKTsKLSAgICBpbml0aWFsaXplci5y
ZWFzb24gPSByZWplY3RlZFByb21pc2UucHJvbWlzZSgpLnJlc3VsdChzdGF0ZS52bSgpKTsKKyAg
ICBpbml0aWFsaXplci5wcm9taXNlID0gJnByb21pc2U7CisgICAgaW5pdGlhbGl6ZXIucmVhc29u
ID0gcHJvbWlzZS5yZXN1bHQodm0pOwogCiAgICAgYXV0byBldmVudCA9IFByb21pc2VSZWplY3Rp
b25FdmVudDo6Y3JlYXRlKHN0YXRlLCBldmVudE5hbWVzKCkucmVqZWN0aW9uaGFuZGxlZEV2ZW50
LCBpbml0aWFsaXplcik7CiAgICAgYXV0byB0YXJnZXQgPSBtX2NvbnRleHQuZXJyb3JFdmVudFRh
cmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggODlm
OGVkYjE4MzVkOWQ2MjJkMzcwNGYxNDZiOTFiN2JhZTRlMTAxYi4uOTQ3NGU0MjAyMjMxNGJmNjc3
ODU2MTYyZjQzZjA4MDRiMjViODhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNET01FcnJvci5o
IgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGFuZ3Vh
Z2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlUmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlzZXMoKQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlamVjdFBlbmRpbmdQbGF5UHJvbWlzZXMoRE9NRXJyb3Im
IGVycm9yKQogewotICAgIFZlY3RvcjxET01Qcm9taXNlPHZvaWQ+PiBwZW5kaW5nUGxheVByb21p
c2VzID0gV1RGTW92ZShtX3BlbmRpbmdQbGF5UHJvbWlzZXMpOworICAgIFZlY3RvcjxET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4+IHBlbmRpbmdQbGF5UHJvbWlzZXMgPSBXVEZNb3ZlKG1fcGVuZGlu
Z1BsYXlQcm9taXNlcyk7CiAKICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBwZW5kaW5nUGxheVBy
b21pc2VzKQogICAgICAgICBwcm9taXNlLnJlamVjdFR5cGU8SURMSW50ZXJmYWNlPERPTUVycm9y
Pj4oZXJyb3IpOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpy
ZWplY3RQZW5kaW5nUGxheVByb21pc2VzKERPTUVycm9yJiBlcnJvcikKIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZXNvbHZlUGVuZGluZ1BsYXlQcm9taXNlcygpCiB7Ci0gICAgVmVjdG9yPERP
TVByb21pc2U8dm9pZD4+IHBlbmRpbmdQbGF5UHJvbWlzZXMgPSBXVEZNb3ZlKG1fcGVuZGluZ1Bs
YXlQcm9taXNlcyk7CisgICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcGVuZGlu
Z1BsYXlQcm9taXNlcyA9IFdURk1vdmUobV9wZW5kaW5nUGxheVByb21pc2VzKTsKIAogICAgIGZv
ciAoYXV0byYgcHJvbWlzZSA6IHBlbmRpbmdQbGF5UHJvbWlzZXMpCiAgICAgICAgIHByb21pc2Uu
cmVzb2x2ZSgpOwpAQCAtMzEzNiw3ICszMTM2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYgcHJlbG9hZCkKICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKHByZWxvYWRBdHRyLCBwcmVsb2FkKTsKIH0KIAotdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpwbGF5KERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpwbGF5KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGxheSglcCkiLCB0aGlzKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA5NmUwYTk1ZDY4OGU4MmE0ZTI3
MDk4YmU5YzE1NTQxNTk2NDQxMzAxLi4xOGQ2ZmJmYmQ5ZDVmOTM5ZThiZDA3ZjhlYzZhNzU0M2Jl
ODk3OTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTMsNyAr
OTMsNyBAQCBjbGFzcyBWaWRlb1RyYWNrTGlzdDsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwog
Y2xhc3MgV2ViS2l0TWVkaWFLZXlzOwogCi10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRE9NUHJv
bWlzZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiB1c2luZyBDdWVJbnRlcnZhbFRyZWUgPSBQT0RJbnRlcnZh
bFRyZWU8TWVkaWFUaW1lLCBUZXh0VHJhY2tDdWUqPjsKQEAgLTIzOCw3ICsyMzgsNyBAQCBjbGFz
cyBIVE1MTWVkaWFFbGVtZW50CiAgICAgYm9vbCBsb29wKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRM
b29wKGJvb2wgYik7CiAKLSAgICB2b2lkIHBsYXkoRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2
b2lkIHBsYXkoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZSgp
IG92ZXJyaWRlOwpAQCAtODcxLDcgKzg3MSw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICAg
ICBSZWZQdHI8VGltZVJhbmdlcz4gbV9wbGF5ZWRUaW1lUmFuZ2VzOwogICAgIEdlbmVyaWNFdmVu
dFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwogCi0gICAgVmVjdG9yPERPTVByb21pc2U8dm9pZD4+
IG1fcGVuZGluZ1BsYXlQcm9taXNlczsKKyAgICBWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+PiBtX3BlbmRpbmdQbGF5UHJvbWlzZXM7CiAKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRQbGF5
YmFja1JhdGUgeyAxIH07CiAgICAgZG91YmxlIG1fcmVwb3J0ZWRQbGF5YmFja1JhdGUgeyAxIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29t
bWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNv
bW1hbmRCdWZmZXIuaAppbmRleCBiZjExYzNmZjYxOGYxNWE0NzAyNTU5OGFhMmJlZmRlYWVmOGE3
YTczLi5lODNkNjBmODU0OGU3ZDNjYmQ5YTg2NDQ0ZjcwODg3MTBmNjM1NmRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVm
ZmVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKLSNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBiYThhMjE1Y2NjM2E4NWIyYThlMWYxMDM3OTdk
NmE1OGFmNjQyMGJjLi44MzdhNTQyODNjZGVmYjMxYjFlZjEzMjU4MjcyZDNjNTczZjY2Zjk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRl
ICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiSlNE
T01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRl
ICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
ICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgpAQCAtNTczLDcgKzU3Myw3IEBAIGNs
YXNzIEludGVybmFscyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVybmFscz4sICBwcml2
YXRlIENvbnRleHREZXN0cnVjdGlvCiAgICAgdW5zaWduZWQgbG9uZyB0cmFja0F1ZGlvU2FtcGxl
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrQXVkaW9TYW1wbGVDb3VudDsgfQogICAgIHVu
c2lnbmVkIGxvbmcgdHJhY2tWaWRlb1NhbXBsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV90cmFj
a1ZpZGVvU2FtcGxlQ291bnQ7IH0KICAgICB2b2lkIG9ic2VydmVNZWRpYVN0cmVhbVRyYWNrKE1l
ZGlhU3RyZWFtVHJhY2smKTsKLSAgICB1c2luZyBUcmFja0ZyYW1lUHJvbWlzZSA9IERPTVByb21p
c2U8SURMSW50ZXJmYWNlPEltYWdlRGF0YT4+OworICAgIHVzaW5nIFRyYWNrRnJhbWVQcm9taXNl
ID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxJbWFnZURhdGE+PjsKICAgICB2b2lk
IGdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKFRyYWNrRnJhbWVQcm9taXNlJiYpOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA0OTczM2I5N2QwM2U4ZTQ2MGIyZDcyZGIwODA0ZmMwY2M3OTU4ZTE2Li5l
MjlmMzlhMTJmMTQxMjJhNzE0NDQxMDZiODViMTBmZjg3ZTRkYzZlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTctMDUtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgSGFuZGxlIElETFByb21pc2U8PiBwcm9wZXJseQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vcHJvbWlzZS1yZWplY3Rp
b24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vcHJvbWlzZS1yZWplY3Rpb24tZXZl
bnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUuaHRtbDogQWRk
ZWQuCisKIDIwMTctMDUtMDQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIGltcG9ydFNjcmlwdHMoKSBzaG91bGQgcmVzcGVjdCBYLUNvbnRlbnQtVHlwZS1PcHRp
b25zOiBub3NuaWZmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcHJvbWlzZS1yZWpl
Y3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50
LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lvbi1ydWxlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNGUzOTc3N2MyY2E5MmJiNWQ2NjhlMGYyMTI2YzJmMjI0NmI1NWVjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21pc2UtcmVqZWN0aW9uLWV2
ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lvbi1ydWxlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IFByb21pc2VSZWplY3Rpb25FdmVudCBjb25zdHJ1
Y3RvciBmb2xsb3dzIFdlYklETCBwcm9taXNlIGNvbnZlcnNpb24gcnVsZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGV2ZW50LnByb21pc2UgaXMgYW4gaW5zdGFuY2Ugb2Yg
UHJvbWlzZQorUEFTUyBldmVudC5yZWFzb24gaXMgIkNhcHB1Y2Npbm8iCitQQVNTIHZhbHVlIGlz
IDQyCitQQVNTIGV2ZW50LnByb21pc2UgaXMgYW4gaW5zdGFuY2Ugb2YgUHJvbWlzZQorUEFTUyBl
dmVudC5wcm9taXNlIGlzIHByb21pc2UKK1BBU1MgZXZlbnQucmVhc29uIGlzICJDb2NvYSIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcHJvbWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZv
bGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUuaHRtbCBiL0xheW91dFRlc3RzL2pz
L2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNl
LWNvbnZlcnNpb24tcnVsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMDcwYTM0OWYwMTc4YWNmZGUwN2Jm
NTQxYTQ2Y2UwY2MxZTFjMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20v
cHJvbWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252
ZXJzaW9uLXJ1bGUuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJv
bWlzZVJlamVjdGlvbkV2ZW50IGNvbnN0cnVjdG9yIGZvbGxvd3MgV2ViSURMIHByb21pc2UgY29u
dmVyc2lvbiBydWxlLicpOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZXZl
bnQgPSBudWxsOwordmFyIHZhbHVlID0gbnVsbDsKK3ZhciBwcm9taXNlID0gbnVsbDsKKworZXZl
bnQgPSBuZXcgUHJvbWlzZVJlamVjdGlvbkV2ZW50KCJyZWplY3Rpb25oYW5kbGVkIiwgeworICAg
IHByb21pc2U6IDQyLAorICAgIHJlYXNvbjogYENhcHB1Y2Npbm9gCit9KTsKK3Nob3VsZEJlVHlw
ZShgZXZlbnQucHJvbWlzZWAsIGBQcm9taXNlYCk7CitzaG91bGRCZShgZXZlbnQucmVhc29uYCwg
YCJDYXBwdWNjaW5vImApOworZXZlbnQucHJvbWlzZS50aGVuKGZ1bmN0aW9uICh2KSB7CisgICAg
dmFsdWUgPSB2OworICAgIHNob3VsZEJlKGB2YWx1ZWAsIGA0MmApOworCisgICAgcHJvbWlzZSA9
IFByb21pc2UucmVzb2x2ZSg0Mik7CisgICAgZXZlbnQgPSBuZXcgUHJvbWlzZVJlamVjdGlvbkV2
ZW50KCJyZWplY3Rpb25oYW5kbGVkIiwgeworICAgICAgICBwcm9taXNlOiBwcm9taXNlLAorICAg
ICAgICByZWFzb246IGBDb2NvYWAKKyAgICB9KTsKKworICAgIHNob3VsZEJlVHlwZShgZXZlbnQu
cHJvbWlzZWAsIGBQcm9taXNlYCk7CisgICAgc2hvdWxkQmUoYGV2ZW50LnByb21pc2VgLCBgcHJv
bWlzZWApOworICAgIHNob3VsZEJlKGBldmVudC5yZWFzb25gLCBgIkNvY29hImApOworICAgIGZp
bmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309098</attachid>
            <date>2017-05-04 13:42:18 -0700</date>
            <delta_ts>2017-05-08 20:41:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166752-20170505054216.patch</filename>
            <type>text/plain</type>
            <size>142339</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NzY0Yjk4ZmNjZGY0NjhhMzZmMmRkYWRlMTRkMTcwZGNlOTExNzM2Li4yOGMwYzU4ZWU5ZGRhY2Q0
ZDhhNGM2ZjczNGFjYmUxODVhNGM3MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNy0wNS0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSlNQcm9taXNlOjpyZXNv
bHZlIHN0YXRpYyBmdW5jdGlvbi4KKyAgICAgICAgVGhpcyBhcHBsaWVzIGBQcm9taXNlLnJlc29s
dmUoKWAgY29udmVyc2lvbiB0byBhIGdpdmVuIHZhbHVlLgorCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnByb21pc2VSZXNvbHZlRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZS5oOgorCiAyMDE3LTA1LTA0ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVu
QHlhbmRleC5ydT4KIAogICAgICAgICBGaXggY29tcGlsYXRpb24gd2l0aCBJQ1UgNTkuMQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDJiNTVjMWZlN2VhZWVmZWEwZGNhODQ0MjIxYTA5YzJhYjQ1YWExODIuLmI4ZWE3
OWYyNWIzMGViM2Q3ODQ4YTY3OThmYjY4OWQ4ODhmZDcwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMDMgQEAKKzIwMTctMDUtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgSGFuZGxlIElETFByb21pc2U8PiBwcm9wZXJseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRz
IFdlYklETCBQcm9taXNlIHR5cGUgY29udmVyc2lvbi4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjLAor
ICAgICAgICBQcm9taXNlIHRha2VzIGEgdmFsdWUgYW5kIGNvbnZlcnQgaXQgdG8gUHJvbWlzZSBi
eSB1c2luZyBQcm9taXNlLnJlc29sdmUgZnVuY3Rpb24uCisgICAgICAgIFdlIGltcGxlbWVudCBK
U1Byb21pc2U6OnJlc29sdmUgaW4gSlNDIGFuZCB1c2UgaXQgaW4gSlNET01Db252ZXJ0UHJvbWlz
ZS4KKworICAgICAgICBJbiBjb252ZXJzaW9uIHBoYXNlLCB3ZSBqdXN0IGNvbnZlcnQgdGhlIHZh
bHVlIHRvIEpTQzo6SlNQcm9taXNlKiBhbmQgaG9sZCBpdCBpbgorICAgICAgICBQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuIE9uIHRoZSBvdGhlciBoYW5kLCBJbiB0aGlzIHBhdGNoLCB3ZSBuZXdseSBp
bnRyb2R1Y2UgYSBuZXcKKyAgICAgICAgdHlwZSBET01Qcm9taXNlIGFuZCB1c2UgaXQgaW4gUmVq
ZWN0ZWRQcm9taXNlVHJhY2tlci4gQW5kIHdlIGFsc28gcmVuYW1lIHRoZSBwcmV2aW91cworICAg
ICAgICBET01Qcm9taXNlIHRvIERPTVByb21pc2VEZWZlcnJlZCBzaW5jZSBpdCBpcyBjb3JyZXNw
b25kaW5nIHRvIEpTUHJvbWlzZURlZmVycmVkLgorICAgICAgICBET01Qcm9taXNlIGlzIERPTUd1
YXJkZWQgb2JqZWN0LiBTbyBpdCBpcyBzdHJvbmdseSByZWZlcmVuY2VkIGZyb20gU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dAorICAgICAgICBhbmQgaXQgaXMgd2Vha2x5IHJlZmVyZW5jZWQgZnJvbSB0
aGUgb2JqZWN0IGl0c2VsZi4gVGhpcyBpcyBpbXBvcnRhbnQgc2luY2UgU3Ryb25nPEpTUHJvbWlz
ZT4KKyAgICAgICAgcmVmZXJlbmNlIGluIEMrKyBvYmplY3QgdGhhdCBoYXMgYSB3cmFwcGVyIChp
biB0aGlzIGNhc2UsIFByb21pc2VSZWplY3Rpb25FdmVudCkgZWFzaWx5IGNhdXNlcworICAgICAg
ICBjeWNsaWMgcmVmZXJlbmNlLiBXZSBob2xkIGl0IGFzIERPTVByb21pc2UgaW5zdGVhZCBvZiBT
dHJvbmc8SlNQcm9taXNlPiBpbiBSZWplY3RlZFByb21pc2VUcmFja2VyCisgICAgICAgIHRvIGJy
ZWFrIHRoZSBjeWNsaWMgcmVmZXJlbmNlIGVkZ2Ugd2l0aCB3ZWFrIHJlZmVyZW5jZS4KKworICAg
ICAgICBJbiB0aGUgbWVhbnRpbWUsIHdlIHN0aWxsIHVzZSBKU0M6OlN0cm9uZzw+IGluIFByb21p
c2VSZWplY3Rpb25FdmVudC4gSXQgbGVha3MgbWVtb3J5IGlmIHByb21pc2UKKyAgICAgICAgcmVm
ZXJzIHRoZSB3cmFwcGVyIG9iamVjdCBvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQuIEN1c3RvbUV2
ZW50IGFsc28gaGFzIHRoZSBzYW1lIHByb2JsZW0uCisgICAgICAgIFRoaXMgaXMgYSBnZW5lcmFs
IHByb2JsZW0gdGhhdCBgYXR0cmlidXRlIGFueWAgY2FuIGNyZWF0ZSBjeWNsaWMgcmVmZXJlbmNl
LiBBbmQgdGhleSBzaG91bGQgYmUKKyAgICAgICAgZml4ZWQgaW4gYSBkaWZmZXJlbnQgcGF0Y2gu
CisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBkbyBub3QgdGFrZSB0aGUgZm9sbG93aW5nIGFwcHJv
YWNoLiBlLmcuIFRoZXJlIGlzIEMrKyBvYmplY3QgdGhhdCByZXByZXNlbnRzIFByb21pc2UuCisg
ICAgICAgIEFuZCBpdHMgd3JhcHBlciBvYmplY3QgaXMgSlNQcm9taXNlIHRoaW5nLiBXaGVuIGV4
cG9zaW5nIHRoZSBDKysgb2JqZWN0LCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhCisgICAgICAg
IHdyYXBwZXIgb2JqZWN0LiBXZSBkbyBub3QgdGFrZSB0aGlzIGFwcHJvYWNoIGJlY2F1c2UgUHJv
bWlzZVJlamVjdGlvbkV2ZW50IGNhbiB0YWtlIHVzZXItcHJvdmlkZWQgcHJvbWlzZS4KKyAgICAg
ICAgRm9yIGV4YW1wbGUsIHVzZXJzIGNhbiBjcmVhdGUgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGlu
IGEgZm9ybQorICAgICAgICBgbmV3IFByb21pc2VSZWplY3Rpb25FdmVudCgiLi4uIiwgeyBwcm9t
aXNlOiBwcm9taXNlIH0pYC4gSW4gdGhpcyBjYXNlLCBgZXZlbnQucHJvbWlzZSA9PT0gcHJvbWlz
ZWAKKyAgICAgICAgaXMgcmVxdWlyZWQuIEFuZCB0aGlzIGlzIG5vdCBzdWl0YWJsZSBmb3IgdGhl
IGFib3ZlIEMrKyBvYmplY3QgbW9kZWwuCisKKyAgICAgICAgTGFyZ2UgcGFydCBvZiB0aGlzIHBh
dGNoIGlzIG1lY2hhbmljYWwgb25lIHRvIHJlcGxhY2UgRE9NUHJvbWlzZSB3aXRoIERPTVByb21p
c2VEZWZlcnJlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2
aWdhdG9yRU1FLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvV29ya2VyR2xvYmFsU2NvcGVGZXRj
aC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmg6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNl
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpy
ZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjph
cHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNl
dExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1Bl
ZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRyYWNr
VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNr
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVl
c3Q6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRp
YVJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OnJlcGxhY2VUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAg
ICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6YWRkUmVh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9Db250ZXh0OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpj
bG9zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNvbnZlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNvbnZlcnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpwcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVByb21pc2U6OkRPTVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9t
aXNlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNl
OjpyZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6
cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVm
ZXJyZWRQcm9taXNlOjpyZWplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRQcm9taXNlOjpyZXNvbHZlV2l0aENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0V2l0aENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6RGVmZXJyZWRQcm9taXNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6ZGVmZXJyZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJhc2U6OkRPTVByb21pc2VCYXNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VCYXNlOjpvcGVyYXRvcj0pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJhc2U6OnJlamVjdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6cmVqZWN0VHlwZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6cHJvbWlzZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpyZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVByb21pc2U8dm9pZD46OnJlc29sdmUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y2FsbFByb21pc2VGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpi
aW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRlcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVy
cmVkUHJvbWlzZTo6cHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpyZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURlZmVycmVkUHJvbWlzZSk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVSZWplY3RlZFByb21pc2VXaXRoVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlQXNKU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmZ1bGZpbGxQcm9taXNlV2l0aEpT
T04pOgorICAgICAgICAoV2ViQ29yZTo6ZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oLgorICAgICAgICAoV2Vi
Q29yZTo6RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6
cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9t
aXNlOjpyZWplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZl
V2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0
V2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6RGVmZXJy
ZWRQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6ZGVmZXJyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6RE9NUHJvbWlzZURl
ZmVycmVkQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpv
cGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cmVq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VEZWZlcnJlZEJhc2U6OnJlamVjdFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cHJvbWlzZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+OjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbGxQcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6YmluZGlu
Z1Byb21pc2VGdW5jdGlvbkFkYXB0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRC
dWZmZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5
cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0RGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0Pik6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRQcm90b3R5cGU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50OjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVByb3Rv
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnBy
b3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudD46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OndyYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9K
Uyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5pZGw6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNs
aWVudC5oLgorICAgICAgICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFj
ZVNldC5oOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaDoKKyAgICAgICAg
KiBkb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL1JlamVjdGVkUHJv
bWlzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlOjpSZWpl
Y3RlZFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlOjpwcm9taXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlVuaGFuZGxlZFByb21pc2U6OlVuaGFuZGxlZFByb21pc2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlzZVJlamVj
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnByb21pc2VI
YW5kbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9y
dFVuaGFuZGxlZFJlamVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNl
VHJhY2tlcjo6cmVwb3J0UmVqZWN0aW9uSGFuZGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWpl
Y3RlZFByb21pc2U6Omdsb2JhbE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
amVjdFBlbmRpbmdQbGF5UHJvbWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6cmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6cGxheSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaDoKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorCiAyMDE3LTA1LTA0ICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChTYWZhcmkgMTAuMSk6
IFdoZW4gJ3RyYW5zaXRpb24nIGNvbnRhaW5zIC1tcy10cmFuc2Zvcm0sIHRyYW5zZm9ybS1vcmln
aW4gaXMgYWxzbyB0cmFuc2l0aW9uZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBhNGFiODdjNGRiZDE5MzEyY2I5OWFjYTg2NmJk
YmRkMjI1OTY2ZTY0Li41MjdmMzJiNTU0NTFhZGFhNTUzNDAxZWU4MTUzOWI5NDJkM2ViYTJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC00MjgsNiArNDI4LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKGlu
aXQudm0sIGl0ZXJhdG9ySGVscGVyc1BlcmZvcm1JdGVyYXRpb25Db2RlR2VuZXJhdG9yKGluaXQu
dm0pLCBpbml0Lm93bmVyKSk7CiAgICAgICAgIH0pOwogCisgICAgbV9wcm9taXNlUmVzb2x2ZUZ1
bmN0aW9uLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rp
b24+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGVCdWls
dGluRnVuY3Rpb24oaW5pdC52bSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0
b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKKyAgICAgICAgfSk7CisKICAgICBtX25ld1Byb21p
c2VDYXBhYmlsaXR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWls
dGluRnVuY3Rpb24odm0sIHByb21pc2VPcGVyYXRpb25zTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2Rl
R2VuZXJhdG9yKHZtKSwgdGhpcykpOwogICAgIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3lt
Ym9sRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKICAg
ICBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmluaXRMYXRlcigKQEAgLTExODcsNiArMTE5
Miw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNG
dW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2luaXRpYWxpemVQcm9t
aXNlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclBy
b3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9wcm9taXNl
UmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5j
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCA3ZTlmZWNiNzFhYjEzYTBlYjE4ZjQyN2RlMzg4MDU4MTAzZWJlNThlLi5iMzNkNmQz
NTY0MmFlMzNmZGUxNjI1YjhiZDg3OGZiMzgwZmM5NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI2NSw2ICsyNjUsNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1Zh
bHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlv
bj4gbV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb247CisgICAgTGF6
eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3Byb21pc2VSZXNvbHZlRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fb2JqZWN0UHJvdG9WYWx1ZU9m
RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbmV3UHJvbWlzZUNhcGFi
aWxpdHlGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9mdW5jdGlvblBy
b3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbjsKQEAgLTUxNSw2ICs1MTYsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBK
U0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Fy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBpbml0
aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplUHJvbWlz
ZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGl0ZXJhdG9yUHJvdG9jb2xG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmdldCh0
aGlzKTsgfQorICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5j
dGlvbiogb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX29iamVj
dFByb3RvVmFsdWVPZkZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlz
ZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV3UHJvbWlzZUNhcGFiaWxp
dHlGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0
YW5jZVN5bWJvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5z
dGFuY2VTeW1ib2xGdW5jdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZS5jcHAKaW5kZXggYTgzZDJiZjUyZjc2YTg0ZmVhNzBjZGIxNDYzN2Y5ZTIw
NzRmMjMxYi4uNjFhNzNlZTM1Y2ZkOTdmZDViMjg3ZWExOTI4NWRkNzg3MzA0ODgwNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCkBAIC05Miw0ICs5Miwy
MyBAQCBib29sIEpTUHJvbWlzZTo6aXNIYW5kbGVkKFZNJiB2bSkgY29uc3QKICAgICByZXR1cm4g
dmFsdWUuYXNCb29sZWFuKCk7CiB9CiAKK0pTUHJvbWlzZSogSlNQcm9taXNlOjpyZXNvbHZlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgRXhlY1N0
YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBKU0Z1bmN0aW9uKiBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5wcm9t
aXNlUmVzb2x2ZUZ1bmN0aW9uKCk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHByb21pc2VSZXNvbHZlRnVuY3Rpb24sIGNh
bGxEYXRhKTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworCisgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQodmFs
dWUpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBwcm9taXNlUmVzb2x2ZUZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbE9iamVjdC0+cHJvbWlzZUNvbnN0cnVjdG9y
KCksIGFyZ3VtZW50cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CisgICAgQVNTRVJUKHJlc3VsdC5pbmhlcml0cyh2bSwgSlNQcm9taXNlOjppbmZvKCkpKTsKKyAg
ICByZXR1cm4ganNDYXN0PEpTUHJvbWlzZSo+KHJlc3VsdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAppbmRleCBjN2Q3
ZDk5Y2FhNGQ4NmQyMmM3ZmFiNDBjYzRmM2QwMDUwNDNiYmMwLi4zNDg0NTRiMjU0MTAyZDU2NTJl
MzliY2MwOTE1NjEyNzU1NTI2NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2UuaApAQCAtNTIsNiArNTIsOCBAQCBjbGFzcyBKU1Byb21pc2UgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiAgICAgLy8gVGhpcyBtYXkgcmFpc2UgYSBKUyBleGNlcHRpb24uCiAg
ICAgdm9pZCBpbml0aWFsaXplKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBl
eGVjdXRvcik7CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNQcm9taXNlKiByZXNv
bHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKIHByb3RlY3RlZDoKICAgICBKU1Byb21p
c2UoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDI4MjViZTQzOGQ4ZjQxOTYxYTM1MDA4MTZiZDU5ZjZjNjIwNzdm
NWMuLjVjOWM5ZDE2YTRlZWFiYzZlNGM3YWY1ODMyMWI0YzhjZDJiOGMzMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0xMTYyLDcgKzExNjIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
RE9NR3VhcmRlZE9iamVjdC5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwCi0g
ICAgYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAppbmRleCA3NDQ5NzkzMGUzYjlhZTg5YTRkM2MzZjBj
ZWFkMDcyNTA1ZTgwMDViLi42MWE5ZTVjYTAxNWRlMWRkZTI4ZGMyYTBmYzAwZTBlZjVhMzk2ZmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNl
c3Npb24uY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2lu
Y2x1ZGUgIkxpbmtJY29uQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiTGlua0ljb25UeXBlLmgiCiAj
aW5jbHVkZSAiTWFpbkZyYW1lLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAwY2U4NzVkODkzNTg1ZWUw
MzljZmJmZDU2ZTJhNmE3YzUyYTIwY2VmLi4wNTkyMjQzOWUxMmYyOTIyMTA4MWUzMmM4NzA2Y2Fk
ZGI1ZjViMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAi
R2VuZXJpY1Rhc2tRdWV1ZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlVHlwZS5o
IgogI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvblR5cGUuaCIKICNpbmNsdWRlICJNZWRpYUtleVN0
YXR1cy5oIgpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBNZWRpYUtleVNlc3Npb24gZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYQogICAgIHZv
aWQgY2xvc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCByZW1vdmUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlz
ZTx2b2lkPjsKKyAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+OwogICAgIHZvaWQgcmVnaXN0ZXJDbG9zZWRQcm9taXNlKENsb3NlZFByb21pc2UmJik7CiAK
ICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0
YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1B
Y2Nlc3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
eXN0ZW1BY2Nlc3MuaAppbmRleCBhMTEzZTI2MDEwMDFlZDY3YmY3Y2JmOGRmZjcwNWIxMjM2NDBl
NWM2Li4wYTNiNmUxZDQ4YzA2OTczYmRkZGNmODhhMzQ1MjE5ZTViNzhmMDQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNj
ZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN5c3RlbUFjY2Vzcy5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKIAogI2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKLSNpbmNsdWRlICJKU0RPTVBy
b21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4
IGJkODBiZDJjOTg0M2E4YWY4ZDdkYmFkNWI4NTM1MjU3ZDkwNTFhZDUuLjlhNTlkMTcxMTRlYzNl
ZGJhNjE0NzE3MDk4YWEyZDRmYmZlMzA4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5j
bHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCi0jaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIK
ICNpbmNsdWRlICJNZWRpYUtleVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuaAppbmRleCA0YzIwNGU5NDFmZmI2ZGYz
YjExZTYzOGFkMjIzN2RkNWE3OTM0OWNkLi44MTY1ZmFlYjFmZmM2ZWFjZGQ0MDRkMDVmOGE1NzI3
MzAyNDBhMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL05hdmlnYXRvckVNRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTmF2aWdhdG9yRU1FLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlv
bi5oIgogI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guaAppbmRleCBiM2QxNTc1N2FhZGIzMmUxMTU4NjE1
MDUzYWMxMzZlZTVkZDJkYzkxLi4xM2JmNzVhMmRjODRiMWYzMjg5YWEyNGFlM2Q2ZjljMWE0ZjE5
ZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0RPTVdpbmRvd0Zl
dGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5o
CkBAIC0zMCw3ICszMCw3IEBACiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCi0jaW5jbHVkZSAi
SlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBmZWVhNmRjZjE2Nzc1NzE1ZDZiOWJmMjcx
N2QxZDBiYTg1MmEyMGE2Li44MmI4MzljNmRjOTIyMzA3ZjM2NzZjODMwMzdkY2M4MDhhZTZkNjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTM0LDcgKzM0
LDcgQEAKICNpbmNsdWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIkZldGNoTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIK
KyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlVSTFNlYXJjaFBh
cmFtcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmgKaW5kZXggNGEwZmIzOWYxMGU2MGMyY2M2YjFkNDk4ZDgxNDgyNGZlNzk3MjU0Mi4uMzhiNzY4
OWVkZTJlOTFhYjdhZWViZjcyNjBmYjQ0MzBlNWJjMzhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtMzAsNyArMzAsNyBAQAog
CiAjaWYgRU5BQkxFKEZFVENIX0FQSSkKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmgKaW5kZXggZjVhOWUyNzE3MDY0ZTFmYzI2YmFkN2IyMzNkMjVhNTlmNDAy
YzAxMC4uYTkwNjM3ZmJiY2Q0ZjE1MzQ3NjEzNTkxMWQxOTc4MmIxMDJmMTYwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTUyLDcgKzUyLDcg
QEAgY2xhc3MgRmV0Y2hSZXNwb25zZSBmaW5hbCA6IHB1YmxpYyBGZXRjaEJvZHlPd25lciB7CiAg
ICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBlcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik7CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gcmVkaXJlY3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhdHVzKTsK
IAotICAgIHVzaW5nIEZldGNoUHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPEZldGNo
UmVzcG9uc2U+PjsKKyAgICB1c2luZyBGZXRjaFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8
SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+PjsKICAgICBzdGF0aWMgdm9pZCBmZXRjaChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hQcm9taXNlJiYpOwogCiAg
ICAgdm9pZCBjb25zdW1lKHVuc2lnbmVkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvV29ya2VyR2xvYmFsU2NvcGVGZXRj
aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNo
LmgKaW5kZXggNWJiYjI4Yjg4NTNiZjIxMWE3ZDgyOGU2ZDgwYTkxOWQwZWFlZWZiNS4uNDc3MDY5
ZjM0NGI5OWQ0ZDJkY2Q5MmQ5MzJlYWM1YTUxODM0Zjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmgKQEAgLTMwLDcg
KzMwLDcgQEAKIAogI2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKLSNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5oCmluZGV4IDI4NTVlYTUyZDRlZDMyM2NjMjU4MDkxNGM3ZWUwY2FmYTc3MmVlZDgu
LjkzZjkzODBmZTY2Nzc5ZDMxMmM4M2M2MTEwNTViNWE5ZDdjMDhiZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaApAQCAtMzUsNyAr
MzUsNyBAQAogCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25P
ci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURl
ZmVycmVkLmgiCiAjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAi
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC01Niw4
ICs1Niw4IEBAIGNsYXNzIE1lZGlhRGV2aWNlcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2
aWNlcz4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PCiAKICAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdDsKIAotICAgIHVzaW5nIFByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFj
ZTxNZWRpYVN0cmVhbT4+OwotICAgIHVzaW5nIEVudW1lcmF0ZURldmljZXNQcm9taXNlID0gRE9N
UHJvbWlzZTxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8TWVkaWFEZXZpY2VJbmZvPj4+OworICAg
IHVzaW5nIFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3Ry
ZWFtPj47CisgICAgdXNpbmcgRW51bWVyYXRlRGV2aWNlc1Byb21pc2UgPSBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE1lZGlhRGV2aWNlSW5mbz4+PjsKIAogICAg
IHN0cnVjdCBTdHJlYW1Db25zdHJhaW50cyB7CiAgICAgICAgIFZhcmlhbnQ8Ym9vbCwgTWVkaWFU
cmFja0NvbnN0cmFpbnRzPiB2aWRlbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNw
cAppbmRleCA2ZGZlYzkzMjJmOWI5YzQ0MDhjODc2MTVkMjA4NzkxMzRhYmQyMjE5Li4xZGQwMzli
Y2E4NzQ0NzQ4MDk5M2UwOTEzYmM1M2M3ZDhkMDdmNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb24uY3BwCkBAIC02OTYsNyArNjk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0Rh
dGFDaGFubmVsSGFuZGxlcj4gTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRh
Q2gKICAgICByZXR1cm4gbV9tZWRpYUVuZHBvaW50LT5jcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIo
bGFiZWwsIG9wdGlvbnMpOwogfQogCi12b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6
cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4m
JiB3aXRoVHJhY2ssIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBNZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb246OnJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImIHNlbmRlciwgUmVm
PE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlKQogewogICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9IG1hdGNo
VHJhbnNjZWl2ZXIobV9wZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKSwgWyZzZW5kZXJd
IChSVENSdHBUcmFuc2NlaXZlciYgY3VycmVudCkgewogICAgICAgICByZXR1cm4gJmN1cnJlbnQu
c2VuZGVyKCkgPT0gJnNlbmRlcjsKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIE1lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8
TWVkaWFTdAogICAgIH0pOwogfQogCi12b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6
cmVwbGFjZVRyYWNrVGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwgY29uc3QgU3RyaW5nJiBtaWQs
IFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYgcHJv
bWlzZSkKK3ZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2tUYXNr
KFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBjb25zdCBTdHJpbmcmIG1pZCwgUmVmPE1lZGlhU3RyZWFt
VHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mIHByb21pc2UpCiB7
CiAgICAgaWYgKG1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKaW5kZXggY2U3ZWMzZWQ3OTQzODcyMzUwYjhm
MDdlYWZhNjMyOWI1YjBmN2E2OS4uMWUzMWNkNDUwZmQyNzYxYjIwMjMxZTI0OTliNTE1MjdlMWVh
YTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBA
IGNsYXNzIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBNCiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+
IGdldFJlbW90ZVN0cmVhbXMoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxSVENSdHBSZWNlaXZl
cj4gY3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3Ry
aW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkgZmluYWw7Ci0gICAgdm9pZCBy
ZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVBy
b21pc2U8dm9pZD4mJikgZmluYWw7CisgICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVy
JiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBm
aW5hbDsKIAogICAgIHZvaWQgZW11bGF0ZVBsYXRmb3JtRXZlbnQoY29uc3QgU3RyaW5nJiBhY3Rp
b24pIGZpbmFsOwogCkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIE1lZGlhRW5kcG9pbnRQZWVyQ29u
bmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBNCiAK
ICAgICB2b2lkIGFkZEljZUNhbmRpZGF0ZVRhc2soUlRDSWNlQ2FuZGlkYXRlJik7CiAKLSAgICB2
b2lkIHJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiwgY29uc3QgU3RyaW5nJiBtaWQsIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+Jik7CisgICAgdm9pZCByZXBs
YWNlVHJhY2tUYXNrKFJUQ1J0cFNlbmRlciYsIGNvbnN0IFN0cmluZyYgbWlkLCBSZWY8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Jik7CiAKICAgICBib29sIGxv
Y2FsRGVzY3JpcHRpb25UeXBlVmFsaWRGb3JTdGF0ZShSVENTZHBUeXBlKSBjb25zdDsKICAgICBi
b29sIHJlbW90ZURlc2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUoUlRDU2RwVHlwZSkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcAppbmRleCA2YTZiYTUxNWFlN2VjNDg0MzNiNDE0M2Q3ZWJmYTk5MjNhMjJl
YzRkLi5kZmY0ZWZmZmQxYTdmODg3MDZlZTM5MzgyMDY5ZDM3YTA5MTYwNTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBs
PiBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzSW1wbChjb25zdCBzdGQ6Om9wdGlvbmFsPAogICAgIHJl
dHVybiBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzSW1wbChjb25zdHJhaW50cy52YWx1ZSgpKTsKIH0K
IAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgbV9wcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAppbmRleCAzYjdlYmY5NTM3NTNhMzU0ZmFmNGU5NzY1
ZDI3YWFjODdjMTIxZjg5Li43NTU1NDZlNGM0MTFmM2MzMmIxNGMzZTA5YmU0NzU2OTM2YjYzYTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgogI2luY2x1ZGUgIkRvdWJsZVJhbmdlLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
LSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJl
ZC5oIgogI2luY2x1ZGUgIkxvbmdSYW5nZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCkBAIC0xMDgsNyAr
MTA4LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
U3RyZWFtVHJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NT2IKICAgICBUcmFja0NhcGFiaWxpdGllcyBn
ZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKIAogICAgIGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50
cyYgZ2V0Q29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9Ci0gICAg
dm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0
cmFpbnRzPiYsIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRz
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKTsKIAogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSgpIHsg
cmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlKCk7IH0KICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYgcHJpdmF0ZVRyYWNrKCkgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CkBAIC0xNTIsNyAr
MTUyLDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
U3RyZWFtVHJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NT2IKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+IG1fcHJpdmF0ZTsKIAogICAgIE1lZGlhVHJhY2tDb25zdHJhaW50cyBtX2NvbnN0
cmFpbnRzOwotICAgIHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZTx2b2lkPj4gbV9wcm9taXNlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3Byb21pc2U7CiAg
ICAgV2Vha1B0ckZhY3Rvcnk8TWVkaWFTdHJlYW1UcmFjaz4gbV93ZWFrUHRyRmFjdG9yeTsKIAog
ICAgIGJvb2wgbV9lbmRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXgg
MjI4NTRlYTMwMWMxODI2ZmQ3ODQ5NDUyNzI1ODY4NWUwYjFkMzQwOS4uMjIwMDYxNjIyMjU5N2Nm
ODQwZjRkOGNmYTI3MGZmNTcyNzdiODhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAt
MTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0xvY2FsRGVzY3JpcHRpb25UeXBl
VmFsaWRGb3JTdGF0ZShSVENTZHBUeXBlIHR5cGUsIFJUQ1NpZ25hCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbihS
VENTZXNzaW9uRGVzY3JpcHRpb24mIHNlc3Npb25EZXNjcmlwdGlvbiwgRE9NUHJvbWlzZTx2b2lk
PiYmIHByb21pc2UpCit2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlw
dGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIHNlc3Npb25EZXNjcmlwdGlvbiwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcGVlckNvbm5lY3Rp
b24uaXNDbG9zZWQoKSk7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNSZW1vdGVEZXNjcmlwdGlvblR5cGVWYWxpZEZvclN0YXRlKFJUQ1NkcFR5cGUgdHlwZSwgUlRD
U2lnbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OnNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgc2Vzc2lvbkRlc2Ny
aXB0aW9uLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIHNlc3Np
b25EZXNjcmlwdGlvbiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAg
ICBBU1NFUlQoIW1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSk7CiAKQEAgLTIzNCw3ICsyMzQs
NyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRpb25GYWls
ZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlID0g
c3RkOjpudWxsb3B0OwogfQogCi12b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2Fu
ZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSogaWNlQ2FuZGlkYXRlLCBET01Qcm9taXNlPHZvaWQ+JiYg
cHJvbWlzZSkKK3ZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGUoUlRD
SWNlQ2FuZGlkYXRlKiBpY2VDYW5kaWRhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCiB7CiAgICAgQVNTRVJUKCFtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaAppbmRleCA1NTViZmI4NjViMzNhM2I3Y2U2YjNlN2Y4Y2FkNTg3YTc2
MDZlYmUwLi4xYjg1ZjA4ZDVlZDcyZjY1NGQ5ODI3MTgyMzdhMzc1MmNlMWNkMTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfUlRDKQog
Ci0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUlRDU2lnbmFs
aW5nU3RhdGUuaCIKIApAQCAtNTYsOCArNTYsOCBAQCBzdHJ1Y3QgUlRDRGF0YUNoYW5uZWxJbml0
Owogc3RydWN0IFJUQ09mZmVyT3B0aW9uczsKIAogbmFtZXNwYWNlIFBlZXJDb25uZWN0aW9uIHsK
LXVzaW5nIFNlc3Npb25EZXNjcmlwdGlvblByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFj
ZTxSVENTZXNzaW9uRGVzY3JpcHRpb24+PjsKLXVzaW5nIFN0YXRzUHJvbWlzZSA9IERPTVByb21p
c2U8SURMSW50ZXJmYWNlPFJUQ1N0YXRzUmVwb3J0Pj47Cit1c2luZyBTZXNzaW9uRGVzY3JpcHRp
b25Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxSVENTZXNzaW9uRGVz
Y3JpcHRpb24+PjsKK3VzaW5nIFN0YXRzUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJ
bnRlcmZhY2U8UlRDU3RhdHNSZXBvcnQ+PjsKIH0KIAogdXNpbmcgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kID0gc3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4gKCopKFJU
Q1BlZXJDb25uZWN0aW9uJik7CkBAIC03MSw5ICs3MSw5IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9u
QmFja2VuZCB7CiAKICAgICB2b2lkIGNyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmLCBQZWVy
Q29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmKTsKICAgICB2b2lkIGNyZWF0
ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3Jp
cHRpb25Qcm9taXNlJiYpOwotICAgIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9u
RGVzY3JpcHRpb24mLCBET01Qcm9taXNlPHZvaWQ+JiYpOwotICAgIHZvaWQgc2V0UmVtb3RlRGVz
Y3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKLSAg
ICB2b2lkIGFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUqLCBET01Qcm9taXNlPHZvaWQ+
JiYpOworICAgIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBzZXRSZW1vdGVEZXNjcmlw
dGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7
CisgICAgdm9pZCBhZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYpOwogCiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNo
YW5uZWxIYW5kbGVyPiBjcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgUlRDRGF0YUNoYW5uZWxJbml0JikgPSAwOwogCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIFBl
ZXJDb25uZWN0aW9uQmFja2VuZCB7CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUmVmPFJU
Q1J0cFJlY2VpdmVyPiBjcmVhdGVSZWNlaXZlcihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlk
LCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lkKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
cGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QWRkZWRU
cmFjayhSVENSdHBTZW5kZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UmVtb3ZlZFRy
YWNrKFJUQ1J0cFNlbmRlciYpIHsgfQogCkBAIC0xMzcsNyArMTM3LDcgQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb25CYWNrZW5kIHsKICAgICB2aXJ0dWFsIHZvaWQgZG9TZXRMb2NhbERlc2NyaXB0aW9u
KFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZG9TZXRSZW1v
dGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRvQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKSB7IHBy
b21pc2UucmVzb2x2ZSgpOyB9CisgICAgdmlydHVhbCB2b2lkIGVuZE9mSWNlQ2FuZGlkYXRlcyhE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKSB7IHByb21pc2UucmVzb2x2ZSgpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGRvU3RvcCgpID0gMDsKIAogcHJvdGVjdGVkOgpAQCAtMTQ1LDgg
KzE0NSw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CiAKIHByaXZhdGU6CiAgICAg
c3RkOjpvcHRpb25hbDxQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZT4g
bV9vZmZlckFuc3dlclByb21pc2U7Ci0gICAgc3RkOjpvcHRpb25hbDxET01Qcm9taXNlPHZvaWQ+
PiBtX3NldERlc2NyaXB0aW9uUHJvbWlzZTsKLSAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2U8
dm9pZD4+IG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPj4gbV9zZXREZXNjcmlwdGlvblByb21pc2U7CisgICAgc3RkOjpv
cHRpb25hbDxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+IG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlz
ZTsKIAogICAgIGJvb2wgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzIHsgdHJ1ZSB9OwogICAg
IHN0cnVjdCBQZW5kaW5nSUNFQ2FuZGlkYXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTAzNjQ2
YzQ2MjMxMDliNjMzMzhjODk5YTEwMjQyOTA3MDdmMDBjMS4uOTEzMTYwMzcwMThhYzYzZTc5ZTE0
YjViYjczNTJhNDNjMTdjZjFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTIzNCw3ICsyMzQsNyBA
QCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0
aW9ucyYmIG9wdGlvbnMsIFNlc3Npb25EZQogICAgIG1fYmFja2VuZC0+Y3JlYXRlQW5zd2VyKFdU
Rk1vdmUob3B0aW9ucyksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIFJUQ1BlZXJDb25u
ZWN0aW9uOjpxdWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6cXVldWVkU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAg
IExPRyhXZWJSVEMsICJTZXR0aW5nIGxvY2FsIGRlc2NyaXB0aW9uOlxuJXNcbiIsIGRlc2NyaXB0
aW9uLnNkcCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmIChpc0Nsb3NlZCgpKSB7CkBAIC0yNjAs
NyArMjYwLDcgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gUlRDUGVlckNvbm5lY3Rp
b246OnBlbmRpbmdMb2NhbERlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9iYWNrZW5k
LT5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbigpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9u
OjpxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUlRDUGVlckNvbm5lY3Rp
b246OnF1ZXVlZFNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVz
Y3JpcHRpb24sIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgTE9H
KFdlYlJUQywgIlNldHRpbmcgcmVtb3RlIGRlc2NyaXB0aW9uOlxuJXNcbiIsIGRlc2NyaXB0aW9u
LnNkcCgpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgUmVmUHRyPFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OnBlbmRpbmdSZW1vdGVEZXNjcmlw
dGlvbigpIGNvbnMKICAgICByZXR1cm4gbV9iYWNrZW5kLT5wZW5kaW5nUmVtb3RlRGVzY3JpcHRp
b24oKTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRl
KFJUQ0ljZUNhbmRpZGF0ZSogcnRjQ2FuZGlkYXRlLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlz
ZSkKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZEFkZEljZUNhbmRpZGF0ZShSVENJY2VD
YW5kaWRhdGUqIHJ0Y0NhbmRpZGF0ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKIHsKICAgICBMT0coV2ViUlRDLCAiUmVjZWl2ZWQgaWNlIGNhbmRpZGF0ZTpcbiVzXG4iLCBy
dGNDYW5kaWRhdGUgPyBydGNDYW5kaWRhdGUtPmNhbmRpZGF0ZSgpLnV0ZjgoKS5kYXRhKCkgOiAi
bnVsbCIpOwogCkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Zmly
ZUV2ZW50KEV2ZW50JiBldmVudCkKICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotdm9p
ZCBSVENQZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVy
JiBzZW5kZXIsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2
b2lkPiYmIHByb21pc2UpCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRy
YWNrVGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0
aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZFNlbmRlciA9IG1ha2VSZWYo
c2VuZGVyKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHdpdGhUcmFjayA9IFdURk1vdmUo
d2l0aFRyYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICBw
cm90ZWN0ZWRTZW5kZXItPnNldFRyYWNrKFdURk1vdmUod2l0aFRyYWNrKSk7CkBAIC01MjAsNyAr
NTIwLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2so
UlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZjxNZWRpYVMKICAgICB9KTsKIH0KIAotdm9pZCBSVENQ
ZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2Vu
ZGVyLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKCF3aXRoVHJhY2spIHsKICAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbcHJvdGVjdGVkU2VuZGVyID0gbWFr
ZVJlZihzZW5kZXIpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDA0NzQyNmMxNDUzMWU1NDE1ODMy
NTI2NjQ5OTNhMmM0Y2JhMDdmYTAuLmY1ZTVmYzM0OWFiZDcyN2IwZWMwODhiOTEwMGQ3Y2Y2YjBh
YjU3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTc2LDE3ICs3NiwxNyBAQCBjbGFzcyBSVENQZWVyQ29u
bmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVi
bGljIFJUQwogICAgIHZvaWQgcXVldWVkQ3JlYXRlT2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYsIFBl
ZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYpOwogICAgIHZvaWQgcXVl
dWVkQ3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmJiwgUGVlckNvbm5lY3Rpb246OlNlc3Np
b25EZXNjcmlwdGlvblByb21pc2UmJik7CiAKLSAgICB2b2lkIHF1ZXVlZFNldExvY2FsRGVzY3Jp
cHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2
b2lkIHF1ZXVlZFNldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRp
b24+IGxvY2FsRGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uPiBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIFJlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb24+IHBlbmRpbmdMb2NhbERlc2NyaXB0aW9uKCkgY29uc3Q7CiAKLSAg
ICB2b2lkIHF1ZXVlZFNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYs
IERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlv
bihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAg
ICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gcmVtb3RlRGVzY3JpcHRpb24oKSBjb25z
dDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3Jp
cHRpb24oKSBjb25zdDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5n
UmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdDsKIAotICAgIHZvaWQgcXVldWVkQWRkSWNlQ2FuZGlk
YXRlKFJUQ0ljZUNhbmRpZGF0ZSosIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBxdWV1
ZWRBZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiwgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYpOwogCiAgICAgUlRDU2lnbmFsaW5nU3RhdGUgc2lnbmFsaW5nU3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NpZ25hbGluZ1N0YXRlOyB9CiAgICAgUlRDSWNlR2F0aGVyaW5nU3RhdGUgaWNl
R2F0aGVyaW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2ljZUdhdGhlcmluZ1N0YXRlOyB9CkBA
IC0xNDMsNyArMTQzLDcgQEAgY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBSVEMKICAgICB2b2lkIGRpc2Fi
bGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKSB7IG1fYmFja2VuZC0+ZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZygpOyB9CiAgICAgdm9pZCBlbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKSB7
IG1fYmFja2VuZC0+ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7IH0KIAotICAgIHZvaWQg
ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBlbnF1ZXVlUmVwbGFjZVRyYWNr
VGFzayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYpOwogCiAgICAgdm9pZCBjbGVhckNvbnRyb2xsZXIoKSB7IG1fY29udHJv
bGxlciA9IG51bGxwdHI7IH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNzIFJUQ1BlZXJDb25u
ZWN0aW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJs
aWMgUlRDCiAKICAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQgdG8gYmUgdGhlIEJhY2tlbmQKICAgICAvLyBSVENSdHBTZW5kZXI6OkJhY2tlbmQKLSAgICB2
b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4m
JiwgRE9NUHJvbWlzZTx2b2lkPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENS
dHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpIGZpbmFsOwogICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENS
dHBTZW5kZXImKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgdXBkYXRlQ29ubmVjdGlvblN0YXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5jcHAKaW5kZXggMDJmMjliMjAxYzFhYTRhZmRjZGM4MmI2MjdhNDQ5MWEyMTEwMTk5OS4u
MGQ0NjY0MTEyZDU5YjcwYTQzOGNlYTVmNjI2ZWFiNjk1MTJhYjQwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtNzIs
NyArNzIsNyBAQCB2b2lkIFJUQ1J0cFNlbmRlcjo6c2V0VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJh
Y2s+JiYgdHJhY2spCiAgICAgbV90cmFjayA9IFdURk1vdmUodHJhY2spOwogfQogCi12b2lkIFJU
Q1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhU
cmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIFJUQ1J0cFNlbmRlcjo6cmVw
bGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNTdG9wcGVkKCkpIHsKICAg
ICAgICAgcHJvbWlzZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKaW5kZXggM2M1MDdhNjMy
NjUzY2YwNDhkNzBhM2MxYzc4M2RlNWZmODcyMjY0OS4uMzBhNTE1Yjg5ZjZiZDFjZGRhNDZiY2M5
NDE4YjQwOWI5ZGNmMjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlci5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFJUQ1J0cFNlbmRl
ciA6IHB1YmxpYyBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UgewogcHVibGljOgogICAgIGNsYXNz
IEJhY2tlbmQgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFj
ayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2
b2lkPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2Vu
ZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJz
KFJUQ1J0cFNlbmRlciYpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB+QmFja2VuZCgpIHsg
fQogICAgIH07CkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFJUQ1J0cFNlbmRlciA6IHB1YmxpYyBS
VENSdHBTZW5kZXJSZWNlaXZlckJhc2UgewogICAgIHZvaWQgc2V0VHJhY2soUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYpOwogICAgIHZvaWQgc2V0VHJhY2tUb051bGwoKTsKIAotICAgIHZvaWQgcmVw
bGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYp
OworICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFt
ZXRlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggNGQyYmZiYzY1MjUxMGZiZGRjZTcyNzRiZGNl
OGQ2NTg5MGY5OWQ1Yi4uOTYxMjVmZDQ0M2YwODMzZjUzZTczMGI4ZmEzZGJlOGM5YjVhYmViZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCkBAIC00OSw3ICs0OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRXhjZXB0aW9uT3I8dm9pZD4gVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVm
PE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVByb21pc2U8SURM
SW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorRXhjZXB0aW9uT3I8dm9pZD4gVXNl
ck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVkaWFDb25zdHJh
aW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYm
IHZpZGVvQ29uc3RyYWludHMsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFT
dHJlYW0+PiYmIHByb21pc2UpCiB7CiAgICAgYXV0byogdXNlck1lZGlhID0gVXNlck1lZGlhQ29u
dHJvbGxlcjo6ZnJvbShkb2N1bWVudC5wYWdlKCkpOwogICAgIGlmICghdXNlck1lZGlhKQpAQCAt
NjQsNyArNjQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFpbgogICAgIHJldHVybiB7IH07CiB9
CiAKLVVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoRG9jdW1lbnQmIGRvY3VtZW50
LCBVc2VyTWVkaWFDb250cm9sbGVyJiBjb250cm9sbGVyLCBSZWY8TWVkaWFDb25zdHJhaW50c0lt
cGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVv
Q29uc3RyYWludHMsIERPTVByb21pc2U8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9t
aXNlKQorVXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdChEb2N1bWVudCYgZG9jdW1l
bnQsIFVzZXJNZWRpYUNvbnRyb2xsZXImIGNvbnRyb2xsZXIsIFJlZjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlk
ZW9Db25zdHJhaW50cywgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVh
bT4+JiYgcHJvbWlzZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZkb2N1bWVu
dCkKICAgICAsIG1fYXVkaW9Db25zdHJhaW50cyhXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpKQog
ICAgICwgbV92aWRlb0NvbnN0cmFpbnRzKFdURk1vdmUodmlkZW9Db25zdHJhaW50cykpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5oCmluZGV4IDMxNmZlZTE1NDhkOTU0NGUyMTk1MjY3ZDg2ODhiMWVlMjJmN2RhYjEuLmEzZTk2
OTAyOTI2NTc5YWZhZDI4MTQyNzhiZWM2ZTcyZjkwNmM4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCkBAIC0zNSw3
ICszNSw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBVc2VyTWVkaWFDb250cm9sbGVyOwogCiBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDog
cHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4sIHByaXZhdGUgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBz
dGFydChEb2N1bWVudCYsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFp
bnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJv
bWlzZTxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8dm9pZD4gc3RhcnQoRG9jdW1lbnQmLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVk
aW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWlu
dHMsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKIAog
ICAgIHZpcnR1YWwgflVzZXJNZWRpYVJlcXVlc3QoKTsKIApAQCAtNzIsNyArNzIsNyBAQCBjbGFz
cyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4s
IHByaXZhdGUgQ29udGV4dERlcwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBkb2N1bWVu
dCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFVzZXJNZWRpYVJlcXVlc3QoRG9jdW1lbnQmLCBV
c2VyTWVkaWFDb250cm9sbGVyJiwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29u
c3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBE
T01Qcm9taXNlPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOworICAgIFVzZXJNZWRpYVJl
cXVlc3QoRG9jdW1lbnQmLCBVc2VyTWVkaWFDb250cm9sbGVyJiwgUmVmPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2
aWRlb0NvbnN0cmFpbnRzLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3Ry
ZWFtPj4mJik7CiAKICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKICAgICAKQEAg
LTg2LDcgKzg2LDcgQEAgY2xhc3MgVXNlck1lZGlhUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFVzZXJNZWRpYVJlcXVlc3Q+LCBwcml2YXRlIENvbnRleHREZXMKICAgICBTdHJpbmcgbV9hbGxv
d2VkQXVkaW9EZXZpY2VVSUQ7CiAKICAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBtX2NvbnRyb2xs
ZXI7Ci0gICAgRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiBtX3Byb21pc2U7
CisgICAgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+IG1fcHJv
bWlzZTsKICAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gbV9wcm90ZWN0b3I7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cAppbmRleCAzMTAyMDRiMmIzYTU1ZDBkN2ZkNWQ3YjVhYTM1MzEzOGMxYjM4ZTFiLi4xODE3ZTY1
ZjdlMzI0ODI0YjQxMjM2MzNjY2VhYjViYmEzNTJmNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTMyOCw3ICszMjgs
NyBAQCB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkUmVtb3RlU3RyZWFt
KFJlZjxNZWRpYVN0cmVhbT4mJiBtZWRpYVN0cgogICAgIG1fcmVtb3RlU3RyZWFtcy5hcHBlbmQo
V1RGTW92ZShtZWRpYVN0cmVhbSkpOwogfQogCi12b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiB0cmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2Vu
ZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoc2VuZGVyLnRyYWNrKCkpOwogICAgIGF1dG8q
IGN1cnJlbnRUcmFjayA9IHNlbmRlci50cmFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA5MmU2OGE2MzgyNDZiYmZmODNi
OWUyNGEzYjc1NzVhZTQ2NmRlM2ZiLi41NDM2ZjhmODliNTg2NTZkMDlmMDAyMmZlOWI0ZDRhMGVh
NWZmYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaApAQCAtNjksNyArNjksNyBAQCBjbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKICAgICBSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25z
dCBmaW5hbDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3Rl
RGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0
cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpIGZp
bmFsOworICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7CiAgICAgUlRDUnRw
UGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwogCiAg
ICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291
cmNlLmgKaW5kZXggOWMxNmNhOGEwN2Q2ZTE3ZjZmYTM3OTU1Yjk2N2Y3ZWIxZmZhYWYwMS4uNDEw
M2FjODI5NTA3NmU5NDhlYzNjNzNhYWJkMmY1YWEyZDg4ZjJhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKQEAgLTMw
LDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIAotI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIFJlYWRhYmxlU3RyZWFtU291cmNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1Tb3VyY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZWFkYWJsZVN0cmVhbVNvdXJjZSgpIHsgfQogCi0gICAgdm9pZCBzdGFydChSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJiYsIERPTVByb21pc2U8dm9pZD4mJik7Ci0gICAgdm9p
ZCBwdWxsKERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyJiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2
b2lkIHB1bGwoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgY2FuY2VsKEpT
Qzo6SlNWYWx1ZSk7CiAKICAgICBib29sIGlzUHVsbGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9w
cm9taXNlOyB9CkBAIC02MywxMSArNjMsMTEgQEAgY2xhc3MgUmVhZGFibGVTdHJlYW1Tb3VyY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gewogICAgIHZpcnR1YWwg
dm9pZCBkb0NhbmNlbCgpID0gMDsKIAogcHJpdmF0ZToKLSAgICBzdGQ6Om9wdGlvbmFsPERPTVBy
b21pc2U8dm9pZD4+IG1fcHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPj4gbV9wcm9taXNlOwogICAgIHN0ZDo6b3B0aW9uYWw8UmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogfTsKIAotaW5saW5lIHZvaWQgUmVhZGFi
bGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiBj
b250cm9sbGVyLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK2lubGluZSB2b2lkIFJlYWRh
YmxlU3RyZWFtU291cmNlOjpzdGFydChSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJiYg
Y29udHJvbGxlciwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBB
U1NFUlQoIW1fcHJvbWlzZSk7CiAgICAgbV9wcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKQEAg
LTc3LDcgKzc3LDcgQEAgaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KFJl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiBjb250cm8KICAgICBkb1N0YXJ0KCk7CiB9
CiAKLWlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtU291cmNlOjpwdWxsKERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQoraW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcHJvbWlz
ZSk7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMTFkZTA0YTk5NzlmYWY4ZDFmYTcy
NjU4OWYxNDQzMDc2YWUzODc2ZC4uMjM1Mjk5Y2JlNTNkZTcwNDI2NjdiZTljYmU4ZWJiZTEzNGZk
YzQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcApAQCAtNTMsNyArNTMsNyBAQAogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgi
CiAjaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFJURlBhbm5lci5o
IgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgiCkBAIC0yODMsNyAr
MjgzLDcgQEAgYm9vbCBBdWRpb0NvbnRleHQ6OmlzSW5pdGlhbGl6ZWQoKSBjb25zdAogICAgIHJl
dHVybiBtX2lzSW5pdGlhbGl6ZWQ7CiB9CiAKLXZvaWQgQXVkaW9Db250ZXh0OjphZGRSZWFjdGlv
bihTdGF0ZSBzdGF0ZSwgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIEF1ZGlvQ29u
dGV4dDo6YWRkUmVhY3Rpb24oU3RhdGUgc3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pc2UpCiB7CiAgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHN0YXRlKTsKICAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkK
QEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3RhdGUgc3Rh
dGUpCiAgICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5zaXplKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxET01Qcm9taXNlPHZvaWQ+PiByZWFjdGlvbnM7Cisg
ICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcmVhY3Rpb25zOwogICAgIG1fc3Rh
dGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOwogCiAgICAgZm9yIChhdXRv
JiBwcm9taXNlIDogcmVhY3Rpb25zKQpAQCAtMTA0MCw3ICsxMDQwLDcgQEAgdm9pZCBBdWRpb0Nv
bnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKICAgICAtLW1fYWN0aXZlU291cmNl
Q291bnQ7CiB9CiAKLXZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kKERPTVByb21pc2U8dm9pZD4m
JiBwcm9taXNlKQordm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmQoRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpKSB7CiAgICAg
ICAgIHByb21pc2UucmVqZWN0KElOVkFMSURfU1RBVEVfRVJSKTsKQEAgLTEwNjksNyArMTA2OSw3
IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNl
KQogICAgIH0pOwogfQogCi12b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lKERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBBdWRpb0NvbnRleHQ6OnJlc3VtZShET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkpIHsKICAg
ICAgICAgcHJvbWlzZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwpAQCAtMTA5OCw3ICsxMDk4
LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnJlc3VtZShET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlz
ZSkKICAgICB9KTsKIH0KIAotdm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSkgewogICAg
ICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBlNDExNjhlNzgwY2FkNzYy
Mzk4NDUwY2E5YzE1MzBkYjZjYmY4ZTYzLi40OWJiMTM3Y2M4YWIyMWRkNGY5OGJlMTVjY2FkZmY4
MTgwODMyNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCkBAIC0xMTEs
OSArMTExLDkgQEAgY2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwg
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ28KICAgICB1c2luZyBBY3RpdmVET01P
YmplY3Q6OnN1c3BlbmQ7CiAgICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpyZXN1bWU7CiAKLSAg
ICB2b2lkIHN1c3BlbmQoRE9NUHJvbWlzZTx2b2lkPiYmKTsKLSAgICB2b2lkIHJlc3VtZShET01Q
cm9taXNlPHZvaWQ+JiYpOwotICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAg
ICB2b2lkIHN1c3BlbmQoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgcmVz
dW1lKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIGNsb3NlKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKTsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQs
IFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0
OwpAQCAtMzI5LDcgKzMyOSw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVE
T01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvCiAgICAgdm9pZCBo
YW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOwogICAgIHZvaWQgaGFuZGxlRGlydHlB
dWRpb05vZGVPdXRwdXRzKCk7CiAKLSAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBET01Qcm9t
aXNlPHZvaWQ+JiYpOworICAgIHZvaWQgYWRkUmVhY3Rpb24oU3RhdGUsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmKTsKICAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOwogCiAg
ICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgpAQCAtMzY2LDcgKzM2Niw3
IEBAIGNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVu
ZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOwogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1
ZGlvIHRocmVhZC4KICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVm
TGlzdDsKLSAgICBWZWN0b3I8VmVjdG9yPERPTVByb21pc2U8dm9pZD4+PiBtX3N0YXRlUmVhY3Rp
b25zOworICAgIFZlY3RvcjxWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Pj4gbV9zdGF0
ZVJlYWN0aW9uczsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4g
bV9tZWRpYVNlc3Npb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBt
X2V2ZW50UXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMmE3ZDc5MDQ2M2YxMjYyNzlkZjMyZDg2OWQ5NGNiMmE5NzEzOGE1
YS4uYzYyODJmNTFiMmFjMTM1MmI2MzUxYzg1MzQ5MjkyYzU3ZmE2MTg0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjUyNyw4
ICs2NTI3LDggQEAKIAkJRTE3MkFGNkQxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRo
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcy
QUY2QjE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmNwcCAqLzsgfTsKIAkJRTE3
MkFGNkUxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGNkMxODBGMjRDNjAwRkJBREI5
IC8qIENyeXB0b0FsZ29yaXRobS5oICovOyB9OwogCQlFMTcyQUY3MDE4MEYyODk1MDBGQkFEQjkg
LyogQ3J5cHRvS2V5VXNhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxNzJBRjZGMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oICov
OyB9OwotCQlFMTcyQUY4RjE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjhEMTgxMUJD
MzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwICovOyB9OwotCQlFMTcyQUY5MDE4MTFCQzM3
MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTE3
MkFGOEYxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjhEMTgxMUJDMzcw
MEZCQURCOSAvKiBKU0RPTVByb21pc2VEZWZlcnJlZC5jcHAgKi87IH07CisJCUUxNzJBRjkwMTgx
MUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8q
IEpTRE9NUHJvbWlzZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTE3NUJBOTkxRThBRTMzODAwNzE0NTRGIC8qIEdyaWRQb3NpdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4
MTc0NTFFODk3QTUyMDBGMjJDRDAgLyogR3JpZFBvc2l0aW9uLmNwcCAqLzsgfTsKIAkJRTE3OUYw
REExQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzlGMEQ5MUI5Nzc0RkUwMEVEMEEyNyAvKiBJbnRl
cm5hbHMubW0gKi87IH07CiAJCUUxN0I0OTE1MTZBOUIwOTQwMDFDODgzOSAvKiBUcmFuc2l0aW9u
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE3QjQ5MTMxNkE5QjA5MzAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5jcHAgKi87IH07CkBA
IC02NjU3LDYgKzY2NTcsNyBAQAogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVu
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU4MDJCNjFEQzg0MzVEMDBB
OTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElE
TFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0
NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlFMzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNET01Q
cm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYy
RUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9k
dWxlTG9hZGVyLmNwcCAqLzsgfTsKIAkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlw
dE1vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICov
OyB9OwogCQlFMzk4RkMyNDFEQzMyQTIwMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4RkMyMzFEQzMy
QTFCMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi87IH07CkBAIC0xNTA1Myw4ICsxNTA1
NCw4IEBACiAJCUUxNzJBRjZCMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MkFGNkMxODBGMjRDNjAwRkJBREI5
IC8qIENyeXB0b0FsZ29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
cnlwdG9BbGdvcml0aG0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MkFGNkYx
ODBGMjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENyeXB0b0tleVVzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Qcm9taXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJv
bWlzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVByb21pc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE3MkFGOEQxODExQkMzNzAwRkJBREI5IC8q
IEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NUHJvbWlzZURlZmVycmVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNzY1ODBDMTgwREYzQTAwMDVBOTZEMSAv
KiBPRVNFbGVtZW50SW5kZXhVaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBPRVNFbGVtZW50SW5kZXhVaW50LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3OUYwRDkxQjk3NzRGRTAwRUQwQTI3IC8q
IEludGVybmFscy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElu
dGVybmFscy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3QjQ5MEIxNkE5NzI2
OTAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
VHJhbnNpdGlvbkV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTk3
LDYgKzE1MTk4LDcgQEAKIAkJRTMzNDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzRFRTQ5RjFEQzJENTc1MDBFQUE5RDMgLyogSlNFdmVudEN1c3RvbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNTgwMkI1MURDODQzNTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmls
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVElETFR5cGVGaWx0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3Qzg2NEYxRUI2M0UyRDAwODdD
NkNBIC8qIEpTRE9NUHJvbWlzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RPTVByb21pc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTQxQkFE
MTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxl
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk4RkMyMzFEQzMyQTFCMDAz
QzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBET01KSVRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIzNDAwLDggKzIzNDAyLDkgQEAKIAkJCQk0MTM4Rjg1NjFEMjUzRUVFMDAxQ0I2MUUgLyogSlNE
T01JdGVyYXRvci5oICovLAogCQkJCTQxREVGQ0IzMUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1h
cExpa2UuY3BwICovLAogCQkJCTQxREVGQ0I0MUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1hcExp
a2UuaCAqLywKLQkJCQlFMTcyQUY4RDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNw
cCAqLywKLQkJCQlFMTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggKi8s
CisJCQkJRTM3Qzg2NEYxRUI2M0UyRDAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oICovLAorCQkJ
CUUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2VEZWZlcnJlZC5jcHAgKi8s
CisJCQkJRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmgg
Ki8sCiAJCQkJQkM2OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAg
Ki8sCiAJCQkJQkM2OTMyNzIwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oICov
LAogCQkJCTQ2MENCRjMzMUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMu
Y3BwICovLApAQCAtMjcxOTgsNiArMjcyMDEsNyBAQAogCQkJCUMwQzA1NENDMTExOEM4RTQwMENF
MjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjNGMERC
MERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTM3Qzg2NTAxRUI2M0UzRjAwODdDNkNBIC8qIEpTRE9NUHJv
bWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyMEIwQTExNEQzMzIzNTAwNjQyOTU1IC8qIEdl
bmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDYyRkI5NjFBRjAxOEU3MDAx
MkVEN0QgLyogR2VuZXJpY1Rhc2tRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjQx
NEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzQw
LDcgKzI3NzQ0LDcgQEAKIAkJCQkwRjQ5NjZBQjFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2lu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0OTY2QUQxREI0MEM0MzAwQTI3NEJCIC8qIEpTRE9N
UG9pbnRJbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ5NjZBRjFEQjQwQzQzMDBBMjc0QkIg
LyogSlNET01Qb2ludFJlYWRPbmx5LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTcyQUY5MDE4MTFC
QzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTcyQUY5
MDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNDcxMEJDMURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNDcxMEJFMURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3RJbml0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjQ3MTBDMDFEQjU2QkU4MDAyRENFQzMgLyogSlNET01SZWN0UmVh
ZE9ubHkuaCBpbiBIZWFkZXJzICovLApAQCAtMzE2ODYsNyArMzE2OTAsNyBAQAogCQkJCTBGNDk2
NkFBMURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNDk2NkFDMURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50SW5pdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjQ5NjZBRTFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludFJlYWRPbmx5
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxNzJBRjhGMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RP
TVByb21pc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE3MkFGOEYxODExQkMzNzAwRkJBREI5
IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDcxMEJC
MURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0
NzEwQkQxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdEluaXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY0NzEwQkYxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdFJlYWRPbmx5LmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKaW5kZXggMjgxMjA1MGE2
MTk0ZGNjZmFjYzY5Yjg0MzM1NGNlM2M2YjMwM2NmNS4uYjViMTQyYzliOTFkNjMzN2VjOTA3MmU1
MTNiMjEwYzVjMTY2YzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURM
VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC00OCw3
ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktl
eURhdGE7CiBjbGFzcyBJREJWYWx1ZTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9t
aXNlOworY2xhc3MgRE9NUHJvbWlzZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBJ
RExUeXBlIHsKQEAgLTE4NSw3ICsxODUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFt
ZSBWPiBzdHJ1Y3QgSURMUmVjb3JkIDogSURMVHlwZTxWZWN0b3I8V1RGOjpLZXlWYWx1ZQogICAg
IHVzaW5nIFBhcmFtZXRlclR5cGUgPSBjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8dHlw
ZW5hbWUgSzo6SW1wbGVtZW50YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5
cGU+PiY7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMUHJvbWlzZSA6IElE
TFR5cGU8RE9NUHJvbWlzZTxUPj4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFBy
b21pc2UgOiBJRExUeXBlPERPTVByb21pc2U+IHsKICAgICB1c2luZyBJbm5lclR5cGUgPSBUOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaAppbmRleCA2Y2NkYmNjY2E3N2E5ZWRkNmNjZDFjZTBm
YjMzYTA3YzAxNjk0MjBjLi41NTBlYmI1NTljYWJlZDFiZDFkYjc2MmVmZGE1MmQ3ZTJlMWNjYzVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURl
ZmVycmVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggYTZkM2MxOGQxNDc0MDJk
MjA4MzNhMThhZDM2NzkxODZiM2YzZTVmNS4uMmRjODQxZDQ4ZTFjYzY5MTUyZTU1MTE5OWEyMGE3
NjM4ZmViZDYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRp
bmdzQWxsSW5PbmUuY3BwCkBAIC01MSw3ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5jcHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuY3BwIgogI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmNw
cCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5jcHAiCiAjaW5jbHVkZSAiSlNET01T
dHJpbmdNYXBDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5jcHAiCiAjaW5j
bHVkZSAiSlNET01XaW5kb3dDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwCmluZGV4
IGNmOWU5NmQyNzc2MzE0ODc4ODBkZTVmNTY4ZjI0YTg2NDgxODZiZWUuLjkxOGI5NWQzMDFhY2Rl
Yjg2OTg0ZjVlNjQwNDkwZDQyZWE0NjJlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKLSNpbmNs
dWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnRQcm9taXNlLmgKaW5kZXggYzIyMzcwZTI2NjRjYmU3MjYwMTIwODliYjY5
NTI4OTgyYjllY2Q5MS4uYjRkOTM0NjVlZjNjNTk3YWM0NGZmNDRkMWI5YmVjOWMyMTc1MjQyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFByb21pc2Uu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI3LDMwICsyNyw0NiBAQAogCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gRklYTUU6IEltcGxlbWVudCBJRExQcm9taXNlPD4gY29u
dmVyc2lvbnMuCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2
NzUyCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IENvbnZlcnRlcjxJRExQcm9taXNlPFQ+
PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj4gewotICAgIHVzaW5nIFJldHVyblR5
cGUgPSBKU0M6OkpTVmFsdWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVy
PElETFByb21pc2U8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7CisgICAg
dXNpbmcgUmV0dXJuVHlwZSA9IEpTQzo6SlNQcm9taXNlKjsKIAotICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICAv
LyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1wcm9taXNlCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgor
ICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhj
ZXB0aW9uVGhyb3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICBK
U0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odm0sIHN0YXRlLmxleGljYWxH
bG9iYWxPYmplY3QoKSk7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gMS4gTGV0IHJlc29sdmUgYmUgdGhlIG9yaWdp
bmFsIHZhbHVlIG9mICVQcm9taXNlJS5yZXNvbHZlLgorICAgICAgICAvLyAyLiBMZXQgcHJvbWlz
ZSBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgcmVzb2x2ZSB3aXRoICVQcm9taXNlJSBhcyB0aGUg
dGhpcyB2YWx1ZSBhbmQgViBhcyB0aGUgc2luZ2xlIGFyZ3VtZW50IHZhbHVlLgorICAgICAgICBK
U0M6OkpTUHJvbWlzZSogcHJvbWlzZSA9IEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKGdsb2JhbE9i
amVjdCwgdmFsdWUpOworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
ICAgIGV4Y2VwdGlvblRocm93ZXIoc3RhdGUsIHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwcm9taXNlKTsKKworICAgICAgICAv
LyAzLiBSZXR1cm4gdGhlIElETCBwcm9taXNlIHR5cGUgdmFsdWUgdGhhdCBpcyBhIHJlZmVyZW5j
ZSB0byB0aGUgc2FtZSBvYmplY3QgYXMgcHJvbWlzZS4KKyAgICAgICAgcmV0dXJuIHByb21pc2U7
CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBKU0NvbnZlcnRlcjxJ
RExQcm9taXNlPFQ+PiB7Ci0gICAgdXNpbmcgVHlwZSA9IEpTQzo6SlNWYWx1ZTsKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiB7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgbmVlZHNHbG9iYWxPYmplY3QgPSBmYWxzZTsKIAotICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgY29udmVydChKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb252ZXJ0KEpTQzo6SlNQcm9taXNlJiBwcm9taXNlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgICAgICAvLyBUaGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgYW4gSURMIHByb21p
c2UgdHlwZSB2YWx1ZSB0byBhbiBFQ01BU2NyaXB0IHZhbHVlIGlzIHRoZSBQcm9taXNlIHZhbHVl
CisgICAgICAgIC8vIHRoYXQgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBvYmpl
Y3QgdGhhdCB0aGUgSURMIHByb21pc2UgdHlwZSByZXByZXNlbnRzLgorICAgICAgICByZXR1cm4g
JnByb21pc2U7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcAppbmRleCA1ODU1NTNkMTZjMmNmMDY5NGU1
NGY2ZmQ0YzBmNmMyYmExYThlYTcwLi4yMWNmZDRjZDExZGFhNDI2OTNhYTk0MzY3OTU4NzI3ZmE2
YmRlNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlYWRlcnMuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25JbnRlcmZhY2VzLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkpTRHluYW1pY0Rvd25jYXN0LmgiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25C
YXNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAKaW5kZXggNWJkMDZjN2Q5MGQ4OWFiNmZhZjI1YWFiODYxZTQyNTMwZmMyOTliOC4uN2I5
MWVlYzQxNzIxNDE5YmNlYmJjZWFkYTU1ZmYzMGM3Nzk3Mzk0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjgsNyArMjgsNyBA
QAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJKU01lZGlhU3RyZWFtLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM5
NzE3ODhlYTBmNDUwYmIwZTQyODEzODExYzM3ZjcwMGVlYjRlMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVByb21pc2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgi
Ci0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNET01FcnJvci5oIgot
I2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCi0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpbk5hbWVz
Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb24uaD4KLSNpbmNsdWRlIDxydW50aW1lL0pT
T05PYmplY3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNDOjpKU1Zh
bHVlIERlZmVycmVkUHJvbWlzZTo6cHJvbWlzZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGRlZmVy
cmVkKCkpOwotICAgIHJldHVybiBkZWZlcnJlZCgpLT5wcm9taXNlKCk7Ci19Ci0KLXZvaWQgRGVm
ZXJyZWRQcm9taXNlOjpjYWxsRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGZ1bmN0
aW9uLCBKU1ZhbHVlIHJlc29sdXRpb24pCi17Ci0gICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJU
KGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKHJlc29sdXRpb24pOwotCi0gICAgY2Fs
bCgmZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJn
dW1lbnRzKTsKLQotICAgIGNsZWFyKCk7Ci19Ci0KLXZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWpl
Y3QoKQotewotICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBB
U1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
JiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcigmc3RhdGUpOwotICAgIHJlamVjdChzdGF0ZSwgSlNDOjpqc1VuZGVmaW5l
ZCgpKTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChzdGQ6Om51bGxwdHJfdCkK
LXsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJU
KGRlZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3Rh
dGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoJnN0YXRlKTsKLSAgICByZWplY3Qoc3RhdGUsIEpTQzo6anNOdWxsKCkpOwotfQot
Ci12b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKLXsK
LSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGRl
ZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3RhdGUg
PSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIoJnN0YXRlKTsKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0
YXRlLnZtKCkpOwotICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNlcHRpb24oc3RhdGUsIFdU
Rk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkg
ewotICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHN0YXRlLnZt
KCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBy
ZWplY3Qoc3RhdGUsIGVycm9yKTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChF
eGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgaWYgKGlzU3Vz
cGVuZGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAg
ICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwotICAgIGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCZzdGF0ZSk7
Ci0KLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKLSAg
ICBhdXRvIGVycm9yID0gY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMsIG1lc3NhZ2UpOwot
ICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgQVNTRVJUKGlz
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihzdGF0ZS52bSgpLCBzY29wZS5leGNlcHRpb24o
KSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0KLSAgICByZWplY3Qoc3RhdGUsIGVycm9y
KTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChjb25zdCBKU0M6OlByaXZhdGVO
YW1lJiBwcml2YXRlTmFtZSkKLXsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVj
dCk7Ci0gICAgSlNDOjpFeGVjU3RhdGUqIHN0YXRlID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoc3RhdGUpOwotICAgIHJlamVjdCgq
c3RhdGUsIEpTQzo6U3ltYm9sOjpjcmVhdGUoc3RhdGUtPnZtKCksIHByaXZhdGVOYW1lLnVpZCgp
KSk7Ci19Ci0KLXZvaWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZURl
ZmVycmVkJiBwcm9taXNlRGVmZXJyZWQpCi17Ci0gICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLSAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0KLSAgICBpZiAoTElLRUxZ
KCFzY29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgZXJy
b3IgPSBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUoKTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlv
bigpOwotCi0gICAgRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNl
RGVmZXJyZWQpLT5yZWplY3Q8SURMQW55PihlcnJvcik7Ci19Ci0KLVJlZjxEZWZlcnJlZFByb21p
c2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NV2lu
ZG93JiBkb21XaW5kb3cpCi17Ci0gICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQg
PSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCAmZG9tV2luZG93KTsKLSAg
ICAvLyBkZWZlcnJlZCBjYW4gb25seSBiZSBudWxsIGluIHdvcmtlcnMuCi0gICAgQVNTRVJUKGRl
ZmVycmVkKTsKLSAgICByZXR1cm4gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZG9tV2luZG93LCAq
ZGVmZXJyZWQpOwotfQotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlz
ZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKLXsKLSAgICBBU1NFUlQoc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAg
ICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0g
ICAgYXV0byBwcm9taXNlQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QucHJvbWlzZUNvbnN0cnVj
dG9yKCk7Ci0gICAgYXV0byByZWplY3RGdW5jdGlvbiA9IHByb21pc2VDb25zdHJ1Y3Rvci0+Z2V0
KCZzdGF0ZSwgc3RhdGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWplY3RQ
cml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIHJlamVjdGlvblZhbHVlID0gY3JlYXRlVHlwZUVycm9y
KCZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsKLQotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1
dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWplY3RGdW5jdGlvbiwgY2FsbERhdGEpOwotICAg
IEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0KLSAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChyZWplY3Rpb25WYWx1ZSk7
Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoJnN0YXRlLCByZWplY3RGdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBwcm9taXNlQ29uc3RydWN0b3IsIGFyZ3VtZW50cykpOwot
fQotCi1zdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBwYXJzZUFzSlNPTihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKLXsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrKHN0YXRlKTsKLSAgICByZXR1cm4gSlNDOjpKU09OUGFyc2Uoc3RhdGUsIGRhdGEpOwotfQot
Ci12b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBjb25zdCBTdHJpbmcmIGRhdGEpCi17Ci0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcGFy
c2VBc0pTT04ocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgZGF0YSk7Ci0g
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFNZTlRBWF9FUlIpOwotICAg
IGVsc2UKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExBbnk+KHZhbHVlKTsKLX0KLQotdm9p
ZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UsIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKLXsKLSAgICBpZiAoIWFycmF5QnVmZmVy
KSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdDxJRExBbnk+KGNyZWF0ZU91dE9mTWVtb3J5RXJy
b3IocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEFycmF5QnVmZmVy
Pj4oKmFycmF5QnVmZmVyKTsKLX0KLQotdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZl
cihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCi17Ci0gICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShw
cm9taXNlKSwgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAppbmRleCBlZjEw
NDllNzdmY2IxNzlmNDI5MDdkYjk3M2QzYTFiODUyNDRhOTBkLi4xMGFjNzRiYzNjMTcxMjUyYzMx
NmM3YzgyNjJlMDMxOTJlODMwZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVByb21pc2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDIzMSArMjUsMjkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJKU0RPTUNvbnZlcnQuaCIKICNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNs
dWRlIDxydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1By
b21pc2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEZWZlcnJlZFByb21pc2Ug
OiBwdWJsaWMgRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiB7CitjbGFzcyBET01Q
cm9taXNlIDogcHVibGljIERPTUd1YXJkZWQ8SlNDOjpKU1Byb21pc2U+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPERlZmVycmVkUHJvbWlzZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmIGRlZmVycmVkKQorICAgIHN0YXRp
YyBSZWY8RE9NUHJvbWlzZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNQcm9taXNlJiBwcm9taXNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGVmZXJyZWRQcm9taXNlKGdsb2JhbE9iamVjdCwgZGVmZXJyZWQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NUHJvbWlzZShnbG9iYWxPYmplY3QsIHByb21pc2UpKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBJRExUeXBlPgotICAgIHZvaWQgcmVzb2x2ZSh0
eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIEpTQzo6SlNQcm9taXNl
KiBwcm9taXNlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFT
U0VSVChnbG9iYWxPYmplY3QoKSk7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xv
YmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
a2VyKGV4ZWMpOwotICAgICAgICByZXNvbHZlKCpleGVjLCB0b0pTPElETFR5cGU+KCpleGVjLCAq
Z2xvYmFsT2JqZWN0KCksIHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJU
eXBlPih2YWx1ZSkpKTsKKyAgICAgICAgQVNTRVJUKCFpc1N1c3BlbmRlZCgpKTsKKyAgICAgICAg
cmV0dXJuIGd1YXJkZWQoKTsKICAgICB9CiAKLSAgICB2b2lkIHJlc29sdmUoKQotICAgIHsKLSAg
ICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFT
U0VSVChkZWZlcnJlZCgpKTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKLSAgICAg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwot
ICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgICAgIHJlc29sdmUo
KmV4ZWMsIEpTQzo6anNVbmRlZmluZWQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3Mg
SURMVHlwZT4KLSAgICB2b2lkIHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5
cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQo
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAg
ICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcihleGVjKTsKLSAgICAgICAgcmVzb2x2ZSgqZXhlYywgdG9KU05ld2x5Q3JlYXRl
ZDxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUg
SURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8
Y2xhc3MgSURMVHlwZT4KLSAgICB2b2lkIHJlamVjdCh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0
ZXJUeXBlIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAgICAgICAgQVNTRVJU
KGdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIo
ZXhlYyk7Ci0gICAgICAgIHJlamVjdCgqZXhlYywgdG9KUzxJRExUeXBlPigqZXhlYywgKmdsb2Jh
bE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4o
dmFsdWUpKSk7Ci0gICAgfQotCi0gICAgdm9pZCByZWplY3QoKTsKLSAgICB2b2lkIHJlamVjdChz
dGQ6Om51bGxwdHJfdCk7Ci0gICAgdm9pZCByZWplY3QoRXhjZXB0aW9uJiYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0p
OwotICAgIHZvaWQgcmVqZWN0KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmKTsKLQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENhbGxiYWNrPgotICAgIHZvaWQgcmVzb2x2ZVdpdGhDYWxsYmFjayhDYWxs
YmFjayBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFTU0VS
VChnbG9iYWxPYmplY3QoKSk7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2Vy
KGV4ZWMpOwotICAgICAgICByZXNvbHZlKCpleGVjLCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9i
amVjdCgpKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+Ci0gICAg
dm9pZCByZWplY3RXaXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCi0gICAgewotICAgICAg
ICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJU
KGRlZmVycmVkKCkpOwotICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBK
U0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAg
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICAgICAgcmVqZWN0KCpleGVj
LCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7Ci0gICAgfQotCi0gICAgSlNDOjpK
U1ZhbHVlIHByb21pc2UoKSBjb25zdDsKLQogcHJpdmF0ZToKLSAgICBEZWZlcnJlZFByb21pc2Uo
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYg
ZGVmZXJyZWQpIDogRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPihnbG9iYWxPYmpl
Y3QsIGRlZmVycmVkKSB7IH0KLQotICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVk
KCkgY29uc3QgeyByZXR1cm4gZ3VhcmRlZCgpOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNhbGxGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgSlND
OjpKU1ZhbHVlIHJlc29sdXRpb24pOwotICAgIHZvaWQgcmVzb2x2ZShKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwgZGVm
ZXJyZWQoKS0+cmVzb2x2ZSgpLCByZXNvbHV0aW9uKTsgfQotICAgIHZvaWQgcmVqZWN0KEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1bmN0aW9u
KHN0YXRlLCBkZWZlcnJlZCgpLT5yZWplY3QoKSwgcmVzb2x1dGlvbik7IH0KLX07Ci0KLWNsYXNz
IERPTVByb21pc2VCYXNlIHsKLXB1YmxpYzoKLSAgICBET01Qcm9taXNlQmFzZShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIGdlbmVyaWNQcm9taXNlKQotICAgICAgICA6IG1fcHJvbWlzZURlZmVycmVk
KFdURk1vdmUoZ2VuZXJpY1Byb21pc2UpKQotICAgIHsKLSAgICB9Ci0KLSAgICBET01Qcm9taXNl
QmFzZShET01Qcm9taXNlQmFzZSYmIHByb21pc2UpCi0gICAgICAgIDogbV9wcm9taXNlRGVmZXJy
ZWQoV1RGTW92ZShwcm9taXNlLm1fcHJvbWlzZURlZmVycmVkKSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgRE9NUHJvbWlzZUJhc2UoY29uc3QgRE9NUHJvbWlzZUJhc2UmIG90aGVyKQotICAgICAgICA6
IG1fcHJvbWlzZURlZmVycmVkKG90aGVyLm1fcHJvbWlzZURlZmVycmVkLmNvcHlSZWYoKSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgRE9NUHJvbWlzZUJhc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9t
aXNlQmFzZSYgb3RoZXIpCi0gICAgewotICAgICAgICBtX3Byb21pc2VEZWZlcnJlZCA9IG90aGVy
Lm1fcHJvbWlzZURlZmVycmVkLmNvcHlSZWYoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
IH0KLQotICAgIERPTVByb21pc2VCYXNlJiBvcGVyYXRvcj0oRE9NUHJvbWlzZUJhc2UmJiBvdGhl
cikKKyAgICBET01Qcm9taXNlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNQcm9taXNlJiBwcm9taXNlKQorICAgICAgICA6IERPTUd1YXJkZWQ8SlNDOjpKU1Byb21pc2U+
KGdsb2JhbE9iamVjdCwgcHJvbWlzZSkKICAgICB7Ci0gICAgICAgIG1fcHJvbWlzZURlZmVycmVk
ID0gV1RGTW92ZShvdGhlci5tX3Byb21pc2VEZWZlcnJlZCk7Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9Ci0KLSAgICB2b2lkIHJlamVjdCgpCi0gICAgewotICAgICAgICBtX3Byb21pc2VE
ZWZlcnJlZC0+cmVqZWN0KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gRXJy
b3JUeXBlPiAKLSAgICB2b2lkIHJlamVjdChFcnJvclR5cGUmJi4uLiBlcnJvcikKLSAgICB7Ci0g
ICAgICAgIG1fcHJvbWlzZURlZmVycmVkLT5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4o
ZXJyb3IpLi4uKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgotICAg
IHZvaWQgcmVqZWN0VHlwZSh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdDxJRExUeXBlPihzdGQ6OmZv
cndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKTsKLSAgICB9Ci0K
LSAgICBKU0M6OkpTVmFsdWUgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZURlZmVy
cmVkLT5wcm9taXNlKCk7IH07Ci0KLXByb3RlY3RlZDoKLSAgICBSZWY8RGVmZXJyZWRQcm9taXNl
PiBtX3Byb21pc2VEZWZlcnJlZDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IAot
Y2xhc3MgRE9NUHJvbWlzZSA6IHB1YmxpYyBET01Qcm9taXNlQmFzZSB7Ci1wdWJsaWM6Ci0gICAg
dXNpbmcgRE9NUHJvbWlzZUJhc2U6OkRPTVByb21pc2VCYXNlOwotICAgIHVzaW5nIERPTVByb21p
c2VCYXNlOjpvcGVyYXRvcj07Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnByb21pc2U7Ci0g
ICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnJlamVjdDsKLQotICAgIHZvaWQgcmVzb2x2ZSh0eXBl
bmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQotICAgIHsgCi0gICAgICAgIG1fcHJv
bWlzZURlZmVycmVkLT5yZXNvbHZlPElETFR5cGU+KHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExU
eXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gY2xh
c3MgRE9NUHJvbWlzZTx2b2lkPiA6IHB1YmxpYyBET01Qcm9taXNlQmFzZSB7Ci1wdWJsaWM6Ci0g
ICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OkRPTVByb21pc2VCYXNlOwotICAgIHVzaW5nIERPTVBy
b21pc2VCYXNlOjpvcGVyYXRvcj07Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnByb21pc2U7
Ci0gICAgdXNpbmcgRE9NUHJvbWlzZUJhc2U6OnJlamVjdDsKLQotICAgIHZvaWQgcmVzb2x2ZSgp
Ci0gICAgeyAKLSAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlc29sdmUoKTsKLSAgICB9Ci19
OwotCi0KLVJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4
ZWNTdGF0ZSYsIEpTRE9NV2luZG93Jik7Ci0KLXZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBjb25zdCBTdHJpbmcmKTsKLXZvaWQgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgQXJyYXlCdWZmZXIqKTsK
LXZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiwgY29uc3Qgdm9pZCosIHNpemVfdCk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHJlamVjdFByb21p
c2VXaXRoRXhjZXB0aW9uSWZBbnkoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYs
IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVq
ZWN0ZWRQcm9taXNlV2l0aFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYp
OwotCi11c2luZyBQcm9taXNlRnVuY3Rpb24gPSB2b2lkKEpTQzo6RXhlY1N0YXRlJiwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7Ci0KLWVudW0gY2xhc3MgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIHsg
V2luZG93T25seSwgV2luZG93T3JXb3JrZXIgfTsKLQotdGVtcGxhdGU8UHJvbWlzZUZ1bmN0aW9u
IHByb21pc2VGdW5jdGlvbiwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIGV4ZWN1dGlvblNjb3BlPgot
aW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSkKLXsKLSAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotCi0gICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxH
bG9iYWxPYmplY3QoKSk7Ci0gICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVy
cmVkID0gSlNDOjpKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgJmdsb2JhbE9iamVj
dCk7Ci0KLSAgICAvLyBwcm9taXNlRGVmZXJyZWQgY2FuIGJlIG51bGwgd2hlbiB0ZXJtaW5hdGlu
ZyBhIFdvcmtlciBhYnJ1cHRseS4KLSAgICBpZiAoZXhlY3V0aW9uU2NvcGUgPT0gUHJvbWlzZUV4
ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlciAmJiAhcHJvbWlzZURlZmVycmVkKQotICAgICAg
ICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwotCi0gICAgcHJvbWlzZUZ1bmN0aW9uKHN0YXRl
LCBEZWZlcnJlZFByb21pc2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsICpwcm9taXNlRGVmZXJyZWQp
KTsKLQotICAgIHJlamVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoc3RhdGUsIGdsb2JhbE9i
amVjdCwgKnByb21pc2VEZWZlcnJlZCk7Ci0gICAgQVNTRVJUX1VOVVNFRChzY29wZSwgIXNjb3Bl
LmV4Y2VwdGlvbigpKTsKLSAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7Ci19
Ci0KLXVzaW5nIEJpbmRpbmdQcm9taXNlRnVuY3Rpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7Ci10ZW1wbGF0ZTxCaW5kaW5n
UHJvbWlzZUZ1bmN0aW9uIGJpbmRpbmdGdW5jdGlvbj4KLWlubGluZSB2b2lkIGJpbmRpbmdQcm9t
aXNlRnVuY3Rpb25BZGFwdGVyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQotewotICAgIGJpbmRpbmdGdW5jdGlvbigmc3RhdGUsIFdURk1vdmUo
cHJvbWlzZSkpOwotfQotCi10ZW1wbGF0ZTxCaW5kaW5nUHJvbWlzZUZ1bmN0aW9uIGJpbmRpbmdQ
cm9taXNlRnVuY3Rpb24sIFByb21pc2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZT4KLWlu
bGluZSBKU0M6OkpTVmFsdWUgY2FsbFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUpCi17Ci0gICAgcmV0dXJuIGNhbGxQcm9taXNlRnVuY3Rpb248YmluZGluZ1Byb21pc2VGdW5j
dGlvbkFkYXB0ZXI8YmluZGluZ1Byb21pc2VGdW5jdGlvbj4sIGV4ZWN1dGlvblNjb3BlPihzdGF0
ZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTVhMmQy
OWVmZDNmZDdhZGIzMjU4MDFiYjQ2NWJmYTZmY2UzN2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCkBAIC0wLDAg
KzEsMjExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSAiSlNET01FcnJvci5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5j
bHVkZSA8YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRp
b24uaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT05PYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworSlNDOjpKU1ZhbHVlIERlZmVycmVkUHJvbWlzZTo6cHJvbWlzZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIHJldHVybiBkZWZlcnJlZCgp
LT5wcm9taXNlKCk7Cit9CisKK3ZvaWQgRGVmZXJyZWRQcm9taXNlOjpjYWxsRnVuY3Rpb24oRXhl
Y1N0YXRlJiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uLCBKU1ZhbHVlIHJlc29sdXRpb24pCit7Cisg
ICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsK
KworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBw
ZW5kKHJlc29sdXRpb24pOworCisgICAgY2FsbCgmZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKKworICAgIGNsZWFyKCk7Cit9CisK
K3ZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoKQoreworICAgIGlmIChpc1N1c3BlbmRlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgQVNTRVJU
KG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmc3RhdGUpOworICAgIHJl
amVjdChzdGF0ZSwgSlNDOjpqc1VuZGVmaW5lZCgpKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21p
c2U6OnJlamVjdChzdGQ6Om51bGxwdHJfdCkKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2ds
b2JhbE9iamVjdCk7CisgICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRlKTsKKyAgICByZWplY3Qo
c3RhdGUsIEpTQzo6anNOdWxsKCkpOworfQorCit2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0
KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2dsb2Jh
bE9iamVjdCk7CisgICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJnN0YXRlKTsKKworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOworICAgIGF1dG8gZXJyb3IgPSBj
cmVhdGVET01FeGNlcHRpb24oc3RhdGUsIFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgaWYgKFVO
TElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKHN0YXRlLnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZWplY3Qoc3RhdGUsIGVycm9yKTsKK30KKwordm9p
ZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChFeGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKKyAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOworICAg
IGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKCZzdGF0ZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShzdGF0ZS52bSgpKTsKKyAgICBhdXRvIGVycm9yID0gY3JlYXRlRE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMsIG1lc3NhZ2UpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpIHsKKyAgICAgICAgQVNTRVJUKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihz
dGF0ZS52bSgpLCBzY29wZS5leGNlcHRpb24oKSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisKKyAgICByZWplY3Qoc3RhdGUsIGVycm9yKTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6
OnJlamVjdChjb25zdCBKU0M6OlByaXZhdGVOYW1lJiBwcml2YXRlTmFtZSkKK3sKKyAgICBpZiAo
aXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRlZmVycmVkKCkp
OworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CisgICAgSlNDOjpFeGVjU3RhdGUqIHN0YXRl
ID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIoc3RhdGUpOworICAgIHJlamVjdCgqc3RhdGUsIEpTQzo6U3ltYm9sOjpjcmVhdGUoc3Rh
dGUtPnZtKCksIHByaXZhdGVOYW1lLnVpZCgpKSk7Cit9CisKK3ZvaWQgcmVqZWN0UHJvbWlzZVdp
dGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZURlZmVycmVkJiBwcm9taXNlRGVmZXJyZWQpCit7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9T
Q09QRSh2bSk7CisKKyAgICBpZiAoTElLRUxZKCFzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIEpTVmFsdWUgZXJyb3IgPSBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUo
KTsKKyAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworCisgICAgRGVmZXJyZWRQcm9taXNlOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNlRGVmZXJyZWQpLT5yZWplY3Q8SURMQW55PihlcnJv
cik7Cit9CisKK1JlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NV2luZG93JiBkb21XaW5kb3cpCit7CisgICAgSlNDOjpK
U1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVh
dGUoJnN0YXRlLCAmZG9tV2luZG93KTsKKyAgICAvLyBkZWZlcnJlZCBjYW4gb25seSBiZSBudWxs
IGluIHdvcmtlcnMuCisgICAgQVNTRVJUKGRlZmVycmVkKTsKKyAgICByZXR1cm4gRGVmZXJyZWRQ
cm9taXNlOjpjcmVhdGUoZG9tV2luZG93LCAqZGVmZXJyZWQpOworfQorCitKU0M6OkVuY29kZWRK
U1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoc3RhdGUu
bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqc3RhdGUu
bGV4aWNhbEdsb2JhbE9iamVjdCgpOworCisgICAgYXV0byBwcm9taXNlQ29uc3RydWN0b3IgPSBn
bG9iYWxPYmplY3QucHJvbWlzZUNvbnN0cnVjdG9yKCk7CisgICAgYXV0byByZWplY3RGdW5jdGlv
biA9IHByb21pc2VDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgc3RhdGUudm0oKS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgpKTsKKyAgICBhdXRvIHJlamVj
dGlvblZhbHVlID0gY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsKKworICAg
IENhbGxEYXRhIGNhbGxEYXRhOworICAgIGF1dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWpl
Y3RGdW5jdGlvbiwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6
Tm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1l
bnRzLmFwcGVuZChyZWplY3Rpb25WYWx1ZSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhbGwoJnN0YXRlLCByZWplY3RGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBwcm9taXNl
Q29uc3RydWN0b3IsIGFyZ3VtZW50cykpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1
ZSBwYXJzZUFzSlNPTihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZGF0YSkK
K3sKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKKyAgICByZXR1cm4gSlNDOjpK
U09OUGFyc2Uoc3RhdGUsIGRhdGEpOworfQorCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04o
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGRhdGEpCit7Cisg
ICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcGFyc2VBc0pTT04ocHJvbWlzZS0+Z2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKSwgZGF0YSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KFNZTlRBWF9FUlIpOworICAgIGVsc2UKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZTxJRExBbnk+KHZhbHVlKTsKK30KKwordm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZl
cihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZl
cikKK3sKKyAgICBpZiAoIWFycmF5QnVmZmVyKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdDxJ
RExBbnk+KGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHByb21pc2UtPnJlc29s
dmU8SURMSW50ZXJmYWNlPEFycmF5QnVmZmVyPj4oKmFycmF5QnVmZmVyKTsKK30KKwordm9pZCBm
dWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYxM2NhYzdiMjhi
NGM3ZWZhOTI0ZGQ2OTkzMTc3MjcxOTYwZjhmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKQEAgLTAsMCArMSwyNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NQ29udmVydC5o
IgorI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNQ
cm9taXNlRGVmZXJyZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZWZlcnJl
ZFByb21pc2UgOiBwdWJsaWMgRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZShKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJiBkZWZlcnJlZCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkUHJvbWlzZShnbG9i
YWxPYmplY3QsIGRlZmVycmVkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlw
ZT4KKyAgICB2b2lkIHJlc29sdmUodHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1
ZSkKKyAgICB7CisgICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmpl
Y3QoKSk7CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAg
ICAgICByZXNvbHZlKCpleGVjLCB0b0pTPElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCks
IHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpKTsK
KyAgICB9CisKKyAgICB2b2lkIHJlc29sdmUoKQorICAgIHsKKyAgICAgICAgaWYgKGlzU3VzcGVu
ZGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsK
KyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgICAgIHJlc29sdmUoKmV4ZWMsIEpTQzo6anNVbmRl
ZmluZWQoKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAgICB2b2lk
IHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUg
dmFsdWUpCisgICAgeworICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgICAgICBBU1NFUlQoZ2xvYmFs
T2JqZWN0KCkpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsK
KyAgICAgICAgcmVzb2x2ZSgqZXhlYywgdG9KU05ld2x5Q3JlYXRlZDxJRExUeXBlPigqZXhlYywg
Kmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVy
VHlwZT4odmFsdWUpKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KKyAg
ICB2b2lkIHJlamVjdCh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAg
IHsKKyAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsK
KyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpOworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgICAgIHJl
amVjdCgqZXhlYywgdG9KUzxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVjdCgpLCBzdGQ6OmZv
cndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7CisgICAgfQor
CisgICAgdm9pZCByZWplY3QoKTsKKyAgICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJfdCk7Cisg
ICAgdm9pZCByZWplY3QoRXhjZXB0aW9uJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVq
ZWN0KEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0pOworICAgIHZvaWQgcmVqZWN0
KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxi
YWNrPgorICAgIHZvaWQgcmVzb2x2ZVdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7
CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKTsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICBy
ZXNvbHZlKCpleGVjLCBjYWxsYmFjaygqZXhlYywgKmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+CisgICAgdm9pZCByZWplY3RXaXRoQ2Fs
bGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoaXNTdXNwZW5kZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAg
ICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcihleGVjKTsKKyAgICAgICAgcmVqZWN0KCpleGVjLCBjYWxsYmFjaygqZXhlYywg
Kmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQorCisgICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBEZWZlcnJlZFByb21pc2UoSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYgZGVmZXJyZWQpCisgICAgICAg
IDogRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZURlZmVycmVkPihnbG9iYWxPYmplY3QsIGRlZmVy
cmVkKQorICAgIHsKKyAgICB9CisKKyAgICBKU0M6OkpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJl
ZCgpIGNvbnN0IHsgcmV0dXJuIGd1YXJkZWQoKTsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjYWxsRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24sIEpT
Qzo6SlNWYWx1ZSByZXNvbHV0aW9uKTsKKyAgICB2b2lkIHJlc29sdmUoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OkpTVmFsdWUgcmVzb2x1dGlvbikgeyBjYWxsRnVuY3Rpb24oc3RhdGUsIGRl
ZmVycmVkKCktPnJlc29sdmUoKSwgcmVzb2x1dGlvbik7IH0KKyAgICB2b2lkIHJlamVjdChKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlv
bihzdGF0ZSwgZGVmZXJyZWQoKS0+cmVqZWN0KCksIHJlc29sdXRpb24pOyB9Cit9OworCitjbGFz
cyBET01Qcm9taXNlRGVmZXJyZWRCYXNlIHsKK3B1YmxpYzoKKyAgICBET01Qcm9taXNlRGVmZXJy
ZWRCYXNlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgZ2VuZXJpY1Byb21pc2UpCisgICAgICAgIDog
bV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShnZW5lcmljUHJvbWlzZSkpCisgICAgeworICAgIH0K
KworICAgIERPTVByb21pc2VEZWZlcnJlZEJhc2UoRE9NUHJvbWlzZURlZmVycmVkQmFzZSYmIHBy
b21pc2UpCisgICAgICAgIDogbV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShwcm9taXNlLm1fcHJv
bWlzZURlZmVycmVkKSkKKyAgICB7CisgICAgfQorCisgICAgRE9NUHJvbWlzZURlZmVycmVkQmFz
ZShjb25zdCBET01Qcm9taXNlRGVmZXJyZWRCYXNlJiBvdGhlcikKKyAgICAgICAgOiBtX3Byb21p
c2VEZWZlcnJlZChvdGhlci5tX3Byb21pc2VEZWZlcnJlZC5jb3B5UmVmKCkpCisgICAgeworICAg
IH0KKworICAgIERPTVByb21pc2VEZWZlcnJlZEJhc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9t
aXNlRGVmZXJyZWRCYXNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVk
ID0gb3RoZXIubV9wcm9taXNlRGVmZXJyZWQuY29weVJlZigpOworICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorCisgICAgRE9NUHJvbWlzZURlZmVycmVkQmFzZSYgb3BlcmF0b3I9KERPTVBy
b21pc2VEZWZlcnJlZEJhc2UmJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVy
cmVkID0gV1RGTW92ZShvdGhlci5tX3Byb21pc2VEZWZlcnJlZCk7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICB2b2lkIHJlamVjdCgpCisgICAgeworICAgICAgICBtX3Byb21p
c2VEZWZlcnJlZC0+cmVqZWN0KCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
RXJyb3JUeXBlPiAKKyAgICB2b2lkIHJlamVjdChFcnJvclR5cGUmJi4uLiBlcnJvcikKKyAgICB7
CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkLT5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlw
ZT4oZXJyb3IpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgor
ICAgIHZvaWQgcmVqZWN0VHlwZSh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVl
KQorICAgIHsKKyAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdDxJRExUeXBlPihzdGQ6
OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKTsKKyAgICB9
CisKKyAgICBKU0M6OkpTVmFsdWUgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZURl
ZmVycmVkLT5wcm9taXNlKCk7IH07CisKK3Byb3RlY3RlZDoKKyAgICBSZWY8RGVmZXJyZWRQcm9t
aXNlPiBtX3Byb21pc2VEZWZlcnJlZDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+
IAorY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkIDogcHVibGljIERPTVByb21pc2VEZWZlcnJlZEJh
c2UgeworcHVibGljOgorICAgIHVzaW5nIERPTVByb21pc2VEZWZlcnJlZEJhc2U6OkRPTVByb21p
c2VEZWZlcnJlZEJhc2U7CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6b3BlcmF0
b3I9OworICAgIHVzaW5nIERPTVByb21pc2VEZWZlcnJlZEJhc2U6OnByb21pc2U7CisgICAgdXNp
bmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cmVqZWN0OworCisgICAgdm9pZCByZXNvbHZlKHR5
cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCisgICAgeyAKKyAgICAgICAgbV9w
cm9taXNlRGVmZXJyZWQtPnJlc29sdmU8SURMVHlwZT4oc3RkOjpmb3J3YXJkPHR5cGVuYW1lIElE
TFR5cGU6OlBhcmFtZXRlclR5cGU+KHZhbHVlKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBj
bGFzcyBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4gOiBwdWJsaWMgRE9NUHJvbWlzZURlZmVycmVk
QmFzZSB7CitwdWJsaWM6CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6RE9NUHJv
bWlzZURlZmVycmVkQmFzZTsKKyAgICB1c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpvcGVy
YXRvcj07CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cHJvbWlzZTsKKyAgICB1
c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpyZWplY3Q7CisKKyAgICB2b2lkIHJlc29sdmUo
KQorICAgIHsgCisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkLT5yZXNvbHZlKCk7CisgICAgfQor
fTsKKworCitSZWY8RGVmZXJyZWRQcm9taXNlPiBjcmVhdGVEZWZlcnJlZFByb21pc2UoSlNDOjpF
eGVjU3RhdGUmLCBKU0RPTVdpbmRvdyYpOworCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04o
UmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3QgU3RyaW5nJik7Cit2b2lkIGZ1bGZpbGxQcm9t
aXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIEFycmF5QnVmZmVyKik7
Cit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYsIGNvbnN0IHZvaWQqLCBzaXplX3QpOworV0VCQ09SRV9FWFBPUlQgdm9pZCByZWplY3RQcm9t
aXNlV2l0aEV4Y2VwdGlvbklmQW55KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3Qm
LCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJl
amVjdGVkUHJvbWlzZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBTdHJpbmcm
KTsKKwordXNpbmcgUHJvbWlzZUZ1bmN0aW9uID0gdm9pZChKU0M6OkV4ZWNTdGF0ZSYsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYpOworCitlbnVtIGNsYXNzIFByb21pc2VFeGVjdXRpb25TY29wZSB7
IFdpbmRvd09ubHksIFdpbmRvd09yV29ya2VyIH07CisKK3RlbXBsYXRlPFByb21pc2VGdW5jdGlv
biBwcm9taXNlRnVuY3Rpb24sIFByb21pc2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZT4K
K2lubGluZSBKU0M6OkpTVmFsdWUgY2FsbFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUpCit7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpOworICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZl
cnJlZCA9IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsICZnbG9iYWxPYmpl
Y3QpOworCisgICAgLy8gcHJvbWlzZURlZmVycmVkIGNhbiBiZSBudWxsIHdoZW4gdGVybWluYXRp
bmcgYSBXb3JrZXIgYWJydXB0bHkuCisgICAgaWYgKGV4ZWN1dGlvblNjb3BlID09IFByb21pc2VF
eGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXIgJiYgIXByb21pc2VEZWZlcnJlZCkKKyAgICAg
ICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKworICAgIHByb21pc2VGdW5jdGlvbihzdGF0
ZSwgRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCAqcHJvbWlzZURlZmVycmVk
KSk7CisKKyAgICByZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KHN0YXRlLCBnbG9iYWxP
YmplY3QsICpwcm9taXNlRGVmZXJyZWQpOworICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFzY29w
ZS5leGNlcHRpb24oKSk7CisgICAgcmV0dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOwor
fQorCit1c2luZyBCaW5kaW5nUHJvbWlzZUZ1bmN0aW9uID0gSlNDOjpFbmNvZGVkSlNWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSosIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwordGVtcGxhdGU8QmluZGlu
Z1Byb21pc2VGdW5jdGlvbiBiaW5kaW5nRnVuY3Rpb24+CitpbmxpbmUgdm9pZCBiaW5kaW5nUHJv
bWlzZUZ1bmN0aW9uQWRhcHRlcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBiaW5kaW5nRnVuY3Rpb24oJnN0YXRlLCBXVEZNb3Zl
KHByb21pc2UpKTsKK30KKwordGVtcGxhdGU8QmluZGluZ1Byb21pc2VGdW5jdGlvbiBiaW5kaW5n
UHJvbWlzZUZ1bmN0aW9uLCBQcm9taXNlRXhlY3V0aW9uU2NvcGUgZXhlY3V0aW9uU2NvcGU+Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0
YXRlKQoreworICAgIHJldHVybiBjYWxsUHJvbWlzZUZ1bmN0aW9uPGJpbmRpbmdQcm9taXNlRnVu
Y3Rpb25BZGFwdGVyPGJpbmRpbmdQcm9taXNlRnVuY3Rpb24+LCBleGVjdXRpb25TY29wZT4oc3Rh
dGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggZWYzN2FlYWFkODA0
YWNiNGRiNjM0NDIxN2I4MDY2OGJmMzYwYTI1MC4uNDEwZGU3NjQzMmQyODM5MjU0MzNmMmQwNzJi
MDlkYjk3NjRmMDc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
dWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkpTQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkpTQ3J5cHRvS2V5LmgiCiAjaW5j
bHVkZSAiSlNDcnlwdG9LZXlQYWlyLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5j
bHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIK
ICNpbmNsdWRlICJKU0VjS2V5UGFyYW1zLmgiCiAjaW5jbHVkZSAiSlNFY2RoS2V5RGVyaXZlUGFy
YW1zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVUNv
bW1hbmRCdWZmZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJH
UFVDb21tYW5kQnVmZmVyQ3VzdG9tLmNwcAppbmRleCAyZmIzZjBiOTIyNjIyZDQ2YTkyMmY3YjYy
Yjk2OGY4Y2VlOGQ4NGUyLi45MzBjNGZkM2E3ZjFlNGQ4ZjgzNGU3MjRlOTY0NDg0YjI4NDNlNTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRC
dWZmZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BV
Q29tbWFuZEJ1ZmZlckN1c3RvbS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VC
R1BVKQogCiAjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3Vz
dG9tLmNwcAppbmRleCA2MzhiMzdlNGFjNTFlZmY4ZmNkNmNiZGFiM2MyMDlkM2ZmZjFhYjY2Li40
Y2IzZTJjNWU5MDMzOGNlN2VjY2RlNjI4ZDRiNzk2YTA3NWViNjVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20u
Y3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNDcnlwdG9LZXlQYWlyLmgiCiAjaW5j
bHVkZSAiSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmgiCiAjaW5jbHVkZSAiSlNDcnlwdG9P
cGVyYXRpb25EYXRhLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvRXJyb3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZGJiNDdiZGRiYmZlM2VlMzA4MGYzYmU5NjY2YjQ2OGZmYzFj
NTcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKQEAgLTAsMCArMSwyOTkgQEAK
Ky8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oIgorCisjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCisjaW5jbHVkZSAiSlNET01Db25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8PiBUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OkluaXQ+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBib29sIGlzTnVsbE9yVW5kZWZpbmVkID0gdmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKTsKKyAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51
bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5k
ZWZpbmVkICYmICFvYmplY3QpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhy
b3dTY29wZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmIChVTkxJS0VMWShv
YmplY3QgJiYgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9CisgICAgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdCByZXN1bHQ7CisgICAg
SlNWYWx1ZSBidWJibGVzVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkg
OiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYnVi
YmxlcyIpKTsKKyAgICBpZiAoIWJ1YmJsZXNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAg
IHJlc3VsdC5idWJibGVzID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgYnViYmxlc1ZhbHVl
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0g
ZWxzZQorICAgICAgICByZXN1bHQuYnViYmxlcyA9IGZhbHNlOworICAgIEpTVmFsdWUgY2FuY2Vs
YWJsZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5n
ZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImNhbmNlbGFibGUiKSk7
CisgICAgaWYgKCFjYW5jZWxhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1
bHQuY2FuY2VsYWJsZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIGNhbmNlbGFibGVWYWx1
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcmVzdWx0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICBKU1ZhbHVlIGNv
bXBvc2VkVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3Qt
PmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiY29tcG9zZWQiKSk7
CisgICAgaWYgKCFjb21wb3NlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0
LmNvbXBvc2VkID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgY29tcG9zZWRWYWx1ZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UK
KyAgICAgICAgcmVzdWx0LmNvbXBvc2VkID0gZmFsc2U7CisgICAgSlNWYWx1ZSBwcm9taXNlVmFs
dWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3Rh
dGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicHJvbWlzZSIpKTsKKyAgICBpZiAo
IXByb21pc2VWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5wcm9taXNlID0g
Y29udmVydDxJRExQcm9taXNlPElETEFueT4+KHN0YXRlLCBwcm9taXNlVmFsdWUpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdGhyb3dSZXF1aXJlZE1lbWJlclR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgInBy
b21pc2UiLCAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudEluaXQiLCAiUHJvbWlzZSIpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBKU1ZhbHVlIHJlYXNvblZhbHVlID0gaXNOdWxs
T3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlYXNvbiIpKTsKKyAgICBpZiAoIXJlYXNvblZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnJlYXNvbiA9IGNvbnZlcnQ8SURMQW55
PihzdGF0ZSwgcmVhc29uVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdC5yZWFzb24gPSBqc1VuZGVm
aW5lZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9v
bCBzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworCitjbGFzcyBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OworICAgIHN0YXRpYyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7Cisg
ICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAg
IH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKwordXNpbmcgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD47CisKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6Y29u
c3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7Cisg
ICAgQVNTRVJUKGNhc3RlZFRoaXMpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMikpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byB0eXBl
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOworICAgIGF1dG8gZXZlbnRJbml0RGljdCA9IGNvbnZlcnQ8SURMRGljdGlvbmFyeTxUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisgICAgYXV0byBvYmplY3QgPSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Ojpj
cmVhdGUoKnN0YXRlLCBXVEZNb3ZlKHR5cGUpLCBXVEZNb3ZlKGV2ZW50SW5pdERpY3QpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVz
dFByb21pc2VSZWplY3Rpb25FdmVudD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKK30KKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAg
cmV0dXJuIEpTRXZlbnQ6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKK30KKwor
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlM
aXRlcmFsKCJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IikpKSwgUmVhZE9ubHkgfCBEb250RW51
bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDIpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9OworCisvKiBI
YXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQorewor
ICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1
Y3RvcikgfSB9LAorICAgIHsgInByb21pc2UiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2UpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAi
cmVhc29uIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRSZWFzb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50UHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVy
dGllcyh2bSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlVGFibGVWYWx1ZXMs
ICp0aGlzKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dDo6c19pbmZvID0geyAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIsICZCYXNlOjpzX2luZm8s
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KSB9Owor
CitKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYgaW1wbCkKKyAgICA6IEpTRXZlbnQoc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7
CisKK30KKworSlNPYmplY3QqIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlUHJv
dG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBy
ZXR1cm4gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpjcmVhdGUodm0sICZn
bG9iYWxPYmplY3QsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU0V2ZW50Ojpwcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4odm0s
IGdsb2JhbE9iamVjdCk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudCogQmluZGluZ0NhbGxlcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+Ojpj
YXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50Kj4oc3RhdGUudm0oKSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworfQorCitz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdl
dHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmLCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ+OjphdHRyaWJ1dGU8anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlz
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2U+KHN0YXRlLCB0
aGlzVmFsdWUsICJwcm9taXNlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETFByb21pc2U8SURMQW55Pj4oaW1wbC5wcm9taXNlKCkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50JiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpz
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OjphdHRyaWJ1dGU8anNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UmVhc29uR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAicmVhc29uIik7
Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRS
ZWFzb25HZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQW55
PihpbXBsLnJlYXNvbigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlw
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQ6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVj
dCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1cm4g
ZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIHZhbHVlKTsKK30KKworSlNWYWx1ZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
CisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMi
IHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyNVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRF
W107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lO
VEVHUklUWSkKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9j
YXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBl
eHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZp
ZXIoIj8/XzdUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50QFdlYkNvcmVAQDZCQCIpKTsKKyNlbHNl
CisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUyNVRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRFWzJdOworI2lmIENPTVBJTEVSKENMQU5HKQorICAgIC8vIElm
IHRoaXMgZmFpbHMgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCBkb2VzIG5vdCBoYXZlIGEgdnRh
YmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fz
c2VydChfX2lzX3BvbHltb3JwaGljKFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpLCAiVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudCBpcyBub3QgcG9seW1vcnBoaWMiKTsKKyNlbmRpZgorI2VuZGlm
CisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2Ug
YWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCBoYXMg
c3ViY2xhc3Nlcy4gSWYgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCBoYXMgc3ViY2xhc3NlcyB0
aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudCB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmlu
ZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxW
VGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1
cm4gY3JlYXRlV3JhcHBlcjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PihnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwg
aW1wbCk7Cit9CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA3MTA5NGExMDM1NjFmZjM1OWFhNTE4N2Y4M2ZkOTA3MjE5MTQzZDYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NQ29udmVydC5o
IgorI2luY2x1ZGUgIkpTRXZlbnQuaCIKKyNpbmNsdWRlICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50IDogcHVibGljIEpTRXZlbnQgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U0V2ZW50OworICAgIHVzaW5nIERPTVdyYXBwZWQgPSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
OworICAgIHN0YXRpYyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqIGNyZWF0ZShKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAp
KSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qt
PnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Cisg
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxP
YmplY3QmKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpKU1R5cGUoSlNFdmVudFR5cGUpLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIFRlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQmIHdyYXBwZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmPihCYXNlOjp3cmFwcGVkKCkpOworICAgIH0K
K3Byb3RlY3RlZDoKKyAgICBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQoSlNDOjpTdHJ1Y3R1
cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiYm
KTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKworSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKHN0YXRlLCBnbG9iYWxPYmpl
Y3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVh
dGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudD4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWZQdHI8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8g
dG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxs
KCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJD
b252ZXJ0ZXJUcmFpdHM8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4geworICAgIHVzaW5nIFdy
YXBwZXJDbGFzcyA9IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDsKKyAgICB1c2luZyBUb1dy
YXBwZWRSZXR1cm5UeXBlID0gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCo7Cit9OwordGVtcGxh
dGU8PiBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IGNvbnZlcnREaWN0aW9uYXJ5PFRl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQ+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlKTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU2YTk0OTFhZDdhNTExN2M1OGExN2ExZjg4ODc1MGVh
ZmI4N2M5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmlkbApAQCAtMCwwICsxLDM4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbnN0
cnVjdG9yKERPTVN0cmluZyB0eXBlLCBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50SW5pdCBldmVu
dEluaXREaWN0KSwKKyAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdFN0YXRlLAorICAgIEV4
cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAorXSBpbnRlcmZhY2UgVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCA6IEV2ZW50IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZTxhbnk+IHByb21p
c2U7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGFueSByZWFzb247Cit9OworCitkaWN0aW9uYXJ5
IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRJbml0IDogRXZlbnRJbml0IHsKKyAgICByZXF1aXJl
ZCBQcm9taXNlPGFueT4gcHJvbWlzZTsKKyAgICBhbnkgcmVhc29uOworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmgKaW5kZXggMGIwNmNlOTc3MjgzYjc2ZDMxNTUxZWI4OThlMjZiZDQxODllYmU1Mi4uODEz
NDAzYWU3OGQyMmUzOTBhNjk3NjBlZjk0NzYzNmE0NmNlMmIzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlLmgiCiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIEZvbnRGYWNl
IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2U+LCBwcml2YXRlIENTU0ZvbnRGYWNl
OjpDbGllbnQKICAgICBlbnVtIGNsYXNzIExvYWRTdGF0dXMgeyBVbmxvYWRlZCwgTG9hZGluZywg
TG9hZGVkLCBFcnJvciB9OwogICAgIExvYWRTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CiAKLSAgICB1
c2luZyBQcm9taXNlID0gRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8Rm9udEZhY2U+PjsKKyAgICB1
c2luZyBQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxGb250RmFjZT4+
OwogICAgIHN0ZDo6b3B0aW9uYWw8UHJvbWlzZT4mIHByb21pc2UoKSB7IHJldHVybiBtX3Byb21p
c2U7IH0KICAgICB2b2lkIHJlZ2lzdGVyTG9hZGVkKFByb21pc2UmJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlU2V0LmgKaW5kZXggZmE4ZmUyYTFjODM5MDNlMjM1ZDhjYmY0OThmZGNkMmIzYTc4N2Rh
Ni4uZTg0ZDA5NWVjY2JkYWIwMDc4NjgwMTRiMjM4NjIyMDQyY2UxMzk4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVNldC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVm
ZXJyZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NiwxNCArNDYsMTQgQEAgY2xh
c3MgRm9udEZhY2VTZXQgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFjZVNldD4sIHBy
aXZhdGUgQ1NTRm9udEZhY2VTZXQKICAgICBib29sIHJlbW92ZShGb250RmFjZSYpOwogICAgIHZv
aWQgY2xlYXIoKTsKIAotICAgIHVzaW5nIExvYWRQcm9taXNlID0gRE9NUHJvbWlzZTxJRExTZXF1
ZW5jZTxJRExJbnRlcmZhY2U8Rm9udEZhY2U+Pj47CisgICAgdXNpbmcgTG9hZFByb21pc2UgPSBE
T01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEZvbnRGYWNlPj4+Owog
ICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgTG9h
ZFByb21pc2UmJik7CiAgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2hlY2soY29uc3QgU3RyaW5nJiBm
b250LCBjb25zdCBTdHJpbmcmIHRleHQpOwogCiAgICAgZW51bSBjbGFzcyBMb2FkU3RhdHVzIHsg
TG9hZGluZywgTG9hZGVkIH07CiAgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsKIAotICAg
IHVzaW5nIFJlYWR5UHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPEZvbnRGYWNlU2V0
Pj47CisgICAgdXNpbmcgUmVhZHlQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVy
ZmFjZTxGb250RmFjZVNldD4+OwogICAgIHZvaWQgcmVnaXN0ZXJSZWFkeShSZWFkeVByb21pc2Um
Jik7CiAKICAgICBDU1NGb250RmFjZVNldCYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCmluZGV4IDExMjA5
N2IxYzI4M2Y4YzA4NDQ3ZjFkMGFjMzE1ZmZjNmUzYTFiMmMuLmVmZGZjMjQ2MjY4NmJkZTY3NTY0
YWQ0YmZhNTI4MGJiOTgzZDA2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2lu
Y2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1By
b21pc2VSZWplY3Rpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rp
b25FdmVudC5oCmluZGV4IDBmYjFhNGMwYTA2MTk3ZDQzYzAwNmZiYzczMDQ3NzRmYjMxMzdlNzIu
LjE2NDI3NTc2MjA2OTllMTcxMTRhODE3ZDk2YWU2MmNiNTJkYWNiZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIK
ICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMyw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFByb21pc2VSZWplY3Rpb25FdmVu
dCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEluaXQgOiBFdmVu
dEluaXQgewotICAgICAgICBKU0M6OkpTVmFsdWUgcHJvbWlzZTsKKyAgICAgICAgSlNDOjpKU1By
b21pc2UqIHByb21pc2U7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSByZWFzb247CiAgICAgfTsKIApA
QCAtNDQsNyArNDUsNyBAQCBjbGFzcyBQcm9taXNlUmVqZWN0aW9uRXZlbnQgZmluYWwgOiBwdWJs
aWMgRXZlbnQgewogCiAgICAgdmlydHVhbCB+UHJvbWlzZVJlamVjdGlvbkV2ZW50KCk7CiAKLSAg
ICBKU0M6OkpTVmFsdWUgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZS5nZXQoKTsg
fQorICAgIEpTQzo6SlNQcm9taXNlJiBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4gKm1fcHJvbWlz
ZS5nZXQoKTsgfQogICAgIEpTQzo6SlNWYWx1ZSByZWFzb24oKSBjb25zdCB7IHJldHVybiBtX3Jl
YXNvbi5nZXQoKTsgfQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBQcm9taXNlUmVqZWN0aW9uRXZlbnRJbnRlcmZhY2VUeXBlOyB9
CkBAIC01Miw3ICs1Myw3IEBAIGNsYXNzIFByb21pc2VSZWplY3Rpb25FdmVudCBmaW5hbCA6IHB1
YmxpYyBFdmVudCB7CiBwcml2YXRlOgogICAgIFByb21pc2VSZWplY3Rpb25FdmVudChKU0M6OkV4
ZWNTdGF0ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwog
Ci0gICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX3Byb21pc2U7CisgICAgSlNDOjpTdHJv
bmc8SlNDOjpKU1Byb21pc2U+IG1fcHJvbWlzZTsKICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+IG1fcmVhc29uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlamVj
dGVkUHJvbWlzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlamVjdGVkUHJvbWlz
ZVRyYWNrZXIuY3BwCmluZGV4IDIzMmFiYjgyZjA5MTE2ZTYzYTdjNjhmZTg5Mzc5MWRlNTNlMjAz
NjcuLjAwNDdkNjhhMDY3MWZhMjY5ZjFjNTA1YWU3NTUwODY2NDAzN2Q2NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5jcHAKQEAgLTUzLDMzICs1Mywy
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWplY3RlZFByb21pc2UgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlamVjdGVkUHJvbWlzZSk7CiBwdWJsaWM6Ci0gICAgUmVqZWN0
ZWRQcm9taXNlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9t
aXNlJiBwcm9taXNlKQotICAgICAgICA6IG1fZ2xvYmFsT2JqZWN0KHZtLCAmZ2xvYmFsT2JqZWN0
KQotICAgICAgICAsIG1fcHJvbWlzZSh2bSwgJnByb21pc2UpCisgICAgUmVqZWN0ZWRQcm9taXNl
KEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSYgcHJvbWlzZSkKKyAg
ICAgICAgOiBtX3Byb21pc2UoRE9NUHJvbWlzZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgcHJvbWlz
ZSkpCiAgICAgewogICAgIH0KIAogICAgIFJlamVjdGVkUHJvbWlzZShSZWplY3RlZFByb21pc2Um
JikgPSBkZWZhdWx0OwogCi0gICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpCisg
ICAgRE9NUHJvbWlzZSYgcHJvbWlzZSgpCiAgICAgewotICAgICAgICByZXR1cm4gKm1fZ2xvYmFs
T2JqZWN0LmdldCgpOwotICAgIH0KLQotICAgIEpTUHJvbWlzZSYgcHJvbWlzZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gKm1fcHJvbWlzZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fcHJvbWlz
ZS5nZXQoKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0
PiBtX2dsb2JhbE9iamVjdDsKLSAgICBTdHJvbmc8SlNQcm9taXNlPiBtX3Byb21pc2U7CisgICAg
UmVmPERPTVByb21pc2U+IG1fcHJvbWlzZTsKIH07CiAKIGNsYXNzIFVuaGFuZGxlZFByb21pc2Ug
OiBwdWJsaWMgUmVqZWN0ZWRQcm9taXNlIHsKIHB1YmxpYzoKLSAgICBVbmhhbmRsZWRQcm9taXNl
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBwcm9t
aXNlLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrKQotICAgICAgICA6IFJlamVjdGVk
UHJvbWlzZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9taXNlKQorICAgIFVuaGFuZGxlZFByb21pc2Uo
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBwcm9taXNlLCBSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrKQorICAgICAgICA6IFJlamVjdGVkUHJvbWlzZShn
bG9iYWxPYmplY3QsIHByb21pc2UpCiAgICAgICAgICwgbV9zdGFjayhXVEZNb3ZlKHN0YWNrKSkK
ICAgICB7CiAgICAgfQpAQCAtMTI1LDE3ICsxMTgsMTkgQEAgdm9pZCBSZWplY3RlZFByb21pc2VU
cmFja2VyOjpwcm9taXNlUmVqZWN0ZWQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QKIHsKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJh
cHBhcGlzLmh0bWwjdGhlLWhvc3Rwcm9taXNlcmVqZWN0aW9udHJhY2tlci1pbXBsZW1lbnRhdGlv
bgogCi0gICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLSAgICBKU1ZhbHVlIHJlYXNvbiA9IHByb21p
c2UucmVzdWx0KHZtKTsKLSAgICBtX2Fib3V0VG9CZU5vdGlmaWVkUmVqZWN0ZWRQcm9taXNlcy5h
cHBlbmQoVW5oYW5kbGVkUHJvbWlzZSB7IHZtLCBnbG9iYWxPYmplY3QsIHByb21pc2UsIGNyZWF0
ZVNjcmlwdENhbGxTdGFja0Zyb21SZWFzb24oc3RhdGUsIHJlYXNvbikgfSk7CisgICAgSlNWYWx1
ZSByZWFzb24gPSBwcm9taXNlLnJlc3VsdChzdGF0ZS52bSgpKTsKKyAgICBtX2Fib3V0VG9CZU5v
dGlmaWVkUmVqZWN0ZWRQcm9taXNlcy5hcHBlbmQoVW5oYW5kbGVkUHJvbWlzZSB7IGdsb2JhbE9i
amVjdCwgcHJvbWlzZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRnJvbVJlYXNvbihzdGF0ZSwgcmVh
c29uKSB9KTsKIH0KIAotdm9pZCBSZWplY3RlZFByb21pc2VUcmFja2VyOjpwcm9taXNlSGFuZGxl
ZChFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1By
b21pc2UmIHByb21pc2UpCit2b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnByb21pc2VIYW5k
bGVkKEV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlz
ZSYgcHJvbWlzZSkKIHsKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS93ZWJhcHBhcGlzLmh0bWwjdGhlLWhvc3Rwcm9taXNlcmVqZWN0aW9udHJhY2tlci1pbXBs
ZW1lbnRhdGlvbgogCiAgICAgYm9vbCByZW1vdmVkID0gbV9hYm91dFRvQmVOb3RpZmllZFJlamVj
dGVkUHJvbWlzZXMucmVtb3ZlRmlyc3RNYXRjaGluZyhbJl0gKFVuaGFuZGxlZFByb21pc2UmIHVu
aGFuZGxlZFByb21pc2UpIHsKLSAgICAgICAgcmV0dXJuICZ1bmhhbmRsZWRQcm9taXNlLnByb21p
c2UoKSA9PSAmcHJvbWlzZTsKKyAgICAgICAgYXV0byYgZG9tUHJvbWlzZSA9IHVuaGFuZGxlZFBy
b21pc2UucHJvbWlzZSgpOworICAgICAgICBpZiAoZG9tUHJvbWlzZS5pc1N1c3BlbmRlZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gZG9tUHJvbWlzZS5wcm9t
aXNlKCkgPT0gJnByb21pc2U7CiAgICAgfSk7CiAgICAgaWYgKHJlbW92ZWQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE0Myw5ICsxMzgsNyBAQCB2b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnBy
b21pc2VIYW5kbGVkKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JgogICAgIGlm
ICghbV9vdXRzdGFuZGluZ1JlamVjdGVkUHJvbWlzZXMucmVtb3ZlKCZwcm9taXNlKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLQotICAgIG1fY29udGV4dC5w
b3N0VGFzayhbdGhpcywgcmVqZWN0ZWRQcm9taXNlID0gUmVqZWN0ZWRQcm9taXNlIHsgdm0sIGds
b2JhbE9iamVjdCwgcHJvbWlzZSB9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUg
eworICAgIG1fY29udGV4dC5wb3N0VGFzayhbdGhpcywgcmVqZWN0ZWRQcm9taXNlID0gUmVqZWN0
ZWRQcm9taXNlIHsgZ2xvYmFsT2JqZWN0LCBwcm9taXNlIH1dIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIHJlcG9ydFJlamVjdGlvbkhhbmRsZWQoV1RGTW92ZShy
ZWplY3RlZFByb21pc2UpKTsKICAgICB9KTsKIH0KQEAgLTE3MSw4ICsxNjQsMTEgQEAgdm9pZCBS
ZWplY3RlZFByb21pc2VUcmFja2VyOjpyZXBvcnRVbmhhbmRsZWRSZWplY3Rpb25zKFZlY3RvcjxV
bmhhbmRsZWRQcm9taXNlPiYKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKIAogICAg
IGZvciAoYXV0byYgdW5oYW5kbGVkUHJvbWlzZSA6IHVuaGFuZGxlZFByb21pc2VzKSB7Ci0gICAg
ICAgIEV4ZWNTdGF0ZSYgc3RhdGUgPSAqdW5oYW5kbGVkUHJvbWlzZS5nbG9iYWxPYmplY3QoKS5n
bG9iYWxFeGVjKCk7Ci0gICAgICAgIGF1dG8mIHByb21pc2UgPSB1bmhhbmRsZWRQcm9taXNlLnBy
b21pc2UoKTsKKyAgICAgICAgUmVmPERPTVByb21pc2U+IGRvbVByb21pc2UgPSB1bmhhbmRsZWRQ
cm9taXNlLnByb21pc2UoKTsKKyAgICAgICAgaWYgKGRvbVByb21pc2UtPmlzU3VzcGVuZGVkKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgRXhlY1N0YXRlJiBzdGF0ZSA9ICpkb21Q
cm9taXNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBhdXRvJiBwcm9t
aXNlID0gKmRvbVByb21pc2UtPnByb21pc2UoKTsKIAogICAgICAgICBpZiAocHJvbWlzZS5pc0hh
bmRsZWQodm0pKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xODcsNyArMTgzLDcgQEAgdm9p
ZCBSZWplY3RlZFByb21pc2VUcmFja2VyOjpyZXBvcnRVbmhhbmRsZWRSZWplY3Rpb25zKFZlY3Rv
cjxVbmhhbmRsZWRQcm9taXNlPiYKICAgICAgICAgYm9vbCBuZWVkc0RlZmF1bHRBY3Rpb24gPSB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogCiAgICAgICAgIGlmIChuZWVkc0RlZmF1bHRB
Y3Rpb24pCi0gICAgICAgICAgICBtX2NvbnRleHQucmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVj
dGlvbihzdGF0ZSwgdW5oYW5kbGVkUHJvbWlzZS5wcm9taXNlKCksIHVuaGFuZGxlZFByb21pc2Uu
Y2FsbFN0YWNrKCkpOworICAgICAgICAgICAgbV9jb250ZXh0LnJlcG9ydFVuaGFuZGxlZFByb21p
c2VSZWplY3Rpb24oc3RhdGUsIHByb21pc2UsIHVuaGFuZGxlZFByb21pc2UuY2FsbFN0YWNrKCkp
OwogCiAgICAgICAgIGlmICghcHJvbWlzZS5pc0hhbmRsZWQodm0pKQogICAgICAgICAgICAgbV9v
dXRzdGFuZGluZ1JlamVjdGVkUHJvbWlzZXMuc2V0KCZwcm9taXNlLCAmcHJvbWlzZSk7CkBAIC0y
MDEsMTEgKzE5NywxNiBAQCB2b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9ydFJlamVj
dGlvbkhhbmRsZWQoUmVqZWN0ZWRQcm9taXNlJiYgcmVqZWN0ZWRQcgogICAgIFZNJiB2bSA9IG1f
Y29udGV4dC52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCi0gICAgRXhl
Y1N0YXRlJiBzdGF0ZSA9ICpyZWplY3RlZFByb21pc2UuZ2xvYmFsT2JqZWN0KCkuZ2xvYmFsRXhl
YygpOworICAgIFJlZjxET01Qcm9taXNlPiBkb21Qcm9taXNlID0gcmVqZWN0ZWRQcm9taXNlLnBy
b21pc2UoKTsKKyAgICBpZiAoZG9tUHJvbWlzZS0+aXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRXhlY1N0YXRlJiBzdGF0ZSA9ICpkb21Qcm9taXNlLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsRXhlYygpOworICAgIGF1dG8mIHByb21pc2UgPSAqZG9tUHJvbWlzZS0+cHJvbWlz
ZSgpOwogCiAgICAgUHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IGluaXRpYWxpemVyOwotICAg
IGluaXRpYWxpemVyLnByb21pc2UgPSAmcmVqZWN0ZWRQcm9taXNlLnByb21pc2UoKTsKLSAgICBp
bml0aWFsaXplci5yZWFzb24gPSByZWplY3RlZFByb21pc2UucHJvbWlzZSgpLnJlc3VsdChzdGF0
ZS52bSgpKTsKKyAgICBpbml0aWFsaXplci5wcm9taXNlID0gJnByb21pc2U7CisgICAgaW5pdGlh
bGl6ZXIucmVhc29uID0gcHJvbWlzZS5yZXN1bHQodm0pOwogCiAgICAgYXV0byBldmVudCA9IFBy
b21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlKHN0YXRlLCBldmVudE5hbWVzKCkucmVqZWN0aW9u
aGFuZGxlZEV2ZW50LCBpbml0aWFsaXplcik7CiAgICAgYXV0byB0YXJnZXQgPSBtX2NvbnRleHQu
ZXJyb3JFdmVudFRhcmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggODlmOGVkYjE4MzVkOWQ2MjJkMzcwNGYxNDZiOTFiN2JhZTRlMTAxYi4uOTQ3NGU0
MjAyMjMxNGJmNjc3ODU2MTYyZjQzZjA4MDRiMjViODhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAiSFRNTFNv
dXJjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAi
SlNET01FcnJvci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5j
bHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xMDEyLDcgKzEwMTIs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlUmVzb2x2ZVBlbmRpbmdQbGF5UHJv
bWlzZXMoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlamVjdFBlbmRpbmdQbGF5UHJvbWlz
ZXMoRE9NRXJyb3ImIGVycm9yKQogewotICAgIFZlY3RvcjxET01Qcm9taXNlPHZvaWQ+PiBwZW5k
aW5nUGxheVByb21pc2VzID0gV1RGTW92ZShtX3BlbmRpbmdQbGF5UHJvbWlzZXMpOworICAgIFZl
Y3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+IHBlbmRpbmdQbGF5UHJvbWlzZXMgPSBXVEZN
b3ZlKG1fcGVuZGluZ1BsYXlQcm9taXNlcyk7CiAKICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBw
ZW5kaW5nUGxheVByb21pc2VzKQogICAgICAgICBwcm9taXNlLnJlamVjdFR5cGU8SURMSW50ZXJm
YWNlPERPTUVycm9yPj4oZXJyb3IpOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZWplY3RQZW5kaW5nUGxheVByb21pc2VzKERPTUVycm9yJiBlcnJvcikKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXNvbHZlUGVuZGluZ1BsYXlQcm9taXNlcygpCiB7Ci0g
ICAgVmVjdG9yPERPTVByb21pc2U8dm9pZD4+IHBlbmRpbmdQbGF5UHJvbWlzZXMgPSBXVEZNb3Zl
KG1fcGVuZGluZ1BsYXlQcm9taXNlcyk7CisgICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPj4gcGVuZGluZ1BsYXlQcm9taXNlcyA9IFdURk1vdmUobV9wZW5kaW5nUGxheVByb21pc2Vz
KTsKIAogICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHBlbmRpbmdQbGF5UHJvbWlzZXMpCiAgICAg
ICAgIHByb21pc2UucmVzb2x2ZSgpOwpAQCAtMzEzNiw3ICszMTM2LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYgcHJlbG9hZCkKICAgICBzZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHByZWxvYWRBdHRyLCBwcmVsb2FkKTsKIH0KIAot
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5KERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGxheSglcCkiLCB0
aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA5NmUwYTk1
ZDY4OGU4MmE0ZTI3MDk4YmU5YzE1NTQxNTk2NDQxMzAxLi4xOGQ2ZmJmYmQ5ZDVmOTM5ZThiZDA3
ZjhlYzZhNzU0M2JlODk3OTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBWaWRlb1RyYWNrTGlzdDsKIGNsYXNzIFZpZGVvVHJh
Y2tQcml2YXRlOwogY2xhc3MgV2ViS2l0TWVkaWFLZXlzOwogCi10ZW1wbGF0ZTx0eXBlbmFtZT4g
Y2xhc3MgRE9NUHJvbWlzZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9taXNlRGVm
ZXJyZWQ7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiB1c2luZyBDdWVJbnRlcnZhbFRyZWUg
PSBQT0RJbnRlcnZhbFRyZWU8TWVkaWFUaW1lLCBUZXh0VHJhY2tDdWUqPjsKQEAgLTIzOCw3ICsy
MzgsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50CiAgICAgYm9vbCBsb29wKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRMb29wKGJvb2wgYik7CiAKLSAgICB2b2lkIHBsYXkoRE9NUHJvbWlzZTx2b2lk
PiYmKTsKKyAgICB2b2lkIHBsYXkoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwYXVzZSgpIG92ZXJyaWRlOwpAQCAtODcxLDcgKzg3MSw3IEBAIGNsYXNzIEhUTUxNZWRp
YUVsZW1lbnQKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9wbGF5ZWRUaW1lUmFuZ2VzOwogICAg
IEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwogCi0gICAgVmVjdG9yPERPTVBy
b21pc2U8dm9pZD4+IG1fcGVuZGluZ1BsYXlQcm9taXNlczsKKyAgICBWZWN0b3I8RE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+PiBtX3BlbmRpbmdQbGF5UHJvbWlzZXM7CiAKICAgICBkb3VibGUgbV9y
ZXF1ZXN0ZWRQbGF5YmFja1JhdGUgeyAxIH07CiAgICAgZG91YmxlIG1fcmVwb3J0ZWRQbGF5YmFj
a1JhdGUgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaAppbmRleCBiZjExYzNmZjYxOGYxNWE0NzAyNTU5OGFh
MmJlZmRlYWVmOGE3YTczLi5lODNkNjBmODU0OGU3ZDNjYmQ5YTg2NDQ0ZjcwODg3MTBmNjM1NmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29t
bWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVDb21tYW5kQnVmZmVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUp
CiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBiYThhMjE1Y2NjM2E4NWIy
YThlMWYxMDM3OTdkNmE1OGFmNjQyMGJjLi44MzdhNTQyODNjZGVmYjMxYjFlZjEzMjU4MjcyZDNj
NTczZjY2Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0j
aW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2UuaCIKICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgpAQCAtNTczLDcg
KzU3Myw3IEBAIGNsYXNzIEludGVybmFscyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVy
bmFscz4sICBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvCiAgICAgdW5zaWduZWQgbG9uZyB0cmFj
a0F1ZGlvU2FtcGxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrQXVkaW9TYW1wbGVDb3Vu
dDsgfQogICAgIHVuc2lnbmVkIGxvbmcgdHJhY2tWaWRlb1NhbXBsZUNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV90cmFja1ZpZGVvU2FtcGxlQ291bnQ7IH0KICAgICB2b2lkIG9ic2VydmVNZWRpYVN0
cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smKTsKLSAgICB1c2luZyBUcmFja0ZyYW1lUHJvbWlz
ZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPEltYWdlRGF0YT4+OworICAgIHVzaW5nIFRyYWNr
RnJhbWVQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxJbWFnZURhdGE+
PjsKICAgICB2b2lkIGdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKFRyYWNrRnJhbWVQcm9t
aXNlJiYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1MWNjMDk3MDlhMmQxMzdhNzdkMTM1MmQxMDBlZDQy
MDVhZTg1MzVkLi4xZTVhYTc2YzVkYzVlYmMxMTNmNjQ2ZWMxZWMxZTU2NDUwMjYxM2MwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDUtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgSGFuZGxlIElETFByb21pc2U8PiBwcm9wZXJseQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vcHJv
bWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJz
aW9uLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vcHJvbWlzZS1y
ZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1
bGUuaHRtbDogQWRkZWQuCisKIDIwMTctMDUtMDQgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYXJrZWQgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJz
L21ldGhvZHMtYXN5bmMuaHRtbCBhcyBmbGFreS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNl
LWNvbnZlcnNpb24tcnVsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vcHJvbWlz
ZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9u
LXJ1bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZTM5Nzc3YzJjYTkyYmI1ZDY2OGUwZjIx
MjZjMmYyMjQ2YjU1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vcHJv
bWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJz
aW9uLXJ1bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3QgUHJvbWlzZVJlamVj
dGlvbkV2ZW50IGNvbnN0cnVjdG9yIGZvbGxvd3MgV2ViSURMIHByb21pc2UgY29udmVyc2lvbiBy
dWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgZXZlbnQucHJvbWlzZSBp
cyBhbiBpbnN0YW5jZSBvZiBQcm9taXNlCitQQVNTIGV2ZW50LnJlYXNvbiBpcyAiQ2FwcHVjY2lu
byIKK1BBU1MgdmFsdWUgaXMgNDIKK1BBU1MgZXZlbnQucHJvbWlzZSBpcyBhbiBpbnN0YW5jZSBv
ZiBQcm9taXNlCitQQVNTIGV2ZW50LnByb21pc2UgaXMgcHJvbWlzZQorUEFTUyBldmVudC5yZWFz
b24gaXMgIkNvY29hIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVjdGlv
bi1ldmVudC1zaG91bGQtZm9sbG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xs
b3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lvbi1ydWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2IwNzBh
MzQ5ZjAxNzhhY2ZkZTA3YmY1NDFhNDZjZTBjYzFlMWMwNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9sbG93LXdl
YmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbignVGVzdCBQcm9taXNlUmVqZWN0aW9uRXZlbnQgY29uc3RydWN0b3IgZm9sbG93cyBX
ZWJJREwgcHJvbWlzZSBjb252ZXJzaW9uIHJ1bGUuJyk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK3ZhciBldmVudCA9IG51bGw7Cit2YXIgdmFsdWUgPSBudWxsOwordmFyIHByb21p
c2UgPSBudWxsOworCitldmVudCA9IG5ldyBQcm9taXNlUmVqZWN0aW9uRXZlbnQoInJlamVjdGlv
bmhhbmRsZWQiLCB7CisgICAgcHJvbWlzZTogNDIsCisgICAgcmVhc29uOiBgQ2FwcHVjY2lub2AK
K30pOworc2hvdWxkQmVUeXBlKGBldmVudC5wcm9taXNlYCwgYFByb21pc2VgKTsKK3Nob3VsZEJl
KGBldmVudC5yZWFzb25gLCBgIkNhcHB1Y2Npbm8iYCk7CitldmVudC5wcm9taXNlLnRoZW4oZnVu
Y3Rpb24gKHYpIHsKKyAgICB2YWx1ZSA9IHY7CisgICAgc2hvdWxkQmUoYHZhbHVlYCwgYDQyYCk7
CisKKyAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKDQyKTsKKyAgICBldmVudCA9IG5ldyBQ
cm9taXNlUmVqZWN0aW9uRXZlbnQoInJlamVjdGlvbmhhbmRsZWQiLCB7CisgICAgICAgIHByb21p
c2U6IHByb21pc2UsCisgICAgICAgIHJlYXNvbjogYENvY29hYAorICAgIH0pOworCisgICAgc2hv
dWxkQmVUeXBlKGBldmVudC5wcm9taXNlYCwgYFByb21pc2VgKTsKKyAgICBzaG91bGRCZShgZXZl
bnQucHJvbWlzZWAsIGBwcm9taXNlYCk7CisgICAgc2hvdWxkQmUoYGV2ZW50LnJlYXNvbmAsIGAi
Q29jb2EiYCk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="330258"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309489</attachid>
            <date>2017-05-09 03:44:41 -0700</date>
            <delta_ts>2017-05-09 03:44:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-166752-20170509194440.patch</filename>
            <type>text/plain</type>
            <size>144563</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NzRhNGRiNTBkODA2Njg5ZTE5OGY5YjJkM2Q1MjVlMGQxOTZlZTlkLi44M2U2ZTQ3YWMzYzFkNjc2
YmUyYjIyZDEyNThkNTgxOThjZThkNmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNy0wNS0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBIYW5kbGUgSURMUHJvbWlzZTw+IHByb3Blcmx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSlNQcm9taXNlOjpyZXNv
bHZlIHN0YXRpYyBmdW5jdGlvbi4KKyAgICAgICAgVGhpcyBhcHBsaWVzIGBQcm9taXNlLnJlc29s
dmUoKWAgY29udmVyc2lvbiB0byBhIGdpdmVuIHZhbHVlLgorCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnByb21pc2VSZXNvbHZlRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZS5oOgorCiAyMDE3LTA1LTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIENhbGxMaW5rSW5mb3MgYmVsb25naW5nIHRvIFdhc20tPkpTIHN0dWJz
IG5lZWQgdG8gYmUgaW5mb3JtZWQgd2hlbiB3ZSBjbGVhckNvZGUoKSBmcm9tIGFsbCBFeGVjdXRh
YmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGUxMDBmM2E4Mzk4MzRkNmIwNjAzYWUxMDIxZWMyMTU0MGY3MGMy
ZGYuLmJhNDQwZTMyYzMwNDI1NTMyNTljNmVlYjQ3MGQxYjVjOTg2MjA5YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMDcgQEAKKzIwMTctMDUtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgSGFuZGxlIElETFByb21pc2U8PiBwcm9wZXJseQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
bXBsZW1lbnRzIFdlYklETCBQcm9taXNlIHR5cGUgY29udmVyc2lvbi4gQWNjb3JkaW5nIHRvIHRo
ZSBzcGVjLAorICAgICAgICBQcm9taXNlIHRha2VzIGEgdmFsdWUgYW5kIGNvbnZlcnQgaXQgdG8g
UHJvbWlzZSBieSB1c2luZyBQcm9taXNlLnJlc29sdmUgZnVuY3Rpb24uCisgICAgICAgIFdlIGlt
cGxlbWVudCBKU1Byb21pc2U6OnJlc29sdmUgaW4gSlNDIGFuZCB1c2UgaXQgaW4gSlNET01Db252
ZXJ0UHJvbWlzZS4KKworICAgICAgICBJbiBjb252ZXJzaW9uIHBoYXNlLCB3ZSBqdXN0IGNvbnZl
cnQgdGhlIHZhbHVlIHRvIEpTQzo6SlNQcm9taXNlKiBhbmQgaG9sZCBpdCBpbgorICAgICAgICBQ
cm9taXNlUmVqZWN0aW9uRXZlbnQuIE9uIHRoZSBvdGhlciBoYW5kLCBJbiB0aGlzIHBhdGNoLCB3
ZSBuZXdseSBpbnRyb2R1Y2UgYSBuZXcKKyAgICAgICAgdHlwZSBET01Qcm9taXNlIGFuZCB1c2Ug
aXQgaW4gUmVqZWN0ZWRQcm9taXNlVHJhY2tlci4gQW5kIHdlIGFsc28gcmVuYW1lIHRoZSBwcmV2
aW91cworICAgICAgICBET01Qcm9taXNlIHRvIERPTVByb21pc2VEZWZlcnJlZCBzaW5jZSBpdCBp
cyBjb3JyZXNwb25kaW5nIHRvIEpTUHJvbWlzZURlZmVycmVkLgorICAgICAgICBET01Qcm9taXNl
IGlzIERPTUd1YXJkZWQgb2JqZWN0LiBTbyBpdCBpcyBzdHJvbmdseSByZWZlcmVuY2VkIGZyb20g
U2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICBhbmQgaXQgaXMgd2Vha2x5IHJlZmVyZW5j
ZWQgZnJvbSB0aGUgb2JqZWN0IGl0c2VsZi4gVGhpcyBpcyBpbXBvcnRhbnQgc2luY2UgU3Ryb25n
PEpTUHJvbWlzZT4KKyAgICAgICAgcmVmZXJlbmNlIGluIEMrKyBvYmplY3QgdGhhdCBoYXMgYSB3
cmFwcGVyIChpbiB0aGlzIGNhc2UsIFByb21pc2VSZWplY3Rpb25FdmVudCkgZWFzaWx5IGNhdXNl
cworICAgICAgICBjeWNsaWMgcmVmZXJlbmNlLiBXZSBob2xkIGl0IGFzIERPTVByb21pc2UgaW5z
dGVhZCBvZiBTdHJvbmc8SlNQcm9taXNlPiBpbiBSZWplY3RlZFByb21pc2VUcmFja2VyCisgICAg
ICAgIHRvIGJyZWFrIHRoZSBjeWNsaWMgcmVmZXJlbmNlIGVkZ2Ugd2l0aCB3ZWFrIHJlZmVyZW5j
ZS4KKworICAgICAgICBJbiB0aGUgbWVhbnRpbWUsIHdlIHN0aWxsIHVzZSBKU0M6OlN0cm9uZzw+
IGluIFByb21pc2VSZWplY3Rpb25FdmVudC4gSXQgbGVha3MgbWVtb3J5IGlmIHByb21pc2UKKyAg
ICAgICAgcmVmZXJzIHRoZSB3cmFwcGVyIG9iamVjdCBvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQu
IEN1c3RvbUV2ZW50IGFsc28gaGFzIHRoZSBzYW1lIHByb2JsZW0uCisgICAgICAgIFRoaXMgaXMg
YSBnZW5lcmFsIHByb2JsZW0gdGhhdCBgYXR0cmlidXRlIGFueWAgY2FuIGNyZWF0ZSBjeWNsaWMg
cmVmZXJlbmNlLiBBbmQgdGhleSBzaG91bGQgYmUKKyAgICAgICAgZml4ZWQgaW4gYSBkaWZmZXJl
bnQgcGF0Y2guCisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBkbyBub3QgdGFrZSB0aGUgZm9sbG93
aW5nIGFwcHJvYWNoLiBlLmcuIFRoZXJlIGlzIEMrKyBvYmplY3QgdGhhdCByZXByZXNlbnRzIFBy
b21pc2UuCisgICAgICAgIEFuZCBpdHMgd3JhcHBlciBvYmplY3QgaXMgSlNQcm9taXNlIHRoaW5n
LiBXaGVuIGV4cG9zaW5nIHRoZSBDKysgb2JqZWN0LCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBh
CisgICAgICAgIHdyYXBwZXIgb2JqZWN0LiBXZSBkbyBub3QgdGFrZSB0aGlzIGFwcHJvYWNoIGJl
Y2F1c2UgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGNhbiB0YWtlIHVzZXItcHJvdmlkZWQgcHJvbWlz
ZS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHVzZXJzIGNhbiBjcmVhdGUgUHJvbWlzZVJlamVjdGlv
bkV2ZW50IGluIGEgZm9ybQorICAgICAgICBgbmV3IFByb21pc2VSZWplY3Rpb25FdmVudCgiLi4u
IiwgeyBwcm9taXNlOiBwcm9taXNlIH0pYC4gSW4gdGhpcyBjYXNlLCBgZXZlbnQucHJvbWlzZSA9
PT0gcHJvbWlzZWAKKyAgICAgICAgaXMgcmVxdWlyZWQuIEFuZCB0aGlzIGlzIG5vdCBzdWl0YWJs
ZSBmb3IgdGhlIGFib3ZlIEMrKyBvYmplY3QgbW9kZWwuCisKKyAgICAgICAgTGFyZ2UgcGFydCBv
ZiB0aGlzIHBhdGNoIGlzIG1lY2hhbmljYWwgb25lIHRvIHJlcGxhY2UgRE9NUHJvbWlzZSB3aXRo
IERPTVByb21pc2VEZWZlcnJlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTmF2aWdhdG9yRU1FLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dG
ZXRjaC5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvV29ya2VyR2xvYmFs
U2NvcGVGZXRjaC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
OjpyZXBsYWNlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uOjpyZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OnNldExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZSk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRSZW1vdGVEZXNjcmlwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQWRkSWNlQ2Fu
ZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjplbnF1ZXVlUmVw
bGFjZVRyYWNrVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cmVw
bGFjZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJN
ZWRpYVJlcXVlc3Q6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6
OlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlcGxhY2VUcmFjayk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
Lmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4
dDo6YWRkUmVhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzZXRTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Db250ZXh0OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNvbnZlcnQp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj46OmNvbnZlcnQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpwcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVByb21pc2U6OkRPTVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNl
OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpy
ZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVz
b2x2ZVdpdGhOZXdseUNyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRQcm9taXNlOjpyZWplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQ
cm9taXNlOjpyZXNvbHZlV2l0aENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0V2l0aENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6RGVmZXJyZWRQcm9taXNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6ZGVmZXJyZWQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJhc2U6OkRPTVByb21pc2VCYXNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VCYXNlOjpvcGVyYXRvcj0pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZUJhc2U6OnJlamVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6cmVqZWN0VHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpET01Qcm9taXNlQmFzZTo6cHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpET01Qcm9taXNlOjpyZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTVByb21pc2U8dm9pZD46OnJlc29sdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Y2FsbFByb21pc2VGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpiaW5k
aW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRlcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVk
UHJvbWlzZTo6cHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OmNh
bGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpyZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURlZmVycmVkUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVSZWplY3RlZFByb21pc2VXaXRoVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlQXNKU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmZ1bGZpbGxQcm9taXNlV2l0aEpTT04p
OgorICAgICAgICAoV2ViQ29yZTo6ZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oLgorICAgICAgICAoV2ViQ29y
ZTo6RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQ
cm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVz
b2x2ZVdpdGhOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNl
OjpyZWplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlV2l0
aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0V2l0
aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6RGVmZXJyZWRQ
cm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6ZGVmZXJyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6RE9NUHJvbWlzZURlZmVy
cmVkQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpvcGVy
YXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cmVqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2VEZWZlcnJlZEJhc2U6OnJlamVjdFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cHJvbWlzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+OjpyZXNvbHZlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNhbGxQcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6YmluZGluZ1By
b21pc2VGdW5jdGlvbkFkYXB0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3VidGxlQ3J5
cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRCdWZm
ZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRv
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
RGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0Pik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRQcm90b3R5cGU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50OjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZVByb3RvdHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnByb3Rv
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudD46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRv
SlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ6OndyYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6
CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5pZGw6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVu
dC5oLgorICAgICAgICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFjZVNl
dC5oOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaDoKKyAgICAgICAgKiBk
b20vUHJvbWlzZVJlamVjdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL1JlamVjdGVkUHJvbWlz
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5oYW5kbGVkUHJvbWlzZTo6VW5oYW5k
bGVkUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmhhbmRsZWRQcm9taXNlOjpjYWxsU3Rh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VW5oYW5kbGVkUHJvbWlzZTo6cHJvbWlzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWplY3RlZFByb21pc2VUcmFja2VyOjpwcm9taXNlUmVqZWN0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlzZUhhbmRsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cmVwb3J0VW5oYW5k
bGVkUmVqZWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZWplY3RlZFByb21pc2VUcmFja2Vy
OjpyZXBvcnRSZWplY3Rpb25IYW5kbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlamVjdGVkUHJv
bWlzZTo6UmVqZWN0ZWRQcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlamVj
dGVkUHJvbWlzZTo6Z2xvYmFsT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
amVjdGVkUHJvbWlzZTo6cHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1JlamVjdGVk
UHJvbWlzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVqZWN0UGVuZGluZ1BsYXlQcm9t
aXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXNvbHZlUGVuZGlu
Z1BsYXlQcm9taXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5
KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmg6CisKIDIwMTctMDUtMDkgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIEZpeCBwcm9wZXJ0eSBuYW1lcyBpbiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZTo6ZHVtcFByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlM2I3YThhZDBkYzQxMDZkNTg5YzY2ZDJkZGNmZjI2
OWVkMjhmMmVjLi41N2Y0MzgzZTA5OWNhYzcyYmQzYmYzMzkxNTM3N2EyYjBjYjI4MDg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC00MjgsNiArNDI4LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKGluaXQu
dm0sIGl0ZXJhdG9ySGVscGVyc1BlcmZvcm1JdGVyYXRpb25Db2RlR2VuZXJhdG9yKGluaXQudm0p
LCBpbml0Lm93bmVyKSk7CiAgICAgICAgIH0pOwogCisgICAgbV9wcm9taXNlUmVzb2x2ZUZ1bmN0
aW9uLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+
JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGlu
RnVuY3Rpb24oaW5pdC52bSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0b3Io
aW5pdC52bSksIGluaXQub3duZXIpKTsKKyAgICAgICAgfSk7CisKICAgICBtX25ld1Byb21pc2VD
YXBhYmlsaXR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGlu
RnVuY3Rpb24odm0sIHByb21pc2VPcGVyYXRpb25zTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlR2Vu
ZXJhdG9yKHZtKSwgdGhpcykpOwogICAgIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9s
RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKICAgICBt
X3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmluaXRMYXRlcigKQEAgLTExODcsNiArMTE5Miw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5j
dGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2luaXRpYWxpemVQcm9taXNl
RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3Rv
Y29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9wcm9taXNlUmVz
b2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7CiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCA3ZTlmZWNiNzFhYjEzYTBlYjE4ZjQyN2RlMzg4MDU4MTAzZWJlNThlLi5iMzNkNmQzNTY0
MmFlMzNmZGUxNjI1YjhiZDg3OGZiMzgwZmM5NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI2NSw2ICsyNjUsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVl
c0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4g
bV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgSlNGdW5jdGlvbj4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb247CisgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rp
b247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbmV3UHJvbWlzZUNhcGFiaWxp
dHlGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9mdW5jdGlvblByb3Rv
SGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbjsKQEAgLTUxNSw2ICs1MTYsNyBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBKU0Z1
bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5
UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBpbml0aWFs
aXplUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplUHJvbWlzZUZ1
bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGl0ZXJhdG9yUHJvdG9jb2xGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmdldCh0aGlz
KTsgfQorICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlv
biogb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX29iamVjdFBy
b3RvVmFsdWVPZkZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNh
cGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlG
dW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFu
Y2VTeW1ib2xGdW5jdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZS5jcHAKaW5kZXggYTgzZDJiZjUyZjc2YTg0ZmVhNzBjZGIxNDYzN2Y5ZTIwNzRm
MjMxYi4uMWJmZjM1MjYzNzFiNmM5YjMxYTJhYTliMGZlMDEwMTMxNjkzNGNmMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCkBAIC05Miw0ICs5MiwyMyBA
QCBib29sIEpTUHJvbWlzZTo6aXNIYW5kbGVkKFZNJiB2bSkgY29uc3QKICAgICByZXR1cm4gdmFs
dWUuYXNCb29sZWFuKCk7CiB9CiAKK0pTUHJvbWlzZSogSlNQcm9taXNlOjpyZXNvbHZlKEpTR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byogZXhl
YyA9IGdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7CisgICAgYXV0byYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8q
IHByb21pc2VSZXNvbHZlRnVuY3Rpb24gPSBnbG9iYWxPYmplY3QucHJvbWlzZVJlc29sdmVGdW5j
dGlvbigpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6
OmdldENhbGxEYXRhKHByb21pc2VSZXNvbHZlRnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOworICAgIGF1dG8gcmVz
dWx0ID0gY2FsbChleGVjLCBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGdsb2JhbE9iamVjdC5wcm9taXNlQ29uc3RydWN0b3IoKSwgYXJndW1lbnRzKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBBU1NFUlQocmVzdWx0Lmlu
aGVyaXRzKHZtLCBKU1Byb21pc2U6OmluZm8oKSkpOworICAgIHJldHVybiBqc0Nhc3Q8SlNQcm9t
aXNlKj4ocmVzdWx0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCmluZGV4IGM3ZDdkOTljYWE0ZDg2ZDIyYzdmYWI0MGNj
NGYzZDAwNTA0M2JiYzAuLmU4MzY3MmNiYmFjYjk5NDYyNmE2Zjc1NzU5OTRiYWVjZjRkNzUxMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCkBAIC01Miw2ICs1
Miw4IEBAIGNsYXNzIEpTUHJvbWlzZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAv
LyBUaGlzIG1heSByYWlzZSBhIEpTIGV4Y2VwdGlvbi4KICAgICB2b2lkIGluaXRpYWxpemUoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGV4ZWN1dG9yKTsKIAorICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBKU1Byb21pc2UqIHJlc29sdmUoSlNHbG9iYWxPYmplY3QmLCBK
U1ZhbHVlKTsKKwogcHJvdGVjdGVkOgogICAgIEpTUHJvbWlzZShWTSYsIFN0cnVjdHVyZSopOwog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTlj
M2E0NzAzNDgzM2E5ODk5MDU0NzkwMTI5ZDNhYmI3ZDVjY2ZhZi4uMDY3MzJlMWRiN2E3ZjYzMTdj
N2EzY2Q5Y2Y4OTkyN2EzYTg0NDMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNjMsNyAr
MTE2Myw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdFRhc2suY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTRE9NTWFwTGlrZS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0RPTVBy
b21pc2UuY3BwCisgICAgYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCiAgICAg
YmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24u
Y3BwCmluZGV4IDc0NDk3OTMwZTNiOWFlODlhNGQzYzNmMGNlYWQwNzI1MDVlODAwNWIuLjYxYTll
NWNhMDE1ZGUxZGRlMjhkYzJhMGZjMDBlMGVmNWEzOTZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTGlua0ljb25Db2xsZWN0
b3IuaCIKICNpbmNsdWRlICJMaW5rSWNvblR5cGUuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oCmluZGV4IDBjZTg3NWQ4OTM1ODVlZTAzOWNmYmZkNTZlMmE2YTdjNTJhMjBj
ZWYuLjA1OTIyNDM5ZTEyZjI5MjIxMDgxZTMyYzg3MDZjYWRkYjVmNWIzMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCi0j
aW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKICNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VUeXBlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlT
ZXNzaW9uVHlwZS5oIgogI2luY2x1ZGUgIk1lZGlhS2V5U3RhdHVzLmgiCkBAIC03MCw3ICs3MCw3
IEBAIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
S2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhCiAgICAgdm9pZCBjbG9zZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmKTsKICAgICB2b2lkIHJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAot
ICAgIHVzaW5nIENsb3NlZFByb21pc2UgPSBET01Qcm9taXNlPHZvaWQ+OworICAgIHVzaW5nIENs
b3NlZFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD47CiAgICAgdm9pZCByZWdpc3Rl
ckNsb3NlZFByb21pc2UoQ2xvc2VkUHJvbWlzZSYmKTsKIAogICAgIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5oCmluZGV4IGEx
MTNlMjYwMTAwMWVkNjdiZjdjYmY4ZGZmNzA1YjEyMzY0MGU1YzYuLjBhM2I2ZTFkNDhjMDY5NzNi
ZGRkY2Y4OGEzNDUyMTllNWI3OGYwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmgKQEAgLTMx
LDcgKzMxLDcgQEAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCiAjaW5jbHVkZSAiR2Vu
ZXJpY1Rhc2tRdWV1ZS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpT
RE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggYmQ4MGJkMmM5ODQzYThhZjhkN2Ri
YWQ1Yjg1MzUyNTdkOTA1MWFkNS4uOWE1OWQxNzExNGVjM2VkYmE2MTQ3MTcwOThhYTJkNGZiZmUz
MDgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgog
I2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIK
KyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk1lZGlhS2V5U2Vz
c2lvblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TmF2aWdhdG9yRU1FLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05h
dmlnYXRvckVNRS5oCmluZGV4IDRjMjA0ZTk0MWZmYjZkZjNiMTFlNjM4YWQyMjM3ZGQ1YTc5MzQ5
Y2QuLjgxNjVmYWViMWZmYzZlYWNkZDQwNGQwNWY4YTU3MjczMDI0MGEwNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuaApA
QCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAotI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAj
aW5jbHVkZSAiTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiU3VwcGxl
bWVudGFibGUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9E
T01XaW5kb3dGZXRjaC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dG
ZXRjaC5oCmluZGV4IGIzZDE1NzU3YWFkYjMyZTExNTg2MTUwNTNhYzEzNmVlNWRkMmRjOTEuLjEz
YmY3NWEyZGM4NGIxZjMyODlhYTI0YWUzZDZmOWMxYTRmMTlkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0RPTVdpbmRvd0ZldGNoLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAog
I2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oCmluZGV4IDJlNjBhZjhkMTBhY2ZkZTFlZjJlMjYwNmQ0Y2U5OWU4YjRmNGZlOTguLjRmNzVj
YTE5ZWY4NDRlM2ViZTBjM2EwMDU3YWU5ODQ0MmY0NmQ3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZldGNo
Qm9keUNvbnN1bWVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXIuaCIKICNpbmNsdWRlICJGb3Jt
RGF0YS5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiVVJMU2VhcmNoUGFyYW1zLmgiCiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCA0YTBmYjM5ZjEwZTYw
YzJjYzZiMWQ0OThkODE0ODI0ZmU3OTcyNTQyLi4zOGI3Njg5ZWRlMmU5MWFiN2FlZWJmNzI2MGZi
NDQzMGU1YmMzOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJ
KQogCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVm
ZXJyZWQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBm
NWE5ZTI3MTcwNjRlMWZjMjZiYWQ3YjIzM2QyNWE1OWY0MDJjMDEwLi5hOTA2MzdmYmJjZDRmMTUz
NDc2MTM1OTExZDE5NzgyYjEwMmYxNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBGZXRjaFJlc3BvbnNl
IGZpbmFsIDogcHVibGljIEZldGNoQm9keU93bmVyIHsKICAgICBzdGF0aWMgUmVmPEZldGNoUmVz
cG9uc2U+IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiByZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGF0dXMpOwogCi0gICAgdXNpbmcgRmV0Y2hQcm9t
aXNlID0gRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+OworICAgIHVzaW5n
IEZldGNoUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmV0Y2hSZXNw
b25zZT4+OwogICAgIHN0YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBG
ZXRjaFJlcXVlc3QmLCBGZXRjaFByb21pc2UmJik7CiAKICAgICB2b2lkIGNvbnN1bWUodW5zaWdu
ZWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9Xb3JrZXJHbG9iYWxTY29wZUZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL1dvcmtlckdsb2JhbFNjb3BlRmV0Y2guaAppbmRleCA1YmJiMjhiODg1M2Jm
MjExYTdkODI4ZTZkODBhOTE5ZDBlYWVlZmI1Li40NzcwNjlmMzQ0Yjk5ZDRkMmRjZDkyZDkzMmVh
YzVhNTE4MzRmODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL1dv
cmtlckdsb2JhbFNjb3BlRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L1dvcmtlckdsb2JhbFNjb3BlRmV0Y2guaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxF
KEZFVENIX0FQSSkKIAotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggMjg1NWVh
NTJkNGVkMzIzY2MyNTgwOTE0YzdlZTBjYWZhNzcyZWVkOC4uOTNmOTM4MGZlNjY3NzlkMzEyYzgz
YzYxMTA1NWI1YTlkN2MwOGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiSlNET01Q
cm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJN
ZWRpYVRyYWNrQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTU2LDggKzU2LDggQEAgY2xhc3MgTWVkaWFE
ZXZpY2VzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2VzPiwgcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk8KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCi0gICAgdXNp
bmcgUHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj47Ci0gICAg
dXNpbmcgRW51bWVyYXRlRGV2aWNlc1Byb21pc2UgPSBET01Qcm9taXNlPElETFNlcXVlbmNlPElE
TEludGVyZmFjZTxNZWRpYURldmljZUluZm8+Pj47CisgICAgdXNpbmcgUHJvbWlzZSA9IERPTVBy
b21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PjsKKyAgICB1c2luZyBFbnVt
ZXJhdGVEZXZpY2VzUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExJ
bnRlcmZhY2U8TWVkaWFEZXZpY2VJbmZvPj4+OwogCiAgICAgc3RydWN0IFN0cmVhbUNvbnN0cmFp
bnRzIHsKICAgICAgICAgVmFyaWFudDxib29sLCBNZWRpYVRyYWNrQ29uc3RyYWludHM+IHZpZGVv
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDZkZmVjOTMyMmY5Yjlj
NDQwOGM4NzYxNWQyMDg3OTEzNGFiZDIyMTkuLjFkZDAzOWJjYTg3NDQ3NDgwOTkzZTA5MTNiYzUz
YzdkOGQwN2Y3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTY5
Niw3ICs2OTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBNZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmNyZWF0ZURhdGFDaAogICAgIHJldHVybiBtX21lZGlh
RW5kcG9pbnQtPmNyZWF0ZURhdGFDaGFubmVsSGFuZGxlcihsYWJlbCwgb3B0aW9ucyk7CiB9CiAK
LXZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2soUlRDUnRwU2Vu
ZGVyJiBzZW5kZXIsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlz
ZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cmVw
bGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB3
aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgUlRD
UnRwVHJhbnNjZWl2ZXIqIHRyYW5zY2VpdmVyID0gbWF0Y2hUcmFuc2NlaXZlcihtX3BlZXJDb25u
ZWN0aW9uLmdldFRyYW5zY2VpdmVycygpLCBbJnNlbmRlcl0gKFJUQ1J0cFRyYW5zY2VpdmVyJiBj
dXJyZW50KSB7CiAgICAgICAgIHJldHVybiAmY3VycmVudC5zZW5kZXIoKSA9PSAmc2VuZGVyOwpA
QCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBs
YWNlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZjxNZWRpYVN0CiAgICAgfSk7CiB9CiAK
LXZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2tUYXNrKFJUQ1J0
cFNlbmRlciYgc2VuZGVyLCBjb25zdCBTdHJpbmcmIG1pZCwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+
JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlPHZvaWQ+JiBwcm9taXNlKQordm9pZCBNZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb246OnJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiBzZW5kZXIs
IGNvbnN0IFN0cmluZyYgbWlkLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYgcHJvbWlzZSkKIHsKICAgICBpZiAobV9wZWVyQ29ubmVj
dGlvbi5pc0Nsb3NlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb24uaAppbmRleCBjZTdlYzNlZDc5NDM4NzIzNTBiOGYwN2VhZmE2MzI5YjViMGY3YTY5Li4x
ZTMxY2Q0NTBmZDI3NjFiMjAyMzFlMjQ5OWI1MTUyN2UxZWFhM2Q5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dFBlZXJDb25uZWN0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgTWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFBlZXJDb25uZWN0aW9uQmFja2VuZCwgcHVibGlj
IE0KICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNv
bnN0IGZpbmFsOwogCiAgICAgUmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGVSZWNlaXZlcihjb25z
dCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlkLCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3Qg
U3RyaW5nJiB0cmFja0lkKSBmaW5hbDsKLSAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5k
ZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFj
az4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBlbXVs
YXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcmIGFjdGlvbikgZmluYWw7CiAKQEAgLTg1LDcg
Kzg1LDcgQEAgY2xhc3MgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGlj
IFBlZXJDb25uZWN0aW9uQmFja2VuZCwgcHVibGljIE0KIAogICAgIHZvaWQgYWRkSWNlQ2FuZGlk
YXRlVGFzayhSVENJY2VDYW5kaWRhdGUmKTsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrVGFzayhS
VENSdHBTZW5kZXImLCBjb25zdCBTdHJpbmcmIG1pZCwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYs
IERPTVByb21pc2U8dm9pZD4mKTsKKyAgICB2b2lkIHJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2Vu
ZGVyJiwgY29uc3QgU3RyaW5nJiBtaWQsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mKTsKIAogICAgIGJvb2wgbG9jYWxEZXNjcmlwdGlvblR5cGVWYWxp
ZEZvclN0YXRlKFJUQ1NkcFR5cGUpIGNvbnN0OwogICAgIGJvb2wgcmVtb3RlRGVzY3JpcHRpb25U
eXBlVmFsaWRGb3JTdGF0ZShSVENTZHBUeXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IGU1
NTRiYzRjNjYzODQwMTE1MWM1MGU2NzVhZGUzMzM1MjRiNDY3Y2IuLjE3N2VmNzJlYTg2YjI1ZDQx
ZGEwMzNlNmY4OWFmYTVlMmZiY2Q3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMjUzLDcgKzI1Myw3
IEBAIHN0YXRpYyBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZU1lZGlhQ29uc3RyYWlu
dHNJbXBsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8CiAgICAgcmV0dXJuIGNyZWF0ZU1lZGlhQ29uc3Ry
YWludHNJbXBsKGNvbnN0cmFpbnRzLnZhbHVlKCkpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJh
Y2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3Qgc3RkOjpvcHRpb25hbDxNZWRpYVRyYWNrQ29uc3Ry
YWludHM+JiBjb25zdHJhaW50cywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIE1l
ZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3Qgc3RkOjpvcHRpb25hbDxNZWRp
YVRyYWNrQ29uc3RyYWludHM+JiBjb25zdHJhaW50cywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYgcHJvbWlzZSkKIHsKICAgICBtX3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5oCmluZGV4IDEwMTZkNjM0MjUyNzA3OGIzZjRlNWE2YTU4ZTc5Y2Y2ZjBhYjliZWUuLmZhY2Vh
MWFiZDUwYWUyYmM0OTgwNmVjYmEzN2YwYzYyYjUxNmJmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC0zMiw3
ICszMiw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRG91Ymxl
UmFuZ2UuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9uZ1Jh
bmdlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJN
ZWRpYVRyYWNrQ29uc3RyYWludHMuaCIKQEAgLTEwOCw3ICsxMDgsNyBAQCBjbGFzcyBNZWRpYVN0
cmVhbVRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBB
Y3RpdmVET01PYgogICAgIFRyYWNrQ2FwYWJpbGl0aWVzIGdldENhcGFiaWxpdGllcygpIGNvbnN0
OwogCiAgICAgY29uc3QgTWVkaWFUcmFja0NvbnN0cmFpbnRzJiBnZXRDb25zdHJhaW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fY29uc3RyYWludHM7IH0KLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMo
Y29uc3Qgc3RkOjpvcHRpb25hbDxNZWRpYVRyYWNrQ29uc3RyYWludHM+JiwgRE9NUHJvbWlzZTx2
b2lkPiYmKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3Qgc3RkOjpvcHRpb25hbDxN
ZWRpYVRyYWNrQ29uc3RyYWludHM+JiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCiAg
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZSYgc291cmNlKCkgeyByZXR1cm4gbV9wcml2YXRlLT5zb3Vy
Y2UoKTsgfQogICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBwcml2YXRlVHJhY2soKSB7IHJl
dHVybiBtX3ByaXZhdGUuZ2V0KCk7IH0KQEAgLTE1Miw3ICsxNTIsNyBAQCBjbGFzcyBNZWRpYVN0
cmVhbVRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBB
Y3RpdmVET01PYgogICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOwog
CiAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRzIG1fY29uc3RyYWludHM7Ci0gICAgc3RkOjpvcHRp
b25hbDxET01Qcm9taXNlPHZvaWQ+PiBtX3Byb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4+IG1fcHJvbWlzZTsKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRp
YVN0cmVhbVRyYWNrPiBtX3dlYWtQdHJGYWN0b3J5OwogCiAgICAgYm9vbCBtX2VuZGVkIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyMjg1NGVhMzAxYzE4MjZmZDc4NDk0
NTI3MjU4Njg1ZTBiMWQzNDA5Li4yMjAwNjE2MjIyNTk3Y2Y4NDBmNGQ4Y2ZhMjcwZmY1NzI3N2I4
OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGlj
IGlubGluZSBib29sIGlzTG9jYWxEZXNjcmlwdGlvblR5cGVWYWxpZEZvclN0YXRlKFJUQ1NkcFR5
cGUgdHlwZSwgUlRDU2lnbmEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpzZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYg
c2Vzc2lvbkRlc2NyaXB0aW9uLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbiYgc2Vzc2lvbkRlc2NyaXB0aW9uLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9t
aXNlKQogewogICAgIEFTU0VSVCghbV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgpKTsKIApAQCAt
MTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JlbW90ZURlc2NyaXB0aW9uVHlw
ZVZhbGlkRm9yU3RhdGUoUlRDU2RwVHlwZSB0eXBlLCBSVENTaWduCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRpb24o
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBzZXNzaW9uRGVzY3JpcHRpb24sIERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlc2Ny
aXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgc2Vzc2lvbkRlc2NyaXB0aW9uLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIEFTU0VSVCghbV9wZWVyQ29ubmVj
dGlvbi5pc0Nsb3NlZCgpKTsKIApAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb24mJiBleGNlcHRp
b24pCiAgICAgbV9zZXREZXNjcmlwdGlvblByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZv
aWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRl
KiBpY2VDYW5kaWRhdGUsIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUqIGljZUNhbmRp
ZGF0ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQo
IW1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4
IDU1NWJmYjg2NWIzM2EzYjdjZTZiM2U3ZjhjYWQ1ODdhNzYwNmViZTAuLjFiODVmMDhkNWVkNzJm
NjU0ZDk4MjcxODIzN2EzNzUyY2UxY2QxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtMzMs
NyArMzMsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKLSNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlJUQ1J0
cFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSVENTaWduYWxpbmdTdGF0ZS5oIgogCkBAIC01Niw4
ICs1Niw4IEBAIHN0cnVjdCBSVENEYXRhQ2hhbm5lbEluaXQ7CiBzdHJ1Y3QgUlRDT2ZmZXJPcHRp
b25zOwogCiBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb24gewotdXNpbmcgU2Vzc2lvbkRlc2NyaXB0
aW9uUHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bj4+OwotdXNpbmcgU3RhdHNQcm9taXNlID0gRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8UlRDU3Rh
dHNSZXBvcnQ+PjsKK3VzaW5nIFNlc3Npb25EZXNjcmlwdGlvblByb21pc2UgPSBET01Qcm9taXNl
RGVmZXJyZWQ8SURMSW50ZXJmYWNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4+OwordXNpbmcgU3Rh
dHNQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxSVENTdGF0c1JlcG9y
dD4+OwogfQogCiB1c2luZyBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tlbmQgPSBzdGQ6OnVuaXF1
ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiAoKikoUlRDUGVlckNvbm5lY3Rpb24mKTsKQEAg
LTcxLDkgKzcxLDkgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKIAogICAgIHZvaWQg
Y3JlYXRlT2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVz
Y3JpcHRpb25Qcm9taXNlJiYpOwogICAgIHZvaWQgY3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlv
bnMmJiwgUGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21pc2UmJik7Ci0gICAg
dm9pZCBzZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYsIERPTVByb21p
c2U8dm9pZD4mJik7Ci0gICAgdm9pZCBzZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVz
Y3JpcHRpb24mLCBET01Qcm9taXNlPHZvaWQ+JiYpOwotICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRl
KFJUQ0ljZUNhbmRpZGF0ZSosIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCBzZXRMb2Nh
bERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmKTsKKyAgICB2b2lkIHNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIGFkZEljZUNhbmRp
ZGF0ZShSVENJY2VDYW5kaWRhdGUqLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAg
ICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURh
dGFDaGFubmVsSGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQm
KSA9IDA7CiAKQEAgLTk0LDcgKzk0LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsK
ICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiBnZXRSZW1vdGVTdHJlYW1z
KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBSZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZVJl
Y2VpdmVyKGNvbnN0IFN0cmluZyYgdHJhbnNjZWl2ZXJNaWQsIGNvbnN0IFN0cmluZyYgdHJhY2tL
aW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVwbGFj
ZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNl
PHZvaWQ+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRl
ciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBZGRlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlSZW1vdmVkVHJhY2soUlRDUnRwU2VuZGVyJikgeyB9
CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQgewogICAg
IHZpcnR1YWwgdm9pZCBkb1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZG9BZGRJY2VDYW5kaWRhdGUo
UlRDSWNlQ2FuZGlkYXRlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbmRPZkljZUNhbmRpZGF0
ZXMoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpIHsgcHJvbWlzZS5yZXNvbHZlKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmIHByb21pc2UpIHsgcHJvbWlzZS5yZXNvbHZlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZG9T
dG9wKCkgPSAwOwogCiBwcm90ZWN0ZWQ6CkBAIC0xNDUsOCArMTQ1LDggQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb25CYWNrZW5kIHsKIAogcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFBlZXJDb25u
ZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlPiBtX29mZmVyQW5zd2VyUHJvbWlzZTsK
LSAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2U8dm9pZD4+IG1fc2V0RGVzY3JpcHRpb25Qcm9t
aXNlOwotICAgIHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZTx2b2lkPj4gbV9hZGRJY2VDYW5kaWRh
dGVQcm9taXNlOworICAgIHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBt
X3NldERlc2NyaXB0aW9uUHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPj4gbV9hZGRJY2VDYW5kaWRhdGVQcm9taXNlOwogCiAgICAgYm9vbCBtX3Nob3Vs
ZEZpbHRlcklDRUNhbmRpZGF0ZXMgeyB0cnVlIH07CiAgICAgc3RydWN0IFBlbmRpbmdJQ0VDYW5k
aWRhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCA1MDM2NDZjNDYyMzEwOWI2MzMzOGM4OTlhMTAy
NDI5MDcwN2YwMGMxLi45MTMxNjAzNzAxOGFjNjNlNzllMTRiNWJiNzM1MmE0M2MxN2NmMWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rp
b246OnF1ZXVlZENyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYgb3B0aW9ucywgU2Vzc2lv
bkRlCiAgICAgbV9iYWNrZW5kLT5jcmVhdGVBbnN3ZXIoV1RGTW92ZShvcHRpb25zKSwgV1RGTW92
ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZFNldExvY2Fs
RGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgRE9NUHJvbWlz
ZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRTZXRMb2Nh
bERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgTE9HKFdlYlJUQywgIlNldHRpbmcg
bG9jYWwgZGVzY3JpcHRpb246XG4lc1xuIiwgZGVzY3JpcHRpb24uc2RwKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgaWYgKGlzQ2xvc2VkKCkpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCBSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6cGVuZGluZ0xvY2FsRGVzY3Jp
cHRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tlbmQtPnBlbmRpbmdMb2NhbERlc2NyaXB0
aW9uKCk7CiB9CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZFNldFJlbW90ZURlc2Ny
aXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkU2V0UmVtb3RlRGVz
Y3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBMT0coV2ViUlRDLCAiU2V0dGluZyByZW1v
dGUgZGVzY3JpcHRpb246XG4lc1xuIiwgZGVzY3JpcHRpb24uc2RwKCkudXRmOCgpLmRhdGEoKSk7
CiAKQEAgLTI4Niw3ICsyODYsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBSVENQ
ZWVyQ29ubmVjdGlvbjo6cGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uKCkgY29ucwogICAgIHJldHVy
biBtX2JhY2tlbmQtPnBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpOwogfQogCi12b2lkIFJUQ1Bl
ZXJDb25uZWN0aW9uOjpxdWV1ZWRBZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiBydGND
YW5kaWRhdGUsIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29ubmVj
dGlvbjo6cXVldWVkQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSogcnRjQ2FuZGlkYXRl
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIExPRyhXZWJSVEMs
ICJSZWNlaXZlZCBpY2UgY2FuZGlkYXRlOlxuJXNcbiIsIHJ0Y0NhbmRpZGF0ZSA/IHJ0Y0NhbmRp
ZGF0ZS0+Y2FuZGlkYXRlKCkudXRmOCgpLmRhdGEoKSA6ICJudWxsIik7CiAKQEAgLTUxMiw3ICs1
MTIsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpmaXJlRXZlbnQoRXZlbnQmIGV2ZW50KQog
ICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpl
bnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQg
UlRDUGVlckNvbm5lY3Rpb246OmVucXVldWVSZXBsYWNlVHJhY2tUYXNrKFJUQ1J0cFNlbmRlciYg
c2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5w
b3N0VGFzayhbcHJvdGVjdGVkU2VuZGVyID0gbWFrZVJlZihzZW5kZXIpLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgd2l0aFRyYWNrID0gV1RGTW92ZSh3aXRoVHJhY2spXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFNlbmRlci0+c2V0VHJh
Y2soV1RGTW92ZSh3aXRoVHJhY2spKTsKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIFJUQ1BlZXJD
b25uZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwg
UmVmPE1lZGlhUwogICAgIH0pOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpyZXBsYWNl
VHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdp
dGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIFJUQ1BlZXJDb25uZWN0
aW9uOjpyZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
IHsKICAgICBpZiAoIXdpdGhUcmFjaykgewogICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnBvc3RUYXNrKFtwcm90ZWN0ZWRTZW5kZXIgPSBtYWtlUmVmKHNlbmRlciksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmgKaW5kZXggMDQ3NDI2YzE0NTMxZTU0MTU4MzI1MjY2NDk5M2EyYzRjYmEwN2ZhMC4u
ZjVlNWZjMzQ5YWJkNzI3YjBlYzA4OGI5MTAwZDdjZjZiMGFiNTdkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApA
QCAtNzYsMTcgKzc2LDE3IEBAIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgUlRDCiAgICAgdm9pZCBxdWV1
ZWRDcmVhdGVPZmZlcihSVENPZmZlck9wdGlvbnMmJiwgUGVlckNvbm5lY3Rpb246OlNlc3Npb25E
ZXNjcmlwdGlvblByb21pc2UmJik7CiAgICAgdm9pZCBxdWV1ZWRDcmVhdGVBbnN3ZXIoUlRDQW5z
d2VyT3B0aW9ucyYmLCBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYm
KTsKIAotICAgIHZvaWQgcXVldWVkU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3Jp
cHRpb24mLCBET01Qcm9taXNlPHZvaWQ+JiYpOworICAgIHZvaWQgcXVldWVkU2V0TG9jYWxEZXNj
cmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
Jik7CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gbG9jYWxEZXNjcmlwdGlvbigp
IGNvbnN0OwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGN1cnJlbnRMb2NhbERl
c2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gcGVu
ZGluZ0xvY2FsRGVzY3JpcHRpb24oKSBjb25zdDsKIAotICAgIHZvaWQgcXVldWVkU2V0UmVtb3Rl
RGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsK
KyAgICB2b2lkIHF1ZXVlZFNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlv
biYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRl
c2NyaXB0aW9uPiByZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIFJlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb24+IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIFJl
ZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IHBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpIGNv
bnN0OwogCi0gICAgdm9pZCBxdWV1ZWRBZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiwg
RE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2b2lkIHF1ZXVlZEFkZEljZUNhbmRpZGF0ZShSVENJ
Y2VDYW5kaWRhdGUqLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAgICBSVENTaWdu
YWxpbmdTdGF0ZSBzaWduYWxpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbmFsaW5nU3Rh
dGU7IH0KICAgICBSVENJY2VHYXRoZXJpbmdTdGF0ZSBpY2VHYXRoZXJpbmdTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faWNlR2F0aGVyaW5nU3RhdGU7IH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBjbGFz
cyBSVENQZWVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25u
ZWN0aW9uPiwgcHVibGljIFJUQwogICAgIHZvaWQgZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmlu
ZygpIHsgbV9iYWNrZW5kLT5kaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7IH0KICAgICB2
b2lkIGVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpIHsgbV9iYWNrZW5kLT5lbmFibGVJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmcoKTsgfQogCi0gICAgdm9pZCBlbnF1ZXVlUmVwbGFjZVRyYWNrVGFz
ayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lk
PiYmKTsKKyAgICB2b2lkIGVucXVldWVSZXBsYWNlVHJhY2tUYXNrKFJUQ1J0cFNlbmRlciYsIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAg
ICB2b2lkIGNsZWFyQ29udHJvbGxlcigpIHsgbV9jb250cm9sbGVyID0gbnVsbHB0cjsgfQogCkBA
IC0xNjYsNyArMTY2LDcgQEAgY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBSVEMKIAogICAgIC8vIEZJWE1F
OiBXZSBtaWdodCB3YW50IFBlZXJDb25uZWN0aW9uQmFja2VuZCB0byBiZSB0aGUgQmFja2VuZAog
ICAgIC8vIFJUQ1J0cFNlbmRlcjo6QmFja2VuZAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0
cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYp
IGZpbmFsOworICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7CiAgICAg
UlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFs
OwogCiAgICAgdm9pZCB1cGRhdGVDb25uZWN0aW9uU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAppbmRleCAwMmYyOWIy
MDFjMWFhNGFmZGNkYzgyYjYyN2E0NDkxYTIxMTAxOTk5Li4wZDQ2NjQxMTJkNTliNzBhNDM4Y2Vh
NWY2MjZlYWI2OTUxMmFiNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgUlRDUnRw
U2VuZGVyOjpzZXRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaykKICAgICBtX3Ry
YWNrID0gV1RGTW92ZSh0cmFjayk7CiB9CiAKLXZvaWQgUlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJh
Y2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlPHZvaWQ+
JiYgcHJvbWlzZSkKK3ZvaWQgUlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2soUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9t
aXNlKQogewogICAgIGlmIChpc1N0b3BwZWQoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJ
TlZBTElEX1NUQVRFX0VSUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTZW5kZXIuaAppbmRleCAzYzUwN2E2MzI2NTNjZjA0OGQ3MGEzYzFjNzgzZGU1
ZmY4NzIyNjQ5Li4zMGE1MTViODlmNmJkMWNkZGE0NmJjYzk0MThiNDA5YjlkY2YyNTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgK
QEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgUlRDUnRwU2VuZGVyIDogcHVibGljIFJUQ1J0cFNlbmRl
clJlY2VpdmVyQmFzZSB7CiBwdWJsaWM6CiAgICAgY2xhc3MgQmFja2VuZCB7CiAgICAgcHVibGlj
OgotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpID0gMDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJl
YW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpID0gMDsKICAgICAgICAgdmly
dHVhbCBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3Qg
PSAwOwogICAgICAgICB2aXJ0dWFsIH5CYWNrZW5kKCkgeyB9CiAgICAgfTsKQEAgLTYwLDcgKzYw
LDcgQEAgY2xhc3MgUlRDUnRwU2VuZGVyIDogcHVibGljIFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFz
ZSB7CiAgICAgdm9pZCBzZXRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJik7CiAgICAgdm9p
ZCBzZXRUcmFja1RvTnVsbCgpOwogCi0gICAgdm9pZCByZXBsYWNlVHJhY2soUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCByZXBsYWNlVHJh
Y2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKIAogICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNw
cAppbmRleCA0ZDJiZmJjNjUyNTEwZmJkZGNlNzI3NGJkY2U4ZDY1ODkwZjk5ZDViLi45NjEyNWZk
NDQzZjA4MzNmNTNlNzMwYjhmYTNkYmU4YzliNWFiZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeGNlcHRpb25Pcjx2b2lkPiBV
c2VyTWVkaWFSZXF1ZXN0OjpzdGFydChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+
JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+
PiYmIHByb21pc2UpCitFeGNlcHRpb25Pcjx2b2lkPiBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0
cmFpbnRzLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgRE9N
UHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYgcHJvbWlzZSkKIHsK
ICAgICBhdXRvKiB1c2VyTWVkaWEgPSBVc2VyTWVkaWFDb250cm9sbGVyOjpmcm9tKGRvY3VtZW50
LnBhZ2UoKSk7CiAgICAgaWYgKCF1c2VyTWVkaWEpCkBAIC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PE1lZGlhQ29uc3RyYWluCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotVXNlck1lZGlhUmVxdWVzdDo6
VXNlck1lZGlhUmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQsIFVzZXJNZWRpYUNvbnRyb2xsZXIm
IGNvbnRyb2xsZXIsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRz
LCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJvbWlz
ZTxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmIHByb21pc2UpCitVc2VyTWVkaWFSZXF1ZXN0
OjpVc2VyTWVkaWFSZXF1ZXN0KERvY3VtZW50JiBkb2N1bWVudCwgVXNlck1lZGlhQ29udHJvbGxl
ciYgY29udHJvbGxlciwgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWlu
dHMsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQogICAgIDog
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmRvY3VtZW50KQogICAgICwgbV9hdWRpb0NvbnN0
cmFpbnRzKFdURk1vdmUoYXVkaW9Db25zdHJhaW50cykpCiAgICAgLCBtX3ZpZGVvQ29uc3RyYWlu
dHMoV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggMzE2ZmVlMTU0OGQ5
NTQ0ZTIxOTUyNjdkODY4OGIxZWUyMmY3ZGFiMS4uYTNlOTY5MDI5MjY1NzlhZmFkMjgxNDI3OGJl
YzZlNzJmOTA2YzhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAi
SlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFVzZXJNZWRpYUNvbnRy
b2xsZXI7CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2Vy
TWVkaWFSZXF1ZXN0PiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0KERvY3VtZW50JiwgUmVmPE1l
ZGlhQ29uc3RyYWludHNJbXBsPiYmIGF1ZGlvQ29uc3RyYWludHMsIFJlZjxNZWRpYUNvbnN0cmFp
bnRzSW1wbD4mJiB2aWRlb0NvbnN0cmFpbnRzLCBET01Qcm9taXNlPElETEludGVyZmFjZTxNZWRp
YVN0cmVhbT4+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydChEb2N1bWVu
dCYsIFJlZjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4mJiBhdWRpb0NvbnN0cmFpbnRzLCBSZWY8TWVk
aWFDb25zdHJhaW50c0ltcGw+JiYgdmlkZW9Db25zdHJhaW50cywgRE9NUHJvbWlzZURlZmVycmVk
PElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOwogCiAgICAgdmlydHVhbCB+VXNlck1lZGlh
UmVxdWVzdCgpOwogCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBw
dWJsaWMgUmVmQ291bnRlZDxVc2VyTWVkaWFSZXF1ZXN0PiwgcHJpdmF0ZSBDb250ZXh0RGVzCiAg
ICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgVXNlck1lZGlhUmVxdWVzdChEb2N1bWVudCYsIFVzZXJNZWRpYUNvbnRyb2xsZXImLCBS
ZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJhaW50cywgUmVmPE1lZGlhQ29u
c3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVByb21pc2U8SURMSW50ZXJmYWNl
PE1lZGlhU3RyZWFtPj4mJik7CisgICAgVXNlck1lZGlhUmVxdWVzdChEb2N1bWVudCYsIFVzZXJN
ZWRpYUNvbnRyb2xsZXImLCBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+JiYgYXVkaW9Db25zdHJh
aW50cywgUmVmPE1lZGlhQ29uc3RyYWludHNJbXBsPiYmIHZpZGVvQ29uc3RyYWludHMsIERPTVBy
b21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKIAogICAgIHZvaWQg
Y29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwogICAgIApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBV
c2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4sIHBy
aXZhdGUgQ29udGV4dERlcwogICAgIFN0cmluZyBtX2FsbG93ZWRBdWRpb0RldmljZVVJRDsKIAog
ICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKLSAgICBET01Qcm9taXNlPElE
TEludGVyZmFjZTxNZWRpYVN0cmVhbT4+IG1fcHJvbWlzZTsKKyAgICBET01Qcm9taXNlRGVmZXJy
ZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4gbV9wcm9taXNlOwogICAgIFJlZlB0cjxVc2Vy
TWVkaWFSZXF1ZXN0PiBtX3Byb3RlY3RvcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDMxMDIwNGIyYjNhNTVk
MGQ3ZmQ1ZDdiNWFhMzUzMTM4YzFiMzhlMWIuLjE4MTdlNjVmN2UzMjQ4MjRiNDEyMzYzM2NjZWFi
NWJiYTM1MmY1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjphZGRSZW1vdGVTdHJlYW0oUmVmPE1lZGlhU3RyZWFtPiYmIG1l
ZGlhU3RyCiAgICAgbV9yZW1vdGVTdHJlYW1zLmFwcGVuZChXVEZNb3ZlKG1lZGlhU3RyZWFtKSk7
CiB9CiAKLXZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZXBsYWNlVHJhY2so
UlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBET01Q
cm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpyZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZjxNZWRpYVN0cmVhbVRy
YWNrPiYmIHRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAg
IEFTU0VSVChzZW5kZXIudHJhY2soKSk7CiAgICAgYXV0byogY3VycmVudFRyYWNrID0gc2VuZGVy
LnRyYWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCmluZGV4IDkyZTY4YTYzODI0NmJiZmY4M2I5ZTI0YTNiNzU3NWFlNDY2ZGUzZmIu
LjU0MzZmOGY4OWI1ODY1NmQwOWYwMDIyZmU5YjRkNGEwZWE1ZmZiNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC02OSw3ICs2
OSw3IEBAIGNsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCBmaW5hbCA6IHB1Ymxp
YyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQgewogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRp
b24+IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IHBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0IGZp
bmFsOwogCi0gICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4mJikgZmluYWw7CisgICAgdm9pZCByZXBsYWNl
VHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRl
cnMoUlRDUnRwU2VuZGVyJikgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGVtdWxhdGVQbGF0Zm9y
bUV2ZW50KGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaAppbmRleCA5YzE2Y2E4YTA3
ZDZlMTdmNmZhMzc5NTViOTY3ZjdlYjFmZmFhZjAxLi40MTAzYWM4Mjk1MDc2ZTk0OGVjM2M3M2Fh
YmQyZjVhYTJkODhmMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5B
QkxFKFNUUkVBTVNfQVBJKQogCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAi
SlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKQEAgLTQwLDggKzQwLDgg
QEAgY2xhc3MgUmVhZGFibGVTdHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJs
ZVN0cmVhbVNvdXJjZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflJlYWRhYmxlU3RyZWFtU291
cmNlKCkgeyB9CiAKLSAgICB2b2lkIHN0YXJ0KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXImJiwgRE9NUHJvbWlzZTx2b2lkPiYmKTsKLSAgICB2b2lkIHB1bGwoRE9NUHJvbWlzZTx2b2lk
PiYmKTsKKyAgICB2b2lkIHN0YXJ0KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiwg
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgcHVsbChET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBjYW5jZWwoSlNDOjpKU1ZhbHVlKTsKIAogICAgIGJv
b2wgaXNQdWxsaW5nKCkgY29uc3QgeyByZXR1cm4gISFtX3Byb21pc2U7IH0KQEAgLTYzLDExICs2
MywxMSBAQCBjbGFzcyBSZWFkYWJsZVN0cmVhbVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJl
YWRhYmxlU3RyZWFtU291cmNlPiB7CiAgICAgdmlydHVhbCB2b2lkIGRvQ2FuY2VsKCkgPSAwOwog
CiBwcml2YXRlOgotICAgIHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZTx2b2lkPj4gbV9wcm9taXNl
OworICAgIHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3Byb21pc2U7
CiAgICAgc3RkOjpvcHRpb25hbDxSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyPiBtX2Nv
bnRyb2xsZXI7CiB9OwogCi1pbmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQo
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciYmIGNvbnRyb2xsZXIsIERPTVByb21pc2U8
dm9pZD4mJiBwcm9taXNlKQoraW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0
KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiBjb250cm9sbGVyLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIEFTU0VSVCghbV9wcm9taXNlKTsKICAg
ICBtX3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwpAQCAtNzcsNyArNzcsNyBAQCBpbmxpbmUg
dm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlciYmIGNvbnRybwogICAgIGRvU3RhcnQoKTsKIH0KIAotaW5saW5lIHZvaWQgUmVhZGFi
bGVTdHJlYW1Tb3VyY2U6OnB1bGwoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCitpbmxpbmUg
dm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6cHVsbChET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlKQogewogICAgIEFTU0VSVCghbV9wcm9taXNlKTsKICAgICBBU1NFUlQobV9jb250
cm9sbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcAppbmRleCAxMWRlMDRhOTk3OWZhZjhkMWZhNzI2NTg5ZjE0NDMwNzZhZTM4NzZkLi4y
MzUyOTljYmU1M2RlNzA0MjY2N2JlOWNiZThlYmJlMTM0ZmRjNDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC01Myw3ICs1Myw3
IEBACiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJIUlRGRGF0YWJh
c2VMb2FkZXIuaCIKICNpbmNsdWRlICJIUlRGUGFubmVyLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9t
aXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIEF1ZGlvQ29u
dGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNJbml0aWFsaXplZDsK
IH0KIAotdm9pZCBBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKFN0YXRlIHN0YXRlLCBET01Qcm9t
aXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgQXVkaW9Db250ZXh0OjphZGRSZWFjdGlvbihTdGF0
ZSBzdGF0ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBzaXpl
X3Qgc3RhdGVJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGUpOwogICAgIGlmIChzdGF0
ZUluZGV4ID49IG1fc3RhdGVSZWFjdGlvbnMuc2l6ZSgpKQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZv
aWQgQXVkaW9Db250ZXh0OjpzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkKICAgICBpZiAoc3RhdGVJbmRl
eCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVj
dG9yPERPTVByb21pc2U8dm9pZD4+IHJlYWN0aW9uczsKKyAgICBWZWN0b3I8RE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+PiByZWFjdGlvbnM7CiAgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4
XS5zd2FwKHJlYWN0aW9ucyk7CiAKICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiByZWFjdGlvbnMp
CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6ZGVjcmVtZW50QWN0aXZl
U291cmNlQ291bnQoKQogICAgIC0tbV9hY3RpdmVTb3VyY2VDb3VudDsKIH0KIAotdm9pZCBBdWRp
b0NvbnRleHQ6OnN1c3BlbmQoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIEF1ZGlv
Q29udGV4dDo6c3VzcGVuZChET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewog
ICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSU5W
QUxJRF9TVEFURV9FUlIpOwpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6
OnN1c3BlbmQoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCiAgICAgfSk7CiB9CiAKLXZvaWQg
QXVkaW9Db250ZXh0OjpyZXN1bWUoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIEF1
ZGlvQ29udGV4dDo6cmVzdW1lKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7
CiAgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJ
TlZBTElEX1NUQVRFX0VSUik7CkBAIC0xMDk4LDcgKzEwOTgsNyBAQCB2b2lkIEF1ZGlvQ29udGV4
dDo6cmVzdW1lKERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQogICAgIH0pOwogfQogCi12b2lk
IEF1ZGlvQ29udGV4dDo6Y2xvc2UoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCit2b2lkIEF1
ZGlvQ29udGV4dDo6Y2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsK
ICAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KElO
VkFMSURfU1RBVEVfRVJSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCmluZGV4IGU0MTE2OGU3ODBjYWQ3NjIzOTg0NTBjYTljMTUzMGRiNmNiZjhl
NjMuLjQ5YmIxMzdjYzhhYjIxZGQ0Zjk4YmUxNWNjYWRmZjgxODA4MzI1M2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMzEsNyArMzEs
NyBAQAogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCiAjaW5jbHVkZSAiRXZlbnRM
aXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiSlNET01Qcm9t
aXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJNZWRp
YUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKQEAgLTExMSw5ICsxMTEsOSBAQCBjbGFzcyBBdWRp
b0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8QXVkaW9DbwogICAgIHVzaW5nIEFjdGl2ZURPTU9iamVjdDo6c3VzcGVuZDsKICAgICB1
c2luZyBBY3RpdmVET01PYmplY3Q6OnJlc3VtZTsKIAotICAgIHZvaWQgc3VzcGVuZChET01Qcm9t
aXNlPHZvaWQ+JiYpOwotICAgIHZvaWQgcmVzdW1lKERPTVByb21pc2U8dm9pZD4mJik7Ci0gICAg
dm9pZCBjbG9zZShET01Qcm9taXNlPHZvaWQ+JiYpOworICAgIHZvaWQgc3VzcGVuZChET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCByZXN1bWUoRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpOworICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwog
CiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7IFN1c3BlbmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQs
IENsb3NlZCB9OwogICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CkBAIC0zMjksNyArMzI5LDcgQEAg
Y2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ28KICAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9TdW1taW5n
SnVuY3Rpb25zKCk7CiAgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKIAot
ICAgIHZvaWQgYWRkUmVhY3Rpb24oU3RhdGUsIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9p
ZCBhZGRSZWFjdGlvbihTdGF0ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZv
aWQgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CiAKICAgICAvLyBPbmx5IGFjY2Vzc2VkIGlu
IHRoZSBhdWRpbyB0aHJlYWQuCkBAIC0zNjYsNyArMzY2LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0
IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1
ZGlvQ28KICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9k
ZXM7CiAgICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgogICAgIFZlY3Rv
cjxBdWRpb05vZGUqPiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0OwotICAgIFZlY3RvcjxWZWN0
b3I8RE9NUHJvbWlzZTx2b2lkPj4+IG1fc3RhdGVSZWFjdGlvbnM7CisgICAgVmVjdG9yPFZlY3Rv
cjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8R2VuZXJpY0V2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZTY0
ZWQxODVlYTViZWUyM2IwNjFlMGZmYjlkY2MyZTg1NzE1NDFmLi4zMGRmOTU0MDg1MzQ2ZWUxZGVl
ZDVjNjEzZGMxYzFiNjY4MjM2Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NTMwLDggKzY1MzAsOCBAQAogCQlFMTcyQUY2
RDE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjZCMTgwRjI0QzYwMEZCQURCOSAv
KiBDcnlwdG9BbGdvcml0aG0uY3BwICovOyB9OwogCQlFMTcyQUY2RTE4MEYyNEM2MDBGQkFEQjkg
LyogQ3J5cHRvQWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTcyQUY2QzE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmgg
Ki87IH07CiAJCUUxNzJBRjcwMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGNkYxODBG
Mjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggKi87IH07Ci0JCUUxNzJBRjhGMTgxMUJD
MzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGOEQxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJv
bWlzZS5jcHAgKi87IH07Ci0JCUUxNzJBRjkwMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21p
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJB
RjhFMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMTcyQUY4RjE4MTFCQzM3MDBGQkFEQjkg
LyogSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGOEQxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlz
ZURlZmVycmVkLmNwcCAqLzsgfTsKKwkJRTE3MkFGOTAxODExQkMzNzAwRkJBREI5IC8qIEpTRE9N
UHJvbWlzZURlZmVycmVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTc1
QkE5OTFFOEFFMzM4MDA3MTQ1NEYgLyogR3JpZFBvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgxNzQ1MUU4OTdBNTIwMEYyMkNEMCAv
KiBHcmlkUG9zaXRpb24uY3BwICovOyB9OwogCQlFMTc5RjBEQTFCOTc3NEZFMDBFRDBBMjcgLyog
SW50ZXJuYWxzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE3OUYwRDkxQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSAqLzsgfTsKIAkJRTE3
QjQ5MTUxNkE5QjA5NDAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTdCNDkxMzE2QTlCMDkzMDAxQzg4
MzkgLyogVHJhbnNpdGlvbkV2ZW50LmNwcCAqLzsgfTsKQEAgLTY2NjAsNiArNjY2MCw3IEBACiAJ
CUUzNTY1QjdCMURDMkQ2QzkwMDIxN0RCRCAvKiBKU0V2ZW50Q3VzdG9tLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFRTQ5RjFEQzJENTc1MDBFQUE5
RDMgLyogSlNFdmVudEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBl
RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzdGRTREMURBREUx
NjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFEQURDMDQ1MDA3MThGM0MgLyogTm9kZUNvbnN0
YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzN0M4NjRGMUVCNjNFMkQwMDg3QzZD
QSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9h
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
ODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9Owog
CQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVG
MDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CiAJCUUzOThGQzI0MURDMzJB
MjAwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRI
ZWxwZXJzLmNwcCAqLzsgfTsKQEAgLTE1MDYxLDggKzE1MDYyLDggQEAKIAkJRTE3MkFGNkIxODBG
MjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTcyQUY2QzE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTcyQUY2RjE4MEYyODk1MDBGQkFEQjkgLyogQ3J5
cHRvS2V5VXNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvS2V5
VXNhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTE3MkFGOEQxODExQkMzNzAw
RkJBREI5IC8qIEpTRE9NUHJvbWlzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RPTVByb21pc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlF
MTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NUHJvbWlzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMTcyQUY4RDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Qcm9taXNlRGVm
ZXJyZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTcyQUY4RTE4MTFCQzM3
MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNET01Qcm9taXNlRGVmZXJyZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTE3NjU4MEMxODBERjNBMDAwNUE5NkQxIC8qIE9FU0VsZW1lbnRJbmRleFVpbnQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IE9FU0VsZW1lbnRJbmRleFVpbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTc5RjBEOTFCOTc3NEZFMDBFRDBBMjcgLyogSW50ZXJuYWxzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW50ZXJuYWxzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMTdCNDkwQjE2QTk3MjY5MDAxQzg4MzkgLyogVHJhbnNpdGlv
bkV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUcmFuc2l0aW9uRXZlbnQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyMDUsNiArMTUyMDYsNyBAQAogCQlFMzM0
ODI1RTFEQzkzQUEwMDA5Qzk1NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlGMURDMkQ1NzUwMEVB
QTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRXZlbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1ODAyQjUx
REM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMVHlwZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NUHJvbWlzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0
TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgz
ODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM0MTAsOCArMjM0MTIsOSBAQAog
CQkJCTQxMzhGODU2MUQyNTNFRUUwMDFDQjYxRSAvKiBKU0RPTUl0ZXJhdG9yLmggKi8sCiAJCQkJ
NDFERUZDQjMxRTU2QzFCOTAwMEQ5RTVGIC8qIEpTRE9NTWFwTGlrZS5jcHAgKi8sCiAJCQkJNDFE
RUZDQjQxRTU2QzFCOTAwMEQ5RTVGIC8qIEpTRE9NTWFwTGlrZS5oICovLAotCQkJCUUxNzJBRjhE
MTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwICovLAotCQkJCUUxNzJBRjhFMTgx
MUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuaCAqLywKKwkJCQlFMzdDODY0RjFFQjYzRTJE
MDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi8sCisJCQkJRTE3MkFGOEQxODExQkMzNzAwRkJB
REI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmNwcCAqLywKKwkJCQlFMTcyQUY4RTE4MTFCQzM3
MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQuaCAqLywKIAkJCQlCQzY5MzI3MTBEN0Uy
OTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmNwcCAqLywKIAkJCQlCQzY5MzI3MjBEN0Uy
OTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmggKi8sCiAJCQkJNDYwQ0JGMzMxRDRCQ0NG
RTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8sCkBAIC0yNzIxMSw2ICsy
NzIxNCw3IEBACiAJCQkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2IC8qIGdlbmVyYXRlLWJpbmRp
bmdzLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdl
bmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzAwMzBGNjFCN0QzM0I1MDBFRDNB
QUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
MzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNENjJGQjk2MUFGMDE4RTcwMDEyRUQ3RCAvKiBHZW5lcmljVGFza1F1
ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNDE0RjREREU2MDAzRTdBNzAgLyogR2Vv
bG9jYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NTMsNyArMjc3NTcsNyBAQAogCQkJCTBG
NDk2NkFCMURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjQ5NjZBRDFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludEluaXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNDk2NkFGMURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50UmVhZE9ubHku
aCBpbiBIZWFkZXJzICovLAotCQkJCUUxNzJBRjkwMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVBy
b21pc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxNzJBRjkwMTgxMUJDMzcwMEZCQURCOSAvKiBK
U0RPTVByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwQkMxREI1NkJF
ODAwMkRDRUMzIC8qIEpTRE9NUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwQkUxREI1
NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdEluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDcx
MEMwMURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3RSZWFkT25seS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMTcwMSw3ICszMTcwNSw3IEBACiAJCQkJMEY0OTY2QUExREI0MEM0MzAwQTI3NEJCIC8q
IEpTRE9NUG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0OTY2QUMxREI0MEM0MzAwQTI3
NEJCIC8qIEpTRE9NUG9pbnRJbml0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDk2NkFFMURC
NDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50UmVhZE9ubHkuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJRTE3MkFGOEYxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFMTcyQUY4RjE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJy
ZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NzEwQkIxREI1NkJFODAwMkRDRUMzIC8qIEpT
RE9NUmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ3MTBCRDFEQjU2QkU4MDAyRENFQzMg
LyogSlNET01SZWN0SW5pdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ3MTBCRjFEQjU2QkU4
MDAyRENFQzMgLyogSlNET01SZWN0UmVhZE9ubHkuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvSURMVHlwZXMuaAppbmRleCAyODEyMDUwYTYxOTRkY2NmYWNjNjliODQzMzU0Y2Uz
YzZiMzAzY2Y1Li5iNWIxNDJjOWI5MWQ2MzM3ZWM5MDcyZTUxM2IyMTBjNWMxNjZjNDQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgSURCS2V5OwogY2xhc3MgSURCS2V5RGF0YTsKIGNsYXNzIElEQlZhbHVl
OwotdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERPTVByb21pc2U7CitjbGFzcyBET01Qcm9taXNl
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IElETFR5cGUgewpAQCAtMTg1LDcgKzE4
NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+IHN0cnVjdCBJRExSZWNvcmQg
OiBJRExUeXBlPFZlY3RvcjxXVEY6OktleVZhbHVlCiAgICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9
IGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlv
blR5cGUsIHR5cGVuYW1lIFY6OkltcGxlbWVudGF0aW9uVHlwZT4+JjsKIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExQcm9taXNlIDogSURMVHlwZTxET01Qcm9taXNlPFQ+PiB7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMUHJvbWlzZSA6IElETFR5cGU8RE9NUHJv
bWlzZT4gewogICAgIHVzaW5nIElubmVyVHlwZSA9IFQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVu
dC5oCmluZGV4IDZjY2RiY2NjYTc3YTllZGQ2Y2NkMWNlMGZiMzNhMDdjMDE2OTQyMGMuLjU1MGVi
YjU1OWNhYmVkMWJkMWRiNzYyZWZkYTUyZDdlMmUxY2NjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVu
dC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNET01Q
cm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcAppbmRleCBhNmQzYzE4ZDE0NzQwMmQyMDgzM2ExOGFkMzY3OTE4NmIzZjNl
NWY1Li4yZGM4NDFkNDhlMWNjNjkxNTJlNTUxMTk5YTIwYTc2MzhmZWJkNjIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcCIKICNpbmNs
dWRlICJKU0RPTUdsb2JhbE9iamVjdC5jcHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RU
YXNrLmNwcCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuY3BwIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmNwcCIKICNpbmNsdWRlICJKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmNwcCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3Rv
bS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKaW5kZXggYzY2MWFiZmY2MDNiNzczNjI0MzFj
ZWE4MDliOGY3OTJlOWJhOTFlMC4uODc2ZjZjYWEzZDA1YmFlZjg2OWFmOTcyNmU4ODUzZGRiODUy
ZDE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50UmVnaXN0cnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1
ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFBy
b21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFByb21pc2Uu
aAppbmRleCBjMjIzNzBlMjY2NGNiZTcyNjAxMjA4OWJiNjk1Mjg5ODJiOWVjZDkxLi4wNTU4MzRi
MWRkNDU2ODJkNjJlMzk2OWMyNTM4NTRkZjRmYWViMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlzZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMzAgKzI3LDQ2
IEBACiAKICNpbmNsdWRlICJJRExUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2Uu
aCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0v
LyBGSVhNRTogSW1wbGVtZW50IElETFByb21pc2U8PiBjb252ZXJzaW9ucy4KLS8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NTIKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1zdHJ1Y3QgQ29udmVydGVyPElETFByb21pc2U8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJ
RExQcm9taXNlPFQ+PiB7Ci0gICAgdXNpbmcgUmV0dXJuVHlwZSA9IEpTQzo6SlNWYWx1ZTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj4gOiBEZWZh
dWx0Q29udmVydGVyPElETFByb21pc2U8VD4+IHsKKyAgICB1c2luZyBSZXR1cm5UeXBlID0gSlND
OjpKU1Byb21pc2UqOwogCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2VzLXByb21pc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25U
aHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CisgICAgc3RhdGljIFJldHVyblR5cGUg
Y29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0
aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAg
ewotICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAg
ICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KHZtLCBzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICBpZiAoIWdsb2Jh
bE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIC8vIDEuIExl
dCByZXNvbHZlIGJlIHRoZSBvcmlnaW5hbCB2YWx1ZSBvZiAlUHJvbWlzZSUucmVzb2x2ZS4KKyAg
ICAgICAgLy8gMi4gTGV0IHByb21pc2UgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHJlc29sdmUg
d2l0aCAlUHJvbWlzZSUgYXMgdGhlIHRoaXMgdmFsdWUgYW5kIFYgYXMgdGhlIHNpbmdsZSBhcmd1
bWVudCB2YWx1ZS4KKyAgICAgICAgYXV0byogcHJvbWlzZSA9IEpTQzo6SlNQcm9taXNlOjpyZXNv
bHZlKCpnbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigp
KSB7CisgICAgICAgICAgICBleGNlcHRpb25UaHJvd2VyKHN0YXRlLCBzY29wZSk7CisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocHJvbWlzZSk7
CisKKyAgICAgICAgLy8gMy4gUmV0dXJuIHRoZSBJREwgcHJvbWlzZSB0eXBlIHZhbHVlIHRoYXQg
aXMgYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgb2JqZWN0IGFzIHByb21pc2UuCisgICAgICAgIHJl
dHVybiBwcm9taXNlOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qg
SlNDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj4gewotICAgIHVzaW5nIFR5cGUgPSBKU0M6OkpTVmFs
dWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMUHJvbWlzZTxU
Pj4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc1N0YXRlID0gZmFsc2U7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzR2xvYmFsT2JqZWN0ID0gZmFsc2U7CiAKLSAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZlcnQoSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHN0YXRp
YyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkpTUHJvbWlzZSYgcHJvbWlzZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgLy8gVGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5n
IGFuIElETCBwcm9taXNlIHR5cGUgdmFsdWUgdG8gYW4gRUNNQVNjcmlwdCB2YWx1ZSBpcyB0aGUg
UHJvbWlzZSB2YWx1ZQorICAgICAgICAvLyB0aGF0IHJlcHJlc2VudHMgYSByZWZlcmVuY2UgdG8g
dGhlIHNhbWUgb2JqZWN0IHRoYXQgdGhlIElETCBwcm9taXNlIHR5cGUgcmVwcmVzZW50cy4KKyAg
ICAgICAgcmV0dXJuICZwcm9taXNlOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKaW5kZXggZGFmMGYw
MTNhYjY3Njc1OWRiN2YzODQ1ZjQwNzhmNTExNjZlYjViNy4uMzhkNjhhNzc5NDI2YzdlYTEzODcx
NDQzOGM5Nzc3NTE1M2VmNDg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWFk
ZXJzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSW50ZXJmYWNlcy5oIgotI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
SlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0R5bmFtaWNEb3duY2FzdC5oIgogI2luY2x1ZGUg
IkpTRXhjZXB0aW9uQmFzZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGE1ZjRlYzllNTU1MjFiYmFjZmM5Mjg3YWQ5ZGVmNGFk
OTlkZmMzNTYuLjcyNDBhZDBjZDQ2YTI0NWYzNWQwN2YyNzcyN2M3ZjdlODkwZWFmYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAg
LTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
SlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNNZWRpYVN0cmVhbS5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaAppbmRleCBmNzRhZTJh
MGQwZjhmMzVhODgwZGRiNzBhNTM0ZTRkMTA5MDM1ZDQ5Li5iZTFmYWY5YjQxNDYwNmU4NGE4ZmEz
YWU3OTk3Y2U4NTBkYjNmNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUd1YXJkZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUd1YXJkZWRPYmplY3QuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBET01HdWFyZGVkT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8RE9NR3VhcmRlZE9iamVjdD4s
IHB1YgogcHVibGljOgogICAgIH5ET01HdWFyZGVkT2JqZWN0KCk7CiAKLSAgICBib29sIGlzU3Vz
cGVuZGVkKCkgeyByZXR1cm4gIW1fZ3VhcmRlZCB8fCAhY2FuSW52b2tlQ2FsbGJhY2soKTsgfSAv
LyBUaGUgd3JhcHBlciB3b3JsZCBoYXMgZ29uZSBhd2F5IG9yIGFjdGl2ZSBET00gb2JqZWN0cyBo
YXZlIGJlZW4gc3VzcGVuZGVkLgorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVy
biAhbV9ndWFyZGVkIHx8ICFjYW5JbnZva2VDYWxsYmFjaygpOyB9IC8vIFRoZSB3cmFwcGVyIHdv
cmxkIGhhcyBnb25lIGF3YXkgb3IgYWN0aXZlIERPTSBvYmplY3RzIGhhdmUgYmVlbiBzdXNwZW5k
ZWQuCiAKICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3Ip
IHsgdmlzaXRvci5hcHBlbmQobV9ndWFyZGVkKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM5
NzE3ODhlYTBmNDUwYmIwZTQyODEzODExYzM3ZjcwMGVlYjRlMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVByb21pc2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgi
Ci0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNET01FcnJvci5oIgot
I2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCi0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpbk5hbWVz
Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb24uaD4KLSNpbmNsdWRlIDxydW50aW1lL0pT
T05PYmplY3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNDOjpKU1Zh
bHVlIERlZmVycmVkUHJvbWlzZTo6cHJvbWlzZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGRlZmVy
cmVkKCkpOwotICAgIHJldHVybiBkZWZlcnJlZCgpLT5wcm9taXNlKCk7Ci19Ci0KLXZvaWQgRGVm
ZXJyZWRQcm9taXNlOjpjYWxsRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGZ1bmN0
aW9uLCBKU1ZhbHVlIHJlc29sdXRpb24pCi17Ci0gICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJU
KGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKHJlc29sdXRpb24pOwotCi0gICAgY2Fs
bCgmZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJn
dW1lbnRzKTsKLQotICAgIGNsZWFyKCk7Ci19Ci0KLXZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWpl
Y3QoKQotewotICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBB
U1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
JiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcigmc3RhdGUpOwotICAgIHJlamVjdChzdGF0ZSwgSlNDOjpqc1VuZGVmaW5l
ZCgpKTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChzdGQ6Om51bGxwdHJfdCkK
LXsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJU
KGRlZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3Rh
dGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoJnN0YXRlKTsKLSAgICByZWplY3Qoc3RhdGUsIEpTQzo6anNOdWxsKCkpOwotfQot
Ci12b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKLXsK
LSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGRl
ZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgc3RhdGUg
PSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIoJnN0YXRlKTsKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0
YXRlLnZtKCkpOwotICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNlcHRpb24oc3RhdGUsIFdU
Rk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkg
ewotICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHN0YXRlLnZt
KCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBy
ZWplY3Qoc3RhdGUsIGVycm9yKTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChF
eGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgaWYgKGlzU3Vz
cGVuZGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAg
ICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwotICAgIGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCZzdGF0ZSk7
Ci0KLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKLSAg
ICBhdXRvIGVycm9yID0gY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMsIG1lc3NhZ2UpOwot
ICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgQVNTRVJUKGlz
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihzdGF0ZS52bSgpLCBzY29wZS5leGNlcHRpb24o
KSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0KLSAgICByZWplY3Qoc3RhdGUsIGVycm9y
KTsKLX0KLQotdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChjb25zdCBKU0M6OlByaXZhdGVO
YW1lJiBwcml2YXRlTmFtZSkKLXsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVj
dCk7Ci0gICAgSlNDOjpFeGVjU3RhdGUqIHN0YXRlID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoc3RhdGUpOwotICAgIHJlamVjdCgq
c3RhdGUsIEpTQzo6U3ltYm9sOjpjcmVhdGUoc3RhdGUtPnZtKCksIHByaXZhdGVOYW1lLnVpZCgp
KSk7Ci19Ci0KLXZvaWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZURl
ZmVycmVkJiBwcm9taXNlRGVmZXJyZWQpCi17Ci0gICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLSAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0KLSAgICBpZiAoTElLRUxZ
KCFzY29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgZXJy
b3IgPSBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUoKTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlv
bigpOwotCi0gICAgRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNl
RGVmZXJyZWQpLT5yZWplY3Q8SURMQW55PihlcnJvcik7Ci19Ci0KLVJlZjxEZWZlcnJlZFByb21p
c2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NV2lu
ZG93JiBkb21XaW5kb3cpCi17Ci0gICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQg
PSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCAmZG9tV2luZG93KTsKLSAg
ICAvLyBkZWZlcnJlZCBjYW4gb25seSBiZSBudWxsIGluIHdvcmtlcnMuCi0gICAgQVNTRVJUKGRl
ZmVycmVkKTsKLSAgICByZXR1cm4gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZG9tV2luZG93LCAq
ZGVmZXJyZWQpOwotfQotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlz
ZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKLXsKLSAgICBBU1NFUlQoc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAg
ICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0g
ICAgYXV0byBwcm9taXNlQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QucHJvbWlzZUNvbnN0cnVj
dG9yKCk7Ci0gICAgYXV0byByZWplY3RGdW5jdGlvbiA9IHByb21pc2VDb25zdHJ1Y3Rvci0+Z2V0
KCZzdGF0ZSwgc3RhdGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWplY3RQ
cml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIHJlamVjdGlvblZhbHVlID0gY3JlYXRlVHlwZUVycm9y
KCZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsKLQotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1
dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWplY3RGdW5jdGlvbiwgY2FsbERhdGEpOwotICAg
IEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0KLSAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChyZWplY3Rpb25WYWx1ZSk7
Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoJnN0YXRlLCByZWplY3RGdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBwcm9taXNlQ29uc3RydWN0b3IsIGFyZ3VtZW50cykpOwot
fQotCi1zdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBwYXJzZUFzSlNPTihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKLXsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrKHN0YXRlKTsKLSAgICByZXR1cm4gSlNDOjpKU09OUGFyc2Uoc3RhdGUsIGRhdGEpOwotfQot
Ci12b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBjb25zdCBTdHJpbmcmIGRhdGEpCi17Ci0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcGFy
c2VBc0pTT04ocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgZGF0YSk7Ci0g
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFNZTlRBWF9FUlIpOwotICAg
IGVsc2UKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExBbnk+KHZhbHVlKTsKLX0KLQotdm9p
ZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UsIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKLXsKLSAgICBpZiAoIWFycmF5QnVmZmVy
KSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdDxJRExBbnk+KGNyZWF0ZU91dE9mTWVtb3J5RXJy
b3IocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEFycmF5QnVmZmVy
Pj4oKmFycmF5QnVmZmVyKTsKLX0KLQotdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZl
cihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCi17Ci0gICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShw
cm9taXNlKSwgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAppbmRleCA4OTBk
NmU2NjkzNTg0MjE1NmEzOGE2NTBjMDc3YWZjMzgzNzJjMmFlLi44NWQ2MTRkYjcyMTRiMTk1NmY1
ZDE1MjUyNTI4NmZlZjYzMzczNGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVByb21pc2UuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsMjMxICsyNiwyOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgot
I2luY2x1ZGUgPHJ1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0pTUHJvbWlzZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERlZmVycmVkUHJv
bWlzZSA6IHB1YmxpYyBET01HdWFyZGVkPEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ+IHsKK2NsYXNz
IERPTVByb21pc2UgOiBwdWJsaWMgRE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZT4gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8RGVmZXJyZWRQcm9taXNlPiBjcmVhdGUoSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYgZGVmZXJyZWQpCisgICAg
c3RhdGljIFJlZjxET01Qcm9taXNlPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1Byb21pc2UmIHByb21pc2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEZWZlcnJlZFByb21pc2UoZ2xvYmFsT2JqZWN0LCBkZWZlcnJlZCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01Qcm9taXNlKGdsb2JhbE9iamVjdCwgcHJvbWlz
ZSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIElETFR5cGU+Ci0gICAgdm9pZCByZXNv
bHZlKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCisgICAgSlNDOjpKU1By
b21pc2UqIHByb21pc2UoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAgICAg
ICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMg
PSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoZXhlYyk7Ci0gICAgICAgIHJlc29sdmUoKmV4ZWMsIHRvSlM8SURMVHlwZT4oKmV4
ZWMsICpnbG9iYWxPYmplY3QoKSwgc3RkOjpmb3J3YXJkPHR5cGVuYW1lIElETFR5cGU6OlBhcmFt
ZXRlclR5cGU+KHZhbHVlKSkpOworICAgICAgICBBU1NFUlQoIWlzU3VzcGVuZGVkKCkpOworICAg
ICAgICByZXR1cm4gZ3VhcmRlZCgpOwogICAgIH0KIAotICAgIHZvaWQgcmVzb2x2ZSgpCi0gICAg
ewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwot
ICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICAgICAgcmVz
b2x2ZSgqZXhlYywgSlNDOjpqc1VuZGVmaW5lZCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxj
bGFzcyBJRExUeXBlPgotICAgIHZvaWQgcmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQodHlwZW5hbWUg
SURMVHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChpc1N1c3Bl
bmRlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7
Ci0gICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRl
KiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgICAgICByZXNvbHZlKCpleGVjLCB0b0pTTmV3bHlD
cmVhdGVkPElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCksIHN0ZDo6Zm9yd2FyZDx0eXBl
bmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTxjbGFzcyBJRExUeXBlPgotICAgIHZvaWQgcmVqZWN0KHR5cGVuYW1lIElETFR5cGU6OlBh
cmFtZXRlclR5cGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwotICAgICAgICBB
U1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGds
b2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2tlcihleGVjKTsKLSAgICAgICAgcmVqZWN0KCpleGVjLCB0b0pTPElETFR5cGU+KCpleGVjLCAq
Z2xvYmFsT2JqZWN0KCksIHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJU
eXBlPih2YWx1ZSkpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlamVjdCgpOwotICAgIHZvaWQgcmVq
ZWN0KHN0ZDo6bnVsbHB0cl90KTsKLSAgICB2b2lkIHJlamVjdChFeGNlcHRpb24mJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWplY3QoRXhjZXB0aW9uQ29kZSwgY29uc3QgU3RyaW5nJiA9
IHsgfSk7Ci0gICAgdm9pZCByZWplY3QoY29uc3QgSlNDOjpQcml2YXRlTmFtZSYpOwotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+Ci0gICAgdm9pZCByZXNvbHZlV2l0aENhbGxiYWNr
KENhbGxiYWNrIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKLSAgICAgICAg
QVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBn
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIoZXhlYyk7Ci0gICAgICAgIHJlc29sdmUoKmV4ZWMsIGNhbGxiYWNrKCpleGVjLCAqZ2xv
YmFsT2JqZWN0KCkpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFjaz4K
LSAgICB2b2lkIHJlamVjdFdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaykKLSAgICB7Ci0g
ICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBB
U1NFUlQoZGVmZXJyZWQoKSk7Ci0gICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7Ci0gICAg
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsK
LSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgICAgICByZWplY3Qo
KmV4ZWMsIGNhbGxiYWNrKCpleGVjLCAqZ2xvYmFsT2JqZWN0KCkpKTsKLSAgICB9Ci0KLSAgICBK
U0M6OkpTVmFsdWUgcHJvbWlzZSgpIGNvbnN0OwotCiBwcml2YXRlOgotICAgIERlZmVycmVkUHJv
bWlzZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTUHJvbWlzZURlZmVy
cmVkJiBkZWZlcnJlZCkgOiBET01HdWFyZGVkPEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ+KGdsb2Jh
bE9iamVjdCwgZGVmZXJyZWQpIHsgfQotCi0gICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogZGVm
ZXJyZWQoKSBjb25zdCB7IHJldHVybiBndWFyZGVkKCk7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2FsbEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9u
LCBKU0M6OkpTVmFsdWUgcmVzb2x1dGlvbik7Ci0gICAgdm9pZCByZXNvbHZlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRl
LCBkZWZlcnJlZCgpLT5yZXNvbHZlKCksIHJlc29sdXRpb24pOyB9Ci0gICAgdm9pZCByZWplY3Qo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgcmVzb2x1dGlvbikgeyBjYWxsRnVu
Y3Rpb24oc3RhdGUsIGRlZmVycmVkKCktPnJlamVjdCgpLCByZXNvbHV0aW9uKTsgfQotfTsKLQot
Y2xhc3MgRE9NUHJvbWlzZUJhc2UgewotcHVibGljOgotICAgIERPTVByb21pc2VCYXNlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgZ2VuZXJpY1Byb21pc2UpCi0gICAgICAgIDogbV9wcm9taXNlRGVm
ZXJyZWQoV1RGTW92ZShnZW5lcmljUHJvbWlzZSkpCi0gICAgewotICAgIH0KLQotICAgIERPTVBy
b21pc2VCYXNlKERPTVByb21pc2VCYXNlJiYgcHJvbWlzZSkKLSAgICAgICAgOiBtX3Byb21pc2VE
ZWZlcnJlZChXVEZNb3ZlKHByb21pc2UubV9wcm9taXNlRGVmZXJyZWQpKQotICAgIHsKLSAgICB9
Ci0KLSAgICBET01Qcm9taXNlQmFzZShjb25zdCBET01Qcm9taXNlQmFzZSYgb3RoZXIpCi0gICAg
ICAgIDogbV9wcm9taXNlRGVmZXJyZWQob3RoZXIubV9wcm9taXNlRGVmZXJyZWQuY29weVJlZigp
KQotICAgIHsKLSAgICB9Ci0KLSAgICBET01Qcm9taXNlQmFzZSYgb3BlcmF0b3I9KGNvbnN0IERP
TVByb21pc2VCYXNlJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0g
b3RoZXIubV9wcm9taXNlRGVmZXJyZWQuY29weVJlZigpOwotICAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgfQotCi0gICAgRE9NUHJvbWlzZUJhc2UmIG9wZXJhdG9yPShET01Qcm9taXNlQmFzZSYm
IG90aGVyKQorICAgIERPTVByb21pc2UoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1Byb21pc2UmIHByb21pc2UpCisgICAgICAgIDogRE9NR3VhcmRlZDxKU0M6OkpTUHJv
bWlzZT4oZ2xvYmFsT2JqZWN0LCBwcm9taXNlKQogICAgIHsKLSAgICAgICAgbV9wcm9taXNlRGVm
ZXJyZWQgPSBXVEZNb3ZlKG90aGVyLm1fcHJvbWlzZURlZmVycmVkKTsKLSAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgIH0KLQotICAgIHZvaWQgcmVqZWN0KCkKLSAgICB7Ci0gICAgICAgIG1fcHJv
bWlzZURlZmVycmVkLT5yZWplY3QoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBFcnJvclR5cGU+IAotICAgIHZvaWQgcmVqZWN0KEVycm9yVHlwZSYmLi4uIGVycm9yKQotICAg
IHsKLSAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdChzdGQ6OmZvcndhcmQ8RXJyb3JU
eXBlPihlcnJvcikuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+
Ci0gICAgdm9pZCByZWplY3RUeXBlKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFs
dWUpCi0gICAgewotICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+cmVqZWN0PElETFR5cGU+KHN0
ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpOwotICAg
IH0KLQotICAgIEpTQzo6SlNWYWx1ZSBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNl
RGVmZXJyZWQtPnByb21pc2UoKTsgfTsKLQotcHJvdGVjdGVkOgotICAgIFJlZjxEZWZlcnJlZFBy
b21pc2U+IG1fcHJvbWlzZURlZmVycmVkOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlw
ZT4gCi1jbGFzcyBET01Qcm9taXNlIDogcHVibGljIERPTVByb21pc2VCYXNlIHsKLXB1YmxpYzoK
LSAgICB1c2luZyBET01Qcm9taXNlQmFzZTo6RE9NUHJvbWlzZUJhc2U7Ci0gICAgdXNpbmcgRE9N
UHJvbWlzZUJhc2U6Om9wZXJhdG9yPTsKLSAgICB1c2luZyBET01Qcm9taXNlQmFzZTo6cHJvbWlz
ZTsKLSAgICB1c2luZyBET01Qcm9taXNlQmFzZTo6cmVqZWN0OwotCi0gICAgdm9pZCByZXNvbHZl
KHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCi0gICAgeyAKLSAgICAgICAg
bV9wcm9taXNlRGVmZXJyZWQtPnJlc29sdmU8SURMVHlwZT4oc3RkOjpmb3J3YXJkPHR5cGVuYW1l
IElETFR5cGU6OlBhcmFtZXRlclR5cGU+KHZhbHVlKSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8
PiBjbGFzcyBET01Qcm9taXNlPHZvaWQ+IDogcHVibGljIERPTVByb21pc2VCYXNlIHsKLXB1Ymxp
YzoKLSAgICB1c2luZyBET01Qcm9taXNlQmFzZTo6RE9NUHJvbWlzZUJhc2U7Ci0gICAgdXNpbmcg
RE9NUHJvbWlzZUJhc2U6Om9wZXJhdG9yPTsKLSAgICB1c2luZyBET01Qcm9taXNlQmFzZTo6cHJv
bWlzZTsKLSAgICB1c2luZyBET01Qcm9taXNlQmFzZTo6cmVqZWN0OwotCi0gICAgdm9pZCByZXNv
bHZlKCkKLSAgICB7IAotICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+cmVzb2x2ZSgpOwotICAg
IH0KLX07Ci0KLQotUmVmPERlZmVycmVkUHJvbWlzZT4gY3JlYXRlRGVmZXJyZWRQcm9taXNlKEpT
Qzo6RXhlY1N0YXRlJiwgSlNET01XaW5kb3cmKTsKLQotdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhK
U09OKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIGNvbnN0IFN0cmluZyYpOwotdm9pZCBmdWxmaWxs
UHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBBcnJheUJ1ZmZl
ciopOwotdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0
UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBjcmVh
dGVSZWplY3RlZFByb21pc2VXaXRoVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgU3Ry
aW5nJik7Ci0KLXVzaW5nIFByb21pc2VGdW5jdGlvbiA9IHZvaWQoSlNDOjpFeGVjU3RhdGUmLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKLQotZW51bSBjbGFzcyBQcm9taXNlRXhlY3V0aW9uU2Nv
cGUgeyBXaW5kb3dPbmx5LCBXaW5kb3dPcldvcmtlciB9OwotCi10ZW1wbGF0ZTxQcm9taXNlRnVu
Y3Rpb24gcHJvbWlzZUZ1bmN0aW9uLCBQcm9taXNlRXhlY3V0aW9uU2NvcGUgZXhlY3V0aW9uU2Nv
cGU+Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlKQotewotICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKLSAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0KLSAgICBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBKU0M6OkpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNl
RGVmZXJyZWQgPSBKU0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCAmZ2xvYmFs
T2JqZWN0KTsKLQotICAgIC8vIHByb21pc2VEZWZlcnJlZCBjYW4gYmUgbnVsbCB3aGVuIHRlcm1p
bmF0aW5nIGEgV29ya2VyIGFicnVwdGx5LgotICAgIGlmIChleGVjdXRpb25TY29wZSA9PSBQcm9t
aXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyICYmICFwcm9taXNlRGVmZXJyZWQpCi0g
ICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7Ci0KLSAgICBwcm9taXNlRnVuY3Rpb24o
c3RhdGUsIERlZmVycmVkUHJvbWlzZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgKnByb21pc2VEZWZl
cnJlZCkpOwotCi0gICAgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShzdGF0ZSwgZ2xv
YmFsT2JqZWN0LCAqcHJvbWlzZURlZmVycmVkKTsKLSAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlv
bigpOwotICAgIHJldHVybiBwcm9taXNlRGVmZXJyZWQtPnByb21pc2UoKTsKLX0KLQotdXNpbmcg
QmluZGluZ1Byb21pc2VGdW5jdGlvbiA9IEpTQzo6RW5jb2RlZEpTVmFsdWUoSlNDOjpFeGVjU3Rh
dGUqLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKLXRlbXBsYXRlPEJpbmRpbmdQcm9taXNlRnVu
Y3Rpb24gYmluZGluZ0Z1bmN0aW9uPgotaW5saW5lIHZvaWQgYmluZGluZ1Byb21pc2VGdW5jdGlv
bkFkYXB0ZXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCi17Ci0gICAgYmluZGluZ0Z1bmN0aW9uKCZzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSk7
Ci19Ci0KLXRlbXBsYXRlPEJpbmRpbmdQcm9taXNlRnVuY3Rpb24gYmluZGluZ1Byb21pc2VGdW5j
dGlvbiwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIGV4ZWN1dGlvblNjb3BlPgotaW5saW5lIEpTQzo6
SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAg
ICByZXR1cm4gY2FsbFByb21pc2VGdW5jdGlvbjxiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRl
cjxiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uPiwgZXhlY3V0aW9uU2NvcGU+KHN0YXRlKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5NWEyZDI5ZWZkM2ZkN2Fk
YjMyNTgwMWJiNDY1YmZhNmZjZTM3YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAKQEAgLTAsMCArMSwyMTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNET01Q
cm9taXNlRGVmZXJyZWQuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRl
ICJKU0RPTUVycm9yLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlIDxidWls
dGlucy9CdWlsdGluTmFtZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlvbi5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNPTk9iamVjdC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitKU0M6OkpTVmFsdWUgRGVmZXJyZWRQcm9taXNlOjpwcm9taXNlKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgcmV0dXJuIGRlZmVycmVkKCktPnByb21pc2Uo
KTsKK30KKwordm9pZCBEZWZlcnJlZFByb21pc2U6OmNhbGxGdW5jdGlvbihFeGVjU3RhdGUmIGV4
ZWMsIEpTVmFsdWUgZnVuY3Rpb24sIEpTVmFsdWUgcmVzb2x1dGlvbikKK3sKKyAgICBpZiAoIWNh
bkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENhbGxEYXRhIGNhbGxE
YXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxE
YXRhKTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworCisgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQocmVzb2x1
dGlvbik7CisKKyAgICBjYWxsKCZleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBq
c1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOworCisgICAgY2xlYXIoKTsKK30KKwordm9pZCBEZWZl
cnJlZFByb21pc2U6OnJlamVjdCgpCit7CisgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKKyAgICBBU1NFUlQobV9nbG9iYWxP
YmplY3QpOworICAgIGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCZzdGF0ZSk7CisgICAgcmVqZWN0KHN0YXRl
LCBKU0M6OmpzVW5kZWZpbmVkKCkpOworfQorCit2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0
KHN0ZDo6bnVsbHB0cl90KQoreworICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmc3RhdGUpOworICAgIHJlamVjdChzdGF0ZSwgSlND
Ojpqc051bGwoKSk7Cit9CisKK3ZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoRXhjZXB0aW9u
JiYgZXhjZXB0aW9uKQoreworICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmc3RhdGUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoc3RhdGUudm0oKSk7CisgICAgYXV0byBlcnJvciA9IGNyZWF0ZURPTUV4
Y2VwdGlvbihzdGF0ZSwgV1RGTW92ZShleGNlcHRpb24pKTsKKyAgICBpZiAoVU5MSUtFTFkoc2Nv
cGUuZXhjZXB0aW9uKCkpKSB7CisgICAgICAgIEFTU0VSVChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24oc3RhdGUudm0oKSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHJlamVjdChzdGF0ZSwgZXJyb3IpOworfQorCit2b2lkIERlZmVycmVk
UHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbkNvZGUgZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3sKKyAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJU
KGRlZmVycmVkKCkpOworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CisgICAgYXV0byYgc3Rh
dGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoJnN0YXRlKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHN0YXRlLnZtKCkpOworICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRl
LCBlYywgbWVzc2FnZSk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewor
ICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHN0YXRlLnZtKCks
IHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIHJl
amVjdChzdGF0ZSwgZXJyb3IpOworfQorCit2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KGNv
bnN0IEpTQzo6UHJpdmF0ZU5hbWUmIHByaXZhdGVOYW1lKQoreworICAgIGlmIChpc1N1c3BlbmRl
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgQVNT
RVJUKG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUgPSBtX2dsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihzdGF0
ZSk7CisgICAgcmVqZWN0KCpzdGF0ZSwgSlNDOjpTeW1ib2w6OmNyZWF0ZShzdGF0ZS0+dm0oKSwg
cHJpdmF0ZU5hbWUudWlkKCkpKTsKK30KKwordm9pZCByZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlv
bklmQW55KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgSlNQcm9taXNlRGVmZXJyZWQmIHByb21pc2VEZWZlcnJlZCkKK3sKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
KworICAgIGlmIChMSUtFTFkoIXNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgSlNWYWx1ZSBlcnJvciA9IHNjb3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpOworICAgIHNj
b3BlLmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICBEZWZlcnJlZFByb21pc2U6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIHByb21pc2VEZWZlcnJlZCktPnJlamVjdDxJRExBbnk+KGVycm9yKTsKK30KKwor
UmVmPERlZmVycmVkUHJvbWlzZT4gY3JlYXRlRGVmZXJyZWRQcm9taXNlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNET01XaW5kb3cmIGRvbVdpbmRvdykKK3sKKyAgICBKU0M6OkpTUHJvbWlzZURl
ZmVycmVkKiBkZWZlcnJlZCA9IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUs
ICZkb21XaW5kb3cpOworICAgIC8vIGRlZmVycmVkIGNhbiBvbmx5IGJlIG51bGwgaW4gd29ya2Vy
cy4KKyAgICBBU1NFUlQoZGVmZXJyZWQpOworICAgIHJldHVybiBEZWZlcnJlZFByb21pc2U6OmNy
ZWF0ZShkb21XaW5kb3csICpkZWZlcnJlZCk7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgY3Jl
YXRlUmVqZWN0ZWRQcm9taXNlV2l0aFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIEFTU0VSVChzdGF0ZS5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpzdGF0ZS5sZXhpY2FsR2xv
YmFsT2JqZWN0KCk7CisKKyAgICBhdXRvIHByb21pc2VDb25zdHJ1Y3RvciA9IGdsb2JhbE9iamVj
dC5wcm9taXNlQ29uc3RydWN0b3IoKTsKKyAgICBhdXRvIHJlamVjdEZ1bmN0aW9uID0gcHJvbWlz
ZUNvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBzdGF0ZS52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOworICAgIGF1dG8gcmVqZWN0aW9uVmFsdWUg
PSBjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCBlcnJvck1lc3NhZ2UpOworCisgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CisgICAgYXV0byBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHJlamVjdEZ1bmN0aW9u
LCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKwor
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5k
KHJlamVjdGlvblZhbHVlKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbCgmc3Rh
dGUsIHJlamVjdEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHByb21pc2VDb25zdHJ1Y3Rv
ciwgYXJndW1lbnRzKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIHBhcnNlQXNK
U09OKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBkYXRhKQoreworICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2soc3RhdGUpOworICAgIHJldHVybiBKU0M6OkpTT05QYXJzZShz
dGF0ZSwgZGF0YSk7Cit9CisKK3ZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgZGF0YSkKK3sKKyAgICBKU0M6OkpT
VmFsdWUgdmFsdWUgPSBwYXJzZUFzSlNPTihwcm9taXNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpLCBkYXRhKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBwcm9taXNlLT5yZWplY3Qo
U1lOVEFYX0VSUik7CisgICAgZWxzZQorICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4o
dmFsdWUpOworfQorCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyKQoreworICAg
IGlmICghYXJyYXlCdWZmZXIpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0PElETEFueT4oY3Jl
YXRlT3V0T2ZNZW1vcnlFcnJvcihwcm9taXNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRl
cmZhY2U8QXJyYXlCdWZmZXI+PigqYXJyYXlCdWZmZXIpOworfQorCit2b2lkIGZ1bGZpbGxQcm9t
aXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJh
eUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpLCBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIGxl
bmd0aCkuZ2V0KCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlRGVmZXJyZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjEzY2FjN2IyOGI0YzdlZmE5MjRk
ZDY5OTMxNzcyNzE5NjBmOGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaApAQCAtMCwwICsxLDI1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCisjaW5jbHVk
ZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1Byb21pc2VEZWZl
cnJlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERlZmVycmVkUHJvbWlzZSA6
IHB1YmxpYyBET01HdWFyZGVkPEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPERlZmVycmVkUHJvbWlzZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmIGRlZmVycmVkKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmZXJyZWRQcm9taXNlKGdsb2JhbE9iamVjdCwg
ZGVmZXJyZWQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBJRExUeXBlPgorICAgIHZv
aWQgcmVzb2x2ZSh0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IEFTU0VSVChkZWZlcnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKKyAg
ICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
OworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgICAgIHJlc29s
dmUoKmV4ZWMsIHRvSlM8SURMVHlwZT4oKmV4ZWMsICpnbG9iYWxPYmplY3QoKSwgc3RkOjpmb3J3
YXJkPHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGU+KHZhbHVlKSkpOworICAgIH0KKwor
ICAgIHZvaWQgcmVzb2x2ZSgpCisgICAgeworICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOworICAgICAgICBB
U1NFUlQoZ2xvYmFsT2JqZWN0KCkpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGds
b2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2tlcihleGVjKTsKKyAgICAgICAgcmVzb2x2ZSgqZXhlYywgSlNDOjpqc1VuZGVmaW5lZCgpKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBJRExUeXBlPgorICAgIHZvaWQgcmVzb2x2ZVdp
dGhOZXdseUNyZWF0ZWQodHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7
CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKTsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICBy
ZXNvbHZlKCpleGVjLCB0b0pTTmV3bHlDcmVhdGVkPElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2Jq
ZWN0KCksIHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1
ZSkpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBJRExUeXBlPgorICAgIHZvaWQgcmVq
ZWN0KHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCisgICAgeworICAgICAg
ICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJU
KGRlZmVycmVkKCkpOworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOworICAgICAgICBK
U0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAg
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICAgICAgcmVqZWN0KCpleGVj
LCB0b0pTPElETFR5cGU+KCpleGVjLCAqZ2xvYmFsT2JqZWN0KCksIHN0ZDo6Zm9yd2FyZDx0eXBl
bmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpKTsKKyAgICB9CisKKyAgICB2b2lk
IHJlamVjdCgpOworICAgIHZvaWQgcmVqZWN0KHN0ZDo6bnVsbHB0cl90KTsKKyAgICB2b2lkIHJl
amVjdChFeGNlcHRpb24mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWplY3QoRXhjZXB0
aW9uQ29kZSwgY29uc3QgU3RyaW5nJiA9IHsgfSk7CisgICAgdm9pZCByZWplY3QoY29uc3QgSlND
OjpQcml2YXRlTmFtZSYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+CisgICAg
dm9pZCByZXNvbHZlV2l0aENhbGxiYWNrKENhbGxiYWNrIGNhbGxiYWNrKQorICAgIHsKKyAgICAg
ICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VS
VChkZWZlcnJlZCgpKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAg
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgICAgIHJlc29sdmUoKmV4
ZWMsIGNhbGxiYWNrKCpleGVjLCAqZ2xvYmFsT2JqZWN0KCkpKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDYWxsYmFjaz4KKyAgICB2b2lkIHJlamVjdFdpdGhDYWxsYmFjayhDYWxs
YmFjayBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CisgICAgICAgIEFTU0VS
VChnbG9iYWxPYmplY3QoKSk7CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2Vy
KGV4ZWMpOworICAgICAgICByZWplY3QoKmV4ZWMsIGNhbGxiYWNrKCpleGVjLCAqZ2xvYmFsT2Jq
ZWN0KCkpKTsKKyAgICB9CisKKyAgICBKU0M6OkpTVmFsdWUgcHJvbWlzZSgpIGNvbnN0OworCitw
cml2YXRlOgorICAgIERlZmVycmVkUHJvbWlzZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJiBkZWZlcnJlZCkKKyAgICAgICAgOiBET01HdWFy
ZGVkPEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ+KGdsb2JhbE9iamVjdCwgZGVmZXJyZWQpCisgICAg
eworICAgIH0KKworICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkKCkgY29uc3Qg
eyByZXR1cm4gZ3VhcmRlZCgpOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbGxGdW5j
dGlvbihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgSlNDOjpKU1ZhbHVl
IHJlc29sdXRpb24pOworICAgIHZvaWQgcmVzb2x2ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwgZGVmZXJyZWQoKS0+
cmVzb2x2ZSgpLCByZXNvbHV0aW9uKTsgfQorICAgIHZvaWQgcmVqZWN0KEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRlLCBk
ZWZlcnJlZCgpLT5yZWplY3QoKSwgcmVzb2x1dGlvbik7IH0KK307CisKK2NsYXNzIERPTVByb21p
c2VEZWZlcnJlZEJhc2UgeworcHVibGljOgorICAgIERPTVByb21pc2VEZWZlcnJlZEJhc2UoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBnZW5lcmljUHJvbWlzZSkKKyAgICAgICAgOiBtX3Byb21pc2VE
ZWZlcnJlZChXVEZNb3ZlKGdlbmVyaWNQcm9taXNlKSkKKyAgICB7CisgICAgfQorCisgICAgRE9N
UHJvbWlzZURlZmVycmVkQmFzZShET01Qcm9taXNlRGVmZXJyZWRCYXNlJiYgcHJvbWlzZSkKKyAg
ICAgICAgOiBtX3Byb21pc2VEZWZlcnJlZChXVEZNb3ZlKHByb21pc2UubV9wcm9taXNlRGVmZXJy
ZWQpKQorICAgIHsKKyAgICB9CisKKyAgICBET01Qcm9taXNlRGVmZXJyZWRCYXNlKGNvbnN0IERP
TVByb21pc2VEZWZlcnJlZEJhc2UmIG90aGVyKQorICAgICAgICA6IG1fcHJvbWlzZURlZmVycmVk
KG90aGVyLm1fcHJvbWlzZURlZmVycmVkLmNvcHlSZWYoKSkKKyAgICB7CisgICAgfQorCisgICAg
RE9NUHJvbWlzZURlZmVycmVkQmFzZSYgb3BlcmF0b3I9KGNvbnN0IERPTVByb21pc2VEZWZlcnJl
ZEJhc2UmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQgPSBvdGhlci5t
X3Byb21pc2VEZWZlcnJlZC5jb3B5UmVmKCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKKyAgICBET01Qcm9taXNlRGVmZXJyZWRCYXNlJiBvcGVyYXRvcj0oRE9NUHJvbWlzZURlZmVy
cmVkQmFzZSYmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQgPSBXVEZN
b3ZlKG90aGVyLm1fcHJvbWlzZURlZmVycmVkKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKworICAgIHZvaWQgcmVqZWN0KCkKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVk
LT5yZWplY3QoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFcnJvclR5cGU+
IAorICAgIHZvaWQgcmVqZWN0KEVycm9yVHlwZSYmLi4uIGVycm9yKQorICAgIHsKKyAgICAgICAg
bV9wcm9taXNlRGVmZXJyZWQtPnJlamVjdChzdGQ6OmZvcndhcmQ8RXJyb3JUeXBlPihlcnJvciku
Li4pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CisgICAgdm9pZCBy
ZWplY3RUeXBlKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCisgICAgewor
ICAgICAgICBtX3Byb21pc2VEZWZlcnJlZC0+cmVqZWN0PElETFR5cGU+KHN0ZDo6Zm9yd2FyZDx0
eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlPih2YWx1ZSkpOworICAgIH0KKworICAgIEpT
Qzo6SlNWYWx1ZSBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlRGVmZXJyZWQtPnBy
b21pc2UoKTsgfTsKKworcHJvdGVjdGVkOgorICAgIFJlZjxEZWZlcnJlZFByb21pc2U+IG1fcHJv
bWlzZURlZmVycmVkOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gCitjbGFzcyBE
T01Qcm9taXNlRGVmZXJyZWQgOiBwdWJsaWMgRE9NUHJvbWlzZURlZmVycmVkQmFzZSB7CitwdWJs
aWM6CisgICAgdXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6RE9NUHJvbWlzZURlZmVycmVk
QmFzZTsKKyAgICB1c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpvcGVyYXRvcj07CisgICAg
dXNpbmcgRE9NUHJvbWlzZURlZmVycmVkQmFzZTo6cHJvbWlzZTsKKyAgICB1c2luZyBET01Qcm9t
aXNlRGVmZXJyZWRCYXNlOjpyZWplY3Q7CisKKyAgICB2b2lkIHJlc29sdmUodHlwZW5hbWUgSURM
VHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1ZSkKKyAgICB7IAorICAgICAgICBtX3Byb21pc2VEZWZl
cnJlZC0+cmVzb2x2ZTxJRExUeXBlPihzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFy
YW1ldGVyVHlwZT4odmFsdWUpKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IGNsYXNzIERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiA6IHB1YmxpYyBET01Qcm9taXNlRGVmZXJyZWRCYXNlIHsKK3B1
YmxpYzoKKyAgICB1c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpET01Qcm9taXNlRGVmZXJy
ZWRCYXNlOworICAgIHVzaW5nIERPTVByb21pc2VEZWZlcnJlZEJhc2U6Om9wZXJhdG9yPTsKKyAg
ICB1c2luZyBET01Qcm9taXNlRGVmZXJyZWRCYXNlOjpwcm9taXNlOworICAgIHVzaW5nIERPTVBy
b21pc2VEZWZlcnJlZEJhc2U6OnJlamVjdDsKKworICAgIHZvaWQgcmVzb2x2ZSgpCisgICAgeyAK
KyAgICAgICAgbV9wcm9taXNlRGVmZXJyZWQtPnJlc29sdmUoKTsKKyAgICB9Cit9OworCisKK1Jl
ZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSYs
IEpTRE9NV2luZG93Jik7CisKK3ZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmLCBjb25zdCBTdHJpbmcmKTsKK3ZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJy
YXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgQXJyYXlCdWZmZXIqKTsKK3ZvaWQgZnVs
ZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3Qg
dm9pZCosIHNpemVfdCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlamVjdFByb21pc2VXaXRoRXhj
ZXB0aW9uSWZBbnkoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNQ
cm9taXNlRGVmZXJyZWQmKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVqZWN0ZWRQcm9t
aXNlV2l0aFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYpOworCit1c2lu
ZyBQcm9taXNlRnVuY3Rpb24gPSB2b2lkKEpTQzo6RXhlY1N0YXRlJiwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJik7CisKK2VudW0gY2xhc3MgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIHsgV2luZG93T25s
eSwgV2luZG93T3JXb3JrZXIgfTsKKwordGVtcGxhdGU8UHJvbWlzZUZ1bmN0aW9uIHByb21pc2VG
dW5jdGlvbiwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIGV4ZWN1dGlvblNjb3BlPgoraW5saW5lIEpT
Qzo6SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3sK
KyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCA9
ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmpl
Y3QoKSk7CisgICAgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0gSlND
OjpKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgJmdsb2JhbE9iamVjdCk7CisKKyAg
ICAvLyBwcm9taXNlRGVmZXJyZWQgY2FuIGJlIG51bGwgd2hlbiB0ZXJtaW5hdGluZyBhIFdvcmtl
ciBhYnJ1cHRseS4KKyAgICBpZiAoZXhlY3V0aW9uU2NvcGUgPT0gUHJvbWlzZUV4ZWN1dGlvblNj
b3BlOjpXaW5kb3dPcldvcmtlciAmJiAhcHJvbWlzZURlZmVycmVkKQorICAgICAgICByZXR1cm4g
SlNDOjpqc1VuZGVmaW5lZCgpOworCisgICAgcHJvbWlzZUZ1bmN0aW9uKHN0YXRlLCBEZWZlcnJl
ZFByb21pc2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsICpwcm9taXNlRGVmZXJyZWQpKTsKKworICAg
IHJlamVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoc3RhdGUsIGdsb2JhbE9iamVjdCwgKnBy
b21pc2VEZWZlcnJlZCk7CisgICAgQVNTRVJUX1VOVVNFRChzY29wZSwgIXNjb3BlLmV4Y2VwdGlv
bigpKTsKKyAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK3VzaW5n
IEJpbmRpbmdQcm9taXNlRnVuY3Rpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6RXhlY1N0
YXRlKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7Cit0ZW1wbGF0ZTxCaW5kaW5nUHJvbWlzZUZ1
bmN0aW9uIGJpbmRpbmdGdW5jdGlvbj4KK2lubGluZSB2b2lkIGJpbmRpbmdQcm9taXNlRnVuY3Rp
b25BZGFwdGVyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQoreworICAgIGJpbmRpbmdGdW5jdGlvbigmc3RhdGUsIFdURk1vdmUocHJvbWlzZSkp
OworfQorCit0ZW1wbGF0ZTxCaW5kaW5nUHJvbWlzZUZ1bmN0aW9uIGJpbmRpbmdQcm9taXNlRnVu
Y3Rpb24sIFByb21pc2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZT4KK2lubGluZSBKU0M6
OkpTVmFsdWUgY2FsbFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCit7Cisg
ICAgcmV0dXJuIGNhbGxQcm9taXNlRnVuY3Rpb248YmluZGluZ1Byb21pc2VGdW5jdGlvbkFkYXB0
ZXI8YmluZGluZ1Byb21pc2VGdW5jdGlvbj4sIGV4ZWN1dGlvblNjb3BlPihzdGF0ZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAppbmRleCBlZjM3YWVhYWQ4MDRhY2I0ZGI2MzQ0
MjE3YjgwNjY4YmYzNjBhMjUwLi40MTBkZTc2NDMyZDI4MzkyNTQzM2YyZDA3MmIwOWRiOTc2NGYw
NzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0
b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlw
dG9DdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSlNDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiSlNDcnlwdG9LZXkuaCIKICNpbmNsdWRlICJKU0Ny
eXB0b0tleVBhaXIuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgogI2luY2x1ZGUg
IkpTRWNLZXlQYXJhbXMuaCIKICNpbmNsdWRlICJKU0VjZGhLZXlEZXJpdmVQYXJhbXMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BVQ29tbWFuZEJ1ZmZl
ckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVUNvbW1hbmRC
dWZmZXJDdXN0b20uY3BwCmluZGV4IDJmYjNmMGI5MjI2MjJkNDZhOTIyZjdiNjJiOTY4ZjhjZWU4
ZDg0ZTIuLjkzMGM0ZmQzYTdmMWU0ZDhmODM0ZTcyNGU5NjQ0ODRiMjg0M2U1MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BVQ29tbWFuZEJ1ZmZlckN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVDb21tYW5kQnVm
ZmVyQ3VzdG9tLmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShXRUJHUFUpCiAKICNp
bmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXIu
aCIKICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCmlu
ZGV4IDYzOGIzN2U0YWM1MWVmZjhmY2Q2Y2JkYWIzYzIwOWQzZmZmMWFiNjYuLjRjYjNlMmM1ZTkw
MzM4Y2U3ZWNjZGU2MjhkNGI3OTZhMDc1ZWI2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAKICNpbmNsdWRlICJKU0NyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0suaCIKICNpbmNsdWRlICJKU0NyeXB0b09wZXJhdGlvbkRh
dGEuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VE
ZWZlcnJlZC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9F
cnJvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFkYmI0N2JkZGJiZmUzZWUzMDgwZjNiZTk2NjZiNDY4ZmZjMWM1NzEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50LmgiCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNs
dWRlICJKU0RPTUJpbmRpbmdDYWxsZXIuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTw+IFRlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ6OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dDo6SW5pdD4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIGJvb2wgaXNOdWxsT3JVbmRlZmluZWQgPSB2YWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpOworICAgIGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8gbnVsbHB0ciA6IHZh
bHVlLmdldE9iamVjdCgpOworICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JVbmRlZmluZWQgJiYg
IW9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgaWYgKFVOTElLRUxZKG9iamVjdCAmJiBv
YmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkgeworICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAg
ICBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IHJlc3VsdDsKKyAgICBKU1ZhbHVlIGJ1
YmJsZXNWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+
Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJidWJibGVzIikpOwor
ICAgIGlmICghYnViYmxlc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmJ1
YmJsZXMgPSBjb252ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBidWJibGVzVmFsdWUpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlCisgICAg
ICAgIHJlc3VsdC5idWJibGVzID0gZmFsc2U7CisgICAgSlNWYWx1ZSBjYW5jZWxhYmxlVmFsdWUg
PSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiY2FuY2VsYWJsZSIpKTsKKyAgICBpZiAo
IWNhbmNlbGFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5jYW5jZWxh
YmxlID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgY2FuY2VsYWJsZVZhbHVlKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0gZWxzZQorICAg
ICAgICByZXN1bHQuY2FuY2VsYWJsZSA9IGZhbHNlOworICAgIEpTVmFsdWUgY29tcG9zZWRWYWx1
ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJjb21wb3NlZCIpKTsKKyAgICBpZiAo
IWNvbXBvc2VkVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuY29tcG9zZWQg
PSBjb252ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBjb21wb3NlZFZhbHVlKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0gZWxzZQorICAgICAgICBy
ZXN1bHQuY29tcG9zZWQgPSBmYWxzZTsKKyAgICBKU1ZhbHVlIHByb21pc2VWYWx1ZSA9IGlzTnVs
bE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJwcm9taXNlIikpOworICAgIGlmICghcHJvbWlzZVZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnByb21pc2UgPSBjb252ZXJ0PElE
TFByb21pc2U8SURMQW55Pj4oc3RhdGUsIHByb21pc2VWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICB0aHJv
d1JlcXVpcmVkTWVtYmVyVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCAicHJvbWlzZSIsICJU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50SW5pdCIsICJQcm9taXNlIik7CisgICAgICAgIHJldHVy
biB7IH07CisgICAgfQorICAgIEpTVmFsdWUgcmVhc29uVmFsdWUgPSBpc051bGxPclVuZGVmaW5l
ZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnN0YXRlLCAicmVhc29uIikpOworICAgIGlmICghcmVhc29uVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgeworICAgICAgICByZXN1bHQucmVhc29uID0gY29udmVydDxJRExBbnk+KHN0YXRlLCBy
ZWFzb25WYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0LnJlYXNvbiA9IGpzVW5kZWZpbmVkKCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2UoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisKK2NsYXNzIEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAg
c3RhdGljIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJv
dG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAg
ICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBK
U0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCit1c2luZyBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50PjsKKwordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQo
Y2FzdGVkVGhpcyk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAy
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIHR5cGUgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAg
YXV0byBldmVudEluaXREaWN0ID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OkluaXQ+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KyAgICBhdXRvIG9iamVjdCA9IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmNyZWF0ZSgqc3Rh
dGUsIFdURk1vdmUodHlwZSksIFdURk1vdmUoZXZlbnRJbml0RGljdCkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1v
dmUob2JqZWN0KSkpOworfQorCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNF
dmVudDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRP
bmx5IHwgRG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUg
Zm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29u
c3RydWN0b3IiLCBEb250RW51bSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9IH0s
CisgICAgeyAicHJvbWlzZSIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJyZWFzb24iLCBS
ZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudFJlYXNvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwor
fQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpzX2luZm8g
PSB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpIH07CisKK0pTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudDo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudD4mJiBpbXBsKQorICAgIDogSlNFdmVudChzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworfQorCitK
U09iamVjdCogSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpjcmVhdGVQcm90b3R5cGUoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVj
dCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sICZnbG9iYWxPYmplY3QsIEpTRXZlbnQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkp
OworfQorCitKU09iamVjdCogSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Ojpwcm90b3R5cGUo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBn
ZXRET01Qcm90b3R5cGU8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD46OmNhc3RGb3JBdHRy
aWJ1dGUoRXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAg
IHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqPihz
dGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyKEV4ZWNT
dGF0ZSYsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNl
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dD46OmF0dHJpYnV0ZTxqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJvbWlzZT4oc3RhdGUsIHRoaXNWYWx1ZSwg
InByb21pc2UiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudFByb21pc2VHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMUHJvbWlzZTxJRExBbnk+PihpbXBsLnByb21pc2UoKSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudFJlYXNvbkdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQm
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50UmVhc29uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudD46OmF0dHJpYnV0ZTxqc1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRSZWFzb25HZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJyZWFzb24iKTsKK30KKworc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbkdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmIHRoaXNPYmpl
Y3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExBbnk+KGltcGwucmVh
c29uKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKK30K
KworYm9vbCBzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBkb21PYmplY3Qt
PnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rv
ciwgdmFsdWUpOworfQorCitKU1ZhbHVlIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFU
Rk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBl
eHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4g
dm9pZCogX1pUVk43V2ViQ29yZTI1VGVzdFByb21pc2VSZWplY3Rpb25FdmVudEVbXTsgfQorI2Vu
ZGlmCisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudD4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQor
ICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PihpbXBsLnB0cigpKSk7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRh
YmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRAV2ViQ29yZUBANkJAIikpOworI2Vsc2UKKyAgICB2b2lk
KiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTI1VGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudEVbMl07CisjaWYgQ09NUElMRVIoQ0xBTkcpCisgICAgLy8gSWYgdGhpcyBmYWls
cyBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlv
dSBuZWVkIHRvIGFkZCB0aGUKKyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJp
YnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0KF9faXNf
cG9seW1vcnBoaWMoVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCksICJUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50IGlzIG5vdCBwb2x5bW9ycGhpYyIpOworI2VuZGlmCisjZW5kaWYKKyAgICAvLyBJ
ZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVl
IGJ1Zywgb3IKKyAgICAvLyBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IGhhcyBzdWJjbGFzc2Vz
LiBJZiBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBh
c3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50IHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8g
YnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVy
ZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50
ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVX
cmFwcGVyPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYg
aW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30K
KworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDcxMDk0YTEwMzU2MWZmMzU5YWE1MTg3ZjgzZmQ5MDcyMTkxNDNkNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQuaApAQCAtMCwwICsxLDczIEBACisvKgorICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUg
aGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZ
IQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCisjaW5jbHVk
ZSAiSlNFdmVudC5oIgorI2luY2x1ZGUgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQg
OiBwdWJsaWMgSlNFdmVudCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRXZlbnQ7Cisg
ICAgdXNpbmcgRE9NV3JhcHBlZCA9IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ7CisgICAgc3Rh
dGljIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50PiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Cisg
ICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNy
ZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwor
CisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6OkpTVHlwZShKU0V2ZW50VHlwZSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYg
d3JhcHBlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudCY+KEJhc2U6OndyYXBwZWQoKSk7CisgICAgfQorcHJvdGVjdGVk
OgorICAgIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudChKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+JiYpOworCisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dCogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgKmltcGwp
IDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50PiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50PiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlD
cmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6
OmpzTnVsbCgpOyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRy
YWl0czxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNz
ID0gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVy
blR5cGUgPSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KjsKK307Cit0ZW1wbGF0ZTw+IFRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudDo6SW5pdD4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOworCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Lmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNTZhOTQ5MWFkN2E1MTE3YzU4YTE3YTFmODg4NzUwZWFmYjg3YzkxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uc3RydWN0b3IoRE9N
U3RyaW5nIHR5cGUsIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRJbml0IGV2ZW50SW5pdERpY3Qp
LAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0U3RhdGUsCisgICAgRXhwb3NlZD0oV2lu
ZG93LFdvcmtlciksCitdIGludGVyZmFjZSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IDogRXZl
bnQgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPGFueT4gcHJvbWlzZTsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYW55IHJlYXNvbjsKK307CisKK2RpY3Rpb25hcnkgVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudEluaXQgOiBFdmVudEluaXQgeworICAgIHJlcXVpcmVkIFByb21pc2U8
YW55PiBwcm9taXNlOworICAgIGFueSByZWFzb247Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRl
eCAwYjA2Y2U5NzcyODNiNzZkMzE1NTFlYjg5OGUyNmJkNDE4OWViZTUyLi44MTM0MDNhZTc4ZDIy
ZTM5MGE2OTc2MGVmOTQ3NjM2YTQ2Y2UyYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtMjcs
NyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2UuaCIKICNpbmNsdWRlICJDU1NQcm9w
ZXJ0eU5hbWVzLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Q
cm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgRm9udEZhY2UgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxGb250RmFjZT4sIHByaXZhdGUgQ1NTRm9udEZhY2U6OkNsaWVudAog
ICAgIGVudW0gY2xhc3MgTG9hZFN0YXR1cyB7IFVubG9hZGVkLCBMb2FkaW5nLCBMb2FkZWQsIEVy
cm9yIH07CiAgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsKIAotICAgIHVzaW5nIFByb21p
c2UgPSBET01Qcm9taXNlPElETEludGVyZmFjZTxGb250RmFjZT4+OworICAgIHVzaW5nIFByb21p
c2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZvbnRGYWNlPj47CiAgICAgc3Rk
OjpvcHRpb25hbDxQcm9taXNlPiYgcHJvbWlzZSgpIHsgcmV0dXJuIG1fcHJvbWlzZTsgfQogICAg
IHZvaWQgcmVnaXN0ZXJMb2FkZWQoUHJvbWlzZSYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQu
aAppbmRleCBmYThmZTJhMWM4MzkwM2UyMzVkOGNiZjQ5OGZkY2QyYjNhNzg3ZGE2Li5lODRkMDk1
ZWNjYmRhYjAwNzg2ODAxNGIyMzg2MjIwNDJjZTEzOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VT
ZXQuaApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkNTU0ZvbnRGYWNlU2V0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNs
dWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDE0ICs0NiwxNCBAQCBjbGFzcyBGb250RmFj
ZVNldCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlU2V0PiwgcHJpdmF0ZSBDU1NG
b250RmFjZVNldAogICAgIGJvb2wgcmVtb3ZlKEZvbnRGYWNlJik7CiAgICAgdm9pZCBjbGVhcigp
OwogCi0gICAgdXNpbmcgTG9hZFByb21pc2UgPSBET01Qcm9taXNlPElETFNlcXVlbmNlPElETElu
dGVyZmFjZTxGb250RmFjZT4+PjsKKyAgICB1c2luZyBMb2FkUHJvbWlzZSA9IERPTVByb21pc2VE
ZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8Rm9udEZhY2U+Pj47CiAgICAgdm9pZCBs
b2FkKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBMb2FkUHJvbWlzZSYm
KTsKICAgICBFeGNlcHRpb25Pcjxib29sPiBjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0
IFN0cmluZyYgdGV4dCk7CiAKICAgICBlbnVtIGNsYXNzIExvYWRTdGF0dXMgeyBMb2FkaW5nLCBM
b2FkZWQgfTsKICAgICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCi0gICAgdXNpbmcgUmVh
ZHlQcm9taXNlID0gRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8Rm9udEZhY2VTZXQ+PjsKKyAgICB1
c2luZyBSZWFkeVByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZvbnRG
YWNlU2V0Pj47CiAgICAgdm9pZCByZWdpc3RlclJlYWR5KFJlYWR5UHJvbWlzZSYmKTsKIAogICAg
IENTU0ZvbnRGYWNlU2V0JiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKaW5kZXggMTEyMDk3YjFjMjgzZjhj
MDg0NDdmMWQwYWMzMTVmZmM2ZTNhMWIyYy4uZWZkZmMyNDYyNjg2YmRlNjc1NjRhZDRiZmE1Mjgw
YmI5ODNkMDYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnku
aApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUXVh
bGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Nl
dEZvclNjb3BlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVj
dGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmgK
aW5kZXggMGZiMWE0YzBhMDYxOTdkNDNjMDA2ZmJjNzMwNDc3NGZiMzEzN2U3Mi4uMTY0Mjc1NzYy
MDY5OWUxNzExNGE4MTdkOTZhZTYyY2I1MmRhY2JlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Byb21pc2VSZWplY3Rpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
cm9taXNlUmVqZWN0aW9uRXZlbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgogI2luY2x1ZGUg
PGhlYXAvU3Ryb25nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzLDcgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGZpbmFsIDog
cHVibGljIEV2ZW50IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50SW5pdCB7Ci0g
ICAgICAgIEpTQzo6SlNWYWx1ZSBwcm9taXNlOworICAgICAgICBKU0M6OkpTUHJvbWlzZSogcHJv
bWlzZTsKICAgICAgICAgSlNDOjpKU1ZhbHVlIHJlYXNvbjsKICAgICB9OwogCkBAIC00NCw3ICs0
NSw3IEBAIGNsYXNzIFByb21pc2VSZWplY3Rpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7
CiAKICAgICB2aXJ0dWFsIH5Qcm9taXNlUmVqZWN0aW9uRXZlbnQoKTsKIAotICAgIEpTQzo6SlNW
YWx1ZSBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlLmdldCgpOyB9CisgICAgSlND
OjpKU1Byb21pc2UmIHByb21pc2UoKSBjb25zdCB7IHJldHVybiAqbV9wcm9taXNlLmdldCgpOyB9
CiAgICAgSlNDOjpKU1ZhbHVlIHJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uLmdldCgp
OyB9CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFByb21pc2VSZWplY3Rpb25FdmVudEludGVyZmFjZVR5cGU7IH0KQEAgLTUyLDcg
KzUzLDcgQEAgY2xhc3MgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50
IHsKIHByaXZhdGU6CiAgICAgUHJvbWlzZVJlamVjdGlvbkV2ZW50KEpTQzo6RXhlY1N0YXRlJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKLSAgICBKU0M6
OlN0cm9uZzxKU0M6OlVua25vd24+IG1fcHJvbWlzZTsKKyAgICBKU0M6OlN0cm9uZzxKU0M6OkpT
UHJvbWlzZT4gbV9wcm9taXNlOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gbV9yZWFz
b247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVqZWN0ZWRQcm9taXNl
VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5j
cHAKaW5kZXggMjMyYWJiODJmMDkxMTZlNjNhN2M2OGZlODkzNzkxZGU1M2UyMDM2Ny4uNjNlNTBl
MWVmNTRkN2U4MDUwZTFiNzQyYjMwMzI4NmM5M2UyNDI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcApAQCAtNTAsNDYgKzUwLDI5IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVq
ZWN0ZWRQcm9taXNlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWplY3RlZFByb21pc2Up
OworY2xhc3MgVW5oYW5kbGVkUHJvbWlzZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVW5o
YW5kbGVkUHJvbWlzZSk7CiBwdWJsaWM6Ci0gICAgUmVqZWN0ZWRQcm9taXNlKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBwcm9taXNlKQotICAgICAg
ICA6IG1fZ2xvYmFsT2JqZWN0KHZtLCAmZ2xvYmFsT2JqZWN0KQotICAgICAgICAsIG1fcHJvbWlz
ZSh2bSwgJnByb21pc2UpCi0gICAgewotICAgIH0KLQotICAgIFJlamVjdGVkUHJvbWlzZShSZWpl
Y3RlZFByb21pc2UmJikgPSBkZWZhdWx0OwotCi0gICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCgpCi0gICAgewotICAgICAgICByZXR1cm4gKm1fZ2xvYmFsT2JqZWN0LmdldCgpOwot
ICAgIH0KLQotICAgIEpTUHJvbWlzZSYgcHJvbWlzZSgpCisgICAgVW5oYW5kbGVkUHJvbWlzZShK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UmIHByb21pc2UsIFJlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2spCisgICAgICAgIDogbV9wcm9taXNlKERPTVByb21p
c2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHByb21pc2UpKQorICAgICAgICAsIG1fc3RhY2soV1RG
TW92ZShzdGFjaykpCiAgICAgewotICAgICAgICByZXR1cm4gKm1fcHJvbWlzZS5nZXQoKTsKICAg
ICB9CiAKLXByaXZhdGU6Ci0gICAgU3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9i
amVjdDsKLSAgICBTdHJvbmc8SlNQcm9taXNlPiBtX3Byb21pc2U7Ci19OworICAgIFVuaGFuZGxl
ZFByb21pc2UoVW5oYW5kbGVkUHJvbWlzZSYmKSA9IGRlZmF1bHQ7CiAKLWNsYXNzIFVuaGFuZGxl
ZFByb21pc2UgOiBwdWJsaWMgUmVqZWN0ZWRQcm9taXNlIHsKLXB1YmxpYzoKLSAgICBVbmhhbmRs
ZWRQcm9taXNlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9t
aXNlJiBwcm9taXNlLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrKQotICAgICAgICA6
IFJlamVjdGVkUHJvbWlzZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9taXNlKQotICAgICAgICAsIG1f
c3RhY2soV1RGTW92ZShzdGFjaykpCisgICAgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2soKQog
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RhY2suZ2V0KCk7CiAgICAgfQogCi0gICAgU2NyaXB0
Q2FsbFN0YWNrKiBjYWxsU3RhY2soKQorICAgIERPTVByb21pc2UmIHByb21pc2UoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fc3RhY2suZ2V0KCk7CisgICAgICAgIHJldHVybiBtX3Byb21pc2Uu
Z2V0KCk7CiAgICAgfQogCiBwcml2YXRlOgorICAgIFJlZjxET01Qcm9taXNlPiBtX3Byb21pc2U7
CiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gbV9zdGFjazsKIH07CiAKQEAgLTEyNSwxNyAr
MTA4LDE5IEBAIHZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlzZVJlamVjdGVkKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0CiB7CiAgICAgLy8gaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3RoZS1ob3N0cHJvbWlz
ZXJlamVjdGlvbnRyYWNrZXItaW1wbGVtZW50YXRpb24KIAotICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7Ci0gICAgSlNWYWx1ZSByZWFzb24gPSBwcm9taXNlLnJlc3VsdCh2bSk7Ci0gICAgbV9hYm91
dFRvQmVOb3RpZmllZFJlamVjdGVkUHJvbWlzZXMuYXBwZW5kKFVuaGFuZGxlZFByb21pc2UgeyB2
bSwgZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGcm9tUmVhc29u
KHN0YXRlLCByZWFzb24pIH0pOworICAgIEpTVmFsdWUgcmVhc29uID0gcHJvbWlzZS5yZXN1bHQo
c3RhdGUudm0oKSk7CisgICAgbV9hYm91dFRvQmVOb3RpZmllZFJlamVjdGVkUHJvbWlzZXMuYXBw
ZW5kKFVuaGFuZGxlZFByb21pc2UgeyBnbG9iYWxPYmplY3QsIHByb21pc2UsIGNyZWF0ZVNjcmlw
dENhbGxTdGFja0Zyb21SZWFzb24oc3RhdGUsIHJlYXNvbikgfSk7CiB9CiAKLXZvaWQgUmVqZWN0
ZWRQcm9taXNlVHJhY2tlcjo6cHJvbWlzZUhhbmRsZWQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlJiBwcm9taXNlKQordm9pZCBSZWpl
Y3RlZFByb21pc2VUcmFja2VyOjpwcm9taXNlSGFuZGxlZChFeGVjU3RhdGUmLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3RoZS1o
b3N0cHJvbWlzZXJlamVjdGlvbnRyYWNrZXItaW1wbGVtZW50YXRpb24KIAogICAgIGJvb2wgcmVt
b3ZlZCA9IG1fYWJvdXRUb0JlTm90aWZpZWRSZWplY3RlZFByb21pc2VzLnJlbW92ZUZpcnN0TWF0
Y2hpbmcoWyZdIChVbmhhbmRsZWRQcm9taXNlJiB1bmhhbmRsZWRQcm9taXNlKSB7Ci0gICAgICAg
IHJldHVybiAmdW5oYW5kbGVkUHJvbWlzZS5wcm9taXNlKCkgPT0gJnByb21pc2U7CisgICAgICAg
IGF1dG8mIGRvbVByb21pc2UgPSB1bmhhbmRsZWRQcm9taXNlLnByb21pc2UoKTsKKyAgICAgICAg
aWYgKGRvbVByb21pc2UuaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIGRvbVByb21pc2UucHJvbWlzZSgpID09ICZwcm9taXNlOwogICAgIH0p
OwogICAgIGlmIChyZW1vdmVkKQogICAgICAgICByZXR1cm47CkBAIC0xNDMsOSArMTI4LDcgQEAg
dm9pZCBSZWplY3RlZFByb21pc2VUcmFja2VyOjpwcm9taXNlSGFuZGxlZChFeGVjU3RhdGUmIHN0
YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYKICAgICBpZiAoIW1fb3V0c3RhbmRpbmdSZWplY3RlZFBy
b21pc2VzLnJlbW92ZSgmcHJvbWlzZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7Ci0KLSAgICBtX2NvbnRleHQucG9zdFRhc2soW3RoaXMsIHJlamVjdGVkUHJv
bWlzZSA9IFJlamVjdGVkUHJvbWlzZSB7IHZtLCBnbG9iYWxPYmplY3QsIHByb21pc2UgfV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX2NvbnRleHQucG9zdFRhc2so
W3RoaXMsIHJlamVjdGVkUHJvbWlzZSA9IERPTVByb21pc2U6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IHByb21pc2UpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICBy
ZXBvcnRSZWplY3Rpb25IYW5kbGVkKFdURk1vdmUocmVqZWN0ZWRQcm9taXNlKSk7CiAgICAgfSk7
CiB9CkBAIC0xNzEsOCArMTU0LDExIEBAIHZvaWQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjo6cmVw
b3J0VW5oYW5kbGVkUmVqZWN0aW9ucyhWZWN0b3I8VW5oYW5kbGVkUHJvbWlzZT4mCiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKICAgICBmb3IgKGF1dG8mIHVuaGFuZGxlZFByb21p
c2UgOiB1bmhhbmRsZWRQcm9taXNlcykgewotICAgICAgICBFeGVjU3RhdGUmIHN0YXRlID0gKnVu
aGFuZGxlZFByb21pc2UuZ2xvYmFsT2JqZWN0KCkuZ2xvYmFsRXhlYygpOwotICAgICAgICBhdXRv
JiBwcm9taXNlID0gdW5oYW5kbGVkUHJvbWlzZS5wcm9taXNlKCk7CisgICAgICAgIGF1dG8mIGRv
bVByb21pc2UgPSB1bmhhbmRsZWRQcm9taXNlLnByb21pc2UoKTsKKyAgICAgICAgaWYgKGRvbVBy
b21pc2UuaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRv
JiBzdGF0ZSA9ICpkb21Qcm9taXNlLmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAg
ICAgIGF1dG8mIHByb21pc2UgPSAqZG9tUHJvbWlzZS5wcm9taXNlKCk7CiAKICAgICAgICAgaWYg
KHByb21pc2UuaXNIYW5kbGVkKHZtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTg3LDI1
ICsxNzMsMjkgQEAgdm9pZCBSZWplY3RlZFByb21pc2VUcmFja2VyOjpyZXBvcnRVbmhhbmRsZWRS
ZWplY3Rpb25zKFZlY3RvcjxVbmhhbmRsZWRQcm9taXNlPiYKICAgICAgICAgYm9vbCBuZWVkc0Rl
ZmF1bHRBY3Rpb24gPSB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogCiAgICAgICAgIGlm
IChuZWVkc0RlZmF1bHRBY3Rpb24pCi0gICAgICAgICAgICBtX2NvbnRleHQucmVwb3J0VW5oYW5k
bGVkUHJvbWlzZVJlamVjdGlvbihzdGF0ZSwgdW5oYW5kbGVkUHJvbWlzZS5wcm9taXNlKCksIHVu
aGFuZGxlZFByb21pc2UuY2FsbFN0YWNrKCkpOworICAgICAgICAgICAgbV9jb250ZXh0LnJlcG9y
dFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24oc3RhdGUsIHByb21pc2UsIHVuaGFuZGxlZFByb21p
c2UuY2FsbFN0YWNrKCkpOwogCiAgICAgICAgIGlmICghcHJvbWlzZS5pc0hhbmRsZWQodm0pKQog
ICAgICAgICAgICAgbV9vdXRzdGFuZGluZ1JlamVjdGVkUHJvbWlzZXMuc2V0KCZwcm9taXNlLCAm
cHJvbWlzZSk7CiAgICAgfQogfQogCi12b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9y
dFJlamVjdGlvbkhhbmRsZWQoUmVqZWN0ZWRQcm9taXNlJiYgcmVqZWN0ZWRQcm9taXNlKQordm9p
ZCBSZWplY3RlZFByb21pc2VUcmFja2VyOjpyZXBvcnRSZWplY3Rpb25IYW5kbGVkKFJlZjxET01Q
cm9taXNlPiYmIHJlamVjdGVkUHJvbWlzZSkKIHsKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjdGhlLWhvc3Rwcm9taXNlcmVqZWN0
aW9udHJhY2tlci1pbXBsZW1lbnRhdGlvbgogCiAgICAgVk0mIHZtID0gbV9jb250ZXh0LnZtKCk7
CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICBFeGVjU3RhdGUmIHN0YXRl
ID0gKnJlamVjdGVkUHJvbWlzZS5nbG9iYWxPYmplY3QoKS5nbG9iYWxFeGVjKCk7CisgICAgaWYg
KHJlamVjdGVkUHJvbWlzZS0+aXNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byYgc3RhdGUgPSAqcmVqZWN0ZWRQcm9taXNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpOworICAgIGF1dG8mIHByb21pc2UgPSAqcmVqZWN0ZWRQcm9taXNlLT5wcm9taXNlKCk7CiAK
ICAgICBQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQgaW5pdGlhbGl6ZXI7Ci0gICAgaW5pdGlh
bGl6ZXIucHJvbWlzZSA9ICZyZWplY3RlZFByb21pc2UucHJvbWlzZSgpOwotICAgIGluaXRpYWxp
emVyLnJlYXNvbiA9IHJlamVjdGVkUHJvbWlzZS5wcm9taXNlKCkucmVzdWx0KHN0YXRlLnZtKCkp
OworICAgIGluaXRpYWxpemVyLnByb21pc2UgPSAmcHJvbWlzZTsKKyAgICBpbml0aWFsaXplci5y
ZWFzb24gPSBwcm9taXNlLnJlc3VsdCh2bSk7CiAKICAgICBhdXRvIGV2ZW50ID0gUHJvbWlzZVJl
amVjdGlvbkV2ZW50OjpjcmVhdGUoc3RhdGUsIGV2ZW50TmFtZXMoKS5yZWplY3Rpb25oYW5kbGVk
RXZlbnQsIGluaXRpYWxpemVyKTsKICAgICBhdXRvIHRhcmdldCA9IG1fY29udGV4dC5lcnJvckV2
ZW50VGFyZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVqZWN0ZWRQcm9t
aXNlVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIu
aAppbmRleCBkNThmZjVmOGVhZmQzOTJkMjA2MGI3M2Y4NjMzMjZmOTgyNWYxMTNkLi5hYzdjMTY0
ODk2MWMyMWIxMjdlNDIyMzY2ZDk3ODA5Y2M0YWM1ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SZWplY3RlZFByb21pc2VUcmFja2VyLmgKQEAgLTM4LDggKzM4LDggQEAgY2xhc3MgVk07CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRE9NUHJvbWlzZTsKIGNsYXNzIEpTRE9NR2xv
YmFsT2JqZWN0OwotY2xhc3MgUmVqZWN0ZWRQcm9taXNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFVuaGFuZGxlZFByb21pc2U7CiAKQEAgLTU2LDcgKzU2LDcgQEAgY2xh
c3MgUmVqZWN0ZWRQcm9taXNlVHJhY2tlciB7CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZXBvcnRV
bmhhbmRsZWRSZWplY3Rpb25zKFZlY3RvcjxVbmhhbmRsZWRQcm9taXNlPiYmKTsKLSAgICB2b2lk
IHJlcG9ydFJlamVjdGlvbkhhbmRsZWQoUmVqZWN0ZWRQcm9taXNlJiYpOworICAgIHZvaWQgcmVw
b3J0UmVqZWN0aW9uSGFuZGxlZChSZWY8RE9NUHJvbWlzZT4mJik7CiAKICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBtX2NvbnRleHQ7CiAgICAgVmVjdG9yPFVuaGFuZGxlZFByb21pc2U+IG1f
YWJvdXRUb0JlTm90aWZpZWRSZWplY3RlZFByb21pc2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYWEyYmY5N2EyNzQyYjlhMzYzNzJjN2IxNDFiY2I4MDk1
M2MwZTBhYy4uNmExOThhZjZlMTNkYzU1OWNkNzcyMWJkNTNmMTQ1Mjc0YzFlNzE4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAj
aW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50
LmgiCiAjaW5jbHVkZSAiSlNET01FcnJvci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNIVE1MTWVkaWFF
bGVtZW50LmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBA
IC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlUmVzb2x2
ZVBlbmRpbmdQbGF5UHJvbWlzZXMoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlamVjdFBl
bmRpbmdQbGF5UHJvbWlzZXMoRE9NRXJyb3ImIGVycm9yKQogewotICAgIFZlY3RvcjxET01Qcm9t
aXNlPHZvaWQ+PiBwZW5kaW5nUGxheVByb21pc2VzID0gV1RGTW92ZShtX3BlbmRpbmdQbGF5UHJv
bWlzZXMpOworICAgIFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+IHBlbmRpbmdQbGF5
UHJvbWlzZXMgPSBXVEZNb3ZlKG1fcGVuZGluZ1BsYXlQcm9taXNlcyk7CiAKICAgICBmb3IgKGF1
dG8mIHByb21pc2UgOiBwZW5kaW5nUGxheVByb21pc2VzKQogICAgICAgICBwcm9taXNlLnJlamVj
dFR5cGU8SURMSW50ZXJmYWNlPERPTUVycm9yPj4oZXJyb3IpOwpAQCAtMTAyMCw3ICsxMDIwLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZWplY3RQZW5kaW5nUGxheVByb21pc2VzKERPTUVy
cm9yJiBlcnJvcikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXNvbHZlUGVuZGluZ1BsYXlQ
cm9taXNlcygpCiB7Ci0gICAgVmVjdG9yPERPTVByb21pc2U8dm9pZD4+IHBlbmRpbmdQbGF5UHJv
bWlzZXMgPSBXVEZNb3ZlKG1fcGVuZGluZ1BsYXlQcm9taXNlcyk7CisgICAgVmVjdG9yPERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPj4gcGVuZGluZ1BsYXlQcm9taXNlcyA9IFdURk1vdmUobV9wZW5k
aW5nUGxheVByb21pc2VzKTsKIAogICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHBlbmRpbmdQbGF5
UHJvbWlzZXMpCiAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOwpAQCAtMzEzNiw3ICszMTM2LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYgcHJlbG9h
ZCkKICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHByZWxvYWRBdHRyLCBw
cmVsb2FkKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5KERPTVByb21pc2U8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5KERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6cGxheSglcCkiLCB0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAppbmRleCA5NmUwYTk1ZDY4OGU4MmE0ZTI3MDk4YmU5YzE1NTQxNTk2NDQxMzAxLi4xOGQ2ZmJm
YmQ5ZDVmOTM5ZThiZDA3ZjhlYzZhNzU0M2JlODk3OTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBWaWRlb1RyYWNrTGlzdDsK
IGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xhc3MgV2ViS2l0TWVkaWFLZXlzOwogCi10ZW1w
bGF0ZTx0eXBlbmFtZT4gY2xhc3MgRE9NUHJvbWlzZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBET01Qcm9taXNlRGVmZXJyZWQ7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiB1c2luZyBD
dWVJbnRlcnZhbFRyZWUgPSBQT0RJbnRlcnZhbFRyZWU8TWVkaWFUaW1lLCBUZXh0VHJhY2tDdWUq
PjsKQEAgLTIzOCw3ICsyMzgsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50CiAgICAgYm9vbCBs
b29wKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMb29wKGJvb2wgYik7CiAKLSAgICB2b2lkIHBsYXko
RE9NUHJvbWlzZTx2b2lkPiYmKTsKKyAgICB2b2lkIHBsYXkoRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwpAQCAtODcxLDcgKzg3MSw3IEBA
IGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9wbGF5ZWRU
aW1lUmFuZ2VzOwogICAgIEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwogCi0g
ICAgVmVjdG9yPERPTVByb21pc2U8dm9pZD4+IG1fcGVuZGluZ1BsYXlQcm9taXNlczsKKyAgICBW
ZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3BlbmRpbmdQbGF5UHJvbWlzZXM7CiAK
ICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRQbGF5YmFja1JhdGUgeyAxIH07CiAgICAgZG91YmxlIG1f
cmVwb3J0ZWRQbGF5YmFja1JhdGUgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaAppbmRleCBiZjExYzNmZjYx
OGYxNWE0NzAyNTU5OGFhMmJlZmRlYWVmOGE3YTczLi5lODNkNjBmODU0OGU3ZDNjYmQ5YTg2NDQ0
ZjcwODg3MTBmNjM1NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShXRUJHUFUpCiAKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJK
U0RPTVByb21pc2VEZWZlcnJlZC5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBi
YThhMjE1Y2NjM2E4NWIyYThlMWYxMDM3OTdkNmE1OGFmNjQyMGJjLi44MzdhNTQyODNjZGVmYjMx
YjFlZjEzMjU4MjcyZDNjNTczZjY2Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
aCIKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNET01Q
cm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1
ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJh
eS5oPgpAQCAtNTczLDcgKzU3Myw3IEBAIGNsYXNzIEludGVybmFscyBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEludGVybmFscz4sICBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvCiAgICAgdW5z
aWduZWQgbG9uZyB0cmFja0F1ZGlvU2FtcGxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNr
QXVkaW9TYW1wbGVDb3VudDsgfQogICAgIHVuc2lnbmVkIGxvbmcgdHJhY2tWaWRlb1NhbXBsZUNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV90cmFja1ZpZGVvU2FtcGxlQ291bnQ7IH0KICAgICB2b2lk
IG9ic2VydmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smKTsKLSAgICB1c2luZyBU
cmFja0ZyYW1lUHJvbWlzZSA9IERPTVByb21pc2U8SURMSW50ZXJmYWNlPEltYWdlRGF0YT4+Owor
ICAgIHVzaW5nIFRyYWNrRnJhbWVQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVy
ZmFjZTxJbWFnZURhdGE+PjsKICAgICB2b2lkIGdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1l
KFRyYWNrRnJhbWVQcm9taXNlJiYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MzJlYjRjMGViN2U0OTk2
NjM2MTM3NDc0Y2I1ODY4ZjVlMmJmYzFmLi40MWFkOTdlOTk3MmVlZmNlNTcyM2JlZTcxMzU0MWFm
ODQwM2E1ZjYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDUtMDkgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSGFuZGxlIElETFByb21pc2U8
PiBwcm9wZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY2NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBqcy9kb20vcHJvbWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwt
cHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9kb20vcHJvbWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlz
ZS1jb252ZXJzaW9uLXJ1bGUuaHRtbDogQWRkZWQuCisKIDIwMTctMDUtMDggIEZyZWRlcmljIFdh
bmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IFNjcm9sbGluZ1N0YXRl
Tm9kZTo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9kb20vcHJvbWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlz
ZS1jb252ZXJzaW9uLXJ1bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL3Byb21p
c2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVyc2lv
bi1ydWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGUzOTc3N2MyY2E5MmJiNWQ2NjhlMGYy
MTI2YzJmMjI0NmI1NWVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3By
b21pc2UtcmVqZWN0aW9uLWV2ZW50LXNob3VsZC1mb2xsb3ctd2ViaWRsLXByb21pc2UtY29udmVy
c2lvbi1ydWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IFByb21pc2VSZWpl
Y3Rpb25FdmVudCBjb25zdHJ1Y3RvciBmb2xsb3dzIFdlYklETCBwcm9taXNlIGNvbnZlcnNpb24g
cnVsZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGV2ZW50LnByb21pc2Ug
aXMgYW4gaW5zdGFuY2Ugb2YgUHJvbWlzZQorUEFTUyBldmVudC5yZWFzb24gaXMgIkNhcHB1Y2Np
bm8iCitQQVNTIHZhbHVlIGlzIDQyCitQQVNTIGV2ZW50LnByb21pc2UgaXMgYW4gaW5zdGFuY2Ug
b2YgUHJvbWlzZQorUEFTUyBldmVudC5wcm9taXNlIGlzIHByb21pc2UKK1BBU1MgZXZlbnQucmVh
c29uIGlzICJDb2NvYSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcHJvbWlzZS1yZWplY3Rp
b24tZXZlbnQtc2hvdWxkLWZvbGxvdy13ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUuaHRt
bCBiL0xheW91dFRlc3RzL2pzL2RvbS9wcm9taXNlLXJlamVjdGlvbi1ldmVudC1zaG91bGQtZm9s
bG93LXdlYmlkbC1wcm9taXNlLWNvbnZlcnNpb24tcnVsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMDcw
YTM0OWYwMTc4YWNmZGUwN2JmNTQxYTQ2Y2UwY2MxZTFjMDUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9kb20vcHJvbWlzZS1yZWplY3Rpb24tZXZlbnQtc2hvdWxkLWZvbGxvdy13
ZWJpZGwtcHJvbWlzZS1jb252ZXJzaW9uLXJ1bGUuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oJ1Rlc3QgUHJvbWlzZVJlamVjdGlvbkV2ZW50IGNvbnN0cnVjdG9yIGZvbGxvd3Mg
V2ViSURMIHByb21pc2UgY29udmVyc2lvbiBydWxlLicpOword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCit2YXIgZXZlbnQgPSBudWxsOwordmFyIHZhbHVlID0gbnVsbDsKK3ZhciBwcm9t
aXNlID0gbnVsbDsKKworZXZlbnQgPSBuZXcgUHJvbWlzZVJlamVjdGlvbkV2ZW50KCJyZWplY3Rp
b25oYW5kbGVkIiwgeworICAgIHByb21pc2U6IDQyLAorICAgIHJlYXNvbjogYENhcHB1Y2Npbm9g
Cit9KTsKK3Nob3VsZEJlVHlwZShgZXZlbnQucHJvbWlzZWAsIGBQcm9taXNlYCk7CitzaG91bGRC
ZShgZXZlbnQucmVhc29uYCwgYCJDYXBwdWNjaW5vImApOworZXZlbnQucHJvbWlzZS50aGVuKGZ1
bmN0aW9uICh2KSB7CisgICAgdmFsdWUgPSB2OworICAgIHNob3VsZEJlKGB2YWx1ZWAsIGA0MmAp
OworCisgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSg0Mik7CisgICAgZXZlbnQgPSBuZXcg
UHJvbWlzZVJlamVjdGlvbkV2ZW50KCJyZWplY3Rpb25oYW5kbGVkIiwgeworICAgICAgICBwcm9t
aXNlOiBwcm9taXNlLAorICAgICAgICByZWFzb246IGBDb2NvYWAKKyAgICB9KTsKKworICAgIHNo
b3VsZEJlVHlwZShgZXZlbnQucHJvbWlzZWAsIGBQcm9taXNlYCk7CisgICAgc2hvdWxkQmUoYGV2
ZW50LnByb21pc2VgLCBgcHJvbWlzZWApOworICAgIHNob3VsZEJlKGBldmVudC5yZWFzb25gLCBg
IkNvY29hImApOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>