<?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>223257</bug_id>
          
          <creation_ts>2021-03-16 08:53:35 -0700</creation_ts>
          <short_desc>Implement WebXR Input Sources</short_desc>
          <delta_ts>2021-04-22 07:06:18 -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>WebXR</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Imanol Fernandez">ifernandez</reporter>
          <assigned_to name="Imanol Fernandez">ifernandez</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1739957</commentid>
    <comment_count>0</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-03-16 08:53:35 -0700</bug_when>
    <thetext>- https://immersive-web.github.io/webxr/#input
- https://immersive-web.github.io/webxr-gamepads-module/#webxr-device-api-integration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739984</commentid>
    <comment_count>1</comment_count>
      <attachid>423344</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-03-16 09:53:41 -0700</bug_when>
    <thetext>Created attachment 423344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739992</commentid>
    <comment_count>2</comment_count>
      <attachid>423347</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-03-16 10:00:04 -0700</bug_when>
    <thetext>Created attachment 423347
Patch

Fix nit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741196</commentid>
    <comment_count>3</comment_count>
      <attachid>423598</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-03-18 07:31:29 -0700</bug_when>
    <thetext>Created attachment 423598
Patch

Rebase onto main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742815</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-23 08:54:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/75739455&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744239</commentid>
    <comment_count>5</comment_count>
      <attachid>424375</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-03-26 11:02:01 -0700</bug_when>
    <thetext>Created attachment 424375
Patch

Rebase onto main. Add CachedAttribute to pass sameObject related tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747445</commentid>
    <comment_count>6</comment_count>
      <attachid>424375</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-06 08:40:03 -0700</bug_when>
    <thetext>Comment on attachment 424375
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRInputSource.h:52
&gt; +class WebXRInputSpace : public RefCounted&lt;WebXRInputSpace&gt;, public WebXRSpace {

It seems like it could have its own file.

&gt; Source/WebCore/Modules/webxr/WebXRInputSource.h:77
&gt; +class WebXRGamepad: public PlatformGamepad {

Can we move it to its own file as well?

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:62
&gt; +    return m_inputSources.at(index).ptr();

Is there a guarantee index is smaller than size()?

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:122
&gt; +    for (int i = m_inputSources.size() - 1; i &gt;= 0; --i) {

size() is probably a size_t.
Can we use removeAllMatching instead?

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.h:61
&gt; +    Document&amp; m_document;

This is probably not safe to do that, given WebXRInputSourceArray is refcounted, it could outlive its document.

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.h:62
&gt; +    WebXRSession&amp; m_session;

Ditto here.

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:435
&gt; +        m_inputPromiseResolved = true;

I do not see any input promise resolved around. Are we sure this is the right name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747935</commentid>
    <comment_count>7</comment_count>
      <attachid>424375</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-04-07 09:58:19 -0700</bug_when>
    <thetext>Comment on attachment 424375
Patch

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

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSource.h:52
&gt;&gt; +class WebXRInputSpace : public RefCounted&lt;WebXRInputSpace&gt;, public WebXRSpace {
&gt; 
&gt; It seems like it could have its own file.

Done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSource.h:77
&gt;&gt; +class WebXRGamepad: public PlatformGamepad {
&gt; 
&gt; Can we move it to its own file as well?

Done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:62
&gt;&gt; +    return m_inputSources.at(index).ptr();
&gt; 
&gt; Is there a guarantee index is smaller than size()?

Good catch, I added a bounds check

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:122
&gt;&gt; +    for (int i = m_inputSources.size() - 1; i &gt;= 0; --i) {
&gt; 
&gt; size() is probably a size_t.
&gt; Can we use removeAllMatching instead?

yes, done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.h:61
&gt;&gt; +    Document&amp; m_document;
&gt; 
&gt; This is probably not safe to do that, given WebXRInputSourceArray is refcounted, it could outlive its document.

Done. I also chaged WebXRInputSource::m_document to Ref. The InputSourceArrays is cleared in WebXRSession::shutdown() so there shouldn&apos;t be any ref cycles.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.h:62
&gt;&gt; +    WebXRSession&amp; m_session;
&gt; 
&gt; Ditto here.

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:435
&gt;&gt; +        m_inputPromiseResolved = true;
&gt; 
&gt; I do not see any input promise resolved around. Are we sure this is the right name.

It&apos;s how the spec names it. I changed the name to m_inputInitialized to make it easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747936</commentid>
    <comment_count>8</comment_count>
      <attachid>425413</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-04-07 09:59:18 -0700</bug_when>
    <thetext>Created attachment 425413
Patch

Address review feedback and rebase onto main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751099</commentid>
    <comment_count>9</comment_count>
      <attachid>426234</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-04-16 09:17:34 -0700</bug_when>
    <thetext>Created attachment 426234
Patch

Rebase onto main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752767</commentid>
    <comment_count>10</comment_count>
      <attachid>426234</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-21 09:07:49 -0700</bug_when>
    <thetext>Comment on attachment 426234
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRGamepad.cpp:40
&gt; +{

What is -1?
A constant might make things clearer.

&gt; Source/WebCore/Modules/webxr/WebXRGamepad.cpp:41
&gt; +    m_lastUpdateTime = MonotonicTime::fromRawSeconds(Seconds::fromMilliseconds(timestamp).value());

I would write it as m_connectTime(MonotonicTime::...)
ditto for m_lasUpdateTime, m_axes and m_buttons.

&gt; Source/WebCore/Modules/webxr/WebXRInputSource.cpp:50
&gt; +WebXRInputSource::WebXRInputSource(Ref&lt;Document&gt;&amp;&amp; document, Ref&lt;WebXRSession&gt;&amp;&amp; session, double timestamp, const PlatformXR::Device::FrameData::InputSource&amp; source)

It seems like we can have a WebXRInputSource whose document is not the same as the session document.
If so, this is fine. Otherwise, maybe we should just pass the session and when needed get the session document.

&gt; Source/WebCore/Modules/webxr/WebXRInputSource.cpp:153
&gt; +    return XRInputSourceEvent::create(name, init);

how about a one liner here:
return XRInputSourceEvent::create(name, { WebXRFrame::create(m_session.copyRef(), WebXRFrame::IsAnimationFrame::No), makeRefPtr(*this) });

&gt; Source/WebCore/Modules/webxr/WebXRInputSource.h:63
&gt; +    RefPtr&lt;WebXRSpace&gt; gripSpace() const { return m_gripSpace; }

Can we return a WebXRSpace*?

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:48
&gt; +    , m_session(WTFMove(session))

Ditto for document and session.

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:63
&gt; +    return m_inputSources[index].ptr();

One liner?

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:90
&gt; +        });

If we have to do that, for now I would just create a Vector&lt;RefPtr&lt;XRInputSourceEvent&gt;&gt; instead of having to recreate a vector.
And probably file a bug on binding generator since I am guessing this a limitation of dictionaries.

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:93
&gt; +        m_session-&gt;queueTaskToDispatchEvent(m_session.get(), TaskSource::WebXR, WTFMove(event));

Would be nice as follow-ups to be able to WTFMove the added and removed when creating XRInputSourcesChangeEvent.

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:108
&gt; +                event-&gt;setFrameActive(false);

It seems we should do something like:
m_session-&gt;queueTaskKeepingObjectAlive(m_session.get(), TaskSource::WebXR, [event = WTFMove(event)]() { 
  event-&gt;setFrameActive(true);
  dispatchEvent(event.copyRef());
  event-&gt;setFrameActive(true);
});

Can you add tests in that area?

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:124
&gt; +        if (inputSources.findMatching([&amp;source](auto&amp; item) { return item.handle == source-&gt;handle(); }) == WTF::notFound) {

You could use anyOf here which might be a tad clearer.

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:430
&gt; +    //        2. Fire an XRInputSourcesChangeEvent named inputsourceschange on session with added set to sources.

It is not clear whether we are doing everything there.

&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:258
&gt; +

Not needed.

&gt; ChangeLog:10
&gt; +        * Source/cmake/OptionsWPE.cmake:

Do not find the change there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753109</commentid>
    <comment_count>11</comment_count>
      <attachid>426234</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-04-22 04:49:42 -0700</bug_when>
    <thetext>Comment on attachment 426234
Patch

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

&gt;&gt; Source/WebCore/Modules/webxr/WebXRGamepad.cpp:40
&gt;&gt; +{
&gt; 
&gt; What is -1?
&gt; A constant might make things clearer.

It&apos;s the default gamepad id defined in https://immersive-web.github.io/webxr-gamepads-module/#gamepad-differences.

I moved it to a constant with a link to the spec.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRGamepad.cpp:41
&gt;&gt; +    m_lastUpdateTime = MonotonicTime::fromRawSeconds(Seconds::fromMilliseconds(timestamp).value());
&gt; 
&gt; I would write it as m_connectTime(MonotonicTime::...)
&gt; ditto for m_lasUpdateTime, m_axes and m_buttons.

I couldn&apos;t do that because they are members from the base class

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSource.cpp:50
&gt;&gt; +WebXRInputSource::WebXRInputSource(Ref&lt;Document&gt;&amp;&amp; document, Ref&lt;WebXRSession&gt;&amp;&amp; session, double timestamp, const PlatformXR::Device::FrameData::InputSource&amp; source)
&gt; 
&gt; It seems like we can have a WebXRInputSource whose document is not the same as the session document.
&gt; If so, this is fine. Otherwise, maybe we should just pass the session and when needed get the session document.

InputSources and the array are always constructed from session, so they are going to be the same. I changed the code as you suggested.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSource.cpp:153
&gt;&gt; +    return XRInputSourceEvent::create(name, init);
&gt; 
&gt; how about a one liner here:
&gt; return XRInputSourceEvent::create(name, { WebXRFrame::create(m_session.copyRef(), WebXRFrame::IsAnimationFrame::No), makeRefPtr(*this) });

The problem with the one liner is we get a missing initializer for members because XRInputSourceEvent has three extra values from the base EventInit class

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSource.h:63
&gt;&gt; +    RefPtr&lt;WebXRSpace&gt; gripSpace() const { return m_gripSpace; }
&gt; 
&gt; Can we return a WebXRSpace*?

Yes, done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:48
&gt;&gt; +    , m_session(WTFMove(session))
&gt; 
&gt; Ditto for document and session.

Done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:63
&gt;&gt; +    return m_inputSources[index].ptr();
&gt; 
&gt; One liner?

Done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:90
&gt;&gt; +        });
&gt; 
&gt; If we have to do that, for now I would just create a Vector&lt;RefPtr&lt;XRInputSourceEvent&gt;&gt; instead of having to recreate a vector.
&gt; And probably file a bug on binding generator since I am guessing this a limitation of dictionaries.

Done. I&apos;ll file the binding generator bug.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:93
&gt;&gt; +        m_session-&gt;queueTaskToDispatchEvent(m_session.get(), TaskSource::WebXR, WTFMove(event));
&gt; 
&gt; Would be nice as follow-ups to be able to WTFMove the added and removed when creating XRInputSourcesChangeEvent.

Ok, I&apos;ll address that as a follow-up

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:108
&gt;&gt; +                event-&gt;setFrameActive(false);
&gt; 
&gt; It seems we should do something like:
&gt; m_session-&gt;queueTaskKeepingObjectAlive(m_session.get(), TaskSource::WebXR, [event = WTFMove(event)]() { 
&gt;   event-&gt;setFrameActive(true);
&gt;   dispatchEvent(event.copyRef());
&gt;   event-&gt;setFrameActive(true);
&gt; });
&gt; 
&gt; Can you add tests in that area?

Done, this is already tested with WPT tests

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:124
&gt;&gt; +        if (inputSources.findMatching([&amp;source](auto&amp; item) { return item.handle == source-&gt;handle(); }) == WTF::notFound) {
&gt; 
&gt; You could use anyOf here which might be a tad clearer.

Done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:430
&gt;&gt; +    //        2. Fire an XRInputSourcesChangeEvent named inputsourceschange on session with added set to sources.
&gt; 
&gt; It is not clear whether we are doing everything there.

I improved the comments

&gt;&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:258
&gt;&gt; +
&gt; 
&gt; Not needed.

Done

&gt;&gt; ChangeLog:10
&gt;&gt; +        * Source/cmake/OptionsWPE.cmake:
&gt; 
&gt; Do not find the change there.

The change is adding this line: SET_AND_EXPOSE_TO_BUILD(ENABLE_GAMEPAD ON)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753110</commentid>
    <comment_count>12</comment_count>
      <attachid>426801</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-04-22 04:52:04 -0700</bug_when>
    <thetext>Created attachment 426801
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753150</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-22 07:06:15 -0700</bug_when>
    <thetext>Committed r276433 (236896@main): &lt;https://commits.webkit.org/236896@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426801.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423344</attachid>
            <date>2021-03-16 09:53:41 -0700</date>
            <delta_ts>2021-03-16 09:59:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223257-20210316175340.patch</filename>
            <type>text/plain</type>
            <size>72772</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZiMmJhODZmYzViMDA3
NjQwZGQxMDg3NGYzZmYyMWM5YjllMDdmMi4uZTUyMzVkMjBlYzI2MmZjOGY1NmJmZWUyNWVmYzg0
MmQ2YzYwMjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMS0wMy0xNiAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBwbGF0Zm9ybSBkYXRhIGRl
ZmluaXRpb24gYW5kIHRoZSBET00gYml0cyByZXF1aXJlZCB0byBzdXBwb3J0IFdlYlhSIElucHV0
IFNvdXJjZXMsIHRoZSBpbnB1dCBtZWNoYW5pc20gdXNlZCBpbiBXZWJYUi4KKyAgICAgICAgRXhh
bXBsZSBYUiBpbnB1dCBzb3VyY2VzIGluY2x1ZGUsIGJ1dCBhcmUgbm90IGxpbWl0ZWQgdG8sIGhh
bmRoZWxkIGNvbnRyb2xsZXJzLCBvcHRpY2FsbHkgdHJhY2tlZCBoYW5kcywgYW5kIGdhemUtYmFz
ZWQgaW5wdXQgbWV0aG9kcy4KKworICAgICAgICBNb3JlIGluZm8gYWJvdXQgdGhlIEFQSSBpbjoK
KyAgICAgICAgLSBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNpbnB1dAor
ICAgICAgICAtIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMt
bW9kdWxlLyN3ZWJ4ci1kZXZpY2UtYXBpLWludGVncmF0aW9uCisKKyAgICAgICAgVGVzdGVkIGJ5
IFdlYlhSIFdQVC4KKworICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmg6IEFkZCBz
ZXRDb25uZWN0ZWQgbWV0aG9kLgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZSk6IHNldCBl
bXVsYXRlZFBvc2l0aW9uIGJhc2VkIG9uIHRoZSBzcGFjZXMuCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwOiBDb21wbGV0ZSBXZWJYUklucHV0U291cmNlIGlt
cGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpXZWJYUklucHV0U3BhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpuYXRpdmVPcmlnaW4gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJHYW1lcGFkOjpXZWJYUkdhbWVwYWQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSSW5wdXRTb3VyY2U6OldlYlhSSW5wdXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3Vy
Y2U6OnJlcXVpcmVzSW5wdXRTb3VyY2VDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJ
bnB1dFNvdXJjZTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291
cmNlOjpwb2xsRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OmNy
ZWF0ZUV2ZW50KToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5o
OiBBZGQgaW5wdXQgZGF0YSBhbmQgaGVscGVyIFdlYlhSR2FtZXBhZCBhbmQgV2ViWFJJbnB1dFNw
YWNlIGNsYXNzZXMuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U3BhY2U6OnNldFBvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6aGFuZGxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OmhhbmRlZG5lc3MgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6dGFyZ2V0UmF5TW9kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjp0YXJnZXRSYXlTcGFjZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjpncmlwU3BhY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6cHJvZmlsZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6Z2FtZXBhZCBjb25zdCk6CisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaWRsOiBBZGQgZ2FtZXBhZCBhdHRy
aWJ1dGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5j
cHA6IEltcGxlbWVudCBpbnB1dCBzb3VyY2UgdXBkYXRlcyBhbmQgZXZlbnQgZGlzcGF0Y2hpbmcu
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3VyY2VBcnJh
eSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6Omxlbmd0aCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6Oml0ZW0gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjbGVhcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OnVwZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVBZGRlZE9y
VXBkYXRlZElucHV0U291cmNlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0
U291cmNlQXJyYXkuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKTogU2V0IHRy
YWNraW5nIGRlbGVnYXRlIGJlZm9yZSBpbml0aWFsaXppbmcgdHJhY2tpbmcgYW5kIHJlbmRlcmlu
Zy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6aXNQb3NpdGlvbkVtdWxhdGVkIGNv
bnN0KTogQWRkIGhlbHBlciBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246
OnNodXRkb3duKTogQ2xlYXIgV2ViWFJJbnB1dFNvdXJjZUFycmF5IGluc3RhbmNlLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNl
cyk6IERpc3BhdGNoIGluaXRpYWwgSW5wdXRTb3VyY2UgZGlzY292ZXJ5IGV2ZW50LgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpvbkZyYW1lKTogVXBkYXRlIFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheSBpbnN0YW5jZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5o
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcDogQWRkIHZpcnR1YWwg
Y2xhc3MgaXNQb3NpdGlvbkVtdWxhdGVkIHRvIGJlIHVzZWQgaW4gV2ViWFJGcmFtZS4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzUG9zaXRpb25FbXVsYXRlZCBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpyZXF1
ZXN0U2Vzc2lvbik6IHVwZGF0ZSBGSVhNRSBjb21tZW50LgorCisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9YUkhhbmRlZG5lc3MuaDogUmV1c2UgUGxhdGZvcm1YUiBlbnVtLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WFJJbnB1dFNvdXJjZUV2ZW50OjpYUklucHV0U291cmNlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6WFJJbnB1dFNvdXJjZUV2ZW50OjpzZXRGcmFtZUFjdGl2ZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIv
WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9Y
UlRhcmdldFJheU1vZGUuaDogUmV1c2UgUGxhdGZvcm1YUiBlbnVtLgorCisgICAgICAgICogcGxh
dGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Onhy
U3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZyk6IEFkZCB4ci1zdGFuZGFyZCBnYW1lcGFkIG1h
cHBpbmcgbmFtZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMu
aDoKKworICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDogQWRkIElucHV0IFNvdXJj
ZSBmcmFtZSBkYXRhLgorCisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwOiBJ
bXBsZW1lbnQgcmVxdWlyZWQgY2hhbmdlcyB0byBydW4gYW5kIHBhc3MgV2ViWFIgSW5wdXQgU291
cmNlIHRlc3RzLgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OmluaXRpYWxp
emVUcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRl
dmljZTo6ZnJhbWVUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmlj
ZTo6c2ltdWxhdGVSZXNldFBvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNl
OjpzaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbik6CisgICAgICAgICogdGVzdGluZy9XZWJG
YWtlWFJEZXZpY2UuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OldlYkZha2VY
UklucHV0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXI6OnNldEdyaXBPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyOjpzZXRQb2ludGVyT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VY
UklucHV0Q29udHJvbGxlcjo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OnJlY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OnNldFN1cHBvcnRlZEJ1dHRvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjp1cGRhdGVCdXR0b25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEJ1dHRvbk9yUGxhY2Vo
b2xkZXIgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
Lmg6CisKIDIwMjEtMDMtMTYgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1NPVVBdIEZpeCBTT1VQMyBkZWJ1ZyBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2FtZXBhZC9HYW1lcGFkLmgKaW5kZXggOGYxOTMzNDE2MDVjYzYwMTAxNjBkMWUyOGQyNjc5MDY1
YzRjNjE3Ny4uNDNjZWQ1NDU3ZjJmNGZkNGE0NzZiNWQzNjJhNGE5ZGFjNTBhMGYzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oCkBAIC01NSw2ICs1NSw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UmVmPEdhbWVwYWRCdXR0b24+PiYgYnV0dG9ucygpIGNv
bnN0OwogCiAgICAgdm9pZCB1cGRhdGVGcm9tUGxhdGZvcm1HYW1lcGFkKGNvbnN0IFBsYXRmb3Jt
R2FtZXBhZCYpOworICAgIHZvaWQgc2V0Q29ubmVjdGVkKGJvb2wgY29ubmVjdGVkKSB7IG1fY29u
bmVjdGVkID0gY29ubmVjdGVkOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgR2FtZXBhZChj
b25zdCBQbGF0Zm9ybUdhbWVwYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuY3BwCmluZGV4IGY0NWZiMTE0NzVhMmQ4MjQwZjZiZjQ3ODA2YjQwMDk4NDhjYjA4
N2QuLjc4ZjQxZDliOGZkOTZlYjhjMGZkMTVhZWUzZDMxYjgzZWIyMWM5MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+PiBXZWJYUkZy
YW1lOjpwb3B1bGF0ZVBvc2UoY29uc3QKICAgICAvLyA3LiBMZXQgdHJhbnNmb3JtIGJlIHBvc2Xi
gJlzIHRyYW5zZm9ybS4KICAgICAvLyA4LiBRdWVyeSB0aGUgWFIgZGV2aWNlJ3MgdHJhY2tpbmcg
c3lzdGVtIGZvciBzcGFjZeKAmXMgcG9zZSByZWxhdGl2ZSB0byBiYXNlU3BhY2UgYXQgdGhlIGZy
YW1l4oCZcyB0aW1lLgogCi0gICAgaWYgKCFtX2RhdGEuaXNUcmFja2luZ1ZhbGlkKSB7CisgICAg
aWYgKG1faXNBbmltYXRpb25GcmFtZSAmJiAhbV9kYXRhLmlzVHJhY2tpbmdWYWxpZCkgewogICAg
ICAgICAvLyBGSVhNRTogY2hlY2sgaWYgc3BhY2XigJlzIHBvc2UgcmVsYXRpdmUgdG8gYmFzZVNw
YWNlIGhhcyBiZWVuIGRldGVybWluZWQgaW4gdGhlIHBhc3QuCiAgICAgICAgIC8vIEFueXdheSB0
aGlzIGVtdWxhdGlvbiBpcyB1c3VhbGx5IHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0gaW4gdGhlIHBv
c2UgKGUuZy4gT3BlblhSKQogICAgICAgICAvLyBzbyB3ZSBzaG91bGRuJ3QgaGl0IHRoaXMgcGF0
aCBpbiBtb3N0IFhSUGxhdGZvcm0gcG9ydHMuCkBAIC0xMzEsNyArMTMxLDcgQEAgRXhjZXB0aW9u
T3I8T3B0aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxhdGVkUG9zZT4+IFdlYlhSRnJhbWU6OnBvcHVs
YXRlUG9zZShjb25zdAogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKIAogICAgIGF1
dG8gdHJhbnNmb3JtID0gICpiYXNlVHJhbnNmb3JtLmludmVyc2UoKSAqIHNwYWNlLmVmZmVjdGl2
ZU9yaWdpbigpOwotICAgIGJvb2wgZW11bGF0ZWRQb3NpdGlvbiA9IG1fZGF0YS5pc1Bvc2l0aW9u
RW11bGF0ZWQgfHwgIW1fZGF0YS5pc1Bvc2l0aW9uVmFsaWQ7CisgICAgYm9vbCBlbXVsYXRlZFBv
c2l0aW9uID0gc3BhY2UuaXNQb3NpdGlvbkVtdWxhdGVkKCkgfHwgYmFzZVNwYWNlLmlzUG9zaXRp
b25FbXVsYXRlZCgpOwogCiAgICAgYm9vbCBsaW1pdCA9IG11c3RQb3Nlc0JlTGltaXRlZChzcGFj
ZSwgYmFzZVNwYWNlKTsKICAgICBpZiAobGltaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwCmluZGV4IGYzMDc2NzUxMTk4ZGJiYzM3
NmNiOTcxOWI4YTg3YjEyYzYyMDE4ZGQuLjYwNTdjMjM5MzUwMjAxNGUwNzdiOTM2YTZlZTViMzcy
Yjk1YmJhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklu
cHV0U291cmNlLmNwcApAQCAtMjgsNTAgKzI4LDE3OSBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQog
CisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lmIEVOQUJMRShHQU1FUEFEKQorI2luY2x1ZGUg
IkdhbWVwYWQuaCIKKyNpbmNsdWRlICJHYW1lcGFkQ29uc3RhbnRzLmgiCisjZW5kaWYKKyNpbmNs
dWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViWFJSaWdpZFRyYW5zZm9ybS5oIgorI2lu
Y2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKKyNpbmNsdWRl
ICJYUklucHV0U291cmNlRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChX
ZWJYUklucHV0U3BhY2UpOwogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSW5wdXRT
b3VyY2UpOwogCi1SZWY8V2ViWFJJbnB1dFNvdXJjZT4gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRl
KFJlZjxXZWJYUlNwYWNlPiYmIHRhcmdldFJheVNwYWNlKQorLy8gV2ViWFJJbnB1dFNwYWNlCisK
K1JlZjxXZWJYUklucHV0U3BhY2U+IFdlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBjb25zdCBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwg
cG9zZSkpOworfQorCitXZWJYUklucHV0U3BhY2U6OldlYlhSSW5wdXRTcGFjZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgY29uc3QgUGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkKKyAgICA6IFdlYlhSU3Bh
Y2UoZG9jdW1lbnQsIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZSgpKQorICAgICwgbV9zZXNz
aW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX3Bvc2UocG9zZSkKK3sKK30KKworV2ViWFJJ
bnB1dFNwYWNlOjp+V2ViWFJJbnB1dFNwYWNlKCkgPSBkZWZhdWx0OworCitUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBXZWJYUklucHV0U3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFdlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKG1fcG9zZS5wb3NlKTsKK30KKworLy8gV2Vi
WFIgR2FtZXBhZAorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKy8vIGh0dHBzOi8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyNnYW1lcGFkLWRpZmZlcmVuY2Vz
CitXZWJYUkdhbWVwYWQ6OldlYlhSR2FtZXBhZChkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgY29u
bmVjdFRpbWUsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJj
ZSYgc291cmNlKQorICAgIDogUGxhdGZvcm1HYW1lcGFkKC0xKQoreworICAgIG1fbGFzdFVwZGF0
ZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpmcm9tUmF3U2Vjb25kcyhTZWNvbmRzOjpmcm9tTWlsbGlz
ZWNvbmRzKHRpbWVzdGFtcCkudmFsdWUoKSk7CisgICAgbV9jb25uZWN0VGltZSA9IE1vbm90b25p
Y1RpbWU6OmZyb21SYXdTZWNvbmRzKFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoY29ubmVjdFRp
bWUpLnZhbHVlKCkpOworICAgIC8vIEluIG9yZGVyIHRvIHJlcG9ydCBhIG1hcHBpbmcgb2YgInhy
LXN0YW5kYXJkIiB0aGUgZGV2aWNlIE1VU1QgcmVwb3J0IGEgdGFyZ2V0UmF5TW9kZSBvZiAidHJh
Y2tlZC1wb2ludGVyIiBhbmQgTVVTVCBoYXZlIGEgbm9uLW51bGwgZ3JpcFNwYWNlLgorICAgIC8v
IEl0IE1VU1QgaGF2ZSBhdCBsZWFzdCBvbmUgcHJpbWFyeSB0cmlnZ2VyLCBzZXBhcmF0ZSBmcm9t
IGFueSB0b3VjaHBhZHMgb3IgdGh1bWJzdGlja3MKKyAgICBpZiAoc291cmNlLnRhcmdldFJheU1v
ZGUgPT0gWFJUYXJnZXRSYXlNb2RlOjpUcmFja2VkUG9pbnRlciAmJiAhc291cmNlLmJ1dHRvbnMu
aXNFbXB0eSgpICYmIHNvdXJjZS5ncmlwT3JpZ2luLmhhc1ZhbHVlKCkpCisgICAgICAgIG1fbWFw
cGluZyA9IHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpOworICAgIG1fYXhlcyA9IHNv
dXJjZS5heGVzLm1hcChbXShhdXRvIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBTaGFyZWRHYW1l
cGFkVmFsdWUodmFsdWUpOworICAgIH0pOworICAgIG1fYnV0dG9ucyA9IHNvdXJjZS5idXR0b25z
Lm1hcChbXShhdXRvJiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gU2hhcmVkR2FtZXBhZFZhbHVl
KHZhbHVlLnByZXNzZWRWYWx1ZSk7CisgICAgfSk7Cit9CisKKyNlbmRpZgorCisvLyBXZWJYUklu
cHV0U291cmNlCisKK1JlZjxXZWJYUklucHV0U291cmNlPiBXZWJYUklucHV0U291cmNlOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIGRvdWJs
ZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZSYgc291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3Vy
Y2UoV1RGTW92ZSh0YXJnZXRSYXlTcGFjZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJYUklucHV0U291cmNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCB0aW1lc3RhbXAsIHNv
dXJjZSkpOwogfQogCi1XZWJYUklucHV0U291cmNlOjpXZWJYUklucHV0U291cmNlKFJlZjxXZWJY
UlNwYWNlPiYmIHRhcmdldFJheVNwYWNlKQotICAgIDogbV9oYW5kZWRuZXNzKFhSSGFuZGVkbmVz
czo6Tm9uZSkKLSAgICAsIG1fdGFyZ2V0UmF5TW9kZShYUlRhcmdldFJheU1vZGU6OkdhemUpCi0g
ICAgLCBtX3RhcmdldFJheVNwYWNlKFdURk1vdmUodGFyZ2V0UmF5U3BhY2UpKQorV2ViWFJJbnB1
dFNvdXJjZTo6V2ViWFJJbnB1dFNvdXJjZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNl
c3Npb24+JiYgc2Vzc2lvbiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2UpCisgICAgOiBtX2RvY3VtZW50KGRv
Y3VtZW50KQorICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX3Rhcmdl
dFJheVNwYWNlKFdlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtX3Nlc3Npb24uY29w
eVJlZigpLCBzb3VyY2UucG9pbnRlck9yaWdpbikpCisgICAgLCBtX2Nvbm5lY3RUaW1lKHRpbWVz
dGFtcCkKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICAsIG1fZ2FtZXBhZChHYW1lcGFkOjpjcmVh
dGUoV2ViWFJHYW1lcGFkKHRpbWVzdGFtcCwgdGltZXN0YW1wLCBzb3VyY2UpKSkKKyNlbmRpZgog
eworICAgIHVwZGF0ZSh0aW1lc3RhbXAsIHNvdXJjZSk7CiB9CiAKIFdlYlhSSW5wdXRTb3VyY2U6
On5XZWJYUklucHV0U291cmNlKCkgPSBkZWZhdWx0OwogCi1YUkhhbmRlZG5lc3MgV2ViWFJJbnB1
dFNvdXJjZTo6aGFuZGVkbmVzcygpIGNvbnN0Cit2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnVwZGF0
ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
SW5wdXRTb3VyY2UmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gbV9oYW5kZWRuZXNzOworI2lmICFF
TkFCTEUoR0FNRVBBRCkKKyAgICBVTlVTRURfUEFSQU0odGltZXN0YW1wKTsKKyNlbmRpZgorICAg
IG1fc291cmNlID0gc291cmNlOworICAgIG1fdGFyZ2V0UmF5U3BhY2UtPnNldFBvc2Uoc291cmNl
LnBvaW50ZXJPcmlnaW4pOworICAgIGlmIChhdXRvIGdyaXBPcmlnaW4gPSBzb3VyY2UuZ3JpcE9y
aWdpbikgeworICAgICAgICBpZiAobV9ncmlwU3BhY2UpCisgICAgICAgICAgICBtX2dyaXBTcGFj
ZS0+c2V0UG9zZSgqZ3JpcE9yaWdpbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZ3Jp
cFNwYWNlID0gV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUobV9kb2N1bWVudCwgbV9zZXNzaW9uLmdl
dCgpLCAqZ3JpcE9yaWdpbik7CisgICAgfSBlbHNlCisgICAgICAgIG1fZ3JpcFNwYWNlID0gbnVs
bHB0cjsKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBtX2dhbWVwYWQtPnVwZGF0ZUZyb21QbGF0
Zm9ybUdhbWVwYWQoV2ViWFJHYW1lcGFkKHRpbWVzdGFtcCwgbV9jb25uZWN0VGltZSwgc291cmNl
KSk7CisjZW5kaWYKIH0KIAotWFJUYXJnZXRSYXlNb2RlIFdlYlhSSW5wdXRTb3VyY2U6OnRhcmdl
dFJheU1vZGUoKSBjb25zdAorYm9vbCBXZWJYUklucHV0U291cmNlOjpyZXF1aXJlc0lucHV0U291
cmNlQ2hhbmdlKGNvbnN0IElucHV0U291cmNlJiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIG1fdGFy
Z2V0UmF5TW9kZTsKKyAgICByZXR1cm4gbV9zb3VyY2UuaGFuZGVuZXNzICE9IHNvdXJjZS5oYW5k
ZW5lc3MKKyAgICAgICAgfHwgbV9zb3VyY2UudGFyZ2V0UmF5TW9kZSAhPSBzb3VyY2UudGFyZ2V0
UmF5TW9kZQorICAgICAgICB8fCBtX3NvdXJjZS5wcm9maWxlcyAhPSBzb3VyY2UucHJvZmlsZXMK
KyAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Ym9vbD4obV9ncmlwU3BhY2UpICE9IHNvdXJjZS5ncmlw
T3JpZ2luLmhhc1ZhbHVlKCk7CiB9CiAKLWNvbnN0IFdlYlhSU3BhY2UmIFdlYlhSSW5wdXRTb3Vy
Y2U6OnRhcmdldFJheVNwYWNlKCkgY29uc3QKK3ZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6ZGlzY29u
bmVjdCgpCiB7Ci0gICAgcmV0dXJuIG1fdGFyZ2V0UmF5U3BhY2U7CisgICAgbV9jb25uZWN0ZWQg
PSBmYWxzZTsKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBtX2dhbWVwYWQtPnNldENvbm5lY3Rl
ZChmYWxzZSk7CisjZW5kaWYKIH0KIAotUmVmUHRyPFdlYlhSU3BhY2U+IFdlYlhSSW5wdXRTb3Vy
Y2U6OmdyaXBTcGFjZSgpIGNvbnN0Cit2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnBvbGxFdmVudHMo
VmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYgZXZlbnRzKQogewotICAgIHJldHVybiB7
IH07CisgICAgaWYgKCFtX2Nvbm5lY3RlZCkgeworICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVT
VCBkaXNwYXRjaCBhIHNlbGVjdGVuZCBldmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiBvbmUgb2Yg
aXRzIFhSSW5wdXRTb3VyY2VzIGVuZHMgCisgICAgICAgIC8vIHdoZW4gYW4gWFJJbnB1dFNvdXJj
ZSB0aGF0IGhhcyBiZWd1biBhIHByaW1hcnkgc2VsZWN0IGFjdGlvbiBpcyBkaXNjb25uZWN0ZWQu
CisgICAgICAgIGlmIChtX3NlbGVjdFN0YXJ0ZWQpCisgICAgICAgICAgICBldmVudHMuYXBwZW5k
KGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5zZWxlY3RlbmRFdmVudCkpOworCisgICAgICAgIC8v
IEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc3F1ZWV6ZWVuZCBldmVudCBvbiBhbiBYUlNl
c3Npb24gd2hlbiBvbmUgb2YgaXRzIFhSSW5wdXRTb3VyY2VzIGVuZHMgCisgICAgICAgIC8vIHdo
ZW4gYW4gWFJJbnB1dFNvdXJjZSB0aGF0IGhhcyBiZWd1biBhIHByaW1hcnkgc3F1ZWV6ZSBhY3Rp
b24gaXMgZGlzY29ubmVjdGVkLgorICAgICAgICBpZiAobV9zcXVlZXplU3RhcnRlZCkKKyAgICAg
ICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZlbnROYW1lcygpLnNxdWVlemVlbmRF
dmVudCkpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBodHRwczovL2ltbWVy
c2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8jeHItc3RhbmRhcmQtZ2Ft
ZXBhZC1tYXBwaW5nCisgICAgLy8gQnV0dG9uIGluZGljZXMgYXJlIGJhc2VkIG9uIHRoZSB4ci1z
dGFuZGFyZCBsYXlvdXQuCisgICAgYm9vbCBzZWxlY3RTdGFydGVkID0gIW1fc291cmNlLmJ1dHRv
bnMuaXNFbXB0eSgpICYmIG1fc291cmNlLmJ1dHRvbnMuZmlyc3QoKS5wcmVzc2VkOworICAgIGJv
b2wgc3F1ZWV6ZVN0YXJ0ZWQgPSBtX3NvdXJjZS5idXR0b25zLnNpemUoKSA+IDEgJiYgbV9zb3Vy
Y2UuYnV0dG9uc1sxXS5wcmVzc2VkOworCisgICAgaWYgKHNlbGVjdFN0YXJ0ZWQgIT0gbV9zZWxl
Y3RTdGFydGVkKSB7CisgICAgICAgIGlmIChzZWxlY3RTdGFydGVkKSB7CisgICAgICAgICAgICAv
LyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVjdHN0YXJ0IGV2ZW50IG9uIGFuIFhS
U2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgYmVnaW5zIGl0cyBwcmltYXJ5
IGFjdGlvbi4KKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZlbnROYW1l
cygpLnNlbGVjdHN0YXJ0RXZlbnQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0ZW5kIGV2ZW50IG9uIGFuIFhSU2Vz
c2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgZW5kcyBpdHMgcHJpbWFyeSBhY3Rp
b24uCisgICAgICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVjdCBl
dmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiBvbmUgb2YgaXRzIFhSSW5wdXRTb3VyY2VzIGhhcyBm
dWxseSBjb21wbGV0ZWQgYSBwcmltYXJ5IGFjdGlvbgorICAgICAgICAgICAgZXZlbnRzLmFwcGVu
ZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc2VsZWN0RXZlbnQpKTsKKyAgICAgICAgICAgIGV2
ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZlbnROYW1lcygpLnNlbGVjdGVuZEV2ZW50KSk7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9zZWxlY3RTdGFydGVkID0gc2VsZWN0U3RhcnRlZDsKKyAgICB9
CisKKyAgICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQgIT0gbV9zcXVlZXplU3RhcnRlZCkgeworICAgICAg
ICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNU
IGRpc3BhdGNoIGEgc3F1ZWV6ZXN0YXJ0IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBv
ZiBpdHMgWFJJbnB1dFNvdXJjZXMgYmVnaW5zIGl0cyBwcmltYXJ5IHNxdWVlemUgYWN0aW9uLgor
ICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6
ZXN0YXJ0RXZlbnQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEEgdXNlciBh
Z2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0ZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVu
IG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgZW5kcyBpdHMgcHJpbWFyeSBzcXVlZXplIGFjdGlv
bi4KKyAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0IGV2
ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgaGFzIGZ1
bGx5IGNvbXBsZXRlZCBhIHByaW1hcnkgc3F1ZWV6ZSBhY3Rpb24uCisgICAgICAgICAgICBldmVu
dHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5zcXVlZXplRXZlbnQpKTsKKyAgICAg
ICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZlbnROYW1lcygpLnNxdWVlemVlbmRF
dmVudCkpOworICAgICAgICB9CisgICAgICAgIG1fc3F1ZWV6ZVN0YXJ0ZWQgPSBzcXVlZXplU3Rh
cnRlZDsKKyAgICB9CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBXZWJYUklucHV0U291cmNl
Ojpwcm9maWxlcygpIGNvbnN0CitSZWY8WFJJbnB1dFNvdXJjZUV2ZW50PiBXZWJYUklucHV0U291
cmNlOjpjcmVhdGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBt
X3Byb2ZpbGVzOworICAgIFhSSW5wdXRTb3VyY2VFdmVudDo6SW5pdCBpbml0OworICAgIGluaXQu
ZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobV9zZXNzaW9uLmNvcHlSZWYoKSwgV2ViWFJGcmFt
ZTo6SXNBbmltYXRpb25GcmFtZTo6Tm8pOworICAgIGluaXQuaW5wdXRTb3VyY2UgPSBtYWtlUmVm
UHRyKCp0aGlzKTsKKworICAgIHJldHVybiBYUklucHV0U291cmNlRXZlbnQ6OmNyZWF0ZShuYW1l
LCBpbml0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaAppbmRleCA2OGMyOWFiMWNkYjkwNmRi
ZTE0YmI5NDkyYWIyZmQ4OGI0MWQ0MTEyLi43NjM2MjhiNDM5MjZlMGE0MDhhNGZlOTlhMzRhMDM4
ZTg1YWVmMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
SW5wdXRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5w
dXRTb3VyY2UuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5j
bHVkZSAiUGxhdGZvcm1YUi5oIgorI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKICNpbmNsdWRlICJY
UkhhbmRlZG5lc3MuaCIKICNpbmNsdWRlICJYUlRhcmdldFJheU1vZGUuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jLmg+CkBAIC0zNiwyOSArMzgsOTggQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoR0FNRVBB
RCkKKyNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFdlYlhSU3BhY2U7CisjaWYgRU5BQkxFKEdBTUVQQUQpCitjbGFzcyBH
YW1lcGFkOworI2VuZGlmCitjbGFzcyBYUklucHV0U291cmNlRXZlbnQ7CisKK2NsYXNzIFdlYlhS
SW5wdXRTcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSW5wdXRTcGFjZT4sIHB1YmxpYyBX
ZWJYUlNwYWNlIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSSW5wdXRTcGFjZSk7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U3BhY2U+IGNyZWF0ZShEb2N1bWVu
dCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKKyAgICB2aXJ0dWFsIH5XZWJYUklucHV0U3BhY2UoKTsK
KworICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6cmVmOworICAgIHVzaW5n
IFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6ZGVyZWY7CisKKyAgICBib29sIGlzUG9zaXRp
b25FbXVsYXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcG9zZS5pc1Bvc2l0aW9uRW11bGF0
ZWQ7IH0KKyAgICB2b2lkIHNldFBvc2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkgeyBtX3Bvc2UgPSBwb3NlOyB9CisKK3ByaXZhdGU6
CisgICAgV2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYpOworICAg
IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5n
ZXQoKTsgfQorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0IGZp
bmFsOworCisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKworICAgIFJlZjxXZWJY
UlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
SW5wdXRTb3VyY2VQb3NlIG1fcG9zZTsKK307CisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKK2NsYXNz
IFdlYlhSR2FtZXBhZDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CitwdWJsaWM6CisgICAgV2Vi
WFJHYW1lcGFkKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBjb25uZWN0VGltZSwgY29uc3QgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJik7CisKK3ByaXZhdGU6Cisg
ICAgY29uc3QgVmVjdG9yPFNoYXJlZEdhbWVwYWRWYWx1ZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F4ZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8U2hhcmVkR2FtZXBhZFZh
bHVlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0b25zOyB9CisK
KyAgICBWZWN0b3I8U2hhcmVkR2FtZXBhZFZhbHVlPiBtX2F4ZXM7CisgICAgVmVjdG9yPFNoYXJl
ZEdhbWVwYWRWYWx1ZT4gbV9idXR0b25zOworfTsKKyNlbmRpZgogCiBjbGFzcyBXZWJYUklucHV0
U291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNvdXJjZT4gewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoV2ViWFJJbnB1dFNvdXJjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxXZWJYUklucHV0U291cmNlPiBjcmVhdGUoUmVmPFdlYlhSU3BhY2U+JiYpOworICAgIHVz
aW5nIElucHV0U291cmNlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291
cmNlOworICAgIHVzaW5nIElucHV0U291cmNlQnV0dG9uID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOworCisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0
U291cmNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBkb3VibGUgdGlt
ZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZSYpOwogICAgIH5XZWJYUklucHV0U291cmNlKCk7CiAK
LSAgICBYUkhhbmRlZG5lc3MgaGFuZGVkbmVzcygpIGNvbnN0OwotICAgIFhSVGFyZ2V0UmF5TW9k
ZSB0YXJnZXRSYXlNb2RlKCkgY29uc3Q7Ci0gICAgY29uc3QgV2ViWFJTcGFjZSYgdGFyZ2V0UmF5
U3BhY2UoKSBjb25zdDsKLSAgICBSZWZQdHI8V2ViWFJTcGFjZT4gZ3JpcFNwYWNlKCkgY29uc3Q7
Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb2ZpbGVzKCkgY29uc3Q7CisgICAgUGxhdGZv
cm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2Uu
aGFuZGxlOyB9CisgICAgWFJIYW5kZWRuZXNzIGhhbmRlZG5lc3MoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZS5oYW5kZW5lc3M7IH0KKyAgICBYUlRhcmdldFJheU1vZGUgdGFyZ2V0UmF5TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnRhcmdldFJheU1vZGU7IH07CisgICAgY29uc3QgV2Vi
WFJTcGFjZSYgdGFyZ2V0UmF5U3BhY2UoKSBjb25zdCB7cmV0dXJuIG1fdGFyZ2V0UmF5U3BhY2Uu
Z2V0KCk7IH07CisgICAgUmVmUHRyPFdlYlhSU3BhY2U+IGdyaXBTcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZ3JpcFNwYWNlOyB9CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb2ZpbGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2UucHJvZmlsZXM7IH07CisjaWYgRU5BQkxFKEdBTUVQQUQp
CisgICAgY29uc3QgR2FtZXBhZCogZ2FtZXBhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2FtZXBhZC5w
dHIoKTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25z
dCBJbnB1dFNvdXJjZSYpOworICAgIGJvb2wgcmVxdWlyZXNJbnB1dFNvdXJjZUNoYW5nZShjb25z
dCBJbnB1dFNvdXJjZSYpOworICAgIHZvaWQgZGlzY29ubmVjdCgpOworICAgIAorICAgIHZvaWQg
cG9sbEV2ZW50cyhWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+Jik7CiAKIHByaXZhdGU6
Ci0gICAgV2ViWFJJbnB1dFNvdXJjZShSZWY8V2ViWFJTcGFjZT4mJik7CisgICAgV2ViWFJJbnB1
dFNvdXJjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGRvdWJsZSB0aW1lc3RhbXAs
IGNvbnN0IElucHV0U291cmNlJik7CisKKyAgICBSZWY8WFJJbnB1dFNvdXJjZUV2ZW50PiBjcmVh
dGVFdmVudChjb25zdCBBdG9tU3RyaW5nJik7CisKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsK
KyAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CisgICAgSW5wdXRTb3VyY2UgbV9zb3Vy
Y2U7CisgICAgUmVmPFdlYlhSSW5wdXRTcGFjZT4gbV90YXJnZXRSYXlTcGFjZTsKKyAgICBSZWZQ
dHI8V2ViWFJJbnB1dFNwYWNlPiBtX2dyaXBTcGFjZTsKKyAgICBkb3VibGUgbV9jb25uZWN0VGlt
ZSB7IDAgfTsKKyAgICBib29sIG1fY29ubmVjdGVkIHsgdHJ1ZSB9OworI2lmIEVOQUJMRShHQU1F
UEFEKQorICAgIFJlZjxHYW1lcGFkPiBtX2dhbWVwYWQ7CisjZW5kaWYKIAotICAgIFhSSGFuZGVk
bmVzcyBtX2hhbmRlZG5lc3M7Ci0gICAgWFJUYXJnZXRSYXlNb2RlIG1fdGFyZ2V0UmF5TW9kZTsK
LSAgICBSZWY8V2ViWFJTcGFjZT4gbV90YXJnZXRSYXlTcGFjZTsKLSAgICBWZWN0b3I8U3RyaW5n
PiBtX3Byb2ZpbGVzOworICAgIGJvb2wgbV9zZWxlY3RTdGFydGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fc3F1ZWV6ZVN0YXJ0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0
U291cmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJj
ZS5pZGwKaW5kZXggMDQ1OWYzZmU0NzA3NTIxMTM3YmY1M2YxYTM0NGVkZGQ5OGViZDM2OS4uYzQ1
ZjVjZDM2Njg1ZjI0ZTljOWFkZjM1MTZlZmM2NzcyM2Y5YzE5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaWRsCkBAIC0zNiw0ICszNiw3
IEBACiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJYUlNwYWNlIHRhcmdl
dFJheVNwYWNlOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJTcGFj
ZT8gZ3JpcFNwYWNlIDsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIEZyb3pl
bkFycmF5PERPTVN0cmluZz4gcHJvZmlsZXM7CisKKyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13
ZWIuZ2l0aHViLmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8jeHJpbnB1dHNvdXJjZS1pbnRlcmZh
Y2UKKyAgICBbQ29uZGl0aW9uYWw9R0FNRVBBRCwgU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmli
dXRlIEdhbWVwYWQ/IGdhbWVwYWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwCmluZGV4IGM0YzA4NTUzMmJjZDlh
YWMyNzM4MDkwYmZhM2ZkZGZlYTQzMzU1ZDMuLjM3Y2VmMWVhNjkzODBhZmIyN2Q1MGM0YThkNmM3
MzRhMmYxNzU4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJJbnB1dFNvdXJjZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKQEAgLTI3LDIxICsyNywxNTQgQEAKICNpbmNsdWRl
ICJXZWJYUklucHV0U291cmNlQXJyYXkuaCIKIAogI2lmIEVOQUJMRShXRUJYUikKLQorI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJXZWJYUklucHV0U291cmNlLmgiCisjaW5jbHVk
ZSAiV2ViWFJTZXNzaW9uLmgiCisjaW5jbHVkZSAiWFJJbnB1dFNvdXJjZUV2ZW50LmgiCisjaW5j
bHVkZSAiWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFdlYlhSSW5wdXRTb3VyY2VBcnJheSk7CiAKKworUmVmPFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheT4gV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBXZWJYUlNlc3Npb24mIHNlc3Npb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
WFJJbnB1dFNvdXJjZUFycmF5KGRvY3VtZW50LCBzZXNzaW9uKSk7Cit9CisKK1dlYlhSSW5wdXRT
b3VyY2VBcnJheTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5KERvY3VtZW50JiBkb2N1bWVudCwgV2Vi
WFJTZXNzaW9uJiBzZXNzaW9uKQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1f
c2Vzc2lvbihzZXNzaW9uKQoreworfQorCitXZWJYUklucHV0U291cmNlQXJyYXk6On5XZWJYUklu
cHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7CisKIHVuc2lnbmVkIFdlYlhSSW5wdXRTb3VyY2VB
cnJheTo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9pbnB1
dFNvdXJjZXMuc2l6ZSgpOworfQorCitXZWJYUklucHV0U291cmNlKiBXZWJYUklucHV0U291cmNl
QXJyYXk6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5wdXRT
b3VyY2VzLmF0KGluZGV4KS5wdHIoKTsKK30KKwordm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6
OmNsZWFyKCkKK3sKKyAgICBtX2lucHV0U291cmNlcy5jbGVhcigpOworfQorCisvLyBodHRwczov
L2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1z
b3VyY2VzCit2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6dXBkYXRlKGRvdWJsZSB0aW1lc3Rh
bXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3VyY2VzKQoreworICAgIFZlY3RvcjxS
ZWY8V2ViWFJJbnB1dFNvdXJjZT4+IGFkZGVkOworICAgIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNv
dXJjZT4+IHJlbW92ZWQ7CisgICAgVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiBpbnB1
dEV2ZW50czsKKworICAgIGhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMoaW5wdXRTb3VyY2VzLCBy
ZW1vdmVkLCBpbnB1dEV2ZW50cyk7CisgICAgaGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJj
ZXModGltZXN0YW1wLCBpbnB1dFNvdXJjZXMsIGFkZGVkLCByZW1vdmVkLCBpbnB1dEV2ZW50cyk7
CisKKyAgICBpZiAoIWFkZGVkLmlzRW1wdHkoKSB8fCAhcmVtb3ZlZC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYW4gaW5wdXRzb3VyY2VzY2hhbmdl
IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIHRoZSBzZXNzaW9u4oCZcyBsaXN0IG9mIGFjdGl2
ZSBYUiBpbnB1dCBzb3VyY2VzIGhhcyBjaGFuZ2VkLgorICAgICAgICBYUklucHV0U291cmNlc0No
YW5nZUV2ZW50OjpJbml0IGluaXQ7CisgICAgICAgIGluaXQuc2Vzc2lvbiA9IG1ha2VSZWZQdHIo
bV9zZXNzaW9uKTsKKyAgICAgICAgaW5pdC5hZGRlZCA9IGFkZGVkLm1hcChbXShhdXRvJiBpbnB1
dCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoaW5wdXQuZ2V0KCkpOworICAgICAg
ICB9KTsKKyAgICAgICAgaW5pdC5yZW1vdmVkID0gcmVtb3ZlZC5tYXAoW10oYXV0byYgaW5wdXQp
IHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKGlucHV0LmdldCgpKTsKKyAgICAgICAg
fSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGV2ZW50ID0gWFJJbnB1dFNvdXJjZXNDaGFuZ2VF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnB1dHNvdXJjZXNjaGFuZ2VFdmVudCwgaW5pdCk7
CisgICAgICAgIG1fc2Vzc2lvbi5xdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobV9zZXNzaW9uLCBU
YXNrU291cmNlOjpXZWJYUiwgV1RGTW92ZShldmVudCkpOworICAgIH0KKworICAgIGlmICghaW5w
dXRFdmVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaGFz
IHRvIGZpcmUgYW4gaW5wdXQgc291cmNlIGV2ZW50IHdpdGggbmFtZSBuYW1lLCBYUkZyYW1lIGZy
YW1lLCBhbmQgWFJJbnB1dFNvdXJjZSBzb3VyY2UgaXQgTVVTVCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKKyAgICAgICAgLy8gMS4gQ3JlYXRlIGFuIFhSSW5wdXRTb3VyY2VFdmVudCBldmVudCB3
aXRoIHR5cGUgbmFtZSwgZnJhbWUgZnJhbWUsIGFuZCBpbnB1dFNvdXJjZSBzb3VyY2UuCisgICAg
ICAgIC8vIDIuIFNldCBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gdG8gdHJ1ZS4KKyAgICAgICAg
Ly8gMy4gQXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJhbWUuCisgICAgICAgIC8vIDQuIERpc3Bh
dGNoIGV2ZW50IG9uIGZyYW1l4oCZcyBzZXNzaW9uCisgICAgICAgIC8vIDUuIFNldCBmcmFtZeKA
mXMgYWN0aXZlIGJvb2xlYW4gdG8gZmFsc2UuCisKKyAgICAgICAgZm9yIChhdXRvJiBldmVudCA6
IGlucHV0RXZlbnRzKSB7CisgICAgICAgICAgICBldmVudC0+c2V0RnJhbWVBY3RpdmUodHJ1ZSk7
CisgICAgICAgICAgICBtX3Nlc3Npb24ucXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KG1fc2Vzc2lv
biwgVGFza1NvdXJjZTo6V2ViWFIsIGV2ZW50LmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3Nl
c3Npb24ucXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKG1fc2Vzc2lvbiwgVGFza1NvdXJjZTo6
V2ViWFIsIFtldmVudCA9IFdURk1vdmUoZXZlbnQpXSgpIHsKKyAgICAgICAgICAgICAgICBldmVu
dC0+c2V0RnJhbWVBY3RpdmUoZmFsc2UpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2xpc3Qt
b2YtYWN0aXZlLXhyLWlucHV0LXNvdXJjZXMKK3ZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5Ojpo
YW5kbGVSZW1vdmVkSW5wdXRTb3VyY2VzKGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3Vy
Y2VzLCBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiYgcmVtb3ZlZCwgVmVjdG9yPFJlZjxY
UklucHV0U291cmNlRXZlbnQ+PiYgaW5wdXRFdmVudHMpCit7CisgICAgLy8gV2hlbiBhbnkgcHJl
dmlvdXNseSBhZGRlZCBYUiBpbnB1dCBzb3VyY2VzIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlIGZv
ciBYUlNlc3Npb24gc2Vzc2lvbiwgdGhlIHVzZXIgYWdlbnQgTVVTVCBydW4gdGhlIGZvbGxvd2lu
ZyBzdGVwczoKKyAgICAvLyAxLiBJZiBzZXNzaW9uJ3MgcHJvbWlzZSByZXNvbHZlZCBmbGFnIGlz
IG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIC8vIDIuIExldCByZW1vdmVkIGJlIGEg
bmV3IGxpc3QuCisgICAgLy8gMy4gRm9yIGVhY2ggWFIgaW5wdXQgc291cmNlIHRoYXQgaXMgbm8g
bG9uZ2VyIGF2YWlsYWJsZToKKyAgICAvLyAgMy4xIExldCBpbnB1dFNvdXJjZSBiZSB0aGUgWFJJ
bnB1dFNvdXJjZSBpbiBzZXNzaW9uJ3MgbGlzdCBvZiBhY3RpdmUgWFIgaW5wdXQgc291cmNlcyBh
c3NvY2lhdGVkIHdpdGggdGhlIFhSIGlucHV0IHNvdXJjZS4KKyAgICAvLyAgMy4yIEFkZCBpbnB1
dFNvdXJjZSB0byByZW1vdmVkLgorICAgIGZvciAoaW50IGkgPSBtX2lucHV0U291cmNlcy5zaXpl
KCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICBhdXRvIGhhbmRsZSA9IG1faW5wdXRTb3Vy
Y2VzW2ldLT5oYW5kbGUoKTsKKyAgICAgICAgaWYgKGlucHV0U291cmNlcy5maW5kTWF0Y2hpbmco
W2hhbmRsZV0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5oYW5kbGUgPT0gaGFuZGxlOyB9KSA9
PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgICAgICByZW1vdmVkLmFwcGVuZChtX2lucHV0U291
cmNlc1tpXS5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXNbaV0tPmRpc2Nv
bm5lY3QoKTsKKyAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzW2ldLT5wb2xsRXZlbnRzKGlucHV0
RXZlbnRzKTsKKyAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzLnJlbW92ZShpKTsKKyAgICAgICAg
fQorICAgIH0KIH0KIAotV2ViWFJJbnB1dFNvdXJjZSogV2ViWFJJbnB1dFNvdXJjZUFycmF5Ojpp
dGVtKHVuc2lnbmVkKSBjb25zdAorLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93
ZWJ4ci8jbGlzdC1vZi1hY3RpdmUteHItaW5wdXQtc291cmNlcwordm9pZCBXZWJYUklucHV0U291
cmNlQXJyYXk6OmhhbmRsZUFkZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0aW1lc3Rh
bXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3VyY2VzLCBWZWN0b3I8UmVmPFdlYlhS
SW5wdXRTb3VyY2U+PiYgYWRkZWQsIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+JiByZW1v
dmVkLCBWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+JiBpbnB1dEV2ZW50cykKIHsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIGlucHV0U291cmNlIDogaW5wdXRTb3Vy
Y2VzKSB7CisgICAgICAgIGF1dG8gaW5kZXggPSBtX2lucHV0U291cmNlcy5maW5kTWF0Y2hpbmco
WyZpbnB1dFNvdXJjZV0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+aGFuZGxlKCkgPT0gaW5w
dXRTb3VyY2UuaGFuZGxlOyB9KTsKKyAgICAgICAgaWYgKGluZGV4ID09IFdURjo6bm90Rm91bmQp
IHsKKyAgICAgICAgICAgIC8vIFdoZW4gbmV3IFhSIGlucHV0IHNvdXJjZXMgYmVjb21lIGF2YWls
YWJsZSBmb3IgWFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2VyIGFnZW50IE1VU1QgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6CisgICAgICAgICAgICAvLyAxLiBJZiBzZXNzaW9uJ3MgcHJvbWlzZSBy
ZXNvbHZlZCBmbGFnIGlzIG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICAgICAg
Ly8gMi4gTGV0IGFkZGVkIGJlIGEgbmV3IGxpc3QuCisgICAgICAgICAgICAvLyAzLiBGb3IgZWFj
aCBuZXcgWFIgaW5wdXQgc291cmNlOgorICAgICAgICAgICAgLy8gICAzLjEgTGV0IGlucHV0U291
cmNlIGJlIGEgbmV3IFhSSW5wdXRTb3VyY2UgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHRoaXMg
WFJTZXNzaW9uLgorICAgICAgICAgICAgLy8gICAzLjIgQWRkIGlucHV0U291cmNlIHRvIGFkZGVk
LgorICAgICAgICAgICAgYXV0byBpbnB1dCA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZShtX2Rv
Y3VtZW50LCBtX3Nlc3Npb24sIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOworICAgICAgICAgICAg
YWRkZWQuYXBwZW5kKGlucHV0LmNvcHlSZWYoKSk7CisgICAgICAgICAgICBpbnB1dC0+cG9sbEV2
ZW50cyhpbnB1dEV2ZW50cyk7CisgICAgICAgICAgICBtX2lucHV0U291cmNlcy5hcHBlbmQoV1RG
TW92ZShpbnB1dCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBXaGVuIHRoZSBoYW5kZWRuZXNzLCB0YXJnZXRSYXlNb2RlLCBwcm9maWxlcywgb3IgcHJl
c2VuY2Ugb2YgYSBncmlwU3BhY2UgZm9yIGFueSBYUiBpbnB1dCBzb3VyY2VzIGNoYW5nZSBmb3Ig
WFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2VyIGFnZW50IE1VU1QgcnVuIHRoZSBmb2xsb3dpbmcg
c3RlcHMKKyAgICAgICAgLy8gMS4gSWYgc2Vzc2lvbuKAmXMgcHJvbWlzZSByZXNvbHZlZCBmbGFn
IGlzIG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICAvLyAyLiBMZXQgYWRkZWQg
YmUgYSBuZXcgbGlzdC4KKyAgICAgICAgLy8gMy4gTGV0IHJlbW92ZWQgYmUgYSBuZXcgbGlzdC4K
KyAgICAgICAgLy8gNC4gRm9yIGVhY2ggY2hhbmdlZCBYUiBpbnB1dCBzb3VyY2U6CisgICAgICAg
IC8vICA0LjEgTGV0IG9sZElucHV0U291cmNlIGJlIHRoZSBYUklucHV0U291cmNlIGluIHNlc3Np
b24ncyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2VzIHByZXZpb3VzbHkgYXNzb2NpYXRl
ZCB3aXRoIHRoZSBYUiBpbnB1dCBzb3VyY2UuCisgICAgICAgIC8vICA0LjEgTGV0IG5ld0lucHV0
U291cmNlIGJlIGEgbmV3IFhSSW5wdXRTb3VyY2UgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHNl
c3Npb24uCisgICAgICAgIC8vICA0LjEgQWRkIG9sZElucHV0U291cmNlIHRvIHJlbW92ZWQuCisg
ICAgICAgIC8vICA0LjEgQWRkIG5ld0lucHV0U291cmNlIHRvIGFkZGVkLgorICAgICAgICBhdXRv
JiBpbnB1dCA9IG1faW5wdXRTb3VyY2VzW2luZGV4XTsKKworICAgICAgICBpZiAoaW5wdXQtPnJl
cXVpcmVzSW5wdXRTb3VyY2VDaGFuZ2UoaW5wdXRTb3VyY2UpKSB7CisgICAgICAgICAgICByZW1v
dmVkLmFwcGVuZChpbnB1dC5jb3B5UmVmKCkpOworICAgICAgICAgICAgaW5wdXQtPmRpc2Nvbm5l
Y3QoKTsKKyAgICAgICAgICAgIGlucHV0LT5wb2xsRXZlbnRzKGlucHV0RXZlbnRzKTsKKyAgICAg
ICAgICAgIG1faW5wdXRTb3VyY2VzLnJlbW92ZShpbmRleCk7CisKKyAgICAgICAgICAgIGF1dG8g
bmV3SW5wdXRTb3VyY2UgPSBXZWJYUklucHV0U291cmNlOjpjcmVhdGUobV9kb2N1bWVudCwgbV9z
ZXNzaW9uLCB0aW1lc3RhbXAsIGlucHV0U291cmNlKTsKKyAgICAgICAgICAgIGFkZGVkLmFwcGVu
ZChuZXdJbnB1dFNvdXJjZS5jb3B5UmVmKCkpOworICAgICAgICAgICAgbmV3SW5wdXRTb3VyY2Ut
PnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOworICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXMuYXBw
ZW5kKFdURk1vdmUobmV3SW5wdXRTb3VyY2UpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGlucHV0LT51cGRhdGUodGltZXN0YW1wLCBpbnB1dFNvdXJjZSk7CisgICAgICAgICAgICBp
bnB1dC0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oCmluZGV4IDQzYjlkMWEwZmYxZWU1N2Q1OTRkZWY5
MjEzYzA2MzA4ODM4MzZkNjIuLmU5MjVmOTJmMjM3N2VlNzA0ZWQ3OWQ2OTIyMTA3MzcxMTY2ZDJi
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZUFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0
U291cmNlQXJyYXkuaApAQCAtMjcsMjUgKzI3LDQwIEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAK
KyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgV2ViWFJJbnB1dFNvdXJjZTsK
K2NsYXNzIFhSSW5wdXRTb3VyY2VFdmVudDsKK2NsYXNzIFdlYlhSU2Vzc2lvbjsKIAogY2xhc3Mg
V2ViWFJJbnB1dFNvdXJjZUFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNvdXJj
ZUFycmF5PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUklucHV0U291cmNlQXJy
YXkpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3VyY2VBcnJheSgpKTsgfQot
ICAgIH5XZWJYUklucHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7CisgICAgdXNpbmcgSW5wdXRT
b3VyY2VMaXN0ID0gVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZT47CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U291cmNlQXJyYXk+IGNyZWF0ZShEb2N1
bWVudCYsIFdlYlhSU2Vzc2lvbiYpOworICAgIH5XZWJYUklucHV0U291cmNlQXJyYXkoKTsKIAog
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIFdlYlhSSW5wdXRTb3VyY2UqIGl0ZW0o
dW5zaWduZWQpIGNvbnN0OwogCisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgdXBkYXRlKGRv
dWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYpOworCiBwcml2YXRlOgotICAg
IFdlYlhSSW5wdXRTb3VyY2VBcnJheSgpID0gZGVmYXVsdDsKKyAgICBXZWJYUklucHV0U291cmNl
QXJyYXkoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mKTsKKworICAgIHZvaWQgaGFuZGxlUmVtb3Zl
ZElucHV0U291cmNlcyhjb25zdCBJbnB1dFNvdXJjZUxpc3QmLCBWZWN0b3I8UmVmPFdlYlhSSW5w
dXRTb3VyY2U+PiYsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mKTsKKyAgICB2b2lk
IGhhbmRsZUFkZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0
IElucHV0U291cmNlTGlzdCYsIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+JiwgVmVjdG9y
PFJlZjxXZWJYUklucHV0U291cmNlPj4mLCBWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+
Jik7CisKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKKyAgICBXZWJYUlNlc3Npb24mIG1fc2Vz
c2lvbjsKKyAgICBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBmZjFlYjFmYTBmZTY3OTQxZjE3ZmUzNDMwOGFj
YzQyNjExMWM1MjBmLi5jNDRmMjJlZThhOTE2MjQ2ODEwZGJiNWFjMGNhODEyYTQyMzIyZTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCkBAIC01
Miw3ICs1Miw3IEBAIFJlZjxXZWJYUlNlc3Npb24+IFdlYlhSU2Vzc2lvbjo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwKIAogV2ViWFJTZXNzaW9uOjpXZWJY
UlNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLCBYUlNlc3Np
b25Nb2RlIG1vZGUsIFBsYXRmb3JtWFI6OkRldmljZSYgZGV2aWNlLCBGZWF0dXJlTGlzdCYmIHJl
cXVlc3RlZEZlYXR1cmVzKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKLSAgICAs
IG1faW5wdXRTb3VyY2VzKFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKCkpCisgICAgLCBt
X2lucHV0U291cmNlcyhXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZShkb2N1bWVudCwgKnRo
aXMpKQogICAgICwgbV94clN5c3RlbShzeXN0ZW0pCiAgICAgLCBtX21vZGUobW9kZSkKICAgICAs
IG1fZGV2aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCkBAIC02Miw4ICs2Miw4IEBAIFdlYlhSU2Vz
c2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3Rl
bSwgWFJTZXNzaW9uTW9kCiAgICAgLCBtX3RpbWVPcmlnaW4oTW9ub3RvbmljVGltZTo6bm93KCkp
CiAgICAgLCBtX3ZpZXdzKGRldmljZS52aWV3cyhtb2RlKSkKIHsKLSAgICBtX2RldmljZS0+aW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKG1vZGUpOwogICAgIG1fZGV2aWNlLT5zZXRUcmFj
a2luZ0FuZFJlbmRlcmluZ0NsaWVudChtYWtlV2Vha1B0cigqdGhpcykpOworICAgIG1fZGV2aWNl
LT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcobW9kZSk7CiAKICAgICAvLyBodHRwczov
L2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNyZWYtZm9yLWRvbS14cnJlZmVyZW5jZXNw
YWNldHlwZS12aWV3ZXIlRTIlOTElQTIKICAgICAvLyBFdmVyeSBzZXNzaW9uIE1VU1Qgc3VwcG9y
dCB2aWV3ZXIgWFJSZWZlcmVuY2VTcGFjZXMuCkBAIC0zMTUsNiArMzE1LDExIEBAIGJvb2wgV2Vi
WFJTZXNzaW9uOjpzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
bW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbW1lcnNpdmVWciAmJiBtX2RldmljZS0+c3VwcG9ydHNW
aWV3cG9ydFNjYWxpbmcoKTsKIH0KIAorYm9vbCBXZWJYUlNlc3Npb246OmlzUG9zaXRpb25FbXVs
YXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRl
ZCB8fCAhbV9mcmFtZURhdGEuaXNQb3NpdGlvblZhbGlkOworfQorCiAvLyBodHRwczovL2ltbWVy
c2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNzaHV0LWRvd24tdGhlLXNlc3Npb24KIHZvaWQgV2Vi
WFJTZXNzaW9uOjpzaHV0ZG93bihJbml0aWF0ZWRCeVN5c3RlbSBpbml0aWF0ZWRCeVN5c3RlbSkK
IHsKQEAgLTMzOCw2ICszNDMsOCBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6c2h1dGRvd24oSW5pdGlh
dGVkQnlTeXN0ZW0gaW5pdGlhdGVkQnlTeXN0ZW0pCiAgICAgLy8gNC4gUmVtb3ZlIHNlc3Npb24g
ZnJvbSB0aGUgbGlzdCBvZiBpbmxpbmUgc2Vzc2lvbnMuCiAgICAgbV94clN5c3RlbS5zZXNzaW9u
RW5kZWQoKnRoaXMpOwogCisgICAgbV9pbnB1dFNvdXJjZXMtPmNsZWFyKCk7CisKICAgICBpZiAo
aW5pdGlhdGVkQnlTeXN0ZW0gPT0gSW5pdGlhdGVkQnlTeXN0ZW06OlllcykgewogICAgICAgICAv
LyBJZiB3ZSBnZXQgaGVyZSwgdGhlIHNlc3Npb24gdGVybWluYXRpb24gd2FzIHRyaWdnZXJlZCBi
eSB0aGUgc3lzdGVtIHJhdGhlciB0aGFuCiAgICAgICAgIC8vIHZpYSBYUlNlc3Npb24uZW5kKCku
IFNpbmNlIHRoZSBzeXN0ZW0gaGFzIGNvbXBsZXRlZCB0aGUgc2Vzc2lvbiBzaHV0ZG93biwgd2Ug
Y2FuCkBAIC00MTEsNiArNDE4LDI1IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpzdG9wKCkKIHsKIH0K
IAordm9pZCBXZWJYUlNlc3Npb246OnNlc3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzKFZl
Y3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+JiYgaW5wdXRT
b3VyY2VzKQoreworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIv
I2RvbS14cnN5c3RlbS1yZXF1ZXN0c2Vzc2lvbgorICAgIC8vIDUuNC4xMCBRdWV1ZSBhIHRhc2sg
dG8gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOiBOT1RFOiBUaGVzZSBzdGVwcyBlbnN1cmUg
dGhhdCBpbml0aWFsIGlucHV0c291cmNlc2NoYW5nZQorICAgIC8vIGV2ZW50cyBvY2N1ciBhZnRl
ciB0aGUgaW5pdGlhbCBzZXNzaW9uIGlzIHJlc29sdmVkLgorICAgIC8vICAgICAxLiBTZXQgc2Vz
c2lvbidzIHByb21pc2UgcmVzb2x2ZWQgZmxhZyB0byB0cnVlLgorICAgIC8vICAgICAyLiBMZXQg
c291cmNlcyBiZSBhbnkgZXhpc3RpbmcgaW5wdXQgc291cmNlcyBhdHRhY2hlZCB0byBzZXNzaW9u
LgorICAgIC8vICAgICAzLiBJZiBzb3VyY2VzIGlzIG5vbi1lbXB0eSwgcGVyZm9ybSB0aGUgZm9s
bG93aW5nIHN0ZXBzOgorICAgIC8vICAgICAgICAxLiBTZXQgc2Vzc2lvbidzIGxpc3Qgb2YgYWN0
aXZlIFhSIGlucHV0IHNvdXJjZXMgdG8gc291cmNlcy4KKyAgICAvLyAgICAgICAgMi4gRmlyZSBh
biBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50IG5hbWVkIGlucHV0c291cmNlc2NoYW5nZSBvbiBz
ZXNzaW9uIHdpdGggYWRkZWQgc2V0IHRvIHNvdXJjZXMuCisKKyAgICBhdXRvIHRpbWVzdGFtcCA9
IChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fdGltZU9yaWdpbikubWlsbGlzZWNvbmRzKCk7CisK
KyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhS
LCBbdGhpcywgdGltZXN0YW1wLCBpbnB1dFNvdXJjZXMgPSBXVEZNb3ZlKGlucHV0U291cmNlcyld
KCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5wdXRQcm9taXNlUmVzb2x2ZWQgPSB0cnVlOworICAg
ICAgICBtX2lucHV0U291cmNlcy0+dXBkYXRlKHRpbWVzdGFtcCwgaW5wdXRTb3VyY2VzKTsKKyAg
ICB9KTsKK30KKwogdm9pZCBXZWJYUlNlc3Npb246OnNlc3Npb25EaWRFbmQoKQogewogICAgIC8v
IFRoaXMgY2FuIGJlIGNhbGxlZCBhcyBhIHJlc3VsdCBvZiBmaW5pc2hpbmcgdGhlIHNodXRkb3du
IGluaXRpYXRlZApAQCAtNTIzLDYgKzU0OSw5IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpvbkZyYW1l
KFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYgZnJhbWVEYXRhKQogICAgICAgICAgICAg
ZnJhbWUtPnNldEFjdGl2ZSh0cnVlKTsKIAogICAgICAgICAgICAgLy8gNi40LkFwcGx5IGZyYW1l
IHVwZGF0ZXMgZm9yIGZyYW1lLgorICAgICAgICAgICAgaWYgKG1faW5wdXRQcm9taXNlUmVzb2x2
ZWQpCisgICAgICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXMtPnVwZGF0ZShub3csIGZyYW1lRGF0
YS5pbnB1dFNvdXJjZXMpOworCiAgICAgICAgICAgICBmcmFtZS0+c2V0RnJhbWVEYXRhKFdURk1v
dmUoZnJhbWVEYXRhKSk7CiAKICAgICAgICAgICAgIC8vIDYuNS5Gb3IgZWFjaCBlbnRyeSBpbiBz
ZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxs
YmFja3MsIGluIG9yZGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmgKaW5kZXggZGM1MDhhY2RhMWUwMjRlZjBhZmJmYWViNjA0OWU5M2M0Yjg0ODJiMy4uMmM5
ZjE4OWEwM2MzMDc4OTZhYjYwNTc2ZjM1MjI5MjE4ZWJjODM5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC04Myw2ICs4Myw3IEBAIHB1YmxpYzoK
ICAgICBJbnRTaXplIG5hdGl2ZVdlYkdMRnJhbWVidWZmZXJSZXNvbHV0aW9uKCkgY29uc3Q7CiAg
ICAgSW50U2l6ZSByZWNvbW1lbmRlZFdlYkdMRnJhbWVidWZmZXJSZXNvbHV0aW9uKCkgY29uc3Q7
CiAgICAgYm9vbCBzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpIGNvbnN0OyAKKyAgICBib29sIGlz
UG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0OwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CkBA
IC0xMTAsNiArMTExLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAog
ICAgIC8vIFBsYXRmb3JtWFI6OlRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50CisgICAgdm9pZCBz
ZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyhWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OklucHV0U291cmNlPiYmKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25EaWRF
bmQoKSBmaW5hbDsKIAogICAgIGVudW0gY2xhc3MgSW5pdGlhdGVkQnlTeXN0ZW0gOiBib29sIHsg
Tm8sIFllcyB9OwpAQCAtMTUxLDYgKzE1Myw5IEBAIHByaXZhdGU6CiAgICAgLy8gSW4gbWV0ZXJz
LgogICAgIGRvdWJsZSBtX21pbmltdW1OZWFyQ2xpcFBsYW5lIHsgMC4xIH07CiAgICAgZG91Ymxl
IG1fbWF4aW11bUZhckNsaXBQbGFuZSB7IDEwMDAuMCB9OworCisgICAgLy8gaHR0cHM6Ly9pbW1l
cnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jeHJzZXNzaW9uLXByb21pc2UtcmVzb2x2ZWQKKyAg
ICBib29sIG1faW5wdXRQcm9taXNlUmVzb2x2ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5j
cHAKaW5kZXggZmE4ODFkNGJiYjRmNTUxYmQ2YTMyODI5MmIwMjI5ZWExN2Q5NDlmOS4uMTE5MjE0
MTg5ZmMyMDFkODUxMzQ0ZGViMGQzMTZkMzlmNDc4YTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwCkBAIC01NCw2ICs1NCwxMSBAQCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBXZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4oKSBjb25zdAogfQogCiAKK2Jv
b2wgV2ViWFJTcGFjZTo6aXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
c2Vzc2lvbigpLmlzUG9zaXRpb25FbXVsYXRlZCgpOworfQorCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoV2ViWFJWaWV3ZXJTcGFjZSk7CiAKIFdlYlhSVmlld2VyU3BhY2U6OldlYlhSVmll
d2VyU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCmluZGV4IDRhOWRiZWZkZDNiNTQ3
ZjhhMDYyM2QyNjU2NDlkNmY5MGJiOWJmNGEuLmQ4Zjg4ZWE1OGI5NTg0NTE4ZDQ3NjU0MGVkYzhk
ZGRiMTk2NzlkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5o
CkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlhSU2Vzc2lvbiYgc2Vz
c2lvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2
ZU9yaWdpbigpIGNvbnN0ID0gMDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBlZmZlY3RpdmVP
cmlnaW4oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkKCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlN5c3RlbS5jcHAKaW5kZXggMDliYzhiZTU2MmU2ODI3MzQ1ZTM0MWM1ZjExOTM5Yjk1OTAyNWIx
Ny4uYjI0ZmQ3NGUwOWUzODBkNjQyMDkwODJlZGE0MGNlZjg1Mzk0ODIyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAgLTQzOCwxNCArNDM4LDcg
QEAgdm9pZCBXZWJYUlN5c3RlbTo6cmVxdWVzdFNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBY
UlNlc3Npb25Nb2RlIG1vZGUsIGNvbnN0IFgKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1v
dmUoc2Vzc2lvbikpOwogICAgICAgICByZWplY3RQcm9taXNlV2l0aE5vdFN1cHBvcnRlZEVycm9y
LnJlbGVhc2UoKTsKIAotICAgICAgICAvLyBGSVhNRToKLSAgICAgICAgLy8gNS40LjEwIFF1ZXVl
IGEgdGFzayB0byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6IE5PVEU6IFRoZXNlIHN0ZXBz
IGVuc3VyZSB0aGF0IGluaXRpYWwgaW5wdXRzb3VyY2VzY2hhbmdlCi0gICAgICAgIC8vIGV2ZW50
cyBvY2N1ciBhZnRlciB0aGUgaW5pdGlhbCBzZXNzaW9uIGlzIHJlc29sdmVkLgotICAgICAgICAv
LyAgICAgMS4gU2V0IHNlc3Npb24ncyBwcm9taXNlIHJlc29sdmVkIGZsYWcgdG8gdHJ1ZS4KLSAg
ICAgICAgLy8gICAgIDIuIExldCBzb3VyY2VzIGJlIGFueSBleGlzdGluZyBpbnB1dCBzb3VyY2Vz
IGF0dGFjaGVkIHRvIHNlc3Npb24uCi0gICAgICAgIC8vICAgICAzLiBJZiBzb3VyY2VzIGlzIG5v
bi1lbXB0eSwgcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICAvLyAgICAgICAg
MS4gU2V0IHNlc3Npb24ncyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2VzIHRvIHNvdXJj
ZXMuCi0gICAgICAgIC8vICAgICAgICAyLiBGaXJlIGFuIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZl
bnQgbmFtZWQgaW5wdXRzb3VyY2VzY2hhbmdlIG9uIHNlc3Npb24gd2l0aCBhZGRlZCBzZXQgdG8g
c291cmNlcy4KKyAgICAgICAgLy8gNS40LjEwIGlzIGhhbmRsZWQgaW4gV2ViWFJTZXNzaW9uOjpz
ZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcy4KICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkhhbmRlZG5lc3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvWFJIYW5kZWRuZXNzLmgKaW5kZXggOTMzMzAzNGQwY2Q0OWFj
OGRlZTkwMmEwODE2NDQ4MDQzNzhjYmMyYy4uODU5ODVjY2FmYTZiY2Q0NTZhYzBiNjQ1MmU3MDRh
ZTBiZmUwNzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkhh
bmRlZG5lc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSGFuZGVkbmVz
cy5oCkBAIC0yNywxMyArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUg
IlBsYXRmb3JtWFIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFhSSGFu
ZGVkbmVzcyB7Ci0gICAgTm9uZSwKLSAgICBMZWZ0LAotICAgIFJpZ2h0LAotfTsKK3VzaW5nIFhS
SGFuZGVkbmVzcyA9IFBsYXRmb3JtWFI6OlhSSGFuZGVkbmVzczsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5w
dXRTb3VyY2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRT
b3VyY2VFdmVudC5jcHAKaW5kZXggMjI2MzFhYjU1Mjk3MDU2Y2MwNjNkNzQ0Njg5ZDNlMDMzY2Ew
ZmE1Ny4uZmM4OGJmN2E3OWI2OTg0MDcwNDljZjYwMGI5NzE3ZWJkMzYyYzIyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZUV2ZW50LmNwcApA
QCAtMzAsOSArMzAsMTIgQEAKIAogI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJX
ZWJYUklucHV0U291cmNlLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoWFJJbnB1
dFNvdXJjZUV2ZW50KTsKKwogUmVmPFhSSW5wdXRTb3VyY2VFdmVudD4gWFJJbnB1dFNvdXJjZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6
ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWFJJ
bnB1dFNvdXJjZUV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKQEAgLTQyLDcg
KzQ1LDYgQEAgWFJJbnB1dFNvdXJjZUV2ZW50OjpYUklucHV0U291cmNlRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGkKICAgICA6IEV2ZW50KHR5cGUsIGluaXRp
YWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBtX2ZyYW1lKGluaXRpYWxpemVyLmZyYW1lKQogICAg
ICwgbV9pbnB1dFNvdXJjZShpbml0aWFsaXplci5pbnB1dFNvdXJjZSkKLSAgICAsIG1fYnV0dG9u
SW5kZXgoaW5pdGlhbGl6ZXIuYnV0dG9uSW5kZXgpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwog
ICAgIEFTU0VSVChtX2lucHV0U291cmNlKTsKQEAgLTYwLDkgKzYyLDkgQEAgY29uc3QgV2ViWFJJ
bnB1dFNvdXJjZSYgWFJJbnB1dFNvdXJjZUV2ZW50OjppbnB1dFNvdXJjZSgpIGNvbnN0CiAgICAg
cmV0dXJuICptX2lucHV0U291cmNlOwogfQogCi1PcHRpb25hbDxpbnQ+IFhSSW5wdXRTb3VyY2VF
dmVudDo6YnV0dG9uSW5kZXgoKSBjb25zdAordm9pZCBYUklucHV0U291cmNlRXZlbnQ6OnNldEZy
YW1lQWN0aXZlKGJvb2wgYWN0aXZlKQogewotICAgIHJldHVybiBtX2J1dHRvbkluZGV4OworICAg
IG1fZnJhbWUtPnNldEFjdGl2ZShhY3RpdmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQu
aAppbmRleCA4YzdmYzA0NzQ3YTJiZjExZWE4YjJmYjdiNWNhOWY0NTRhYzE1MzAzLi5lM2M1NDEx
MzQ1NTFiYzI3NWFmMGZjNDFiNjdlYWM0Mzk4MzNmMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZUV2ZW50LmgKQEAgLTM3LDExICszNywxMSBA
QCBjbGFzcyBXZWJYUkZyYW1lOwogY2xhc3MgV2ViWFJJbnB1dFNvdXJjZTsKIAogY2xhc3MgWFJJ
bnB1dFNvdXJjZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKKyAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFhSSW5wdXRTb3VyY2VFdmVudCk7CiBwdWJsaWM6CiAgICAgc3RydWN0IEluaXQg
OiBFdmVudEluaXQgewogICAgICAgICBSZWZQdHI8V2ViWFJGcmFtZT4gZnJhbWU7CiAgICAgICAg
IFJlZlB0cjxXZWJYUklucHV0U291cmNlPiBpbnB1dFNvdXJjZTsKLSAgICAgICAgT3B0aW9uYWw8
aW50PiBidXR0b25JbmRleDsKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxYUklucHV0U291cmNl
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCA9
IElzVHJ1c3RlZDo6Tm8pOwpAQCAtNDksNyArNDksOSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBX
ZWJYUkZyYW1lJiBmcmFtZSgpIGNvbnN0OwogICAgIGNvbnN0IFdlYlhSSW5wdXRTb3VyY2UmIGlu
cHV0U291cmNlKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8aW50PiBidXR0b25JbmRleCgpIGNvbnN0
OworICAgIHZvaWQgc2V0RnJhbWVBY3RpdmUoYm9vbCk7CisKKyAgICBFdmVudEludGVyZmFjZSBl
dmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFhSSW5wdXRTb3VyY2VFdmVudElu
dGVyZmFjZVR5cGU7IH0KIAogcHJpdmF0ZToKICAgICBYUklucHV0U291cmNlRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaAppbmRl
eCAwM2E2NGI3YjY4ZDRmNjIyNmQ0MmQxZjI3ZWQyMzIyMWQyNmU4YTg0Li5kZDU0NzhmOWZmYWM0
MzE3MzhhZmI5ZWEyYzE5MTk4NGYzNzJkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaApAQCAtNTIsNiAr
NTIsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNl
Pj4mIGFkZGVkKCkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291
cmNlPj4mIHJlbW92ZWQoKSBjb25zdDsKIAorICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJm
YWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudEludGVy
ZmFjZVR5cGU7IH0KKwogcHJpdmF0ZToKICAgICBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUlRhcmdldFJheU1vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvWFJUYXJnZXRSYXlNb2RlLmgKaW5kZXggMWZjYTQ0ZTQ1MWI5
N2M1NjAyNmUxNDViNTIyMzMxZjgxNjViYWU3Zi4uYjczYjRlMGNkMWYzNGI4YmIxODQ1YzVkNTA0
MzQwNmQ3YTcxY2Q3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9Y
UlRhcmdldFJheU1vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSVGFy
Z2V0UmF5TW9kZS5oCkBAIC0yOSwxMSArMjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWVudW0gY2xhc3MgWFJUYXJnZXRSYXlNb2RlIHsKLSAgICBHYXplLAotICAgIFRyYWNrZWRQb2lu
dGVyLAotICAgIFNjcmVlbiwKLX07CisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorCit1c2luZyBY
UlRhcmdldFJheU1vZGUgPSBQbGF0Zm9ybVhSOjpYUlRhcmdldFJheU1vZGU7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvR2FtZXBhZENvbnN0YW50cy5jcHAKaW5kZXggYzg1ZTI2YTc5OWRkYzVkNTU4MWNlMTIzZTVm
ZmIxNzM1MzJjYWQzMy4uZmMzOTYwZjM5ZjQ0NmUzNTQyNWYxNDRhZjg3NWE1Zjk0ZmI2M2M3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3Rh
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25z
dGFudHMuY3BwCkBAIC00Myw2ICs0MywxNSBAQCBjb25zdCBXVEY6OlN0cmluZyYgc3RhbmRhcmRH
YW1lcGFkTWFwcGluZ1N0cmluZygpCiAgICAgcmV0dXJuIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmc7
CiB9CiAKKyNpZiBFTkFCTEUoV0VCWFIpCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHVi
LmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8jZG9tLWdhbWVwYWRtYXBwaW5ndHlwZS14ci1zdGFu
ZGFyZAorY29uc3QgV1RGOjpTdHJpbmcmIHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4geHJTdGFuZGFyZEdhbWVwYWRN
YXBwaW5nID0gInhyLXN0YW5kYXJkIjsKKyAgICByZXR1cm4geHJTdGFuZGFyZEdhbWVwYWRNYXBw
aW5nOworfQorI2VuZGlmCisKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCmluZGV4IDdl
MTY5ZjRkYThiOThmZTZlZmFhMWUyMzBlMmE0ZTkyNGEyMzY3MzMuLjYzM2FmZDczZDM3NDdmYWEz
YTA4YWU3NTZjYjQzMjE1MTI1ZDI1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCkBAIC02Miw2ICs2Miw5IEBAIGV4dGVybiBj
b25zdCBzaXplX3QgbnVtYmVyT2ZTdGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aEhvbWVCdXR0b247
CiBleHRlcm4gY29uc3QgR2FtZXBhZEJ1dHRvblJvbGUgbWF4aW11bUdhbWVwYWRCdXR0b247CiAK
IGNvbnN0IFdURjo6U3RyaW5nJiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCk7CisjaWYg
RU5BQkxFKFdFQlhSKQorY29uc3QgV1RGOjpTdHJpbmcmIHhyU3RhbmRhcmRHYW1lcGFkTWFwcGlu
Z1N0cmluZygpOworI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IDU2ZDhjNmM4YmRhMmQxYjg2ODMzMzFk
MWQxMmU0NmFhMTNlYzFmMTYuLjM0MmRiNjZmNWMyYjdjOTIyYTI0ZWNiNTc3ODRjNTg2ZmYyNjI0
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAgLTUyLDE2ICs1
MiwyNCBAQCBlbnVtIGNsYXNzIEV5ZSB7CiB9OwogCiAjaWYgRU5BQkxFKFdFQlhSKQordXNpbmcg
SW5wdXRTb3VyY2VIYW5kbGUgPSBpbnQ7CiAKLWNsYXNzIFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xp
ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50PiB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSA9IGRl
ZmF1bHQ7CisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNlbnVtZGVm
LXhyaGFuZGVkbmVzcworZW51bSBjbGFzcyBYUkhhbmRlZG5lc3MgeworICAgIE5vbmUsCisgICAg
TGVmdCwKKyAgICBSaWdodCwKK307CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbkRpZEVuZCgp
ID0gMDsKLSAgICAvLyBGSVhNRTogaGFuZGxlIGZyYW1lIHVwZGF0ZQotICAgIC8vIEZJWE1FOiBo
YW5kbGUgdmlzaWJpbGl0eSBjaGFuZ2VzCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHVi
LmlvL3dlYnhyLyNlbnVtZGVmLXhydGFyZ2V0cmF5bW9kZQorZW51bSBjbGFzcyBYUlRhcmdldFJh
eU1vZGUgeworICAgIEdhemUsCisgICAgVHJhY2tlZFBvaW50ZXIsCisgICAgU2NyZWVuLAogfTsK
IAorY2xhc3MgVHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ7CisKIGNsYXNzIERldmljZSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZXZpY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
RGV2aWNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRGV2aWNlKTsKQEAgLTEyMiw2ICsxMzAsMjggQEAgcHVibGljOgogICAgICAgICAg
ICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGJvdW5kczsKICAgICAgICAgfTsKIAorICAg
ICAgICBzdHJ1Y3QgSW5wdXRTb3VyY2VCdXR0b24geworICAgICAgICAgICAgYm9vbCB0b3VjaGVk
IHsgZmFsc2UgfTsKKyAgICAgICAgICAgIGJvb2wgcHJlc3NlZCB7IGZhbHNlIH07CisgICAgICAg
ICAgICBmbG9hdCBwcmVzc2VkVmFsdWUgeyAwIH07CisgICAgICAgIH07CisKKyAgICAgICAgc3Ry
dWN0IElucHV0U291cmNlUG9zZSB7CisgICAgICAgICAgICBQb3NlIHBvc2U7CisgICAgICAgICAg
ICBib29sIGlzUG9zaXRpb25FbXVsYXRlZCB7IGZhbHNlIH07CisgICAgICAgIH07CisKKyAgICAg
ICAgc3RydWN0IElucHV0U291cmNlIHsKKyAgICAgICAgICAgIElucHV0U291cmNlSGFuZGxlIGhh
bmRsZSB7IDAgfTsKKyAgICAgICAgICAgIFhSSGFuZGVkbmVzcyBoYW5kZW5lc3MgeyBYUkhhbmRl
ZG5lc3M6Ok5vbmUgfTsKKyAgICAgICAgICAgIFhSVGFyZ2V0UmF5TW9kZSB0YXJnZXRSYXlNb2Rl
IHsgWFJUYXJnZXRSYXlNb2RlOjpHYXplIH07CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBw
cm9maWxlczsKKyAgICAgICAgICAgIElucHV0U291cmNlUG9zZSBwb2ludGVyT3JpZ2luOworICAg
ICAgICAgICAgT3B0aW9uYWw8SW5wdXRTb3VyY2VQb3NlPiBncmlwT3JpZ2luOworICAgICAgICAg
ICAgVmVjdG9yPElucHV0U291cmNlQnV0dG9uPiBidXR0b25zOworICAgICAgICAgICAgVmVjdG9y
PGZsb2F0PiBheGVzOworICAgICAgICB9OworCiAgICAgICAgIGJvb2wgaXNUcmFja2luZ1ZhbGlk
IHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBpc1Bvc2l0aW9uVmFsaWQgeyBmYWxzZSB9OwogICAg
ICAgICBib29sIGlzUG9zaXRpb25FbXVsYXRlZCB7IGZhbHNlIH07CkBAIC0xMzAsNiArMTYwLDcg
QEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxQb3NlPiBmbG9vclRyYW5zZm9ybTsKICAgICAg
ICAgU3RhZ2VQYXJhbWV0ZXJzIHN0YWdlUGFyYW1ldGVyczsKICAgICAgICAgVmVjdG9yPFZpZXc+
IHZpZXdzOworICAgICAgICBWZWN0b3I8SW5wdXRTb3VyY2U+IGlucHV0U291cmNlczsKICAgICB9
OwogCiAgICAgc3RydWN0IFZpZXdEYXRhIHsKQEAgLTE1Niw2ICsxODcsMjAgQEAgcHJvdGVjdGVk
OgogICAgIFdlYWtQdHI8VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ+IG1fdHJhY2tpbmdBbmRS
ZW5kZXJpbmdDbGllbnQ7CiB9OwogCitjbGFzcyBUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudD4geworcHVi
bGljOgorICAgIHZpcnR1YWwgflRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KCkgPSBkZWZhdWx0
OworCisgICAgLy8gVGhpcyBldmVudCBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IGluaXRpYWwgaW5w
dXRzb3VyY2VzY2hhbmdlIGV2ZW50cyBvY2N1ciBhZnRlciB0aGUgaW5pdGlhbCBzZXNzaW9uIGlz
IHJlc29sdmVkLgorICAgIC8vIFdlYnhSIGFwcHMgY2FuIHdhaXQgZm9yIHRoZSBpbnB1dCBzb3Vy
Y2UgZXZlbnRzIGJlZm9yZSBjYWxsaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZS4KKyAgICAvLyBQ
ZXItZnJhbWUgaW5wdXQgc291cmNlIHVwZGF0ZXMgYXJlIGhhbmRsZWQgdmlhIHNlc3Npb24ucmVx
dWVzdEFuaW1hdGlvbkZyYW1lIHdoaWNoIGNhbGxzIERldmljZTo6cmVxdWVzdEZyYW1lLgorICAg
IHZpcnR1YWwgdm9pZCBzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyhWZWN0b3I8RGV2
aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
c3Npb25EaWRFbmQoKSA9IDA7CisgICAgLy8gRklYTUU6IGhhbmRsZSBmcmFtZSB1cGRhdGUKKyAg
ICAvLyBGSVhNRTogaGFuZGxlIHZpc2liaWxpdHkgY2hhbmdlcworfTsKKworCiBjbGFzcyBJbnN0
YW5jZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEluc3RhbmNlJiBzaW5nbGV0b24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAppbmRleCAzM2I1YzJhMzA1ZTdm
MjEzNjA4ZTQyMmViNjIyN2MzNzcwNzEzMzRhLi4yMWVmNmJjNTAyYmRiYWE1NjczYWMzNTk4OWI3
YWRiYzE0MTVhYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VY
UkRldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2Uu
Y3BwCkBAIC03OSw2ICs3OSwyMiBAQCBXZWJDb3JlOjpJbnRTaXplIFNpbXVsYXRlZFhSRGV2aWNl
OjpyZWNvbW1lbmRlZFJlc29sdXRpb24oUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZAogICAgIHJldHVy
biBJbnRTaXplKDIsIDIpOwogfQogCit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjppbml0aWFsaXpl
VHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpCit7CisgICAgaWYg
KG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQpIHsKKyAgICAgICAgLy8gV2ViWFIgRmFrZURl
dmljZSB3YWl0cyBmb3Igc2ltdWxhdGVJbnB1dENvbm5lY3Rpb24gY2FsbHMgdG8gYWRkIGlucHV0
IHNvdXJjZXMtCisgICAgICAgIC8vIFRoZXJlIGlzIG5vIHdheSB0byBrbm93IGhvdyBtYW55IHNp
bXVsYXRlSW5wdXRDb25uZWN0aW9uIGNhbGxzIHdpbGwgdGhlIGRldmljZSByZWNlaXZlLAorICAg
ICAgICAvLyBzbyBub3RpZnkgdGhlIGlucHV0IHNvdXJjZXMgaGF2ZSBiZWVuIGluaXRpYWxpemVk
IHdpdGggYW4gZW1wdHkgbGlzdC4gVGhpcyBpcyBub3QgYSBwcm9ibGVtIGJlY2F1c2UKKyAgICAg
ICAgLy8gV1BUIHRlc3RzIHJlbHkgb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHVwZGF0ZXMgdG8g
dGVzdCB0aGUgaW5wdXQgc291cmNlcy4KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgeworICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAobV90cmFja2lu
Z0FuZFJlbmRlcmluZ0NsaWVudCkKKyAgICAgICAgICAgICAgICBtX3RyYWNraW5nQW5kUmVuZGVy
aW5nQ2xpZW50LT5zZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyh7IH0pOworICAgICAg
ICB9KTsKKyAgICB9Cit9CisKIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNodXREb3duVHJhY2tp
bmdBbmRSZW5kZXJpbmcoKQogewogICAgIGlmIChtX3N1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRp
b24pCkBAIC0xMjIsNiArMTM4LDExIEBAIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1lVGlt
ZXJGaXJlZCgpCiAgICAgICAgIGRhdGEudmlld3MuYXBwZW5kKHZpZXcpOwogICAgIH0KIAorICAg
IGZvciAoYXV0byYgaW5wdXQgOiBtX2lucHV0Q29ubmVjdGlvbnMpIHsKKyAgICAgICAgaWYgKGlu
cHV0LT5pc0Nvbm5lY3RlZCgpKQorICAgICAgICAgICAgZGF0YS5pbnB1dFNvdXJjZXMuYXBwZW5k
KGlucHV0LT5nZXRGcmFtZURhdGEoKSk7CisgICAgfQorCiAgICAgaWYgKG1fRnJhbWVDYWxsYmFj
aykKICAgICAgICAgbV9GcmFtZUNhbGxiYWNrKFdURk1vdmUoZGF0YSkpOwogfQpAQCAtMjIyLDEx
ICsyNDMsMTUgQEAgdm9pZCBXZWJGYWtlWFJEZXZpY2U6OmNsZWFyRmxvb3JPcmlnaW4oKQogCiB2
b2lkIFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVSZXNldFBvc2UoKQogeworCiB9CiAKLVJlZjxX
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVJbnB1dFNv
dXJjZUNvbm5lY3Rpb24oRmFrZVhSSW5wdXRTb3VyY2VJbml0KQorUmVmPFdlYkZha2VYUklucHV0
Q29udHJvbGxlcj4gV2ViRmFrZVhSRGV2aWNlOjpzaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlv
bihjb25zdCBGYWtlWFJJbnB1dFNvdXJjZUluaXQmIGluaXQpCiB7Ci0gICAgcmV0dXJuIFdlYkZh
a2VYUklucHV0Q29udHJvbGxlcjo6Y3JlYXRlKCk7CisgICAgYXV0byBoYW5kbGUgPSArK21JbnB1
dFNvdXJjZUhhbmRsZUluZGV4OworICAgIGF1dG8gaW5wdXQgPSBXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXI6OmNyZWF0ZShoYW5kbGUsIGluaXQpOworICAgIG1fZGV2aWNlLmFkZElucHV0Q29ubmVj
dGlvbihpbnB1dC5jb3B5UmVmKCkpOworICAgIHJldHVybiBpbnB1dDsKIH0KIAogRXhjZXB0aW9u
T3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U+IFdlYkZha2VYUkRldmljZTo6
cGFyc2VSaWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQmIGluaXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAppbmRleCBlMTI3YzA1OWQz
MTg2NGI0YzhkMDgyNjNmZDFkMjlmY2E0MzUxYzc5Li5iMjU5OGQ4Mzg4NTI4MWFjNWYwMGQ3NTc0
ZTNjZWMwNzE1ZGIyZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZh
a2VYUkRldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNl
LmgKQEAgLTc5LDkgKzc5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN1cHBvcnRzU2h1dGRv
d25Ob3RpZmljYXRpb24oYm9vbCBzdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uKSB7IG1fc3Vw
cG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbiA9IHN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb247
IH0KICAgICB2b2lkIHNpbXVsYXRlU2h1dGRvd25Db21wbGV0ZWQoKTsKICAgICB2b2lkIHNjaGVk
dWxlT25OZXh0RnJhbWUoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIGFkZElucHV0Q29u
bmVjdGlvbihSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiYmIGlucHV0KSB7IG1faW5wdXRD
b25uZWN0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnB1dCkpOyB9OwogcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihQbGF0Zm9ybVhSOjpTZXNzaW9uTW9k
ZSkgZmluYWw7Ci0gICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZv
cm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5n
QW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbDsKICAgICB2b2lkIHNo
dXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vz
c2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdXBwb3J0
c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CiAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3Bh
Y2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KQEAgLTEwMSw2ICsx
MDIsNyBAQCBwcml2YXRlOgogICAgIFJlcXVlc3RGcmFtZUNhbGxiYWNrIG1fRnJhbWVDYWxsYmFj
azsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5kaW5nVXBkYXRlczsKICAgICBG
cmFtZURhdGE6OlN0YWdlUGFyYW1ldGVycyBtX3N0YWdlUGFyYW1ldGVyczsKKyAgICBWZWN0b3I8
UmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4+IG1faW5wdXRDb25uZWN0aW9uczsKIH07CiAK
IGNsYXNzIFdlYkZha2VYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkZha2VY
UkRldmljZT4gewpAQCAtMTI1LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2ltdWxh
dGVSZXNldFBvc2UoKTsKIAotICAgIFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IHNpbXVs
YXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKEZha2VYUklucHV0U291cmNlSW5pdCk7CisgICAgUmVm
PFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4gc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24o
Y29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0Jik7CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmPEZha2VYUlZpZXc+PiBwYXJzZVZpZXcoY29uc3QgRmFrZVhSVmlld0luaXQmKTsKIApAQCAt
MTM1LDEyICsxMzcsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaW11bGF0ZVNodXRkb3duKCk7
CiAKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OlBvc2U+IHBhcnNlUmlnaWRUcmFuc2Zvcm0oY29uc3QgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0
Jik7CisKIHByaXZhdGU6CiAgICAgV2ViRmFrZVhSRGV2aWNlKCk7CiAKLSAgICBzdGF0aWMgRXhj
ZXB0aW9uT3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U+IHBhcnNlUmlnaWRU
cmFuc2Zvcm0oY29uc3QgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0Jik7Ci0KICAgICBTaW11bGF0
ZWRYUkRldmljZSBtX2RldmljZTsKKyAgICBQbGF0Zm9ybVhSOjpJbnB1dFNvdXJjZUhhbmRsZSBt
SW5wdXRTb3VyY2VIYW5kbGVJbmRleCB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyLmNwcAppbmRleCA3OTBjOTg3MGJiNDhjNTFjZTg1NWE1YWUyZmIyYTM2NzFjYTcxNmIwLi43
YzgyNzI4OTYxMGRiZmNkMWQ0OTg1Yzc1NjE5YTUxNTBiOGU3YTAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwCkBAIC0yNyw2
MyArMjcsMTUzIEBACiAjaW5jbHVkZSAiV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgiCiAKICNp
ZiBFTkFCTEUoV0VCWFIpCisjaW5jbHVkZSAiV2ViRmFrZVhSRGV2aWNlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldEhhbmRlZG5l
c3MoWFJIYW5kZWRuZXNzKQotewotfQordXNpbmcgSW5wdXRTb3VyY2UgPSBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U7Cit1c2luZyBJbnB1dFNvdXJjZUJ1dHRvbiA9
IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbjsKK3VzaW5n
IElucHV0U291cmNlUG9zZSA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZVBvc2U7Cit1c2luZyBCdXR0b25UeXBlID0gRmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBl
OwogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0VGFyZ2V0UmF5TW9kZShYUlRh
cmdldFJheU1vZGUpCi17Ci19CisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dl
YnhyLWdhbWVwYWRzLW1vZHVsZS8jeHItc3RhbmRhcmQtZ2FtZXBhZC1tYXBwaW5nCitjb25zdGV4
cHIgc3RkOjphcnJheTxCdXR0b25UeXBlLCA1PiBYUl9TVEFOREFSRF9CVVRUT05TID0geyBCdXR0
b25UeXBlOjpHcmlwLCBCdXR0b25UeXBlOjpUb3VjaHBhZCwgQnV0dG9uVHlwZTo6VGh1bWJzdGlj
aywgQnV0dG9uVHlwZTo6T3B0aW9uYWxCdXR0b24sIEJ1dHRvblR5cGU6Ok9wdGlvbmFsVGh1bWJz
dGljayB9OwogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0UHJvZmlsZXMoVmVj
dG9yPFN0cmluZz4pCitSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBXZWJGYWtlWFJJbnB1
dENvbnRyb2xsZXI6OmNyZWF0ZShQbGF0Zm9ybVhSOjpJbnB1dFNvdXJjZUhhbmRsZSBoYW5kbGUs
IGNvbnN0IEZha2VYUklucHV0U291cmNlSW5pdCYgaW5pdCkKIHsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIoaGFuZGxlLCBpbml0KSk7CiB9CiAKLXZv
aWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRHcmlwT3JpZ2luKEZha2VYUlJpZ2lkVHJh
bnNmb3JtSW5pdCBncmlwT3JpZ2luLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCitXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI6OldlYkZha2VYUklucHV0Q29udHJvbGxlcihQbGF0Zm9ybVhSOjpJbnB1
dFNvdXJjZUhhbmRsZSBoYW5kbGUsIGNvbnN0IEZha2VYUklucHV0U291cmNlSW5pdCYgaW5pdCkK
KyAgICA6IG1faGFuZGxlKGhhbmRsZSkKKyAgICAsIG1faGFuZGVuZXNzKGluaXQuaGFuZGVkbmVz
cykKKyAgICAsIG1fdGFyZ2V0UmF5TW9kZShpbml0LnRhcmdldFJheU1vZGUpCisgICAgLCBtX3By
b2ZpbGVzKGluaXQucHJvZmlsZXMpCisgICAgLCBtX3ByaW1hcnlTZWxlY3RlZChpbml0LnNlbGVj
dGlvblN0YXJ0ZWQpCisgICAgLCBtX3NpbXVsYXRlU2VsZWN0KGluaXQuc2VsZWN0aW9uQ2xpY2tl
ZCkKIHsKLSAgICBVTlVTRURfUEFSQU0oZ3JpcE9yaWdpbik7Ci0gICAgVU5VU0VEX1BBUkFNKGVt
dWxhdGVkUG9zaXRpb24pOworICAgIHNldFBvaW50ZXJPcmlnaW4oaW5pdC5wb2ludGVyT3JpZ2lu
LCBmYWxzZSk7CisgICAgc2V0R3JpcE9yaWdpbihpbml0LmdyaXBPcmlnaW4sIGZhbHNlKTsKKyAg
ICBzZXRTdXBwb3J0ZWRCdXR0b25zKGluaXQuc3VwcG9ydGVkQnV0dG9ucyk7CiB9CiAKLXZvaWQg
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpjbGVhckdyaXBPcmlnaW4oKQordm9pZCBXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OnNldEdyaXBPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0
IGdyaXBPcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbikKIHsKLX0KKyAgICBhdXRvIHRyYW5z
Zm9ybSA9IFdlYkZha2VYUkRldmljZTo6cGFyc2VSaWdpZFRyYW5zZm9ybShncmlwT3JpZ2luKTsK
KyAgICBpZiAodHJhbnNmb3JtLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAg
bV9ncmlwT3JpZ2luID0gSW5wdXRTb3VyY2VQb3NlIHsgdHJhbnNmb3JtLnJlbGVhc2VSZXR1cm5W
YWx1ZSgpLCBlbXVsYXRlZFBvc2l0aW9uIH07Cit9ICAgCiAKIHZvaWQgV2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyOjpzZXRQb2ludGVyT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBwb2lu
dGVyT3JpZ2luLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHBv
aW50ZXJPcmlnaW4pOwotICAgIFVOVVNFRF9QQVJBTShlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICBh
dXRvIHRyYW5zZm9ybSA9IFdlYkZha2VYUkRldmljZTo6cGFyc2VSaWdpZFRyYW5zZm9ybShwb2lu
dGVyT3JpZ2luKTsKKyAgICBpZiAodHJhbnNmb3JtLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9wb2ludGVyT3JpZ2luID0geyB0cmFuc2Zvcm0ucmVsZWFzZVJldHVyblZh
bHVlKCksIGVtdWxhdGVkUG9zaXRpb24gfTsKIH0KIAogdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXI6OmRpc2Nvbm5lY3QoKQogeworICAgIG1fY29ubmVjdGVkID0gZmFsc2U7CiB9CiAKIHZv
aWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpyZWNvbm5lY3QoKQogeworICAgIG1fY29ubmVj
dGVkID0gdHJ1ZTsKIH0KIAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnN0YXJ0U2Vs
ZWN0aW9uKCkKLXsKLX0KLQotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmVuZFNlbGVj
dGlvbigpCit2b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0U3VwcG9ydGVkQnV0dG9u
cyhjb25zdCBWZWN0b3I8RmFrZVhSQnV0dG9uU3RhdGVJbml0PiYgYnV0dG9ucykKIHsKKyAgICBt
X2J1dHRvbnMuY2xlYXIoKTsKKyAgICBmb3IgKGF1dG8mIGJ1dHRvbiA6IGJ1dHRvbnMpCisgICAg
ICAgIG1fYnV0dG9ucy5hZGQoYnV0dG9uLmJ1dHRvblR5cGUsIGJ1dHRvbik7CiB9CiAKLXZvaWQg
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzaW11bGF0ZVNlbGVjdCgpCit2b2lkIFdlYkZha2VY
UklucHV0Q29udHJvbGxlcjo6dXBkYXRlQnV0dG9uU3RhdGUoY29uc3QgRmFrZVhSQnV0dG9uU3Rh
dGVJbml0JiBpbml0KQogeworICAgIGF1dG8gaXQgPSBtX2J1dHRvbnMuZmluZChpbml0LmJ1dHRv
blR5cGUpOworICAgIGlmIChpdCAhPSBtX2J1dHRvbnMuZW5kKCkpCisgICAgICAgIGl0LT52YWx1
ZSA9IGluaXQ7CiB9CiAKLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRTdXBwb3J0
ZWRCdXR0b25zKFZlY3RvcjxGYWtlWFJCdXR0b25TdGF0ZUluaXQ+KQorSW5wdXRTb3VyY2UgV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyOjpnZXRGcmFtZURhdGEoKQogeworICAgIElucHV0U291cmNl
IHN0YXRlOworICAgIHN0YXRlLmhhbmRsZSA9IG1faGFuZGxlOworICAgIHN0YXRlLmhhbmRlbmVz
cyA9IG1faGFuZGVuZXNzOworICAgIHN0YXRlLnRhcmdldFJheU1vZGUgPSBtX3RhcmdldFJheU1v
ZGU7CisgICAgc3RhdGUucHJvZmlsZXMgPSBtX3Byb2ZpbGVzOworICAgIHN0YXRlLnBvaW50ZXJP
cmlnaW4gPSBtX3BvaW50ZXJPcmlnaW47CisgICAgc3RhdGUuZ3JpcE9yaWdpbiA9IG1fZ3JpcE9y
aWdpbjsKKworICAgIGlmIChtX3NpbXVsYXRlU2VsZWN0KQorICAgICAgICBtX3ByaW1hcnlTZWxl
Y3RlZCA9IHRydWU7CisKKyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dl
YnhyLWdhbWVwYWRzLW1vZHVsZS8jeHItc3RhbmRhcmQtZ2FtZXBhZC1tYXBwaW5nCisgICAgLy8g
TWltaWMgeHItc3RhbmRhcmQgZ2FtZXBhZCBsYXlvdXQKKworICAgIC8vIFByaW1hcnkgdHJpZ2dl
ciBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhdCBpbmRleCAwCisgICAgc3RhdGUuYnV0dG9ucy5h
cHBlbmQoeworICAgICAgICAudG91Y2hlZCA9IG1fcHJpbWFyeVNlbGVjdGVkLAorICAgICAgICAu
cHJlc3NlZCA9IG1fcHJpbWFyeVNlbGVjdGVkLAorICAgICAgICAucHJlc3NlZFZhbHVlID0gbV9w
cmltYXJ5U2VsZWN0ZWQgPyAxLjBmIDogMC4wZgorICAgIH0pOworCisgICAgLy8gTmV4dCBidXR0
b25zIGluIHhyLXN0YW5kYXJkIG9yZGVyCisgICAgZm9yIChhdXRvIGJ1dHRvblR5cGUgOiBYUl9T
VEFOREFSRF9CVVRUT05TKSB7CisgICAgICAgIGF1dG8gZGF0YSA9IGdldEJ1dHRvbk9yUGxhY2Vo
b2xkZXIoYnV0dG9uVHlwZSk7CisgICAgICAgIGlmIChkYXRhLmJ1dHRvbikKKyAgICAgICAgICAg
IHN0YXRlLmJ1dHRvbnMuYXBwZW5kKCpkYXRhLmJ1dHRvbik7CisgICAgICAgIGlmIChkYXRhLmF4
ZXMpCisgICAgICAgICAgICBzdGF0ZS5heGVzLmFwcGVuZFZlY3RvcigqZGF0YS5heGVzKTsKKwor
ICAgIH0KKworICAgIGlmIChtX3NpbXVsYXRlU2VsZWN0KSB7CisgICAgICAgIG1fcHJpbWFyeVNl
bGVjdGVkID0gZmFsc2U7CisgICAgICAgIG1fc2ltdWxhdGVTZWxlY3QgPSBmYWxzZTsKKyAgICB9
CisKKyAgICByZXR1cm4gc3RhdGU7CiB9CiAKLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
Ojp1cGRhdGVCdXR0b25TdGF0ZShGYWtlWFJCdXR0b25TdGF0ZUluaXQpCitXZWJGYWtlWFJJbnB1
dENvbnRyb2xsZXI6OkJ1dHRvbk9yUGxhY2Vob2xkZXIgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
OjpnZXRCdXR0b25PclBsYWNlaG9sZGVyKEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZSBidXR0
b25UeXBlKSBjb25zdAogeworICAgIEJ1dHRvbk9yUGxhY2Vob2xkZXIgcmVzdWx0OworCisgICAg
YXV0byBpdCA9IG1fYnV0dG9ucy5maW5kKGJ1dHRvblR5cGUpOworICAgIGlmIChpdCAhPSBtX2J1
dHRvbnMuZW5kKCkpIHsKKyAgICAgICAgcmVzdWx0LmJ1dHRvbiA9IElucHV0U291cmNlQnV0dG9u
IHsKKyAgICAgICAgICAgIC50b3VjaGVkID0gaXQtPnZhbHVlLnRvdWNoZWQsCisgICAgICAgICAg
ICAucHJlc3NlZCA9IGl0LT52YWx1ZS5wcmVzc2VkLAorICAgICAgICAgICAgLnByZXNzZWRWYWx1
ZSA9IGl0LT52YWx1ZS5wcmVzc2VkVmFsdWUKKyAgICAgICAgfTsKKworICAgICAgICBpZiAoYnV0
dG9uVHlwZSA9PSBCdXR0b25UeXBlOjpUb3VjaHBhZCB8fCBidXR0b25UeXBlID09IEJ1dHRvblR5
cGU6OlRodW1ic3RpY2spCisgICAgICAgICAgICByZXN1bHQuYXhlcyA9IFZlY3RvcjxmbG9hdD4g
eyBpdC0+dmFsdWUueFZhbHVlLCBpdC0+dmFsdWUueVZhbHVlIH07CisKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBBZGQgYSBwbGFjZWhvbGRlciBpZiBuZWVkZWQKKyAgICAgICAgLy8gRGV2aWNl
cyB0aGF0IGxhY2sgb25lIG9mIHRoZSBvcHRpb25hbCBpbnB1dHMgbGlzdGVkIGluIHRoZSB0YWJs
ZXMgYWJvdmUgTVVTVCBwcmVzZXJ2ZSB0aGVpciBwbGFjZSBpbiB0aGUKKyAgICAgICAgLy8gYnV0
dG9ucyBvciBheGVzIGFycmF5LCByZXBvcnRpbmcgYSBwbGFjZWhvbGRlciBidXR0b24gb3IgcGxh
Y2Vob2xkZXIgYXhpcywgcmVzcGVjdGl2ZWx5LgorICAgICAgICBpZiAoYnV0dG9uVHlwZSAhPSBC
dXR0b25UeXBlOjpPcHRpb25hbEJ1dHRvbiB8fCBidXR0b25UeXBlICE9IEJ1dHRvblR5cGU6Ok9w
dGlvbmFsVGh1bWJzdGljaykgeworICAgICAgICAgICAgYXV0byBwcmlvcml0eSA9IHN0ZDo6Zmlu
ZChYUl9TVEFOREFSRF9CVVRUT05TLmJlZ2luKCksIFhSX1NUQU5EQVJEX0JVVFRPTlMuZW5kKCks
IGJ1dHRvblR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHByaW9yaXR5ICE9IFhSX1NUQU5EQVJE
X0JVVFRPTlMuZW5kKCkpOworCisgICAgICAgICAgICBmb3IgKGF1dG8gaXQgPSBwcmlvcml0eSAr
IDE7IGl0ICE9IFhSX1NUQU5EQVJEX0JVVFRPTlMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAg
ICAgICBpZiAobV9idXR0b25zLmNvbnRhaW5zKCppdCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmJ1dHRvbiA9IElucHV0U291cmNlQnV0dG9uKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChidXR0b25UeXBlID09IEJ1dHRvblR5cGU6OlRvdWNocGFkICYmIG1fYnV0dG9u
cy5jb250YWlucyhCdXR0b25UeXBlOjpUaHVtYnN0aWNrKSkKKyAgICAgICAgICAgIHJlc3VsdC5h
eGVzID0gVmVjdG9yPGZsb2F0PiB7IDAuMCwgMC4wIH07CisgICAgfQorCisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKaW5kZXggZDI4Y2VhNGY4NmVhOWNh
NDY1NmViZGY4YzUyNTFlZjRiOTI0OTljZC4uOGI1YmNmMzY0N2VmY2FkYzY5YmI2OGE2MTBhM2Rj
OTkzNDExY2JhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklu
cHV0Q29udHJvbGxlci5oCkBAIC0yOCw5ICsyOCwxMiBAQAogI2lmIEVOQUJMRShXRUJYUikKIAog
I2luY2x1ZGUgIkZha2VYUkJ1dHRvblN0YXRlSW5pdC5oIgorI2luY2x1ZGUgIkZha2VYUklucHV0
U291cmNlSW5pdC5oIgogI2luY2x1ZGUgIkZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtWFIuaCIKICNpbmNsdWRlICJYUkhhbmRlZG5lc3MuaCIKICNpbmNsdWRl
ICJYUlRhcmdldFJheU1vZGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zOCwzNiAr
NDEsNDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIpOyB9
Ci0KLSAgICB2b2lkIHNldEhhbmRlZG5lc3MoWFJIYW5kZWRuZXNzKTsKLQotICAgIHZvaWQgc2V0
VGFyZ2V0UmF5TW9kZShYUlRhcmdldFJheU1vZGUpOwotCi0gICAgdm9pZCBzZXRQcm9maWxlcyhW
ZWN0b3I8U3RyaW5nPik7CisgICAgc3RhdGljIFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+
IGNyZWF0ZShQbGF0Zm9ybVhSOjpJbnB1dFNvdXJjZUhhbmRsZSwgY29uc3QgRmFrZVhSSW5wdXRT
b3VyY2VJbml0Jik7CiAKKyAgICB2b2lkIHNldEhhbmRlZG5lc3MoWFJIYW5kZWRuZXNzIGhhbmRl
bmVzcykgeyBtX2hhbmRlbmVzcyA9IGhhbmRlbmVzczsgfQorICAgIHZvaWQgc2V0VGFyZ2V0UmF5
TW9kZShYUlRhcmdldFJheU1vZGUgbW9kZSkgeyBtX3RhcmdldFJheU1vZGUgPSBtb2RlOyB9Cisg
ICAgdm9pZCBzZXRQcm9maWxlcyhWZWN0b3I8U3RyaW5nPiYmIHByb2ZpbGVzKSB7IG1fcHJvZmls
ZXMgPSBXVEZNb3ZlKHByb2ZpbGVzKTsgfQogICAgIHZvaWQgc2V0R3JpcE9yaWdpbihGYWtlWFJS
aWdpZFRyYW5zZm9ybUluaXQgZ3JpcE9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uID0gZmFs
c2UpOwotCi0gICAgdm9pZCBjbGVhckdyaXBPcmlnaW4oKTsKLQorICAgIHZvaWQgY2xlYXJHcmlw
T3JpZ2luKCkgeyBtX2dyaXBPcmlnaW4gPSBXVEY6Om51bGxvcHQ7IH0KICAgICB2b2lkIHNldFBv
aW50ZXJPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IHBvaW50ZXJPcmlnaW4sIGJvb2wg
ZW11bGF0ZWRQb3NpdGlvbiA9IGZhbHNlKTsKLQogICAgIHZvaWQgZGlzY29ubmVjdCgpOwotCiAg
ICAgdm9pZCByZWNvbm5lY3QoKTsKKyAgICB2b2lkIHN0YXJ0U2VsZWN0aW9uKCkgeyBtX3ByaW1h
cnlTZWxlY3RlZCA9IHRydWU7IH0KKyAgICB2b2lkIGVuZFNlbGVjdGlvbigpIHsgbV9wcmltYXJ5
U2VsZWN0ZWQgPSBmYWxzZTsgfQorICAgIHZvaWQgc2ltdWxhdGVTZWxlY3QoKSB7IG1fc2ltdWxh
dGVTZWxlY3QgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRTdXBwb3J0ZWRCdXR0b25zKGNvbnN0IFZl
Y3RvcjxGYWtlWFJCdXR0b25TdGF0ZUluaXQ+Jik7CisgICAgdm9pZCB1cGRhdGVCdXR0b25TdGF0
ZShjb25zdCBGYWtlWFJCdXR0b25TdGF0ZUluaXQmKTsKKyAgICBib29sIGlzQ29ubmVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25uZWN0ZWQ7IH0KIAotICAgIHZvaWQgc3RhcnRTZWxlY3Rpb24o
KTsKLQotICAgIHZvaWQgZW5kU2VsZWN0aW9uKCk7Ci0KLSAgICB2b2lkIHNpbXVsYXRlU2VsZWN0
KCk7Ci0KLSAgICB2b2lkIHNldFN1cHBvcnRlZEJ1dHRvbnMoVmVjdG9yPEZha2VYUkJ1dHRvblN0
YXRlSW5pdD4pOwotCi0gICAgdm9pZCB1cGRhdGVCdXR0b25TdGF0ZShGYWtlWFJCdXR0b25TdGF0
ZUluaXQpOworICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSBn
ZXRGcmFtZURhdGEoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIo
KSA9IGRlZmF1bHQ7CisgICAgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyKFBsYXRmb3JtWFI6Oklu
cHV0U291cmNlSGFuZGxlLCBjb25zdCBGYWtlWFJJbnB1dFNvdXJjZUluaXQmKTsKKworICAgIHN0
cnVjdCBCdXR0b25PclBsYWNlaG9sZGVyIHsKKyAgICAgICAgT3B0aW9uYWw8UGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uPiBidXR0b247CisgICAgICAgIE9w
dGlvbmFsPFZlY3RvcjxmbG9hdD4+IGF4ZXM7CisgICAgfTsKKyAgICBCdXR0b25PclBsYWNlaG9s
ZGVyIGdldEJ1dHRvbk9yUGxhY2Vob2xkZXIoRmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlKSBj
b25zdDsKKworICAgIFBsYXRmb3JtWFI6OklucHV0U291cmNlSGFuZGxlIG1faGFuZGxlIHsgMCB9
OworICAgIFhSSGFuZGVkbmVzcyBtX2hhbmRlbmVzcyB7IFhSSGFuZGVkbmVzczo6Tm9uZSB9Owor
ICAgIFhSVGFyZ2V0UmF5TW9kZSBtX3RhcmdldFJheU1vZGUgeyBYUlRhcmdldFJheU1vZGU6Okdh
emUgfTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3Byb2ZpbGVzOworICAgIFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UgbV9wb2ludGVyT3JpZ2luOworICAgIE9w
dGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2U+IG1f
Z3JpcE9yaWdpbjsKKyAgICBIYXNoTWFwPEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZSwgRmFr
ZVhSQnV0dG9uU3RhdGVJbml0LCBXVEY6OkludEhhc2g8RmFrZVhSQnV0dG9uU3RhdGVJbml0OjpU
eXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5
cGU+PiBtX2J1dHRvbnM7CisgICAgYm9vbCBtX2Nvbm5lY3RlZCB7IHRydWUgfTsKKyAgICBib29s
IG1fcHJpbWFyeVNlbGVjdGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2ltdWxhdGVTZWxlY3Qg
eyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFr
ZQppbmRleCA3ODI5YWZlY2MzMjAyYjljM2Y4NDMxOTZlZGEwNjBmMDM3YmI0NzdkLi5jMTJlYmE2
M2FiOWQ0MmFjZjc3NWEyYjEzMDFiN2Y5YWM0M2ZmMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dQRS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQpA
QCAtMTk2LDYgKzE5Niw3IEBAIGlmIChFTkFCTEVfV0VCWFIpCiAgICAgaWYgKE5PVCBPUEVOWFJf
Rk9VTkQpCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIk9wZW5YUiBpcyByZXF1aXJlZCB0
byBlbmFibGUgV2ViWFIgc3VwcG9ydC4iKQogICAgIGVuZGlmICgpCisgICAgU0VUX0FORF9FWFBP
U0VfVE9fQlVJTEQoRU5BQkxFX0dBTUVQQUQgT04pCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJ
TEQoVVNFX09QRU5YUiAke09wZW5YUl9GT1VORH0pCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJ
TEQoWFJfVVNFX1BMQVRGT1JNX0VHTCBUUlVFKQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KFhSX1VTRV9HUkFQSElDU19BUElfT1BFTkdMIFRSVUUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjgyNTkyMjMwNmIzMWQ2
NWQ3Y2E5NmNkYjEwNWVlZWNkY2Y4YmViNS4uYmY4OWZhOTA2NTUzNWY1ZDJiYmEyNDkwZDJiYjJi
ODNlMTMyYjcwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTE2ICBJbWFub2wgRmVy
bmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXZWJY
UiBJbnB1dCBTb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjMyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgV2ViWFIgSW5wdXQgU291cmNlIHRlc3QgZXhwZWN0YXRpb25zLgorCisg
ICAgICAgICogcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDMtMTYgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT3MgV2sxIF0g
aHR0cC93cHQvZmlsZXJlYWRlci9maWxlcmVhZGVyLXN0b3AuaHRtbCBpcyBhIGZsYWtleSB0ZXh0
IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDdlY2I4MzljZDdiMmI4
YWYxYmNhNWRhYzIxMjU4YzAyNDIyZjExODkuLmMzZGFmNWE4NzljYmFiNjI1ODllODRhYjBkMWU5
ZDg2NTAzY2YwNzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDIxLTAzLTE2ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBXZWJYUiBJbnB1dCBTb3VyY2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyNTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgV2ViWFIgSW5wdXQgU291
cmNlIHRlc3QgZXhwZWN0YXRpb25zLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL2V2ZW50c19pbnB1dF9zb3VyY2VfcmVjcmVhdGlvbi5odHRwcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9z
ZWxlY3QuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0X3N1YmZyYW1lLmh0dHBzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19z
ZXNzaW9uX3NxdWVlemUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0SW5wdXRQb3NlX2hhbmRlZG5lc3MuaHR0cHMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1
dFNvdXJjZV9hZGRfcmVtb3ZlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfZW11bGF0ZWRQb3NpdGlvbi5o
dHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94cklucHV0U291cmNlX3Byb2ZpbGVzLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2lu
T2Zmc2V0Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMjEtMDMtMTUgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIHRoZSBsYXlvdXQg
dGVzdCAyZC5wYXRoLnN0cm9rZS5zY2FsZTIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNl
X3JlY3JlYXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlX3JlY3JlYXRpb24u
aHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MDUxZTkyMDZmYTRiZGQ4OWZiODFiNGVi
MGIwOTBiYTIyYjA0NzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19pbnB1dF9zb3VyY2VfcmVjcmVhdGlv
bi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgSW5wdXQgc291cmNl
cyBhcmUgcmUtY3JlYXRlZCB3aGVuIGhhbmRlZG5lc3Mgb3IgdGFyZ2V0IHJheSBtb2RlIGNoYW5n
ZXMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3QuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vz
c2lvbl9zZWxlY3QuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMTY5ZTk4MDAyZTlm
MGY4OWVmODc0NGM3MzkwMGUzYWUyMzU1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3Nl
bGVjdC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJJbnB1dFNv
dXJjZXMgcHJpbWFyeSBpbnB1dCBwcmVzc2VzIHByb3Blcmx5IGZpcmVzIG9mZiB0aGUgcmlnaHQg
ZXZlbnRzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0X3N1YmZyYW1lLmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0X3N1YmZyYW1lLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZDNkZmJlMzFmMmI1MGVhY2VhMjg1NTI3YjIyOTJhNTFmNTI3MmU2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorCitQQVNTIEVuc3VyZXMgdGhhdCBhbiBYUklucHV0U291cmNlcyBwcmlt
YXJ5IGlucHV0IGJlaW5nIHByZXNzZWQgYW5kIHJlbGVhc2VkIGluIHRoZSBzcGFjZSBvZiBhIHNp
bmdsZSBmcmFtZSBwcm9wZXJseSBmaXJlcyBvZmYgdGhlIHJpZ2h0IGV2ZW50cworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2
ZW50c19zZXNzaW9uX3NxdWVlemUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zcXVlZXpl
Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjE2OWU5ODAwMmU5ZjBmODllZjg3NDRj
NzM5MDBlM2FlMjM1NTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zcXVlZXplLmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBYUklucHV0U291cmNlcyBwcmlt
YXJ5IGlucHV0IHByZXNzZXMgcHJvcGVybHkgZmlyZXMgb2ZmIHRoZSByaWdodCBldmVudHMKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9nZXRJbnB1dFBvc2VfaGFuZGVkbmVzcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9o
YW5kZWRuZXNzLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODllN2FlM2ViZWJmMWU2
MTRhMzViNGJiNzNiMThkYTUxNTQyZTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBvc2VfaGFuZGVk
bmVzcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJJbnB1dFNv
dXJjZXMgcHJvcGVybHkgY29tbXVuaWNhdGUgdGhlaXIgaGFuZGVkbmVzcworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5w
dXRTb3VyY2VfYWRkX3JlbW92ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3JlbW92
ZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRiNTY0YmY4NTdkNTNkZTdjODMyYzNk
MjViNDBlMjEzZjlhMjQ0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9hZGRfcmVtb3ZlLmh0
dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBYUklucHV0U291cmNlcyBj
YW4gYmUgcHJvcGVybHkgYWRkZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgc2Vzc2lvbgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hySW5wdXRTb3VyY2VfZW11bGF0ZWRQb3NpdGlvbi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3Vy
Y2VfZW11bGF0ZWRQb3NpdGlvbi5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhNzA3
ZjZjZTQ0ZWY2NDhmNDRmMGRhYzY5NWUyN2RjMGY1NjU2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNv
dXJjZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
KworUEFTUyBQb3NlcyBmcm9tIFhSSW5wdXRTb3VyY2UuZ3JpcFNwYWNlIGhhdmUgZW11bGF0ZWRQ
b3NpdGlvbiBzZXQgcHJvcGVybHkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3Byb2ZpbGVzLmh0dHBz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGQxNzZlZDc2ZTE5OWNlYTc3NGJkMTJiOWY4ZTlmMGY0M2I0NGRmMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
IEBACisKK1BBU1MgV2ViWFIgSW5wdXRTb3VyY2UncyBwcm9maWxlcyBsaXN0IGNhbiBiZSBzZXQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVm
ZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
YzM0Y2ZjMmNjNzY1OWViNGZiMGEzMWMwOTU4NDhjYzMyYmFkMjQ3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJl
ZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
IEBACisKK1BBU1MgVXBkYXRpbmcgWFJSZWZlcmVuY2VTcGFjZSBvcmlnaW4gb2Zmc2V0IHVwZGF0
ZXMgdmlldyBhbmQgaW5wdXQgbWF0cmljZXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggN2U1YzIyZjRjZmQwMDE4NTI2NGMwYmFlNDUxMTU4MjcwZmYw
ZWE4My4uZDM1Y2QzNDgxZmYyYjlmNDMwZDkyMWQ1ZTY1MDE3MGQ3MWI4NTg5NiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYwNiw2ICs2MDYsMTAgQEAg
d2Via2l0Lm9yZy9iLzIxMzEzMSBnYW1lcGFkIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjEzMTMx
IGh0dHAvdGVzdHMvbWlzYy9nYW1lcGFkcy1pbnNlY3VyZS5odG1sIFsgU2tpcCBdCiAKICMgV2Vi
WFIKK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3Nv
dXJjZV9yZWNyZWF0aW9uLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0X3N1YmZyYW1lLmh0dHBzLmh0
bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRz
X3Nlc3Npb25fc2VsZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc3F1ZWV6ZS5odHRwcy5odG1sIFsgUGFz
cyBdCiB3ZWJraXQub3JnL2IvMjEyODk3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckJvdW5kZWRSZWZlcmVuY2VTcGFjZV91cGRh
dGVzLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJHTENhbnZhc0NvbnRleHRfY3JlYXRlX3hyY29t
cGF0aWJsZS5odHRwcy5odG1sIFsgUGFzcyBdCkBAIC02MjAsMTAgKzYyNCwxNCBAQCB3ZWJraXQu
b3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZp
Y2VfcmVxdWVzdFNlc3Npbwogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX25vX21vZGUuaHR0cHMu
aHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX25vbl9pbW1lcnNpdmVfbm9f
Z2VzdHVyZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25fb3B0
aW9uYWxGZWF0dXJlcy5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9oYW5kZWRuZXNzLmh0dHBzLmh0bWwgWyBQYXNz
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0Vmlld2VyUG9zZV9l
bXVsYXRlZFBvc2l0aW9uLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRWaWV3ZXJQb3NlX2dldFBvc2UuaHR0cHMuaHRt
bCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1l
X2dldFBvc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94ckZyYW1lX3Nlc3Npb25fc2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfYWRk
X3JlbW92ZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfZW11bGF0ZWRQb3NpdGlvbi5odHRwcy5odG1sIFsgUGFz
cyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2Vf
cHJvZmlsZXMuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2VyX2F2YWlsYWJpbGl0eS5odHRwcy5odG1sIFsgUGFz
cyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvYXItbW9kdWxlL2lkbGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWwgWyBQYXNzIF0KIHdl
YmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9h
ci1tb2R1bGUveHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2ltbWVyc2l2ZS1hci5odHRwcy5o
dG1sIFsgUGFzcyBdCkBAIC02MzEsNiArNjM5LDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clZpZXdfZXllcy5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19tYXRjaC5odHRwcy5odG1sIFsgUGFz
cyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19vbmVmcmFt
ZXVwZGF0ZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL25hdmlnYXRvcl94cl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmln
aW5PZmZzZXQuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMuaHRt
bCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVy
ZW5jZVNwYWNlX3JlbGF0aW9uc2hpcHMuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX2NvbnN0cnVjdG9yLmh0
dHBzLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRl
eCAxMzk5NGRlMzdkZDlmYzM1ZGUzYjA1YjM1NmQyM2E5N2YxMGM0ZWVlLi41YTNmYmMxMGU3ZDdi
NGEyNjhhMWUxYWU2YWIyMzZhMDgyMjVjZTZkIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDMtMTYgIEltYW5vbCBGZXJuYW5kZXog
IDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIElucHV0
IFNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMzI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVuYWJsZSBXUEUgR2FtZXBhZCB3aGVuIFdlYlhSIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBT
b3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZToKKwogMjAyMS0wMy0xNCAgTGF1cm8gTW91cmEg
IDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gS2VlcCBHUFVQcm9jZXNzIGRp
c2FibGVkIHdoZW4gdXNpbmcgZXhwZXJpbWVudGFsIGZlYXR1cmVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423347</attachid>
            <date>2021-03-16 10:00:04 -0700</date>
            <delta_ts>2021-03-18 07:31:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223257-20210316180002.patch</filename>
            <type>text/plain</type>
            <size>72770</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZiMmJhODZmYzViMDA3
NjQwZGQxMDg3NGYzZmYyMWM5YjllMDdmMi4uZTUyMzVkMjBlYzI2MmZjOGY1NmJmZWUyNWVmYzg0
MmQ2YzYwMjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMS0wMy0xNiAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBwbGF0Zm9ybSBkYXRhIGRl
ZmluaXRpb24gYW5kIHRoZSBET00gYml0cyByZXF1aXJlZCB0byBzdXBwb3J0IFdlYlhSIElucHV0
IFNvdXJjZXMsIHRoZSBpbnB1dCBtZWNoYW5pc20gdXNlZCBpbiBXZWJYUi4KKyAgICAgICAgRXhh
bXBsZSBYUiBpbnB1dCBzb3VyY2VzIGluY2x1ZGUsIGJ1dCBhcmUgbm90IGxpbWl0ZWQgdG8sIGhh
bmRoZWxkIGNvbnRyb2xsZXJzLCBvcHRpY2FsbHkgdHJhY2tlZCBoYW5kcywgYW5kIGdhemUtYmFz
ZWQgaW5wdXQgbWV0aG9kcy4KKworICAgICAgICBNb3JlIGluZm8gYWJvdXQgdGhlIEFQSSBpbjoK
KyAgICAgICAgLSBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNpbnB1dAor
ICAgICAgICAtIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMt
bW9kdWxlLyN3ZWJ4ci1kZXZpY2UtYXBpLWludGVncmF0aW9uCisKKyAgICAgICAgVGVzdGVkIGJ5
IFdlYlhSIFdQVC4KKworICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmg6IEFkZCBz
ZXRDb25uZWN0ZWQgbWV0aG9kLgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZSk6IHNldCBl
bXVsYXRlZFBvc2l0aW9uIGJhc2VkIG9uIHRoZSBzcGFjZXMuCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwOiBDb21wbGV0ZSBXZWJYUklucHV0U291cmNlIGlt
cGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpXZWJYUklucHV0U3BhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpuYXRpdmVPcmlnaW4gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJHYW1lcGFkOjpXZWJYUkdhbWVwYWQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSSW5wdXRTb3VyY2U6OldlYlhSSW5wdXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3Vy
Y2U6OnJlcXVpcmVzSW5wdXRTb3VyY2VDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJ
bnB1dFNvdXJjZTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291
cmNlOjpwb2xsRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OmNy
ZWF0ZUV2ZW50KToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5o
OiBBZGQgaW5wdXQgZGF0YSBhbmQgaGVscGVyIFdlYlhSR2FtZXBhZCBhbmQgV2ViWFJJbnB1dFNw
YWNlIGNsYXNzZXMuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U3BhY2U6OnNldFBvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6aGFuZGxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OmhhbmRlZG5lc3MgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6dGFyZ2V0UmF5TW9kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjp0YXJnZXRSYXlTcGFjZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjpncmlwU3BhY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6cHJvZmlsZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6Z2FtZXBhZCBjb25zdCk6CisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaWRsOiBBZGQgZ2FtZXBhZCBhdHRy
aWJ1dGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5j
cHA6IEltcGxlbWVudCBpbnB1dCBzb3VyY2UgdXBkYXRlcyBhbmQgZXZlbnQgZGlzcGF0Y2hpbmcu
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3VyY2VBcnJh
eSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6Omxlbmd0aCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6Oml0ZW0gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjbGVhcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OnVwZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVBZGRlZE9y
VXBkYXRlZElucHV0U291cmNlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0
U291cmNlQXJyYXkuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKTogU2V0IHRy
YWNraW5nIGRlbGVnYXRlIGJlZm9yZSBpbml0aWFsaXppbmcgdHJhY2tpbmcgYW5kIHJlbmRlcmlu
Zy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6aXNQb3NpdGlvbkVtdWxhdGVkIGNv
bnN0KTogQWRkIGhlbHBlciBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246
OnNodXRkb3duKTogQ2xlYXIgV2ViWFJJbnB1dFNvdXJjZUFycmF5IGluc3RhbmNlLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNl
cyk6IERpc3BhdGNoIGluaXRpYWwgSW5wdXRTb3VyY2UgZGlzY292ZXJ5IGV2ZW50LgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpvbkZyYW1lKTogVXBkYXRlIFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheSBpbnN0YW5jZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5o
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcDogQWRkIHZpcnR1YWwg
Y2xhc3MgaXNQb3NpdGlvbkVtdWxhdGVkIHRvIGJlIHVzZWQgaW4gV2ViWFJGcmFtZS4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzUG9zaXRpb25FbXVsYXRlZCBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpyZXF1
ZXN0U2Vzc2lvbik6IHVwZGF0ZSBGSVhNRSBjb21tZW50LgorCisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9YUkhhbmRlZG5lc3MuaDogUmV1c2UgUGxhdGZvcm1YUiBlbnVtLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WFJJbnB1dFNvdXJjZUV2ZW50OjpYUklucHV0U291cmNlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6WFJJbnB1dFNvdXJjZUV2ZW50OjpzZXRGcmFtZUFjdGl2ZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIv
WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9Y
UlRhcmdldFJheU1vZGUuaDogUmV1c2UgUGxhdGZvcm1YUiBlbnVtLgorCisgICAgICAgICogcGxh
dGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Onhy
U3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZyk6IEFkZCB4ci1zdGFuZGFyZCBnYW1lcGFkIG1h
cHBpbmcgbmFtZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMu
aDoKKworICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDogQWRkIElucHV0IFNvdXJj
ZSBmcmFtZSBkYXRhLgorCisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwOiBJ
bXBsZW1lbnQgcmVxdWlyZWQgY2hhbmdlcyB0byBydW4gYW5kIHBhc3MgV2ViWFIgSW5wdXQgU291
cmNlIHRlc3RzLgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OmluaXRpYWxp
emVUcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRl
dmljZTo6ZnJhbWVUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmlj
ZTo6c2ltdWxhdGVSZXNldFBvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNl
OjpzaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbik6CisgICAgICAgICogdGVzdGluZy9XZWJG
YWtlWFJEZXZpY2UuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OldlYkZha2VY
UklucHV0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXI6OnNldEdyaXBPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyOjpzZXRQb2ludGVyT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VY
UklucHV0Q29udHJvbGxlcjo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OnJlY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OnNldFN1cHBvcnRlZEJ1dHRvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjp1cGRhdGVCdXR0b25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEJ1dHRvbk9yUGxhY2Vo
b2xkZXIgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
Lmg6CisKIDIwMjEtMDMtMTYgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1NPVVBdIEZpeCBTT1VQMyBkZWJ1ZyBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2FtZXBhZC9HYW1lcGFkLmgKaW5kZXggOGYxOTMzNDE2MDVjYzYwMTAxNjBkMWUyOGQyNjc5MDY1
YzRjNjE3Ny4uNDNjZWQ1NDU3ZjJmNGZkNGE0NzZiNWQzNjJhNGE5ZGFjNTBhMGYzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oCkBAIC01NSw2ICs1NSw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UmVmPEdhbWVwYWRCdXR0b24+PiYgYnV0dG9ucygpIGNv
bnN0OwogCiAgICAgdm9pZCB1cGRhdGVGcm9tUGxhdGZvcm1HYW1lcGFkKGNvbnN0IFBsYXRmb3Jt
R2FtZXBhZCYpOworICAgIHZvaWQgc2V0Q29ubmVjdGVkKGJvb2wgY29ubmVjdGVkKSB7IG1fY29u
bmVjdGVkID0gY29ubmVjdGVkOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgR2FtZXBhZChj
b25zdCBQbGF0Zm9ybUdhbWVwYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuY3BwCmluZGV4IGY0NWZiMTE0NzVhMmQ4MjQwZjZiZjQ3ODA2YjQwMDk4NDhjYjA4
N2QuLjc4ZjQxZDliOGZkOTZlYjhjMGZkMTVhZWUzZDMxYjgzZWIyMWM5MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+PiBXZWJYUkZy
YW1lOjpwb3B1bGF0ZVBvc2UoY29uc3QKICAgICAvLyA3LiBMZXQgdHJhbnNmb3JtIGJlIHBvc2Xi
gJlzIHRyYW5zZm9ybS4KICAgICAvLyA4LiBRdWVyeSB0aGUgWFIgZGV2aWNlJ3MgdHJhY2tpbmcg
c3lzdGVtIGZvciBzcGFjZeKAmXMgcG9zZSByZWxhdGl2ZSB0byBiYXNlU3BhY2UgYXQgdGhlIGZy
YW1l4oCZcyB0aW1lLgogCi0gICAgaWYgKCFtX2RhdGEuaXNUcmFja2luZ1ZhbGlkKSB7CisgICAg
aWYgKG1faXNBbmltYXRpb25GcmFtZSAmJiAhbV9kYXRhLmlzVHJhY2tpbmdWYWxpZCkgewogICAg
ICAgICAvLyBGSVhNRTogY2hlY2sgaWYgc3BhY2XigJlzIHBvc2UgcmVsYXRpdmUgdG8gYmFzZVNw
YWNlIGhhcyBiZWVuIGRldGVybWluZWQgaW4gdGhlIHBhc3QuCiAgICAgICAgIC8vIEFueXdheSB0
aGlzIGVtdWxhdGlvbiBpcyB1c3VhbGx5IHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0gaW4gdGhlIHBv
c2UgKGUuZy4gT3BlblhSKQogICAgICAgICAvLyBzbyB3ZSBzaG91bGRuJ3QgaGl0IHRoaXMgcGF0
aCBpbiBtb3N0IFhSUGxhdGZvcm0gcG9ydHMuCkBAIC0xMzEsNyArMTMxLDcgQEAgRXhjZXB0aW9u
T3I8T3B0aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxhdGVkUG9zZT4+IFdlYlhSRnJhbWU6OnBvcHVs
YXRlUG9zZShjb25zdAogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKIAogICAgIGF1
dG8gdHJhbnNmb3JtID0gICpiYXNlVHJhbnNmb3JtLmludmVyc2UoKSAqIHNwYWNlLmVmZmVjdGl2
ZU9yaWdpbigpOwotICAgIGJvb2wgZW11bGF0ZWRQb3NpdGlvbiA9IG1fZGF0YS5pc1Bvc2l0aW9u
RW11bGF0ZWQgfHwgIW1fZGF0YS5pc1Bvc2l0aW9uVmFsaWQ7CisgICAgYm9vbCBlbXVsYXRlZFBv
c2l0aW9uID0gc3BhY2UuaXNQb3NpdGlvbkVtdWxhdGVkKCkgfHwgYmFzZVNwYWNlLmlzUG9zaXRp
b25FbXVsYXRlZCgpOwogCiAgICAgYm9vbCBsaW1pdCA9IG11c3RQb3Nlc0JlTGltaXRlZChzcGFj
ZSwgYmFzZVNwYWNlKTsKICAgICBpZiAobGltaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwCmluZGV4IGYzMDc2NzUxMTk4ZGJiYzM3
NmNiOTcxOWI4YTg3YjEyYzYyMDE4ZGQuLjYwNTdjMjM5MzUwMjAxNGUwNzdiOTM2YTZlZTViMzcy
Yjk1YmJhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklu
cHV0U291cmNlLmNwcApAQCAtMjgsNTAgKzI4LDE3OSBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQog
CisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lmIEVOQUJMRShHQU1FUEFEKQorI2luY2x1ZGUg
IkdhbWVwYWQuaCIKKyNpbmNsdWRlICJHYW1lcGFkQ29uc3RhbnRzLmgiCisjZW5kaWYKKyNpbmNs
dWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViWFJSaWdpZFRyYW5zZm9ybS5oIgorI2lu
Y2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKKyNpbmNsdWRl
ICJYUklucHV0U291cmNlRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChX
ZWJYUklucHV0U3BhY2UpOwogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSW5wdXRT
b3VyY2UpOwogCi1SZWY8V2ViWFJJbnB1dFNvdXJjZT4gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRl
KFJlZjxXZWJYUlNwYWNlPiYmIHRhcmdldFJheVNwYWNlKQorLy8gV2ViWFJJbnB1dFNwYWNlCisK
K1JlZjxXZWJYUklucHV0U3BhY2U+IFdlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBjb25zdCBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwg
cG9zZSkpOworfQorCitXZWJYUklucHV0U3BhY2U6OldlYlhSSW5wdXRTcGFjZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgY29uc3QgUGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkKKyAgICA6IFdlYlhSU3Bh
Y2UoZG9jdW1lbnQsIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZSgpKQorICAgICwgbV9zZXNz
aW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX3Bvc2UocG9zZSkKK3sKK30KKworV2ViWFJJ
bnB1dFNwYWNlOjp+V2ViWFJJbnB1dFNwYWNlKCkgPSBkZWZhdWx0OworCitUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBXZWJYUklucHV0U3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFdlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKG1fcG9zZS5wb3NlKTsKK30KKworLy8gV2Vi
WFIgR2FtZXBhZAorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKy8vIGh0dHBzOi8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyNnYW1lcGFkLWRpZmZlcmVuY2Vz
CitXZWJYUkdhbWVwYWQ6OldlYlhSR2FtZXBhZChkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgY29u
bmVjdFRpbWUsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJj
ZSYgc291cmNlKQorICAgIDogUGxhdGZvcm1HYW1lcGFkKC0xKQoreworICAgIG1fbGFzdFVwZGF0
ZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpmcm9tUmF3U2Vjb25kcyhTZWNvbmRzOjpmcm9tTWlsbGlz
ZWNvbmRzKHRpbWVzdGFtcCkudmFsdWUoKSk7CisgICAgbV9jb25uZWN0VGltZSA9IE1vbm90b25p
Y1RpbWU6OmZyb21SYXdTZWNvbmRzKFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoY29ubmVjdFRp
bWUpLnZhbHVlKCkpOworICAgIC8vIEluIG9yZGVyIHRvIHJlcG9ydCBhIG1hcHBpbmcgb2YgInhy
LXN0YW5kYXJkIiB0aGUgZGV2aWNlIE1VU1QgcmVwb3J0IGEgdGFyZ2V0UmF5TW9kZSBvZiAidHJh
Y2tlZC1wb2ludGVyIiBhbmQgTVVTVCBoYXZlIGEgbm9uLW51bGwgZ3JpcFNwYWNlLgorICAgIC8v
IEl0IE1VU1QgaGF2ZSBhdCBsZWFzdCBvbmUgcHJpbWFyeSB0cmlnZ2VyLCBzZXBhcmF0ZSBmcm9t
IGFueSB0b3VjaHBhZHMgb3IgdGh1bWJzdGlja3MKKyAgICBpZiAoc291cmNlLnRhcmdldFJheU1v
ZGUgPT0gWFJUYXJnZXRSYXlNb2RlOjpUcmFja2VkUG9pbnRlciAmJiAhc291cmNlLmJ1dHRvbnMu
aXNFbXB0eSgpICYmIHNvdXJjZS5ncmlwT3JpZ2luLmhhc1ZhbHVlKCkpCisgICAgICAgIG1fbWFw
cGluZyA9IHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpOworICAgIG1fYXhlcyA9IHNv
dXJjZS5heGVzLm1hcChbXShhdXRvIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBTaGFyZWRHYW1l
cGFkVmFsdWUodmFsdWUpOworICAgIH0pOworICAgIG1fYnV0dG9ucyA9IHNvdXJjZS5idXR0b25z
Lm1hcChbXShhdXRvJiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gU2hhcmVkR2FtZXBhZFZhbHVl
KHZhbHVlLnByZXNzZWRWYWx1ZSk7CisgICAgfSk7Cit9CisKKyNlbmRpZgorCisvLyBXZWJYUklu
cHV0U291cmNlCisKK1JlZjxXZWJYUklucHV0U291cmNlPiBXZWJYUklucHV0U291cmNlOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIGRvdWJs
ZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZSYgc291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3Vy
Y2UoV1RGTW92ZSh0YXJnZXRSYXlTcGFjZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJYUklucHV0U291cmNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCB0aW1lc3RhbXAsIHNv
dXJjZSkpOwogfQogCi1XZWJYUklucHV0U291cmNlOjpXZWJYUklucHV0U291cmNlKFJlZjxXZWJY
UlNwYWNlPiYmIHRhcmdldFJheVNwYWNlKQotICAgIDogbV9oYW5kZWRuZXNzKFhSSGFuZGVkbmVz
czo6Tm9uZSkKLSAgICAsIG1fdGFyZ2V0UmF5TW9kZShYUlRhcmdldFJheU1vZGU6OkdhemUpCi0g
ICAgLCBtX3RhcmdldFJheVNwYWNlKFdURk1vdmUodGFyZ2V0UmF5U3BhY2UpKQorV2ViWFJJbnB1
dFNvdXJjZTo6V2ViWFJJbnB1dFNvdXJjZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNl
c3Npb24+JiYgc2Vzc2lvbiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2UpCisgICAgOiBtX2RvY3VtZW50KGRv
Y3VtZW50KQorICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX3Rhcmdl
dFJheVNwYWNlKFdlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtX3Nlc3Npb24uY29w
eVJlZigpLCBzb3VyY2UucG9pbnRlck9yaWdpbikpCisgICAgLCBtX2Nvbm5lY3RUaW1lKHRpbWVz
dGFtcCkKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICAsIG1fZ2FtZXBhZChHYW1lcGFkOjpjcmVh
dGUoV2ViWFJHYW1lcGFkKHRpbWVzdGFtcCwgdGltZXN0YW1wLCBzb3VyY2UpKSkKKyNlbmRpZgog
eworICAgIHVwZGF0ZSh0aW1lc3RhbXAsIHNvdXJjZSk7CiB9CiAKIFdlYlhSSW5wdXRTb3VyY2U6
On5XZWJYUklucHV0U291cmNlKCkgPSBkZWZhdWx0OwogCi1YUkhhbmRlZG5lc3MgV2ViWFJJbnB1
dFNvdXJjZTo6aGFuZGVkbmVzcygpIGNvbnN0Cit2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnVwZGF0
ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
SW5wdXRTb3VyY2UmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gbV9oYW5kZWRuZXNzOworI2lmICFF
TkFCTEUoR0FNRVBBRCkKKyAgICBVTlVTRURfUEFSQU0odGltZXN0YW1wKTsKKyNlbmRpZgorICAg
IG1fc291cmNlID0gc291cmNlOworICAgIG1fdGFyZ2V0UmF5U3BhY2UtPnNldFBvc2Uoc291cmNl
LnBvaW50ZXJPcmlnaW4pOworICAgIGlmIChhdXRvIGdyaXBPcmlnaW4gPSBzb3VyY2UuZ3JpcE9y
aWdpbikgeworICAgICAgICBpZiAobV9ncmlwU3BhY2UpCisgICAgICAgICAgICBtX2dyaXBTcGFj
ZS0+c2V0UG9zZSgqZ3JpcE9yaWdpbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZ3Jp
cFNwYWNlID0gV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUobV9kb2N1bWVudCwgbV9zZXNzaW9uLmdl
dCgpLCAqZ3JpcE9yaWdpbik7CisgICAgfSBlbHNlCisgICAgICAgIG1fZ3JpcFNwYWNlID0gbnVs
bHB0cjsKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBtX2dhbWVwYWQtPnVwZGF0ZUZyb21QbGF0
Zm9ybUdhbWVwYWQoV2ViWFJHYW1lcGFkKHRpbWVzdGFtcCwgbV9jb25uZWN0VGltZSwgc291cmNl
KSk7CisjZW5kaWYKIH0KIAotWFJUYXJnZXRSYXlNb2RlIFdlYlhSSW5wdXRTb3VyY2U6OnRhcmdl
dFJheU1vZGUoKSBjb25zdAorYm9vbCBXZWJYUklucHV0U291cmNlOjpyZXF1aXJlc0lucHV0U291
cmNlQ2hhbmdlKGNvbnN0IElucHV0U291cmNlJiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIG1fdGFy
Z2V0UmF5TW9kZTsKKyAgICByZXR1cm4gbV9zb3VyY2UuaGFuZGVuZXNzICE9IHNvdXJjZS5oYW5k
ZW5lc3MKKyAgICAgICAgfHwgbV9zb3VyY2UudGFyZ2V0UmF5TW9kZSAhPSBzb3VyY2UudGFyZ2V0
UmF5TW9kZQorICAgICAgICB8fCBtX3NvdXJjZS5wcm9maWxlcyAhPSBzb3VyY2UucHJvZmlsZXMK
KyAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Ym9vbD4obV9ncmlwU3BhY2UpICE9IHNvdXJjZS5ncmlw
T3JpZ2luLmhhc1ZhbHVlKCk7CiB9CiAKLWNvbnN0IFdlYlhSU3BhY2UmIFdlYlhSSW5wdXRTb3Vy
Y2U6OnRhcmdldFJheVNwYWNlKCkgY29uc3QKK3ZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6ZGlzY29u
bmVjdCgpCiB7Ci0gICAgcmV0dXJuIG1fdGFyZ2V0UmF5U3BhY2U7CisgICAgbV9jb25uZWN0ZWQg
PSBmYWxzZTsKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBtX2dhbWVwYWQtPnNldENvbm5lY3Rl
ZChmYWxzZSk7CisjZW5kaWYKIH0KIAotUmVmUHRyPFdlYlhSU3BhY2U+IFdlYlhSSW5wdXRTb3Vy
Y2U6OmdyaXBTcGFjZSgpIGNvbnN0Cit2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnBvbGxFdmVudHMo
VmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYgZXZlbnRzKQogewotICAgIHJldHVybiB7
IH07CisgICAgaWYgKCFtX2Nvbm5lY3RlZCkgeworICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVT
VCBkaXNwYXRjaCBhIHNlbGVjdGVuZCBldmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiBvbmUgb2Yg
aXRzIFhSSW5wdXRTb3VyY2VzIGVuZHMgCisgICAgICAgIC8vIHdoZW4gYW4gWFJJbnB1dFNvdXJj
ZSB0aGF0IGhhcyBiZWd1biBhIHByaW1hcnkgc2VsZWN0IGFjdGlvbiBpcyBkaXNjb25uZWN0ZWQu
CisgICAgICAgIGlmIChtX3NlbGVjdFN0YXJ0ZWQpCisgICAgICAgICAgICBldmVudHMuYXBwZW5k
KGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5zZWxlY3RlbmRFdmVudCkpOworCisgICAgICAgIC8v
IEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc3F1ZWV6ZWVuZCBldmVudCBvbiBhbiBYUlNl
c3Npb24gd2hlbiBvbmUgb2YgaXRzIFhSSW5wdXRTb3VyY2VzIGVuZHMgCisgICAgICAgIC8vIHdo
ZW4gYW4gWFJJbnB1dFNvdXJjZSB0aGF0IGhhcyBiZWd1biBhIHByaW1hcnkgc3F1ZWV6ZSBhY3Rp
b24gaXMgZGlzY29ubmVjdGVkLgorICAgICAgICBpZiAobV9zcXVlZXplU3RhcnRlZCkKKyAgICAg
ICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZlbnROYW1lcygpLnNxdWVlemVlbmRF
dmVudCkpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBodHRwczovL2ltbWVy
c2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8jeHItc3RhbmRhcmQtZ2Ft
ZXBhZC1tYXBwaW5nCisgICAgLy8gQnV0dG9uIGluZGljZXMgYXJlIGJhc2VkIG9uIHRoZSB4ci1z
dGFuZGFyZCBsYXlvdXQuCisgICAgYm9vbCBzZWxlY3RTdGFydGVkID0gIW1fc291cmNlLmJ1dHRv
bnMuaXNFbXB0eSgpICYmIG1fc291cmNlLmJ1dHRvbnMuZmlyc3QoKS5wcmVzc2VkOworICAgIGJv
b2wgc3F1ZWV6ZVN0YXJ0ZWQgPSBtX3NvdXJjZS5idXR0b25zLnNpemUoKSA+IDEgJiYgbV9zb3Vy
Y2UuYnV0dG9uc1sxXS5wcmVzc2VkOworCisgICAgaWYgKHNlbGVjdFN0YXJ0ZWQgIT0gbV9zZWxl
Y3RTdGFydGVkKSB7CisgICAgICAgIGlmIChzZWxlY3RTdGFydGVkKSB7CisgICAgICAgICAgICAv
LyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVjdHN0YXJ0IGV2ZW50IG9uIGFuIFhS
U2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgYmVnaW5zIGl0cyBwcmltYXJ5
IGFjdGlvbi4KKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZlbnROYW1l
cygpLnNlbGVjdHN0YXJ0RXZlbnQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0ZW5kIGV2ZW50IG9uIGFuIFhSU2Vz
c2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgZW5kcyBpdHMgcHJpbWFyeSBhY3Rp
b24uCisgICAgICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVjdCBl
dmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiBvbmUgb2YgaXRzIFhSSW5wdXRTb3VyY2VzIGhhcyBm
dWxseSBjb21wbGV0ZWQgYSBwcmltYXJ5IGFjdGlvbgorICAgICAgICAgICAgZXZlbnRzLmFwcGVu
ZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc2VsZWN0RXZlbnQpKTsKKyAgICAgICAgICAgIGV2
ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZlbnROYW1lcygpLnNlbGVjdGVuZEV2ZW50KSk7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9zZWxlY3RTdGFydGVkID0gc2VsZWN0U3RhcnRlZDsKKyAgICB9
CisKKyAgICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQgIT0gbV9zcXVlZXplU3RhcnRlZCkgeworICAgICAg
ICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNU
IGRpc3BhdGNoIGEgc3F1ZWV6ZXN0YXJ0IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBv
ZiBpdHMgWFJJbnB1dFNvdXJjZXMgYmVnaW5zIGl0cyBwcmltYXJ5IHNxdWVlemUgYWN0aW9uLgor
ICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6
ZXN0YXJ0RXZlbnQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEEgdXNlciBh
Z2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0ZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVu
IG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgZW5kcyBpdHMgcHJpbWFyeSBzcXVlZXplIGFjdGlv
bi4KKyAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0IGV2
ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgaGFzIGZ1
bGx5IGNvbXBsZXRlZCBhIHByaW1hcnkgc3F1ZWV6ZSBhY3Rpb24uCisgICAgICAgICAgICBldmVu
dHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5zcXVlZXplRXZlbnQpKTsKKyAgICAg
ICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZlbnROYW1lcygpLnNxdWVlemVlbmRF
dmVudCkpOworICAgICAgICB9CisgICAgICAgIG1fc3F1ZWV6ZVN0YXJ0ZWQgPSBzcXVlZXplU3Rh
cnRlZDsKKyAgICB9CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBXZWJYUklucHV0U291cmNl
Ojpwcm9maWxlcygpIGNvbnN0CitSZWY8WFJJbnB1dFNvdXJjZUV2ZW50PiBXZWJYUklucHV0U291
cmNlOjpjcmVhdGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBt
X3Byb2ZpbGVzOworICAgIFhSSW5wdXRTb3VyY2VFdmVudDo6SW5pdCBpbml0OworICAgIGluaXQu
ZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobV9zZXNzaW9uLmNvcHlSZWYoKSwgV2ViWFJGcmFt
ZTo6SXNBbmltYXRpb25GcmFtZTo6Tm8pOworICAgIGluaXQuaW5wdXRTb3VyY2UgPSBtYWtlUmVm
UHRyKCp0aGlzKTsKKworICAgIHJldHVybiBYUklucHV0U291cmNlRXZlbnQ6OmNyZWF0ZShuYW1l
LCBpbml0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaAppbmRleCA2OGMyOWFiMWNkYjkwNmRi
ZTE0YmI5NDkyYWIyZmQ4OGI0MWQ0MTEyLi43NjM2MjhiNDM5MjZlMGE0MDhhNGZlOTlhMzRhMDM4
ZTg1YWVmMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
SW5wdXRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5w
dXRTb3VyY2UuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5j
bHVkZSAiUGxhdGZvcm1YUi5oIgorI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKICNpbmNsdWRlICJY
UkhhbmRlZG5lc3MuaCIKICNpbmNsdWRlICJYUlRhcmdldFJheU1vZGUuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jLmg+CkBAIC0zNiwyOSArMzgsOTggQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoR0FNRVBB
RCkKKyNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFdlYlhSU3BhY2U7CisjaWYgRU5BQkxFKEdBTUVQQUQpCitjbGFzcyBH
YW1lcGFkOworI2VuZGlmCitjbGFzcyBYUklucHV0U291cmNlRXZlbnQ7CisKK2NsYXNzIFdlYlhS
SW5wdXRTcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSW5wdXRTcGFjZT4sIHB1YmxpYyBX
ZWJYUlNwYWNlIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSSW5wdXRTcGFjZSk7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U3BhY2U+IGNyZWF0ZShEb2N1bWVu
dCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKKyAgICB2aXJ0dWFsIH5XZWJYUklucHV0U3BhY2UoKTsK
KworICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6cmVmOworICAgIHVzaW5n
IFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6ZGVyZWY7CisKKyAgICBib29sIGlzUG9zaXRp
b25FbXVsYXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcG9zZS5pc1Bvc2l0aW9uRW11bGF0
ZWQ7IH0KKyAgICB2b2lkIHNldFBvc2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkgeyBtX3Bvc2UgPSBwb3NlOyB9CisKK3ByaXZhdGU6
CisgICAgV2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYpOworICAg
IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5n
ZXQoKTsgfQorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0IGZp
bmFsOworCisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKworICAgIFJlZjxXZWJY
UlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
SW5wdXRTb3VyY2VQb3NlIG1fcG9zZTsKK307CisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKK2NsYXNz
IFdlYlhSR2FtZXBhZDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CitwdWJsaWM6CisgICAgV2Vi
WFJHYW1lcGFkKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBjb25uZWN0VGltZSwgY29uc3QgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJik7CisKK3ByaXZhdGU6Cisg
ICAgY29uc3QgVmVjdG9yPFNoYXJlZEdhbWVwYWRWYWx1ZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F4ZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8U2hhcmVkR2FtZXBhZFZh
bHVlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0b25zOyB9CisK
KyAgICBWZWN0b3I8U2hhcmVkR2FtZXBhZFZhbHVlPiBtX2F4ZXM7CisgICAgVmVjdG9yPFNoYXJl
ZEdhbWVwYWRWYWx1ZT4gbV9idXR0b25zOworfTsKKyNlbmRpZgogCiBjbGFzcyBXZWJYUklucHV0
U291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNvdXJjZT4gewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoV2ViWFJJbnB1dFNvdXJjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxXZWJYUklucHV0U291cmNlPiBjcmVhdGUoUmVmPFdlYlhSU3BhY2U+JiYpOworICAgIHVz
aW5nIElucHV0U291cmNlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291
cmNlOworICAgIHVzaW5nIElucHV0U291cmNlQnV0dG9uID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOworCisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0
U291cmNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBkb3VibGUgdGlt
ZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZSYpOwogICAgIH5XZWJYUklucHV0U291cmNlKCk7CiAK
LSAgICBYUkhhbmRlZG5lc3MgaGFuZGVkbmVzcygpIGNvbnN0OwotICAgIFhSVGFyZ2V0UmF5TW9k
ZSB0YXJnZXRSYXlNb2RlKCkgY29uc3Q7Ci0gICAgY29uc3QgV2ViWFJTcGFjZSYgdGFyZ2V0UmF5
U3BhY2UoKSBjb25zdDsKLSAgICBSZWZQdHI8V2ViWFJTcGFjZT4gZ3JpcFNwYWNlKCkgY29uc3Q7
Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb2ZpbGVzKCkgY29uc3Q7CisgICAgUGxhdGZv
cm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2Uu
aGFuZGxlOyB9CisgICAgWFJIYW5kZWRuZXNzIGhhbmRlZG5lc3MoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZS5oYW5kZW5lc3M7IH0KKyAgICBYUlRhcmdldFJheU1vZGUgdGFyZ2V0UmF5TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnRhcmdldFJheU1vZGU7IH07CisgICAgY29uc3QgV2Vi
WFJTcGFjZSYgdGFyZ2V0UmF5U3BhY2UoKSBjb25zdCB7cmV0dXJuIG1fdGFyZ2V0UmF5U3BhY2Uu
Z2V0KCk7IH07CisgICAgUmVmUHRyPFdlYlhSU3BhY2U+IGdyaXBTcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZ3JpcFNwYWNlOyB9CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb2ZpbGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2UucHJvZmlsZXM7IH07CisjaWYgRU5BQkxFKEdBTUVQQUQp
CisgICAgY29uc3QgR2FtZXBhZCogZ2FtZXBhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2FtZXBhZC5w
dHIoKTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25z
dCBJbnB1dFNvdXJjZSYpOworICAgIGJvb2wgcmVxdWlyZXNJbnB1dFNvdXJjZUNoYW5nZShjb25z
dCBJbnB1dFNvdXJjZSYpOworICAgIHZvaWQgZGlzY29ubmVjdCgpOworICAgIAorICAgIHZvaWQg
cG9sbEV2ZW50cyhWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+Jik7CiAKIHByaXZhdGU6
Ci0gICAgV2ViWFJJbnB1dFNvdXJjZShSZWY8V2ViWFJTcGFjZT4mJik7CisgICAgV2ViWFJJbnB1
dFNvdXJjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGRvdWJsZSB0aW1lc3RhbXAs
IGNvbnN0IElucHV0U291cmNlJik7CisKKyAgICBSZWY8WFJJbnB1dFNvdXJjZUV2ZW50PiBjcmVh
dGVFdmVudChjb25zdCBBdG9tU3RyaW5nJik7CisKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsK
KyAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CisgICAgSW5wdXRTb3VyY2UgbV9zb3Vy
Y2U7CisgICAgUmVmPFdlYlhSSW5wdXRTcGFjZT4gbV90YXJnZXRSYXlTcGFjZTsKKyAgICBSZWZQ
dHI8V2ViWFJJbnB1dFNwYWNlPiBtX2dyaXBTcGFjZTsKKyAgICBkb3VibGUgbV9jb25uZWN0VGlt
ZSB7IDAgfTsKKyAgICBib29sIG1fY29ubmVjdGVkIHsgdHJ1ZSB9OworI2lmIEVOQUJMRShHQU1F
UEFEKQorICAgIFJlZjxHYW1lcGFkPiBtX2dhbWVwYWQ7CisjZW5kaWYKIAotICAgIFhSSGFuZGVk
bmVzcyBtX2hhbmRlZG5lc3M7Ci0gICAgWFJUYXJnZXRSYXlNb2RlIG1fdGFyZ2V0UmF5TW9kZTsK
LSAgICBSZWY8V2ViWFJTcGFjZT4gbV90YXJnZXRSYXlTcGFjZTsKLSAgICBWZWN0b3I8U3RyaW5n
PiBtX3Byb2ZpbGVzOworICAgIGJvb2wgbV9zZWxlY3RTdGFydGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fc3F1ZWV6ZVN0YXJ0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0
U291cmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJj
ZS5pZGwKaW5kZXggMDQ1OWYzZmU0NzA3NTIxMTM3YmY1M2YxYTM0NGVkZGQ5OGViZDM2OS4uYzQ1
ZjVjZDM2Njg1ZjI0ZTljOWFkZjM1MTZlZmM2NzcyM2Y5YzE5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaWRsCkBAIC0zNiw0ICszNiw3
IEBACiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJYUlNwYWNlIHRhcmdl
dFJheVNwYWNlOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJTcGFj
ZT8gZ3JpcFNwYWNlIDsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIEZyb3pl
bkFycmF5PERPTVN0cmluZz4gcHJvZmlsZXM7CisKKyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13
ZWIuZ2l0aHViLmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8jeHJpbnB1dHNvdXJjZS1pbnRlcmZh
Y2UKKyAgICBbQ29uZGl0aW9uYWw9R0FNRVBBRCwgU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmli
dXRlIEdhbWVwYWQ/IGdhbWVwYWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwCmluZGV4IGM0YzA4NTUzMmJjZDlh
YWMyNzM4MDkwYmZhM2ZkZGZlYTQzMzU1ZDMuLjM3Y2VmMWVhNjkzODBhZmIyN2Q1MGM0YThkNmM3
MzRhMmYxNzU4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJJbnB1dFNvdXJjZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKQEAgLTI3LDIxICsyNywxNTQgQEAKICNpbmNsdWRl
ICJXZWJYUklucHV0U291cmNlQXJyYXkuaCIKIAogI2lmIEVOQUJMRShXRUJYUikKLQorI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJXZWJYUklucHV0U291cmNlLmgiCisjaW5jbHVk
ZSAiV2ViWFJTZXNzaW9uLmgiCisjaW5jbHVkZSAiWFJJbnB1dFNvdXJjZUV2ZW50LmgiCisjaW5j
bHVkZSAiWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFdlYlhSSW5wdXRTb3VyY2VBcnJheSk7CiAKKworUmVmPFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheT4gV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBXZWJYUlNlc3Npb24mIHNlc3Npb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
WFJJbnB1dFNvdXJjZUFycmF5KGRvY3VtZW50LCBzZXNzaW9uKSk7Cit9CisKK1dlYlhSSW5wdXRT
b3VyY2VBcnJheTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5KERvY3VtZW50JiBkb2N1bWVudCwgV2Vi
WFJTZXNzaW9uJiBzZXNzaW9uKQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1f
c2Vzc2lvbihzZXNzaW9uKQoreworfQorCitXZWJYUklucHV0U291cmNlQXJyYXk6On5XZWJYUklu
cHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7CisKIHVuc2lnbmVkIFdlYlhSSW5wdXRTb3VyY2VB
cnJheTo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9pbnB1
dFNvdXJjZXMuc2l6ZSgpOworfQorCitXZWJYUklucHV0U291cmNlKiBXZWJYUklucHV0U291cmNl
QXJyYXk6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5wdXRT
b3VyY2VzLmF0KGluZGV4KS5wdHIoKTsKK30KKwordm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6
OmNsZWFyKCkKK3sKKyAgICBtX2lucHV0U291cmNlcy5jbGVhcigpOworfQorCisvLyBodHRwczov
L2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1z
b3VyY2VzCit2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6dXBkYXRlKGRvdWJsZSB0aW1lc3Rh
bXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3VyY2VzKQoreworICAgIFZlY3RvcjxS
ZWY8V2ViWFJJbnB1dFNvdXJjZT4+IGFkZGVkOworICAgIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNv
dXJjZT4+IHJlbW92ZWQ7CisgICAgVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiBpbnB1
dEV2ZW50czsKKworICAgIGhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMoaW5wdXRTb3VyY2VzLCBy
ZW1vdmVkLCBpbnB1dEV2ZW50cyk7CisgICAgaGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJj
ZXModGltZXN0YW1wLCBpbnB1dFNvdXJjZXMsIGFkZGVkLCByZW1vdmVkLCBpbnB1dEV2ZW50cyk7
CisKKyAgICBpZiAoIWFkZGVkLmlzRW1wdHkoKSB8fCAhcmVtb3ZlZC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYW4gaW5wdXRzb3VyY2VzY2hhbmdl
IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIHRoZSBzZXNzaW9u4oCZcyBsaXN0IG9mIGFjdGl2
ZSBYUiBpbnB1dCBzb3VyY2VzIGhhcyBjaGFuZ2VkLgorICAgICAgICBYUklucHV0U291cmNlc0No
YW5nZUV2ZW50OjpJbml0IGluaXQ7CisgICAgICAgIGluaXQuc2Vzc2lvbiA9IG1ha2VSZWZQdHIo
bV9zZXNzaW9uKTsKKyAgICAgICAgaW5pdC5hZGRlZCA9IGFkZGVkLm1hcChbXShhdXRvJiBpbnB1
dCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoaW5wdXQuZ2V0KCkpOworICAgICAg
ICB9KTsKKyAgICAgICAgaW5pdC5yZW1vdmVkID0gcmVtb3ZlZC5tYXAoW10oYXV0byYgaW5wdXQp
IHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKGlucHV0LmdldCgpKTsKKyAgICAgICAg
fSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGV2ZW50ID0gWFJJbnB1dFNvdXJjZXNDaGFuZ2VF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnB1dHNvdXJjZXNjaGFuZ2VFdmVudCwgaW5pdCk7
CisgICAgICAgIG1fc2Vzc2lvbi5xdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobV9zZXNzaW9uLCBU
YXNrU291cmNlOjpXZWJYUiwgV1RGTW92ZShldmVudCkpOworICAgIH0KKworICAgIGlmICghaW5w
dXRFdmVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaGFz
IHRvIGZpcmUgYW4gaW5wdXQgc291cmNlIGV2ZW50IHdpdGggbmFtZSBuYW1lLCBYUkZyYW1lIGZy
YW1lLCBhbmQgWFJJbnB1dFNvdXJjZSBzb3VyY2UgaXQgTVVTVCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKKyAgICAgICAgLy8gMS4gQ3JlYXRlIGFuIFhSSW5wdXRTb3VyY2VFdmVudCBldmVudCB3
aXRoIHR5cGUgbmFtZSwgZnJhbWUgZnJhbWUsIGFuZCBpbnB1dFNvdXJjZSBzb3VyY2UuCisgICAg
ICAgIC8vIDIuIFNldCBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gdG8gdHJ1ZS4KKyAgICAgICAg
Ly8gMy4gQXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJhbWUuCisgICAgICAgIC8vIDQuIERpc3Bh
dGNoIGV2ZW50IG9uIGZyYW1l4oCZcyBzZXNzaW9uCisgICAgICAgIC8vIDUuIFNldCBmcmFtZeKA
mXMgYWN0aXZlIGJvb2xlYW4gdG8gZmFsc2UuCisKKyAgICAgICAgZm9yIChhdXRvJiBldmVudCA6
IGlucHV0RXZlbnRzKSB7CisgICAgICAgICAgICBldmVudC0+c2V0RnJhbWVBY3RpdmUodHJ1ZSk7
CisgICAgICAgICAgICBtX3Nlc3Npb24ucXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KG1fc2Vzc2lv
biwgVGFza1NvdXJjZTo6V2ViWFIsIGV2ZW50LmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3Nl
c3Npb24ucXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKG1fc2Vzc2lvbiwgVGFza1NvdXJjZTo6
V2ViWFIsIFtldmVudCA9IFdURk1vdmUoZXZlbnQpXSgpIHsKKyAgICAgICAgICAgICAgICBldmVu
dC0+c2V0RnJhbWVBY3RpdmUoZmFsc2UpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2xpc3Qt
b2YtYWN0aXZlLXhyLWlucHV0LXNvdXJjZXMKK3ZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5Ojpo
YW5kbGVSZW1vdmVkSW5wdXRTb3VyY2VzKGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3Vy
Y2VzLCBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiYgcmVtb3ZlZCwgVmVjdG9yPFJlZjxY
UklucHV0U291cmNlRXZlbnQ+PiYgaW5wdXRFdmVudHMpCit7CisgICAgLy8gV2hlbiBhbnkgcHJl
dmlvdXNseSBhZGRlZCBYUiBpbnB1dCBzb3VyY2VzIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlIGZv
ciBYUlNlc3Npb24gc2Vzc2lvbiwgdGhlIHVzZXIgYWdlbnQgTVVTVCBydW4gdGhlIGZvbGxvd2lu
ZyBzdGVwczoKKyAgICAvLyAxLiBJZiBzZXNzaW9uJ3MgcHJvbWlzZSByZXNvbHZlZCBmbGFnIGlz
IG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIC8vIDIuIExldCByZW1vdmVkIGJlIGEg
bmV3IGxpc3QuCisgICAgLy8gMy4gRm9yIGVhY2ggWFIgaW5wdXQgc291cmNlIHRoYXQgaXMgbm8g
bG9uZ2VyIGF2YWlsYWJsZToKKyAgICAvLyAgMy4xIExldCBpbnB1dFNvdXJjZSBiZSB0aGUgWFJJ
bnB1dFNvdXJjZSBpbiBzZXNzaW9uJ3MgbGlzdCBvZiBhY3RpdmUgWFIgaW5wdXQgc291cmNlcyBh
c3NvY2lhdGVkIHdpdGggdGhlIFhSIGlucHV0IHNvdXJjZS4KKyAgICAvLyAgMy4yIEFkZCBpbnB1
dFNvdXJjZSB0byByZW1vdmVkLgorICAgIGZvciAoaW50IGkgPSBtX2lucHV0U291cmNlcy5zaXpl
KCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICBhdXRvIGhhbmRsZSA9IG1faW5wdXRTb3Vy
Y2VzW2ldLT5oYW5kbGUoKTsKKyAgICAgICAgaWYgKGlucHV0U291cmNlcy5maW5kTWF0Y2hpbmco
W2hhbmRsZV0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5oYW5kbGUgPT0gaGFuZGxlOyB9KSA9
PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgICAgICByZW1vdmVkLmFwcGVuZChtX2lucHV0U291
cmNlc1tpXS5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXNbaV0tPmRpc2Nv
bm5lY3QoKTsKKyAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzW2ldLT5wb2xsRXZlbnRzKGlucHV0
RXZlbnRzKTsKKyAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzLnJlbW92ZShpKTsKKyAgICAgICAg
fQorICAgIH0KIH0KIAotV2ViWFJJbnB1dFNvdXJjZSogV2ViWFJJbnB1dFNvdXJjZUFycmF5Ojpp
dGVtKHVuc2lnbmVkKSBjb25zdAorLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93
ZWJ4ci8jbGlzdC1vZi1hY3RpdmUteHItaW5wdXQtc291cmNlcwordm9pZCBXZWJYUklucHV0U291
cmNlQXJyYXk6OmhhbmRsZUFkZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0aW1lc3Rh
bXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3VyY2VzLCBWZWN0b3I8UmVmPFdlYlhS
SW5wdXRTb3VyY2U+PiYgYWRkZWQsIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+JiByZW1v
dmVkLCBWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+JiBpbnB1dEV2ZW50cykKIHsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIGlucHV0U291cmNlIDogaW5wdXRTb3Vy
Y2VzKSB7CisgICAgICAgIGF1dG8gaW5kZXggPSBtX2lucHV0U291cmNlcy5maW5kTWF0Y2hpbmco
WyZpbnB1dFNvdXJjZV0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+aGFuZGxlKCkgPT0gaW5w
dXRTb3VyY2UuaGFuZGxlOyB9KTsKKyAgICAgICAgaWYgKGluZGV4ID09IFdURjo6bm90Rm91bmQp
IHsKKyAgICAgICAgICAgIC8vIFdoZW4gbmV3IFhSIGlucHV0IHNvdXJjZXMgYmVjb21lIGF2YWls
YWJsZSBmb3IgWFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2VyIGFnZW50IE1VU1QgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6CisgICAgICAgICAgICAvLyAxLiBJZiBzZXNzaW9uJ3MgcHJvbWlzZSBy
ZXNvbHZlZCBmbGFnIGlzIG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICAgICAg
Ly8gMi4gTGV0IGFkZGVkIGJlIGEgbmV3IGxpc3QuCisgICAgICAgICAgICAvLyAzLiBGb3IgZWFj
aCBuZXcgWFIgaW5wdXQgc291cmNlOgorICAgICAgICAgICAgLy8gICAzLjEgTGV0IGlucHV0U291
cmNlIGJlIGEgbmV3IFhSSW5wdXRTb3VyY2UgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHRoaXMg
WFJTZXNzaW9uLgorICAgICAgICAgICAgLy8gICAzLjIgQWRkIGlucHV0U291cmNlIHRvIGFkZGVk
LgorICAgICAgICAgICAgYXV0byBpbnB1dCA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZShtX2Rv
Y3VtZW50LCBtX3Nlc3Npb24sIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOworICAgICAgICAgICAg
YWRkZWQuYXBwZW5kKGlucHV0LmNvcHlSZWYoKSk7CisgICAgICAgICAgICBpbnB1dC0+cG9sbEV2
ZW50cyhpbnB1dEV2ZW50cyk7CisgICAgICAgICAgICBtX2lucHV0U291cmNlcy5hcHBlbmQoV1RG
TW92ZShpbnB1dCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBXaGVuIHRoZSBoYW5kZWRuZXNzLCB0YXJnZXRSYXlNb2RlLCBwcm9maWxlcywgb3IgcHJl
c2VuY2Ugb2YgYSBncmlwU3BhY2UgZm9yIGFueSBYUiBpbnB1dCBzb3VyY2VzIGNoYW5nZSBmb3Ig
WFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2VyIGFnZW50IE1VU1QgcnVuIHRoZSBmb2xsb3dpbmcg
c3RlcHMKKyAgICAgICAgLy8gMS4gSWYgc2Vzc2lvbuKAmXMgcHJvbWlzZSByZXNvbHZlZCBmbGFn
IGlzIG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICAvLyAyLiBMZXQgYWRkZWQg
YmUgYSBuZXcgbGlzdC4KKyAgICAgICAgLy8gMy4gTGV0IHJlbW92ZWQgYmUgYSBuZXcgbGlzdC4K
KyAgICAgICAgLy8gNC4gRm9yIGVhY2ggY2hhbmdlZCBYUiBpbnB1dCBzb3VyY2U6CisgICAgICAg
IC8vICA0LjEgTGV0IG9sZElucHV0U291cmNlIGJlIHRoZSBYUklucHV0U291cmNlIGluIHNlc3Np
b24ncyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2VzIHByZXZpb3VzbHkgYXNzb2NpYXRl
ZCB3aXRoIHRoZSBYUiBpbnB1dCBzb3VyY2UuCisgICAgICAgIC8vICA0LjEgTGV0IG5ld0lucHV0
U291cmNlIGJlIGEgbmV3IFhSSW5wdXRTb3VyY2UgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHNl
c3Npb24uCisgICAgICAgIC8vICA0LjEgQWRkIG9sZElucHV0U291cmNlIHRvIHJlbW92ZWQuCisg
ICAgICAgIC8vICA0LjEgQWRkIG5ld0lucHV0U291cmNlIHRvIGFkZGVkLgorICAgICAgICBhdXRv
JiBpbnB1dCA9IG1faW5wdXRTb3VyY2VzW2luZGV4XTsKKworICAgICAgICBpZiAoaW5wdXQtPnJl
cXVpcmVzSW5wdXRTb3VyY2VDaGFuZ2UoaW5wdXRTb3VyY2UpKSB7CisgICAgICAgICAgICByZW1v
dmVkLmFwcGVuZChpbnB1dC5jb3B5UmVmKCkpOworICAgICAgICAgICAgaW5wdXQtPmRpc2Nvbm5l
Y3QoKTsKKyAgICAgICAgICAgIGlucHV0LT5wb2xsRXZlbnRzKGlucHV0RXZlbnRzKTsKKyAgICAg
ICAgICAgIG1faW5wdXRTb3VyY2VzLnJlbW92ZShpbmRleCk7CisKKyAgICAgICAgICAgIGF1dG8g
bmV3SW5wdXRTb3VyY2UgPSBXZWJYUklucHV0U291cmNlOjpjcmVhdGUobV9kb2N1bWVudCwgbV9z
ZXNzaW9uLCB0aW1lc3RhbXAsIGlucHV0U291cmNlKTsKKyAgICAgICAgICAgIGFkZGVkLmFwcGVu
ZChuZXdJbnB1dFNvdXJjZS5jb3B5UmVmKCkpOworICAgICAgICAgICAgbmV3SW5wdXRTb3VyY2Ut
PnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOworICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXMuYXBw
ZW5kKFdURk1vdmUobmV3SW5wdXRTb3VyY2UpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGlucHV0LT51cGRhdGUodGltZXN0YW1wLCBpbnB1dFNvdXJjZSk7CisgICAgICAgICAgICBp
bnB1dC0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oCmluZGV4IDQzYjlkMWEwZmYxZWU1N2Q1OTRkZWY5
MjEzYzA2MzA4ODM4MzZkNjIuLmU5MjVmOTJmMjM3N2VlNzA0ZWQ3OWQ2OTIyMTA3MzcxMTY2ZDJi
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZUFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0
U291cmNlQXJyYXkuaApAQCAtMjcsMjUgKzI3LDQwIEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAK
KyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgV2ViWFJJbnB1dFNvdXJjZTsK
K2NsYXNzIFhSSW5wdXRTb3VyY2VFdmVudDsKK2NsYXNzIFdlYlhSU2Vzc2lvbjsKIAogY2xhc3Mg
V2ViWFJJbnB1dFNvdXJjZUFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNvdXJj
ZUFycmF5PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUklucHV0U291cmNlQXJy
YXkpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3VyY2VBcnJheSgpKTsgfQot
ICAgIH5XZWJYUklucHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7CisgICAgdXNpbmcgSW5wdXRT
b3VyY2VMaXN0ID0gVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZT47CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U291cmNlQXJyYXk+IGNyZWF0ZShEb2N1
bWVudCYsIFdlYlhSU2Vzc2lvbiYpOworICAgIH5XZWJYUklucHV0U291cmNlQXJyYXkoKTsKIAog
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIFdlYlhSSW5wdXRTb3VyY2UqIGl0ZW0o
dW5zaWduZWQpIGNvbnN0OwogCisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgdXBkYXRlKGRv
dWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYpOworCiBwcml2YXRlOgotICAg
IFdlYlhSSW5wdXRTb3VyY2VBcnJheSgpID0gZGVmYXVsdDsKKyAgICBXZWJYUklucHV0U291cmNl
QXJyYXkoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mKTsKKworICAgIHZvaWQgaGFuZGxlUmVtb3Zl
ZElucHV0U291cmNlcyhjb25zdCBJbnB1dFNvdXJjZUxpc3QmLCBWZWN0b3I8UmVmPFdlYlhSSW5w
dXRTb3VyY2U+PiYsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mKTsKKyAgICB2b2lk
IGhhbmRsZUFkZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0
IElucHV0U291cmNlTGlzdCYsIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+JiwgVmVjdG9y
PFJlZjxXZWJYUklucHV0U291cmNlPj4mLCBWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+
Jik7CisKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKKyAgICBXZWJYUlNlc3Npb24mIG1fc2Vz
c2lvbjsKKyAgICBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBmZjFlYjFmYTBmZTY3OTQxZjE3ZmUzNDMwOGFj
YzQyNjExMWM1MjBmLi5jNDRmMjJlZThhOTE2MjQ2ODEwZGJiNWFjMGNhODEyYTQyMzIyZTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCkBAIC01
Miw3ICs1Miw3IEBAIFJlZjxXZWJYUlNlc3Npb24+IFdlYlhSU2Vzc2lvbjo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwKIAogV2ViWFJTZXNzaW9uOjpXZWJY
UlNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLCBYUlNlc3Np
b25Nb2RlIG1vZGUsIFBsYXRmb3JtWFI6OkRldmljZSYgZGV2aWNlLCBGZWF0dXJlTGlzdCYmIHJl
cXVlc3RlZEZlYXR1cmVzKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKLSAgICAs
IG1faW5wdXRTb3VyY2VzKFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKCkpCisgICAgLCBt
X2lucHV0U291cmNlcyhXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZShkb2N1bWVudCwgKnRo
aXMpKQogICAgICwgbV94clN5c3RlbShzeXN0ZW0pCiAgICAgLCBtX21vZGUobW9kZSkKICAgICAs
IG1fZGV2aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCkBAIC02Miw4ICs2Miw4IEBAIFdlYlhSU2Vz
c2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3Rl
bSwgWFJTZXNzaW9uTW9kCiAgICAgLCBtX3RpbWVPcmlnaW4oTW9ub3RvbmljVGltZTo6bm93KCkp
CiAgICAgLCBtX3ZpZXdzKGRldmljZS52aWV3cyhtb2RlKSkKIHsKLSAgICBtX2RldmljZS0+aW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKG1vZGUpOwogICAgIG1fZGV2aWNlLT5zZXRUcmFj
a2luZ0FuZFJlbmRlcmluZ0NsaWVudChtYWtlV2Vha1B0cigqdGhpcykpOworICAgIG1fZGV2aWNl
LT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcobW9kZSk7CiAKICAgICAvLyBodHRwczov
L2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNyZWYtZm9yLWRvbS14cnJlZmVyZW5jZXNw
YWNldHlwZS12aWV3ZXIlRTIlOTElQTIKICAgICAvLyBFdmVyeSBzZXNzaW9uIE1VU1Qgc3VwcG9y
dCB2aWV3ZXIgWFJSZWZlcmVuY2VTcGFjZXMuCkBAIC0zMTUsNiArMzE1LDExIEBAIGJvb2wgV2Vi
WFJTZXNzaW9uOjpzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
bW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbW1lcnNpdmVWciAmJiBtX2RldmljZS0+c3VwcG9ydHNW
aWV3cG9ydFNjYWxpbmcoKTsKIH0KIAorYm9vbCBXZWJYUlNlc3Npb246OmlzUG9zaXRpb25FbXVs
YXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRl
ZCB8fCAhbV9mcmFtZURhdGEuaXNQb3NpdGlvblZhbGlkOworfQorCiAvLyBodHRwczovL2ltbWVy
c2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNzaHV0LWRvd24tdGhlLXNlc3Npb24KIHZvaWQgV2Vi
WFJTZXNzaW9uOjpzaHV0ZG93bihJbml0aWF0ZWRCeVN5c3RlbSBpbml0aWF0ZWRCeVN5c3RlbSkK
IHsKQEAgLTMzOCw2ICszNDMsOCBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6c2h1dGRvd24oSW5pdGlh
dGVkQnlTeXN0ZW0gaW5pdGlhdGVkQnlTeXN0ZW0pCiAgICAgLy8gNC4gUmVtb3ZlIHNlc3Npb24g
ZnJvbSB0aGUgbGlzdCBvZiBpbmxpbmUgc2Vzc2lvbnMuCiAgICAgbV94clN5c3RlbS5zZXNzaW9u
RW5kZWQoKnRoaXMpOwogCisgICAgbV9pbnB1dFNvdXJjZXMtPmNsZWFyKCk7CisKICAgICBpZiAo
aW5pdGlhdGVkQnlTeXN0ZW0gPT0gSW5pdGlhdGVkQnlTeXN0ZW06OlllcykgewogICAgICAgICAv
LyBJZiB3ZSBnZXQgaGVyZSwgdGhlIHNlc3Npb24gdGVybWluYXRpb24gd2FzIHRyaWdnZXJlZCBi
eSB0aGUgc3lzdGVtIHJhdGhlciB0aGFuCiAgICAgICAgIC8vIHZpYSBYUlNlc3Npb24uZW5kKCku
IFNpbmNlIHRoZSBzeXN0ZW0gaGFzIGNvbXBsZXRlZCB0aGUgc2Vzc2lvbiBzaHV0ZG93biwgd2Ug
Y2FuCkBAIC00MTEsNiArNDE4LDI1IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpzdG9wKCkKIHsKIH0K
IAordm9pZCBXZWJYUlNlc3Npb246OnNlc3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzKFZl
Y3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+JiYgaW5wdXRT
b3VyY2VzKQoreworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIv
I2RvbS14cnN5c3RlbS1yZXF1ZXN0c2Vzc2lvbgorICAgIC8vIDUuNC4xMCBRdWV1ZSBhIHRhc2sg
dG8gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOiBOT1RFOiBUaGVzZSBzdGVwcyBlbnN1cmUg
dGhhdCBpbml0aWFsIGlucHV0c291cmNlc2NoYW5nZQorICAgIC8vIGV2ZW50cyBvY2N1ciBhZnRl
ciB0aGUgaW5pdGlhbCBzZXNzaW9uIGlzIHJlc29sdmVkLgorICAgIC8vICAgICAxLiBTZXQgc2Vz
c2lvbidzIHByb21pc2UgcmVzb2x2ZWQgZmxhZyB0byB0cnVlLgorICAgIC8vICAgICAyLiBMZXQg
c291cmNlcyBiZSBhbnkgZXhpc3RpbmcgaW5wdXQgc291cmNlcyBhdHRhY2hlZCB0byBzZXNzaW9u
LgorICAgIC8vICAgICAzLiBJZiBzb3VyY2VzIGlzIG5vbi1lbXB0eSwgcGVyZm9ybSB0aGUgZm9s
bG93aW5nIHN0ZXBzOgorICAgIC8vICAgICAgICAxLiBTZXQgc2Vzc2lvbidzIGxpc3Qgb2YgYWN0
aXZlIFhSIGlucHV0IHNvdXJjZXMgdG8gc291cmNlcy4KKyAgICAvLyAgICAgICAgMi4gRmlyZSBh
biBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50IG5hbWVkIGlucHV0c291cmNlc2NoYW5nZSBvbiBz
ZXNzaW9uIHdpdGggYWRkZWQgc2V0IHRvIHNvdXJjZXMuCisKKyAgICBhdXRvIHRpbWVzdGFtcCA9
IChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fdGltZU9yaWdpbikubWlsbGlzZWNvbmRzKCk7CisK
KyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhS
LCBbdGhpcywgdGltZXN0YW1wLCBpbnB1dFNvdXJjZXMgPSBXVEZNb3ZlKGlucHV0U291cmNlcyld
KCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5wdXRQcm9taXNlUmVzb2x2ZWQgPSB0cnVlOworICAg
ICAgICBtX2lucHV0U291cmNlcy0+dXBkYXRlKHRpbWVzdGFtcCwgaW5wdXRTb3VyY2VzKTsKKyAg
ICB9KTsKK30KKwogdm9pZCBXZWJYUlNlc3Npb246OnNlc3Npb25EaWRFbmQoKQogewogICAgIC8v
IFRoaXMgY2FuIGJlIGNhbGxlZCBhcyBhIHJlc3VsdCBvZiBmaW5pc2hpbmcgdGhlIHNodXRkb3du
IGluaXRpYXRlZApAQCAtNTIzLDYgKzU0OSw5IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpvbkZyYW1l
KFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYgZnJhbWVEYXRhKQogICAgICAgICAgICAg
ZnJhbWUtPnNldEFjdGl2ZSh0cnVlKTsKIAogICAgICAgICAgICAgLy8gNi40LkFwcGx5IGZyYW1l
IHVwZGF0ZXMgZm9yIGZyYW1lLgorICAgICAgICAgICAgaWYgKG1faW5wdXRQcm9taXNlUmVzb2x2
ZWQpCisgICAgICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXMtPnVwZGF0ZShub3csIGZyYW1lRGF0
YS5pbnB1dFNvdXJjZXMpOworCiAgICAgICAgICAgICBmcmFtZS0+c2V0RnJhbWVEYXRhKFdURk1v
dmUoZnJhbWVEYXRhKSk7CiAKICAgICAgICAgICAgIC8vIDYuNS5Gb3IgZWFjaCBlbnRyeSBpbiBz
ZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxs
YmFja3MsIGluIG9yZGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmgKaW5kZXggZGM1MDhhY2RhMWUwMjRlZjBhZmJmYWViNjA0OWU5M2M0Yjg0ODJiMy4uMmM5
ZjE4OWEwM2MzMDc4OTZhYjYwNTc2ZjM1MjI5MjE4ZWJjODM5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC04Myw2ICs4Myw3IEBAIHB1YmxpYzoK
ICAgICBJbnRTaXplIG5hdGl2ZVdlYkdMRnJhbWVidWZmZXJSZXNvbHV0aW9uKCkgY29uc3Q7CiAg
ICAgSW50U2l6ZSByZWNvbW1lbmRlZFdlYkdMRnJhbWVidWZmZXJSZXNvbHV0aW9uKCkgY29uc3Q7
CiAgICAgYm9vbCBzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpIGNvbnN0OyAKKyAgICBib29sIGlz
UG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0OwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CkBA
IC0xMTAsNiArMTExLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAog
ICAgIC8vIFBsYXRmb3JtWFI6OlRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50CisgICAgdm9pZCBz
ZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyhWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OklucHV0U291cmNlPiYmKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25EaWRF
bmQoKSBmaW5hbDsKIAogICAgIGVudW0gY2xhc3MgSW5pdGlhdGVkQnlTeXN0ZW0gOiBib29sIHsg
Tm8sIFllcyB9OwpAQCAtMTUxLDYgKzE1Myw5IEBAIHByaXZhdGU6CiAgICAgLy8gSW4gbWV0ZXJz
LgogICAgIGRvdWJsZSBtX21pbmltdW1OZWFyQ2xpcFBsYW5lIHsgMC4xIH07CiAgICAgZG91Ymxl
IG1fbWF4aW11bUZhckNsaXBQbGFuZSB7IDEwMDAuMCB9OworCisgICAgLy8gaHR0cHM6Ly9pbW1l
cnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jeHJzZXNzaW9uLXByb21pc2UtcmVzb2x2ZWQKKyAg
ICBib29sIG1faW5wdXRQcm9taXNlUmVzb2x2ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5j
cHAKaW5kZXggZmE4ODFkNGJiYjRmNTUxYmQ2YTMyODI5MmIwMjI5ZWExN2Q5NDlmOS4uMTE5MjE0
MTg5ZmMyMDFkODUxMzQ0ZGViMGQzMTZkMzlmNDc4YTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwCkBAIC01NCw2ICs1NCwxMSBAQCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBXZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4oKSBjb25zdAogfQogCiAKK2Jv
b2wgV2ViWFJTcGFjZTo6aXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
c2Vzc2lvbigpLmlzUG9zaXRpb25FbXVsYXRlZCgpOworfQorCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoV2ViWFJWaWV3ZXJTcGFjZSk7CiAKIFdlYlhSVmlld2VyU3BhY2U6OldlYlhSVmll
d2VyU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCmluZGV4IDRhOWRiZWZkZDNiNTQ3
ZjhhMDYyM2QyNjU2NDlkNmY5MGJiOWJmNGEuLmQ4Zjg4ZWE1OGI5NTg0NTE4ZDQ3NjU0MGVkYzhk
ZGRiMTk2NzlkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5o
CkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlhSU2Vzc2lvbiYgc2Vz
c2lvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2
ZU9yaWdpbigpIGNvbnN0ID0gMDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBlZmZlY3RpdmVP
cmlnaW4oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkKCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlN5c3RlbS5jcHAKaW5kZXggMDliYzhiZTU2MmU2ODI3MzQ1ZTM0MWM1ZjExOTM5Yjk1OTAyNWIx
Ny4uYjI0ZmQ3NGUwOWUzODBkNjQyMDkwODJlZGE0MGNlZjg1Mzk0ODIyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAgLTQzOCwxNCArNDM4LDcg
QEAgdm9pZCBXZWJYUlN5c3RlbTo6cmVxdWVzdFNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBY
UlNlc3Npb25Nb2RlIG1vZGUsIGNvbnN0IFgKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1v
dmUoc2Vzc2lvbikpOwogICAgICAgICByZWplY3RQcm9taXNlV2l0aE5vdFN1cHBvcnRlZEVycm9y
LnJlbGVhc2UoKTsKIAotICAgICAgICAvLyBGSVhNRToKLSAgICAgICAgLy8gNS40LjEwIFF1ZXVl
IGEgdGFzayB0byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6IE5PVEU6IFRoZXNlIHN0ZXBz
IGVuc3VyZSB0aGF0IGluaXRpYWwgaW5wdXRzb3VyY2VzY2hhbmdlCi0gICAgICAgIC8vIGV2ZW50
cyBvY2N1ciBhZnRlciB0aGUgaW5pdGlhbCBzZXNzaW9uIGlzIHJlc29sdmVkLgotICAgICAgICAv
LyAgICAgMS4gU2V0IHNlc3Npb24ncyBwcm9taXNlIHJlc29sdmVkIGZsYWcgdG8gdHJ1ZS4KLSAg
ICAgICAgLy8gICAgIDIuIExldCBzb3VyY2VzIGJlIGFueSBleGlzdGluZyBpbnB1dCBzb3VyY2Vz
IGF0dGFjaGVkIHRvIHNlc3Npb24uCi0gICAgICAgIC8vICAgICAzLiBJZiBzb3VyY2VzIGlzIG5v
bi1lbXB0eSwgcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICAvLyAgICAgICAg
MS4gU2V0IHNlc3Npb24ncyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2VzIHRvIHNvdXJj
ZXMuCi0gICAgICAgIC8vICAgICAgICAyLiBGaXJlIGFuIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZl
bnQgbmFtZWQgaW5wdXRzb3VyY2VzY2hhbmdlIG9uIHNlc3Npb24gd2l0aCBhZGRlZCBzZXQgdG8g
c291cmNlcy4KKyAgICAgICAgLy8gNS40LjEwIGlzIGhhbmRsZWQgaW4gV2ViWFJTZXNzaW9uOjpz
ZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcy4KICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkhhbmRlZG5lc3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvWFJIYW5kZWRuZXNzLmgKaW5kZXggOTMzMzAzNGQwY2Q0OWFj
OGRlZTkwMmEwODE2NDQ4MDQzNzhjYmMyYy4uODU5ODVjY2FmYTZiY2Q0NTZhYzBiNjQ1MmU3MDRh
ZTBiZmUwNzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkhh
bmRlZG5lc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSGFuZGVkbmVz
cy5oCkBAIC0yNywxMyArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUg
IlBsYXRmb3JtWFIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFhSSGFu
ZGVkbmVzcyB7Ci0gICAgTm9uZSwKLSAgICBMZWZ0LAotICAgIFJpZ2h0LAotfTsKK3VzaW5nIFhS
SGFuZGVkbmVzcyA9IFBsYXRmb3JtWFI6OlhSSGFuZGVkbmVzczsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5w
dXRTb3VyY2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRT
b3VyY2VFdmVudC5jcHAKaW5kZXggMjI2MzFhYjU1Mjk3MDU2Y2MwNjNkNzQ0Njg5ZDNlMDMzY2Ew
ZmE1Ny4uZmM4OGJmN2E3OWI2OTg0MDcwNDljZjYwMGI5NzE3ZWJkMzYyYzIyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZUV2ZW50LmNwcApA
QCAtMzAsOSArMzAsMTIgQEAKIAogI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJX
ZWJYUklucHV0U291cmNlLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoWFJJbnB1
dFNvdXJjZUV2ZW50KTsKKwogUmVmPFhSSW5wdXRTb3VyY2VFdmVudD4gWFJJbnB1dFNvdXJjZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6
ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWFJJ
bnB1dFNvdXJjZUV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKQEAgLTQyLDcg
KzQ1LDYgQEAgWFJJbnB1dFNvdXJjZUV2ZW50OjpYUklucHV0U291cmNlRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGkKICAgICA6IEV2ZW50KHR5cGUsIGluaXRp
YWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBtX2ZyYW1lKGluaXRpYWxpemVyLmZyYW1lKQogICAg
ICwgbV9pbnB1dFNvdXJjZShpbml0aWFsaXplci5pbnB1dFNvdXJjZSkKLSAgICAsIG1fYnV0dG9u
SW5kZXgoaW5pdGlhbGl6ZXIuYnV0dG9uSW5kZXgpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwog
ICAgIEFTU0VSVChtX2lucHV0U291cmNlKTsKQEAgLTYwLDkgKzYyLDkgQEAgY29uc3QgV2ViWFJJ
bnB1dFNvdXJjZSYgWFJJbnB1dFNvdXJjZUV2ZW50OjppbnB1dFNvdXJjZSgpIGNvbnN0CiAgICAg
cmV0dXJuICptX2lucHV0U291cmNlOwogfQogCi1PcHRpb25hbDxpbnQ+IFhSSW5wdXRTb3VyY2VF
dmVudDo6YnV0dG9uSW5kZXgoKSBjb25zdAordm9pZCBYUklucHV0U291cmNlRXZlbnQ6OnNldEZy
YW1lQWN0aXZlKGJvb2wgYWN0aXZlKQogewotICAgIHJldHVybiBtX2J1dHRvbkluZGV4OworICAg
IG1fZnJhbWUtPnNldEFjdGl2ZShhY3RpdmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQu
aAppbmRleCA4YzdmYzA0NzQ3YTJiZjExZWE4YjJmYjdiNWNhOWY0NTRhYzE1MzAzLi5lM2M1NDEx
MzQ1NTFiYzI3NWFmMGZjNDFiNjdlYWM0Mzk4MzNmMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZUV2ZW50LmgKQEAgLTM3LDExICszNywxMSBA
QCBjbGFzcyBXZWJYUkZyYW1lOwogY2xhc3MgV2ViWFJJbnB1dFNvdXJjZTsKIAogY2xhc3MgWFJJ
bnB1dFNvdXJjZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKKyAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFhSSW5wdXRTb3VyY2VFdmVudCk7CiBwdWJsaWM6CiAgICAgc3RydWN0IEluaXQg
OiBFdmVudEluaXQgewogICAgICAgICBSZWZQdHI8V2ViWFJGcmFtZT4gZnJhbWU7CiAgICAgICAg
IFJlZlB0cjxXZWJYUklucHV0U291cmNlPiBpbnB1dFNvdXJjZTsKLSAgICAgICAgT3B0aW9uYWw8
aW50PiBidXR0b25JbmRleDsKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxYUklucHV0U291cmNl
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCA9
IElzVHJ1c3RlZDo6Tm8pOwpAQCAtNDksNyArNDksOSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBX
ZWJYUkZyYW1lJiBmcmFtZSgpIGNvbnN0OwogICAgIGNvbnN0IFdlYlhSSW5wdXRTb3VyY2UmIGlu
cHV0U291cmNlKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8aW50PiBidXR0b25JbmRleCgpIGNvbnN0
OworICAgIHZvaWQgc2V0RnJhbWVBY3RpdmUoYm9vbCk7CisKKyAgICBFdmVudEludGVyZmFjZSBl
dmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFhSSW5wdXRTb3VyY2VFdmVudElu
dGVyZmFjZVR5cGU7IH0KIAogcHJpdmF0ZToKICAgICBYUklucHV0U291cmNlRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaAppbmRl
eCAwM2E2NGI3YjY4ZDRmNjIyNmQ0MmQxZjI3ZWQyMzIyMWQyNmU4YTg0Li5kZDU0NzhmOWZmYWM0
MzE3MzhhZmI5ZWEyYzE5MTk4NGYzNzJkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaApAQCAtNTIsNiAr
NTIsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNl
Pj4mIGFkZGVkKCkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291
cmNlPj4mIHJlbW92ZWQoKSBjb25zdDsKIAorICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJm
YWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudEludGVy
ZmFjZVR5cGU7IH0KKwogcHJpdmF0ZToKICAgICBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUlRhcmdldFJheU1vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvWFJUYXJnZXRSYXlNb2RlLmgKaW5kZXggMWZjYTQ0ZTQ1MWI5
N2M1NjAyNmUxNDViNTIyMzMxZjgxNjViYWU3Zi4uYjczYjRlMGNkMWYzNGI4YmIxODQ1YzVkNTA0
MzQwNmQ3YTcxY2Q3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9Y
UlRhcmdldFJheU1vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSVGFy
Z2V0UmF5TW9kZS5oCkBAIC0yOSwxMSArMjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWVudW0gY2xhc3MgWFJUYXJnZXRSYXlNb2RlIHsKLSAgICBHYXplLAotICAgIFRyYWNrZWRQb2lu
dGVyLAotICAgIFNjcmVlbiwKLX07CisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorCit1c2luZyBY
UlRhcmdldFJheU1vZGUgPSBQbGF0Zm9ybVhSOjpYUlRhcmdldFJheU1vZGU7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvR2FtZXBhZENvbnN0YW50cy5jcHAKaW5kZXggYzg1ZTI2YTc5OWRkYzVkNTU4MWNlMTIzZTVm
ZmIxNzM1MzJjYWQzMy4uZmMzOTYwZjM5ZjQ0NmUzNTQyNWYxNDRhZjg3NWE1Zjk0ZmI2M2M3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3Rh
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25z
dGFudHMuY3BwCkBAIC00Myw2ICs0MywxNSBAQCBjb25zdCBXVEY6OlN0cmluZyYgc3RhbmRhcmRH
YW1lcGFkTWFwcGluZ1N0cmluZygpCiAgICAgcmV0dXJuIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmc7
CiB9CiAKKyNpZiBFTkFCTEUoV0VCWFIpCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHVi
LmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8jZG9tLWdhbWVwYWRtYXBwaW5ndHlwZS14ci1zdGFu
ZGFyZAorY29uc3QgV1RGOjpTdHJpbmcmIHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4geHJTdGFuZGFyZEdhbWVwYWRN
YXBwaW5nID0gInhyLXN0YW5kYXJkIjsKKyAgICByZXR1cm4geHJTdGFuZGFyZEdhbWVwYWRNYXBw
aW5nOworfQorI2VuZGlmCisKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCmluZGV4IDdl
MTY5ZjRkYThiOThmZTZlZmFhMWUyMzBlMmE0ZTkyNGEyMzY3MzMuLjYzM2FmZDczZDM3NDdmYWEz
YTA4YWU3NTZjYjQzMjE1MTI1ZDI1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCkBAIC02Miw2ICs2Miw5IEBAIGV4dGVybiBj
b25zdCBzaXplX3QgbnVtYmVyT2ZTdGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aEhvbWVCdXR0b247
CiBleHRlcm4gY29uc3QgR2FtZXBhZEJ1dHRvblJvbGUgbWF4aW11bUdhbWVwYWRCdXR0b247CiAK
IGNvbnN0IFdURjo6U3RyaW5nJiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCk7CisjaWYg
RU5BQkxFKFdFQlhSKQorY29uc3QgV1RGOjpTdHJpbmcmIHhyU3RhbmRhcmRHYW1lcGFkTWFwcGlu
Z1N0cmluZygpOworI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IDU2ZDhjNmM4YmRhMmQxYjg2ODMzMzFk
MWQxMmU0NmFhMTNlYzFmMTYuLjlkODhjNzBmZjU0NTRiZWQ1ZGNjZDgxZmZiNTk0ODZiZDM0Y2Y0
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAgLTUyLDE2ICs1
MiwyNCBAQCBlbnVtIGNsYXNzIEV5ZSB7CiB9OwogCiAjaWYgRU5BQkxFKFdFQlhSKQordXNpbmcg
SW5wdXRTb3VyY2VIYW5kbGUgPSBpbnQ7CiAKLWNsYXNzIFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xp
ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50PiB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSA9IGRl
ZmF1bHQ7CisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNlbnVtZGVm
LXhyaGFuZGVkbmVzcworZW51bSBjbGFzcyBYUkhhbmRlZG5lc3MgeworICAgIE5vbmUsCisgICAg
TGVmdCwKKyAgICBSaWdodCwKK307CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbkRpZEVuZCgp
ID0gMDsKLSAgICAvLyBGSVhNRTogaGFuZGxlIGZyYW1lIHVwZGF0ZQotICAgIC8vIEZJWE1FOiBo
YW5kbGUgdmlzaWJpbGl0eSBjaGFuZ2VzCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHVi
LmlvL3dlYnhyLyNlbnVtZGVmLXhydGFyZ2V0cmF5bW9kZQorZW51bSBjbGFzcyBYUlRhcmdldFJh
eU1vZGUgeworICAgIEdhemUsCisgICAgVHJhY2tlZFBvaW50ZXIsCisgICAgU2NyZWVuLAogfTsK
IAorY2xhc3MgVHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ7CisKIGNsYXNzIERldmljZSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZXZpY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
RGV2aWNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRGV2aWNlKTsKQEAgLTEyMiw2ICsxMzAsMjggQEAgcHVibGljOgogICAgICAgICAg
ICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGJvdW5kczsKICAgICAgICAgfTsKIAorICAg
ICAgICBzdHJ1Y3QgSW5wdXRTb3VyY2VCdXR0b24geworICAgICAgICAgICAgYm9vbCB0b3VjaGVk
IHsgZmFsc2UgfTsKKyAgICAgICAgICAgIGJvb2wgcHJlc3NlZCB7IGZhbHNlIH07CisgICAgICAg
ICAgICBmbG9hdCBwcmVzc2VkVmFsdWUgeyAwIH07CisgICAgICAgIH07CisKKyAgICAgICAgc3Ry
dWN0IElucHV0U291cmNlUG9zZSB7CisgICAgICAgICAgICBQb3NlIHBvc2U7CisgICAgICAgICAg
ICBib29sIGlzUG9zaXRpb25FbXVsYXRlZCB7IGZhbHNlIH07CisgICAgICAgIH07CisKKyAgICAg
ICAgc3RydWN0IElucHV0U291cmNlIHsKKyAgICAgICAgICAgIElucHV0U291cmNlSGFuZGxlIGhh
bmRsZSB7IDAgfTsKKyAgICAgICAgICAgIFhSSGFuZGVkbmVzcyBoYW5kZW5lc3MgeyBYUkhhbmRl
ZG5lc3M6Ok5vbmUgfTsKKyAgICAgICAgICAgIFhSVGFyZ2V0UmF5TW9kZSB0YXJnZXRSYXlNb2Rl
IHsgWFJUYXJnZXRSYXlNb2RlOjpHYXplIH07CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBw
cm9maWxlczsKKyAgICAgICAgICAgIElucHV0U291cmNlUG9zZSBwb2ludGVyT3JpZ2luOworICAg
ICAgICAgICAgT3B0aW9uYWw8SW5wdXRTb3VyY2VQb3NlPiBncmlwT3JpZ2luOworICAgICAgICAg
ICAgVmVjdG9yPElucHV0U291cmNlQnV0dG9uPiBidXR0b25zOworICAgICAgICAgICAgVmVjdG9y
PGZsb2F0PiBheGVzOworICAgICAgICB9OworCiAgICAgICAgIGJvb2wgaXNUcmFja2luZ1ZhbGlk
IHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBpc1Bvc2l0aW9uVmFsaWQgeyBmYWxzZSB9OwogICAg
ICAgICBib29sIGlzUG9zaXRpb25FbXVsYXRlZCB7IGZhbHNlIH07CkBAIC0xMzAsNiArMTYwLDcg
QEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxQb3NlPiBmbG9vclRyYW5zZm9ybTsKICAgICAg
ICAgU3RhZ2VQYXJhbWV0ZXJzIHN0YWdlUGFyYW1ldGVyczsKICAgICAgICAgVmVjdG9yPFZpZXc+
IHZpZXdzOworICAgICAgICBWZWN0b3I8SW5wdXRTb3VyY2U+IGlucHV0U291cmNlczsKICAgICB9
OwogCiAgICAgc3RydWN0IFZpZXdEYXRhIHsKQEAgLTE1Niw2ICsxODcsMTkgQEAgcHJvdGVjdGVk
OgogICAgIFdlYWtQdHI8VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ+IG1fdHJhY2tpbmdBbmRS
ZW5kZXJpbmdDbGllbnQ7CiB9OwogCitjbGFzcyBUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudD4geworcHVi
bGljOgorICAgIHZpcnR1YWwgflRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KCkgPSBkZWZhdWx0
OworCisgICAgLy8gVGhpcyBldmVudCBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IGluaXRpYWwgaW5w
dXRzb3VyY2VzY2hhbmdlIGV2ZW50cyBvY2N1ciBhZnRlciB0aGUgaW5pdGlhbCBzZXNzaW9uIGlz
IHJlc29sdmVkLgorICAgIC8vIFdlYnhSIGFwcHMgY2FuIHdhaXQgZm9yIHRoZSBpbnB1dCBzb3Vy
Y2UgZXZlbnRzIGJlZm9yZSBjYWxsaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZS4KKyAgICAvLyBQ
ZXItZnJhbWUgaW5wdXQgc291cmNlIHVwZGF0ZXMgYXJlIGhhbmRsZWQgdmlhIHNlc3Npb24ucmVx
dWVzdEFuaW1hdGlvbkZyYW1lIHdoaWNoIGNhbGxzIERldmljZTo6cmVxdWVzdEZyYW1lLgorICAg
IHZpcnR1YWwgdm9pZCBzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyhWZWN0b3I8RGV2
aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
c3Npb25EaWRFbmQoKSA9IDA7CisgICAgLy8gRklYTUU6IGhhbmRsZSBmcmFtZSB1cGRhdGUKKyAg
ICAvLyBGSVhNRTogaGFuZGxlIHZpc2liaWxpdHkgY2hhbmdlcworfTsKKwogY2xhc3MgSW5zdGFu
Y2UgewogcHVibGljOgogICAgIHN0YXRpYyBJbnN0YW5jZSYgc2luZ2xldG9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKaW5kZXggMzNiNWMyYTMwNWU3ZjIx
MzYwOGU0MjJlYjYyMjdjMzc3MDcxMzM0YS4uMjFlZjZiYzUwMmJkYmFhNTY3M2FjMzU5ODliN2Fk
YmMxNDE1YWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJE
ZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNw
cApAQCAtNzksNiArNzksMjIgQEAgV2ViQ29yZTo6SW50U2l6ZSBTaW11bGF0ZWRYUkRldmljZTo6
cmVjb21tZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2QKICAgICByZXR1cm4g
SW50U2l6ZSgyLCAyKTsKIH0KIAordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6aW5pdGlhbGl6ZVRy
YWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKQoreworICAgIGlmICht
X3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KSB7CisgICAgICAgIC8vIFdlYlhSIEZha2VEZXZp
Y2Ugd2FpdHMgZm9yIHNpbXVsYXRlSW5wdXRDb25uZWN0aW9uIGNhbGxzIHRvIGFkZCBpbnB1dCBz
b3VyY2VzLQorICAgICAgICAvLyBUaGVyZSBpcyBubyB3YXkgdG8ga25vdyBob3cgbWFueSBzaW11
bGF0ZUlucHV0Q29ubmVjdGlvbiBjYWxscyB3aWxsIHRoZSBkZXZpY2UgcmVjZWl2ZSwKKyAgICAg
ICAgLy8gc28gbm90aWZ5IHRoZSBpbnB1dCBzb3VyY2VzIGhhdmUgYmVlbiBpbml0aWFsaXplZCB3
aXRoIGFuIGVtcHR5IGxpc3QuIFRoaXMgaXMgbm90IGEgcHJvYmxlbSBiZWNhdXNlCisgICAgICAg
IC8vIFdQVCB0ZXN0cyByZWx5IG9uIHJlcXVlc3RBbmltYXRpb25GcmFtZSB1cGRhdGVzIHRvIHRl
c3QgdGhlIGlucHV0IHNvdXJjZXMuCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKG1fdHJhY2tpbmdB
bmRSZW5kZXJpbmdDbGllbnQpCisgICAgICAgICAgICAgICAgbV90cmFja2luZ0FuZFJlbmRlcmlu
Z0NsaWVudC0+c2Vzc2lvbkRpZEluaXRpYWxpemVJbnB1dFNvdXJjZXMoeyB9KTsKKyAgICAgICAg
fSk7CisgICAgfQorfQorCiB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5n
QW5kUmVuZGVyaW5nKCkKIHsKICAgICBpZiAobV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9u
KQpAQCAtMTIyLDYgKzEzOCwxMSBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVy
RmlyZWQoKQogICAgICAgICBkYXRhLnZpZXdzLmFwcGVuZCh2aWV3KTsKICAgICB9CiAKKyAgICBm
b3IgKGF1dG8mIGlucHV0IDogbV9pbnB1dENvbm5lY3Rpb25zKSB7CisgICAgICAgIGlmIChpbnB1
dC0+aXNDb25uZWN0ZWQoKSkKKyAgICAgICAgICAgIGRhdGEuaW5wdXRTb3VyY2VzLmFwcGVuZChp
bnB1dC0+Z2V0RnJhbWVEYXRhKCkpOworICAgIH0KKwogICAgIGlmIChtX0ZyYW1lQ2FsbGJhY2sp
CiAgICAgICAgIG1fRnJhbWVDYWxsYmFjayhXVEZNb3ZlKGRhdGEpKTsKIH0KQEAgLTIyMiwxMSAr
MjQzLDE1IEBAIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKCkKIAogdm9p
ZCBXZWJGYWtlWFJEZXZpY2U6OnNpbXVsYXRlUmVzZXRQb3NlKCkKIHsKKwogfQogCi1SZWY8V2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyPiBXZWJGYWtlWFJEZXZpY2U6OnNpbXVsYXRlSW5wdXRTb3Vy
Y2VDb25uZWN0aW9uKEZha2VYUklucHV0U291cmNlSW5pdCkKK1JlZjxXZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXI+IFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24o
Y29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0JiBpbml0KQogewotICAgIHJldHVybiBXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OmNyZWF0ZSgpOworICAgIGF1dG8gaGFuZGxlID0gKyttSW5wdXRT
b3VyY2VIYW5kbGVJbmRleDsKKyAgICBhdXRvIGlucHV0ID0gV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyOjpjcmVhdGUoaGFuZGxlLCBpbml0KTsKKyAgICBtX2RldmljZS5hZGRJbnB1dENvbm5lY3Rp
b24oaW5wdXQuY29weVJlZigpKTsKKyAgICByZXR1cm4gaW5wdXQ7CiB9CiAKIEV4Y2VwdGlvbk9y
PFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlPiBXZWJGYWtlWFJEZXZpY2U6OnBh
cnNlUmlnaWRUcmFuc2Zvcm0oY29uc3QgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0JiBpbml0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKaW5kZXggZTEyN2MwNTlkMzE4
NjRiNGM4ZDA4MjYzZmQxZDI5ZmNhNDM1MWM3OS4uYjI1OThkODM4ODUyODFhYzVmMDBkNzU3NGUz
Y2VjMDcxNWRiMmQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtl
WFJEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5o
CkBAIC03OSw5ICs3OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdXBwb3J0c1NodXRkb3du
Tm90aWZpY2F0aW9uKGJvb2wgc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbikgeyBtX3N1cHBv
cnRzU2h1dGRvd25Ob3RpZmljYXRpb24gPSBzdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9
CiAgICAgdm9pZCBzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7CiAgICAgdm9pZCBzY2hlZHVs
ZU9uTmV4dEZyYW1lKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBhZGRJbnB1dENvbm5l
Y3Rpb24oUmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4mJiBpbnB1dCkgeyBtX2lucHV0Q29u
bmVjdGlvbnMuYXBwZW5kKFdURk1vdmUoaW5wdXQpKTsgfTsKIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUp
IGZpbmFsOwotICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3Jt
WFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0KKyAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0Fu
ZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWw7CiAgICAgdm9pZCBzaHV0
RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc3VwcG9ydHNT
aHV0ZG93bk5vdGlmaWNhdGlvbjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNl
KFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9CkBAIC0xMDEsNiArMTAy
LDcgQEAgcHJpdmF0ZToKICAgICBSZXF1ZXN0RnJhbWVDYWxsYmFjayBtX0ZyYW1lQ2FsbGJhY2s7
CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGluZ1VwZGF0ZXM7CiAgICAgRnJh
bWVEYXRhOjpTdGFnZVBhcmFtZXRlcnMgbV9zdGFnZVBhcmFtZXRlcnM7CisgICAgVmVjdG9yPFJl
ZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+PiBtX2lucHV0Q29ubmVjdGlvbnM7CiB9OwogCiBj
bGFzcyBXZWJGYWtlWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJGYWtlWFJE
ZXZpY2U+IHsKQEAgLTEyNSw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNpbXVsYXRl
UmVzZXRQb3NlKCk7CiAKLSAgICBSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBzaW11bGF0
ZUlucHV0U291cmNlQ29ubmVjdGlvbihGYWtlWFJJbnB1dFNvdXJjZUluaXQpOworICAgIFJlZjxX
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IHNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKGNv
bnN0IEZha2VYUklucHV0U291cmNlSW5pdCYpOwogCiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxGYWtlWFJWaWV3Pj4gcGFyc2VWaWV3KGNvbnN0IEZha2VYUlZpZXdJbml0Jik7CiAKQEAgLTEz
NSwxMiArMTM3LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2ltdWxhdGVTaHV0ZG93bigpOwog
CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQ
b3NlPiBwYXJzZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCYp
OworCiBwcml2YXRlOgogICAgIFdlYkZha2VYUkRldmljZSgpOwogCi0gICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlPiBwYXJzZVJpZ2lkVHJh
bnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCYpOwotCiAgICAgU2ltdWxhdGVk
WFJEZXZpY2UgbV9kZXZpY2U7CisgICAgUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgbUlu
cHV0U291cmNlSGFuZGxlSW5kZXggeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxl
ci5jcHAKaW5kZXggNzkwYzk4NzBiYjQ4YzUxY2U4NTVhNWFlMmZiMmEzNjcxY2E3MTZiMC4uN2M4
MjcyODk2MTBkYmZjZDFkNDk4NWM3NTYxOWE1MTUwYjhlN2EwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmNwcApAQCAtMjcsNjMg
KzI3LDE1MyBAQAogI2luY2x1ZGUgIldlYkZha2VYUklucHV0Q29udHJvbGxlci5oIgogCiAjaWYg
RU5BQkxFKFdFQlhSKQorI2luY2x1ZGUgIldlYkZha2VYUkRldmljZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRIYW5kZWRuZXNz
KFhSSGFuZGVkbmVzcykKLXsKLX0KK3VzaW5nIElucHV0U291cmNlID0gUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlOwordXNpbmcgSW5wdXRTb3VyY2VCdXR0b24gPSBQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b247Cit1c2luZyBJ
bnB1dFNvdXJjZVBvc2UgPSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3Vy
Y2VQb3NlOwordXNpbmcgQnV0dG9uVHlwZSA9IEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZTsK
IAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldFRhcmdldFJheU1vZGUoWFJUYXJn
ZXRSYXlNb2RlKQotewotfQorLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4
ci1nYW1lcGFkcy1tb2R1bGUvI3hyLXN0YW5kYXJkLWdhbWVwYWQtbWFwcGluZworY29uc3RleHBy
IHN0ZDo6YXJyYXk8QnV0dG9uVHlwZSwgNT4gWFJfU1RBTkRBUkRfQlVUVE9OUyA9IHsgQnV0dG9u
VHlwZTo6R3JpcCwgQnV0dG9uVHlwZTo6VG91Y2hwYWQsIEJ1dHRvblR5cGU6OlRodW1ic3RpY2ss
IEJ1dHRvblR5cGU6Ok9wdGlvbmFsQnV0dG9uLCBCdXR0b25UeXBlOjpPcHRpb25hbFRodW1ic3Rp
Y2sgfTsKIAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldFByb2ZpbGVzKFZlY3Rv
cjxTdHJpbmc+KQorUmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4gV2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyOjpjcmVhdGUoUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlLCBj
b25zdCBGYWtlWFJJbnB1dFNvdXJjZUluaXQmIGluaXQpCiB7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyKGhhbmRsZSwgaW5pdCkpOwogfQogCi12b2lk
IFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0R3JpcE9yaWdpbihGYWtlWFJSaWdpZFRyYW5z
Zm9ybUluaXQgZ3JpcE9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQorV2ViRmFrZVhSSW5w
dXRDb250cm9sbGVyOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIoUGxhdGZvcm1YUjo6SW5wdXRT
b3VyY2VIYW5kbGUgaGFuZGxlLCBjb25zdCBGYWtlWFJJbnB1dFNvdXJjZUluaXQmIGluaXQpCisg
ICAgOiBtX2hhbmRsZShoYW5kbGUpCisgICAgLCBtX2hhbmRlbmVzcyhpbml0LmhhbmRlZG5lc3Mp
CisgICAgLCBtX3RhcmdldFJheU1vZGUoaW5pdC50YXJnZXRSYXlNb2RlKQorICAgICwgbV9wcm9m
aWxlcyhpbml0LnByb2ZpbGVzKQorICAgICwgbV9wcmltYXJ5U2VsZWN0ZWQoaW5pdC5zZWxlY3Rp
b25TdGFydGVkKQorICAgICwgbV9zaW11bGF0ZVNlbGVjdChpbml0LnNlbGVjdGlvbkNsaWNrZWQp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGdyaXBPcmlnaW4pOwotICAgIFVOVVNFRF9QQVJBTShlbXVs
YXRlZFBvc2l0aW9uKTsKKyAgICBzZXRQb2ludGVyT3JpZ2luKGluaXQucG9pbnRlck9yaWdpbiwg
ZmFsc2UpOworICAgIHNldEdyaXBPcmlnaW4oaW5pdC5ncmlwT3JpZ2luLCBmYWxzZSk7CisgICAg
c2V0U3VwcG9ydGVkQnV0dG9ucyhpbml0LnN1cHBvcnRlZEJ1dHRvbnMpOwogfQogCi12b2lkIFdl
YkZha2VYUklucHV0Q29udHJvbGxlcjo6Y2xlYXJHcmlwT3JpZ2luKCkKK3ZvaWQgV2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyOjpzZXRHcmlwT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBn
cmlwT3JpZ2luLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCiB7Ci19CisgICAgYXV0byB0cmFuc2Zv
cm0gPSBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlUmlnaWRUcmFuc2Zvcm0oZ3JpcE9yaWdpbik7Cisg
ICAgaWYgKHRyYW5zZm9ybS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
Z3JpcE9yaWdpbiA9IElucHV0U291cmNlUG9zZSB7IHRyYW5zZm9ybS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSwgZW11bGF0ZWRQb3NpdGlvbiB9OworfSAgIAogCiB2b2lkIFdlYkZha2VYUklucHV0Q29u
dHJvbGxlcjo6c2V0UG9pbnRlck9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9pbnRl
ck9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIFVOVVNFRF9QQVJBTShwb2lu
dGVyT3JpZ2luKTsKLSAgICBVTlVTRURfUEFSQU0oZW11bGF0ZWRQb3NpdGlvbik7CisgICAgYXV0
byB0cmFuc2Zvcm0gPSBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlUmlnaWRUcmFuc2Zvcm0ocG9pbnRl
ck9yaWdpbik7CisgICAgaWYgKHRyYW5zZm9ybS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fcG9pbnRlck9yaWdpbiA9IHsgdHJhbnNmb3JtLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCBlbXVsYXRlZFBvc2l0aW9uIH07CiB9CiAKIHZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyOjpkaXNjb25uZWN0KCkKIHsKKyAgICBtX2Nvbm5lY3RlZCA9IGZhbHNlOwogfQogCiB2b2lk
IFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6cmVjb25uZWN0KCkKIHsKKyAgICBtX2Nvbm5lY3Rl
ZCA9IHRydWU7CiB9CiAKLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzdGFydFNlbGVj
dGlvbigpCi17Ci19Ci0KLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjplbmRTZWxlY3Rp
b24oKQordm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldFN1cHBvcnRlZEJ1dHRvbnMo
Y29uc3QgVmVjdG9yPEZha2VYUkJ1dHRvblN0YXRlSW5pdD4mIGJ1dHRvbnMpCiB7CisgICAgbV9i
dXR0b25zLmNsZWFyKCk7CisgICAgZm9yIChhdXRvJiBidXR0b24gOiBidXR0b25zKQorICAgICAg
ICBtX2J1dHRvbnMuYWRkKGJ1dHRvbi5idXR0b25UeXBlLCBidXR0b24pOwogfQogCi12b2lkIFdl
YkZha2VYUklucHV0Q29udHJvbGxlcjo6c2ltdWxhdGVTZWxlY3QoKQordm9pZCBXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI6OnVwZGF0ZUJ1dHRvblN0YXRlKGNvbnN0IEZha2VYUkJ1dHRvblN0YXRl
SW5pdCYgaW5pdCkKIHsKKyAgICBhdXRvIGl0ID0gbV9idXR0b25zLmZpbmQoaW5pdC5idXR0b25U
eXBlKTsKKyAgICBpZiAoaXQgIT0gbV9idXR0b25zLmVuZCgpKQorICAgICAgICBpdC0+dmFsdWUg
PSBpbml0OwogfQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0U3VwcG9ydGVk
QnV0dG9ucyhWZWN0b3I8RmFrZVhSQnV0dG9uU3RhdGVJbml0PikKK0lucHV0U291cmNlIFdlYkZh
a2VYUklucHV0Q29udHJvbGxlcjo6Z2V0RnJhbWVEYXRhKCkKIHsKKyAgICBJbnB1dFNvdXJjZSBz
dGF0ZTsKKyAgICBzdGF0ZS5oYW5kbGUgPSBtX2hhbmRsZTsKKyAgICBzdGF0ZS5oYW5kZW5lc3Mg
PSBtX2hhbmRlbmVzczsKKyAgICBzdGF0ZS50YXJnZXRSYXlNb2RlID0gbV90YXJnZXRSYXlNb2Rl
OworICAgIHN0YXRlLnByb2ZpbGVzID0gbV9wcm9maWxlczsKKyAgICBzdGF0ZS5wb2ludGVyT3Jp
Z2luID0gbV9wb2ludGVyT3JpZ2luOworICAgIHN0YXRlLmdyaXBPcmlnaW4gPSBtX2dyaXBPcmln
aW47CisKKyAgICBpZiAobV9zaW11bGF0ZVNlbGVjdCkKKyAgICAgICAgbV9wcmltYXJ5U2VsZWN0
ZWQgPSB0cnVlOworCisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4
ci1nYW1lcGFkcy1tb2R1bGUvI3hyLXN0YW5kYXJkLWdhbWVwYWQtbWFwcGluZworICAgIC8vIE1p
bWljIHhyLXN0YW5kYXJkIGdhbWVwYWQgbGF5b3V0CisKKyAgICAvLyBQcmltYXJ5IHRyaWdnZXIg
aXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYXQgaW5kZXggMAorICAgIHN0YXRlLmJ1dHRvbnMuYXBw
ZW5kKHsKKyAgICAgICAgLnRvdWNoZWQgPSBtX3ByaW1hcnlTZWxlY3RlZCwKKyAgICAgICAgLnBy
ZXNzZWQgPSBtX3ByaW1hcnlTZWxlY3RlZCwKKyAgICAgICAgLnByZXNzZWRWYWx1ZSA9IG1fcHJp
bWFyeVNlbGVjdGVkID8gMS4wZiA6IDAuMGYKKyAgICB9KTsKKworICAgIC8vIE5leHQgYnV0dG9u
cyBpbiB4ci1zdGFuZGFyZCBvcmRlcgorICAgIGZvciAoYXV0byBidXR0b25UeXBlIDogWFJfU1RB
TkRBUkRfQlVUVE9OUykgeworICAgICAgICBhdXRvIGRhdGEgPSBnZXRCdXR0b25PclBsYWNlaG9s
ZGVyKGJ1dHRvblR5cGUpOworICAgICAgICBpZiAoZGF0YS5idXR0b24pCisgICAgICAgICAgICBz
dGF0ZS5idXR0b25zLmFwcGVuZCgqZGF0YS5idXR0b24pOworICAgICAgICBpZiAoZGF0YS5heGVz
KQorICAgICAgICAgICAgc3RhdGUuYXhlcy5hcHBlbmRWZWN0b3IoKmRhdGEuYXhlcyk7CisKKyAg
ICB9CisKKyAgICBpZiAobV9zaW11bGF0ZVNlbGVjdCkgeworICAgICAgICBtX3ByaW1hcnlTZWxl
Y3RlZCA9IGZhbHNlOworICAgICAgICBtX3NpbXVsYXRlU2VsZWN0ID0gZmFsc2U7CisgICAgfQor
CisgICAgcmV0dXJuIHN0YXRlOwogfQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6
dXBkYXRlQnV0dG9uU3RhdGUoRmFrZVhSQnV0dG9uU3RhdGVJbml0KQorV2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyOjpCdXR0b25PclBsYWNlaG9sZGVyIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6
Z2V0QnV0dG9uT3JQbGFjZWhvbGRlcihGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGUgYnV0dG9u
VHlwZSkgY29uc3QKIHsKKyAgICBCdXR0b25PclBsYWNlaG9sZGVyIHJlc3VsdDsKKworICAgIGF1
dG8gaXQgPSBtX2J1dHRvbnMuZmluZChidXR0b25UeXBlKTsKKyAgICBpZiAoaXQgIT0gbV9idXR0
b25zLmVuZCgpKSB7CisgICAgICAgIHJlc3VsdC5idXR0b24gPSBJbnB1dFNvdXJjZUJ1dHRvbiB7
CisgICAgICAgICAgICAudG91Y2hlZCA9IGl0LT52YWx1ZS50b3VjaGVkLAorICAgICAgICAgICAg
LnByZXNzZWQgPSBpdC0+dmFsdWUucHJlc3NlZCwKKyAgICAgICAgICAgIC5wcmVzc2VkVmFsdWUg
PSBpdC0+dmFsdWUucHJlc3NlZFZhbHVlCisgICAgICAgIH07CisKKyAgICAgICAgaWYgKGJ1dHRv
blR5cGUgPT0gQnV0dG9uVHlwZTo6VG91Y2hwYWQgfHwgYnV0dG9uVHlwZSA9PSBCdXR0b25UeXBl
OjpUaHVtYnN0aWNrKQorICAgICAgICAgICAgcmVzdWx0LmF4ZXMgPSBWZWN0b3I8ZmxvYXQ+IHsg
aXQtPnZhbHVlLnhWYWx1ZSwgaXQtPnZhbHVlLnlWYWx1ZSB9OworCisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gQWRkIGEgcGxhY2Vob2xkZXIgaWYgbmVlZGVkCisgICAgICAgIC8vIERldmljZXMg
dGhhdCBsYWNrIG9uZSBvZiB0aGUgb3B0aW9uYWwgaW5wdXRzIGxpc3RlZCBpbiB0aGUgdGFibGVz
IGFib3ZlIE1VU1QgcHJlc2VydmUgdGhlaXIgcGxhY2UgaW4gdGhlCisgICAgICAgIC8vIGJ1dHRv
bnMgb3IgYXhlcyBhcnJheSwgcmVwb3J0aW5nIGEgcGxhY2Vob2xkZXIgYnV0dG9uIG9yIHBsYWNl
aG9sZGVyIGF4aXMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgaWYgKGJ1dHRvblR5cGUgIT0gQnV0
dG9uVHlwZTo6T3B0aW9uYWxCdXR0b24gfHwgYnV0dG9uVHlwZSAhPSBCdXR0b25UeXBlOjpPcHRp
b25hbFRodW1ic3RpY2spIHsKKyAgICAgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGQ6OmZpbmQo
WFJfU1RBTkRBUkRfQlVUVE9OUy5iZWdpbigpLCBYUl9TVEFOREFSRF9CVVRUT05TLmVuZCgpLCBi
dXR0b25UeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChwcmlvcml0eSAhPSBYUl9TVEFOREFSRF9C
VVRUT05TLmVuZCgpKTsKKworICAgICAgICAgICAgZm9yIChhdXRvIGl0ID0gcHJpb3JpdHkgKyAx
OyBpdCAhPSBYUl9TVEFOREFSRF9CVVRUT05TLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICAg
ICAgaWYgKG1fYnV0dG9ucy5jb250YWlucygqaXQpKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5idXR0b24gPSBJbnB1dFNvdXJjZUJ1dHRvbigpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoYnV0dG9uVHlwZSA9PSBCdXR0b25UeXBlOjpUb3VjaHBhZCAmJiBtX2J1dHRvbnMu
Y29udGFpbnMoQnV0dG9uVHlwZTo6VGh1bWJzdGljaykpCisgICAgICAgICAgICByZXN1bHQuYXhl
cyA9IFZlY3RvcjxmbG9hdD4geyAwLjAsIDAuMCB9OworICAgIH0KKworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oCmluZGV4IGQyOGNlYTRmODZlYTljYTQ2
NTZlYmRmOGM1MjUxZWY0YjkyNDk5Y2QuLjhiNWJjZjM2NDdlZmNhZGM2OWJiNjhhNjEwYTNkYzk5
MzQxMWNiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5w
dXRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1
dENvbnRyb2xsZXIuaApAQCAtMjgsOSArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCWFIpCiAKICNp
bmNsdWRlICJGYWtlWFJCdXR0b25TdGF0ZUluaXQuaCIKKyNpbmNsdWRlICJGYWtlWFJJbnB1dFNv
dXJjZUluaXQuaCIKICNpbmNsdWRlICJGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVhSLmgiCiAjaW5jbHVkZSAiWFJIYW5kZWRuZXNzLmgiCiAjaW5jbHVkZSAi
WFJUYXJnZXRSYXlNb2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMzgsMzYgKzQx
LDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyKTsgfQot
Ci0gICAgdm9pZCBzZXRIYW5kZWRuZXNzKFhSSGFuZGVkbmVzcyk7Ci0KLSAgICB2b2lkIHNldFRh
cmdldFJheU1vZGUoWFJUYXJnZXRSYXlNb2RlKTsKLQotICAgIHZvaWQgc2V0UHJvZmlsZXMoVmVj
dG9yPFN0cmluZz4pOworICAgIHN0YXRpYyBSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBj
cmVhdGUoUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUsIGNvbnN0IEZha2VYUklucHV0U291
cmNlSW5pdCYpOwogCisgICAgdm9pZCBzZXRIYW5kZWRuZXNzKFhSSGFuZGVkbmVzcyBoYW5kZW5l
c3MpIHsgbV9oYW5kZW5lc3MgPSBoYW5kZW5lc3M7IH0KKyAgICB2b2lkIHNldFRhcmdldFJheU1v
ZGUoWFJUYXJnZXRSYXlNb2RlIG1vZGUpIHsgbV90YXJnZXRSYXlNb2RlID0gbW9kZTsgfQorICAg
IHZvaWQgc2V0UHJvZmlsZXMoVmVjdG9yPFN0cmluZz4mJiBwcm9maWxlcykgeyBtX3Byb2ZpbGVz
ID0gV1RGTW92ZShwcm9maWxlcyk7IH0KICAgICB2b2lkIHNldEdyaXBPcmlnaW4oRmFrZVhSUmln
aWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbiA9IGZhbHNl
KTsKLQotICAgIHZvaWQgY2xlYXJHcmlwT3JpZ2luKCk7Ci0KKyAgICB2b2lkIGNsZWFyR3JpcE9y
aWdpbigpIHsgbV9ncmlwT3JpZ2luID0gV1RGOjpudWxsb3B0OyB9CiAgICAgdm9pZCBzZXRQb2lu
dGVyT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBwb2ludGVyT3JpZ2luLCBib29sIGVt
dWxhdGVkUG9zaXRpb24gPSBmYWxzZSk7Ci0KICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQogICAg
IHZvaWQgcmVjb25uZWN0KCk7CisgICAgdm9pZCBzdGFydFNlbGVjdGlvbigpIHsgbV9wcmltYXJ5
U2VsZWN0ZWQgPSB0cnVlOyB9CisgICAgdm9pZCBlbmRTZWxlY3Rpb24oKSB7IG1fcHJpbWFyeVNl
bGVjdGVkID0gZmFsc2U7IH0KKyAgICB2b2lkIHNpbXVsYXRlU2VsZWN0KCkgeyBtX3NpbXVsYXRl
U2VsZWN0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0U3VwcG9ydGVkQnV0dG9ucyhjb25zdCBWZWN0
b3I8RmFrZVhSQnV0dG9uU3RhdGVJbml0PiYpOworICAgIHZvaWQgdXBkYXRlQnV0dG9uU3RhdGUo
Y29uc3QgRmFrZVhSQnV0dG9uU3RhdGVJbml0Jik7CisgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdGVkOyB9CiAKLSAgICB2b2lkIHN0YXJ0U2VsZWN0aW9uKCk7
Ci0KLSAgICB2b2lkIGVuZFNlbGVjdGlvbigpOwotCi0gICAgdm9pZCBzaW11bGF0ZVNlbGVjdCgp
OwotCi0gICAgdm9pZCBzZXRTdXBwb3J0ZWRCdXR0b25zKFZlY3RvcjxGYWtlWFJCdXR0b25TdGF0
ZUluaXQ+KTsKLQotICAgIHZvaWQgdXBkYXRlQnV0dG9uU3RhdGUoRmFrZVhSQnV0dG9uU3RhdGVJ
bml0KTsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UgZ2V0
RnJhbWVEYXRhKCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyKCkg
PSBkZWZhdWx0OworICAgIFdlYkZha2VYUklucHV0Q29udHJvbGxlcihQbGF0Zm9ybVhSOjpJbnB1
dFNvdXJjZUhhbmRsZSwgY29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0Jik7CisKKyAgICBzdHJ1
Y3QgQnV0dG9uT3JQbGFjZWhvbGRlciB7CisgICAgICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbj4gYnV0dG9uOworICAgICAgICBPcHRp
b25hbDxWZWN0b3I8ZmxvYXQ+PiBheGVzOworICAgIH07CisgICAgQnV0dG9uT3JQbGFjZWhvbGRl
ciBnZXRCdXR0b25PclBsYWNlaG9sZGVyKEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZSkgY29u
c3Q7CisKKyAgICBQbGF0Zm9ybVhSOjpJbnB1dFNvdXJjZUhhbmRsZSBtX2hhbmRsZSB7IDAgfTsK
KyAgICBYUkhhbmRlZG5lc3MgbV9oYW5kZW5lc3MgeyBYUkhhbmRlZG5lc3M6Ok5vbmUgfTsKKyAg
ICBYUlRhcmdldFJheU1vZGUgbV90YXJnZXRSYXlNb2RlIHsgWFJUYXJnZXRSYXlNb2RlOjpHYXpl
IH07CisgICAgVmVjdG9yPFN0cmluZz4gbV9wcm9maWxlczsKKyAgICBQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlIG1fcG9pbnRlck9yaWdpbjsKKyAgICBPcHRp
b25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlPiBtX2dy
aXBPcmlnaW47CisgICAgSGFzaE1hcDxGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGUsIEZha2VY
UkJ1dHRvblN0YXRlSW5pdCwgV1RGOjpJbnRIYXNoPEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlw
ZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8RmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBl
Pj4gbV9idXR0b25zOworICAgIGJvb2wgbV9jb25uZWN0ZWQgeyB0cnVlIH07CisgICAgYm9vbCBt
X3ByaW1hcnlTZWxlY3RlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3NpbXVsYXRlU2VsZWN0IHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UK
aW5kZXggNzgyOWFmZWNjMzIwMmI5YzNmODQzMTk2ZWRhMDYwZjAzN2JiNDc3ZC4uYzEyZWJhNjNh
YjlkNDJhY2Y3NzVhMmIxMzAxYjdmOWFjNDNmZjM0OSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKQEAg
LTE5Niw2ICsxOTYsNyBAQCBpZiAoRU5BQkxFX1dFQlhSKQogICAgIGlmIChOT1QgT1BFTlhSX0ZP
VU5EKQogICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJPcGVuWFIgaXMgcmVxdWlyZWQgdG8g
ZW5hYmxlIFdlYlhSIHN1cHBvcnQuIikKICAgICBlbmRpZiAoKQorICAgIFNFVF9BTkRfRVhQT1NF
X1RPX0JVSUxEKEVOQUJMRV9HQU1FUEFEIE9OKQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KFVTRV9PUEVOWFIgJHtPcGVuWFJfRk9VTkR9KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KFhSX1VTRV9QTEFURk9STV9FR0wgVFJVRSkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChY
Ul9VU0VfR1JBUEhJQ1NfQVBJX09QRU5HTCBUUlVFKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI4MjU5MjIzMDZiMzFkNjVk
N2NhOTZjZGIxMDVlZWVjZGNmOGJlYjUuLmJmODlmYTkwNjU1MzVmNWQyYmJhMjQ5MGQyYmIyYjgz
ZTEzMmI3MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wMy0xNiAgSW1hbm9sIEZlcm5h
bmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViWFIg
SW5wdXQgU291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIFdlYlhSIElucHV0IFNvdXJjZSB0ZXN0IGV4cGVjdGF0aW9ucy4KKworICAg
ICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTAzLTE2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1hY09zIFdrMSBdIGh0
dHAvd3B0L2ZpbGVyZWFkZXIvZmlsZXJlYWRlci1zdG9wLmh0bWwgaXMgYSBmbGFrZXkgdGV4dCBm
YWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA3ZWNiODM5Y2Q3YjJiOGFm
MWJjYTVkYWMyMTI1OGMwMjQyMmYxMTg5Li5jM2RhZjVhODc5Y2JhYjYyNTg5ZTg0YWIwZDFlOWQ4
NjUwM2NmMDc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAyMS0wMy0xNiAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdlYlhSIElucHV0IFNvdXJj
ZSB0ZXN0IGV4cGVjdGF0aW9ucy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci9ldmVudHNfaW5wdXRfc291cmNlX3JlY3JlYXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2Vs
ZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdF9zdWJmcmFtZS5odHRwcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vz
c2lvbl9zcXVlZXplLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9oYW5kZWRuZXNzLmh0dHBzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRT
b3VyY2VfYWRkX3JlbW92ZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2VtdWxhdGVkUG9zaXRpb24uaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9m
ZnNldC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIxLTAzLTE1ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSB0aGUgbGF5b3V0IHRl
c3QgMmQucGF0aC5zdHJva2Uuc2NhbGUyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZV9y
ZWNyZWF0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZV9yZWNyZWF0aW9uLmh0
dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzA1MWU5MjA2ZmE0YmRkODlmYjgxYjRlYjBi
MDkwYmEyMmIwNDcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlX3JlY3JlYXRpb24u
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIElucHV0IHNvdXJjZXMg
YXJlIHJlLWNyZWF0ZWQgd2hlbiBoYW5kZWRuZXNzIG9yIHRhcmdldCByYXkgbW9kZSBjaGFuZ2Vz
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Np
b25fc2VsZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjE2OWU5ODAwMmU5ZjBm
ODllZjg3NDRjNzM5MDBlM2FlMjM1NTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxl
Y3QuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSSW5wdXRTb3Vy
Y2VzIHByaW1hcnkgaW5wdXQgcHJlc3NlcyBwcm9wZXJseSBmaXJlcyBvZmYgdGhlIHJpZ2h0IGV2
ZW50cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdF9zdWJmcmFtZS5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L2V2ZW50c19zZXNzaW9uX3NlbGVjdF9zdWJmcmFtZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2QzZGZiZTMxZjJiNTBlYWNlYTI4NTUyN2IyMjkyYTUxZjUyNzJlNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0X3N1YmZyYW1lLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKKworUEFTUyBFbnN1cmVzIHRoYXQgYW4gWFJJbnB1dFNvdXJjZXMgcHJpbWFy
eSBpbnB1dCBiZWluZyBwcmVzc2VkIGFuZCByZWxlYXNlZCBpbiB0aGUgc3BhY2Ugb2YgYSBzaW5n
bGUgZnJhbWUgcHJvcGVybHkgZmlyZXMgb2ZmIHRoZSByaWdodCBldmVudHMKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVu
dHNfc2Vzc2lvbl9zcXVlZXplLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc3F1ZWV6ZS5o
dHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIxNjllOTgwMDJlOWYwZjg5ZWY4NzQ0Yzcz
OTAwZTNhZTIzNTU5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc3F1ZWV6ZS5odHRwcy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJJbnB1dFNvdXJjZXMgcHJpbWFy
eSBpbnB1dCBwcmVzc2VzIHByb3Blcmx5IGZpcmVzIG9mZiB0aGUgcmlnaHQgZXZlbnRzCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIvZ2V0SW5wdXRQb3NlX2hhbmRlZG5lc3MuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBvc2VfaGFu
ZGVkbmVzcy5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg5ZTdhZTNlYmViZjFlNjE0
YTM1YjRiYjczYjE4ZGE1MTU0MmUzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0SW5wdXRQb3NlX2hhbmRlZG5l
c3MuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSSW5wdXRTb3Vy
Y2VzIHByb3Blcmx5IGNvbW11bmljYXRlIHRoZWlyIGhhbmRlZG5lc3MKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0
U291cmNlX2FkZF9yZW1vdmUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2FkZF9yZW1vdmUu
aHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0YjU2NGJmODU3ZDUzZGU3YzgzMmMzZDI1
YjQwZTIxM2Y5YTI0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3JlbW92ZS5odHRw
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJJbnB1dFNvdXJjZXMgY2Fu
IGJlIHByb3Blcmx5IGFkZGVkIGFuZCByZW1vdmVkIGZyb20gdGhlIHNlc3Npb24KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
cklucHV0U291cmNlX2VtdWxhdGVkUG9zaXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNl
X2VtdWxhdGVkUG9zaXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhYTcwN2Y2
Y2U0NGVmNjQ4ZjQ0ZjBkYWM2OTVlMjdkYzBmNTY1NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3Vy
Y2VfZW11bGF0ZWRQb3NpdGlvbi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisK
K1BBU1MgUG9zZXMgZnJvbSBYUklucHV0U291cmNlLmdyaXBTcGFjZSBoYXZlIGVtdWxhdGVkUG9z
aXRpb24gc2V0IHByb3Blcmx5CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hySW5wdXRTb3VyY2VfcHJvZmlsZXMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhkMTc2ZWQ3NmUxOTljZWE3NzRiZDEyYjlmOGU5ZjBmNDNiNDRkZjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hySW5wdXRTb3VyY2VfcHJvZmlsZXMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorCitQQVNTIFdlYlhSIElucHV0U291cmNlJ3MgcHJvZmlsZXMgbGlzdCBjYW4gYmUgc2V0CisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXQuaHR0cHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVy
ZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMz
NGNmYzJjYzc2NTllYjRmYjBhMzFjMDk1ODQ4Y2MzMmJhZDI0NwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZl
cmVuY2VTcGFjZV9vcmlnaW5PZmZzZXQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorCitQQVNTIFVwZGF0aW5nIFhSUmVmZXJlbmNlU3BhY2Ugb3JpZ2luIG9mZnNldCB1cGRhdGVz
IHZpZXcgYW5kIGlucHV0IG1hdHJpY2VzLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDdlNWMyMmY0Y2ZkMDAxODUyNjRjMGJhZTQ1MTE1ODI3MGZmMGVh
ODMuLmQzNWNkMzQ4MWZmMmI5ZjQzMGQ5MjFkNWU2NTAxNzBkNzFiODU4OTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zCkBAIC02MDYsNiArNjA2LDEwIEBAIHdl
YmtpdC5vcmcvYi8yMTMxMzEgZ2FtZXBhZCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzIxMzEzMSBo
dHRwL3Rlc3RzL21pc2MvZ2FtZXBhZHMtaW5zZWN1cmUuaHRtbCBbIFNraXAgXQogCiAjIFdlYlhS
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19pbnB1dF9zb3Vy
Y2VfcmVjcmVhdGlvbi5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdF9zdWJmcmFtZS5odHRwcy5odG1s
IFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19z
ZXNzaW9uX3NlbGVjdC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NxdWVlemUuaHR0cHMuaHRtbCBbIFBhc3Mg
XQogd2Via2l0Lm9yZy9iLzIxMjg5NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL2lkbGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJlIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJCb3VuZGVkUmVmZXJlbmNlU3BhY2VfdXBkYXRl
cy5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvd2ViR0xDYW52YXNDb250ZXh0X2NyZWF0ZV94cmNvbXBh
dGlibGUuaHR0cHMuaHRtbCBbIFBhc3MgXQpAQCAtNjIwLDEwICs2MjQsMTQgQEAgd2Via2l0Lm9y
Zy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNl
X3JlcXVlc3RTZXNzaW8KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9ub19tb2RlLmh0dHBzLmh0
bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9ub25faW1tZXJzaXZlX25vX2dl
c3R1cmUuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX29wdGlv
bmFsRmVhdHVyZXMuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBvc2VfaGFuZGVkbmVzcy5odHRwcy5odG1sIFsgUGFzcyBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldFZpZXdlclBvc2VfZW11
bGF0ZWRQb3NpdGlvbi5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0dHBzLmh0bWwg
WyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9n
ZXRQb3NlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJGcmFtZV9zZXNzaW9uX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2FkZF9y
ZW1vdmUuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94cklucHV0U291cmNlX2VtdWxhdGVkUG9zaXRpb24uaHR0cHMuaHRtbCBbIFBhc3Mg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3By
b2ZpbGVzLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJTZXNzaW9uX3ZpZXdlcl9hdmFpbGFiaWxpdHkuaHR0cHMuaHRtbCBbIFBhc3Mg
XQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL2FyLW1vZHVsZS9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy5odG1sIFsgUGFzcyBdCiB3ZWJr
aXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXIt
bW9kdWxlL3hyRGV2aWNlX2lzU2Vzc2lvblN1cHBvcnRlZF9pbW1lcnNpdmUtYXIuaHR0cHMuaHRt
bCBbIFBhc3MgXQpAQCAtNjMxLDYgKzYzOSw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJWaWV3X2V5ZXMuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMuaHRtbCBbIFBhc3Mg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1
cGRhdGUuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci9uYXZpZ2F0b3JfeHJfc2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2lu
T2Zmc2V0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLmh0bWwg
WyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVu
Y2VTcGFjZV9yZWxhdGlvbnNoaXBzLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSaWdpZFRyYW5zZm9ybV9jb25zdHJ1Y3Rvci5odHRw
cy5odG1sIFsgUGFzcyBdCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
MTM5OTRkZTM3ZGQ5ZmMzNWRlM2IwNWIzNTZkMjNhOTdmMTBjNGVlZS4uNWEzZmJjMTBlN2Q3YjRh
MjY4YTFlMWFlNmFiMjM2YTA4MjI1Y2U2ZCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTE2ICBJbWFub2wgRmVybmFuZGV6ICA8
aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXZWJYUiBJbnB1dCBT
b3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjMyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bmFibGUgV1BFIEdhbWVwYWQgd2hlbiBXZWJYUiBpcyBlbmFibGVkLgorCisgICAgICAgICogU291
cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2U6CisKIDIwMjEtMDMtMTQgIExhdXJvIE1vdXJhICA8
bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIEtlZXAgR1BVUHJvY2VzcyBkaXNh
YmxlZCB3aGVuIHVzaW5nIGV4cGVyaW1lbnRhbCBmZWF0dXJlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423598</attachid>
            <date>2021-03-18 07:31:29 -0700</date>
            <delta_ts>2021-03-26 11:01:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223257-20210318153128.patch</filename>
            <type>text/plain</type>
            <size>162090</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWJiZmVhYzAwYTUzNmRh
NWY5MTY0ZDkyNWQyMGFiNWFhOTMyMjJlNS4uN2Y1MzA5NjA1ZWMyMWRjMjU4ZDY5NjI2MThlNTgx
NWM3MGQ5MjMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNCBAQAorMjAyMS0wMy0xNiAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBwbGF0Zm9ybSBkYXRhIGRl
ZmluaXRpb24gYW5kIHRoZSBET00gYml0cyByZXF1aXJlZCB0byBzdXBwb3J0IFdlYlhSIElucHV0
IFNvdXJjZXMsIHRoZSBpbnB1dCBtZWNoYW5pc20gdXNlZCBpbiBXZWJYUi4KKyAgICAgICAgRXhh
bXBsZSBYUiBpbnB1dCBzb3VyY2VzIGluY2x1ZGUsIGJ1dCBhcmUgbm90IGxpbWl0ZWQgdG8sIGhh
bmRoZWxkIGNvbnRyb2xsZXJzLCBvcHRpY2FsbHkgdHJhY2tlZCBoYW5kcywgYW5kIGdhemUtYmFz
ZWQgaW5wdXQgbWV0aG9kcy4KKworICAgICAgICBNb3JlIGluZm8gYWJvdXQgdGhlIEFQSSBpbjoK
KyAgICAgICAgLSBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNpbnB1dAor
ICAgICAgICAtIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMt
bW9kdWxlLyN3ZWJ4ci1kZXZpY2UtYXBpLWludGVncmF0aW9uCisKKyAgICAgICAgVGVzdGVkIGJ5
IFdlYlhSIFdQVC4KKworICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmg6IEFkZCBz
ZXRDb25uZWN0ZWQgbWV0aG9kLgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZSk6IHNldCBl
bXVsYXRlZFBvc2l0aW9uIGJhc2VkIG9uIHRoZSBzcGFjZXMuCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwOiBDb21wbGV0ZSBXZWJYUklucHV0U291cmNlIGlt
cGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpXZWJYUklucHV0U3BhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpuYXRpdmVPcmlnaW4gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJHYW1lcGFkOjpXZWJYUkdhbWVwYWQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSSW5wdXRTb3VyY2U6OldlYlhSSW5wdXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3Vy
Y2U6OnJlcXVpcmVzSW5wdXRTb3VyY2VDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJ
bnB1dFNvdXJjZTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291
cmNlOjpwb2xsRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OmNy
ZWF0ZUV2ZW50KToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5o
OiBBZGQgaW5wdXQgZGF0YSBhbmQgaGVscGVyIFdlYlhSR2FtZXBhZCBhbmQgV2ViWFJJbnB1dFNw
YWNlIGNsYXNzZXMuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U3BhY2U6OnNldFBvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6aGFuZGxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OmhhbmRlZG5lc3MgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6dGFyZ2V0UmF5TW9kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjp0YXJnZXRSYXlTcGFjZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjpncmlwU3BhY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6cHJvZmlsZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6Z2FtZXBhZCBjb25zdCk6CisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaWRsOiBBZGQgZ2FtZXBhZCBhdHRy
aWJ1dGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5j
cHA6IEltcGxlbWVudCBpbnB1dCBzb3VyY2UgdXBkYXRlcyBhbmQgZXZlbnQgZGlzcGF0Y2hpbmcu
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3VyY2VBcnJh
eSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6Omxlbmd0aCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6Oml0ZW0gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjbGVhcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OnVwZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVBZGRlZE9y
VXBkYXRlZElucHV0U291cmNlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0
U291cmNlQXJyYXkuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKTogU2V0IHRy
YWNraW5nIGRlbGVnYXRlIGJlZm9yZSBpbml0aWFsaXppbmcgdHJhY2tpbmcgYW5kIHJlbmRlcmlu
Zy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6aXNQb3NpdGlvbkVtdWxhdGVkIGNv
bnN0KTogQWRkIGhlbHBlciBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246
OnNodXRkb3duKTogQ2xlYXIgV2ViWFJJbnB1dFNvdXJjZUFycmF5IGluc3RhbmNlLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNl
cyk6IERpc3BhdGNoIGluaXRpYWwgSW5wdXRTb3VyY2UgZGlzY292ZXJ5IGV2ZW50LgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpvbkZyYW1lKTogVXBkYXRlIFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheSBpbnN0YW5jZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5o
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcDogQWRkIHZpcnR1YWwg
Y2xhc3MgaXNQb3NpdGlvbkVtdWxhdGVkIHRvIGJlIHVzZWQgaW4gV2ViWFJGcmFtZS4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzUG9zaXRpb25FbXVsYXRlZCBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpyZXF1
ZXN0U2Vzc2lvbik6IHVwZGF0ZSBGSVhNRSBjb21tZW50LgorCisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9YUkhhbmRlZG5lc3MuaDogUmV1c2UgUGxhdGZvcm1YUiBlbnVtLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WFJJbnB1dFNvdXJjZUV2ZW50OjpYUklucHV0U291cmNlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6WFJJbnB1dFNvdXJjZUV2ZW50OjpzZXRGcmFtZUFjdGl2ZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIv
WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9Y
UlRhcmdldFJheU1vZGUuaDogUmV1c2UgUGxhdGZvcm1YUiBlbnVtLgorCisgICAgICAgICogcGxh
dGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Onhy
U3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZyk6IEFkZCB4ci1zdGFuZGFyZCBnYW1lcGFkIG1h
cHBpbmcgbmFtZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMu
aDoKKworICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDogQWRkIElucHV0IFNvdXJj
ZSBmcmFtZSBkYXRhLgorCisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwOiBJ
bXBsZW1lbnQgcmVxdWlyZWQgY2hhbmdlcyB0byBydW4gYW5kIHBhc3MgV2ViWFIgSW5wdXQgU291
cmNlIHRlc3RzLgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OmluaXRpYWxp
emVUcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRl
dmljZTo6ZnJhbWVUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmlj
ZTo6c2ltdWxhdGVSZXNldFBvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNl
OjpzaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbik6CisgICAgICAgICogdGVzdGluZy9XZWJG
YWtlWFJEZXZpY2UuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OldlYkZha2VY
UklucHV0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXI6OnNldEdyaXBPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyOjpzZXRQb2ludGVyT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VY
UklucHV0Q29udHJvbGxlcjo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OnJlY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OnNldFN1cHBvcnRlZEJ1dHRvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjp1cGRhdGVCdXR0b25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEJ1dHRvbk9yUGxhY2Vo
b2xkZXIgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
Lmg6CisKKzIwMjEtMDMtMTggIEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIE9wYXF1ZSBGcmFtZWJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjA3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBiYXNlIFhSIGxheWVycyBBUEkgd2hpY2ggaXMgaW5pdGlhbGx5IHVzZWQgYnkgV2ViWFJXZWJH
TExheWVyLCBidXQKKyAgICAgICAgd2l0aCB0aGUgZ29hbCBvZiBzdXBwb3J0aW5nIG1vcmUgdHlw
ZXMgb2YgbGF5ZXJzIGluIHRoZSBmdXR1cmUgKHNlZSBXZWJYUiBMYXllcnMgc3BlYykuCisKKyAg
ICAgICAgTGF5ZXJzIGFyZSBjb25uZWN0ZWQgdG8gV2ViR0wgYnkgdXNpbmcgc2hhcmVkIHRleHR1
cmVzLiBJbiB0aGUgY2FzZSBvZiBXZWJYUldlYkdMTGF5ZXIKKyAgICAgICAgaXQgY3JlYXRlcyBh
biBPcGFxdWUgRnJhbWVidWZmZXIgdGhhdCByZW5kZXJzIHRvIHRoZSBzaGFyZWQgdGV4dHVyZS4g
WFIgcnVudGltZXMgc3VwcG9ydGluZworICAgICAgICBkb3VibGUgb3IgdHJpcGxlIGJ1ZmZlcmlu
ZyBjYW4gc2VuZCBkaWZmZXJlbnQgc2hhcmVkIHRleHR1cmVzIGVhY2ggZnJhbWUgaW4gdGhlIEZy
YW1lRGF0YSBzdHJ1Y3QuCisgICAgICAgIFRoZSB0ZXh0dXJlIGZvciB0aGUgY3VycmVudCBmcmFt
ZSBpcyBhdHRhY2hlZCBpbiBXZWJYUkxheWVyOjpzdGFydEZyYW1lIGFuZCBwcmVwYXJlZCB0byBz
ZW5kIGl0IGJhY2sgdG8gdGhlCisgICAgICAgIFZSIGNvbXBvc2l0b3IgaW4gV2ViWFJMYXllcjo6
ZW5kRnJhbWUoKS4KKworICAgICAgICBUZXN0ZWQgYnkgdGhlIFdlYlhSIFdQVCB0ZXN0cy4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJMYXllci5oOiBhZGQgc3RhcnRGcmFtZSBhbmQg
ZW5kRnJhbWUgcHVyZSB2aXJ0dWFsIG1ldGhvZHMuCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpvbkZyYW1l
KTogZG8gbm90IGNhbGwgUkFGcyBpZiBmcmFtZURhdGEuc2hvdWxkUmVuZGVyIGlzIGZhbHNlLgor
ICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmg6IGFkZCBkZXZpY2UgZ2V0dGVy
LgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OnJlcXVlc3RGcmFtZSk6IGFs
d2F5cyBlbmFibGUgZnJhbWVEYXRhLnNob3VsZFJlbmRlciBmbGFnLgorICAgICAgICAqIE1vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uaDogT3ZlcnJpZGUgbmV3IHZpcnR1YWwgZnVuY3Rpb25zLgor
ICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJWaWV3cG9ydC5oOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJWaWV3cG9ydDo6cmVjdCBjb25zdCk6IEFkZCBoZWxwZXIgbWV0aG9kLgorCisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwOiBSZWZhY3RvciByZXNvdXJj
ZSBpbml0aWFsaXphdGlvbiB0byBjcmVhdGUgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJXZWJHTExheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJXZWJHTExheWVy
OjpXZWJYUldlYkdMTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bV9pc0NvbXBvc2l0aW9uRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OmZyYW1lYnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6ZnJhbWVidWZmZXJXaWR0
aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OmZyYW1lYnVmZmVy
SGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6c3RhcnRG
cmFtZSk6IFByZXBhcmUgT3BhcXVlIEZyYW1lYnVmZmVyIGZvciB0aGUgc3RhcnQgb2YgbmV4dCBm
cmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6ZW5kRnJhbWUpOiBQcmVw
YXJlIE9wYXF1ZSBGcmFtZWJ1ZmZlciBmb3IgVlIgY29tcG9zaXRvciBzdWJtaXRGcmFtZS4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6Y2FudmFzUmVzaXplZCk6IE1vdmUgbWV0
aG9kCisKKyAgICAgICAgKFdlYkNvcmU6OldlYlhST3BhcXVlRnJhbWVidWZmZXI6OmNyZWF0ZSk6
IEltcGxlbWVudCBjbGFzcyB0byBtYW5hZ2UgV2ViWFIgT3BhcXVlIGZyYW1lYnVmZmVyLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6V2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjp+V2ViWFJP
cGFxdWVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyOjpzdGFydEZyYW1lKTogQXR0YWNoIHNoYXJlZCB0ZXh0dXJlIGZvciB0aGUgY3VycmVudCBm
cmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhST3BhcXVlRnJhbWVidWZmZXI6OmVuZEZyYW1l
KTogRmx1c2ggYW5kIHJlc29sdmUgbXVsdGlzYW1wbGluZyBpZiByZXF1aXJlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVidWZmZXIpOiBBbGxv
Y2F0ZSB0aGUgT3BhcXVlIGZyYW1lYnVmZmVyIHdpdGggcmVxdWVzdGVkIGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oOiAgQWRkIFdlYlhST3Bh
cXVlRnJhbWVidWZmZXIgYW5kIGhhbmRsZSBtZW1iZXJzLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJPcGFxdWVGcmFtZWJ1ZmZlcjo6aGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhST3BhcXVlRnJhbWVidWZmZXI6OmZyYW1lYnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhST3BhcXVlRnJhbWVidWZmZXI6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhST3BhcXVlRnJhbWVidWZmZXI6OmhlaWdodCBjb25zdCk6CisKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDogQWRkIE9wZW5YUkxheWVyLmNwcCBhbmQgT3BlblhSU3dhcGNoYWluLmNwcC4K
KworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKTogaGFuZGxlIE9wYXF1ZSBGcmFtZWJ1ZmZlcnMuCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDogQWRkIG1lbWJlcnMgYW5kIG1ldGhv
ZHMgcmVxdWlyZWQgZm9yIE9wYXF1ZSBGcmFtZWJ1ZmZlcnMuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTEZyYW1lYnVmZmVyOjpjcmVhdGVPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xG
cmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXMgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuaDoKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6IGhhbmRsZSBPcGFxdWUgRnJhbWVidWZm
ZXJzLgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHA6IGhhbmRsZSBPcGFxdWUgRnJhbWVidWZmZXJzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorCisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOiBBZGQgbWV0
aG9kIHRvIHN1Ym1pdEZyYW1lLgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpzdWJtaXRG
cmFtZSk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSTGF5ZXIuY3BwOiBB
ZGQgY2xhc3MgdG8gbWFuYWdlIE9wZW5YUiBsYXllcnMuCisgICAgICAgIChQbGF0Zm9ybVhSOjpP
cGVuWFJMYXllcjo6T3BlblhSTGF5ZXIpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSTGF5
ZXJQcm9qZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSTGF5ZXJQ
cm9qZWN0aW9uOjpPcGVuWFJMYXllclByb2plY3Rpb24pOgorICAgICAgICAoUGxhdGZvcm1YUjo6
T3BlblhSTGF5ZXJQcm9qZWN0aW9uOjpzdGFydEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS94
ci9vcGVueHIvT3BlblhSTGF5ZXIuaDogQWRkZWQuCisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVu
WFJMYXllcjo6aGFuZGxlKToKKworICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJT
d2FwY2hhaW4uY3BwOiBBZGQgY2xhc3MgdG8gbWFuYWdlIE9wZW5YUiBzd2FwY2hhaW5zCisgICAg
ICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJTd2FwY2hhaW46OmNyZWF0ZSk6CisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJTd2FwY2hhaW46Ok9wZW5YUlN3YXBjaGFpbik6CisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJTd2FwY2hhaW46On5PcGVuWFJTd2FwY2hhaW4pOgorICAgICAgICAoUGxh
dGZvcm1YUjo6T3BlblhSU3dhcGNoYWluOjphY3F1aXJlSW1hZ2UpOgorICAgICAgICAoUGxhdGZv
cm1YUjo6T3BlblhSU3dhcGNoYWluOjpyZWxlYXNlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L3hyL29wZW54ci9PcGVuWFJTd2FwY2hhaW4uaDogQWRkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9vcGVueHIvT3BlblhSVXRpbHMuaDogQWRkIGhlbHBlciBsb2cgZnVuY3Rpb24KKyAgICAg
ICAgKFBsYXRmb3JtWFI6OnhyVmlld1RvUG9zZSk6IFVzZSBmYWJzIGluc3RlYWQgb2YgbmVnYXRp
b24KKworICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcDoK
KyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5k
UmVuZGVyaW5nKTogY3JlYXRlIEdyYXBoaWNzQ29udGV4dEdMIGZvciB0ZXh0dXJlIHNoYXJpbmcu
CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZSk6IFByZXBh
cmUgYW5kIGZpbGwgbGF5ZXJzIGlmIHNob3VsZFJlbmRlciBpcyB0cnVlLgorICAgICAgICAoUGxh
dGZvcm1YUjo6T3BlblhSRGV2aWNlOjpzdWJtaXRGcmFtZSk6IEltcGxlbWVudCBzdWJtaXQgbGF5
ZXJzIHRvIE9wZW5YUgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpjcmVhdGVM
YXllclByb2plY3Rpb24pOiBJbXBsZW1lbnQgbGF5ZXIgY3JlYXRpb24gbWV0aG9kCisgICAgICAg
IChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OmRlbGV0ZUxheWVyKTogSW1wbGVtZW50IGxheWVy
IGRlYWxsb2NhdGlvbgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpjb2xsZWN0
RW5hYmxlZEZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmlj
ZTo6cmVzZXRTZXNzaW9uKTogRGVhbGxvY2F0ZSBsYXllcnMgYW5kIGdyYXBoaWNzIGNvbnRleHQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oOiBBZGQg
TGF5ZXJzIEFQSQorCisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbik6
IEluY3JlYXNlIHNpemUgdG8gYXZvaWQgcGxhdGZvcm0gbWluaW11bSBGQk8gc2l6ZSBlcnJvcnMK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdB
bmRSZW5kZXJpbmcpOiBDcmVhdGUgZ3JhcGhpY3MgY29udGV4dAorICAgICAgICAoV2ViQ29yZTo6
U2ltdWxhdGVkWFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcpOiBSZWxlYXNl
IGdyYXBoaWNzIGNvbnRleHQKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpm
cmFtZVRpbWVyRmlyZWQpOiBzZXQgdXAgbGF5ZXJzIGluIGZyYW1lIGRhdGEKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpjcmVhdGVMYXllclByb2plY3Rpb24pOiBjcmVhdGVz
IGEgdGV4dHVyZSBmb3IgYSBsYXllci4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2
aWNlOjpkZWxldGVMYXllcik6IHJlbGVhc2VzIHRoZSBhc3NvY2lhdGVkIHRleHR1cmUgdG8gYSBs
YXllcgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmg6CisKIDIwMjEtMDMtMTgg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtT
T1VQXSBTT1VQMyBjcmFzaGVzIGluc2lkZSBzb3VwX21lc3NhZ2Vfc2V0X3JlcXVlc3RfYm9keQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmgKaW5kZXggOGYxOTMzNDE2MDVj
YzYwMTAxNjBkMWUyOGQyNjc5MDY1YzRjNjE3Ny4uNDNjZWQ1NDU3ZjJmNGZkNGE0NzZiNWQzNjJh
NGE5ZGFjNTBhMGYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFk
L0dhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5o
CkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UmVmPEdhbWVwYWRC
dXR0b24+PiYgYnV0dG9ucygpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVGcm9tUGxhdGZvcm1H
YW1lcGFkKGNvbnN0IFBsYXRmb3JtR2FtZXBhZCYpOworICAgIHZvaWQgc2V0Q29ubmVjdGVkKGJv
b2wgY29ubmVjdGVkKSB7IG1fY29ubmVjdGVkID0gY29ubmVjdGVkOyB9CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgR2FtZXBhZChjb25zdCBQbGF0Zm9ybUdhbWVwYWQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCmluZGV4IGY0NWZiMTE0NzVhMmQ4MjQw
ZjZiZjQ3ODA2YjQwMDk4NDhjYjA4N2QuLjc4ZjQxZDliOGZkOTZlYjhjMGZkMTVhZWUzZDMxYjgz
ZWIyMWM5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNw
cApAQCAtMTE5LDcgKzExOSw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6OlBv
cHVsYXRlZFBvc2U+PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoY29uc3QKICAgICAvLyA3LiBM
ZXQgdHJhbnNmb3JtIGJlIHBvc2XigJlzIHRyYW5zZm9ybS4KICAgICAvLyA4LiBRdWVyeSB0aGUg
WFIgZGV2aWNlJ3MgdHJhY2tpbmcgc3lzdGVtIGZvciBzcGFjZeKAmXMgcG9zZSByZWxhdGl2ZSB0
byBiYXNlU3BhY2UgYXQgdGhlIGZyYW1l4oCZcyB0aW1lLgogCi0gICAgaWYgKCFtX2RhdGEuaXNU
cmFja2luZ1ZhbGlkKSB7CisgICAgaWYgKG1faXNBbmltYXRpb25GcmFtZSAmJiAhbV9kYXRhLmlz
VHJhY2tpbmdWYWxpZCkgewogICAgICAgICAvLyBGSVhNRTogY2hlY2sgaWYgc3BhY2XigJlzIHBv
c2UgcmVsYXRpdmUgdG8gYmFzZVNwYWNlIGhhcyBiZWVuIGRldGVybWluZWQgaW4gdGhlIHBhc3Qu
CiAgICAgICAgIC8vIEFueXdheSB0aGlzIGVtdWxhdGlvbiBpcyB1c3VhbGx5IHByb3ZpZGVkIGJ5
IHRoZSBzeXN0ZW0gaW4gdGhlIHBvc2UgKGUuZy4gT3BlblhSKQogICAgICAgICAvLyBzbyB3ZSBz
aG91bGRuJ3QgaGl0IHRoaXMgcGF0aCBpbiBtb3N0IFhSUGxhdGZvcm0gcG9ydHMuCkBAIC0xMzEs
NyArMTMxLDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxhdGVkUG9z
ZT4+IFdlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZShjb25zdAogICAgICAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQgfTsKIAogICAgIGF1dG8gdHJhbnNmb3JtID0gICpiYXNlVHJhbnNmb3JtLmludmVy
c2UoKSAqIHNwYWNlLmVmZmVjdGl2ZU9yaWdpbigpOwotICAgIGJvb2wgZW11bGF0ZWRQb3NpdGlv
biA9IG1fZGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQgfHwgIW1fZGF0YS5pc1Bvc2l0aW9uVmFsaWQ7
CisgICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uID0gc3BhY2UuaXNQb3NpdGlvbkVtdWxhdGVkKCkg
fHwgYmFzZVNwYWNlLmlzUG9zaXRpb25FbXVsYXRlZCgpOwogCiAgICAgYm9vbCBsaW1pdCA9IG11
c3RQb3Nlc0JlTGltaXRlZChzcGFjZSwgYmFzZVNwYWNlKTsKICAgICBpZiAobGltaXQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwCmlu
ZGV4IGYzMDc2NzUxMTk4ZGJiYzM3NmNiOTcxOWI4YTg3YjEyYzYyMDE4ZGQuLjYwNTdjMjM5MzUw
MjAxNGUwNzdiOTM2YTZlZTViMzcyYjk1YmJhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcApAQCAtMjgsNTAgKzI4LDE3OSBAQAog
CiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lmIEVOQUJM
RShHQU1FUEFEKQorI2luY2x1ZGUgIkdhbWVwYWQuaCIKKyNpbmNsdWRlICJHYW1lcGFkQ29uc3Rh
bnRzLmgiCisjZW5kaWYKKyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViWFJS
aWdpZFRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgogI2luY2x1ZGUgIldl
YlhSU3BhY2UuaCIKKyNpbmNsdWRlICJYUklucHV0U291cmNlRXZlbnQuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXZWJYUklucHV0U3BhY2UpOwogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFdlYlhSSW5wdXRTb3VyY2UpOwogCi1SZWY8V2ViWFJJbnB1dFNvdXJjZT4gV2Vi
WFJJbnB1dFNvdXJjZTo6Y3JlYXRlKFJlZjxXZWJYUlNwYWNlPiYmIHRhcmdldFJheVNwYWNlKQor
Ly8gV2ViWFJJbnB1dFNwYWNlCisKK1JlZjxXZWJYUklucHV0U3BhY2U+IFdlYlhSSW5wdXRTcGFj
ZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9u
LCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBw
b3NlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTcGFjZShkb2N1bWVu
dCwgV1RGTW92ZShzZXNzaW9uKSwgcG9zZSkpOworfQorCitXZWJYUklucHV0U3BhY2U6OldlYlhS
SW5wdXRTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lv
biwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYg
cG9zZSkKKyAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQsIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNy
ZWF0ZSgpKQorICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX3Bvc2Uo
cG9zZSkKK3sKK30KKworV2ViWFJJbnB1dFNwYWNlOjp+V2ViWFJJbnB1dFNwYWNlKCkgPSBkZWZh
dWx0OworCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUklucHV0U3BhY2U6Om5hdGl2ZU9yaWdp
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKG1fcG9z
ZS5wb3NlKTsKK30KKworLy8gV2ViWFIgR2FtZXBhZAorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisK
Ky8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMtbW9kdWxl
LyNnYW1lcGFkLWRpZmZlcmVuY2VzCitXZWJYUkdhbWVwYWQ6OldlYlhSR2FtZXBhZChkb3VibGUg
dGltZXN0YW1wLCBkb3VibGUgY29ubmVjdFRpbWUsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNlKQorICAgIDogUGxhdGZvcm1HYW1lcGFkKC0x
KQoreworICAgIG1fbGFzdFVwZGF0ZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpmcm9tUmF3U2Vjb25k
cyhTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHRpbWVzdGFtcCkudmFsdWUoKSk7CisgICAgbV9j
b25uZWN0VGltZSA9IE1vbm90b25pY1RpbWU6OmZyb21SYXdTZWNvbmRzKFNlY29uZHM6OmZyb21N
aWxsaXNlY29uZHMoY29ubmVjdFRpbWUpLnZhbHVlKCkpOworICAgIC8vIEluIG9yZGVyIHRvIHJl
cG9ydCBhIG1hcHBpbmcgb2YgInhyLXN0YW5kYXJkIiB0aGUgZGV2aWNlIE1VU1QgcmVwb3J0IGEg
dGFyZ2V0UmF5TW9kZSBvZiAidHJhY2tlZC1wb2ludGVyIiBhbmQgTVVTVCBoYXZlIGEgbm9uLW51
bGwgZ3JpcFNwYWNlLgorICAgIC8vIEl0IE1VU1QgaGF2ZSBhdCBsZWFzdCBvbmUgcHJpbWFyeSB0
cmlnZ2VyLCBzZXBhcmF0ZSBmcm9tIGFueSB0b3VjaHBhZHMgb3IgdGh1bWJzdGlja3MKKyAgICBp
ZiAoc291cmNlLnRhcmdldFJheU1vZGUgPT0gWFJUYXJnZXRSYXlNb2RlOjpUcmFja2VkUG9pbnRl
ciAmJiAhc291cmNlLmJ1dHRvbnMuaXNFbXB0eSgpICYmIHNvdXJjZS5ncmlwT3JpZ2luLmhhc1Zh
bHVlKCkpCisgICAgICAgIG1fbWFwcGluZyA9IHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmlu
ZygpOworICAgIG1fYXhlcyA9IHNvdXJjZS5heGVzLm1hcChbXShhdXRvIHZhbHVlKSB7CisgICAg
ICAgIHJldHVybiBTaGFyZWRHYW1lcGFkVmFsdWUodmFsdWUpOworICAgIH0pOworICAgIG1fYnV0
dG9ucyA9IHNvdXJjZS5idXR0b25zLm1hcChbXShhdXRvJiB2YWx1ZSkgeworICAgICAgICByZXR1
cm4gU2hhcmVkR2FtZXBhZFZhbHVlKHZhbHVlLnByZXNzZWRWYWx1ZSk7CisgICAgfSk7Cit9CisK
KyNlbmRpZgorCisvLyBXZWJYUklucHV0U291cmNlCisKK1JlZjxXZWJYUklucHV0U291cmNlPiBX
ZWJYUklucHV0U291cmNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNz
aW9uPiYmIHNlc3Npb24sIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlhSSW5wdXRTb3VyY2UoV1RGTW92ZSh0YXJnZXRSYXlTcGFjZSkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U291cmNlKGRvY3VtZW50LCBXVEZNb3ZlKHNl
c3Npb24pLCB0aW1lc3RhbXAsIHNvdXJjZSkpOwogfQogCi1XZWJYUklucHV0U291cmNlOjpXZWJY
UklucHV0U291cmNlKFJlZjxXZWJYUlNwYWNlPiYmIHRhcmdldFJheVNwYWNlKQotICAgIDogbV9o
YW5kZWRuZXNzKFhSSGFuZGVkbmVzczo6Tm9uZSkKLSAgICAsIG1fdGFyZ2V0UmF5TW9kZShYUlRh
cmdldFJheU1vZGU6OkdhemUpCi0gICAgLCBtX3RhcmdldFJheVNwYWNlKFdURk1vdmUodGFyZ2V0
UmF5U3BhY2UpKQorV2ViWFJJbnB1dFNvdXJjZTo6V2ViWFJJbnB1dFNvdXJjZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgZG91YmxlIHRpbWVzdGFtcCwg
Y29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2Up
CisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vz
c2lvbikpCisgICAgLCBtX3RhcmdldFJheVNwYWNlKFdlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKGRv
Y3VtZW50LCBtX3Nlc3Npb24uY29weVJlZigpLCBzb3VyY2UucG9pbnRlck9yaWdpbikpCisgICAg
LCBtX2Nvbm5lY3RUaW1lKHRpbWVzdGFtcCkKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICAsIG1f
Z2FtZXBhZChHYW1lcGFkOjpjcmVhdGUoV2ViWFJHYW1lcGFkKHRpbWVzdGFtcCwgdGltZXN0YW1w
LCBzb3VyY2UpKSkKKyNlbmRpZgogeworICAgIHVwZGF0ZSh0aW1lc3RhbXAsIHNvdXJjZSk7CiB9
CiAKIFdlYlhSSW5wdXRTb3VyY2U6On5XZWJYUklucHV0U291cmNlKCkgPSBkZWZhdWx0OwogCi1Y
UkhhbmRlZG5lc3MgV2ViWFJJbnB1dFNvdXJjZTo6aGFuZGVkbmVzcygpIGNvbnN0Cit2b2lkIFdl
YlhSSW5wdXRTb3VyY2U6OnVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4g
bV9oYW5kZWRuZXNzOworI2lmICFFTkFCTEUoR0FNRVBBRCkKKyAgICBVTlVTRURfUEFSQU0odGlt
ZXN0YW1wKTsKKyNlbmRpZgorICAgIG1fc291cmNlID0gc291cmNlOworICAgIG1fdGFyZ2V0UmF5
U3BhY2UtPnNldFBvc2Uoc291cmNlLnBvaW50ZXJPcmlnaW4pOworICAgIGlmIChhdXRvIGdyaXBP
cmlnaW4gPSBzb3VyY2UuZ3JpcE9yaWdpbikgeworICAgICAgICBpZiAobV9ncmlwU3BhY2UpCisg
ICAgICAgICAgICBtX2dyaXBTcGFjZS0+c2V0UG9zZSgqZ3JpcE9yaWdpbik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fZ3JpcFNwYWNlID0gV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUobV9k
b2N1bWVudCwgbV9zZXNzaW9uLmdldCgpLCAqZ3JpcE9yaWdpbik7CisgICAgfSBlbHNlCisgICAg
ICAgIG1fZ3JpcFNwYWNlID0gbnVsbHB0cjsKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBtX2dh
bWVwYWQtPnVwZGF0ZUZyb21QbGF0Zm9ybUdhbWVwYWQoV2ViWFJHYW1lcGFkKHRpbWVzdGFtcCwg
bV9jb25uZWN0VGltZSwgc291cmNlKSk7CisjZW5kaWYKIH0KIAotWFJUYXJnZXRSYXlNb2RlIFdl
YlhSSW5wdXRTb3VyY2U6OnRhcmdldFJheU1vZGUoKSBjb25zdAorYm9vbCBXZWJYUklucHV0U291
cmNlOjpyZXF1aXJlc0lucHV0U291cmNlQ2hhbmdlKGNvbnN0IElucHV0U291cmNlJiBzb3VyY2Up
CiB7Ci0gICAgcmV0dXJuIG1fdGFyZ2V0UmF5TW9kZTsKKyAgICByZXR1cm4gbV9zb3VyY2UuaGFu
ZGVuZXNzICE9IHNvdXJjZS5oYW5kZW5lc3MKKyAgICAgICAgfHwgbV9zb3VyY2UudGFyZ2V0UmF5
TW9kZSAhPSBzb3VyY2UudGFyZ2V0UmF5TW9kZQorICAgICAgICB8fCBtX3NvdXJjZS5wcm9maWxl
cyAhPSBzb3VyY2UucHJvZmlsZXMKKyAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Ym9vbD4obV9ncmlw
U3BhY2UpICE9IHNvdXJjZS5ncmlwT3JpZ2luLmhhc1ZhbHVlKCk7CiB9CiAKLWNvbnN0IFdlYlhS
U3BhY2UmIFdlYlhSSW5wdXRTb3VyY2U6OnRhcmdldFJheVNwYWNlKCkgY29uc3QKK3ZvaWQgV2Vi
WFJJbnB1dFNvdXJjZTo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgcmV0dXJuIG1fdGFyZ2V0UmF5U3Bh
Y2U7CisgICAgbV9jb25uZWN0ZWQgPSBmYWxzZTsKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBt
X2dhbWVwYWQtPnNldENvbm5lY3RlZChmYWxzZSk7CisjZW5kaWYKIH0KIAotUmVmUHRyPFdlYlhS
U3BhY2U+IFdlYlhSSW5wdXRTb3VyY2U6OmdyaXBTcGFjZSgpIGNvbnN0Cit2b2lkIFdlYlhSSW5w
dXRTb3VyY2U6OnBvbGxFdmVudHMoVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYgZXZl
bnRzKQogewotICAgIHJldHVybiB7IH07CisgICAgaWYgKCFtX2Nvbm5lY3RlZCkgeworICAgICAg
ICAvLyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVjdGVuZCBldmVudCBvbiBhbiBY
UlNlc3Npb24gd2hlbiBvbmUgb2YgaXRzIFhSSW5wdXRTb3VyY2VzIGVuZHMgCisgICAgICAgIC8v
IHdoZW4gYW4gWFJJbnB1dFNvdXJjZSB0aGF0IGhhcyBiZWd1biBhIHByaW1hcnkgc2VsZWN0IGFj
dGlvbiBpcyBkaXNjb25uZWN0ZWQuCisgICAgICAgIGlmIChtX3NlbGVjdFN0YXJ0ZWQpCisgICAg
ICAgICAgICBldmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5zZWxlY3RlbmRF
dmVudCkpOworCisgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc3F1ZWV6
ZWVuZCBldmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiBvbmUgb2YgaXRzIFhSSW5wdXRTb3VyY2Vz
IGVuZHMgCisgICAgICAgIC8vIHdoZW4gYW4gWFJJbnB1dFNvdXJjZSB0aGF0IGhhcyBiZWd1biBh
IHByaW1hcnkgc3F1ZWV6ZSBhY3Rpb24gaXMgZGlzY29ubmVjdGVkLgorICAgICAgICBpZiAobV9z
cXVlZXplU3RhcnRlZCkKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZl
bnROYW1lcygpLnNxdWVlemVlbmRFdmVudCkpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWdhbWVwYWRzLW1v
ZHVsZS8jeHItc3RhbmRhcmQtZ2FtZXBhZC1tYXBwaW5nCisgICAgLy8gQnV0dG9uIGluZGljZXMg
YXJlIGJhc2VkIG9uIHRoZSB4ci1zdGFuZGFyZCBsYXlvdXQuCisgICAgYm9vbCBzZWxlY3RTdGFy
dGVkID0gIW1fc291cmNlLmJ1dHRvbnMuaXNFbXB0eSgpICYmIG1fc291cmNlLmJ1dHRvbnMuZmly
c3QoKS5wcmVzc2VkOworICAgIGJvb2wgc3F1ZWV6ZVN0YXJ0ZWQgPSBtX3NvdXJjZS5idXR0b25z
LnNpemUoKSA+IDEgJiYgbV9zb3VyY2UuYnV0dG9uc1sxXS5wcmVzc2VkOworCisgICAgaWYgKHNl
bGVjdFN0YXJ0ZWQgIT0gbV9zZWxlY3RTdGFydGVkKSB7CisgICAgICAgIGlmIChzZWxlY3RTdGFy
dGVkKSB7CisgICAgICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVj
dHN0YXJ0IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJj
ZXMgYmVnaW5zIGl0cyBwcmltYXJ5IGFjdGlvbi4KKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQo
Y3JlYXRlRXZlbnQoZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0RXZlbnQpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0
ZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMg
ZW5kcyBpdHMgcHJpbWFyeSBhY3Rpb24uCisgICAgICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVT
VCBkaXNwYXRjaCBhIHNlbGVjdCBldmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiBvbmUgb2YgaXRz
IFhSSW5wdXRTb3VyY2VzIGhhcyBmdWxseSBjb21wbGV0ZWQgYSBwcmltYXJ5IGFjdGlvbgorICAg
ICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc2VsZWN0RXZl
bnQpKTsKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZlbnROYW1lcygp
LnNlbGVjdGVuZEV2ZW50KSk7CisgICAgICAgIH0KKyAgICAgICAgbV9zZWxlY3RTdGFydGVkID0g
c2VsZWN0U3RhcnRlZDsKKyAgICB9CisKKyAgICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQgIT0gbV9zcXVl
ZXplU3RhcnRlZCkgeworICAgICAgICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQpIHsKKyAgICAgICAgICAg
IC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc3F1ZWV6ZXN0YXJ0IGV2ZW50IG9uIGFu
IFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgYmVnaW5zIGl0cyBwcmlt
YXJ5IHNxdWVlemUgYWN0aW9uLgorICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVu
dChldmVudE5hbWVzKCkuc3F1ZWV6ZXN0YXJ0RXZlbnQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0ZW5kIGV2ZW50
IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgZW5kcyBpdHMg
cHJpbWFyeSBzcXVlZXplIGFjdGlvbi4KKyAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNU
IGRpc3BhdGNoIGEgc2VsZWN0IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMg
WFJJbnB1dFNvdXJjZXMgaGFzIGZ1bGx5IGNvbXBsZXRlZCBhIHByaW1hcnkgc3F1ZWV6ZSBhY3Rp
b24uCisgICAgICAgICAgICBldmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5z
cXVlZXplRXZlbnQpKTsKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZl
bnROYW1lcygpLnNxdWVlemVlbmRFdmVudCkpOworICAgICAgICB9CisgICAgICAgIG1fc3F1ZWV6
ZVN0YXJ0ZWQgPSBzcXVlZXplU3RhcnRlZDsKKyAgICB9CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBXZWJYUklucHV0U291cmNlOjpwcm9maWxlcygpIGNvbnN0CitSZWY8WFJJbnB1dFNvdXJj
ZUV2ZW50PiBXZWJYUklucHV0U291cmNlOjpjcmVhdGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBu
YW1lKQogewotICAgIHJldHVybiBtX3Byb2ZpbGVzOworICAgIFhSSW5wdXRTb3VyY2VFdmVudDo6
SW5pdCBpbml0OworICAgIGluaXQuZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobV9zZXNzaW9u
LmNvcHlSZWYoKSwgV2ViWFJGcmFtZTo6SXNBbmltYXRpb25GcmFtZTo6Tm8pOworICAgIGluaXQu
aW5wdXRTb3VyY2UgPSBtYWtlUmVmUHRyKCp0aGlzKTsKKworICAgIHJldHVybiBYUklucHV0U291
cmNlRXZlbnQ6OmNyZWF0ZShuYW1lLCBpbml0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaApp
bmRleCA2OGMyOWFiMWNkYjkwNmRiZTE0YmI5NDkyYWIyZmQ4OGI0MWQ0MTEyLi43NjM2MjhiNDM5
MjZlMGE0MDhhNGZlOTlhMzRhMDM4ZTg1YWVmMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYg
RU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorI2luY2x1ZGUgIldlYlhS
U3BhY2UuaCIKICNpbmNsdWRlICJYUkhhbmRlZG5lc3MuaCIKICNpbmNsdWRlICJYUlRhcmdldFJh
eU1vZGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CkBAIC0zNiwyOSArMzgsOTggQEAK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYlhSU3BhY2U7CisjaWYgRU5B
QkxFKEdBTUVQQUQpCitjbGFzcyBHYW1lcGFkOworI2VuZGlmCitjbGFzcyBYUklucHV0U291cmNl
RXZlbnQ7CisKK2NsYXNzIFdlYlhSSW5wdXRTcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhS
SW5wdXRTcGFjZT4sIHB1YmxpYyBXZWJYUlNwYWNlIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFdlYlhSSW5wdXRTcGFjZSk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0
U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGNvbnN0IFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKKyAgICB2aXJ0dWFs
IH5XZWJYUklucHV0U3BhY2UoKTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNw
YWNlPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6ZGVyZWY7
CisKKyAgICBib29sIGlzUG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cG9zZS5pc1Bvc2l0aW9uRW11bGF0ZWQ7IH0KKyAgICB2b2lkIHNldFBvc2UoY29uc3QgUGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkgeyBtX3Bvc2Ug
PSBwb3NlOyB9CisKK3ByaXZhdGU6CisgICAgV2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlUG9zZSYpOworICAgIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5h
dGl2ZU9yaWdpbigpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZp
bmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVm
KCk7IH0KKworICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlIG1fcG9zZTsKK307CisKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKK2NsYXNzIFdlYlhSR2FtZXBhZDogcHVibGljIFBsYXRmb3JtR2FtZXBh
ZCB7CitwdWJsaWM6CisgICAgV2ViWFJHYW1lcGFkKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBj
b25uZWN0VGltZSwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291
cmNlJik7CisKK3ByaXZhdGU6CisgICAgY29uc3QgVmVjdG9yPFNoYXJlZEdhbWVwYWRWYWx1ZT4m
IGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4ZXM7IH0KKyAgICBjb25zdCBW
ZWN0b3I8U2hhcmVkR2FtZXBhZFZhbHVlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9idXR0b25zOyB9CisKKyAgICBWZWN0b3I8U2hhcmVkR2FtZXBhZFZhbHVlPiBtX2F4
ZXM7CisgICAgVmVjdG9yPFNoYXJlZEdhbWVwYWRWYWx1ZT4gbV9idXR0b25zOworfTsKKyNlbmRp
ZgogCiBjbGFzcyBXZWJYUklucHV0U291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJJbnB1
dFNvdXJjZT4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJJbnB1dFNvdXJjZSk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUklucHV0U291cmNlPiBjcmVhdGUoUmVmPFdl
YlhSU3BhY2U+JiYpOworICAgIHVzaW5nIElucHV0U291cmNlID0gUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OklucHV0U291cmNlOworICAgIHVzaW5nIElucHV0U291cmNlQnV0dG9uID0g
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOworCisgICAg
c3RhdGljIFJlZjxXZWJYUklucHV0U291cmNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJT
ZXNzaW9uPiYmLCBkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZSYpOwogICAgIH5X
ZWJYUklucHV0U291cmNlKCk7CiAKLSAgICBYUkhhbmRlZG5lc3MgaGFuZGVkbmVzcygpIGNvbnN0
OwotICAgIFhSVGFyZ2V0UmF5TW9kZSB0YXJnZXRSYXlNb2RlKCkgY29uc3Q7Ci0gICAgY29uc3Qg
V2ViWFJTcGFjZSYgdGFyZ2V0UmF5U3BhY2UoKSBjb25zdDsKLSAgICBSZWZQdHI8V2ViWFJTcGFj
ZT4gZ3JpcFNwYWNlKCkgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb2ZpbGVz
KCkgY29uc3Q7CisgICAgUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2UuaGFuZGxlOyB9CisgICAgWFJIYW5kZWRuZXNzIGhhbmRlZG5l
c3MoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5oYW5kZW5lc3M7IH0KKyAgICBYUlRhcmdldFJh
eU1vZGUgdGFyZ2V0UmF5TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnRhcmdldFJheU1v
ZGU7IH07CisgICAgY29uc3QgV2ViWFJTcGFjZSYgdGFyZ2V0UmF5U3BhY2UoKSBjb25zdCB7cmV0
dXJuIG1fdGFyZ2V0UmF5U3BhY2UuZ2V0KCk7IH07CisgICAgUmVmUHRyPFdlYlhSU3BhY2U+IGdy
aXBTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JpcFNwYWNlOyB9CisgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UucHJvZmlsZXM7IH07
CisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgY29uc3QgR2FtZXBhZCogZ2FtZXBhZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZ2FtZXBhZC5wdHIoKTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHVwZGF0ZShk
b3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZSYpOworICAgIGJvb2wgcmVxdWlyZXNJ
bnB1dFNvdXJjZUNoYW5nZShjb25zdCBJbnB1dFNvdXJjZSYpOworICAgIHZvaWQgZGlzY29ubmVj
dCgpOworICAgIAorICAgIHZvaWQgcG9sbEV2ZW50cyhWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VF
dmVudD4+Jik7CiAKIHByaXZhdGU6Ci0gICAgV2ViWFJJbnB1dFNvdXJjZShSZWY8V2ViWFJTcGFj
ZT4mJik7CisgICAgV2ViWFJJbnB1dFNvdXJjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+
JiYsIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlJik7CisKKyAgICBSZWY8WFJJ
bnB1dFNvdXJjZUV2ZW50PiBjcmVhdGVFdmVudChjb25zdCBBdG9tU3RyaW5nJik7CisKKyAgICBE
b2N1bWVudCYgbV9kb2N1bWVudDsKKyAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247Cisg
ICAgSW5wdXRTb3VyY2UgbV9zb3VyY2U7CisgICAgUmVmPFdlYlhSSW5wdXRTcGFjZT4gbV90YXJn
ZXRSYXlTcGFjZTsKKyAgICBSZWZQdHI8V2ViWFJJbnB1dFNwYWNlPiBtX2dyaXBTcGFjZTsKKyAg
ICBkb3VibGUgbV9jb25uZWN0VGltZSB7IDAgfTsKKyAgICBib29sIG1fY29ubmVjdGVkIHsgdHJ1
ZSB9OworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIFJlZjxHYW1lcGFkPiBtX2dhbWVwYWQ7Cisj
ZW5kaWYKIAotICAgIFhSSGFuZGVkbmVzcyBtX2hhbmRlZG5lc3M7Ci0gICAgWFJUYXJnZXRSYXlN
b2RlIG1fdGFyZ2V0UmF5TW9kZTsKLSAgICBSZWY8V2ViWFJTcGFjZT4gbV90YXJnZXRSYXlTcGFj
ZTsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3Byb2ZpbGVzOworICAgIGJvb2wgbV9zZWxlY3RTdGFy
dGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc3F1ZWV6ZVN0YXJ0ZWQgeyBmYWxzZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNvdXJjZS5pZGwKaW5kZXggMDQ1OWYzZmU0NzA3NTIxMTM3YmY1M2Yx
YTM0NGVkZGQ5OGViZDM2OS4uYzQ1ZjVjZDM2Njg1ZjI0ZTljOWFkZjM1MTZlZmM2NzcyM2Y5YzE5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291
cmNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3Vy
Y2UuaWRsCkBAIC0zNiw0ICszNiw3IEBACiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBXZWJYUlNwYWNlIHRhcmdldFJheVNwYWNlOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25s
eSBhdHRyaWJ1dGUgV2ViWFJTcGFjZT8gZ3JpcFNwYWNlIDsKICAgICBbU2FtZU9iamVjdF0gcmVh
ZG9ubHkgYXR0cmlidXRlIEZyb3plbkFycmF5PERPTVN0cmluZz4gcHJvZmlsZXM7CisKKyAgICAv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8j
eHJpbnB1dHNvdXJjZS1pbnRlcmZhY2UKKyAgICBbQ29uZGl0aW9uYWw9R0FNRVBBRCwgU2FtZU9i
amVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIEdhbWVwYWQ/IGdhbWVwYWQ7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3Bw
CmluZGV4IGM0YzA4NTUzMmJjZDlhYWMyNzM4MDkwYmZhM2ZkZGZlYTQzMzU1ZDMuLjM3Y2VmMWVh
NjkzODBhZmIyN2Q1MGM0YThkNmM3MzRhMmYxNzU4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKQEAgLTI3LDIx
ICsyNywxNTQgQEAKICNpbmNsdWRlICJXZWJYUklucHV0U291cmNlQXJyYXkuaCIKIAogI2lmIEVO
QUJMRShXRUJYUikKLQorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJXZWJYUklu
cHV0U291cmNlLmgiCisjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCisjaW5jbHVkZSAiWFJJbnB1
dFNvdXJjZUV2ZW50LmgiCisjaW5jbHVkZSAiWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oIgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSW5wdXRTb3VyY2VBcnJheSk7CiAK
KworUmVmPFdlYlhSSW5wdXRTb3VyY2VBcnJheT4gV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24pCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJjZUFycmF5KGRvY3VtZW50LCBzZXNzaW9u
KSk7Cit9CisKK1dlYlhSSW5wdXRTb3VyY2VBcnJheTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5KERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKQorICAgIDogbV9kb2N1bWVu
dChkb2N1bWVudCkKKyAgICAsIG1fc2Vzc2lvbihzZXNzaW9uKQoreworfQorCitXZWJYUklucHV0
U291cmNlQXJyYXk6On5XZWJYUklucHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7CisKIHVuc2ln
bmVkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbV9pbnB1dFNvdXJjZXMuc2l6ZSgpOworfQorCitXZWJYUklucHV0U291
cmNlKiBXZWJYUklucHV0U291cmNlQXJyYXk6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faW5wdXRTb3VyY2VzLmF0KGluZGV4KS5wdHIoKTsKK30KKwordm9pZCBX
ZWJYUklucHV0U291cmNlQXJyYXk6OmNsZWFyKCkKK3sKKyAgICBtX2lucHV0U291cmNlcy5jbGVh
cigpOworfQorCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNsaXN0
LW9mLWFjdGl2ZS14ci1pbnB1dC1zb3VyY2VzCit2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6
dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3Vy
Y2VzKQoreworICAgIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+IGFkZGVkOworICAgIFZl
Y3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+IHJlbW92ZWQ7CisgICAgVmVjdG9yPFJlZjxYUklu
cHV0U291cmNlRXZlbnQ+PiBpbnB1dEV2ZW50czsKKworICAgIGhhbmRsZVJlbW92ZWRJbnB1dFNv
dXJjZXMoaW5wdXRTb3VyY2VzLCByZW1vdmVkLCBpbnB1dEV2ZW50cyk7CisgICAgaGFuZGxlQWRk
ZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXModGltZXN0YW1wLCBpbnB1dFNvdXJjZXMsIGFkZGVkLCBy
ZW1vdmVkLCBpbnB1dEV2ZW50cyk7CisKKyAgICBpZiAoIWFkZGVkLmlzRW1wdHkoKSB8fCAhcmVt
b3ZlZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2gg
YW4gaW5wdXRzb3VyY2VzY2hhbmdlIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIHRoZSBzZXNz
aW9u4oCZcyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2VzIGhhcyBjaGFuZ2VkLgorICAg
ICAgICBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50OjpJbml0IGluaXQ7CisgICAgICAgIGluaXQu
c2Vzc2lvbiA9IG1ha2VSZWZQdHIobV9zZXNzaW9uKTsKKyAgICAgICAgaW5pdC5hZGRlZCA9IGFk
ZGVkLm1hcChbXShhdXRvJiBpbnB1dCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIo
aW5wdXQuZ2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgaW5pdC5yZW1vdmVkID0gcmVtb3Zl
ZC5tYXAoW10oYXV0byYgaW5wdXQpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKGlu
cHV0LmdldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGV2ZW50ID0g
WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnB1dHNvdXJj
ZXNjaGFuZ2VFdmVudCwgaW5pdCk7CisgICAgICAgIG1fc2Vzc2lvbi5xdWV1ZVRhc2tUb0Rpc3Bh
dGNoRXZlbnQobV9zZXNzaW9uLCBUYXNrU291cmNlOjpXZWJYUiwgV1RGTW92ZShldmVudCkpOwor
ICAgIH0KKworICAgIGlmICghaW5wdXRFdmVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIFdo
ZW4gdGhlIHVzZXIgYWdlbnQgaGFzIHRvIGZpcmUgYW4gaW5wdXQgc291cmNlIGV2ZW50IHdpdGgg
bmFtZSBuYW1lLCBYUkZyYW1lIGZyYW1lLCBhbmQgWFJJbnB1dFNvdXJjZSBzb3VyY2UgaXQgTVVT
VCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgLy8gMS4gQ3JlYXRlIGFuIFhSSW5w
dXRTb3VyY2VFdmVudCBldmVudCB3aXRoIHR5cGUgbmFtZSwgZnJhbWUgZnJhbWUsIGFuZCBpbnB1
dFNvdXJjZSBzb3VyY2UuCisgICAgICAgIC8vIDIuIFNldCBmcmFtZeKAmXMgYWN0aXZlIGJvb2xl
YW4gdG8gdHJ1ZS4KKyAgICAgICAgLy8gMy4gQXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJhbWUu
CisgICAgICAgIC8vIDQuIERpc3BhdGNoIGV2ZW50IG9uIGZyYW1l4oCZcyBzZXNzaW9uCisgICAg
ICAgIC8vIDUuIFNldCBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gdG8gZmFsc2UuCisKKyAgICAg
ICAgZm9yIChhdXRvJiBldmVudCA6IGlucHV0RXZlbnRzKSB7CisgICAgICAgICAgICBldmVudC0+
c2V0RnJhbWVBY3RpdmUodHJ1ZSk7CisgICAgICAgICAgICBtX3Nlc3Npb24ucXVldWVUYXNrVG9E
aXNwYXRjaEV2ZW50KG1fc2Vzc2lvbiwgVGFza1NvdXJjZTo6V2ViWFIsIGV2ZW50LmNvcHlSZWYo
KSk7CisgICAgICAgICAgICBtX3Nlc3Npb24ucXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKG1f
c2Vzc2lvbiwgVGFza1NvdXJjZTo6V2ViWFIsIFtldmVudCA9IFdURk1vdmUoZXZlbnQpXSgpIHsK
KyAgICAgICAgICAgICAgICBldmVudC0+c2V0RnJhbWVBY3RpdmUoZmFsc2UpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5n
aXRodWIuaW8vd2VieHIvI2xpc3Qtb2YtYWN0aXZlLXhyLWlucHV0LXNvdXJjZXMKK3ZvaWQgV2Vi
WFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVSZW1vdmVkSW5wdXRTb3VyY2VzKGNvbnN0IElucHV0
U291cmNlTGlzdCYgaW5wdXRTb3VyY2VzLCBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiYg
cmVtb3ZlZCwgVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYgaW5wdXRFdmVudHMpCit7
CisgICAgLy8gV2hlbiBhbnkgcHJldmlvdXNseSBhZGRlZCBYUiBpbnB1dCBzb3VyY2VzIGFyZSBu
byBsb25nZXIgYXZhaWxhYmxlIGZvciBYUlNlc3Npb24gc2Vzc2lvbiwgdGhlIHVzZXIgYWdlbnQg
TVVTVCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLiBJZiBzZXNzaW9uJ3MgcHJv
bWlzZSByZXNvbHZlZCBmbGFnIGlzIG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIC8v
IDIuIExldCByZW1vdmVkIGJlIGEgbmV3IGxpc3QuCisgICAgLy8gMy4gRm9yIGVhY2ggWFIgaW5w
dXQgc291cmNlIHRoYXQgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZToKKyAgICAvLyAgMy4xIExldCBp
bnB1dFNvdXJjZSBiZSB0aGUgWFJJbnB1dFNvdXJjZSBpbiBzZXNzaW9uJ3MgbGlzdCBvZiBhY3Rp
dmUgWFIgaW5wdXQgc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIFhSIGlucHV0IHNvdXJjZS4K
KyAgICAvLyAgMy4yIEFkZCBpbnB1dFNvdXJjZSB0byByZW1vdmVkLgorICAgIGZvciAoaW50IGkg
PSBtX2lucHV0U291cmNlcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICBhdXRv
IGhhbmRsZSA9IG1faW5wdXRTb3VyY2VzW2ldLT5oYW5kbGUoKTsKKyAgICAgICAgaWYgKGlucHV0
U291cmNlcy5maW5kTWF0Y2hpbmcoW2hhbmRsZV0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5o
YW5kbGUgPT0gaGFuZGxlOyB9KSA9PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgICAgICByZW1v
dmVkLmFwcGVuZChtX2lucHV0U291cmNlc1tpXS5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9p
bnB1dFNvdXJjZXNbaV0tPmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgIG1faW5wdXRTb3VyY2Vz
W2ldLT5wb2xsRXZlbnRzKGlucHV0RXZlbnRzKTsKKyAgICAgICAgICAgIG1faW5wdXRTb3VyY2Vz
LnJlbW92ZShpKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAotV2ViWFJJbnB1dFNvdXJjZSogV2Vi
WFJJbnB1dFNvdXJjZUFycmF5OjppdGVtKHVuc2lnbmVkKSBjb25zdAorLy8gaHR0cHM6Ly9pbW1l
cnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jbGlzdC1vZi1hY3RpdmUteHItaW5wdXQtc291cmNl
cwordm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZUFkZGVkT3JVcGRhdGVkSW5wdXRT
b3VyY2VzKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3Vy
Y2VzLCBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiYgYWRkZWQsIFZlY3RvcjxSZWY8V2Vi
WFJJbnB1dFNvdXJjZT4+JiByZW1vdmVkLCBWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+
JiBpbnB1dEV2ZW50cykKIHsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIGlu
cHV0U291cmNlIDogaW5wdXRTb3VyY2VzKSB7CisgICAgICAgIGF1dG8gaW5kZXggPSBtX2lucHV0
U291cmNlcy5maW5kTWF0Y2hpbmcoWyZpbnB1dFNvdXJjZV0oYXV0byYgaXRlbSkgeyByZXR1cm4g
aXRlbS0+aGFuZGxlKCkgPT0gaW5wdXRTb3VyY2UuaGFuZGxlOyB9KTsKKyAgICAgICAgaWYgKGlu
ZGV4ID09IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gbmV3IFhSIGlucHV0
IHNvdXJjZXMgYmVjb21lIGF2YWlsYWJsZSBmb3IgWFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2Vy
IGFnZW50IE1VU1QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgICAgICAvLyAxLiBJ
ZiBzZXNzaW9uJ3MgcHJvbWlzZSByZXNvbHZlZCBmbGFnIGlzIG5vdCBzZXQsIGFib3J0IHRoZXNl
IHN0ZXBzLgorICAgICAgICAgICAgLy8gMi4gTGV0IGFkZGVkIGJlIGEgbmV3IGxpc3QuCisgICAg
ICAgICAgICAvLyAzLiBGb3IgZWFjaCBuZXcgWFIgaW5wdXQgc291cmNlOgorICAgICAgICAgICAg
Ly8gICAzLjEgTGV0IGlucHV0U291cmNlIGJlIGEgbmV3IFhSSW5wdXRTb3VyY2UgaW4gdGhlIHJl
bGV2YW50IHJlYWxtIG9mIHRoaXMgWFJTZXNzaW9uLgorICAgICAgICAgICAgLy8gICAzLjIgQWRk
IGlucHV0U291cmNlIHRvIGFkZGVkLgorICAgICAgICAgICAgYXV0byBpbnB1dCA9IFdlYlhSSW5w
dXRTb3VyY2U6OmNyZWF0ZShtX2RvY3VtZW50LCBtX3Nlc3Npb24sIHRpbWVzdGFtcCwgaW5wdXRT
b3VyY2UpOworICAgICAgICAgICAgYWRkZWQuYXBwZW5kKGlucHV0LmNvcHlSZWYoKSk7CisgICAg
ICAgICAgICBpbnB1dC0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7CisgICAgICAgICAgICBtX2lu
cHV0U291cmNlcy5hcHBlbmQoV1RGTW92ZShpbnB1dCkpOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKworICAgICAgICAvLyBXaGVuIHRoZSBoYW5kZWRuZXNzLCB0YXJnZXRSYXlN
b2RlLCBwcm9maWxlcywgb3IgcHJlc2VuY2Ugb2YgYSBncmlwU3BhY2UgZm9yIGFueSBYUiBpbnB1
dCBzb3VyY2VzIGNoYW5nZSBmb3IgWFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2VyIGFnZW50IE1V
U1QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMKKyAgICAgICAgLy8gMS4gSWYgc2Vzc2lvbuKAmXMg
cHJvbWlzZSByZXNvbHZlZCBmbGFnIGlzIG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgorICAg
ICAgICAvLyAyLiBMZXQgYWRkZWQgYmUgYSBuZXcgbGlzdC4KKyAgICAgICAgLy8gMy4gTGV0IHJl
bW92ZWQgYmUgYSBuZXcgbGlzdC4KKyAgICAgICAgLy8gNC4gRm9yIGVhY2ggY2hhbmdlZCBYUiBp
bnB1dCBzb3VyY2U6CisgICAgICAgIC8vICA0LjEgTGV0IG9sZElucHV0U291cmNlIGJlIHRoZSBY
UklucHV0U291cmNlIGluIHNlc3Npb24ncyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2Vz
IHByZXZpb3VzbHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBYUiBpbnB1dCBzb3VyY2UuCisgICAgICAg
IC8vICA0LjEgTGV0IG5ld0lucHV0U291cmNlIGJlIGEgbmV3IFhSSW5wdXRTb3VyY2UgaW4gdGhl
IHJlbGV2YW50IHJlYWxtIG9mIHNlc3Npb24uCisgICAgICAgIC8vICA0LjEgQWRkIG9sZElucHV0
U291cmNlIHRvIHJlbW92ZWQuCisgICAgICAgIC8vICA0LjEgQWRkIG5ld0lucHV0U291cmNlIHRv
IGFkZGVkLgorICAgICAgICBhdXRvJiBpbnB1dCA9IG1faW5wdXRTb3VyY2VzW2luZGV4XTsKKwor
ICAgICAgICBpZiAoaW5wdXQtPnJlcXVpcmVzSW5wdXRTb3VyY2VDaGFuZ2UoaW5wdXRTb3VyY2Up
KSB7CisgICAgICAgICAgICByZW1vdmVkLmFwcGVuZChpbnB1dC5jb3B5UmVmKCkpOworICAgICAg
ICAgICAgaW5wdXQtPmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgIGlucHV0LT5wb2xsRXZlbnRz
KGlucHV0RXZlbnRzKTsKKyAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzLnJlbW92ZShpbmRleCk7
CisKKyAgICAgICAgICAgIGF1dG8gbmV3SW5wdXRTb3VyY2UgPSBXZWJYUklucHV0U291cmNlOjpj
cmVhdGUobV9kb2N1bWVudCwgbV9zZXNzaW9uLCB0aW1lc3RhbXAsIGlucHV0U291cmNlKTsKKyAg
ICAgICAgICAgIGFkZGVkLmFwcGVuZChuZXdJbnB1dFNvdXJjZS5jb3B5UmVmKCkpOworICAgICAg
ICAgICAgbmV3SW5wdXRTb3VyY2UtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOworICAgICAgICAg
ICAgbV9pbnB1dFNvdXJjZXMuYXBwZW5kKFdURk1vdmUobmV3SW5wdXRTb3VyY2UpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlucHV0LT51cGRhdGUodGltZXN0YW1wLCBpbnB1dFNv
dXJjZSk7CisgICAgICAgICAgICBpbnB1dC0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7CisgICAg
ICAgIH0KKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oCmluZGV4IDQz
YjlkMWEwZmYxZWU1N2Q1OTRkZWY5MjEzYzA2MzA4ODM4MzZkNjIuLmU5MjVmOTJmMjM3N2VlNzA0
ZWQ3OWQ2OTIyMTA3MzcxMTY2ZDJiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaApAQCAtMjcsMjUgKzI3LDQwIEBACiAK
ICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xh
c3MgV2ViWFJJbnB1dFNvdXJjZTsKK2NsYXNzIFhSSW5wdXRTb3VyY2VFdmVudDsKK2NsYXNzIFdl
YlhSU2Vzc2lvbjsKIAogY2xhc3MgV2ViWFJJbnB1dFNvdXJjZUFycmF5IDogcHVibGljIFJlZkNv
dW50ZWQ8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChXZWJYUklucHV0U291cmNlQXJyYXkpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViWFJJ
bnB1dFNvdXJjZUFycmF5PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5w
dXRTb3VyY2VBcnJheSgpKTsgfQotICAgIH5XZWJYUklucHV0U291cmNlQXJyYXkoKSA9IGRlZmF1
bHQ7CisgICAgdXNpbmcgSW5wdXRTb3VyY2VMaXN0ID0gVmVjdG9yPFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZT47CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U291
cmNlQXJyYXk+IGNyZWF0ZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYpOworICAgIH5XZWJYUklu
cHV0U291cmNlQXJyYXkoKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIFdl
YlhSSW5wdXRTb3VyY2UqIGl0ZW0odW5zaWduZWQpIGNvbnN0OwogCisgICAgdm9pZCBjbGVhcigp
OworICAgIHZvaWQgdXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlz
dCYpOworCiBwcml2YXRlOgotICAgIFdlYlhSSW5wdXRTb3VyY2VBcnJheSgpID0gZGVmYXVsdDsK
KyAgICBXZWJYUklucHV0U291cmNlQXJyYXkoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mKTsKKwor
ICAgIHZvaWQgaGFuZGxlUmVtb3ZlZElucHV0U291cmNlcyhjb25zdCBJbnB1dFNvdXJjZUxpc3Qm
LCBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiYsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJj
ZUV2ZW50Pj4mKTsKKyAgICB2b2lkIGhhbmRsZUFkZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRv
dWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYsIFZlY3RvcjxSZWY8V2ViWFJJ
bnB1dFNvdXJjZT4+JiwgVmVjdG9yPFJlZjxXZWJYUklucHV0U291cmNlPj4mLCBWZWN0b3I8UmVm
PFhSSW5wdXRTb3VyY2VFdmVudD4+Jik7CisKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKKyAg
ICBXZWJYUlNlc3Npb24mIG1fc2Vzc2lvbjsKKyAgICBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3Vy
Y2U+PiBtX2lucHV0U291cmNlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkxheWVyLmgKaW5kZXggMDAzZjU2YzdkNDQxZTc2
NGNhNjM2Njk1MjY4ODBmNzYyOTUzODcwZC4uZGZjMTM4MzBjM2ZjOWZmZTA5NjA3MjMzNDhmMWQ3
YjgxYTgyZWMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UkxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkxheWVyLmgK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
QEAgLTQ0LDYgKzQ1LDkgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJMYXll
cj46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSTGF5ZXI+OjpkZXJlZjsKIAorICAg
IHZpcnR1YWwgdm9pZCBzdGFydEZyYW1lKGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhJikgPSAwOworICAgIHZpcnR1YWwgUGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllciBlbmRGcmFt
ZSgpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFdlYlhSTGF5ZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U2Vzc2lvbi5jcHAKaW5kZXggZmYxZWIxZmEwZmU2Nzk0MWYxN2ZlMzQzMDhhY2M0MjYxMTFjNTIw
Zi4uY2FmODQxZDhjNmYwZWEwMjIxYjg1YTcwZDdmMGMxODdjN2U4ZTNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBSZWY8V2ViWFJTZXNzaW9uPiBXZWJYUlNlc3Npb246OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYlhSU3lzdGVtJiBzeXN0ZW0sCiAKIFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kZSBtb2Rl
LCBQbGF0Zm9ybVhSOjpEZXZpY2UmIGRldmljZSwgRmVhdHVyZUxpc3QmJiByZXF1ZXN0ZWRGZWF0
dXJlcykKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCi0gICAgLCBtX2lucHV0U291
cmNlcyhXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSgpKQorICAgICwgbV9pbnB1dFNvdXJj
ZXMoV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzKSkKICAgICAs
IG1feHJTeXN0ZW0oc3lzdGVtKQogICAgICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX2RldmljZSht
YWtlV2Vha1B0cihkZXZpY2UpKQpAQCAtNjIsOCArNjIsOCBAQCBXZWJYUlNlc3Npb246OldlYlhS
U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU3lzdGVtJiBzeXN0ZW0sIFhSU2Vzc2lv
bk1vZAogICAgICwgbV90aW1lT3JpZ2luKE1vbm90b25pY1RpbWU6Om5vdygpKQogICAgICwgbV92
aWV3cyhkZXZpY2Uudmlld3MobW9kZSkpCiB7Ci0gICAgbV9kZXZpY2UtPmluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyhtb2RlKTsKICAgICBtX2RldmljZS0+c2V0VHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQobWFrZVdlYWtQdHIoKnRoaXMpKTsKKyAgICBtX2RldmljZS0+aW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKG1vZGUpOwogCiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUt
d2ViLmdpdGh1Yi5pby93ZWJ4ci8jcmVmLWZvci1kb20teHJyZWZlcmVuY2VzcGFjZXR5cGUtdmll
d2VyJUUyJTkxJUEyCiAgICAgLy8gRXZlcnkgc2Vzc2lvbiBNVVNUIHN1cHBvcnQgdmlld2VyIFhS
UmVmZXJlbmNlU3BhY2VzLgpAQCAtMzE1LDYgKzMxNSwxMSBAQCBib29sIFdlYlhSU2Vzc2lvbjo6
c3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcoKSBjb25zdAogICAgIHJldHVybiBtX21vZGUgPT0gWFJT
ZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIgJiYgbV9kZXZpY2UtPnN1cHBvcnRzVmlld3BvcnRTY2Fs
aW5nKCk7CiB9CiAKK2Jvb2wgV2ViWFJTZXNzaW9uOjppc1Bvc2l0aW9uRW11bGF0ZWQoKSBjb25z
dAoreworICAgIHJldHVybiBtX2ZyYW1lRGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQgfHwgIW1fZnJh
bWVEYXRhLmlzUG9zaXRpb25WYWxpZDsKK30KKwogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci8jc2h1dC1kb3duLXRoZS1zZXNzaW9uCiB2b2lkIFdlYlhSU2Vzc2lvbjo6
c2h1dGRvd24oSW5pdGlhdGVkQnlTeXN0ZW0gaW5pdGlhdGVkQnlTeXN0ZW0pCiB7CkBAIC0zMzgs
NiArMzQzLDggQEAgdm9pZCBXZWJYUlNlc3Npb246OnNodXRkb3duKEluaXRpYXRlZEJ5U3lzdGVt
IGluaXRpYXRlZEJ5U3lzdGVtKQogICAgIC8vIDQuIFJlbW92ZSBzZXNzaW9uIGZyb20gdGhlIGxp
c3Qgb2YgaW5saW5lIHNlc3Npb25zLgogICAgIG1feHJTeXN0ZW0uc2Vzc2lvbkVuZGVkKCp0aGlz
KTsKIAorICAgIG1faW5wdXRTb3VyY2VzLT5jbGVhcigpOworCiAgICAgaWYgKGluaXRpYXRlZEJ5
U3lzdGVtID09IEluaXRpYXRlZEJ5U3lzdGVtOjpZZXMpIHsKICAgICAgICAgLy8gSWYgd2UgZ2V0
IGhlcmUsIHRoZSBzZXNzaW9uIHRlcm1pbmF0aW9uIHdhcyB0cmlnZ2VyZWQgYnkgdGhlIHN5c3Rl
bSByYXRoZXIgdGhhbgogICAgICAgICAvLyB2aWEgWFJTZXNzaW9uLmVuZCgpLiBTaW5jZSB0aGUg
c3lzdGVtIGhhcyBjb21wbGV0ZWQgdGhlIHNlc3Npb24gc2h1dGRvd24sIHdlIGNhbgpAQCAtNDEx
LDYgKzQxOCwyNSBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6c3RvcCgpCiB7CiB9CiAKK3ZvaWQgV2Vi
WFJTZXNzaW9uOjpzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyhWZWN0b3I8UGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiYmIGlucHV0U291cmNlcykKK3sK
KyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJzeXN0
ZW0tcmVxdWVzdHNlc3Npb24KKyAgICAvLyA1LjQuMTAgUXVldWUgYSB0YXNrIHRvIHBlcmZvcm0g
dGhlIGZvbGxvd2luZyBzdGVwczogTk9URTogVGhlc2Ugc3RlcHMgZW5zdXJlIHRoYXQgaW5pdGlh
bCBpbnB1dHNvdXJjZXNjaGFuZ2UKKyAgICAvLyBldmVudHMgb2NjdXIgYWZ0ZXIgdGhlIGluaXRp
YWwgc2Vzc2lvbiBpcyByZXNvbHZlZC4KKyAgICAvLyAgICAgMS4gU2V0IHNlc3Npb24ncyBwcm9t
aXNlIHJlc29sdmVkIGZsYWcgdG8gdHJ1ZS4KKyAgICAvLyAgICAgMi4gTGV0IHNvdXJjZXMgYmUg
YW55IGV4aXN0aW5nIGlucHV0IHNvdXJjZXMgYXR0YWNoZWQgdG8gc2Vzc2lvbi4KKyAgICAvLyAg
ICAgMy4gSWYgc291cmNlcyBpcyBub24tZW1wdHksIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVw
czoKKyAgICAvLyAgICAgICAgMS4gU2V0IHNlc3Npb24ncyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1
dCBzb3VyY2VzIHRvIHNvdXJjZXMuCisgICAgLy8gICAgICAgIDIuIEZpcmUgYW4gWFJJbnB1dFNv
dXJjZXNDaGFuZ2VFdmVudCBuYW1lZCBpbnB1dHNvdXJjZXNjaGFuZ2Ugb24gc2Vzc2lvbiB3aXRo
IGFkZGVkIHNldCB0byBzb3VyY2VzLgorCisgICAgYXV0byB0aW1lc3RhbXAgPSAoTW9ub3Rvbmlj
VGltZTo6bm93KCkgLSBtX3RpbWVPcmlnaW4pLm1pbGxpc2Vjb25kcygpOworCisgICAgcXVldWVU
YXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3RoaXMsIHRp
bWVzdGFtcCwgaW5wdXRTb3VyY2VzID0gV1RGTW92ZShpbnB1dFNvdXJjZXMpXSgpIG11dGFibGUg
eworICAgICAgICBtX2lucHV0UHJvbWlzZVJlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgbV9pbnB1
dFNvdXJjZXMtPnVwZGF0ZSh0aW1lc3RhbXAsIGlucHV0U291cmNlcyk7CisgICAgfSk7Cit9CisK
IHZvaWQgV2ViWFJTZXNzaW9uOjpzZXNzaW9uRGlkRW5kKCkKIHsKICAgICAvLyBUaGlzIGNhbiBi
ZSBjYWxsZWQgYXMgYSByZXN1bHQgb2YgZmluaXNoaW5nIHRoZSBzaHV0ZG93biBpbml0aWF0ZWQK
QEAgLTUxNCw3ICs1NDAsMTEgQEAgdm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCiAgICAgICAgICAgICBhcHBseVBlbmRp
bmdSZW5kZXJTdGF0ZSgpOwogCiAgICAgICAgIC8vIDYuIElmIHRoZSBmcmFtZSBzaG91bGQgYmUg
cmVuZGVyZWQgZm9yIHNlc3Npb246Ci0gICAgICAgIGlmIChmcmFtZVNob3VsZEJlUmVuZGVyZWQo
KSkgeworICAgICAgICBpZiAoZnJhbWVTaG91bGRCZVJlbmRlcmVkKCkgJiYgbV9mcmFtZURhdGEu
c2hvdWxkUmVuZGVyKSB7CisgICAgICAgICAgICAvLyBQcmVwYXJlIGFsbCBsYXllcnMgZm9yIHJl
bmRlcgorICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbW1lcnNpdmVW
ciAmJiBtX2FjdGl2ZVJlbmRlclN0YXRlLT5iYXNlTGF5ZXIoKSkKKyAgICAgICAgICAgICAgICBt
X2FjdGl2ZVJlbmRlclN0YXRlLT5iYXNlTGF5ZXIoKS0+c3RhcnRGcmFtZShtX2ZyYW1lRGF0YSk7
CisKICAgICAgICAgICAgIC8vIDYuMS5TZXQgc2Vzc2lvbuKAmXMgbGlzdCBvZiBjdXJyZW50bHkg
cnVubmluZyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzIHRvIGJlIHNlc3Npb27igJlzIGxpc3Qg
b2YgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcy4KICAgICAgICAgICAgIC8vIDYuMi5TZXQgc2Vz
c2lvbuKAmXMgbGlzdCBvZiBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzIHRvIHRoZSBlbXB0eSBs
aXN0LgogICAgICAgICAgICAgYXV0byBjYWxsYmFja3MgPSBtX2NhbGxiYWNrczsKQEAgLTUyMyw2
ICs1NTMsOSBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkKICAgICAgICAgICAgIGZyYW1lLT5zZXRBY3RpdmUodHJ1
ZSk7CiAKICAgICAgICAgICAgIC8vIDYuNC5BcHBseSBmcmFtZSB1cGRhdGVzIGZvciBmcmFtZS4K
KyAgICAgICAgICAgIGlmIChtX2lucHV0UHJvbWlzZVJlc29sdmVkKQorICAgICAgICAgICAgICAg
IG1faW5wdXRTb3VyY2VzLT51cGRhdGUobm93LCBmcmFtZURhdGEuaW5wdXRTb3VyY2VzKTsKKwog
ICAgICAgICAgICAgZnJhbWUtPnNldEZyYW1lRGF0YShXVEZNb3ZlKGZyYW1lRGF0YSkpOwogCiAg
ICAgICAgICAgICAvLyA2LjUuRm9yIGVhY2ggZW50cnkgaW4gc2Vzc2lvbuKAmXMgbGlzdCBvZiBj
dXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzLCBpbiBvcmRlcjoKQEAg
LTU0NSwxMCArNTc4LDE4IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpvbkZyYW1lKFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhJiYgZnJhbWVEYXRhKQogICAgICAgICAgICAgLy8gSWYgdGhlIHNl
c3Npb24gaXMgZW5kZWQsIG1fYW5pbWF0aW9uRnJhbWUtPnNldEFjdGl2ZSBmYWxzZSBpcyBzZXQg
aW4gc2h1dGRvd24oKS4KICAgICAgICAgICAgIGZyYW1lLT5zZXRBY3RpdmUoZmFsc2UpOwogCi0g
ICAgICAgICAgICBpZiAoIW1fY2FsbGJhY2tzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBy
ZXF1ZXN0RnJhbWUoKTsKKworICAgICAgICAgICAgLy8gU3VibWl0IGN1cnJlbnQgZnJhbWUgbGF5
ZXJzIHRvIHRoZSBkZXZpY2UuCisgICAgICAgICAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNl
OjpMYXllcj4gZnJhbWVMYXllcnM7CisgICAgICAgICAgICBpZiAobV9tb2RlID09IFhSU2Vzc2lv
bk1vZGU6OkltbWVyc2l2ZVZyICYmIG1fYWN0aXZlUmVuZGVyU3RhdGUtPmJhc2VMYXllcigpKQor
ICAgICAgICAgICAgICAgIGZyYW1lTGF5ZXJzLmFwcGVuZChtX2FjdGl2ZVJlbmRlclN0YXRlLT5i
YXNlTGF5ZXIoKS0+ZW5kRnJhbWUoKSk7CisKKyAgICAgICAgICAgIG1fZGV2aWNlLT5zdWJtaXRG
cmFtZShXVEZNb3ZlKGZyYW1lTGF5ZXJzKSk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoIW1f
Y2FsbGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlcXVlc3RGcmFtZSgpOworCiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCmlu
ZGV4IGRjNTA4YWNkYTFlMDI0ZWYwYWZiZmFlYjYwNDllOTNjNGI4NDgyYjMuLjg5MWQ4OWFhODdh
ODAzOWNmOWY0ODE2Zjg2MTZjOGQzNzM4OTZhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlNlc3Npb24uaApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAgICAgWFJW
aXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CiAgICAgY29uc3QgV2ViWFJS
ZW5kZXJTdGF0ZSYgcmVuZGVyU3RhdGUoKSBjb25zdDsKICAgICBjb25zdCBXZWJYUklucHV0U291
cmNlQXJyYXkmIGlucHV0U291cmNlcygpIGNvbnN0OworICAgIFBsYXRmb3JtWFI6OkRldmljZSog
ZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0KIAogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHVwZGF0ZVJlbmRlclN0YXRlKGNvbnN0IFhSUmVuZGVyU3RhdGVJbml0Jik7CiAg
ICAgdm9pZCByZXF1ZXN0UmVmZXJlbmNlU3BhY2UoWFJSZWZlcmVuY2VTcGFjZVR5cGUsIFJlcXVl
c3RSZWZlcmVuY2VTcGFjZVByb21pc2UmJik7CkBAIC04Myw2ICs4NCw3IEBAIHB1YmxpYzoKICAg
ICBJbnRTaXplIG5hdGl2ZVdlYkdMRnJhbWVidWZmZXJSZXNvbHV0aW9uKCkgY29uc3Q7CiAgICAg
SW50U2l6ZSByZWNvbW1lbmRlZFdlYkdMRnJhbWVidWZmZXJSZXNvbHV0aW9uKCkgY29uc3Q7CiAg
ICAgYm9vbCBzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpIGNvbnN0OyAKKyAgICBib29sIGlzUG9z
aXRpb25FbXVsYXRlZCgpIGNvbnN0OwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CkBAIC0x
MTAsNiArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAogICAg
IC8vIFBsYXRmb3JtWFI6OlRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50CisgICAgdm9pZCBzZXNz
aW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyhWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OklucHV0U291cmNlPiYmKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25EaWRFbmQo
KSBmaW5hbDsKIAogICAgIGVudW0gY2xhc3MgSW5pdGlhdGVkQnlTeXN0ZW0gOiBib29sIHsgTm8s
IFllcyB9OwpAQCAtMTUxLDYgKzE1NCw5IEBAIHByaXZhdGU6CiAgICAgLy8gSW4gbWV0ZXJzLgog
ICAgIGRvdWJsZSBtX21pbmltdW1OZWFyQ2xpcFBsYW5lIHsgMC4xIH07CiAgICAgZG91YmxlIG1f
bWF4aW11bUZhckNsaXBQbGFuZSB7IDEwMDAuMCB9OworCisgICAgLy8gaHR0cHM6Ly9pbW1lcnNp
dmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jeHJzZXNzaW9uLXByb21pc2UtcmVzb2x2ZWQKKyAgICBi
b29sIG1faW5wdXRQcm9taXNlUmVzb2x2ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAK
aW5kZXggZmE4ODFkNGJiYjRmNTUxYmQ2YTMyODI5MmIwMjI5ZWExN2Q5NDlmOS4uMTE5MjE0MTg5
ZmMyMDFkODUxMzQ0ZGViMGQzMTZkMzlmNDc4YTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwCkBAIC01NCw2ICs1NCwxMSBAQCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBXZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4oKSBjb25zdAogfQogCiAKK2Jvb2wg
V2ViWFJTcGFjZTo6aXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Vz
c2lvbigpLmlzUG9zaXRpb25FbXVsYXRlZCgpOworfQorCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoV2ViWFJWaWV3ZXJTcGFjZSk7CiAKIFdlYlhSVmlld2VyU3BhY2U6OldlYlhSVmlld2Vy
U3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCmluZGV4IDRhOWRiZWZkZDNiNTQ3Zjhh
MDYyM2QyNjU2NDlkNmY5MGJiOWJmNGEuLmQ4Zjg4ZWE1OGI5NTg0NTE4ZDQ3NjU0MGVkYzhkZGRi
MTk2NzlkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJT
cGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCkBA
IC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lv
bigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9y
aWdpbigpIGNvbnN0ID0gMDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBlZmZlY3RpdmVPcmln
aW4oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5
c3RlbS5jcHAKaW5kZXggMDliYzhiZTU2MmU2ODI3MzQ1ZTM0MWM1ZjExOTM5Yjk1OTAyNWIxNy4u
MGMyZTQzNDM3YzgxMDMyZGI0NDZmMWNhNmFhZWEyZjBjODUyZWJmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAgLTQzOCwxNCArNDM4LDcgQEAg
dm9pZCBXZWJYUlN5c3RlbTo6cmVxdWVzdFNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBYUlNl
c3Npb25Nb2RlIG1vZGUsIGNvbnN0IFgKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1vdmUo
c2Vzc2lvbikpOwogICAgICAgICByZWplY3RQcm9taXNlV2l0aE5vdFN1cHBvcnRlZEVycm9yLnJl
bGVhc2UoKTsKIAotICAgICAgICAvLyBGSVhNRToKLSAgICAgICAgLy8gNS40LjEwIFF1ZXVlIGEg
dGFzayB0byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6IE5PVEU6IFRoZXNlIHN0ZXBzIGVu
c3VyZSB0aGF0IGluaXRpYWwgaW5wdXRzb3VyY2VzY2hhbmdlCi0gICAgICAgIC8vIGV2ZW50cyBv
Y2N1ciBhZnRlciB0aGUgaW5pdGlhbCBzZXNzaW9uIGlzIHJlc29sdmVkLgotICAgICAgICAvLyAg
ICAgMS4gU2V0IHNlc3Npb24ncyBwcm9taXNlIHJlc29sdmVkIGZsYWcgdG8gdHJ1ZS4KLSAgICAg
ICAgLy8gICAgIDIuIExldCBzb3VyY2VzIGJlIGFueSBleGlzdGluZyBpbnB1dCBzb3VyY2VzIGF0
dGFjaGVkIHRvIHNlc3Npb24uCi0gICAgICAgIC8vICAgICAzLiBJZiBzb3VyY2VzIGlzIG5vbi1l
bXB0eSwgcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICAvLyAgICAgICAgMS4g
U2V0IHNlc3Npb24ncyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2VzIHRvIHNvdXJjZXMu
Ci0gICAgICAgIC8vICAgICAgICAyLiBGaXJlIGFuIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQg
bmFtZWQgaW5wdXRzb3VyY2VzY2hhbmdlIG9uIHNlc3Npb24gd2l0aCBhZGRlZCBzZXQgdG8gc291
cmNlcy4KKyAgICAgICAgLy8gNS40LjEwIGlzIGhhbmRsZWQgaW4gV2ViWFJTZXNzaW9uOjpzZXNz
aW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcy4KICAgICB9KTsKIH0KIApAQCAtNTM0LDYgKzUy
Nyw3IEBAIHZvaWQgV2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUo
UGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhCiAgICAgICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhIGRhdGE7CiAgICAgICAgIGRhdGEuaXNUcmFja2luZ1ZhbGlkID0gdHJ1ZTsK
ICAgICAgICAgZGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSB0cnVlOworICAgICAgICBkYXRhLnNob3Vs
ZFJlbmRlciA9IHRydWU7CiAgICAgICAgIGRhdGEudmlld3MuYXBwZW5kKHsgfSk7CiAgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoZGF0YSkpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlN5c3RlbS5oCmluZGV4IDQwMDhiMzQ3OTIyOWJiNmUxMDIzMzVkMmI3ZmFm
OWI0YTg0YzIwOWUuLjBhYzI0YjVjNmZmNTEwZWMzNGVhNDg5OTQzMjRhZWZkMzk5NjI5OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKQEAgLTExNSw2ICsx
MTUsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6
OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CiAgICAgICAgIFZlY3RvcjxE
ZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhYUlNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsKKyAgICAg
ICAgT3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlv
bih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsg
fQorICAgICAgICB2b2lkIGRlbGV0ZUxheWVyKFBsYXRmb3JtWFI6OkxheWVySGFuZGxlKSBmaW5h
bCB7IH0KICAgICB9OwogICAgIER1bW15SW5saW5lRGV2aWNlIG1fZGVmYXVsdElubGluZURldmlj
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdw
b3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld3BvcnQuaAppbmRl
eCAwYTVmZWNiMmUzNTlmMmM0MWVjZTQwYTdiMzEwYThkNzEwOGVmMTk4Li41NjI3ZTk2NDU2YmI3
OWJmZTFiOGQyNjgxNDEzYWIwMTNmN2IzZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSVmlld3BvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSVmlld3BvcnQuaApAQCAtNDMsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgaW50
IHkoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0LnkoKTsgfQogICAgIGludCB3aWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld3BvcnQud2lkdGgoKTsgfQogICAgIGludCBoZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX3ZpZXdwb3J0LmhlaWdodCgpOyB9CisgICAgSW50UmVjdCByZWN0KCkgeyBy
ZXR1cm4gbV92aWV3cG9ydDsgfQogCiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydChjb25zdCBJbnRS
ZWN0JiB2aWV3cG9ydCkgeyBtX3ZpZXdwb3J0ID0gdmlld3BvcnQ7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCmluZGV4IGM4ZDQyZTU0
NDMzYWNkZjJjZDIzYjY4NTRmMDU1MGUxYWI1YzQwMmEuLjkxODczYzNkODQ4ZWQ3M2YxZDY0YmFm
OWI0M2JiYTEwNjkzN2JkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJXZWJHTExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSV2ViR0xMYXllci5jcHAKQEAgLTI4LDkgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VC
WFIpCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCIKKyNpbmNsdWRlICJF
eHRlbnNpb25zR0xPcGVuR0xFUy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAj
aW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5j
bHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCisjaW5jbHVkZSAiVGVtcG9yYXJ5T3BlbkdMU2V0dGlu
Zy5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKICNpZiBFTkFCTEUoV0VCR0wyKQpAQCAtNDcsMTUgKzUxLDU5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgR0wgPSBHcmFwaGljc0NvbnRleHRHTDsKKwog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSV2ViR0xMYXllcik7CiAKKy8vIEFyYml0
cmFyeSB2YWx1ZSBmb3IgbWluaW11bSBmcmFtZWJ1ZmZlciBzY2FsaW5nLgorLy8gQmVsb3cgdGhp
cyB0aHJlc2hvbGQgdGhlIHJlc3VsdGluZyBmcmFtZWJ1ZmZlciB3b3VsZCBiZSB0b28gc21hbGwg
dG8gc2VlLgorY29uc3RleHByIGRvdWJsZSBNaW5GcmFtZWJ1ZmZlclNjYWxpbmdGYWN0b3IgPSAw
LjI7CisKK3N0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViWFJPcGFxdWVGcmFt
ZWJ1ZmZlcj4+IGNyZWF0ZU9wYXF1ZUZyYW1lYnVmZmVyKFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwgY29uc3QgWFJXZWJHTExheWVySW5p
dCYgaW5pdCkKK3sKKyAgICBhdXRvIGRldmljZSA9IHNlc3Npb24uZGV2aWNlKCk7CisgICAgaWYg
KCFkZXZpY2UpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkNh
bm5vdCBjcmVhdGUgYW4gWFJXZWJHTExheWVyIHdpdGggYW4gWFJTZXNzaW9uIHRoYXQgaGFzIGVu
ZGVkLiIgfTsKKworICAgIC8vIDkuMS4gSW5pdGlhbGl6ZSBsYXllcuKAmXMgYW50aWFsaWFzIHRv
IGxheWVySW5pdOKAmXMgYW50aWFsaWFzIHZhbHVlLgorICAgIC8vIDkuMi4gTGV0IGZyYW1lYnVm
ZmVyU2l6ZSBiZSB0aGUgcmVjb21tZW5kZWQgV2ViR0wgZnJhbWVidWZmZXIgcmVzb2x1dGlvbiBt
dWx0aXBsaWVkIGJ5IGxheWVySW5pdCdzIGZyYW1lYnVmZmVyU2NhbGVGYWN0b3IuCisKKyAgICBm
bG9hdCBzY2FsZUZhY3RvciA9IHN0ZDo6Y2xhbXAoaW5pdC5mcmFtZWJ1ZmZlclNjYWxlRmFjdG9y
LCBNaW5GcmFtZWJ1ZmZlclNjYWxpbmdGYWN0b3IsIGRldmljZS0+bWF4RnJhbWVidWZmZXJTY2Fs
aW5nRmFjdG9yKCkpOworCisgICAgSW50U2l6ZSByZWNvbW1lbmRlZFNpemUgPSBzZXNzaW9uLnJl
Y29tbWVuZGVkV2ViR0xGcmFtZWJ1ZmZlclJlc29sdXRpb24oKTsKKyAgICBhdXRvIHdpZHRoID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0ZDo6Y2VpbCgyICogcmVjb21tZW5kZWRTaXplLndpZHRo
KCkgKiBzY2FsZUZhY3RvcikpOworICAgIGF1dG8gaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHN0ZDo6Y2VpbChyZWNvbW1lbmRlZFNpemUuaGVpZ2h0KCkgKiBzY2FsZUZhY3RvcikpOwor
CisgICAgLy8gOS4zLiBJbml0aWFsaXplIGxheWVy4oCZcyBmcmFtZWJ1ZmZlciB0byBhIG5ldyBv
cGFxdWUgZnJhbWVidWZmZXIgd2l0aCB0aGUgZGltZW5zaW9ucyBmcmFtZWJ1ZmZlclNpemUKKyAg
ICAvLyAgICAgIGNyZWF0ZWQgd2l0aCBjb250ZXh0LCBzZXNzaW9uIGluaXRpYWxpemVkIHRvIHNl
c3Npb24sIGFuZCBsYXllckluaXTigJlzIGRlcHRoLCBzdGVuY2lsLCBhbmQgYWxwaGEgdmFsdWVz
LgorICAgIC8vIDkuNC4gQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgcmVzb3VyY2VzIGNvbXBhdGli
bGUgd2l0aCBzZXNzaW9u4oCZcyBYUiBkZXZpY2UsIGluY2x1ZGluZyBHUFUgYWNjZXNzaWJsZSBt
ZW1vcnkgYnVmZmVycywKKyAgICAvLyAgICAgIGFzIHJlcXVpcmVkIHRvIHN1cHBvcnQgdGhlIGNv
bXBvc2l0aW5nIG9mIGxheWVyLgorICAgIC8vIDkuNS4gSWYgbGF5ZXLigJlzIHJlc291cmNlcyB3
ZXJlIHVuYWJsZSB0byBiZSBjcmVhdGVkIGZvciBhbnkgcmVhc29uLCB0aHJvdyBhbiBPcGVyYXRp
b25FcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgYXV0byBsYXllckhhbmRsZSA9IGRl
dmljZS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBoZWlnaHQsIGluaXQuYWxwaGEpOwor
ICAgIGlmICghbGF5ZXJIYW5kbGUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRp
b25FcnJvciwgIlVuYWJsZSB0byBhbGxvY2F0ZSBYUldlYkdMTGF5ZXIgR1BVIHJlc291cmNlcy4i
fTsKKworICAgIFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyB7
CisgICAgICAgIC5hbHBoYSA9IGluaXQuYWxwaGEsCisgICAgICAgIC5hbnRpYWxpYXMgPSBpbml0
LmFudGlhbGlhcywKKyAgICAgICAgLmRlcHRoID0gaW5pdC5kZXB0aCwKKyAgICAgICAgLnN0ZW5j
aWwgPSBpbml0LnN0ZW5jaWwKKyAgICB9OworCisgICAgYXV0byBmcmFtZWJ1ZmZlciA9IFdlYlhS
T3BhcXVlRnJhbWVidWZmZXI6OmNyZWF0ZSgqbGF5ZXJIYW5kbGUsIGNvbnRleHQsIFdURk1vdmUo
YXR0cmlidXRlcyksIHdpZHRoLCBoZWlnaHQpOworICAgIGlmICghZnJhbWVidWZmZXIpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIlVuYWJsZSB0byBjcmVhdGUg
YSBmcmFtZWJ1ZmZlci4iIH07CisgICAgCisgICAgcmV0dXJuIGZyYW1lYnVmZmVyOworfQorCiAv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJ3ZWJnbGxheWVy
LXhyd2ViZ2xsYXllcgogRXhjZXB0aW9uT3I8UmVmPFdlYlhSV2ViR0xMYXllcj4+IFdlYlhSV2Vi
R0xMYXllcjo6Y3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgV2ViWFJSZW5kZXJp
bmdDb250ZXh0JiYgY29udGV4dCwgY29uc3QgWFJXZWJHTExheWVySW5pdCYgaW5pdCkKIHsKICAg
ICAvLyAxLiBMZXQgbGF5ZXIgYmUgYSBuZXcgWFJXZWJHTExheWVyCiAgICAgLy8gMi4gSWYgc2Vz
c2lvbuKAmXMgZW5kZWQgdmFsdWUgaXMgdHJ1ZSwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Ig
YW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmIChzZXNzaW9uLT5lbmRlZCgpKQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBhbiBYUldlYkdM
TGF5ZXIgd2l0aCBhbiBYUlNlc3Npb24gdGhhdCBoYXMgZW5kZWQuIiB9OwogCiAgICAgLy8gMy4g
SWYgY29udGV4dCBpcyBsb3N0LCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCiAgICAgLy8gNC4gSWYgc2Vzc2lvbiBpcyBhbiBpbW1lcnNpdmUgc2Vzc2lv
biBhbmQgY29udGV4dOKAmXMgWFIgY29tcGF0aWJsZSBib29sZWFuIGlzIGZhbHNlLCB0aHJvdwpA
QCAtNjQsMjkgKzExMiw0NCBAQCBFeGNlcHRpb25PcjxSZWY8V2ViWFJXZWJHTExheWVyPj4gV2Vi
WFJXZWJHTExheWVyOjpjcmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZQogICAgICAgICBbJl0o
Y29uc3QgUmVmUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+JiBiYXNlQ29udGV4dCkgLT4g
RXhjZXB0aW9uT3I8UmVmPFdlYlhSV2ViR0xMYXllcj4+CiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmIChiYXNlQ29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworICAgICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgYW4gWFJXZWJH
TExheWVyIHdpdGggYSBsb3N0IFdlYkdMIGNvbnRleHQuIiB9OwogCiAgICAgICAgICAgICBhdXRv
IG1vZGUgPSBzZXNzaW9uLT5tb2RlKCk7CiAgICAgICAgICAgICBpZiAoKG1vZGUgPT0gWFJTZXNz
aW9uTW9kZTo6SW1tZXJzaXZlQXIgfHwgbW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbW1lcnNpdmVW
cikgJiYgIWJhc2VDb250ZXh0LT5pc1hSQ29tcGF0aWJsZSgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworICAgICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgYW4gWFJX
ZWJHTExheWVyIHdpdGggV2ViR0wgY29udGV4dCBub3QgbWFya2VkIGFzIFhSIGNvbXBhdGlibGUu
IiB9OwogCiAKICAgICAgICAgICAgIC8vIDUuIEluaXRpYWxpemUgbGF5ZXLigJlzIGNvbnRleHQg
dG8gY29udGV4dC4gKHNlZSBjb25zdHJ1Y3RvcikKICAgICAgICAgICAgIC8vIDYuIEluaXRpYWxp
emUgbGF5ZXLigJlzIHNlc3Npb24gdG8gc2Vzc2lvbi4gKHNlZSBjb25zdHJ1Y3RvcikKICAgICAg
ICAgICAgIC8vIDcuIEluaXRpYWxpemUgbGF5ZXLigJlzIGlnbm9yZURlcHRoVmFsdWVzIGFzIGZv
bGxvd3MuIChzZWUgY29uc3RydWN0b3IpCi0gICAgICAgICAgICAvLyA4LiBJbml0aWFsaXplIGxh
eWVy4oCZcyBjb21wb3NpdGlvbiBkaXNhYmxlZCBib29sZWFuIGFzIGZvbGxvd3MuIChzZWUgY29u
c3RydWN0b3IpCi0gICAgICAgICAgICAvLyA5LiAoc2VlIGNvbnN0cnVjdG9yIGV4Y2VwdCBmb3Ig
dGhlIHJlc291cmNlcyBpbml0aWFsaXphdGlvbiBzdGVwIHdoaWNoIGlzIGhhbmRsZWQgaW4gdGhl
IGlmIGJsb2NrIGJlbG93KQotICAgICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0UmVmKCpuZXcg
V2ViWFJXZWJHTExheWVyKFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29udGV4dCksIGluaXQp
KTsKLQotICAgICAgICAgICAgaWYgKGxheWVyLT5tX2lzQ29tcG9zaXRpb25FbmFibGVkKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gOS40LiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSByZXNvdXJjZXMg
Y29tcGF0aWJsZSB3aXRoIHNlc3Npb27igJlzIFhSIGRldmljZSwgaW5jbHVkaW5nIEdQVSBhY2Nl
c3NpYmxlIG1lbW9yeSBidWZmZXJzLAotICAgICAgICAgICAgICAgIC8vICAgICAgYXMgcmVxdWly
ZWQgdG8gc3VwcG9ydCB0aGUgY29tcG9zaXRpbmcgb2YgbGF5ZXIuCi0gICAgICAgICAgICAgICAg
Ly8gOS41LiBJZiBsYXllcuKAmXMgcmVzb3VyY2VzIHdlcmUgdW5hYmxlIHRvIGJlIGNyZWF0ZWQg
Zm9yIGFueSByZWFzb24sIHRocm93IGFuIE9wZXJhdGlvbkVycm9yIGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KLSAgICAgICAgICAgICAgICAvLyBUT0RPOiBJbml0aWFsaXplIGxheWVyJ3MgcmVzb3Vy
Y2VzIG9yIGlzc3VlIGFuIE9wZXJhdGlvbkVycm9yLgorICAgICAgICAgICAgLy8gICA3LjEgSWYg
bGF5ZXJJbml04oCZcyBpZ25vcmVEZXB0aFZhbHVlcyB2YWx1ZSBpcyBmYWxzZSBhbmQgdGhlIFhS
IENvbXBvc2l0b3Igd2lsbCBtYWtlIHVzZSBvZiBkZXB0aCB2YWx1ZXMsCisgICAgICAgICAgICAv
LyAgICAgICBJbml0aWFsaXplIGxheWVy4oCZcyBpZ25vcmVEZXB0aFZhbHVlcyB0byBmYWxzZS4K
KyAgICAgICAgICAgIC8vICAgNy4yLiBFbHNlIEluaXRpYWxpemUgbGF5ZXLigJlzIGlnbm9yZURl
cHRoVmFsdWVzIHRvIHRydWUKKyAgICAgICAgICAgIC8vIFRPRE86IGFzayBYUiBjb21wb3NpdG9y
IGZvciBkZXB0aCB2YWx1ZSB1c2FnZXMgc3VwcG9ydAorICAgICAgICAgICAgYm9vbCBpZ25vcmVE
ZXB0aFZhbHVlcyA9IHRydWU7CisgICAgICAgICAgICAvLyA4LiBJbml0aWFsaXplIGxheWVy4oCZ
cyBjb21wb3NpdGlvbiBkaXNhYmxlZCBib29sZWFuIGFzIGZvbGxvd3MuCisgICAgICAgICAgICAv
LyAgICBJZiBzZXNzaW9uIGlzIGFuIGlubGluZSBzZXNzaW9uIC0+IEluaXRpYWxpemUgbGF5ZXIn
cyBjb21wb3NpdGlvbiBkaXNhYmxlZCB0byB0cnVlCisgICAgICAgICAgICAvLyAgICBPdGhlcndp
c2UgLT4gSW5pdGlhbGl6ZSBsYXllcidzIGNvbXBvc2l0aW9uIGRpc2FibGVkIGJvb2xlYW4gdG8g
ZmFsc2UKKyAgICAgICAgICAgIGJvb2wgaXNDb21wb3NpdGlvbkVuYWJsZWQgPSBzZXNzaW9uLT5t
b2RlKCkgIT0gWFJTZXNzaW9uTW9kZTo6SW5saW5lOworICAgICAgICAgICAgYm9vbCBhbnRpYWxp
YXMgPSBmYWxzZTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJYUk9wYXF1ZUZyYW1l
YnVmZmVyPiBmcmFtZWJ1ZmZlcjsKKworICAgICAgICAgICAgLy8gOS4gSWYgbGF5ZXIncyBjb21w
b3NpdGlvbiBlbmFibGVkIGJvb2xlYW4gaXMgdHJ1ZTogCisgICAgICAgICAgICBpZiAoaXNDb21w
b3NpdGlvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IGNy
ZWF0ZU9wYXF1ZUZyYW1lYnVmZmVyKHNlc3Npb24uZ2V0KCksICpiYXNlQ29udGV4dCwgaW5pdCk7
CisgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Cisg
ICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBjcmVhdGVSZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE90aGVyd2lz
ZQorICAgICAgICAgICAgICAgIC8vIDkuMS4gSW5pdGlhbGl6ZSBsYXllcuKAmXMgYW50aWFsaWFz
IHRvIGxheWVy4oCZcyBjb250ZXh0J3MgYWN0dWFsIGNvbnRleHQgcGFyYW1ldGVycyBhbnRpYWxp
YXMgdmFsdWUuCisgICAgICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlcyA9IGJhc2VDb250
ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpKQorICAgICAgICAgICAgICAgICAgICBhbnRpYWxp
YXMgPSBhdHRyaWJ1dGVzLT5hbnRpYWxpYXM7CisgICAgICAgICAgICAgICAgLy8gOS4yIEluaXRp
YWxpemUgbGF5ZXIncyBmcmFtZWJ1ZmZlciB0byBudWxsLgogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyAxMC4gUmV0dXJuIGxheWVyLgotICAgICAgICAgICAgcmV0dXJuIGxheWVyOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJXZWJHTExheWVyKFdURk1vdmUo
c2Vzc2lvbiksIFdURk1vdmUoY29udGV4dCksIFdURk1vdmUoZnJhbWVidWZmZXIpLCBhbnRpYWxp
YXMsIGlnbm9yZURlcHRoVmFsdWVzLCBpc0NvbXBvc2l0aW9uRW5hYmxlZCkpOwogICAgICAgICB9
LAogICAgICAgICBbXShXVEY6Ok1vbm9zdGF0ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC05NSw2MyArMTU4LDE4IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJYUldlYkdM
TGF5ZXI+PiBXZWJYUldlYkdMTGF5ZXI6OmNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlCiAg
ICAgKTsKIH0KIAotV2ViWFJXZWJHTExheWVyOjpXZWJYUldlYkdMTGF5ZXIoUmVmPFdlYlhSU2Vz
c2lvbj4mJiBzZXNzaW9uLCBXZWJYUlJlbmRlcmluZ0NvbnRleHQmJiBjb250ZXh0LCBjb25zdCBY
UldlYkdMTGF5ZXJJbml0JiBpbml0KQorV2ViWFJXZWJHTExheWVyOjpXZWJYUldlYkdMTGF5ZXIo
UmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBXZWJYUlJlbmRlcmluZ0NvbnRleHQmJiBjb250
ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcj4mJiBmcmFtZWJ1ZmZl
ciwKKyAgICBib29sIGFudGlhbGlhcywgYm9vbCBpZ25vcmVEZXB0aFZhbHVlcywgYm9vbCBpc0Nv
bXBvc2l0aW9uRW5hYmxlZCkKICAgICA6IFdlYlhSTGF5ZXIoc2Vzc2lvbi0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQogICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCiAgICAgLCBt
X2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICAsIG1fbGVmdFZpZXdwb3J0RGF0YSh7IFdl
YlhSVmlld3BvcnQ6OmNyZWF0ZSh7IH0pIH0pCiAgICAgLCBtX3JpZ2h0Vmlld3BvcnREYXRhKHsg
V2ViWFJWaWV3cG9ydDo6Y3JlYXRlKHsgfSkgfSkKKyAgICAsIG1fZnJhbWVidWZmZXIoV1RGTW92
ZShmcmFtZWJ1ZmZlcikpCisgICAgLCBtX2FudGlhbGlhcyhhbnRpYWxpYXMpCisgICAgLCBtX2ln
bm9yZURlcHRoVmFsdWVzKGlnbm9yZURlcHRoVmFsdWVzKQorICAgICwgbV9pc0NvbXBvc2l0aW9u
RW5hYmxlZChpc0NvbXBvc2l0aW9uRW5hYmxlZCkKIHsKLSAgICAvLyA3LiBJbml0aWFsaXplIGxh
eWVy4oCZcyBpZ25vcmVEZXB0aFZhbHVlcyBhcyBmb2xsb3dzOgotICAgIC8vICAgNy4xIElmIGxh
eWVySW5pdOKAmXMgaWdub3JlRGVwdGhWYWx1ZXMgdmFsdWUgaXMgZmFsc2UgYW5kIHRoZSBYUiBD
b21wb3NpdG9yIHdpbGwgbWFrZSB1c2Ugb2YgZGVwdGggdmFsdWVzLAotICAgIC8vICAgICAgIElu
aXRpYWxpemUgbGF5ZXLigJlzIGlnbm9yZURlcHRoVmFsdWVzIHRvIGZhbHNlLgotICAgIC8vICAg
Ny4yLiBFbHNlIEluaXRpYWxpemUgbGF5ZXLigJlzIGlnbm9yZURlcHRoVmFsdWVzIHRvIHRydWUK
LSAgICAvLyBUT0RPOiBhc2sgWFIgY29tcG9zaXRvciBmb3IgZGVwdGggdmFsdWUgdXNhZ2VzCi0g
ICAgbV9pZ25vcmVEZXB0aFZhbHVlcyA9IGluaXQuaWdub3JlRGVwdGhWYWx1ZXM7Ci0KLSAgICAv
LyA4LiBJbml0aWFsaXplIGxheWVyJ3MgY29tcG9zaXRpb24gZGlzYWJsZWQgYm9vbGVhbiBhcyBm
b2xsb3dzOgotICAgIC8vICBJZiBzZXNzaW9uIGlzIGFuIGlubGluZSBzZXNzaW9uIC0+IEluaXRp
YWxpemUgbGF5ZXIncyBjb21wb3NpdGlvbiBkaXNhYmxlZCB0byB0cnVlCi0gICAgLy8gIE90aGVy
d2lzZSAtPiBJbml0aWFsaXplIGxheWVyJ3MgY29tcG9zaXRpb24gZGlzYWJsZWQgYm9vbGVhbiB0
byBmYWxzZQotICAgIG1faXNDb21wb3NpdGlvbkVuYWJsZWQgPSBtX3Nlc3Npb24tPm1vZGUoKSAh
PSBYUlNlc3Npb25Nb2RlOjpJbmxpbmU7Ci0KLSAgICAvLyA5LiBJZiBsYXllcuKAmXMgY29tcG9z
aXRpb24gZGlzYWJsZWQgYm9vbGVhbiBpcyBmYWxzZToKLSAgICBpZiAobV9pc0NvbXBvc2l0aW9u
RW5hYmxlZCkgewotICAgICAgICAvLyAgMS4gSW5pdGlhbGl6ZSBsYXllcuKAmXMgYW50aWFsaWFz
IHRvIGxheWVySW5pdOKAmXMgYW50aWFsaWFzIHZhbHVlLgotICAgICAgICBtX2FudGlhbGlhcyA9
IGluaXQuYW50aWFsaWFzOwotCi0gICAgICAgIC8vICAyLiBMZXQgZnJhbWVidWZmZXJTaXplIGJl
IHRoZSByZWNvbW1lbmRlZCBXZWJHTCBmcmFtZWJ1ZmZlciByZXNvbHV0aW9uIG11bHRpcGxpZWQg
YnkgbGF5ZXJJbml0J3MgZnJhbWVidWZmZXJTY2FsZUZhY3Rvci4KLSAgICAgICAgSW50U2l6ZSBy
ZWNvbW1lbmRlZFNpemUgPSBtX3Nlc3Npb24tPnJlY29tbWVuZGVkV2ViR0xGcmFtZWJ1ZmZlclJl
c29sdXRpb24oKTsKLSAgICAgICAgbV9mcmFtZWJ1ZmZlci53aWR0aCA9IHJlY29tbWVuZGVkU2l6
ZS53aWR0aCgpICogaW5pdC5mcmFtZWJ1ZmZlclNjYWxlRmFjdG9yOwotICAgICAgICBtX2ZyYW1l
YnVmZmVyLmhlaWdodCA9IHJlY29tbWVuZGVkU2l6ZS5oZWlnaHQoKSAqIGluaXQuZnJhbWVidWZm
ZXJTY2FsZUZhY3RvcjsKLQotICAgICAgICAvLyAgMy4gSW5pdGlhbGl6ZSBsYXllcuKAmXMgZnJh
bWVidWZmZXIgdG8gYSBuZXcgb3BhcXVlIGZyYW1lYnVmZmVyIHdpdGggdGhlIGRpbWVuc2lvbnMg
ZnJhbWVidWZmZXJTaXplCi0gICAgICAgIC8vICAgICAgIGNyZWF0ZWQgd2l0aCBjb250ZXh0LCBz
ZXNzaW9uIGluaXRpYWxpemVkIHRvIHNlc3Npb24sIGFuZCBsYXllckluaXTigJlzIGRlcHRoLCBz
dGVuY2lsLCBhbmQgYWxwaGEgdmFsdWVzLgotICAgICAgICAvLyBGb3Igc3RlcHMgNCAmIDUgc2Vl
IHRoZSBjcmVhdGUoKSBtZXRob2QgYXMgcmVzb3VyY2VzIGluaXRpYWxpemF0aW9uIGlzIGhhbmRs
ZWQgb3V0c2lkZSB0aGUgY29uc3RydWN0b3IgYXMgaXQgbWlnaHQgdHJpZ2dlcgotICAgICAgICAv
LyBhbiBPcGVyYXRpb25FcnJvci4KLSAgICAgICAgLy8gRklYTUU6IGNyZWF0ZSBhIHByb3BlciBv
cGFxdWUgZnJhbWVidWZmZXIuCi0gICAgICAgIG1fZnJhbWVidWZmZXIub2JqZWN0ID0gV1RGOjpz
d2l0Y2hPbihtX2NvbnRleHQsCi0gICAgICAgICAgICBbXShjb25zdCBSZWZQdHI8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZT4mIGJhc2VDb250ZXh0KQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiBXZWJHTEZyYW1lYnVmZmVyOjpjcmVhdGUoKmJhc2VDb250ZXh0KTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyAxLiBJbml0
aWFsaXplIGxheWVy4oCZcyBhbnRpYWxpYXMgdG8gbGF5ZXLigJlzIGNvbnRleHQncyBhY3R1YWwg
Y29udGV4dCBwYXJhbWV0ZXJzIGFudGlhbGlhcyB2YWx1ZS4KLSAgICAgICAgbV9hbnRpYWxpYXMg
PSBXVEY6OnN3aXRjaE9uKG1fY29udGV4dCwKLSAgICAgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiYgY29udGV4dCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dC0+Z2V0Q29udGV4dEF0dHJp
YnV0ZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMudmFsdWUoKS5h
bnRpYWxpYXM7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQot
ICAgICAgICApOwotICAgICAgICAvLyAyLiBJbml0aWFsaXplIGxheWVy4oCZcyBmcmFtZWJ1ZmZl
ciB0byBudWxsLgotICAgICAgICBtX2ZyYW1lYnVmZmVyLm9iamVjdCA9IG51bGxwdHI7Ci0gICAg
fQotCi0gICAgYXV0byBjYW52YXNFbGVtZW50ID0gY2FudmFzKCk7Ci0gICAgaWYgKGNhbnZhc0Vs
ZW1lbnQpCi0gICAgICAgIGNhbnZhc0VsZW1lbnQtPmFkZE9ic2VydmVyKCp0aGlzKTsKIH0KIAog
V2ViWFJXZWJHTExheWVyOjp+V2ViWFJXZWJHTExheWVyKCkKQEAgLTE1OSw2ICsxNzcsMTEgQEAg
V2ViWFJXZWJHTExheWVyOjp+V2ViWFJXZWJHTExheWVyKCkKICAgICBhdXRvIGNhbnZhc0VsZW1l
bnQgPSBjYW52YXMoKTsKICAgICBpZiAoY2FudmFzRWxlbWVudCkKICAgICAgICAgY2FudmFzRWxl
bWVudC0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworICAgIGlmIChtX2ZyYW1lYnVmZmVyKSB7Cisg
ICAgICAgIGF1dG8gZGV2aWNlID0gbV9zZXNzaW9uLT5kZXZpY2UoKTsKKyAgICAgICAgaWYgKGRl
dmljZSkKKyAgICAgICAgICAgIGRldmljZS0+ZGVsZXRlTGF5ZXIobV9mcmFtZWJ1ZmZlci0+aGFu
ZGxlKCkpOworICAgIH0KIH0KIAogYm9vbCBXZWJYUldlYkdMTGF5ZXI6OmFudGlhbGlhcygpIGNv
bnN0CkBAIC0xNzEsMTUgKzE5NCwxNSBAQCBib29sIFdlYlhSV2ViR0xMYXllcjo6aWdub3JlRGVw
dGhWYWx1ZXMoKSBjb25zdAogICAgIHJldHVybiBtX2lnbm9yZURlcHRoVmFsdWVzOwogfQogCi1X
ZWJHTEZyYW1lYnVmZmVyKiBXZWJYUldlYkdMTGF5ZXI6OmZyYW1lYnVmZmVyKCkgY29uc3QKK2Nv
bnN0IFdlYkdMRnJhbWVidWZmZXIqIFdlYlhSV2ViR0xMYXllcjo6ZnJhbWVidWZmZXIoKSBjb25z
dAogewotICAgIHJldHVybiBtX2ZyYW1lYnVmZmVyLm9iamVjdC5nZXQoKTsKKyAgICByZXR1cm4g
bV9mcmFtZWJ1ZmZlciA/ICZtX2ZyYW1lYnVmZmVyLT5mcmFtZWJ1ZmZlcigpIDogbnVsbHB0cjsK
IH0KIAogdW5zaWduZWQgV2ViWFJXZWJHTExheWVyOjpmcmFtZWJ1ZmZlcldpZHRoKCkgY29uc3QK
IHsKLSAgICBpZiAobV9mcmFtZWJ1ZmZlci5vYmplY3QpCi0gICAgICAgIHJldHVybiBtX2ZyYW1l
YnVmZmVyLndpZHRoOworICAgIGlmIChtX2ZyYW1lYnVmZmVyKQorICAgICAgICByZXR1cm4gbV9m
cmFtZWJ1ZmZlci0+d2lkdGgoKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2NvbnRleHQs
CiAgICAgICAgIFsmXShjb25zdCBSZWZQdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4mIGJh
c2VDb250ZXh0KSB7CiAgICAgICAgICAgICByZXR1cm4gYmFzZUNvbnRleHQtPmRyYXdpbmdCdWZm
ZXJXaWR0aCgpOwpAQCAtMTg4LDggKzIxMSw4IEBAIHVuc2lnbmVkIFdlYlhSV2ViR0xMYXllcjo6
ZnJhbWVidWZmZXJXaWR0aCgpIGNvbnN0CiAKIHVuc2lnbmVkIFdlYlhSV2ViR0xMYXllcjo6ZnJh
bWVidWZmZXJIZWlnaHQoKSBjb25zdAogewotICAgIGlmIChtX2ZyYW1lYnVmZmVyLm9iamVjdCkK
LSAgICAgICAgcmV0dXJuIG1fZnJhbWVidWZmZXIuaGVpZ2h0OworICAgIGlmIChtX2ZyYW1lYnVm
ZmVyKQorICAgICAgICByZXR1cm4gbV9mcmFtZWJ1ZmZlci0+aGVpZ2h0KCk7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV9jb250ZXh0LAogICAgICAgICBbJl0oY29uc3QgUmVmUHRyPFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U+JiBiYXNlQ29udGV4dCkgewogICAgICAgICAgICAgcmV0dXJu
IGJhc2VDb250ZXh0LT5kcmF3aW5nQnVmZmVySGVpZ2h0KCk7CkBAIC0yNTYsNiArMjc5LDM5IEBA
IEhUTUxDYW52YXNFbGVtZW50KiBXZWJYUldlYkdMTGF5ZXI6OmNhbnZhcygpIGNvbnN0CiAgICAg
fSk7CiB9CiAKKwordm9pZCBXZWJYUldlYkdMTGF5ZXI6OnN0YXJ0RnJhbWUoY29uc3QgUGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmIGRhdGEpCit7CisgICAgQVNTRVJUKG1fZnJhbWVidWZm
ZXIpOworCisgICAgYXV0byBpdCA9IGRhdGEubGF5ZXJzLmZpbmQobV9mcmFtZWJ1ZmZlci0+aGFu
ZGxlKCkpOworICAgIGlmIChpdCA9PSBkYXRhLmxheWVycy5lbmQoKSkgeworICAgICAgICAvLyBG
b3Igc29tZSByZWFzb24gdGhlIGRldmljZSBkaWRuJ3QgcHJvdmlkZSBhIHRleHR1cmUgZm9yIHRo
aXMgZnJhbWUuCisgICAgICAgIC8vIFRoZSBmcmFtZSBpcyBpZ25vcmVkIGFuZCB0aGUgZGV2aWNl
IGNhbiByZWNvdmVyIHRoZSB0ZXh0dXJlIGluIGZ1dHVyZSBmcmFtZXM7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2ZyYW1lYnVmZmVyLT5zdGFydEZyYW1lKGl0LT52YWx1ZSk7Cit9
CisKK1BsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXIgV2ViWFJXZWJHTExheWVyOjplbmRGcmFtZSgp
Cit7CisgICAgQVNTRVJUKG1fZnJhbWVidWZmZXIpOworICAgIG1fZnJhbWVidWZmZXItPmVuZEZy
YW1lKCk7CisKKyAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllclZpZXc+IHZpZXdz
IHsKKyAgICAgICAgeyBQbGF0Zm9ybVhSOjpFeWU6OkxlZnQsIG1fbGVmdFZpZXdwb3J0RGF0YS52
aWV3cG9ydC0+cmVjdCgpIH0sCisgICAgICAgIHsgUGxhdGZvcm1YUjo6RXllOjpSaWdodCwgbV9y
aWdodFZpZXdwb3J0RGF0YS52aWV3cG9ydC0+cmVjdCgpIH0KKyAgICB9OworCisgICAgcmV0dXJu
IFBsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXIgeyAuaGFuZGxlID0gbV9mcmFtZWJ1ZmZlci0+aGFu
ZGxlKCksIC52aXNpYmxlID0gdHJ1ZSwgLnZpZXdzID0gV1RGTW92ZSh2aWV3cykgfTsKK30KKwor
dm9pZCBXZWJYUldlYkdMTGF5ZXI6OmNhbnZhc1Jlc2l6ZWQoQ2FudmFzQmFzZSYpCit7CisgICAg
bV92aWV3cG9ydHNEaXJ0eSA9IHRydWU7Cit9CisKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5n
aXRodWIuaW8vd2VieHIvI3hydmlldy1vYnRhaW4tYS1zY2FsZWQtdmlld3BvcnQKIHZvaWQgV2Vi
WFJXZWJHTExheWVyOjpjb21wdXRlVmlld3BvcnRzKCkKIHsKQEAgLTI4Myw5ICszMzksMjQ0IEBA
IHZvaWQgV2ViWFJXZWJHTExheWVyOjpjb21wdXRlVmlld3BvcnRzKCkKICAgICBtX3ZpZXdwb3J0
c0RpcnR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgV2ViWFJXZWJHTExheWVyOjpjYW52YXNSZXNpemVk
KENhbnZhc0Jhc2UmKQorLy8gV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcgorCitzdGQ6OnVuaXF1ZV9w
dHI8V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcj4gV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6Y3JlYXRl
KFBsYXRmb3JtWFI6OkxheWVySGFuZGxlIGhhbmRsZSwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCwgQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIHVpbnQzMl90IHdpZHRoLCB1aW50
MzJfdCBoZWlnaHQpCiB7Ci0gICAgbV92aWV3cG9ydHNEaXJ0eSA9IHRydWU7CisgICAgYXV0byBm
cmFtZWJ1ZmZlciA9IFdlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZU9wYXF1ZShjb250ZXh0KTsKKyAg
ICBhdXRvIG9wYXF1ZSA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyPihu
ZXcgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcihoYW5kbGUsIFdURk1vdmUoZnJhbWVidWZmZXIpLCBj
b250ZXh0LCBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgaWYgKCFv
cGFxdWUtPnNldHVwRnJhbWVidWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIG9wYXF1ZTsKK30KKworV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6V2ViWFJPcGFxdWVG
cmFtZWJ1ZmZlcihQbGF0Zm9ybVhSOjpMYXllckhhbmRsZSBoYW5kbGUsIFJlZjxXZWJHTEZyYW1l
YnVmZmVyPiYmIGZyYW1lYnVmZmVyLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
LCBBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcywgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdo
dCkKKyAgICA6IG1faGFuZGxlKGhhbmRsZSkKKyAgICAsIG1fZnJhbWVidWZmZXIoV1RGTW92ZShm
cmFtZWJ1ZmZlcikpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fYXR0cmlidXRl
cyhXVEZNb3ZlKGF0dHJpYnV0ZXMpKQorICAgICwgbV93aWR0aCh3aWR0aCkKKyAgICAsIG1faGVp
Z2h0KGhlaWdodCkKK3sKK30KKworV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6fldlYlhST3BhcXVl
RnJhbWVidWZmZXIoKQoreworICAgIGlmIChhdXRvIGdsID0gbV9jb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCkpIHsKKyAgICAgICAgaWYgKG1fc3RlbmNpbEJ1ZmZlcikKKyAgICAgICAgICAgIGds
LT5kZWxldGVSZW5kZXJidWZmZXIobV9zdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgaWYgKG1fZGVw
dGhTdGVuY2lsQnVmZmVyKQorICAgICAgICAgICAgZ2wtPmRlbGV0ZVJlbmRlcmJ1ZmZlcihtX2Rl
cHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgIGlmIChtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIp
CisgICAgICAgICAgICBnbC0+ZGVsZXRlUmVuZGVyYnVmZmVyKG1fbXVsdGlzYW1wbGVDb2xvckJ1
ZmZlcik7CisgICAgICAgIGlmIChtX3Jlc29sdmVkRkJPKQorICAgICAgICAgICAgZ2wtPmRlbGV0
ZUZyYW1lYnVmZmVyKG1fcmVzb2x2ZWRGQk8pOworICAgICAgICBtX2NvbnRleHQuZGVsZXRlRnJh
bWVidWZmZXIobV9mcmFtZWJ1ZmZlci5wdHIoKSk7CisgICAgfQorfQorCit2b2lkIFdlYlhST3Bh
cXVlRnJhbWVidWZmZXI6OnN0YXJ0RnJhbWUoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE6OkxheWVyRGF0YSYgZGF0YSkKK3sKKyAgICBtX29wYXF1ZVRleHR1cmUgPSBkYXRhLm9w
YXF1ZVRleHR1cmU7CisgICAgaWYgKCFtX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8mIGdsID0gKm1fY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpOworCisgICAgbV9mcmFtZWJ1ZmZlci0+c2V0T3BhcXVlQWN0aXZlKHRydWUpOworCisgICAg
R0NHTGludCBib3VuZEZCTyB7IDAgfTsKKworICAgIGdsLmdldEludGVnZXJ2KEdMOjpGUkFNRUJV
RkZFUl9CSU5ESU5HLCBtYWtlR0NHTFNwYW4oJmJvdW5kRkJPLCAxKSk7CisgICAgYXV0byBzY29w
ZWRGQk9zID0gbWFrZVNjb3BlRXhpdChbJmdsLCBib3VuZEZCT10oKSB7CisgICAgICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihHTDo6RlJBTUVCVUZGRVIsIGJvdW5kRkJPKTsKKyAgICB9KTsKKworICAg
IGdsLmJpbmRGcmFtZWJ1ZmZlcihHTDo6RlJBTUVCVUZGRVIsIG1fZnJhbWVidWZmZXItPm9iamVj
dCgpKTsKKyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNvcGFx
dWUtZnJhbWVidWZmZXIKKyAgICAvLyBUaGUgYnVmZmVycyBhdHRhY2hlZCB0byBhbiBvcGFxdWUg
ZnJhbWVidWZmZXIgTVVTVCBiZSBjbGVhcmVkIHRvIHRoZSB2YWx1ZXMgaW4gdGhlIHRhYmxlIGJl
bG93IHdoZW4gZmlyc3QgY3JlYXRlZCwKKyAgICAvLyBvciBwcmlvciB0byB0aGUgcHJvY2Vzc2lu
ZyBvZiBlYWNoIFhSIGFuaW1hdGlvbiBmcmFtZS4KKyAgICBzdGQ6OmFycmF5PGNvbnN0IEdDR0xl
bnVtLCAzPiBhdHRhY2htZW50cyA9IHsgR0w6OkNPTE9SX0FUVEFDSE1FTlQwLCBHTDo6U1RFTkNJ
TF9BVFRBQ0hNRU5ULCBHTDo6REVQVEhfQVRUQUNITUVOVCB9OworICAgIGdsLmludmFsaWRhdGVG
cmFtZWJ1ZmZlcihHTDo6RlJBTUVCVUZGRVIsIG1ha2VHQ0dMU3BhbihhdHRhY2htZW50cy5kYXRh
KCksIGF0dGFjaG1lbnRzLnNpemUoKSkpOworCisjaWYgVVNFKE9QRU5HTF9FUykKKyAgICBhdXRv
JiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xFUyY+KGds
LmdldEV4dGVuc2lvbnMoKSk7CisgICAgaWYgKG1fYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgZXh0
ZW5zaW9ucy5pc0ltYWdpbmF0aW9uKCkpIHsKKyAgICAgICAgZXh0ZW5zaW9ucy5mcmFtZWJ1ZmZl
clRleHR1cmUyRE11bHRpc2FtcGxlSU1HKEdMOjpGUkFNRUJVRkZFUiwgR0w6OkNPTE9SX0FUVEFD
SE1FTlQwLCBHTDo6VEVYVFVSRV8yRCwgbV9vcGFxdWVUZXh0dXJlLCAwLCBtX3NhbXBsZUNvdW50
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKCFtX211bHRpc2Ft
cGxlQ29sb3JCdWZmZXIpCisgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMOjpGUkFN
RUJVRkZFUiwgR0w6OkNPTE9SX0FUVEFDSE1FTlQwLCBHTDo6VEVYVFVSRV8yRCwgbV9vcGFxdWVU
ZXh0dXJlLCAwKTsKK30KKwordm9pZCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjplbmRGcmFtZSgp
Cit7CisgICAgbV9mcmFtZWJ1ZmZlci0+c2V0T3BhcXVlQWN0aXZlKGZhbHNlKTsKKworICAgIGlm
ICghbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkpCisgICAgICAgIHJldHVybjsKKyAgICBh
dXRvJiBnbCA9ICptX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKKworICAgIGlmIChtX211
bHRpc2FtcGxlQ29sb3JCdWZmZXIpIHsKKyAgICAgICAgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyBz
Y29wZWRTY2lzc29yKEdMOjpTQ0lTU09SX1RFU1QsIDApOworICAgICAgICBUZW1wb3JhcnlPcGVu
R0xTZXR0aW5nIHNjb3BlZERpdGhlcihHTDo6RElUSEVSLCAwKTsKKyAgICAgICAgVGVtcG9yYXJ5
T3BlbkdMU2V0dGluZyBzY29wZWREZXB0aChHTDo6REVQVEhfVEVTVCwgMCk7CisgICAgICAgIFRl
bXBvcmFyeU9wZW5HTFNldHRpbmcgc2NvcGVkU3RlbmNpbChHTDo6U1RFTkNJTF9URVNULCAwKTsK
KworICAgICAgICBHQ0dMaW50IGJvdW5kUmVhZEZCTyB7IDAgfTsKKyAgICAgICAgR0NHTGludCBi
b3VuZERyYXdGQk8geyAwIH07CisgICAgICAgIGdsLmdldEludGVnZXJ2KEdMOjpSRUFEX0ZSQU1F
QlVGRkVSX0JJTkRJTkcsIG1ha2VHQ0dMU3BhbigmYm91bmRSZWFkRkJPLCAxKSk7CisgICAgICAg
IGdsLmdldEludGVnZXJ2KEdMOjpEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcsIG1ha2VHQ0dMU3Bh
bigmYm91bmREcmF3RkJPLCAxKSk7CisKKyAgICAgICAgYXV0byBzY29wZWRGQk9zID0gbWFrZVNj
b3BlRXhpdChbJmdsLCBib3VuZFJlYWRGQk8sIGJvdW5kRHJhd0ZCT10oKSB7CisgICAgICAgICAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoR0w6OlJFQURfRlJBTUVCVUZGRVIsIGJvdW5kUmVhZEZCTyk7
CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoR0w6OkRSQVdfRlJBTUVCVUZGRVIsIGJv
dW5kRHJhd0ZCTyk7CisgICAgICAgIH0pOworCisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihH
TDo6RFJBV19GUkFNRUJVRkZFUiwgbV9yZXNvbHZlZEZCTyk7CisgICAgICAgIGdsLmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMOjpGUkFNRUJVRkZFUiwgR0w6OkNPTE9SX0FUVEFDSE1FTlQwLCBHTDo6
VEVYVFVSRV8yRCwgbV9vcGFxdWVUZXh0dXJlLCAwKTsKKworICAgICAgICAvLyBSZXNvbHZlIG11
bHRpc2FtcGxlIGZyYW1lYnVmZmVyCisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihHTDo6UkVB
RF9GUkFNRUJVRkZFUiwgbV9mcmFtZWJ1ZmZlci0+b2JqZWN0KCkpOworICAgICAgICBnbC5ibGl0
RnJhbWVidWZmZXIoMCwgMCwgbV93aWR0aCwgbV9oZWlnaHQsIDAsIDAsIG1fd2lkdGgsIG1faGVp
Z2h0LCBHTDo6Q09MT1JfQlVGRkVSX0JJVCwgR0w6OkxJTkVBUik7CisgICAgfQorICAgIAorICAg
IGdsLmZsdXNoKCk7Cit9CisKK2Jvb2wgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFt
ZWJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIGdsID0gKm1fY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpOworCisgICAgLy8gQmluZCBjdXJyZW50IEZCT3Mgd2hlbiBleGl0aW5nIHRoZSBm
dW5jdGlvbgorICAgIEdDR0xpbnQgYm91bmRGQk8geyAwIH07CisgICAgR0NHTGludCBib3VuZFJl
bmRlcmJ1ZmZlciB7IDAgfTsKKyAgICBnbC5nZXRJbnRlZ2VydihHTDo6RlJBTUVCVUZGRVJfQklO
RElORywgbWFrZUdDR0xTcGFuKCZib3VuZEZCTywgMSkpOworICAgIGdsLmdldEludGVnZXJ2KEdM
OjpSRU5ERVJCVUZGRVJfQklORElORywgbWFrZUdDR0xTcGFuKCZib3VuZFJlbmRlcmJ1ZmZlciwg
MSkpOworICAgIGF1dG8gc2NvcGVkRkJPID0gbWFrZVNjb3BlRXhpdChbJmdsLCBib3VuZEZCTywg
Ym91bmRSZW5kZXJidWZmZXJdKCkgeworICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoR0w6OkZS
QU1FQlVGRkVSLCBib3VuZEZCTyk7CisgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0w6OlJF
TkRFUkJVRkZFUiwgYm91bmRSZW5kZXJidWZmZXIpOworICAgIH0pOworCisgICAgLy8gU2V0IHVw
IGNvbG9yLCBkZXB0aCBhbmQgc3RlbmNpbCBmb3JtYXRzCisgICAgYm9vbCB1c2VEZXB0aFN0ZW5j
aWwgPSBtX2F0dHJpYnV0ZXMuc3RlbmNpbCB8fCBtX2F0dHJpYnV0ZXMuZGVwdGg7CisgICAgYXV0
byBjb2xvckZvcm1hdCA9IG1fYXR0cmlidXRlcy5hbHBoYSA/IEdyYXBoaWNzQ29udGV4dEdMOjpS
R0JBOCA6IEdyYXBoaWNzQ29udGV4dEdMOjpSR0I4OworI2lmIFVTRShPUEVOR0xfRVMpCisgICAg
YXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9uc0dMT3BlbkdMRVMm
PihnbC5nZXRFeHRlbnNpb25zKCkpOworICAgIGJvb2wgc3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5j
aWwgPSB1c2VEZXB0aFN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYXV0byBkZXB0aEZvcm1hdCA9IHN1cHBvcnRzUGFja2Vk
RGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5U
MTY7CisgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OworI2Vsc2UK
KyAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxFeHRlbnNpb25zR0xPcGVu
R0xDb21tb24mPihnbC5nZXRFeHRlbnNpb25zKCkpOworICAgIGJvb2wgc3VwcG9ydHNQYWNrZWRE
ZXB0aFN0ZW5jaWwgPSB1c2VEZXB0aFN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xf
RVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYXV0byBkZXB0aEZvcm1hdCA9IHN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhf
Q09NUE9ORU5UOworICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0NPTVBPTkVO
VDsKKyNlbmRpZgorCisgICAgLy8gU2V0IHVwIHJlY29tbWVuZGVkIHNhbXBsZXMgZm9yIFdlYlhS
LgorICAgIC8vIEZJWE1FOiBjaGVjayBpZiB3ZSBjYW4gZ2V0IHJlY29tbWVuZGVkIHZhbHVlcyBm
cm9tIGVhY2ggZGV2aWNlIHBsYXRmb3JtLgorICAgIGlmIChtX2F0dHJpYnV0ZXMuYW50aWFsaWFz
KSB7CisgICAgICAgIEdDR0xpbnQgbWF4U2FtcGxlQ291bnQ7CisgICAgICAgIGdsLmdldEludGVn
ZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3BhbigmbWF4U2FtcGxlQ291
bnQsIDEpKTsKKyAgICAgICAgLy8gVXNpbmcgbW9yZSB0aGFuIDQgc2FtcGxlcyBtaWdodCBiZSBv
dmVyaGVhZC4KKyAgICAgICAgbV9zYW1wbGVDb3VudCA9IHN0ZDo6bWluKDQsIG1heFNhbXBsZUNv
dW50KTsKKyAgICB9CisKKyNpZiBVU0UoT1BFTkdMX0VTKQorICAgIC8vIFVzZSBtdWx0aXNhbXBs
ZWRfcmVuZGVyX3RvX3RleHR1cmUgZXh0ZW5zaW9uIGlmIGF2YWlsYWJsZS4KKyAgICBpZiAobV9h
dHRyaWJ1dGVzLmFudGlhbGlhcyAmJiBleHRlbnNpb25zLmlzSW1hZ2luYXRpb24oKSkgeworICAg
ICAgICAvLyBmcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HIGlzIHNldCB1cCBpbiBz
dGFydEZyYW1lIGNhbGwuCisgICAgICAgIGlmICghdXNlRGVwdGhTdGVuY2lsKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoR0w6
OkZSQU1FQlVGRkVSLCBtX2ZyYW1lYnVmZmVyLT5vYmplY3QoKSk7CisgICAgICAgIG1fZGVwdGhT
dGVuY2lsQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGlmIChzdXBw
b3J0c1BhY2tlZERlcHRoU3RlbmNpbCkgeworICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZl
cihHTDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICBl
eHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMOjpSRU5ERVJC
VUZGRVIsIG1fc2FtcGxlQ291bnQsIGRlcHRoRm9ybWF0LCBtX3dpZHRoLCBtX2hlaWdodCk7Cisg
ICAgICAgICAgICBpZiAobV9hdHRyaWJ1dGVzLnN0ZW5jaWwpCisgICAgICAgICAgICAgICAgZ2wu
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBHTDo6U1RFTkNJTF9BVFRB
Q0hNRU5ULCBHTDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAg
ICAgICBpZiAobV9hdHRyaWJ1dGVzLmRlcHRoKQorICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgR0w6OkRFUFRIX0FUVEFDSE1FTlQsIEdM
OjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGlmIChtX2F0dHJpYnV0ZXMuc3RlbmNpbCkgeworICAgICAgICAgICAgICAg
IG1fc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICAgICAg
ICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0w6OlJFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVy
KTsKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdMOjpSRU5ERVJCVUZGRVIsIG1fc2FtcGxlQ291bnQsIHN0ZW5jaWxGb3JtYXQs
IG1fd2lkdGgsIG1faGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihHTDo6RlJBTUVCVUZGRVIsIEdMOjpTVEVOQ0lMX0FUVEFDSE1FTlQsIEdMOjpSRU5E
RVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobV9hdHRyaWJ1dGVzLmRlcHRoKSB7CisgICAgICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1
ZmZlcihHTDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAg
ICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTDo6
UkVOREVSQlVGRkVSLCBtX3NhbXBsZUNvdW50LCBkZXB0aEZvcm1hdCwgbV93aWR0aCwgbV9oZWln
aHQpOworICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFN
RUJVRkZFUiwgR0w6OkRFUFRIX0FUVEFDSE1FTlQsIEdMOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhT
dGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKE9QRU5HTF9FUykKKworICAgIGlmIChtX2F0dHJp
YnV0ZXMuYW50aWFsaWFzICYmIG1fY29udGV4dC5pc1dlYkdMMigpKSB7CisgICAgICAgIC8vIFVz
ZSBhbiBleHRyYSBGQk8gZm9yIG11bHRpc2FtcGxlIGlmIG11bHRpc2FtcGxlZF9yZW5kZXJfdG9f
dGV4dHVyZSBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICBtX3Jlc29sdmVkRkJPID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyID0gZ2wu
Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihHTDo6RlJB
TUVCVUZGRVIsIG1fZnJhbWVidWZmZXItPm9iamVjdCgpKTsKKyAgICAgICAgZ2wuYmluZFJlbmRl
cmJ1ZmZlcihHTDo6UkVOREVSQlVGRkVSLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOworICAg
ICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0w6OlJFTkRFUkJVRkZFUiwg
bV9zYW1wbGVDb3VudCwgY29sb3JGb3JtYXQsIG1fd2lkdGgsIG1faGVpZ2h0KTsKKyAgICAgICAg
Z2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBHTDo6Q09MT1JfQVRU
QUNITUVOVDAsIEdMOjpSRU5ERVJCVUZGRVIsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Cisg
ICAgICAgIGlmICh1c2VEZXB0aFN0ZW5jaWwpIHsKKyAgICAgICAgICAgIG1fZGVwdGhTdGVuY2ls
QnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgICAgICBpZiAoc3VwcG9y
dHNQYWNrZWREZXB0aFN0ZW5jaWwpIHsKKyAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVm
ZmVyKEdMOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAg
ICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0w6OlJFTkRFUkJVRkZFUiwg
bV9zYW1wbGVDb3VudCwgZGVwdGhGb3JtYXQsIG1fd2lkdGgsIG1faGVpZ2h0KTsKKyAgICAgICAg
ICAgICAgICBpZiAobV9hdHRyaWJ1dGVzLnN0ZW5jaWwpCisgICAgICAgICAgICAgICAgICAgIGds
LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgR0w6OlNURU5DSUxfQVRU
QUNITUVOVCwgR0w6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAg
ICAgICAgICAgIGlmIChtX2F0dHJpYnV0ZXMuZGVwdGgpCisgICAgICAgICAgICAgICAgICAgIGds
LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgR0w6OkRFUFRIX0FUVEFD
SE1FTlQsIEdMOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG1fYXR0cmlidXRlcy5zdGVuY2lsKSB7
CisgICAgICAgICAgICAgICAgICAgIG1fc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpOworICAgICAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKEdMOjpSRU5E
RVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgIGdsLnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTDo6UkVOREVSQlVGRkVSLCBtX3NhbXBsZUNvdW50
LCBzdGVuY2lsRm9ybWF0LCBtX3dpZHRoLCBtX2hlaWdodCk7CisgICAgICAgICAgICAgICAgICAg
IGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgR0w6OlNURU5DSUxf
QVRUQUNITUVOVCwgR0w6OlJFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1fYXR0cmlidXRlcy5kZXB0aCkgeworICAg
ICAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKEdMOjpSRU5ERVJCVUZGRVIsIG1f
ZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKEdMOjpSRU5ERVJCVUZGRVIsIG1fc2FtcGxlQ291bnQsIGRlcHRo
Rm9ybWF0LCBtX3dpZHRoLCBtX2hlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGdsLmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgR0w6OkRFUFRIX0FUVEFDSE1FTlQs
IEdMOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoR0w6OkZSQU1FQlVGRkVSKSA9PSBHTDo6RlJBTUVCVUZGRVJfQ09NUExF
VEU7CisgICAgfQorICAgIGlmICh1c2VEZXB0aFN0ZW5jaWwpIHsKKyAgICAgICAgZ2wuYmluZEZy
YW1lYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgbV9mcmFtZWJ1ZmZlci0+b2JqZWN0KCkpOworICAg
ICAgICBtX2RlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAg
ICAgICBpZiAoc3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwpIHsKKyAgICAgICAgICAgIGdsLmJp
bmRSZW5kZXJidWZmZXIoR0w6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwor
ICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShHTDo6UkVOREVSQlVGRkVSLCBkZXB0
aEZvcm1hdCwgbV93aWR0aCwgbV9oZWlnaHQpOworICAgICAgICAgICAgaWYgKG1fYXR0cmlidXRl
cy5zdGVuY2lsKQorICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
OjpGUkFNRUJVRkZFUiwgR0w6OlNURU5DSUxfQVRUQUNITUVOVCwgR0w6OlJFTkRFUkJVRkZFUiwg
bV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgaWYgKG1fYXR0cmlidXRlcy5kZXB0
aCkKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTDo6RlJBTUVC
VUZGRVIsIEdMOjpERVBUSF9BVFRBQ0hNRU5ULCBHTDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3Rl
bmNpbEJ1ZmZlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobV9hdHRyaWJ1
dGVzLnN0ZW5jaWwpIHsKKyAgICAgICAgICAgICAgICBtX3N0ZW5jaWxCdWZmZXIgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKEdM
OjpSRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgZ2wucmVu
ZGVyYnVmZmVyU3RvcmFnZShHTDo6UkVOREVSQlVGRkVSLCBzdGVuY2lsRm9ybWF0LCBtX3dpZHRo
LCBtX2hlaWdodCk7CisgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0w6OkZSQU1FQlVGRkVSLCBHTDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHTDo6UkVOREVSQlVGRkVS
LCBtX3N0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fYXR0
cmlidXRlcy5kZXB0aCkgeworICAgICAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0w6
OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgICAgIGds
LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0w6OlJFTkRFUkJVRkZFUiwgZGVwdGhGb3JtYXQsIG1fd2lk
dGgsIG1faGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihHTDo6RlJBTUVCVUZGRVIsIEdMOjpERVBUSF9BVFRBQ0hNRU5ULCBHTDo6UkVOREVSQlVGRkVS
LCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmgKaW5kZXggMzU5NTM1
ZWQ1ZDU3MDk1NjM1ZDI2ODZkZGEyOTg1YzA5YjMxMDI2MS4uNjkwYzI4YTgyZThiYzI2NzZkZjZi
MDYzNjliYWM2YjMyNThlODU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSV2ViR0xMYXllci5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiQ2FudmFzQmFz
ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgogI2lu
Y2x1ZGUgIldlYlhSTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CkBAIC00Myw5ICs0NSwxMSBAQCBjbGFzcyBIVE1MQ2FudmFzRWxl
bWVudDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3MgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OworY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKICNp
ZiBFTkFCTEUoV0VCR0wyKQogY2xhc3MgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDsKICNlbmRpZgor
Y2xhc3MgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjsKIGNsYXNzIFdlYlhSU2Vzc2lvbjsKIGNsYXNz
IFdlYlhSVmlldzsKIGNsYXNzIFdlYlhSVmlld3BvcnQ7CkBAIC02OCw3ICs3Miw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGFudGlhbGlhcygpIGNvbnN0OwogICAgIGJvb2wgaWdub3JlRGVwdGhWYWx1
ZXMoKSBjb25zdDsKIAotICAgIFdlYkdMRnJhbWVidWZmZXIqIGZyYW1lYnVmZmVyKCkgY29uc3Q7
CisgICAgY29uc3QgV2ViR0xGcmFtZWJ1ZmZlciogZnJhbWVidWZmZXIoKSBjb25zdDsKICAgICB1
bnNpZ25lZCBmcmFtZWJ1ZmZlcldpZHRoKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgZnJhbWVidWZm
ZXJIZWlnaHQoKSBjb25zdDsKIApAQCAtODIsOCArODYsMTIgQEAgcHVibGljOgogCiAgICAgSFRN
TENhbnZhc0VsZW1lbnQqIGNhbnZhcygpIGNvbnN0OwogCisgICAgLy8gV2ViWFJMYXllcgorICAg
IHZvaWQgc3RhcnRGcmFtZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYpIGZp
bmFsOworICAgIFBsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXIgZW5kRnJhbWUoKSBmaW5hbDsKKwog
cHJpdmF0ZToKLSAgICBXZWJYUldlYkdMTGF5ZXIoUmVmPFdlYlhSU2Vzc2lvbj4mJiwgV2ViWFJS
ZW5kZXJpbmdDb250ZXh0JiYsIGNvbnN0IFhSV2ViR0xMYXllckluaXQmKTsKKyAgICBXZWJYUldl
YkdMTGF5ZXIoUmVmPFdlYlhSU2Vzc2lvbj4mJiwgV2ViWFJSZW5kZXJpbmdDb250ZXh0JiYsIHN0
ZDo6dW5pcXVlX3B0cjxXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyPiYmLCBib29sIGFudGlhbGlhcywg
Ym9vbCBpZ25vcmVEZXB0aFZhbHVlcywgYm9vbCBpc0NvbXBvc2l0aW9uRW5hYmxlZCk7CiAKICAg
ICB2b2lkIGNvbXB1dGVWaWV3cG9ydHMoKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wdXRlTmF0
aXZlV2ViR0xGcmFtZWJ1ZmZlclJlc29sdXRpb24oKTsKQEAgLTkyLDcgKzEwMCw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBPcHRpb25hbDxG
bG9hdFJlY3Q+JikgZmluYWwgeyB9OwogICAgIHZvaWQgY2FudmFzUmVzaXplZChDYW52YXNCYXNl
JikgZmluYWw7CiAgICAgdm9pZCBjYW52YXNEZXN0cm95ZWQoQ2FudmFzQmFzZSYpIGZpbmFsIHsg
fTsKLQogICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBXZWJYUlJlbmRlcmlu
Z0NvbnRleHQgbV9jb250ZXh0OwogCkBAIC0xMDMsMTYgKzExMCw1MCBAQCBwcml2YXRlOgogCiAg
ICAgVmlld3BvcnREYXRhIG1fbGVmdFZpZXdwb3J0RGF0YTsKICAgICBWaWV3cG9ydERhdGEgbV9y
aWdodFZpZXdwb3J0RGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlcj4gbV9mcmFtZWJ1ZmZlcjsKICAgICBib29sIG1fYW50aWFsaWFzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faWdub3JlRGVwdGhWYWx1ZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0NvbXBv
c2l0aW9uRW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1fdmlld3BvcnRzRGlydHkgeyB0cnVl
IH07Cit9OworCitjbGFzcyBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyIHsKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgQXR0cmlidXRlcyB7CisgICAgICAgIGJvb2wgYWxwaGEgeyB0cnVlIH07CisgICAgICAg
IGJvb2wgYW50aWFsaWFzIHsgdHJ1ZSB9OworICAgICAgICBib29sIGRlcHRoIHsgdHJ1ZSB9Owor
ICAgICAgICBib29sIHN0ZW5jaWwgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlhST3BhcXVlRnJhbWVidWZmZXI+IGNyZWF0ZShQbGF0Zm9ybVhSOjpM
YXllckhhbmRsZSwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIEF0dHJpYnV0ZXMmJiwgdWlu
dDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCk7CisgICAgfldlYlhST3BhcXVlRnJhbWVidWZm
ZXIoKTsKKworICAgIFBsYXRmb3JtWFI6OkxheWVySGFuZGxlIGhhbmRsZSgpIGNvbnN0IHsgcmV0
dXJuIG1faGFuZGxlOyB9CisgICAgY29uc3QgV2ViR0xGcmFtZWJ1ZmZlciYgZnJhbWVidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2ZyYW1lYnVmZmVyLmdldCgpOyB9CisgICAgdWludDMyX3Qgd2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgdWludDMyX3QgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KIAotICAgIHN0cnVjdCB7Ci0gICAgICAgIFJlZlB0cjxX
ZWJHTEZyYW1lYnVmZmVyPiBvYmplY3Q7Ci0gICAgICAgIHVuc2lnbmVkIHdpZHRoIHsgMCB9Owot
ICAgICAgICB1bnNpZ25lZCBoZWlnaHQgeyAwIH07Ci0gICAgfSBtX2ZyYW1lYnVmZmVyOworICAg
IHZvaWQgc3RhcnRGcmFtZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6TGF5
ZXJEYXRhJik7CisgICAgdm9pZCBlbmRGcmFtZSgpOworCitwcml2YXRlOgorICAgIFdlYlhST3Bh
cXVlRnJhbWVidWZmZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUsIFJlZjxXZWJHTEZyYW1lYnVm
ZmVyPiYmLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgQXR0cmlidXRlcyYmLCB1aW50MzJf
dCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KTsKKworICAgIGJvb2wgc2V0dXBGcmFtZWJ1ZmZlcigp
OworCisgICAgUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUgbV9oYW5kbGU7CisgICAgUmVmPFdlYkdM
RnJhbWVidWZmZXI+IG1fZnJhbWVidWZmZXI7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgbV9jb250ZXh0OworICAgIEF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOworICAgIHVpbnQzMl90
IG1fd2lkdGggeyAwIH07CisgICAgdWludDMyX3QgbV9oZWlnaHQgeyAwIH07CisgICAgUGxhdGZv
cm1HTE9iamVjdCBtX2RlcHRoU3RlbmNpbEJ1ZmZlciB7IDAgfTsKKyAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IG1fc3RlbmNpbEJ1ZmZlciB7IDAgfTsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IG1fbXVsdGlz
YW1wbGVDb2xvckJ1ZmZlciB7IDAgfTsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IG1fcmVzb2x2ZWRG
Qk8geyAwIH07CisgICAgR0NHTGludCBtX3NhbXBsZUNvdW50IHsgMCB9OworICAgIFBsYXRmb3Jt
R0xPYmplY3QgbV9vcGFxdWVUZXh0dXJlIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkhhbmRlZG5l
c3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJIYW5kZWRuZXNzLmgKaW5kZXgg
OTMzMzAzNGQwY2Q0OWFjOGRlZTkwMmEwODE2NDQ4MDQzNzhjYmMyYy4uODU5ODVjY2FmYTZiY2Q0
NTZhYzBiNjQ1MmU3MDRhZTBiZmUwNzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9YUkhhbmRlZG5lc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1hSSGFuZGVkbmVzcy5oCkBAIC0yNywxMyArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShXRUJY
UikKIAorI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1l
bnVtIGNsYXNzIFhSSGFuZGVkbmVzcyB7Ci0gICAgTm9uZSwKLSAgICBMZWZ0LAotICAgIFJpZ2h0
LAotfTsKK3VzaW5nIFhSSGFuZGVkbmVzcyA9IFBsYXRmb3JtWFI6OlhSSGFuZGVkbmVzczsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5jcHAKaW5kZXggMjI2MzFhYjU1Mjk3MDU2Y2MwNjNk
NzQ0Njg5ZDNlMDMzY2EwZmE1Ny4uZmM4OGJmN2E3OWI2OTg0MDcwNDljZjYwMGI5NzE3ZWJkMzYy
YzIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291
cmNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNv
dXJjZUV2ZW50LmNwcApAQCAtMzAsOSArMzAsMTIgQEAKIAogI2luY2x1ZGUgIldlYlhSRnJhbWUu
aCIKICNpbmNsdWRlICJXZWJYUklucHV0U291cmNlLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoWFJJbnB1dFNvdXJjZUV2ZW50KTsKKwogUmVmPFhSSW5wdXRTb3VyY2VFdmVudD4g
WFJJbnB1dFNvdXJjZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3Qg
SW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgWFJJbnB1dFNvdXJjZUV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0
ZWQpKTsKQEAgLTQyLDcgKzQ1LDYgQEAgWFJJbnB1dFNvdXJjZUV2ZW50OjpYUklucHV0U291cmNl
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGkKICAgICA6IEV2
ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBtX2ZyYW1lKGluaXRpYWxp
emVyLmZyYW1lKQogICAgICwgbV9pbnB1dFNvdXJjZShpbml0aWFsaXplci5pbnB1dFNvdXJjZSkK
LSAgICAsIG1fYnV0dG9uSW5kZXgoaW5pdGlhbGl6ZXIuYnV0dG9uSW5kZXgpCiB7CiAgICAgQVNT
RVJUKG1fZnJhbWUpOwogICAgIEFTU0VSVChtX2lucHV0U291cmNlKTsKQEAgLTYwLDkgKzYyLDkg
QEAgY29uc3QgV2ViWFJJbnB1dFNvdXJjZSYgWFJJbnB1dFNvdXJjZUV2ZW50OjppbnB1dFNvdXJj
ZSgpIGNvbnN0CiAgICAgcmV0dXJuICptX2lucHV0U291cmNlOwogfQogCi1PcHRpb25hbDxpbnQ+
IFhSSW5wdXRTb3VyY2VFdmVudDo6YnV0dG9uSW5kZXgoKSBjb25zdAordm9pZCBYUklucHV0U291
cmNlRXZlbnQ6OnNldEZyYW1lQWN0aXZlKGJvb2wgYWN0aXZlKQogewotICAgIHJldHVybiBtX2J1
dHRvbkluZGV4OworICAgIG1fZnJhbWUtPnNldEFjdGl2ZShhY3RpdmUpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1hSSW5wdXRTb3VyY2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklu
cHV0U291cmNlRXZlbnQuaAppbmRleCA4YzdmYzA0NzQ3YTJiZjExZWE4YjJmYjdiNWNhOWY0NTRh
YzE1MzAzLi5lM2M1NDExMzQ1NTFiYzI3NWFmMGZjNDFiNjdlYWM0Mzk4MzNmMDkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZUV2ZW50LmgKQEAg
LTM3LDExICszNywxMSBAQCBjbGFzcyBXZWJYUkZyYW1lOwogY2xhc3MgV2ViWFJJbnB1dFNvdXJj
ZTsKIAogY2xhc3MgWFJJbnB1dFNvdXJjZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKKyAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFhSSW5wdXRTb3VyY2VFdmVudCk7CiBwdWJsaWM6CiAg
ICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewogICAgICAgICBSZWZQdHI8V2ViWFJGcmFtZT4g
ZnJhbWU7CiAgICAgICAgIFJlZlB0cjxXZWJYUklucHV0U291cmNlPiBpbnB1dFNvdXJjZTsKLSAg
ICAgICAgT3B0aW9uYWw8aW50PiBidXR0b25JbmRleDsKICAgICB9OwogCiAgICAgc3RhdGljIFJl
ZjxYUklucHV0U291cmNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5p
dCYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwpAQCAtNDksNyArNDksOSBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBXZWJYUkZyYW1lJiBmcmFtZSgpIGNvbnN0OwogICAgIGNvbnN0IFdlYlhS
SW5wdXRTb3VyY2UmIGlucHV0U291cmNlKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8aW50PiBidXR0
b25JbmRleCgpIGNvbnN0OworICAgIHZvaWQgc2V0RnJhbWVBY3RpdmUoYm9vbCk7CisKKyAgICBF
dmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFhSSW5w
dXRTb3VyY2VFdmVudEludGVyZmFjZVR5cGU7IH0KIAogcHJpdmF0ZToKICAgICBYUklucHV0U291
cmNlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0NoYW5n
ZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hh
bmdlRXZlbnQuaAppbmRleCAwM2E2NGI3YjY4ZDRmNjIyNmQ0MmQxZjI3ZWQyMzIyMWQyNmU4YTg0
Li5kZDU0NzhmOWZmYWM0MzE3MzhhZmI5ZWEyYzE5MTk4NGYzNzJkNWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZl
bnQuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxX
ZWJYUklucHV0U291cmNlPj4mIGFkZGVkKCkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxXZWJYUklucHV0U291cmNlPj4mIHJlbW92ZWQoKSBjb25zdDsKIAorICAgIEV2ZW50SW50ZXJm
YWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gWFJJbnB1dFNvdXJjZXND
aGFuZ2VFdmVudEludGVyZmFjZVR5cGU7IH0KKwogcHJpdmF0ZToKICAgICBYUklucHV0U291cmNl
c0NoYW5nZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUlRhcmdldFJheU1v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJUYXJnZXRSYXlNb2RlLmgKaW5k
ZXggMWZjYTQ0ZTQ1MWI5N2M1NjAyNmUxNDViNTIyMzMxZjgxNjViYWU3Zi4uYjczYjRlMGNkMWYz
NGI4YmIxODQ1YzVkNTA0MzQwNmQ3YTcxY2Q3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9YUlRhcmdldFJheU1vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1hSVGFyZ2V0UmF5TW9kZS5oCkBAIC0yOSwxMSArMjksOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgWFJUYXJnZXRSYXlNb2RlIHsKLSAgICBHYXplLAot
ICAgIFRyYWNrZWRQb2ludGVyLAotICAgIFNjcmVlbiwKLX07CisjaW5jbHVkZSAiUGxhdGZvcm1Y
Ui5oIgorCit1c2luZyBYUlRhcmdldFJheU1vZGUgPSBQbGF0Zm9ybVhSOjpYUlRhcmdldFJheU1v
ZGU7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBjZTlkNDQ4
YmY5MDJiMmYyNTAxOTE5MDZkOGE5MTFkZTdhM2QzNTY1Li5lNGZlYzc5OGNiMWY0YTlkNWZlMzMy
YTlmNjRmOWFiMWVhZDYyMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjE4Miw2ICsyMTgyLDggQEAg
cGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAKIHBsYXRmb3JtL3RleHQv
VGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCiBwbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5zdGFu
Y2UuY3BwIEBuby11bmlmeQogcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkV4dGVuc2lvbnMuY3Bw
IEBuby11bmlmeQorcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmNwcCBAbm8tdW5pZnkK
K3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJTd2FwY2hhaW4uY3BwIEBuby11bmlmeQogcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIEBuby11bmlmeQogcGx1Z2lucy9ET01N
aW1lVHlwZS5jcHAKIHBsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXgg
OWRmMzg5NWEyOTVjZTBkOTJlZjliYWE2NWY1OGFiMDM4Yzg5MzY0NC4uMjFkZWExZjA5NWU0ZmMw
MzFlNjI4ZGNhZmQxOTliMjkyODgxNGVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI4MTUsNiArMjgxNSwx
NCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZwogICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQs
IHBuYW1lKTsKICAgICAgICAgfQogICAgIH0KKworI2lmIEVOQUJMRShXRUJYUikKKyAgICBpZiAo
dGFyZ2V0RnJhbWVidWZmZXItPmlzT3BhcXVlKCkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyIiwgIkFuIG9wYXF1ZSBmcmFtZWJ1ZmZlcidzIGF0dGFjaG1lbnRz
IGNhbm5vdCBiZSBpbnNwZWN0ZWQgb3IgY2hhbmdlZCIpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmICghdmFsaWRhdGVOb25EZWZhdWx0RnJhbWVidWZm
ZXJBdHRhY2htZW50KGZ1bmN0aW9uTmFtZSwgYXR0YWNobWVudCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZy
YW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuY3BwCmluZGV4IGZkNjlmYWRmNjBlYjYwNWIxYjhkNDJmZDU1NzYyNGZmMDAxZmU2M2EuLjk1
YWJjMDMzZTJjNmVkNGZlYTI1OTQ5NDMzY2QxMzBkN2YzNWZiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC0zMDksNiArMzA5LDE3
IEBAIFJlZjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEZyYW1lYnVmZmVyOjpjcmVhdGUoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdM
RnJhbWVidWZmZXIoY3R4KSk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCWFIpCisKK1JlZjxXZWJHTEZy
YW1lYnVmZmVyPiBXZWJHTEZyYW1lYnVmZmVyOjpjcmVhdGVPcGFxdWUoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY3R4KQoreworICAgIGF1dG8gZnJhbWVidWZmZXIgPSBhZG9wdFJlZigqbmV3
IFdlYkdMRnJhbWVidWZmZXIoY3R4KSk7CisgICAgZnJhbWVidWZmZXItPm1fb3BhcXVlID0gdHJ1
ZTsKKyAgICByZXR1cm4gZnJhbWVidWZmZXI7Cit9CisKKyNlbmRpZgorCiBXZWJHTEZyYW1lYnVm
ZmVyOjpXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAg
ICA6IFdlYkdMQ29udGV4dE9iamVjdChjdHgpCiAgICAgLCBtX2hhc0V2ZXJCZWVuQm91bmQoZmFs
c2UpCkBAIC00ODksNiArNTAwLDE2IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmdldENv
bG9yQnVmZmVyRm9ybWF0KCkgY29uc3QKIAogR0NHTGVudW0gV2ViR0xGcmFtZWJ1ZmZlcjo6Y2hl
Y2tTdGF0dXMoY29uc3QgY2hhcioqIHJlYXNvbikgY29uc3QKIHsKKyNpZiBFTkFCTEUoV0VCWFIp
CisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jb3BhcXVlLWZy
YW1lYnVmZmVyCisgICAgaWYgKG1fb3BhcXVlKSB7CisgICAgICAgIGlmIChtX29wYXF1ZUFjdGl2
ZSkKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9DT01QTEVURTsKKyAgICAgICAg
KnJlYXNvbiA9ICJBbiBvcGFxdWUgZnJhbWVidWZmZXIgaXMgY29uc2lkZXJlZCBpbmNvbXBsZXRl
IG91dHNpZGUgb2YgYSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOworICAgICAgICByZXR1cm4gR0xf
RlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisgICAgfQorI2VuZGlmCisKICAgICB1bnNpZ25lZCBp
bnQgY291bnQgPSAwOwogICAgIEdDR0xzaXplaSB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CiAgICAg
Ym9vbCBoYXZlRGVwdGggPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuaAppbmRleCA3YjZkZjFmNzI1NzQ4Zjg5Y2NkYTQ2YTg0Y2Q3YzM2MjQ5
OGEyZGYyLi4zMTRkNTFmNjk5ZjRhNzAzNDhhY2VkNTMxMzdjYTE4NzMzNzlhY2Y2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCkBAIC03NCw2ICs3
NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTEZyYW1lYnVmZmVyKCk7CiAKICAgICBz
dGF0aWMgUmVmPFdlYkdMRnJhbWVidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIHN0YXRpYyBSZWY8V2ViR0xGcmFtZWJ1ZmZl
cj4gY3JlYXRlT3BhcXVlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyNlbmRpZgogCiAg
ICAgdm9pZCBzZXRBdHRhY2htZW50Rm9yQm91bmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleFRhcmdldCwgV2ViR0xUZXh0dXJlKiwg
R0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcik7CiAgICAgdm9pZCBzZXRBdHRhY2htZW50Rm9y
Qm91bmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFdl
YkdMUmVuZGVyYnVmZmVyKik7CkBAIC0xMTYsNiArMTE5LDExIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWRkTWVtYmVyc1RvT3BhcXVlUm9vdHMoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEpT
Qzo6QWJzdHJhY3RTbG90VmlzaXRvciYpOwogCisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGJvb2wg
aXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZTsgfQorICAgIHZvaWQgc2V0T3BhcXVl
QWN0aXZlKGJvb2wgYWN0aXZlKSB7IG1fb3BhcXVlQWN0aXZlID0gYWN0aXZlOyB9CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmKTsKIApAQCAtMTUxLDYgKzE1OSwxMiBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPEdDR0xl
bnVtPiBtX2RyYXdCdWZmZXJzOwogICAgIFZlY3RvcjxHQ0dMZW51bT4gbV9maWx0ZXJlZERyYXdC
dWZmZXJzOworCisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGJvb2wgbV9vcGFxdWUgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9vcGFxdWVBY3RpdmUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9vcGFxdWVI
YXNTdGVuY2lsIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggYTI5NjAzNDFiNTE3ODMwZGY2NmU1Njc5NDdhODE3ZTViZDczZTI2Yy4u
YzlhOTQ0YzZlMTAyOWY0NGQzZDA0ZjI3MzM1MjBhOTEwZWM0OGQyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0z
MDUsNiArMzA1LDEzIEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdlCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAorI2lmIEVOQUJMRShXRUJYUikKKyAgICBpZiAobV9mcmFtZWJ1ZmZl
ckJpbmRpbmctPmlzT3BhcXVlKCkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyIiwgIkFuIG9wYXF1ZSBmcmFtZWJ1ZmZlcidzIGF0dGFjaG1lbnRzIGNhbm5vdCBi
ZSBpbnNwZWN0ZWQgb3IgY2hhbmdlZCIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisjZW5kaWYKKwogICAgIGF1dG8gb2JqZWN0ID0gbWFrZVJlZlB0cihtX2ZyYW1lYnVmZmVyQmlu
ZGluZy0+Z2V0QXR0YWNobWVudE9iamVjdChhdHRhY2htZW50KSk7CiAgICAgaWYgKCFvYmplY3Qp
IHsKICAgICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX09CSkVDVF9UWVBFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAyZmFjZDEyZDI4NGJj
YTdlNDU0M2RkN2I3ODJiYmNkOTJiY2I2ZTc0Li4yZGQ3MDcxNDAzNzY1ZmQ4MmFhZDkyMjQ2Y2Zm
OWMyOGE3NDMyYjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMjA1NCw2ICsyMDU0LDEzIEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlRnJhbWVidWZmZXIoV2ViR0xGcmFt
ZWJ1ZmZlciogZnJhbWVidWZmZXIpCiB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CiAKKyNpZiBFTkFCTEUoV0VCWFIpCisgICAgaWYgKGZyYW1lYnVmZmVy
ICYmIGZyYW1lYnVmZmVyLT5pc09wYXF1ZSgpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImRlbGV0ZUZyYW1lYnVmZmVy
IiwgIkFuIG9wYXF1ZSBmcmFtZWJ1ZmZlcidzIGF0dGFjaG1lbnRzIGNhbm5vdCBiZSBpbnNwZWN0
ZWQgb3IgY2hhbmdlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBp
ZiAoIWRlbGV0ZU9iamVjdChsb2NrZXIsIGZyYW1lYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0yNzM0LDYgKzI3NDEsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpm
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnUKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAi
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIiLCAibm8gZnJhbWVidWZmZXIgYm91bmQiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKworI2lmIEVOQUJMRShXRUJYUikKKyAgICBpZiAoZnJhbWVidWZm
ZXJCaW5kaW5nLT5pc09wYXF1ZSgpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
IiwgIkFuIG9wYXF1ZSBmcmFtZWJ1ZmZlcidzIGF0dGFjaG1lbnRzIGNhbm5vdCBiZSBpbnNwZWN0
ZWQgb3IgY2hhbmdlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBm
cmFtZWJ1ZmZlckJpbmRpbmctPnNldEF0dGFjaG1lbnRGb3JCb3VuZEZyYW1lYnVmZmVyKHRhcmdl
dCwgYXR0YWNobWVudCwgYnVmZmVyKTsKICAgICBhcHBseVN0ZW5jaWxUZXN0KCk7CiB9CkBAIC0y
NzU3LDYgKzI3NzIsMTMgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1
ZmZlclRleHR1cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGEKICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZnJhbWVi
dWZmZXJUZXh0dXJlMkQiLCAibm8gZnJhbWVidWZmZXIgYm91bmQiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKyNpZiBFTkFCTEUoV0VCWFIpCisgICAgaWYgKGZyYW1lYnVmZmVyQmluZGluZy0+
aXNPcGFxdWUoKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9PUEVSQVRJT04sICJmcmFtZWJ1ZmZlclRleHR1cmUyRCIsICJBbiBvcGFxdWUg
ZnJhbWVidWZmZXIncyBhdHRhY2htZW50cyBjYW5ub3QgYmUgaW5zcGVjdGVkIG9yIGNoYW5nZWQi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgZnJhbWVidWZmZXJCaW5k
aW5nLT5zZXRBdHRhY2htZW50Rm9yQm91bmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQs
IHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwsIDApOwogICAgIGFwcGx5U3RlbmNpbFRlc3QoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENv
bnN0YW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25z
dGFudHMuY3BwCmluZGV4IGM4NWUyNmE3OTlkZGM1ZDU1ODFjZTEyM2U1ZmZiMTczNTMyY2FkMzMu
LmZjMzk2MGYzOWY0NDZlMzU0MjVmMTQ0YWY4NzVhNWY5NGZiNjNjN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcApAQCAt
NDMsNiArNDMsMTUgQEAgY29uc3QgV1RGOjpTdHJpbmcmIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmdT
dHJpbmcoKQogICAgIHJldHVybiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nOwogfQogCisjaWYgRU5B
QkxFKFdFQlhSKQorLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1nYW1l
cGFkcy1tb2R1bGUvI2RvbS1nYW1lcGFkbWFwcGluZ3R5cGUteHItc3RhbmRhcmQKK2NvbnN0IFdU
Rjo6U3RyaW5nJiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZyA9ICJ4ci1z
dGFuZGFyZCI7CisgICAgcmV0dXJuIHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZzsKK30KKyNlbmRp
ZgorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaAppbmRleCA3ZTE2OWY0ZGE4Yjk4ZmU2
ZWZhYTFlMjMwZTJhNGU5MjRhMjM2NzMzLi42MzNhZmQ3M2QzNzQ3ZmFhM2EwOGFlNzU2Y2I0MzIx
NTEyNWQyNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dh
bWVwYWRDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dh
bWVwYWRDb25zdGFudHMuaApAQCAtNjIsNiArNjIsOSBAQCBleHRlcm4gY29uc3Qgc2l6ZV90IG51
bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhIb21lQnV0dG9uOwogZXh0ZXJuIGNvbnN0
IEdhbWVwYWRCdXR0b25Sb2xlIG1heGltdW1HYW1lcGFkQnV0dG9uOwogCiBjb25zdCBXVEY6OlN0
cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpOworI2lmIEVOQUJMRShXRUJYUikK
K2NvbnN0IFdURjo6U3RyaW5nJiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKTsKKyNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L1BsYXRmb3JtWFIuaAppbmRleCA1NmQ4YzZjOGJkYTJkMWI4NjgzMzMxZDFkMTJlNDZhYTEzZWMx
ZjE2Li4yNDU0NDMwNWJkMTFiZDc2NmRjNzZmZDk4M2NjY2UyZWZhNGE3YWU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC0xOSw2ICsxOSw4IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXNHTC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtNTEs
MTcgKzUzLDI3IEBAIGVudW0gY2xhc3MgRXllIHsKICAgICBSaWdodCwKIH07CiAKK3VzaW5nIExh
eWVySGFuZGxlID0gaW50OworCiAjaWYgRU5BQkxFKFdFQlhSKQordXNpbmcgSW5wdXRTb3VyY2VI
YW5kbGUgPSBpbnQ7CiAKLWNsYXNzIFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50IDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50PiB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB+VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSA9IGRlZmF1bHQ7CisvLyBo
dHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNlbnVtZGVmLXhyaGFuZGVkbmVz
cworZW51bSBjbGFzcyBYUkhhbmRlZG5lc3MgeworICAgIE5vbmUsCisgICAgTGVmdCwKKyAgICBS
aWdodCwKK307CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbkRpZEVuZCgpID0gMDsKLSAgICAv
LyBGSVhNRTogaGFuZGxlIGZyYW1lIHVwZGF0ZQotICAgIC8vIEZJWE1FOiBoYW5kbGUgdmlzaWJp
bGl0eSBjaGFuZ2VzCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNl
bnVtZGVmLXhydGFyZ2V0cmF5bW9kZQorZW51bSBjbGFzcyBYUlRhcmdldFJheU1vZGUgeworICAg
IEdhemUsCisgICAgVHJhY2tlZFBvaW50ZXIsCisgICAgU2NyZWVuLAogfTsKIAorY2xhc3MgVHJh
Y2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ7CisKIGNsYXNzIERldmljZSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxEZXZpY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGV2aWNlPiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGV2
aWNlKTsKQEAgLTgwLDYgKzkyLDE1IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzT3JpZW50
YXRpb25UcmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNr
aW5nOyB9CiAgICAgYm9vbCBzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fc3VwcG9ydHNWaWV3cG9ydFNjYWxpbmc7IH0KIAorICAgIC8vIFJldHVybnMgdGhlIHZhbHVl
IHRoYXQgdGhlIGRldmljZSdzIHJlY29tbWVuZGVkIHJlc29sdXRpb24gbXVzdCBiZSBtdWx0aXBs
aWVkIGJ5CisgICAgLy8gdG8geWllbGQgdGhlIGRldmljZSdzIG5hdGl2ZSBmcmFtZWJ1ZmZlciBy
ZXNvbHV0aW9uLgorICAgIHZpcnR1YWwgZG91YmxlIG5hdGl2ZUZyYW1lYnVmZmVyU2NhbGluZ0Zh
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIDEuMDsgfQorICAgIC8vIFJldHVybnMgdGhlIHZhbHVlIHRo
YXQgdGhlIGRldmljZSdzIHJlY29tbWVuZGVkIHJlc29sdXRpb24gbXVzdCBiZSBtdWx0aXBsaWVk
IGJ5CisgICAgLy8gdG8geWllbGQgdGhlIGRldmljZSdzIG1heCBmcmFtZWJ1ZmZlciByZXNvbHV0
aW9uLiBUaGlzIHJlc29sdXRpb24gY2FuIGJlIGxhcmdlciB0aGFuCisgICAgLy8gdGhlIG5hdGl2
ZSByZXNvbHV0aW9uIGlmIHRoZSBkZXZpY2Ugc3VwcG9ydHMgc3VwZXJzYW1wbGluZy4KKyAgICB2
aXJ0dWFsIGRvdWJsZSBtYXhGcmFtZWJ1ZmZlclNjYWxpbmdGYWN0b3IoKSBjb25zdCB7IHJldHVy
biBuYXRpdmVGcmFtZWJ1ZmZlclNjYWxpbmdGYWN0b3IoKTsgfQorCisKICAgICB2aXJ0dWFsIHZv
aWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSA9IDA7CiAgICAgdm9p
ZCBzZXRUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudChXZWFrUHRyPFRyYWNraW5nQW5kUmVuZGVy
aW5nQ2xpZW50PiYmIGNsaWVudCkgeyBtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50ID0gV1RG
TW92ZShjbGllbnQpOyB9CkBAIC04OCw2ICsxMDksOCBAQCBwdWJsaWM6CiAgICAgLy8gd2hlbiB0
aGUgcGxhdGZvcm0gaGFzIGNvbXBsZXRlZCBhbGwgc3RlcHMgdG8gc2h1dCBkb3duIHRoZSBYUiBz
ZXNzaW9uLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVSZWZlcmVuY2VTcGFjZShSZWZlcmVuY2VTcGFjZVR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIE9w
dGlvbmFsPExheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgs
IHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVMYXllcihMYXllckhhbmRsZSkgPSAwOwogCiAgICAgc3RydWN0IEZyYW1lRGF0YSB7CiAgICAg
ICAgIHN0cnVjdCBGbG9hdFF1YXRlcm5pb24gewpAQCAtMTIyLDE0ICsxNDUsNTQgQEAgcHVibGlj
OgogICAgICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGJvdW5kczsKICAgICAg
ICAgfTsKIAorICAgICAgICBzdHJ1Y3QgTGF5ZXJEYXRhIHsKKyAgICAgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3Qgb3BhcXVlVGV4dHVyZSB7IDAgfTsKKyAgICAgICAgfTsKKworICAgICAgICBzdHJ1
Y3QgSW5wdXRTb3VyY2VCdXR0b24geworICAgICAgICAgICAgYm9vbCB0b3VjaGVkIHsgZmFsc2Ug
fTsKKyAgICAgICAgICAgIGJvb2wgcHJlc3NlZCB7IGZhbHNlIH07CisgICAgICAgICAgICBmbG9h
dCBwcmVzc2VkVmFsdWUgeyAwIH07CisgICAgICAgIH07CisKKyAgICAgICAgc3RydWN0IElucHV0
U291cmNlUG9zZSB7CisgICAgICAgICAgICBQb3NlIHBvc2U7CisgICAgICAgICAgICBib29sIGlz
UG9zaXRpb25FbXVsYXRlZCB7IGZhbHNlIH07CisgICAgICAgIH07CisKKyAgICAgICAgc3RydWN0
IElucHV0U291cmNlIHsKKyAgICAgICAgICAgIElucHV0U291cmNlSGFuZGxlIGhhbmRsZSB7IDAg
fTsKKyAgICAgICAgICAgIFhSSGFuZGVkbmVzcyBoYW5kZW5lc3MgeyBYUkhhbmRlZG5lc3M6Ok5v
bmUgfTsKKyAgICAgICAgICAgIFhSVGFyZ2V0UmF5TW9kZSB0YXJnZXRSYXlNb2RlIHsgWFJUYXJn
ZXRSYXlNb2RlOjpHYXplIH07CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBwcm9maWxlczsK
KyAgICAgICAgICAgIElucHV0U291cmNlUG9zZSBwb2ludGVyT3JpZ2luOworICAgICAgICAgICAg
T3B0aW9uYWw8SW5wdXRTb3VyY2VQb3NlPiBncmlwT3JpZ2luOworICAgICAgICAgICAgVmVjdG9y
PElucHV0U291cmNlQnV0dG9uPiBidXR0b25zOworICAgICAgICAgICAgVmVjdG9yPGZsb2F0PiBh
eGVzOworICAgICAgICB9OworCiAgICAgICAgIGJvb2wgaXNUcmFja2luZ1ZhbGlkIHsgZmFsc2Ug
fTsKICAgICAgICAgYm9vbCBpc1Bvc2l0aW9uVmFsaWQgeyBmYWxzZSB9OwogICAgICAgICBib29s
IGlzUG9zaXRpb25FbXVsYXRlZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgc2hvdWxkUmVuZGVy
IHsgZmFsc2UgfTsKICAgICAgICAgbG9uZyBwcmVkaWN0ZWREaXNwbGF5VGltZSB7IDAgfTsKICAg
ICAgICAgUG9zZSBvcmlnaW47CiAgICAgICAgIE9wdGlvbmFsPFBvc2U+IGZsb29yVHJhbnNmb3Jt
OwogICAgICAgICBTdGFnZVBhcmFtZXRlcnMgc3RhZ2VQYXJhbWV0ZXJzOwogICAgICAgICBWZWN0
b3I8Vmlldz4gdmlld3M7CisgICAgICAgIEhhc2hNYXA8TGF5ZXJIYW5kbGUsIExheWVyRGF0YT4g
bGF5ZXJzOworICAgICAgICBWZWN0b3I8SW5wdXRTb3VyY2U+IGlucHV0U291cmNlczsKKyAgICB9
OworCisgICAgc3RydWN0IExheWVyVmlldyB7CisgICAgICAgIEV5ZSBleWUgeyBFeWU6Ok5vbmUg
fTsKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCB2aWV3cG9ydDsKKyAgICB9OworCisgICAgc3Ry
dWN0IExheWVyIHsKKyAgICAgICAgTGF5ZXJIYW5kbGUgaGFuZGxlIHsgMCB9OworICAgICAgICBi
b29sIHZpc2libGUgeyB0cnVlIH07CisgICAgICAgIFZlY3RvcjxMYXllclZpZXc+IHZpZXdzOwog
ICAgIH07CiAKICAgICBzdHJ1Y3QgVmlld0RhdGEgewpAQCAtMTQxLDYgKzIwNCw3IEBAIHB1Ymxp
YzoKIAogICAgIHVzaW5nIFJlcXVlc3RGcmFtZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChGcmFt
ZURhdGEmJik+OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2Fs
bGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdWJtaXRGcmFtZShWZWN0b3I8TGF5ZXI+
JiYpIHsgfTsKIHByb3RlY3RlZDoKICAgICBEZXZpY2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTE1Niw2
ICsyMjAsMTkgQEAgcHJvdGVjdGVkOgogICAgIFdlYWtQdHI8VHJhY2tpbmdBbmRSZW5kZXJpbmdD
bGllbnQ+IG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ7CiB9OwogCitjbGFzcyBUcmFja2lu
Z0FuZFJlbmRlcmluZ0NsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUcmFja2luZ0FuZFJl
bmRlcmluZ0NsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgflRyYWNraW5nQW5kUmVuZGVy
aW5nQ2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgLy8gVGhpcyBldmVudCBpcyB1c2VkIHRvIGVu
c3VyZSB0aGF0IGluaXRpYWwgaW5wdXRzb3VyY2VzY2hhbmdlIGV2ZW50cyBvY2N1ciBhZnRlciB0
aGUgaW5pdGlhbCBzZXNzaW9uIGlzIHJlc29sdmVkLgorICAgIC8vIFdlYnhSIGFwcHMgY2FuIHdh
aXQgZm9yIHRoZSBpbnB1dCBzb3VyY2UgZXZlbnRzIGJlZm9yZSBjYWxsaW5nIHJlcXVlc3RBbmlt
YXRpb25GcmFtZS4KKyAgICAvLyBQZXItZnJhbWUgaW5wdXQgc291cmNlIHVwZGF0ZXMgYXJlIGhh
bmRsZWQgdmlhIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHdoaWNoIGNhbGxzIERldmlj
ZTo6cmVxdWVzdEZyYW1lLgorICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uRGlkSW5pdGlhbGl6ZUlu
cHV0U291cmNlcyhWZWN0b3I8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNlc3Npb25EaWRFbmQoKSA9IDA7CisgICAgLy8gRklYTUU6IGhh
bmRsZSBmcmFtZSB1cGRhdGUKKyAgICAvLyBGSVhNRTogaGFuZGxlIHZpc2liaWxpdHkgY2hhbmdl
cworfTsKKwogY2xhc3MgSW5zdGFuY2UgewogcHVibGljOgogICAgIHN0YXRpYyBJbnN0YW5jZSYg
c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9jb2Nv
YS9QbGF0Zm9ybVhSQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL2NvY29hL1Bs
YXRmb3JtWFJDb2NvYS5oCmluZGV4IDkwMmMyODcyZTNkYjM3Mzg4OGNjZTdlYmYwZDYxYzZjMWE0
YzY5NzIuLmZhYzM4ZGFmZWNiYjA3NWYxZTYxMzFlODVjMzdmMDAzZGE4MzljNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL2NvY29hL1BsYXRmb3JtWFJDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL2NvY29hL1BsYXRmb3JtWFJDb2NvYS5oCkBA
IC0zNyw2ICszNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFj
ZShSZWZlcmVuY2VTcGFjZVR5cGUpIG92ZXJyaWRlIHsgfQogICAgIFZlY3RvcjxWaWV3RGF0YT4g
dmlld3MoU2Vzc2lvbk1vZGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfQogICAgIHZv
aWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIG92ZXJyaWRlIHsgfQorICAg
IE9wdGlvbmFsPExheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lk
dGgsIHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpu
dWxsb3B0OyB9OworICAgIHZvaWQgZGVsZXRlTGF5ZXIoTGF5ZXJIYW5kbGUpIG92ZXJyaWRlIHsg
fTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54
ci9PcGVuWFJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3Bl
blhSTGF5ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4M2MzMzdlMmUwMWUxYTIwOWQ1NjUyZDQzOWMzMDAx
Nzk2MjkzYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9v
cGVueHIvT3BlblhSTGF5ZXIuY3BwCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgSWdhbGlhLCBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk9wZW5Y
UkxheWVyLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFVTRShPUEVOWFIpCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgUGxhdGZvcm1YUiB7CisKKy8vIE9wZW5YUkxh
eWVyUHJvamVjdGlvbgorCitzdGQ6OnVuaXF1ZV9wdHI8T3BlblhSTGF5ZXJQcm9qZWN0aW9uPiBP
cGVuWFJMYXllclByb2plY3Rpb246OmNyZWF0ZShYckluc3RhbmNlIGluc3RhbmNlLCBYclNlc3Np
b24gc2Vzc2lvbiwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgaW50NjRfdCBmb3Jt
YXQsIHVpbnQzMl90IHNhbXBsZUNvdW50KQoreworICAgIGlmICghd2lkdGggfHwgIWhlaWdodCB8
fCAhc2FtcGxlQ291bnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBpbmZv
ID0gY3JlYXRlU3RydWN0dXJlPFhyU3dhcGNoYWluQ3JlYXRlSW5mbywgWFJfVFlQRV9TV0FQQ0hB
SU5fQ1JFQVRFX0lORk8+KCk7CisgICAgaW5mby5hcnJheVNpemUgPSAxOworICAgIGluZm8uZm9y
bWF0ID0gZm9ybWF0OworICAgIGluZm8ud2lkdGggPSB3aWR0aDsKKyAgICBpbmZvLmhlaWdodCA9
IGhlaWdodDsKKyAgICBpbmZvLm1pcENvdW50ID0gMTsKKyAgICBpbmZvLmZhY2VDb3VudCA9IDE7
CisgICAgaW5mby5hcnJheVNpemUgPSAxOworICAgIGluZm8uc2FtcGxlQ291bnQgPSBzYW1wbGVD
b3VudDsKKyAgICBpbmZvLnVzYWdlRmxhZ3MgPSBYUl9TV0FQQ0hBSU5fVVNBR0VfU0FNUExFRF9C
SVQgfCBYUl9TV0FQQ0hBSU5fVVNBR0VfQ09MT1JfQVRUQUNITUVOVF9CSVQ7CisKKyAgICBhdXRv
IHN3YXBjaGFpbiA9IE9wZW5YUlN3YXBjaGFpbjo6Y3JlYXRlKGluc3RhbmNlLCBzZXNzaW9uLCBp
bmZvKTsKKyAgICBpZiAoIXN3YXBjaGFpbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE9wZW5YUkxheWVyUHJvamVjdGlvbj4obmV3IE9wZW5Y
UkxheWVyUHJvamVjdGlvbihtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoV1RGTW92
ZShzd2FwY2hhaW4pKSkpOworfQorCitPcGVuWFJMYXllclByb2plY3Rpb246Ok9wZW5YUkxheWVy
UHJvamVjdGlvbihVbmlxdWVSZWY8T3BlblhSU3dhcGNoYWluPiYmIHN3YXBjaGFpbikKKyAgICA6
IG1fc3dhcGNoYWluKFdURk1vdmUoc3dhcGNoYWluKSkKKyAgICAsIG1fbGF5ZXJQcm9qZWN0aW9u
KGNyZWF0ZVN0cnVjdHVyZTxYckNvbXBvc2l0aW9uTGF5ZXJQcm9qZWN0aW9uLCBYUl9UWVBFX0NP
TVBPU0lUSU9OX0xBWUVSX1BST0pFQ1RJT04+KCkpCit7Cit9CisKK09wdGlvbmFsPERldmljZTo6
RnJhbWVEYXRhOjpMYXllckRhdGE+IE9wZW5YUkxheWVyUHJvamVjdGlvbjo6c3RhcnRGcmFtZSgp
Cit7CisgICAgYXV0byB0ZXh0dXJlID0gbV9zd2FwY2hhaW4tPmFjcXVpcmVJbWFnZSgpOworICAg
IGlmICghdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVy
biBEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhIHsgKnRleHR1cmUgfTsKK30KKworWHJDb21w
b3NpdGlvbkxheWVyQmFzZUhlYWRlciogT3BlblhSTGF5ZXJQcm9qZWN0aW9uOjplbmRGcmFtZShj
b25zdCBEZXZpY2U6OkxheWVyJiBsYXllciwgWHJTcGFjZSBzcGFjZSwgY29uc3QgVmVjdG9yPFhy
Vmlldz4mIGZyYW1lVmlld3MpCit7CisgICAgQVNTRVJUKGxheWVyLnZpZXdzLnNpemUoKSA9PSBm
cmFtZVZpZXdzLnNpemUoKSk7CisKKyAgICBhdXRvIHZpZXdDb3VudCA9IGZyYW1lVmlld3Muc2l6
ZSgpOworICAgIG1fcHJvamVjdGlvblZpZXdzLmZpbGwoY3JlYXRlU3RydWN0dXJlPFhyQ29tcG9z
aXRpb25MYXllclByb2plY3Rpb25WaWV3LCBYUl9UWVBFX0NPTVBPU0lUSU9OX0xBWUVSX1BST0pF
Q1RJT05fVklFVz4oKSwgdmlld0NvdW50KTsKKyAgICBtX2xheWVyUHJvamVjdGlvbi5sYXllckZs
YWdzID0gWFJfQ09NUE9TSVRJT05fTEFZRVJfQkxFTkRfVEVYVFVSRV9TT1VSQ0VfQUxQSEFfQklU
OworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCB2aWV3Q291bnQ7ICsraSkgeworICAgICAg
ICBtX3Byb2plY3Rpb25WaWV3c1tpXS5wb3NlID0gZnJhbWVWaWV3c1tpXS5wb3NlOworICAgICAg
ICBtX3Byb2plY3Rpb25WaWV3c1tpXS5mb3YgPSBmcmFtZVZpZXdzW2ldLmZvdjsKKyAgICAgICAg
bV9wcm9qZWN0aW9uVmlld3NbaV0uc3ViSW1hZ2Uuc3dhcGNoYWluID0gbV9zd2FwY2hhaW4tPnN3
YXBjaGFpbigpOworCisgICAgICAgIGF1dG8mIHZpZXdwb3J0ID0gbGF5ZXIudmlld3NbaV0udmll
d3BvcnQ7CisKKyAgICAgICAgbV9wcm9qZWN0aW9uVmlld3NbaV0uc3ViSW1hZ2UuaW1hZ2VSZWN0
Lm9mZnNldCA9IHsgdmlld3BvcnQueCgpLCB2aWV3cG9ydC55KCkgfTsKKyAgICAgICAgbV9wcm9q
ZWN0aW9uVmlld3NbaV0uc3ViSW1hZ2UuaW1hZ2VSZWN0LmV4dGVudCA9IHsgdmlld3BvcnQud2lk
dGgoKSwgdmlld3BvcnQuaGVpZ2h0KCkgfTsKKyAgICB9CisKKyAgICBtX2xheWVyUHJvamVjdGlv
bi5zcGFjZSA9IHNwYWNlOworICAgIG1fbGF5ZXJQcm9qZWN0aW9uLnZpZXdDb3VudCA9IG1fcHJv
amVjdGlvblZpZXdzLnNpemUoKTsKKyAgICBtX2xheWVyUHJvamVjdGlvbi52aWV3cyA9IG1fcHJv
amVjdGlvblZpZXdzLmRhdGEoKTsKKworICAgIG1fc3dhcGNoYWluLT5yZWxlYXNlSW1hZ2UoKTsK
KworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFhyQ29tcG9zaXRpb25MYXllckJhc2VIZWFk
ZXIqPigmbV9sYXllclByb2plY3Rpb24pOworfQorCisKK30gLy8gbmFtZXNwYWNlIFBsYXRmb3Jt
WFIKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikgJiYgVVNFKE9QRU5YUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg1
ZWExZTVjMGE0ZTUxNjM3Nzc5Yzg5NjkwOTA1ODk5ZjFmNmU5ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJMYXllci5oCkBAIC0wLDAg
KzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhLCBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFVTRShPUEVOWFIpCisKKyNpbmNsdWRlICJPcGVu
WFJTd2FwY2hhaW4uaCIKKyNpbmNsdWRlICJPcGVuWFJVdGlscy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtWFIuaCIKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBQbGF0Zm9y
bVhSIHsKKworY2xhc3MgT3BlblhSTGF5ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE9wZW5YUkxheWVyKTsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5PcGVuWFJMYXllcigpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgT3B0aW9uYWw8
RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gc3RhcnRGcmFtZSgpID0gMDsKKyAgICB2aXJ0
dWFsIFhyQ29tcG9zaXRpb25MYXllckJhc2VIZWFkZXIqIGVuZEZyYW1lKGNvbnN0IERldmljZTo6
TGF5ZXImLCBYclNwYWNlLCBjb25zdCBWZWN0b3I8WHJWaWV3PiYpID0gMDsKKworcHJvdGVjdGVk
OgorICAgIE9wZW5YUkxheWVyKCkgPSBkZWZhdWx0OworfTsKKworY2xhc3MgT3BlblhSTGF5ZXJQ
cm9qZWN0aW9uIGZpbmFsOiBwdWJsaWMgT3BlblhSTGF5ZXIgIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPcGVuWFJMYXllclByb2plY3Rp
b24pOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8T3BlblhSTGF5ZXJQcm9q
ZWN0aW9uPiBjcmVhdGUoWHJJbnN0YW5jZSwgWHJTZXNzaW9uLCB1aW50MzJfdCB3aWR0aCwgdWlu
dDMyX3QgaGVpZ2h0LCBpbnQ2NF90IGZvcm1hdCwgdWludDMyX3Qgc2FtcGxlQ291bnQpOworcHJp
dmF0ZToKKyAgICBPcGVuWFJMYXllclByb2plY3Rpb24oVW5pcXVlUmVmPE9wZW5YUlN3YXBjaGFp
bj4mJik7CisKKyAgICBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhPiBzdGFy
dEZyYW1lKCkgZmluYWw7CisgICAgWHJDb21wb3NpdGlvbkxheWVyQmFzZUhlYWRlciogZW5kRnJh
bWUoY29uc3QgRGV2aWNlOjpMYXllciYsIFhyU3BhY2UsIGNvbnN0IFZlY3RvcjxYclZpZXc+Jikg
ZmluYWw7CisKKyAgICBVbmlxdWVSZWY8T3BlblhSU3dhcGNoYWluPiBtX3N3YXBjaGFpbjsKKyAg
ICBYckNvbXBvc2l0aW9uTGF5ZXJQcm9qZWN0aW9uIG1fbGF5ZXJQcm9qZWN0aW9uOworICAgIFZl
Y3RvcjxYckNvbXBvc2l0aW9uTGF5ZXJQcm9qZWN0aW9uVmlldz4gbV9wcm9qZWN0aW9uVmlld3M7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhSCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpICYmIFVTRShPUEVOWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvT3BlblhSU3dhcGNoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L29wZW54ci9PcGVuWFJTd2FwY2hhaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlNGFkYjZlZDEyYTUyNzIx
ZWQxMDRiOGEzZTA4Y2U2OTkzMWI5ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNoYWluLmNwcApAQCAtMCwwICsxLDExMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEsIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFVTRShPUEVOWFIpCisjaW5jbHVkZSAiT3BlblhS
U3dhcGNoYWluLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgUGxh
dGZvcm1YUiB7CisKK3N0ZDo6dW5pcXVlX3B0cjxPcGVuWFJTd2FwY2hhaW4+IE9wZW5YUlN3YXBj
aGFpbjo6Y3JlYXRlKFhySW5zdGFuY2UgaW5zdGFuY2UsIFhyU2Vzc2lvbiBzZXNzaW9uLCBjb25z
dCBYclN3YXBjaGFpbkNyZWF0ZUluZm8mIGluZm8pCit7CisgICAgQVNTRVJUKHNlc3Npb24gIT0g
WFJfTlVMTF9IQU5ETEUpOworICAgIEFTU0VSVChpbmZvLmZhY2VDb3VudCA9PSAxKTsKKworICAg
IFhyU3dhcGNoYWluIHN3YXBjaGFpbiB7IFhSX05VTExfSEFORExFIH07CisgICAgYXV0byByZXN1
bHQgPSB4ckNyZWF0ZVN3YXBjaGFpbihzZXNzaW9uLCAmaW5mbywgJnN3YXBjaGFpbik7CisgICAg
UkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJv
cGVydGllcyIsIGluc3RhbmNlLCBudWxscHRyKTsKKyAgICBBU1NFUlQoc3dhcGNoYWluICE9IFhS
X05VTExfSEFORExFKTsKKworICAgIHVpbnQzMl90IGltYWdlQ291bnQ7CisgICAgcmVzdWx0ID0g
eHJFbnVtZXJhdGVTd2FwY2hhaW5JbWFnZXMoc3dhcGNoYWluLCAwLCAmaW1hZ2VDb3VudCwgbnVs
bHB0cik7CisgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZVN3YXBjaGFp
bkltYWdlcyIsIGluc3RhbmNlLCBudWxscHRyKTsKKyAgICBpZiAoIWltYWdlQ291bnQpIHsKKyAg
ICAgICAgTE9HKFhSLCAieHJFbnVtZXJhdGVTd2FwY2hhaW5JbWFnZXMoKTogbm8gaW1hZ2VzXG4i
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgVmVjdG9yPFhyU3dhcGNo
YWluSW1hZ2VPcGVuR0xLSFI+IGltYWdlQnVmZmVycyhpbWFnZUNvdW50LCBbXSB7CisgICAgICAg
IHJldHVybiBjcmVhdGVTdHJ1Y3R1cmU8WHJTd2FwY2hhaW5JbWFnZU9wZW5HTEtIUiwgWFJfVFlQ
RV9TV0FQQ0hBSU5fSU1BR0VfT1BFTkdMX0tIUj4oKTsKKyAgICB9KCkpOworCisgICAgVmVjdG9y
PFhyU3dhcGNoYWluSW1hZ2VCYXNlSGVhZGVyKj4gaW1hZ2VIZWFkZXJzID0gaW1hZ2VCdWZmZXJz
Lm1hcChbXShhdXRvJiBpbWFnZSkgbXV0YWJsZSB7CisgICAgICAgIHJldHVybiAoWHJTd2FwY2hh
aW5JbWFnZUJhc2VIZWFkZXIqKSAmaW1hZ2U7CisgICAgfSk7CisKKyAgICAvLyBHZXQgaW1hZ2Vz
IGZyb20gYW4gWHJTd2FwY2hhaW4KKyAgICByZXN1bHQgPSB4ckVudW1lcmF0ZVN3YXBjaGFpbklt
YWdlcyhzd2FwY2hhaW4sIGltYWdlQ291bnQsICZpbWFnZUNvdW50LCBpbWFnZUhlYWRlcnNbMF0p
OworICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVTd2FwY2hhaW5JbWFn
ZXMgd2l0aCBpbWFnZUNvdW50IiwgaW5zdGFuY2UsIG51bGxwdHIpOworCisgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxPcGVuWFJTd2FwY2hhaW4+KG5ldyBPcGVuWFJTd2FwY2hhaW4oaW5zdGFu
Y2UsIHNlc3Npb24sIHN3YXBjaGFpbiwgaW5mbywgV1RGTW92ZShpbWFnZUJ1ZmZlcnMpKSk7Cit9
CisKK09wZW5YUlN3YXBjaGFpbjo6T3BlblhSU3dhcGNoYWluKFhySW5zdGFuY2UgaW5zdGFuY2Us
IFhyU2Vzc2lvbiBzZXNzaW9uLCBYclN3YXBjaGFpbiBzd2FwY2hhaW4sIGNvbnN0IFhyU3dhcGNo
YWluQ3JlYXRlSW5mbyYgaW5mbywgVmVjdG9yPFhyU3dhcGNoYWluSW1hZ2VPcGVuR0xLSFI+JiYg
aW1hZ2VCdWZmZXJzKQorICAgIDogbV9pbnN0YW5jZShpbnN0YW5jZSkKKyAgICAsIG1fc2Vzc2lv
bihzZXNzaW9uKQorICAgICwgbV9zd2FwY2hhaW4oc3dhcGNoYWluKQorICAgICwgbV9jcmVhdGVJ
bmZvKGluZm8pCisgICAgLCBtX2ltYWdlQnVmZmVycyhXVEZNb3ZlKGltYWdlQnVmZmVycykpCit7
Cit9CisKK09wZW5YUlN3YXBjaGFpbjo6fk9wZW5YUlN3YXBjaGFpbigpCit7CisgICAgaWYgKG1f
YWNxdWlyZWRUZXh0dXJlKQorICAgICAgICByZWxlYXNlSW1hZ2UoKTsKKyAgICBpZiAobV9zd2Fw
Y2hhaW4gIT0gWFJfTlVMTF9IQU5ETEUpCisgICAgICAgIHhyRGVzdHJveVN3YXBjaGFpbihtX3N3
YXBjaGFpbik7Cit9CisKK09wdGlvbmFsPFBsYXRmb3JtR0xPYmplY3Q+IE9wZW5YUlN3YXBjaGFp
bjo6YWNxdWlyZUltYWdlKCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIW1f
YWNxdWlyZWRUZXh0dXJlICwgIkV4cGVjdGVkIG5vIGFjcXVpcmVkIGltYWdlcy4gUmVsZWFzZUlt
YWdlIG5vdCBjYWxsZWQ/Iik7CisKKyAgICBhdXRvIGFjcXVpcmVJbmZvID0gY3JlYXRlU3RydWN0
dXJlPFhyU3dhcGNoYWluSW1hZ2VBY3F1aXJlSW5mbywgWFJfVFlQRV9TV0FQQ0hBSU5fSU1BR0Vf
QUNRVUlSRV9JTkZPPigpOworICAgIHVpbnQzMl90IHN3YXBjaGFpbkltYWdlSW5kZXggPSAwOwor
ICAgIGF1dG8gcmVzdWx0ID0geHJBY3F1aXJlU3dhcGNoYWluSW1hZ2UobV9zd2FwY2hhaW4sICZh
Y3F1aXJlSW5mbywgJnN3YXBjaGFpbkltYWdlSW5kZXgpOworICAgIFJFVFVSTl9JRl9GQUlMRUQo
cmVzdWx0LCAieHJBY3F1aXJlU3dhcGNoYWluSW1hZ2UiLCBtX2luc3RhbmNlLCBXVEY6Om51bGxv
cHQpOworCisgICAgUkVMRUFTRV9BU1NFUlQoc3dhcGNoYWluSW1hZ2VJbmRleCA8IG1faW1hZ2VC
dWZmZXJzLnNpemUoKSk7CisKKyAgICBhdXRvIHdhaXRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhy
U3dhcGNoYWluSW1hZ2VXYWl0SW5mbywgWFJfVFlQRV9TV0FQQ0hBSU5fSU1BR0VfV0FJVF9JTkZP
PigpOworICAgIHdhaXRJbmZvLnRpbWVvdXQgPSBYUl9JTkZJTklURV9EVVJBVElPTjsKKyAgICBy
ZXN1bHQgPSB4cldhaXRTd2FwY2hhaW5JbWFnZShtX3N3YXBjaGFpbiwgJndhaXRJbmZvKTsKKyAg
ICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyV2FpdFN3YXBjaGFpbkltYWdlIiwgbV9pbnN0
YW5jZSwgV1RGOjpudWxsb3B0KTsKKworICAgIG1fYWNxdWlyZWRUZXh0dXJlID0gbV9pbWFnZUJ1
ZmZlcnNbc3dhcGNoYWluSW1hZ2VJbmRleF0uaW1hZ2U7CisKKyAgICByZXR1cm4gbV9hY3F1aXJl
ZFRleHR1cmU7Cit9CisKK3ZvaWQgT3BlblhSU3dhcGNoYWluOjpyZWxlYXNlSW1hZ2UoKQorewor
ICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShtX2FjcXVpcmVkVGV4dHVyZSwgIkV4cGVj
dGVkIGEgdmFsaWQgYWNxdWlyZWQgaW1hZ2UuIEFjcXVpcmVJbWFnZSBub3QgY2FsbGVkPyIpOwor
CisgICAgYXV0byByZWxlYXNlSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclN3YXBjaGFpbkltYWdl
UmVsZWFzZUluZm8sIFhSX1RZUEVfU1dBUENIQUlOX0lNQUdFX1JFTEVBU0VfSU5GTz4oKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IHhyUmVsZWFzZVN3YXBjaGFpbkltYWdlKG1fc3dhcGNoYWluLCAmcmVs
ZWFzZUluZm8pOworICAgIExPR19JRl9GQUlMRUQocmVzdWx0LCAieHJSZWxlYXNlU3dhcGNoYWlu
SW1hZ2UiLCBtX2luc3RhbmNlKTsKKworICAgIG1fYWNxdWlyZWRUZXh0dXJlID0gMDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgUGxhdGZvcm1YUgorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKSAmJiBV
U0UoT1BFTlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlN3YXBjaGFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlN3YXBjaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkOGQzMTcyZTVkMzA0YWM0NGFmYmM2ZmExN2E1
M2Q2ZDNiYzE3YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvT3BlblhSU3dhcGNoYWluLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBJZ2FsaWEsIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJY
UikgJiYgVVNFKE9QRU5YUikKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisjaW5j
bHVkZSAiT3BlblhSVXRpbHMuaCIKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFBsYXRmb3JtWFIgeworCitjbGFzcyBP
cGVuWFJTd2FwY2hhaW4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE9wZW5YUlN3YXBjaGFpbik7CitwdWJsaWM6CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxPcGVuWFJTd2FwY2hhaW4+IGNyZWF0ZShYckluc3RhbmNlLCBYclNlc3Np
b24sIGNvbnN0IFhyU3dhcGNoYWluQ3JlYXRlSW5mbyYpOworICAgIH5PcGVuWFJTd2FwY2hhaW4o
KTsKKworICAgIE9wdGlvbmFsPFBsYXRmb3JtR0xPYmplY3Q+IGFjcXVpcmVJbWFnZSgpOworICAg
IHZvaWQgcmVsZWFzZUltYWdlKCk7CisgICAgWHJTd2FwY2hhaW4gc3dhcGNoYWluKCkgY29uc3Qg
eyByZXR1cm4gbV9zd2FwY2hhaW47IH0KKyAgICBpbnQzMl90IHdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV9jcmVhdGVJbmZvLndpZHRoOyB9CisgICAgaW50MzJfdCBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX2NyZWF0ZUluZm8uaGVpZ2h0OyB9CisKK3ByaXZhdGU6CisgICAgT3BlblhSU3dhcGNo
YWluKFhySW5zdGFuY2UsIFhyU2Vzc2lvbiwgWHJTd2FwY2hhaW4sIGNvbnN0IFhyU3dhcGNoYWlu
Q3JlYXRlSW5mbyYsIFZlY3RvcjxYclN3YXBjaGFpbkltYWdlT3BlbkdMS0hSPiYmKTsKKworICAg
IFhySW5zdGFuY2UgbV9pbnN0YW5jZTsKKyAgICBYclNlc3Npb24gbV9zZXNzaW9uOworICAgIFhy
U3dhcGNoYWluIG1fc3dhcGNoYWluOworICAgIFhyU3dhcGNoYWluQ3JlYXRlSW5mbyBtX2NyZWF0
ZUluZm87CisgICAgVmVjdG9yPFhyU3dhcGNoYWluSW1hZ2VPcGVuR0xLSFI+IG1faW1hZ2VCdWZm
ZXJzOworICAgIFBsYXRmb3JtR0xPYmplY3QgbV9hY3F1aXJlZFRleHR1cmUgeyAwIH07Cit9Owor
CisKK30gLy8gbmFtZXNwYWNlIFBsYXRmb3JtWFIKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikg
JiYgVVNFKE9QRU5YUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9PcGVuWFJVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKaW5kZXggMDg1ODE0ZmQwMGJhODhhZGUyNGI1OGJmNzkyODhiZmYxODU2OGM0
Mi4uNjJjNWNiMWE2YmQ3ZjhjYTQ0MWE2NDYwYmY3ZThiNjZjODkwZTY3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKQEAgLTcwLDYgKzcw
LDExIEBAIGlubGluZSBTdHJpbmcgcmVzdWx0VG9TdHJpbmcoWHJSZXN1bHQgdmFsdWUsIFhySW5z
dGFuY2UgaW5zdGFuY2UpCiAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgfQogCisjZGVmaW5lIExPR19JRl9GQUlMRUQocmVzdWx0LCBjYWxsLCBpbnN0YW5jZSwg
Li4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYg
KFhSX0ZBSUxFRChyZXN1bHQpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExPRyhYUiwgIiVzICVzOiAl
c1xuIiwgX19mdW5jX18sIGNhbGwsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwgaW5zdGFuY2UpLnV0
ZjgoKS5kYXRhKCkpOworCisKIGlubGluZSBEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSBYclBvc2Vm
VG9Qb3NlKFhyUG9zZWYgcG9zZSkKIHsKICAgICBEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSByZXN1
bHQ7CkBAIC04MSw3ICs4Niw3IEBAIGlubGluZSBEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSBYclBv
c2VmVG9Qb3NlKFhyUG9zZWYgcG9zZSkKIGlubGluZSBEZXZpY2U6OkZyYW1lRGF0YTo6VmlldyB4
clZpZXdUb1Bvc2UoWHJWaWV3IHZpZXcpCiB7CiAgICAgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXcg
cG9zZTsKLSAgICBwb3NlLnByb2plY3Rpb24gPSBEZXZpY2U6OkZyYW1lRGF0YTo6Rm92IHsgdmll
dy5mb3YuYW5nbGVVcCwgLXZpZXcuZm92LmFuZ2xlRG93biwgLXZpZXcuZm92LmFuZ2xlTGVmdCwg
dmlldy5mb3YuYW5nbGVSaWdodCB9OworICAgIHBvc2UucHJvamVjdGlvbiA9IERldmljZTo6RnJh
bWVEYXRhOjpGb3YgeyBmYWJzKHZpZXcuZm92LmFuZ2xlVXApLCBmYWJzKHZpZXcuZm92LmFuZ2xl
RG93biksIGZhYnModmlldy5mb3YuYW5nbGVMZWZ0KSwgZmFicyh2aWV3LmZvdi5hbmdsZVJpZ2h0
KSB9OwogICAgIHBvc2Uub2Zmc2V0ID0gWHJQb3NlZlRvUG9zZSh2aWV3LnBvc2UpOwogICAgIHJl
dHVybiBwb3NlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCmluZGV4IGE1ZWM5ZjE4ZDkwZDk5ODRiY2VlNTlkYjYy
Mzk0NjE1NDM3MTI4MjMuLjI0ZTkzNDY1N2RlNzZlZTA4NzI0YzU5Yjk3MGVkNGQyNzFiN2EyOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZv
cm1YUk9wZW5YUi5jcHAKQEAgLTI2LDE3ICsyNiwxMiBAQAogCiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3Ro
cmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgUGxhdGZvcm1YUiB7CiAKLQotc3RhdGljIGJvb2wgaXNTZXNzaW9uQWN0aXZlKFhy
U2Vzc2lvblN0YXRlIHN0YXRlKQotewotICAgIHJldHVybiBzdGF0ZSA9PSBYUl9TRVNTSU9OX1NU
QVRFX1ZJU0lCTEUgfHwgc3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9GT0NVU0VEOwotfQotCiBz
dGF0aWMgYm9vbCBpc1Nlc3Npb25SZWFkeShYclNlc3Npb25TdGF0ZSBzdGF0ZSkKIHsKICAgICBy
ZXR1cm4gc3RhdGUgPj0gWFJfU0VTU0lPTl9TVEFURV9SRUFEWSAgJiYgc3RhdGUgPCBYUl9TRVNT
SU9OX1NUQVRFX1NUT1BQSU5HOwpAQCAtNTIsNyArNDcsNyBAQCBSZWY8T3BlblhSRGV2aWNlPiBP
cGVuWFJEZXZpY2U6OmNyZWF0ZShYckluc3RhbmNlIGluc3RhbmNlLCBYclN5c3RlbUlkIHN5c3Rl
bSwgUgogT3BlblhSRGV2aWNlOjpPcGVuWFJEZXZpY2UoWHJJbnN0YW5jZSBpbnN0YW5jZSwgWHJT
eXN0ZW1JZCBzeXN0ZW0sIFJlZjxXb3JrUXVldWU+JiYgcXVldWUsIGNvbnN0IE9wZW5YUkV4dGVu
c2lvbnMmIGV4dGVuc2lvbnMpCiAgICAgOiBtX2luc3RhbmNlKGluc3RhbmNlKQogICAgICwgbV9z
eXN0ZW1JZChzeXN0ZW0pCi0gICAgLCBtX3F1ZXVlKHF1ZXVlKQorICAgICwgbV9xdWV1ZShXVEZN
b3ZlKHF1ZXVlKSkKICAgICAsIG1fZXh0ZW5zaW9ucyhleHRlbnNpb25zKQogewogfQpAQCAtMTEz
LDYgKzEwOCwxNyBAQCB2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVu
ZGVyaW5nKFNlc3Npb25Nb2RlIG1vZGUpCiAgICAgICAgIGF1dG8mIGNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxHTENvbnRleHQmPigqbV9lZ2wpOwogICAgICAgICBjb250ZXh0Lm1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVz
OworICAgICAgICBhdHRyaWJ1dGVzLmRlcHRoID0gZmFsc2U7CisgICAgICAgIGF0dHJpYnV0ZXMu
c3RlbmNpbCA9IGZhbHNlOworICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNlOwor
CisgICAgICAgIG1fZ2wgPSBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIG51
bGxwdHIpOworICAgICAgICBpZiAoIW1fZ2wpIHsKKyAgICAgICAgICAgIExPRyhYUiwgIkZhaWxl
ZCB0byBjcmVhdGUgYSB2YWxpZCBHcmFwaGljc0NvbnRleHRHTCIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKICAgICAgICAgbV9ncmFwaGljc0JpbmRpbmcuZGlzcGxheSA9IFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKTsKICAgICAgICAgbV9n
cmFwaGljc0JpbmRpbmcuY29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAgICAg
ICAgIG1fZ3JhcGhpY3NCaW5kaW5nLmNvbmZpZyA9IG1fZWdsLT5jb25maWcoKTsKQEAgLTEyNCw3
ICsxMzAsNyBAQCB2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVy
aW5nKFNlc3Npb25Nb2RlIG1vZGUpCiAgICAgICAgIHNlc3Npb25DcmVhdGVJbmZvLm5leHQgPSAm
bV9ncmFwaGljc0JpbmRpbmc7CiAKICAgICAgICAgcmVzdWx0ID0geHJDcmVhdGVTZXNzaW9uKG1f
aW5zdGFuY2UsICZzZXNzaW9uQ3JlYXRlSW5mbywgJm1fc2Vzc2lvbik7Ci0gICAgICAgIFJFVFVS
Tl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRp
ZXMiLCBtX2luc3RhbmNlKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckNy
ZWF0ZVNlc3Npb24iLCBtX2luc3RhbmNlKTsKIAogICAgICAgICAvLyBDcmVhdGUgdGhlIGRlZmF1
bHQgcmVmZXJlbmNlIHNwYWNlcwogICAgICAgICBtX2xvY2FsU3BhY2UgPSBjcmVhdGVSZWZlcmVu
Y2VTcGFjZShYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9MT0NBTCk7CkBAIC0xNzAsNzMgKzE3Niwx
MDggQEAgdm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFj
ayYmIGNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
YXV0byBmcmFtZVN0YXRlID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVTdGF0ZSwgWFJfVFlQRV9G
UkFNRV9TVEFURT4oKTsKKyAgICAgICAgbV9mcmFtZVN0YXRlID0gY3JlYXRlU3RydWN0dXJlPFhy
RnJhbWVTdGF0ZSwgWFJfVFlQRV9GUkFNRV9TVEFURT4oKTsKICAgICAgICAgYXV0byBmcmFtZVdh
aXRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVXYWl0SW5mbywgWFJfVFlQRV9GUkFNRV9X
QUlUX0lORk8+KCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0geHJXYWl0RnJhbWUobV9zZXNzaW9u
LCAmZnJhbWVXYWl0SW5mbywgJmZyYW1lU3RhdGUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHhy
V2FpdEZyYW1lKG1fc2Vzc2lvbiwgJmZyYW1lV2FpdEluZm8sICZtX2ZyYW1lU3RhdGUpOwogICAg
ICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyV2FpdEZyYW1lIiwgbV9pbnN0YW5jZSk7
Ci0gICAgICAgIFhyVGltZSBwcmVkaWN0ZWRUaW1lID0gZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNw
bGF5VGltZTsKIAogICAgICAgICBhdXRvIGZyYW1lQmVnaW5JbmZvID0gY3JlYXRlU3RydWN0dXJl
PFhyRnJhbWVCZWdpbkluZm8sIFhSX1RZUEVfRlJBTUVfQkVHSU5fSU5GTz4oKTsKICAgICAgICAg
cmVzdWx0ID0geHJCZWdpbkZyYW1lKG1fc2Vzc2lvbiwgJmZyYW1lQmVnaW5JbmZvKTsKICAgICAg
ICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckJlZ2luRnJhbWUiLCBtX2luc3RhbmNlKTsK
IAogICAgICAgICBEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGE7Ci0gICAgICAgIGZyYW1lRGF0
YS5wcmVkaWN0ZWREaXNwbGF5VGltZSA9IGZyYW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWU7
CisgICAgICAgIGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSA9IG1fZnJhbWVTdGF0ZS5w
cmVkaWN0ZWREaXNwbGF5VGltZTsKKyAgICAgICAgZnJhbWVEYXRhLnNob3VsZFJlbmRlciA9IG1f
ZnJhbWVTdGF0ZS5zaG91bGRSZW5kZXI7CiAgICAgICAgIGZyYW1lRGF0YS5zdGFnZVBhcmFtZXRl
cnMgPSBtX3N0YWdlUGFyYW1ldGVyczsKIAogICAgICAgICBBU1NFUlQobV9jb25maWd1cmF0aW9u
Vmlld3MuY29udGFpbnMobV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBlKSk7CiAgICAgICAg
IGNvbnN0IGF1dG8mIGNvbmZpZ3VyYXRpb25WaWV3ID0gbV9jb25maWd1cmF0aW9uVmlld3MuZ2V0
KG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlwZSk7CiAKICAgICAgICAgdWludDMyX3Qgdmll
d0NvdW50ID0gY29uZmlndXJhdGlvblZpZXcuc2l6ZSgpOwotICAgICAgICBWZWN0b3I8WHJWaWV3
PiB2aWV3cyh2aWV3Q291bnQsIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVTdHJ1Y3R1
cmU8WHJWaWV3LCBYUl9UWVBFX1ZJRVc+KCk7Ci0gICAgICAgIH0oKSk7CisgICAgICAgIG1fZnJh
bWVWaWV3cy5maWxsKGNyZWF0ZVN0cnVjdHVyZTxYclZpZXcsIFhSX1RZUEVfVklFVz4oKSwgdmll
d0NvdW50KTsKIAotCi0gICAgICAgIGlmIChpc1Nlc3Npb25BY3RpdmUobV9zZXNzaW9uU3RhdGUp
KSB7CisgICAgICAgIGlmIChtX2ZyYW1lU3RhdGUuc2hvdWxkUmVuZGVyKSB7CiAgICAgICAgICAg
ICAvLyBRdWVyeSBoZWFkIGxvY2F0aW9uCiAgICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0gY3Jl
YXRlU3RydWN0dXJlPFhyU3BhY2VMb2NhdGlvbiwgWFJfVFlQRV9TUEFDRV9MT0NBVElPTj4oKTsK
LSAgICAgICAgICAgIHhyTG9jYXRlU3BhY2UobV92aWV3U3BhY2UsIG1fbG9jYWxTcGFjZSwgZnJh
bWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGltZSwgJmxvY2F0aW9uKTsKKyAgICAgICAgICAgIHhy
TG9jYXRlU3BhY2UobV92aWV3U3BhY2UsIG1fbG9jYWxTcGFjZSwgbV9mcmFtZVN0YXRlLnByZWRp
Y3RlZERpc3BsYXlUaW1lLCAmbG9jYXRpb24pOwogICAgICAgICAgICAgZnJhbWVEYXRhLmlzVHJh
Y2tpbmdWYWxpZCA9IGxvY2F0aW9uLmxvY2F0aW9uRmxhZ3MgJiBYUl9TUEFDRV9MT0NBVElPTl9P
UklFTlRBVElPTl9WQUxJRF9CSVQ7CiAgICAgICAgICAgICBmcmFtZURhdGEuaXNQb3NpdGlvblZh
bGlkID0gbG9jYXRpb24ubG9jYXRpb25GbGFncyAmIFhSX1NQQUNFX0xPQ0FUSU9OX1BPU0lUSU9O
X1ZBTElEX0JJVDsKICAgICAgICAgICAgIGZyYW1lRGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQgPSBs
b2NhdGlvbi5sb2NhdGlvbkZsYWdzICYgWFJfU1BBQ0VfTE9DQVRJT05fUE9TSVRJT05fVFJBQ0tF
RF9CSVQ7CiAKICAgICAgICAgICAgIGlmIChmcmFtZURhdGEuaXNUcmFja2luZ1ZhbGlkKQogICAg
ICAgICAgICAgICAgIGZyYW1lRGF0YS5vcmlnaW4gPSBYclBvc2VmVG9Qb3NlKGxvY2F0aW9uLnBv
c2UpOwotICAgICAgICAgICAgCiAKICAgICAgICAgICAgIGF1dG8gdmlld0xvY2F0ZUluZm8gPSBj
cmVhdGVTdHJ1Y3R1cmU8WHJWaWV3TG9jYXRlSW5mbywgWFJfVFlQRV9WSUVXX0xPQ0FURV9JTkZP
PigpOwotICAgICAgICAgICAgdmlld0xvY2F0ZUluZm8uZGlzcGxheVRpbWUgPSBwcmVkaWN0ZWRU
aW1lOwotICAgICAgICAgICAgdmlld0xvY2F0ZUluZm8uc3BhY2UgPSBtX2xvY2FsU3BhY2U7Cisg
ICAgICAgICAgICB2aWV3TG9jYXRlSW5mby5kaXNwbGF5VGltZSA9IG1fZnJhbWVTdGF0ZS5wcmVk
aWN0ZWREaXNwbGF5VGltZTsKKyAgICAgICAgICAgIHZpZXdMb2NhdGVJbmZvLnNwYWNlID0gbV92
aWV3U3BhY2U7CiAKICAgICAgICAgICAgIGF1dG8gdmlld1N0YXRlID0gY3JlYXRlU3RydWN0dXJl
PFhyVmlld1N0YXRlLCBYUl9UWVBFX1ZJRVdfU1RBVEU+KCk7CiAgICAgICAgICAgICB1aW50MzJf
dCB2aWV3Q291bnRPdXRwdXQ7Ci0gICAgICAgICAgICByZXN1bHQgPSB4ckxvY2F0ZVZpZXdzKG1f
c2Vzc2lvbiwgJnZpZXdMb2NhdGVJbmZvLCAmdmlld1N0YXRlLCB2aWV3Q291bnQsICZ2aWV3Q291
bnRPdXRwdXQsIHZpZXdzLmRhdGEoKSk7CisgICAgICAgICAgICByZXN1bHQgPSB4ckxvY2F0ZVZp
ZXdzKG1fc2Vzc2lvbiwgJnZpZXdMb2NhdGVJbmZvLCAmdmlld1N0YXRlLCB2aWV3Q291bnQsICZ2
aWV3Q291bnRPdXRwdXQsIG1fZnJhbWVWaWV3cy5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKCFY
Ul9GQUlMRUQocmVzdWx0KSkgewotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdmlldyA6IHZp
ZXdzKQorICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdmlldyA6IG1fZnJhbWVWaWV3cykKICAg
ICAgICAgICAgICAgICAgICAgZnJhbWVEYXRhLnZpZXdzLmFwcGVuZCh4clZpZXdUb1Bvc2Uodmll
dykpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBRdWVyeSBmbG9vciB0cmFuc2Zv
cm0KICAgICAgICAgICAgIGlmIChtX3N0YWdlU3BhY2UgIT0gWFJfTlVMTF9IQU5ETEUpIHsKICAg
ICAgICAgICAgICAgICBhdXRvIGZsb29yTG9jYXRpb24gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTcGFj
ZUxvY2F0aW9uLCBYUl9UWVBFX1NQQUNFX0xPQ0FUSU9OPigpOwotICAgICAgICAgICAgICAgIHhy
TG9jYXRlU3BhY2UobV9zdGFnZVNwYWNlLCBtX2xvY2FsU3BhY2UsIGZyYW1lU3RhdGUucHJlZGlj
dGVkRGlzcGxheVRpbWUsICZmbG9vckxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICB4ckxvY2F0
ZVNwYWNlKG1fc3RhZ2VTcGFjZSwgbV9sb2NhbFNwYWNlLCBtX2ZyYW1lU3RhdGUucHJlZGljdGVk
RGlzcGxheVRpbWUsICZmbG9vckxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICBmcmFtZURhdGEu
Zmxvb3JUcmFuc2Zvcm0gPSB7IFhyUG9zZWZUb1Bvc2UoZmxvb3JMb2NhdGlvbi5wb3NlKSB9Owog
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGF1dG8mIGxheWVyIDogbV9sYXllcnMp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGxheWVyRGF0YSA9IGxheWVyLnZhbHVlLT5zdGFydEZy
YW1lKCk7CisgICAgICAgICAgICAgICAgaWYgKGxheWVyRGF0YSkKKyAgICAgICAgICAgICAgICAg
ICAgZnJhbWVEYXRhLmxheWVycy5hZGQobGF5ZXIua2V5LCAqbGF5ZXJEYXRhKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3Lmtocm9u
b3Mub3JnL3JlZ2lzdHJ5L09wZW5YUi9zcGVjcy8xLjAvbWFuL2h0bWwvWHJGcmFtZVN0YXRlLmh0
bWwKKyAgICAgICAgICAgIC8vIFdoZW4gc2hvdWxkUmVuZGVyIGlzIGZhbHNlIHRoZSBhcHBsaWNh
dGlvbiBzaG91bGQgYXZvaWQgaGVhdnkgR1BVIHdvcmsgd2hlcmUgcG9zc2libGUsCisgICAgICAg
ICAgICAvLyBmb3IgZXhhbXBsZSBieSBza2lwcGluZyBsYXllciByZW5kZXJpbmcgYW5kIHRoZW4g
b21pdHRpbmcgdGhvc2UgbGF5ZXJzIHdoZW4gY2FsbGluZyB4ckVuZEZyYW1lLgorICAgICAgICAg
ICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgT3BlblhSRGV2aWNl
OjpzdWJtaXRGcmFtZSB0byBmaW5pc2ggdGhlIGZyYW1lLgorICAgICAgICAgICAgYXV0byBmcmFt
ZUVuZEluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZUVuZEluZm8sIFhSX1RZUEVfRlJBTUVf
RU5EX0lORk8+KCk7CisgICAgICAgICAgICBmcmFtZUVuZEluZm8uZGlzcGxheVRpbWUgPSBtX2Zy
YW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWU7CisgICAgICAgICAgICBmcmFtZUVuZEluZm8u
ZW52aXJvbm1lbnRCbGVuZE1vZGUgPSBYUl9FTlZJUk9OTUVOVF9CTEVORF9NT0RFX09QQVFVRTsK
KyAgICAgICAgICAgIGZyYW1lRW5kSW5mby5sYXllckNvdW50ID0gMDsKKyAgICAgICAgICAgIGZy
YW1lRW5kSW5mby5sYXllcnMgPSBudWxscHRyOworICAgICAgICAgICAgTE9HX0lGX0ZBSUxFRCh4
ckVuZEZyYW1lKG1fc2Vzc2lvbiwgJmZyYW1lRW5kSW5mbyksICJ4ckVuZEZyYW1lIiwgbV9pbnN0
YW5jZSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtmcmFtZURhdGEg
PSBXVEZNb3ZlKGZyYW1lRGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGZyYW1lRGF0YSkpOwogICAgICAg
ICB9KTsKKyAgICB9KTsKK30KIAotCi0gICAgICAgIFZlY3Rvcjxjb25zdCBYckNvbXBvc2l0aW9u
TGF5ZXJCYXNlSGVhZGVyKj4gbGF5ZXJzOwordm9pZCBPcGVuWFJEZXZpY2U6OnN1Ym1pdEZyYW1l
KFZlY3RvcjxEZXZpY2U6OkxheWVyPiYmIGxheWVycykKK3sgICAKKyAgICBtX3F1ZXVlLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxheWVycyA9IFdURk1v
dmUobGF5ZXJzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKG1fZnJhbWVTdGF0ZS5zaG91
bGRSZW5kZXIpOworICAgICAgICBWZWN0b3I8Y29uc3QgWHJDb21wb3NpdGlvbkxheWVyQmFzZUhl
YWRlcio+IGZyYW1lRW5kTGF5ZXJzOworICAgICAgICBpZiAobV9mcmFtZVN0YXRlLnNob3VsZFJl
bmRlcikgeworICAgICAgICAgICAgZm9yIChhdXRvJiBsYXllciA6IGxheWVycykgeworICAgICAg
ICAgICAgICAgIGF1dG8gaXQgPSBtX2xheWVycy5maW5kKGxheWVyLmhhbmRsZSk7CisgICAgICAg
ICAgICAgICAgaWYgKGl0ID09IG1fbGF5ZXJzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IExPRygiRGlkbid0IGZpbmQgYSBPcGVuWFJMYXllciB3aXRoICVkIGhhbmRsZSIsIGxheWVyLmhh
bmRsZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBhdXRvIGhlYWRlciA9IGl0LT52YWx1ZS0+ZW5kRnJhbWUobGF5ZXIs
IG1fdmlld1NwYWNlLCBtX2ZyYW1lVmlld3MpOworICAgICAgICAgICAgICAgIGlmICghaGVhZGVy
KSB7CisgICAgICAgICAgICAgICAgICAgIExPRygiZW5kRnJhbWUoKSBjYWxsIGZhaWxlZCBpbiBP
cGVuWFJMYXllciB3aXRoICVkIGhhbmRsZSIsIGxheWVyLmhhbmRsZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ZnJhbWVFbmRMYXllcnMuYXBwZW5kKGhlYWRlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
IAogICAgICAgICBhdXRvIGZyYW1lRW5kSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lRW5k
SW5mbywgWFJfVFlQRV9GUkFNRV9FTkRfSU5GTz4oKTsKLSAgICAgICAgZnJhbWVFbmRJbmZvLmRp
c3BsYXlUaW1lID0gcHJlZGljdGVkVGltZTsKKyAgICAgICAgZnJhbWVFbmRJbmZvLmRpc3BsYXlU
aW1lID0gbV9mcmFtZVN0YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lOwogICAgICAgICBmcmFtZUVu
ZEluZm8uZW52aXJvbm1lbnRCbGVuZE1vZGUgPSBYUl9FTlZJUk9OTUVOVF9CTEVORF9NT0RFX09Q
QVFVRTsKLSAgICAgICAgZnJhbWVFbmRJbmZvLmxheWVyQ291bnQgPSBsYXllcnMuc2l6ZSgpOwot
ICAgICAgICByZXN1bHQgPSB4ckVuZEZyYW1lKG1fc2Vzc2lvbiwgJmZyYW1lRW5kSW5mbyk7Cisg
ICAgICAgIGZyYW1lRW5kSW5mby5sYXllckNvdW50ID0gZnJhbWVFbmRMYXllcnMuc2l6ZSgpOwor
ICAgICAgICBmcmFtZUVuZEluZm8ubGF5ZXJzID0gZnJhbWVFbmRMYXllcnMuZGF0YSgpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IHhyRW5kRnJhbWUobV9zZXNzaW9uLCAmZnJhbWVFbmRJbmZvKTsK
ICAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVuZEZyYW1lIiwgbV9pbnN0YW5j
ZSk7CiAgICAgfSk7CiB9CkBAIC0yNTYsNyArMjk3LDM4IEBAIFZlY3RvcjxEZXZpY2U6OlZpZXdE
YXRhPiBPcGVuWFJEZXZpY2U6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0CiAgICAgcmV0
dXJuIHZpZXdzOwogfQogCi1EZXZpY2U6OkZlYXR1cmVMaXN0IE9wZW5YUkRldmljZTo6Y29sbGVj
dFN1cHBvcnRlZEZlYXR1cmVzKCkKK09wdGlvbmFsPExheWVySGFuZGxlPiBPcGVuWFJEZXZpY2U6
OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBi
b29sIGFscGhhKQoreworICAgIE9wdGlvbmFsPExheWVySGFuZGxlPiBoYW5kbGU7CisKKyAgICBC
aW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOworICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIHdp
ZHRoLCBoZWlnaHQsIGFscGhhLCAmaGFuZGxlLCAmc2VtYXBob3JlXSgpIG11dGFibGUgeworICAg
ICAgICBhdXRvIGZvcm1hdCA9IGFscGhhID8gR0xfUkdCQTggOiBHTF9SR0I4OworICAgICAgICBp
bnQ2NF90IHNhbXBsZUNvdW50ID0gMTsKKworICAgICAgICBhdXRvIGl0ID0gbV9jb25maWd1cmF0
aW9uVmlld3MuZmluZChtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGUpOworICAgICAgICBp
ZiAoaXQgIT0gbV9jb25maWd1cmF0aW9uVmlld3MuZW5kKCkpCisgICAgICAgICAgICBzYW1wbGVD
b3VudCA9IGl0LT52YWx1ZVswXS5yZWNvbW1lbmRlZFN3YXBjaGFpblNhbXBsZUNvdW50OworCisg
ICAgICAgIGF1dG8gbGF5ZXIgPSBPcGVuWFJMYXllclByb2plY3Rpb246OmNyZWF0ZShtX2luc3Rh
bmNlLCBtX3Nlc3Npb24sIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgc2FtcGxlQ291bnQpOworICAg
ICAgICBpZiAobGF5ZXIpIHsKKyAgICAgICAgICAgIGhhbmRsZSA9IGdlbmVyYXRlTGF5ZXJIYW5k
bGUoKTsKKyAgICAgICAgICAgIG1fbGF5ZXJzLmFkZCgqaGFuZGxlLCBXVEZNb3ZlKGxheWVyKSk7
CisgICAgICAgIH0KKworICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfSk7CisgICAg
c2VtYXBob3JlLndhaXQoKTsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKK3ZvaWQgT3BlblhS
RGV2aWNlOjpkZWxldGVMYXllcihMYXllckhhbmRsZSBoYW5kbGUpCit7CisgICAgbV9sYXllcnMu
cmVtb3ZlKGhhbmRsZSk7Cit9CisKK0RldmljZTo6RmVhdHVyZUxpc3QgT3BlblhSRGV2aWNlOjpj
b2xsZWN0U3VwcG9ydGVkRmVhdHVyZXMoKSBjb25zdAogewogICAgIERldmljZTo6RmVhdHVyZUxp
c3QgZmVhdHVyZXM7CiAKQEAgLTQyNyw2ICs0OTksNyBAQCB2b2lkIE9wZW5YUkRldmljZTo6ZW5k
U2Vzc2lvbigpCiB2b2lkIE9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKCkKIHsKICAgICBBU1NF
UlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOworICAgIG1fbGF5
ZXJzLmNsZWFyKCk7CiAgICAgaWYgKG1fc2Vzc2lvbiAhPSBYUl9OVUxMX0hBTkRMRSkgewogICAg
ICAgICB4ckRlc3Ryb3lTZXNzaW9uKG1fc2Vzc2lvbik7CiAgICAgICAgIG1fc2Vzc2lvbiA9IFhS
X05VTExfSEFORExFOwpAQCAtNDM4LDYgKzUxMSw3IEBAIHZvaWQgT3BlblhSRGV2aWNlOjpyZXNl
dFNlc3Npb24oKQogICAgIG1fc3RhZ2VQYXJhbWV0ZXJzID0geyB9OwogCiAgICAgLy8gZGVhbGxv
Y2F0ZSBncmFwaGljIHJlc291cmNlcworICAgIG1fZ2wgPSBudWxscHRyOwogICAgIG1fZWdsLnJl
c2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54
ci9QbGF0Zm9ybVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIv
UGxhdGZvcm1YUk9wZW5YUi5oCmluZGV4IGQ0ZTI2ZmNlODU1YTU2MWUyZGQzM2YwMjM0YTIxNWM0
YmVmYzQyMDAuLmE4NmQ1Yzk0OTMxNmE2ODY4MDA3NGE0NzU2YWQ0YzMzYWE3OWE5YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhS
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVu
WFIuaApAQCAtMjIsNiArMjIsOCBAQAogI2lmIEVOQUJMRShXRUJYUikgJiYgVVNFKE9QRU5YUikK
IAogI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
LmgiCisjaW5jbHVkZSAiT3BlblhSTGF5ZXIuaCIKICNpbmNsdWRlICJPcGVuWFJVdGlscy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKIApAQCAtNTksMTAgKzYxLDEzIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3Bh
Y2VUeXBlKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgcmVxdWVzdEZyYW1l
KFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc3VibWl0RnJhbWUoVmVj
dG9yPERldmljZTo6TGF5ZXI+JiYpIGZpbmFsOwogICAgIFZlY3RvcjxWaWV3RGF0YT4gdmlld3Mo
U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheWVySGFuZGxlPiBjcmVh
dGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgYm9vbCBh
bHBoYSkgZmluYWw7CisgICAgdm9pZCBkZWxldGVMYXllcihMYXllckhhbmRsZSkgZmluYWw7CiAK
ICAgICAvLyBDdXN0b20gbWV0aG9kcwotICAgIEZlYXR1cmVMaXN0IGNvbGxlY3RTdXBwb3J0ZWRG
ZWF0dXJlcygpOworICAgIEZlYXR1cmVMaXN0IGNvbGxlY3RTdXBwb3J0ZWRGZWF0dXJlcygpIGNv
bnN0OwogICAgIHZvaWQgY29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2RlcygpOwogICAgIHZvaWQg
Y29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpOwogICAgIFhyU3BhY2UgY3JlYXRlUmVmZXJlbmNl
U3BhY2UoWHJSZWZlcmVuY2VTcGFjZVR5cGUpOwpAQCAtNzMsNiArNzgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgaGFuZGxlU2Vzc2lvblN0YXRlQ2hhbmdlKCk7CiAgICAgdm9pZCB3YWl0VW50aWxT
dG9wcGluZygpOwogICAgIHZvaWQgdXBkYXRlU3RhZ2VQYXJhbWV0ZXJzKCk7CisgICAgTGF5ZXJI
YW5kbGUgZ2VuZXJhdGVMYXllckhhbmRsZSgpIHsgcmV0dXJuICsrbV9oYW5kbGVJbmRleDsgfQog
CiAgICAgWHJJbnN0YW5jZSBtX2luc3RhbmNlOwogICAgIFhyU3lzdGVtSWQgbV9zeXN0ZW1JZDsK
QEAgLTgyLDYgKzg4LDExIEBAIHByaXZhdGU6CiAgICAgWHJTZXNzaW9uU3RhdGUgbV9zZXNzaW9u
U3RhdGUgeyBYUl9TRVNTSU9OX1NUQVRFX1VOS05PV04gfTsKICAgICBYckdyYXBoaWNzQmluZGlu
Z0VHTE1ORFggbV9ncmFwaGljc0JpbmRpbmc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkdMQ29udGV4dEVHTD4gbV9lZ2w7CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMPiBtX2dsOworICAgIFhyRnJhbWVTdGF0ZSBtX2ZyYW1lU3RhdGU7CisgICAgVmVjdG9yPFhy
Vmlldz4gbV9mcmFtZVZpZXdzOworICAgIEhhc2hNYXA8TGF5ZXJIYW5kbGUsIHN0ZDo6dW5pcXVl
X3B0cjxPcGVuWFJMYXllcj4+IG1fbGF5ZXJzOworICAgIExheWVySGFuZGxlIG1faGFuZGxlSW5k
ZXggeyAwIH07CiAKICAgICB1c2luZyBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXNNYXAgPSBI
YXNoTWFwPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBYclZpZXdDb25maWd1cmF0aW9uUHJvcGVy
dGllcywgSW50SGFzaDxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhh
c2hUcmFpdHM8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+PjsKICAgICBWaWV3Q29uZmlndXJhdGlv
blByb3BlcnRpZXNNYXAgbV92aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKaW5kZXggMzNiNWMyYTMwNWU3ZjIxMzYw
OGU0MjJlYjYyMjdjMzc3MDcxMzM0YS4uYmM4ODU4ZDhkNmI5YTZhMWYzNjBmYWJmNjQ5NTI4ODAx
NWJjODE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZp
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcApA
QCAtMjksNiArMjksOCBAQAogI2lmIEVOQUJMRShXRUJYUikKIAogI2luY2x1ZGUgIkRPTVBvaW50
UmVhZE9ubHkuaCIKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CkBAIC03NSw4ICs3NywzMCBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzaW11bGF0
ZVNodXRkb3duQ29tcGxldGVkKCkKIAogV2ViQ29yZTo6SW50U2l6ZSBTaW11bGF0ZWRYUkRldmlj
ZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKQogewotICAg
IC8vIFJldHVybiBhdCBsZWFzdCBhIDIgcGl4ZWwgc2l6ZSBzbyB3ZSBjYW4gaGF2ZSBkaWZmZXJl
bnQgdmlld3BvcnRzIGZvciBsZWZ0IGFuZCByaWdodCBleWVzCi0gICAgcmV0dXJuIEludFNpemUo
MiwgMik7CisgICAgLy8gUmV0dXJuIGF0IGxlYXN0IGEgdmFsaWQgc2l6ZSBmb3IgYSBmcmFtZWJ1
ZmZlci4KKyAgICByZXR1cm4gSW50U2l6ZSgzMiwgMzIpOworfQorCit2b2lkIFNpbXVsYXRlZFhS
RGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGUpCit7CisgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Cisg
ICAgYXR0cmlidXRlcy5kZXB0aCA9IGZhbHNlOworICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IGZh
bHNlOworICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CisgICAgbV9nbCA9IEdyYXBo
aWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgbnVsbHB0cik7CisKKyAgICBpZiAobV90
cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCkgeworICAgICAgICAvLyBXZWJYUiBGYWtlRGV2aWNl
IHdhaXRzIGZvciBzaW11bGF0ZUlucHV0Q29ubmVjdGlvbiBjYWxscyB0byBhZGQgaW5wdXQgc291
cmNlcy0KKyAgICAgICAgLy8gVGhlcmUgaXMgbm8gd2F5IHRvIGtub3cgaG93IG1hbnkgc2ltdWxh
dGVJbnB1dENvbm5lY3Rpb24gY2FsbHMgd2lsbCB0aGUgZGV2aWNlIHJlY2VpdmUsCisgICAgICAg
IC8vIHNvIG5vdGlmeSB0aGUgaW5wdXQgc291cmNlcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0
aCBhbiBlbXB0eSBsaXN0LiBUaGlzIGlzIG5vdCBhIHByb2JsZW0gYmVjYXVzZQorICAgICAgICAv
LyBXUFQgdGVzdHMgcmVseSBvbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdXBkYXRlcyB0byB0ZXN0
IHRoZSBpbnB1dCBzb3VyY2VzLgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChtX3RyYWNraW5nQW5k
UmVuZGVyaW5nQ2xpZW50KQorICAgICAgICAgICAgICAgIG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdD
bGllbnQtPnNlc3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzKHsgfSk7CisgICAgICAgIH0p
OworICAgIH0KIH0KIAogdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c2h1dERvd25UcmFja2luZ0Fu
ZFJlbmRlcmluZygpCkBAIC04NCw2ICsxMDgsMTEgQEAgdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6
c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCiAgICAgaWYgKG1fc3VwcG9ydHNTaHV0ZG93
bk5vdGlmaWNhdGlvbikKICAgICAgICAgc2ltdWxhdGVTaHV0ZG93bkNvbXBsZXRlZCgpOwogICAg
IHN0b3BUaW1lcigpOworICAgIGlmIChtX2dsKSB7CisgICAgICAgIGZvciAoYXV0byBsYXllciA6
IG1fbGF5ZXJzKQorICAgICAgICAgICAgbV9nbC0+ZGVsZXRlVGV4dHVyZShsYXllci52YWx1ZSk7
CisgICAgfQorICAgIG1fbGF5ZXJzLmNsZWFyKCk7CiB9CiAKIHZvaWQgU2ltdWxhdGVkWFJEZXZp
Y2U6OnN0b3BUaW1lcigpCkBAIC05OSw2ICsxMjgsNyBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNl
OjpmcmFtZVRpbWVyRmlyZWQoKQogICAgICAgICB1cGRhdGUoKTsKIAogICAgIEZyYW1lRGF0YSBk
YXRhOworICAgIGRhdGEuc2hvdWxkUmVuZGVyID0gdHJ1ZTsKICAgICBpZiAobV92aWV3ZXJPcmln
aW4pIHsKICAgICAgICAgZGF0YS5vcmlnaW4gPSAqbV92aWV3ZXJPcmlnaW47CiAgICAgICAgIGRh
dGEuaXNUcmFja2luZ1ZhbGlkID0gdHJ1ZTsKQEAgLTEyMiw2ICsxNTIsMTQgQEAgdm9pZCBTaW11
bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKCkKICAgICAgICAgZGF0YS52aWV3cy5hcHBl
bmQodmlldyk7CiAgICAgfQogCisgICAgZm9yIChhdXRvJiBsYXllciA6IG1fbGF5ZXJzKQorICAg
ICAgICBkYXRhLmxheWVycy5hZGQobGF5ZXIua2V5LCBGcmFtZURhdGE6OkxheWVyRGF0YSB7IC5v
cGFxdWVUZXh0dXJlID0gbGF5ZXIudmFsdWUgfSk7CisKKyAgICBmb3IgKGF1dG8mIGlucHV0IDog
bV9pbnB1dENvbm5lY3Rpb25zKSB7CisgICAgICAgIGlmIChpbnB1dC0+aXNDb25uZWN0ZWQoKSkK
KyAgICAgICAgICAgIGRhdGEuaW5wdXRTb3VyY2VzLmFwcGVuZChpbnB1dC0+Z2V0RnJhbWVEYXRh
KCkpOworICAgIH0KKwogICAgIGlmIChtX0ZyYW1lQ2FsbGJhY2spCiAgICAgICAgIG1fRnJhbWVD
YWxsYmFjayhXVEZNb3ZlKGRhdGEpKTsKIH0KQEAgLTEzMyw2ICsxNzEsMzYgQEAgdm9pZCBTaW11
bGF0ZWRYUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCiAgICAgICAgIG1fZnJhbWVUaW1lci5zdGFydE9uZVNob3QoRmFrZVhSRnJhbWVUaW1lKTsK
IH0KIAorT3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFNpbXVsYXRlZFhSRGV2aWNl
OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwg
Ym9vbCBhbHBoYSkKK3sKKyAgICB1c2luZyBHTCA9IEdyYXBoaWNzQ29udGV4dEdMOworICAgIGlm
ICghbV9nbCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBQbGF0Zm9ybVhSOjpM
YXllckhhbmRsZSBoYW5kbGUgPSArK21fbGF5ZXJJbmRleDsKKyAgICBhdXRvIHRleHR1cmUgPSBt
X2dsLT5jcmVhdGVUZXh0dXJlKCk7CisgICAgYXV0byBjb2xvckZvcm1hdCA9IGFscGhhID8gR0w6
OlJHQkE4IDogR0w6OlJHQjg7CisKKyAgICBtX2dsLT5iaW5kVGV4dHVyZShHTDo6VEVYVFVSRV8y
RCwgdGV4dHVyZSk7CisgICAgbV9nbC0+dGV4UGFyYW1ldGVyaShHTDo6VEVYVFVSRV8yRCwgR0w6
OlRFWFRVUkVfV1JBUF9TLCBHTDo6Q0xBTVBfVE9fRURHRSk7CisgICAgbV9nbC0+dGV4UGFyYW1l
dGVyaShHTDo6VEVYVFVSRV8yRCwgR0w6OlRFWFRVUkVfV1JBUF9ULCBHTDo6Q0xBTVBfVE9fRURH
RSk7CisgICAgbV9nbC0+dGV4UGFyYW1ldGVyaShHTDo6VEVYVFVSRV8yRCwgR0w6OlRFWFRVUkVf
TUlOX0ZJTFRFUiwgR0w6OkxJTkVBUik7CisgICAgbV9nbC0+dGV4UGFyYW1ldGVyaShHTDo6VEVY
VFVSRV8yRCwgR0w6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR0w6OkxJTkVBUik7CisgICAgbV9nbC0+
dGV4U3RvcmFnZTJEKEdMOjpURVhUVVJFXzJELCAxLCBjb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdo
dCk7CisKKyAgICBtX2xheWVycy5hZGQoaGFuZGxlLCB0ZXh0dXJlKTsKKyAgICByZXR1cm4gaGFu
ZGxlOyAgICAKK30KKwordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6ZGVsZXRlTGF5ZXIoUGxhdGZv
cm1YUjo6TGF5ZXJIYW5kbGUgaGFuZGxlKQoreworICAgIGF1dG8gaXQgPSBtX2xheWVycy5maW5k
KGhhbmRsZSk7CisgICAgaWYgKGl0ICE9IG1fbGF5ZXJzLmVuZCgpKSB7CisgICAgICAgIGlmICht
X2dsKQorICAgICAgICAgICAgbV9nbC0+ZGVsZXRlVGV4dHVyZShpdC0+dmFsdWUpOworICAgICAg
ICBtX2xheWVycy5yZW1vdmUoaXQpOworICAgIH0KK30KKwogVmVjdG9yPFBsYXRmb3JtWFI6OkRl
dmljZTo6Vmlld0RhdGE+IFNpbXVsYXRlZFhSRGV2aWNlOjp2aWV3cyhQbGF0Zm9ybVhSOjpTZXNz
aW9uTW9kZSBtb2RlKSBjb25zdAogewogICAgIGlmIChtb2RlID09IFBsYXRmb3JtWFI6OlNlc3Np
b25Nb2RlOjpJbW1lcnNpdmVWcikKQEAgLTIyMiwxMSArMjkwLDE1IEBAIHZvaWQgV2ViRmFrZVhS
RGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKCkKIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNpbXVs
YXRlUmVzZXRQb3NlKCkKIHsKKwogfQogCi1SZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBX
ZWJGYWtlWFJEZXZpY2U6OnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKEZha2VYUklucHV0
U291cmNlSW5pdCkKK1JlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IFdlYkZha2VYUkRldmlj
ZTo6c2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oY29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJ
bml0JiBpbml0KQogewotICAgIHJldHVybiBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNyZWF0
ZSgpOworICAgIGF1dG8gaGFuZGxlID0gKyttSW5wdXRTb3VyY2VIYW5kbGVJbmRleDsKKyAgICBh
dXRvIGlucHV0ID0gV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpjcmVhdGUoaGFuZGxlLCBpbml0
KTsKKyAgICBtX2RldmljZS5hZGRJbnB1dENvbm5lY3Rpb24oaW5wdXQuY29weVJlZigpKTsKKyAg
ICByZXR1cm4gaW5wdXQ7CiB9CiAKIEV4Y2VwdGlvbk9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpQb3NlPiBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlUmlnaWRUcmFuc2Zvcm0oY29uc3Qg
RmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0JiBpbml0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2Vi
RmFrZVhSRGV2aWNlLmgKaW5kZXggZTEyN2MwNTlkMzE4NjRiNGM4ZDA4MjYzZmQxZDI5ZmNhNDM1
MWM3OS4uYmQzYzExYzQ3OGEzMjdjZjg3MzJhNTViZjNhMDAwMWY4ZmZkMDU0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCkBAIC0zOCw2ICszOCw5IEBACiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBHTENvbnRl
eHQ7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKKwogY2xhc3MgRmFrZVhSVmlldyBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPEZha2VYUlZpZXc+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PEZha2VYUlZpZXc+IGNyZWF0ZShYUkV5ZSBleWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmFr
ZVhSVmlldyhleWUpKTsgfQpAQCAtNzksMTQgKzgyLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24oYm9vbCBzdXBwb3J0c1NodXRkb3duTm90aWZp
Y2F0aW9uKSB7IG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbiA9IHN1cHBvcnRzU2h1dGRv
d25Ob3RpZmljYXRpb247IH0KICAgICB2b2lkIHNpbXVsYXRlU2h1dGRvd25Db21wbGV0ZWQoKTsK
ICAgICB2b2lkIHNjaGVkdWxlT25OZXh0RnJhbWUoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGFkZElucHV0Q29ubmVjdGlvbihSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiYmIGlu
cHV0KSB7IG1faW5wdXRDb25uZWN0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnB1dCkpOyB9OwogcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihQbGF0Zm9y
bVhSOjpTZXNzaW9uTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgfQorICAgIHZvaWQgaW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5h
bDsKICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKICAgICBi
b29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CiAgICAgdm9pZCBpbml0aWFs
aXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7
IH0KICAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxhdGZv
cm1YUjo6U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdEZyYW1lKFJl
cXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6Okxh
eWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90
IGhlaWdodCwgYm9vbCBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBkZWxldGVMYXllcihQbGF0Zm9y
bVhSOjpMYXllckhhbmRsZSkgZmluYWw7CiAKICAgICB2b2lkIHN0b3BUaW1lcigpOwogICAgIHZv
aWQgZnJhbWVUaW1lckZpcmVkKCk7CkBAIC0xMDEsNiArMTA3LDEwIEBAIHByaXZhdGU6CiAgICAg
UmVxdWVzdEZyYW1lQ2FsbGJhY2sgbV9GcmFtZUNhbGxiYWNrOwogICAgIFZlY3RvcjxGdW5jdGlv
bjx2b2lkKCk+PiBtX3BlbmRpbmdVcGRhdGVzOwogICAgIEZyYW1lRGF0YTo6U3RhZ2VQYXJhbWV0
ZXJzIG1fc3RhZ2VQYXJhbWV0ZXJzOworICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTD4gbV9nbDsKKyAgICBIYXNoTWFwPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlLCBQbGF0Zm9y
bUdMT2JqZWN0PiBtX2xheWVyczsKKyAgICB1aW50MzJfdCBtX2xheWVySW5kZXggeyAwIH07Cisg
ICAgVmVjdG9yPFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+PiBtX2lucHV0Q29ubmVjdGlv
bnM7CiB9OwogCiBjbGFzcyBXZWJGYWtlWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJGYWtlWFJEZXZpY2U+IHsKQEAgLTEyNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNpbXVsYXRlUmVzZXRQb3NlKCk7CiAKLSAgICBSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyPiBzaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbihGYWtlWFJJbnB1dFNvdXJjZUluaXQp
OworICAgIFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IHNpbXVsYXRlSW5wdXRTb3VyY2VD
b25uZWN0aW9uKGNvbnN0IEZha2VYUklucHV0U291cmNlSW5pdCYpOwogCiAgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxGYWtlWFJWaWV3Pj4gcGFyc2VWaWV3KGNvbnN0IEZha2VYUlZpZXdJbml0
Jik7CiAKQEAgLTEzNSwxMiArMTQ1LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2ltdWxhdGVT
aHV0ZG93bigpOwogCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpQb3NlPiBwYXJzZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJh
bnNmb3JtSW5pdCYpOworCiBwcml2YXRlOgogICAgIFdlYkZha2VYUkRldmljZSgpOwogCi0gICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlPiBw
YXJzZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCYpOwotCiAg
ICAgU2ltdWxhdGVkWFJEZXZpY2UgbV9kZXZpY2U7CisgICAgUGxhdGZvcm1YUjo6SW5wdXRTb3Vy
Y2VIYW5kbGUgbUlucHV0U291cmNlSGFuZGxlSW5kZXggeyAwIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VY
UklucHV0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklu
cHV0Q29udHJvbGxlci5jcHAKaW5kZXggNzkwYzk4NzBiYjQ4YzUxY2U4NTVhNWFlMmZiMmEzNjcx
Y2E3MTZiMC4uN2M4MjcyODk2MTBkYmZjZDFkNDk4NWM3NTYxOWE1MTUwYjhlN2EwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmNw
cApAQCAtMjcsNjMgKzI3LDE1MyBAQAogI2luY2x1ZGUgIldlYkZha2VYUklucHV0Q29udHJvbGxl
ci5oIgogCiAjaWYgRU5BQkxFKFdFQlhSKQorI2luY2x1ZGUgIldlYkZha2VYUkRldmljZS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpz
ZXRIYW5kZWRuZXNzKFhSSGFuZGVkbmVzcykKLXsKLX0KK3VzaW5nIElucHV0U291cmNlID0gUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlOwordXNpbmcgSW5wdXRTb3Vy
Y2VCdXR0b24gPSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0
b247Cit1c2luZyBJbnB1dFNvdXJjZVBvc2UgPSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YTo6SW5wdXRTb3VyY2VQb3NlOwordXNpbmcgQnV0dG9uVHlwZSA9IEZha2VYUkJ1dHRvblN0YXRl
SW5pdDo6VHlwZTsKIAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldFRhcmdldFJh
eU1vZGUoWFJUYXJnZXRSYXlNb2RlKQotewotfQorLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvI3hyLXN0YW5kYXJkLWdhbWVwYWQtbWFwcGlu
ZworY29uc3RleHByIHN0ZDo6YXJyYXk8QnV0dG9uVHlwZSwgNT4gWFJfU1RBTkRBUkRfQlVUVE9O
UyA9IHsgQnV0dG9uVHlwZTo6R3JpcCwgQnV0dG9uVHlwZTo6VG91Y2hwYWQsIEJ1dHRvblR5cGU6
OlRodW1ic3RpY2ssIEJ1dHRvblR5cGU6Ok9wdGlvbmFsQnV0dG9uLCBCdXR0b25UeXBlOjpPcHRp
b25hbFRodW1ic3RpY2sgfTsKIAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldFBy
b2ZpbGVzKFZlY3RvcjxTdHJpbmc+KQorUmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4gV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyOjpjcmVhdGUoUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5k
bGUgaGFuZGxlLCBjb25zdCBGYWtlWFJJbnB1dFNvdXJjZUluaXQmIGluaXQpCiB7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyKGhhbmRsZSwgaW5pdCkp
OwogfQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0R3JpcE9yaWdpbihGYWtl
WFJSaWdpZFRyYW5zZm9ybUluaXQgZ3JpcE9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQor
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIoUGxhdGZv
cm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlLCBjb25zdCBGYWtlWFJJbnB1dFNvdXJjZUlu
aXQmIGluaXQpCisgICAgOiBtX2hhbmRsZShoYW5kbGUpCisgICAgLCBtX2hhbmRlbmVzcyhpbml0
LmhhbmRlZG5lc3MpCisgICAgLCBtX3RhcmdldFJheU1vZGUoaW5pdC50YXJnZXRSYXlNb2RlKQor
ICAgICwgbV9wcm9maWxlcyhpbml0LnByb2ZpbGVzKQorICAgICwgbV9wcmltYXJ5U2VsZWN0ZWQo
aW5pdC5zZWxlY3Rpb25TdGFydGVkKQorICAgICwgbV9zaW11bGF0ZVNlbGVjdChpbml0LnNlbGVj
dGlvbkNsaWNrZWQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGdyaXBPcmlnaW4pOwotICAgIFVOVVNF
RF9QQVJBTShlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICBzZXRQb2ludGVyT3JpZ2luKGluaXQucG9p
bnRlck9yaWdpbiwgZmFsc2UpOworICAgIHNldEdyaXBPcmlnaW4oaW5pdC5ncmlwT3JpZ2luLCBm
YWxzZSk7CisgICAgc2V0U3VwcG9ydGVkQnV0dG9ucyhpbml0LnN1cHBvcnRlZEJ1dHRvbnMpOwog
fQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6Y2xlYXJHcmlwT3JpZ2luKCkKK3Zv
aWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRHcmlwT3JpZ2luKEZha2VYUlJpZ2lkVHJh
bnNmb3JtSW5pdCBncmlwT3JpZ2luLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCiB7Ci19CisgICAg
YXV0byB0cmFuc2Zvcm0gPSBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlUmlnaWRUcmFuc2Zvcm0oZ3Jp
cE9yaWdpbik7CisgICAgaWYgKHRyYW5zZm9ybS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fZ3JpcE9yaWdpbiA9IElucHV0U291cmNlUG9zZSB7IHRyYW5zZm9ybS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSwgZW11bGF0ZWRQb3NpdGlvbiB9OworfSAgIAogCiB2b2lkIFdlYkZh
a2VYUklucHV0Q29udHJvbGxlcjo6c2V0UG9pbnRlck9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9y
bUluaXQgcG9pbnRlck9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIFVOVVNF
RF9QQVJBTShwb2ludGVyT3JpZ2luKTsKLSAgICBVTlVTRURfUEFSQU0oZW11bGF0ZWRQb3NpdGlv
bik7CisgICAgYXV0byB0cmFuc2Zvcm0gPSBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlUmlnaWRUcmFu
c2Zvcm0ocG9pbnRlck9yaWdpbik7CisgICAgaWYgKHRyYW5zZm9ybS5oYXNFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fcG9pbnRlck9yaWdpbiA9IHsgdHJhbnNmb3JtLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpLCBlbXVsYXRlZFBvc2l0aW9uIH07CiB9CiAKIHZvaWQgV2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyOjpkaXNjb25uZWN0KCkKIHsKKyAgICBtX2Nvbm5lY3RlZCA9IGZhbHNl
OwogfQogCiB2b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6cmVjb25uZWN0KCkKIHsKKyAg
ICBtX2Nvbm5lY3RlZCA9IHRydWU7CiB9CiAKLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
OjpzdGFydFNlbGVjdGlvbigpCi17Ci19Ci0KLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
OjplbmRTZWxlY3Rpb24oKQordm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldFN1cHBv
cnRlZEJ1dHRvbnMoY29uc3QgVmVjdG9yPEZha2VYUkJ1dHRvblN0YXRlSW5pdD4mIGJ1dHRvbnMp
CiB7CisgICAgbV9idXR0b25zLmNsZWFyKCk7CisgICAgZm9yIChhdXRvJiBidXR0b24gOiBidXR0
b25zKQorICAgICAgICBtX2J1dHRvbnMuYWRkKGJ1dHRvbi5idXR0b25UeXBlLCBidXR0b24pOwog
fQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2ltdWxhdGVTZWxlY3QoKQordm9p
ZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnVwZGF0ZUJ1dHRvblN0YXRlKGNvbnN0IEZha2VY
UkJ1dHRvblN0YXRlSW5pdCYgaW5pdCkKIHsKKyAgICBhdXRvIGl0ID0gbV9idXR0b25zLmZpbmQo
aW5pdC5idXR0b25UeXBlKTsKKyAgICBpZiAoaXQgIT0gbV9idXR0b25zLmVuZCgpKQorICAgICAg
ICBpdC0+dmFsdWUgPSBpbml0OwogfQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6
c2V0U3VwcG9ydGVkQnV0dG9ucyhWZWN0b3I8RmFrZVhSQnV0dG9uU3RhdGVJbml0PikKK0lucHV0
U291cmNlIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6Z2V0RnJhbWVEYXRhKCkKIHsKKyAgICBJ
bnB1dFNvdXJjZSBzdGF0ZTsKKyAgICBzdGF0ZS5oYW5kbGUgPSBtX2hhbmRsZTsKKyAgICBzdGF0
ZS5oYW5kZW5lc3MgPSBtX2hhbmRlbmVzczsKKyAgICBzdGF0ZS50YXJnZXRSYXlNb2RlID0gbV90
YXJnZXRSYXlNb2RlOworICAgIHN0YXRlLnByb2ZpbGVzID0gbV9wcm9maWxlczsKKyAgICBzdGF0
ZS5wb2ludGVyT3JpZ2luID0gbV9wb2ludGVyT3JpZ2luOworICAgIHN0YXRlLmdyaXBPcmlnaW4g
PSBtX2dyaXBPcmlnaW47CisKKyAgICBpZiAobV9zaW11bGF0ZVNlbGVjdCkKKyAgICAgICAgbV9w
cmltYXJ5U2VsZWN0ZWQgPSB0cnVlOworCisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvI3hyLXN0YW5kYXJkLWdhbWVwYWQtbWFwcGlu
ZworICAgIC8vIE1pbWljIHhyLXN0YW5kYXJkIGdhbWVwYWQgbGF5b3V0CisKKyAgICAvLyBQcmlt
YXJ5IHRyaWdnZXIgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYXQgaW5kZXggMAorICAgIHN0YXRl
LmJ1dHRvbnMuYXBwZW5kKHsKKyAgICAgICAgLnRvdWNoZWQgPSBtX3ByaW1hcnlTZWxlY3RlZCwK
KyAgICAgICAgLnByZXNzZWQgPSBtX3ByaW1hcnlTZWxlY3RlZCwKKyAgICAgICAgLnByZXNzZWRW
YWx1ZSA9IG1fcHJpbWFyeVNlbGVjdGVkID8gMS4wZiA6IDAuMGYKKyAgICB9KTsKKworICAgIC8v
IE5leHQgYnV0dG9ucyBpbiB4ci1zdGFuZGFyZCBvcmRlcgorICAgIGZvciAoYXV0byBidXR0b25U
eXBlIDogWFJfU1RBTkRBUkRfQlVUVE9OUykgeworICAgICAgICBhdXRvIGRhdGEgPSBnZXRCdXR0
b25PclBsYWNlaG9sZGVyKGJ1dHRvblR5cGUpOworICAgICAgICBpZiAoZGF0YS5idXR0b24pCisg
ICAgICAgICAgICBzdGF0ZS5idXR0b25zLmFwcGVuZCgqZGF0YS5idXR0b24pOworICAgICAgICBp
ZiAoZGF0YS5heGVzKQorICAgICAgICAgICAgc3RhdGUuYXhlcy5hcHBlbmRWZWN0b3IoKmRhdGEu
YXhlcyk7CisKKyAgICB9CisKKyAgICBpZiAobV9zaW11bGF0ZVNlbGVjdCkgeworICAgICAgICBt
X3ByaW1hcnlTZWxlY3RlZCA9IGZhbHNlOworICAgICAgICBtX3NpbXVsYXRlU2VsZWN0ID0gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRlOwogfQogCi12b2lkIFdlYkZha2VYUklucHV0
Q29udHJvbGxlcjo6dXBkYXRlQnV0dG9uU3RhdGUoRmFrZVhSQnV0dG9uU3RhdGVJbml0KQorV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyOjpCdXR0b25PclBsYWNlaG9sZGVyIFdlYkZha2VYUklucHV0
Q29udHJvbGxlcjo6Z2V0QnV0dG9uT3JQbGFjZWhvbGRlcihGYWtlWFJCdXR0b25TdGF0ZUluaXQ6
OlR5cGUgYnV0dG9uVHlwZSkgY29uc3QKIHsKKyAgICBCdXR0b25PclBsYWNlaG9sZGVyIHJlc3Vs
dDsKKworICAgIGF1dG8gaXQgPSBtX2J1dHRvbnMuZmluZChidXR0b25UeXBlKTsKKyAgICBpZiAo
aXQgIT0gbV9idXR0b25zLmVuZCgpKSB7CisgICAgICAgIHJlc3VsdC5idXR0b24gPSBJbnB1dFNv
dXJjZUJ1dHRvbiB7CisgICAgICAgICAgICAudG91Y2hlZCA9IGl0LT52YWx1ZS50b3VjaGVkLAor
ICAgICAgICAgICAgLnByZXNzZWQgPSBpdC0+dmFsdWUucHJlc3NlZCwKKyAgICAgICAgICAgIC5w
cmVzc2VkVmFsdWUgPSBpdC0+dmFsdWUucHJlc3NlZFZhbHVlCisgICAgICAgIH07CisKKyAgICAg
ICAgaWYgKGJ1dHRvblR5cGUgPT0gQnV0dG9uVHlwZTo6VG91Y2hwYWQgfHwgYnV0dG9uVHlwZSA9
PSBCdXR0b25UeXBlOjpUaHVtYnN0aWNrKQorICAgICAgICAgICAgcmVzdWx0LmF4ZXMgPSBWZWN0
b3I8ZmxvYXQ+IHsgaXQtPnZhbHVlLnhWYWx1ZSwgaXQtPnZhbHVlLnlWYWx1ZSB9OworCisgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gQWRkIGEgcGxhY2Vob2xkZXIgaWYgbmVlZGVkCisgICAgICAg
IC8vIERldmljZXMgdGhhdCBsYWNrIG9uZSBvZiB0aGUgb3B0aW9uYWwgaW5wdXRzIGxpc3RlZCBp
biB0aGUgdGFibGVzIGFib3ZlIE1VU1QgcHJlc2VydmUgdGhlaXIgcGxhY2UgaW4gdGhlCisgICAg
ICAgIC8vIGJ1dHRvbnMgb3IgYXhlcyBhcnJheSwgcmVwb3J0aW5nIGEgcGxhY2Vob2xkZXIgYnV0
dG9uIG9yIHBsYWNlaG9sZGVyIGF4aXMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgaWYgKGJ1dHRv
blR5cGUgIT0gQnV0dG9uVHlwZTo6T3B0aW9uYWxCdXR0b24gfHwgYnV0dG9uVHlwZSAhPSBCdXR0
b25UeXBlOjpPcHRpb25hbFRodW1ic3RpY2spIHsKKyAgICAgICAgICAgIGF1dG8gcHJpb3JpdHkg
PSBzdGQ6OmZpbmQoWFJfU1RBTkRBUkRfQlVUVE9OUy5iZWdpbigpLCBYUl9TVEFOREFSRF9CVVRU
T05TLmVuZCgpLCBidXR0b25UeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChwcmlvcml0eSAhPSBY
Ul9TVEFOREFSRF9CVVRUT05TLmVuZCgpKTsKKworICAgICAgICAgICAgZm9yIChhdXRvIGl0ID0g
cHJpb3JpdHkgKyAxOyBpdCAhPSBYUl9TVEFOREFSRF9CVVRUT05TLmVuZCgpOyArK2l0KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fYnV0dG9ucy5jb250YWlucygqaXQpKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5idXR0b24gPSBJbnB1dFNvdXJjZUJ1dHRvbigpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoYnV0dG9uVHlwZSA9PSBCdXR0b25UeXBlOjpUb3VjaHBhZCAm
JiBtX2J1dHRvbnMuY29udGFpbnMoQnV0dG9uVHlwZTo6VGh1bWJzdGljaykpCisgICAgICAgICAg
ICByZXN1bHQuYXhlcyA9IFZlY3RvcjxmbG9hdD4geyAwLjAsIDAuMCB9OworICAgIH0KKworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oCmluZGV4IGQyOGNl
YTRmODZlYTljYTQ2NTZlYmRmOGM1MjUxZWY0YjkyNDk5Y2QuLjhiNWJjZjM2NDdlZmNhZGM2OWJi
NjhhNjEwYTNkYzk5MzQxMWNiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaApAQCAtMjgsOSArMjgsMTIgQEAKICNpZiBFTkFCTEUo
V0VCWFIpCiAKICNpbmNsdWRlICJGYWtlWFJCdXR0b25TdGF0ZUluaXQuaCIKKyNpbmNsdWRlICJG
YWtlWFJJbnB1dFNvdXJjZUluaXQuaCIKICNpbmNsdWRlICJGYWtlWFJSaWdpZFRyYW5zZm9ybUlu
aXQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAjaW5jbHVkZSAiWFJIYW5kZWRuZXNzLmgi
CiAjaW5jbHVkZSAiWFJUYXJnZXRSYXlNb2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApA
QCAtMzgsMzYgKzQxLDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyKTsgfQotCi0gICAgdm9pZCBzZXRIYW5kZWRuZXNzKFhSSGFuZGVkbmVzcyk7Ci0KLSAg
ICB2b2lkIHNldFRhcmdldFJheU1vZGUoWFJUYXJnZXRSYXlNb2RlKTsKLQotICAgIHZvaWQgc2V0
UHJvZmlsZXMoVmVjdG9yPFN0cmluZz4pOworICAgIHN0YXRpYyBSZWY8V2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyPiBjcmVhdGUoUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUsIGNvbnN0IEZh
a2VYUklucHV0U291cmNlSW5pdCYpOwogCisgICAgdm9pZCBzZXRIYW5kZWRuZXNzKFhSSGFuZGVk
bmVzcyBoYW5kZW5lc3MpIHsgbV9oYW5kZW5lc3MgPSBoYW5kZW5lc3M7IH0KKyAgICB2b2lkIHNl
dFRhcmdldFJheU1vZGUoWFJUYXJnZXRSYXlNb2RlIG1vZGUpIHsgbV90YXJnZXRSYXlNb2RlID0g
bW9kZTsgfQorICAgIHZvaWQgc2V0UHJvZmlsZXMoVmVjdG9yPFN0cmluZz4mJiBwcm9maWxlcykg
eyBtX3Byb2ZpbGVzID0gV1RGTW92ZShwcm9maWxlcyk7IH0KICAgICB2b2lkIHNldEdyaXBPcmln
aW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3Np
dGlvbiA9IGZhbHNlKTsKLQotICAgIHZvaWQgY2xlYXJHcmlwT3JpZ2luKCk7Ci0KKyAgICB2b2lk
IGNsZWFyR3JpcE9yaWdpbigpIHsgbV9ncmlwT3JpZ2luID0gV1RGOjpudWxsb3B0OyB9CiAgICAg
dm9pZCBzZXRQb2ludGVyT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBwb2ludGVyT3Jp
Z2luLCBib29sIGVtdWxhdGVkUG9zaXRpb24gPSBmYWxzZSk7Ci0KICAgICB2b2lkIGRpc2Nvbm5l
Y3QoKTsKLQogICAgIHZvaWQgcmVjb25uZWN0KCk7CisgICAgdm9pZCBzdGFydFNlbGVjdGlvbigp
IHsgbV9wcmltYXJ5U2VsZWN0ZWQgPSB0cnVlOyB9CisgICAgdm9pZCBlbmRTZWxlY3Rpb24oKSB7
IG1fcHJpbWFyeVNlbGVjdGVkID0gZmFsc2U7IH0KKyAgICB2b2lkIHNpbXVsYXRlU2VsZWN0KCkg
eyBtX3NpbXVsYXRlU2VsZWN0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0U3VwcG9ydGVkQnV0dG9u
cyhjb25zdCBWZWN0b3I8RmFrZVhSQnV0dG9uU3RhdGVJbml0PiYpOworICAgIHZvaWQgdXBkYXRl
QnV0dG9uU3RhdGUoY29uc3QgRmFrZVhSQnV0dG9uU3RhdGVJbml0Jik7CisgICAgYm9vbCBpc0Nv
bm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGVkOyB9CiAKLSAgICB2b2lkIHN0YXJ0
U2VsZWN0aW9uKCk7Ci0KLSAgICB2b2lkIGVuZFNlbGVjdGlvbigpOwotCi0gICAgdm9pZCBzaW11
bGF0ZVNlbGVjdCgpOwotCi0gICAgdm9pZCBzZXRTdXBwb3J0ZWRCdXR0b25zKFZlY3RvcjxGYWtl
WFJCdXR0b25TdGF0ZUluaXQ+KTsKLQotICAgIHZvaWQgdXBkYXRlQnV0dG9uU3RhdGUoRmFrZVhS
QnV0dG9uU3RhdGVJbml0KTsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2UgZ2V0RnJhbWVEYXRhKCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyKCkgPSBkZWZhdWx0OworICAgIFdlYkZha2VYUklucHV0Q29udHJvbGxlcihQbGF0
Zm9ybVhSOjpJbnB1dFNvdXJjZUhhbmRsZSwgY29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0Jik7
CisKKyAgICBzdHJ1Y3QgQnV0dG9uT3JQbGFjZWhvbGRlciB7CisgICAgICAgIE9wdGlvbmFsPFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbj4gYnV0dG9uOwor
ICAgICAgICBPcHRpb25hbDxWZWN0b3I8ZmxvYXQ+PiBheGVzOworICAgIH07CisgICAgQnV0dG9u
T3JQbGFjZWhvbGRlciBnZXRCdXR0b25PclBsYWNlaG9sZGVyKEZha2VYUkJ1dHRvblN0YXRlSW5p
dDo6VHlwZSkgY29uc3Q7CisKKyAgICBQbGF0Zm9ybVhSOjpJbnB1dFNvdXJjZUhhbmRsZSBtX2hh
bmRsZSB7IDAgfTsKKyAgICBYUkhhbmRlZG5lc3MgbV9oYW5kZW5lc3MgeyBYUkhhbmRlZG5lc3M6
Ok5vbmUgfTsKKyAgICBYUlRhcmdldFJheU1vZGUgbV90YXJnZXRSYXlNb2RlIHsgWFJUYXJnZXRS
YXlNb2RlOjpHYXplIH07CisgICAgVmVjdG9yPFN0cmluZz4gbV9wcm9maWxlczsKKyAgICBQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlIG1fcG9pbnRlck9yaWdp
bjsKKyAgICBPcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3Vy
Y2VQb3NlPiBtX2dyaXBPcmlnaW47CisgICAgSGFzaE1hcDxGYWtlWFJCdXR0b25TdGF0ZUluaXQ6
OlR5cGUsIEZha2VYUkJ1dHRvblN0YXRlSW5pdCwgV1RGOjpJbnRIYXNoPEZha2VYUkJ1dHRvblN0
YXRlSW5pdDo6VHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8RmFrZVhSQnV0dG9uU3Rh
dGVJbml0OjpUeXBlPj4gbV9idXR0b25zOworICAgIGJvb2wgbV9jb25uZWN0ZWQgeyB0cnVlIH07
CisgICAgYm9vbCBtX3ByaW1hcnlTZWxlY3RlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3NpbXVs
YXRlU2VsZWN0IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXUEUuY21ha2UKaW5kZXggNzI3MjgyNzk1NDUxMzhjMjBkYzE4OWJlMzYzNTUwYjI5ZWZhMTVj
ZS4uN2IwZTViZDhhOGEzNDdjYjY5MTVjMzlhOTk3YWMxNjg0MTI1ZWJjZCAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNX
UEUuY21ha2UKQEAgLTIwMyw2ICsyMDMsNyBAQCBpZiAoRU5BQkxFX1dFQlhSKQogICAgIGlmIChO
T1QgT1BFTlhSX0ZPVU5EKQogICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJPcGVuWFIgaXMg
cmVxdWlyZWQgdG8gZW5hYmxlIFdlYlhSIHN1cHBvcnQuIikKICAgICBlbmRpZiAoKQorICAgIFNF
VF9BTkRfRVhQT1NFX1RPX0JVSUxEKEVOQUJMRV9HQU1FUEFEIE9OKQogICAgIFNFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFVTRV9PUEVOWFIgJHtPcGVuWFJfRk9VTkR9KQogICAgIFNFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFhSX1VTRV9QTEFURk9STV9FR0wgVFJVRSkKICAgICBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChYUl9VU0VfR1JBUEhJQ1NfQVBJX09QRU5HTCBUUlVFKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ0OTMz
YjAyOTFmNTVjNTFlOTg5NjNhZGE4MjNiZTU3ZTAzZjRhNDYuLjNkMThmYjllMjYyZjAwZTg3OWQx
NTMxMmRiNGQ3YzU3MmE2NGY2YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wMy0xNiAg
SW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdlYlhSIElucHV0IFNvdXJjZSB0ZXN0IGV4cGVjdGF0
aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOgorCisyMDIx
LTAzLTE4ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBXZWJYUiBPcGFxdWUgRnJhbWVidWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjYwNworCisgICAgICAgIFJldmlld2Vk
IGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXBkYXRlIFdlYlhSIE9wYXF1ZSBGcmFtZWJ1
ZmZlciB0ZXN0IGV4cGVjdGF0aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIxLTAzLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBHZW9sb2NhdGlvbiBBUEkgZG9lcyBub3Qgd29yayBpbiBXS1dlYlZpZXcg
d2l0aCBjdXN0b20gVVJMIHNjaGVtZSBoYW5kbGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwppbmRleCBmYTI3ZjcwODY4ZTFjM2NhMTcxZDcwYmU1ZmFkNmM3YzdjZjU0YWRlLi5mNzY4Mjg0
ZDQwNzRhOTU5NjNjMTI3ZWJhNzY0ODM1ZGM2YTEwNzRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAyMS0wMy0xNiAgSW1hbm9sIEZlcm5hbmRleiAg
PGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViWFIgSW5wdXQg
U291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIFdlYlhSIElucHV0IFNvdXJjZSB0ZXN0IGV4cGVjdGF0aW9ucy4KKworICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlX3JlY3JlYXRpb24u
aHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdF9z
dWJmcmFtZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zcXVlZXplLmh0dHBzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9o
YW5kZWRuZXNzLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3JlbW92ZS5odHRwcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291
cmNlX2VtdWxhdGVkUG9zaXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
CisyMDIxLTAzLTE4ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBXZWJYUiBPcGFxdWUgRnJhbWVidWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjYwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXBkYXRlIFdlYlhSIE9wYXF1ZSBG
cmFtZWJ1ZmZlciB0ZXN0IGV4cGVjdGF0aW9ucy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJfZHJhdy5odHRwcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5
ZXJfb3BhcXVlX2ZyYW1lYnVmZmVyLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMjEt
MDMtMTggIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIElt
cG9ydCBjc3MvY3NzLWNvbnRhaW4gdGVzdCBmcm9tIFdQVApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291
cmNlX3JlY3JlYXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlX3JlY3JlYXRp
b24uaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MDUxZTkyMDZmYTRiZGQ4OWZiODFi
NGViMGIwOTBiYTIyYjA0NzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19pbnB1dF9zb3VyY2VfcmVjcmVh
dGlvbi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgSW5wdXQgc291
cmNlcyBhcmUgcmUtY3JlYXRlZCB3aGVuIGhhbmRlZG5lc3Mgb3IgdGFyZ2V0IHJheSBtb2RlIGNo
YW5nZXMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3QuaHR0cHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNf
c2Vzc2lvbl9zZWxlY3QuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMTY5ZTk4MDAy
ZTlmMGY4OWVmODc0NGM3MzkwMGUzYWUyMzU1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9u
X3NlbGVjdC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJJbnB1
dFNvdXJjZXMgcHJpbWFyeSBpbnB1dCBwcmVzc2VzIHByb3Blcmx5IGZpcmVzIG9mZiB0aGUgcmln
aHQgZXZlbnRzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0X3N1YmZyYW1lLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0X3N1YmZyYW1lLmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZDNkZmJlMzFmMmI1MGVhY2VhMjg1NTI3YjIyOTJhNTFmNTI3MmU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIEVuc3VyZXMgdGhhdCBhbiBYUklucHV0U291cmNlcyBw
cmltYXJ5IGlucHV0IGJlaW5nIHByZXNzZWQgYW5kIHJlbGVhc2VkIGluIHRoZSBzcGFjZSBvZiBh
IHNpbmdsZSBmcmFtZSBwcm9wZXJseSBmaXJlcyBvZmYgdGhlIHJpZ2h0IGV2ZW50cworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L2V2ZW50c19zZXNzaW9uX3NxdWVlemUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zcXVl
ZXplLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjE2OWU5ODAwMmU5ZjBmODllZjg3
NDRjNzM5MDBlM2FlMjM1NTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zcXVlZXplLmh0
dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBYUklucHV0U291cmNlcyBw
cmltYXJ5IGlucHV0IHByZXNzZXMgcHJvcGVybHkgZmlyZXMgb2ZmIHRoZSByaWdodCBldmVudHMK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci9nZXRJbnB1dFBvc2VfaGFuZGVkbmVzcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9z
ZV9oYW5kZWRuZXNzLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODllN2FlM2ViZWJm
MWU2MTRhMzViNGJiNzNiMThkYTUxNTQyZTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBvc2VfaGFu
ZGVkbmVzcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJJbnB1
dFNvdXJjZXMgcHJvcGVybHkgY29tbXVuaWNhdGUgdGhlaXIgaGFuZGVkbmVzcworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
SW5wdXRTb3VyY2VfYWRkX3JlbW92ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3Jl
bW92ZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRiNTY0YmY4NTdkNTNkZTdjODMy
YzNkMjViNDBlMjEzZjlhMjQ0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9hZGRfcmVtb3Zl
Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBYUklucHV0U291cmNl
cyBjYW4gYmUgcHJvcGVybHkgYWRkZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgc2Vzc2lvbgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hySW5wdXRTb3VyY2VfZW11bGF0ZWRQb3NpdGlvbi5odHRwcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRT
b3VyY2VfZW11bGF0ZWRQb3NpdGlvbi5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFh
NzA3ZjZjZTQ0ZWY2NDhmNDRmMGRhYzY5NWUyN2RjMGY1NjU2ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1
dFNvdXJjZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMg
QEAKKworUEFTUyBQb3NlcyBmcm9tIFhSSW5wdXRTb3VyY2UuZ3JpcFNwYWNlIGhhdmUgZW11bGF0
ZWRQb3NpdGlvbiBzZXQgcHJvcGVybHkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3Byb2ZpbGVzLmh0
dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGQxNzZlZDc2ZTE5OWNlYTc3NGJkMTJiOWY4ZTlmMGY0M2I0NGRmMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzIEBACisKK1BBU1MgV2ViWFIgSW5wdXRTb3VyY2UncyBwcm9maWxlcyBsaXN0IGNhbiBiZSBz
ZXQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
UmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYzM0Y2ZjMmNjNzY1OWViNGZiMGEzMWMwOTU4NDhjYzMyYmFkMjQ3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzIEBACisKK1BBU1MgVXBkYXRpbmcgWFJSZWZlcmVuY2VTcGFjZSBvcmlnaW4gb2Zmc2V0IHVw
ZGF0ZXMgdmlldyBhbmQgaW5wdXQgbWF0cmljZXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX2ZyYW1l
YnVmZmVyX2RyYXcuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJfZHJhdy5o
dHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGYwOWRjOWZkYzIyMzNhZDQzNTdiYmIzOTlh
NjNhMWFhZDAwMzk0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX2ZyYW1lYnVmZmVyX2RyYXcu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorQ09OU09MRSBNRVNTQUdFOiBXZWJH
TDogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT046IGNsZWFyOiBBbiBvcGFxdWUgZnJhbWVi
dWZmZXIgaXMgY29uc2lkZXJlZCBpbmNvbXBsZXRlIG91dHNpZGUgb2YgYSByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUKK0NPTlNPTEUgTUVTU0FHRTogV2ViR0w6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BF
UkFUSU9OOiBjbGVhcjogQW4gb3BhcXVlIGZyYW1lYnVmZmVyIGlzIGNvbnNpZGVyZWQgaW5jb21w
bGV0ZSBvdXRzaWRlIG9mIGEgcmVxdWVzdEFuaW1hdGlvbkZyYW1lCitDT05TT0xFIE1FU1NBR0U6
IFdlYkdMOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTjogZHJhd0FycmF5czogQW4gb3Bh
cXVlIGZyYW1lYnVmZmVyIGlzIGNvbnNpZGVyZWQgaW5jb21wbGV0ZSBvdXRzaWRlIG9mIGEgcmVx
dWVzdEFuaW1hdGlvbkZyYW1lCitDT05TT0xFIE1FU1NBR0U6IFdlYkdMOiBJTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTjogZHJhd0VsZW1lbnRzOiBBbiBvcGFxdWUgZnJhbWVidWZmZXIgaXMg
Y29uc2lkZXJlZCBpbmNvbXBsZXRlIG91dHNpZGUgb2YgYSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUK
KworUEFTUyBFbnN1cmUgYSBXZWJHTCBsYXllcidzIGZyYW1lYnVmZmVyIGNhbiBvbmx5IGJlIGRy
YXduIHRvIGluc2lkZSBhIFhSIGZyYW1lCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX29wYXF1ZV9mcmFt
ZWJ1ZmZlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9vcGFxdWVfZnJhbWVidWZmZXIuaHR0
cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1Y2M3NmY1ZDk2YzdlOTA3MjVmNTY3ZTJjMzQ3
ZTlmZDBhZGNmMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9vcGFxdWVfZnJhbWVidWZmZXIu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKK0NPTlNPTEUgTUVTU0FHRTogV2Vi
R0w6IElOVkFMSURfT1BFUkFUSU9OOiBkZWxldGVGcmFtZWJ1ZmZlcjogQW4gb3BhcXVlIGZyYW1l
YnVmZmVyJ3MgYXR0YWNobWVudHMgY2Fubm90IGJlIGluc3BlY3RlZCBvciBjaGFuZ2VkCitDT05T
T0xFIE1FU1NBR0U6IFdlYkdMOiBJTlZBTElEX09QRVJBVElPTjogZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyOiBBbiBvcGFxdWUgZnJhbWVidWZmZXIncyBhdHRhY2htZW50cyBjYW5u
b3QgYmUgaW5zcGVjdGVkIG9yIGNoYW5nZWQKK0NPTlNPTEUgTUVTU0FHRTogV2ViR0w6IElOVkFM
SURfT1BFUkFUSU9OOiBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXI6IEFuIG9wYXF1
ZSBmcmFtZWJ1ZmZlcidzIGF0dGFjaG1lbnRzIGNhbm5vdCBiZSBpbnNwZWN0ZWQgb3IgY2hhbmdl
ZAorQ09OU09MRSBNRVNTQUdFOiBXZWJHTDogSU5WQUxJRF9PUEVSQVRJT046IGdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcjogQW4gb3BhcXVlIGZyYW1lYnVmZmVyJ3MgYXR0YWNobWVu
dHMgY2Fubm90IGJlIGluc3BlY3RlZCBvciBjaGFuZ2VkCitDT05TT0xFIE1FU1NBR0U6IFdlYkdM
OiBJTlZBTElEX09QRVJBVElPTjogZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyOiBB
biBvcGFxdWUgZnJhbWVidWZmZXIncyBhdHRhY2htZW50cyBjYW5ub3QgYmUgaW5zcGVjdGVkIG9y
IGNoYW5nZWQKK0NPTlNPTEUgTUVTU0FHRTogV2ViR0w6IElOVkFMSURfT1BFUkFUSU9OOiBnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXI6IEFuIG9wYXF1ZSBmcmFtZWJ1ZmZlcidzIGF0
dGFjaG1lbnRzIGNhbm5vdCBiZSBpbnNwZWN0ZWQgb3IgY2hhbmdlZAorQ09OU09MRSBNRVNTQUdF
OiBXZWJHTDogSU5WQUxJRF9PUEVSQVRJT046IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcjogQW4gb3BhcXVlIGZyYW1lYnVmZmVyJ3MgYXR0YWNobWVudHMgY2Fubm90IGJlIGluc3Bl
Y3RlZCBvciBjaGFuZ2VkCitDT05TT0xFIE1FU1NBR0U6IFdlYkdMOiBJTlZBTElEX09QRVJBVElP
TjogZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyOiBBbiBvcGFxdWUgZnJhbWVidWZm
ZXIncyBhdHRhY2htZW50cyBjYW5ub3QgYmUgaW5zcGVjdGVkIG9yIGNoYW5nZWQKK0NPTlNPTEUg
TUVTU0FHRTogV2ViR0w6IElOVkFMSURfT1BFUkFUSU9OOiBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXI6IEFuIG9wYXF1ZSBmcmFtZWJ1ZmZlcidzIGF0dGFjaG1lbnRzIGNhbm5vdCBi
ZSBpbnNwZWN0ZWQgb3IgY2hhbmdlZAorQ09OU09MRSBNRVNTQUdFOiBXZWJHTDogSU5WQUxJRF9P
UEVSQVRJT046IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcjogQW4gb3BhcXVlIGZy
YW1lYnVmZmVyJ3MgYXR0YWNobWVudHMgY2Fubm90IGJlIGluc3BlY3RlZCBvciBjaGFuZ2VkCitD
T05TT0xFIE1FU1NBR0U6IFdlYkdMOiBJTlZBTElEX09QRVJBVElPTjogZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyOiBBbiBvcGFxdWUgZnJhbWVidWZmZXIncyBhdHRhY2htZW50cyBj
YW5ub3QgYmUgaW5zcGVjdGVkIG9yIGNoYW5nZWQKK0NPTlNPTEUgTUVTU0FHRTogV2ViR0w6IElO
VkFMSURfT1BFUkFUSU9OOiBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXI6IEFuIG9w
YXF1ZSBmcmFtZWJ1ZmZlcidzIGF0dGFjaG1lbnRzIGNhbm5vdCBiZSBpbnNwZWN0ZWQgb3IgY2hh
bmdlZAorQ09OU09MRSBNRVNTQUdFOiBXZWJHTDogSU5WQUxJRF9PUEVSQVRJT046IGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcjogQW4gb3BhcXVlIGZyYW1lYnVmZmVyJ3MgYXR0YWNo
bWVudHMgY2Fubm90IGJlIGluc3BlY3RlZCBvciBjaGFuZ2VkCitDT05TT0xFIE1FU1NBR0U6IFdl
YkdMOiBJTlZBTElEX09QRVJBVElPTjogZnJhbWVidWZmZXJUZXh0dXJlMkQ6IEFuIG9wYXF1ZSBm
cmFtZWJ1ZmZlcidzIGF0dGFjaG1lbnRzIGNhbm5vdCBiZSBpbnNwZWN0ZWQgb3IgY2hhbmdlZAor
Q09OU09MRSBNRVNTQUdFOiBXZWJHTDogSU5WQUxJRF9PUEVSQVRJT046IGZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyOiBBbiBvcGFxdWUgZnJhbWVidWZmZXIncyBhdHRhY2htZW50cyBjYW5ub3QgYmUg
aW5zcGVjdGVkIG9yIGNoYW5nZWQKK0NPTlNPTEUgTUVTU0FHRTogV2ViR0w6IElOVkFMSURfT1BF
UkFUSU9OOiBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcjogQW4gb3BhcXVlIGZyYW1lYnVmZmVyJ3Mg
YXR0YWNobWVudHMgY2Fubm90IGJlIGluc3BlY3RlZCBvciBjaGFuZ2VkCitDT05TT0xFIE1FU1NB
R0U6IFdlYkdMOiBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzOkFuIG9wYXF1ZSBmcmFtZWJ1ZmZlciBp
cyBjb25zaWRlcmVkIGluY29tcGxldGUgb3V0c2lkZSBvZiBhIHJlcXVlc3RBbmltYXRpb25GcmFt
ZQorCitQQVNTIEVuc3VyZSB0aGF0IHRoZSBmcmFtZWJ1ZmZlciBnaXZlbiBieSB0aGUgV2ViR0wg
bGF5ZXIgaXMgb3BhcXVlIGZvciBpbW1lcnNpdmUKK1BBU1MgRW5zdXJlIHRoYXQgdGhlIGZyYW1l
YnVmZmVyIGdpdmVuIGJ5IHRoZSBXZWJHTCBsYXllciBpcyBvcGFxdWUgZm9yIG5vbi1pbW1lcnNp
dmUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2N2Ix
OTBlZTFjNTYyZWI2Nzc2NmVmYTRkNGY1NDQxNjMxMGJmZmM3Li5kMjJkMzk2M2Y4NTBjNzgyNGI2
OGFlNTkyNTNkN2ZhYmY4YzFmMzI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
cGUvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNjEwLDYgKzYxMCwxMCBAQCB3ZWJraXQub3JnL2IvMjEzMTMxIGdhbWVw
YWQgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8yMTMxMzEgaHR0cC90ZXN0cy9taXNjL2dhbWVwYWRz
LWluc2VjdXJlLmh0bWwgWyBTa2lwIF0KIAogIyBXZWJYUgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlX3JlY3JlYXRpb24uaHR0cHMuaHRt
bCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNf
c2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3QuaHR0cHMuaHRt
bCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNf
c2Vzc2lvbl9zcXVlZXplLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMTI4OTcg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9pZGxoYXJuZXNzLmh0dHBzLndp
bmRvdy5odG1sIFsgRmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyQm91bmRlZFJlZmVyZW5jZVNwYWNlX3VwZGF0ZXMuaHR0cHMuaHRtbCBbIFBhc3MgXQog
d2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3dlYkdMQ2FudmFzQ29udGV4dF9jcmVhdGVfeHJjb21wYXRpYmxlLmh0dHBzLmh0bWwgWyBQYXNz
IF0KQEAgLTYyNCwxMCArNjI4LDE0IEBAIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvCiB3ZWJraXQu
b3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZp
Y2VfcmVxdWVzdFNlc3Npb25fbm9fbW9kZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3Jn
L2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2Vf
cmVxdWVzdFNlc3Npb25fbm9uX2ltbWVyc2l2ZV9ub19nZXN0dXJlLmh0dHBzLmh0bWwgWyBQYXNz
IF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9vcHRpb25hbEZlYXR1cmVzLmh0dHBzLmh0bWwg
WyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0SW5wdXRQ
b3NlX2hhbmRlZG5lc3MuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9nZXRWaWV3ZXJQb3NlX2VtdWxhdGVkUG9zaXRpb24uaHR0cHMuaHRt
bCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1l
X2dldFZpZXdlclBvc2VfZ2V0UG9zZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0UG9zZS5odHRwcy5odG1sIFsgUGFz
cyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfc2Vzc2lv
bl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9hZGRfcmVtb3ZlLmh0dHBzLmh0bWwgWyBQYXNz
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9l
bXVsYXRlZFBvc2l0aW9uLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy5odG1sIFsgUGFz
cyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3
ZXJfYXZhaWxhYmlsaXR5Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUvaWRsaGFybmVz
cy5odHRwcy53aW5kb3cuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS94ckRldmljZV9pc1Nlc3Np
b25TdXBwb3J0ZWRfaW1tZXJzaXZlLWFyLmh0dHBzLmh0bWwgWyBQYXNzIF0KQEAgLTYzNSw2ICs2
NDMsNyBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVz
Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJWaWV3X21hdGNoLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLmh0bWwgWyBQYXNz
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvbmF2aWdhdG9yX3hyX3Nh
bWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy5odG1sIFsgUGFz
cyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3Bh
Y2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2VfcmVsYXRpb25zaGlwcy5o
dHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyUmlnaWRUcmFuc2Zvcm1fY29uc3RydWN0b3IuaHR0cHMuaHRtbCBbIFBhc3MgXQpAQCAtNjU0
LDcgKzY2Myw5IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNz
aW9uX3JlcXVlc3RSZWZlcmVuY2VTcGFjZV9mZWF0dXJlcy5oCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMu
aHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZp
ZXdwb3J0X3ZhbGlkLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX2NvbnN0cnVjdG9yLmh0dHBzLmh0bWwgWyBQYXNz
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX2Zy
YW1lYnVmZmVyX2RyYXcuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJfc2FtZU9iamVjdC5odHRw
cy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
V2ViR0xMYXllcl9vcGFxdWVfZnJhbWVidWZmZXIuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfdmlld3BvcnRzLmh0
dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
cmVuZGVyX3N0YXRlX3ZlcnRpY2FsX2Zvdl9pbW1lcnNpdmUuaHR0cHMuaHRtbCBbIFBhc3MgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZW5kZXJfc3RhdGVfdXBkYXRl
Lmh0dHBzLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwpp
bmRleCBlOTcyNzk5ZTRjYmI3OWQwNDk5OGE1MDA5YmNiZmNkMGIxODg3YTM1Li4zMDcwODJhY2Vl
ODNlZjk3MDBjNGQyOGVhMWEyMzMzNjhiNmM3YTA2IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDMtMTYgIEltYW5vbCBGZXJuYW5k
ZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIElu
cHV0IFNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMzI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEVuYWJsZSBXUEUgR2FtZXBhZCB3aGVuIFdlYlhSIGlzIGVuYWJsZWQuCisKKyAgICAgICAg
KiBTb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZToKKwogMjAyMS0wMy0xOCAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gQnVtcCBB
UEkgdmVyc2lvbiB3aGVuIGJ1aWxkaW5nIHdpdGggbGlic291cDMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424375</attachid>
            <date>2021-03-26 11:02:01 -0700</date>
            <delta_ts>2021-04-07 09:59:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223257-20210326190159.patch</filename>
            <type>text/plain</type>
            <size>75000</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA0ZmIzMjQxMDg4YzYy
ZTNkM2RjMjk3ZGE2NjJkMjJlODY1MmJiNC4uYjMwMjY5ZWY2ZDI2MTNlMTIzMTFhMjQ0MWM1MzJh
MDRmZjc1NTkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMS0wMy0xNiAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBwbGF0Zm9ybSBkYXRhIGRl
ZmluaXRpb24gYW5kIHRoZSBET00gYml0cyByZXF1aXJlZCB0byBzdXBwb3J0IFdlYlhSIElucHV0
IFNvdXJjZXMsIHRoZSBpbnB1dCBtZWNoYW5pc20gdXNlZCBpbiBXZWJYUi4KKyAgICAgICAgRXhh
bXBsZSBYUiBpbnB1dCBzb3VyY2VzIGluY2x1ZGUsIGJ1dCBhcmUgbm90IGxpbWl0ZWQgdG8sIGhh
bmRoZWxkIGNvbnRyb2xsZXJzLCBvcHRpY2FsbHkgdHJhY2tlZCBoYW5kcywgYW5kIGdhemUtYmFz
ZWQgaW5wdXQgbWV0aG9kcy4KKworICAgICAgICBNb3JlIGluZm8gYWJvdXQgdGhlIEFQSSBpbjoK
KyAgICAgICAgLSBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNpbnB1dAor
ICAgICAgICAtIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMt
bW9kdWxlLyN3ZWJ4ci1kZXZpY2UtYXBpLWludGVncmF0aW9uCisKKyAgICAgICAgVGVzdGVkIGJ5
IFdlYlhSIFdQVC4KKworICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmg6IEFkZCBz
ZXRDb25uZWN0ZWQgbWV0aG9kLgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZSk6IHNldCBl
bXVsYXRlZFBvc2l0aW9uIGJhc2VkIG9uIHRoZSBzcGFjZXMuCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwOiBDb21wbGV0ZSBXZWJYUklucHV0U291cmNlIGlt
cGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpXZWJYUklucHV0U3BhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpuYXRpdmVPcmlnaW4gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJHYW1lcGFkOjpXZWJYUkdhbWVwYWQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSSW5wdXRTb3VyY2U6OldlYlhSSW5wdXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3Vy
Y2U6OnJlcXVpcmVzSW5wdXRTb3VyY2VDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJ
bnB1dFNvdXJjZTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291
cmNlOjpwb2xsRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OmNy
ZWF0ZUV2ZW50KToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5o
OiBBZGQgaW5wdXQgZGF0YSBhbmQgaGVscGVyIFdlYlhSR2FtZXBhZCBhbmQgV2ViWFJJbnB1dFNw
YWNlIGNsYXNzZXMuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U3BhY2U6OnNldFBvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6aGFuZGxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OmhhbmRlZG5lc3MgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6dGFyZ2V0UmF5TW9kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjp0YXJnZXRSYXlTcGFjZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjpncmlwU3BhY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6cHJvZmlsZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6Z2FtZXBhZCBjb25zdCk6CisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaWRsOiBBZGQgZ2FtZXBhZCBhdHRy
aWJ1dGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5j
cHA6IEltcGxlbWVudCBpbnB1dCBzb3VyY2UgdXBkYXRlcyBhbmQgZXZlbnQgZGlzcGF0Y2hpbmcu
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3VyY2VBcnJh
eSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6Omxlbmd0aCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6Oml0ZW0gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjbGVhcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OnVwZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVBZGRlZE9y
VXBkYXRlZElucHV0U291cmNlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0
U291cmNlQXJyYXkuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKTogU2V0IHRy
YWNraW5nIGRlbGVnYXRlIGJlZm9yZSBpbml0aWFsaXppbmcgdHJhY2tpbmcgYW5kIHJlbmRlcmlu
Zy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6aXNQb3NpdGlvbkVtdWxhdGVkIGNv
bnN0KTogQWRkIGhlbHBlciBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246
OnNodXRkb3duKTogQ2xlYXIgV2ViWFJJbnB1dFNvdXJjZUFycmF5IGluc3RhbmNlLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNl
cyk6IERpc3BhdGNoIGluaXRpYWwgSW5wdXRTb3VyY2UgZGlzY292ZXJ5IGV2ZW50LgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpvbkZyYW1lKTogVXBkYXRlIFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheSBpbnN0YW5jZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5o
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcDogQWRkIHZpcnR1YWwg
Y2xhc3MgaXNQb3NpdGlvbkVtdWxhdGVkIHRvIGJlIHVzZWQgaW4gV2ViWFJGcmFtZS4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzUG9zaXRpb25FbXVsYXRlZCBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpyZXF1
ZXN0U2Vzc2lvbik6IHVwZGF0ZSBGSVhNRSBjb21tZW50LgorCisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9YUkhhbmRlZG5lc3MuaDogUmV1c2UgUGxhdGZvcm1YUiBlbnVtLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WFJJbnB1dFNvdXJjZUV2ZW50OjpYUklucHV0U291cmNlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6WFJJbnB1dFNvdXJjZUV2ZW50OjpzZXRGcmFtZUFjdGl2ZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIv
WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9Y
UlRhcmdldFJheU1vZGUuaDogUmV1c2UgUGxhdGZvcm1YUiBlbnVtLgorCisgICAgICAgICogcGxh
dGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Onhy
U3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZyk6IEFkZCB4ci1zdGFuZGFyZCBnYW1lcGFkIG1h
cHBpbmcgbmFtZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMu
aDoKKworICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDogQWRkIElucHV0IFNvdXJj
ZSBmcmFtZSBkYXRhLgorCisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwOiBJ
bXBsZW1lbnQgcmVxdWlyZWQgY2hhbmdlcyB0byBydW4gYW5kIHBhc3MgV2ViWFIgSW5wdXQgU291
cmNlIHRlc3RzLgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OmluaXRpYWxp
emVUcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRl
dmljZTo6ZnJhbWVUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmlj
ZTo6c2ltdWxhdGVSZXNldFBvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNl
OjpzaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbik6CisgICAgICAgICogdGVzdGluZy9XZWJG
YWtlWFJEZXZpY2UuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OldlYkZha2VY
UklucHV0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXI6OnNldEdyaXBPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyOjpzZXRQb2ludGVyT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VY
UklucHV0Q29udHJvbGxlcjo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OnJlY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OnNldFN1cHBvcnRlZEJ1dHRvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjp1cGRhdGVCdXR0b25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEJ1dHRvbk9yUGxhY2Vo
b2xkZXIgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
Lmg6CisKIDIwMjEtMDMtMjYgIEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5j
b20+CiAKICAgICAgICAgSW1wbGVtZW50IGNhY2hlZFByb3BlcnR5VmFsdWUgZm9yIFdlYlhSIFtT
YW1lT2JqZWN0XSBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dhbWVwYWQvR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVw
YWQuaAppbmRleCA4ZjE5MzM0MTYwNWNjNjAxMDE2MGQxZTI4ZDI2NzkwNjVjNGM2MTc3Li40M2Nl
ZDU0NTdmMmY0ZmQ0YTQ3NmI1ZDM2MmE0YTlkYWM1MGEwZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IFZlY3RvcjxSZWY8R2FtZXBhZEJ1dHRvbj4+JiBidXR0b25zKCkgY29uc3Q7CiAKICAgICB2
b2lkIHVwZGF0ZUZyb21QbGF0Zm9ybUdhbWVwYWQoY29uc3QgUGxhdGZvcm1HYW1lcGFkJik7Cisg
ICAgdm9pZCBzZXRDb25uZWN0ZWQoYm9vbCBjb25uZWN0ZWQpIHsgbV9jb25uZWN0ZWQgPSBjb25u
ZWN0ZWQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBHYW1lcGFkKGNvbnN0IFBsYXRmb3Jt
R2FtZXBhZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAK
aW5kZXggZjQ1ZmIxMTQ3NWEyZDgyNDBmNmJmNDc4MDZiNDAwOTg0OGNiMDg3ZC4uNzhmNDFkOWI4
ZmQ5NmViOGMwZmQxNWFlZTNkMzFiODNlYjIxYzkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgRXhjZXB0aW9uT3I8
T3B0aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxhdGVkUG9zZT4+IFdlYlhSRnJhbWU6OnBvcHVsYXRl
UG9zZShjb25zdAogICAgIC8vIDcuIExldCB0cmFuc2Zvcm0gYmUgcG9zZeKAmXMgdHJhbnNmb3Jt
LgogICAgIC8vIDguIFF1ZXJ5IHRoZSBYUiBkZXZpY2UncyB0cmFja2luZyBzeXN0ZW0gZm9yIHNw
YWNl4oCZcyBwb3NlIHJlbGF0aXZlIHRvIGJhc2VTcGFjZSBhdCB0aGUgZnJhbWXigJlzIHRpbWUu
CiAKLSAgICBpZiAoIW1fZGF0YS5pc1RyYWNraW5nVmFsaWQpIHsKKyAgICBpZiAobV9pc0FuaW1h
dGlvbkZyYW1lICYmICFtX2RhdGEuaXNUcmFja2luZ1ZhbGlkKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBjaGVjayBpZiBzcGFjZeKAmXMgcG9zZSByZWxhdGl2ZSB0byBiYXNlU3BhY2UgaGFzIGJlZW4g
ZGV0ZXJtaW5lZCBpbiB0aGUgcGFzdC4KICAgICAgICAgLy8gQW55d2F5IHRoaXMgZW11bGF0aW9u
IGlzIHVzdWFsbHkgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbSBpbiB0aGUgcG9zZSAoZS5nLiBPcGVu
WFIpCiAgICAgICAgIC8vIHNvIHdlIHNob3VsZG4ndCBoaXQgdGhpcyBwYXRoIGluIG1vc3QgWFJQ
bGF0Zm9ybSBwb3J0cy4KQEAgLTEzMSw3ICsxMzEsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxX
ZWJYUkZyYW1lOjpQb3B1bGF0ZWRQb3NlPj4gV2ViWFJGcmFtZTo6cG9wdWxhdGVQb3NlKGNvbnN0
CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCB9OwogCiAgICAgYXV0byB0cmFuc2Zvcm0g
PSAgKmJhc2VUcmFuc2Zvcm0uaW52ZXJzZSgpICogc3BhY2UuZWZmZWN0aXZlT3JpZ2luKCk7Ci0g
ICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uID0gbV9kYXRhLmlzUG9zaXRpb25FbXVsYXRlZCB8fCAh
bV9kYXRhLmlzUG9zaXRpb25WYWxpZDsKKyAgICBib29sIGVtdWxhdGVkUG9zaXRpb24gPSBzcGFj
ZS5pc1Bvc2l0aW9uRW11bGF0ZWQoKSB8fCBiYXNlU3BhY2UuaXNQb3NpdGlvbkVtdWxhdGVkKCk7
CiAKICAgICBib29sIGxpbWl0ID0gbXVzdFBvc2VzQmVMaW1pdGVkKHNwYWNlLCBiYXNlU3BhY2Up
OwogICAgIGlmIChsaW1pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJJbnB1dFNvdXJjZS5jcHAKaW5kZXggZjMwNzY3NTExOThkYmJjMzc2Y2I5NzE5YjhhODdi
MTJjNjIwMThkZC4uNjA1N2MyMzkzNTAyMDE0ZTA3N2I5MzZhNmVlNWIzNzJiOTViYmEzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3Bw
CkBAIC0yOCw1MCArMjgsMTc5IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCisjaWYgRU5BQkxFKEdBTUVQQUQpCisjaW5jbHVkZSAiR2FtZXBhZC5oIgor
I2luY2x1ZGUgIkdhbWVwYWRDb25zdGFudHMuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYlhSRnJh
bWUuaCIKKyNpbmNsdWRlICJXZWJYUlJpZ2lkVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiV2ViWFJT
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiV2ViWFJTcGFjZS5oIgorI2luY2x1ZGUgIlhSSW5wdXRTb3Vy
Y2VFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSW5wdXRTcGFj
ZSk7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJJbnB1dFNvdXJjZSk7CiAKLVJl
ZjxXZWJYUklucHV0U291cmNlPiBXZWJYUklucHV0U291cmNlOjpjcmVhdGUoUmVmPFdlYlhSU3Bh
Y2U+JiYgdGFyZ2V0UmF5U3BhY2UpCisvLyBXZWJYUklucHV0U3BhY2UKKworUmVmPFdlYlhSSW5w
dXRTcGFjZT4gV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8
V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpJbnB1dFNvdXJjZVBvc2UmIHBvc2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViWFJJbnB1dFNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBwb3NlKSk7Cit9CisK
K1dlYlhSSW5wdXRTcGFjZTo6V2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKQorICAgIDogV2ViWFJTcGFjZShkb2N1bWVudCwg
V2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkpCisgICAgLCBtX3Nlc3Npb24oV1RGTW92ZShz
ZXNzaW9uKSkKKyAgICAsIG1fcG9zZShwb3NlKQoreworfQorCitXZWJYUklucHV0U3BhY2U6On5X
ZWJYUklucHV0U3BhY2UoKSA9IGRlZmF1bHQ7CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhS
SW5wdXRTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViWFJGcmFt
ZTo6bWF0cml4RnJvbVBvc2UobV9wb3NlLnBvc2UpOworfQorCisvLyBXZWJYUiBHYW1lcGFkCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5p
by93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvI2dhbWVwYWQtZGlmZmVyZW5jZXMKK1dlYlhSR2FtZXBh
ZDo6V2ViWFJHYW1lcGFkKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBjb25uZWN0VGltZSwgY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2UpCisg
ICAgOiBQbGF0Zm9ybUdhbWVwYWQoLTEpCit7CisgICAgbV9sYXN0VXBkYXRlVGltZSA9IE1vbm90
b25pY1RpbWU6OmZyb21SYXdTZWNvbmRzKFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHModGltZXN0
YW1wKS52YWx1ZSgpKTsKKyAgICBtX2Nvbm5lY3RUaW1lID0gTW9ub3RvbmljVGltZTo6ZnJvbVJh
d1NlY29uZHMoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhjb25uZWN0VGltZSkudmFsdWUoKSk7
CisgICAgLy8gSW4gb3JkZXIgdG8gcmVwb3J0IGEgbWFwcGluZyBvZiAieHItc3RhbmRhcmQiIHRo
ZSBkZXZpY2UgTVVTVCByZXBvcnQgYSB0YXJnZXRSYXlNb2RlIG9mICJ0cmFja2VkLXBvaW50ZXIi
IGFuZCBNVVNUIGhhdmUgYSBub24tbnVsbCBncmlwU3BhY2UuCisgICAgLy8gSXQgTVVTVCBoYXZl
IGF0IGxlYXN0IG9uZSBwcmltYXJ5IHRyaWdnZXIsIHNlcGFyYXRlIGZyb20gYW55IHRvdWNocGFk
cyBvciB0aHVtYnN0aWNrcworICAgIGlmIChzb3VyY2UudGFyZ2V0UmF5TW9kZSA9PSBYUlRhcmdl
dFJheU1vZGU6OlRyYWNrZWRQb2ludGVyICYmICFzb3VyY2UuYnV0dG9ucy5pc0VtcHR5KCkgJiYg
c291cmNlLmdyaXBPcmlnaW4uaGFzVmFsdWUoKSkKKyAgICAgICAgbV9tYXBwaW5nID0geHJTdGFu
ZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCk7CisgICAgbV9heGVzID0gc291cmNlLmF4ZXMubWFw
KFtdKGF1dG8gdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEdhbWVwYWRWYWx1ZSh2YWx1
ZSk7CisgICAgfSk7CisgICAgbV9idXR0b25zID0gc291cmNlLmJ1dHRvbnMubWFwKFtdKGF1dG8m
IHZhbHVlKSB7CisgICAgICAgIHJldHVybiBTaGFyZWRHYW1lcGFkVmFsdWUodmFsdWUucHJlc3Nl
ZFZhbHVlKTsKKyAgICB9KTsKK30KKworI2VuZGlmCisKKy8vIFdlYlhSSW5wdXRTb3VyY2UKKwor
UmVmPFdlYlhSSW5wdXRTb3VyY2U+IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgZG91YmxlIHRpbWVzdGFtcCwg
Y29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2Up
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJjZShXVEZNb3ZlKHRh
cmdldFJheVNwYWNlKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3Vy
Y2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIHRpbWVzdGFtcCwgc291cmNlKSk7CiB9CiAK
LVdlYlhSSW5wdXRTb3VyY2U6OldlYlhSSW5wdXRTb3VyY2UoUmVmPFdlYlhSU3BhY2U+JiYgdGFy
Z2V0UmF5U3BhY2UpCi0gICAgOiBtX2hhbmRlZG5lc3MoWFJIYW5kZWRuZXNzOjpOb25lKQotICAg
ICwgbV90YXJnZXRSYXlNb2RlKFhSVGFyZ2V0UmF5TW9kZTo6R2F6ZSkKLSAgICAsIG1fdGFyZ2V0
UmF5U3BhY2UoV1RGTW92ZSh0YXJnZXRSYXlTcGFjZSkpCitXZWJYUklucHV0U291cmNlOjpXZWJY
UklucHV0U291cmNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNz
aW9uLCBkb3VibGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YTo6SW5wdXRTb3VyY2UmIHNvdXJjZSkKKyAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAg
LCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1fdGFyZ2V0UmF5U3BhY2UoV2Vi
WFJJbnB1dFNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksIHNvdXJj
ZS5wb2ludGVyT3JpZ2luKSkKKyAgICAsIG1fY29ubmVjdFRpbWUodGltZXN0YW1wKQorI2lmIEVO
QUJMRShHQU1FUEFEKQorICAgICwgbV9nYW1lcGFkKEdhbWVwYWQ6OmNyZWF0ZShXZWJYUkdhbWVw
YWQodGltZXN0YW1wLCB0aW1lc3RhbXAsIHNvdXJjZSkpKQorI2VuZGlmCiB7CisgICAgdXBkYXRl
KHRpbWVzdGFtcCwgc291cmNlKTsKIH0KIAogV2ViWFJJbnB1dFNvdXJjZTo6fldlYlhSSW5wdXRT
b3VyY2UoKSA9IGRlZmF1bHQ7CiAKLVhSSGFuZGVkbmVzcyBXZWJYUklucHV0U291cmNlOjpoYW5k
ZWRuZXNzKCkgY29uc3QKK3ZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6dXBkYXRlKGRvdWJsZSB0aW1l
c3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYg
c291cmNlKQogewotICAgIHJldHVybiBtX2hhbmRlZG5lc3M7CisjaWYgIUVOQUJMRShHQU1FUEFE
KQorICAgIFVOVVNFRF9QQVJBTSh0aW1lc3RhbXApOworI2VuZGlmCisgICAgbV9zb3VyY2UgPSBz
b3VyY2U7CisgICAgbV90YXJnZXRSYXlTcGFjZS0+c2V0UG9zZShzb3VyY2UucG9pbnRlck9yaWdp
bik7CisgICAgaWYgKGF1dG8gZ3JpcE9yaWdpbiA9IHNvdXJjZS5ncmlwT3JpZ2luKSB7CisgICAg
ICAgIGlmIChtX2dyaXBTcGFjZSkKKyAgICAgICAgICAgIG1fZ3JpcFNwYWNlLT5zZXRQb3NlKCpn
cmlwT3JpZ2luKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9ncmlwU3BhY2UgPSBXZWJY
UklucHV0U3BhY2U6OmNyZWF0ZShtX2RvY3VtZW50LCBtX3Nlc3Npb24uZ2V0KCksICpncmlwT3Jp
Z2luKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9ncmlwU3BhY2UgPSBudWxscHRyOworI2lmIEVO
QUJMRShHQU1FUEFEKQorICAgIG1fZ2FtZXBhZC0+dXBkYXRlRnJvbVBsYXRmb3JtR2FtZXBhZChX
ZWJYUkdhbWVwYWQodGltZXN0YW1wLCBtX2Nvbm5lY3RUaW1lLCBzb3VyY2UpKTsKKyNlbmRpZgog
fQogCi1YUlRhcmdldFJheU1vZGUgV2ViWFJJbnB1dFNvdXJjZTo6dGFyZ2V0UmF5TW9kZSgpIGNv
bnN0Citib29sIFdlYlhSSW5wdXRTb3VyY2U6OnJlcXVpcmVzSW5wdXRTb3VyY2VDaGFuZ2UoY29u
c3QgSW5wdXRTb3VyY2UmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gbV90YXJnZXRSYXlNb2RlOwor
ICAgIHJldHVybiBtX3NvdXJjZS5oYW5kZW5lc3MgIT0gc291cmNlLmhhbmRlbmVzcworICAgICAg
ICB8fCBtX3NvdXJjZS50YXJnZXRSYXlNb2RlICE9IHNvdXJjZS50YXJnZXRSYXlNb2RlCisgICAg
ICAgIHx8IG1fc291cmNlLnByb2ZpbGVzICE9IHNvdXJjZS5wcm9maWxlcworICAgICAgICB8fCBz
dGF0aWNfY2FzdDxib29sPihtX2dyaXBTcGFjZSkgIT0gc291cmNlLmdyaXBPcmlnaW4uaGFzVmFs
dWUoKTsKIH0KIAotY29uc3QgV2ViWFJTcGFjZSYgV2ViWFJJbnB1dFNvdXJjZTo6dGFyZ2V0UmF5
U3BhY2UoKSBjb25zdAordm9pZCBXZWJYUklucHV0U291cmNlOjpkaXNjb25uZWN0KCkKIHsKLSAg
ICByZXR1cm4gbV90YXJnZXRSYXlTcGFjZTsKKyAgICBtX2Nvbm5lY3RlZCA9IGZhbHNlOworI2lm
IEVOQUJMRShHQU1FUEFEKQorICAgIG1fZ2FtZXBhZC0+c2V0Q29ubmVjdGVkKGZhbHNlKTsKKyNl
bmRpZgogfQogCi1SZWZQdHI8V2ViWFJTcGFjZT4gV2ViWFJJbnB1dFNvdXJjZTo6Z3JpcFNwYWNl
KCkgY29uc3QKK3ZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6cG9sbEV2ZW50cyhWZWN0b3I8UmVmPFhS
SW5wdXRTb3VyY2VFdmVudD4+JiBldmVudHMpCiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICBpZiAo
IW1fY29ubmVjdGVkKSB7CisgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEg
c2VsZWN0ZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNv
dXJjZXMgZW5kcyAKKyAgICAgICAgLy8gd2hlbiBhbiBYUklucHV0U291cmNlIHRoYXQgaGFzIGJl
Z3VuIGEgcHJpbWFyeSBzZWxlY3QgYWN0aW9uIGlzIGRpc2Nvbm5lY3RlZC4KKyAgICAgICAgaWYg
KG1fc2VsZWN0U3RhcnRlZCkKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQo
ZXZlbnROYW1lcygpLnNlbGVjdGVuZEV2ZW50KSk7CisKKyAgICAgICAgLy8gQSB1c2VyIGFnZW50
IE1VU1QgZGlzcGF0Y2ggYSBzcXVlZXplZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9u
ZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgZW5kcyAKKyAgICAgICAgLy8gd2hlbiBhbiBYUklucHV0
U291cmNlIHRoYXQgaGFzIGJlZ3VuIGEgcHJpbWFyeSBzcXVlZXplIGFjdGlvbiBpcyBkaXNjb25u
ZWN0ZWQuCisgICAgICAgIGlmIChtX3NxdWVlemVTdGFydGVkKQorICAgICAgICAgICAgZXZlbnRz
LmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZWVuZEV2ZW50KSk7CisKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRo
dWIuaW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyN4ci1zdGFuZGFyZC1nYW1lcGFkLW1hcHBpbmcK
KyAgICAvLyBCdXR0b24gaW5kaWNlcyBhcmUgYmFzZWQgb24gdGhlIHhyLXN0YW5kYXJkIGxheW91
dC4KKyAgICBib29sIHNlbGVjdFN0YXJ0ZWQgPSAhbV9zb3VyY2UuYnV0dG9ucy5pc0VtcHR5KCkg
JiYgbV9zb3VyY2UuYnV0dG9ucy5maXJzdCgpLnByZXNzZWQ7CisgICAgYm9vbCBzcXVlZXplU3Rh
cnRlZCA9IG1fc291cmNlLmJ1dHRvbnMuc2l6ZSgpID4gMSAmJiBtX3NvdXJjZS5idXR0b25zWzFd
LnByZXNzZWQ7CisKKyAgICBpZiAoc2VsZWN0U3RhcnRlZCAhPSBtX3NlbGVjdFN0YXJ0ZWQpIHsK
KyAgICAgICAgaWYgKHNlbGVjdFN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIC8vIEEgdXNlciBhZ2Vu
dCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0c3RhcnQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4g
b25lIG9mIGl0cyBYUklucHV0U291cmNlcyBiZWdpbnMgaXRzIHByaW1hcnkgYWN0aW9uLgorICAg
ICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc2VsZWN0c3Rh
cnRFdmVudCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQSB1c2VyIGFnZW50
IE1VU1QgZGlzcGF0Y2ggYSBzZWxlY3RlbmQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25l
IG9mIGl0cyBYUklucHV0U291cmNlcyBlbmRzIGl0cyBwcmltYXJ5IGFjdGlvbi4KKyAgICAgICAg
ICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0IGV2ZW50IG9uIGFuIFhS
U2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgaGFzIGZ1bGx5IGNvbXBsZXRl
ZCBhIHByaW1hcnkgYWN0aW9uCisgICAgICAgICAgICBldmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50
KGV2ZW50TmFtZXMoKS5zZWxlY3RFdmVudCkpOworICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChj
cmVhdGVFdmVudChldmVudE5hbWVzKCkuc2VsZWN0ZW5kRXZlbnQpKTsKKyAgICAgICAgfQorICAg
ICAgICBtX3NlbGVjdFN0YXJ0ZWQgPSBzZWxlY3RTdGFydGVkOworICAgIH0KKworICAgIGlmIChz
cXVlZXplU3RhcnRlZCAhPSBtX3NxdWVlemVTdGFydGVkKSB7CisgICAgICAgIGlmIChzcXVlZXpl
U3RhcnRlZCkgeworICAgICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYSBz
cXVlZXplc3RhcnQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBYUklucHV0
U291cmNlcyBiZWdpbnMgaXRzIHByaW1hcnkgc3F1ZWV6ZSBhY3Rpb24uCisgICAgICAgICAgICBl
dmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5zcXVlZXplc3RhcnRFdmVudCkp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlz
cGF0Y2ggYSBzZWxlY3RlbmQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBY
UklucHV0U291cmNlcyBlbmRzIGl0cyBwcmltYXJ5IHNxdWVlemUgYWN0aW9uLgorICAgICAgICAg
ICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYSBzZWxlY3QgZXZlbnQgb24gYW4gWFJT
ZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBYUklucHV0U291cmNlcyBoYXMgZnVsbHkgY29tcGxldGVk
IGEgcHJpbWFyeSBzcXVlZXplIGFjdGlvbi4KKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3Jl
YXRlRXZlbnQoZXZlbnROYW1lcygpLnNxdWVlemVFdmVudCkpOworICAgICAgICAgICAgZXZlbnRz
LmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZWVuZEV2ZW50KSk7CisgICAg
ICAgIH0KKyAgICAgICAgbV9zcXVlZXplU3RhcnRlZCA9IHNxdWVlemVTdGFydGVkOworICAgIH0K
IH0KIAotY29uc3QgVmVjdG9yPFN0cmluZz4mIFdlYlhSSW5wdXRTb3VyY2U6OnByb2ZpbGVzKCkg
Y29uc3QKK1JlZjxYUklucHV0U291cmNlRXZlbnQ+IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZUV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIG1fcHJvZmlsZXM7Cisg
ICAgWFJJbnB1dFNvdXJjZUV2ZW50OjpJbml0IGluaXQ7CisgICAgaW5pdC5mcmFtZSA9IFdlYlhS
RnJhbWU6OmNyZWF0ZShtX3Nlc3Npb24uY29weVJlZigpLCBXZWJYUkZyYW1lOjpJc0FuaW1hdGlv
bkZyYW1lOjpObyk7CisgICAgaW5pdC5pbnB1dFNvdXJjZSA9IG1ha2VSZWZQdHIoKnRoaXMpOwor
CisgICAgcmV0dXJuIFhSSW5wdXRTb3VyY2VFdmVudDo6Y3JlYXRlKG5hbWUsIGluaXQpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJJbnB1dFNvdXJjZS5oCmluZGV4IDY4YzI5YWIxY2RiOTA2ZGJlMTRiYjk0OTJhYjJm
ZDg4YjQxZDQxMTIuLjc2MzYyOGI0MzkyNmUwYTQwOGE0ZmU5OWEzNGEwMzhlODVhZWYwNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5oCkBA
IC0yNyw2ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJQbGF0Zm9y
bVhSLmgiCisjaW5jbHVkZSAiV2ViWFJTcGFjZS5oIgogI2luY2x1ZGUgIlhSSGFuZGVkbmVzcy5o
IgogI2luY2x1ZGUgIlhSVGFyZ2V0UmF5TW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2Mu
aD4KQEAgLTM2LDI5ICszOCw5OCBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShHQU1FUEFEKQorI2luY2x1ZGUg
IlBsYXRmb3JtR2FtZXBhZC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgV2ViWFJTcGFjZTsKKyNpZiBFTkFCTEUoR0FNRVBBRCkKK2NsYXNzIEdhbWVwYWQ7CisjZW5k
aWYKK2NsYXNzIFhSSW5wdXRTb3VyY2VFdmVudDsKKworY2xhc3MgV2ViWFJJbnB1dFNwYWNlIDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPiwgcHVibGljIFdlYlhSU3BhY2Ugewor
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJJbnB1dFNwYWNlKTsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291
cmNlUG9zZSYpOworICAgIHZpcnR1YWwgfldlYlhSSW5wdXRTcGFjZSgpOworCisgICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJYUklucHV0U3BhY2U+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxX
ZWJYUklucHV0U3BhY2U+OjpkZXJlZjsKKworICAgIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9wb3NlLmlzUG9zaXRpb25FbXVsYXRlZDsgfQorICAgIHZv
aWQgc2V0UG9zZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3Vy
Y2VQb3NlJiBwb3NlKSB7IG1fcG9zZSA9IHBvc2U7IH0KKworcHJpdmF0ZToKKyAgICBXZWJYUklu
cHV0U3BhY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBjb25zdCBQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJik7CisgICAgV2ViWFJTZXNzaW9u
JiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CisKKyAgICB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCisgICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9z
ZXNzaW9uOworICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBv
c2UgbV9wb3NlOworfTsKKworI2lmIEVOQUJMRShHQU1FUEFEKQorY2xhc3MgV2ViWFJHYW1lcGFk
OiBwdWJsaWMgUGxhdGZvcm1HYW1lcGFkIHsKK3B1YmxpYzoKKyAgICBXZWJYUkdhbWVwYWQoZG91
YmxlIHRpbWVzdGFtcCwgZG91YmxlIGNvbm5lY3RUaW1lLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UmKTsKKworcHJpdmF0ZToKKyAgICBjb25zdCBWZWN0
b3I8U2hhcmVkR2FtZXBhZFZhbHVlPiYgYXhpc1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fYXhlczsgfQorICAgIGNvbnN0IFZlY3RvcjxTaGFyZWRHYW1lcGFkVmFsdWU+JiBidXR0b25W
YWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J1dHRvbnM7IH0KKworICAgIFZlY3RvcjxT
aGFyZWRHYW1lcGFkVmFsdWU+IG1fYXhlczsKKyAgICBWZWN0b3I8U2hhcmVkR2FtZXBhZFZhbHVl
PiBtX2J1dHRvbnM7Cit9OworI2VuZGlmCiAKIGNsYXNzIFdlYlhSSW5wdXRTb3VyY2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJYUklucHV0U291cmNlPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChXZWJYUklucHV0U291cmNlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSSW5w
dXRTb3VyY2U+IGNyZWF0ZShSZWY8V2ViWFJTcGFjZT4mJik7CisgICAgdXNpbmcgSW5wdXRTb3Vy
Y2UgPSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U7CisgICAgdXNp
bmcgSW5wdXRTb3VyY2VCdXR0b24gPSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2VCdXR0b247CisKKyAgICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRTb3VyY2U+IGNyZWF0
ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0
IElucHV0U291cmNlJik7CiAgICAgfldlYlhSSW5wdXRTb3VyY2UoKTsKIAotICAgIFhSSGFuZGVk
bmVzcyBoYW5kZWRuZXNzKCkgY29uc3Q7Ci0gICAgWFJUYXJnZXRSYXlNb2RlIHRhcmdldFJheU1v
ZGUoKSBjb25zdDsKLSAgICBjb25zdCBXZWJYUlNwYWNlJiB0YXJnZXRSYXlTcGFjZSgpIGNvbnN0
OwotICAgIFJlZlB0cjxXZWJYUlNwYWNlPiBncmlwU3BhY2UoKSBjb25zdDsKLSAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcHJvZmlsZXMoKSBjb25zdDsKKyAgICBQbGF0Zm9ybVhSOjpJbnB1dFNv
dXJjZUhhbmRsZSBoYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5oYW5kbGU7IH0KKyAg
ICBYUkhhbmRlZG5lc3MgaGFuZGVkbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmhhbmRl
bmVzczsgfQorICAgIFhSVGFyZ2V0UmF5TW9kZSB0YXJnZXRSYXlNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2UudGFyZ2V0UmF5TW9kZTsgfTsKKyAgICBjb25zdCBXZWJYUlNwYWNlJiB0YXJn
ZXRSYXlTcGFjZSgpIGNvbnN0IHtyZXR1cm4gbV90YXJnZXRSYXlTcGFjZS5nZXQoKTsgfTsKKyAg
ICBSZWZQdHI8V2ViWFJTcGFjZT4gZ3JpcFNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9ncmlwU3Bh
Y2U7IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvZmlsZXMoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZS5wcm9maWxlczsgfTsKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBjb25zdCBH
YW1lcGFkKiBnYW1lcGFkKCkgY29uc3QgeyByZXR1cm4gbV9nYW1lcGFkLnB0cigpOyB9CisjZW5k
aWYKKworICAgIHZvaWQgdXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNl
Jik7CisgICAgYm9vbCByZXF1aXJlc0lucHV0U291cmNlQ2hhbmdlKGNvbnN0IElucHV0U291cmNl
Jik7CisgICAgdm9pZCBkaXNjb25uZWN0KCk7CisgICAgCisgICAgdm9pZCBwb2xsRXZlbnRzKFZl
Y3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mKTsKIAogcHJpdmF0ZToKLSAgICBXZWJYUklu
cHV0U291cmNlKFJlZjxXZWJYUlNwYWNlPiYmKTsKKyAgICBXZWJYUklucHV0U291cmNlKERvY3Vt
ZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRT
b3VyY2UmKTsKKworICAgIFJlZjxYUklucHV0U291cmNlRXZlbnQ+IGNyZWF0ZUV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmKTsKKworICAgIERvY3VtZW50JiBtX2RvY3VtZW50OworICAgIFJlZjxXZWJY
UlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBJbnB1dFNvdXJjZSBtX3NvdXJjZTsKKyAgICBSZWY8
V2ViWFJJbnB1dFNwYWNlPiBtX3RhcmdldFJheVNwYWNlOworICAgIFJlZlB0cjxXZWJYUklucHV0
U3BhY2U+IG1fZ3JpcFNwYWNlOworICAgIGRvdWJsZSBtX2Nvbm5lY3RUaW1lIHsgMCB9OworICAg
IGJvb2wgbV9jb25uZWN0ZWQgeyB0cnVlIH07CisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgUmVm
PEdhbWVwYWQ+IG1fZ2FtZXBhZDsKKyNlbmRpZgogCi0gICAgWFJIYW5kZWRuZXNzIG1faGFuZGVk
bmVzczsKLSAgICBYUlRhcmdldFJheU1vZGUgbV90YXJnZXRSYXlNb2RlOwotICAgIFJlZjxXZWJY
UlNwYWNlPiBtX3RhcmdldFJheVNwYWNlOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fcHJvZmlsZXM7
CisgICAgYm9vbCBtX3NlbGVjdFN0YXJ0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zcXVlZXpl
U3RhcnRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmlkbAppbmRleCAw
NDU5ZjNmZTQ3MDc1MjExMzdiZjUzZjFhMzQ0ZWRkZDk4ZWJkMzY5Li44ZDIxOTA2NTY1N2EyZjNl
ZTM2ODMzZWQ4ZWE1NDI4YTIyNGE1YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5pZGwKQEAgLTM1LDUgKzM1LDggQEAKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgWFJUYXJnZXRSYXlNb2RlIHRhcmdldFJheU1vZGUgOwogICAgIFtTYW1l
T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJTcGFjZSB0YXJnZXRSYXlTcGFjZTsKICAg
ICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSU3BhY2U/IGdyaXBTcGFjZSA7
Ci0gICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxET01TdHJp
bmc+IHByb2ZpbGVzOworICAgIFtDYWNoZWRBdHRyaWJ1dGUsIFNhbWVPYmplY3RdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxET01TdHJpbmc+IHByb2ZpbGVzOworCisgICAgLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvI3hyaW5w
dXRzb3VyY2UtaW50ZXJmYWNlCisgICAgW0NvbmRpdGlvbmFsPUdBTUVQQUQsIFNhbWVPYmplY3Rd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBHYW1lcGFkPyBnYW1lcGFkOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcAppbmRl
eCBjNGMwODU1MzJiY2Q5YWFjMjczODA5MGJmYTNmZGRmZWE0MzM1NWQzLi4zN2NlZjFlYTY5Mzgw
YWZiMjdkNTBjNGE4ZDZjNzM0YTJmMTc1OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwCkBAIC0yNywyMSArMjcs
MTU0IEBACiAjaW5jbHVkZSAiV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgiCiAKICNpZiBFTkFCTEUo
V0VCWFIpCi0KKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiV2ViWFJJbnB1dFNv
dXJjZS5oIgorI2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlhSSW5wdXRTb3Vy
Y2VFdmVudC5oIgorI2luY2x1ZGUgIlhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUklucHV0U291cmNlQXJyYXkpOwogCisKK1Jl
ZjxXZWJYUklucHV0U291cmNlQXJyYXk+IFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3VyY2VBcnJheShkb2N1bWVudCwgc2Vzc2lvbikpOwor
fQorCitXZWJYUklucHV0U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3VyY2VBcnJheShEb2N1bWVu
dCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKKyAgICA6IG1fZG9jdW1lbnQoZG9j
dW1lbnQpCisgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViWFJJbnB1dFNvdXJj
ZUFycmF5Ojp+V2ViWFJJbnB1dFNvdXJjZUFycmF5KCkgPSBkZWZhdWx0OworCiB1bnNpZ25lZCBX
ZWJYUklucHV0U291cmNlQXJyYXk6Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG1faW5wdXRTb3VyY2VzLnNpemUoKTsKK30KKworV2ViWFJJbnB1dFNvdXJjZSog
V2ViWFJJbnB1dFNvdXJjZUFycmF5OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAg
IHJldHVybiBtX2lucHV0U291cmNlcy5hdChpbmRleCkucHRyKCk7Cit9CisKK3ZvaWQgV2ViWFJJ
bnB1dFNvdXJjZUFycmF5OjpjbGVhcigpCit7CisgICAgbV9pbnB1dFNvdXJjZXMuY2xlYXIoKTsK
K30KKworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jbGlzdC1vZi1h
Y3RpdmUteHItaW5wdXQtc291cmNlcwordm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6OnVwZGF0
ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmIGlucHV0U291cmNlcykK
K3sKKyAgICBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiBhZGRlZDsKKyAgICBWZWN0b3I8
UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiByZW1vdmVkOworICAgIFZlY3RvcjxSZWY8WFJJbnB1dFNv
dXJjZUV2ZW50Pj4gaW5wdXRFdmVudHM7CisKKyAgICBoYW5kbGVSZW1vdmVkSW5wdXRTb3VyY2Vz
KGlucHV0U291cmNlcywgcmVtb3ZlZCwgaW5wdXRFdmVudHMpOworICAgIGhhbmRsZUFkZGVkT3JV
cGRhdGVkSW5wdXRTb3VyY2VzKHRpbWVzdGFtcCwgaW5wdXRTb3VyY2VzLCBhZGRlZCwgcmVtb3Zl
ZCwgaW5wdXRFdmVudHMpOworCisgICAgaWYgKCFhZGRlZC5pc0VtcHR5KCkgfHwgIXJlbW92ZWQu
aXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGFuIGlu
cHV0c291cmNlc2NoYW5nZSBldmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiB0aGUgc2Vzc2lvbuKA
mXMgbGlzdCBvZiBhY3RpdmUgWFIgaW5wdXQgc291cmNlcyBoYXMgY2hhbmdlZC4KKyAgICAgICAg
WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudDo6SW5pdCBpbml0OworICAgICAgICBpbml0LnNlc3Np
b24gPSBtYWtlUmVmUHRyKG1fc2Vzc2lvbik7CisgICAgICAgIGluaXQuYWRkZWQgPSBhZGRlZC5t
YXAoW10oYXV0byYgaW5wdXQpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKGlucHV0
LmdldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIGluaXQucmVtb3ZlZCA9IHJlbW92ZWQubWFw
KFtdKGF1dG8mIGlucHV0KSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihpbnB1dC5n
ZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgYXV0byBldmVudCA9IFhSSW5w
dXRTb3VyY2VzQ2hhbmdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5wdXRzb3VyY2VzY2hh
bmdlRXZlbnQsIGluaXQpOworICAgICAgICBtX3Nlc3Npb24ucXVldWVUYXNrVG9EaXNwYXRjaEV2
ZW50KG1fc2Vzc2lvbiwgVGFza1NvdXJjZTo6V2ViWFIsIFdURk1vdmUoZXZlbnQpKTsKKyAgICB9
CisKKyAgICBpZiAoIWlucHV0RXZlbnRzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBXaGVuIHRo
ZSB1c2VyIGFnZW50IGhhcyB0byBmaXJlIGFuIGlucHV0IHNvdXJjZSBldmVudCB3aXRoIG5hbWUg
bmFtZSwgWFJGcmFtZSBmcmFtZSwgYW5kIFhSSW5wdXRTb3VyY2Ugc291cmNlIGl0IE1VU1QgcnVu
IHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIC8vIDEuIENyZWF0ZSBhbiBYUklucHV0U291
cmNlRXZlbnQgZXZlbnQgd2l0aCB0eXBlIG5hbWUsIGZyYW1lIGZyYW1lLCBhbmQgaW5wdXRTb3Vy
Y2Ugc291cmNlLgorICAgICAgICAvLyAyLiBTZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIHRv
IHRydWUuCisgICAgICAgIC8vIDMuIEFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZyYW1lLgorICAg
ICAgICAvLyA0LiBEaXNwYXRjaCBldmVudCBvbiBmcmFtZeKAmXMgc2Vzc2lvbgorICAgICAgICAv
LyA1LiBTZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIHRvIGZhbHNlLgorCisgICAgICAgIGZv
ciAoYXV0byYgZXZlbnQgOiBpbnB1dEV2ZW50cykgeworICAgICAgICAgICAgZXZlbnQtPnNldEZy
YW1lQWN0aXZlKHRydWUpOworICAgICAgICAgICAgbV9zZXNzaW9uLnF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudChtX3Nlc3Npb24sIFRhc2tTb3VyY2U6OldlYlhSLCBldmVudC5jb3B5UmVmKCkpOwor
ICAgICAgICAgICAgbV9zZXNzaW9uLnF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZShtX3Nlc3Np
b24sIFRhc2tTb3VyY2U6OldlYlhSLCBbZXZlbnQgPSBXVEZNb3ZlKGV2ZW50KV0oKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnQtPnNldEZyYW1lQWN0aXZlKGZhbHNlKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisgICAgfQorfQorCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHVi
LmlvL3dlYnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1zb3VyY2VzCit2b2lkIFdlYlhSSW5w
dXRTb3VyY2VBcnJheTo6aGFuZGxlUmVtb3ZlZElucHV0U291cmNlcyhjb25zdCBJbnB1dFNvdXJj
ZUxpc3QmIGlucHV0U291cmNlcywgVmVjdG9yPFJlZjxXZWJYUklucHV0U291cmNlPj4mIHJlbW92
ZWQsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mIGlucHV0RXZlbnRzKQoreworICAg
IC8vIFdoZW4gYW55IHByZXZpb3VzbHkgYWRkZWQgWFIgaW5wdXQgc291cmNlcyBhcmUgbm8gbG9u
Z2VyIGF2YWlsYWJsZSBmb3IgWFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2VyIGFnZW50IE1VU1Qg
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gMS4gSWYgc2Vzc2lvbidzIHByb21pc2Ug
cmVzb2x2ZWQgZmxhZyBpcyBub3Qgc2V0LCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAvLyAyLiBM
ZXQgcmVtb3ZlZCBiZSBhIG5ldyBsaXN0LgorICAgIC8vIDMuIEZvciBlYWNoIFhSIGlucHV0IHNv
dXJjZSB0aGF0IGlzIG5vIGxvbmdlciBhdmFpbGFibGU6CisgICAgLy8gIDMuMSBMZXQgaW5wdXRT
b3VyY2UgYmUgdGhlIFhSSW5wdXRTb3VyY2UgaW4gc2Vzc2lvbidzIGxpc3Qgb2YgYWN0aXZlIFhS
IGlucHV0IHNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBYUiBpbnB1dCBzb3VyY2UuCisgICAg
Ly8gIDMuMiBBZGQgaW5wdXRTb3VyY2UgdG8gcmVtb3ZlZC4KKyAgICBmb3IgKGludCBpID0gbV9p
bnB1dFNvdXJjZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgYXV0byBoYW5k
bGUgPSBtX2lucHV0U291cmNlc1tpXS0+aGFuZGxlKCk7CisgICAgICAgIGlmIChpbnB1dFNvdXJj
ZXMuZmluZE1hdGNoaW5nKFtoYW5kbGVdKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaGFuZGxl
ID09IGhhbmRsZTsgfSkgPT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICAgICAgcmVtb3ZlZC5h
cHBlbmQobV9pbnB1dFNvdXJjZXNbaV0uY29weVJlZigpKTsKKyAgICAgICAgICAgIG1faW5wdXRT
b3VyY2VzW2ldLT5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICBtX2lucHV0U291cmNlc1tpXS0+
cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7CisgICAgICAgICAgICBtX2lucHV0U291cmNlcy5yZW1v
dmUoaSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKLVdlYlhSSW5wdXRTb3VyY2UqIFdlYlhSSW5w
dXRTb3VyY2VBcnJheTo6aXRlbSh1bnNpZ25lZCkgY29uc3QKKy8vIGh0dHBzOi8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHIvI2xpc3Qtb2YtYWN0aXZlLXhyLWlucHV0LXNvdXJjZXMKK3Zv
aWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVBZGRlZE9yVXBkYXRlZElucHV0U291cmNl
cyhkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmIGlucHV0U291cmNlcywg
VmVjdG9yPFJlZjxXZWJYUklucHV0U291cmNlPj4mIGFkZGVkLCBWZWN0b3I8UmVmPFdlYlhSSW5w
dXRTb3VyY2U+PiYgcmVtb3ZlZCwgVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYgaW5w
dXRFdmVudHMpCiB7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChhdXRvJiBpbnB1dFNv
dXJjZSA6IGlucHV0U291cmNlcykgeworICAgICAgICBhdXRvIGluZGV4ID0gbV9pbnB1dFNvdXJj
ZXMuZmluZE1hdGNoaW5nKFsmaW5wdXRTb3VyY2VdKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0t
PmhhbmRsZSgpID09IGlucHV0U291cmNlLmhhbmRsZTsgfSk7CisgICAgICAgIGlmIChpbmRleCA9
PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgICAgICAvLyBXaGVuIG5ldyBYUiBpbnB1dCBzb3Vy
Y2VzIGJlY29tZSBhdmFpbGFibGUgZm9yIFhSU2Vzc2lvbiBzZXNzaW9uLCB0aGUgdXNlciBhZ2Vu
dCBNVVNUIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAgICAgLy8gMS4gSWYgc2Vz
c2lvbidzIHByb21pc2UgcmVzb2x2ZWQgZmxhZyBpcyBub3Qgc2V0LCBhYm9ydCB0aGVzZSBzdGVw
cy4KKyAgICAgICAgICAgIC8vIDIuIExldCBhZGRlZCBiZSBhIG5ldyBsaXN0LgorICAgICAgICAg
ICAgLy8gMy4gRm9yIGVhY2ggbmV3IFhSIGlucHV0IHNvdXJjZToKKyAgICAgICAgICAgIC8vICAg
My4xIExldCBpbnB1dFNvdXJjZSBiZSBhIG5ldyBYUklucHV0U291cmNlIGluIHRoZSByZWxldmFu
dCByZWFsbSBvZiB0aGlzIFhSU2Vzc2lvbi4KKyAgICAgICAgICAgIC8vICAgMy4yIEFkZCBpbnB1
dFNvdXJjZSB0byBhZGRlZC4KKyAgICAgICAgICAgIGF1dG8gaW5wdXQgPSBXZWJYUklucHV0U291
cmNlOjpjcmVhdGUobV9kb2N1bWVudCwgbV9zZXNzaW9uLCB0aW1lc3RhbXAsIGlucHV0U291cmNl
KTsKKyAgICAgICAgICAgIGFkZGVkLmFwcGVuZChpbnB1dC5jb3B5UmVmKCkpOworICAgICAgICAg
ICAgaW5wdXQtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOworICAgICAgICAgICAgbV9pbnB1dFNv
dXJjZXMuYXBwZW5kKFdURk1vdmUoaW5wdXQpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gV2hlbiB0aGUgaGFuZGVkbmVzcywgdGFyZ2V0UmF5TW9kZSwg
cHJvZmlsZXMsIG9yIHByZXNlbmNlIG9mIGEgZ3JpcFNwYWNlIGZvciBhbnkgWFIgaW5wdXQgc291
cmNlcyBjaGFuZ2UgZm9yIFhSU2Vzc2lvbiBzZXNzaW9uLCB0aGUgdXNlciBhZ2VudCBNVVNUIHJ1
biB0aGUgZm9sbG93aW5nIHN0ZXBzCisgICAgICAgIC8vIDEuIElmIHNlc3Npb27igJlzIHByb21p
c2UgcmVzb2x2ZWQgZmxhZyBpcyBub3Qgc2V0LCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAgICAg
Ly8gMi4gTGV0IGFkZGVkIGJlIGEgbmV3IGxpc3QuCisgICAgICAgIC8vIDMuIExldCByZW1vdmVk
IGJlIGEgbmV3IGxpc3QuCisgICAgICAgIC8vIDQuIEZvciBlYWNoIGNoYW5nZWQgWFIgaW5wdXQg
c291cmNlOgorICAgICAgICAvLyAgNC4xIExldCBvbGRJbnB1dFNvdXJjZSBiZSB0aGUgWFJJbnB1
dFNvdXJjZSBpbiBzZXNzaW9uJ3MgbGlzdCBvZiBhY3RpdmUgWFIgaW5wdXQgc291cmNlcyBwcmV2
aW91c2x5IGFzc29jaWF0ZWQgd2l0aCB0aGUgWFIgaW5wdXQgc291cmNlLgorICAgICAgICAvLyAg
NC4xIExldCBuZXdJbnB1dFNvdXJjZSBiZSBhIG5ldyBYUklucHV0U291cmNlIGluIHRoZSByZWxl
dmFudCByZWFsbSBvZiBzZXNzaW9uLgorICAgICAgICAvLyAgNC4xIEFkZCBvbGRJbnB1dFNvdXJj
ZSB0byByZW1vdmVkLgorICAgICAgICAvLyAgNC4xIEFkZCBuZXdJbnB1dFNvdXJjZSB0byBhZGRl
ZC4KKyAgICAgICAgYXV0byYgaW5wdXQgPSBtX2lucHV0U291cmNlc1tpbmRleF07CisKKyAgICAg
ICAgaWYgKGlucHV0LT5yZXF1aXJlc0lucHV0U291cmNlQ2hhbmdlKGlucHV0U291cmNlKSkgewor
ICAgICAgICAgICAgcmVtb3ZlZC5hcHBlbmQoaW5wdXQuY29weVJlZigpKTsKKyAgICAgICAgICAg
IGlucHV0LT5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICBpbnB1dC0+cG9sbEV2ZW50cyhpbnB1
dEV2ZW50cyk7CisgICAgICAgICAgICBtX2lucHV0U291cmNlcy5yZW1vdmUoaW5kZXgpOworCisg
ICAgICAgICAgICBhdXRvIG5ld0lucHV0U291cmNlID0gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRl
KG1fZG9jdW1lbnQsIG1fc2Vzc2lvbiwgdGltZXN0YW1wLCBpbnB1dFNvdXJjZSk7CisgICAgICAg
ICAgICBhZGRlZC5hcHBlbmQobmV3SW5wdXRTb3VyY2UuY29weVJlZigpKTsKKyAgICAgICAgICAg
IG5ld0lucHV0U291cmNlLT5wb2xsRXZlbnRzKGlucHV0RXZlbnRzKTsKKyAgICAgICAgICAgIG1f
aW5wdXRTb3VyY2VzLmFwcGVuZChXVEZNb3ZlKG5ld0lucHV0U291cmNlKSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBpbnB1dC0+dXBkYXRlKHRpbWVzdGFtcCwgaW5wdXRTb3VyY2Up
OworICAgICAgICAgICAgaW5wdXQtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOworICAgICAgICB9
CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaAppbmRleCA0M2I5ZDFh
MGZmMWVlNTdkNTk0ZGVmOTIxM2MwNjMwODgzODM2ZDYyLi5lOTI1ZjkyZjIzNzdlZTcwNGVkNzlk
NjkyMjEwNzM3MTE2NmQyYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgKQEAgLTI3LDI1ICsyNyw0MCBAQAogCiAjaWYg
RU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFdl
YlhSSW5wdXRTb3VyY2U7CitjbGFzcyBYUklucHV0U291cmNlRXZlbnQ7CitjbGFzcyBXZWJYUlNl
c3Npb247CiAKIGNsYXNzIFdlYlhSSW5wdXRTb3VyY2VBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlhSSW5wdXRTb3VyY2VBcnJheT4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2Vi
WFJJbnB1dFNvdXJjZUFycmF5KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRT
b3VyY2VBcnJheT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U291
cmNlQXJyYXkoKSk7IH0KLSAgICB+V2ViWFJJbnB1dFNvdXJjZUFycmF5KCkgPSBkZWZhdWx0Owor
ICAgIHVzaW5nIElucHV0U291cmNlTGlzdCA9IFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2U+OworICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJjZUFy
cmF5PiBjcmVhdGUoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mKTsKKyAgICB+V2ViWFJJbnB1dFNv
dXJjZUFycmF5KCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBXZWJYUklu
cHV0U291cmNlKiBpdGVtKHVuc2lnbmVkKSBjb25zdDsKIAorICAgIHZvaWQgY2xlYXIoKTsKKyAg
ICB2b2lkIHVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmKTsK
KwogcHJpdmF0ZToKLSAgICBXZWJYUklucHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7CisgICAg
V2ViWFJJbnB1dFNvdXJjZUFycmF5KERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJik7CisKKyAgICB2
b2lkIGhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMoY29uc3QgSW5wdXRTb3VyY2VMaXN0JiwgVmVj
dG9yPFJlZjxXZWJYUklucHV0U291cmNlPj4mLCBWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVu
dD4+Jik7CisgICAgdm9pZCBoYW5kbGVBZGRlZE9yVXBkYXRlZElucHV0U291cmNlcyhkb3VibGUg
dGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmLCBWZWN0b3I8UmVmPFdlYlhSSW5wdXRT
b3VyY2U+PiYsIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+JiwgVmVjdG9yPFJlZjxYUklu
cHV0U291cmNlRXZlbnQ+PiYpOworCisgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CisgICAgV2Vi
WFJTZXNzaW9uJiBtX3Nlc3Npb247CisgICAgVmVjdG9yPFJlZjxXZWJYUklucHV0U291cmNlPj4g
bV9pbnB1dFNvdXJjZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5kZXggZGViNGE1OTBlNzlj
ZDJiMGQwZjgzMDQzZGU3MDRkMTQ2MTdlMDI5Yi4uY2FmODQxZDhjNmYwZWEwMjIxYjg1YTcwZDdm
MGMxODdjN2U4ZTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJT
ZXNzaW9uLmNwcApAQCAtNTIsNyArNTIsNyBAQCBSZWY8V2ViWFJTZXNzaW9uPiBXZWJYUlNlc3Np
b246OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU3lzdGVtJiBzeXN0ZW0sCiAKIFdl
YlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0m
IHN5c3RlbSwgWFJTZXNzaW9uTW9kZSBtb2RlLCBQbGF0Zm9ybVhSOjpEZXZpY2UmIGRldmljZSwg
RmVhdHVyZUxpc3QmJiByZXF1ZXN0ZWRGZWF0dXJlcykKICAgICA6IEFjdGl2ZURPTU9iamVjdCgm
ZG9jdW1lbnQpCi0gICAgLCBtX2lucHV0U291cmNlcyhXZWJYUklucHV0U291cmNlQXJyYXk6OmNy
ZWF0ZSgpKQorICAgICwgbV9pbnB1dFNvdXJjZXMoV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVh
dGUoZG9jdW1lbnQsICp0aGlzKSkKICAgICAsIG1feHJTeXN0ZW0oc3lzdGVtKQogICAgICwgbV9t
b2RlKG1vZGUpCiAgICAgLCBtX2RldmljZShtYWtlV2Vha1B0cihkZXZpY2UpKQpAQCAtNjIsOCAr
NjIsOCBAQCBXZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdl
YlhSU3lzdGVtJiBzeXN0ZW0sIFhSU2Vzc2lvbk1vZAogICAgICwgbV90aW1lT3JpZ2luKE1vbm90
b25pY1RpbWU6Om5vdygpKQogICAgICwgbV92aWV3cyhkZXZpY2Uudmlld3MobW9kZSkpCiB7Ci0g
ICAgbV9kZXZpY2UtPmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhtb2RlKTsKICAgICBt
X2RldmljZS0+c2V0VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQobWFrZVdlYWtQdHIoKnRoaXMp
KTsKKyAgICBtX2RldmljZS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKG1vZGUpOwog
CiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jcmVmLWZvci1k
b20teHJyZWZlcmVuY2VzcGFjZXR5cGUtdmlld2VyJUUyJTkxJUEyCiAgICAgLy8gRXZlcnkgc2Vz
c2lvbiBNVVNUIHN1cHBvcnQgdmlld2VyIFhSUmVmZXJlbmNlU3BhY2VzLgpAQCAtMzE1LDYgKzMx
NSwxMSBAQCBib29sIFdlYlhSU2Vzc2lvbjo6c3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcoKSBjb25z
dAogICAgIHJldHVybiBtX21vZGUgPT0gWFJTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIgJiYgbV9k
ZXZpY2UtPnN1cHBvcnRzVmlld3BvcnRTY2FsaW5nKCk7CiB9CiAKK2Jvb2wgV2ViWFJTZXNzaW9u
Ojppc1Bvc2l0aW9uRW11bGF0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZyYW1lRGF0YS5p
c1Bvc2l0aW9uRW11bGF0ZWQgfHwgIW1fZnJhbWVEYXRhLmlzUG9zaXRpb25WYWxpZDsKK30KKwog
Ly8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jc2h1dC1kb3duLXRoZS1z
ZXNzaW9uCiB2b2lkIFdlYlhSU2Vzc2lvbjo6c2h1dGRvd24oSW5pdGlhdGVkQnlTeXN0ZW0gaW5p
dGlhdGVkQnlTeXN0ZW0pCiB7CkBAIC0zMzgsNiArMzQzLDggQEAgdm9pZCBXZWJYUlNlc3Npb246
OnNodXRkb3duKEluaXRpYXRlZEJ5U3lzdGVtIGluaXRpYXRlZEJ5U3lzdGVtKQogICAgIC8vIDQu
IFJlbW92ZSBzZXNzaW9uIGZyb20gdGhlIGxpc3Qgb2YgaW5saW5lIHNlc3Npb25zLgogICAgIG1f
eHJTeXN0ZW0uc2Vzc2lvbkVuZGVkKCp0aGlzKTsKIAorICAgIG1faW5wdXRTb3VyY2VzLT5jbGVh
cigpOworCiAgICAgaWYgKGluaXRpYXRlZEJ5U3lzdGVtID09IEluaXRpYXRlZEJ5U3lzdGVtOjpZ
ZXMpIHsKICAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZSBzZXNzaW9uIHRlcm1pbmF0aW9u
IHdhcyB0cmlnZ2VyZWQgYnkgdGhlIHN5c3RlbSByYXRoZXIgdGhhbgogICAgICAgICAvLyB2aWEg
WFJTZXNzaW9uLmVuZCgpLiBTaW5jZSB0aGUgc3lzdGVtIGhhcyBjb21wbGV0ZWQgdGhlIHNlc3Np
b24gc2h1dGRvd24sIHdlIGNhbgpAQCAtNDExLDYgKzQxOCwyNSBAQCB2b2lkIFdlYlhSU2Vzc2lv
bjo6c3RvcCgpCiB7CiB9CiAKK3ZvaWQgV2ViWFJTZXNzaW9uOjpzZXNzaW9uRGlkSW5pdGlhbGl6
ZUlucHV0U291cmNlcyhWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0
U291cmNlPiYmIGlucHV0U291cmNlcykKK3sKKyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIu
Z2l0aHViLmlvL3dlYnhyLyNkb20teHJzeXN0ZW0tcmVxdWVzdHNlc3Npb24KKyAgICAvLyA1LjQu
MTAgUXVldWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczogTk9URTogVGhl
c2Ugc3RlcHMgZW5zdXJlIHRoYXQgaW5pdGlhbCBpbnB1dHNvdXJjZXNjaGFuZ2UKKyAgICAvLyBl
dmVudHMgb2NjdXIgYWZ0ZXIgdGhlIGluaXRpYWwgc2Vzc2lvbiBpcyByZXNvbHZlZC4KKyAgICAv
LyAgICAgMS4gU2V0IHNlc3Npb24ncyBwcm9taXNlIHJlc29sdmVkIGZsYWcgdG8gdHJ1ZS4KKyAg
ICAvLyAgICAgMi4gTGV0IHNvdXJjZXMgYmUgYW55IGV4aXN0aW5nIGlucHV0IHNvdXJjZXMgYXR0
YWNoZWQgdG8gc2Vzc2lvbi4KKyAgICAvLyAgICAgMy4gSWYgc291cmNlcyBpcyBub24tZW1wdHks
IHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAgICAgICAgMS4gU2V0IHNlc3Np
b24ncyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2VzIHRvIHNvdXJjZXMuCisgICAgLy8g
ICAgICAgIDIuIEZpcmUgYW4gWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudCBuYW1lZCBpbnB1dHNv
dXJjZXNjaGFuZ2Ugb24gc2Vzc2lvbiB3aXRoIGFkZGVkIHNldCB0byBzb3VyY2VzLgorCisgICAg
YXV0byB0aW1lc3RhbXAgPSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3RpbWVPcmlnaW4pLm1p
bGxpc2Vjb25kcygpOworCisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBU
YXNrU291cmNlOjpXZWJYUiwgW3RoaXMsIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2VzID0gV1RGTW92
ZShpbnB1dFNvdXJjZXMpXSgpIG11dGFibGUgeworICAgICAgICBtX2lucHV0UHJvbWlzZVJlc29s
dmVkID0gdHJ1ZTsKKyAgICAgICAgbV9pbnB1dFNvdXJjZXMtPnVwZGF0ZSh0aW1lc3RhbXAsIGlu
cHV0U291cmNlcyk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViWFJTZXNzaW9uOjpzZXNzaW9uRGlk
RW5kKCkKIHsKICAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgYXMgYSByZXN1bHQgb2YgZmluaXNo
aW5nIHRoZSBzaHV0ZG93biBpbml0aWF0ZWQKQEAgLTUyNyw2ICs1NTMsOSBAQCB2b2lkIFdlYlhS
U2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZyYW1lRGF0
YSkKICAgICAgICAgICAgIGZyYW1lLT5zZXRBY3RpdmUodHJ1ZSk7CiAKICAgICAgICAgICAgIC8v
IDYuNC5BcHBseSBmcmFtZSB1cGRhdGVzIGZvciBmcmFtZS4KKyAgICAgICAgICAgIGlmIChtX2lu
cHV0UHJvbWlzZVJlc29sdmVkKQorICAgICAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzLT51cGRh
dGUobm93LCBmcmFtZURhdGEuaW5wdXRTb3VyY2VzKTsKKwogICAgICAgICAgICAgZnJhbWUtPnNl
dEZyYW1lRGF0YShXVEZNb3ZlKGZyYW1lRGF0YSkpOwogCiAgICAgICAgICAgICAvLyA2LjUuRm9y
IGVhY2ggZW50cnkgaW4gc2Vzc2lvbuKAmXMgbGlzdCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmlt
YXRpb24gZnJhbWUgY2FsbGJhY2tzLCBpbiBvcmRlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU2Vzc2lvbi5oCmluZGV4IDMxM2Q4ZmMwZTE1NjliODI5ZmU5ODFlNjA4ODU1
NzdjZjM2NjcxMWUuLjg5MWQ4OWFhODdhODAzOWNmOWY0ODE2Zjg2MTZjOGQzNzM4OTZhNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaApAQCAtODQsNiAr
ODQsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBuYXRpdmVXZWJHTEZyYW1lYnVmZmVyUmVzb2x1
dGlvbigpIGNvbnN0OwogICAgIEludFNpemUgcmVjb21tZW5kZWRXZWJHTEZyYW1lYnVmZmVyUmVz
b2x1dGlvbigpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcoKSBjb25z
dDsgCisgICAgYm9vbCBpc1Bvc2l0aW9uRW11bGF0ZWQoKSBjb25zdDsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQpAQCAtMTExLDYgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9w
KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9ybVhSOjpUcmFja2luZ0FuZFJlbmRlcmluZ0Ns
aWVudAorICAgIHZvaWQgc2Vzc2lvbkRpZEluaXRpYWxpemVJbnB1dFNvdXJjZXMoVmVjdG9yPFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZT4mJikgZmluYWw7CiAgICAg
dm9pZCBzZXNzaW9uRGlkRW5kKCkgZmluYWw7CiAKICAgICBlbnVtIGNsYXNzIEluaXRpYXRlZEJ5
U3lzdGVtIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTE1Miw2ICsxNTQsOSBAQCBwcml2YXRlOgog
ICAgIC8vIEluIG1ldGVycy4KICAgICBkb3VibGUgbV9taW5pbXVtTmVhckNsaXBQbGFuZSB7IDAu
MSB9OwogICAgIGRvdWJsZSBtX21heGltdW1GYXJDbGlwUGxhbmUgeyAxMDAwLjAgfTsKKworICAg
IC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hyc2Vzc2lvbi1wcm9t
aXNlLXJlc29sdmVkCisgICAgYm9vbCBtX2lucHV0UHJvbWlzZVJlc29sdmVkIHsgZmFsc2UgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU3BhY2UuY3BwCmluZGV4IGZhODgxZDRiYmI0ZjU1MWJkNmEzMjgyOTJiMDIyOWVh
MTdkOTQ5ZjkuLjExOTIxNDE4OWZjMjAxZDg1MTM0NGRlYjBkMzE2ZDM5ZjQ3OGE1OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcApAQCAtNTQsNiArNTQs
MTEgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJTcGFjZTo6ZWZmZWN0aXZlT3JpZ2luKCkg
Y29uc3QKIH0KIAogCitib29sIFdlYlhSU3BhY2U6OmlzUG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHNlc3Npb24oKS5pc1Bvc2l0aW9uRW11bGF0ZWQoKTsKK30KKwogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSVmlld2VyU3BhY2UpOwogCiBXZWJYUlZpZXdl
clNwYWNlOjpXZWJYUlZpZXdlclNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9u
JiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaAppbmRl
eCA0YTlkYmVmZGQzYjU0N2Y4YTA2MjNkMjY1NjQ5ZDZmOTBiYjliZjRhLi5kOGY4OGVhNThiOTU4
NDUxOGQ0NzY1NDBlZGM4ZGRkYjE5Njc5ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU3BhY2UuaApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBX
ZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCA9IDA7CiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggZWZmZWN0aXZlT3JpZ2luKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzUG9zaXRp
b25FbXVsYXRlZCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGlzUmVmZXJlbmNlU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0JvdW5kZWRSZWZl
cmVuY2VTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCmluZGV4IDIwMjhhMDRmMjQyNzZmMGM3ZWUzYWM3
Y2UwZTQ0MGFlNDQyMzM4MjguLjRkMTg1ZjgwZjNhZjZlMWI4YWE4MzZhZTEwYzRjMWQzYzdhNjE3
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCkBA
IC00NDYsMTQgKzQ0Niw3IEBAIHZvaWQgV2ViWFJTeXN0ZW06OnJlcXVlc3RTZXNzaW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgWFJTZXNzaW9uTW9kZSBtb2RlLCBjb25zdCBYCiAgICAgICAgIHByb21p
c2UucmVzb2x2ZShXVEZNb3ZlKHNlc3Npb24pKTsKICAgICAgICAgcmVqZWN0UHJvbWlzZVdpdGhO
b3RTdXBwb3J0ZWRFcnJvci5yZWxlYXNlKCk7CiAKLSAgICAgICAgLy8gRklYTUU6Ci0gICAgICAg
IC8vIDUuNC4xMCBRdWV1ZSBhIHRhc2sgdG8gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOiBO
T1RFOiBUaGVzZSBzdGVwcyBlbnN1cmUgdGhhdCBpbml0aWFsIGlucHV0c291cmNlc2NoYW5nZQot
ICAgICAgICAvLyBldmVudHMgb2NjdXIgYWZ0ZXIgdGhlIGluaXRpYWwgc2Vzc2lvbiBpcyByZXNv
bHZlZC4KLSAgICAgICAgLy8gICAgIDEuIFNldCBzZXNzaW9uJ3MgcHJvbWlzZSByZXNvbHZlZCBm
bGFnIHRvIHRydWUuCi0gICAgICAgIC8vICAgICAyLiBMZXQgc291cmNlcyBiZSBhbnkgZXhpc3Rp
bmcgaW5wdXQgc291cmNlcyBhdHRhY2hlZCB0byBzZXNzaW9uLgotICAgICAgICAvLyAgICAgMy4g
SWYgc291cmNlcyBpcyBub24tZW1wdHksIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAg
ICAgICAgLy8gICAgICAgIDEuIFNldCBzZXNzaW9uJ3MgbGlzdCBvZiBhY3RpdmUgWFIgaW5wdXQg
c291cmNlcyB0byBzb3VyY2VzLgotICAgICAgICAvLyAgICAgICAgMi4gRmlyZSBhbiBYUklucHV0
U291cmNlc0NoYW5nZUV2ZW50IG5hbWVkIGlucHV0c291cmNlc2NoYW5nZSBvbiBzZXNzaW9uIHdp
dGggYWRkZWQgc2V0IHRvIHNvdXJjZXMuCisgICAgICAgIC8vIDUuNC4xMCBpcyBoYW5kbGVkIGlu
IFdlYlhSU2Vzc2lvbjo6c2Vzc2lvbkRpZEluaXRpYWxpemVJbnB1dFNvdXJjZXMuCiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJIYW5kZWRu
ZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSGFuZGVkbmVzcy5oCmluZGV4
IDkzMzMwMzRkMGNkNDlhYzhkZWU5MDJhMDgxNjQ0ODA0Mzc4Y2JjMmMuLjg1OTg1Y2NhZmE2YmNk
NDU2YWMwYjY0NTJlNzA0YWUwYmZlMDc4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvWFJIYW5kZWRuZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9YUkhhbmRlZG5lc3MuaApAQCAtMjcsMTMgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoV0VC
WFIpCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ZW51bSBjbGFzcyBYUkhhbmRlZG5lc3MgewotICAgIE5vbmUsCi0gICAgTGVmdCwKLSAgICBSaWdo
dCwKLX07Cit1c2luZyBYUkhhbmRlZG5lc3MgPSBQbGF0Zm9ybVhSOjpYUkhhbmRlZG5lc3M7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuY3BwCmluZGV4IDIyNjMxYWI1NTI5NzA1NmNjMDYz
ZDc0NDY4OWQzZTAzM2NhMGZhNTcuLmZjODhiZjdhNzliNjk4NDA3MDQ5Y2Y2MDBiOTcxN2ViZDM2
MmMyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNv
dXJjZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRT
b3VyY2VFdmVudC5jcHAKQEAgLTMwLDkgKzMwLDEyIEBACiAKICNpbmNsdWRlICJXZWJYUkZyYW1l
LmgiCiAjaW5jbHVkZSAiV2ViWFJJbnB1dFNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFhSSW5wdXRTb3VyY2VFdmVudCk7CisKIFJlZjxYUklucHV0U291cmNlRXZlbnQ+
IFhSSW5wdXRTb3VyY2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0
IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFhSSW5wdXRTb3VyY2VFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVz
dGVkKSk7CkBAIC00Miw3ICs0NSw2IEBAIFhSSW5wdXRTb3VyY2VFdmVudDo6WFJJbnB1dFNvdXJj
ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpCiAgICAgOiBF
dmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKQogICAgICwgbV9mcmFtZShpbml0aWFs
aXplci5mcmFtZSkKICAgICAsIG1faW5wdXRTb3VyY2UoaW5pdGlhbGl6ZXIuaW5wdXRTb3VyY2Up
Ci0gICAgLCBtX2J1dHRvbkluZGV4KGluaXRpYWxpemVyLmJ1dHRvbkluZGV4KQogewogICAgIEFT
U0VSVChtX2ZyYW1lKTsKICAgICBBU1NFUlQobV9pbnB1dFNvdXJjZSk7CkBAIC02MCw5ICs2Miw5
IEBAIGNvbnN0IFdlYlhSSW5wdXRTb3VyY2UmIFhSSW5wdXRTb3VyY2VFdmVudDo6aW5wdXRTb3Vy
Y2UoKSBjb25zdAogICAgIHJldHVybiAqbV9pbnB1dFNvdXJjZTsKIH0KIAotT3B0aW9uYWw8aW50
PiBYUklucHV0U291cmNlRXZlbnQ6OmJ1dHRvbkluZGV4KCkgY29uc3QKK3ZvaWQgWFJJbnB1dFNv
dXJjZUV2ZW50OjpzZXRGcmFtZUFjdGl2ZShib29sIGFjdGl2ZSkKIHsKLSAgICByZXR1cm4gbV9i
dXR0b25JbmRleDsKKyAgICBtX2ZyYW1lLT5zZXRBY3RpdmUoYWN0aXZlKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9YUklucHV0U291cmNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJ
bnB1dFNvdXJjZUV2ZW50LmgKaW5kZXggOGM3ZmMwNDc0N2EyYmYxMWVhOGIyZmI3YjVjYTlmNDU0
YWMxNTMwMy4uZTNjNTQxMTM0NTUxYmMyNzVhZjBmYzQxYjY3ZWFjNDM5ODMzZjA5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5oCkBA
IC0zNywxMSArMzcsMTEgQEAgY2xhc3MgV2ViWFJGcmFtZTsKIGNsYXNzIFdlYlhSSW5wdXRTb3Vy
Y2U7CiAKIGNsYXNzIFhSSW5wdXRTb3VyY2VFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7Cisg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChYUklucHV0U291cmNlRXZlbnQpOwogcHVibGljOgog
ICAgIHN0cnVjdCBJbml0IDogRXZlbnRJbml0IHsKICAgICAgICAgUmVmUHRyPFdlYlhSRnJhbWU+
IGZyYW1lOwogICAgICAgICBSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4gaW5wdXRTb3VyY2U7Ci0g
ICAgICAgIE9wdGlvbmFsPGludD4gYnV0dG9uSW5kZXg7CiAgICAgfTsKIAogICAgIHN0YXRpYyBS
ZWY8WFJJbnB1dFNvdXJjZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IElu
aXQmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKQEAgLTQ5LDcgKzQ5LDkgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgV2ViWFJGcmFtZSYgZnJhbWUoKSBjb25zdDsKICAgICBjb25zdCBXZWJY
UklucHV0U291cmNlJiBpbnB1dFNvdXJjZSgpIGNvbnN0OwotICAgIE9wdGlvbmFsPGludD4gYnV0
dG9uSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkIHNldEZyYW1lQWN0aXZlKGJvb2wpOworCisgICAg
RXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBYUklu
cHV0U291cmNlRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKIHByaXZhdGU6CiAgICAgWFJJbnB1dFNv
dXJjZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFu
Z2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0No
YW5nZUV2ZW50LmgKaW5kZXggMDNhNjRiN2I2OGQ0ZjYyMjZkNDJkMWYyN2VkMjMyMjFkMjZlOGE4
NC4uZGQ1NDc4ZjlmZmFjNDMxNzM4YWZiOWVhMmMxOTE5ODRmMzcyZDVkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2
ZW50LmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8
V2ViWFJJbnB1dFNvdXJjZT4+JiBhZGRlZCgpIGNvbnN0OwogICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8V2ViWFJJbnB1dFNvdXJjZT4+JiByZW1vdmVkKCkgY29uc3Q7CiAKKyAgICBFdmVudEludGVy
ZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFhSSW5wdXRTb3VyY2Vz
Q2hhbmdlRXZlbnRJbnRlcmZhY2VUeXBlOyB9CisKIHByaXZhdGU6CiAgICAgWFJJbnB1dFNvdXJj
ZXNDaGFuZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJj
ZXNDaGFuZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRT
b3VyY2VzQ2hhbmdlRXZlbnQuaWRsCmluZGV4IDUyMmJkYzFkNWRhYmUwN2M4NTJlY2Q0MTNkN2Mz
NzQ3MTJiNjgzNmQuLmViOTE5YTEwZmI5NGMwYjJlOGVjODhiNDMzNWZmNTliYmE3NTFjZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFu
Z2VFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291
cmNlc0NoYW5nZUV2ZW50LmlkbApAQCAtNDEsNiArNDEsNiBAQAogICAgIGNvbnN0cnVjdG9yKERP
TVN0cmluZyB0eXBlLCBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50SW5pdCBldmVudEluaXREaWN0
KTsKIAogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJTZXNzaW9uIHNl
c3Npb247Ci0gICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxX
ZWJYUklucHV0U291cmNlPiBhZGRlZDsKLSAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmli
dXRlIEZyb3plbkFycmF5PFdlYlhSSW5wdXRTb3VyY2U+IHJlbW92ZWQ7CisgICAgW0NhY2hlZEF0
dHJpYnV0ZSwgU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIEZyb3plbkFycmF5PFdlYlhS
SW5wdXRTb3VyY2U+IGFkZGVkOworICAgIFtDYWNoZWRBdHRyaWJ1dGUsIFNhbWVPYmplY3RdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxXZWJYUklucHV0U291cmNlPiByZW1vdmVkOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJUYXJnZXRSYXlN
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSVGFyZ2V0UmF5TW9kZS5oCmlu
ZGV4IDFmY2E0NGU0NTFiOTdjNTYwMjZlMTQ1YjUyMjMzMWY4MTY1YmFlN2YuLmI3M2I0ZTBjZDFm
MzRiOGJiMTg0NWM1ZDUwNDM0MDZkN2E3MWNkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvWFJUYXJnZXRSYXlNb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9YUlRhcmdldFJheU1vZGUuaApAQCAtMjksMTEgKzI5LDkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFhSVGFyZ2V0UmF5TW9kZSB7Ci0gICAgR2F6ZSwK
LSAgICBUcmFja2VkUG9pbnRlciwKLSAgICBTY3JlZW4sCi19OworI2luY2x1ZGUgIlBsYXRmb3Jt
WFIuaCIKKwordXNpbmcgWFJUYXJnZXRSYXlNb2RlID0gUGxhdGZvcm1YUjo6WFJUYXJnZXRSYXlN
b2RlOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuY3BwCmluZGV4IGM4NWUyNmE3OTlk
ZGM1ZDU1ODFjZTEyM2U1ZmZiMTczNTMyY2FkMzMuLmZjMzk2MGYzOWY0NDZlMzU0MjVmMTQ0YWY4
NzVhNWY5NGZiNjNjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvR2FtZXBhZENvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcApAQCAtNDMsNiArNDMsMTUgQEAgY29uc3QgV1RGOjpT
dHJpbmcmIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKQogICAgIHJldHVybiBzdGFuZGFy
ZEdhbWVwYWRNYXBwaW5nOwogfQogCisjaWYgRU5BQkxFKFdFQlhSKQorLy8gaHR0cHM6Ly9pbW1l
cnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvI2RvbS1nYW1lcGFkbWFw
cGluZ3R5cGUteHItc3RhbmRhcmQKK2NvbnN0IFdURjo6U3RyaW5nJiB4clN0YW5kYXJkR2FtZXBh
ZE1hcHBpbmdTdHJpbmcoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHhy
U3RhbmRhcmRHYW1lcGFkTWFwcGluZyA9ICJ4ci1zdGFuZGFyZCI7CisgICAgcmV0dXJuIHhyU3Rh
bmRhcmRHYW1lcGFkTWFwcGluZzsKK30KKyNlbmRpZgorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFk
Q29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25z
dGFudHMuaAppbmRleCA3ZTE2OWY0ZGE4Yjk4ZmU2ZWZhYTFlMjMwZTJhNGU5MjRhMjM2NzMzLi42
MzNhZmQ3M2QzNzQ3ZmFhM2EwOGFlNzU2Y2I0MzIxNTEyNWQyNTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaApAQCAtNjIsNiAr
NjIsOSBAQCBleHRlcm4gY29uc3Qgc2l6ZV90IG51bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9u
c1dpdGhIb21lQnV0dG9uOwogZXh0ZXJuIGNvbnN0IEdhbWVwYWRCdXR0b25Sb2xlIG1heGltdW1H
YW1lcGFkQnV0dG9uOwogCiBjb25zdCBXVEY6OlN0cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGlu
Z1N0cmluZygpOworI2lmIEVOQUJMRShXRUJYUikKK2NvbnN0IFdURjo6U3RyaW5nJiB4clN0YW5k
YXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKTsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCAxZmVjODRk
YzU5MWIwOTNkMWQ4YjgzMDIyMTM3NzU5ZTM3YWM1ODliLi5hNjgyNzY3YzBjYTkxMDg3YWYzY2Q2
ZWEzYjljY2ZkNDdiMmNlNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1Y
Ui5oCkBAIC01NiwxNiArNTYsMjQgQEAgZW51bSBjbGFzcyBFeWUgewogdXNpbmcgTGF5ZXJIYW5k
bGUgPSBpbnQ7CiAKICNpZiBFTkFCTEUoV0VCWFIpCit1c2luZyBJbnB1dFNvdXJjZUhhbmRsZSA9
IGludDsKIAotY2xhc3MgVHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ+IHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5UcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpID0gZGVmYXVsdDsKKy8vIGh0dHBzOi8v
aW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2VudW1kZWYteHJoYW5kZWRuZXNzCitlbnVt
IGNsYXNzIFhSSGFuZGVkbmVzcyB7CisgICAgTm9uZSwKKyAgICBMZWZ0LAorICAgIFJpZ2h0LAor
fTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uRGlkRW5kKCkgPSAwOwotICAgIC8vIEZJWE1F
OiBoYW5kbGUgZnJhbWUgdXBkYXRlCi0gICAgLy8gRklYTUU6IGhhbmRsZSB2aXNpYmlsaXR5IGNo
YW5nZXMKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2VudW1kZWYt
eHJ0YXJnZXRyYXltb2RlCitlbnVtIGNsYXNzIFhSVGFyZ2V0UmF5TW9kZSB7CisgICAgR2F6ZSwK
KyAgICBUcmFja2VkUG9pbnRlciwKKyAgICBTY3JlZW4sCiB9OwogCitjbGFzcyBUcmFja2luZ0Fu
ZFJlbmRlcmluZ0NsaWVudDsKKwogY2xhc3MgRGV2aWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPERldmljZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEZXZpY2U+IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXZpY2UpOwpA
QCAtMTQxLDYgKzE0OSwyOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0
IG9wYXF1ZVRleHR1cmUgeyAwIH07CiAgICAgICAgIH07CiAKKyAgICAgICAgc3RydWN0IElucHV0
U291cmNlQnV0dG9uIHsKKyAgICAgICAgICAgIGJvb2wgdG91Y2hlZCB7IGZhbHNlIH07CisgICAg
ICAgICAgICBib29sIHByZXNzZWQgeyBmYWxzZSB9OworICAgICAgICAgICAgZmxvYXQgcHJlc3Nl
ZFZhbHVlIHsgMCB9OworICAgICAgICB9OworCisgICAgICAgIHN0cnVjdCBJbnB1dFNvdXJjZVBv
c2UgeworICAgICAgICAgICAgUG9zZSBwb3NlOworICAgICAgICAgICAgYm9vbCBpc1Bvc2l0aW9u
RW11bGF0ZWQgeyBmYWxzZSB9OworICAgICAgICB9OworCisgICAgICAgIHN0cnVjdCBJbnB1dFNv
dXJjZSB7CisgICAgICAgICAgICBJbnB1dFNvdXJjZUhhbmRsZSBoYW5kbGUgeyAwIH07CisgICAg
ICAgICAgICBYUkhhbmRlZG5lc3MgaGFuZGVuZXNzIHsgWFJIYW5kZWRuZXNzOjpOb25lIH07Cisg
ICAgICAgICAgICBYUlRhcmdldFJheU1vZGUgdGFyZ2V0UmF5TW9kZSB7IFhSVGFyZ2V0UmF5TW9k
ZTo6R2F6ZSB9OworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gcHJvZmlsZXM7CisgICAgICAg
ICAgICBJbnB1dFNvdXJjZVBvc2UgcG9pbnRlck9yaWdpbjsKKyAgICAgICAgICAgIE9wdGlvbmFs
PElucHV0U291cmNlUG9zZT4gZ3JpcE9yaWdpbjsKKyAgICAgICAgICAgIFZlY3RvcjxJbnB1dFNv
dXJjZUJ1dHRvbj4gYnV0dG9uczsKKyAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gYXhlczsKKyAg
ICAgICAgfTsKKwogICAgICAgICBib29sIGlzVHJhY2tpbmdWYWxpZCB7IGZhbHNlIH07CiAgICAg
ICAgIGJvb2wgaXNQb3NpdGlvblZhbGlkIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBpc1Bvc2l0
aW9uRW11bGF0ZWQgeyBmYWxzZSB9OwpAQCAtMTUxLDYgKzE4MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgU3RhZ2VQYXJhbWV0ZXJzIHN0YWdlUGFyYW1ldGVyczsKICAgICAgICAgVmVjdG9yPFZpZXc+
IHZpZXdzOwogICAgICAgICBIYXNoTWFwPExheWVySGFuZGxlLCBMYXllckRhdGE+IGxheWVyczsK
KyAgICAgICAgVmVjdG9yPElucHV0U291cmNlPiBpbnB1dFNvdXJjZXM7CiAgICAgfTsKIAogICAg
IHN0cnVjdCBMYXllclZpZXcgewpAQCAtMTg5LDYgKzIyMCwxOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
V2Vha1B0cjxUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudD4gbV90cmFja2luZ0FuZFJlbmRlcmlu
Z0NsaWVudDsKIH07CiAKK2NsYXNzIFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50IDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50PiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAg
ICAvLyBUaGlzIGV2ZW50IGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgaW5pdGlhbCBpbnB1dHNvdXJj
ZXNjaGFuZ2UgZXZlbnRzIG9jY3VyIGFmdGVyIHRoZSBpbml0aWFsIHNlc3Npb24gaXMgcmVzb2x2
ZWQuCisgICAgLy8gV2VieFIgYXBwcyBjYW4gd2FpdCBmb3IgdGhlIGlucHV0IHNvdXJjZSBldmVu
dHMgYmVmb3JlIGNhbGxpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLgorICAgIC8vIFBlci1mcmFt
ZSBpbnB1dCBzb3VyY2UgdXBkYXRlcyBhcmUgaGFuZGxlZCB2aWEgc2Vzc2lvbi5yZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgd2hpY2ggY2FsbHMgRGV2aWNlOjpyZXF1ZXN0RnJhbWUuCisgICAgdmlydHVh
bCB2b2lkIHNlc3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzKFZlY3RvcjxEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2U+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbkRp
ZEVuZCgpID0gMDsKKyAgICAvLyBGSVhNRTogaGFuZGxlIGZyYW1lIHVwZGF0ZQorICAgIC8vIEZJ
WE1FOiBoYW5kbGUgdmlzaWJpbGl0eSBjaGFuZ2VzCit9OworCiBjbGFzcyBJbnN0YW5jZSB7CiBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEluc3RhbmNlJiBzaW5nbGV0b24oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAppbmRleCBiMDQ3Yjc1
MzQ3NmExOWRhZmI5NDZmMGNkNTZhYTRkZjExN2YxMmEyLi5mOGUxZjg1MTk2NDA4YmEyMGU0N2Qw
MDhlNmQ4MzA4MjBiZmIxMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YkZha2VYUkRldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJE
ZXZpY2UuY3BwCkBAIC04Nyw2ICs4NywxOSBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjppbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpCiAgICAg
YXR0cmlidXRlcy5zdGVuY2lsID0gZmFsc2U7CiAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBm
YWxzZTsKICAgICBtX2dsID0gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBu
dWxscHRyKTsKKworICAgIGlmIChtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KSB7CisgICAg
ICAgIC8vIFdlYlhSIEZha2VEZXZpY2Ugd2FpdHMgZm9yIHNpbXVsYXRlSW5wdXRDb25uZWN0aW9u
IGNhbGxzIHRvIGFkZCBpbnB1dCBzb3VyY2VzLQorICAgICAgICAvLyBUaGVyZSBpcyBubyB3YXkg
dG8ga25vdyBob3cgbWFueSBzaW11bGF0ZUlucHV0Q29ubmVjdGlvbiBjYWxscyB3aWxsIHRoZSBk
ZXZpY2UgcmVjZWl2ZSwKKyAgICAgICAgLy8gc28gbm90aWZ5IHRoZSBpbnB1dCBzb3VyY2VzIGhh
dmUgYmVlbiBpbml0aWFsaXplZCB3aXRoIGFuIGVtcHR5IGxpc3QuIFRoaXMgaXMgbm90IGEgcHJv
YmxlbSBiZWNhdXNlCisgICAgICAgIC8vIFdQVCB0ZXN0cyByZWx5IG9uIHJlcXVlc3RBbmltYXRp
b25GcmFtZSB1cGRhdGVzIHRvIHRlc3QgdGhlIGlucHV0IHNvdXJjZXMuCisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIHsKKyAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgaWYgKG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQpCisgICAgICAgICAgICAgICAg
bV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudC0+c2Vzc2lvbkRpZEluaXRpYWxpemVJbnB1dFNv
dXJjZXMoeyB9KTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFNpbXVsYXRlZFhSRGV2
aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKQEAgLTE0MSw2ICsxNTQsMTEgQEAg
dm9pZCBTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKCkKICAgICBmb3IgKGF1dG8m
IGxheWVyIDogbV9sYXllcnMpCiAgICAgICAgIGRhdGEubGF5ZXJzLmFkZChsYXllci5rZXksIEZy
YW1lRGF0YTo6TGF5ZXJEYXRhIHsgLm9wYXF1ZVRleHR1cmUgPSBsYXllci52YWx1ZSB9KTsKIAor
ICAgIGZvciAoYXV0byYgaW5wdXQgOiBtX2lucHV0Q29ubmVjdGlvbnMpIHsKKyAgICAgICAgaWYg
KGlucHV0LT5pc0Nvbm5lY3RlZCgpKQorICAgICAgICAgICAgZGF0YS5pbnB1dFNvdXJjZXMuYXBw
ZW5kKGlucHV0LT5nZXRGcmFtZURhdGEoKSk7CisgICAgfQorCiAgICAgaWYgKG1fRnJhbWVDYWxs
YmFjaykKICAgICAgICAgbV9GcmFtZUNhbGxiYWNrKFdURk1vdmUoZGF0YSkpOwogfQpAQCAtMjcx
LDExICsyODksMTUgQEAgdm9pZCBXZWJGYWtlWFJEZXZpY2U6OmNsZWFyRmxvb3JPcmlnaW4oKQog
CiB2b2lkIFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVSZXNldFBvc2UoKQogeworCiB9CiAKLVJl
ZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVJbnB1
dFNvdXJjZUNvbm5lY3Rpb24oRmFrZVhSSW5wdXRTb3VyY2VJbml0KQorUmVmPFdlYkZha2VYUklu
cHV0Q29udHJvbGxlcj4gV2ViRmFrZVhSRGV2aWNlOjpzaW11bGF0ZUlucHV0U291cmNlQ29ubmVj
dGlvbihjb25zdCBGYWtlWFJJbnB1dFNvdXJjZUluaXQmIGluaXQpCiB7Ci0gICAgcmV0dXJuIFdl
YkZha2VYUklucHV0Q29udHJvbGxlcjo6Y3JlYXRlKCk7CisgICAgYXV0byBoYW5kbGUgPSArK21J
bnB1dFNvdXJjZUhhbmRsZUluZGV4OworICAgIGF1dG8gaW5wdXQgPSBXZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXI6OmNyZWF0ZShoYW5kbGUsIGluaXQpOworICAgIG1fZGV2aWNlLmFkZElucHV0Q29u
bmVjdGlvbihpbnB1dC5jb3B5UmVmKCkpOworICAgIHJldHVybiBpbnB1dDsKIH0KIAogRXhjZXB0
aW9uT3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U+IFdlYkZha2VYUkRldmlj
ZTo6cGFyc2VSaWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQmIGlu
aXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAppbmRleCBjYzNhZmY5
NjVlYmJlOGU0Nzc1YjdiMTU4Y2FhNTAyODZmMjAyYzNkLi4zOGM3ODZkOTkxMjM0MGU0MDkxNzEy
ODU1ZDExN2UwZDMwNDkzN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YkZha2VYUkRldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2
aWNlLmgKQEAgLTgxLDYgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3VwcG9ydHNTaHV0
ZG93bk5vdGlmaWNhdGlvbihib29sIHN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24pIHsgbV9z
dXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uID0gc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlv
bjsgfQogICAgIHZvaWQgc2ltdWxhdGVTaHV0ZG93bkNvbXBsZXRlZCgpOwogICAgIHZvaWQgc2No
ZWR1bGVPbk5leHRGcmFtZShGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgYWRkSW5wdXRD
b25uZWN0aW9uKFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+JiYgaW5wdXQpIHsgbV9pbnB1
dENvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGlucHV0KSk7IH07CiBwcml2YXRlOgogICAgIFdl
YkNvcmU6OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25N
b2RlKSBmaW5hbDsKICAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0
Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWw7CkBAIC0xMDgsNiArMTA5LDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w+IG1fZ2w7CiAgICAgSGFzaE1h
cDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZSwgUGxhdGZvcm1HTE9iamVjdD4gbV9sYXllcnM7CiAg
ICAgdWludDMyX3QgbV9sYXllckluZGV4IHsgMCB9OworICAgIFZlY3RvcjxSZWY8V2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyPj4gbV9pbnB1dENvbm5lY3Rpb25zOwogfTsKIAogY2xhc3MgV2ViRmFr
ZVhSRGV2aWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRmFrZVhSRGV2aWNlPiB7CkBA
IC0xMzIsNyArMTM0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaW11bGF0ZVJlc2V0UG9zZSgp
OwogCi0gICAgUmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4gc2ltdWxhdGVJbnB1dFNvdXJj
ZUNvbm5lY3Rpb24oRmFrZVhSSW5wdXRTb3VyY2VJbml0KTsKKyAgICBSZWY8V2ViRmFrZVhSSW5w
dXRDb250cm9sbGVyPiBzaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbihjb25zdCBGYWtlWFJJ
bnB1dFNvdXJjZUluaXQmKTsKIAogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmFrZVhSVmll
dz4+IHBhcnNlVmlldyhjb25zdCBGYWtlWFJWaWV3SW5pdCYpOwogCkBAIC0xNDIsMTIgKzE0NCwx
MyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNpbXVsYXRlU2h1dGRvd24oKTsKIAorICAgIHN0YXRp
YyBFeGNlcHRpb25PcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gcGFyc2VS
aWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQmKTsKKwogcHJpdmF0
ZToKICAgICBXZWJGYWtlWFJEZXZpY2UoKTsKIAotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gcGFyc2VSaWdpZFRyYW5zZm9ybShjb25z
dCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQmKTsKLQogICAgIFNpbXVsYXRlZFhSRGV2aWNlIG1f
ZGV2aWNlOworICAgIFBsYXRmb3JtWFI6OklucHV0U291cmNlSGFuZGxlIG1JbnB1dFNvdXJjZUhh
bmRsZUluZGV4IHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwCmluZGV4
IDc5MGM5ODcwYmI0OGM1MWNlODU1YTVhZTJmYjJhMzY3MWNhNzE2YjAuLjdjODI3Mjg5NjEwZGJm
Y2QxZDQ5ODVjNzU2MTlhNTE1MGI4ZTdhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHAKQEAgLTI3LDYzICsyNywxNTMgQEAK
ICNpbmNsdWRlICJXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCIKIAogI2lmIEVOQUJMRShXRUJY
UikKKyNpbmNsdWRlICJXZWJGYWtlWFJEZXZpY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0SGFuZGVkbmVzcyhYUkhhbmRlZG5l
c3MpCi17Ci19Cit1c2luZyBJbnB1dFNvdXJjZSA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpJbnB1dFNvdXJjZTsKK3VzaW5nIElucHV0U291cmNlQnV0dG9uID0gUGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOwordXNpbmcgSW5wdXRTb3VyY2VQ
b3NlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZTsKK3Vz
aW5nIEJ1dHRvblR5cGUgPSBGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGU7CiAKLXZvaWQgV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRUYXJnZXRSYXlNb2RlKFhSVGFyZ2V0UmF5TW9kZSkK
LXsKLX0KKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMt
bW9kdWxlLyN4ci1zdGFuZGFyZC1nYW1lcGFkLW1hcHBpbmcKK2NvbnN0ZXhwciBzdGQ6OmFycmF5
PEJ1dHRvblR5cGUsIDU+IFhSX1NUQU5EQVJEX0JVVFRPTlMgPSB7IEJ1dHRvblR5cGU6OkdyaXAs
IEJ1dHRvblR5cGU6OlRvdWNocGFkLCBCdXR0b25UeXBlOjpUaHVtYnN0aWNrLCBCdXR0b25UeXBl
OjpPcHRpb25hbEJ1dHRvbiwgQnV0dG9uVHlwZTo6T3B0aW9uYWxUaHVtYnN0aWNrIH07CiAKLXZv
aWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRQcm9maWxlcyhWZWN0b3I8U3RyaW5nPikK
K1JlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6
Y3JlYXRlKFBsYXRmb3JtWFI6OklucHV0U291cmNlSGFuZGxlIGhhbmRsZSwgY29uc3QgRmFrZVhS
SW5wdXRTb3VyY2VJbml0JiBpbml0KQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkZh
a2VYUklucHV0Q29udHJvbGxlcihoYW5kbGUsIGluaXQpKTsKIH0KIAotdm9pZCBXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI6OnNldEdyaXBPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdy
aXBPcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbikKK1dlYkZha2VYUklucHV0Q29udHJvbGxl
cjo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyKFBsYXRmb3JtWFI6OklucHV0U291cmNlSGFuZGxl
IGhhbmRsZSwgY29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0JiBpbml0KQorICAgIDogbV9oYW5k
bGUoaGFuZGxlKQorICAgICwgbV9oYW5kZW5lc3MoaW5pdC5oYW5kZWRuZXNzKQorICAgICwgbV90
YXJnZXRSYXlNb2RlKGluaXQudGFyZ2V0UmF5TW9kZSkKKyAgICAsIG1fcHJvZmlsZXMoaW5pdC5w
cm9maWxlcykKKyAgICAsIG1fcHJpbWFyeVNlbGVjdGVkKGluaXQuc2VsZWN0aW9uU3RhcnRlZCkK
KyAgICAsIG1fc2ltdWxhdGVTZWxlY3QoaW5pdC5zZWxlY3Rpb25DbGlja2VkKQogewotICAgIFVO
VVNFRF9QQVJBTShncmlwT3JpZ2luKTsKLSAgICBVTlVTRURfUEFSQU0oZW11bGF0ZWRQb3NpdGlv
bik7CisgICAgc2V0UG9pbnRlck9yaWdpbihpbml0LnBvaW50ZXJPcmlnaW4sIGZhbHNlKTsKKyAg
ICBzZXRHcmlwT3JpZ2luKGluaXQuZ3JpcE9yaWdpbiwgZmFsc2UpOworICAgIHNldFN1cHBvcnRl
ZEJ1dHRvbnMoaW5pdC5zdXBwb3J0ZWRCdXR0b25zKTsKIH0KIAotdm9pZCBXZWJGYWtlWFJJbnB1
dENvbnRyb2xsZXI6OmNsZWFyR3JpcE9yaWdpbigpCit2b2lkIFdlYkZha2VYUklucHV0Q29udHJv
bGxlcjo6c2V0R3JpcE9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgZ3JpcE9yaWdpbiwg
Ym9vbCBlbXVsYXRlZFBvc2l0aW9uKQogewotfQorICAgIGF1dG8gdHJhbnNmb3JtID0gV2ViRmFr
ZVhSRGV2aWNlOjpwYXJzZVJpZ2lkVHJhbnNmb3JtKGdyaXBPcmlnaW4pOworICAgIGlmICh0cmFu
c2Zvcm0uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2dyaXBPcmlnaW4g
PSBJbnB1dFNvdXJjZVBvc2UgeyB0cmFuc2Zvcm0ucmVsZWFzZVJldHVyblZhbHVlKCksIGVtdWxh
dGVkUG9zaXRpb24gfTsKK30gICAKIAogdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNl
dFBvaW50ZXJPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IHBvaW50ZXJPcmlnaW4sIGJv
b2wgZW11bGF0ZWRQb3NpdGlvbikKIHsKLSAgICBVTlVTRURfUEFSQU0ocG9pbnRlck9yaWdpbik7
Ci0gICAgVU5VU0VEX1BBUkFNKGVtdWxhdGVkUG9zaXRpb24pOworICAgIGF1dG8gdHJhbnNmb3Jt
ID0gV2ViRmFrZVhSRGV2aWNlOjpwYXJzZVJpZ2lkVHJhbnNmb3JtKHBvaW50ZXJPcmlnaW4pOwor
ICAgIGlmICh0cmFuc2Zvcm0uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBt
X3BvaW50ZXJPcmlnaW4gPSB7IHRyYW5zZm9ybS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZW11bGF0
ZWRQb3NpdGlvbiB9OwogfQogCiB2b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6ZGlzY29u
bmVjdCgpCiB7CisgICAgbV9jb25uZWN0ZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI6OnJlY29ubmVjdCgpCiB7CisgICAgbV9jb25uZWN0ZWQgPSB0cnVlOwog
fQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c3RhcnRTZWxlY3Rpb24oKQotewot
fQotCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6ZW5kU2VsZWN0aW9uKCkKK3ZvaWQg
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRTdXBwb3J0ZWRCdXR0b25zKGNvbnN0IFZlY3Rv
cjxGYWtlWFJCdXR0b25TdGF0ZUluaXQ+JiBidXR0b25zKQogeworICAgIG1fYnV0dG9ucy5jbGVh
cigpOworICAgIGZvciAoYXV0byYgYnV0dG9uIDogYnV0dG9ucykKKyAgICAgICAgbV9idXR0b25z
LmFkZChidXR0b24uYnV0dG9uVHlwZSwgYnV0dG9uKTsKIH0KIAotdm9pZCBXZWJGYWtlWFJJbnB1
dENvbnRyb2xsZXI6OnNpbXVsYXRlU2VsZWN0KCkKK3ZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyOjp1cGRhdGVCdXR0b25TdGF0ZShjb25zdCBGYWtlWFJCdXR0b25TdGF0ZUluaXQmIGluaXQp
CiB7CisgICAgYXV0byBpdCA9IG1fYnV0dG9ucy5maW5kKGluaXQuYnV0dG9uVHlwZSk7CisgICAg
aWYgKGl0ICE9IG1fYnV0dG9ucy5lbmQoKSkKKyAgICAgICAgaXQtPnZhbHVlID0gaW5pdDsKIH0K
IAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldFN1cHBvcnRlZEJ1dHRvbnMoVmVj
dG9yPEZha2VYUkJ1dHRvblN0YXRlSW5pdD4pCitJbnB1dFNvdXJjZSBXZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXI6OmdldEZyYW1lRGF0YSgpCiB7CisgICAgSW5wdXRTb3VyY2Ugc3RhdGU7CisgICAg
c3RhdGUuaGFuZGxlID0gbV9oYW5kbGU7CisgICAgc3RhdGUuaGFuZGVuZXNzID0gbV9oYW5kZW5l
c3M7CisgICAgc3RhdGUudGFyZ2V0UmF5TW9kZSA9IG1fdGFyZ2V0UmF5TW9kZTsKKyAgICBzdGF0
ZS5wcm9maWxlcyA9IG1fcHJvZmlsZXM7CisgICAgc3RhdGUucG9pbnRlck9yaWdpbiA9IG1fcG9p
bnRlck9yaWdpbjsKKyAgICBzdGF0ZS5ncmlwT3JpZ2luID0gbV9ncmlwT3JpZ2luOworCisgICAg
aWYgKG1fc2ltdWxhdGVTZWxlY3QpCisgICAgICAgIG1fcHJpbWFyeVNlbGVjdGVkID0gdHJ1ZTsK
KworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMt
bW9kdWxlLyN4ci1zdGFuZGFyZC1nYW1lcGFkLW1hcHBpbmcKKyAgICAvLyBNaW1pYyB4ci1zdGFu
ZGFyZCBnYW1lcGFkIGxheW91dAorCisgICAgLy8gUHJpbWFyeSB0cmlnZ2VyIGlzIHJlcXVpcmVk
IGFuZCBtdXN0IGJlIGF0IGluZGV4IDAKKyAgICBzdGF0ZS5idXR0b25zLmFwcGVuZCh7CisgICAg
ICAgIC50b3VjaGVkID0gbV9wcmltYXJ5U2VsZWN0ZWQsCisgICAgICAgIC5wcmVzc2VkID0gbV9w
cmltYXJ5U2VsZWN0ZWQsCisgICAgICAgIC5wcmVzc2VkVmFsdWUgPSBtX3ByaW1hcnlTZWxlY3Rl
ZCA/IDEuMGYgOiAwLjBmCisgICAgfSk7CisKKyAgICAvLyBOZXh0IGJ1dHRvbnMgaW4geHItc3Rh
bmRhcmQgb3JkZXIKKyAgICBmb3IgKGF1dG8gYnV0dG9uVHlwZSA6IFhSX1NUQU5EQVJEX0JVVFRP
TlMpIHsKKyAgICAgICAgYXV0byBkYXRhID0gZ2V0QnV0dG9uT3JQbGFjZWhvbGRlcihidXR0b25U
eXBlKTsKKyAgICAgICAgaWYgKGRhdGEuYnV0dG9uKQorICAgICAgICAgICAgc3RhdGUuYnV0dG9u
cy5hcHBlbmQoKmRhdGEuYnV0dG9uKTsKKyAgICAgICAgaWYgKGRhdGEuYXhlcykKKyAgICAgICAg
ICAgIHN0YXRlLmF4ZXMuYXBwZW5kVmVjdG9yKCpkYXRhLmF4ZXMpOworCisgICAgfQorCisgICAg
aWYgKG1fc2ltdWxhdGVTZWxlY3QpIHsKKyAgICAgICAgbV9wcmltYXJ5U2VsZWN0ZWQgPSBmYWxz
ZTsKKyAgICAgICAgbV9zaW11bGF0ZVNlbGVjdCA9IGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biBzdGF0ZTsKIH0KIAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnVwZGF0ZUJ1dHRv
blN0YXRlKEZha2VYUkJ1dHRvblN0YXRlSW5pdCkKK1dlYkZha2VYUklucHV0Q29udHJvbGxlcjo6
QnV0dG9uT3JQbGFjZWhvbGRlciBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEJ1dHRvbk9y
UGxhY2Vob2xkZXIoRmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlIGJ1dHRvblR5cGUpIGNvbnN0
CiB7CisgICAgQnV0dG9uT3JQbGFjZWhvbGRlciByZXN1bHQ7CisKKyAgICBhdXRvIGl0ID0gbV9i
dXR0b25zLmZpbmQoYnV0dG9uVHlwZSk7CisgICAgaWYgKGl0ICE9IG1fYnV0dG9ucy5lbmQoKSkg
eworICAgICAgICByZXN1bHQuYnV0dG9uID0gSW5wdXRTb3VyY2VCdXR0b24geworICAgICAgICAg
ICAgLnRvdWNoZWQgPSBpdC0+dmFsdWUudG91Y2hlZCwKKyAgICAgICAgICAgIC5wcmVzc2VkID0g
aXQtPnZhbHVlLnByZXNzZWQsCisgICAgICAgICAgICAucHJlc3NlZFZhbHVlID0gaXQtPnZhbHVl
LnByZXNzZWRWYWx1ZQorICAgICAgICB9OworCisgICAgICAgIGlmIChidXR0b25UeXBlID09IEJ1
dHRvblR5cGU6OlRvdWNocGFkIHx8IGJ1dHRvblR5cGUgPT0gQnV0dG9uVHlwZTo6VGh1bWJzdGlj
aykKKyAgICAgICAgICAgIHJlc3VsdC5heGVzID0gVmVjdG9yPGZsb2F0PiB7IGl0LT52YWx1ZS54
VmFsdWUsIGl0LT52YWx1ZS55VmFsdWUgfTsKKworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEFk
ZCBhIHBsYWNlaG9sZGVyIGlmIG5lZWRlZAorICAgICAgICAvLyBEZXZpY2VzIHRoYXQgbGFjayBv
bmUgb2YgdGhlIG9wdGlvbmFsIGlucHV0cyBsaXN0ZWQgaW4gdGhlIHRhYmxlcyBhYm92ZSBNVVNU
IHByZXNlcnZlIHRoZWlyIHBsYWNlIGluIHRoZQorICAgICAgICAvLyBidXR0b25zIG9yIGF4ZXMg
YXJyYXksIHJlcG9ydGluZyBhIHBsYWNlaG9sZGVyIGJ1dHRvbiBvciBwbGFjZWhvbGRlciBheGlz
LCByZXNwZWN0aXZlbHkuCisgICAgICAgIGlmIChidXR0b25UeXBlICE9IEJ1dHRvblR5cGU6Ok9w
dGlvbmFsQnV0dG9uIHx8IGJ1dHRvblR5cGUgIT0gQnV0dG9uVHlwZTo6T3B0aW9uYWxUaHVtYnN0
aWNrKSB7CisgICAgICAgICAgICBhdXRvIHByaW9yaXR5ID0gc3RkOjpmaW5kKFhSX1NUQU5EQVJE
X0JVVFRPTlMuYmVnaW4oKSwgWFJfU1RBTkRBUkRfQlVUVE9OUy5lbmQoKSwgYnV0dG9uVHlwZSk7
CisgICAgICAgICAgICBBU1NFUlQocHJpb3JpdHkgIT0gWFJfU1RBTkRBUkRfQlVUVE9OUy5lbmQo
KSk7CisKKyAgICAgICAgICAgIGZvciAoYXV0byBpdCA9IHByaW9yaXR5ICsgMTsgaXQgIT0gWFJf
U1RBTkRBUkRfQlVUVE9OUy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgICAgIGlmIChtX2J1
dHRvbnMuY29udGFpbnMoKml0KSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYnV0dG9u
ID0gSW5wdXRTb3VyY2VCdXR0b24oKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGJ1
dHRvblR5cGUgPT0gQnV0dG9uVHlwZTo6VG91Y2hwYWQgJiYgbV9idXR0b25zLmNvbnRhaW5zKEJ1
dHRvblR5cGU6OlRodW1ic3RpY2spKQorICAgICAgICAgICAgcmVzdWx0LmF4ZXMgPSBWZWN0b3I8
ZmxvYXQ+IHsgMC4wLCAwLjAgfTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXIuaAppbmRleCBkMjhjZWE0Zjg2ZWE5Y2E0NjU2ZWJkZjhjNTI1
MWVmNGI5MjQ5OWNkLi44YjViY2YzNjQ3ZWZjYWRjNjliYjY4YTYxMGEzZGM5OTM0MTFjYmFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
LmgKQEAgLTI4LDkgKzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQlhSKQogCiAjaW5jbHVkZSAiRmFr
ZVhSQnV0dG9uU3RhdGVJbml0LmgiCisjaW5jbHVkZSAiRmFrZVhSSW5wdXRTb3VyY2VJbml0Lmgi
CiAjaW5jbHVkZSAiRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1YUi5oIgogI2luY2x1ZGUgIlhSSGFuZGVkbmVzcy5oIgogI2luY2x1ZGUgIlhSVGFyZ2V0UmF5
TW9kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTM4LDM2ICs0MSw0NCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkZha2VYUklucHV0Q29udHJvbGxlciBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkZha2VYUklucHV0Q29udHJvbGxlcik7IH0KLQotICAgIHZvaWQg
c2V0SGFuZGVkbmVzcyhYUkhhbmRlZG5lc3MpOwotCi0gICAgdm9pZCBzZXRUYXJnZXRSYXlNb2Rl
KFhSVGFyZ2V0UmF5TW9kZSk7Ci0KLSAgICB2b2lkIHNldFByb2ZpbGVzKFZlY3RvcjxTdHJpbmc+
KTsKKyAgICBzdGF0aWMgUmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4gY3JlYXRlKFBsYXRm
b3JtWFI6OklucHV0U291cmNlSGFuZGxlLCBjb25zdCBGYWtlWFJJbnB1dFNvdXJjZUluaXQmKTsK
IAorICAgIHZvaWQgc2V0SGFuZGVkbmVzcyhYUkhhbmRlZG5lc3MgaGFuZGVuZXNzKSB7IG1faGFu
ZGVuZXNzID0gaGFuZGVuZXNzOyB9CisgICAgdm9pZCBzZXRUYXJnZXRSYXlNb2RlKFhSVGFyZ2V0
UmF5TW9kZSBtb2RlKSB7IG1fdGFyZ2V0UmF5TW9kZSA9IG1vZGU7IH0KKyAgICB2b2lkIHNldFBy
b2ZpbGVzKFZlY3RvcjxTdHJpbmc+JiYgcHJvZmlsZXMpIHsgbV9wcm9maWxlcyA9IFdURk1vdmUo
cHJvZmlsZXMpOyB9CiAgICAgdm9pZCBzZXRHcmlwT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3Jt
SW5pdCBncmlwT3JpZ2luLCBib29sIGVtdWxhdGVkUG9zaXRpb24gPSBmYWxzZSk7Ci0KLSAgICB2
b2lkIGNsZWFyR3JpcE9yaWdpbigpOwotCisgICAgdm9pZCBjbGVhckdyaXBPcmlnaW4oKSB7IG1f
Z3JpcE9yaWdpbiA9IFdURjo6bnVsbG9wdDsgfQogICAgIHZvaWQgc2V0UG9pbnRlck9yaWdpbihG
YWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9pbnRlck9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0
aW9uID0gZmFsc2UpOwotCiAgICAgdm9pZCBkaXNjb25uZWN0KCk7Ci0KICAgICB2b2lkIHJlY29u
bmVjdCgpOworICAgIHZvaWQgc3RhcnRTZWxlY3Rpb24oKSB7IG1fcHJpbWFyeVNlbGVjdGVkID0g
dHJ1ZTsgfQorICAgIHZvaWQgZW5kU2VsZWN0aW9uKCkgeyBtX3ByaW1hcnlTZWxlY3RlZCA9IGZh
bHNlOyB9CisgICAgdm9pZCBzaW11bGF0ZVNlbGVjdCgpIHsgbV9zaW11bGF0ZVNlbGVjdCA9IHRy
dWU7IH0KKyAgICB2b2lkIHNldFN1cHBvcnRlZEJ1dHRvbnMoY29uc3QgVmVjdG9yPEZha2VYUkJ1
dHRvblN0YXRlSW5pdD4mKTsKKyAgICB2b2lkIHVwZGF0ZUJ1dHRvblN0YXRlKGNvbnN0IEZha2VY
UkJ1dHRvblN0YXRlSW5pdCYpOworICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVy
biBtX2Nvbm5lY3RlZDsgfQogCi0gICAgdm9pZCBzdGFydFNlbGVjdGlvbigpOwotCi0gICAgdm9p
ZCBlbmRTZWxlY3Rpb24oKTsKLQotICAgIHZvaWQgc2ltdWxhdGVTZWxlY3QoKTsKLQotICAgIHZv
aWQgc2V0U3VwcG9ydGVkQnV0dG9ucyhWZWN0b3I8RmFrZVhSQnV0dG9uU3RhdGVJbml0Pik7Ci0K
LSAgICB2b2lkIHVwZGF0ZUJ1dHRvblN0YXRlKEZha2VYUkJ1dHRvblN0YXRlSW5pdCk7CisgICAg
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlIGdldEZyYW1lRGF0YSgp
OwogCiBwcml2YXRlOgotICAgIFdlYkZha2VYUklucHV0Q29udHJvbGxlcigpID0gZGVmYXVsdDsK
KyAgICBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIoUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5k
bGUsIGNvbnN0IEZha2VYUklucHV0U291cmNlSW5pdCYpOworCisgICAgc3RydWN0IEJ1dHRvbk9y
UGxhY2Vob2xkZXIgeworICAgICAgICBPcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+IGJ1dHRvbjsKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9y
PGZsb2F0Pj4gYXhlczsKKyAgICB9OworICAgIEJ1dHRvbk9yUGxhY2Vob2xkZXIgZ2V0QnV0dG9u
T3JQbGFjZWhvbGRlcihGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGUpIGNvbnN0OworCisgICAg
UGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgbV9oYW5kbGUgeyAwIH07CisgICAgWFJIYW5k
ZWRuZXNzIG1faGFuZGVuZXNzIHsgWFJIYW5kZWRuZXNzOjpOb25lIH07CisgICAgWFJUYXJnZXRS
YXlNb2RlIG1fdGFyZ2V0UmF5TW9kZSB7IFhSVGFyZ2V0UmF5TW9kZTo6R2F6ZSB9OworICAgIFZl
Y3RvcjxTdHJpbmc+IG1fcHJvZmlsZXM7CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlUG9zZSBtX3BvaW50ZXJPcmlnaW47CisgICAgT3B0aW9uYWw8UGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZT4gbV9ncmlwT3JpZ2luOwor
ICAgIEhhc2hNYXA8RmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlLCBGYWtlWFJCdXR0b25TdGF0
ZUluaXQsIFdURjo6SW50SGFzaDxGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGU+LCBXVEY6OlN0
cm9uZ0VudW1IYXNoVHJhaXRzPEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZT4+IG1fYnV0dG9u
czsKKyAgICBib29sIG1fY29ubmVjdGVkIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9wcmltYXJ5U2Vs
ZWN0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zaW11bGF0ZVNlbGVjdCB7IGZhbHNlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCmluZGV4IDcyNzI4
Mjc5NTQ1MTM4YzIwZGMxODliZTM2MzU1MGIyOWVmYTE1Y2UuLjdiMGU1YmQ4YThhMzQ3Y2I2OTE1
YzM5YTk5N2FjMTY4NDEyNWViY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BF
LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCkBAIC0yMDMsNiArMjAz
LDcgQEAgaWYgKEVOQUJMRV9XRUJYUikKICAgICBpZiAoTk9UIE9QRU5YUl9GT1VORCkKICAgICAg
ICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiT3BlblhSIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBXZWJY
UiBzdXBwb3J0LiIpCiAgICAgZW5kaWYgKCkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChF
TkFCTEVfR0FNRVBBRCBPTikKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfT1BFTlhS
ICR7T3BlblhSX0ZPVU5EfSkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChYUl9VU0VfUExB
VEZPUk1fRUdMIFRSVUUpCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoWFJfVVNFX0dSQVBI
SUNTX0FQSV9PUEVOR0wgVFJVRSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZmFhNTYwMTc4MTcyOWUyZjhkZTc4OTlmMzA4
MzU4MzNkODMwNGUwLi5hMDUxOTUxZTRjOTc3MDM4NTc5ZGNlNzQwYmQzMGRhYTVlNGY4NzUwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDMtMTYgIEltYW5vbCBGZXJuYW5kZXogIDxpZmVy
bmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIElucHV0IFNvdXJj
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzI1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBXZWJYUiBJbnB1dCBTb3VyY2UgdGVzdCBleHBlY3RhdGlvbnMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMy0yNiAgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgY2FjaGVkUHJv
cGVydHlWYWx1ZSBmb3IgV2ViWFIgW1NhbWVPYmplY3RdIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCmluZGV4IGNmNzdiYzY1NzhmMjA4YjI1NGExY2ZlZDI5ZDg1YTc4YTM0
YzE1YTYuLmNhNDE0MmQ1MDRmOGJhOGZlZjhiMDc0ZWQxYzhmZWRmMjU0YTk1YTMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAzLTE2ICBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBXZWJYUiBJbnB1dCBTb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjMyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgV2ViWFIgSW5wdXQgU291cmNlIHRlc3QgZXhwZWN0YXRpb25z
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19pbnB1dF9zb3Vy
Y2VfcmVjcmVhdGlvbi5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlc19jaGFuZ2UuaHR0cHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZl
bnRzX3Nlc3Npb25fc2VsZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdF9zdWJmcmFtZS5o
dHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zcXVlZXplLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9oYW5kZWRuZXNz
Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3JlbW92ZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2VtdWxh
dGVkUG9zaXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291
cmNlX3NhbWVPYmplY3QuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXQuaHR0cHMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAyMS0wMy0yNiAgSW1hbm9sIEZlcm5hbmRleiAgPGlm
ZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgY2FjaGVkUHJvcGVydHlW
YWx1ZSBmb3IgV2ViWFIgW1NhbWVPYmplY3RdIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0
X3NvdXJjZV9yZWNyZWF0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZV9yZWNy
ZWF0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzA1MWU5MjA2ZmE0YmRkODlm
YjgxYjRlYjBiMDkwYmEyMmIwNDcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlX3Jl
Y3JlYXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIElucHV0
IHNvdXJjZXMgYXJlIHJlLWNyZWF0ZWQgd2hlbiBoYW5kZWRuZXNzIG9yIHRhcmdldCByYXkgbW9k
ZSBjaGFuZ2VzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZXNfY2hhbmdlLmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIvZXZlbnRzX2lucHV0X3NvdXJjZXNfY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zOGRiMTI2MDYyZmJmMjZlNWFlMGIzMzk1ODk5MDFhOGVkOGJlZWRmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci9ldmVudHNfaW5wdXRfc291cmNlc19jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorCitQQVNTIFRyYW5zaWVudCBpbnB1dCBzb3VyY2VzIGZpcmUgZXZlbnRzIGluIHRo
ZSByaWdodCBvcmRlcgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdC5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L2V2ZW50c19zZXNzaW9uX3NlbGVjdC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIx
NjllOTgwMDJlOWYwZjg5ZWY4NzQ0YzczOTAwZTNhZTIzNTU5YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRz
X3Nlc3Npb25fc2VsZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFT
UyBYUklucHV0U291cmNlcyBwcmltYXJ5IGlucHV0IHByZXNzZXMgcHJvcGVybHkgZmlyZXMgb2Zm
IHRoZSByaWdodCBldmVudHMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUuaHR0cHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdkM2RmYmUzMWYyYjUwZWFjZWEyODU1MjdiMjI5MmE1MWY1Mjcy
ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdF9zdWJmcmFtZS5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgRW5zdXJlcyB0aGF0IGFuIFhSSW5wdXRT
b3VyY2VzIHByaW1hcnkgaW5wdXQgYmVpbmcgcHJlc3NlZCBhbmQgcmVsZWFzZWQgaW4gdGhlIHNw
YWNlIG9mIGEgc2luZ2xlIGZyYW1lIHByb3Blcmx5IGZpcmVzIG9mZiB0aGUgcmlnaHQgZXZlbnRz
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc3F1ZWV6ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNz
aW9uX3NxdWVlemUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMTY5ZTk4MDAyZTlm
MGY4OWVmODc0NGM3MzkwMGUzYWUyMzU1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3Nx
dWVlemUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSSW5wdXRT
b3VyY2VzIHByaW1hcnkgaW5wdXQgcHJlc3NlcyBwcm9wZXJseSBmaXJlcyBvZmYgdGhlIHJpZ2h0
IGV2ZW50cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9oYW5kZWRuZXNzLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0
SW5wdXRQb3NlX2hhbmRlZG5lc3MuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4OWU3
YWUzZWJlYmYxZTYxNGEzNWI0YmI3M2IxOGRhNTE1NDJlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0
UG9zZV9oYW5kZWRuZXNzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFT
UyBYUklucHV0U291cmNlcyBwcm9wZXJseSBjb21tdW5pY2F0ZSB0aGVpciBoYW5kZWRuZXNzCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJJbnB1dFNvdXJjZV9hZGRfcmVtb3ZlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJj
ZV9hZGRfcmVtb3ZlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGI1NjRiZjg1N2Q1
M2RlN2M4MzJjM2QyNWI0MGUyMTNmOWEyNDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2Fk
ZF9yZW1vdmUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSSW5w
dXRTb3VyY2VzIGNhbiBiZSBwcm9wZXJseSBhZGRlZCBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBzZXNz
aW9uCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJJbnB1dFNvdXJjZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40YWE3MDdmNmNlNDRlZjY0OGY0NGYwZGFjNjk1ZTI3ZGMwZjU2NTZkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94cklucHV0U291cmNlX2VtdWxhdGVkUG9zaXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMyBAQAorCitQQVNTIFBvc2VzIGZyb20gWFJJbnB1dFNvdXJjZS5ncmlwU3BhY2UgaGF2
ZSBlbXVsYXRlZFBvc2l0aW9uIHNldCBwcm9wZXJseQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfcHJv
ZmlsZXMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3Byb2ZpbGVzLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZDE3NmVkNzZlMTk5Y2VhNzc0YmQxMmI5ZjhlOWYwZjQzYjQ0ZGYx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3Byb2ZpbGVzLmh0dHBzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKKworUEFTUyBXZWJYUiBJbnB1dFNvdXJjZSdzIHByb2ZpbGVzIGxpc3Qg
Y2FuIGJlIHNldAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2Vfc2FtZU9iamVjdC5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hySW5wdXRTb3VyY2Vfc2FtZU9iamVjdC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZThiMjBiY2Y1ZWJkMGVlZTM4NjJkMGM1OWM3MzAwOWM4MjRiZjM0NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJ
bnB1dFNvdXJjZV9zYW1lT2JqZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
KworUEFTUyBYUklucHV0U291cmNlIGF0dHJpYnV0ZXMgbWVldCBbU2FtZU9iamVjdF0gcmVxdWly
ZW1lbnQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYzM0Y2ZjMmNjNzY1OWViNGZiMGEzMWMwOTU4NDhjYzMyYmFkMjQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACisKK1BBU1MgVXBkYXRpbmcgWFJSZWZlcmVuY2VTcGFjZSBvcmlnaW4gb2Zmc2V0
IHVwZGF0ZXMgdmlldyBhbmQgaW5wdXQgbWF0cmljZXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggM2QyYTkxYmE1YzgzZjUyZDBmMGUyZjJmNGNjMzgx
YTI5ODBmNDQ2MS4uMzQwNGZhZDgzMWZhNGUxZmNiYWQ0YWEwNDA3MWY2NDE4MDY5OTFhNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYzNSw2ICs2MzUs
MTEgQEAgd2Via2l0Lm9yZy9iLzIxMzEzMSBnYW1lcGFkIFsgU2tpcCBdCiB3ZWJraXQub3JnL2Iv
MjEzMTMxIGh0dHAvdGVzdHMvbWlzYy9nYW1lcGFkcy1pbnNlY3VyZS5odG1sIFsgU2tpcCBdCiAK
ICMgV2ViWFIKK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lu
cHV0X3NvdXJjZV9yZWNyZWF0aW9uLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZXNfY2hhbmdlLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZl
bnRzX3Nlc3Npb25fc2VsZWN0X3N1YmZyYW1lLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0Lmh0dHBz
Lmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZl
bnRzX3Nlc3Npb25fc3F1ZWV6ZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjEy
ODk3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvaWRsaGFybmVzcy5odHRw
cy53aW5kb3cuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94ckJvdW5kZWRSZWZlcmVuY2VTcGFjZV91cGRhdGVzLmh0dHBzLmh0bWwgWyBQYXNz
IF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci93ZWJHTENhbnZhc0NvbnRleHRfY3JlYXRlX3hyY29tcGF0aWJsZS5odHRwcy5odG1sIFsg
UGFzcyBdCkBAIC02NDksMTAgKzY1NCwxNSBAQCB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npbwogd2Vi
a2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
RGV2aWNlX3JlcXVlc3RTZXNzaW9uX25vX21vZGUuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0
Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2
aWNlX3JlcXVlc3RTZXNzaW9uX25vbl9pbW1lcnNpdmVfbm9fZ2VzdHVyZS5odHRwcy5odG1sIFsg
UGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25fb3B0aW9uYWxGZWF0dXJlcy5odHRwcy5o
dG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElu
cHV0UG9zZV9oYW5kZWRuZXNzLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0Vmlld2VyUG9zZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJG
cmFtZV9nZXRWaWV3ZXJQb3NlX2dldFBvc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFBvc2UuaHR0cHMuaHRtbCBb
IFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX3Nl
c3Npb25fc2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3JlbW92ZS5odHRwcy5odG1sIFsg
UGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3Vy
Y2VfZW11bGF0ZWRQb3NpdGlvbi5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfcHJvZmlsZXMuaHR0cHMuaHRtbCBb
IFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291
cmNlX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2VyX2F2YWlsYWJpbGl0eS5odHRwcy5odG1s
IFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIvYXItbW9kdWxlL2lkbGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWwgWyBQYXNz
IF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2ltbWVyc2l2ZS1hci5o
dHRwcy5odG1sIFsgUGFzcyBdCkBAIC02NjAsNiArNjcwLDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfZXllcy5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19tYXRjaC5odHRwcy5odG1s
IFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19v
bmVmcmFtZXVwZGF0ZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL25hdmlnYXRvcl94cl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNz
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFj
ZV9vcmlnaW5PZmZzZXQuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0
cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clJlZmVyZW5jZVNwYWNlX3JlbGF0aW9uc2hpcHMuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX2NvbnN0cnVj
dG9yLmh0dHBzLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxv
ZwppbmRleCA3MTljN2QwZDM3YjY2NDMzNTM5Mzc1OGFmMWVjZWZjZDgzZGFhYmU2Li5lNGYwNDhl
NzViOWNmNTNlZGRhNzBjMTczMDZlODk1YTVhZThjMzFjIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cK
KysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDMtMTYgIEltYW5vbCBGZXJu
YW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhS
IElucHV0IFNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEVuYWJsZSBXUEUgR2FtZXBhZCB3aGVuIFdlYlhSIGlzIGVuYWJsZWQuCisKKyAgICAg
ICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZToKKwogMjAyMS0wMy0yMyAgQWRyaWFu
IFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0g
VXNlIGFuIGltcG9ydGVkIHRhcmdldCBmb3IgdGhlIExDTVMyIGxpYnJhcnkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425413</attachid>
            <date>2021-04-07 09:59:18 -0700</date>
            <delta_ts>2021-04-16 09:17:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223257-20210407185916.patch</filename>
            <type>text/plain</type>
            <size>94048</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2MDUwNGFkYjNlMmY0
MTQ3Y2I1YTEwODdmNmUyYTdlNzk1OTUzNC4uOWY5YWFmZTg1ZjY5MzQxOTYzZTYyZDlkYzgxYjg5
ZWE5MzFmMzE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMS0wMy0xNiAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBwbGF0Zm9ybSBkYXRhIGRl
ZmluaXRpb24gYW5kIHRoZSBET00gYml0cyByZXF1aXJlZCB0byBzdXBwb3J0IFdlYlhSIElucHV0
IFNvdXJjZXMsIHRoZSBpbnB1dCBtZWNoYW5pc20gdXNlZCBpbiBXZWJYUi4KKyAgICAgICAgRXhh
bXBsZSBYUiBpbnB1dCBzb3VyY2VzIGluY2x1ZGUsIGJ1dCBhcmUgbm90IGxpbWl0ZWQgdG8sIGhh
bmRoZWxkIGNvbnRyb2xsZXJzLCBvcHRpY2FsbHkgdHJhY2tlZCBoYW5kcywgYW5kIGdhemUtYmFz
ZWQgaW5wdXQgbWV0aG9kcy4KKworICAgICAgICBNb3JlIGluZm8gYWJvdXQgdGhlIEFQSSBpbjoK
KyAgICAgICAgLSBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNpbnB1dAor
ICAgICAgICAtIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMt
bW9kdWxlLyN3ZWJ4ci1kZXZpY2UtYXBpLWludGVncmF0aW9uCisKKyAgICAgICAgVGVzdGVkIGJ5
IFdlYlhSIFdQVC4KKworICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmg6IEFkZCBz
ZXRDb25uZWN0ZWQgbWV0aG9kLgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkdhbWVw
YWQuY3BwOiBCcmlkZ2UgYmV0d2VlbiBXZWJYUklucHV0U291cmNlIGFuZCBHYW1lcGFkCisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUkdhbWVwYWQ6OldlYlhSR2FtZXBhZCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJ4ci9XZWJYUkdhbWVwYWQuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJJbnB1dFNwYWNlLmNwcDogSW5zdGFuY2Ugb2YgV2ViWFJTcGFjZSB1c2VkIGZvciBXZWJYUklu
cHV0U291cmNlIHNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFjZTo6V2ViWFJJbnB1dFNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5oOgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
RnJhbWU6OnBvcHVsYXRlUG9zZSk6IHNldCBlbXVsYXRlZFBvc2l0aW9uIGJhc2VkIG9uIHRoZSBz
cGFjZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwOiBD
b21wbGV0ZSBXZWJYUklucHV0U291cmNlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1
dFNwYWNlOjpXZWJYUklucHV0U3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNw
YWNlOjpuYXRpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNv
dXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OldlYlhS
SW5wdXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6dXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OnJlcXVpcmVzSW5wdXRTb3Vy
Y2VDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6ZGlzY29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjpwb2xsRXZlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZUV2ZW50KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSSW5wdXRTb3VyY2U6OmhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklu
cHV0U291cmNlOjpoYW5kZWRuZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5w
dXRTb3VyY2U6OnRhcmdldFJheU1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJ
bnB1dFNvdXJjZTo6dGFyZ2V0UmF5U3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZTo6Z3JpcFNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
SW5wdXRTb3VyY2U6OnByb2ZpbGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5w
dXRTb3VyY2U6OmdhbWVwYWQgY29uc3QpOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U291cmNlLmlkbDogQWRkIGdhbWVwYWQgYXR0cmlidXRlLgorCisgICAgICAgICogTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwOiBJbXBsZW1lbnQgaW5wdXQgc291
cmNlIHVwZGF0ZXMgYW5kIGV2ZW50IGRpc3BhdGNoaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1
dFNvdXJjZUFycmF5OjpXZWJYUklucHV0U291cmNlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJJbnB1dFNvdXJjZUFycmF5OjppdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSSW5wdXRTb3VyY2VBcnJheTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1
dFNvdXJjZUFycmF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJj
ZUFycmF5OjpoYW5kbGVSZW1vdmVkSW5wdXRTb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSSW5wdXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMpOgor
ICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5Lmg6CisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbik6IFNldCB0cmFja2luZyBkZWxlZ2F0ZSBiZWZvcmUg
aW5pdGlhbGl6aW5nIHRyYWNraW5nIGFuZCByZW5kZXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNlc3Npb246OmlzUG9zaXRpb25FbXVsYXRlZCBjb25zdCk6IEFkZCBoZWxwZXIgbWV0aG9k
LgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpzaHV0ZG93bik6IENsZWFyIFdlYlhS
SW5wdXRTb3VyY2VBcnJheSBpbnN0YW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lv
bjo6c2Vzc2lvbkRpZEluaXRpYWxpemVJbnB1dFNvdXJjZXMpOiBEaXNwYXRjaCBpbml0aWFsIElu
cHV0U291cmNlIGRpc2NvdmVyeSBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lv
bjo6b25GcmFtZSk6IFVwZGF0ZSBXZWJYUklucHV0U291cmNlQXJyYXkgaW5zdGFuY2UuCisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaDoKKworICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJTcGFjZS5jcHA6IEFkZCB2aXJ0dWFsIGNsYXNzIGlzUG9zaXRpb25FbXVsYXRl
ZCB0byBiZSB1c2VkIGluIFdlYlhSRnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNl
Ojppc1Bvc2l0aW9uRW11bGF0ZWQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJTcGFjZS5oOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6cmVxdWVzdFNlc3Npb24pOiB1cGRhdGUgRklY
TUUgY29tbWVudC4KKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvWFJIYW5kZWRuZXNzLmg6IFJl
dXNlIFBsYXRmb3JtWFIgZW51bS4KKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvWFJJbnB1dFNv
dXJjZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhSSW5wdXRTb3VyY2VFdmVudDo6WFJJ
bnB1dFNvdXJjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlhSSW5wdXRTb3VyY2VFdmVudDo6
c2V0RnJhbWVBY3RpdmUpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZUV2
ZW50Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZl
bnQuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvWFJUYXJnZXRSYXlNb2RlLmg6IFJldXNl
IFBsYXRmb3JtWFIgZW51bS4KKworICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENv
bnN0YW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdT
dHJpbmcpOiBBZGQgeHItc3RhbmRhcmQgZ2FtZXBhZCBtYXBwaW5nIG5hbWUuCisgICAgICAgICog
cGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6IEFkZCBJbnB1dCBTb3VyY2UgZnJhbWUgZGF0YS4KKworICAgICAg
ICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcDogSW1wbGVtZW50IHJlcXVpcmVkIGNoYW5n
ZXMgdG8gcnVuIGFuZCBwYXNzIFdlYlhSIElucHV0IFNvdXJjZSB0ZXN0cy4KKyAgICAgICAgKFdl
YkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1lVGltZXJGaXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNpbXVsYXRlUmVzZXRQb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmljZTo6c2ltdWxhdGVJbnB1dFNvdXJjZUNv
bm5lY3Rpb24pOgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmg6CisgICAgICAg
ICogdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRHcmlwT3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0UG9pbnRlck9y
aWdpbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmRpc2Nv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpyZWNv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRT
dXBwb3J0ZWRCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUklucHV0Q29udHJv
bGxlcjo6dXBkYXRlQnV0dG9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5w
dXRDb250cm9sbGVyOjpnZXRGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyOjpnZXRCdXR0b25PclBsYWNlaG9sZGVyIGNvbnN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oOgorCiAyMDIxLTA0LTA3ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgSWdub3JlIG5vbi1udWxsIGxhc3RR
dW90ZSBBU1NFUlQgd2hlbiBjb250aW51YXRpb24gaXMgYnJva2VuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nYW1lcGFkL0dhbWVwYWQuaAppbmRleCA4ZjE5MzM0MTYwNWNjNjAxMDE2MGQxZTI4ZDI2
NzkwNjVjNGM2MTc3Li40M2NlZDU0NTdmMmY0ZmQ0YTQ3NmI1ZDM2MmE0YTlkYWM1MGEwZjMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmgKQEAgLTU1LDYgKzU1LDcg
QEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxSZWY8R2FtZXBhZEJ1dHRvbj4+JiBidXR0b25z
KCkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZUZyb21QbGF0Zm9ybUdhbWVwYWQoY29uc3QgUGxh
dGZvcm1HYW1lcGFkJik7CisgICAgdm9pZCBzZXRDb25uZWN0ZWQoYm9vbCBjb25uZWN0ZWQpIHsg
bV9jb25uZWN0ZWQgPSBjb25uZWN0ZWQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBHYW1l
cGFkKGNvbnN0IFBsYXRmb3JtR2FtZXBhZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJGcmFtZS5jcHAKaW5kZXggZjQ1ZmIxMTQ3NWEyZDgyNDBmNmJmNDc4MDZiNDAwOTg0
OGNiMDg3ZC4uNzhmNDFkOWI4ZmQ5NmViOGMwZmQxNWFlZTNkMzFiODNlYjIxYzkyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxhdGVkUG9zZT4+IFdl
YlhSRnJhbWU6OnBvcHVsYXRlUG9zZShjb25zdAogICAgIC8vIDcuIExldCB0cmFuc2Zvcm0gYmUg
cG9zZeKAmXMgdHJhbnNmb3JtLgogICAgIC8vIDguIFF1ZXJ5IHRoZSBYUiBkZXZpY2UncyB0cmFj
a2luZyBzeXN0ZW0gZm9yIHNwYWNl4oCZcyBwb3NlIHJlbGF0aXZlIHRvIGJhc2VTcGFjZSBhdCB0
aGUgZnJhbWXigJlzIHRpbWUuCiAKLSAgICBpZiAoIW1fZGF0YS5pc1RyYWNraW5nVmFsaWQpIHsK
KyAgICBpZiAobV9pc0FuaW1hdGlvbkZyYW1lICYmICFtX2RhdGEuaXNUcmFja2luZ1ZhbGlkKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBjaGVjayBpZiBzcGFjZeKAmXMgcG9zZSByZWxhdGl2ZSB0byBi
YXNlU3BhY2UgaGFzIGJlZW4gZGV0ZXJtaW5lZCBpbiB0aGUgcGFzdC4KICAgICAgICAgLy8gQW55
d2F5IHRoaXMgZW11bGF0aW9uIGlzIHVzdWFsbHkgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbSBpbiB0
aGUgcG9zZSAoZS5nLiBPcGVuWFIpCiAgICAgICAgIC8vIHNvIHdlIHNob3VsZG4ndCBoaXQgdGhp
cyBwYXRoIGluIG1vc3QgWFJQbGF0Zm9ybSBwb3J0cy4KQEAgLTEzMSw3ICsxMzEsNyBAQCBFeGNl
cHRpb25PcjxPcHRpb25hbDxXZWJYUkZyYW1lOjpQb3B1bGF0ZWRQb3NlPj4gV2ViWFJGcmFtZTo6
cG9wdWxhdGVQb3NlKGNvbnN0CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCB9OwogCiAg
ICAgYXV0byB0cmFuc2Zvcm0gPSAgKmJhc2VUcmFuc2Zvcm0uaW52ZXJzZSgpICogc3BhY2UuZWZm
ZWN0aXZlT3JpZ2luKCk7Ci0gICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uID0gbV9kYXRhLmlzUG9z
aXRpb25FbXVsYXRlZCB8fCAhbV9kYXRhLmlzUG9zaXRpb25WYWxpZDsKKyAgICBib29sIGVtdWxh
dGVkUG9zaXRpb24gPSBzcGFjZS5pc1Bvc2l0aW9uRW11bGF0ZWQoKSB8fCBiYXNlU3BhY2UuaXNQ
b3NpdGlvbkVtdWxhdGVkKCk7CiAKICAgICBib29sIGxpbWl0ID0gbXVzdFBvc2VzQmVMaW1pdGVk
KHNwYWNlLCBiYXNlU3BhY2UpOwogICAgIGlmIChsaW1pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkdhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkdhbWVwYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3YzA0N2MwZDcxNGE5
NjExZDg5ZjE5N2RmNDkxMDU3MjZlODM1NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSR2FtZXBhZC5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViWFJHYW1lcGFkLmgi
CisKKyNpZiBFTkFCTEUoV0VCWFIpICYmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAiR2Ft
ZXBhZC5oIgorI2luY2x1ZGUgIkdhbWVwYWRDb25zdGFudHMuaCIKKyNpbmNsdWRlICJYUlRhcmdl
dFJheU1vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBodHRwczovL2ltbWVyc2l2
ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8jZ2FtZXBhZC1kaWZmZXJlbmNl
cworV2ViWFJHYW1lcGFkOjpXZWJYUkdhbWVwYWQoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGNv
bm5lY3RUaW1lLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3Vy
Y2UmIHNvdXJjZSkKKyAgICA6IFBsYXRmb3JtR2FtZXBhZCgtMSkKK3sKKyAgICBtX2xhc3RVcGRh
dGVUaW1lID0gTW9ub3RvbmljVGltZTo6ZnJvbVJhd1NlY29uZHMoU2Vjb25kczo6ZnJvbU1pbGxp
c2Vjb25kcyh0aW1lc3RhbXApLnZhbHVlKCkpOworICAgIG1fY29ubmVjdFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpmcm9tUmF3U2Vjb25kcyhTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKGNvbm5lY3RU
aW1lKS52YWx1ZSgpKTsKKyAgICAvLyBJbiBvcmRlciB0byByZXBvcnQgYSBtYXBwaW5nIG9mICJ4
ci1zdGFuZGFyZCIgdGhlIGRldmljZSBNVVNUIHJlcG9ydCBhIHRhcmdldFJheU1vZGUgb2YgInRy
YWNrZWQtcG9pbnRlciIgYW5kIE1VU1QgaGF2ZSBhIG5vbi1udWxsIGdyaXBTcGFjZS4KKyAgICAv
LyBJdCBNVVNUIGhhdmUgYXQgbGVhc3Qgb25lIHByaW1hcnkgdHJpZ2dlciwgc2VwYXJhdGUgZnJv
bSBhbnkgdG91Y2hwYWRzIG9yIHRodW1ic3RpY2tzCisgICAgaWYgKHNvdXJjZS50YXJnZXRSYXlN
b2RlID09IFhSVGFyZ2V0UmF5TW9kZTo6VHJhY2tlZFBvaW50ZXIgJiYgIXNvdXJjZS5idXR0b25z
LmlzRW1wdHkoKSAmJiBzb3VyY2UuZ3JpcE9yaWdpbi5oYXNWYWx1ZSgpKQorICAgICAgICBtX21h
cHBpbmcgPSB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKTsKKyAgICBtX2F4ZXMgPSBz
b3VyY2UuYXhlcy5tYXAoW10oYXV0byB2YWx1ZSkgeworICAgICAgICByZXR1cm4gU2hhcmVkR2Ft
ZXBhZFZhbHVlKHZhbHVlKTsKKyAgICB9KTsKKyAgICBtX2J1dHRvbnMgPSBzb3VyY2UuYnV0dG9u
cy5tYXAoW10oYXV0byYgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEdhbWVwYWRWYWx1
ZSh2YWx1ZS5wcmVzc2VkVmFsdWUpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpICYmIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkdhbWVwYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJHYW1lcGFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA3ZjRj
NzFlMTNiOTM4OGRmMTgwYjQ3NDQxY2E2YmE3ZWE0YmRkYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJHYW1lcGFkLmgKQEAgLTAsMCArMSw1MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikgJiYgRU5B
QkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVhSLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFdlYlhSR2FtZXBhZDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CitwdWJs
aWM6CisgICAgV2ViWFJHYW1lcGFkKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBjb25uZWN0VGlt
ZSwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJik7CisK
K3ByaXZhdGU6CisgICAgY29uc3QgVmVjdG9yPFNoYXJlZEdhbWVwYWRWYWx1ZT4mIGF4aXNWYWx1
ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4ZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8U2hh
cmVkR2FtZXBhZFZhbHVlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9i
dXR0b25zOyB9CisKKyAgICBWZWN0b3I8U2hhcmVkR2FtZXBhZFZhbHVlPiBtX2F4ZXM7CisgICAg
VmVjdG9yPFNoYXJlZEdhbWVwYWRWYWx1ZT4gbV9idXR0b25zOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAKaW5kZXggZjMwNzY3NTExOThk
YmJjMzc2Y2I5NzE5YjhhODdiMTJjNjIwMThkZC4uZWQ5Mzk3YjgxNTlkN2EwOTk4ZDZiZTZjOGFh
ZGI3Y2I0Y2NlYjgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUklucHV0U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSW5wdXRTb3VyY2UuY3BwCkBAIC0yOCw1MCArMjgsMTI5IEBACiAKICNpZiBFTkFCTEUoV0VC
WFIpCiAKLSNpbmNsdWRlICJXZWJYUlNwYWNlLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgor
I2lmIEVOQUJMRShHQU1FUEFEKQorI2luY2x1ZGUgIkdhbWVwYWQuaCIKKyNpbmNsdWRlICJXZWJY
UkdhbWVwYWQuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKKyNpbmNsdWRlICJX
ZWJYUlNlc3Npb24uaCIKKyNpbmNsdWRlICJYUklucHV0U291cmNlRXZlbnQuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUklucHV0U291cmNlKTsKIAotUmVmPFdlYlhSSW5w
dXRTb3VyY2U+IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZShSZWY8V2ViWFJTcGFjZT4mJiB0YXJn
ZXRSYXlTcGFjZSkKK1JlZjxXZWJYUklucHV0U291cmNlPiBXZWJYUklucHV0U291cmNlOjpjcmVh
dGUoUmVmPERvY3VtZW50PiYmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24s
IGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJ
bnB1dFNvdXJjZSYgc291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5w
dXRTb3VyY2UoV1RGTW92ZSh0YXJnZXRSYXlTcGFjZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJYUklucHV0U291cmNlKFdURk1vdmUoZG9jdW1lbnQpLCBXVEZNb3ZlKHNlc3Npb24p
LCB0aW1lc3RhbXAsIHNvdXJjZSkpOwogfQogCi1XZWJYUklucHV0U291cmNlOjpXZWJYUklucHV0
U291cmNlKFJlZjxXZWJYUlNwYWNlPiYmIHRhcmdldFJheVNwYWNlKQotICAgIDogbV9oYW5kZWRu
ZXNzKFhSSGFuZGVkbmVzczo6Tm9uZSkKLSAgICAsIG1fdGFyZ2V0UmF5TW9kZShYUlRhcmdldFJh
eU1vZGU6OkdhemUpCi0gICAgLCBtX3RhcmdldFJheVNwYWNlKFdURk1vdmUodGFyZ2V0UmF5U3Bh
Y2UpKQorV2ViWFJJbnB1dFNvdXJjZTo6V2ViWFJJbnB1dFNvdXJjZShSZWY8RG9jdW1lbnQ+JiYg
ZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgZG91YmxlIHRpbWVzdGFtcCwg
Y29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2Up
CisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50LmNvcHlSZWYoKSkKKyAgICAsIG1fc2Vzc2lvbihX
VEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV90YXJnZXRSYXlTcGFjZShXZWJYUklucHV0U3BhY2U6
OmNyZWF0ZShXVEZNb3ZlKGRvY3VtZW50KSwgbV9zZXNzaW9uLmNvcHlSZWYoKSwgc291cmNlLnBv
aW50ZXJPcmlnaW4pKQorICAgICwgbV9jb25uZWN0VGltZSh0aW1lc3RhbXApCisjaWYgRU5BQkxF
KEdBTUVQQUQpCisgICAgLCBtX2dhbWVwYWQoR2FtZXBhZDo6Y3JlYXRlKFdlYlhSR2FtZXBhZCh0
aW1lc3RhbXAsIHRpbWVzdGFtcCwgc291cmNlKSkpCisjZW5kaWYKIHsKKyAgICB1cGRhdGUodGlt
ZXN0YW1wLCBzb3VyY2UpOwogfQogCiBXZWJYUklucHV0U291cmNlOjp+V2ViWFJJbnB1dFNvdXJj
ZSgpID0gZGVmYXVsdDsKIAotWFJIYW5kZWRuZXNzIFdlYlhSSW5wdXRTb3VyY2U6OmhhbmRlZG5l
c3MoKSBjb25zdAordm9pZCBXZWJYUklucHV0U291cmNlOjp1cGRhdGUoZG91YmxlIHRpbWVzdGFt
cCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3Vy
Y2UpCiB7Ci0gICAgcmV0dXJuIG1faGFuZGVkbmVzczsKKyNpZiAhRU5BQkxFKEdBTUVQQUQpCisg
ICAgVU5VU0VEX1BBUkFNKHRpbWVzdGFtcCk7CisjZW5kaWYKKyAgICBtX3NvdXJjZSA9IHNvdXJj
ZTsKKyAgICBtX3RhcmdldFJheVNwYWNlLT5zZXRQb3NlKHNvdXJjZS5wb2ludGVyT3JpZ2luKTsK
KyAgICBpZiAoYXV0byBncmlwT3JpZ2luID0gc291cmNlLmdyaXBPcmlnaW4pIHsKKyAgICAgICAg
aWYgKG1fZ3JpcFNwYWNlKQorICAgICAgICAgICAgbV9ncmlwU3BhY2UtPnNldFBvc2UoKmdyaXBP
cmlnaW4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2dyaXBTcGFjZSA9IFdlYlhSSW5w
dXRTcGFjZTo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIG1fc2Vzc2lvbi5jb3B5UmVmKCksICpn
cmlwT3JpZ2luKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9ncmlwU3BhY2UgPSBudWxscHRyOwor
I2lmIEVOQUJMRShHQU1FUEFEKQorICAgIG1fZ2FtZXBhZC0+dXBkYXRlRnJvbVBsYXRmb3JtR2Ft
ZXBhZChXZWJYUkdhbWVwYWQodGltZXN0YW1wLCBtX2Nvbm5lY3RUaW1lLCBzb3VyY2UpKTsKKyNl
bmRpZgogfQogCi1YUlRhcmdldFJheU1vZGUgV2ViWFJJbnB1dFNvdXJjZTo6dGFyZ2V0UmF5TW9k
ZSgpIGNvbnN0Citib29sIFdlYlhSSW5wdXRTb3VyY2U6OnJlcXVpcmVzSW5wdXRTb3VyY2VDaGFu
Z2UoY29uc3QgSW5wdXRTb3VyY2UmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gbV90YXJnZXRSYXlN
b2RlOworICAgIHJldHVybiBtX3NvdXJjZS5oYW5kZW5lc3MgIT0gc291cmNlLmhhbmRlbmVzcwor
ICAgICAgICB8fCBtX3NvdXJjZS50YXJnZXRSYXlNb2RlICE9IHNvdXJjZS50YXJnZXRSYXlNb2Rl
CisgICAgICAgIHx8IG1fc291cmNlLnByb2ZpbGVzICE9IHNvdXJjZS5wcm9maWxlcworICAgICAg
ICB8fCBzdGF0aWNfY2FzdDxib29sPihtX2dyaXBTcGFjZSkgIT0gc291cmNlLmdyaXBPcmlnaW4u
aGFzVmFsdWUoKTsKIH0KIAotY29uc3QgV2ViWFJTcGFjZSYgV2ViWFJJbnB1dFNvdXJjZTo6dGFy
Z2V0UmF5U3BhY2UoKSBjb25zdAordm9pZCBXZWJYUklucHV0U291cmNlOjpkaXNjb25uZWN0KCkK
IHsKLSAgICByZXR1cm4gbV90YXJnZXRSYXlTcGFjZTsKKyAgICBtX2Nvbm5lY3RlZCA9IGZhbHNl
OworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIG1fZ2FtZXBhZC0+c2V0Q29ubmVjdGVkKGZhbHNl
KTsKKyNlbmRpZgogfQogCi1SZWZQdHI8V2ViWFJTcGFjZT4gV2ViWFJJbnB1dFNvdXJjZTo6Z3Jp
cFNwYWNlKCkgY29uc3QKK3ZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6cG9sbEV2ZW50cyhWZWN0b3I8
UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+JiBldmVudHMpCiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAg
ICBpZiAoIW1fY29ubmVjdGVkKSB7CisgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3Bh
dGNoIGEgc2VsZWN0ZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJ
bnB1dFNvdXJjZXMgZW5kcyAKKyAgICAgICAgLy8gd2hlbiBhbiBYUklucHV0U291cmNlIHRoYXQg
aGFzIGJlZ3VuIGEgcHJpbWFyeSBzZWxlY3QgYWN0aW9uIGlzIGRpc2Nvbm5lY3RlZC4KKyAgICAg
ICAgaWYgKG1fc2VsZWN0U3RhcnRlZCkKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRl
RXZlbnQoZXZlbnROYW1lcygpLnNlbGVjdGVuZEV2ZW50KSk7CisKKyAgICAgICAgLy8gQSB1c2Vy
IGFnZW50IE1VU1QgZGlzcGF0Y2ggYSBzcXVlZXplZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3
aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgZW5kcyAKKyAgICAgICAgLy8gd2hlbiBhbiBY
UklucHV0U291cmNlIHRoYXQgaGFzIGJlZ3VuIGEgcHJpbWFyeSBzcXVlZXplIGFjdGlvbiBpcyBk
aXNjb25uZWN0ZWQuCisgICAgICAgIGlmIChtX3NxdWVlemVTdGFydGVkKQorICAgICAgICAgICAg
ZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZWVuZEV2ZW50KSk7
CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdl
Yi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyN4ci1zdGFuZGFyZC1nYW1lcGFkLW1h
cHBpbmcKKyAgICAvLyBCdXR0b24gaW5kaWNlcyBhcmUgYmFzZWQgb24gdGhlIHhyLXN0YW5kYXJk
IGxheW91dC4KKyAgICBib29sIHNlbGVjdFN0YXJ0ZWQgPSAhbV9zb3VyY2UuYnV0dG9ucy5pc0Vt
cHR5KCkgJiYgbV9zb3VyY2UuYnV0dG9ucy5maXJzdCgpLnByZXNzZWQ7CisgICAgYm9vbCBzcXVl
ZXplU3RhcnRlZCA9IG1fc291cmNlLmJ1dHRvbnMuc2l6ZSgpID4gMSAmJiBtX3NvdXJjZS5idXR0
b25zWzFdLnByZXNzZWQ7CisKKyAgICBpZiAoc2VsZWN0U3RhcnRlZCAhPSBtX3NlbGVjdFN0YXJ0
ZWQpIHsKKyAgICAgICAgaWYgKHNlbGVjdFN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIC8vIEEgdXNl
ciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0c3RhcnQgZXZlbnQgb24gYW4gWFJTZXNzaW9u
IHdoZW4gb25lIG9mIGl0cyBYUklucHV0U291cmNlcyBiZWdpbnMgaXRzIHByaW1hcnkgYWN0aW9u
LgorICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc2Vs
ZWN0c3RhcnRFdmVudCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQSB1c2Vy
IGFnZW50IE1VU1QgZGlzcGF0Y2ggYSBzZWxlY3RlbmQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdo
ZW4gb25lIG9mIGl0cyBYUklucHV0U291cmNlcyBlbmRzIGl0cyBwcmltYXJ5IGFjdGlvbi4KKyAg
ICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0IGV2ZW50IG9u
IGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgaGFzIGZ1bGx5IGNv
bXBsZXRlZCBhIHByaW1hcnkgYWN0aW9uCisgICAgICAgICAgICBldmVudHMuYXBwZW5kKGNyZWF0
ZUV2ZW50KGV2ZW50TmFtZXMoKS5zZWxlY3RFdmVudCkpOworICAgICAgICAgICAgZXZlbnRzLmFw
cGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc2VsZWN0ZW5kRXZlbnQpKTsKKyAgICAgICAg
fQorICAgICAgICBtX3NlbGVjdFN0YXJ0ZWQgPSBzZWxlY3RTdGFydGVkOworICAgIH0KKworICAg
IGlmIChzcXVlZXplU3RhcnRlZCAhPSBtX3NxdWVlemVTdGFydGVkKSB7CisgICAgICAgIGlmIChz
cXVlZXplU3RhcnRlZCkgeworICAgICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0
Y2ggYSBzcXVlZXplc3RhcnQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBY
UklucHV0U291cmNlcyBiZWdpbnMgaXRzIHByaW1hcnkgc3F1ZWV6ZSBhY3Rpb24uCisgICAgICAg
ICAgICBldmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5zcXVlZXplc3RhcnRF
dmVudCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1V
U1QgZGlzcGF0Y2ggYSBzZWxlY3RlbmQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9m
IGl0cyBYUklucHV0U291cmNlcyBlbmRzIGl0cyBwcmltYXJ5IHNxdWVlemUgYWN0aW9uLgorICAg
ICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYSBzZWxlY3QgZXZlbnQgb24g
YW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBYUklucHV0U291cmNlcyBoYXMgZnVsbHkgY29t
cGxldGVkIGEgcHJpbWFyeSBzcXVlZXplIGFjdGlvbi4KKyAgICAgICAgICAgIGV2ZW50cy5hcHBl
bmQoY3JlYXRlRXZlbnQoZXZlbnROYW1lcygpLnNxdWVlemVFdmVudCkpOworICAgICAgICAgICAg
ZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZWVuZEV2ZW50KSk7
CisgICAgICAgIH0KKyAgICAgICAgbV9zcXVlZXplU3RhcnRlZCA9IHNxdWVlemVTdGFydGVkOwor
ICAgIH0KIH0KIAotY29uc3QgVmVjdG9yPFN0cmluZz4mIFdlYlhSSW5wdXRTb3VyY2U6OnByb2Zp
bGVzKCkgY29uc3QKK1JlZjxYUklucHV0U291cmNlRXZlbnQ+IFdlYlhSSW5wdXRTb3VyY2U6OmNy
ZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIG1fcHJvZmls
ZXM7CisgICAgWFJJbnB1dFNvdXJjZUV2ZW50OjpJbml0IGluaXQ7CisgICAgaW5pdC5mcmFtZSA9
IFdlYlhSRnJhbWU6OmNyZWF0ZShtX3Nlc3Npb24uY29weVJlZigpLCBXZWJYUkZyYW1lOjpJc0Fu
aW1hdGlvbkZyYW1lOjpObyk7CisgICAgaW5pdC5pbnB1dFNvdXJjZSA9IG1ha2VSZWZQdHIoKnRo
aXMpOworCisgICAgcmV0dXJuIFhSSW5wdXRTb3VyY2VFdmVudDo6Y3JlYXRlKG5hbWUsIGluaXQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5oCmluZGV4IDY4YzI5YWIxY2RiOTA2ZGJlMTRiYjk0
OTJhYjJmZDg4YjQxZDQxMTIuLmNiMDMxMGZhNjhiYjY3MzEyZjU0NTcyZDQ4YjdhYjEyYjkxZDg5
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJj
ZS5oCkBAIC0yNyw2ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJQ
bGF0Zm9ybVhSLmgiCisjaW5jbHVkZSAiV2ViWFJHYW1lcGFkLmgiCisjaW5jbHVkZSAiV2ViWFJJ
bnB1dFNwYWNlLmgiCiAjaW5jbHVkZSAiWFJIYW5kZWRuZXNzLmgiCiAjaW5jbHVkZSAiWFJUYXJn
ZXRSYXlNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgpAQCAtMzgsMjcgKzQxLDU1
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViWFJTcGFjZTsKKyNpZiBFTkFC
TEUoR0FNRVBBRCkKK2NsYXNzIEdhbWVwYWQ7CisjZW5kaWYKK2NsYXNzIFhSSW5wdXRTb3VyY2VF
dmVudDsKK2NsYXNzIFdlYlhSSW5wdXRTcGFjZTsKIAogY2xhc3MgV2ViWFJJbnB1dFNvdXJjZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSW5wdXRTb3VyY2U+IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFdlYlhSSW5wdXRTb3VyY2UpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
WFJJbnB1dFNvdXJjZT4gY3JlYXRlKFJlZjxXZWJYUlNwYWNlPiYmKTsKKyAgICB1c2luZyBJbnB1
dFNvdXJjZSA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZTsKKyAg
ICB1c2luZyBJbnB1dFNvdXJjZUJ1dHRvbiA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZUJ1dHRvbjsKKworICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJjZT4g
Y3JlYXRlKFJlZjxEb2N1bWVudD4mJiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgZG91YmxlIHRpbWVz
dGFtcCwgY29uc3QgSW5wdXRTb3VyY2UmKTsKICAgICB+V2ViWFJJbnB1dFNvdXJjZSgpOwogCi0g
ICAgWFJIYW5kZWRuZXNzIGhhbmRlZG5lc3MoKSBjb25zdDsKLSAgICBYUlRhcmdldFJheU1vZGUg
dGFyZ2V0UmF5TW9kZSgpIGNvbnN0OwotICAgIGNvbnN0IFdlYlhSU3BhY2UmIHRhcmdldFJheVNw
YWNlKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFdlYlhSU3BhY2U+IGdyaXBTcGFjZSgpIGNvbnN0Owot
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm9maWxlcygpIGNvbnN0OworICAgIFBsYXRmb3Jt
WFI6OklucHV0U291cmNlSGFuZGxlIGhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmhh
bmRsZTsgfQorICAgIFhSSGFuZGVkbmVzcyBoYW5kZWRuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2UuaGFuZGVuZXNzOyB9CisgICAgWFJUYXJnZXRSYXlNb2RlIHRhcmdldFJheU1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZS50YXJnZXRSYXlNb2RlOyB9OworICAgIGNvbnN0IFdlYlhS
U3BhY2UmIHRhcmdldFJheVNwYWNlKCkgY29uc3Qge3JldHVybiBtX3RhcmdldFJheVNwYWNlLmdl
dCgpOyB9OworICAgIFJlZlB0cjxXZWJYUlNwYWNlPiBncmlwU3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX2dyaXBTcGFjZTsgfQorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm9maWxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlLnByb2ZpbGVzOyB9OworI2lmIEVOQUJMRShHQU1FUEFEKQor
ICAgIGNvbnN0IEdhbWVwYWQqIGdhbWVwYWQoKSBjb25zdCB7IHJldHVybiBtX2dhbWVwYWQucHRy
KCk7IH0KKyNlbmRpZgorCisgICAgdm9pZCB1cGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgY29uc3Qg
SW5wdXRTb3VyY2UmKTsKKyAgICBib29sIHJlcXVpcmVzSW5wdXRTb3VyY2VDaGFuZ2UoY29uc3Qg
SW5wdXRTb3VyY2UmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKKyAgICAKKyAgICB2b2lkIHBv
bGxFdmVudHMoVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYpOwogCiBwcml2YXRlOgot
ICAgIFdlYlhSSW5wdXRTb3VyY2UoUmVmPFdlYlhSU3BhY2U+JiYpOworICAgIFdlYlhSSW5wdXRT
b3VyY2UoUmVmPERvY3VtZW50PiYmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBkb3VibGUgdGltZXN0
YW1wLCBjb25zdCBJbnB1dFNvdXJjZSYpOworCisgICAgUmVmPFhSSW5wdXRTb3VyY2VFdmVudD4g
Y3JlYXRlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYpOworCisgICAgUmVmPERvY3VtZW50PiBtX2Rv
Y3VtZW50OworICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBJbnB1dFNvdXJj
ZSBtX3NvdXJjZTsKKyAgICBSZWY8V2ViWFJJbnB1dFNwYWNlPiBtX3RhcmdldFJheVNwYWNlOwor
ICAgIFJlZlB0cjxXZWJYUklucHV0U3BhY2U+IG1fZ3JpcFNwYWNlOworICAgIGRvdWJsZSBtX2Nv
bm5lY3RUaW1lIHsgMCB9OworICAgIGJvb2wgbV9jb25uZWN0ZWQgeyB0cnVlIH07CisjaWYgRU5B
QkxFKEdBTUVQQUQpCisgICAgUmVmPEdhbWVwYWQ+IG1fZ2FtZXBhZDsKKyNlbmRpZgogCi0gICAg
WFJIYW5kZWRuZXNzIG1faGFuZGVkbmVzczsKLSAgICBYUlRhcmdldFJheU1vZGUgbV90YXJnZXRS
YXlNb2RlOwotICAgIFJlZjxXZWJYUlNwYWNlPiBtX3RhcmdldFJheVNwYWNlOwotICAgIFZlY3Rv
cjxTdHJpbmc+IG1fcHJvZmlsZXM7CisgICAgYm9vbCBtX3NlbGVjdFN0YXJ0ZWQgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9zcXVlZXplU3RhcnRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSW5wdXRTb3VyY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklu
cHV0U291cmNlLmlkbAppbmRleCAwNDU5ZjNmZTQ3MDc1MjExMzdiZjUzZjFhMzQ0ZWRkZDk4ZWJk
MzY5Li44ZDIxOTA2NTY1N2EyZjNlZTM2ODMzZWQ4ZWE1NDI4YTIyNGE1YTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5pZGwKQEAgLTM1
LDUgKzM1LDggQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgWFJUYXJnZXRSYXlNb2RlIHRhcmdl
dFJheU1vZGUgOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJTcGFj
ZSB0YXJnZXRSYXlTcGFjZTsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdl
YlhSU3BhY2U/IGdyaXBTcGFjZSA7Ci0gICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBGcm96ZW5BcnJheTxET01TdHJpbmc+IHByb2ZpbGVzOworICAgIFtDYWNoZWRBdHRyaWJ1dGUs
IFNhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxET01TdHJpbmc+IHBy
b2ZpbGVzOworCisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1n
YW1lcGFkcy1tb2R1bGUvI3hyaW5wdXRzb3VyY2UtaW50ZXJmYWNlCisgICAgW0NvbmRpdGlvbmFs
PUdBTUVQQUQsIFNhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBHYW1lcGFkPyBnYW1lcGFk
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1
dFNvdXJjZUFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1
dFNvdXJjZUFycmF5LmNwcAppbmRleCBjNGMwODU1MzJiY2Q5YWFjMjczODA5MGJmYTNmZGRmZWE0
MzM1NWQzLi5jZmQ1MWJkZmQ0OTIyMDA3ZDgyOGUwYWZkMzVhYmRhZDU2ZGY2M2RjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJy
YXkuY3BwCkBAIC0yNywyMSArMjcsMTU1IEBACiAjaW5jbHVkZSAiV2ViWFJJbnB1dFNvdXJjZUFy
cmF5LmgiCiAKICNpZiBFTkFCTEUoV0VCWFIpCi0KKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSAiV2ViWFJJbnB1dFNvdXJjZS5oIgorI2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgor
I2luY2x1ZGUgIlhSSW5wdXRTb3VyY2VFdmVudC5oIgorI2luY2x1ZGUgIlhSSW5wdXRTb3VyY2Vz
Q2hhbmdlRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUklucHV0
U291cmNlQXJyYXkpOwogCitSZWY8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBXZWJYUklucHV0U291
cmNlQXJyYXk6OmNyZWF0ZShSZWY8RG9jdW1lbnQ+JiYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Np
b24+JiYgc2Vzc2lvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U291
cmNlQXJyYXkoV1RGTW92ZShkb2N1bWVudCksIFdURk1vdmUoc2Vzc2lvbikpKTsKK30KKworV2Vi
WFJJbnB1dFNvdXJjZUFycmF5OjpXZWJYUklucHV0U291cmNlQXJyYXkoUmVmPERvY3VtZW50PiYm
IGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCisgICAgOiBtX2RvY3VtZW50
KFdURk1vdmUoZG9jdW1lbnQpKQorICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCit7
Cit9CisKK1dlYlhSSW5wdXRTb3VyY2VBcnJheTo6fldlYlhSSW5wdXRTb3VyY2VBcnJheSgpID0g
ZGVmYXVsdDsKKwogdW5zaWduZWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpsZW5ndGgoKSBjb25z
dAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2lucHV0U291cmNlcy5zaXplKCk7Cit9
CisKK1dlYlhSSW5wdXRTb3VyY2UqIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6aXRlbSh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPj0gbV9pbnB1dFNvdXJjZXMuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9pbnB1dFNvdXJjZXNbaW5k
ZXhdLnB0cigpOworfQorCit2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y2xlYXIoKQorewor
ICAgIG1faW5wdXRTb3VyY2VzLmNsZWFyKCk7CiB9CiAKLVdlYlhSSW5wdXRTb3VyY2UqIFdlYlhS
SW5wdXRTb3VyY2VBcnJheTo6aXRlbSh1bnNpZ25lZCkgY29uc3QKKy8vIGh0dHBzOi8vaW1tZXJz
aXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2xpc3Qtb2YtYWN0aXZlLXhyLWlucHV0LXNvdXJjZXMK
K3ZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5Ojp1cGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgY29u
c3QgSW5wdXRTb3VyY2VMaXN0JiBpbnB1dFNvdXJjZXMpCiB7Ci0gICAgcmV0dXJuIG51bGxwdHI7
CisgICAgVmVjdG9yPFJlZjxXZWJYUklucHV0U291cmNlPj4gYWRkZWQ7CisgICAgVmVjdG9yPFJl
ZjxXZWJYUklucHV0U291cmNlPj4gcmVtb3ZlZDsKKyAgICBWZWN0b3I8UmVmPFhSSW5wdXRTb3Vy
Y2VFdmVudD4+IGlucHV0RXZlbnRzOworCisgICAgaGFuZGxlUmVtb3ZlZElucHV0U291cmNlcyhp
bnB1dFNvdXJjZXMsIHJlbW92ZWQsIGlucHV0RXZlbnRzKTsKKyAgICBoYW5kbGVBZGRlZE9yVXBk
YXRlZElucHV0U291cmNlcyh0aW1lc3RhbXAsIGlucHV0U291cmNlcywgYWRkZWQsIHJlbW92ZWQs
IGlucHV0RXZlbnRzKTsKKworICAgIGlmICghYWRkZWQuaXNFbXB0eSgpIHx8ICFyZW1vdmVkLmlz
RW1wdHkoKSkgeworICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhbiBpbnB1
dHNvdXJjZXNjaGFuZ2UgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gdGhlIHNlc3Npb27igJlz
IGxpc3Qgb2YgYWN0aXZlIFhSIGlucHV0IHNvdXJjZXMgaGFzIGNoYW5nZWQuCisgICAgICAgIFhS
SW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQ6OkluaXQgaW5pdDsKKyAgICAgICAgaW5pdC5zZXNzaW9u
ID0gbV9zZXNzaW9uLmNvcHlSZWYoKTsKKyAgICAgICAgaW5pdC5hZGRlZCA9IGFkZGVkLm1hcChb
XShhdXRvJiBpbnB1dCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoaW5wdXQuZ2V0
KCkpOworICAgICAgICB9KTsKKyAgICAgICAgaW5pdC5yZW1vdmVkID0gcmVtb3ZlZC5tYXAoW10o
YXV0byYgaW5wdXQpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKGlucHV0LmdldCgp
KTsKKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGV2ZW50ID0gWFJJbnB1dFNv
dXJjZXNDaGFuZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnB1dHNvdXJjZXNjaGFuZ2VF
dmVudCwgaW5pdCk7CisgICAgICAgIG1fc2Vzc2lvbi0+cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50
KG1fc2Vzc2lvbi5nZXQoKSwgVGFza1NvdXJjZTo6V2ViWFIsIFdURk1vdmUoZXZlbnQpKTsKKyAg
ICB9CisKKyAgICBpZiAoIWlucHV0RXZlbnRzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBXaGVu
IHRoZSB1c2VyIGFnZW50IGhhcyB0byBmaXJlIGFuIGlucHV0IHNvdXJjZSBldmVudCB3aXRoIG5h
bWUgbmFtZSwgWFJGcmFtZSBmcmFtZSwgYW5kIFhSSW5wdXRTb3VyY2Ugc291cmNlIGl0IE1VU1Qg
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIC8vIDEuIENyZWF0ZSBhbiBYUklucHV0
U291cmNlRXZlbnQgZXZlbnQgd2l0aCB0eXBlIG5hbWUsIGZyYW1lIGZyYW1lLCBhbmQgaW5wdXRT
b3VyY2Ugc291cmNlLgorICAgICAgICAvLyAyLiBTZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFu
IHRvIHRydWUuCisgICAgICAgIC8vIDMuIEFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZyYW1lLgor
ICAgICAgICAvLyA0LiBEaXNwYXRjaCBldmVudCBvbiBmcmFtZeKAmXMgc2Vzc2lvbgorICAgICAg
ICAvLyA1LiBTZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIHRvIGZhbHNlLgorCisgICAgICAg
IGZvciAoYXV0byYgZXZlbnQgOiBpbnB1dEV2ZW50cykgeworICAgICAgICAgICAgZXZlbnQtPnNl
dEZyYW1lQWN0aXZlKHRydWUpOworICAgICAgICAgICAgbV9zZXNzaW9uLT5xdWV1ZVRhc2tUb0Rp
c3BhdGNoRXZlbnQobV9zZXNzaW9uLmdldCgpLCBUYXNrU291cmNlOjpXZWJYUiwgZXZlbnQuY29w
eVJlZigpKTsKKyAgICAgICAgICAgIG1fc2Vzc2lvbi0+cXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKG1fc2Vzc2lvbi5nZXQoKSwgVGFza1NvdXJjZTo6V2ViWFIsIFtldmVudCA9IFdURk1vdmUo
ZXZlbnQpXSgpIHsKKyAgICAgICAgICAgICAgICBldmVudC0+c2V0RnJhbWVBY3RpdmUoZmFsc2Up
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIGh0dHBzOi8vaW1t
ZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2xpc3Qtb2YtYWN0aXZlLXhyLWlucHV0LXNvdXJj
ZXMKK3ZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVSZW1vdmVkSW5wdXRTb3VyY2Vz
KGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3VyY2VzLCBWZWN0b3I8UmVmPFdlYlhSSW5w
dXRTb3VyY2U+PiYgcmVtb3ZlZCwgVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYgaW5w
dXRFdmVudHMpCit7CisgICAgLy8gV2hlbiBhbnkgcHJldmlvdXNseSBhZGRlZCBYUiBpbnB1dCBz
b3VyY2VzIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlIGZvciBYUlNlc3Npb24gc2Vzc2lvbiwgdGhl
IHVzZXIgYWdlbnQgTVVTVCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLiBJZiBz
ZXNzaW9uJ3MgcHJvbWlzZSByZXNvbHZlZCBmbGFnIGlzIG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0
ZXBzLgorICAgIC8vIDIuIExldCByZW1vdmVkIGJlIGEgbmV3IGxpc3QuCisgICAgLy8gMy4gRm9y
IGVhY2ggWFIgaW5wdXQgc291cmNlIHRoYXQgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZToKKyAgICAv
LyAgMy4xIExldCBpbnB1dFNvdXJjZSBiZSB0aGUgWFJJbnB1dFNvdXJjZSBpbiBzZXNzaW9uJ3Mg
bGlzdCBvZiBhY3RpdmUgWFIgaW5wdXQgc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIFhSIGlu
cHV0IHNvdXJjZS4KKyAgICAvLyAgMy4yIEFkZCBpbnB1dFNvdXJjZSB0byByZW1vdmVkLgorICAg
IG1faW5wdXRTb3VyY2VzLnJlbW92ZUFsbE1hdGNoaW5nKFt0aGlzLCAmaW5wdXRTb3VyY2VzLCAm
cmVtb3ZlZCwgJmlucHV0RXZlbnRzXShhdXRvJiBzb3VyY2UpIHsKKyAgICAgICAgaWYgKGlucHV0
U291cmNlcy5maW5kTWF0Y2hpbmcoWyZzb3VyY2VdKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0u
aGFuZGxlID09IHNvdXJjZS0+aGFuZGxlKCk7IH0pID09IFdURjo6bm90Rm91bmQpIHsKKyAgICAg
ICAgICAgIHJlbW92ZWQuYXBwZW5kKHNvdXJjZS5jb3B5UmVmKCkpOworICAgICAgICAgICAgc291
cmNlLT5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICBzb3VyY2UtPnBvbGxFdmVudHMoaW5wdXRF
dmVudHMpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0pOworfQorCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHVi
LmlvL3dlYnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1zb3VyY2VzCit2b2lkIFdlYlhSSW5w
dXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMoZG91YmxlIHRp
bWVzdGFtcCwgY29uc3QgSW5wdXRTb3VyY2VMaXN0JiBpbnB1dFNvdXJjZXMsIFZlY3RvcjxSZWY8
V2ViWFJJbnB1dFNvdXJjZT4+JiBhZGRlZCwgVmVjdG9yPFJlZjxXZWJYUklucHV0U291cmNlPj4m
IHJlbW92ZWQsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mIGlucHV0RXZlbnRzKQor
eworICAgIGZvciAoYXV0byYgaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpIHsKKyAgICAgICAg
YXV0byBpbmRleCA9IG1faW5wdXRTb3VyY2VzLmZpbmRNYXRjaGluZyhbJmlucHV0U291cmNlXShh
dXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5oYW5kbGUoKSA9PSBpbnB1dFNvdXJjZS5oYW5kbGU7
IH0pOworICAgICAgICBpZiAoaW5kZXggPT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICAgICAg
Ly8gV2hlbiBuZXcgWFIgaW5wdXQgc291cmNlcyBiZWNvbWUgYXZhaWxhYmxlIGZvciBYUlNlc3Np
b24gc2Vzc2lvbiwgdGhlIHVzZXIgYWdlbnQgTVVTVCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
KyAgICAgICAgICAgIC8vIDEuIElmIHNlc3Npb24ncyBwcm9taXNlIHJlc29sdmVkIGZsYWcgaXMg
bm90IHNldCwgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgICAgICAgICAvLyAyLiBMZXQgYWRkZWQg
YmUgYSBuZXcgbGlzdC4KKyAgICAgICAgICAgIC8vIDMuIEZvciBlYWNoIG5ldyBYUiBpbnB1dCBz
b3VyY2U6CisgICAgICAgICAgICAvLyAgIDMuMSBMZXQgaW5wdXRTb3VyY2UgYmUgYSBuZXcgWFJJ
bnB1dFNvdXJjZSBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2YgdGhpcyBYUlNlc3Npb24uCisgICAg
ICAgICAgICAvLyAgIDMuMiBBZGQgaW5wdXRTb3VyY2UgdG8gYWRkZWQuCisgICAgICAgICAgICBh
dXRvIGlucHV0ID0gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKG1fZG9jdW1lbnQuY29weVJlZigp
LCBtX3Nlc3Npb24uY29weVJlZigpLCB0aW1lc3RhbXAsIGlucHV0U291cmNlKTsKKyAgICAgICAg
ICAgIGFkZGVkLmFwcGVuZChpbnB1dC5jb3B5UmVmKCkpOworICAgICAgICAgICAgaW5wdXQtPnBv
bGxFdmVudHMoaW5wdXRFdmVudHMpOworICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXMuYXBwZW5k
KFdURk1vdmUoaW5wdXQpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gV2hlbiB0aGUgaGFuZGVkbmVzcywgdGFyZ2V0UmF5TW9kZSwgcHJvZmlsZXMsIG9y
IHByZXNlbmNlIG9mIGEgZ3JpcFNwYWNlIGZvciBhbnkgWFIgaW5wdXQgc291cmNlcyBjaGFuZ2Ug
Zm9yIFhSU2Vzc2lvbiBzZXNzaW9uLCB0aGUgdXNlciBhZ2VudCBNVVNUIHJ1biB0aGUgZm9sbG93
aW5nIHN0ZXBzCisgICAgICAgIC8vIDEuIElmIHNlc3Npb27igJlzIHByb21pc2UgcmVzb2x2ZWQg
ZmxhZyBpcyBub3Qgc2V0LCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAgICAgLy8gMi4gTGV0IGFk
ZGVkIGJlIGEgbmV3IGxpc3QuCisgICAgICAgIC8vIDMuIExldCByZW1vdmVkIGJlIGEgbmV3IGxp
c3QuCisgICAgICAgIC8vIDQuIEZvciBlYWNoIGNoYW5nZWQgWFIgaW5wdXQgc291cmNlOgorICAg
ICAgICAvLyAgNC4xIExldCBvbGRJbnB1dFNvdXJjZSBiZSB0aGUgWFJJbnB1dFNvdXJjZSBpbiBz
ZXNzaW9uJ3MgbGlzdCBvZiBhY3RpdmUgWFIgaW5wdXQgc291cmNlcyBwcmV2aW91c2x5IGFzc29j
aWF0ZWQgd2l0aCB0aGUgWFIgaW5wdXQgc291cmNlLgorICAgICAgICAvLyAgNC4xIExldCBuZXdJ
bnB1dFNvdXJjZSBiZSBhIG5ldyBYUklucHV0U291cmNlIGluIHRoZSByZWxldmFudCByZWFsbSBv
ZiBzZXNzaW9uLgorICAgICAgICAvLyAgNC4xIEFkZCBvbGRJbnB1dFNvdXJjZSB0byByZW1vdmVk
LgorICAgICAgICAvLyAgNC4xIEFkZCBuZXdJbnB1dFNvdXJjZSB0byBhZGRlZC4KKyAgICAgICAg
YXV0byYgaW5wdXQgPSBtX2lucHV0U291cmNlc1tpbmRleF07CisKKyAgICAgICAgaWYgKGlucHV0
LT5yZXF1aXJlc0lucHV0U291cmNlQ2hhbmdlKGlucHV0U291cmNlKSkgeworICAgICAgICAgICAg
cmVtb3ZlZC5hcHBlbmQoaW5wdXQuY29weVJlZigpKTsKKyAgICAgICAgICAgIGlucHV0LT5kaXNj
b25uZWN0KCk7CisgICAgICAgICAgICBpbnB1dC0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7Cisg
ICAgICAgICAgICBtX2lucHV0U291cmNlcy5yZW1vdmUoaW5kZXgpOworCisgICAgICAgICAgICBh
dXRvIG5ld0lucHV0U291cmNlID0gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKG1fZG9jdW1lbnQu
Y29weVJlZigpLCBtX3Nlc3Npb24uY29weVJlZigpLCB0aW1lc3RhbXAsIGlucHV0U291cmNlKTsK
KyAgICAgICAgICAgIGFkZGVkLmFwcGVuZChuZXdJbnB1dFNvdXJjZS5jb3B5UmVmKCkpOworICAg
ICAgICAgICAgbmV3SW5wdXRTb3VyY2UtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOworICAgICAg
ICAgICAgbV9pbnB1dFNvdXJjZXMuYXBwZW5kKFdURk1vdmUobmV3SW5wdXRTb3VyY2UpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlucHV0LT51cGRhdGUodGltZXN0YW1wLCBpbnB1
dFNvdXJjZSk7CisgICAgICAgICAgICBpbnB1dC0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7Cisg
ICAgICAgIH0KKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oCmluZGV4
IDQzYjlkMWEwZmYxZWU1N2Q1OTRkZWY5MjEzYzA2MzA4ODM4MzZkNjIuLmI3NzViYTk2ZTJhMWEw
ZWEyYTVkMjY1ZWUxODM0ZmQ3NWFiNTgwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaApAQCAtMjcsMjUgKzI3LDQwIEBA
CiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50Owog
Y2xhc3MgV2ViWFJJbnB1dFNvdXJjZTsKK2NsYXNzIFhSSW5wdXRTb3VyY2VFdmVudDsKK2NsYXNz
IFdlYlhSU2Vzc2lvbjsKIAogY2xhc3MgV2ViWFJJbnB1dFNvdXJjZUFycmF5IDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChXZWJYUklucHV0U291cmNlQXJyYXkpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
WFJJbnB1dFNvdXJjZUFycmF5PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhS
SW5wdXRTb3VyY2VBcnJheSgpKTsgfQotICAgIH5XZWJYUklucHV0U291cmNlQXJyYXkoKSA9IGRl
ZmF1bHQ7CisgICAgdXNpbmcgSW5wdXRTb3VyY2VMaXN0ID0gVmVjdG9yPFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZT47CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0
U291cmNlQXJyYXk+IGNyZWF0ZShSZWY8RG9jdW1lbnQ+JiYsIFJlZjxXZWJYUlNlc3Npb24+JiYp
OworICAgIH5XZWJYUklucHV0U291cmNlQXJyYXkoKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0OwogICAgIFdlYlhSSW5wdXRTb3VyY2UqIGl0ZW0odW5zaWduZWQpIGNvbnN0OwogCisg
ICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgdXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0
IElucHV0U291cmNlTGlzdCYpOworCiBwcml2YXRlOgotICAgIFdlYlhSSW5wdXRTb3VyY2VBcnJh
eSgpID0gZGVmYXVsdDsKKyAgICBXZWJYUklucHV0U291cmNlQXJyYXkoUmVmPERvY3VtZW50PiYm
LCBSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKworICAgIHZvaWQgaGFuZGxlUmVtb3ZlZElucHV0U291
cmNlcyhjb25zdCBJbnB1dFNvdXJjZUxpc3QmLCBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+
PiYsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mKTsKKyAgICB2b2lkIGhhbmRsZUFk
ZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291
cmNlTGlzdCYsIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+JiwgVmVjdG9yPFJlZjxXZWJY
UklucHV0U291cmNlPj4mLCBWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+Jik7CisKKyAg
ICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNz
aW9uOworICAgIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+IG1faW5wdXRTb3VyY2VzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3N2NhNTIzNzJhNGVjYjU2
ZmU0NjcxZGQ3NmU1NDUxODM1ZGRkZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViWFJJbnB1dFNwYWNl
LmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCisjaW5j
bHVkZSAiV2ViWFJSaWdpZFRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgor
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSW5wdXRTcGFjZSk7CisKKy8vIFdl
YlhSSW5wdXRTcGFjZQorCitSZWY8V2ViWFJJbnB1dFNwYWNlPiBXZWJYUklucHV0U3BhY2U6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U3BhY2UoZG9jdW1lbnQsIFdU
Rk1vdmUoc2Vzc2lvbiksIHBvc2UpKTsKK30KKworV2ViWFJJbnB1dFNwYWNlOjpXZWJYUklucHV0
U3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIGNv
bnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmIHBvc2Up
CisgICAgOiBXZWJYUlNwYWNlKGRvY3VtZW50LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUo
KSkKKyAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9wb3NlKHBvc2Up
Cit7Cit9CisKK1dlYlhSSW5wdXRTcGFjZTo6fldlYlhSSW5wdXRTcGFjZSgpID0gZGVmYXVsdDsK
KworVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJJbnB1dFNwYWNlOjpuYXRpdmVPcmlnaW4oKSBj
b25zdAoreworICAgIHJldHVybiBXZWJYUkZyYW1lOjptYXRyaXhGcm9tUG9zZShtX3Bvc2UucG9z
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJY
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNw
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ5NWE4Yzg1YjA5NTk0ZDY1N2MzZTYzY2IxN2FmMDMxYWNhN2JhNjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFj
ZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMu
TC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJXZWJYUlNwYWNlLmgiCisjaW5jbHVkZSAiWFJIYW5k
ZWRuZXNzLmgiCisjaW5jbHVkZSAiWFJUYXJnZXRSYXlNb2RlLmgiCisjaW5jbHVkZSA8d3RmL0lz
b01hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgV2ViWFJJbnB1dFNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJJ
bnB1dFNwYWNlPiwgcHVibGljIFdlYlhSU3BhY2UgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoV2ViWFJJbnB1dFNwYWNlKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRT
cGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgY29uc3QgUGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYpOworICAgIHZpcnR1YWwg
fldlYlhSSW5wdXRTcGFjZSgpOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJYUklucHV0U3Bh
Y2U+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJYUklucHV0U3BhY2U+OjpkZXJlZjsK
KworICAgIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
b3NlLmlzUG9zaXRpb25FbXVsYXRlZDsgfQorICAgIHZvaWQgc2V0UG9zZShjb25zdCBQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKSB7IG1fcG9zZSA9
IHBvc2U7IH0KKworcHJpdmF0ZToKKyAgICBXZWJYUklucHV0U3BhY2UoRG9jdW1lbnQmLCBSZWY8
V2ViWFJTZXNzaW9uPiYmLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2VQb3NlJik7CisgICAgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0
aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmlu
YWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYo
KTsgfQorCisgICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UgbV9wb3NlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmluZGV4IGRlYjRhNTkwZTc5Y2Qy
YjBkMGY4MzA0M2RlNzA0ZDE0NjE3ZTAyOWIuLmE4MWZkNTg2MWMyZWZjZjY2MDkwNjI0YmRkOWY1
NWRjYTYwZGFiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vz
c2lvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgUmVmPFdlYlhSU2Vzc2lvbj4gV2ViWFJTZXNzaW9u
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLAogCiBXZWJY
UlNlc3Npb246OldlYlhSU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU3lzdGVtJiBz
eXN0ZW0sIFhSU2Vzc2lvbk1vZGUgbW9kZSwgUGxhdGZvcm1YUjo6RGV2aWNlJiBkZXZpY2UsIEZl
YXR1cmVMaXN0JiYgcmVxdWVzdGVkRmVhdHVyZXMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmRv
Y3VtZW50KQotICAgICwgbV9pbnB1dFNvdXJjZXMoV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVh
dGUoKSkKKyAgICAsIG1faW5wdXRTb3VyY2VzKFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRl
KGRvY3VtZW50LCAqdGhpcykpCiAgICAgLCBtX3hyU3lzdGVtKHN5c3RlbSkKICAgICAsIG1fbW9k
ZShtb2RlKQogICAgICwgbV9kZXZpY2UobWFrZVdlYWtQdHIoZGV2aWNlKSkKQEAgLTYyLDggKzYy
LDggQEAgV2ViWFJTZXNzaW9uOjpXZWJYUlNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJY
UlN5c3RlbSYgc3lzdGVtLCBYUlNlc3Npb25Nb2QKICAgICAsIG1fdGltZU9yaWdpbihNb25vdG9u
aWNUaW1lOjpub3coKSkKICAgICAsIG1fdmlld3MoZGV2aWNlLnZpZXdzKG1vZGUpKQogewotICAg
IG1fZGV2aWNlLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcobW9kZSk7CiAgICAgbV9k
ZXZpY2UtPnNldFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KG1ha2VXZWFrUHRyKCp0aGlzKSk7
CisgICAgbV9kZXZpY2UtPmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhtb2RlKTsKIAog
ICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3JlZi1mb3ItZG9t
LXhycmVmZXJlbmNlc3BhY2V0eXBlLXZpZXdlciVFMiU5MSVBMgogICAgIC8vIEV2ZXJ5IHNlc3Np
b24gTVVTVCBzdXBwb3J0IHZpZXdlciBYUlJlZmVyZW5jZVNwYWNlcy4KQEAgLTMxNSw2ICszMTUs
MTEgQEAgYm9vbCBXZWJYUlNlc3Npb246OnN1cHBvcnRzVmlld3BvcnRTY2FsaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gbV9tb2RlID09IFhSU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyICYmIG1fZGV2
aWNlLT5zdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpOwogfQogCitib29sIFdlYlhSU2Vzc2lvbjo6
aXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZURhdGEuaXNQ
b3NpdGlvbkVtdWxhdGVkIHx8ICFtX2ZyYW1lRGF0YS5pc1Bvc2l0aW9uVmFsaWQ7Cit9CisKIC8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3NodXQtZG93bi10aGUtc2Vz
c2lvbgogdm9pZCBXZWJYUlNlc3Npb246OnNodXRkb3duKEluaXRpYXRlZEJ5U3lzdGVtIGluaXRp
YXRlZEJ5U3lzdGVtKQogewpAQCAtMzM4LDYgKzM0Myw4IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpz
aHV0ZG93bihJbml0aWF0ZWRCeVN5c3RlbSBpbml0aWF0ZWRCeVN5c3RlbSkKICAgICAvLyA0LiBS
ZW1vdmUgc2Vzc2lvbiBmcm9tIHRoZSBsaXN0IG9mIGlubGluZSBzZXNzaW9ucy4KICAgICBtX3hy
U3lzdGVtLnNlc3Npb25FbmRlZCgqdGhpcyk7CiAKKyAgICBtX2lucHV0U291cmNlcy0+Y2xlYXIo
KTsKKwogICAgIGlmIChpbml0aWF0ZWRCeVN5c3RlbSA9PSBJbml0aWF0ZWRCeVN5c3RlbTo6WWVz
KSB7CiAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGUgc2Vzc2lvbiB0ZXJtaW5hdGlvbiB3
YXMgdHJpZ2dlcmVkIGJ5IHRoZSBzeXN0ZW0gcmF0aGVyIHRoYW4KICAgICAgICAgLy8gdmlhIFhS
U2Vzc2lvbi5lbmQoKS4gU2luY2UgdGhlIHN5c3RlbSBoYXMgY29tcGxldGVkIHRoZSBzZXNzaW9u
IHNodXRkb3duLCB3ZSBjYW4KQEAgLTQxMSw2ICs0MTgsMjUgQEAgdm9pZCBXZWJYUlNlc3Npb246
OnN0b3AoKQogewogfQogCit2b2lkIFdlYlhSU2Vzc2lvbjo6c2Vzc2lvbkRpZEluaXRpYWxpemVJ
bnB1dFNvdXJjZXMoVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZT4mJiBpbnB1dFNvdXJjZXMpCit7CisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci8jZG9tLXhyc3lzdGVtLXJlcXVlc3RzZXNzaW9uCisgICAgLy8gNS40LjEw
IFF1ZXVlIGEgdGFzayB0byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6IE5PVEU6IFRoZXNl
IHN0ZXBzIGVuc3VyZSB0aGF0IGluaXRpYWwgaW5wdXRzb3VyY2VzY2hhbmdlCisgICAgLy8gZXZl
bnRzIG9jY3VyIGFmdGVyIHRoZSBpbml0aWFsIHNlc3Npb24gaXMgcmVzb2x2ZWQuCisgICAgLy8g
ICAgIDEuIFNldCBzZXNzaW9uJ3MgcHJvbWlzZSByZXNvbHZlZCBmbGFnIHRvIHRydWUuCisgICAg
Ly8gICAgIDIuIExldCBzb3VyY2VzIGJlIGFueSBleGlzdGluZyBpbnB1dCBzb3VyY2VzIGF0dGFj
aGVkIHRvIHNlc3Npb24uCisgICAgLy8gICAgIDMuIElmIHNvdXJjZXMgaXMgbm9uLWVtcHR5LCBw
ZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gICAgICAgIDEuIFNldCBzZXNzaW9u
J3MgbGlzdCBvZiBhY3RpdmUgWFIgaW5wdXQgc291cmNlcyB0byBzb3VyY2VzLgorICAgIC8vICAg
ICAgICAyLiBGaXJlIGFuIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQgbmFtZWQgaW5wdXRzb3Vy
Y2VzY2hhbmdlIG9uIHNlc3Npb24gd2l0aCBhZGRlZCBzZXQgdG8gc291cmNlcy4KKworICAgIGF1
dG8gdGltZXN0YW1wID0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV90aW1lT3JpZ2luKS5taWxs
aXNlY29uZHMoKTsKKworICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6V2ViWFIsIFt0aGlzLCB0aW1lc3RhbXAsIGlucHV0U291cmNlcyA9IFdURk1vdmUo
aW5wdXRTb3VyY2VzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnB1dEluaXRpYWxpemVkID0g
dHJ1ZTsKKyAgICAgICAgbV9pbnB1dFNvdXJjZXMtPnVwZGF0ZSh0aW1lc3RhbXAsIGlucHV0U291
cmNlcyk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViWFJTZXNzaW9uOjpzZXNzaW9uRGlkRW5kKCkK
IHsKICAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgYXMgYSByZXN1bHQgb2YgZmluaXNoaW5nIHRo
ZSBzaHV0ZG93biBpbml0aWF0ZWQKQEAgLTUyNyw2ICs1NTMsOSBAQCB2b2lkIFdlYlhSU2Vzc2lv
bjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkKICAg
ICAgICAgICAgIGZyYW1lLT5zZXRBY3RpdmUodHJ1ZSk7CiAKICAgICAgICAgICAgIC8vIDYuNC5B
cHBseSBmcmFtZSB1cGRhdGVzIGZvciBmcmFtZS4KKyAgICAgICAgICAgIGlmIChtX2lucHV0SW5p
dGlhbGl6ZWQpCisgICAgICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXMtPnVwZGF0ZShub3csIGZy
YW1lRGF0YS5pbnB1dFNvdXJjZXMpOworCiAgICAgICAgICAgICBmcmFtZS0+c2V0RnJhbWVEYXRh
KFdURk1vdmUoZnJhbWVEYXRhKSk7CiAKICAgICAgICAgICAgIC8vIDYuNS5Gb3IgZWFjaCBlbnRy
eSBpbiBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFt
ZSBjYWxsYmFja3MsIGluIG9yZGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTZXNzaW9uLmgKaW5kZXggMzEzZDhmYzBlMTU2OWI4MjlmZTk4MWU2MDg4NTU3N2NmMzY2NzEx
ZS4uOGVkNDFlMTcyYzlhN2RhZjc3Y2E0YWM2OGQxYTRmMTJhNTgxNWM5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC04NCw2ICs4NCw3IEBAIHB1
YmxpYzoKICAgICBJbnRTaXplIG5hdGl2ZVdlYkdMRnJhbWVidWZmZXJSZXNvbHV0aW9uKCkgY29u
c3Q7CiAgICAgSW50U2l6ZSByZWNvbW1lbmRlZFdlYkdMRnJhbWVidWZmZXJSZXNvbHV0aW9uKCkg
Y29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpIGNvbnN0OyAKKyAgICBi
b29sIGlzUG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0OwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OyB9CkBAIC0xMTEsNiArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBvdmVycmlk
ZTsKIAogICAgIC8vIFBsYXRmb3JtWFI6OlRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50CisgICAg
dm9pZCBzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyhWZWN0b3I8UGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiYmKSBmaW5hbDsKICAgICB2b2lkIHNlc3Np
b25EaWRFbmQoKSBmaW5hbDsKIAogICAgIGVudW0gY2xhc3MgSW5pdGlhdGVkQnlTeXN0ZW0gOiBi
b29sIHsgTm8sIFllcyB9OwpAQCAtMTUyLDYgKzE1NCw5IEBAIHByaXZhdGU6CiAgICAgLy8gSW4g
bWV0ZXJzLgogICAgIGRvdWJsZSBtX21pbmltdW1OZWFyQ2xpcFBsYW5lIHsgMC4xIH07CiAgICAg
ZG91YmxlIG1fbWF4aW11bUZhckNsaXBQbGFuZSB7IDEwMDAuMCB9OworCisgICAgLy8gaHR0cHM6
Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jeHJzZXNzaW9uLXByb21pc2UtcmVzb2x2
ZWQKKyAgICBib29sIG1faW5wdXRJbml0aWFsaXplZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNl
LmNwcAppbmRleCBmYTg4MWQ0YmJiNGY1NTFiZDZhMzI4MjkyYjAyMjllYTE3ZDk0OWY5Li4xMTky
MTQxODlmYzIwMWQ4NTEzNDRkZWIwZDMxNmQzOWY0NzhhNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKQEAgLTU0LDYgKzU0LDExIEBAIFRyYW5zZm9y
bWF0aW9uTWF0cml4IFdlYlhSU3BhY2U6OmVmZmVjdGl2ZU9yaWdpbigpIGNvbnN0CiB9CiAKIAor
Ym9vbCBXZWJYUlNwYWNlOjppc1Bvc2l0aW9uRW11bGF0ZWQoKSBjb25zdAoreworICAgIHJldHVy
biBzZXNzaW9uKCkuaXNQb3NpdGlvbkVtdWxhdGVkKCk7Cit9CisKIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJYUlZpZXdlclNwYWNlKTsKIAogV2ViWFJWaWV3ZXJTcGFjZTo6V2ViWFJW
aWV3ZXJTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgKaW5kZXggNGE5ZGJlZmRkM2I1
NDdmOGEwNjIzZDI2NTY0OWQ2ZjkwYmI5YmY0YS4uZDhmODhlYTU4Yjk1ODQ1MThkNDc2NTQwZWRj
OGRkZGIxOTY3OWRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNl
LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViWFJTZXNzaW9uJiBz
ZXNzaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0
aXZlT3JpZ2luKCkgY29uc3QgPSAwOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGVmZmVjdGl2
ZU9yaWdpbigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1Bvc2l0aW9uRW11bGF0ZWQoKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlZmVyZW5jZVNwYWNlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCb3VuZGVkUmVmZXJlbmNlU3BhY2UoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3lzdGVtLmNwcAppbmRleCAyMDI4YTA0ZjI0Mjc2ZjBjN2VlM2FjN2NlMGU0NDBhZTQ0MjMz
ODI4Li40ZDE4NWY4MGYzYWY2ZTFiOGFhODM2YWUxMGM0YzFkM2M3YTYxNzY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtNDQ2LDE0ICs0NDYs
NyBAQCB2b2lkIFdlYlhSU3lzdGVtOjpyZXF1ZXN0U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQs
IFhSU2Vzc2lvbk1vZGUgbW9kZSwgY29uc3QgWAogICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RG
TW92ZShzZXNzaW9uKSk7CiAgICAgICAgIHJlamVjdFByb21pc2VXaXRoTm90U3VwcG9ydGVkRXJy
b3IucmVsZWFzZSgpOwogCi0gICAgICAgIC8vIEZJWE1FOgotICAgICAgICAvLyA1LjQuMTAgUXVl
dWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczogTk9URTogVGhlc2Ugc3Rl
cHMgZW5zdXJlIHRoYXQgaW5pdGlhbCBpbnB1dHNvdXJjZXNjaGFuZ2UKLSAgICAgICAgLy8gZXZl
bnRzIG9jY3VyIGFmdGVyIHRoZSBpbml0aWFsIHNlc3Npb24gaXMgcmVzb2x2ZWQuCi0gICAgICAg
IC8vICAgICAxLiBTZXQgc2Vzc2lvbidzIHByb21pc2UgcmVzb2x2ZWQgZmxhZyB0byB0cnVlLgot
ICAgICAgICAvLyAgICAgMi4gTGV0IHNvdXJjZXMgYmUgYW55IGV4aXN0aW5nIGlucHV0IHNvdXJj
ZXMgYXR0YWNoZWQgdG8gc2Vzc2lvbi4KLSAgICAgICAgLy8gICAgIDMuIElmIHNvdXJjZXMgaXMg
bm9uLWVtcHR5LCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIC8vICAgICAg
ICAxLiBTZXQgc2Vzc2lvbidzIGxpc3Qgb2YgYWN0aXZlIFhSIGlucHV0IHNvdXJjZXMgdG8gc291
cmNlcy4KLSAgICAgICAgLy8gICAgICAgIDIuIEZpcmUgYW4gWFJJbnB1dFNvdXJjZXNDaGFuZ2VF
dmVudCBuYW1lZCBpbnB1dHNvdXJjZXNjaGFuZ2Ugb24gc2Vzc2lvbiB3aXRoIGFkZGVkIHNldCB0
byBzb3VyY2VzLgorICAgICAgICAvLyA1LjQuMTAgaXMgaGFuZGxlZCBpbiBXZWJYUlNlc3Npb246
OnNlc3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzLgogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSGFuZGVkbmVzcy5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkhhbmRlZG5lc3MuaAppbmRleCA5MzMzMDM0ZDBjZDQ5
YWM4ZGVlOTAyYTA4MTY0NDgwNDM3OGNiYzJjLi44NTk4NWNjYWZhNmJjZDQ1NmFjMGI2NDUyZTcw
NGFlMGJmZTA3ODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hS
SGFuZGVkbmVzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJIYW5kZWRu
ZXNzLmgKQEAgLTI3LDEzICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVk
ZSAiUGxhdGZvcm1YUi5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgWFJI
YW5kZWRuZXNzIHsKLSAgICBOb25lLAotICAgIExlZnQsCi0gICAgUmlnaHQsCi19OwordXNpbmcg
WFJIYW5kZWRuZXNzID0gUGxhdGZvcm1YUjo6WFJIYW5kZWRuZXNzOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJ
bnB1dFNvdXJjZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1
dFNvdXJjZUV2ZW50LmNwcAppbmRleCAyMjYzMWFiNTUyOTcwNTZjYzA2M2Q3NDQ2ODlkM2UwMzNj
YTBmYTU3Li5mYzg4YmY3YTc5YjY5ODQwNzA0OWNmNjAwYjk3MTdlYmQzNjJjMjIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuY3Bw
CkBAIC0zMCw5ICszMCwxMiBAQAogCiAjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgogI2luY2x1ZGUg
IldlYlhSSW5wdXRTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChYUklu
cHV0U291cmNlRXZlbnQpOworCiBSZWY8WFJJbnB1dFNvdXJjZUV2ZW50PiBYUklucHV0U291cmNl
RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFs
aXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBY
UklucHV0U291cmNlRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwpAQCAtNDIs
NyArNDUsNiBAQCBYUklucHV0U291cmNlRXZlbnQ6OlhSSW5wdXRTb3VyY2VFdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aQogICAgIDogRXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1fZnJhbWUoaW5pdGlhbGl6ZXIuZnJhbWUpCiAg
ICAgLCBtX2lucHV0U291cmNlKGluaXRpYWxpemVyLmlucHV0U291cmNlKQotICAgICwgbV9idXR0
b25JbmRleChpbml0aWFsaXplci5idXR0b25JbmRleCkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7
CiAgICAgQVNTRVJUKG1faW5wdXRTb3VyY2UpOwpAQCAtNjAsOSArNjIsOSBAQCBjb25zdCBXZWJY
UklucHV0U291cmNlJiBYUklucHV0U291cmNlRXZlbnQ6OmlucHV0U291cmNlKCkgY29uc3QKICAg
ICByZXR1cm4gKm1faW5wdXRTb3VyY2U7CiB9CiAKLU9wdGlvbmFsPGludD4gWFJJbnB1dFNvdXJj
ZUV2ZW50OjpidXR0b25JbmRleCgpIGNvbnN0Cit2b2lkIFhSSW5wdXRTb3VyY2VFdmVudDo6c2V0
RnJhbWVBY3RpdmUoYm9vbCBhY3RpdmUpCiB7Ci0gICAgcmV0dXJuIG1fYnV0dG9uSW5kZXg7Cisg
ICAgbV9mcmFtZS0+c2V0QWN0aXZlKGFjdGl2ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJj
ZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVu
dC5oCmluZGV4IDhjN2ZjMDQ3NDdhMmJmMTFlYThiMmZiN2I1Y2E5ZjQ1NGFjMTUzMDMuLmUzYzU0
MTEzNDU1MWJjMjc1YWYwZmM0MWI2N2VhYzQzOTgzM2YwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuaApAQCAtMzcsMTEgKzM3LDEx
IEBAIGNsYXNzIFdlYlhSRnJhbWU7CiBjbGFzcyBXZWJYUklucHV0U291cmNlOwogCiBjbGFzcyBY
UklucHV0U291cmNlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgeworICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoWFJJbnB1dFNvdXJjZUV2ZW50KTsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSW5p
dCA6IEV2ZW50SW5pdCB7CiAgICAgICAgIFJlZlB0cjxXZWJYUkZyYW1lPiBmcmFtZTsKICAgICAg
ICAgUmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+IGlucHV0U291cmNlOwotICAgICAgICBPcHRpb25h
bDxpbnQ+IGJ1dHRvbkluZGV4OwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFhSSW5wdXRTb3Vy
Y2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVk
ID0gSXNUcnVzdGVkOjpObyk7CkBAIC00OSw3ICs0OSw5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IFdlYlhSRnJhbWUmIGZyYW1lKCkgY29uc3Q7CiAgICAgY29uc3QgV2ViWFJJbnB1dFNvdXJjZSYg
aW5wdXRTb3VyY2UoKSBjb25zdDsKLSAgICBPcHRpb25hbDxpbnQ+IGJ1dHRvbkluZGV4KCkgY29u
c3Q7CisgICAgdm9pZCBzZXRGcmFtZUFjdGl2ZShib29sKTsKKworICAgIEV2ZW50SW50ZXJmYWNl
IGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gWFJJbnB1dFNvdXJjZUV2ZW50
SW50ZXJmYWNlVHlwZTsgfQogCiBwcml2YXRlOgogICAgIFhSSW5wdXRTb3VyY2VFdmVudChjb25z
dCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oCmlu
ZGV4IDAzYTY0YjdiNjhkNGY2MjI2ZDQyZDFmMjdlZDIzMjIxZDI2ZThhODQuLmRkNTQ3OGY5ZmZh
YzQzMTczOGFmYjllYTJjMTkxOTg0ZjM3MmQ1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oCkBAIC01Miw2
ICs1Miw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3Vy
Y2U+PiYgYWRkZWQoKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRT
b3VyY2U+PiYgcmVtb3ZlZCgpIGNvbnN0OwogCisgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRl
cmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50SW50
ZXJmYWNlVHlwZTsgfQorCiBwcml2YXRlOgogICAgIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2
ZW50LmlkbAppbmRleCA1MjJiZGMxZDVkYWJlMDdjODUyZWNkNDEzZDdjMzc0NzEyYjY4MzZkLi5l
YjkxOWExMGZiOTRjMGIyZThlYzg4YjQzMzVmZjU5YmJhNzUxY2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVu
dC5pZGwKQEAgLTQxLDYgKzQxLDYgQEAKICAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcgdHlwZSwg
WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudEluaXQgZXZlbnRJbml0RGljdCk7CiAKICAgICBbU2Ft
ZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSU2Vzc2lvbiBzZXNzaW9uOwotICAgIFtT
YW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8V2ViWFJJbnB1dFNvdXJj
ZT4gYWRkZWQ7Ci0gICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGcm96ZW5BcnJh
eTxXZWJYUklucHV0U291cmNlPiByZW1vdmVkOworICAgIFtDYWNoZWRBdHRyaWJ1dGUsIFNhbWVP
YmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxXZWJYUklucHV0U291cmNlPiBh
ZGRlZDsKKyAgICBbQ2FjaGVkQXR0cmlidXRlLCBTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1
dGUgRnJvemVuQXJyYXk8V2ViWFJJbnB1dFNvdXJjZT4gcmVtb3ZlZDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSVGFyZ2V0UmF5TW9kZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUlRhcmdldFJheU1vZGUuaAppbmRleCAxZmNhNDRlNDUx
Yjk3YzU2MDI2ZTE0NWI1MjIzMzFmODE2NWJhZTdmLi5iNzNiNGUwY2QxZjM0YjhiYjE4NDVjNWQ1
MDQzNDA2ZDdhNzFjZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1hSVGFyZ2V0UmF5TW9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJU
YXJnZXRSYXlNb2RlLmgKQEAgLTI5LDExICsyOSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotZW51bSBjbGFzcyBYUlRhcmdldFJheU1vZGUgewotICAgIEdhemUsCi0gICAgVHJhY2tlZFBv
aW50ZXIsCi0gICAgU2NyZWVuLAotfTsKKyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCisKK3VzaW5n
IFhSVGFyZ2V0UmF5TW9kZSA9IFBsYXRmb3JtWFI6OlhSVGFyZ2V0UmF5TW9kZTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDMxNjUwOTY4YWMwZjdkMDRiN2I1
N2UyNTBhOTY5ZGVhMmJkZDgyZDIuLjE1NTNlNTc5MDEwOWQzNmQ4ZWVkMmVlNzBmODBhMzZhNGIy
YTMwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC00MjYsOCArNDI2LDEwIEBAIE1vZHVsZXMvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKIE1vZHVsZXMvd2VieHIv
TmF2aWdhdG9yV2ViWFIuY3BwIEBuby11bmlmeQogTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRS
ZWZlcmVuY2VTcGFjZS5jcHAgQG5vLXVuaWZ5CiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3Bw
IEBuby11bmlmeQorTW9kdWxlcy93ZWJ4ci9XZWJYUkdhbWVwYWQuY3BwIEBuby11bmlmeQogTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcCBAbm8tdW5pZnkKIE1vZHVsZXMvd2VieHIv
V2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcCBAbm8tdW5pZnkKK01vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNwYWNlLmNwcCBAbm8tdW5pZnkKIE1vZHVsZXMvd2VieHIvV2ViWFJMYXllci5jcHAgQG5v
LXVuaWZ5CiBNb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5jcHAgQG5vLXVuaWZ5CiBNb2R1bGVzL3dl
YnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3NzBiMDg0MDIyOTI0
MDI4MDVhNjM3MTc0ZDM2OWU2Y2QzNTQxNzAuLmIyZmY4M2M3NmI1Mzg1ZjcwNGVmNmY5YzcxYjI1
ZGFjMGZhODNhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQxNiw2ICs0MTYsMTAgQEAKIAkJMTE5MzQwQTMxRkVFMDI0MDAw
OTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExOTM0MEExMUZFRTAyNDAwMDkzNUYxRSAvKiBSZW5k
ZXJUcmVlQnVpbGRlckJsb2NrLmggKi87IH07CiAJCTExOTlGQTQ2MjA4RTM1QTMwMDIzNThDQyAv
KiBMYXlvdXRDb250YWluZXJCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDExOTlGQTQ0MjA4RTM1QTMwMDIzNThDQyAvKiBMYXlvdXRDb250YWluZXJC
b3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
MUNCMjc4OTIwM0JBNTcwMDA0QTFEQzkgLyogUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMUNCMjc4NzIw
M0JBNTcwMDA0QTFEQzkgLyogUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmggKi87IH07CisJ
CTExRTUxNjM4MjYxRTFBMDYwMEU2OUYyNSAvKiBXZWJYUklucHV0U3BhY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExRTUxNjM1MjYxRTFBMDUwMEU2
OUYyNSAvKiBXZWJYUklucHV0U3BhY2UuaCAqLzsgfTsKKwkJMTFFNTE2MzkyNjFFMUEwNjAwRTY5
RjI1IC8qIFdlYlhSSW5wdXRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxMUU1MTYzNzI2MUUxQTA1MDBFNjlGMjUgLyogV2ViWFJJbnB1dFNw
YWNlLmNwcCAqLzsgfTsKKwkJMTFFNTE2M0MyNjFFMUExNTAwRTY5RjI1IC8qIFdlYlhSR2FtZXBh
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFFNTE2
M0EyNjFFMUExNDAwRTY5RjI1IC8qIFdlYlhSR2FtZXBhZC5oICovOyB9OworCQkxMUU1MTYzRDI2
MUUxQTE1MDBFNjlGMjUgLyogV2ViWFJHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExRTUxNjNCMjYxRTFBMTQwMEU2OUYyNSAvKiBXZWJY
UkdhbWVwYWQuY3BwICovOyB9OwogCQkxNDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0
V3JhcHBhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQwMEQ3QTcxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGlu
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
NDAzQjk5NzA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAzQjk5NTA5RUIxM0FGMDA3OTdDN0YgLyog
RE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTQwM0JBMEYwOUVCMThGOTAwNzk3QzdGIC8qIEpTRE9NV2luZG93LmggaW4gQ29weSBH
ZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAz
QkEwRTA5RUIxOEY4MDA3OTdDN0YgLyogSlNET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjQ0LDggKzY0OCw4IEBACiAJCTFDQUY1
NkRCMjUzMDFBQzgwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjU2RDgyNTMw
MTQ1NzAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNDRDgxNTAyMjMxRjgz
RTAwNjVGQzJCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1
NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW0gKi87IH07CiAJCTFDQ0RGNUJFMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdU
b09URkZvbnRDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQ0NERjVCQzE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVy
c2lvbi5oICovOyB9OwotCQkxQ0U4RDEyNzI2MTg1QzBFMDBGQzNBRUYgLyogRGlzcGxheUxpc3RJ
dGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1
ZmZlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxQ0U4ODY0MTI2MTA1QkYyMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFODg2
M0YyNjEwNUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQ0U4RDEyNzI2MTg1QzBFMDBG
QzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVG
IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAzMjU5M0Qg
LyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovOyB9
OwogCQkxRDAwMjZBNDIzNzRENjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZB
MjIzNzRENjIzMDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggKi87IH07CiAJ
CTFEMDAyNkFBMjM3NEY5RUEwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZB
ODIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oICovOyB9
OwpAQCAtNjQwMSw2ICs2NDA1LDEwIEBACiAJCTExQ0IyNzg2MjAzQkE1NzAwMDRBMURDOSAvKiBS
ZW5kZXJUcmVlQnVpbGRlckZ1bGxTY3JlZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVy
VHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTFDQjI3ODcyMDNCQTU3MDAwNEExREM5IC8qIFJlbmRlclRyZWVCdWlsZGVyRnVsbFNjcmVlbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJUcmVlQnVpbGRlckZ1bGxTY3JlZW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTFEMTlDMkUyMzE1OUJBRTAwOEYyNEQzIC8qIFRhYmxlRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWJsZUZvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
MUU1MTYzNTI2MUUxQTA1MDBFNjlGMjUgLyogV2ViWFJJbnB1dFNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlhSSW5wdXRTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxMUU1MTYzNzI2MUUxQTA1MDBFNjlGMjUgLyogV2ViWFJJbnB1dFNwYWNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlhSSW5wdXRTcGFj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExRTUxNjNBMjYxRTFBMTQwMEU2
OUYyNSAvKiBXZWJYUkdhbWVwYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViWFJHYW1lcGFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExRTUxNjNCMjYx
RTFBMTQwMEU2OUYyNSAvKiBXZWJYUkdhbWVwYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViWFJHYW1lcGFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTFFNkNGMUIyNUYxNDBFMzAwMTNEM0Q1IC8qIEpTV2ViWFJSZWZlcmVuY2VTcGFjZUN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYlhSUmVm
ZXJlbmNlU3BhY2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMUU2
Q0YxRDI1RjE0MEU0MDAxM0QzRDUgLyogSlNXZWJYUlNwYWNlQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViWFJTcGFjZUN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExRkYwMkQ1MjBCQTNDODEwMDgzRjI1QiAvKiBWZXJp
ZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmVyaWZpY2F0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NDksOSArNjk1Nyw5IEBACiAJCTFDREQ0NUU0MEJB
OUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQ0RENDVFNTBCQTlDODQ2MDBGOTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJDb3JlLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNjBCQTlDODQ2MDBGOTAxNDcgLyogQmFzZS54
Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0U4RDEyNTI2MTg1QkQ4MDBGQzNBRUYgLyog
RGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5
TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDRTg4NjNFMjYxMDVBNUYwMDBDODE2QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluTWVtb3J5RGlzcGxheUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQ0U4ODYzRjI2MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbk1lbW9yeURpc3BsYXlMaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDRThEMTI1MjYxODVCRDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlz
dEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbUJ1
ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQ0IzQTgy
MUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDRUNCM0E5MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRlbWVu
dEJlaGF2aW9yQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN0YXRlbWVudEJl
aGF2aW9yQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRUNCM0FG
MjFGMkI5ODQwMEY0NDU0MiAvKiBXSExTTEZ1bmN0aW9uV3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdITFNMRnVuY3Rpb25Xcml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjg5NjUsMTIgKzI4OTczLDE2IEBACiAJCQkJRTFFRThBRjAyNDEyQjE3MDAwRTc5NEQ2
IC8qIFdlYlhSRnJhbWUuY3BwICovLAogCQkJCUUxRUU4QUUzMjQxMkIxNzAwMEU3OTRENiAvKiBX
ZWJYUkZyYW1lLmggKi8sCiAJCQkJRTE5NDkwODgyNDM0RjE1OTAwNDE2QTk5IC8qIFdlYlhSRnJh
bWUuaWRsICovLAorCQkJCTExRTUxNjNCMjYxRTFBMTQwMEU2OUYyNSAvKiBXZWJYUkdhbWVwYWQu
Y3BwICovLAorCQkJCTExRTUxNjNBMjYxRTFBMTQwMEU2OUYyNSAvKiBXZWJYUkdhbWVwYWQuaCAq
LywKIAkJCQlFMUVFOEIwRDI0MTJCMTcwMDBFNzk0RDYgLyogV2ViWFJJbnB1dFNvdXJjZS5jcHAg
Ki8sCiAJCQkJRTFFRThCMTcyNDEyQjE3MDAwRTc5NEQ2IC8qIFdlYlhSSW5wdXRTb3VyY2UuaCAq
LywKIAkJCQlFMTk0OTA4OTI0MzRGMTVBMDA0MTZBOTkgLyogV2ViWFJJbnB1dFNvdXJjZS5pZGwg
Ki8sCiAJCQkJRTFFRThBRTYyNDEyQjE3MDAwRTc5NEQ2IC8qIFdlYlhSSW5wdXRTb3VyY2VBcnJh
eS5jcHAgKi8sCiAJCQkJRTFFRThBREQyNDEyQjE3MDAwRTc5NEQ2IC8qIFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheS5oICovLAogCQkJCUUxOTQ5MDkzMjQzNEYxNjAwMDQxNkE5OSAvKiBXZWJYUklucHV0
U291cmNlQXJyYXkuaWRsICovLAorCQkJCTExRTUxNjM3MjYxRTFBMDUwMEU2OUYyNSAvKiBXZWJY
UklucHV0U3BhY2UuY3BwICovLAorCQkJCTExRTUxNjM1MjYxRTFBMDUwMEU2OUYyNSAvKiBXZWJY
UklucHV0U3BhY2UuaCAqLywKIAkJCQlFMTJGREFGQjI0QTBGRDFDMDA3MDIzNkUgLyogV2ViWFJM
YXllci5jcHAgKi8sCiAJCQkJRTEyRkRBRkQyNEEwRkQxRTAwNzAyMzZFIC8qIFdlYlhSTGF5ZXIu
aCAqLywKIAkJCQlFMTJGREFGRTI0QTBGRDFGMDA3MDIzNkUgLyogV2ViWFJMYXllci5pZGwgKi8s
CkBAIC0zNTc0NCw4ICszNTc1NiwxMCBAQAogCQkJCUIxMEI2OTgyMTQwQzE3NDAwMEJDMUMyNiAv
KiBXZWJWVFRUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUU4QjdFMjQxMzE5MUYw
MEU3OTRENiAvKiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTFFRThCOEEyNDEzMTkxRjAwRTc5NEQ2IC8qIFdlYlhSRnJhbWUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTExRTUxNjNDMjYxRTFBMTUwMEU2OUYyNSAvKiBXZWJYUkdhbWVwYWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxRUU4QkE4MjQxMzE5NjMwMEU3OTRENiAvKiBXZWJYUklucHV0U291cmNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEI4NjI0MTMxOTFGMDBFNzk0RDYgLyogV2ViWFJJ
bnB1dFNvdXJjZUFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkxMUU1MTYzODI2MUUxQTA2MDBF
NjlGMjUgLyogV2ViWFJJbnB1dFNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTJGREIwMDI0
QTBGRDIwMDA3MDIzNkUgLyogV2ViWFJMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThC
ODgyNDEzMTkxRjAwRTc5NEQ2IC8qIFdlYlhSUG9zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFF
RThCQTYyNDEzMTk2MzAwRTc5NEQ2IC8qIFdlYlhSUmVmZXJlbmNlU3BhY2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzcwNjIsOCArMzcwNzYsMTAgQEAKIAkJCQlDRUNEQzkzQzIxRjI5NzI5MDA5NzZC
RDEgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTFFRThCODAyNDEzMTkxRjAwRTc5NEQ2IC8qIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUU4QjkzMjQxMzE5NTAwMEU3OTRENiAvKiBX
ZWJYUkZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTExRTUxNjNEMjYxRTFBMTUwMEU2OUYy
NSAvKiBXZWJYUkdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRThCQTEyNDEzMTk2
MzAwRTc5NEQ2IC8qIFdlYlhSSW5wdXRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFF
RThCOEMyNDEzMTkxRjAwRTc5NEQ2IC8qIFdlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkxMUU1MTYzOTI2MUUxQTA2MDBFNjlGMjUgLyogV2ViWFJJbnB1dFNwYWNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMkZEQUZGMjRBMEZEMjAwMDcwMjM2RSAvKiBXZWJY
UkxheWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUU4QjhCMjQxMzE5MUYwMEU3OTRENiAv
KiBXZWJYUlBvc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRThCN0YyNDEzMTkxRjAwRTc5
NEQ2IC8qIFdlYlhSUmVmZXJlbmNlU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcAppbmRl
eCBjODVlMjZhNzk5ZGRjNWQ1NTgxY2UxMjNlNWZmYjE3MzUzMmNhZDMzLi5mYzM5NjBmMzlmNDQ2
ZTM1NDI1ZjE0NGFmODc1YTVmOTRmYjYzYzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHAKQEAgLTQzLDYgKzQzLDE1IEBA
IGNvbnN0IFdURjo6U3RyaW5nJiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkKICAgICBy
ZXR1cm4gc3RhbmRhcmRHYW1lcGFkTWFwcGluZzsKIH0KIAorI2lmIEVOQUJMRShXRUJYUikKKy8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyNk
b20tZ2FtZXBhZG1hcHBpbmd0eXBlLXhyLXN0YW5kYXJkCitjb25zdCBXVEY6OlN0cmluZyYgeHJT
dGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmcgPSAieHItc3RhbmRhcmQiOworICAg
IHJldHVybiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmc7Cit9CisjZW5kaWYKKwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvR2FtZXBhZENvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9HYW1lcGFkQ29uc3RhbnRzLmgKaW5kZXggN2UxNjlmNGRhOGI5OGZlNmVmYWExZTIzMGUyYTRl
OTI0YTIzNjczMy4uNjMzYWZkNzNkMzc0N2ZhYTNhMDhhZTc1NmNiNDMyMTUxMjVkMjU0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRz
LmgKQEAgLTYyLDYgKzYyLDkgQEAgZXh0ZXJuIGNvbnN0IHNpemVfdCBudW1iZXJPZlN0YW5kYXJk
R2FtZXBhZEJ1dHRvbnNXaXRoSG9tZUJ1dHRvbjsKIGV4dGVybiBjb25zdCBHYW1lcGFkQnV0dG9u
Um9sZSBtYXhpbXVtR2FtZXBhZEJ1dHRvbjsKIAogY29uc3QgV1RGOjpTdHJpbmcmIHN0YW5kYXJk
R2FtZXBhZE1hcHBpbmdTdHJpbmcoKTsKKyNpZiBFTkFCTEUoV0VCWFIpCitjb25zdCBXVEY6OlN0
cmluZyYgeHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCk7CisjZW5kaWYKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgK
aW5kZXggMWZlYzg0ZGM1OTFiMDkzZDFkOGI4MzAyMjEzNzc1OWUzN2FjNTg5Yi4uYTY4Mjc2N2Mw
Y2E5MTA4N2FmM2NkNmVhM2I5Y2NmZDQ3YjJjZTZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaApAQCAtNTYsMTYgKzU2LDI0IEBAIGVudW0gY2xhc3MgRXllIHsKIHVz
aW5nIExheWVySGFuZGxlID0gaW50OwogCiAjaWYgRU5BQkxFKFdFQlhSKQordXNpbmcgSW5wdXRT
b3VyY2VIYW5kbGUgPSBpbnQ7CiAKLWNsYXNzIFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50IDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50PiB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSA9IGRlZmF1bHQ7
CisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNlbnVtZGVmLXhyaGFu
ZGVkbmVzcworZW51bSBjbGFzcyBYUkhhbmRlZG5lc3MgeworICAgIE5vbmUsCisgICAgTGVmdCwK
KyAgICBSaWdodCwKK307CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbkRpZEVuZCgpID0gMDsK
LSAgICAvLyBGSVhNRTogaGFuZGxlIGZyYW1lIHVwZGF0ZQotICAgIC8vIEZJWE1FOiBoYW5kbGUg
dmlzaWJpbGl0eSBjaGFuZ2VzCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dl
YnhyLyNlbnVtZGVmLXhydGFyZ2V0cmF5bW9kZQorZW51bSBjbGFzcyBYUlRhcmdldFJheU1vZGUg
eworICAgIEdhemUsCisgICAgVHJhY2tlZFBvaW50ZXIsCisgICAgU2NyZWVuLAogfTsKIAorY2xh
c3MgVHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ7CisKIGNsYXNzIERldmljZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxEZXZpY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGV2aWNl
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRGV2aWNlKTsKQEAgLTE0MSw2ICsxNDksMjggQEAgcHVibGljOgogICAgICAgICAgICAgUGxh
dGZvcm1HTE9iamVjdCBvcGFxdWVUZXh0dXJlIHsgMCB9OwogICAgICAgICB9OwogCisgICAgICAg
IHN0cnVjdCBJbnB1dFNvdXJjZUJ1dHRvbiB7CisgICAgICAgICAgICBib29sIHRvdWNoZWQgeyBm
YWxzZSB9OworICAgICAgICAgICAgYm9vbCBwcmVzc2VkIHsgZmFsc2UgfTsKKyAgICAgICAgICAg
IGZsb2F0IHByZXNzZWRWYWx1ZSB7IDAgfTsKKyAgICAgICAgfTsKKworICAgICAgICBzdHJ1Y3Qg
SW5wdXRTb3VyY2VQb3NlIHsKKyAgICAgICAgICAgIFBvc2UgcG9zZTsKKyAgICAgICAgICAgIGJv
b2wgaXNQb3NpdGlvbkVtdWxhdGVkIHsgZmFsc2UgfTsKKyAgICAgICAgfTsKKworICAgICAgICBz
dHJ1Y3QgSW5wdXRTb3VyY2UgeworICAgICAgICAgICAgSW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxl
IHsgMCB9OworICAgICAgICAgICAgWFJIYW5kZWRuZXNzIGhhbmRlbmVzcyB7IFhSSGFuZGVkbmVz
czo6Tm9uZSB9OworICAgICAgICAgICAgWFJUYXJnZXRSYXlNb2RlIHRhcmdldFJheU1vZGUgeyBY
UlRhcmdldFJheU1vZGU6OkdhemUgfTsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHByb2Zp
bGVzOworICAgICAgICAgICAgSW5wdXRTb3VyY2VQb3NlIHBvaW50ZXJPcmlnaW47CisgICAgICAg
ICAgICBPcHRpb25hbDxJbnB1dFNvdXJjZVBvc2U+IGdyaXBPcmlnaW47CisgICAgICAgICAgICBW
ZWN0b3I8SW5wdXRTb3VyY2VCdXR0b24+IGJ1dHRvbnM7CisgICAgICAgICAgICBWZWN0b3I8Zmxv
YXQ+IGF4ZXM7CisgICAgICAgIH07CisKICAgICAgICAgYm9vbCBpc1RyYWNraW5nVmFsaWQgeyBm
YWxzZSB9OwogICAgICAgICBib29sIGlzUG9zaXRpb25WYWxpZCB7IGZhbHNlIH07CiAgICAgICAg
IGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkIHsgZmFsc2UgfTsKQEAgLTE1MSw2ICsxODEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFN0YWdlUGFyYW1ldGVycyBzdGFnZVBhcmFtZXRlcnM7CiAgICAgICAg
IFZlY3RvcjxWaWV3PiB2aWV3czsKICAgICAgICAgSGFzaE1hcDxMYXllckhhbmRsZSwgTGF5ZXJE
YXRhPiBsYXllcnM7CisgICAgICAgIFZlY3RvcjxJbnB1dFNvdXJjZT4gaW5wdXRTb3VyY2VzOwog
ICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJWaWV3IHsKQEAgLTE4OSw2ICsyMjAsMTkgQEAgcHJv
dGVjdGVkOgogICAgIFdlYWtQdHI8VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ+IG1fdHJhY2tp
bmdBbmRSZW5kZXJpbmdDbGllbnQ7CiB9OwogCitjbGFzcyBUcmFja2luZ0FuZFJlbmRlcmluZ0Ns
aWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudD4g
eworcHVibGljOgorICAgIHZpcnR1YWwgflRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KCkgPSBk
ZWZhdWx0OworCisgICAgLy8gVGhpcyBldmVudCBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IGluaXRp
YWwgaW5wdXRzb3VyY2VzY2hhbmdlIGV2ZW50cyBvY2N1ciBhZnRlciB0aGUgaW5pdGlhbCBzZXNz
aW9uIGlzIHJlc29sdmVkLgorICAgIC8vIFdlYnhSIGFwcHMgY2FuIHdhaXQgZm9yIHRoZSBpbnB1
dCBzb3VyY2UgZXZlbnRzIGJlZm9yZSBjYWxsaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZS4KKyAg
ICAvLyBQZXItZnJhbWUgaW5wdXQgc291cmNlIHVwZGF0ZXMgYXJlIGhhbmRsZWQgdmlhIHNlc3Np
b24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHdoaWNoIGNhbGxzIERldmljZTo6cmVxdWVzdEZyYW1l
LgorICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyhWZWN0
b3I8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNlc3Npb25EaWRFbmQoKSA9IDA7CisgICAgLy8gRklYTUU6IGhhbmRsZSBmcmFtZSB1cGRh
dGUKKyAgICAvLyBGSVhNRTogaGFuZGxlIHZpc2liaWxpdHkgY2hhbmdlcworfTsKKwogY2xhc3Mg
SW5zdGFuY2UgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnN0YW5jZSYg
c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VY
UkRldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAK
aW5kZXggZTAxNjRmNDljYTA5N2I1MWExMWFkMTg4MjA1NjU0ZGMzMDgyODJiNS4uZjhjNjE4ZTI4
MjE1ZmQwOTFiZmQ4YjNmNzc1MDdlZGJmNTc2YjhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViRmFrZVhSRGV2aWNlLmNwcApAQCAtMTA2LDYgKzEwNiwxOSBAQCB2b2lkIFNpbXVsYXRl
ZFhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vz
c2lvbk1vZGUpCiAgICAgYXR0cmlidXRlcy5zdGVuY2lsID0gZmFsc2U7CiAgICAgYXR0cmlidXRl
cy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICBtX2dsID0gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0
ZShhdHRyaWJ1dGVzLCBudWxscHRyKTsKKworICAgIGlmIChtX3RyYWNraW5nQW5kUmVuZGVyaW5n
Q2xpZW50KSB7CisgICAgICAgIC8vIFdlYlhSIEZha2VEZXZpY2Ugd2FpdHMgZm9yIHNpbXVsYXRl
SW5wdXRDb25uZWN0aW9uIGNhbGxzIHRvIGFkZCBpbnB1dCBzb3VyY2VzLQorICAgICAgICAvLyBU
aGVyZSBpcyBubyB3YXkgdG8ga25vdyBob3cgbWFueSBzaW11bGF0ZUlucHV0Q29ubmVjdGlvbiBj
YWxscyB3aWxsIHRoZSBkZXZpY2UgcmVjZWl2ZSwKKyAgICAgICAgLy8gc28gbm90aWZ5IHRoZSBp
bnB1dCBzb3VyY2VzIGhhdmUgYmVlbiBpbml0aWFsaXplZCB3aXRoIGFuIGVtcHR5IGxpc3QuIFRo
aXMgaXMgbm90IGEgcHJvYmxlbSBiZWNhdXNlCisgICAgICAgIC8vIFdQVCB0ZXN0cyByZWx5IG9u
IHJlcXVlc3RBbmltYXRpb25GcmFtZSB1cGRhdGVzIHRvIHRlc3QgdGhlIGlucHV0IHNvdXJjZXMu
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXSgpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgaWYgKG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQpCisg
ICAgICAgICAgICAgICAgbV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudC0+c2Vzc2lvbkRpZElu
aXRpYWxpemVJbnB1dFNvdXJjZXMoeyB9KTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lk
IFNpbXVsYXRlZFhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKQEAgLTEz
NCw2ICsxNDcsMTEgQEAgdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKCkK
ICAgICBmb3IgKGF1dG8mIGxheWVyIDogbV9sYXllcnMpCiAgICAgICAgIGRhdGEubGF5ZXJzLmFk
ZChsYXllci5rZXksIEZyYW1lRGF0YTo6TGF5ZXJEYXRhIHsgLm9wYXF1ZVRleHR1cmUgPSBsYXll
ci52YWx1ZSB9KTsKIAorICAgIGZvciAoYXV0byYgaW5wdXQgOiBtX2lucHV0Q29ubmVjdGlvbnMp
IHsKKyAgICAgICAgaWYgKGlucHV0LT5pc0Nvbm5lY3RlZCgpKQorICAgICAgICAgICAgZGF0YS5p
bnB1dFNvdXJjZXMuYXBwZW5kKGlucHV0LT5nZXRGcmFtZURhdGEoKSk7CisgICAgfQorCiAgICAg
aWYgKG1fRnJhbWVDYWxsYmFjaykKICAgICAgICAgbV9GcmFtZUNhbGxiYWNrKFdURk1vdmUoZGF0
YSkpOwogfQpAQCAtMjM3LDExICsyNTUsMTUgQEAgdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNldEZs
b29yT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBvcmlnaW4pCiAKIHZvaWQgV2ViRmFr
ZVhSRGV2aWNlOjpzaW11bGF0ZVJlc2V0UG9zZSgpCiB7CisKIH0KIAotUmVmPFdlYkZha2VYUklu
cHV0Q29udHJvbGxlcj4gV2ViRmFrZVhSRGV2aWNlOjpzaW11bGF0ZUlucHV0U291cmNlQ29ubmVj
dGlvbihGYWtlWFJJbnB1dFNvdXJjZUluaXQpCitSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
PiBXZWJGYWtlWFJEZXZpY2U6OnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKGNvbnN0IEZh
a2VYUklucHV0U291cmNlSW5pdCYgaW5pdCkKIHsKLSAgICByZXR1cm4gV2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyOjpjcmVhdGUoKTsKKyAgICBhdXRvIGhhbmRsZSA9ICsrbUlucHV0U291cmNlSGFu
ZGxlSW5kZXg7CisgICAgYXV0byBpbnB1dCA9IFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6Y3Jl
YXRlKGhhbmRsZSwgaW5pdCk7CisgICAgbV9kZXZpY2UuYWRkSW5wdXRDb25uZWN0aW9uKGlucHV0
LmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIGlucHV0OwogfQogCiBFeGNlcHRpb25PcjxQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gV2ViRmFrZVhSRGV2aWNlOjpwYXJzZVJpZ2lk
VHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCYgaW5pdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCmluZGV4IDc2MWZjYmMwMzY3MjA2OTZlYjU2
ZjhjYzRkM2VlNTg1YzljY2E5MzguLjlmMzY2Y2ExMWZlMDQ5OWIxMDFmNjY1MjA1Mjg2ZjYyN2Mx
YzZjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaApAQCAtODAs
NiArODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdXBwb3J0c1NodXRkb3duTm90aWZpY2F0
aW9uKGJvb2wgc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbikgeyBtX3N1cHBvcnRzU2h1dGRv
d25Ob3RpZmljYXRpb24gPSBzdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CiAgICAgdm9p
ZCBzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7CiAgICAgdm9pZCBzY2hlZHVsZU9uTmV4dEZy
YW1lKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBhZGRJbnB1dENvbm5lY3Rpb24oUmVm
PFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4mJiBpbnB1dCkgeyBtX2lucHV0Q29ubmVjdGlvbnMu
YXBwZW5kKFdURk1vdmUoaW5wdXQpKTsgfTsKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6
ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Np
b25Nb2RlKSBmaW5hbDsKQEAgLTEwMSw2ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTD4gbV9nbDsKICAgICBIYXNoTWFwPFBsYXRmb3JtWFI6
OkxheWVySGFuZGxlLCBQbGF0Zm9ybUdMT2JqZWN0PiBtX2xheWVyczsKICAgICB1aW50MzJfdCBt
X2xheWVySW5kZXggeyAwIH07CisgICAgVmVjdG9yPFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xs
ZXI+PiBtX2lucHV0Q29ubmVjdGlvbnM7CiB9OwogCiBjbGFzcyBXZWJGYWtlWFJEZXZpY2UgZmlu
YWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJGYWtlWFJEZXZpY2U+IHsKQEAgLTExNiwxOCArMTE4
LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZsb29yT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNm
b3JtSW5pdCk7CiAgICAgdm9pZCBjbGVhckZsb29yT3JpZ2luKCkgeyBtX2RldmljZS5zZXRGbG9v
ck9yaWdpbihXVEY6Om51bGxvcHQpOyB9CiAgICAgdm9pZCBzaW11bGF0ZVJlc2V0UG9zZSgpOwot
ICAgIFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IHNpbXVsYXRlSW5wdXRTb3VyY2VDb25u
ZWN0aW9uKEZha2VYUklucHV0U291cmNlSW5pdCk7CisgICAgUmVmPFdlYkZha2VYUklucHV0Q29u
dHJvbGxlcj4gc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oY29uc3QgRmFrZVhSSW5wdXRT
b3VyY2VJbml0Jik7CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxGYWtlWFJWaWV3Pj4gcGFy
c2VWaWV3KGNvbnN0IEZha2VYUlZpZXdJbml0Jik7CiAgICAgU2ltdWxhdGVkWFJEZXZpY2UmIHNp
bXVsYXRlZFhSRGV2aWNlKCkgeyByZXR1cm4gbV9kZXZpY2U7IH0KICAgICB2b2lkIHNldFN1cHBv
cnRzU2h1dGRvd25Ob3RpZmljYXRpb24oKTsKICAgICB2b2lkIHNpbXVsYXRlU2h1dGRvd24oKTsK
IAorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
UG9zZT4gcGFyc2VSaWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQm
KTsKKwogcHJpdmF0ZToKICAgICBXZWJGYWtlWFJEZXZpY2UoKTsKIAotICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gcGFyc2VSaWdpZFRy
YW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQmKTsKLQogICAgIFNpbXVsYXRl
ZFhSRGV2aWNlIG1fZGV2aWNlOworICAgIFBsYXRmb3JtWFI6OklucHV0U291cmNlSGFuZGxlIG1J
bnB1dFNvdXJjZUhhbmRsZUluZGV4IHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xs
ZXIuY3BwCmluZGV4IDc5MGM5ODcwYmI0OGM1MWNlODU1YTVhZTJmYjJhMzY3MWNhNzE2YjAuLjdj
ODI3Mjg5NjEwZGJmY2QxZDQ5ODVjNzU2MTlhNTE1MGI4ZTdhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHAKQEAgLTI3LDYz
ICsyNywxNTMgQEAKICNpbmNsdWRlICJXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCIKIAogI2lm
IEVOQUJMRShXRUJYUikKKyNpbmNsdWRlICJXZWJGYWtlWFJEZXZpY2UuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0SGFuZGVkbmVz
cyhYUkhhbmRlZG5lc3MpCi17Ci19Cit1c2luZyBJbnB1dFNvdXJjZSA9IFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZTsKK3VzaW5nIElucHV0U291cmNlQnV0dG9uID0g
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOwordXNpbmcg
SW5wdXRTb3VyY2VQb3NlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291
cmNlUG9zZTsKK3VzaW5nIEJ1dHRvblR5cGUgPSBGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGU7
CiAKLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRUYXJnZXRSYXlNb2RlKFhSVGFy
Z2V0UmF5TW9kZSkKLXsKLX0KKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHItZ2FtZXBhZHMtbW9kdWxlLyN4ci1zdGFuZGFyZC1nYW1lcGFkLW1hcHBpbmcKK2NvbnN0ZXhw
ciBzdGQ6OmFycmF5PEJ1dHRvblR5cGUsIDU+IFhSX1NUQU5EQVJEX0JVVFRPTlMgPSB7IEJ1dHRv
blR5cGU6OkdyaXAsIEJ1dHRvblR5cGU6OlRvdWNocGFkLCBCdXR0b25UeXBlOjpUaHVtYnN0aWNr
LCBCdXR0b25UeXBlOjpPcHRpb25hbEJ1dHRvbiwgQnV0dG9uVHlwZTo6T3B0aW9uYWxUaHVtYnN0
aWNrIH07CiAKLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRQcm9maWxlcyhWZWN0
b3I8U3RyaW5nPikKK1JlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IFdlYkZha2VYUklucHV0
Q29udHJvbGxlcjo6Y3JlYXRlKFBsYXRmb3JtWFI6OklucHV0U291cmNlSGFuZGxlIGhhbmRsZSwg
Y29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0JiBpbml0KQogeworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkZha2VYUklucHV0Q29udHJvbGxlcihoYW5kbGUsIGluaXQpKTsKIH0KIAotdm9p
ZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldEdyaXBPcmlnaW4oRmFrZVhSUmlnaWRUcmFu
c2Zvcm1Jbml0IGdyaXBPcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbikKK1dlYkZha2VYUklu
cHV0Q29udHJvbGxlcjo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyKFBsYXRmb3JtWFI6OklucHV0
U291cmNlSGFuZGxlIGhhbmRsZSwgY29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0JiBpbml0KQor
ICAgIDogbV9oYW5kbGUoaGFuZGxlKQorICAgICwgbV9oYW5kZW5lc3MoaW5pdC5oYW5kZWRuZXNz
KQorICAgICwgbV90YXJnZXRSYXlNb2RlKGluaXQudGFyZ2V0UmF5TW9kZSkKKyAgICAsIG1fcHJv
ZmlsZXMoaW5pdC5wcm9maWxlcykKKyAgICAsIG1fcHJpbWFyeVNlbGVjdGVkKGluaXQuc2VsZWN0
aW9uU3RhcnRlZCkKKyAgICAsIG1fc2ltdWxhdGVTZWxlY3QoaW5pdC5zZWxlY3Rpb25DbGlja2Vk
KQogewotICAgIFVOVVNFRF9QQVJBTShncmlwT3JpZ2luKTsKLSAgICBVTlVTRURfUEFSQU0oZW11
bGF0ZWRQb3NpdGlvbik7CisgICAgc2V0UG9pbnRlck9yaWdpbihpbml0LnBvaW50ZXJPcmlnaW4s
IGZhbHNlKTsKKyAgICBzZXRHcmlwT3JpZ2luKGluaXQuZ3JpcE9yaWdpbiwgZmFsc2UpOworICAg
IHNldFN1cHBvcnRlZEJ1dHRvbnMoaW5pdC5zdXBwb3J0ZWRCdXR0b25zKTsKIH0KIAotdm9pZCBX
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNsZWFyR3JpcE9yaWdpbigpCit2b2lkIFdlYkZha2VY
UklucHV0Q29udHJvbGxlcjo6c2V0R3JpcE9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQg
Z3JpcE9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQogewotfQorICAgIGF1dG8gdHJhbnNm
b3JtID0gV2ViRmFrZVhSRGV2aWNlOjpwYXJzZVJpZ2lkVHJhbnNmb3JtKGdyaXBPcmlnaW4pOwor
ICAgIGlmICh0cmFuc2Zvcm0uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBt
X2dyaXBPcmlnaW4gPSBJbnB1dFNvdXJjZVBvc2UgeyB0cmFuc2Zvcm0ucmVsZWFzZVJldHVyblZh
bHVlKCksIGVtdWxhdGVkUG9zaXRpb24gfTsKK30gICAKIAogdm9pZCBXZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXI6OnNldFBvaW50ZXJPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IHBvaW50
ZXJPcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbikKIHsKLSAgICBVTlVTRURfUEFSQU0ocG9p
bnRlck9yaWdpbik7Ci0gICAgVU5VU0VEX1BBUkFNKGVtdWxhdGVkUG9zaXRpb24pOworICAgIGF1
dG8gdHJhbnNmb3JtID0gV2ViRmFrZVhSRGV2aWNlOjpwYXJzZVJpZ2lkVHJhbnNmb3JtKHBvaW50
ZXJPcmlnaW4pOworICAgIGlmICh0cmFuc2Zvcm0uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX3BvaW50ZXJPcmlnaW4gPSB7IHRyYW5zZm9ybS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSwgZW11bGF0ZWRQb3NpdGlvbiB9OwogfQogCiB2b2lkIFdlYkZha2VYUklucHV0Q29udHJv
bGxlcjo6ZGlzY29ubmVjdCgpCiB7CisgICAgbV9jb25uZWN0ZWQgPSBmYWxzZTsKIH0KIAogdm9p
ZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnJlY29ubmVjdCgpCiB7CisgICAgbV9jb25uZWN0
ZWQgPSB0cnVlOwogfQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c3RhcnRTZWxl
Y3Rpb24oKQotewotfQotCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6ZW5kU2VsZWN0
aW9uKCkKK3ZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRTdXBwb3J0ZWRCdXR0b25z
KGNvbnN0IFZlY3RvcjxGYWtlWFJCdXR0b25TdGF0ZUluaXQ+JiBidXR0b25zKQogeworICAgIG1f
YnV0dG9ucy5jbGVhcigpOworICAgIGZvciAoYXV0byYgYnV0dG9uIDogYnV0dG9ucykKKyAgICAg
ICAgbV9idXR0b25zLmFkZChidXR0b24uYnV0dG9uVHlwZSwgYnV0dG9uKTsKIH0KIAotdm9pZCBX
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNpbXVsYXRlU2VsZWN0KCkKK3ZvaWQgV2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyOjp1cGRhdGVCdXR0b25TdGF0ZShjb25zdCBGYWtlWFJCdXR0b25TdGF0
ZUluaXQmIGluaXQpCiB7CisgICAgYXV0byBpdCA9IG1fYnV0dG9ucy5maW5kKGluaXQuYnV0dG9u
VHlwZSk7CisgICAgaWYgKGl0ICE9IG1fYnV0dG9ucy5lbmQoKSkKKyAgICAgICAgaXQtPnZhbHVl
ID0gaW5pdDsKIH0KIAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldFN1cHBvcnRl
ZEJ1dHRvbnMoVmVjdG9yPEZha2VYUkJ1dHRvblN0YXRlSW5pdD4pCitJbnB1dFNvdXJjZSBXZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSgpCiB7CisgICAgSW5wdXRTb3VyY2Ug
c3RhdGU7CisgICAgc3RhdGUuaGFuZGxlID0gbV9oYW5kbGU7CisgICAgc3RhdGUuaGFuZGVuZXNz
ID0gbV9oYW5kZW5lc3M7CisgICAgc3RhdGUudGFyZ2V0UmF5TW9kZSA9IG1fdGFyZ2V0UmF5TW9k
ZTsKKyAgICBzdGF0ZS5wcm9maWxlcyA9IG1fcHJvZmlsZXM7CisgICAgc3RhdGUucG9pbnRlck9y
aWdpbiA9IG1fcG9pbnRlck9yaWdpbjsKKyAgICBzdGF0ZS5ncmlwT3JpZ2luID0gbV9ncmlwT3Jp
Z2luOworCisgICAgaWYgKG1fc2ltdWxhdGVTZWxlY3QpCisgICAgICAgIG1fcHJpbWFyeVNlbGVj
dGVkID0gdHJ1ZTsKKworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHItZ2FtZXBhZHMtbW9kdWxlLyN4ci1zdGFuZGFyZC1nYW1lcGFkLW1hcHBpbmcKKyAgICAvLyBN
aW1pYyB4ci1zdGFuZGFyZCBnYW1lcGFkIGxheW91dAorCisgICAgLy8gUHJpbWFyeSB0cmlnZ2Vy
IGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGF0IGluZGV4IDAKKyAgICBzdGF0ZS5idXR0b25zLmFw
cGVuZCh7CisgICAgICAgIC50b3VjaGVkID0gbV9wcmltYXJ5U2VsZWN0ZWQsCisgICAgICAgIC5w
cmVzc2VkID0gbV9wcmltYXJ5U2VsZWN0ZWQsCisgICAgICAgIC5wcmVzc2VkVmFsdWUgPSBtX3By
aW1hcnlTZWxlY3RlZCA/IDEuMGYgOiAwLjBmCisgICAgfSk7CisKKyAgICAvLyBOZXh0IGJ1dHRv
bnMgaW4geHItc3RhbmRhcmQgb3JkZXIKKyAgICBmb3IgKGF1dG8gYnV0dG9uVHlwZSA6IFhSX1NU
QU5EQVJEX0JVVFRPTlMpIHsKKyAgICAgICAgYXV0byBkYXRhID0gZ2V0QnV0dG9uT3JQbGFjZWhv
bGRlcihidXR0b25UeXBlKTsKKyAgICAgICAgaWYgKGRhdGEuYnV0dG9uKQorICAgICAgICAgICAg
c3RhdGUuYnV0dG9ucy5hcHBlbmQoKmRhdGEuYnV0dG9uKTsKKyAgICAgICAgaWYgKGRhdGEuYXhl
cykKKyAgICAgICAgICAgIHN0YXRlLmF4ZXMuYXBwZW5kVmVjdG9yKCpkYXRhLmF4ZXMpOworCisg
ICAgfQorCisgICAgaWYgKG1fc2ltdWxhdGVTZWxlY3QpIHsKKyAgICAgICAgbV9wcmltYXJ5U2Vs
ZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgbV9zaW11bGF0ZVNlbGVjdCA9IGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiBzdGF0ZTsKIH0KIAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6
OnVwZGF0ZUJ1dHRvblN0YXRlKEZha2VYUkJ1dHRvblN0YXRlSW5pdCkKK1dlYkZha2VYUklucHV0
Q29udHJvbGxlcjo6QnV0dG9uT3JQbGFjZWhvbGRlciBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6
OmdldEJ1dHRvbk9yUGxhY2Vob2xkZXIoRmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlIGJ1dHRv
blR5cGUpIGNvbnN0CiB7CisgICAgQnV0dG9uT3JQbGFjZWhvbGRlciByZXN1bHQ7CisKKyAgICBh
dXRvIGl0ID0gbV9idXR0b25zLmZpbmQoYnV0dG9uVHlwZSk7CisgICAgaWYgKGl0ICE9IG1fYnV0
dG9ucy5lbmQoKSkgeworICAgICAgICByZXN1bHQuYnV0dG9uID0gSW5wdXRTb3VyY2VCdXR0b24g
eworICAgICAgICAgICAgLnRvdWNoZWQgPSBpdC0+dmFsdWUudG91Y2hlZCwKKyAgICAgICAgICAg
IC5wcmVzc2VkID0gaXQtPnZhbHVlLnByZXNzZWQsCisgICAgICAgICAgICAucHJlc3NlZFZhbHVl
ID0gaXQtPnZhbHVlLnByZXNzZWRWYWx1ZQorICAgICAgICB9OworCisgICAgICAgIGlmIChidXR0
b25UeXBlID09IEJ1dHRvblR5cGU6OlRvdWNocGFkIHx8IGJ1dHRvblR5cGUgPT0gQnV0dG9uVHlw
ZTo6VGh1bWJzdGljaykKKyAgICAgICAgICAgIHJlc3VsdC5heGVzID0gVmVjdG9yPGZsb2F0PiB7
IGl0LT52YWx1ZS54VmFsdWUsIGl0LT52YWx1ZS55VmFsdWUgfTsKKworICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIEFkZCBhIHBsYWNlaG9sZGVyIGlmIG5lZWRlZAorICAgICAgICAvLyBEZXZpY2Vz
IHRoYXQgbGFjayBvbmUgb2YgdGhlIG9wdGlvbmFsIGlucHV0cyBsaXN0ZWQgaW4gdGhlIHRhYmxl
cyBhYm92ZSBNVVNUIHByZXNlcnZlIHRoZWlyIHBsYWNlIGluIHRoZQorICAgICAgICAvLyBidXR0
b25zIG9yIGF4ZXMgYXJyYXksIHJlcG9ydGluZyBhIHBsYWNlaG9sZGVyIGJ1dHRvbiBvciBwbGFj
ZWhvbGRlciBheGlzLCByZXNwZWN0aXZlbHkuCisgICAgICAgIGlmIChidXR0b25UeXBlICE9IEJ1
dHRvblR5cGU6Ok9wdGlvbmFsQnV0dG9uIHx8IGJ1dHRvblR5cGUgIT0gQnV0dG9uVHlwZTo6T3B0
aW9uYWxUaHVtYnN0aWNrKSB7CisgICAgICAgICAgICBhdXRvIHByaW9yaXR5ID0gc3RkOjpmaW5k
KFhSX1NUQU5EQVJEX0JVVFRPTlMuYmVnaW4oKSwgWFJfU1RBTkRBUkRfQlVUVE9OUy5lbmQoKSwg
YnV0dG9uVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQocHJpb3JpdHkgIT0gWFJfU1RBTkRBUkRf
QlVUVE9OUy5lbmQoKSk7CisKKyAgICAgICAgICAgIGZvciAoYXV0byBpdCA9IHByaW9yaXR5ICsg
MTsgaXQgIT0gWFJfU1RBTkRBUkRfQlVUVE9OUy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAg
ICAgIGlmIChtX2J1dHRvbnMuY29udGFpbnMoKml0KSkgeworICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYnV0dG9uID0gSW5wdXRTb3VyY2VCdXR0b24oKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGJ1dHRvblR5cGUgPT0gQnV0dG9uVHlwZTo6VG91Y2hwYWQgJiYgbV9idXR0b25z
LmNvbnRhaW5zKEJ1dHRvblR5cGU6OlRodW1ic3RpY2spKQorICAgICAgICAgICAgcmVzdWx0LmF4
ZXMgPSBWZWN0b3I8ZmxvYXQ+IHsgMC4wLCAwLjAgfTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaAppbmRleCBkMjhjZWE0Zjg2ZWE5Y2E0
NjU2ZWJkZjhjNTI1MWVmNGI5MjQ5OWNkLi44YjViY2YzNjQ3ZWZjYWRjNjliYjY4YTYxMGEzZGM5
OTM0MTFjYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklu
cHV0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5w
dXRDb250cm9sbGVyLmgKQEAgLTI4LDkgKzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQlhSKQogCiAj
aW5jbHVkZSAiRmFrZVhSQnV0dG9uU3RhdGVJbml0LmgiCisjaW5jbHVkZSAiRmFrZVhSSW5wdXRT
b3VyY2VJbml0LmgiCiAjaW5jbHVkZSAiRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1YUi5oIgogI2luY2x1ZGUgIlhSSGFuZGVkbmVzcy5oIgogI2luY2x1ZGUg
IlhSVGFyZ2V0UmF5TW9kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTM4LDM2ICs0
MSw0NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkZha2VYUklucHV0Q29udHJv
bGxlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkZha2VYUklucHV0Q29udHJvbGxlcik7IH0K
LQotICAgIHZvaWQgc2V0SGFuZGVkbmVzcyhYUkhhbmRlZG5lc3MpOwotCi0gICAgdm9pZCBzZXRU
YXJnZXRSYXlNb2RlKFhSVGFyZ2V0UmF5TW9kZSk7Ci0KLSAgICB2b2lkIHNldFByb2ZpbGVzKFZl
Y3RvcjxTdHJpbmc+KTsKKyAgICBzdGF0aWMgUmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4g
Y3JlYXRlKFBsYXRmb3JtWFI6OklucHV0U291cmNlSGFuZGxlLCBjb25zdCBGYWtlWFJJbnB1dFNv
dXJjZUluaXQmKTsKIAorICAgIHZvaWQgc2V0SGFuZGVkbmVzcyhYUkhhbmRlZG5lc3MgaGFuZGVu
ZXNzKSB7IG1faGFuZGVuZXNzID0gaGFuZGVuZXNzOyB9CisgICAgdm9pZCBzZXRUYXJnZXRSYXlN
b2RlKFhSVGFyZ2V0UmF5TW9kZSBtb2RlKSB7IG1fdGFyZ2V0UmF5TW9kZSA9IG1vZGU7IH0KKyAg
ICB2b2lkIHNldFByb2ZpbGVzKFZlY3RvcjxTdHJpbmc+JiYgcHJvZmlsZXMpIHsgbV9wcm9maWxl
cyA9IFdURk1vdmUocHJvZmlsZXMpOyB9CiAgICAgdm9pZCBzZXRHcmlwT3JpZ2luKEZha2VYUlJp
Z2lkVHJhbnNmb3JtSW5pdCBncmlwT3JpZ2luLCBib29sIGVtdWxhdGVkUG9zaXRpb24gPSBmYWxz
ZSk7Ci0KLSAgICB2b2lkIGNsZWFyR3JpcE9yaWdpbigpOwotCisgICAgdm9pZCBjbGVhckdyaXBP
cmlnaW4oKSB7IG1fZ3JpcE9yaWdpbiA9IFdURjo6bnVsbG9wdDsgfQogICAgIHZvaWQgc2V0UG9p
bnRlck9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9pbnRlck9yaWdpbiwgYm9vbCBl
bXVsYXRlZFBvc2l0aW9uID0gZmFsc2UpOwotCiAgICAgdm9pZCBkaXNjb25uZWN0KCk7Ci0KICAg
ICB2b2lkIHJlY29ubmVjdCgpOworICAgIHZvaWQgc3RhcnRTZWxlY3Rpb24oKSB7IG1fcHJpbWFy
eVNlbGVjdGVkID0gdHJ1ZTsgfQorICAgIHZvaWQgZW5kU2VsZWN0aW9uKCkgeyBtX3ByaW1hcnlT
ZWxlY3RlZCA9IGZhbHNlOyB9CisgICAgdm9pZCBzaW11bGF0ZVNlbGVjdCgpIHsgbV9zaW11bGF0
ZVNlbGVjdCA9IHRydWU7IH0KKyAgICB2b2lkIHNldFN1cHBvcnRlZEJ1dHRvbnMoY29uc3QgVmVj
dG9yPEZha2VYUkJ1dHRvblN0YXRlSW5pdD4mKTsKKyAgICB2b2lkIHVwZGF0ZUJ1dHRvblN0YXRl
KGNvbnN0IEZha2VYUkJ1dHRvblN0YXRlSW5pdCYpOworICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBj
b25zdCB7IHJldHVybiBtX2Nvbm5lY3RlZDsgfQogCi0gICAgdm9pZCBzdGFydFNlbGVjdGlvbigp
OwotCi0gICAgdm9pZCBlbmRTZWxlY3Rpb24oKTsKLQotICAgIHZvaWQgc2ltdWxhdGVTZWxlY3Qo
KTsKLQotICAgIHZvaWQgc2V0U3VwcG9ydGVkQnV0dG9ucyhWZWN0b3I8RmFrZVhSQnV0dG9uU3Rh
dGVJbml0Pik7Ci0KLSAgICB2b2lkIHVwZGF0ZUJ1dHRvblN0YXRlKEZha2VYUkJ1dHRvblN0YXRl
SW5pdCk7CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlIGdl
dEZyYW1lRGF0YSgpOwogCiBwcml2YXRlOgotICAgIFdlYkZha2VYUklucHV0Q29udHJvbGxlcigp
ID0gZGVmYXVsdDsKKyAgICBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIoUGxhdGZvcm1YUjo6SW5w
dXRTb3VyY2VIYW5kbGUsIGNvbnN0IEZha2VYUklucHV0U291cmNlSW5pdCYpOworCisgICAgc3Ry
dWN0IEJ1dHRvbk9yUGxhY2Vob2xkZXIgeworICAgICAgICBPcHRpb25hbDxQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+IGJ1dHRvbjsKKyAgICAgICAgT3B0
aW9uYWw8VmVjdG9yPGZsb2F0Pj4gYXhlczsKKyAgICB9OworICAgIEJ1dHRvbk9yUGxhY2Vob2xk
ZXIgZ2V0QnV0dG9uT3JQbGFjZWhvbGRlcihGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGUpIGNv
bnN0OworCisgICAgUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgbV9oYW5kbGUgeyAwIH07
CisgICAgWFJIYW5kZWRuZXNzIG1faGFuZGVuZXNzIHsgWFJIYW5kZWRuZXNzOjpOb25lIH07Cisg
ICAgWFJUYXJnZXRSYXlNb2RlIG1fdGFyZ2V0UmF5TW9kZSB7IFhSVGFyZ2V0UmF5TW9kZTo6R2F6
ZSB9OworICAgIFZlY3RvcjxTdHJpbmc+IG1fcHJvZmlsZXM7CisgICAgUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSBtX3BvaW50ZXJPcmlnaW47CisgICAgT3B0
aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZT4gbV9n
cmlwT3JpZ2luOworICAgIEhhc2hNYXA8RmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlLCBGYWtl
WFJCdXR0b25TdGF0ZUluaXQsIFdURjo6SW50SGFzaDxGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5
cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlw
ZT4+IG1fYnV0dG9uczsKKyAgICBib29sIG1fY29ubmVjdGVkIHsgdHJ1ZSB9OworICAgIGJvb2wg
bV9wcmltYXJ5U2VsZWN0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zaW11bGF0ZVNlbGVjdCB7
IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtl
CmluZGV4IDc0MzQ3ZGIyNjNlZWQzYTc0ZGZkMTA1NjQ5MjBjNDY5MmE0ZmNhNjcuLjdhZjYwOGNi
NmViNWQxZGI2YTk3ODljYWZlNDZlNDY0NWQ5YzUwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFr
ZS9PcHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCkBA
IC0yMDMsNiArMjAzLDcgQEAgaWYgKEVOQUJMRV9XRUJYUikKICAgICBpZiAoTk9UIE9QRU5YUl9G
T1VORCkKICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiT3BlblhSIGlzIHJlcXVpcmVkIHRv
IGVuYWJsZSBXZWJYUiBzdXBwb3J0LiIpCiAgICAgZW5kaWYgKCkKKyAgICBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChFTkFCTEVfR0FNRVBBRCBPTikKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChVU0VfT1BFTlhSICR7T3BlblhSX0ZPVU5EfSkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChYUl9VU0VfUExBVEZPUk1fRUdMIFRSVUUpCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQo
WFJfVVNFX0dSQVBISUNTX0FQSV9PUEVOR0wgVFJVRSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNzVmYzhlNGNmMmFhM2Jj
M2RlMWU4YzYzODQ4ZTI3MTM0YzE1ZWEzLi43NGFiZDNmYzViMDQ3ZjY1OWZmNDdlZjA5YWUzMDFj
NTk2OGU5ODIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDMtMTYgIEltYW5vbCBGZXJu
YW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhS
IElucHV0IFNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSBXZWJYUiBJbnB1dCBTb3VyY2UgdGVzdCBleHBlY3RhdGlvbnMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wNC0wNyAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIElnbm9yZSBub24tbnVsbCBsYXN0
UXVvdGUgQVNTRVJUIHdoZW4gY29udGludWF0aW9uIGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggOWNiZWM1ZDZmMzQyYmQ2YjgzMjMzNDgxZmJlOWQ3OGFhNDc0OTQ3
MS4uOGVmMWQyYTg5OTQ2MDU4YjM2NDkzYzAzY2UwMTkxMmFlNjU2MTdmZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDMtMTYgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdl
YlhSIElucHV0IFNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMzI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBXZWJYUiBJbnB1dCBTb3VyY2UgdGVzdCBleHBlY3RhdGlvbnMuCisK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZV9y
ZWNyZWF0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL2V2ZW50c19pbnB1dF9zb3VyY2VzX2NoYW5nZS5odHRwcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNf
c2Vzc2lvbl9zZWxlY3QuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0X3N1YmZyYW1lLmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L2V2ZW50c19zZXNzaW9uX3NxdWVlemUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0SW5wdXRQb3NlX2hhbmRlZG5lc3MuaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJJbnB1dFNvdXJjZV9hZGRfcmVtb3ZlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfZW11bGF0ZWRQ
b3NpdGlvbi5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3Byb2ZpbGVzLmh0dHBzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2Vf
c2FtZU9iamVjdC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorCiAyMDIxLTA0LTA2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEVuYWJsZSBpbmxpbmUgYm94IHN1
cHBvcnQgKFJlbmRlcklubGluZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZV9yZWNyZWF0aW9u
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZV9yZWNyZWF0aW9uLmh0dHBzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNzA1MWU5MjA2ZmE0YmRkODlmYjgxYjRlYjBiMDkwYmEyMmIw
NDcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlX3JlY3JlYXRpb24uaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIElucHV0IHNvdXJjZXMgYXJlIHJlLWNy
ZWF0ZWQgd2hlbiBoYW5kZWRuZXNzIG9yIHRhcmdldCByYXkgbW9kZSBjaGFuZ2VzCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
ZXZlbnRzX2lucHV0X3NvdXJjZXNfY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3Nv
dXJjZXNfY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGRiMTI2MDYyZmJm
MjZlNWFlMGIzMzk1ODk5MDFhOGVkOGJlZWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291
cmNlc19jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFRy
YW5zaWVudCBpbnB1dCBzb3VyY2VzIGZpcmUgZXZlbnRzIGluIHRoZSByaWdodCBvcmRlcgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3Nl
bGVjdC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIxNjllOTgwMDJlOWYwZjg5ZWY4
NzQ0YzczOTAwZTNhZTIzNTU5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0Lmh0
dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBYUklucHV0U291cmNlcyBw
cmltYXJ5IGlucHV0IHByZXNzZXMgcHJvcGVybHkgZmlyZXMgb2ZmIHRoZSByaWdodCBldmVudHMK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUuaHR0cHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVu
dHNfc2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdkM2RmYmUzMWYyYjUwZWFjZWEyODU1MjdiMjI5MmE1MWY1MjcyZTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2
ZW50c19zZXNzaW9uX3NlbGVjdF9zdWJmcmFtZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzIEBACisKK1BBU1MgRW5zdXJlcyB0aGF0IGFuIFhSSW5wdXRTb3VyY2VzIHByaW1hcnkgaW5w
dXQgYmVpbmcgcHJlc3NlZCBhbmQgcmVsZWFzZWQgaW4gdGhlIHNwYWNlIG9mIGEgc2luZ2xlIGZy
YW1lIHByb3Blcmx5IGZpcmVzIG9mZiB0aGUgcmlnaHQgZXZlbnRzCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nl
c3Npb25fc3F1ZWV6ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NxdWVlemUuaHR0cHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMTY5ZTk4MDAyZTlmMGY4OWVmODc0NGM3MzkwMGUz
YWUyMzU1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NxdWVlemUuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSSW5wdXRTb3VyY2VzIHByaW1hcnkgaW5w
dXQgcHJlc3NlcyBwcm9wZXJseSBmaXJlcyBvZmYgdGhlIHJpZ2h0IGV2ZW50cworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dl
dElucHV0UG9zZV9oYW5kZWRuZXNzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0SW5wdXRQb3NlX2hhbmRlZG5l
c3MuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4OWU3YWUzZWJlYmYxZTYxNGEzNWI0
YmI3M2IxOGRhNTE1NDJlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9oYW5kZWRuZXNzLmh0
dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBYUklucHV0U291cmNlcyBw
cm9wZXJseSBjb21tdW5pY2F0ZSB0aGVpciBoYW5kZWRuZXNzCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJj
ZV9hZGRfcmVtb3ZlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9hZGRfcmVtb3ZlLmh0dHBz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGI1NjRiZjg1N2Q1M2RlN2M4MzJjM2QyNWI0MGUy
MTNmOWEyNDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2FkZF9yZW1vdmUuaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSSW5wdXRTb3VyY2VzIGNhbiBiZSBw
cm9wZXJseSBhZGRlZCBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBzZXNzaW9uCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1
dFNvdXJjZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9lbXVs
YXRlZFBvc2l0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWE3MDdmNmNlNDRl
ZjY0OGY0NGYwZGFjNjk1ZTI3ZGMwZjU2NTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2Vt
dWxhdGVkUG9zaXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNT
IFBvc2VzIGZyb20gWFJJbnB1dFNvdXJjZS5ncmlwU3BhY2UgaGF2ZSBlbXVsYXRlZFBvc2l0aW9u
IHNldCBwcm9wZXJseQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfcHJvZmlsZXMuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94cklucHV0U291cmNlX3Byb2ZpbGVzLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZDE3NmVkNzZlMTk5Y2VhNzc0YmQxMmI5ZjhlOWYwZjQzYjQ0ZGYxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklu
cHV0U291cmNlX3Byb2ZpbGVzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKwor
UEFTUyBXZWJYUiBJbnB1dFNvdXJjZSdzIHByb2ZpbGVzIGxpc3QgY2FuIGJlIHNldAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hySW5wdXRTb3VyY2Vfc2FtZU9iamVjdC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2Vfc2Ft
ZU9iamVjdC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThiMjBiY2Y1ZWJkMGVlZTM4
NjJkMGM1OWM3MzAwOWM4MjRiZjM0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9zYW1lT2Jq
ZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBYUklucHV0U291
cmNlIGF0dHJpYnV0ZXMgbWVldCBbU2FtZU9iamVjdF0gcmVxdWlyZW1lbnQKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJl
ZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vf
b3JpZ2luT2Zmc2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzM0Y2ZjMmNjNzY1
OWViNGZiMGEzMWMwOTU4NDhjYzMyYmFkMjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNl
X29yaWdpbk9mZnNldC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1Mg
VXBkYXRpbmcgWFJSZWZlcmVuY2VTcGFjZSBvcmlnaW4gb2Zmc2V0IHVwZGF0ZXMgdmlldyBhbmQg
aW5wdXQgbWF0cmljZXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggZmUzYzRiOWM3YjQ4MzU4OWMyMjEwMjJjZTJjZjI3OTU4ZTc5NGMwYS4uNjg3YWE2
MTNmNzNmZjAzY2ZlOTQ1MmE1YjMzOWE5OWJlNWI3ZTg4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYzMyw2ICs2MzMsMTEgQEAgd2Via2l0Lm9yZy9i
LzIxMzEzMSBnYW1lcGFkIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjEzMTMxIGh0dHAvdGVzdHMv
bWlzYy9nYW1lcGFkcy1pbnNlY3VyZS5odG1sIFsgU2tpcCBdCiAKICMgV2ViWFIKK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZV9yZWNyZWF0
aW9uLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZXNfY2hhbmdlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0
X3N1YmZyYW1lLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc3F1ZWV6
ZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjEyODk3IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuaHRtbCBbIEZh
aWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckJvdW5kZWRS
ZWZlcmVuY2VTcGFjZV91cGRhdGVzLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8y
MDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJHTENhbnZhc0Nv
bnRleHRfY3JlYXRlX3hyY29tcGF0aWJsZS5odHRwcy5odG1sIFsgUGFzcyBdCkBAIC02NDcsMTAg
KzY1MiwxNSBAQCB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npbwogd2Via2l0Lm9yZy9iLzIwOTg1OSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNz
aW9uX25vX21vZGUuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9u
X25vbl9pbW1lcnNpdmVfbm9fZ2VzdHVyZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3Jn
L2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2Vf
cmVxdWVzdFNlc3Npb25fb3B0aW9uYWxGZWF0dXJlcy5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9oYW5kZWRuZXNz
Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIvZ2V0Vmlld2VyUG9zZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRWaWV3ZXJQb3Nl
X2dldFBvc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFBvc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX3Nlc3Npb25fc2FtZU9iamVjdC5o
dHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hySW5wdXRTb3VyY2VfYWRkX3JlbW92ZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfZW11bGF0ZWRQb3NpdGlv
bi5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hySW5wdXRTb3VyY2VfcHJvZmlsZXMuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3NhbWVPYmplY3QuaHR0
cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clNlc3Npb25fdmlld2VyX2F2YWlsYWJpbGl0eS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQu
b3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9k
dWxlL2lkbGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8y
MDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJE
ZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2ltbWVyc2l2ZS1hci5odHRwcy5odG1sIFsgUGFzcyBd
CkBAIC02NTgsNiArNjY4LDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clZpZXdfZXllcy5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyVmlld19tYXRjaC5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19vbmVmcmFtZXVwZGF0ZS5odHRw
cy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL25h
dmlnYXRvcl94cl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXQuaHR0
cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMuaHRtbCBbIFBhc3MgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX3Jl
bGF0aW9uc2hpcHMuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX2NvbnN0cnVjdG9yLmh0dHBzLmh0bWwgWyBQ
YXNzIF0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlMjA1OTQxOGJm
OTI4ZjRjYTk1ODIwYWRhNzhkNDMyZWE5YzkxZWUzLi41YjQ2NDVlZWI0ZDA1NTA1MTQxYTlhNWNl
NTNiMTYzMmYzZWUyNDlhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjEtMDMtMTYgIEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6
QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIElucHV0IFNvdXJjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzI1NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBXUEUg
R2FtZXBhZCB3aGVuIFdlYlhSIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc1dQRS5jbWFrZToKKwogMjAyMS0wNC0wNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIC5naXRpZ25vcmUgY29udGFpbnMgJ2J1aWxkLycgd2hp
Y2ggY2F1c2VzIGFsbCBkaXJlY3RvcmllcyBuYW1lZCAnYnVpbGQvJyB0byBiZSBpZ25vcmVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426234</attachid>
            <date>2021-04-16 09:17:34 -0700</date>
            <delta_ts>2021-04-22 04:51:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223257-20210416181733.patch</filename>
            <type>text/plain</type>
            <size>91473</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VkNjAyMmQ5YmFlNTVm
YTI5NTNhMzZkOGRkZDg0NDBmOWE1OTA4Yy4uZjZlMGNlZWVjNGEyYTgwZjcwNjgyYzBhZWRmMWU1
ZGQzZGU0NmQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMS0wMy0xNiAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBwbGF0Zm9ybSBkYXRhIGRl
ZmluaXRpb24gYW5kIHRoZSBET00gYml0cyByZXF1aXJlZCB0byBzdXBwb3J0IFdlYlhSIElucHV0
IFNvdXJjZXMsIHRoZSBpbnB1dCBtZWNoYW5pc20gdXNlZCBpbiBXZWJYUi4KKyAgICAgICAgRXhh
bXBsZSBYUiBpbnB1dCBzb3VyY2VzIGluY2x1ZGUsIGJ1dCBhcmUgbm90IGxpbWl0ZWQgdG8sIGhh
bmRoZWxkIGNvbnRyb2xsZXJzLCBvcHRpY2FsbHkgdHJhY2tlZCBoYW5kcywgYW5kIGdhemUtYmFz
ZWQgaW5wdXQgbWV0aG9kcy4KKworICAgICAgICBNb3JlIGluZm8gYWJvdXQgdGhlIEFQSSBpbjoK
KyAgICAgICAgLSBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNpbnB1dAor
ICAgICAgICAtIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMt
bW9kdWxlLyN3ZWJ4ci1kZXZpY2UtYXBpLWludGVncmF0aW9uCisKKyAgICAgICAgVGVzdGVkIGJ5
IFdlYlhSIFdQVC4KKworICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmg6IEFkZCBz
ZXRDb25uZWN0ZWQgbWV0aG9kLgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkdhbWVw
YWQuY3BwOiBCcmlkZ2UgYmV0d2VlbiBXZWJYUklucHV0U291cmNlIGFuZCBHYW1lcGFkCisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUkdhbWVwYWQ6OldlYlhSR2FtZXBhZCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJ4ci9XZWJYUkdhbWVwYWQuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJJbnB1dFNwYWNlLmNwcDogSW5zdGFuY2Ugb2YgV2ViWFJTcGFjZSB1c2VkIGZvciBXZWJYUklu
cHV0U291cmNlIHNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFjZTo6V2ViWFJJbnB1dFNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5oOgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
RnJhbWU6OnBvcHVsYXRlUG9zZSk6IHNldCBlbXVsYXRlZFBvc2l0aW9uIGJhc2VkIG9uIHRoZSBz
cGFjZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwOiBD
b21wbGV0ZSBXZWJYUklucHV0U291cmNlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1
dFNwYWNlOjpXZWJYUklucHV0U3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNw
YWNlOjpuYXRpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNv
dXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OldlYlhS
SW5wdXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6dXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OnJlcXVpcmVzSW5wdXRTb3Vy
Y2VDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6ZGlzY29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjpwb2xsRXZlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZUV2ZW50KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSSW5wdXRTb3VyY2U6OmhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklu
cHV0U291cmNlOjpoYW5kZWRuZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5w
dXRTb3VyY2U6OnRhcmdldFJheU1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJ
bnB1dFNvdXJjZTo6dGFyZ2V0UmF5U3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZTo6Z3JpcFNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
SW5wdXRTb3VyY2U6OnByb2ZpbGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5w
dXRTb3VyY2U6OmdhbWVwYWQgY29uc3QpOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U291cmNlLmlkbDogQWRkIGdhbWVwYWQgYXR0cmlidXRlLgorCisgICAgICAgICogTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwOiBJbXBsZW1lbnQgaW5wdXQgc291
cmNlIHVwZGF0ZXMgYW5kIGV2ZW50IGRpc3BhdGNoaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1
dFNvdXJjZUFycmF5OjpXZWJYUklucHV0U291cmNlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJJbnB1dFNvdXJjZUFycmF5OjppdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSSW5wdXRTb3VyY2VBcnJheTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1
dFNvdXJjZUFycmF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJj
ZUFycmF5OjpoYW5kbGVSZW1vdmVkSW5wdXRTb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSSW5wdXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMpOgor
ICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5Lmg6CisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbik6IFNldCB0cmFja2luZyBkZWxlZ2F0ZSBiZWZvcmUg
aW5pdGlhbGl6aW5nIHRyYWNraW5nIGFuZCByZW5kZXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNlc3Npb246OmlzUG9zaXRpb25FbXVsYXRlZCBjb25zdCk6IEFkZCBoZWxwZXIgbWV0aG9k
LgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpzaHV0ZG93bik6IENsZWFyIFdlYlhS
SW5wdXRTb3VyY2VBcnJheSBpbnN0YW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lv
bjo6c2Vzc2lvbkRpZEluaXRpYWxpemVJbnB1dFNvdXJjZXMpOiBEaXNwYXRjaCBpbml0aWFsIElu
cHV0U291cmNlIGRpc2NvdmVyeSBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lv
bjo6b25GcmFtZSk6IFVwZGF0ZSBXZWJYUklucHV0U291cmNlQXJyYXkgaW5zdGFuY2UuCisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaDoKKworICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJTcGFjZS5jcHA6IEFkZCB2aXJ0dWFsIGNsYXNzIGlzUG9zaXRpb25FbXVsYXRl
ZCB0byBiZSB1c2VkIGluIFdlYlhSRnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNl
Ojppc1Bvc2l0aW9uRW11bGF0ZWQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJTcGFjZS5oOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6cmVxdWVzdFNlc3Npb24pOiB1cGRhdGUgRklY
TUUgY29tbWVudC4KKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvWFJIYW5kZWRuZXNzLmg6IFJl
dXNlIFBsYXRmb3JtWFIgZW51bS4KKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvWFJJbnB1dFNv
dXJjZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhSSW5wdXRTb3VyY2VFdmVudDo6WFJJ
bnB1dFNvdXJjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlhSSW5wdXRTb3VyY2VFdmVudDo6
c2V0RnJhbWVBY3RpdmUpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZUV2
ZW50Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZl
bnQuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvWFJUYXJnZXRSYXlNb2RlLmg6IFJldXNl
IFBsYXRmb3JtWFIgZW51bS4KKworICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENv
bnN0YW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdT
dHJpbmcpOiBBZGQgeHItc3RhbmRhcmQgZ2FtZXBhZCBtYXBwaW5nIG5hbWUuCisgICAgICAgICog
cGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6IEFkZCBJbnB1dCBTb3VyY2UgZnJhbWUgZGF0YS4KKworICAgICAg
ICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcDogSW1wbGVtZW50IHJlcXVpcmVkIGNoYW5n
ZXMgdG8gcnVuIGFuZCBwYXNzIFdlYlhSIElucHV0IFNvdXJjZSB0ZXN0cy4KKyAgICAgICAgKFdl
YkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1lVGltZXJGaXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNpbXVsYXRlUmVzZXRQb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmljZTo6c2ltdWxhdGVJbnB1dFNvdXJjZUNv
bm5lY3Rpb24pOgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmg6CisgICAgICAg
ICogdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRHcmlwT3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0UG9pbnRlck9y
aWdpbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmRpc2Nv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpyZWNv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRT
dXBwb3J0ZWRCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUklucHV0Q29udHJv
bGxlcjo6dXBkYXRlQnV0dG9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5w
dXRDb250cm9sbGVyOjpnZXRGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyOjpnZXRCdXR0b25PclBsYWNlaG9sZGVyIGNvbnN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oOgorCiAyMDIxLTA0LTE2ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIEJsZW5kIHVzaW5nIGNh
bGMoKSB3aGVuIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
YW1lcGFkL0dhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFk
LmgKaW5kZXggOGYxOTMzNDE2MDVjYzYwMTAxNjBkMWUyOGQyNjc5MDY1YzRjNjE3Ny4uNDNjZWQ1
NDU3ZjJmNGZkNGE0NzZiNWQzNjJhNGE5ZGFjNTBhMGYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dhbWVwYWQvR2FtZXBhZC5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBWZWN0b3I8UmVmPEdhbWVwYWRCdXR0b24+PiYgYnV0dG9ucygpIGNvbnN0OwogCiAgICAgdm9p
ZCB1cGRhdGVGcm9tUGxhdGZvcm1HYW1lcGFkKGNvbnN0IFBsYXRmb3JtR2FtZXBhZCYpOworICAg
IHZvaWQgc2V0Q29ubmVjdGVkKGJvb2wgY29ubmVjdGVkKSB7IG1fY29ubmVjdGVkID0gY29ubmVj
dGVkOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgR2FtZXBhZChjb25zdCBQbGF0Zm9ybUdh
bWVwYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCmlu
ZGV4IGY0NWZiMTE0NzVhMmQ4MjQwZjZiZjQ3ODA2YjQwMDk4NDhjYjA4N2QuLjc4ZjQxZDliOGZk
OTZlYjhjMGZkMTVhZWUzZDMxYjgzZWIyMWM5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEV4Y2VwdGlvbk9yPE9w
dGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBv
c2UoY29uc3QKICAgICAvLyA3LiBMZXQgdHJhbnNmb3JtIGJlIHBvc2XigJlzIHRyYW5zZm9ybS4K
ICAgICAvLyA4LiBRdWVyeSB0aGUgWFIgZGV2aWNlJ3MgdHJhY2tpbmcgc3lzdGVtIGZvciBzcGFj
ZeKAmXMgcG9zZSByZWxhdGl2ZSB0byBiYXNlU3BhY2UgYXQgdGhlIGZyYW1l4oCZcyB0aW1lLgog
Ci0gICAgaWYgKCFtX2RhdGEuaXNUcmFja2luZ1ZhbGlkKSB7CisgICAgaWYgKG1faXNBbmltYXRp
b25GcmFtZSAmJiAhbV9kYXRhLmlzVHJhY2tpbmdWYWxpZCkgewogICAgICAgICAvLyBGSVhNRTog
Y2hlY2sgaWYgc3BhY2XigJlzIHBvc2UgcmVsYXRpdmUgdG8gYmFzZVNwYWNlIGhhcyBiZWVuIGRl
dGVybWluZWQgaW4gdGhlIHBhc3QuCiAgICAgICAgIC8vIEFueXdheSB0aGlzIGVtdWxhdGlvbiBp
cyB1c3VhbGx5IHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0gaW4gdGhlIHBvc2UgKGUuZy4gT3BlblhS
KQogICAgICAgICAvLyBzbyB3ZSBzaG91bGRuJ3QgaGl0IHRoaXMgcGF0aCBpbiBtb3N0IFhSUGxh
dGZvcm0gcG9ydHMuCkBAIC0xMzEsNyArMTMxLDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8V2Vi
WFJGcmFtZTo6UG9wdWxhdGVkUG9zZT4+IFdlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZShjb25zdAog
ICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKIAogICAgIGF1dG8gdHJhbnNmb3JtID0g
ICpiYXNlVHJhbnNmb3JtLmludmVyc2UoKSAqIHNwYWNlLmVmZmVjdGl2ZU9yaWdpbigpOwotICAg
IGJvb2wgZW11bGF0ZWRQb3NpdGlvbiA9IG1fZGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQgfHwgIW1f
ZGF0YS5pc1Bvc2l0aW9uVmFsaWQ7CisgICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uID0gc3BhY2Uu
aXNQb3NpdGlvbkVtdWxhdGVkKCkgfHwgYmFzZVNwYWNlLmlzUG9zaXRpb25FbXVsYXRlZCgpOwog
CiAgICAgYm9vbCBsaW1pdCA9IG11c3RQb3Nlc0JlTGltaXRlZChzcGFjZSwgYmFzZVNwYWNlKTsK
ICAgICBpZiAobGltaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJH
YW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2MwNDdjMGQ3MTRhOTYxMWQ4OWYxOTdkZjQ5MTA1NzI2
ZTgzNTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkdhbWVwYWQuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlhSR2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKFdFQlhS
KSAmJiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVwYWQuaCIKKyNpbmNsdWRlICJH
YW1lcGFkQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiWFJUYXJnZXRSYXlNb2RlLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4
ci1nYW1lcGFkcy1tb2R1bGUvI2dhbWVwYWQtZGlmZmVyZW5jZXMKK1dlYlhSR2FtZXBhZDo6V2Vi
WFJHYW1lcGFkKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBjb25uZWN0VGltZSwgY29uc3QgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2UpCisgICAgOiBQ
bGF0Zm9ybUdhbWVwYWQoLTEpCit7CisgICAgbV9sYXN0VXBkYXRlVGltZSA9IE1vbm90b25pY1Rp
bWU6OmZyb21SYXdTZWNvbmRzKFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHModGltZXN0YW1wKS52
YWx1ZSgpKTsKKyAgICBtX2Nvbm5lY3RUaW1lID0gTW9ub3RvbmljVGltZTo6ZnJvbVJhd1NlY29u
ZHMoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhjb25uZWN0VGltZSkudmFsdWUoKSk7CisgICAg
Ly8gSW4gb3JkZXIgdG8gcmVwb3J0IGEgbWFwcGluZyBvZiAieHItc3RhbmRhcmQiIHRoZSBkZXZp
Y2UgTVVTVCByZXBvcnQgYSB0YXJnZXRSYXlNb2RlIG9mICJ0cmFja2VkLXBvaW50ZXIiIGFuZCBN
VVNUIGhhdmUgYSBub24tbnVsbCBncmlwU3BhY2UuCisgICAgLy8gSXQgTVVTVCBoYXZlIGF0IGxl
YXN0IG9uZSBwcmltYXJ5IHRyaWdnZXIsIHNlcGFyYXRlIGZyb20gYW55IHRvdWNocGFkcyBvciB0
aHVtYnN0aWNrcworICAgIGlmIChzb3VyY2UudGFyZ2V0UmF5TW9kZSA9PSBYUlRhcmdldFJheU1v
ZGU6OlRyYWNrZWRQb2ludGVyICYmICFzb3VyY2UuYnV0dG9ucy5pc0VtcHR5KCkgJiYgc291cmNl
LmdyaXBPcmlnaW4uaGFzVmFsdWUoKSkKKyAgICAgICAgbV9tYXBwaW5nID0geHJTdGFuZGFyZEdh
bWVwYWRNYXBwaW5nU3RyaW5nKCk7CisgICAgbV9heGVzID0gc291cmNlLmF4ZXMubWFwKFtdKGF1
dG8gdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEdhbWVwYWRWYWx1ZSh2YWx1ZSk7Cisg
ICAgfSk7CisgICAgbV9idXR0b25zID0gc291cmNlLmJ1dHRvbnMubWFwKFtdKGF1dG8mIHZhbHVl
KSB7CisgICAgICAgIHJldHVybiBTaGFyZWRHYW1lcGFkVmFsdWUodmFsdWUucHJlc3NlZFZhbHVl
KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKSAmJiBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSR2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwN2Y0YzcxZTEzYjkzODhkZjE4MGI0NzQ0
MWNhNmJhN2VhNGJkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSR2FtZXBhZC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpICYmIEVOQUJMRShHQU1FUEFEKQorCisjaW5j
bHVkZSAiUGxhdGZvcm1HYW1lcGFkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJYUkdh
bWVwYWQ6IHB1YmxpYyBQbGF0Zm9ybUdhbWVwYWQgeworcHVibGljOgorICAgIFdlYlhSR2FtZXBh
ZChkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgY29ubmVjdFRpbWUsIGNvbnN0IFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYpOworCitwcml2YXRlOgorICAgIGNvbnN0
IFZlY3RvcjxTaGFyZWRHYW1lcGFkVmFsdWU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9heGVzOyB9CisgICAgY29uc3QgVmVjdG9yPFNoYXJlZEdhbWVwYWRWYWx1ZT4mIGJ1
dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uczsgfQorCisgICAgVmVj
dG9yPFNoYXJlZEdhbWVwYWRWYWx1ZT4gbV9heGVzOworICAgIFZlY3RvcjxTaGFyZWRHYW1lcGFk
VmFsdWU+IG1fYnV0dG9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSW5wdXRTb3VyY2UuY3BwCmluZGV4IGYzMDc2NzUxMTk4ZGJiYzM3NmNiOTcxOWI4YTg3YjEy
YzYyMDE4ZGQuLmVkOTM5N2I4MTU5ZDdhMDk5OGQ2YmU2YzhhYWRiN2NiNGNjZWI4MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcApA
QCAtMjgsNTAgKzI4LDEyOSBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCi0jaW5jbHVkZSAiV2Vi
WFJTcGFjZS5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpZiBFTkFCTEUoR0FNRVBBRCkK
KyNpbmNsdWRlICJHYW1lcGFkLmgiCisjaW5jbHVkZSAiV2ViWFJHYW1lcGFkLmgiCisjZW5kaWYK
KyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCisjaW5j
bHVkZSAiWFJJbnB1dFNvdXJjZUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoV2ViWFJJbnB1dFNvdXJjZSk7CiAKLVJlZjxXZWJYUklucHV0U291cmNlPiBXZWJYUklucHV0
U291cmNlOjpjcmVhdGUoUmVmPFdlYlhSU3BhY2U+JiYgdGFyZ2V0UmF5U3BhY2UpCitSZWY8V2Vi
WFJJbnB1dFNvdXJjZT4gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKFJlZjxEb2N1bWVudD4mJiBk
b2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBkb3VibGUgdGltZXN0YW1wLCBj
b25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UmIHNvdXJjZSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U291cmNlKFdURk1vdmUodGFy
Z2V0UmF5U3BhY2UpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJj
ZShXVEZNb3ZlKGRvY3VtZW50KSwgV1RGTW92ZShzZXNzaW9uKSwgdGltZXN0YW1wLCBzb3VyY2Up
KTsKIH0KIAotV2ViWFJJbnB1dFNvdXJjZTo6V2ViWFJJbnB1dFNvdXJjZShSZWY8V2ViWFJTcGFj
ZT4mJiB0YXJnZXRSYXlTcGFjZSkKLSAgICA6IG1faGFuZGVkbmVzcyhYUkhhbmRlZG5lc3M6Ok5v
bmUpCi0gICAgLCBtX3RhcmdldFJheU1vZGUoWFJUYXJnZXRSYXlNb2RlOjpHYXplKQotICAgICwg
bV90YXJnZXRSYXlTcGFjZShXVEZNb3ZlKHRhcmdldFJheVNwYWNlKSkKK1dlYlhSSW5wdXRTb3Vy
Y2U6OldlYlhSSW5wdXRTb3VyY2UoUmVmPERvY3VtZW50PiYmIGRvY3VtZW50LCBSZWY8V2ViWFJT
ZXNzaW9uPiYmIHNlc3Npb24sIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNlKQorICAgIDogbV9kb2N1bWVudChk
b2N1bWVudC5jb3B5UmVmKCkpCisgICAgLCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAg
ICAsIG1fdGFyZ2V0UmF5U3BhY2UoV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoV1RGTW92ZShkb2N1
bWVudCksIG1fc2Vzc2lvbi5jb3B5UmVmKCksIHNvdXJjZS5wb2ludGVyT3JpZ2luKSkKKyAgICAs
IG1fY29ubmVjdFRpbWUodGltZXN0YW1wKQorI2lmIEVOQUJMRShHQU1FUEFEKQorICAgICwgbV9n
YW1lcGFkKEdhbWVwYWQ6OmNyZWF0ZShXZWJYUkdhbWVwYWQodGltZXN0YW1wLCB0aW1lc3RhbXAs
IHNvdXJjZSkpKQorI2VuZGlmCiB7CisgICAgdXBkYXRlKHRpbWVzdGFtcCwgc291cmNlKTsKIH0K
IAogV2ViWFJJbnB1dFNvdXJjZTo6fldlYlhSSW5wdXRTb3VyY2UoKSA9IGRlZmF1bHQ7CiAKLVhS
SGFuZGVkbmVzcyBXZWJYUklucHV0U291cmNlOjpoYW5kZWRuZXNzKCkgY29uc3QKK3ZvaWQgV2Vi
WFJJbnB1dFNvdXJjZTo6dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNlKQogewotICAgIHJldHVybiBt
X2hhbmRlZG5lc3M7CisjaWYgIUVOQUJMRShHQU1FUEFEKQorICAgIFVOVVNFRF9QQVJBTSh0aW1l
c3RhbXApOworI2VuZGlmCisgICAgbV9zb3VyY2UgPSBzb3VyY2U7CisgICAgbV90YXJnZXRSYXlT
cGFjZS0+c2V0UG9zZShzb3VyY2UucG9pbnRlck9yaWdpbik7CisgICAgaWYgKGF1dG8gZ3JpcE9y
aWdpbiA9IHNvdXJjZS5ncmlwT3JpZ2luKSB7CisgICAgICAgIGlmIChtX2dyaXBTcGFjZSkKKyAg
ICAgICAgICAgIG1fZ3JpcFNwYWNlLT5zZXRQb3NlKCpncmlwT3JpZ2luKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9ncmlwU3BhY2UgPSBXZWJYUklucHV0U3BhY2U6OmNyZWF0ZShtX2Rv
Y3VtZW50LmdldCgpLCBtX3Nlc3Npb24uY29weVJlZigpLCAqZ3JpcE9yaWdpbik7CisgICAgfSBl
bHNlCisgICAgICAgIG1fZ3JpcFNwYWNlID0gbnVsbHB0cjsKKyNpZiBFTkFCTEUoR0FNRVBBRCkK
KyAgICBtX2dhbWVwYWQtPnVwZGF0ZUZyb21QbGF0Zm9ybUdhbWVwYWQoV2ViWFJHYW1lcGFkKHRp
bWVzdGFtcCwgbV9jb25uZWN0VGltZSwgc291cmNlKSk7CisjZW5kaWYKIH0KIAotWFJUYXJnZXRS
YXlNb2RlIFdlYlhSSW5wdXRTb3VyY2U6OnRhcmdldFJheU1vZGUoKSBjb25zdAorYm9vbCBXZWJY
UklucHV0U291cmNlOjpyZXF1aXJlc0lucHV0U291cmNlQ2hhbmdlKGNvbnN0IElucHV0U291cmNl
JiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIG1fdGFyZ2V0UmF5TW9kZTsKKyAgICByZXR1cm4gbV9z
b3VyY2UuaGFuZGVuZXNzICE9IHNvdXJjZS5oYW5kZW5lc3MKKyAgICAgICAgfHwgbV9zb3VyY2Uu
dGFyZ2V0UmF5TW9kZSAhPSBzb3VyY2UudGFyZ2V0UmF5TW9kZQorICAgICAgICB8fCBtX3NvdXJj
ZS5wcm9maWxlcyAhPSBzb3VyY2UucHJvZmlsZXMKKyAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Ym9v
bD4obV9ncmlwU3BhY2UpICE9IHNvdXJjZS5ncmlwT3JpZ2luLmhhc1ZhbHVlKCk7CiB9CiAKLWNv
bnN0IFdlYlhSU3BhY2UmIFdlYlhSSW5wdXRTb3VyY2U6OnRhcmdldFJheVNwYWNlKCkgY29uc3QK
K3ZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgcmV0dXJuIG1fdGFy
Z2V0UmF5U3BhY2U7CisgICAgbV9jb25uZWN0ZWQgPSBmYWxzZTsKKyNpZiBFTkFCTEUoR0FNRVBB
RCkKKyAgICBtX2dhbWVwYWQtPnNldENvbm5lY3RlZChmYWxzZSk7CisjZW5kaWYKIH0KIAotUmVm
UHRyPFdlYlhSU3BhY2U+IFdlYlhSSW5wdXRTb3VyY2U6OmdyaXBTcGFjZSgpIGNvbnN0Cit2b2lk
IFdlYlhSSW5wdXRTb3VyY2U6OnBvbGxFdmVudHMoVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZl
bnQ+PiYgZXZlbnRzKQogewotICAgIHJldHVybiB7IH07CisgICAgaWYgKCFtX2Nvbm5lY3RlZCkg
eworICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVjdGVuZCBldmVu
dCBvbiBhbiBYUlNlc3Npb24gd2hlbiBvbmUgb2YgaXRzIFhSSW5wdXRTb3VyY2VzIGVuZHMgCisg
ICAgICAgIC8vIHdoZW4gYW4gWFJJbnB1dFNvdXJjZSB0aGF0IGhhcyBiZWd1biBhIHByaW1hcnkg
c2VsZWN0IGFjdGlvbiBpcyBkaXNjb25uZWN0ZWQuCisgICAgICAgIGlmIChtX3NlbGVjdFN0YXJ0
ZWQpCisgICAgICAgICAgICBldmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5z
ZWxlY3RlbmRFdmVudCkpOworCisgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNo
IGEgc3F1ZWV6ZWVuZCBldmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiBvbmUgb2YgaXRzIFhSSW5w
dXRTb3VyY2VzIGVuZHMgCisgICAgICAgIC8vIHdoZW4gYW4gWFJJbnB1dFNvdXJjZSB0aGF0IGhh
cyBiZWd1biBhIHByaW1hcnkgc3F1ZWV6ZSBhY3Rpb24gaXMgZGlzY29ubmVjdGVkLgorICAgICAg
ICBpZiAobV9zcXVlZXplU3RhcnRlZCkKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRl
RXZlbnQoZXZlbnROYW1lcygpLnNxdWVlemVlbmRFdmVudCkpOworCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWdh
bWVwYWRzLW1vZHVsZS8jeHItc3RhbmRhcmQtZ2FtZXBhZC1tYXBwaW5nCisgICAgLy8gQnV0dG9u
IGluZGljZXMgYXJlIGJhc2VkIG9uIHRoZSB4ci1zdGFuZGFyZCBsYXlvdXQuCisgICAgYm9vbCBz
ZWxlY3RTdGFydGVkID0gIW1fc291cmNlLmJ1dHRvbnMuaXNFbXB0eSgpICYmIG1fc291cmNlLmJ1
dHRvbnMuZmlyc3QoKS5wcmVzc2VkOworICAgIGJvb2wgc3F1ZWV6ZVN0YXJ0ZWQgPSBtX3NvdXJj
ZS5idXR0b25zLnNpemUoKSA+IDEgJiYgbV9zb3VyY2UuYnV0dG9uc1sxXS5wcmVzc2VkOworCisg
ICAgaWYgKHNlbGVjdFN0YXJ0ZWQgIT0gbV9zZWxlY3RTdGFydGVkKSB7CisgICAgICAgIGlmIChz
ZWxlY3RTdGFydGVkKSB7CisgICAgICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRj
aCBhIHNlbGVjdHN0YXJ0IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJ
bnB1dFNvdXJjZXMgYmVnaW5zIGl0cyBwcmltYXJ5IGFjdGlvbi4KKyAgICAgICAgICAgIGV2ZW50
cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0RXZlbnQpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNo
IGEgc2VsZWN0ZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1
dFNvdXJjZXMgZW5kcyBpdHMgcHJpbWFyeSBhY3Rpb24uCisgICAgICAgICAgICAvLyBBIHVzZXIg
YWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVjdCBldmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiBv
bmUgb2YgaXRzIFhSSW5wdXRTb3VyY2VzIGhhcyBmdWxseSBjb21wbGV0ZWQgYSBwcmltYXJ5IGFj
dGlvbgorICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCku
c2VsZWN0RXZlbnQpKTsKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRlRXZlbnQoZXZl
bnROYW1lcygpLnNlbGVjdGVuZEV2ZW50KSk7CisgICAgICAgIH0KKyAgICAgICAgbV9zZWxlY3RT
dGFydGVkID0gc2VsZWN0U3RhcnRlZDsKKyAgICB9CisKKyAgICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQg
IT0gbV9zcXVlZXplU3RhcnRlZCkgeworICAgICAgICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQpIHsKKyAg
ICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc3F1ZWV6ZXN0YXJ0IGV2
ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgYmVnaW5z
IGl0cyBwcmltYXJ5IHNxdWVlemUgYWN0aW9uLgorICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChj
cmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZXN0YXJ0RXZlbnQpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0
ZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMg
ZW5kcyBpdHMgcHJpbWFyeSBzcXVlZXplIGFjdGlvbi4KKyAgICAgICAgICAgIC8vIEEgdXNlciBh
Z2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9u
ZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgaGFzIGZ1bGx5IGNvbXBsZXRlZCBhIHByaW1hcnkgc3F1
ZWV6ZSBhY3Rpb24uCisgICAgICAgICAgICBldmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50
TmFtZXMoKS5zcXVlZXplRXZlbnQpKTsKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRl
RXZlbnQoZXZlbnROYW1lcygpLnNxdWVlemVlbmRFdmVudCkpOworICAgICAgICB9CisgICAgICAg
IG1fc3F1ZWV6ZVN0YXJ0ZWQgPSBzcXVlZXplU3RhcnRlZDsKKyAgICB9CiB9CiAKLWNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBXZWJYUklucHV0U291cmNlOjpwcm9maWxlcygpIGNvbnN0CitSZWY8WFJJ
bnB1dFNvdXJjZUV2ZW50PiBXZWJYUklucHV0U291cmNlOjpjcmVhdGVFdmVudChjb25zdCBBdG9t
U3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBtX3Byb2ZpbGVzOworICAgIFhSSW5wdXRTb3Vy
Y2VFdmVudDo6SW5pdCBpbml0OworICAgIGluaXQuZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUo
bV9zZXNzaW9uLmNvcHlSZWYoKSwgV2ViWFJGcmFtZTo6SXNBbmltYXRpb25GcmFtZTo6Tm8pOwor
ICAgIGluaXQuaW5wdXRTb3VyY2UgPSBtYWtlUmVmUHRyKCp0aGlzKTsKKworICAgIHJldHVybiBY
UklucHV0U291cmNlRXZlbnQ6OmNyZWF0ZShuYW1lLCBpbml0KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRT
b3VyY2UuaAppbmRleCA2OGMyOWFiMWNkYjkwNmRiZTE0YmI5NDkyYWIyZmQ4OGI0MWQ0MTEyLi5j
YjAzMTBmYTY4YmI2NzMxMmY1NDU3MmQ0OGI3YWIxMmI5MWQ4OTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaApAQCAtMjcsNiArMjcsOSBA
QAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorI2luY2x1
ZGUgIldlYlhSR2FtZXBhZC5oIgorI2luY2x1ZGUgIldlYlhSSW5wdXRTcGFjZS5oIgogI2luY2x1
ZGUgIlhSSGFuZGVkbmVzcy5oIgogI2luY2x1ZGUgIlhSVGFyZ2V0UmF5TW9kZS5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KQEAgLTM4LDI3ICs0MSw1NSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFdlYlhSU3BhY2U7CisjaWYgRU5BQkxFKEdBTUVQQUQpCitjbGFzcyBH
YW1lcGFkOworI2VuZGlmCitjbGFzcyBYUklucHV0U291cmNlRXZlbnQ7CitjbGFzcyBXZWJYUklu
cHV0U3BhY2U7CiAKIGNsYXNzIFdlYlhSSW5wdXRTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJYUklucHV0U291cmNlPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUklucHV0
U291cmNlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRTb3VyY2U+IGNyZWF0
ZShSZWY8V2ViWFJTcGFjZT4mJik7CisgICAgdXNpbmcgSW5wdXRTb3VyY2UgPSBQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U7CisgICAgdXNpbmcgSW5wdXRTb3VyY2VC
dXR0b24gPSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b247
CisKKyAgICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRTb3VyY2U+IGNyZWF0ZShSZWY8RG9jdW1lbnQ+
JiYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291
cmNlJik7CiAgICAgfldlYlhSSW5wdXRTb3VyY2UoKTsKIAotICAgIFhSSGFuZGVkbmVzcyBoYW5k
ZWRuZXNzKCkgY29uc3Q7Ci0gICAgWFJUYXJnZXRSYXlNb2RlIHRhcmdldFJheU1vZGUoKSBjb25z
dDsKLSAgICBjb25zdCBXZWJYUlNwYWNlJiB0YXJnZXRSYXlTcGFjZSgpIGNvbnN0OwotICAgIFJl
ZlB0cjxXZWJYUlNwYWNlPiBncmlwU3BhY2UoKSBjb25zdDsKLSAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcHJvZmlsZXMoKSBjb25zdDsKKyAgICBQbGF0Zm9ybVhSOjpJbnB1dFNvdXJjZUhhbmRs
ZSBoYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5oYW5kbGU7IH0KKyAgICBYUkhhbmRl
ZG5lc3MgaGFuZGVkbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmhhbmRlbmVzczsgfQor
ICAgIFhSVGFyZ2V0UmF5TW9kZSB0YXJnZXRSYXlNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2UudGFyZ2V0UmF5TW9kZTsgfTsKKyAgICBjb25zdCBXZWJYUlNwYWNlJiB0YXJnZXRSYXlTcGFj
ZSgpIGNvbnN0IHtyZXR1cm4gbV90YXJnZXRSYXlTcGFjZS5nZXQoKTsgfTsKKyAgICBSZWZQdHI8
V2ViWFJTcGFjZT4gZ3JpcFNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9ncmlwU3BhY2U7IH0KKyAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZS5wcm9maWxlczsgfTsKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBjb25zdCBHYW1lcGFkKiBn
YW1lcGFkKCkgY29uc3QgeyByZXR1cm4gbV9nYW1lcGFkLnB0cigpOyB9CisjZW5kaWYKKworICAg
IHZvaWQgdXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlJik7CisgICAg
Ym9vbCByZXF1aXJlc0lucHV0U291cmNlQ2hhbmdlKGNvbnN0IElucHV0U291cmNlJik7CisgICAg
dm9pZCBkaXNjb25uZWN0KCk7CisgICAgCisgICAgdm9pZCBwb2xsRXZlbnRzKFZlY3RvcjxSZWY8
WFJJbnB1dFNvdXJjZUV2ZW50Pj4mKTsKIAogcHJpdmF0ZToKLSAgICBXZWJYUklucHV0U291cmNl
KFJlZjxXZWJYUlNwYWNlPiYmKTsKKyAgICBXZWJYUklucHV0U291cmNlKFJlZjxEb2N1bWVudD4m
JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRTb3Vy
Y2UmKTsKKworICAgIFJlZjxYUklucHV0U291cmNlRXZlbnQ+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0
b21TdHJpbmcmKTsKKworICAgIFJlZjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBSZWY8V2Vi
WFJTZXNzaW9uPiBtX3Nlc3Npb247CisgICAgSW5wdXRTb3VyY2UgbV9zb3VyY2U7CisgICAgUmVm
PFdlYlhSSW5wdXRTcGFjZT4gbV90YXJnZXRSYXlTcGFjZTsKKyAgICBSZWZQdHI8V2ViWFJJbnB1
dFNwYWNlPiBtX2dyaXBTcGFjZTsKKyAgICBkb3VibGUgbV9jb25uZWN0VGltZSB7IDAgfTsKKyAg
ICBib29sIG1fY29ubmVjdGVkIHsgdHJ1ZSB9OworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIFJl
ZjxHYW1lcGFkPiBtX2dhbWVwYWQ7CisjZW5kaWYKIAotICAgIFhSSGFuZGVkbmVzcyBtX2hhbmRl
ZG5lc3M7Ci0gICAgWFJUYXJnZXRSYXlNb2RlIG1fdGFyZ2V0UmF5TW9kZTsKLSAgICBSZWY8V2Vi
WFJTcGFjZT4gbV90YXJnZXRSYXlTcGFjZTsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3Byb2ZpbGVz
OworICAgIGJvb2wgbV9zZWxlY3RTdGFydGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc3F1ZWV6
ZVN0YXJ0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5pZGwKaW5kZXgg
MDQ1OWYzZmU0NzA3NTIxMTM3YmY1M2YxYTM0NGVkZGQ5OGViZDM2OS4uOGQyMTkwNjU2NTdhMmYz
ZWUzNjgzM2VkOGVhNTQyOGEyMjRhNWEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaWRsCkBAIC0zNSw1ICszNSw4IEBACiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFhSVGFyZ2V0UmF5TW9kZSB0YXJnZXRSYXlNb2RlIDsKICAgICBbU2Ft
ZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSU3BhY2UgdGFyZ2V0UmF5U3BhY2U7CiAg
ICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJYUlNwYWNlPyBncmlwU3BhY2Ug
OwotICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RE9NU3Ry
aW5nPiBwcm9maWxlczsKKyAgICBbQ2FjaGVkQXR0cmlidXRlLCBTYW1lT2JqZWN0XSByZWFkb25s
eSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RE9NU3RyaW5nPiBwcm9maWxlczsKKworICAgIC8vIGh0
dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyN4cmlu
cHV0c291cmNlLWludGVyZmFjZQorICAgIFtDb25kaXRpb25hbD1HQU1FUEFELCBTYW1lT2JqZWN0
XSByZWFkb25seSBhdHRyaWJ1dGUgR2FtZXBhZD8gZ2FtZXBhZDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKaW5k
ZXggYzRjMDg1NTMyYmNkOWFhYzI3MzgwOTBiZmEzZmRkZmVhNDMzNTVkMy4uY2ZkNTFiZGZkNDky
MjAwN2Q4MjhlMGFmZDM1YWJkYWQ1NmRmNjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcApAQCAtMjcsMjEgKzI3
LDE1NSBAQAogI2luY2x1ZGUgIldlYlhSSW5wdXRTb3VyY2VBcnJheS5oIgogCiAjaWYgRU5BQkxF
KFdFQlhSKQotCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIldlYlhSSW5wdXRT
b3VyY2UuaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKKyNpbmNsdWRlICJYUklucHV0U291
cmNlRXZlbnQuaCIKKyNpbmNsdWRlICJYUklucHV0U291cmNlc0NoYW5nZUV2ZW50LmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJJbnB1dFNvdXJjZUFycmF5KTsKIAorUmVm
PFdlYlhSSW5wdXRTb3VyY2VBcnJheT4gV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVhdGUoUmVm
PERvY3VtZW50PiYmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJjZUFycmF5KFdURk1vdmUoZG9j
dW1lbnQpLCBXVEZNb3ZlKHNlc3Npb24pKSk7Cit9CisKK1dlYlhSSW5wdXRTb3VyY2VBcnJheTo6
V2ViWFJJbnB1dFNvdXJjZUFycmF5KFJlZjxEb2N1bWVudD4mJiBkb2N1bWVudCwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiBzZXNzaW9uKQorICAgIDogbV9kb2N1bWVudChXVEZNb3ZlKGRvY3VtZW50KSkK
KyAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQoreworfQorCitXZWJYUklucHV0U291
cmNlQXJyYXk6On5XZWJYUklucHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7CisKIHVuc2lnbmVk
IFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbV9pbnB1dFNvdXJjZXMuc2l6ZSgpOworfQorCitXZWJYUklucHV0U291cmNl
KiBXZWJYUklucHV0U291cmNlQXJyYXk6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7Cisg
ICAgaWYgKGluZGV4ID49IG1faW5wdXRTb3VyY2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIG1faW5wdXRTb3VyY2VzW2luZGV4XS5wdHIoKTsKK30KKwordm9p
ZCBXZWJYUklucHV0U291cmNlQXJyYXk6OmNsZWFyKCkKK3sKKyAgICBtX2lucHV0U291cmNlcy5j
bGVhcigpOwogfQogCi1XZWJYUklucHV0U291cmNlKiBXZWJYUklucHV0U291cmNlQXJyYXk6Oml0
ZW0odW5zaWduZWQpIGNvbnN0CisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dl
YnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1zb3VyY2VzCit2b2lkIFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheTo6dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYg
aW5wdXRTb3VyY2VzKQogewotICAgIHJldHVybiBudWxscHRyOworICAgIFZlY3RvcjxSZWY8V2Vi
WFJJbnB1dFNvdXJjZT4+IGFkZGVkOworICAgIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+
IHJlbW92ZWQ7CisgICAgVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiBpbnB1dEV2ZW50
czsKKworICAgIGhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMoaW5wdXRTb3VyY2VzLCByZW1vdmVk
LCBpbnB1dEV2ZW50cyk7CisgICAgaGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXModGlt
ZXN0YW1wLCBpbnB1dFNvdXJjZXMsIGFkZGVkLCByZW1vdmVkLCBpbnB1dEV2ZW50cyk7CisKKyAg
ICBpZiAoIWFkZGVkLmlzRW1wdHkoKSB8fCAhcmVtb3ZlZC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Ly8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYW4gaW5wdXRzb3VyY2VzY2hhbmdlIGV2ZW50
IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIHRoZSBzZXNzaW9u4oCZcyBsaXN0IG9mIGFjdGl2ZSBYUiBp
bnB1dCBzb3VyY2VzIGhhcyBjaGFuZ2VkLgorICAgICAgICBYUklucHV0U291cmNlc0NoYW5nZUV2
ZW50OjpJbml0IGluaXQ7CisgICAgICAgIGluaXQuc2Vzc2lvbiA9IG1fc2Vzc2lvbi5jb3B5UmVm
KCk7CisgICAgICAgIGluaXQuYWRkZWQgPSBhZGRlZC5tYXAoW10oYXV0byYgaW5wdXQpIHsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKGlucHV0LmdldCgpKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIGluaXQucmVtb3ZlZCA9IHJlbW92ZWQubWFwKFtdKGF1dG8mIGlucHV0KSB7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihpbnB1dC5nZXQoKSk7CisgICAgICAgIH0pOworICAg
ICAgICAKKyAgICAgICAgYXV0byBldmVudCA9IFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuaW5wdXRzb3VyY2VzY2hhbmdlRXZlbnQsIGluaXQpOworICAgICAg
ICBtX3Nlc3Npb24tPnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudChtX3Nlc3Npb24uZ2V0KCksIFRh
c2tTb3VyY2U6OldlYlhSLCBXVEZNb3ZlKGV2ZW50KSk7CisgICAgfQorCisgICAgaWYgKCFpbnB1
dEV2ZW50cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gV2hlbiB0aGUgdXNlciBhZ2VudCBoYXMg
dG8gZmlyZSBhbiBpbnB1dCBzb3VyY2UgZXZlbnQgd2l0aCBuYW1lIG5hbWUsIFhSRnJhbWUgZnJh
bWUsIGFuZCBYUklucHV0U291cmNlIHNvdXJjZSBpdCBNVVNUIHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgorICAgICAgICAvLyAxLiBDcmVhdGUgYW4gWFJJbnB1dFNvdXJjZUV2ZW50IGV2ZW50IHdp
dGggdHlwZSBuYW1lLCBmcmFtZSBmcmFtZSwgYW5kIGlucHV0U291cmNlIHNvdXJjZS4KKyAgICAg
ICAgLy8gMi4gU2V0IGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiB0byB0cnVlLgorICAgICAgICAv
LyAzLiBBcHBseSBmcmFtZSB1cGRhdGVzIGZvciBmcmFtZS4KKyAgICAgICAgLy8gNC4gRGlzcGF0
Y2ggZXZlbnQgb24gZnJhbWXigJlzIHNlc3Npb24KKyAgICAgICAgLy8gNS4gU2V0IGZyYW1l4oCZ
cyBhY3RpdmUgYm9vbGVhbiB0byBmYWxzZS4KKworICAgICAgICBmb3IgKGF1dG8mIGV2ZW50IDog
aW5wdXRFdmVudHMpIHsKKyAgICAgICAgICAgIGV2ZW50LT5zZXRGcmFtZUFjdGl2ZSh0cnVlKTsK
KyAgICAgICAgICAgIG1fc2Vzc2lvbi0+cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KG1fc2Vzc2lv
bi5nZXQoKSwgVGFza1NvdXJjZTo6V2ViWFIsIGV2ZW50LmNvcHlSZWYoKSk7CisgICAgICAgICAg
ICBtX3Nlc3Npb24tPnF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZShtX3Nlc3Npb24uZ2V0KCks
IFRhc2tTb3VyY2U6OldlYlhSLCBbZXZlbnQgPSBXVEZNb3ZlKGV2ZW50KV0oKSB7CisgICAgICAg
ICAgICAgICAgZXZlbnQtPnNldEZyYW1lQWN0aXZlKGZhbHNlKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisgICAgfQorfQorCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlv
L3dlYnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1zb3VyY2VzCit2b2lkIFdlYlhSSW5wdXRT
b3VyY2VBcnJheTo6aGFuZGxlUmVtb3ZlZElucHV0U291cmNlcyhjb25zdCBJbnB1dFNvdXJjZUxp
c3QmIGlucHV0U291cmNlcywgVmVjdG9yPFJlZjxXZWJYUklucHV0U291cmNlPj4mIHJlbW92ZWQs
IFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mIGlucHV0RXZlbnRzKQoreworICAgIC8v
IFdoZW4gYW55IHByZXZpb3VzbHkgYWRkZWQgWFIgaW5wdXQgc291cmNlcyBhcmUgbm8gbG9uZ2Vy
IGF2YWlsYWJsZSBmb3IgWFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2VyIGFnZW50IE1VU1QgcnVu
IHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gMS4gSWYgc2Vzc2lvbidzIHByb21pc2UgcmVz
b2x2ZWQgZmxhZyBpcyBub3Qgc2V0LCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAvLyAyLiBMZXQg
cmVtb3ZlZCBiZSBhIG5ldyBsaXN0LgorICAgIC8vIDMuIEZvciBlYWNoIFhSIGlucHV0IHNvdXJj
ZSB0aGF0IGlzIG5vIGxvbmdlciBhdmFpbGFibGU6CisgICAgLy8gIDMuMSBMZXQgaW5wdXRTb3Vy
Y2UgYmUgdGhlIFhSSW5wdXRTb3VyY2UgaW4gc2Vzc2lvbidzIGxpc3Qgb2YgYWN0aXZlIFhSIGlu
cHV0IHNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBYUiBpbnB1dCBzb3VyY2UuCisgICAgLy8g
IDMuMiBBZGQgaW5wdXRTb3VyY2UgdG8gcmVtb3ZlZC4KKyAgICBtX2lucHV0U291cmNlcy5yZW1v
dmVBbGxNYXRjaGluZyhbdGhpcywgJmlucHV0U291cmNlcywgJnJlbW92ZWQsICZpbnB1dEV2ZW50
c10oYXV0byYgc291cmNlKSB7CisgICAgICAgIGlmIChpbnB1dFNvdXJjZXMuZmluZE1hdGNoaW5n
KFsmc291cmNlXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmhhbmRsZSA9PSBzb3VyY2UtPmhh
bmRsZSgpOyB9KSA9PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgICAgICByZW1vdmVkLmFwcGVu
ZChzb3VyY2UuY29weVJlZigpKTsKKyAgICAgICAgICAgIHNvdXJjZS0+ZGlzY29ubmVjdCgpOwor
ICAgICAgICAgICAgc291cmNlLT5wb2xsRXZlbnRzKGlucHV0RXZlbnRzKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9KTsK
K30KKworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jbGlzdC1vZi1h
Y3RpdmUteHItaW5wdXQtc291cmNlcwordm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRs
ZUFkZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0
U291cmNlTGlzdCYgaW5wdXRTb3VyY2VzLCBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiYg
YWRkZWQsIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+JiByZW1vdmVkLCBWZWN0b3I8UmVm
PFhSSW5wdXRTb3VyY2VFdmVudD4+JiBpbnB1dEV2ZW50cykKK3sKKyAgICBmb3IgKGF1dG8mIGlu
cHV0U291cmNlIDogaW5wdXRTb3VyY2VzKSB7CisgICAgICAgIGF1dG8gaW5kZXggPSBtX2lucHV0
U291cmNlcy5maW5kTWF0Y2hpbmcoWyZpbnB1dFNvdXJjZV0oYXV0byYgaXRlbSkgeyByZXR1cm4g
aXRlbS0+aGFuZGxlKCkgPT0gaW5wdXRTb3VyY2UuaGFuZGxlOyB9KTsKKyAgICAgICAgaWYgKGlu
ZGV4ID09IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gbmV3IFhSIGlucHV0
IHNvdXJjZXMgYmVjb21lIGF2YWlsYWJsZSBmb3IgWFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2Vy
IGFnZW50IE1VU1QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgICAgICAvLyAxLiBJ
ZiBzZXNzaW9uJ3MgcHJvbWlzZSByZXNvbHZlZCBmbGFnIGlzIG5vdCBzZXQsIGFib3J0IHRoZXNl
IHN0ZXBzLgorICAgICAgICAgICAgLy8gMi4gTGV0IGFkZGVkIGJlIGEgbmV3IGxpc3QuCisgICAg
ICAgICAgICAvLyAzLiBGb3IgZWFjaCBuZXcgWFIgaW5wdXQgc291cmNlOgorICAgICAgICAgICAg
Ly8gICAzLjEgTGV0IGlucHV0U291cmNlIGJlIGEgbmV3IFhSSW5wdXRTb3VyY2UgaW4gdGhlIHJl
bGV2YW50IHJlYWxtIG9mIHRoaXMgWFJTZXNzaW9uLgorICAgICAgICAgICAgLy8gICAzLjIgQWRk
IGlucHV0U291cmNlIHRvIGFkZGVkLgorICAgICAgICAgICAgYXV0byBpbnB1dCA9IFdlYlhSSW5w
dXRTb3VyY2U6OmNyZWF0ZShtX2RvY3VtZW50LmNvcHlSZWYoKSwgbV9zZXNzaW9uLmNvcHlSZWYo
KSwgdGltZXN0YW1wLCBpbnB1dFNvdXJjZSk7CisgICAgICAgICAgICBhZGRlZC5hcHBlbmQoaW5w
dXQuY29weVJlZigpKTsKKyAgICAgICAgICAgIGlucHV0LT5wb2xsRXZlbnRzKGlucHV0RXZlbnRz
KTsKKyAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGlucHV0KSk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdoZW4gdGhlIGhh
bmRlZG5lc3MsIHRhcmdldFJheU1vZGUsIHByb2ZpbGVzLCBvciBwcmVzZW5jZSBvZiBhIGdyaXBT
cGFjZSBmb3IgYW55IFhSIGlucHV0IHNvdXJjZXMgY2hhbmdlIGZvciBYUlNlc3Npb24gc2Vzc2lv
biwgdGhlIHVzZXIgYWdlbnQgTVVTVCBydW4gdGhlIGZvbGxvd2luZyBzdGVwcworICAgICAgICAv
LyAxLiBJZiBzZXNzaW9u4oCZcyBwcm9taXNlIHJlc29sdmVkIGZsYWcgaXMgbm90IHNldCwgYWJv
cnQgdGhlc2Ugc3RlcHMuCisgICAgICAgIC8vIDIuIExldCBhZGRlZCBiZSBhIG5ldyBsaXN0Lgor
ICAgICAgICAvLyAzLiBMZXQgcmVtb3ZlZCBiZSBhIG5ldyBsaXN0LgorICAgICAgICAvLyA0LiBG
b3IgZWFjaCBjaGFuZ2VkIFhSIGlucHV0IHNvdXJjZToKKyAgICAgICAgLy8gIDQuMSBMZXQgb2xk
SW5wdXRTb3VyY2UgYmUgdGhlIFhSSW5wdXRTb3VyY2UgaW4gc2Vzc2lvbidzIGxpc3Qgb2YgYWN0
aXZlIFhSIGlucHV0IHNvdXJjZXMgcHJldmlvdXNseSBhc3NvY2lhdGVkIHdpdGggdGhlIFhSIGlu
cHV0IHNvdXJjZS4KKyAgICAgICAgLy8gIDQuMSBMZXQgbmV3SW5wdXRTb3VyY2UgYmUgYSBuZXcg
WFJJbnB1dFNvdXJjZSBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2Ygc2Vzc2lvbi4KKyAgICAgICAg
Ly8gIDQuMSBBZGQgb2xkSW5wdXRTb3VyY2UgdG8gcmVtb3ZlZC4KKyAgICAgICAgLy8gIDQuMSBB
ZGQgbmV3SW5wdXRTb3VyY2UgdG8gYWRkZWQuCisgICAgICAgIGF1dG8mIGlucHV0ID0gbV9pbnB1
dFNvdXJjZXNbaW5kZXhdOworCisgICAgICAgIGlmIChpbnB1dC0+cmVxdWlyZXNJbnB1dFNvdXJj
ZUNoYW5nZShpbnB1dFNvdXJjZSkpIHsKKyAgICAgICAgICAgIHJlbW92ZWQuYXBwZW5kKGlucHV0
LmNvcHlSZWYoKSk7CisgICAgICAgICAgICBpbnB1dC0+ZGlzY29ubmVjdCgpOworICAgICAgICAg
ICAgaW5wdXQtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOworICAgICAgICAgICAgbV9pbnB1dFNv
dXJjZXMucmVtb3ZlKGluZGV4KTsKKworICAgICAgICAgICAgYXV0byBuZXdJbnB1dFNvdXJjZSA9
IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZShtX2RvY3VtZW50LmNvcHlSZWYoKSwgbV9zZXNzaW9u
LmNvcHlSZWYoKSwgdGltZXN0YW1wLCBpbnB1dFNvdXJjZSk7CisgICAgICAgICAgICBhZGRlZC5h
cHBlbmQobmV3SW5wdXRTb3VyY2UuY29weVJlZigpKTsKKyAgICAgICAgICAgIG5ld0lucHV0U291
cmNlLT5wb2xsRXZlbnRzKGlucHV0RXZlbnRzKTsKKyAgICAgICAgICAgIG1faW5wdXRTb3VyY2Vz
LmFwcGVuZChXVEZNb3ZlKG5ld0lucHV0U291cmNlKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpbnB1dC0+dXBkYXRlKHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOworICAgICAgICAg
ICAgaW5wdXQtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOworICAgICAgICB9CisgICAgfQogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaAppbmRleCA0M2I5ZDFhMGZmMWVlNTdkNTk0
ZGVmOTIxM2MwNjMwODgzODM2ZDYyLi5iNzc1YmE5NmUyYTFhMGVhMmE1ZDI2NWVlMTgzNGZkNzVh
YjU4MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5w
dXRTb3VyY2VBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZUFycmF5LmgKQEAgLTI3LDI1ICsyNyw0MCBAQAogCiAjaWYgRU5BQkxFKFdFQlhS
KQogCisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFdlYlhSSW5wdXRTb3Vy
Y2U7CitjbGFzcyBYUklucHV0U291cmNlRXZlbnQ7CitjbGFzcyBXZWJYUlNlc3Npb247CiAKIGNs
YXNzIFdlYlhSSW5wdXRTb3VyY2VBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSW5wdXRT
b3VyY2VBcnJheT4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJJbnB1dFNvdXJj
ZUFycmF5KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRTb3VyY2VBcnJheT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U291cmNlQXJyYXkoKSk7
IH0KLSAgICB+V2ViWFJJbnB1dFNvdXJjZUFycmF5KCkgPSBkZWZhdWx0OworICAgIHVzaW5nIElu
cHV0U291cmNlTGlzdCA9IFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2U+OworICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBjcmVhdGUo
UmVmPERvY3VtZW50PiYmLCBSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICB+V2ViWFJJbnB1dFNv
dXJjZUFycmF5KCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBXZWJYUklu
cHV0U291cmNlKiBpdGVtKHVuc2lnbmVkKSBjb25zdDsKIAorICAgIHZvaWQgY2xlYXIoKTsKKyAg
ICB2b2lkIHVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmKTsK
KwogcHJpdmF0ZToKLSAgICBXZWJYUklucHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7CisgICAg
V2ViWFJJbnB1dFNvdXJjZUFycmF5KFJlZjxEb2N1bWVudD4mJiwgUmVmPFdlYlhSU2Vzc2lvbj4m
Jik7CisKKyAgICB2b2lkIGhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMoY29uc3QgSW5wdXRTb3Vy
Y2VMaXN0JiwgVmVjdG9yPFJlZjxXZWJYUklucHV0U291cmNlPj4mLCBWZWN0b3I8UmVmPFhSSW5w
dXRTb3VyY2VFdmVudD4+Jik7CisgICAgdm9pZCBoYW5kbGVBZGRlZE9yVXBkYXRlZElucHV0U291
cmNlcyhkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmLCBWZWN0b3I8UmVm
PFdlYlhSSW5wdXRTb3VyY2U+PiYsIFZlY3RvcjxSZWY8V2ViWFJJbnB1dFNvdXJjZT4+JiwgVmVj
dG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYpOworCisgICAgUmVmPERvY3VtZW50PiBtX2Rv
Y3VtZW50OworICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBWZWN0b3I8UmVm
PFdlYlhSSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNw
YWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNzdjYTUyMzcyYTRlY2I1NmZlNDY3MWRkNzZlNTQ1MTgzNWRk
ZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U3BhY2UuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlhSSW5wdXRTcGFjZS5oIgorCisjaWYgRU5BQkxFKFdF
QlhSKQorCisjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgorI2luY2x1ZGUgIldlYlhSUmlnaWRUcmFu
c2Zvcm0uaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJYUklucHV0U3BhY2UpOworCisvLyBXZWJYUklucHV0U3BhY2UKKworUmVm
PFdlYlhSSW5wdXRTcGFjZT4gV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIGNvbnN0IFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmIHBvc2UpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViWFJJbnB1dFNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBwb3Nl
KSk7Cit9CisKK1dlYlhSSW5wdXRTcGFjZTo6V2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKQorICAgIDogV2ViWFJTcGFjZShk
b2N1bWVudCwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkpCisgICAgLCBtX3Nlc3Npb24o
V1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1fcG9zZShwb3NlKQoreworfQorCitXZWJYUklucHV0
U3BhY2U6On5XZWJYUklucHV0U3BhY2UoKSA9IGRlZmF1bHQ7CisKK1RyYW5zZm9ybWF0aW9uTWF0
cml4IFdlYlhSSW5wdXRTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
V2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UobV9wb3NlLnBvc2UpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTVhOGM4NWIw
OTU5NGQ2NTdjM2U2M2NiMTdhZjAzMWFjYTdiYTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5j
bHVkZSAiV2ViWFJTcGFjZS5oIgorI2luY2x1ZGUgIlhSSGFuZGVkbmVzcy5oIgorI2luY2x1ZGUg
IlhSVGFyZ2V0UmF5TW9kZS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlhS
SW5wdXRTcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSW5wdXRTcGFjZT4sIHB1YmxpYyBX
ZWJYUlNwYWNlIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSSW5wdXRTcGFjZSk7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U3BhY2U+IGNyZWF0ZShEb2N1bWVu
dCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKKyAgICB2aXJ0dWFsIH5XZWJYUklucHV0U3BhY2UoKTsK
KworICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6cmVmOworICAgIHVzaW5n
IFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6ZGVyZWY7CisKKyAgICBib29sIGlzUG9zaXRp
b25FbXVsYXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcG9zZS5pc1Bvc2l0aW9uRW11bGF0
ZWQ7IH0KKyAgICB2b2lkIHNldFBvc2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkgeyBtX3Bvc2UgPSBwb3NlOyB9CisKK3ByaXZhdGU6
CisgICAgV2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYpOworICAg
IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5n
ZXQoKTsgfQorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0IGZp
bmFsOworCisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKworICAgIFJlZjxXZWJY
UlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
SW5wdXRTb3VyY2VQb3NlIG1fcG9zZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJTZXNzaW9uLmNwcAppbmRleCBkZWI0YTU5MGU3OWNkMmIwZDBmODMwNDNkZTcwNGQxNDYx
N2UwMjliLi5hODFmZDU4NjFjMmVmY2Y2NjA5MDYyNGJkZDlmNTVkY2E2MGRhYjk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCkBAIC01Miw3ICs1
Miw3IEBAIFJlZjxXZWJYUlNlc3Npb24+IFdlYlhSU2Vzc2lvbjo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwKIAogV2ViWFJTZXNzaW9uOjpXZWJYUlNlc3Np
b24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLCBYUlNlc3Npb25Nb2Rl
IG1vZGUsIFBsYXRmb3JtWFI6OkRldmljZSYgZGV2aWNlLCBGZWF0dXJlTGlzdCYmIHJlcXVlc3Rl
ZEZlYXR1cmVzKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKLSAgICAsIG1faW5w
dXRTb3VyY2VzKFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKCkpCisgICAgLCBtX2lucHV0
U291cmNlcyhXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMpKQog
ICAgICwgbV94clN5c3RlbShzeXN0ZW0pCiAgICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fZGV2
aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCkBAIC02Miw4ICs2Miw4IEBAIFdlYlhSU2Vzc2lvbjo6
V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJT
ZXNzaW9uTW9kCiAgICAgLCBtX3RpbWVPcmlnaW4oTW9ub3RvbmljVGltZTo6bm93KCkpCiAgICAg
LCBtX3ZpZXdzKGRldmljZS52aWV3cyhtb2RlKSkKIHsKLSAgICBtX2RldmljZS0+aW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKG1vZGUpOwogICAgIG1fZGV2aWNlLT5zZXRUcmFja2luZ0Fu
ZFJlbmRlcmluZ0NsaWVudChtYWtlV2Vha1B0cigqdGhpcykpOworICAgIG1fZGV2aWNlLT5pbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcobW9kZSk7CiAKICAgICAvLyBodHRwczovL2ltbWVy
c2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNyZWYtZm9yLWRvbS14cnJlZmVyZW5jZXNwYWNldHlw
ZS12aWV3ZXIlRTIlOTElQTIKICAgICAvLyBFdmVyeSBzZXNzaW9uIE1VU1Qgc3VwcG9ydCB2aWV3
ZXIgWFJSZWZlcmVuY2VTcGFjZXMuCkBAIC0zMTUsNiArMzE1LDExIEBAIGJvb2wgV2ViWFJTZXNz
aW9uOjpzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fbW9kZSA9
PSBYUlNlc3Npb25Nb2RlOjpJbW1lcnNpdmVWciAmJiBtX2RldmljZS0+c3VwcG9ydHNWaWV3cG9y
dFNjYWxpbmcoKTsKIH0KIAorYm9vbCBXZWJYUlNlc3Npb246OmlzUG9zaXRpb25FbXVsYXRlZCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRlZCB8fCAh
bV9mcmFtZURhdGEuaXNQb3NpdGlvblZhbGlkOworfQorCiAvLyBodHRwczovL2ltbWVyc2l2ZS13
ZWIuZ2l0aHViLmlvL3dlYnhyLyNzaHV0LWRvd24tdGhlLXNlc3Npb24KIHZvaWQgV2ViWFJTZXNz
aW9uOjpzaHV0ZG93bihJbml0aWF0ZWRCeVN5c3RlbSBpbml0aWF0ZWRCeVN5c3RlbSkKIHsKQEAg
LTMzOCw2ICszNDMsOCBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6c2h1dGRvd24oSW5pdGlhdGVkQnlT
eXN0ZW0gaW5pdGlhdGVkQnlTeXN0ZW0pCiAgICAgLy8gNC4gUmVtb3ZlIHNlc3Npb24gZnJvbSB0
aGUgbGlzdCBvZiBpbmxpbmUgc2Vzc2lvbnMuCiAgICAgbV94clN5c3RlbS5zZXNzaW9uRW5kZWQo
KnRoaXMpOwogCisgICAgbV9pbnB1dFNvdXJjZXMtPmNsZWFyKCk7CisKICAgICBpZiAoaW5pdGlh
dGVkQnlTeXN0ZW0gPT0gSW5pdGlhdGVkQnlTeXN0ZW06OlllcykgewogICAgICAgICAvLyBJZiB3
ZSBnZXQgaGVyZSwgdGhlIHNlc3Npb24gdGVybWluYXRpb24gd2FzIHRyaWdnZXJlZCBieSB0aGUg
c3lzdGVtIHJhdGhlciB0aGFuCiAgICAgICAgIC8vIHZpYSBYUlNlc3Npb24uZW5kKCkuIFNpbmNl
IHRoZSBzeXN0ZW0gaGFzIGNvbXBsZXRlZCB0aGUgc2Vzc2lvbiBzaHV0ZG93biwgd2UgY2FuCkBA
IC00MTEsNiArNDE4LDI1IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpzdG9wKCkKIHsKIH0KIAordm9p
ZCBXZWJYUlNlc3Npb246OnNlc3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzKFZlY3RvcjxQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+JiYgaW5wdXRTb3VyY2Vz
KQoreworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14
cnN5c3RlbS1yZXF1ZXN0c2Vzc2lvbgorICAgIC8vIDUuNC4xMCBRdWV1ZSBhIHRhc2sgdG8gcGVy
Zm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOiBOT1RFOiBUaGVzZSBzdGVwcyBlbnN1cmUgdGhhdCBp
bml0aWFsIGlucHV0c291cmNlc2NoYW5nZQorICAgIC8vIGV2ZW50cyBvY2N1ciBhZnRlciB0aGUg
aW5pdGlhbCBzZXNzaW9uIGlzIHJlc29sdmVkLgorICAgIC8vICAgICAxLiBTZXQgc2Vzc2lvbidz
IHByb21pc2UgcmVzb2x2ZWQgZmxhZyB0byB0cnVlLgorICAgIC8vICAgICAyLiBMZXQgc291cmNl
cyBiZSBhbnkgZXhpc3RpbmcgaW5wdXQgc291cmNlcyBhdHRhY2hlZCB0byBzZXNzaW9uLgorICAg
IC8vICAgICAzLiBJZiBzb3VyY2VzIGlzIG5vbi1lbXB0eSwgcGVyZm9ybSB0aGUgZm9sbG93aW5n
IHN0ZXBzOgorICAgIC8vICAgICAgICAxLiBTZXQgc2Vzc2lvbidzIGxpc3Qgb2YgYWN0aXZlIFhS
IGlucHV0IHNvdXJjZXMgdG8gc291cmNlcy4KKyAgICAvLyAgICAgICAgMi4gRmlyZSBhbiBYUklu
cHV0U291cmNlc0NoYW5nZUV2ZW50IG5hbWVkIGlucHV0c291cmNlc2NoYW5nZSBvbiBzZXNzaW9u
IHdpdGggYWRkZWQgc2V0IHRvIHNvdXJjZXMuCisKKyAgICBhdXRvIHRpbWVzdGFtcCA9IChNb25v
dG9uaWNUaW1lOjpub3coKSAtIG1fdGltZU9yaWdpbikubWlsbGlzZWNvbmRzKCk7CisKKyAgICBx
dWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhSLCBbdGhp
cywgdGltZXN0YW1wLCBpbnB1dFNvdXJjZXMgPSBXVEZNb3ZlKGlucHV0U291cmNlcyldKCkgbXV0
YWJsZSB7CisgICAgICAgIG1faW5wdXRJbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIG1faW5w
dXRTb3VyY2VzLT51cGRhdGUodGltZXN0YW1wLCBpbnB1dFNvdXJjZXMpOworICAgIH0pOworfQor
CiB2b2lkIFdlYlhSU2Vzc2lvbjo6c2Vzc2lvbkRpZEVuZCgpCiB7CiAgICAgLy8gVGhpcyBjYW4g
YmUgY2FsbGVkIGFzIGEgcmVzdWx0IG9mIGZpbmlzaGluZyB0aGUgc2h1dGRvd24gaW5pdGlhdGVk
CkBAIC01MjcsNiArNTUzLDkgQEAgdm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCiAgICAgICAgICAgICBmcmFtZS0+c2V0
QWN0aXZlKHRydWUpOwogCiAgICAgICAgICAgICAvLyA2LjQuQXBwbHkgZnJhbWUgdXBkYXRlcyBm
b3IgZnJhbWUuCisgICAgICAgICAgICBpZiAobV9pbnB1dEluaXRpYWxpemVkKQorICAgICAgICAg
ICAgICAgIG1faW5wdXRTb3VyY2VzLT51cGRhdGUobm93LCBmcmFtZURhdGEuaW5wdXRTb3VyY2Vz
KTsKKwogICAgICAgICAgICAgZnJhbWUtPnNldEZyYW1lRGF0YShXVEZNb3ZlKGZyYW1lRGF0YSkp
OwogCiAgICAgICAgICAgICAvLyA2LjUuRm9yIGVhY2ggZW50cnkgaW4gc2Vzc2lvbuKAmXMgbGlz
dCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzLCBpbiBvcmRl
cjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCmluZGV4IDMx
M2Q4ZmMwZTE1NjliODI5ZmU5ODFlNjA4ODU1NzdjZjM2NjcxMWUuLjhlZDQxZTE3MmM5YTdkYWY3
N2NhNGFjNjhkMWE0ZjEyYTU4MTVjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBu
YXRpdmVXZWJHTEZyYW1lYnVmZmVyUmVzb2x1dGlvbigpIGNvbnN0OwogICAgIEludFNpemUgcmVj
b21tZW5kZWRXZWJHTEZyYW1lYnVmZmVyUmVzb2x1dGlvbigpIGNvbnN0OwogICAgIGJvb2wgc3Vw
cG9ydHNWaWV3cG9ydFNjYWxpbmcoKSBjb25zdDsgCisgICAgYm9vbCBpc1Bvc2l0aW9uRW11bGF0
ZWQoKSBjb25zdDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpAQCAtMTExLDYgKzExMiw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9y
bVhSOjpUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudAorICAgIHZvaWQgc2Vzc2lvbkRpZEluaXRp
YWxpemVJbnB1dFNvdXJjZXMoVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJ
bnB1dFNvdXJjZT4mJikgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uRGlkRW5kKCkgZmluYWw7CiAK
ICAgICBlbnVtIGNsYXNzIEluaXRpYXRlZEJ5U3lzdGVtIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAg
LTE1Miw2ICsxNTQsOSBAQCBwcml2YXRlOgogICAgIC8vIEluIG1ldGVycy4KICAgICBkb3VibGUg
bV9taW5pbXVtTmVhckNsaXBQbGFuZSB7IDAuMSB9OwogICAgIGRvdWJsZSBtX21heGltdW1GYXJD
bGlwUGxhbmUgeyAxMDAwLjAgfTsKKworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRo
dWIuaW8vd2VieHIvI3hyc2Vzc2lvbi1wcm9taXNlLXJlc29sdmVkCisgICAgYm9vbCBtX2lucHV0
SW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKaW5kZXggZmE4ODFkNGJi
YjRmNTUxYmQ2YTMyODI5MmIwMjI5ZWExN2Q5NDlmOS4uMTE5MjE0MTg5ZmMyMDFkODUxMzQ0ZGVi
MGQzMTZkMzlmNDc4YTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U3BhY2UuY3BwCkBAIC01NCw2ICs1NCwxMSBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlNw
YWNlOjplZmZlY3RpdmVPcmlnaW4oKSBjb25zdAogfQogCiAKK2Jvb2wgV2ViWFJTcGFjZTo6aXNQ
b3NpdGlvbkVtdWxhdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Vzc2lvbigpLmlzUG9zaXRp
b25FbXVsYXRlZCgpOworfQorCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJWaWV3
ZXJTcGFjZSk7CiAKIFdlYlhSVmlld2VyU3BhY2U6OldlYlhSVmlld2VyU3BhY2UoRG9jdW1lbnQm
IGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTcGFjZS5oCmluZGV4IDRhOWRiZWZkZDNiNTQ3ZjhhMDYyM2QyNjU2NDlkNmY5
MGJiOWJmNGEuLmQ4Zjg4ZWE1OGI5NTg0NTE4ZDQ3NjU0MGVkYzhkZGRiMTk2NzlkYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCkBAIC00Nyw2ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0ID0g
MDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBlZmZlY3RpdmVPcmlnaW4oKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKaW5kZXgg
MjAyOGEwNGYyNDI3NmYwYzdlZTNhYzdjZTBlNDQwYWU0NDIzMzgyOC4uNGQxODVmODBmM2FmNmUx
YjhhYTgzNmFlMTBjNGMxZDNjN2E2MTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAgLTQ0NiwxNCArNDQ2LDcgQEAgdm9pZCBXZWJYUlN5c3Rl
bTo6cmVxdWVzdFNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBYUlNlc3Npb25Nb2RlIG1vZGUs
IGNvbnN0IFgKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1vdmUoc2Vzc2lvbikpOwogICAg
ICAgICByZWplY3RQcm9taXNlV2l0aE5vdFN1cHBvcnRlZEVycm9yLnJlbGVhc2UoKTsKIAotICAg
ICAgICAvLyBGSVhNRToKLSAgICAgICAgLy8gNS40LjEwIFF1ZXVlIGEgdGFzayB0byBwZXJmb3Jt
IHRoZSBmb2xsb3dpbmcgc3RlcHM6IE5PVEU6IFRoZXNlIHN0ZXBzIGVuc3VyZSB0aGF0IGluaXRp
YWwgaW5wdXRzb3VyY2VzY2hhbmdlCi0gICAgICAgIC8vIGV2ZW50cyBvY2N1ciBhZnRlciB0aGUg
aW5pdGlhbCBzZXNzaW9uIGlzIHJlc29sdmVkLgotICAgICAgICAvLyAgICAgMS4gU2V0IHNlc3Np
b24ncyBwcm9taXNlIHJlc29sdmVkIGZsYWcgdG8gdHJ1ZS4KLSAgICAgICAgLy8gICAgIDIuIExl
dCBzb3VyY2VzIGJlIGFueSBleGlzdGluZyBpbnB1dCBzb3VyY2VzIGF0dGFjaGVkIHRvIHNlc3Np
b24uCi0gICAgICAgIC8vICAgICAzLiBJZiBzb3VyY2VzIGlzIG5vbi1lbXB0eSwgcGVyZm9ybSB0
aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICAvLyAgICAgICAgMS4gU2V0IHNlc3Npb24ncyBs
aXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2VzIHRvIHNvdXJjZXMuCi0gICAgICAgIC8vICAg
ICAgICAyLiBGaXJlIGFuIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQgbmFtZWQgaW5wdXRzb3Vy
Y2VzY2hhbmdlIG9uIHNlc3Npb24gd2l0aCBhZGRlZCBzZXQgdG8gc291cmNlcy4KKyAgICAgICAg
Ly8gNS40LjEwIGlzIGhhbmRsZWQgaW4gV2ViWFJTZXNzaW9uOjpzZXNzaW9uRGlkSW5pdGlhbGl6
ZUlucHV0U291cmNlcy4KICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9YUkhhbmRlZG5lc3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvWFJIYW5kZWRuZXNzLmgKaW5kZXggOTMzMzAzNGQwY2Q0OWFjOGRlZTkwMmEwODE2NDQ4MDQz
NzhjYmMyYy4uODU5ODVjY2FmYTZiY2Q0NTZhYzBiNjQ1MmU3MDRhZTBiZmUwNzg3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkhhbmRlZG5lc3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSGFuZGVkbmVzcy5oCkBAIC0yNywxMyArMjcs
MTEgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFhSSGFuZGVkbmVzcyB7Ci0gICAgTm9u
ZSwKLSAgICBMZWZ0LAotICAgIFJpZ2h0LAotfTsKK3VzaW5nIFhSSGFuZGVkbmVzcyA9IFBsYXRm
b3JtWFI6OlhSSGFuZGVkbmVzczsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5jcHAKaW5k
ZXggMjI2MzFhYjU1Mjk3MDU2Y2MwNjNkNzQ0Njg5ZDNlMDMzY2EwZmE1Ny4uZmM4OGJmN2E3OWI2
OTg0MDcwNDljZjYwMGI5NzE3ZWJkMzYyYzIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZUV2ZW50LmNwcApAQCAtMzAsOSArMzAsMTIgQEAK
IAogI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUklucHV0U291cmNlLmgi
CisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoWFJJbnB1dFNvdXJjZUV2ZW50KTsKKwog
UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4gWFJJbnB1dFNvdXJjZUV2ZW50OjpjcmVhdGUoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1Ry
dXN0ZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWFJJbnB1dFNvdXJjZUV2ZW50KHR5
cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKQEAgLTQyLDcgKzQ1LDYgQEAgWFJJbnB1dFNv
dXJjZUV2ZW50OjpYUklucHV0U291cmNlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29u
c3QgSW5pdCYgaW5pdGkKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQp
CiAgICAgLCBtX2ZyYW1lKGluaXRpYWxpemVyLmZyYW1lKQogICAgICwgbV9pbnB1dFNvdXJjZShp
bml0aWFsaXplci5pbnB1dFNvdXJjZSkKLSAgICAsIG1fYnV0dG9uSW5kZXgoaW5pdGlhbGl6ZXIu
YnV0dG9uSW5kZXgpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAgIEFTU0VSVChtX2lucHV0
U291cmNlKTsKQEAgLTYwLDkgKzYyLDkgQEAgY29uc3QgV2ViWFJJbnB1dFNvdXJjZSYgWFJJbnB1
dFNvdXJjZUV2ZW50OjppbnB1dFNvdXJjZSgpIGNvbnN0CiAgICAgcmV0dXJuICptX2lucHV0U291
cmNlOwogfQogCi1PcHRpb25hbDxpbnQ+IFhSSW5wdXRTb3VyY2VFdmVudDo6YnV0dG9uSW5kZXgo
KSBjb25zdAordm9pZCBYUklucHV0U291cmNlRXZlbnQ6OnNldEZyYW1lQWN0aXZlKGJvb2wgYWN0
aXZlKQogewotICAgIHJldHVybiBtX2J1dHRvbkluZGV4OworICAgIG1fZnJhbWUtPnNldEFjdGl2
ZShhY3RpdmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuaAppbmRleCA4YzdmYzA0NzQ3
YTJiZjExZWE4YjJmYjdiNWNhOWY0NTRhYzE1MzAzLi5lM2M1NDExMzQ1NTFiYzI3NWFmMGZjNDFi
NjdlYWM0Mzk4MzNmMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1hSSW5wdXRTb3VyY2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
WFJJbnB1dFNvdXJjZUV2ZW50LmgKQEAgLTM3LDExICszNywxMSBAQCBjbGFzcyBXZWJYUkZyYW1l
OwogY2xhc3MgV2ViWFJJbnB1dFNvdXJjZTsKIAogY2xhc3MgWFJJbnB1dFNvdXJjZUV2ZW50IGZp
bmFsIDogcHVibGljIEV2ZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFhSSW5wdXRT
b3VyY2VFdmVudCk7CiBwdWJsaWM6CiAgICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewogICAg
ICAgICBSZWZQdHI8V2ViWFJGcmFtZT4gZnJhbWU7CiAgICAgICAgIFJlZlB0cjxXZWJYUklucHV0
U291cmNlPiBpbnB1dFNvdXJjZTsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBidXR0b25JbmRleDsK
ICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxYUklucHV0U291cmNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwpA
QCAtNDksNyArNDksOSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXZWJYUkZyYW1lJiBmcmFtZSgp
IGNvbnN0OwogICAgIGNvbnN0IFdlYlhSSW5wdXRTb3VyY2UmIGlucHV0U291cmNlKCkgY29uc3Q7
Ci0gICAgT3B0aW9uYWw8aW50PiBidXR0b25JbmRleCgpIGNvbnN0OworICAgIHZvaWQgc2V0RnJh
bWVBY3RpdmUoYm9vbCk7CisKKyAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIFhSSW5wdXRTb3VyY2VFdmVudEludGVyZmFjZVR5cGU7IH0KIAog
cHJpdmF0ZToKICAgICBYUklucHV0U291cmNlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IEluaXQmLCBJc1RydXN0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaAppbmRleCAwM2E2NGI3YjY4ZDRmNjIy
NmQ0MmQxZjI3ZWQyMzIyMWQyNmU4YTg0Li5kZDU0NzhmOWZmYWM0MzE3MzhhZmI5ZWEyYzE5MTk4
NGYzNzJkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5w
dXRTb3VyY2VzQ2hhbmdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNlPj4mIGFkZGVkKCkgY29uc3Q7
CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNlPj4mIHJlbW92ZWQoKSBj
b25zdDsKIAorICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudEludGVyZmFjZVR5cGU7IH0KKwogcHJp
dmF0ZToKICAgICBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5pZGwKaW5kZXggNTIyYmRj
MWQ1ZGFiZTA3Yzg1MmVjZDQxM2Q3YzM3NDcxMmI2ODM2ZC4uZWI5MTlhMTBmYjk0YzBiMmU4ZWM4
OGI0MzM1ZmY1OWJiYTc1MWNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaWRsCkBAIC00MSw2ICs0MSw2
IEBACiAgICAgY29uc3RydWN0b3IoRE9NU3RyaW5nIHR5cGUsIFhSSW5wdXRTb3VyY2VzQ2hhbmdl
RXZlbnRJbml0IGV2ZW50SW5pdERpY3QpOwogCiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBXZWJYUlNlc3Npb24gc2Vzc2lvbjsKLSAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkg
YXR0cmlidXRlIEZyb3plbkFycmF5PFdlYlhSSW5wdXRTb3VyY2U+IGFkZGVkOwotICAgIFtTYW1l
T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8V2ViWFJJbnB1dFNvdXJjZT4g
cmVtb3ZlZDsKKyAgICBbQ2FjaGVkQXR0cmlidXRlLCBTYW1lT2JqZWN0XSByZWFkb25seSBhdHRy
aWJ1dGUgRnJvemVuQXJyYXk8V2ViWFJJbnB1dFNvdXJjZT4gYWRkZWQ7CisgICAgW0NhY2hlZEF0
dHJpYnV0ZSwgU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIEZyb3plbkFycmF5PFdlYlhS
SW5wdXRTb3VyY2U+IHJlbW92ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9YUlRhcmdldFJheU1vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvWFJUYXJnZXRSYXlNb2RlLmgKaW5kZXggMWZjYTQ0ZTQ1MWI5N2M1NjAyNmUxNDViNTIyMzMx
ZjgxNjViYWU3Zi4uYjczYjRlMGNkMWYzNGI4YmIxODQ1YzVkNTA0MzQwNmQ3YTcxY2Q3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUlRhcmdldFJheU1vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSVGFyZ2V0UmF5TW9kZS5oCkBAIC0y
OSwxMSArMjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgWFJUYXJn
ZXRSYXlNb2RlIHsKLSAgICBHYXplLAotICAgIFRyYWNrZWRQb2ludGVyLAotICAgIFNjcmVlbiwK
LX07CisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorCit1c2luZyBYUlRhcmdldFJheU1vZGUgPSBQ
bGF0Zm9ybVhSOjpYUlRhcmdldFJheU1vZGU7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCBlY2FjZGViYzEzNTlhOWNlZDQyZmRkZGM1YTBiNWI1ZWNmZGMyOTVi
Li5lZWRkZDc5Mzc3NTg5NzBlMTY3NTI5YjQxOWQ3ZGQ4OTMzZmJiNTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtNDI2LDggKzQyNiwxMCBAQCBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCiBNb2R1bGVzL3dlYnhyL05hdmlnYXRvcldlYlhSLmNwcCBA
bm8tdW5pZnkKIE1vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwIEBu
by11bmlmeQogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcCBAbm8tdW5pZnkKK01vZHVsZXMv
d2VieHIvV2ViWFJHYW1lcGFkLmNwcCBAbm8tdW5pZnkKIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1
dFNvdXJjZS5jcHAgQG5vLXVuaWZ5CiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJh
eS5jcHAgQG5vLXVuaWZ5CitNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5jcHAgQG5vLXVu
aWZ5CiBNb2R1bGVzL3dlYnhyL1dlYlhSTGF5ZXIuY3BwIEBuby11bmlmeQogTW9kdWxlcy93ZWJ4
ci9XZWJYUlBvc2UuY3BwIEBuby11bmlmeQogTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNw
YWNlLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyZDZhNDYxMDliZDU0Y2IzYmM5YjllYTI3MTk0MTBmMmEz
YTVhNGM5Li5hYjg5ZjBkMGEyY2Y5Yjk4OGQxYzc3MmJhMWEzODI5YzUxYjY2ZDBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00
MTYsNiArNDE2LDEwIEBACiAJCTExOTM0MEEzMUZFRTAyNDAwMDkzNUYxRSAvKiBSZW5kZXJUcmVl
QnVpbGRlckJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxMTkzNDBBMTFGRUUwMjQwMDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5o
ICovOyB9OwogCQkxMTk5RkE0NjIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyQm94
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTk5RkE0
NDIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyQm94LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTFDQjI3ODkyMDNCQTU3MDAwNEEx
REM5IC8qIFJlbmRlclRyZWVCdWlsZGVyRnVsbFNjcmVlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFDQjI3ODcyMDNCQTU3MDAwNEExREM5IC8qIFJl
bmRlclRyZWVCdWlsZGVyRnVsbFNjcmVlbi5oICovOyB9OworCQkxMUU1MTYzODI2MUUxQTA2MDBF
NjlGMjUgLyogV2ViWFJJbnB1dFNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxMUU1MTYzNTI2MUUxQTA1MDBFNjlGMjUgLyogV2ViWFJJbnB1dFNw
YWNlLmggKi87IH07CisJCTExRTUxNjM5MjYxRTFBMDYwMEU2OUYyNSAvKiBXZWJYUklucHV0U3Bh
Y2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFF
NTE2MzcyNjFFMUEwNTAwRTY5RjI1IC8qIFdlYlhSSW5wdXRTcGFjZS5jcHAgKi87IH07CisJCTEx
RTUxNjNDMjYxRTFBMTUwMEU2OUYyNSAvKiBXZWJYUkdhbWVwYWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExRTUxNjNBMjYxRTFBMTQwMEU2OUYyNSAv
KiBXZWJYUkdhbWVwYWQuaCAqLzsgfTsKKwkJMTFFNTE2M0QyNjFFMUExNTAwRTY5RjI1IC8qIFdl
YlhSR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxMUU1MTYzQjI2MUUxQTE0MDBFNjlGMjUgLyogV2ViWFJHYW1lcGFkLmNwcCAqLzsgfTsK
IAkJMTQwMEQ3QTgxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDBEN0E3MTcx
MzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwM0I5OTcwOUVCMTNBRjAwNzk3
QzdGIC8qIERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQwM0I5OTUwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDNCQTBGMDlFQjE4
RjkwMDc5N0M3RiAvKiBKU0RPTVdpbmRvdy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwM0JBMEUwOUVCMThGODAwNzk3QzdG
IC8qIEpTRE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTY0MDcsNiArNjQxMSwxMCBAQAogCQkxMUNCMjc4NjIwM0JBNTcwMDA0QTFE
QzkgLyogUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclRyZWVCdWlsZGVyRnVsbFNjcmVlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTExQ0IyNzg3MjAzQkE1NzAwMDRBMURDOSAvKiBSZW5kZXJUcmVlQnVpbGRlckZ1bGxT
Y3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExRDE5QzJFMjMxNTlCQUUwMDhGMjREMyAvKiBU
YWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGFi
bGVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTFFNTE2MzUyNjFFMUEwNTAwRTY5RjI1IC8qIFdlYlhSSW5wdXRTcGFjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJYUklucHV0U3BhY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTFFNTE2MzcyNjFFMUEwNTAwRTY5RjI1IC8qIFdlYlhSSW5w
dXRTcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJYUklu
cHV0U3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMUU1MTYzQTI2MUUx
QTE0MDBFNjlGMjUgLyogV2ViWFJHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlhSR2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMUU1
MTYzQjI2MUUxQTE0MDBFNjlGMjUgLyogV2ViWFJHYW1lcGFkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlhSR2FtZXBhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTExRTZDRjFCMjVGMTQwRTMwMDEzRDNENSAvKiBKU1dlYlhSUmVmZXJlbmNl
U3BhY2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNX
ZWJYUlJlZmVyZW5jZVNwYWNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTFFNkNGMUQyNUYxNDBFNDAwMTNEM0Q1IC8qIEpTV2ViWFJTcGFjZUN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYlhSU3BhY2VDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMUZGMDJENTIwQkEzQzgxMDA4M0YyNUIg
LyogVmVyaWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZlcmlmaWNhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODk4NywxMiArMjg5OTUsMTYgQEAKIAkJ
CQlFMUVFOEFGMDI0MTJCMTcwMDBFNzk0RDYgLyogV2ViWFJGcmFtZS5jcHAgKi8sCiAJCQkJRTFF
RThBRTMyNDEyQjE3MDAwRTc5NEQ2IC8qIFdlYlhSRnJhbWUuaCAqLywKIAkJCQlFMTk0OTA4ODI0
MzRGMTU5MDA0MTZBOTkgLyogV2ViWFJGcmFtZS5pZGwgKi8sCisJCQkJMTFFNTE2M0IyNjFFMUEx
NDAwRTY5RjI1IC8qIFdlYlhSR2FtZXBhZC5jcHAgKi8sCisJCQkJMTFFNTE2M0EyNjFFMUExNDAw
RTY5RjI1IC8qIFdlYlhSR2FtZXBhZC5oICovLAogCQkJCUUxRUU4QjBEMjQxMkIxNzAwMEU3OTRE
NiAvKiBXZWJYUklucHV0U291cmNlLmNwcCAqLywKIAkJCQlFMUVFOEIxNzI0MTJCMTcwMDBFNzk0
RDYgLyogV2ViWFJJbnB1dFNvdXJjZS5oICovLAogCQkJCUUxOTQ5MDg5MjQzNEYxNUEwMDQxNkE5
OSAvKiBXZWJYUklucHV0U291cmNlLmlkbCAqLywKIAkJCQlFMUVFOEFFNjI0MTJCMTcwMDBFNzk0
RDYgLyogV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcCAqLywKIAkJCQlFMUVFOEFERDI0MTJCMTcw
MDBFNzk0RDYgLyogV2ViWFJJbnB1dFNvdXJjZUFycmF5LmggKi8sCiAJCQkJRTE5NDkwOTMyNDM0
RjE2MDAwNDE2QTk5IC8qIFdlYlhSSW5wdXRTb3VyY2VBcnJheS5pZGwgKi8sCisJCQkJMTFFNTE2
MzcyNjFFMUEwNTAwRTY5RjI1IC8qIFdlYlhSSW5wdXRTcGFjZS5jcHAgKi8sCisJCQkJMTFFNTE2
MzUyNjFFMUEwNTAwRTY5RjI1IC8qIFdlYlhSSW5wdXRTcGFjZS5oICovLAogCQkJCUUxMkZEQUZC
MjRBMEZEMUMwMDcwMjM2RSAvKiBXZWJYUkxheWVyLmNwcCAqLywKIAkJCQlFMTJGREFGRDI0QTBG
RDFFMDA3MDIzNkUgLyogV2ViWFJMYXllci5oICovLAogCQkJCUUxMkZEQUZFMjRBMEZEMUYwMDcw
MjM2RSAvKiBXZWJYUkxheWVyLmlkbCAqLywKQEAgLTMyMTE1LDYgKzMyMTI3LDcgQEAKIAkJCQk0
MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxQTNENThGMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMDZERkE2MTM0QTRERUYwMDZGNUQ3
RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0
RjM4RDFCMjYyNkYxM0IwMDdCMTA2NCAvKiBEZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEODNEMzYyMjExMjJBMjEwMDc2RTExQyAvKiBEZWZlcnJhYmxl
VGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMkMxMkIwMjY3NjAwQzFBMzU5IC8qIERl
bGF5RFNQS2VybmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAyRTEyQjAyNjc2MDBDMUEz
NTkgLyogRGVsYXlOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NjE0LDcgKzM0NjI3LDYgQEAK
IAkJCQlCNTk1RkY0NzE4MjRDRUUzMDBGRjUxQ0QgLyogUmVuZGVySXRlcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRUE0ODdBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBDRkYwRjEyREU5QjAwNTFENjg5IC8qIFJlbmRlckxheWVy
QmFja2luZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTRGMzhEMUIyNjI2RjEzQjAwN0IxMDY0IC8q
IERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBD
RkQwRjEyREU5QjAwNTFENjg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJM0MyNDRGRUFBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTNGQjg0MjEzQjdBNjQwMEM0MEQzNCAvKiBSZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NzczLDggKzM1Nzg1
LDEwIEBACiAJCQkJQjEwQjY5ODIxNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuaXplci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThCN0UyNDEzMTkxRjAwRTc5NEQ2IC8qIFdlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEI4QTI0MTMxOTFG
MDBFNzk0RDYgLyogV2ViWFJGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTFFNTE2M0MyNjFF
MUExNTAwRTY5RjI1IC8qIFdlYlhSR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThC
QTgyNDEzMTk2MzAwRTc5NEQ2IC8qIFdlYlhSSW5wdXRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxRUU4Qjg2MjQxMzE5MUYwMEU3OTRENiAvKiBXZWJYUklucHV0U291cmNlQXJyYXkuaCBp
biBIZWFkZXJzICovLAorCQkJCTExRTUxNjM4MjYxRTFBMDYwMEU2OUYyNSAvKiBXZWJYUklucHV0
U3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMkZEQjAwMjRBMEZEMjAwMDcwMjM2RSAvKiBX
ZWJYUkxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEI4ODI0MTMxOTFGMDBFNzk0RDYg
LyogV2ViWFJQb3NlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEJBNjI0MTMxOTYzMDBFNzk0
RDYgLyogV2ViWFJSZWZlcmVuY2VTcGFjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzA5MSw4ICsz
NzEwNSwxMCBAQAogCQkJCUNFQ0RDOTNDMjFGMjk3MjkwMDk3NkJEMSAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUVFOEI4MDI0MTMx
OTFGMDBFNzk0RDYgLyogV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTFFRThCOTMyNDEzMTk1MDAwRTc5NEQ2IC8qIFdlYlhSRnJhbWUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMTFFNTE2M0QyNjFFMUExNTAwRTY5RjI1IC8qIFdlYlhSR2FtZXBhZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVFOEJBMTI0MTMxOTYzMDBFNzk0RDYgLyogV2ViWFJJ
bnB1dFNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVFOEI4QzI0MTMxOTFGMDBFNzk0
RDYgLyogV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTExRTUx
NjM5MjYxRTFBMDYwMEU2OUYyNSAvKiBXZWJYUklucHV0U3BhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTEyRkRBRkYyNEEwRkQyMDAwNzAyMzZFIC8qIFdlYlhSTGF5ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFFRThCOEIyNDEzMTkxRjAwRTc5NEQ2IC8qIFdlYlhSUG9zZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMUVFOEI3RjI0MTMxOTFGMDBFNzk0RDYgLyogV2ViWFJSZWZlcmVu
Y2VTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuY3BwCmluZGV4IGM4NWUyNmE3OTlkZGM1ZDU1
ODFjZTEyM2U1ZmZiMTczNTMyY2FkMzMuLmZjMzk2MGYzOWY0NDZlMzU0MjVmMTQ0YWY4NzVhNWY5
NGZiNjNjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2Ft
ZXBhZENvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9H
YW1lcGFkQ29uc3RhbnRzLmNwcApAQCAtNDMsNiArNDMsMTUgQEAgY29uc3QgV1RGOjpTdHJpbmcm
IHN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKQogICAgIHJldHVybiBzdGFuZGFyZEdhbWVw
YWRNYXBwaW5nOwogfQogCisjaWYgRU5BQkxFKFdFQlhSKQorLy8gaHR0cHM6Ly9pbW1lcnNpdmUt
d2ViLmdpdGh1Yi5pby93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvI2RvbS1nYW1lcGFkbWFwcGluZ3R5
cGUteHItc3RhbmRhcmQKK2NvbnN0IFdURjo6U3RyaW5nJiB4clN0YW5kYXJkR2FtZXBhZE1hcHBp
bmdTdHJpbmcoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHhyU3RhbmRh
cmRHYW1lcGFkTWFwcGluZyA9ICJ4ci1zdGFuZGFyZCI7CisgICAgcmV0dXJuIHhyU3RhbmRhcmRH
YW1lcGFkTWFwcGluZzsKK30KKyNlbmRpZgorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3Rh
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMu
aAppbmRleCA3ZTE2OWY0ZGE4Yjk4ZmU2ZWZhYTFlMjMwZTJhNGU5MjRhMjM2NzMzLi42MzNhZmQ3
M2QzNzQ3ZmFhM2EwOGFlNzU2Y2I0MzIxNTEyNWQyNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaApAQCAtNjIsNiArNjIsOSBA
QCBleHRlcm4gY29uc3Qgc2l6ZV90IG51bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhI
b21lQnV0dG9uOwogZXh0ZXJuIGNvbnN0IEdhbWVwYWRCdXR0b25Sb2xlIG1heGltdW1HYW1lcGFk
QnV0dG9uOwogCiBjb25zdCBXVEY6OlN0cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmlu
ZygpOworI2lmIEVOQUJMRShXRUJYUikKK2NvbnN0IFdURjo6U3RyaW5nJiB4clN0YW5kYXJkR2Ft
ZXBhZE1hcHBpbmdTdHJpbmcoKTsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCAwNDk5Yzc2ZTA2ZWE2
ODA2OWE4MThhZTMxNTNhNDc1Y2Y4ZjlkNmU5Li40MjM0YjQzNTNlM2JhZWRiMGIyYWUxYzE4OTU0
OTc1ZDgzNTgzZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBA
IC01NiwxNiArNTYsMjQgQEAgZW51bSBjbGFzcyBFeWUgewogdXNpbmcgTGF5ZXJIYW5kbGUgPSBp
bnQ7CiAKICNpZiBFTkFCTEUoV0VCWFIpCit1c2luZyBJbnB1dFNvdXJjZUhhbmRsZSA9IGludDsK
IAotY2xhc3MgVHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5U
cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpID0gZGVmYXVsdDsKKy8vIGh0dHBzOi8vaW1tZXJz
aXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2VudW1kZWYteHJoYW5kZWRuZXNzCitlbnVtIGNsYXNz
IFhSSGFuZGVkbmVzcyB7CisgICAgTm9uZSwKKyAgICBMZWZ0LAorICAgIFJpZ2h0LAorfTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uRGlkRW5kKCkgPSAwOwotICAgIC8vIEZJWE1FOiBoYW5k
bGUgZnJhbWUgdXBkYXRlCi0gICAgLy8gRklYTUU6IGhhbmRsZSB2aXNpYmlsaXR5IGNoYW5nZXMK
Ky8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2VudW1kZWYteHJ0YXJn
ZXRyYXltb2RlCitlbnVtIGNsYXNzIFhSVGFyZ2V0UmF5TW9kZSB7CisgICAgR2F6ZSwKKyAgICBU
cmFja2VkUG9pbnRlciwKKyAgICBTY3JlZW4sCiB9OwogCitjbGFzcyBUcmFja2luZ0FuZFJlbmRl
cmluZ0NsaWVudDsKKwogY2xhc3MgRGV2aWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PERldmljZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEZXZpY2U+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXZpY2UpOwpAQCAtMTYz
LDYgKzE3MSwyOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8TGF5ZXJEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogICAgICAgICB9
OwogCisgICAgICAgIHN0cnVjdCBJbnB1dFNvdXJjZUJ1dHRvbiB7CisgICAgICAgICAgICBib29s
IHRvdWNoZWQgeyBmYWxzZSB9OworICAgICAgICAgICAgYm9vbCBwcmVzc2VkIHsgZmFsc2UgfTsK
KyAgICAgICAgICAgIGZsb2F0IHByZXNzZWRWYWx1ZSB7IDAgfTsKKyAgICAgICAgfTsKKworICAg
ICAgICBzdHJ1Y3QgSW5wdXRTb3VyY2VQb3NlIHsKKyAgICAgICAgICAgIFBvc2UgcG9zZTsKKyAg
ICAgICAgICAgIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkIHsgZmFsc2UgfTsKKyAgICAgICAgfTsK
KworICAgICAgICBzdHJ1Y3QgSW5wdXRTb3VyY2UgeworICAgICAgICAgICAgSW5wdXRTb3VyY2VI
YW5kbGUgaGFuZGxlIHsgMCB9OworICAgICAgICAgICAgWFJIYW5kZWRuZXNzIGhhbmRlbmVzcyB7
IFhSSGFuZGVkbmVzczo6Tm9uZSB9OworICAgICAgICAgICAgWFJUYXJnZXRSYXlNb2RlIHRhcmdl
dFJheU1vZGUgeyBYUlRhcmdldFJheU1vZGU6OkdhemUgfTsKKyAgICAgICAgICAgIFZlY3RvcjxT
dHJpbmc+IHByb2ZpbGVzOworICAgICAgICAgICAgSW5wdXRTb3VyY2VQb3NlIHBvaW50ZXJPcmln
aW47CisgICAgICAgICAgICBPcHRpb25hbDxJbnB1dFNvdXJjZVBvc2U+IGdyaXBPcmlnaW47Cisg
ICAgICAgICAgICBWZWN0b3I8SW5wdXRTb3VyY2VCdXR0b24+IGJ1dHRvbnM7CisgICAgICAgICAg
ICBWZWN0b3I8ZmxvYXQ+IGF4ZXM7CisgICAgICAgIH07CisKICAgICAgICAgYm9vbCBpc1RyYWNr
aW5nVmFsaWQgeyBmYWxzZSB9OwogICAgICAgICBib29sIGlzUG9zaXRpb25WYWxpZCB7IGZhbHNl
IH07CiAgICAgICAgIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkIHsgZmFsc2UgfTsKQEAgLTE3Myw2
ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0YWdlUGFyYW1ldGVycyBzdGFnZVBhcmFtZXRl
cnM7CiAgICAgICAgIFZlY3RvcjxWaWV3PiB2aWV3czsKICAgICAgICAgSGFzaE1hcDxMYXllckhh
bmRsZSwgTGF5ZXJEYXRhPiBsYXllcnM7CisgICAgICAgIFZlY3RvcjxJbnB1dFNvdXJjZT4gaW5w
dXRTb3VyY2VzOwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPEZyYW1lRGF0YT4gZGVjb2RlKERlY29kZXImKTsKQEAgLTIxNCw2ICsyNDUsMTkg
QEAgcHJvdGVjdGVkOgogICAgIFdlYWtQdHI8VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ+IG1f
dHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ7CiB9OwogCitjbGFzcyBUcmFja2luZ0FuZFJlbmRl
cmluZ0NsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUcmFja2luZ0FuZFJlbmRlcmluZ0Ns
aWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgflRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50
KCkgPSBkZWZhdWx0OworCisgICAgLy8gVGhpcyBldmVudCBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0
IGluaXRpYWwgaW5wdXRzb3VyY2VzY2hhbmdlIGV2ZW50cyBvY2N1ciBhZnRlciB0aGUgaW5pdGlh
bCBzZXNzaW9uIGlzIHJlc29sdmVkLgorICAgIC8vIFdlYnhSIGFwcHMgY2FuIHdhaXQgZm9yIHRo
ZSBpbnB1dCBzb3VyY2UgZXZlbnRzIGJlZm9yZSBjYWxsaW5nIHJlcXVlc3RBbmltYXRpb25GcmFt
ZS4KKyAgICAvLyBQZXItZnJhbWUgaW5wdXQgc291cmNlIHVwZGF0ZXMgYXJlIGhhbmRsZWQgdmlh
IHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHdoaWNoIGNhbGxzIERldmljZTo6cmVxdWVz
dEZyYW1lLgorICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNl
cyhWZWN0b3I8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNlc3Npb25EaWRFbmQoKSA9IDA7CisgICAgLy8gRklYTUU6IGhhbmRsZSBmcmFt
ZSB1cGRhdGUKKyAgICAvLyBGSVhNRTogaGFuZGxlIHZpc2liaWxpdHkgY2hhbmdlcworfTsKKwog
Y2xhc3MgSW5zdGFuY2UgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnN0
YW5jZSYgc2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YkZha2VYUkRldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmlj
ZS5jcHAKaW5kZXggZTAxNjRmNDljYTA5N2I1MWExMWFkMTg4MjA1NjU0ZGMzMDgyODJiNS4uZjhj
NjE4ZTI4MjE1ZmQwOTFiZmQ4YjNmNzc1MDdlZGJmNTc2YjhjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcApAQCAtMTA2LDYgKzEwNiwxOSBAQCB2b2lkIFNp
bXVsYXRlZFhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1Y
Ujo6U2Vzc2lvbk1vZGUpCiAgICAgYXR0cmlidXRlcy5zdGVuY2lsID0gZmFsc2U7CiAgICAgYXR0
cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICBtX2dsID0gR3JhcGhpY3NDb250ZXh0R0w6
OmNyZWF0ZShhdHRyaWJ1dGVzLCBudWxscHRyKTsKKworICAgIGlmIChtX3RyYWNraW5nQW5kUmVu
ZGVyaW5nQ2xpZW50KSB7CisgICAgICAgIC8vIFdlYlhSIEZha2VEZXZpY2Ugd2FpdHMgZm9yIHNp
bXVsYXRlSW5wdXRDb25uZWN0aW9uIGNhbGxzIHRvIGFkZCBpbnB1dCBzb3VyY2VzLQorICAgICAg
ICAvLyBUaGVyZSBpcyBubyB3YXkgdG8ga25vdyBob3cgbWFueSBzaW11bGF0ZUlucHV0Q29ubmVj
dGlvbiBjYWxscyB3aWxsIHRoZSBkZXZpY2UgcmVjZWl2ZSwKKyAgICAgICAgLy8gc28gbm90aWZ5
IHRoZSBpbnB1dCBzb3VyY2VzIGhhdmUgYmVlbiBpbml0aWFsaXplZCB3aXRoIGFuIGVtcHR5IGxp
c3QuIFRoaXMgaXMgbm90IGEgcHJvYmxlbSBiZWNhdXNlCisgICAgICAgIC8vIFdQVCB0ZXN0cyBy
ZWx5IG9uIHJlcXVlc3RBbmltYXRpb25GcmFtZSB1cGRhdGVzIHRvIHRlc3QgdGhlIGlucHV0IHNv
dXJjZXMuCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSgpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGll
bnQpCisgICAgICAgICAgICAgICAgbV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudC0+c2Vzc2lv
bkRpZEluaXRpYWxpemVJbnB1dFNvdXJjZXMoeyB9KTsKKyAgICAgICAgfSk7CisgICAgfQogfQog
CiB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkK
QEAgLTEzNCw2ICsxNDcsMTEgQEAgdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZp
cmVkKCkKICAgICBmb3IgKGF1dG8mIGxheWVyIDogbV9sYXllcnMpCiAgICAgICAgIGRhdGEubGF5
ZXJzLmFkZChsYXllci5rZXksIEZyYW1lRGF0YTo6TGF5ZXJEYXRhIHsgLm9wYXF1ZVRleHR1cmUg
PSBsYXllci52YWx1ZSB9KTsKIAorICAgIGZvciAoYXV0byYgaW5wdXQgOiBtX2lucHV0Q29ubmVj
dGlvbnMpIHsKKyAgICAgICAgaWYgKGlucHV0LT5pc0Nvbm5lY3RlZCgpKQorICAgICAgICAgICAg
ZGF0YS5pbnB1dFNvdXJjZXMuYXBwZW5kKGlucHV0LT5nZXRGcmFtZURhdGEoKSk7CisgICAgfQor
CiAgICAgaWYgKG1fRnJhbWVDYWxsYmFjaykKICAgICAgICAgbV9GcmFtZUNhbGxiYWNrKFdURk1v
dmUoZGF0YSkpOwogfQpAQCAtMjM3LDExICsyNTUsMTUgQEAgdm9pZCBXZWJGYWtlWFJEZXZpY2U6
OnNldEZsb29yT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBvcmlnaW4pCiAKIHZvaWQg
V2ViRmFrZVhSRGV2aWNlOjpzaW11bGF0ZVJlc2V0UG9zZSgpCiB7CisKIH0KIAotUmVmPFdlYkZh
a2VYUklucHV0Q29udHJvbGxlcj4gV2ViRmFrZVhSRGV2aWNlOjpzaW11bGF0ZUlucHV0U291cmNl
Q29ubmVjdGlvbihGYWtlWFJJbnB1dFNvdXJjZUluaXQpCitSZWY8V2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyPiBXZWJGYWtlWFJEZXZpY2U6OnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKGNv
bnN0IEZha2VYUklucHV0U291cmNlSW5pdCYgaW5pdCkKIHsKLSAgICByZXR1cm4gV2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyOjpjcmVhdGUoKTsKKyAgICBhdXRvIGhhbmRsZSA9ICsrbUlucHV0U291
cmNlSGFuZGxlSW5kZXg7CisgICAgYXV0byBpbnB1dCA9IFdlYkZha2VYUklucHV0Q29udHJvbGxl
cjo6Y3JlYXRlKGhhbmRsZSwgaW5pdCk7CisgICAgbV9kZXZpY2UuYWRkSW5wdXRDb25uZWN0aW9u
KGlucHV0LmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIGlucHV0OwogfQogCiBFeGNlcHRpb25PcjxQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gV2ViRmFrZVhSRGV2aWNlOjpwYXJz
ZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCYgaW5pdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCmluZGV4IDc2MWZjYmMwMzY3MjA2
OTZlYjU2ZjhjYzRkM2VlNTg1YzljY2E5MzguLjlmMzY2Y2ExMWZlMDQ5OWIxMDFmNjY1MjA1Mjg2
ZjYyN2MxYzZjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhS
RGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaApA
QCAtODAsNiArODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdXBwb3J0c1NodXRkb3duTm90
aWZpY2F0aW9uKGJvb2wgc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbikgeyBtX3N1cHBvcnRz
U2h1dGRvd25Ob3RpZmljYXRpb24gPSBzdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CiAg
ICAgdm9pZCBzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7CiAgICAgdm9pZCBzY2hlZHVsZU9u
TmV4dEZyYW1lKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBhZGRJbnB1dENvbm5lY3Rp
b24oUmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4mJiBpbnB1dCkgeyBtX2lucHV0Q29ubmVj
dGlvbnMuYXBwZW5kKFdURk1vdmUoaW5wdXQpKTsgfTsKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZp
bmFsOwogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6
OlNlc3Npb25Nb2RlKSBmaW5hbDsKQEAgLTEwMSw2ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTD4gbV9nbDsKICAgICBIYXNoTWFwPFBsYXRm
b3JtWFI6OkxheWVySGFuZGxlLCBQbGF0Zm9ybUdMT2JqZWN0PiBtX2xheWVyczsKICAgICB1aW50
MzJfdCBtX2xheWVySW5kZXggeyAwIH07CisgICAgVmVjdG9yPFJlZjxXZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXI+PiBtX2lucHV0Q29ubmVjdGlvbnM7CiB9OwogCiBjbGFzcyBXZWJGYWtlWFJEZXZp
Y2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJGYWtlWFJEZXZpY2U+IHsKQEAgLTExNiwx
OCArMTE4LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZsb29yT3JpZ2luKEZha2VYUlJpZ2lk
VHJhbnNmb3JtSW5pdCk7CiAgICAgdm9pZCBjbGVhckZsb29yT3JpZ2luKCkgeyBtX2RldmljZS5z
ZXRGbG9vck9yaWdpbihXVEY6Om51bGxvcHQpOyB9CiAgICAgdm9pZCBzaW11bGF0ZVJlc2V0UG9z
ZSgpOwotICAgIFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IHNpbXVsYXRlSW5wdXRTb3Vy
Y2VDb25uZWN0aW9uKEZha2VYUklucHV0U291cmNlSW5pdCk7CisgICAgUmVmPFdlYkZha2VYUklu
cHV0Q29udHJvbGxlcj4gc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oY29uc3QgRmFrZVhS
SW5wdXRTb3VyY2VJbml0Jik7CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxGYWtlWFJWaWV3
Pj4gcGFyc2VWaWV3KGNvbnN0IEZha2VYUlZpZXdJbml0Jik7CiAgICAgU2ltdWxhdGVkWFJEZXZp
Y2UmIHNpbXVsYXRlZFhSRGV2aWNlKCkgeyByZXR1cm4gbV9kZXZpY2U7IH0KICAgICB2b2lkIHNl
dFN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24oKTsKICAgICB2b2lkIHNpbXVsYXRlU2h1dGRv
d24oKTsKIAorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6UG9zZT4gcGFyc2VSaWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9y
bUluaXQmKTsKKwogcHJpdmF0ZToKICAgICBXZWJGYWtlWFJEZXZpY2UoKTsKIAotICAgIHN0YXRp
YyBFeGNlcHRpb25PcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gcGFyc2VS
aWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQmKTsKLQogICAgIFNp
bXVsYXRlZFhSRGV2aWNlIG1fZGV2aWNlOworICAgIFBsYXRmb3JtWFI6OklucHV0U291cmNlSGFu
ZGxlIG1JbnB1dFNvdXJjZUhhbmRsZUluZGV4IHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXIuY3BwCmluZGV4IDc5MGM5ODcwYmI0OGM1MWNlODU1YTVhZTJmYjJhMzY3MWNhNzE2
YjAuLjdjODI3Mjg5NjEwZGJmY2QxZDQ5ODVjNzU2MTlhNTE1MGI4ZTdhMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHAKQEAg
LTI3LDYzICsyNywxNTMgQEAKICNpbmNsdWRlICJXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCIK
IAogI2lmIEVOQUJMRShXRUJYUikKKyNpbmNsdWRlICJXZWJGYWtlWFJEZXZpY2UuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0SGFu
ZGVkbmVzcyhYUkhhbmRlZG5lc3MpCi17Ci19Cit1c2luZyBJbnB1dFNvdXJjZSA9IFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZTsKK3VzaW5nIElucHV0U291cmNlQnV0
dG9uID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOwor
dXNpbmcgSW5wdXRTb3VyY2VQb3NlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlUG9zZTsKK3VzaW5nIEJ1dHRvblR5cGUgPSBGYWtlWFJCdXR0b25TdGF0ZUluaXQ6
OlR5cGU7CiAKLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRUYXJnZXRSYXlNb2Rl
KFhSVGFyZ2V0UmF5TW9kZSkKLXsKLX0KKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIu
aW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyN4ci1zdGFuZGFyZC1nYW1lcGFkLW1hcHBpbmcKK2Nv
bnN0ZXhwciBzdGQ6OmFycmF5PEJ1dHRvblR5cGUsIDU+IFhSX1NUQU5EQVJEX0JVVFRPTlMgPSB7
IEJ1dHRvblR5cGU6OkdyaXAsIEJ1dHRvblR5cGU6OlRvdWNocGFkLCBCdXR0b25UeXBlOjpUaHVt
YnN0aWNrLCBCdXR0b25UeXBlOjpPcHRpb25hbEJ1dHRvbiwgQnV0dG9uVHlwZTo6T3B0aW9uYWxU
aHVtYnN0aWNrIH07CiAKLXZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRQcm9maWxl
cyhWZWN0b3I8U3RyaW5nPikKK1JlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IFdlYkZha2VY
UklucHV0Q29udHJvbGxlcjo6Y3JlYXRlKFBsYXRmb3JtWFI6OklucHV0U291cmNlSGFuZGxlIGhh
bmRsZSwgY29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0JiBpbml0KQogeworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkZha2VYUklucHV0Q29udHJvbGxlcihoYW5kbGUsIGluaXQpKTsKIH0K
IAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldEdyaXBPcmlnaW4oRmFrZVhSUmln
aWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbikKK1dlYkZh
a2VYUklucHV0Q29udHJvbGxlcjo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyKFBsYXRmb3JtWFI6
OklucHV0U291cmNlSGFuZGxlIGhhbmRsZSwgY29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0JiBp
bml0KQorICAgIDogbV9oYW5kbGUoaGFuZGxlKQorICAgICwgbV9oYW5kZW5lc3MoaW5pdC5oYW5k
ZWRuZXNzKQorICAgICwgbV90YXJnZXRSYXlNb2RlKGluaXQudGFyZ2V0UmF5TW9kZSkKKyAgICAs
IG1fcHJvZmlsZXMoaW5pdC5wcm9maWxlcykKKyAgICAsIG1fcHJpbWFyeVNlbGVjdGVkKGluaXQu
c2VsZWN0aW9uU3RhcnRlZCkKKyAgICAsIG1fc2ltdWxhdGVTZWxlY3QoaW5pdC5zZWxlY3Rpb25D
bGlja2VkKQogewotICAgIFVOVVNFRF9QQVJBTShncmlwT3JpZ2luKTsKLSAgICBVTlVTRURfUEFS
QU0oZW11bGF0ZWRQb3NpdGlvbik7CisgICAgc2V0UG9pbnRlck9yaWdpbihpbml0LnBvaW50ZXJP
cmlnaW4sIGZhbHNlKTsKKyAgICBzZXRHcmlwT3JpZ2luKGluaXQuZ3JpcE9yaWdpbiwgZmFsc2Up
OworICAgIHNldFN1cHBvcnRlZEJ1dHRvbnMoaW5pdC5zdXBwb3J0ZWRCdXR0b25zKTsKIH0KIAot
dm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNsZWFyR3JpcE9yaWdpbigpCit2b2lkIFdl
YkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0R3JpcE9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9y
bUluaXQgZ3JpcE9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQogewotfQorICAgIGF1dG8g
dHJhbnNmb3JtID0gV2ViRmFrZVhSRGV2aWNlOjpwYXJzZVJpZ2lkVHJhbnNmb3JtKGdyaXBPcmln
aW4pOworICAgIGlmICh0cmFuc2Zvcm0uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2dyaXBPcmlnaW4gPSBJbnB1dFNvdXJjZVBvc2UgeyB0cmFuc2Zvcm0ucmVsZWFzZVJl
dHVyblZhbHVlKCksIGVtdWxhdGVkUG9zaXRpb24gfTsKK30gICAKIAogdm9pZCBXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI6OnNldFBvaW50ZXJPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0
IHBvaW50ZXJPcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbikKIHsKLSAgICBVTlVTRURfUEFS
QU0ocG9pbnRlck9yaWdpbik7Ci0gICAgVU5VU0VEX1BBUkFNKGVtdWxhdGVkUG9zaXRpb24pOwor
ICAgIGF1dG8gdHJhbnNmb3JtID0gV2ViRmFrZVhSRGV2aWNlOjpwYXJzZVJpZ2lkVHJhbnNmb3Jt
KHBvaW50ZXJPcmlnaW4pOworICAgIGlmICh0cmFuc2Zvcm0uaGFzRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX3BvaW50ZXJPcmlnaW4gPSB7IHRyYW5zZm9ybS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgZW11bGF0ZWRQb3NpdGlvbiB9OwogfQogCiB2b2lkIFdlYkZha2VYUklucHV0
Q29udHJvbGxlcjo6ZGlzY29ubmVjdCgpCiB7CisgICAgbV9jb25uZWN0ZWQgPSBmYWxzZTsKIH0K
IAogdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnJlY29ubmVjdCgpCiB7CisgICAgbV9j
b25uZWN0ZWQgPSB0cnVlOwogfQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c3Rh
cnRTZWxlY3Rpb24oKQotewotfQotCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6ZW5k
U2VsZWN0aW9uKCkKK3ZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRTdXBwb3J0ZWRC
dXR0b25zKGNvbnN0IFZlY3RvcjxGYWtlWFJCdXR0b25TdGF0ZUluaXQ+JiBidXR0b25zKQogewor
ICAgIG1fYnV0dG9ucy5jbGVhcigpOworICAgIGZvciAoYXV0byYgYnV0dG9uIDogYnV0dG9ucykK
KyAgICAgICAgbV9idXR0b25zLmFkZChidXR0b24uYnV0dG9uVHlwZSwgYnV0dG9uKTsKIH0KIAot
dm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNpbXVsYXRlU2VsZWN0KCkKK3ZvaWQgV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyOjp1cGRhdGVCdXR0b25TdGF0ZShjb25zdCBGYWtlWFJCdXR0
b25TdGF0ZUluaXQmIGluaXQpCiB7CisgICAgYXV0byBpdCA9IG1fYnV0dG9ucy5maW5kKGluaXQu
YnV0dG9uVHlwZSk7CisgICAgaWYgKGl0ICE9IG1fYnV0dG9ucy5lbmQoKSkKKyAgICAgICAgaXQt
PnZhbHVlID0gaW5pdDsKIH0KIAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldFN1
cHBvcnRlZEJ1dHRvbnMoVmVjdG9yPEZha2VYUkJ1dHRvblN0YXRlSW5pdD4pCitJbnB1dFNvdXJj
ZSBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSgpCiB7CisgICAgSW5wdXRT
b3VyY2Ugc3RhdGU7CisgICAgc3RhdGUuaGFuZGxlID0gbV9oYW5kbGU7CisgICAgc3RhdGUuaGFu
ZGVuZXNzID0gbV9oYW5kZW5lc3M7CisgICAgc3RhdGUudGFyZ2V0UmF5TW9kZSA9IG1fdGFyZ2V0
UmF5TW9kZTsKKyAgICBzdGF0ZS5wcm9maWxlcyA9IG1fcHJvZmlsZXM7CisgICAgc3RhdGUucG9p
bnRlck9yaWdpbiA9IG1fcG9pbnRlck9yaWdpbjsKKyAgICBzdGF0ZS5ncmlwT3JpZ2luID0gbV9n
cmlwT3JpZ2luOworCisgICAgaWYgKG1fc2ltdWxhdGVTZWxlY3QpCisgICAgICAgIG1fcHJpbWFy
eVNlbGVjdGVkID0gdHJ1ZTsKKworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIu
aW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyN4ci1zdGFuZGFyZC1nYW1lcGFkLW1hcHBpbmcKKyAg
ICAvLyBNaW1pYyB4ci1zdGFuZGFyZCBnYW1lcGFkIGxheW91dAorCisgICAgLy8gUHJpbWFyeSB0
cmlnZ2VyIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGF0IGluZGV4IDAKKyAgICBzdGF0ZS5idXR0
b25zLmFwcGVuZCh7CisgICAgICAgIC50b3VjaGVkID0gbV9wcmltYXJ5U2VsZWN0ZWQsCisgICAg
ICAgIC5wcmVzc2VkID0gbV9wcmltYXJ5U2VsZWN0ZWQsCisgICAgICAgIC5wcmVzc2VkVmFsdWUg
PSBtX3ByaW1hcnlTZWxlY3RlZCA/IDEuMGYgOiAwLjBmCisgICAgfSk7CisKKyAgICAvLyBOZXh0
IGJ1dHRvbnMgaW4geHItc3RhbmRhcmQgb3JkZXIKKyAgICBmb3IgKGF1dG8gYnV0dG9uVHlwZSA6
IFhSX1NUQU5EQVJEX0JVVFRPTlMpIHsKKyAgICAgICAgYXV0byBkYXRhID0gZ2V0QnV0dG9uT3JQ
bGFjZWhvbGRlcihidXR0b25UeXBlKTsKKyAgICAgICAgaWYgKGRhdGEuYnV0dG9uKQorICAgICAg
ICAgICAgc3RhdGUuYnV0dG9ucy5hcHBlbmQoKmRhdGEuYnV0dG9uKTsKKyAgICAgICAgaWYgKGRh
dGEuYXhlcykKKyAgICAgICAgICAgIHN0YXRlLmF4ZXMuYXBwZW5kVmVjdG9yKCpkYXRhLmF4ZXMp
OworCisgICAgfQorCisgICAgaWYgKG1fc2ltdWxhdGVTZWxlY3QpIHsKKyAgICAgICAgbV9wcmlt
YXJ5U2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgbV9zaW11bGF0ZVNlbGVjdCA9IGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiBzdGF0ZTsKIH0KIAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXI6OnVwZGF0ZUJ1dHRvblN0YXRlKEZha2VYUkJ1dHRvblN0YXRlSW5pdCkKK1dlYkZha2VY
UklucHV0Q29udHJvbGxlcjo6QnV0dG9uT3JQbGFjZWhvbGRlciBXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXI6OmdldEJ1dHRvbk9yUGxhY2Vob2xkZXIoRmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBl
IGJ1dHRvblR5cGUpIGNvbnN0CiB7CisgICAgQnV0dG9uT3JQbGFjZWhvbGRlciByZXN1bHQ7CisK
KyAgICBhdXRvIGl0ID0gbV9idXR0b25zLmZpbmQoYnV0dG9uVHlwZSk7CisgICAgaWYgKGl0ICE9
IG1fYnV0dG9ucy5lbmQoKSkgeworICAgICAgICByZXN1bHQuYnV0dG9uID0gSW5wdXRTb3VyY2VC
dXR0b24geworICAgICAgICAgICAgLnRvdWNoZWQgPSBpdC0+dmFsdWUudG91Y2hlZCwKKyAgICAg
ICAgICAgIC5wcmVzc2VkID0gaXQtPnZhbHVlLnByZXNzZWQsCisgICAgICAgICAgICAucHJlc3Nl
ZFZhbHVlID0gaXQtPnZhbHVlLnByZXNzZWRWYWx1ZQorICAgICAgICB9OworCisgICAgICAgIGlm
IChidXR0b25UeXBlID09IEJ1dHRvblR5cGU6OlRvdWNocGFkIHx8IGJ1dHRvblR5cGUgPT0gQnV0
dG9uVHlwZTo6VGh1bWJzdGljaykKKyAgICAgICAgICAgIHJlc3VsdC5heGVzID0gVmVjdG9yPGZs
b2F0PiB7IGl0LT52YWx1ZS54VmFsdWUsIGl0LT52YWx1ZS55VmFsdWUgfTsKKworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIEFkZCBhIHBsYWNlaG9sZGVyIGlmIG5lZWRlZAorICAgICAgICAvLyBE
ZXZpY2VzIHRoYXQgbGFjayBvbmUgb2YgdGhlIG9wdGlvbmFsIGlucHV0cyBsaXN0ZWQgaW4gdGhl
IHRhYmxlcyBhYm92ZSBNVVNUIHByZXNlcnZlIHRoZWlyIHBsYWNlIGluIHRoZQorICAgICAgICAv
LyBidXR0b25zIG9yIGF4ZXMgYXJyYXksIHJlcG9ydGluZyBhIHBsYWNlaG9sZGVyIGJ1dHRvbiBv
ciBwbGFjZWhvbGRlciBheGlzLCByZXNwZWN0aXZlbHkuCisgICAgICAgIGlmIChidXR0b25UeXBl
ICE9IEJ1dHRvblR5cGU6Ok9wdGlvbmFsQnV0dG9uIHx8IGJ1dHRvblR5cGUgIT0gQnV0dG9uVHlw
ZTo6T3B0aW9uYWxUaHVtYnN0aWNrKSB7CisgICAgICAgICAgICBhdXRvIHByaW9yaXR5ID0gc3Rk
OjpmaW5kKFhSX1NUQU5EQVJEX0JVVFRPTlMuYmVnaW4oKSwgWFJfU1RBTkRBUkRfQlVUVE9OUy5l
bmQoKSwgYnV0dG9uVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQocHJpb3JpdHkgIT0gWFJfU1RB
TkRBUkRfQlVUVE9OUy5lbmQoKSk7CisKKyAgICAgICAgICAgIGZvciAoYXV0byBpdCA9IHByaW9y
aXR5ICsgMTsgaXQgIT0gWFJfU1RBTkRBUkRfQlVUVE9OUy5lbmQoKTsgKytpdCkgeworICAgICAg
ICAgICAgICAgIGlmIChtX2J1dHRvbnMuY29udGFpbnMoKml0KSkgeworICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuYnV0dG9uID0gSW5wdXRTb3VyY2VCdXR0b24oKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgaWYgKGJ1dHRvblR5cGUgPT0gQnV0dG9uVHlwZTo6VG91Y2hwYWQgJiYgbV9i
dXR0b25zLmNvbnRhaW5zKEJ1dHRvblR5cGU6OlRodW1ic3RpY2spKQorICAgICAgICAgICAgcmVz
dWx0LmF4ZXMgPSBWZWN0b3I8ZmxvYXQ+IHsgMC4wLCAwLjAgfTsKKyAgICB9CisKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaAppbmRleCBkMjhjZWE0Zjg2
ZWE5Y2E0NjU2ZWJkZjhjNTI1MWVmNGI5MjQ5OWNkLi44YjViY2YzNjQ3ZWZjYWRjNjliYjY4YTYx
MGEzZGM5OTM0MTFjYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZh
a2VYUklucHV0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFr
ZVhSSW5wdXRDb250cm9sbGVyLmgKQEAgLTI4LDkgKzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQlhS
KQogCiAjaW5jbHVkZSAiRmFrZVhSQnV0dG9uU3RhdGVJbml0LmgiCisjaW5jbHVkZSAiRmFrZVhS
SW5wdXRTb3VyY2VJbml0LmgiCiAjaW5jbHVkZSAiRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0Lmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgogI2luY2x1ZGUgIlhSSGFuZGVkbmVzcy5oIgogI2lu
Y2x1ZGUgIlhSVGFyZ2V0UmF5TW9kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTM4
LDM2ICs0MSw0NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkZha2VYUklucHV0
Q29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkZha2VYUklucHV0Q29udHJv
bGxlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkZha2VYUklucHV0Q29udHJvbGxl
cik7IH0KLQotICAgIHZvaWQgc2V0SGFuZGVkbmVzcyhYUkhhbmRlZG5lc3MpOwotCi0gICAgdm9p
ZCBzZXRUYXJnZXRSYXlNb2RlKFhSVGFyZ2V0UmF5TW9kZSk7Ci0KLSAgICB2b2lkIHNldFByb2Zp
bGVzKFZlY3RvcjxTdHJpbmc+KTsKKyAgICBzdGF0aWMgUmVmPFdlYkZha2VYUklucHV0Q29udHJv
bGxlcj4gY3JlYXRlKFBsYXRmb3JtWFI6OklucHV0U291cmNlSGFuZGxlLCBjb25zdCBGYWtlWFJJ
bnB1dFNvdXJjZUluaXQmKTsKIAorICAgIHZvaWQgc2V0SGFuZGVkbmVzcyhYUkhhbmRlZG5lc3Mg
aGFuZGVuZXNzKSB7IG1faGFuZGVuZXNzID0gaGFuZGVuZXNzOyB9CisgICAgdm9pZCBzZXRUYXJn
ZXRSYXlNb2RlKFhSVGFyZ2V0UmF5TW9kZSBtb2RlKSB7IG1fdGFyZ2V0UmF5TW9kZSA9IG1vZGU7
IH0KKyAgICB2b2lkIHNldFByb2ZpbGVzKFZlY3RvcjxTdHJpbmc+JiYgcHJvZmlsZXMpIHsgbV9w
cm9maWxlcyA9IFdURk1vdmUocHJvZmlsZXMpOyB9CiAgICAgdm9pZCBzZXRHcmlwT3JpZ2luKEZh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBncmlwT3JpZ2luLCBib29sIGVtdWxhdGVkUG9zaXRpb24g
PSBmYWxzZSk7Ci0KLSAgICB2b2lkIGNsZWFyR3JpcE9yaWdpbigpOwotCisgICAgdm9pZCBjbGVh
ckdyaXBPcmlnaW4oKSB7IG1fZ3JpcE9yaWdpbiA9IFdURjo6bnVsbG9wdDsgfQogICAgIHZvaWQg
c2V0UG9pbnRlck9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9pbnRlck9yaWdpbiwg
Ym9vbCBlbXVsYXRlZFBvc2l0aW9uID0gZmFsc2UpOwotCiAgICAgdm9pZCBkaXNjb25uZWN0KCk7
Ci0KICAgICB2b2lkIHJlY29ubmVjdCgpOworICAgIHZvaWQgc3RhcnRTZWxlY3Rpb24oKSB7IG1f
cHJpbWFyeVNlbGVjdGVkID0gdHJ1ZTsgfQorICAgIHZvaWQgZW5kU2VsZWN0aW9uKCkgeyBtX3By
aW1hcnlTZWxlY3RlZCA9IGZhbHNlOyB9CisgICAgdm9pZCBzaW11bGF0ZVNlbGVjdCgpIHsgbV9z
aW11bGF0ZVNlbGVjdCA9IHRydWU7IH0KKyAgICB2b2lkIHNldFN1cHBvcnRlZEJ1dHRvbnMoY29u
c3QgVmVjdG9yPEZha2VYUkJ1dHRvblN0YXRlSW5pdD4mKTsKKyAgICB2b2lkIHVwZGF0ZUJ1dHRv
blN0YXRlKGNvbnN0IEZha2VYUkJ1dHRvblN0YXRlSW5pdCYpOworICAgIGJvb2wgaXNDb25uZWN0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3RlZDsgfQogCi0gICAgdm9pZCBzdGFydFNlbGVj
dGlvbigpOwotCi0gICAgdm9pZCBlbmRTZWxlY3Rpb24oKTsKLQotICAgIHZvaWQgc2ltdWxhdGVT
ZWxlY3QoKTsKLQotICAgIHZvaWQgc2V0U3VwcG9ydGVkQnV0dG9ucyhWZWN0b3I8RmFrZVhSQnV0
dG9uU3RhdGVJbml0Pik7Ci0KLSAgICB2b2lkIHVwZGF0ZUJ1dHRvblN0YXRlKEZha2VYUkJ1dHRv
blN0YXRlSW5pdCk7CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291
cmNlIGdldEZyYW1lRGF0YSgpOwogCiBwcml2YXRlOgotICAgIFdlYkZha2VYUklucHV0Q29udHJv
bGxlcigpID0gZGVmYXVsdDsKKyAgICBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIoUGxhdGZvcm1Y
Ujo6SW5wdXRTb3VyY2VIYW5kbGUsIGNvbnN0IEZha2VYUklucHV0U291cmNlSW5pdCYpOworCisg
ICAgc3RydWN0IEJ1dHRvbk9yUGxhY2Vob2xkZXIgeworICAgICAgICBPcHRpb25hbDxQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+IGJ1dHRvbjsKKyAgICAg
ICAgT3B0aW9uYWw8VmVjdG9yPGZsb2F0Pj4gYXhlczsKKyAgICB9OworICAgIEJ1dHRvbk9yUGxh
Y2Vob2xkZXIgZ2V0QnV0dG9uT3JQbGFjZWhvbGRlcihGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5
cGUpIGNvbnN0OworCisgICAgUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgbV9oYW5kbGUg
eyAwIH07CisgICAgWFJIYW5kZWRuZXNzIG1faGFuZGVuZXNzIHsgWFJIYW5kZWRuZXNzOjpOb25l
IH07CisgICAgWFJUYXJnZXRSYXlNb2RlIG1fdGFyZ2V0UmF5TW9kZSB7IFhSVGFyZ2V0UmF5TW9k
ZTo6R2F6ZSB9OworICAgIFZlY3RvcjxTdHJpbmc+IG1fcHJvZmlsZXM7CisgICAgUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSBtX3BvaW50ZXJPcmlnaW47Cisg
ICAgT3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9z
ZT4gbV9ncmlwT3JpZ2luOworICAgIEhhc2hNYXA8RmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBl
LCBGYWtlWFJCdXR0b25TdGF0ZUluaXQsIFdURjo6SW50SGFzaDxGYWtlWFJCdXR0b25TdGF0ZUlu
aXQ6OlR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPEZha2VYUkJ1dHRvblN0YXRlSW5p
dDo6VHlwZT4+IG1fYnV0dG9uczsKKyAgICBib29sIG1fY29ubmVjdGVkIHsgdHJ1ZSB9OworICAg
IGJvb2wgbV9wcmltYXJ5U2VsZWN0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zaW11bGF0ZVNl
bGVjdCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BF
LmNtYWtlCmluZGV4IGQ4YzJjMjUxZjNlYTU1ZmRjZTg5NWUzOWM2NTkxOTI0YzJlOGNmNWUuLjc5
YzI0M2Q4ZWJiNzY0OTY0MjI5ZDk1M2MzMDU1NDJlOWNlZjA2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNt
YWtlCkBAIC0yMDMsNiArMjAzLDcgQEAgaWYgKEVOQUJMRV9XRUJYUikKICAgICBpZiAoTk9UIE9Q
RU5YUl9GT1VORCkKICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiT3BlblhSIGlzIHJlcXVp
cmVkIHRvIGVuYWJsZSBXZWJYUiBzdXBwb3J0LiIpCiAgICAgZW5kaWYgKCkKKyAgICBTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChFTkFCTEVfR0FNRVBBRCBPTikKICAgICBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChVU0VfT1BFTlhSICR7T3BlblhSX0ZPVU5EfSkKICAgICBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChYUl9VU0VfUExBVEZPUk1fRUdMIFRSVUUpCiAgICAgU0VUX0FORF9FWFBPU0VfVE9f
QlVJTEQoWFJfVVNFX0dSQVBISUNTX0FQSV9PUEVOR0wgVFJVRSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MDU4NTExZWEy
ZjIzY2U1M2I4MjFlZDMzZGVmZjA0YmNkZDdiN2Y0Li4xNTI4NzA0Y2YxNWU5MjdmNDJlYjkxZThk
NTczYzhjZTIwMzczMmFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDMtMTYgIEltYW5v
bCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IFdlYlhSIElucHV0IFNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSBXZWJYUiBJbnB1dCBTb3VyY2UgdGVzdCBleHBlY3RhdGlvbnMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wNC0x
NiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtJRkNdIEluY29y
cmVjdCBib3ggaGVpZ2h0IHdoZW4gc2Nyb2xsYmFyIHRha2VzIHBhZGRpbmcgYm94IHNwYWNlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBlOTcyNzRjMDEwMDU0ZTJhZDVjMWZhZmIw
YTYzM2ZiZDA1YjE1NWY1Li5lN2ViM2YzMWM3OGNiYzJmMGQwMTI4YmM0OWU3N2QyZmFkYzAzOTlm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0w
My0xNiAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdlYlhSIElucHV0IFNvdXJjZSB0ZXN0IGV4
cGVjdGF0aW9ucy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNf
aW5wdXRfc291cmNlX3JlY3JlYXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZXNfY2hhbmdl
Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3Rf
c3ViZnJhbWUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc3F1ZWV6ZS5odHRwcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBvc2Vf
aGFuZGVkbmVzcy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2FkZF9yZW1vdmUuaHR0cHMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNv
dXJjZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfcHJvZmlsZXMuaHR0cHMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJJbnB1dFNvdXJjZV9zYW1lT2JqZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zm
c2V0Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMjEtMDQtMTYgIEFudG9pbmUgUXVp
bnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQmxlbmQgdXNpbmcgY2FsYygpIHdo
ZW4gbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19pbnB1dF9zb3VyY2VfcmVjcmVhdGlvbi5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL2V2ZW50c19pbnB1dF9zb3VyY2VfcmVjcmVhdGlvbi5odHRwcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDcwNTFlOTIwNmZhNGJkZDg5ZmI4MWI0ZWIwYjA5MGJhMjJiMDQ3MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZV9yZWNyZWF0aW9uLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBJbnB1dCBzb3VyY2VzIGFyZSByZS1jcmVhdGVkIHdo
ZW4gaGFuZGVkbmVzcyBvciB0YXJnZXQgcmF5IG1vZGUgY2hhbmdlcworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19p
bnB1dF9zb3VyY2VzX2NoYW5nZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19pbnB1dF9zb3VyY2VzX2No
YW5nZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzhkYjEyNjA2MmZiZjI2ZTVhZTBi
MzM5NTg5OTAxYThlZDhiZWVkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZXNfY2hh
bmdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBUcmFuc2llbnQg
aW5wdXQgc291cmNlcyBmaXJlIGV2ZW50cyBpbiB0aGUgcmlnaHQgb3JkZXIKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVu
dHNfc2Vzc2lvbl9zZWxlY3QuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3QuaHR0
cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMTY5ZTk4MDAyZTlmMGY4OWVmODc0NGM3Mzkw
MGUzYWUyMzU1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdC5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJJbnB1dFNvdXJjZXMgcHJpbWFyeSBp
bnB1dCBwcmVzc2VzIHByb3Blcmx5IGZpcmVzIG9mZiB0aGUgcmlnaHQgZXZlbnRzCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
ZXZlbnRzX3Nlc3Npb25fc2VsZWN0X3N1YmZyYW1lLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Np
b25fc2VsZWN0X3N1YmZyYW1lLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDNkZmJl
MzFmMmI1MGVhY2VhMjg1NTI3YjIyOTJhNTFmNTI3MmU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vz
c2lvbl9zZWxlY3Rfc3ViZnJhbWUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor
CitQQVNTIEVuc3VyZXMgdGhhdCBhbiBYUklucHV0U291cmNlcyBwcmltYXJ5IGlucHV0IGJlaW5n
IHByZXNzZWQgYW5kIHJlbGVhc2VkIGluIHRoZSBzcGFjZSBvZiBhIHNpbmdsZSBmcmFtZSBwcm9w
ZXJseSBmaXJlcyBvZmYgdGhlIHJpZ2h0IGV2ZW50cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3Nx
dWVlemUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zcXVlZXplLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MjE2OWU5ODAwMmU5ZjBmODllZjg3NDRjNzM5MDBlM2FlMjM1NTli
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zcXVlZXplLmh0dHBzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKKworUEFTUyBYUklucHV0U291cmNlcyBwcmltYXJ5IGlucHV0IHByZXNz
ZXMgcHJvcGVybHkgZmlyZXMgb2ZmIHRoZSByaWdodCBldmVudHMKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBv
c2VfaGFuZGVkbmVzcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9oYW5kZWRuZXNzLmh0dHBz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODllN2FlM2ViZWJmMWU2MTRhMzViNGJiNzNiMThk
YTUxNTQyZTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBvc2VfaGFuZGVkbmVzcy5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJJbnB1dFNvdXJjZXMgcHJvcGVybHkg
Y29tbXVuaWNhdGUgdGhlaXIgaGFuZGVkbmVzcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3Jl
bW92ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3JlbW92ZS5odHRwcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDRiNTY0YmY4NTdkNTNkZTdjODMyYzNkMjViNDBlMjEzZjlhMjQ0
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9hZGRfcmVtb3ZlLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBYUklucHV0U291cmNlcyBjYW4gYmUgcHJvcGVybHkg
YWRkZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgc2Vzc2lvbgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2Vf
ZW11bGF0ZWRQb3NpdGlvbi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfZW11bGF0ZWRQb3Np
dGlvbi5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhNzA3ZjZjZTQ0ZWY2NDhmNDRm
MGRhYzY5NWUyN2RjMGY1NjU2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9lbXVsYXRlZFBv
c2l0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBQb3NlcyBm
cm9tIFhSSW5wdXRTb3VyY2UuZ3JpcFNwYWNlIGhhdmUgZW11bGF0ZWRQb3NpdGlvbiBzZXQgcHJv
cGVybHkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3Byb2ZpbGVzLmh0dHBzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1
dFNvdXJjZV9wcm9maWxlcy5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQxNzZlZDc2
ZTE5OWNlYTc3NGJkMTJiOWY4ZTlmMGY0M2I0NGRmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJj
ZV9wcm9maWxlcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgV2Vi
WFIgSW5wdXRTb3VyY2UncyBwcm9maWxlcyBsaXN0IGNhbiBiZSBzZXQKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0
U291cmNlX3NhbWVPYmplY3QuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3NhbWVPYmplY3Qu
aHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YjIwYmNmNWViZDBlZWUzODYyZDBjNTlj
NzMwMDljODI0YmYzNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2Vfc2FtZU9iamVjdC5odHRw
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJJbnB1dFNvdXJjZSBhdHRy
aWJ1dGVzIG1lZXQgW1NhbWVPYmplY3RdIHJlcXVpcmVtZW50CisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VT
cGFjZV9vcmlnaW5PZmZzZXQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9m
ZnNldC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMzNGNmYzJjYzc2NTllYjRmYjBh
MzFjMDk1ODQ4Y2MzMmJhZDI0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5P
ZmZzZXQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFVwZGF0aW5n
IFhSUmVmZXJlbmNlU3BhY2Ugb3JpZ2luIG9mZnNldCB1cGRhdGVzIHZpZXcgYW5kIGlucHV0IG1h
dHJpY2VzLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDg5YzIwZTBkNzdlZTFkNmY5YWZlNWY5ODE3OWM3ZGIyNmIyNzU0ZTIuLjNhNzdlMzE4OTg5Mzg1
NjM5ZDBhMzAyYjVhODM3YjEwZTlmODFlY2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9U
ZXN0RXhwZWN0YXRpb25zCkBAIC02MzYsNiArNjM2LDExIEBAIHdlYmtpdC5vcmcvYi8yMTMxMzEg
Z2FtZXBhZCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzIxMzEzMSBodHRwL3Rlc3RzL21pc2MvZ2Ft
ZXBhZHMtaW5zZWN1cmUuaHRtbCBbIFNraXAgXQogCiAjIFdlYlhSCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19pbnB1dF9zb3VyY2VfcmVjcmVhdGlvbi5odHRw
cy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2
ZW50c19pbnB1dF9zb3VyY2VzX2NoYW5nZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdF9zdWJmcmFt
ZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NxdWVlemUuaHR0cHMu
aHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIxMjg5NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL2lkbGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJlIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJCb3VuZGVkUmVmZXJlbmNl
U3BhY2VfdXBkYXRlcy5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvd2ViR0xDYW52YXNDb250ZXh0X2Ny
ZWF0ZV94cmNvbXBhdGlibGUuaHR0cHMuaHRtbCBbIFBhc3MgXQpAQCAtNjUwLDEwICs2NTUsMTUg
QEAgd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW8KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9ub19t
b2RlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9ub25faW1t
ZXJzaXZlX25vX2dlc3R1cmUuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RT
ZXNzaW9uX29wdGlvbmFsRmVhdHVyZXMuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBvc2VfaGFuZGVkbmVzcy5odHRwcy5o
dG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldFZp
ZXdlclBvc2VfZW11bGF0ZWRQb3NpdGlvbi5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3Nl
Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9zZXNzaW9uX3NhbWVPYmplY3QuaHR0cHMuaHRt
bCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0
U291cmNlX2FkZF9yZW1vdmUuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2VtdWxhdGVkUG9zaXRpb24uaHR0cHMu
aHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklu
cHV0U291cmNlX3Byb2ZpbGVzLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwg
WyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3ZpZXdlcl9hdmFpbGFiaWxpdHkuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIw
OTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS9pZGxo
YXJuZXNzLmh0dHBzLndpbmRvdy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL3hyRGV2aWNlX2lz
U2Vzc2lvblN1cHBvcnRlZF9pbW1lcnNpdmUtYXIuaHR0cHMuaHRtbCBbIFBhc3MgXQpAQCAtNjYx
LDYgKzY3MSw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3
X2V5ZXMuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMuaHRtbCBb
IFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9uYXZpZ2F0b3Jf
eHJfc2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0Lmh0dHBzLmh0bWwg
WyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVu
Y2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9yZWxhdGlvbnNo
aXBzLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJSaWdpZFRyYW5zZm9ybV9jb25zdHJ1Y3Rvci5odHRwcy5odG1sIFsgUGFzcyBdCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMzdlOGQzZTQwNzQwMTliNmZi
MGQ2MjhkOWNkMjhjMzFhOGE4N2E1Zi4uMmQ1ZDI2Yjc2NGJiNGY5ZWZiNWMzNDBhZmRhNWI4MGNk
ZTMyZjI4MiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTAzLTE2ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBXZWJYUiBJbnB1dCBTb3VyY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyNTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV1BFIEdhbWVwYWQg
d2hlbiBXZWJYUiBpcyBlbmFibGVkLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNX
UEUuY21ha2U6CisKIDIwMjEtMDQtMTYgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0gVUJTYW4gYnVpbGQgZml4ZXMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426801</attachid>
            <date>2021-04-22 04:52:04 -0700</date>
            <delta_ts>2021-04-22 07:06:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-223257-20210422135203.patch</filename>
            <type>text/plain</type>
            <size>90446</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M1M2NlZGNhOTg1YmRj
YTU2MjUwMGU4ODE1OTRjOTZiM2Q2ZGFmZi4uOWM3MDc1OTYyNDQ1NGQ3NWE3ZmNhOGYwODEyNWI2
YmU0MzI4NmQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMS0wMy0xNiAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxl
dC4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIHBsYXRmb3JtIGRhdGEgZGVm
aW5pdGlvbiBhbmQgdGhlIERPTSBiaXRzIHJlcXVpcmVkIHRvIHN1cHBvcnQgV2ViWFIgSW5wdXQg
U291cmNlcywgdGhlIGlucHV0IG1lY2hhbmlzbSB1c2VkIGluIFdlYlhSLgorICAgICAgICBFeGFt
cGxlIFhSIGlucHV0IHNvdXJjZXMgaW5jbHVkZSwgYnV0IGFyZSBub3QgbGltaXRlZCB0bywgaGFu
ZGhlbGQgY29udHJvbGxlcnMsIG9wdGljYWxseSB0cmFja2VkIGhhbmRzLCBhbmQgZ2F6ZS1iYXNl
ZCBpbnB1dCBtZXRob2RzLgorCisgICAgICAgIE1vcmUgaW5mbyBhYm91dCB0aGUgQVBJIGluOgor
ICAgICAgICAtIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2lucHV0Cisg
ICAgICAgIC0gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1nYW1lcGFkcy1t
b2R1bGUvI3dlYnhyLWRldmljZS1hcGktaW50ZWdyYXRpb24KKworICAgICAgICBUZXN0ZWQgYnkg
V2ViWFIgV1BULgorCisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaDogQWRkIHNl
dENvbm5lY3RlZCBtZXRob2QuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSR2FtZXBh
ZC5jcHA6IEJyaWRnZSBiZXR3ZWVuIFdlYlhSSW5wdXRTb3VyY2UgYW5kIEdhbWVwYWQKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSR2FtZXBhZDo6V2ViWFJHYW1lcGFkKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnhyL1dlYlhSR2FtZXBhZC5oOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U3BhY2UuY3BwOiBJbnN0YW5jZSBvZiBXZWJYUlNwYWNlIHVzZWQgZm9yIFdlYlhSSW5w
dXRTb3VyY2Ugc3BhY2VzLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpXZWJYUklucHV0U3BhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpuYXRpdmVPcmlnaW4gY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmg6CisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJG
cmFtZTo6cG9wdWxhdGVQb3NlKTogc2V0IGVtdWxhdGVkUG9zaXRpb24gYmFzZWQgb24gdGhlIHNw
YWNlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHA6IENv
bXBsZXRlIFdlYlhSSW5wdXRTb3VyY2UgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUklucHV0U3BhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0
U3BhY2U6OldlYlhSSW5wdXRTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U3Bh
Y2U6Om5hdGl2ZU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291
cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6V2ViWFJJ
bnB1dFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjp1cGRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6cmVxdWlyZXNJbnB1dFNvdXJj
ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjpkaXNjb25uZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OnBvbGxFdmVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlRXZlbnQpOgorICAgICAgICAq
IE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZTo6aGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5w
dXRTb3VyY2U6OmhhbmRlZG5lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1
dFNvdXJjZTo6dGFyZ2V0UmF5TW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklu
cHV0U291cmNlOjp0YXJnZXRSYXlTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UklucHV0U291cmNlOjpncmlwU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJ
bnB1dFNvdXJjZTo6cHJvZmlsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1
dFNvdXJjZTo6Z2FtZXBhZCBjb25zdCk6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhS
SW5wdXRTb3VyY2UuaWRsOiBBZGQgZ2FtZXBhZCBhdHRyaWJ1dGUuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHA6IEltcGxlbWVudCBpbnB1dCBzb3Vy
Y2UgdXBkYXRlcyBhbmQgZXZlbnQgZGlzcGF0Y2hpbmcuCisgICAgICAgIChXZWJDb3JlOjpXZWJY
UklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0
U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3VyY2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUklucHV0U291cmNlQXJyYXk6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUklucHV0U291cmNlQXJyYXk6Oml0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZUFycmF5OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0
U291cmNlQXJyYXk6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNl
QXJyYXk6OmhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVBZGRlZE9yVXBkYXRlZElucHV0U291cmNlcyk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaDoKKworICAgICAg
ICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKTogU2V0IHRyYWNraW5nIGRlbGVnYXRlIGJlZm9yZSBp
bml0aWFsaXppbmcgdHJhY2tpbmcgYW5kIHJlbmRlcmluZy4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSU2Vzc2lvbjo6aXNQb3NpdGlvbkVtdWxhdGVkIGNvbnN0KTogQWRkIGhlbHBlciBtZXRob2Qu
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnNodXRkb3duKTogQ2xlYXIgV2ViWFJJ
bnB1dFNvdXJjZUFycmF5IGluc3RhbmNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9u
OjpzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyk6IERpc3BhdGNoIGluaXRpYWwgSW5w
dXRTb3VyY2UgZGlzY292ZXJ5IGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9u
OjpvbkZyYW1lKTogVXBkYXRlIFdlYlhSSW5wdXRTb3VyY2VBcnJheSBpbnN0YW5jZS4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorCisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUlNwYWNlLmNwcDogQWRkIHZpcnR1YWwgY2xhc3MgaXNQb3NpdGlvbkVtdWxhdGVk
IHRvIGJlIHVzZWQgaW4gV2ViWFJGcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6
OmlzUG9zaXRpb25FbXVsYXRlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJY
UlNwYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpyZXF1ZXN0U2Vzc2lvbik6IHVwZGF0ZSBGSVhN
RSBjb21tZW50LgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9YUkhhbmRlZG5lc3MuaDogUmV1
c2UgUGxhdGZvcm1YUiBlbnVtLgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9YUklucHV0U291
cmNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFJJbnB1dFNvdXJjZUV2ZW50OjpYUklu
cHV0U291cmNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6WFJJbnB1dFNvdXJjZUV2ZW50Ojpz
ZXRGcmFtZUFjdGl2ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZl
bnQuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVu
dC5oOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9YUlRhcmdldFJheU1vZGUuaDogUmV1c2Ug
UGxhdGZvcm1YUiBlbnVtLgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29u
c3RhbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0
cmluZyk6IEFkZCB4ci1zdGFuZGFyZCBnYW1lcGFkIG1hcHBpbmcgbmFtZS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaDoKKworICAgICAgICAqIHBsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaDogQWRkIElucHV0IFNvdXJjZSBmcmFtZSBkYXRhLgorCisgICAgICAg
ICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwOiBJbXBsZW1lbnQgcmVxdWlyZWQgY2hhbmdl
cyB0byBydW4gYW5kIHBhc3MgV2ViWFIgSW5wdXQgU291cmNlIHRlc3RzLgorICAgICAgICAoV2Vi
Q29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmljZTo6c2ltdWxhdGVSZXNldFBvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzaW11bGF0ZUlucHV0U291cmNlQ29u
bmVjdGlvbik6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OldlYkZha2VYUklucHV0Q29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldEdyaXBPcmlnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRQb2ludGVyT3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUklucHV0Q29udHJvbGxlcjo6ZGlzY29u
bmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnJlY29u
bmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnNldFN1
cHBvcnRlZEJ1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyOjp1cGRhdGVCdXR0b25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1
dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI6OmdldEJ1dHRvbk9yUGxhY2Vob2xkZXIgY29uc3QpOgorICAgICAgICAq
IHRlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmg6CisKIDIwMjEtMDQtMjIgIE15bGVz
IEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIg
cHJvY2Vzc2VzIHJlY3JlYXRlZCBhZnRlciBjcmFzaGluZyBhcmUgbm90IGNyZWF0ZWQgd2l0aCB0
aGUgcmlnaHQgY29udGVudFNpemVDYXRlZ29yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBh
ZC9HYW1lcGFkLmgKaW5kZXggOGYxOTMzNDE2MDVjYzYwMTAxNjBkMWUyOGQyNjc5MDY1YzRjNjE3
Ny4uNDNjZWQ1NDU3ZjJmNGZkNGE0NzZiNWQzNjJhNGE5ZGFjNTBhMGYzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBWZWN0b3I8UmVmPEdhbWVwYWRCdXR0b24+PiYgYnV0dG9ucygpIGNvbnN0Owog
CiAgICAgdm9pZCB1cGRhdGVGcm9tUGxhdGZvcm1HYW1lcGFkKGNvbnN0IFBsYXRmb3JtR2FtZXBh
ZCYpOworICAgIHZvaWQgc2V0Q29ubmVjdGVkKGJvb2wgY29ubmVjdGVkKSB7IG1fY29ubmVjdGVk
ID0gY29ubmVjdGVkOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgR2FtZXBhZChjb25zdCBQ
bGF0Zm9ybUdhbWVwYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUuY3BwCmluZGV4IGY0NWZiMTE0NzVhMmQ4MjQwZjZiZjQ3ODA2YjQwMDk4NDhjYjA4N2QuLjc4
ZjQxZDliOGZkOTZlYjhjMGZkMTVhZWUzZDMxYjgzZWIyMWM5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEV4Y2Vw
dGlvbk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+PiBXZWJYUkZyYW1lOjpw
b3B1bGF0ZVBvc2UoY29uc3QKICAgICAvLyA3LiBMZXQgdHJhbnNmb3JtIGJlIHBvc2XigJlzIHRy
YW5zZm9ybS4KICAgICAvLyA4LiBRdWVyeSB0aGUgWFIgZGV2aWNlJ3MgdHJhY2tpbmcgc3lzdGVt
IGZvciBzcGFjZeKAmXMgcG9zZSByZWxhdGl2ZSB0byBiYXNlU3BhY2UgYXQgdGhlIGZyYW1l4oCZ
cyB0aW1lLgogCi0gICAgaWYgKCFtX2RhdGEuaXNUcmFja2luZ1ZhbGlkKSB7CisgICAgaWYgKG1f
aXNBbmltYXRpb25GcmFtZSAmJiAhbV9kYXRhLmlzVHJhY2tpbmdWYWxpZCkgewogICAgICAgICAv
LyBGSVhNRTogY2hlY2sgaWYgc3BhY2XigJlzIHBvc2UgcmVsYXRpdmUgdG8gYmFzZVNwYWNlIGhh
cyBiZWVuIGRldGVybWluZWQgaW4gdGhlIHBhc3QuCiAgICAgICAgIC8vIEFueXdheSB0aGlzIGVt
dWxhdGlvbiBpcyB1c3VhbGx5IHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0gaW4gdGhlIHBvc2UgKGUu
Zy4gT3BlblhSKQogICAgICAgICAvLyBzbyB3ZSBzaG91bGRuJ3QgaGl0IHRoaXMgcGF0aCBpbiBt
b3N0IFhSUGxhdGZvcm0gcG9ydHMuCkBAIC0xMzEsNyArMTMxLDcgQEAgRXhjZXB0aW9uT3I8T3B0
aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxhdGVkUG9zZT4+IFdlYlhSRnJhbWU6OnBvcHVsYXRlUG9z
ZShjb25zdAogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKIAogICAgIGF1dG8gdHJh
bnNmb3JtID0gICpiYXNlVHJhbnNmb3JtLmludmVyc2UoKSAqIHNwYWNlLmVmZmVjdGl2ZU9yaWdp
bigpOwotICAgIGJvb2wgZW11bGF0ZWRQb3NpdGlvbiA9IG1fZGF0YS5pc1Bvc2l0aW9uRW11bGF0
ZWQgfHwgIW1fZGF0YS5pc1Bvc2l0aW9uVmFsaWQ7CisgICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9u
ID0gc3BhY2UuaXNQb3NpdGlvbkVtdWxhdGVkKCkgfHwgYmFzZVNwYWNlLmlzUG9zaXRpb25FbXVs
YXRlZCgpOwogCiAgICAgYm9vbCBsaW1pdCA9IG11c3RQb3Nlc0JlTGltaXRlZChzcGFjZSwgYmFz
ZVNwYWNlKTsKICAgICBpZiAobGltaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJHYW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmZkZjU1YWM0ODliODExODA5ZWE2ODAy
ODY4ZDNmMDFjODJjNjNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkdhbWVwYWQuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlhSR2FtZXBhZC5oIgorCisjaWYgRU5B
QkxFKFdFQlhSKSAmJiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVwYWQuaCIKKyNp
bmNsdWRlICJHYW1lcGFkQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiWFJUYXJnZXRSYXlNb2RlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1
Yi5pby93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvI2dhbWVwYWQtZGlmZmVyZW5jZXMKKy8vIEdhbWVw
YWQncyBpbmRleCBhdHRyaWJ1dGUgbXVzdCBiZSAtMS4KK2NvbnN0ZXhwciBpbnQgRGVmYXVsdFhS
R2FtZXBhZElkID0gLTE7CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHItZ2FtZXBhZHMtbW9kdWxlLyNnYW1lcGFkLWRpZmZlcmVuY2VzCitXZWJYUkdhbWVwYWQ6Oldl
YlhSR2FtZXBhZChkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgY29ubmVjdFRpbWUsIGNvbnN0IFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNlKQorICAgIDog
UGxhdGZvcm1HYW1lcGFkKERlZmF1bHRYUkdhbWVwYWRJZCkKK3sKKyAgICBtX2xhc3RVcGRhdGVU
aW1lID0gTW9ub3RvbmljVGltZTo6ZnJvbVJhd1NlY29uZHMoU2Vjb25kczo6ZnJvbU1pbGxpc2Vj
b25kcyh0aW1lc3RhbXApLnZhbHVlKCkpOworICAgIG1fY29ubmVjdFRpbWUgPSBNb25vdG9uaWNU
aW1lOjpmcm9tUmF3U2Vjb25kcyhTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKGNvbm5lY3RUaW1l
KS52YWx1ZSgpKTsKKyAgICAvLyBJbiBvcmRlciB0byByZXBvcnQgYSBtYXBwaW5nIG9mICJ4ci1z
dGFuZGFyZCIgdGhlIGRldmljZSBNVVNUIHJlcG9ydCBhIHRhcmdldFJheU1vZGUgb2YgInRyYWNr
ZWQtcG9pbnRlciIgYW5kIE1VU1QgaGF2ZSBhIG5vbi1udWxsIGdyaXBTcGFjZS4KKyAgICAvLyBJ
dCBNVVNUIGhhdmUgYXQgbGVhc3Qgb25lIHByaW1hcnkgdHJpZ2dlciwgc2VwYXJhdGUgZnJvbSBh
bnkgdG91Y2hwYWRzIG9yIHRodW1ic3RpY2tzCisgICAgaWYgKHNvdXJjZS50YXJnZXRSYXlNb2Rl
ID09IFhSVGFyZ2V0UmF5TW9kZTo6VHJhY2tlZFBvaW50ZXIgJiYgIXNvdXJjZS5idXR0b25zLmlz
RW1wdHkoKSAmJiBzb3VyY2UuZ3JpcE9yaWdpbi5oYXNWYWx1ZSgpKQorICAgICAgICBtX21hcHBp
bmcgPSB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKTsKKyAgICBtX2F4ZXMgPSBzb3Vy
Y2UuYXhlcy5tYXAoW10oYXV0byB2YWx1ZSkgeworICAgICAgICByZXR1cm4gU2hhcmVkR2FtZXBh
ZFZhbHVlKHZhbHVlKTsKKyAgICB9KTsKKyAgICBtX2J1dHRvbnMgPSBzb3VyY2UuYnV0dG9ucy5t
YXAoW10oYXV0byYgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEdhbWVwYWRWYWx1ZSh2
YWx1ZS5wcmVzc2VkVmFsdWUpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpICYmIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkdhbWVwYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJHYW1lcGFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA3ZjRjNzFl
MTNiOTM4OGRmMTgwYjQ3NDQxY2E2YmE3ZWE0YmRkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJHYW1lcGFkLmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikgJiYgRU5BQkxF
KEdBTUVQQUQpCisKKyNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVhSLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFdlYlhSR2FtZXBhZDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CitwdWJsaWM6
CisgICAgV2ViWFJHYW1lcGFkKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBjb25uZWN0VGltZSwg
Y29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJik7CisKK3By
aXZhdGU6CisgICAgY29uc3QgVmVjdG9yPFNoYXJlZEdhbWVwYWRWYWx1ZT4mIGF4aXNWYWx1ZXMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4ZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8U2hhcmVk
R2FtZXBhZFZhbHVlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0
b25zOyB9CisKKyAgICBWZWN0b3I8U2hhcmVkR2FtZXBhZFZhbHVlPiBtX2F4ZXM7CisgICAgVmVj
dG9yPFNoYXJlZEdhbWVwYWRWYWx1ZT4gbV9idXR0b25zOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAKaW5kZXggZjMwNzY3NTExOThkYmJj
Mzc2Y2I5NzE5YjhhODdiMTJjNjIwMThkZC4uYWZkMmFkMjkyY2Y5ZTY0MzY0MzYwYTYyZjFhNzYw
OGMwNWNiOGY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
SW5wdXRTb3VyY2UuY3BwCkBAIC0yOCw1MCArMjgsMTI4IEBACiAKICNpZiBFTkFCTEUoV0VCWFIp
CiAKLSNpbmNsdWRlICJXZWJYUlNwYWNlLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lm
IEVOQUJMRShHQU1FUEFEKQorI2luY2x1ZGUgIkdhbWVwYWQuaCIKKyNpbmNsdWRlICJXZWJYUkdh
bWVwYWQuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJY
UlNlc3Npb24uaCIKKyNpbmNsdWRlICJYUklucHV0U291cmNlRXZlbnQuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXZWJYUklucHV0U291cmNlKTsKIAotUmVmPFdlYlhSSW5wdXRT
b3VyY2U+IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZShSZWY8V2ViWFJTcGFjZT4mJiB0YXJnZXRS
YXlTcGFjZSkKK1JlZjxXZWJYUklucHV0U291cmNlPiBXZWJYUklucHV0U291cmNlOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIGRvdWJsZSB0
aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJj
ZSYgc291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3VyY2Uo
V1RGTW92ZSh0YXJnZXRSYXlTcGFjZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJY
UklucHV0U291cmNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCB0aW1lc3RhbXAsIHNvdXJj
ZSkpOwogfQogCi1XZWJYUklucHV0U291cmNlOjpXZWJYUklucHV0U291cmNlKFJlZjxXZWJYUlNw
YWNlPiYmIHRhcmdldFJheVNwYWNlKQotICAgIDogbV9oYW5kZWRuZXNzKFhSSGFuZGVkbmVzczo6
Tm9uZSkKLSAgICAsIG1fdGFyZ2V0UmF5TW9kZShYUlRhcmdldFJheU1vZGU6OkdhemUpCi0gICAg
LCBtX3RhcmdldFJheVNwYWNlKFdURk1vdmUodGFyZ2V0UmF5U3BhY2UpKQorV2ViWFJJbnB1dFNv
dXJjZTo6V2ViWFJJbnB1dFNvdXJjZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Np
b24+JiYgc2Vzc2lvbiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2UpCisgICAgOiBtX3Nlc3Npb24oV1RGTW92
ZShzZXNzaW9uKSkKKyAgICAsIG1fdGFyZ2V0UmF5U3BhY2UoV2ViWFJJbnB1dFNwYWNlOjpjcmVh
dGUoZG9jdW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksIHNvdXJjZS5wb2ludGVyT3JpZ2luKSkK
KyAgICAsIG1fY29ubmVjdFRpbWUodGltZXN0YW1wKQorI2lmIEVOQUJMRShHQU1FUEFEKQorICAg
ICwgbV9nYW1lcGFkKEdhbWVwYWQ6OmNyZWF0ZShXZWJYUkdhbWVwYWQodGltZXN0YW1wLCB0aW1l
c3RhbXAsIHNvdXJjZSkpKQorI2VuZGlmCiB7CisgICAgdXBkYXRlKHRpbWVzdGFtcCwgc291cmNl
KTsKIH0KIAogV2ViWFJJbnB1dFNvdXJjZTo6fldlYlhSSW5wdXRTb3VyY2UoKSA9IGRlZmF1bHQ7
CiAKLVhSSGFuZGVkbmVzcyBXZWJYUklucHV0U291cmNlOjpoYW5kZWRuZXNzKCkgY29uc3QKK3Zv
aWQgV2ViWFJJbnB1dFNvdXJjZTo6dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNlKQogewotICAgIHJl
dHVybiBtX2hhbmRlZG5lc3M7CisjaWYgIUVOQUJMRShHQU1FUEFEKQorICAgIFVOVVNFRF9QQVJB
TSh0aW1lc3RhbXApOworI2VuZGlmCisgICAgbV9zb3VyY2UgPSBzb3VyY2U7CisgICAgbV90YXJn
ZXRSYXlTcGFjZS0+c2V0UG9zZShzb3VyY2UucG9pbnRlck9yaWdpbik7CisgICAgaWYgKGF1dG8g
Z3JpcE9yaWdpbiA9IHNvdXJjZS5ncmlwT3JpZ2luKSB7CisgICAgICAgIGlmIChtX2dyaXBTcGFj
ZSkKKyAgICAgICAgICAgIG1fZ3JpcFNwYWNlLT5zZXRQb3NlKCpncmlwT3JpZ2luKTsKKyAgICAg
ICAgZWxzZSBpZiAoYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zZXNzaW9u
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAgICAgICAgbV9ncmlwU3BhY2UgPSBX
ZWJYUklucHV0U3BhY2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksICpn
cmlwT3JpZ2luKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9ncmlwU3BhY2UgPSBudWxscHRyOwor
I2lmIEVOQUJMRShHQU1FUEFEKQorICAgIG1fZ2FtZXBhZC0+dXBkYXRlRnJvbVBsYXRmb3JtR2Ft
ZXBhZChXZWJYUkdhbWVwYWQodGltZXN0YW1wLCBtX2Nvbm5lY3RUaW1lLCBzb3VyY2UpKTsKKyNl
bmRpZgogfQogCi1YUlRhcmdldFJheU1vZGUgV2ViWFJJbnB1dFNvdXJjZTo6dGFyZ2V0UmF5TW9k
ZSgpIGNvbnN0Citib29sIFdlYlhSSW5wdXRTb3VyY2U6OnJlcXVpcmVzSW5wdXRTb3VyY2VDaGFu
Z2UoY29uc3QgSW5wdXRTb3VyY2UmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gbV90YXJnZXRSYXlN
b2RlOworICAgIHJldHVybiBtX3NvdXJjZS5oYW5kZW5lc3MgIT0gc291cmNlLmhhbmRlbmVzcwor
ICAgICAgICB8fCBtX3NvdXJjZS50YXJnZXRSYXlNb2RlICE9IHNvdXJjZS50YXJnZXRSYXlNb2Rl
CisgICAgICAgIHx8IG1fc291cmNlLnByb2ZpbGVzICE9IHNvdXJjZS5wcm9maWxlcworICAgICAg
ICB8fCBzdGF0aWNfY2FzdDxib29sPihtX2dyaXBTcGFjZSkgIT0gc291cmNlLmdyaXBPcmlnaW4u
aGFzVmFsdWUoKTsKIH0KIAotY29uc3QgV2ViWFJTcGFjZSYgV2ViWFJJbnB1dFNvdXJjZTo6dGFy
Z2V0UmF5U3BhY2UoKSBjb25zdAordm9pZCBXZWJYUklucHV0U291cmNlOjpkaXNjb25uZWN0KCkK
IHsKLSAgICByZXR1cm4gbV90YXJnZXRSYXlTcGFjZTsKKyAgICBtX2Nvbm5lY3RlZCA9IGZhbHNl
OworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIG1fZ2FtZXBhZC0+c2V0Q29ubmVjdGVkKGZhbHNl
KTsKKyNlbmRpZgogfQogCi1SZWZQdHI8V2ViWFJTcGFjZT4gV2ViWFJJbnB1dFNvdXJjZTo6Z3Jp
cFNwYWNlKCkgY29uc3QKK3ZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6cG9sbEV2ZW50cyhWZWN0b3I8
UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+JiBldmVudHMpCiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAg
ICBpZiAoIW1fY29ubmVjdGVkKSB7CisgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3Bh
dGNoIGEgc2VsZWN0ZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJ
bnB1dFNvdXJjZXMgZW5kcyAKKyAgICAgICAgLy8gd2hlbiBhbiBYUklucHV0U291cmNlIHRoYXQg
aGFzIGJlZ3VuIGEgcHJpbWFyeSBzZWxlY3QgYWN0aW9uIGlzIGRpc2Nvbm5lY3RlZC4KKyAgICAg
ICAgaWYgKG1fc2VsZWN0U3RhcnRlZCkKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoY3JlYXRl
RXZlbnQoZXZlbnROYW1lcygpLnNlbGVjdGVuZEV2ZW50KSk7CisKKyAgICAgICAgLy8gQSB1c2Vy
IGFnZW50IE1VU1QgZGlzcGF0Y2ggYSBzcXVlZXplZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3
aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgZW5kcyAKKyAgICAgICAgLy8gd2hlbiBhbiBY
UklucHV0U291cmNlIHRoYXQgaGFzIGJlZ3VuIGEgcHJpbWFyeSBzcXVlZXplIGFjdGlvbiBpcyBk
aXNjb25uZWN0ZWQuCisgICAgICAgIGlmIChtX3NxdWVlemVTdGFydGVkKQorICAgICAgICAgICAg
ZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZWVuZEV2ZW50KSk7
CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdl
Yi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyN4ci1zdGFuZGFyZC1nYW1lcGFkLW1h
cHBpbmcKKyAgICAvLyBCdXR0b24gaW5kaWNlcyBhcmUgYmFzZWQgb24gdGhlIHhyLXN0YW5kYXJk
IGxheW91dC4KKyAgICBib29sIHNlbGVjdFN0YXJ0ZWQgPSAhbV9zb3VyY2UuYnV0dG9ucy5pc0Vt
cHR5KCkgJiYgbV9zb3VyY2UuYnV0dG9ucy5maXJzdCgpLnByZXNzZWQ7CisgICAgYm9vbCBzcXVl
ZXplU3RhcnRlZCA9IG1fc291cmNlLmJ1dHRvbnMuc2l6ZSgpID4gMSAmJiBtX3NvdXJjZS5idXR0
b25zWzFdLnByZXNzZWQ7CisKKyAgICBpZiAoc2VsZWN0U3RhcnRlZCAhPSBtX3NlbGVjdFN0YXJ0
ZWQpIHsKKyAgICAgICAgaWYgKHNlbGVjdFN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIC8vIEEgdXNl
ciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0c3RhcnQgZXZlbnQgb24gYW4gWFJTZXNzaW9u
IHdoZW4gb25lIG9mIGl0cyBYUklucHV0U291cmNlcyBiZWdpbnMgaXRzIHByaW1hcnkgYWN0aW9u
LgorICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc2Vs
ZWN0c3RhcnRFdmVudCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQSB1c2Vy
IGFnZW50IE1VU1QgZGlzcGF0Y2ggYSBzZWxlY3RlbmQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdo
ZW4gb25lIG9mIGl0cyBYUklucHV0U291cmNlcyBlbmRzIGl0cyBwcmltYXJ5IGFjdGlvbi4KKyAg
ICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0IGV2ZW50IG9u
IGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgaGFzIGZ1bGx5IGNv
bXBsZXRlZCBhIHByaW1hcnkgYWN0aW9uCisgICAgICAgICAgICBldmVudHMuYXBwZW5kKGNyZWF0
ZUV2ZW50KGV2ZW50TmFtZXMoKS5zZWxlY3RFdmVudCkpOworICAgICAgICAgICAgZXZlbnRzLmFw
cGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc2VsZWN0ZW5kRXZlbnQpKTsKKyAgICAgICAg
fQorICAgICAgICBtX3NlbGVjdFN0YXJ0ZWQgPSBzZWxlY3RTdGFydGVkOworICAgIH0KKworICAg
IGlmIChzcXVlZXplU3RhcnRlZCAhPSBtX3NxdWVlemVTdGFydGVkKSB7CisgICAgICAgIGlmIChz
cXVlZXplU3RhcnRlZCkgeworICAgICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0
Y2ggYSBzcXVlZXplc3RhcnQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBY
UklucHV0U291cmNlcyBiZWdpbnMgaXRzIHByaW1hcnkgc3F1ZWV6ZSBhY3Rpb24uCisgICAgICAg
ICAgICBldmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5zcXVlZXplc3RhcnRF
dmVudCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1V
U1QgZGlzcGF0Y2ggYSBzZWxlY3RlbmQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9m
IGl0cyBYUklucHV0U291cmNlcyBlbmRzIGl0cyBwcmltYXJ5IHNxdWVlemUgYWN0aW9uLgorICAg
ICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYSBzZWxlY3QgZXZlbnQgb24g
YW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBYUklucHV0U291cmNlcyBoYXMgZnVsbHkgY29t
cGxldGVkIGEgcHJpbWFyeSBzcXVlZXplIGFjdGlvbi4KKyAgICAgICAgICAgIGV2ZW50cy5hcHBl
bmQoY3JlYXRlRXZlbnQoZXZlbnROYW1lcygpLnNxdWVlemVFdmVudCkpOworICAgICAgICAgICAg
ZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZWVuZEV2ZW50KSk7
CisgICAgICAgIH0KKyAgICAgICAgbV9zcXVlZXplU3RhcnRlZCA9IHNxdWVlemVTdGFydGVkOwor
ICAgIH0KIH0KIAotY29uc3QgVmVjdG9yPFN0cmluZz4mIFdlYlhSSW5wdXRTb3VyY2U6OnByb2Zp
bGVzKCkgY29uc3QKK1JlZjxYUklucHV0U291cmNlRXZlbnQ+IFdlYlhSSW5wdXRTb3VyY2U6OmNy
ZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIG1fcHJvZmls
ZXM7CisgICAgWFJJbnB1dFNvdXJjZUV2ZW50OjpJbml0IGluaXQ7CisgICAgaW5pdC5mcmFtZSA9
IFdlYlhSRnJhbWU6OmNyZWF0ZShtX3Nlc3Npb24uY29weVJlZigpLCBXZWJYUkZyYW1lOjpJc0Fu
aW1hdGlvbkZyYW1lOjpObyk7CisgICAgaW5pdC5pbnB1dFNvdXJjZSA9IG1ha2VSZWZQdHIoKnRo
aXMpOworCisgICAgcmV0dXJuIFhSSW5wdXRTb3VyY2VFdmVudDo6Y3JlYXRlKG5hbWUsIGluaXQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5oCmluZGV4IDY4YzI5YWIxY2RiOTA2ZGJlMTRiYjk0
OTJhYjJmZDg4YjQxZDQxMTIuLmIzMjBhZTcxODk1M2FjOTQyN2YzZDU1MjIxYzI3YWU0NDAyZDdj
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJj
ZS5oCkBAIC0yNyw2ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJQ
bGF0Zm9ybVhSLmgiCisjaW5jbHVkZSAiV2ViWFJHYW1lcGFkLmgiCisjaW5jbHVkZSAiV2ViWFJJ
bnB1dFNwYWNlLmgiCiAjaW5jbHVkZSAiWFJIYW5kZWRuZXNzLmgiCiAjaW5jbHVkZSAiWFJUYXJn
ZXRSYXlNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgpAQCAtMzgsMjcgKzQxLDU0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViWFJTcGFjZTsKKyNpZiBFTkFC
TEUoR0FNRVBBRCkKK2NsYXNzIEdhbWVwYWQ7CisjZW5kaWYKK2NsYXNzIFhSSW5wdXRTb3VyY2VF
dmVudDsKK2NsYXNzIFdlYlhSSW5wdXRTcGFjZTsKIAogY2xhc3MgV2ViWFJJbnB1dFNvdXJjZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSW5wdXRTb3VyY2U+IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFdlYlhSSW5wdXRTb3VyY2UpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
WFJJbnB1dFNvdXJjZT4gY3JlYXRlKFJlZjxXZWJYUlNwYWNlPiYmKTsKKyAgICB1c2luZyBJbnB1
dFNvdXJjZSA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZTsKKyAg
ICB1c2luZyBJbnB1dFNvdXJjZUJ1dHRvbiA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZUJ1dHRvbjsKKworICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJjZT4g
Y3JlYXRlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgZG91YmxlIHRpbWVzdGFtcCwg
Y29uc3QgSW5wdXRTb3VyY2UmKTsKICAgICB+V2ViWFJJbnB1dFNvdXJjZSgpOwogCi0gICAgWFJI
YW5kZWRuZXNzIGhhbmRlZG5lc3MoKSBjb25zdDsKLSAgICBYUlRhcmdldFJheU1vZGUgdGFyZ2V0
UmF5TW9kZSgpIGNvbnN0OwotICAgIGNvbnN0IFdlYlhSU3BhY2UmIHRhcmdldFJheVNwYWNlKCkg
Y29uc3Q7Ci0gICAgUmVmUHRyPFdlYlhSU3BhY2U+IGdyaXBTcGFjZSgpIGNvbnN0OwotICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwcm9maWxlcygpIGNvbnN0OworICAgIFBsYXRmb3JtWFI6Oklu
cHV0U291cmNlSGFuZGxlIGhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmhhbmRsZTsg
fQorICAgIFhSSGFuZGVkbmVzcyBoYW5kZWRuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2Uu
aGFuZGVuZXNzOyB9CisgICAgWFJUYXJnZXRSYXlNb2RlIHRhcmdldFJheU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZS50YXJnZXRSYXlNb2RlOyB9OworICAgIGNvbnN0IFdlYlhSU3BhY2Um
IHRhcmdldFJheVNwYWNlKCkgY29uc3Qge3JldHVybiBtX3RhcmdldFJheVNwYWNlLmdldCgpOyB9
OworICAgIFdlYlhSU3BhY2UqIGdyaXBTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JpcFNwYWNl
LmdldCgpOyB9CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb2ZpbGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2UucHJvZmlsZXM7IH07CisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgY29u
c3QgR2FtZXBhZCogZ2FtZXBhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2FtZXBhZC5wdHIoKTsgfQor
I2VuZGlmCisKKyAgICB2b2lkIHVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNv
dXJjZSYpOworICAgIGJvb2wgcmVxdWlyZXNJbnB1dFNvdXJjZUNoYW5nZShjb25zdCBJbnB1dFNv
dXJjZSYpOworICAgIHZvaWQgZGlzY29ubmVjdCgpOworICAgIAorICAgIHZvaWQgcG9sbEV2ZW50
cyhWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+Jik7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
WFJJbnB1dFNvdXJjZShSZWY8V2ViWFJTcGFjZT4mJik7CisgICAgV2ViWFJJbnB1dFNvdXJjZShE
b2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElu
cHV0U291cmNlJik7CisKKyAgICBSZWY8WFJJbnB1dFNvdXJjZUV2ZW50PiBjcmVhdGVFdmVudChj
b25zdCBBdG9tU3RyaW5nJik7CisKKyAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247Cisg
ICAgSW5wdXRTb3VyY2UgbV9zb3VyY2U7CisgICAgUmVmPFdlYlhSSW5wdXRTcGFjZT4gbV90YXJn
ZXRSYXlTcGFjZTsKKyAgICBSZWZQdHI8V2ViWFJJbnB1dFNwYWNlPiBtX2dyaXBTcGFjZTsKKyAg
ICBkb3VibGUgbV9jb25uZWN0VGltZSB7IDAgfTsKKyAgICBib29sIG1fY29ubmVjdGVkIHsgdHJ1
ZSB9OworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIFJlZjxHYW1lcGFkPiBtX2dhbWVwYWQ7Cisj
ZW5kaWYKIAotICAgIFhSSGFuZGVkbmVzcyBtX2hhbmRlZG5lc3M7Ci0gICAgWFJUYXJnZXRSYXlN
b2RlIG1fdGFyZ2V0UmF5TW9kZTsKLSAgICBSZWY8V2ViWFJTcGFjZT4gbV90YXJnZXRSYXlTcGFj
ZTsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3Byb2ZpbGVzOworICAgIGJvb2wgbV9zZWxlY3RTdGFy
dGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc3F1ZWV6ZVN0YXJ0ZWQgeyBmYWxzZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNvdXJjZS5pZGwKaW5kZXggODYyMjNjMTJkMmRiZTg1ZDk4YjdlZTA2
Mjk3ODIwM2RmM2U4NDQ5Mi4uMmZhN2VhNTRiZGU1OTJjZmZhOGEzZjQwMzRkMzUyMzhiMWM2ZjFj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291
cmNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3Vy
Y2UuaWRsCkBAIC0zNSw1ICszNSw4IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFhSVGFyZ2V0
UmF5TW9kZSB0YXJnZXRSYXlNb2RlIDsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmli
dXRlIFdlYlhSU3BhY2UgdGFyZ2V0UmF5U3BhY2U7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBXZWJYUlNwYWNlPyBncmlwU3BhY2UgOwotICAgIFtTYW1lT2JqZWN0XSByZWFk
b25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RE9NU3RyaW5nPiBwcm9maWxlczsKKyAgICBbQ2Fj
aGVkQXR0cmlidXRlLCBTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8
RE9NU3RyaW5nPiBwcm9maWxlczsKKworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRo
dWIuaW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyN4cmlucHV0c291cmNlLWludGVyZmFjZQorICAg
IFtDb25kaXRpb25hbD1HQU1FUEFELCBTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgR2Ft
ZXBhZD8gZ2FtZXBhZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKaW5kZXggYzRjMDg1NTMyYmNkOWFhYzI3Mzgw
OTBiZmEzZmRkZmVhNDMzNTVkMy4uZjkwMGUzYmQxNDE2MTU5MzJjNjcwMWFiZjgzOWNjNWJjMDNk
NGExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0
U291cmNlQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZUFycmF5LmNwcApAQCAtMjcsMjEgKzI3LDE1MyBAQAogI2luY2x1ZGUgIldlYlhS
SW5wdXRTb3VyY2VBcnJheS5oIgogCiAjaWYgRU5BQkxFKFdFQlhSKQotCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorI2luY2x1ZGUgIldlYlhSSW5wdXRTb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJY
UlNlc3Npb24uaCIKKyNpbmNsdWRlICJYUklucHV0U291cmNlRXZlbnQuaCIKKyNpbmNsdWRlICJY
UklucHV0U291cmNlc0NoYW5nZUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoV2ViWFJJbnB1dFNvdXJjZUFycmF5KTsKIAorUmVmPFdlYlhSSW5wdXRTb3VyY2VBcnJheT4g
V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9u
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3VyY2VBcnJheShXVEZN
b3ZlKHNlc3Npb24pKSk7Cit9CisKK1dlYlhSSW5wdXRTb3VyY2VBcnJheTo6V2ViWFJJbnB1dFNv
dXJjZUFycmF5KFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihX
VEZNb3ZlKHNlc3Npb24pKQoreworfQorCitXZWJYUklucHV0U291cmNlQXJyYXk6On5XZWJYUklu
cHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7CisKIHVuc2lnbmVkIFdlYlhSSW5wdXRTb3VyY2VB
cnJheTo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9pbnB1
dFNvdXJjZXMuc2l6ZSgpOwogfQogCi1XZWJYUklucHV0U291cmNlKiBXZWJYUklucHV0U291cmNl
QXJyYXk6Oml0ZW0odW5zaWduZWQpIGNvbnN0CitXZWJYUklucHV0U291cmNlKiBXZWJYUklucHV0
U291cmNlQXJyYXk6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIGluZGV4ID49IG1faW5wdXRTb3VyY2VzLnNpemUoKSA/IG51bGxw
dHI6IG1faW5wdXRTb3VyY2VzW2luZGV4XS5wdHIoKTsKK30KKwordm9pZCBXZWJYUklucHV0U291
cmNlQXJyYXk6OmNsZWFyKCkKK3sKKyAgICBtX2lucHV0U291cmNlcy5jbGVhcigpOworfQorCisv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNsaXN0LW9mLWFjdGl2ZS14
ci1pbnB1dC1zb3VyY2VzCit2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6dXBkYXRlKGRvdWJs
ZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3VyY2VzKQoreworICAg
IFZlY3RvcjxSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+IGFkZGVkOworICAgIFZlY3RvcjxSZWZQ
dHI8V2ViWFJJbnB1dFNvdXJjZT4+IHJlbW92ZWQ7CisgICAgVmVjdG9yPFJlZjxYUklucHV0U291
cmNlRXZlbnQ+PiBpbnB1dEV2ZW50czsKKworICAgIGhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMo
aW5wdXRTb3VyY2VzLCByZW1vdmVkLCBpbnB1dEV2ZW50cyk7CisgICAgaGFuZGxlQWRkZWRPclVw
ZGF0ZWRJbnB1dFNvdXJjZXModGltZXN0YW1wLCBpbnB1dFNvdXJjZXMsIGFkZGVkLCByZW1vdmVk
LCBpbnB1dEV2ZW50cyk7CisKKyAgICBpZiAoIWFkZGVkLmlzRW1wdHkoKSB8fCAhcmVtb3ZlZC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYW4gaW5w
dXRzb3VyY2VzY2hhbmdlIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIHRoZSBzZXNzaW9u4oCZ
cyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2VzIGhhcyBjaGFuZ2VkLgorICAgICAgICBY
UklucHV0U291cmNlc0NoYW5nZUV2ZW50OjpJbml0IGluaXQ7CisgICAgICAgIGluaXQuc2Vzc2lv
biA9IG1fc2Vzc2lvbi5jb3B5UmVmKCk7CisgICAgICAgIGluaXQuYWRkZWQgPSBXVEZNb3ZlKGFk
ZGVkKTsKKyAgICAgICAgaW5pdC5yZW1vdmVkID0gV1RGTW92ZShyZW1vdmVkKTsKKyAgICAgICAg
CisgICAgICAgIGF1dG8gZXZlbnQgPSBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmlucHV0c291cmNlc2NoYW5nZUV2ZW50LCBpbml0KTsKKyAgICAgICAgbV9z
ZXNzaW9uLT5xdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobV9zZXNzaW9uLmdldCgpLCBUYXNrU291
cmNlOjpXZWJYUiwgV1RGTW92ZShldmVudCkpOworICAgIH0KKworICAgIGlmICghaW5wdXRFdmVu
dHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaGFzIHRvIGZp
cmUgYW4gaW5wdXQgc291cmNlIGV2ZW50IHdpdGggbmFtZSBuYW1lLCBYUkZyYW1lIGZyYW1lLCBh
bmQgWFJJbnB1dFNvdXJjZSBzb3VyY2UgaXQgTVVTVCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
KyAgICAgICAgLy8gMS4gQ3JlYXRlIGFuIFhSSW5wdXRTb3VyY2VFdmVudCBldmVudCB3aXRoIHR5
cGUgbmFtZSwgZnJhbWUgZnJhbWUsIGFuZCBpbnB1dFNvdXJjZSBzb3VyY2UuCisgICAgICAgIC8v
IDIuIFNldCBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gdG8gdHJ1ZS4KKyAgICAgICAgLy8gMy4g
QXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJhbWUuCisgICAgICAgIC8vIDQuIERpc3BhdGNoIGV2
ZW50IG9uIGZyYW1l4oCZcyBzZXNzaW9uCisgICAgICAgIC8vIDUuIFNldCBmcmFtZeKAmXMgYWN0
aXZlIGJvb2xlYW4gdG8gZmFsc2UuCisKKyAgICAgICAgZm9yIChhdXRvJiBldmVudCA6IGlucHV0
RXZlbnRzKSB7CisgICAgICAgICAgICBtX3Nlc3Npb24tPnF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZShtX3Nlc3Npb24uZ2V0KCksIFRhc2tTb3VyY2U6OldlYlhSLCBbJnNlc3Npb24gPSBtX3Nl
c3Npb24uZ2V0KCksIGV2ZW50ID0gV1RGTW92ZShldmVudCldKCkgeworICAgICAgICAgICAgICAg
IGV2ZW50LT5zZXRGcmFtZUFjdGl2ZSh0cnVlKTsKKyAgICAgICAgICAgICAgICBzZXNzaW9uLmRp
c3BhdGNoRXZlbnQoZXZlbnQuY29weVJlZigpKTsKKyAgICAgICAgICAgICAgICBldmVudC0+c2V0
RnJhbWVBY3RpdmUoZmFsc2UpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2xpc3Qtb2YtYWN0
aXZlLXhyLWlucHV0LXNvdXJjZXMKK3ZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVS
ZW1vdmVkSW5wdXRTb3VyY2VzKGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3VyY2VzLCBW
ZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYgcmVtb3ZlZCwgVmVjdG9yPFJlZjxYUklu
cHV0U291cmNlRXZlbnQ+PiYgaW5wdXRFdmVudHMpCit7CisgICAgLy8gV2hlbiBhbnkgcHJldmlv
dXNseSBhZGRlZCBYUiBpbnB1dCBzb3VyY2VzIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlIGZvciBY
UlNlc3Npb24gc2Vzc2lvbiwgdGhlIHVzZXIgYWdlbnQgTVVTVCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKKyAgICAvLyAxLiBJZiBzZXNzaW9uJ3MgcHJvbWlzZSByZXNvbHZlZCBmbGFnIGlzIG5v
dCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIC8vIDIuIExldCByZW1vdmVkIGJlIGEgbmV3
IGxpc3QuCisgICAgLy8gMy4gRm9yIGVhY2ggWFIgaW5wdXQgc291cmNlIHRoYXQgaXMgbm8gbG9u
Z2VyIGF2YWlsYWJsZToKKyAgICAvLyAgMy4xIExldCBpbnB1dFNvdXJjZSBiZSB0aGUgWFJJbnB1
dFNvdXJjZSBpbiBzZXNzaW9uJ3MgbGlzdCBvZiBhY3RpdmUgWFIgaW5wdXQgc291cmNlcyBhc3Nv
Y2lhdGVkIHdpdGggdGhlIFhSIGlucHV0IHNvdXJjZS4KKyAgICAvLyAgMy4yIEFkZCBpbnB1dFNv
dXJjZSB0byByZW1vdmVkLgorICAgIG1faW5wdXRTb3VyY2VzLnJlbW92ZUFsbE1hdGNoaW5nKFt0
aGlzLCAmaW5wdXRTb3VyY2VzLCAmcmVtb3ZlZCwgJmlucHV0RXZlbnRzXShhdXRvJiBzb3VyY2Up
IHsKKyAgICAgICAgaWYgKCFXVEY6OmFueU9mKGlucHV0U291cmNlcywgWyZzb3VyY2VdKGF1dG8m
IGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaGFuZGxlID09IHNvdXJjZS0+aGFuZGxlKCk7IH0pKSB7Cisg
ICAgICAgICAgICByZW1vdmVkLmFwcGVuZChzb3VyY2UuY29weVJlZigpKTsKKyAgICAgICAgICAg
IHNvdXJjZS0+ZGlzY29ubmVjdCgpOworICAgICAgICAgICAgc291cmNlLT5wb2xsRXZlbnRzKGlu
cHV0RXZlbnRzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9KTsKK30KKworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci8jbGlzdC1vZi1hY3RpdmUteHItaW5wdXQtc291cmNlcwordm9pZCBXZWJY
UklucHV0U291cmNlQXJyYXk6OmhhbmRsZUFkZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJs
ZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3VyY2VzLCBWZWN0b3I8
UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYgYWRkZWQsIFZlY3RvcjxSZWZQdHI8V2ViWFJJbnB1
dFNvdXJjZT4+JiByZW1vdmVkLCBWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+JiBpbnB1
dEV2ZW50cykKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3Nl
c3Npb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBpbnB1dFNvdXJjZSA6IGlucHV0U291cmNl
cykgeworICAgICAgICBhdXRvIGluZGV4ID0gbV9pbnB1dFNvdXJjZXMuZmluZE1hdGNoaW5nKFsm
aW5wdXRTb3VyY2VdKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPmhhbmRsZSgpID09IGlucHV0
U291cmNlLmhhbmRsZTsgfSk7CisgICAgICAgIGlmIChpbmRleCA9PSBXVEY6Om5vdEZvdW5kKSB7
CisgICAgICAgICAgICAvLyBXaGVuIG5ldyBYUiBpbnB1dCBzb3VyY2VzIGJlY29tZSBhdmFpbGFi
bGUgZm9yIFhSU2Vzc2lvbiBzZXNzaW9uLCB0aGUgdXNlciBhZ2VudCBNVVNUIHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgorICAgICAgICAgICAgLy8gMS4gSWYgc2Vzc2lvbidzIHByb21pc2UgcmVz
b2x2ZWQgZmxhZyBpcyBub3Qgc2V0LCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAgICAgICAgIC8v
IDIuIExldCBhZGRlZCBiZSBhIG5ldyBsaXN0LgorICAgICAgICAgICAgLy8gMy4gRm9yIGVhY2gg
bmV3IFhSIGlucHV0IHNvdXJjZToKKyAgICAgICAgICAgIC8vICAgMy4xIExldCBpbnB1dFNvdXJj
ZSBiZSBhIG5ldyBYUklucHV0U291cmNlIGluIHRoZSByZWxldmFudCByZWFsbSBvZiB0aGlzIFhS
U2Vzc2lvbi4KKyAgICAgICAgICAgIC8vICAgMy4yIEFkZCBpbnB1dFNvdXJjZSB0byBhZGRlZC4K
KworICAgICAgICAgICAgYXV0byBpbnB1dCA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZSgqZG9j
dW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOworICAg
ICAgICAgICAgYWRkZWQuYXBwZW5kKGlucHV0LmNvcHlSZWYoKSk7CisgICAgICAgICAgICBpbnB1
dC0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7CisgICAgICAgICAgICBtX2lucHV0U291cmNlcy5h
cHBlbmQoV1RGTW92ZShpbnB1dCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICAvLyBXaGVuIHRoZSBoYW5kZWRuZXNzLCB0YXJnZXRSYXlNb2RlLCBwcm9maWxl
cywgb3IgcHJlc2VuY2Ugb2YgYSBncmlwU3BhY2UgZm9yIGFueSBYUiBpbnB1dCBzb3VyY2VzIGNo
YW5nZSBmb3IgWFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2VyIGFnZW50IE1VU1QgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHMKKyAgICAgICAgLy8gMS4gSWYgc2Vzc2lvbuKAmXMgcHJvbWlzZSByZXNv
bHZlZCBmbGFnIGlzIG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICAvLyAyLiBM
ZXQgYWRkZWQgYmUgYSBuZXcgbGlzdC4KKyAgICAgICAgLy8gMy4gTGV0IHJlbW92ZWQgYmUgYSBu
ZXcgbGlzdC4KKyAgICAgICAgLy8gNC4gRm9yIGVhY2ggY2hhbmdlZCBYUiBpbnB1dCBzb3VyY2U6
CisgICAgICAgIC8vICA0LjEgTGV0IG9sZElucHV0U291cmNlIGJlIHRoZSBYUklucHV0U291cmNl
IGluIHNlc3Npb24ncyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2VzIHByZXZpb3VzbHkg
YXNzb2NpYXRlZCB3aXRoIHRoZSBYUiBpbnB1dCBzb3VyY2UuCisgICAgICAgIC8vICA0LjEgTGV0
IG5ld0lucHV0U291cmNlIGJlIGEgbmV3IFhSSW5wdXRTb3VyY2UgaW4gdGhlIHJlbGV2YW50IHJl
YWxtIG9mIHNlc3Npb24uCisgICAgICAgIC8vICA0LjEgQWRkIG9sZElucHV0U291cmNlIHRvIHJl
bW92ZWQuCisgICAgICAgIC8vICA0LjEgQWRkIG5ld0lucHV0U291cmNlIHRvIGFkZGVkLgorICAg
ICAgICBhdXRvJiBpbnB1dCA9IG1faW5wdXRTb3VyY2VzW2luZGV4XTsKKworICAgICAgICBpZiAo
aW5wdXQtPnJlcXVpcmVzSW5wdXRTb3VyY2VDaGFuZ2UoaW5wdXRTb3VyY2UpKSB7CisgICAgICAg
ICAgICByZW1vdmVkLmFwcGVuZChpbnB1dC5jb3B5UmVmKCkpOworICAgICAgICAgICAgaW5wdXQt
PmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgIGlucHV0LT5wb2xsRXZlbnRzKGlucHV0RXZlbnRz
KTsKKyAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzLnJlbW92ZShpbmRleCk7CisKKyAgICAgICAg
ICAgIGF1dG8gbmV3SW5wdXRTb3VyY2UgPSBXZWJYUklucHV0U291cmNlOjpjcmVhdGUoKmRvY3Vt
ZW50LCBtX3Nlc3Npb24uY29weVJlZigpLCB0aW1lc3RhbXAsIGlucHV0U291cmNlKTsKKyAgICAg
ICAgICAgIGFkZGVkLmFwcGVuZChuZXdJbnB1dFNvdXJjZS5jb3B5UmVmKCkpOworICAgICAgICAg
ICAgbmV3SW5wdXRTb3VyY2UtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOworICAgICAgICAgICAg
bV9pbnB1dFNvdXJjZXMuYXBwZW5kKFdURk1vdmUobmV3SW5wdXRTb3VyY2UpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGlucHV0LT51cGRhdGUodGltZXN0YW1wLCBpbnB1dFNvdXJj
ZSk7CisgICAgICAgICAgICBpbnB1dC0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7CisgICAgICAg
IH0KKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oCmluZGV4IDQzYjlk
MWEwZmYxZWU1N2Q1OTRkZWY5MjEzYzA2MzA4ODM4MzZkNjIuLjExNDE1Y2ZjZDA0N2RhY2MxMjNj
MDBiYzYzN2MwMjE2ZjQzOGNkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaApAQCAtMjcsMjUgKzI3LDM5IEBACiAKICNp
ZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3Mg
V2ViWFJJbnB1dFNvdXJjZTsKK2NsYXNzIFhSSW5wdXRTb3VyY2VFdmVudDsKK2NsYXNzIFdlYlhS
U2Vzc2lvbjsKIAogY2xhc3MgV2ViWFJJbnB1dFNvdXJjZUFycmF5IDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChX
ZWJYUklucHV0U291cmNlQXJyYXkpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1
dFNvdXJjZUFycmF5PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRT
b3VyY2VBcnJheSgpKTsgfQotICAgIH5XZWJYUklucHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7
CisgICAgdXNpbmcgSW5wdXRTb3VyY2VMaXN0ID0gVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZT47CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U291cmNl
QXJyYXk+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICB+V2ViWFJJbnB1dFNvdXJj
ZUFycmF5KCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBXZWJYUklucHV0
U291cmNlKiBpdGVtKHVuc2lnbmVkKSBjb25zdDsKIAorICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2
b2lkIHVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmKTsKKwog
cHJpdmF0ZToKLSAgICBXZWJYUklucHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7CisgICAgV2Vi
WFJJbnB1dFNvdXJjZUFycmF5KFJlZjxXZWJYUlNlc3Npb24+JiYpOworCisgICAgdm9pZCBoYW5k
bGVSZW1vdmVkSW5wdXRTb3VyY2VzKGNvbnN0IElucHV0U291cmNlTGlzdCYsIFZlY3RvcjxSZWZQ
dHI8V2ViWFJJbnB1dFNvdXJjZT4+JiwgVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYp
OworICAgIHZvaWQgaGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMoZG91YmxlIHRpbWVz
dGFtcCwgY29uc3QgSW5wdXRTb3VyY2VMaXN0JiwgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291
cmNlPj4mLCBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYsIFZlY3RvcjxSZWY8WFJJ
bnB1dFNvdXJjZUV2ZW50Pj4mKTsKKworICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsK
KyAgICBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJJbnB1dFNwYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzdjYTUyMzcyYTRlY2I1NmZlNDY3
MWRkNzZlNTQ1MTgzNWRkZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlhSSW5wdXRTcGFjZS5oIgor
CisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgorI2luY2x1ZGUg
IldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKKyNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUklucHV0U3BhY2UpOworCisvLyBXZWJYUklu
cHV0U3BhY2UKKworUmVmPFdlYlhSSW5wdXRTcGFjZT4gV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIGNvbnN0IFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmIHBvc2UpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNwYWNlKGRvY3VtZW50LCBXVEZNb3Zl
KHNlc3Npb24pLCBwb3NlKSk7Cit9CisKK1dlYlhSSW5wdXRTcGFjZTo6V2ViWFJJbnB1dFNwYWNl
KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBjb25zdCBQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKQorICAg
IDogV2ViWFJTcGFjZShkb2N1bWVudCwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkpCisg
ICAgLCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1fcG9zZShwb3NlKQorewor
fQorCitXZWJYUklucHV0U3BhY2U6On5XZWJYUklucHV0U3BhY2UoKSA9IGRlZmF1bHQ7CisKK1Ry
YW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSSW5wdXRTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UobV9wb3NlLnBvc2UpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40OTVhOGM4NWIwOTU5NGQ2NTdjM2U2M2NiMTdhZjAzMWFjYTdiYTY2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuaApA
QCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQlhSKQorCisjaW5jbHVkZSAiV2ViWFJTcGFjZS5oIgorI2luY2x1ZGUgIlhSSGFuZGVkbmVz
cy5oIgorI2luY2x1ZGUgIlhSVGFyZ2V0UmF5TW9kZS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2MuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFdlYlhSSW5wdXRTcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSW5wdXRT
cGFjZT4sIHB1YmxpYyBXZWJYUlNwYWNlIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdl
YlhSSW5wdXRTcGFjZSk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U3BhY2U+
IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGNvbnN0IFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKKyAgICB2aXJ0dWFsIH5XZWJY
UklucHV0U3BhY2UoKTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6
cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6ZGVyZWY7CisKKyAg
ICBib29sIGlzUG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcG9zZS5p
c1Bvc2l0aW9uRW11bGF0ZWQ7IH0KKyAgICB2b2lkIHNldFBvc2UoY29uc3QgUGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkgeyBtX3Bvc2UgPSBwb3Nl
OyB9CisKK3ByaXZhdGU6CisgICAgV2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291
cmNlUG9zZSYpOworICAgIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9y
aWdpbigpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsg
cmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0K
KworICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlIG1fcG9zZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBkZWI0YTU5MGU3OWNkMmIwZDBm
ODMwNDNkZTcwNGQxNDYxN2UwMjliLi5lYjk3MmVkZTM4YWVkNzdiNWY4NWU4N2JkZTRjMzU5MGE0
NzM2MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24u
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIFJlZjxXZWJYUlNlc3Npb24+IFdlYlhSU2Vzc2lvbjo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwKIAogV2ViWFJTZXNz
aW9uOjpXZWJYUlNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVt
LCBYUlNlc3Npb25Nb2RlIG1vZGUsIFBsYXRmb3JtWFI6OkRldmljZSYgZGV2aWNlLCBGZWF0dXJl
TGlzdCYmIHJlcXVlc3RlZEZlYXR1cmVzKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVu
dCkKLSAgICAsIG1faW5wdXRTb3VyY2VzKFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKCkp
CisgICAgLCBtX2lucHV0U291cmNlcyhXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSgqdGhp
cykpCiAgICAgLCBtX3hyU3lzdGVtKHN5c3RlbSkKICAgICAsIG1fbW9kZShtb2RlKQogICAgICwg
bV9kZXZpY2UobWFrZVdlYWtQdHIoZGV2aWNlKSkKQEAgLTYyLDggKzYyLDggQEAgV2ViWFJTZXNz
aW9uOjpXZWJYUlNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVt
LCBYUlNlc3Npb25Nb2QKICAgICAsIG1fdGltZU9yaWdpbihNb25vdG9uaWNUaW1lOjpub3coKSkK
ICAgICAsIG1fdmlld3MoZGV2aWNlLnZpZXdzKG1vZGUpKQogewotICAgIG1fZGV2aWNlLT5pbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcobW9kZSk7CiAgICAgbV9kZXZpY2UtPnNldFRyYWNr
aW5nQW5kUmVuZGVyaW5nQ2xpZW50KG1ha2VXZWFrUHRyKCp0aGlzKSk7CisgICAgbV9kZXZpY2Ut
PmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhtb2RlKTsKIAogICAgIC8vIGh0dHBzOi8v
aW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3JlZi1mb3ItZG9tLXhycmVmZXJlbmNlc3Bh
Y2V0eXBlLXZpZXdlciVFMiU5MSVBMgogICAgIC8vIEV2ZXJ5IHNlc3Npb24gTVVTVCBzdXBwb3J0
IHZpZXdlciBYUlJlZmVyZW5jZVNwYWNlcy4KQEAgLTMxNSw2ICszMTUsMTEgQEAgYm9vbCBXZWJY
UlNlc3Npb246OnN1cHBvcnRzVmlld3BvcnRTY2FsaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9t
b2RlID09IFhSU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyICYmIG1fZGV2aWNlLT5zdXBwb3J0c1Zp
ZXdwb3J0U2NhbGluZygpOwogfQogCitib29sIFdlYlhSU2Vzc2lvbjo6aXNQb3NpdGlvbkVtdWxh
dGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZURhdGEuaXNQb3NpdGlvbkVtdWxhdGVk
IHx8ICFtX2ZyYW1lRGF0YS5pc1Bvc2l0aW9uVmFsaWQ7Cit9CisKIC8vIGh0dHBzOi8vaW1tZXJz
aXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3NodXQtZG93bi10aGUtc2Vzc2lvbgogdm9pZCBXZWJY
UlNlc3Npb246OnNodXRkb3duKEluaXRpYXRlZEJ5U3lzdGVtIGluaXRpYXRlZEJ5U3lzdGVtKQog
ewpAQCAtMzM4LDYgKzM0Myw4IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpzaHV0ZG93bihJbml0aWF0
ZWRCeVN5c3RlbSBpbml0aWF0ZWRCeVN5c3RlbSkKICAgICAvLyA0LiBSZW1vdmUgc2Vzc2lvbiBm
cm9tIHRoZSBsaXN0IG9mIGlubGluZSBzZXNzaW9ucy4KICAgICBtX3hyU3lzdGVtLnNlc3Npb25F
bmRlZCgqdGhpcyk7CiAKKyAgICBtX2lucHV0U291cmNlcy0+Y2xlYXIoKTsKKwogICAgIGlmIChp
bml0aWF0ZWRCeVN5c3RlbSA9PSBJbml0aWF0ZWRCeVN5c3RlbTo6WWVzKSB7CiAgICAgICAgIC8v
IElmIHdlIGdldCBoZXJlLCB0aGUgc2Vzc2lvbiB0ZXJtaW5hdGlvbiB3YXMgdHJpZ2dlcmVkIGJ5
IHRoZSBzeXN0ZW0gcmF0aGVyIHRoYW4KICAgICAgICAgLy8gdmlhIFhSU2Vzc2lvbi5lbmQoKS4g
U2luY2UgdGhlIHN5c3RlbSBoYXMgY29tcGxldGVkIHRoZSBzZXNzaW9uIHNodXRkb3duLCB3ZSBj
YW4KQEAgLTQxMSw2ICs0MTgsMjYgQEAgdm9pZCBXZWJYUlNlc3Npb246OnN0b3AoKQogewogfQog
Cit2b2lkIFdlYlhSU2Vzc2lvbjo6c2Vzc2lvbkRpZEluaXRpYWxpemVJbnB1dFNvdXJjZXMoVmVj
dG9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZT4mJiBpbnB1dFNv
dXJjZXMpCit7CisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8j
ZG9tLXhyc3lzdGVtLXJlcXVlc3RzZXNzaW9uCisgICAgLy8gNS40LjExIFF1ZXVlIGEgdGFzayB0
byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6IE5PVEU6IFRoZXNlIHN0ZXBzIGVuc3VyZSB0
aGF0IGluaXRpYWwgaW5wdXRzb3VyY2VzY2hhbmdlCisgICAgLy8gZXZlbnRzIG9jY3VyIGFmdGVy
IHRoZSBpbml0aWFsIHNlc3Npb24gaXMgcmVzb2x2ZWQuCisgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3RoaXMsIGlucHV0U291cmNlcyA9
IFdURk1vdmUoaW5wdXRTb3VyY2VzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgLy8gIDEuIFNldCBz
ZXNzaW9uJ3MgcHJvbWlzZSByZXNvbHZlZCBmbGFnIHRvIHRydWUuCisgICAgICAgIG1faW5wdXRJ
bml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIC8vICAyLiBMZXQgc291cmNlcyBiZSBhbnkgZXhp
c3RpbmcgaW5wdXQgc291cmNlcyBhdHRhY2hlZCB0byBzZXNzaW9uLgorICAgICAgICAvLyAgMy4g
SWYgc291cmNlcyBpcyBub24tZW1wdHksIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAg
ICAgICAgaWYgKCFpbnB1dFNvdXJjZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhdXRvIHRp
bWVzdGFtcCA9IChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fdGltZU9yaWdpbikubWlsbGlzZWNv
bmRzKCk7CisgICAgICAgICAgICAvLyAgMy4xLiBTZXQgc2Vzc2lvbidzIGxpc3Qgb2YgYWN0aXZl
IFhSIGlucHV0IHNvdXJjZXMgdG8gc291cmNlcy4KKyAgICAgICAgICAgIC8vICAzLjIuIEZpcmUg
YW4gWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudCBuYW1lZCBpbnB1dHNvdXJjZXNjaGFuZ2Ugb24g
c2Vzc2lvbiB3aXRoIGFkZGVkIHNldCB0byBzb3VyY2VzLgorICAgICAgICAgICAgLy8gIE5vdGU6
IDMuMSBhbmQgMy4yIHN0ZXBzIGFyZSBoYW5kbGVkIGluc2lkZSB0aGUgdXBkYXRlKCkgY2FsbC4K
KyAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzLT51cGRhdGUodGltZXN0YW1wLCBpbnB1dFNvdXJj
ZXMpOworICAgICAgICB9CisgICAgfSk7Cit9CisKIHZvaWQgV2ViWFJTZXNzaW9uOjpzZXNzaW9u
RGlkRW5kKCkKIHsKICAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgYXMgYSByZXN1bHQgb2YgZmlu
aXNoaW5nIHRoZSBzaHV0ZG93biBpbml0aWF0ZWQKQEAgLTUyNyw2ICs1NTQsOSBAQCB2b2lkIFdl
YlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZyYW1l
RGF0YSkKICAgICAgICAgICAgIGZyYW1lLT5zZXRBY3RpdmUodHJ1ZSk7CiAKICAgICAgICAgICAg
IC8vIDYuNC5BcHBseSBmcmFtZSB1cGRhdGVzIGZvciBmcmFtZS4KKyAgICAgICAgICAgIGlmICht
X2lucHV0SW5pdGlhbGl6ZWQpCisgICAgICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXMtPnVwZGF0
ZShub3csIGZyYW1lRGF0YS5pbnB1dFNvdXJjZXMpOworCiAgICAgICAgICAgICBmcmFtZS0+c2V0
RnJhbWVEYXRhKFdURk1vdmUoZnJhbWVEYXRhKSk7CiAKICAgICAgICAgICAgIC8vIDYuNS5Gb3Ig
ZWFjaCBlbnRyeSBpbiBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1h
dGlvbiBmcmFtZSBjYWxsYmFja3MsIGluIG9yZGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmgKaW5kZXggMzEzZDhmYzBlMTU2OWI4MjlmZTk4MWU2MDg4NTU3
N2NmMzY2NzExZS4uOGVkNDFlMTcyYzlhN2RhZjc3Y2E0YWM2OGQxYTRmMTJhNTgxNWM5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC04NCw2ICs4
NCw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIG5hdGl2ZVdlYkdMRnJhbWVidWZmZXJSZXNvbHV0
aW9uKCkgY29uc3Q7CiAgICAgSW50U2l6ZSByZWNvbW1lbmRlZFdlYkdMRnJhbWVidWZmZXJSZXNv
bHV0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpIGNvbnN0
OyAKKyAgICBib29sIGlzUG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0OwogCiAgICAgLy8gRXZlbnRU
YXJnZXQuCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOyB9CkBAIC0xMTEsNiArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3Ao
KSBvdmVycmlkZTsKIAogICAgIC8vIFBsYXRmb3JtWFI6OlRyYWNraW5nQW5kUmVuZGVyaW5nQ2xp
ZW50CisgICAgdm9pZCBzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyhWZWN0b3I8UGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiYmKSBmaW5hbDsKICAgICB2
b2lkIHNlc3Npb25EaWRFbmQoKSBmaW5hbDsKIAogICAgIGVudW0gY2xhc3MgSW5pdGlhdGVkQnlT
eXN0ZW0gOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMTUyLDYgKzE1NCw5IEBAIHByaXZhdGU6CiAg
ICAgLy8gSW4gbWV0ZXJzLgogICAgIGRvdWJsZSBtX21pbmltdW1OZWFyQ2xpcFBsYW5lIHsgMC4x
IH07CiAgICAgZG91YmxlIG1fbWF4aW11bUZhckNsaXBQbGFuZSB7IDEwMDAuMCB9OworCisgICAg
Ly8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jeHJzZXNzaW9uLXByb21p
c2UtcmVzb2x2ZWQKKyAgICBib29sIG1faW5wdXRJbml0aWFsaXplZCB7IGZhbHNlIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNwYWNlLmNwcAppbmRleCBmYTg4MWQ0YmJiNGY1NTFiZDZhMzI4MjkyYjAyMjllYTE3ZDk0
OWY5Li4xMTkyMTQxODlmYzIwMWQ4NTEzNDRkZWIwZDMxNmQzOWY0NzhhNTkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKQEAgLTU0LDYgKzU0LDExIEBA
IFRyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSU3BhY2U6OmVmZmVjdGl2ZU9yaWdpbigpIGNvbnN0
CiB9CiAKIAorYm9vbCBXZWJYUlNwYWNlOjppc1Bvc2l0aW9uRW11bGF0ZWQoKSBjb25zdAorewor
ICAgIHJldHVybiBzZXNzaW9uKCkuaXNQb3NpdGlvbkVtdWxhdGVkKCk7Cit9CisKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXZWJYUlZpZXdlclNwYWNlKTsKIAogV2ViWFJWaWV3ZXJTcGFj
ZTo6V2ViWFJWaWV3ZXJTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vz
c2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgKaW5kZXggNGE5
ZGJlZmRkM2I1NDdmOGEwNjIzZDI2NTY0OWQ2ZjkwYmI5YmY0YS4uZDhmODhlYTU4Yjk1ODQ1MThk
NDc2NTQwZWRjOGRkZGIxOTY3OWRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNwYWNlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViWFJT
ZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25N
YXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3QgPSAwOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGVmZmVjdGl2ZU9yaWdpbigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1Bvc2l0aW9uRW11
bGF0ZWQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlZmVyZW5jZVNwYWNlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCb3VuZGVkUmVmZXJlbmNl
U3BhY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU3lzdGVtLmNwcAppbmRleCA5OWNjMTEyYjBhMDM1YTEwNTllMmE0OTRiY2Ni
YjJlYTA1YzA0ODhhLi43NDFhNjM4NTk1NTY2MzBmMzBhNDAyOTIxODI3OWQ3YWYxYjlkMTFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtNDQ2
LDE0ICs0NDYsNyBAQCB2b2lkIFdlYlhSU3lzdGVtOjpyZXF1ZXN0U2Vzc2lvbihEb2N1bWVudCYg
ZG9jdW1lbnQsIFhSU2Vzc2lvbk1vZGUgbW9kZSwgY29uc3QgWAogICAgICAgICBwcm9taXNlLnJl
c29sdmUoV1RGTW92ZShzZXNzaW9uKSk7CiAgICAgICAgIHJlamVjdFByb21pc2VXaXRoTm90U3Vw
cG9ydGVkRXJyb3IucmVsZWFzZSgpOwogCi0gICAgICAgIC8vIEZJWE1FOgotICAgICAgICAvLyA1
LjQuMTAgUXVldWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczogTk9URTog
VGhlc2Ugc3RlcHMgZW5zdXJlIHRoYXQgaW5pdGlhbCBpbnB1dHNvdXJjZXNjaGFuZ2UKLSAgICAg
ICAgLy8gZXZlbnRzIG9jY3VyIGFmdGVyIHRoZSBpbml0aWFsIHNlc3Npb24gaXMgcmVzb2x2ZWQu
Ci0gICAgICAgIC8vICAgICAxLiBTZXQgc2Vzc2lvbidzIHByb21pc2UgcmVzb2x2ZWQgZmxhZyB0
byB0cnVlLgotICAgICAgICAvLyAgICAgMi4gTGV0IHNvdXJjZXMgYmUgYW55IGV4aXN0aW5nIGlu
cHV0IHNvdXJjZXMgYXR0YWNoZWQgdG8gc2Vzc2lvbi4KLSAgICAgICAgLy8gICAgIDMuIElmIHNv
dXJjZXMgaXMgbm9uLWVtcHR5LCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAg
IC8vICAgICAgICAxLiBTZXQgc2Vzc2lvbidzIGxpc3Qgb2YgYWN0aXZlIFhSIGlucHV0IHNvdXJj
ZXMgdG8gc291cmNlcy4KLSAgICAgICAgLy8gICAgICAgIDIuIEZpcmUgYW4gWFJJbnB1dFNvdXJj
ZXNDaGFuZ2VFdmVudCBuYW1lZCBpbnB1dHNvdXJjZXNjaGFuZ2Ugb24gc2Vzc2lvbiB3aXRoIGFk
ZGVkIHNldCB0byBzb3VyY2VzLgorICAgICAgICAvLyA1LjQuMTAgaXMgaGFuZGxlZCBpbiBXZWJY
UlNlc3Npb246OnNlc3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzLgogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSGFuZGVkbmVzcy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkhhbmRlZG5lc3MuaAppbmRleCA5MzMz
MDM0ZDBjZDQ5YWM4ZGVlOTAyYTA4MTY0NDgwNDM3OGNiYzJjLi44NTk4NWNjYWZhNmJjZDQ1NmFj
MGI2NDUyZTcwNGFlMGJmZTA3ODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1hSSGFuZGVkbmVzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
WFJIYW5kZWRuZXNzLmgKQEAgLTI3LDEzICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQog
CisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0g
Y2xhc3MgWFJIYW5kZWRuZXNzIHsKLSAgICBOb25lLAotICAgIExlZnQsCi0gICAgUmlnaHQsCi19
OwordXNpbmcgWFJIYW5kZWRuZXNzID0gUGxhdGZvcm1YUjo6WFJIYW5kZWRuZXNzOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvWFJJbnB1dFNvdXJjZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvWFJJbnB1dFNvdXJjZUV2ZW50LmNwcAppbmRleCAyMjYzMWFiNTUyOTcwNTZjYzA2M2Q3NDQ2
ODlkM2UwMzNjYTBmYTU3Li5mYzg4YmY3YTc5YjY5ODQwNzA0OWNmNjAwYjk3MTdlYmQzNjJjMjIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VF
dmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNl
RXZlbnQuY3BwCkBAIC0zMCw5ICszMCwxMiBAQAogCiAjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgog
I2luY2x1ZGUgIldlYlhSSW5wdXRTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChYUklucHV0U291cmNlRXZlbnQpOworCiBSZWY8WFJJbnB1dFNvdXJjZUV2ZW50PiBYUklu
cHV0U291cmNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0
JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBYUklucHV0U291cmNlRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkp
OwpAQCAtNDIsNyArNDUsNiBAQCBYUklucHV0U291cmNlRXZlbnQ6OlhSSW5wdXRTb3VyY2VFdmVu
dChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aQogICAgIDogRXZlbnQo
dHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1fZnJhbWUoaW5pdGlhbGl6ZXIu
ZnJhbWUpCiAgICAgLCBtX2lucHV0U291cmNlKGluaXRpYWxpemVyLmlucHV0U291cmNlKQotICAg
ICwgbV9idXR0b25JbmRleChpbml0aWFsaXplci5idXR0b25JbmRleCkKIHsKICAgICBBU1NFUlQo
bV9mcmFtZSk7CiAgICAgQVNTRVJUKG1faW5wdXRTb3VyY2UpOwpAQCAtNjAsOSArNjIsOSBAQCBj
b25zdCBXZWJYUklucHV0U291cmNlJiBYUklucHV0U291cmNlRXZlbnQ6OmlucHV0U291cmNlKCkg
Y29uc3QKICAgICByZXR1cm4gKm1faW5wdXRTb3VyY2U7CiB9CiAKLU9wdGlvbmFsPGludD4gWFJJ
bnB1dFNvdXJjZUV2ZW50OjpidXR0b25JbmRleCgpIGNvbnN0Cit2b2lkIFhSSW5wdXRTb3VyY2VF
dmVudDo6c2V0RnJhbWVBY3RpdmUoYm9vbCBhY3RpdmUpCiB7Ci0gICAgcmV0dXJuIG1fYnV0dG9u
SW5kZXg7CisgICAgbV9mcmFtZS0+c2V0QWN0aXZlKGFjdGl2ZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJ
bnB1dFNvdXJjZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRT
b3VyY2VFdmVudC5oCmluZGV4IDhjN2ZjMDQ3NDdhMmJmMTFlYThiMmZiN2I1Y2E5ZjQ1NGFjMTUz
MDMuLmUzYzU0MTEzNDU1MWJjMjc1YWYwZmM0MWI2N2VhYzQzOTgzM2YwOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZUV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuaApAQCAtMzcs
MTEgKzM3LDExIEBAIGNsYXNzIFdlYlhSRnJhbWU7CiBjbGFzcyBXZWJYUklucHV0U291cmNlOwog
CiBjbGFzcyBYUklucHV0U291cmNlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgeworICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoWFJJbnB1dFNvdXJjZUV2ZW50KTsKIHB1YmxpYzoKICAgICBz
dHJ1Y3QgSW5pdCA6IEV2ZW50SW5pdCB7CiAgICAgICAgIFJlZlB0cjxXZWJYUkZyYW1lPiBmcmFt
ZTsKICAgICAgICAgUmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+IGlucHV0U291cmNlOwotICAgICAg
ICBPcHRpb25hbDxpbnQ+IGJ1dHRvbkluZGV4OwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFhS
SW5wdXRTb3VyY2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0Jiwg
SXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CkBAIC00OSw3ICs0OSw5IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IFdlYlhSRnJhbWUmIGZyYW1lKCkgY29uc3Q7CiAgICAgY29uc3QgV2ViWFJJbnB1
dFNvdXJjZSYgaW5wdXRTb3VyY2UoKSBjb25zdDsKLSAgICBPcHRpb25hbDxpbnQ+IGJ1dHRvbklu
ZGV4KCkgY29uc3Q7CisgICAgdm9pZCBzZXRGcmFtZUFjdGl2ZShib29sKTsKKworICAgIEV2ZW50
SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gWFJJbnB1dFNv
dXJjZUV2ZW50SW50ZXJmYWNlVHlwZTsgfQogCiBwcml2YXRlOgogICAgIFhSSW5wdXRTb3VyY2VF
dmVudChjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VF
dmVudC5oCmluZGV4IDAzYTY0YjdiNjhkNGY2MjI2ZDQyZDFmMjdlZDIzMjIxZDI2ZThhODQuLmRk
NTQ3OGY5ZmZhYzQzMTczOGFmYjllYTJjMTkxOTg0ZjM3MmQ1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5o
CkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhS
SW5wdXRTb3VyY2U+PiYgYWRkZWQoKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFdl
YlhSSW5wdXRTb3VyY2U+PiYgcmVtb3ZlZCgpIGNvbnN0OwogCisgICAgRXZlbnRJbnRlcmZhY2Ug
ZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBYUklucHV0U291cmNlc0NoYW5n
ZUV2ZW50SW50ZXJmYWNlVHlwZTsgfQorCiBwcml2YXRlOgogICAgIFhSSW5wdXRTb3VyY2VzQ2hh
bmdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hh
bmdlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNl
c0NoYW5nZUV2ZW50LmlkbAppbmRleCAzYzcyMjZjNGNjNzBiMWI5MDU0Mzg3YjgyYjYxZjE4YTdi
OWRhYzc2Li5kZjZkOGNkMTI2ZDlmM2M5MDUwOTRkNWFhMjJhZDZhY2UxYjY3NDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZl
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXND
aGFuZ2VFdmVudC5pZGwKQEAgLTQxLDYgKzQxLDYgQEAKICAgICBjb25zdHJ1Y3RvcihET01TdHJp
bmcgdHlwZSwgWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudEluaXQgZXZlbnRJbml0RGljdCk7CiAK
ICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSU2Vzc2lvbiBzZXNzaW9u
OwotICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8V2ViWFJJ
bnB1dFNvdXJjZT4gYWRkZWQ7Ci0gICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBG
cm96ZW5BcnJheTxXZWJYUklucHV0U291cmNlPiByZW1vdmVkOworICAgIFtDYWNoZWRBdHRyaWJ1
dGUsIFNhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxXZWJYUklucHV0
U291cmNlPiBhZGRlZDsKKyAgICBbQ2FjaGVkQXR0cmlidXRlLCBTYW1lT2JqZWN0XSByZWFkb25s
eSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8V2ViWFJJbnB1dFNvdXJjZT4gcmVtb3ZlZDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSVGFyZ2V0UmF5TW9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUlRhcmdldFJheU1vZGUuaAppbmRleCAx
ZmNhNDRlNDUxYjk3YzU2MDI2ZTE0NWI1MjIzMzFmODE2NWJhZTdmLi5iMWVlZWY1NDdlMGM3ZmYw
MTdhOTVmY2UwNDNkN2Q3NjI2ZjQwZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1hSVGFyZ2V0UmF5TW9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvWFJUYXJnZXRSYXlNb2RlLmgKQEAgLTI3LDEzICsyNywxMSBAQAogCiAjaWYgRU5BQkxF
KFdFQlhSKQogCisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWVudW0gY2xhc3MgWFJUYXJnZXRSYXlNb2RlIHsKLSAgICBHYXplLAotICAgIFRyYWNrZWRQ
b2ludGVyLAotICAgIFNjcmVlbiwKLX07Cit1c2luZyBYUlRhcmdldFJheU1vZGUgPSBQbGF0Zm9y
bVhSOjpYUlRhcmdldFJheU1vZGU7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAppbmRleCBiZGIyZTU1MWExYTkyMWQzOTIxMjVkOTg4MWVjMGQ0MzY5ODRiZDBiLi4xNGQ0
OWZiOTQ1MWNhMDZmNDliNTJhYzVhYmJlY2NlMzkyNTY5MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
NDI2LDggKzQyNiwxMCBAQCBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCiBNb2R1bGVzL3dlYnhyL05hdmlnYXRvcldlYlhSLmNwcCBAbm8tdW5p
ZnkKIE1vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwIEBuby11bmlm
eQogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcCBAbm8tdW5pZnkKK01vZHVsZXMvd2VieHIv
V2ViWFJHYW1lcGFkLmNwcCBAbm8tdW5pZnkKIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJj
ZS5jcHAgQG5vLXVuaWZ5CiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAg
QG5vLXVuaWZ5CitNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5jcHAgQG5vLXVuaWZ5CiBN
b2R1bGVzL3dlYnhyL1dlYlhSTGF5ZXIuY3BwIEBuby11bmlmeQogTW9kdWxlcy93ZWJ4ci9XZWJY
UlBvc2UuY3BwIEBuby11bmlmeQogTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNw
cCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA0Y2E1ODkyN2M3ZWI0MTI3NWVlNzUyZDI0MmEwMTI0YzA2MWIyMDJi
Li42NDA1ZDBhMzYxZDFiY2U0MTBiMTQ4NGJkMWM5Nzg0MTBjMzYwNzZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MTYsNiAr
NDE2LDEwIEBACiAJCTExOTM0MEEzMUZFRTAyNDAwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRl
ckJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
MTkzNDBBMTFGRUUwMjQwMDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oICovOyB9
OwogCQkxMTk5RkE0NjIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyQm94LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTk5RkE0NDIwOEUz
NUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTFDQjI3ODkyMDNCQTU3MDAwNEExREM5IC8q
IFJlbmRlclRyZWVCdWlsZGVyRnVsbFNjcmVlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTFDQjI3ODcyMDNCQTU3MDAwNEExREM5IC8qIFJlbmRlclRy
ZWVCdWlsZGVyRnVsbFNjcmVlbi5oICovOyB9OworCQkxMUU1MTYzODI2MUUxQTA2MDBFNjlGMjUg
LyogV2ViWFJJbnB1dFNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxMUU1MTYzNTI2MUUxQTA1MDBFNjlGMjUgLyogV2ViWFJJbnB1dFNwYWNlLmgg
Ki87IH07CisJCTExRTUxNjM5MjYxRTFBMDYwMEU2OUYyNSAvKiBXZWJYUklucHV0U3BhY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFFNTE2Mzcy
NjFFMUEwNTAwRTY5RjI1IC8qIFdlYlhSSW5wdXRTcGFjZS5jcHAgKi87IH07CisJCTExRTUxNjND
MjYxRTFBMTUwMEU2OUYyNSAvKiBXZWJYUkdhbWVwYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExRTUxNjNBMjYxRTFBMTQwMEU2OUYyNSAvKiBXZWJY
UkdhbWVwYWQuaCAqLzsgfTsKKwkJMTFFNTE2M0QyNjFFMUExNTAwRTY5RjI1IC8qIFdlYlhSR2Ft
ZXBhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
MUU1MTYzQjI2MUUxQTE0MDBFNjlGMjUgLyogV2ViWFJHYW1lcGFkLmNwcCAqLzsgfTsKIAkJMTQw
MEQ3QTgxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDBEN0E3MTcxMzZFQTcw
MDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwM0I5OTcwOUVCMTNBRjAwNzk3QzdGIC8q
IERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQwM0I5OTUwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDNCQTBGMDlFQjE4RjkwMDc5
N0M3RiAvKiBKU0RPTVdpbmRvdy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwM0JBMEUwOUVCMThGODAwNzk3QzdGIC8qIEpT
RE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTY0MDcsNiArNjQxMSwxMCBAQAogCQkxMUNCMjc4NjIwM0JBNTcwMDA0QTFEQzkgLyog
UmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRl
clRyZWVCdWlsZGVyRnVsbFNjcmVlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTExQ0IyNzg3MjAzQkE1NzAwMDRBMURDOSAvKiBSZW5kZXJUcmVlQnVpbGRlckZ1bGxTY3JlZW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExRDE5QzJFMjMxNTlCQUUwMDhGMjREMyAvKiBUYWJsZUZv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGFibGVGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTFFNTE2MzUyNjFFMUEwNTAwRTY5RjI1IC8qIFdlYlhSSW5wdXRTcGFjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJYUklucHV0U3BhY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTFFNTE2MzcyNjFFMUEwNTAwRTY5RjI1IC8qIFdlYlhSSW5wdXRTcGFj
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJYUklucHV0U3Bh
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMUU1MTYzQTI2MUUxQTE0MDBF
NjlGMjUgLyogV2ViWFJHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlhSR2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMUU1MTYzQjI2
MUUxQTE0MDBFNjlGMjUgLyogV2ViWFJHYW1lcGFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlhSR2FtZXBhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTExRTZDRjFCMjVGMTQwRTMwMDEzRDNENSAvKiBKU1dlYlhSUmVmZXJlbmNlU3BhY2VD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJYUlJl
ZmVyZW5jZVNwYWNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTFF
NkNGMUQyNUYxNDBFNDAwMTNEM0Q1IC8qIEpTV2ViWFJTcGFjZUN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYlhSU3BhY2VDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMUZGMDJENTIwQkEzQzgxMDA4M0YyNUIgLyogVmVy
aWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZlcmlmaWNhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODk5MiwxMiArMjkwMDAsMTYgQEAKIAkJCQlFMUVF
OEFGMDI0MTJCMTcwMDBFNzk0RDYgLyogV2ViWFJGcmFtZS5jcHAgKi8sCiAJCQkJRTFFRThBRTMy
NDEyQjE3MDAwRTc5NEQ2IC8qIFdlYlhSRnJhbWUuaCAqLywKIAkJCQlFMTk0OTA4ODI0MzRGMTU5
MDA0MTZBOTkgLyogV2ViWFJGcmFtZS5pZGwgKi8sCisJCQkJMTFFNTE2M0IyNjFFMUExNDAwRTY5
RjI1IC8qIFdlYlhSR2FtZXBhZC5jcHAgKi8sCisJCQkJMTFFNTE2M0EyNjFFMUExNDAwRTY5RjI1
IC8qIFdlYlhSR2FtZXBhZC5oICovLAogCQkJCUUxRUU4QjBEMjQxMkIxNzAwMEU3OTRENiAvKiBX
ZWJYUklucHV0U291cmNlLmNwcCAqLywKIAkJCQlFMUVFOEIxNzI0MTJCMTcwMDBFNzk0RDYgLyog
V2ViWFJJbnB1dFNvdXJjZS5oICovLAogCQkJCUUxOTQ5MDg5MjQzNEYxNUEwMDQxNkE5OSAvKiBX
ZWJYUklucHV0U291cmNlLmlkbCAqLywKIAkJCQlFMUVFOEFFNjI0MTJCMTcwMDBFNzk0RDYgLyog
V2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcCAqLywKIAkJCQlFMUVFOEFERDI0MTJCMTcwMDBFNzk0
RDYgLyogV2ViWFJJbnB1dFNvdXJjZUFycmF5LmggKi8sCiAJCQkJRTE5NDkwOTMyNDM0RjE2MDAw
NDE2QTk5IC8qIFdlYlhSSW5wdXRTb3VyY2VBcnJheS5pZGwgKi8sCisJCQkJMTFFNTE2MzcyNjFF
MUEwNTAwRTY5RjI1IC8qIFdlYlhSSW5wdXRTcGFjZS5jcHAgKi8sCisJCQkJMTFFNTE2MzUyNjFF
MUEwNTAwRTY5RjI1IC8qIFdlYlhSSW5wdXRTcGFjZS5oICovLAogCQkJCUUxMkZEQUZCMjRBMEZE
MUMwMDcwMjM2RSAvKiBXZWJYUkxheWVyLmNwcCAqLywKIAkJCQlFMTJGREFGRDI0QTBGRDFFMDA3
MDIzNkUgLyogV2ViWFJMYXllci5oICovLAogCQkJCUUxMkZEQUZFMjRBMEZEMUYwMDcwMjM2RSAv
KiBXZWJYUkxheWVyLmlkbCAqLywKQEAgLTM1NzgyLDggKzM1Nzk0LDEwIEBACiAJCQkJQjEwQjY5
ODIxNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTFFRThCN0UyNDEzMTkxRjAwRTc5NEQ2IC8qIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEI4QTI0MTMxOTFGMDBFNzk0RDYgLyogV2ViWFJG
cmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTFFNTE2M0MyNjFFMUExNTAwRTY5RjI1IC8qIFdl
YlhSR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThCQTgyNDEzMTk2MzAwRTc5NEQ2
IC8qIFdlYlhSSW5wdXRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUU4Qjg2MjQxMzE5
MUYwMEU3OTRENiAvKiBXZWJYUklucHV0U291cmNlQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTExRTUxNjM4MjYxRTFBMDYwMEU2OUYyNSAvKiBXZWJYUklucHV0U3BhY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxMkZEQjAwMjRBMEZEMjAwMDcwMjM2RSAvKiBXZWJYUkxheWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMUVFOEI4ODI0MTMxOTFGMDBFNzk0RDYgLyogV2ViWFJQb3NlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUVFOEJBNjI0MTMxOTYzMDBFNzk0RDYgLyogV2ViWFJSZWZlcmVu
Y2VTcGFjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzEwMCw4ICszNzExNCwxMCBAQAogCQkJCUNF
Q0RDOTNDMjFGMjk3MjkwMDk3NkJEMSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUVFOEI4MDI0MTMxOTFGMDBFNzk0RDYgLyogV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRThCOTMy
NDEzMTk1MDAwRTc5NEQ2IC8qIFdlYlhSRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTFF
NTE2M0QyNjFFMUExNTAwRTY5RjI1IC8qIFdlYlhSR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUVFOEJBMTI0MTMxOTYzMDBFNzk0RDYgLyogV2ViWFJJbnB1dFNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMUVFOEI4QzI0MTMxOTFGMDBFNzk0RDYgLyogV2ViWFJJbnB1dFNv
dXJjZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTExRTUxNjM5MjYxRTFBMDYwMEU2OUYy
NSAvKiBXZWJYUklucHV0U3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyRkRBRkYyNEEw
RkQyMDAwNzAyMzZFIC8qIFdlYlhSTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRThC
OEIyNDEzMTkxRjAwRTc5NEQ2IC8qIFdlYlhSUG9zZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MUVFOEI3RjI0MTMxOTFGMDBFNzk0RDYgLyogV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2Ft
ZXBhZENvbnN0YW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVw
YWRDb25zdGFudHMuY3BwCmluZGV4IGM4NWUyNmE3OTlkZGM1ZDU1ODFjZTEyM2U1ZmZiMTczNTMy
Y2FkMzMuLmZjMzk2MGYzOWY0NDZlMzU0MjVmMTQ0YWY4NzVhNWY5NGZiNjNjN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNw
cApAQCAtNDMsNiArNDMsMTUgQEAgY29uc3QgV1RGOjpTdHJpbmcmIHN0YW5kYXJkR2FtZXBhZE1h
cHBpbmdTdHJpbmcoKQogICAgIHJldHVybiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nOwogfQogCisj
aWYgRU5BQkxFKFdFQlhSKQorLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4
ci1nYW1lcGFkcy1tb2R1bGUvI2RvbS1nYW1lcGFkbWFwcGluZ3R5cGUteHItc3RhbmRhcmQKK2Nv
bnN0IFdURjo6U3RyaW5nJiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZyA9
ICJ4ci1zdGFuZGFyZCI7CisgICAgcmV0dXJuIHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZzsKK30K
KyNlbmRpZgorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaAppbmRleCA3ZTE2OWY0ZGE4
Yjk4ZmU2ZWZhYTFlMjMwZTJhNGU5MjRhMjM2NzMzLi42MzNhZmQ3M2QzNzQ3ZmFhM2EwOGFlNzU2
Y2I0MzIxNTEyNWQyNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL0dhbWVwYWRDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL0dhbWVwYWRDb25zdGFudHMuaApAQCAtNjIsNiArNjIsOSBAQCBleHRlcm4gY29uc3Qgc2l6
ZV90IG51bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhIb21lQnV0dG9uOwogZXh0ZXJu
IGNvbnN0IEdhbWVwYWRCdXR0b25Sb2xlIG1heGltdW1HYW1lcGFkQnV0dG9uOwogCiBjb25zdCBX
VEY6OlN0cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpOworI2lmIEVOQUJMRShX
RUJYUikKK2NvbnN0IFdURjo6U3RyaW5nJiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmco
KTsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCAwNDk5Yzc2ZTA2ZWE2ODA2OWE4MThhZTMxNTNhNDc1
Y2Y4ZjlkNmU5Li40MjM0YjQzNTNlM2JhZWRiMGIyYWUxYzE4OTU0OTc1ZDgzNTgzZDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC01NiwxNiArNTYsMjQgQEAg
ZW51bSBjbGFzcyBFeWUgewogdXNpbmcgTGF5ZXJIYW5kbGUgPSBpbnQ7CiAKICNpZiBFTkFCTEUo
V0VCWFIpCit1c2luZyBJbnB1dFNvdXJjZUhhbmRsZSA9IGludDsKIAotY2xhc3MgVHJhY2tpbmdB
bmRSZW5kZXJpbmdDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQ+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5UcmFja2luZ0FuZFJlbmRlcmlu
Z0NsaWVudCgpID0gZGVmYXVsdDsKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8v
d2VieHIvI2VudW1kZWYteHJoYW5kZWRuZXNzCitlbnVtIGNsYXNzIFhSSGFuZGVkbmVzcyB7Cisg
ICAgTm9uZSwKKyAgICBMZWZ0LAorICAgIFJpZ2h0LAorfTsKIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXNzaW9uRGlkRW5kKCkgPSAwOwotICAgIC8vIEZJWE1FOiBoYW5kbGUgZnJhbWUgdXBkYXRlCi0g
ICAgLy8gRklYTUU6IGhhbmRsZSB2aXNpYmlsaXR5IGNoYW5nZXMKKy8vIGh0dHBzOi8vaW1tZXJz
aXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2VudW1kZWYteHJ0YXJnZXRyYXltb2RlCitlbnVtIGNs
YXNzIFhSVGFyZ2V0UmF5TW9kZSB7CisgICAgR2F6ZSwKKyAgICBUcmFja2VkUG9pbnRlciwKKyAg
ICBTY3JlZW4sCiB9OwogCitjbGFzcyBUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudDsKKwogY2xh
c3MgRGV2aWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERldmljZT4sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxEZXZpY2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXZpY2UpOwpAQCAtMTYzLDYgKzE3MSwyOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
TGF5ZXJEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogICAgICAgICB9OwogCisgICAgICAgIHN0cnVj
dCBJbnB1dFNvdXJjZUJ1dHRvbiB7CisgICAgICAgICAgICBib29sIHRvdWNoZWQgeyBmYWxzZSB9
OworICAgICAgICAgICAgYm9vbCBwcmVzc2VkIHsgZmFsc2UgfTsKKyAgICAgICAgICAgIGZsb2F0
IHByZXNzZWRWYWx1ZSB7IDAgfTsKKyAgICAgICAgfTsKKworICAgICAgICBzdHJ1Y3QgSW5wdXRT
b3VyY2VQb3NlIHsKKyAgICAgICAgICAgIFBvc2UgcG9zZTsKKyAgICAgICAgICAgIGJvb2wgaXNQ
b3NpdGlvbkVtdWxhdGVkIHsgZmFsc2UgfTsKKyAgICAgICAgfTsKKworICAgICAgICBzdHJ1Y3Qg
SW5wdXRTb3VyY2UgeworICAgICAgICAgICAgSW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlIHsgMCB9
OworICAgICAgICAgICAgWFJIYW5kZWRuZXNzIGhhbmRlbmVzcyB7IFhSSGFuZGVkbmVzczo6Tm9u
ZSB9OworICAgICAgICAgICAgWFJUYXJnZXRSYXlNb2RlIHRhcmdldFJheU1vZGUgeyBYUlRhcmdl
dFJheU1vZGU6OkdhemUgfTsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHByb2ZpbGVzOwor
ICAgICAgICAgICAgSW5wdXRTb3VyY2VQb3NlIHBvaW50ZXJPcmlnaW47CisgICAgICAgICAgICBP
cHRpb25hbDxJbnB1dFNvdXJjZVBvc2U+IGdyaXBPcmlnaW47CisgICAgICAgICAgICBWZWN0b3I8
SW5wdXRTb3VyY2VCdXR0b24+IGJ1dHRvbnM7CisgICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+IGF4
ZXM7CisgICAgICAgIH07CisKICAgICAgICAgYm9vbCBpc1RyYWNraW5nVmFsaWQgeyBmYWxzZSB9
OwogICAgICAgICBib29sIGlzUG9zaXRpb25WYWxpZCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wg
aXNQb3NpdGlvbkVtdWxhdGVkIHsgZmFsc2UgfTsKQEAgLTE3Myw2ICsyMDMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFN0YWdlUGFyYW1ldGVycyBzdGFnZVBhcmFtZXRlcnM7CiAgICAgICAgIFZlY3Rv
cjxWaWV3PiB2aWV3czsKICAgICAgICAgSGFzaE1hcDxMYXllckhhbmRsZSwgTGF5ZXJEYXRhPiBs
YXllcnM7CisgICAgICAgIFZlY3RvcjxJbnB1dFNvdXJjZT4gaW5wdXRTb3VyY2VzOwogCiAgICAg
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZyYW1lRGF0
YT4gZGVjb2RlKERlY29kZXImKTsKQEAgLTIxNCw2ICsyNDUsMTkgQEAgcHJvdGVjdGVkOgogICAg
IFdlYWtQdHI8VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ+IG1fdHJhY2tpbmdBbmRSZW5kZXJp
bmdDbGllbnQ7CiB9OwogCitjbGFzcyBUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudD4geworcHVibGljOgor
ICAgIHZpcnR1YWwgflRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KCkgPSBkZWZhdWx0OworCisg
ICAgLy8gVGhpcyBldmVudCBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IGluaXRpYWwgaW5wdXRzb3Vy
Y2VzY2hhbmdlIGV2ZW50cyBvY2N1ciBhZnRlciB0aGUgaW5pdGlhbCBzZXNzaW9uIGlzIHJlc29s
dmVkLgorICAgIC8vIFdlYnhSIGFwcHMgY2FuIHdhaXQgZm9yIHRoZSBpbnB1dCBzb3VyY2UgZXZl
bnRzIGJlZm9yZSBjYWxsaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZS4KKyAgICAvLyBQZXItZnJh
bWUgaW5wdXQgc291cmNlIHVwZGF0ZXMgYXJlIGhhbmRsZWQgdmlhIHNlc3Npb24ucmVxdWVzdEFu
aW1hdGlvbkZyYW1lIHdoaWNoIGNhbGxzIERldmljZTo6cmVxdWVzdEZyYW1lLgorICAgIHZpcnR1
YWwgdm9pZCBzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyhWZWN0b3I8RGV2aWNlOjpG
cmFtZURhdGE6OklucHV0U291cmNlPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlc3Npb25E
aWRFbmQoKSA9IDA7CisgICAgLy8gRklYTUU6IGhhbmRsZSBmcmFtZSB1cGRhdGUKKyAgICAvLyBG
SVhNRTogaGFuZGxlIHZpc2liaWxpdHkgY2hhbmdlcworfTsKKwogY2xhc3MgSW5zdGFuY2Ugewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnN0YW5jZSYgc2luZ2xldG9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKaW5kZXggZTAxNjRm
NDljYTA5N2I1MWExMWFkMTg4MjA1NjU0ZGMzMDgyODJiNS4uMjNlYjdhNDIxOWMxOTVjNzkwNzQy
YTlmMGM2Y2QxYzBlYmI1NDI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhS
RGV2aWNlLmNwcApAQCAtMTA2LDYgKzEwNiwxOSBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpp
bml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpCiAg
ICAgYXR0cmlidXRlcy5zdGVuY2lsID0gZmFsc2U7CiAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMg
PSBmYWxzZTsKICAgICBtX2dsID0gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVz
LCBudWxscHRyKTsKKworICAgIGlmIChtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KSB7Cisg
ICAgICAgIC8vIFdlYlhSIEZha2VEZXZpY2Ugd2FpdHMgZm9yIHNpbXVsYXRlSW5wdXRDb25uZWN0
aW9uIGNhbGxzIHRvIGFkZCBpbnB1dCBzb3VyY2VzLQorICAgICAgICAvLyBUaGVyZSBpcyBubyB3
YXkgdG8ga25vdyBob3cgbWFueSBzaW11bGF0ZUlucHV0Q29ubmVjdGlvbiBjYWxscyB3aWxsIHRo
ZSBkZXZpY2UgcmVjZWl2ZSwKKyAgICAgICAgLy8gc28gbm90aWZ5IHRoZSBpbnB1dCBzb3VyY2Vz
IGhhdmUgYmVlbiBpbml0aWFsaXplZCB3aXRoIGFuIGVtcHR5IGxpc3QuIFRoaXMgaXMgbm90IGEg
cHJvYmxlbSBiZWNhdXNlCisgICAgICAgIC8vIFdQVCB0ZXN0cyByZWx5IG9uIHJlcXVlc3RBbmlt
YXRpb25GcmFtZSB1cGRhdGVzIHRvIHRlc3QgdGhlIGlucHV0IHNvdXJjZXMuCisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIHsK
KyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgaWYgKG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQpCisgICAgICAgICAgICAg
ICAgbV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudC0+c2Vzc2lvbkRpZEluaXRpYWxpemVJbnB1
dFNvdXJjZXMoeyB9KTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFNpbXVsYXRlZFhS
RGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKQEAgLTEzNCw2ICsxNDcsMTEg
QEAgdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKCkKICAgICBmb3IgKGF1
dG8mIGxheWVyIDogbV9sYXllcnMpCiAgICAgICAgIGRhdGEubGF5ZXJzLmFkZChsYXllci5rZXks
IEZyYW1lRGF0YTo6TGF5ZXJEYXRhIHsgLm9wYXF1ZVRleHR1cmUgPSBsYXllci52YWx1ZSB9KTsK
IAorICAgIGZvciAoYXV0byYgaW5wdXQgOiBtX2lucHV0Q29ubmVjdGlvbnMpIHsKKyAgICAgICAg
aWYgKGlucHV0LT5pc0Nvbm5lY3RlZCgpKQorICAgICAgICAgICAgZGF0YS5pbnB1dFNvdXJjZXMu
YXBwZW5kKGlucHV0LT5nZXRGcmFtZURhdGEoKSk7CisgICAgfQorCiAgICAgaWYgKG1fRnJhbWVD
YWxsYmFjaykKICAgICAgICAgbV9GcmFtZUNhbGxiYWNrKFdURk1vdmUoZGF0YSkpOwogfQpAQCAt
MjM5LDkgKzI1NywxMiBAQCB2b2lkIFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVSZXNldFBvc2Uo
KQogewogfQogCi1SZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBXZWJGYWtlWFJEZXZpY2U6
OnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKEZha2VYUklucHV0U291cmNlSW5pdCkKK1Jl
ZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVJbnB1
dFNvdXJjZUNvbm5lY3Rpb24oY29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0JiBpbml0KQogewot
ICAgIHJldHVybiBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNyZWF0ZSgpOworICAgIGF1dG8g
aGFuZGxlID0gKyttSW5wdXRTb3VyY2VIYW5kbGVJbmRleDsKKyAgICBhdXRvIGlucHV0ID0gV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyOjpjcmVhdGUoaGFuZGxlLCBpbml0KTsKKyAgICBtX2Rldmlj
ZS5hZGRJbnB1dENvbm5lY3Rpb24oaW5wdXQuY29weVJlZigpKTsKKyAgICByZXR1cm4gaW5wdXQ7
CiB9CiAKIEV4Y2VwdGlvbk9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlPiBX
ZWJGYWtlWFJEZXZpY2U6OnBhcnNlUmlnaWRUcmFuc2Zvcm0oY29uc3QgRmFrZVhSUmlnaWRUcmFu
c2Zvcm1Jbml0JiBpbml0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgK
aW5kZXggNzYxZmNiYzAzNjcyMDY5NmViNTZmOGNjNGQzZWU1ODVjOWNjYTkzOC4uOWYzNjZjYTEx
ZmUwNDk5YjEwMWY2NjUyMDUyODZmNjI3YzFjNmNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1dlYkZha2VYUkRldmljZS5oCkBAIC04MCw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24oYm9vbCBzdXBwb3J0c1NodXRkb3duTm90aWZp
Y2F0aW9uKSB7IG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbiA9IHN1cHBvcnRzU2h1dGRv
d25Ob3RpZmljYXRpb247IH0KICAgICB2b2lkIHNpbXVsYXRlU2h1dGRvd25Db21wbGV0ZWQoKTsK
ICAgICB2b2lkIHNjaGVkdWxlT25OZXh0RnJhbWUoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGFkZElucHV0Q29ubmVjdGlvbihSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiYmIGlu
cHV0KSB7IG1faW5wdXRDb25uZWN0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnB1dCkpOyB9OwogcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihQbGF0Zm9y
bVhSOjpTZXNzaW9uTW9kZSkgZmluYWw7CiAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsOwpAQCAtMTAxLDYgKzEwMiw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBtX2ds
OwogICAgIEhhc2hNYXA8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUsIFBsYXRmb3JtR0xPYmplY3Q+
IG1fbGF5ZXJzOwogICAgIHVpbnQzMl90IG1fbGF5ZXJJbmRleCB7IDAgfTsKKyAgICBWZWN0b3I8
UmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4+IG1faW5wdXRDb25uZWN0aW9uczsKIH07CiAK
IGNsYXNzIFdlYkZha2VYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkZha2VY
UkRldmljZT4gewpAQCAtMTE2LDE4ICsxMTgsMTkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rmxv
b3JPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0KTsKICAgICB2b2lkIGNsZWFyRmxvb3JP
cmlnaW4oKSB7IG1fZGV2aWNlLnNldEZsb29yT3JpZ2luKFdURjo6bnVsbG9wdCk7IH0KICAgICB2
b2lkIHNpbXVsYXRlUmVzZXRQb3NlKCk7Ci0gICAgUmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxl
cj4gc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oRmFrZVhSSW5wdXRTb3VyY2VJbml0KTsK
KyAgICBSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBzaW11bGF0ZUlucHV0U291cmNlQ29u
bmVjdGlvbihjb25zdCBGYWtlWFJJbnB1dFNvdXJjZUluaXQmKTsKICAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPEZha2VYUlZpZXc+PiBwYXJzZVZpZXcoY29uc3QgRmFrZVhSVmlld0luaXQmKTsK
ICAgICBTaW11bGF0ZWRYUkRldmljZSYgc2ltdWxhdGVkWFJEZXZpY2UoKSB7IHJldHVybiBtX2Rl
dmljZTsgfQogICAgIHZvaWQgc2V0U3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbigpOwogICAg
IHZvaWQgc2ltdWxhdGVTaHV0ZG93bigpOwogCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlPiBwYXJzZVJpZ2lkVHJhbnNmb3JtKGNvbnN0
IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCYpOworCiBwcml2YXRlOgogICAgIFdlYkZha2VYUkRl
dmljZSgpOwogCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpQb3NlPiBwYXJzZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNm
b3JtSW5pdCYpOwotCiAgICAgU2ltdWxhdGVkWFJEZXZpY2UgbV9kZXZpY2U7CisgICAgUGxhdGZv
cm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgbUlucHV0U291cmNlSGFuZGxlSW5kZXggeyAwIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHAKaW5kZXggNzkwYzk4NzBiYjQ4YzUxY2U4
NTVhNWFlMmZiMmEzNjcxY2E3MTZiMC4uN2M4MjcyODk2MTBkYmZjZDFkNDk4NWM3NTYxOWE1MTUw
YjhlN2EwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5w
dXRDb250cm9sbGVyLmNwcApAQCAtMjcsNjMgKzI3LDE1MyBAQAogI2luY2x1ZGUgIldlYkZha2VY
UklucHV0Q29udHJvbGxlci5oIgogCiAjaWYgRU5BQkxFKFdFQlhSKQorI2luY2x1ZGUgIldlYkZh
a2VYUkRldmljZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgV2ViRmFrZVhSSW5w
dXRDb250cm9sbGVyOjpzZXRIYW5kZWRuZXNzKFhSSGFuZGVkbmVzcykKLXsKLX0KK3VzaW5nIElu
cHV0U291cmNlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlOwor
dXNpbmcgSW5wdXRTb3VyY2VCdXR0b24gPSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
SW5wdXRTb3VyY2VCdXR0b247Cit1c2luZyBJbnB1dFNvdXJjZVBvc2UgPSBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlOwordXNpbmcgQnV0dG9uVHlwZSA9IEZh
a2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZTsKIAotdm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xs
ZXI6OnNldFRhcmdldFJheU1vZGUoWFJUYXJnZXRSYXlNb2RlKQotewotfQorLy8gaHR0cHM6Ly9p
bW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvI3hyLXN0YW5kYXJk
LWdhbWVwYWQtbWFwcGluZworY29uc3RleHByIHN0ZDo6YXJyYXk8QnV0dG9uVHlwZSwgNT4gWFJf
U1RBTkRBUkRfQlVUVE9OUyA9IHsgQnV0dG9uVHlwZTo6R3JpcCwgQnV0dG9uVHlwZTo6VG91Y2hw
YWQsIEJ1dHRvblR5cGU6OlRodW1ic3RpY2ssIEJ1dHRvblR5cGU6Ok9wdGlvbmFsQnV0dG9uLCBC
dXR0b25UeXBlOjpPcHRpb25hbFRodW1ic3RpY2sgfTsKIAotdm9pZCBXZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXI6OnNldFByb2ZpbGVzKFZlY3RvcjxTdHJpbmc+KQorUmVmPFdlYkZha2VYUklucHV0
Q29udHJvbGxlcj4gV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpjcmVhdGUoUGxhdGZvcm1YUjo6
SW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlLCBjb25zdCBGYWtlWFJJbnB1dFNvdXJjZUluaXQmIGlu
aXQpCiB7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
KGhhbmRsZSwgaW5pdCkpOwogfQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0
R3JpcE9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgZ3JpcE9yaWdpbiwgYm9vbCBlbXVs
YXRlZFBvc2l0aW9uKQorV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpXZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXIoUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlLCBjb25zdCBGYWtl
WFJJbnB1dFNvdXJjZUluaXQmIGluaXQpCisgICAgOiBtX2hhbmRsZShoYW5kbGUpCisgICAgLCBt
X2hhbmRlbmVzcyhpbml0LmhhbmRlZG5lc3MpCisgICAgLCBtX3RhcmdldFJheU1vZGUoaW5pdC50
YXJnZXRSYXlNb2RlKQorICAgICwgbV9wcm9maWxlcyhpbml0LnByb2ZpbGVzKQorICAgICwgbV9w
cmltYXJ5U2VsZWN0ZWQoaW5pdC5zZWxlY3Rpb25TdGFydGVkKQorICAgICwgbV9zaW11bGF0ZVNl
bGVjdChpbml0LnNlbGVjdGlvbkNsaWNrZWQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGdyaXBPcmln
aW4pOwotICAgIFVOVVNFRF9QQVJBTShlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICBzZXRQb2ludGVy
T3JpZ2luKGluaXQucG9pbnRlck9yaWdpbiwgZmFsc2UpOworICAgIHNldEdyaXBPcmlnaW4oaW5p
dC5ncmlwT3JpZ2luLCBmYWxzZSk7CisgICAgc2V0U3VwcG9ydGVkQnV0dG9ucyhpbml0LnN1cHBv
cnRlZEJ1dHRvbnMpOwogfQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6Y2xlYXJH
cmlwT3JpZ2luKCkKK3ZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpzZXRHcmlwT3JpZ2lu
KEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBncmlwT3JpZ2luLCBib29sIGVtdWxhdGVkUG9zaXRp
b24pCiB7Ci19CisgICAgYXV0byB0cmFuc2Zvcm0gPSBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlUmln
aWRUcmFuc2Zvcm0oZ3JpcE9yaWdpbik7CisgICAgaWYgKHRyYW5zZm9ybS5oYXNFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZ3JpcE9yaWdpbiA9IElucHV0U291cmNlUG9zZSB7
IHRyYW5zZm9ybS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZW11bGF0ZWRQb3NpdGlvbiB9OworfSAg
IAogCiB2b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2V0UG9pbnRlck9yaWdpbihGYWtl
WFJSaWdpZFRyYW5zZm9ybUluaXQgcG9pbnRlck9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9u
KQogewotICAgIFVOVVNFRF9QQVJBTShwb2ludGVyT3JpZ2luKTsKLSAgICBVTlVTRURfUEFSQU0o
ZW11bGF0ZWRQb3NpdGlvbik7CisgICAgYXV0byB0cmFuc2Zvcm0gPSBXZWJGYWtlWFJEZXZpY2U6
OnBhcnNlUmlnaWRUcmFuc2Zvcm0ocG9pbnRlck9yaWdpbik7CisgICAgaWYgKHRyYW5zZm9ybS5o
YXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcG9pbnRlck9yaWdpbiA9IHsg
dHJhbnNmb3JtLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBlbXVsYXRlZFBvc2l0aW9uIH07CiB9CiAK
IHZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpkaXNjb25uZWN0KCkKIHsKKyAgICBtX2Nv
bm5lY3RlZCA9IGZhbHNlOwogfQogCiB2b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6cmVj
b25uZWN0KCkKIHsKKyAgICBtX2Nvbm5lY3RlZCA9IHRydWU7CiB9CiAKLXZvaWQgV2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyOjpzdGFydFNlbGVjdGlvbigpCi17Ci19Ci0KLXZvaWQgV2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyOjplbmRTZWxlY3Rpb24oKQordm9pZCBXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXI6OnNldFN1cHBvcnRlZEJ1dHRvbnMoY29uc3QgVmVjdG9yPEZha2VYUkJ1dHRvblN0YXRl
SW5pdD4mIGJ1dHRvbnMpCiB7CisgICAgbV9idXR0b25zLmNsZWFyKCk7CisgICAgZm9yIChhdXRv
JiBidXR0b24gOiBidXR0b25zKQorICAgICAgICBtX2J1dHRvbnMuYWRkKGJ1dHRvbi5idXR0b25U
eXBlLCBidXR0b24pOwogfQogCi12b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6c2ltdWxh
dGVTZWxlY3QoKQordm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnVwZGF0ZUJ1dHRvblN0
YXRlKGNvbnN0IEZha2VYUkJ1dHRvblN0YXRlSW5pdCYgaW5pdCkKIHsKKyAgICBhdXRvIGl0ID0g
bV9idXR0b25zLmZpbmQoaW5pdC5idXR0b25UeXBlKTsKKyAgICBpZiAoaXQgIT0gbV9idXR0b25z
LmVuZCgpKQorICAgICAgICBpdC0+dmFsdWUgPSBpbml0OwogfQogCi12b2lkIFdlYkZha2VYUklu
cHV0Q29udHJvbGxlcjo6c2V0U3VwcG9ydGVkQnV0dG9ucyhWZWN0b3I8RmFrZVhSQnV0dG9uU3Rh
dGVJbml0PikKK0lucHV0U291cmNlIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6Z2V0RnJhbWVE
YXRhKCkKIHsKKyAgICBJbnB1dFNvdXJjZSBzdGF0ZTsKKyAgICBzdGF0ZS5oYW5kbGUgPSBtX2hh
bmRsZTsKKyAgICBzdGF0ZS5oYW5kZW5lc3MgPSBtX2hhbmRlbmVzczsKKyAgICBzdGF0ZS50YXJn
ZXRSYXlNb2RlID0gbV90YXJnZXRSYXlNb2RlOworICAgIHN0YXRlLnByb2ZpbGVzID0gbV9wcm9m
aWxlczsKKyAgICBzdGF0ZS5wb2ludGVyT3JpZ2luID0gbV9wb2ludGVyT3JpZ2luOworICAgIHN0
YXRlLmdyaXBPcmlnaW4gPSBtX2dyaXBPcmlnaW47CisKKyAgICBpZiAobV9zaW11bGF0ZVNlbGVj
dCkKKyAgICAgICAgbV9wcmltYXJ5U2VsZWN0ZWQgPSB0cnVlOworCisgICAgLy8gaHR0cHM6Ly9p
bW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvI3hyLXN0YW5kYXJk
LWdhbWVwYWQtbWFwcGluZworICAgIC8vIE1pbWljIHhyLXN0YW5kYXJkIGdhbWVwYWQgbGF5b3V0
CisKKyAgICAvLyBQcmltYXJ5IHRyaWdnZXIgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYXQgaW5k
ZXggMAorICAgIHN0YXRlLmJ1dHRvbnMuYXBwZW5kKHsKKyAgICAgICAgLnRvdWNoZWQgPSBtX3By
aW1hcnlTZWxlY3RlZCwKKyAgICAgICAgLnByZXNzZWQgPSBtX3ByaW1hcnlTZWxlY3RlZCwKKyAg
ICAgICAgLnByZXNzZWRWYWx1ZSA9IG1fcHJpbWFyeVNlbGVjdGVkID8gMS4wZiA6IDAuMGYKKyAg
ICB9KTsKKworICAgIC8vIE5leHQgYnV0dG9ucyBpbiB4ci1zdGFuZGFyZCBvcmRlcgorICAgIGZv
ciAoYXV0byBidXR0b25UeXBlIDogWFJfU1RBTkRBUkRfQlVUVE9OUykgeworICAgICAgICBhdXRv
IGRhdGEgPSBnZXRCdXR0b25PclBsYWNlaG9sZGVyKGJ1dHRvblR5cGUpOworICAgICAgICBpZiAo
ZGF0YS5idXR0b24pCisgICAgICAgICAgICBzdGF0ZS5idXR0b25zLmFwcGVuZCgqZGF0YS5idXR0
b24pOworICAgICAgICBpZiAoZGF0YS5heGVzKQorICAgICAgICAgICAgc3RhdGUuYXhlcy5hcHBl
bmRWZWN0b3IoKmRhdGEuYXhlcyk7CisKKyAgICB9CisKKyAgICBpZiAobV9zaW11bGF0ZVNlbGVj
dCkgeworICAgICAgICBtX3ByaW1hcnlTZWxlY3RlZCA9IGZhbHNlOworICAgICAgICBtX3NpbXVs
YXRlU2VsZWN0ID0gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRlOwogfQogCi12b2lk
IFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6dXBkYXRlQnV0dG9uU3RhdGUoRmFrZVhSQnV0dG9u
U3RhdGVJbml0KQorV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpCdXR0b25PclBsYWNlaG9sZGVy
IFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6Z2V0QnV0dG9uT3JQbGFjZWhvbGRlcihGYWtlWFJC
dXR0b25TdGF0ZUluaXQ6OlR5cGUgYnV0dG9uVHlwZSkgY29uc3QKIHsKKyAgICBCdXR0b25PclBs
YWNlaG9sZGVyIHJlc3VsdDsKKworICAgIGF1dG8gaXQgPSBtX2J1dHRvbnMuZmluZChidXR0b25U
eXBlKTsKKyAgICBpZiAoaXQgIT0gbV9idXR0b25zLmVuZCgpKSB7CisgICAgICAgIHJlc3VsdC5i
dXR0b24gPSBJbnB1dFNvdXJjZUJ1dHRvbiB7CisgICAgICAgICAgICAudG91Y2hlZCA9IGl0LT52
YWx1ZS50b3VjaGVkLAorICAgICAgICAgICAgLnByZXNzZWQgPSBpdC0+dmFsdWUucHJlc3NlZCwK
KyAgICAgICAgICAgIC5wcmVzc2VkVmFsdWUgPSBpdC0+dmFsdWUucHJlc3NlZFZhbHVlCisgICAg
ICAgIH07CisKKyAgICAgICAgaWYgKGJ1dHRvblR5cGUgPT0gQnV0dG9uVHlwZTo6VG91Y2hwYWQg
fHwgYnV0dG9uVHlwZSA9PSBCdXR0b25UeXBlOjpUaHVtYnN0aWNrKQorICAgICAgICAgICAgcmVz
dWx0LmF4ZXMgPSBWZWN0b3I8ZmxvYXQ+IHsgaXQtPnZhbHVlLnhWYWx1ZSwgaXQtPnZhbHVlLnlW
YWx1ZSB9OworCisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQWRkIGEgcGxhY2Vob2xkZXIgaWYg
bmVlZGVkCisgICAgICAgIC8vIERldmljZXMgdGhhdCBsYWNrIG9uZSBvZiB0aGUgb3B0aW9uYWwg
aW5wdXRzIGxpc3RlZCBpbiB0aGUgdGFibGVzIGFib3ZlIE1VU1QgcHJlc2VydmUgdGhlaXIgcGxh
Y2UgaW4gdGhlCisgICAgICAgIC8vIGJ1dHRvbnMgb3IgYXhlcyBhcnJheSwgcmVwb3J0aW5nIGEg
cGxhY2Vob2xkZXIgYnV0dG9uIG9yIHBsYWNlaG9sZGVyIGF4aXMsIHJlc3BlY3RpdmVseS4KKyAg
ICAgICAgaWYgKGJ1dHRvblR5cGUgIT0gQnV0dG9uVHlwZTo6T3B0aW9uYWxCdXR0b24gfHwgYnV0
dG9uVHlwZSAhPSBCdXR0b25UeXBlOjpPcHRpb25hbFRodW1ic3RpY2spIHsKKyAgICAgICAgICAg
IGF1dG8gcHJpb3JpdHkgPSBzdGQ6OmZpbmQoWFJfU1RBTkRBUkRfQlVUVE9OUy5iZWdpbigpLCBY
Ul9TVEFOREFSRF9CVVRUT05TLmVuZCgpLCBidXR0b25UeXBlKTsKKyAgICAgICAgICAgIEFTU0VS
VChwcmlvcml0eSAhPSBYUl9TVEFOREFSRF9CVVRUT05TLmVuZCgpKTsKKworICAgICAgICAgICAg
Zm9yIChhdXRvIGl0ID0gcHJpb3JpdHkgKyAxOyBpdCAhPSBYUl9TVEFOREFSRF9CVVRUT05TLmVu
ZCgpOyArK2l0KSB7CisgICAgICAgICAgICAgICAgaWYgKG1fYnV0dG9ucy5jb250YWlucygqaXQp
KSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5idXR0b24gPSBJbnB1dFNvdXJjZUJ1dHRv
bigpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoYnV0dG9uVHlwZSA9PSBCdXR0b25U
eXBlOjpUb3VjaHBhZCAmJiBtX2J1dHRvbnMuY29udGFpbnMoQnV0dG9uVHlwZTo6VGh1bWJzdGlj
aykpCisgICAgICAgICAgICByZXN1bHQuYXhlcyA9IFZlY3RvcjxmbG9hdD4geyAwLjAsIDAuMCB9
OworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxl
ci5oCmluZGV4IGQyOGNlYTRmODZlYTljYTQ2NTZlYmRmOGM1MjUxZWY0YjkyNDk5Y2QuLjhiNWJj
ZjM2NDdlZmNhZGM2OWJiNjhhNjEwYTNkYzk5MzQxMWNiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaApAQCAtMjgsOSArMjgsMTIg
QEAKICNpZiBFTkFCTEUoV0VCWFIpCiAKICNpbmNsdWRlICJGYWtlWFJCdXR0b25TdGF0ZUluaXQu
aCIKKyNpbmNsdWRlICJGYWtlWFJJbnB1dFNvdXJjZUluaXQuaCIKICNpbmNsdWRlICJGYWtlWFJS
aWdpZFRyYW5zZm9ybUluaXQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAjaW5jbHVkZSAi
WFJIYW5kZWRuZXNzLmgiCiAjaW5jbHVkZSAiWFJUYXJnZXRSYXlNb2RlLmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIApAQCAtMzgsMzYgKzQxLDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyKTsgfQotCi0gICAgdm9pZCBzZXRIYW5kZWRuZXNzKFhSSGFu
ZGVkbmVzcyk7Ci0KLSAgICB2b2lkIHNldFRhcmdldFJheU1vZGUoWFJUYXJnZXRSYXlNb2RlKTsK
LQotICAgIHZvaWQgc2V0UHJvZmlsZXMoVmVjdG9yPFN0cmluZz4pOworICAgIHN0YXRpYyBSZWY8
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBjcmVhdGUoUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VI
YW5kbGUsIGNvbnN0IEZha2VYUklucHV0U291cmNlSW5pdCYpOwogCisgICAgdm9pZCBzZXRIYW5k
ZWRuZXNzKFhSSGFuZGVkbmVzcyBoYW5kZW5lc3MpIHsgbV9oYW5kZW5lc3MgPSBoYW5kZW5lc3M7
IH0KKyAgICB2b2lkIHNldFRhcmdldFJheU1vZGUoWFJUYXJnZXRSYXlNb2RlIG1vZGUpIHsgbV90
YXJnZXRSYXlNb2RlID0gbW9kZTsgfQorICAgIHZvaWQgc2V0UHJvZmlsZXMoVmVjdG9yPFN0cmlu
Zz4mJiBwcm9maWxlcykgeyBtX3Byb2ZpbGVzID0gV1RGTW92ZShwcm9maWxlcyk7IH0KICAgICB2
b2lkIHNldEdyaXBPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW4sIGJv
b2wgZW11bGF0ZWRQb3NpdGlvbiA9IGZhbHNlKTsKLQotICAgIHZvaWQgY2xlYXJHcmlwT3JpZ2lu
KCk7Ci0KKyAgICB2b2lkIGNsZWFyR3JpcE9yaWdpbigpIHsgbV9ncmlwT3JpZ2luID0gV1RGOjpu
dWxsb3B0OyB9CiAgICAgdm9pZCBzZXRQb2ludGVyT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3Jt
SW5pdCBwb2ludGVyT3JpZ2luLCBib29sIGVtdWxhdGVkUG9zaXRpb24gPSBmYWxzZSk7Ci0KICAg
ICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQogICAgIHZvaWQgcmVjb25uZWN0KCk7CisgICAgdm9pZCBz
dGFydFNlbGVjdGlvbigpIHsgbV9wcmltYXJ5U2VsZWN0ZWQgPSB0cnVlOyB9CisgICAgdm9pZCBl
bmRTZWxlY3Rpb24oKSB7IG1fcHJpbWFyeVNlbGVjdGVkID0gZmFsc2U7IH0KKyAgICB2b2lkIHNp
bXVsYXRlU2VsZWN0KCkgeyBtX3NpbXVsYXRlU2VsZWN0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0
U3VwcG9ydGVkQnV0dG9ucyhjb25zdCBWZWN0b3I8RmFrZVhSQnV0dG9uU3RhdGVJbml0PiYpOwor
ICAgIHZvaWQgdXBkYXRlQnV0dG9uU3RhdGUoY29uc3QgRmFrZVhSQnV0dG9uU3RhdGVJbml0Jik7
CisgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGVkOyB9CiAK
LSAgICB2b2lkIHN0YXJ0U2VsZWN0aW9uKCk7Ci0KLSAgICB2b2lkIGVuZFNlbGVjdGlvbigpOwot
Ci0gICAgdm9pZCBzaW11bGF0ZVNlbGVjdCgpOwotCi0gICAgdm9pZCBzZXRTdXBwb3J0ZWRCdXR0
b25zKFZlY3RvcjxGYWtlWFJCdXR0b25TdGF0ZUluaXQ+KTsKLQotICAgIHZvaWQgdXBkYXRlQnV0
dG9uU3RhdGUoRmFrZVhSQnV0dG9uU3RhdGVJbml0KTsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UgZ2V0RnJhbWVEYXRhKCk7CiAKIHByaXZhdGU6Ci0gICAg
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyKCkgPSBkZWZhdWx0OworICAgIFdlYkZha2VYUklucHV0
Q29udHJvbGxlcihQbGF0Zm9ybVhSOjpJbnB1dFNvdXJjZUhhbmRsZSwgY29uc3QgRmFrZVhSSW5w
dXRTb3VyY2VJbml0Jik7CisKKyAgICBzdHJ1Y3QgQnV0dG9uT3JQbGFjZWhvbGRlciB7CisgICAg
ICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1
dHRvbj4gYnV0dG9uOworICAgICAgICBPcHRpb25hbDxWZWN0b3I8ZmxvYXQ+PiBheGVzOworICAg
IH07CisgICAgQnV0dG9uT3JQbGFjZWhvbGRlciBnZXRCdXR0b25PclBsYWNlaG9sZGVyKEZha2VY
UkJ1dHRvblN0YXRlSW5pdDo6VHlwZSkgY29uc3Q7CisKKyAgICBQbGF0Zm9ybVhSOjpJbnB1dFNv
dXJjZUhhbmRsZSBtX2hhbmRsZSB7IDAgfTsKKyAgICBYUkhhbmRlZG5lc3MgbV9oYW5kZW5lc3Mg
eyBYUkhhbmRlZG5lc3M6Ok5vbmUgfTsKKyAgICBYUlRhcmdldFJheU1vZGUgbV90YXJnZXRSYXlN
b2RlIHsgWFJUYXJnZXRSYXlNb2RlOjpHYXplIH07CisgICAgVmVjdG9yPFN0cmluZz4gbV9wcm9m
aWxlczsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3Nl
IG1fcG9pbnRlck9yaWdpbjsKKyAgICBPcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2VQb3NlPiBtX2dyaXBPcmlnaW47CisgICAgSGFzaE1hcDxGYWtlWFJC
dXR0b25TdGF0ZUluaXQ6OlR5cGUsIEZha2VYUkJ1dHRvblN0YXRlSW5pdCwgV1RGOjpJbnRIYXNo
PEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8
RmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlPj4gbV9idXR0b25zOworICAgIGJvb2wgbV9jb25u
ZWN0ZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX3ByaW1hcnlTZWxlY3RlZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX3NpbXVsYXRlU2VsZWN0IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291
cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKaW5kZXggZTRhZWViNDliMTA5MTBjNmJmNTY0MWE1
ODRjZDNhYWI2OTJmMjA0Ny4uNmIyNzAwY2E2YWRhNmI2NzU4ZTI2YjFhNTBkOWM0NGQyODJjZmJl
YiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNl
L2NtYWtlL09wdGlvbnNXUEUuY21ha2UKQEAgLTIwNCw2ICsyMDQsNyBAQCBpZiAoRU5BQkxFX1dF
QlhSKQogICAgIGlmIChOT1QgT1BFTlhSX0ZPVU5EKQogICAgICAgICBtZXNzYWdlKEZBVEFMX0VS
Uk9SICJPcGVuWFIgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFdlYlhSIHN1cHBvcnQuIikKICAgICBl
bmRpZiAoKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKEVOQUJMRV9HQU1FUEFEIE9OKQog
ICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9PUEVOWFIgJHtPcGVuWFJfRk9VTkR9KQog
ICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFhSX1VTRV9QTEFURk9STV9FR0wgVFJVRSkKICAg
ICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChYUl9VU0VfR1JBUEhJQ1NfQVBJX09QRU5HTCBUUlVF
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDdhOGFmMTMzNmFjYWMwNDBjZmI3ZmE3MzgwOWI5NjJmMmE3NDQyZGIuLmVlNmQz
NTA4MDIwMTE2ODI3NDZhNzRkNjVjOWZiNTBiNGVkZmFkOGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAyMS0wMy0xNiAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBVcGRhdGUgV2ViWFIgSW5wdXQgU291cmNl
IHRlc3QgZXhwZWN0YXRpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMjEtMDQtMjEgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbXBvcnQgY3NzL2Nzcy13aWxsLWNoYW5nZSB0ZXN0cyBmcm9tIFdQVApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMjBhZDcwNWU1MTU4YjE2YjRjYjk0ZWY0OTVjMjZkODQ4
MDdlNWE1Yy4uZmZiYWUzYzY4YWQzZGNkZjkyNWUyNDJkNTdmYzZkZjE2MzEwYmQyOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDMtMTYgIElt
YW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IFdlYlhSIElucHV0IFNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMzI1NworCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJs
ZXQuCisKKyAgICAgICAgVXBkYXRlIFdlYlhSIElucHV0IFNvdXJjZSB0ZXN0IGV4cGVjdGF0aW9u
cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291
cmNlX3JlY3JlYXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3NvdXJjZXNfY2hhbmdlLmh0dHBzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2
ZW50c19zZXNzaW9uX3NlbGVjdC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUu
aHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvZXZlbnRzX3Nlc3Npb25fc3F1ZWV6ZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBvc2VfaGFuZGVkbmVz
cy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94cklucHV0U291cmNlX2FkZF9yZW1vdmUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9lbXVs
YXRlZFBvc2l0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfcHJvZmlsZXMuaHR0cHMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNv
dXJjZV9zYW1lT2JqZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0Lmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMjEtMDQtMjEgIFRpbSBOZ3V5ZW4gIDxudGltQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBvcnQgY3NzL2Nzcy13aWxsLWNoYW5nZSB0ZXN0cyBmcm9t
IFdQVApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlX3JlY3JlYXRpb24uaHR0cHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9l
dmVudHNfaW5wdXRfc291cmNlX3JlY3JlYXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ3MDUxZTkyMDZmYTRiZGQ4OWZiODFiNGViMGIwOTBiYTIyYjA0NzIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L2V2ZW50c19pbnB1dF9zb3VyY2VfcmVjcmVhdGlvbi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACisKK1BBU1MgSW5wdXQgc291cmNlcyBhcmUgcmUtY3JlYXRlZCB3aGVuIGhhbmRl
ZG5lc3Mgb3IgdGFyZ2V0IHJheSBtb2RlIGNoYW5nZXMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291
cmNlc19jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlc19jaGFuZ2UuaHR0
cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4ZGIxMjYwNjJmYmYyNmU1YWUwYjMzOTU4OTkw
MWE4ZWQ4YmVlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19pbnB1dF9zb3VyY2VzX2NoYW5nZS5odHRw
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgVHJhbnNpZW50IGlucHV0IHNv
dXJjZXMgZmlyZSBldmVudHMgaW4gdGhlIHJpZ2h0IG9yZGVyCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Np
b25fc2VsZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0Lmh0dHBzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MjE2OWU5ODAwMmU5ZjBmODllZjg3NDRjNzM5MDBlM2FlMjM1
NTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3QuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSSW5wdXRTb3VyY2VzIHByaW1hcnkgaW5wdXQgcHJl
c3NlcyBwcm9wZXJseSBmaXJlcyBvZmYgdGhlIHJpZ2h0IGV2ZW50cworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19z
ZXNzaW9uX3NlbGVjdF9zdWJmcmFtZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVj
dF9zdWJmcmFtZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QzZGZiZTMxZjJiNTBl
YWNlYTI4NTUyN2IyMjkyYTUxZjUyNzJlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2Vs
ZWN0X3N1YmZyYW1lLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBF
bnN1cmVzIHRoYXQgYW4gWFJJbnB1dFNvdXJjZXMgcHJpbWFyeSBpbnB1dCBiZWluZyBwcmVzc2Vk
IGFuZCByZWxlYXNlZCBpbiB0aGUgc3BhY2Ugb2YgYSBzaW5nbGUgZnJhbWUgcHJvcGVybHkgZmly
ZXMgb2ZmIHRoZSByaWdodCBldmVudHMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zcXVlZXplLmh0
dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc3F1ZWV6ZS5odHRwcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTIxNjllOTgwMDJlOWYwZjg5ZWY4NzQ0YzczOTAwZTNhZTIzNTU5YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvZXZlbnRzX3Nlc3Npb25fc3F1ZWV6ZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzIEBACisKK1BBU1MgWFJJbnB1dFNvdXJjZXMgcHJpbWFyeSBpbnB1dCBwcmVzc2VzIHByb3Bl
cmx5IGZpcmVzIG9mZiB0aGUgcmlnaHQgZXZlbnRzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0SW5wdXRQb3NlX2hhbmRl
ZG5lc3MuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBvc2VfaGFuZGVkbmVzcy5odHRwcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDg5ZTdhZTNlYmViZjFlNjE0YTM1YjRiYjczYjE4ZGE1MTU0MmUz
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIvZ2V0SW5wdXRQb3NlX2hhbmRlZG5lc3MuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSSW5wdXRTb3VyY2VzIHByb3Blcmx5IGNvbW11bmlj
YXRlIHRoZWlyIGhhbmRlZG5lc3MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2FkZF9yZW1vdmUuaHR0
cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2FkZF9yZW1vdmUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ0YjU2NGJmODU3ZDUzZGU3YzgzMmMzZDI1YjQwZTIxM2Y5YTI0NDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3JlbW92ZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACisKK1BBU1MgWFJJbnB1dFNvdXJjZXMgY2FuIGJlIHByb3Blcmx5IGFkZGVkIGFu
ZCByZW1vdmVkIGZyb20gdGhlIHNlc3Npb24KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2VtdWxhdGVk
UG9zaXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2VtdWxhdGVkUG9zaXRpb24uaHR0
cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhYTcwN2Y2Y2U0NGVmNjQ4ZjQ0ZjBkYWM2OTVl
MjdkYzBmNTY1NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfZW11bGF0ZWRQb3NpdGlvbi5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgUG9zZXMgZnJvbSBYUklu
cHV0U291cmNlLmdyaXBTcGFjZSBoYXZlIGVtdWxhdGVkUG9zaXRpb24gc2V0IHByb3Blcmx5CisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2Vf
cHJvZmlsZXMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMTc2ZWQ3NmUxOTljZWE3
NzRiZDEyYjlmOGU5ZjBmNDNiNDRkZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfcHJvZmls
ZXMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFdlYlhSIElucHV0
U291cmNlJ3MgcHJvZmlsZXMgbGlzdCBjYW4gYmUgc2V0CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9z
YW1lT2JqZWN0Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9zYW1lT2JqZWN0Lmh0dHBzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGIyMGJjZjVlYmQwZWVlMzg2MmQwYzU5YzczMDA5Yzgy
NGJmMzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3NhbWVPYmplY3QuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSSW5wdXRTb3VyY2UgYXR0cmlidXRlcyBt
ZWV0IFtTYW1lT2JqZWN0XSByZXF1aXJlbWVudAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3Jp
Z2luT2Zmc2V0Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXQuaHR0
cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjMzRjZmMyY2M3NjU5ZWI0ZmIwYTMxYzA5NTg0
OGNjMzJiYWQyNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0Lmh0
dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBVcGRhdGluZyBYUlJlZmVy
ZW5jZVNwYWNlIG9yaWdpbiBvZmZzZXQgdXBkYXRlcyB2aWV3IGFuZCBpbnB1dCBtYXRyaWNlcy4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1YjMyNjQx
Y2M0YzIxYTE0N2M4Yjc0NzZmNDE2NzE0ZmY2MmE5MGE3Li4wZjYxZjNjN2RkNGViNzgyOWU3Y2Uz
YWNiNGQ1Nzk5YWY1MmJjNjg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNjEwLDYgKzYxMCwxMSBAQCB3ZWJraXQub3JnL2IvMjEzMTMxIGdhbWVwYWQg
WyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8yMTMxMzEgaHR0cC90ZXN0cy9taXNjL2dhbWVwYWRzLWlu
c2VjdXJlLmh0bWwgWyBTa2lwIF0KIAogIyBXZWJYUgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlX3JlY3JlYXRpb24uaHR0cHMuaHRtbCBb
IFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5w
dXRfc291cmNlc19jaGFuZ2UuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUuaHR0cHMu
aHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVu
dHNfc2Vzc2lvbl9zZWxlY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zcXVlZXplLmh0dHBzLmh0bWwgWyBQ
YXNzIF0KIHdlYmtpdC5vcmcvYi8yMTI4OTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy5odG1sIFsgRmFpbHVyZSBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyQm91bmRlZFJlZmVyZW5jZVNwYWNlX3Vw
ZGF0ZXMuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3dlYkdMQ2FudmFzQ29udGV4dF9jcmVhdGVfeHJj
b21wYXRpYmxlLmh0dHBzLmh0bWwgWyBQYXNzIF0KQEAgLTYyNCwxMCArNjI5LDE1IEBAIHdlYmtp
dC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRl
dmljZV9yZXF1ZXN0U2Vzc2lvCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25fbm9fbW9kZS5odHRw
cy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25fbm9uX2ltbWVyc2l2ZV9u
b19nZXN0dXJlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9v
cHRpb25hbEZlYXR1cmVzLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIvZ2V0SW5wdXRQb3NlX2hhbmRlZG5lc3MuaHR0cHMuaHRtbCBbIFBh
c3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRWaWV3ZXJQb3Nl
X2VtdWxhdGVkUG9zaXRpb24uaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdlclBvc2VfZ2V0UG9zZS5odHRwcy5o
dG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJh
bWVfZ2V0UG9zZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyRnJhbWVfc2Vzc2lvbl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNz
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9h
ZGRfcmVtb3ZlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLmh0bWwgWyBQ
YXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJj
ZV9wcm9maWxlcy5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2Vfc2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJf
YXZhaWxhYmlsaXR5Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUvaWRsaGFybmVzcy5o
dHRwcy53aW5kb3cuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS94ckRldmljZV9pc1Nlc3Npb25T
dXBwb3J0ZWRfaW1tZXJzaXZlLWFyLmh0dHBzLmh0bWwgWyBQYXNzIF0KQEAgLTYzNSw2ICs2NDUs
NyBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0
dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJWaWV3X21hdGNoLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLmh0bWwgWyBQYXNzIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvbmF2aWdhdG9yX3hyX3NhbWVP
YmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy5odG1sIFsgUGFzcyBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vf
b3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2VfcmVsYXRpb25zaGlwcy5odHRw
cy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
UmlnaWRUcmFuc2Zvcm1fY29uc3RydWN0b3IuaHR0cHMuaHRtbCBbIFBhc3MgXQpkaWZmIC0tZ2l0
IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGNlNGQyODIxMTJmYWY4NzE3OWQ4YTJmM2Vi
MzAwM2IwODg1NWFkMGEuLmE2MTE4NGRlOTYwY2MyOTVmYjA2Y2YwNzRlMTZkZTc2ZTBjZGY1Yjgg
MTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAyMS0wMy0xNiAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgV2ViWFIgSW5wdXQgU291cmNlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjU3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBFbmFibGUgV1BFIEdhbWVwYWQgd2hlbiBXZWJY
UiBpcyBlbmFibGVkLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2U6
CisKIDIwMjEtMDQtMjEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIEVuYWJsZSBDU1MgU2Nyb2xsIFNuYXAgYnkgZGVmYXVsdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>