<?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>224353</bug_id>
          
          <creation_ts>2021-04-08 18:31:57 -0700</creation_ts>
          <short_desc>Initial implementation of WebChromeClient::enumerateImmersiveXRDevices() and XRDeviceProxy</short_desc>
          <delta_ts>2021-04-12 14:28:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ada Chan">adachan</reporter>
          <assigned_to name="Ada Chan">adachan</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>mkwst</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1748568</commentid>
    <comment_count>0</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2021-04-08 18:31:57 -0700</bug_when>
    <thetext>Initial implementation of WebChromeClient::enumerateImmersiveXRDevices() and XRDeviceProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748576</commentid>
    <comment_count>1</comment_count>
      <attachid>425571</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2021-04-08 19:29:56 -0700</bug_when>
    <thetext>Created attachment 425571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748581</commentid>
    <comment_count>2</comment_count>
      <attachid>425571</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-08 19:40:53 -0700</bug_when>
    <thetext>Comment on attachment 425571
Patch

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

Does not seem outrageous but I didn&apos;t quite finish

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3410
&gt; +    bool hasArray = WTF::holds_alternative&lt;std::array&lt;float, 16&gt;&gt;(projection);

Separately I wonder if we should give this std::array&lt;float, 16&gt; a typename

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3441
&gt; +        for (size_t i = 0; i &lt; 16; ++i) {

...and if there&apos;s a way to extract this length from it, or otherwise not have to hard code this 16 here..

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3539
&gt; +#endif // ENABLE(WEBXR)

Remind me why these are all here instead of down in WebCore with their types? I feel like you had a reason in one case, but the rest of these all seem pretty trivial?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748588</commentid>
    <comment_count>3</comment_count>
      <attachid>425571</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-04-08 19:57:40 -0700</bug_when>
    <thetext>Comment on attachment 425571
Patch

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

&gt; Source/WebKit/Shared/Cocoa/XRDeviceProxy.h:31
&gt; +#include &lt;WebCore/PlatformXR.h&gt;

Maybe include WeakPtr.h too? You&apos;re getting it from somewhere but that might not always be the case with unified builds. Although maybe that&apos;s silly since the same applies for Vector, Ref and Optional.

&gt; Source/WebKit/Shared/Cocoa/XRDeviceProxy.mm:56
&gt; +    if (m_trackingAndRenderingClient)
&gt; +        m_trackingAndRenderingClient-&gt;sessionDidEnd();

I&apos;m surprised this isn&apos;t done via an accessor.

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3451
&gt; +    return { nullptr };

Is that different from a nullopt?

&gt; Source/WebKit/UIProcess/Cocoa/PlatformXRCoordinator.h:45
&gt; +    // Session creation/termination

Nit: End comment with .

&gt; Source/WebKit/UIProcess/Cocoa/PlatformXRCoordinator.h:46
&gt; +    using OnSessionEndCallback = WTF::Function&lt;void(XRDeviceIdentifier)&gt;;

No need for WTF::

&gt; Source/WebKit/UIProcess/Cocoa/PlatformXRCoordinator.h:50
&gt; +    // Session display loop

Ditto.

&gt; Source/WebKit/UIProcess/Cocoa/PlatformXRSystem.h:52
&gt; +    void didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) override;

I think this can be final.

&gt; Source/WebKit/UIProcess/Cocoa/PlatformXRSystem.mm:92
&gt; +    if (PlatformXRCoordinator* xrCoordinator = PlatformXRSystem::xrCoordinator())

auto*

&gt; Source/WebKit/UIProcess/Cocoa/PlatformXRSystem.mm:98
&gt; +    if (PlatformXRCoordinator* xrCoordinator = PlatformXRSystem::xrCoordinator())

auto*

&gt; Source/WebKit/WebProcess/cocoa/PlatformXRSystemProxy.mm:61
&gt; +            RefPtr&lt;XRDeviceProxy&gt; device = deviceByIdentifier(deviceInfo.identifier);

auto device = 

You could also do this in the if test statement if you like.

&gt; Source/WebKit/WebProcess/cocoa/PlatformXRSystemProxy.mm:89
&gt; +    RefPtr&lt;XRDeviceProxy&gt; device = deviceByIdentifier(deviceIdentifier);

auto device =

Could also be in the if statement test.

&gt; Source/WebKit/WebProcess/cocoa/PlatformXRSystemProxy.mm:97
&gt; +        XRDeviceProxy* deviceProxy = static_cast&lt;XRDeviceProxy*&gt;(device.ptr());

auto* deviceProxy =</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749008</commentid>
    <comment_count>4</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2021-04-10 10:52:25 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #2)
&gt; Comment on attachment 425571 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425571&amp;action=review
&gt; 
&gt; Does not seem outrageous but I didn&apos;t quite finish
&gt; 
&gt; &gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3410
&gt; &gt; +    bool hasArray = WTF::holds_alternative&lt;std::array&lt;float, 16&gt;&gt;(projection);
&gt; 
&gt; Separately I wonder if we should give this std::array&lt;float, 16&gt; a typename
&gt; 
&gt; &gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3441
&gt; &gt; +        for (size_t i = 0; i &lt; 16; ++i) {
&gt; 
&gt; ...and if there&apos;s a way to extract this length from it, or otherwise not
&gt; have to hard code this 16 here..

I give this a typename and define a constant for its length.

&gt; 
&gt; &gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3539
&gt; &gt; +#endif // ENABLE(WEBXR)
&gt; 
&gt; Remind me why these are all here instead of down in WebCore with their
&gt; types? I feel like you had a reason in one case, but the rest of these all
&gt; seem pretty trivial?

Yep, I&apos;ll move these down to WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749010</commentid>
    <comment_count>5</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2021-04-10 11:00:14 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #3)
&gt; Comment on attachment 425571 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425571&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/XRDeviceProxy.h:31
&gt; &gt; +#include &lt;WebCore/PlatformXR.h&gt;
&gt; 
&gt; Maybe include WeakPtr.h too? You&apos;re getting it from somewhere but that might
&gt; not always be the case with unified builds. Although maybe that&apos;s silly
&gt; since the same applies for Vector, Ref and Optional.

I&apos;ll include them all just in case.

&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/XRDeviceProxy.mm:56
&gt; &gt; +    if (m_trackingAndRenderingClient)
&gt; &gt; +        m_trackingAndRenderingClient-&gt;sessionDidEnd();
&gt; 
&gt; I&apos;m surprised this isn&apos;t done via an accessor.

Will add an accessor.

&gt; 
&gt; &gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3451
&gt; &gt; +    return { nullptr };
&gt; 
&gt; Is that different from a nullopt?

PlatformXR::Device::FrameData::Projection is a Variant where std::nullptr_t is one of the possible types. I&apos;m not sure if the original author considered using an Optional here. We can consider this in a future patch.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PlatformXRCoordinator.h:45
&gt; &gt; +    // Session creation/termination
&gt; 
&gt; Nit: End comment with .

Updated.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PlatformXRCoordinator.h:46
&gt; &gt; +    using OnSessionEndCallback = WTF::Function&lt;void(XRDeviceIdentifier)&gt;;
&gt; 
&gt; No need for WTF::

Updated.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PlatformXRCoordinator.h:50
&gt; &gt; +    // Session display loop
&gt; 
&gt; Ditto.

Updated.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PlatformXRSystem.h:52
&gt; &gt; +    void didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) override;
&gt; 
&gt; I think this can be final.

Fixed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PlatformXRSystem.mm:92
&gt; &gt; +    if (PlatformXRCoordinator* xrCoordinator = PlatformXRSystem::xrCoordinator())
&gt; 
&gt; auto*
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PlatformXRSystem.mm:98
&gt; &gt; +    if (PlatformXRCoordinator* xrCoordinator = PlatformXRSystem::xrCoordinator())
&gt; 
&gt; auto*
&gt; 
&gt; &gt; Source/WebKit/WebProcess/cocoa/PlatformXRSystemProxy.mm:61
&gt; &gt; +            RefPtr&lt;XRDeviceProxy&gt; device = deviceByIdentifier(deviceInfo.identifier);
&gt; 
&gt; auto device = 
&gt; 
&gt; You could also do this in the if test statement if you like.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/cocoa/PlatformXRSystemProxy.mm:89
&gt; &gt; +    RefPtr&lt;XRDeviceProxy&gt; device = deviceByIdentifier(deviceIdentifier);
&gt; 
&gt; auto device =
&gt; 
&gt; Could also be in the if statement test.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/cocoa/PlatformXRSystemProxy.mm:97
&gt; &gt; +        XRDeviceProxy* deviceProxy = static_cast&lt;XRDeviceProxy*&gt;(device.ptr());
&gt; 
&gt; auto* deviceProxy =

Updated the above with auto and if test statement.

Thanks for all the feedback, Dean and Tim!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749012</commentid>
    <comment_count>6</comment_count>
      <attachid>425688</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2021-04-10 11:23:53 -0700</bug_when>
    <thetext>Created attachment 425688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749281</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-12 10:47:48 -0700</bug_when>
    <thetext>Patch 425688 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749309</commentid>
    <comment_count>8</comment_count>
      <attachid>425768</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2021-04-12 11:51:39 -0700</bug_when>
    <thetext>Created attachment 425768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749332</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-12 12:38:41 -0700</bug_when>
    <thetext>Committed r275835 (236404@main): &lt;https://commits.webkit.org/236404@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425768.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749334</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-12 12:39:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/76552456&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425571</attachid>
            <date>2021-04-08 19:29:56 -0700</date>
            <delta_ts>2021-04-08 19:57:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224353-20210408192955.patch</filename>
            <type>text/plain</type>
            <size>69926</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDkyOTdjNTFkMDcxOTYy
NzkwNjM0ODk5NWI5N2YyMTRkZTQxMmZlMi4uZDYwNmMyZWU0OWJhZmM0NzBjNzRmMzhhYzhlMmIw
MDM0ZDkzZTkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA0LTA4ICBBZGEg
Q2hhbiAgPGFkYS5jaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGltcGxlbWVudGF0
aW9uIG9mIFdlYkNocm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgYW5k
IFhSRGV2aWNlUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNDM1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZSBQbGF0Zm9ybVhSRGV2aWNlQ29jb2EgYXMgWFJEZXZpY2VQcm94eSB3aWxs
IGJlIGltcGxlbWVudGluZyBQbGF0Zm9ybVhSOjpEZXZpY2UuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9jb2NvYS9QbGF0Zm9ybVhSQ29jb2EuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisKIDIw
MjEtMDQtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSRUdSRVNTSU9OKHIyNzM1NDEpIFdLV2ViVmlldyBjYW4ndCBsb2FkIE5TVVJMUmVx
dWVzdCBzdWJjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI0MDM3NDc4MjJlYWU3MDc1MmZhZDIzNDc1Mjgy
MTYwZDJjMTllODAuLmJiOGY1MmY0NGVmMTlmYzI4ZGIyMTAxOWYwNTA4MzlmNWJiMjkxY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTEzIEBACisyMDIxLTA0LTA4ICBBZGEgQ2hhbiAgPGFkYS5jaGFu
QGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIFdlYkNocm9t
ZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgYW5kIFhSRGV2aWNlUHJveHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDM1Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkIFhS
RGV2aWNlUHJveHkgd2hpY2ggaW1wbGVtZW50cyBQbGF0Zm9ybVhSOjpEZXZpY2UuCisgICAgICAg
IC0gSW1wbGVtZW50IFdlYkNocm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2Vz
KCksIHdoaWNoIGNhbGxzIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eQorICAgICAgICB0byBnZXQgdGhl
IGxpc3Qgb2YgWFJEZXZpY2VQcm94eS4KKyAgICAgICAgLSBYUkRldmljZVByb3h5IGdvZXMgdGhy
b3VnaCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgdG8gaGFuZGxlIGl0cyBvcGVyYXRpb25zLgorICAg
ICAgICBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgc2VuZHMgbWVzc2FnZXMgb3ZlciBJUEMgdG8gUGxh
dGZvcm1YUlN5c3RlbSBvbiB0aGUgVUkgcHJvY2VzcyBzaWRlLAorICAgICAgICB3aGljaCBoYW5k
bGVzIFhSIGRldmljZSBkaXNjb3ZlcnkgYW5kIG1hbmFnZXMgc2Vzc2lvbnMgdmlhIHRoZSBQbGF0
Zm9ybVhSQ29vcmRpbmF0b3IgaW50ZXJmYWNlLgorICAgICAgICBQbGF0Zm9ybVhSU3lzdGVtOjp4
ckNvb3JkaW5hdG9yKCkgcmV0dXJucyBudWxsIGZvciBub3cgYW5kIHdpbGwgYmUgaW1wbGVtZW50
ZWQgaW4gYSBsYXRlciBwYXRjaC4KKyAgICAgICAgLSBJbXBsZW1lbnQgdGhlIGVuY29kZS9kZWNv
ZGUgbWV0aG9kcyB0byBlbmFibGUgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgdG8KKyAg
ICAgICAgYmUgc2VudCBvdmVyIElQQy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dn
aW5nLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICh0
eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKGhlYWRlcnNf
Zm9yX3R5cGUpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL2NvY29hL1BsYXRmb3JtWFJDb2NvYS5o
LgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6WFJEZXZpY2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6WFJE
ZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eSk6CisgICAgICAgIEluaXRpYWxpemUgaXRzIGRhdGEg
bWVtYmVycyBiYXNlZCBvbiB0aGUgWFJEZXZpY2VJbmZvIHBhc3NlZCBpbi4KKyAgICAgICAgS2Vl
cCBhIHdlYWsgcG9pbnRlciB0byBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgKGFzIFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eSBoYXMKKyAgICAgICAgc3Ryb25nIHJlZmVyZW5jZXMgdG8gaXRzIGxpc3Qgb2Yg
WFJEZXZpY2VQcm94eSkuCisgICAgICAgIChXZWJLaXQ6OlhSRGV2aWNlUHJveHk6OnNlc3Npb25E
aWRFbmQpOgorICAgICAgICBOb3RpZnkgdGhlIFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50IHRo
YXQgdGhlIHNlc3Npb24gaGFzIGVuZGVkLgorICAgICAgICAoV2ViS2l0OjpYUkRldmljZVByb3h5
Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpYUkRl
dmljZVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktp
dDo6WFJEZXZpY2VQcm94eTo6dmlld3MgY29uc3QpOgorICAgICAgICBSZXR1cm4gbGVmdCBhbmQg
cmlnaHQgdmlld3MgaWYgdGhlIGRldmljZSBzdXBwb3J0cyBzdGVyZW8gcmVuZGVyaW5nLgorICAg
ICAgICBPdGhlcndpc2UgcmV0dXJuIGp1c3Qgb25lIHZpZXcuCisgICAgICAgIChXZWJLaXQ6OlhS
RGV2aWNlUHJveHk6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbj46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVh
dGVybmlvbj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGxhdGZvcm1Y
Ujo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlPjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YTo6Rm92Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UHJvamVjdGlvbj46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE6OlByb2plY3Rpb24+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpWaWV3Pjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Vmlldz46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVycz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVy
cz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL2NvY29hL1BsYXRmb3JtWFJDb2NvYS5oLgorICAgICAgICBJ
bml0aWFsIGludGVyZmFjZSBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBwbGF0Zm9ybSByZWdh
cmRpbmcgWFIgZGV2aWNlcyBhbmQgc2Vzc2lvbnMuCisgICAgICAgIEZvciBub3csIHRoZSBpbnRl
cmZhY2UgY292ZXJzIHNlc3Npb24gY3JlYXRpb24gYW5kIHRlcm1pbmF0aW9uLCBhbmQgc2NoZWR1
bGluZyBmcmFtZSB1cGRhdGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhS
U3lzdGVtLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL2NvY29hL1Bs
YXRmb3JtWFJDb2NvYS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lz
dGVtLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9j
b2NvYS9QbGF0Zm9ybVhSQ29jb2EuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxhdGZv
cm1YUlN5c3RlbS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW06
OlBsYXRmb3JtWFJTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtOjp+
UGxhdGZvcm1YUlN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW06Omlu
dmFsaWRhdGUpOgorICAgICAgICBFbmQgYW55IGV4aXN0aW5nIHNlc3Npb24gb24gaW52YWxpZGF0
aW9uLgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNp
dmVYUkRldmljZXMpOgorICAgICAgICBHZXQgcHJpbWFyeSBkZXZpY2UgaW5mb3JtYXRpb24gZnJv
bSBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuCisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0
ZW06OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIFN0YXJ0IFhSIHNl
c3Npb24gdmlhIFBsYXRmb3JtWFJDb29yZGluYXRvci4KKyAgICAgICAgKFdlYktpdDo6UGxhdGZv
cm1YUlN5c3RlbTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIEVuZCBh
bnkgZXhpc3RpbmcgWFIgc2Vzc2lvbiB2aWEgUGxhdGZvcm1YUkNvb3JkaW5hdG9yLgorICAgICAg
ICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICBTY2hl
ZHVsZSBmcmFtZSB1cGRhdGUgdmlhIFBsYXRmb3JtWFJDb29yZGluYXRvci4KKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcik6CisgICAgICAgIFJldHVybnMg
bnVsbCBmb3Igbm93LiBXaWxsIGJlIGltcGxlbWVudGVkIGluIGEgbGF0ZXIgcGF0Y2guCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIFNldCB1cCB0aGUg
UGxhdGZvcm1YUlN5c3RlbSBoZWxkIGJ5IHRoZSBXZWJQYWdlUHJveHkuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgIEludmFsaWRhdGUgbV94clN5
c3RlbSBzbyBleGlzdGluZyBzZXNzaW9uIGlzIGVuZGVkIHByb3Blcmx5LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZW51bWVyYXRl
SW1tZXJzaXZlWFJEZXZpY2VzKToKKyAgICAgICAgR2V0IHRoZSBsaXN0IG9mIFhSRGV2aWNlUHJv
eHkgZnJvbSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp4clN5
c3RlbVByb3h5KToKKyAgICAgICAgQ3JlYXRlIG1feHJTeXN0ZW1Qcm94eSBsYXppbHkuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9jb2NvYS9QbGF0Zm9ybVhSQ29jb2EuaC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvY29jb2EvUGxhdGZvcm1YUkNvY29hLmguCisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubW06IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlBsYXRmb3JtWFJTeXN0ZW1Q
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6flBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6
ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKToKKyAgICAgICAgR2V0IHRoZSBsaXN0IG9mIFhS
RGV2aWNlSW5mbyB0aGF0IHJlcHJlc2VudHMgdGhlIGltbWVyc2l2ZSBkZXZpY2VzIHJldHVybmVk
CisgICAgICAgIGZyb20gUGxhdGZvcm1YUlN5c3RlbS4gUmV1c2UgYW55IGV4aXN0aW5nIFhSRGV2
aWNlUHJveHkgaW5zdGFuY2VzIHRoYXQgaGF2ZSB0aGUgc2FtZQorICAgICAgICBYUkRldmljZUlk
ZW50aWZpZXIuIE90aGVyd2lzZSwgY3JlYXRlIG5ldyBvbmVzLgorICAgICAgICAoV2ViS2l0OjpQ
bGF0Zm9ybVhSU3lzdGVtUHJveHk6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2h1dERvd25UcmFja2luZ0Fu
ZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6cmVx
dWVzdEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzZXNz
aW9uRGlkRW5kKToKKyAgICAgICAgQ2FsbCBzZXNzaW9uRGlkRW5kIG9uIHRoZSBYUkRldmljZVBy
b3h5IHRoYXQgaW5pdGlhbGl6ZWQgdGhlIHNlc3Npb24uCisgICAgICAgIChXZWJLaXQ6OlBsYXRm
b3JtWFJTeXN0ZW1Qcm94eTo6ZGV2aWNlQnlJZGVudGlmaWVyKToKKyAgICAgICAgSGVscGVyIG1l
dGhvZCBmb3IgZmluZGluZyB0aGUgWFJEZXZpY2VQcm94eSBpbiBtX2RldmljZXMgYnkgaXRzIGlk
ZW50aWZpZXIuCisKIDIwMjEtMDQtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNzM1NDEpIFdLV2ViVmlldyBjYW4n
dCBsb2FkIE5TVVJMUmVxdWVzdCBzdWJjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9jb2NvYS9QbGF0Zm9ybVhSQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL2NvY29hL1BsYXRmb3JtWFJDb2NvYS5oCmluZGV4IDMxYzlmNzk3MTVlZTczMDEy
ZDBhZmExMjEzYTFjMGY4ZDQxYmFiNDMuLjI3NzdjZTQ5MGQwMTBkYzY5NTIzZGQyYzY4Njk2NmRk
N2IxZjFjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL2NvY29hL1Bs
YXRmb3JtWFJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL2NvY29hL1Bs
YXRmb3JtWFJDb2NvYS5oCkBAIC0yNywyMiArMjcsNSBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKSAm
JiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCi0KLW5hbWVzcGFjZSBQ
bGF0Zm9ybVhSIHsKLQotY2xhc3MgUGxhdGZvcm1YUkRldmljZUNvY29hIDogcHVibGljIERldmlj
ZSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vz
c2lvbk1vZGUpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFJl
ZmVyZW5jZVNwYWNlVHlwZSkgb3ZlcnJpZGUgeyB9Ci0gICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3
cyhTZXNzaW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyB9OyB9Ci0gICAgdm9pZCBy
ZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgb3ZlcnJpZGUgeyB9Ci0gICAgT3B0
aW9uYWw8TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMy
X3QsIGJvb2wpIG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfTsKLSAgICB2b2lkIGRl
bGV0ZUxheWVyKExheWVySGFuZGxlKSBvdmVycmlkZSB7IH07Ci19OwotCi19Ci0KICNpbmNsdWRl
IDxXZWJLaXRBZGRpdGlvbnMvUGxhdGZvcm1YUkFkZGl0aW9ucy5oPgotCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAwZTBmYjg3
MGU1MWE0NDYwNjMxNWE5NGEyNGM1NDYxMjlhYjBlYjZkLi5mOWZmNzE2MjI0NmY3NTMxZGExNGE3
NTc0NzQ5ZjU4YTIyN2JkYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CkBAIC05OCw2ICs5OCw3IEBAICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9Q
bHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9TaGFyZWQvV2ViQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJ
UikvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMDUsOCArMTA2LDggQEAg
JChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
VUlQcm94eS5tZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluCiskKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJUHJv
eHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVBy
b2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xOTgsNiArMTk5LDcg
QEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL0F1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1Y
UlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2Fn
ZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CmluZGV4IDM0YWMzYjFmYTkzNDc2ZDE1ZTQyNGZiN2IzMDczZmU1MjczOTc4NDIuLjc1NDdiZWE5
ZWNkYTYxNTQ3ZmRjYmY5OTgyYjM1NTE5NzkyZjEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTA5LDYgKzEwOSwxMiBAQCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0Q2hh
bm5lbE1lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtTb2NrZXRTdHJlYW1N
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9O
ZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF0Zm9y
bVhSU3lzdGVtTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF0Zm9ybVhSU3lzdGVtUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9QbGF0Zm9ybVhSU3lzdGVtUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF0Zm9ybVhSU3lzdGVtUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTI4OCwxMiArMjk0LDEyIEBAICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVRleHRUcmFj
a1Byb3h5TWVzc2FnZXNSZXBsaWVzCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVWaWRlb1RyYWNr
UHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlc1JlcGxpZXMuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlcy5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVXZWJJbnNwZWN0b3JVSVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9y
VUlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTQxOCw5
ICs0MjQsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzcwogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9y
TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
V2ViSW5zcGVjdG9yTWVzc2FnZXNSZXBsaWVzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0
b3JVSVByb3h5TWVzc2FnZXMuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaApAQCAtNDMwLDYg
KzQzMyw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rv
clVJTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklu
c3BlY3RvclVJUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk1ETlNSZWdpc3Rlck1l
c3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYk1ETlNSZWdpc3Rlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk1ETlNSZWdpc3Rlck1lc3NhZ2VzUmVwbGllcy5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggOTViZjQ1MTZhNmUxZGQxYzRhZDQwYTBmZTk4
MTRiN2U5MDY5YjIxZC4uOGE1N2E0NWQ1Y2Q3NjI2NDk5ZWM4MzQwYmJiMDI5ZmNjMjg5NjVkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTYxLDYgKzE2MSw3IEBAIE1FU1NBR0Vf
UkVDRUlWRVJTID0gXAogCVVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ciBcCiAJVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5IFwKIAlVSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
IFwKIAlVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKIAlVSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCkBAIC0yMTgsNiArMjE5LDcgQEAgTUVT
U0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
IFwKIAlXZWJQcm9jZXNzL1dlYlByb2Nlc3MgXAorCVdlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1Y
UlN5c3RlbVByb3h5IFwKIAlXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIg
XAogCVdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIgXAogCVdlYlBy
b2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dp
bmcuaAppbmRleCBhOTgzYjVmNTYxODU1MmIzMTA3NmJhMjk4NmIzNWRiYjhkZjIwNzY5Li40MTFl
ZDNlZGY1NWUzZGFhMWYxMDI5NjBkYzdiOTRjZGVhNzhlYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xv
Z2dpbmcuaApAQCAtMTA0LDYgKzEwNCw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oV2ViR0wpIFwK
ICAgICBNKFdlYlJUQykgXAogICAgIE0oV2hlZWxFdmVudHMpIFwKKyAgICBNKFhSKSBcCiAKIFdF
QktJVDJfTE9HX0NIQU5ORUxTKERFQ0xBUkVfTE9HX0NIQU5ORUwpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGRkNGI0MGIzNzAxMDQxNmNjNmI0MDc3NzQz
MTU3ZTI5MWU4NTkwODIuLmVkMDc2MWU1ZTk2NjM4MmUwMDk1MzQ0Y2I3NWY5NzVmZDllZjc3ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzQzLDYgKzM0
Myw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAg
ICAgICdXZWJLaXQ6OlRyYW5zYWN0aW9uSUQnLAogICAgICAgICAnV2ViS2l0OjpVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlhSRGV2aWNlSWRlbnRpZmllcicsCiAgICAgXSkK
IAogCkBAIC03NzcsNiArNzc4LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAg
ICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6Oldl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5oIiddLAogICAgICAgICAnd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJzog
Wyc8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oPicsICc8V2ViQ29yZS9MaWJXZWJS
VENFbnVtVHJhaXRzLmg+J10sCisgICAgICAgICdQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YSc6IFsnPFdlYkNvcmUvUGxhdGZvcm1YUi5oPiddLAogICAgIH0KIAogICAgIGhlYWRlcnMgPSBb
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU4ZmIzNTc1NmZmZDA2NzNlZTgxNzcwNGU0Y2E2ZTFmNjM3ZTdkNjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5LmgKQEAgLTAsMCAr
MSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQor
CisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybVhSLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVt
UHJveHk7CisKK3N0cnVjdCBYUkRldmljZUluZm87CisKK2NsYXNzIFhSRGV2aWNlUHJveHkgZmlu
YWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFhSRGV2aWNlUHJveHk+IGNyZWF0ZShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5Jik7CisgICAgWFJEZXZpY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZCgpOworCitwcml2YXRl
OgorICAgIFhSRGV2aWNlUHJveHkoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94
eSYpOworCisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1Y
Ujo6U2Vzc2lvbk1vZGUpIGZpbmFsOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRp
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBpbml0aWFsaXplUmVm
ZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KKyAg
ICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxhdGZvcm1YUjo6
U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRmb3Jt
WFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CisgICAgT3B0aW9uYWw8
UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwg
dWludDMyX3QsIGJvb2wpIG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfTsKKyAgICB2
b2lkIGRlbGV0ZUxheWVyKFBsYXRmb3JtWFI6OkxheWVySGFuZGxlKSBvdmVycmlkZSB7IH07CisK
KyAgICBYUkRldmljZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8UGxhdGZv
cm1YUlN5c3RlbVByb3h5PiBtX3hyU3lzdGVtOworICAgIGJvb2wgbV9zdXBwb3J0c1N0ZXJlb1Jl
bmRlcmluZyB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVBy
b3h5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ2N2IyN2FkZmRjMTMwMTBjMjJlOTEzMTFhNWZjZWNiNzE4ZTA5
YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmlj
ZVByb3h5Lm1tCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlhSRGV2aWNlUHJveHkuaCIKKworI2lmIEVOQUJMRShXRUJYUikKKworI2lt
cG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCisjaW1wb3J0ICJYUkRldmljZUluZm8uaCIK
KwordXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitS
ZWY8WFJEZXZpY2VQcm94eT4gWFJEZXZpY2VQcm94eTo6Y3JlYXRlKFhSRGV2aWNlSW5mbyYmIGRl
dmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgWFJEZXZpY2VQcm94eShXVEZNb3ZlKGRldmljZUluZm8pLCB4clN5c3Rl
bSkpOworfQorCitYUkRldmljZVByb3h5OjpYUkRldmljZVByb3h5KFhSRGV2aWNlSW5mbyYmIGRl
dmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCisgICAgOiBtX3hyU3lz
dGVtKG1ha2VXZWFrUHRyKHhyU3lzdGVtKSkKK3sKKyAgICBtX2lkZW50aWZpZXIgPSBkZXZpY2VJ
bmZvLmlkZW50aWZpZXI7CisgICAgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyA9IGRldmljZUlu
Zm8uc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmc7CisgICAgbV9zdXBwb3J0c09yaWVudGF0aW9uVHJh
Y2tpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZzsKKyAgICBpZiAo
IWRldmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQorICAgICAgICBzZXRFbmFibGVkRmVhdHVy
ZXMoU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1cmVzKTsKK30KKwor
dm9pZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKK3sKKyAgICBpZiAobV90cmFja2lu
Z0FuZFJlbmRlcmluZ0NsaWVudCkKKyAgICAgICAgbV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVu
dC0+c2Vzc2lvbkRpZEVuZCgpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6OmluaXRpYWxpemVU
cmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBzZXNzaW9uTW9kZSkK
K3sKKyAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGU6OkltbWVy
c2l2ZVZyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV94clN5c3RlbSkKKyAgICAgICAg
bV94clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Cit9CisKK3ZvaWQg
WFJEZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgaWYg
KG1feHJTeXN0ZW0pCisgICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKTsKK30KKworVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFhSRGV2
aWNlUHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7CisgICAgVmVjdG9yPERl
dmljZTo6Vmlld0RhdGE+IHZpZXdzOworICAgIGlmIChtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5n
ICYmIG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7CisgICAgICAgIHZpZXdzLmFw
cGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7CisgICAgICAgIHZpZXdzLmFwcGVu
ZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOworICAgIH0gZWxzZQorICAgICAgICB2
aWV3cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOworICAgIHJldHVybiB2
aWV3czsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6
RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmIChtX3hy
U3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RGTW92ZShjYWxsYmFj
aykpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJY
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IDI1NWEyY2JjNmM3N2NlZjFlNjA3MGVhNDIwZjZiZGU5MGIyNDBhNzEuLmNhODg0NzBiYWMw
YmIwNjU2NWFiZjY3NmNiMDY4ZWJmNmUxYTQyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzM0Myw0ICszMzQzLDE5OSBAQCBPcHRp
b25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpHcmFwaGljcwogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJYUikKKwordm9p
ZCBBcmd1bWVudENvZGVyPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGbG9hdFF1YXRl
cm5pb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbiYgZmxvYXRRdWF0ZXJuaW9uKQoreworICAgIGVu
Y29kZXIgPDwgZmxvYXRRdWF0ZXJuaW9uLnggPDwgZmxvYXRRdWF0ZXJuaW9uLnkgPDwgZmxvYXRR
dWF0ZXJuaW9uLnogPDwgZmxvYXRRdWF0ZXJuaW9uLnc7Cit9CisKK09wdGlvbmFsPFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhOjpGbG9hdFF1YXRlcm5pb24+IEFyZ3VtZW50Q29kZXI8UGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGbG9h
dFF1YXRlcm5pb24gZmxvYXRRdWF0ZXJuaW9uOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmxv
YXRRdWF0ZXJuaW9uLngpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZmxvYXRRdWF0ZXJuaW9uLnkpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmxvYXRRdWF0ZXJuaW9uLnopKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmxvYXRR
dWF0ZXJuaW9uLncpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBm
bG9hdFF1YXRlcm5pb247Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6UG9zZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSYgcG9zZSkKK3sKKyAgICBlbmNvZGVyIDw8
IHBvc2UucG9zaXRpb24gPDwgcG9zZS5vcmllbnRhdGlvbjsKK30KKworT3B0aW9uYWw8UGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U+IEFyZ3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSBwb3NlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocG9zZS5wb3NpdGlvbikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NlLm9yaWVudGF0aW9uKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcG9zZTsKK30KKwordm9pZCBBcmd1bWVudENv
ZGVyPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3Y+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZvdiYgZm92KQor
eworICAgIGVuY29kZXIgPDwgZm92LnVwIDw8IGZvdi5kb3duIDw8IGZvdi5sZWZ0IDw8IGZvdi5y
aWdodDsKK30KKworT3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZvdj4g
QXJndW1lbnRDb2RlcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92Pjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OkZvdiBmb3Y7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmb3YudXApKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm92LmRvd24pKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm92Lmxl
ZnQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZm92LnJpZ2h0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
Zm92OworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OlByb2plY3Rpb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpGcmFtZURhdGE6OlByb2plY3Rpb24mIHByb2plY3Rpb24pCit7CisgICAgYm9v
bCBoYXNGb3YgPSBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpGb3Y+KHByb2plY3Rpb24pOworICAgIGVuY29kZXIgPDwgaGFzRm92OworICAgIGlm
IChoYXNGb3YpIHsKKyAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6Rm92Pihwcm9qZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGJvb2wgaGFzQXJyYXkgPSBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6YXJyYXk8
ZmxvYXQsIDE2Pj4ocHJvamVjdGlvbik7CisgICAgZW5jb2RlciA8PCBoYXNBcnJheTsKKyAgICBp
ZiAoaGFzQXJyYXkpIHsKKyAgICAgICAgZm9yIChmbG9hdCBmIDogV1RGOjpnZXQ8c3RkOjphcnJh
eTxmbG9hdCwgMTY+Pihwcm9qZWN0aW9uKSkKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PHN0ZDo6bnVsbHB0cl90Pihwcm9qZWN0aW9uKSk7Cit9CisKK09wdGlvbmFsPFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhOjpQcm9qZWN0aW9uPiBBcmd1bWVudENvZGVyPFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhOjpQcm9qZWN0aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgYm9vbCBoYXNGb3Y7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNGb3YpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKGhhc0ZvdikgeworICAgICAg
ICBPcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92PiBmb3Y7CisgICAg
ICAgIGRlY29kZXIgPj4gZm92OworICAgICAgICBpZiAoIWZvdikKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IFdURk1vdmUoKmZvdikgfTsKKyAgICB9
CisKKyAgICBib29sIGhhc0FycmF5OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQXJyYXkp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKGhhc0FycmF5KSB7Cisg
ICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIDE2PiBtYXRyaXg7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgICAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IGY7Cisg
ICAgICAgICAgICBkZWNvZGVyID4+IGY7CisgICAgICAgICAgICBpZiAoIWYpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1hdHJpeFtpXSA9ICpmOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB7IFdURk1vdmUobWF0cml4KSB9OworICAgIH0KKwor
ICAgIHJldHVybiB7IG51bGxwdHIgfTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhOjpWaWV3Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpWaWV3JiB2aWV3KQoreworICAgIGVu
Y29kZXIgPDwgdmlldy5vZmZzZXQ7CisgICAgZW5jb2RlciA8PCB2aWV3LnByb2plY3Rpb247Cit9
CisKK09wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpWaWV3PiBBcmd1bWVu
dENvZGVyPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpWaWV3Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlZpZXcg
dmlldzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZpZXcub2Zmc2V0KSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZpZXcucHJvamVjdGlv
bikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHZpZXc7Cit9CisK
K3ZvaWQgQXJndW1lbnRDb2RlcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6U3RhZ2VQ
YXJhbWV0ZXJzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnMmIHN0YWdlUGFyYW1ldGVycykKK3sKKyAg
ICBlbmNvZGVyIDw8IHN0YWdlUGFyYW1ldGVycy5pZDsKKyAgICBlbmNvZGVyIDw8IHN0YWdlUGFy
YW1ldGVycy5ib3VuZHM7Cit9CisKK09wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpTdGFnZVBhcmFtZXRlcnM+IEFyZ3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OlN0YWdlUGFyYW1ldGVycz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnMgc3RhZ2VQ
YXJhbWV0ZXJzOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhZ2VQYXJhbWV0ZXJzLmlkKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YWdlUGFyYW1ldGVycy5ib3VuZHMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGFnZVBhcmFtZXRlcnM7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGEmIGxheWVy
RGF0YSkKK3sKKyAgICBlbmNvZGVyIDw8IGxheWVyRGF0YS5vcGFxdWVUZXh0dXJlOworfQorCitP
cHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhPiBBcmd1bWVu
dENvZGVyPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
TGF5ZXJEYXRhIGxheWVyRGF0YTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVyRGF0YS5v
cGFxdWVUZXh0dXJlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
bGF5ZXJEYXRhOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGEmIGZyYW1lRGF0YSkKK3sKKyAgICBlbmNvZGVyIDw8IGZyYW1lRGF0YS5p
c1RyYWNraW5nVmFsaWQ7CisgICAgZW5jb2RlciA8PCBmcmFtZURhdGEuaXNQb3NpdGlvblZhbGlk
OworICAgIGVuY29kZXIgPDwgZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRlZDsKKyAgICBlbmNv
ZGVyIDw8IGZyYW1lRGF0YS5zaG91bGRSZW5kZXI7CisgICAgZW5jb2RlciA8PCBmcmFtZURhdGEu
cHJlZGljdGVkRGlzcGxheVRpbWU7CisgICAgZW5jb2RlciA8PCBmcmFtZURhdGEub3JpZ2luOwor
ICAgIGVuY29kZXIgPDwgZnJhbWVEYXRhLmZsb29yVHJhbnNmb3JtOworICAgIGVuY29kZXIgPDwg
ZnJhbWVEYXRhLnN0YWdlUGFyYW1ldGVyczsKKyAgICBlbmNvZGVyIDw8IGZyYW1lRGF0YS52aWV3
czsKKyAgICBlbmNvZGVyIDw8IGZyYW1lRGF0YS5sYXllcnM7Cit9CisKK09wdGlvbmFsPFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhPiBBcmd1bWVudENvZGVyPFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZnJhbWVEYXRhLmlzVHJhY2tpbmdWYWxpZCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEuaXNQb3NpdGlvblZhbGlkKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1l
RGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRhLnNob3VsZFJlbmRlcikpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEu
cHJlZGljdGVkRGlzcGxheVRpbWUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRhLm9yaWdpbikpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEuZmxvb3JUcmFu
c2Zvcm0pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZnJhbWVEYXRhLnN0YWdlUGFyYW1ldGVycykpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEudmlld3MpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRh
LmxheWVycykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGZyYW1l
RGF0YTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKKwogfSAvLyBuYW1lc3BhY2UgSVBD
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGJi
MzI0OTA3OTM0ZjMwZmE0Yjc3ZjMyYmM3M2JhMzJmNDk4NDI4ZjMuLjc4NDBiM2IwZDQzMTZlZjMw
N2M2Y2UxMmY0NDFlODViZjI5MzNlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC04NTEsNiArODUxLDUwIEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IHsK
IH07CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJYUikKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6RmxvYXRRdWF0ZXJuaW9u
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6RmxvYXRRdWF0ZXJuaW9uJik7CisgICAgc3RhdGljIE9wdGlvbmFs
PFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGbG9hdFF1YXRlcm5pb24+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSYpOworICAg
IHN0YXRpYyBPcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gZGVj
b2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZvdj4geworICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZvdiYpOwor
ICAgIHN0YXRpYyBPcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92PiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UHJvamVjdGlvbj4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OlByb2plY3Rpb24mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OlByb2plY3Rpb24+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpWaWV3
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6VmlldyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YTo6Vmlldz4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OlN0YWdlUGFyYW1ldGVycz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVycyYpOworICAg
IHN0YXRpYyBPcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6U3RhZ2VQYXJh
bWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhPiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YTo6TGF5ZXJEYXRhJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YSYpOworICAgIHN0YXRpYyBPcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YT4gZGVjb2RlKERlY29kZXImKTsKK307CisKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
ZjZlMTZmMmJjODRjMGQ1MGE2NjU1YTczMzZmYzlmMjZiNGQ2NGE0NC4uMGMzMjViNjAzMDBjNTU5
YWJiNTgwYTc1YjA0YTQxOTRmMDQ5OTY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMTgx
LDYgKzE4MSw3IEBAIFNoYXJlZC9Db2NvYS9XS05TVVJMUmVxdWVzdC5tbQogU2hhcmVkL0NvY29h
L1dLT2JqZWN0Lm1tCiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29j
b2EubW0KIFNoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KK1NoYXJlZC9Db2NvYS9YUkRldmlj
ZVByb3h5Lm1tCiAKIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZUVudHJ5UG9pbnQubW0KIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29h
L1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTM5NSw2ICszOTYsNyBAQCBVSVByb2Nl
c3MvQ29jb2EvTWVkaWFVdGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Np
b25VdGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCitVSVByb2Nlc3MvQ29jb2EvUGxhdGZv
cm1YUlN5c3RlbS5tbQogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbQogVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCiBVSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC01ODYsNiArNTg4LDcgQEAgV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCiAKIFdlYlByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yQ29jb2EubW0KIAorV2ViUHJvY2Vz
cy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0KIFdlYlByb2Nlc3MvY29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5tbQogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5j
cHAKQEAgLTcwMSw2ICs3MDQsOCBAQCBHUFVQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogTGli
V2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBNZXNzYWdlTmFtZXMuY3BwCitQbGF0Zm9ybVhSU3lzdGVtTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAog
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVB
dWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb1Nlc3Np
b25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0OTBmMTlhYjI1Y2Y0
YmVkY2E0Y2UyNjg2MjIyZTFkMDFlNmUwMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaApAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNp
bmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJYUkRldmljZUluZm8uaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7CisK
KyAgICB1c2luZyBEZXZpY2VJbmZvQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPFhS
RGV2aWNlSW5mbz4pPjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJpbWFyeURldmljZUluZm8oRGV2
aWNlSW5mb0NhbGxiYWNrJiYpID0gMDsKKworICAgIC8vIFNlc3Npb24gY3JlYXRpb24vdGVybWlu
YXRpb24KKyAgICB1c2luZyBPblNlc3Npb25FbmRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9p
ZChYUkRldmljZUlkZW50aWZpZXIpPjsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTZXNzaW9uKFdl
YlBhZ2VQcm94eSYsIE9uU2Vzc2lvbkVuZENhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5kU2Vzc2lvbklmRXhpc3RzKFdlYlBhZ2VQcm94eSYpID0gMDsKKworICAgIC8vIFNlc3Np
b24gZGlzcGxheSBsb29wCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uRnJhbWUo
V2ViUGFnZVByb3h5JiwgUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYm
KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3Jt
WFJTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0
ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNzZiMzAzZTQwOTdmZThlYTMyNjE0Zjg2NWQ2MzFkMjFkYzg4ZTlm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZv
cm1YUlN5c3RlbS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yOworY2xhc3MgV2ViUGFnZVByb3h5OworCitzdHJ1Y3Qg
WFJEZXZpY2VJbmZvOworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVtIDogcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBQbGF0Zm9ybVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYpOworICAgIHZpcnR1YWwgflBsYXRmb3Jt
WFJTeXN0ZW0oKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCitwcml2YXRlOgorICAgIHN0
YXRpYyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIHhyQ29vcmRpbmF0b3IoKTsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKworICAgIC8vIE1lc3NhZ2UgaGFuZGxl
cnMKKyAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGluaXRpYWxpemVU
cmFja2luZ0FuZFJlbmRlcmluZygpOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYpOworCisgICAgV2ViUGFnZVByb3h5JiBt
X3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3Jt
WFJTeXN0ZW0ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0
Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiYWY4MWIyOTkxNzJkYzVhNzg3
YjkyM2JmNDc2MGQ0NDQ5MzE3YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworIAorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCWFIpCisK
K21lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW0gTm90UmVmQ291bnRlZCB7CisgICAgRW51bWVy
YXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgLT4gKFZlY3RvcjxXZWJLaXQ6OlhSRGV2aWNlSW5mbz4g
ZGV2aWNlc0luZm9zKSBBc3luYworICAgIEluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygp
CisgICAgU2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCisgICAgUmVxdWVzdEZyYW1lKCkg
LT4gKHN0cnVjdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGEpIEFzeW5j
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UGxhdGZvcm1YUlN5c3RlbS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRm
b3JtWFJTeXN0ZW0ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJmNjNlODc2YTU3ZjU0N2FhNjYwY2E3ODAxMTMw
ZmRjYTRkNjA0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BsYXRmb3JtWFJTeXN0ZW0ubW0KQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW0uaCIKKworI2lmIEVO
QUJMRShXRUJYUikKKworI2ltcG9ydCAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCisjaW1wb3J0
ICJQbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZXMuaCIKKyNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Q
cm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldlYlBy
b2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxhdGZvcm1YUlN5c3RlbTo6
UGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkK
K3sKKyAgICBtX3BhZ2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxh
dGZvcm1YUlN5c3RlbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCks
ICp0aGlzKTsKK30KKworUGxhdGZvcm1YUlN5c3RlbTo6flBsYXRmb3JtWFJTeXN0ZW0oKQorewor
ICAgIG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0
Zm9ybVhSU3lzdGVtOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKHhy
Q29vcmRpbmF0b3IoKSkKKyAgICAgICAgeHJDb29yZGluYXRvcigpLT5lbmRTZXNzaW9uSWZFeGlz
dHMobV9wYWdlKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNp
dmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIHhy
Q29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCk7CisgICAgaWYg
KCF4ckNvb3JkaW5hdG9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB4ckNvb3JkaW5hdG9yLT5nZXRQcmltYXJ5RGV2aWNl
SW5mbyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0
aW9uYWw8WFJEZXZpY2VJbmZvPiBkZXZpY2VJbmZvKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBkZXZpY2VJbmZvID0gV1RGTW92ZShkZXZpY2VJbmZvKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGlmICghZGV2aWNlSW5mbykgeworICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGRldmljZUluZm8udmFsdWUoKSB9KTsK
KyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6aW5pdGlh
bGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBQbGF0Zm9ybVhSQ29vcmRpbmF0b3Iq
IHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCk7CisgICAg
aWYgKCF4ckNvb3JkaW5hdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICB4ckNvb3JkaW5hdG9y
LT5zdGFydFNlc3Npb24obV9wYWdlLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFhS
RGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKSB7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIGRldmljZUlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlNlc3Npb25EaWRFbmQoZGV2
aWNlSWRlbnRpZmllcikpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBQbGF0Zm9y
bVhSU3lzdGVtOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBpZiAoUGxh
dGZvcm1YUkNvb3JkaW5hdG9yKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJD
b29yZGluYXRvcigpKQorICAgICAgICB4ckNvb3JkaW5hdG9yLT5lbmRTZXNzaW9uSWZFeGlzdHMo
bV9wYWdlKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpyZXF1ZXN0RnJhbWUoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiB4ckNvb3Jk
aW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQorICAgICAgICB4ckNv
b3JkaW5hdG9yLT5zY2hlZHVsZUFuaW1hdGlvbkZyYW1lKG1fcGFnZSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCitQbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIFBsYXRmb3JtWFJTeXN0
ZW06OnhyQ29vcmRpbmF0b3IoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcworICAg
IHJldHVybiBudWxscHRyOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5OTA5MDBkNmExMzEyZGUx
MmRiNzIxOWQxYWQ1OGFkM2ZmN2VkMzIyLi44MTc3MWYxZGJmZGNjNDRlMzUzZGQ2MWQyZGRkNmFm
N2NmMjExZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTEwMjIsNiArMTAyMiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5n
UHJvY2VzcygpCiAgICAgQVNTRVJUKCFtX3dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXJQcm94eSk7CiAgICAgbV93ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkg
PSBtYWtlVW5pcXVlPFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eT4oKnRo
aXMpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorICAg
IEFTU0VSVCghbV94clN5c3RlbSk7CisgICAgbV94clN5c3RlbSA9IG1ha2VVbmlxdWU8UGxhdGZv
cm1YUlN5c3RlbT4oKnRoaXMpOworI2VuZGlmCiB9CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCkBAIC03NTg1LDYgKzc1OTAs
MTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNl
dFN0YXRlUmVhc29uKQogI2VuZGlmCiAKICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIgPSBudWxscHRyOworCisjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NP
QSkKKyAgICBpZiAobV94clN5c3RlbSkgeworICAgICAgICBtX3hyU3lzdGVtLT5pbnZhbGlkYXRl
KCk7CisgICAgICAgIG1feHJTeXN0ZW0gPSBudWxscHRyOworICAgIH0KKyNlbmRpZgogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24gdGVybWluYXRpb25SZWFzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDU5MjhkMDVmYmJkOTdmNDM2NGM0Yjc3NTgyNjA0NThlMzc5ZTJj
ZDguLjQyNDA1Y2NmMzkxODg4MWUzYTFhYjFlMWQ5YjFjYjdkYTBjM2U5ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODMsNiArMTgzLDEwIEBAIGludGVyZmFj
ZSBJRDNEMTFEZXZpY2UxOwogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uSWRlbnRpZmll
ci5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW0uaCIKKyNlbmRpZgorCiAjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQYWdlUHJveHlBZGRpdGlvbnNC
ZWZvcmUuaD4KICNlbmRpZgpAQCAtMjk4NSw2ICsyOTg5LDEwIEBAIHByaXZhdGU6CiAKICAgICBP
cHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDsKIAorI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisgICAg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW0+IG1feHJTeXN0ZW07CisjZW5kaWYKKwog
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2Vi
UGFnZVByb3h5QWRkaXRpb25zQWZ0ZXIuaD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWZlOWEyOWRhODZhZjVkNGJhOTJj
YTQ2Njk2YzgxNWI1YTA2MDM0Ny4uMzU4ZDc2NTEyYzdkZWY0ZTVhMDk3OGE5MDY0OWRhNGIxZjhi
NmUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDk4LDYgKzEwOTgsMTAgQEAKIAkJNTFGRDE4QjYxNjUxRkJBRDAwREJFMUNFIC8q
IE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGRDE4QjQxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oICovOyB9OwogCQk1MjUwODBCMTI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmggKi87IH07
CiAJCTUyNTA4MEIyMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNTA4MEFGMjYxQkRFNkMwMDY3
OEFFRSAvKiBYUkRldmljZUluZm8uaCAqLzsgfTsKKwkJNTI2M0UyNTcyNjFFNzNERjAwMThENDdE
IC8qIFhSRGV2aWNlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyNjNFMjU1MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggKi87
IH07CisJCTUyNjNFMjVBMjYxRTkzQTcwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjNFMjRE
MjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLzsgfTsKKwkJNTI2
M0UyNUIyNjFFOTNBQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjNFMjRGMjYxRTcyRUIwMDE4RDQ3
RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi87IH07CisJCTUyNjNFMjVGMjYxRTk2RUYwMDE4RDQ3
RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjNFMjVEMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhS
U3lzdGVtUHJveHkuaCAqLzsgfTsKIAkJNTI3MkQ0QzkxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJv
dGVjdGlvblNwYWNlTlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyNzJENEM3MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI4QzM3
QzExOTVDQkIxQTAwRDhCOUNDIC8qIFdLQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RjI4MTAxOTU4RjQ3ODAw
OENBQzcyIC8qIFdLQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyRDVBMUIwMUM1NzQ5NUEwMERFMzRBMyAv
KiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMUFBMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCAqLzsgfTsKQEAgLTQxNTcsNiArNDE2MSwxNSBAQAogCQk1
MjUwODBBRDI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gWFJEZXZpY2VJbmZvLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjUwODBBRjI2MUJERTZDMDA2
NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFhSRGV2aWNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjYzRTI0RDI2
MUU2RkI5MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsYXRmb3JtWFJDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MjYzRTI0RTI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUyNjNFMjRGMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTI2M0UyNTAyNjFFNzJFQzAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTI2M0UyNTQyNjFFNzNERTAwMThENDdEIC8qIFhSRGV2aWNlUHJveHku
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUkRldmljZVByb3h5
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjYzRTI1NTI2MUU3M0RGMDAxOEQ0
N0QgLyogWFJEZXZpY2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
UkRldmljZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNjNFMjVDMjYx
RTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUyNjNFMjVEMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUyNjNFMjVFMjYxRTk2RTAwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lz
dGVtUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyRDRDNzFFNzM1RjA5MDBFQjQy
OTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS1Byb3RlY3Rpb25TcGFjZU5TLmg7IHBhdGggPSBtYWMvV0tQcm90ZWN0aW9uU3BhY2VO
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyRDRDODFFNzM1RjA5MDBFQjQy
OTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdLUHJvdGVjdGlvblNwYWNlTlMubW07IHBhdGggPSBtYWMvV0tQcm90ZWN0
aW9uU3BhY2VOUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJENUExQUExQzU3
NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5ODQsNiArNjk5NywxMCBAQAogCQkJCTFBQkMz
REYzMTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUubW0gKi8sCiAJCQkJNUM2Q0U2
RDMxRjU5RUEzNTAwMDdDNkNCIC8qIFBhZ2VDbGllbnRJbXBsQ29jb2EuaCAqLywKIAkJCQk1QzZD
RTZEMDFGNTlCQzQ2MDAwN0M2Q0IgLyogUGFnZUNsaWVudEltcGxDb2NvYS5tbSAqLywKKwkJCQk1
MjYzRTI0RDI2MUU2RkI5MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi8sCisJ
CQkJNTI2M0UyNEYyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLywKKwkJ
CQk1MjYzRTI1MDI2MUU3MkVDMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5p
biAqLywKKwkJCQk1MjYzRTI0RTI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5t
bSAqLywKIAkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5LmggKi8sCiAJCQkJQ0RBMjlBMjIxQ0JFQjYxQTAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlDREEyOUExRjFDQkVCNUZC
MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tICovLApAQCAtODI0OCw2
ICs4MjY1LDggQEAKIAkJCQk1MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVu
dGlmaWVyLmggKi8sCiAJCQkJNTI1MDgwQUYyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5m
by5oICovLAogCQkJCTUyNTA4MEFEMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUluZm8ubW0g
Ki8sCisJCQkJNTI2M0UyNTUyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCAqLywK
KwkJCQk1MjYzRTI1NDI2MUU3M0RFMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5tbSAqLywKIAkJ
CSk7CiAJCQluYW1lID0gY29jb2E7CiAJCQlwYXRoID0gQ29jb2E7CkBAIC05MjM3LDYgKzkyNTYs
OSBAQAogCQkJCUMxQTE1MkQ2MjRFNUEyOUEwMDk3OEM4QiAvKiBIYW5kbGVYUENFbmRwb2ludE1l
c3NhZ2VzLm1tICovLAogCQkJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlci5oICovLAogCQkJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAv
KiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLywKKwkJCQk1MjYzRTI1RDI2MUU5
NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi8sCisJCQkJNTI2M0UyNUUy
NjFFOTZFMDAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLywK
KwkJCQk1MjYzRTI1QzI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1t
ICovLAogCQkJCTQ0NkRDNjRCMjRBMkQ4QUQwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllci5oICovLAogCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJQ0RBMjlBMUMxQ0JEQkY1QjAwOTAxQ0NGIC8q
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBAIC0xMjA3OCw2ICsxMjEw
MCw5IEBACiAJCQkJMkQ4NzEwMTcxODI4NDE1RDAwMThGQTAxIC8qIFBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4OTQ5RjExODIwNDRGNjAwRTg5OEFB
IC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNDNDNBQkIxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTI2M0UyNUEyNjFFOTNBNzAwMThENDdEIC8qIFBsYXRmb3JtWFJD
b29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTI2M0UyNUIyNjFFOTNBQjAwMThENDdE
IC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTUyNjNFMjVGMjYxRTk2
RUYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ0NkRDNjRDMjRBMkQ4RTUwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMUIxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTI5QTI5MUNCRUI2
N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTI5NjYsNiArMTI5OTEsNyBAQAogCQkJCUJDQkVDREU4MTZCNjQxNjgwMDA0N0Ex
QSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI1MDgwQjEy
NjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTI1MDgwQjIyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTI2M0UyNTcyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAyZTYwODQ2NDUxZDYxYTEzNDA0
Y2VkMTA2MTI2YmQ0MGIzNGZiZjIxLi5iYTYwZWJjZDgwNWIwY2RkMTdmNGU3NGYzZDk1NWQ1NmRj
MzdkNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTQ3Myw0ICsxNDczLDExIEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpzaG93TWVkaWFDb250cm9sc0NvbnRleHRNZW51KEZsb2F0UmVj
dCYmIHRhcmdldEZyYW1lLCBWZWN0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfQ09OVFJPTFNf
Q09OVEVYVF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCiAKKyNpZiBFTkFCTEUoV0VCWFIp
ICYmIFBMQVRGT1JNKENPQ09BKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVudW1lcmF0ZUltbWVy
c2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFBsYXRmb3JtWFI6Oklu
c3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9wYWdl
LnhyU3lzdGVtUHJveHkoKS5lbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCmluZGV4IGFlMWVkNjYyNzE0ZGZlYmVjMzIwZDE0NWU3MTMyYzEyNjMxNDJk
ZGQuLmI0Y2M2Yjk0MTNkMmZmNDIyYzVjMjU0NmNmYzZmZWI1N2Q3NjgzOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKQEAgLTQzNSw2ICs0MzUsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dNZWRp
YUNvbnRyb2xzQ29udGV4dE1lbnUoV2ViQ29yZTo6RmxvYXRSZWN0JiYsIFZlY3RvcjxXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW06OklEKT4mJikgZmluYWw7CiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX0NPTlRST0xTX0NPTlRFWFRfTUVOVVMpICYmIFVTRShVSUNP
TlRFWFRNRU5VKQogCisjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICB2
b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpIGZpbmFsOworI2VuZGlm
CisKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xs
YmFyIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNWZXJ0
aWNhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCA1ODYxN2NhZDNhZDBj
OTY1ODBkZDZjMzhiN2UzOTQ3Mzg3MWY2Y2IwLi4zZDIxZTNkZDBjODZkMTlhZDY2YTQzOGU5MTgx
OGE5ZmMyNjJjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC00MzksNiArNDM5LDE1IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0UERGRmlyc3RQYWdlU2l6ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgQ29tcGxldGlvbkhhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoRmxvYXRTaXplKHBsdWdpbi0+
cGRmRG9jdW1lbnRTaXplRm9yUHJpbnRpbmcoKSkpOwogfQogCisjaWYgRU5BQkxFKFdFQlhSKQor
UGxhdGZvcm1YUlN5c3RlbVByb3h5JiBXZWJQYWdlOjp4clN5c3RlbVByb3h5KCkKK3sKKyAgICBp
ZiAoIW1feHJTeXN0ZW1Qcm94eSkKKyAgICAgICAgbV94clN5c3RlbVByb3h5ID0gc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW1Qcm94eT4obmV3IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSgq
dGhpcykpOworICAgIHJldHVybiAqbV94clN5c3RlbVByb3h5OworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMGRkM2YyY2Q5Y2QwZDA0NTcw
NTk4OWZiMjdlYzE5Yzg3NWJiZWQyMy4uYmRjMzY3N2UzYThhZDcyMmI3M2JlOTNkNzZhMjBiMTI5
NDkwMWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTQ0LDYgKzE0NCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBfQXRrT2JqZWN0IEF0a09iamVjdDsK
ICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbklkZW50aWZpZXIuaD4KICNlbmRpZgogCisj
aWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJQbGF0Zm9ybVhS
U3lzdGVtUHJveHkuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAi
RHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVNl
bGVjdGlvbi5oPgpAQCAtMTQyNyw3ICsxNDMxLDExIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVEVY
VF9BVVRPU0laSU5HKQogICAgIHZvaWQgdGV4dEF1dG9zaXppbmdVc2VzSWRlbXBvdGVudE1vZGVD
aGFuZ2VkKCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCisgICAgUGxhdGZvcm1YUlN5c3RlbVByb3h5JiB4clN5c3RlbVByb3h5KCk7CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBAIC0yMzA4LDYgKzIzMTYsMTAgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBXZWFrSGFzaFNldDxXZWJDb3Jl
OjpFbGVtZW50PiBtX2VsZW1lbnRzV2l0aEV4dHJhY3RlZEltYWdlczsKICNlbmRpZgorCisjaWYg
RU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1YUlN5c3RlbVByb3h5PiBtX3hyU3lzdGVtUHJveHk7CisjZW5kaWYKIH07CiAKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjgzYWNlZmFiOWMx
NDYwMzZhNDNiOTc0YTg4MWJhODkyYTc0MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKwor
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlhSRGV2aWNlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtWFIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNz
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Citw
dWJsaWM6CisgICAgUGxhdGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFs
IH5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKTsKKworICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZl
WFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFu
Y2U6OkRldmljZUxpc3QmKT4mJik7CisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKTsKKyAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2
b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNr
JiYpOworCitwcml2YXRlOgorICAgIFJlZlB0cjxYUkRldmljZVByb3h5PiBkZXZpY2VCeUlkZW50
aWZpZXIoWFJEZXZpY2VJZGVudGlmaWVyKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBvdmVycmlkZTsKKworICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKKyAgICB2b2lkIHNlc3Np
b25EaWRFbmQoWFJEZXZpY2VJZGVudGlmaWVyKTsKKworICAgIFBsYXRmb3JtWFI6Okluc3RhbmNl
OjpEZXZpY2VMaXN0IG1fZGV2aWNlczsKKyAgICBXZWJQYWdlJiBtX3BhZ2U7Cit9OworCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43OTQwNTc5MWI2MTU0MzhhOWJmN2RiNGI0YjAwNjY4NzA4MjkzZDYzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJT
eXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCWFIpCisKK21lc3NhZ2VzIC0+IFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXNzaW9uRGlkRW5kKFdlYktpdDo6
WFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJv
eHkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmIzNmIzNTM4MTVkNjViM2ZjZjc2ZDBlMDIwMGEyYjRiNzc3MWI3
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0
Zm9ybVhSU3lzdGVtUHJveHkubW0KQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgorCisjaWYg
RU5BQkxFKFdFQlhSKQorCisjaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZXMuaCIKKyNp
bXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJQYWdl
LmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCisjaW1wb3J0ICJYUkRldmljZUluZm8uaCIKKyNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlBsYXRmb3JtWFJTeXN0
ZW1Qcm94eShXZWJQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhS
U3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSwg
KnRoaXMpOworfQorCitQbGF0Zm9ybVhSU3lzdGVtUHJveHk6On5QbGF0Zm9ybVhSU3lzdGVtUHJv
eHkoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZS5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6
ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3Bh
Z2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpFbnVtZXJh
dGVJbW1lcnNpdmVYUkRldmljZXMoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFZlY3Rv
cjxYUkRldmljZUluZm8+JiYgZGV2aWNlc0luZm9zKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBQbGF0Zm9ybVhSOjpJbnN0
YW5jZTo6RGV2aWNlTGlzdCBkZXZpY2VzOworICAgICAgICBmb3IgKGF1dG8mIGRldmljZUluZm8g
OiBkZXZpY2VzSW5mb3MpIHsKKyAgICAgICAgICAgIFJlZlB0cjxYUkRldmljZVByb3h5PiBkZXZp
Y2UgPSBkZXZpY2VCeUlkZW50aWZpZXIoZGV2aWNlSW5mby5pZGVudGlmaWVyKTsKKyAgICAgICAg
ICAgIGlmIChkZXZpY2UpCisgICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoKmRldmljZSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoWFJEZXZp
Y2VQcm94eTo6Y3JlYXRlKFdURk1vdmUoZGV2aWNlSW5mbyksICp0aGlzKSk7CisgICAgICAgIH0K
KyAgICAgICAgbV9kZXZpY2VzLnN3YXAoZGV2aWNlcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1fZGV2aWNlcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5
Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQoreworICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
KSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5k
UmVuZGVyaW5nKCkKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3Rl
bTo6U2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpKTsKK30KKwordm9pZCBQbGF0Zm9ybVhS
U3lzdGVtUHJveHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFt
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6UmVxdWVzdEZyYW1lKCksIFdURk1vdmUoY2FsbGJh
Y2spKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNlc3Npb25EaWRFbmQoWFJE
ZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpCit7CisgICAgUmVmUHRyPFhSRGV2aWNl
UHJveHk+IGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJZGVudGlmaWVyKTsKKyAg
ICBpZiAoZGV2aWNlKQorICAgICAgICBkZXZpY2UtPnNlc3Npb25EaWRFbmQoKTsKK30KKworUmVm
UHRyPFhSRGV2aWNlUHJveHk+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZGV2aWNlQnlJZGVudGlm
aWVyKFhSRGV2aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGZvciAoYXV0byYgZGV2
aWNlIDogbV9kZXZpY2VzKSB7CisgICAgICAgIFhSRGV2aWNlUHJveHkqIGRldmljZVByb3h5ID0g
c3RhdGljX2Nhc3Q8WFJEZXZpY2VQcm94eSo+KGRldmljZS5wdHIoKSk7CisgICAgICAgIGlmIChk
ZXZpY2VQcm94eS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1
cm4gZGV2aWNlUHJveHk7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQo=
</data>
<flag name="review"
          id="445560"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425688</attachid>
            <date>2021-04-10 11:23:53 -0700</date>
            <delta_ts>2021-04-12 10:47:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224353-20210410112352.patch</filename>
            <type>text/plain</type>
            <size>69824</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZiYzFhNjA2MzQxZTk3
YjJlMDYwMTRiODljMDg3MzVkZTM3OGRhNC4uY2JmYmE5NzViYTc3MWNhMmUwNmJlY2M3MjVlZDJm
YjdhYjQ4YTM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTA0LTEwICBBZGEg
Q2hhbiAgPGFkYS5jaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGltcGxlbWVudGF0
aW9uIG9mIFdlYkNocm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgYW5k
IFhSRGV2aWNlUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNDM1MworCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAg
ICAgICBSZW1vdmUgUGxhdGZvcm1YUkRldmljZUNvY29hIGFzIFdlYktpdDo6WFJEZXZpY2VQcm94
eSB3aWxsIGJlIGltcGxlbWVudGluZyBQbGF0Zm9ybVhSOjpEZXZpY2UuCisgICAgICAgIEltcGxl
bWVudCB0aGUgZW5jb2RlL2RlY29kZSBtZXRob2RzIHRvIGVuYWJsZSBQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YSB0bworICAgICAgICBiZSBzZW50IG92ZXIgSVBDLgorCisgICAgICAgICog
cGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjp0
cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCBjb25zdCk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6RmxvYXRRdWF0ZXJuaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbjo6ZGVjb2Rl
KToKKyAgICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U6OmRl
Y29kZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZvdjo6
ZGVjb2RlKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpWaWV3Ojpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlZp
ZXc6OmRlY29kZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6U3Rh
Z2VQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhOjpkZWNvZGUpOgorICAg
ICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS94ci9jb2NvYS9QbGF0Zm9ybVhSQ29jb2EuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisKIDIwMjEtMDQtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoKSBzaG91bGQganVzdCB0cmlnZ2Vy
IGEgcmVuZGVyaW5nIHVkcGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3ZDc4NmFkOTI4NmM1ZGRmMzE3OTI3NmUz
NGYxMGI2ZDI3ZmQyNGU4Li42MzZkODdjYmRjYTgxZTMxNjQ2MDUxYzNmMDYwY2JmYWM1ZTNlMTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIxLTA0LTEwICBBZGEgQ2hhbiAgPGFkYS5j
aGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIFdlYkNo
cm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgYW5kIFhSRGV2aWNlUHJv
eHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDM1
MworCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3NvbgorCisgICAgICAgIC0gQWRkIFhS
RGV2aWNlUHJveHkgd2hpY2ggaW1wbGVtZW50cyBQbGF0Zm9ybVhSOjpEZXZpY2UuCisgICAgICAg
IC0gSW1wbGVtZW50IFdlYkNocm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2Vz
KCksIHdoaWNoIGNhbGxzIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eQorICAgICAgICB0byBnZXQgdGhl
IGxpc3Qgb2YgWFJEZXZpY2VQcm94eS4KKyAgICAgICAgLSBYUkRldmljZVByb3h5IGdvZXMgdGhy
b3VnaCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgdG8gaGFuZGxlIGl0cyBvcGVyYXRpb25zLgorICAg
ICAgICBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgc2VuZHMgbWVzc2FnZXMgb3ZlciBJUEMgdG8gUGxh
dGZvcm1YUlN5c3RlbSBvbiB0aGUgVUkgcHJvY2VzcyBzaWRlLAorICAgICAgICB3aGljaCBoYW5k
bGVzIFhSIGRldmljZSBkaXNjb3ZlcnkgYW5kIG1hbmFnZXMgc2Vzc2lvbnMgdmlhIHRoZSBQbGF0
Zm9ybVhSQ29vcmRpbmF0b3IgaW50ZXJmYWNlLgorICAgICAgICBQbGF0Zm9ybVhSU3lzdGVtOjp4
ckNvb3JkaW5hdG9yKCkgcmV0dXJucyBudWxsIGZvciBub3cgYW5kIHdpbGwgYmUgaGFuZGxlZCBp
biBhIGxhdGVyIHBhdGNoLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKHR5cGVzX3Ro
YXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVhZGVyc19mb3JfdHlw
ZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaDogQWRkZWQuCisgICAg
ICAgICogU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW06IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpYUkRldmljZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpYUkRldmljZVBy
b3h5OjpYUkRldmljZVByb3h5KToKKyAgICAgICAgSW5pdGlhbGl6ZSBpdHMgZGF0YSBtZW1iZXJz
IGJhc2VkIG9uIHRoZSBYUkRldmljZUluZm8gcGFzc2VkIGluLgorICAgICAgICBLZWVwIGEgd2Vh
ayBwb2ludGVyIHRvIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSAoYXMgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5IGhhcworICAgICAgICBzdHJvbmcgcmVmZXJlbmNlcyB0byBpdHMgbGlzdCBvZiBYUkRldmlj
ZVByb3h5KS4KKyAgICAgICAgKFdlYktpdDo6WFJEZXZpY2VQcm94eTo6c2Vzc2lvbkRpZEVuZCk6
CisgICAgICAgIE5vdGlmeSB0aGUgVHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQgdGhhdCB0aGUg
c2Vzc2lvbiBoYXMgZW5kZWQuCisgICAgICAgIChXZWJLaXQ6OlhSRGV2aWNlUHJveHk6OmluaXRp
YWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6OlhSRGV2aWNlUHJv
eHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpYUkRl
dmljZVByb3h5Ojp2aWV3cyBjb25zdCk6CisgICAgICAgIFJldHVybiBsZWZ0IGFuZCByaWdodCB2
aWV3cyBpZiB0aGUgZGV2aWNlIHN1cHBvcnRzIHN0ZXJlbyByZW5kZXJpbmcuCisgICAgICAgIE90
aGVyd2lzZSByZXR1cm4ganVzdCBvbmUgdmlldy4KKyAgICAgICAgKFdlYktpdDo6WFJEZXZpY2VQ
cm94eTo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL2NvY29hL1BsYXRmb3JtWFJDb2NvYS5oLgorICAgICAgICBJbml0aWFsIGlu
dGVyZmFjZSBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBwbGF0Zm9ybSByZWdhcmRpbmcgWFIg
ZGV2aWNlcyBhbmQgc2Vzc2lvbnMuCisgICAgICAgIEZvciBub3csIHRoZSBpbnRlcmZhY2UgY292
ZXJzIHNlc3Npb24gY3JlYXRpb24gYW5kIHRlcm1pbmF0aW9uLCBhbmQgc2NoZWR1bGluZyBmcmFt
ZSB1cGRhdGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL2NvY29hL1BsYXRmb3JtWFJD
b2NvYS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3Nh
Z2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9jb2NvYS9QbGF0
Zm9ybVhSQ29jb2EuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3Rl
bS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW06OlBsYXRmb3Jt
WFJTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtOjp+UGxhdGZvcm1Y
UlN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW06OmludmFsaWRhdGUp
OgorICAgICAgICBFbmQgYW55IGV4aXN0aW5nIHNlc3Npb24gb24gaW52YWxpZGF0aW9uLgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmlj
ZXMpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtOjppbml0aWFsaXplVHJhY2tp
bmdBbmRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtOjpzaHV0
RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1YUlN5
c3RlbTo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1YUlN5c3RlbTo6
eHJDb29yZGluYXRvcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6
CisgICAgICAgIFNldCB1cCB0aGUgUGxhdGZvcm1YUlN5c3RlbSBoZWxkIGJ5IHRoZSBXZWJQYWdl
UHJveHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAg
ICAgIEludmFsaWRhdGUgbV94clN5c3RlbSBzbyBleGlzdGluZyBzZXNzaW9uIGlzIGVuZGVkIHBy
b3Blcmx5LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKToKKyAgICAgICAgR2V0IHRo
ZSBsaXN0IG9mIFhSRGV2aWNlSW5mbyB0aGF0IHJlcHJlc2VudHMgdGhlIGltbWVyc2l2ZSBkZXZp
Y2VzIHJldHVybmVkCisgICAgICAgIGZyb20gUGxhdGZvcm1YUlN5c3RlbS4gUmV1c2UgYW55IGV4
aXN0aW5nIFhSRGV2aWNlUHJveHkgaW5zdGFuY2VzIHRoYXQgaGF2ZSB0aGUgc2FtZQorICAgICAg
ICBYUkRldmljZUlkZW50aWZpZXIuIE90aGVyd2lzZSwgY3JlYXRlIG5ldyBvbmVzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6eHJTeXN0ZW1Qcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9jb2NvYS9Q
bGF0Zm9ybVhSQ29jb2EuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJT
eXN0ZW1Qcm94eS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvY29jb2EvUGxhdGZvcm1YUkNvY29hLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9jb2Nv
YS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQbGF0
Zm9ybVhSU3lzdGVtUHJveHk6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6flBsYXRmb3JtWFJTeXN0ZW1Qcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJE
ZXZpY2VzKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1YUlN5c3RlbVByb3h5Ojppbml0aWFs
aXplVHJhY2tpbmdBbmRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lz
dGVtUHJveHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0
OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2Vzc2lvbkRpZEVuZCk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZGV2aWNlQnlJZGVudGlmaWVyKToKKwogMjAyMS0wNC0w
OSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
IFdLMl0gQ0FEaXNwbGF5TGluayBpbiB0aGUgd2ViIHByb2Nlc3MgaXMgdXNlZCB1bmludGVudGlv
bmFsbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCAxZmVjODRk
YzU5MWIwOTNkMWQ4YjgzMDIyMTM3NzU5ZTM3YWM1ODliLi4wNDk5Yzc2ZTA2ZWE2ODA2OWE4MThh
ZTMxNTNhNDc1Y2Y4ZjlkNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1Y
Ui5oCkBAIC05NSw2ICs5NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpID0gMDsKKyAgICBUcmFja2luZ0FuZFJl
bmRlcmluZ0NsaWVudCogdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSBjb25zdCB7IHJldHVy
biBtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50LmdldCgpOyB9CiAgICAgdm9pZCBzZXRUcmFj
a2luZ0FuZFJlbmRlcmluZ0NsaWVudChXZWFrUHRyPFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50
PiYmIGNsaWVudCkgeyBtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50ID0gV1RGTW92ZShjbGll
bnQpOyB9CiAKICAgICAvLyBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUsIHRoYXQgbWVhbnMg
dGhlIGRldmljZSB3aWxsIG5vdGlmeSBUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudApAQCAtMTEw
LDExICsxMTEsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgZmxvYXQgeSB7IDAuMGYgfTsKICAg
ICAgICAgICAgIGZsb2F0IHogeyAwLjBmIH07CiAgICAgICAgICAgICBmbG9hdCB3IHsgMS4wZiB9
OworCisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8RmxvYXRRdWF0ZXJuaW9uPiBkZWNvZGUoRGVjb2RlciYpOwogICAgICAgICB9Owog
CiAgICAgICAgIHN0cnVjdCBQb3NlIHsKICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQz
RCBwb3NpdGlvbjsKICAgICAgICAgICAgIEZsb2F0UXVhdGVybmlvbiBvcmllbnRhdGlvbjsKKwor
ICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPFBvc2U+IGRlY29kZShEZWNvZGVyJik7CiAgICAgICAgIH07CiAKICAgICAgICAgc3RydWN0
IEZvdiB7CkBAIC0xMjMsMjIgKzEzMCwzNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmbG9hdCBk
b3duIHsgMC4wZiB9OwogICAgICAgICAgICAgZmxvYXQgbGVmdCB7IDAuMGYgfTsKICAgICAgICAg
ICAgIGZsb2F0IHJpZ2h0IHsgMC4wZiB9OworCisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Rm92PiBkZWNvZGUoRGVjb2RlciYpOwog
ICAgICAgICB9OwogCi0gICAgICAgIHVzaW5nIFByb2plY3Rpb24gPSBWYXJpYW50PEZvdiwgc3Rk
OjphcnJheTxmbG9hdCwgMTY+LCBzdGQ6Om51bGxwdHJfdD47CisgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IHByb2plY3Rpb25NYXRyaXhTaXplID0gMTY7CisgICAgICAgIHR5cGVkZWYg
c3RkOjphcnJheTxmbG9hdCwgcHJvamVjdGlvbk1hdHJpeFNpemU+IFByb2plY3Rpb25NYXRyaXg7
CisKKyAgICAgICAgdXNpbmcgUHJvamVjdGlvbiA9IFZhcmlhbnQ8Rm92LCBQcm9qZWN0aW9uTWF0
cml4LCBzdGQ6Om51bGxwdHJfdD47CiAKICAgICAgICAgc3RydWN0IFZpZXcgewogICAgICAgICAg
ICAgUG9zZSBvZmZzZXQ7CiAgICAgICAgICAgICBQcm9qZWN0aW9uIHByb2plY3Rpb24gPSB7IG51
bGxwdHIgfTsKKworICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPFZpZXc+IGRlY29kZShEZWNvZGVyJik7CiAgICAgICAgIH07CiAKICAg
ICAgICAgc3RydWN0IFN0YWdlUGFyYW1ldGVycyB7CiAgICAgICAgICAgICBpbnQgaWQgeyAwIH07
CiAgICAgICAgICAgICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRQb2ludD4gYm91bmRzOworCisgICAg
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U3RhZ2VQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwogICAgICAgICB9OwogCiAgICAgICAg
IHN0cnVjdCBMYXllckRhdGEgewogICAgICAgICAgICAgUGxhdGZvcm1HTE9iamVjdCBvcGFxdWVU
ZXh0dXJlIHsgMCB9OworCisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8TGF5ZXJEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogICAgICAg
ICB9OwogCiAgICAgICAgIGJvb2wgaXNUcmFja2luZ1ZhbGlkIHsgZmFsc2UgfTsKQEAgLTE1MSw2
ICsxNzMsOSBAQCBwdWJsaWM6CiAgICAgICAgIFN0YWdlUGFyYW1ldGVycyBzdGFnZVBhcmFtZXRl
cnM7CiAgICAgICAgIFZlY3RvcjxWaWV3PiB2aWV3czsKICAgICAgICAgSGFzaE1hcDxMYXllckhh
bmRsZSwgTGF5ZXJEYXRhPiBsYXllcnM7CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RnJhbWVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogICAg
IH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJWaWV3IHsKQEAgLTIwNyw2ICsyMzIsMjIxIEBAIHByaXZh
dGU6CiAgICAgRGV2aWNlTGlzdCBtX2ltbWVyc2l2ZVhSRGV2aWNlczsKIH07CiAKK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Cit2b2lkIERldmljZTo6RnJhbWVEYXRhOjpGbG9hdFF1YXRlcm5pb246
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgeCA8PCB5
IDw8IHogPDwgdzsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPERldmlj
ZTo6RnJhbWVEYXRhOjpGbG9hdFF1YXRlcm5pb24+IERldmljZTo6RnJhbWVEYXRhOjpGbG9hdFF1
YXRlcm5pb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIERldmljZTo6RnJhbWVE
YXRhOjpGbG9hdFF1YXRlcm5pb24gZmxvYXRRdWF0ZXJuaW9uOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZmxvYXRRdWF0ZXJuaW9uLngpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmxvYXRRdWF0ZXJuaW9uLnkpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmxvYXRRdWF0ZXJuaW9u
LnopKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZmxvYXRRdWF0ZXJuaW9uLncpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBmbG9hdFF1YXRlcm5pb247Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2
b2lkIERldmljZTo6RnJhbWVEYXRhOjpQb3NlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKK3sKKyAgICBlbmNvZGVyIDw8IHBvc2l0aW9uIDw8IG9yaWVudGF0aW9uOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U+IERl
dmljZTo6RnJhbWVEYXRhOjpQb3NlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBE
ZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSBwb3NlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9z
ZS5wb3NpdGlvbikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwb3NlLm9yaWVudGF0aW9uKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gcG9zZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
RGV2aWNlOjpGcmFtZURhdGE6OkZvdjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCB1cCA8PCBkb3duIDw8IGxlZnQgPDwgcmlnaHQ7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6Rm92PiBEZXZp
Y2U6OkZyYW1lRGF0YTo6Rm92OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBEZXZp
Y2U6OkZyYW1lRGF0YTo6Rm92IGZvdjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvdi51cCkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShm
b3YuZG93bikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShmb3YubGVmdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShmb3YucmlnaHQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBmb3Y7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERl
dmljZTo6RnJhbWVEYXRhOjpWaWV3OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IG9mZnNldDsKKworICAgIGJvb2wgaGFzRm92ID0gV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92Pihwcm9qZWN0aW9u
KTsKKyAgICBlbmNvZGVyIDw8IGhhc0ZvdjsKKyAgICBpZiAoaGFzRm92KSB7CisgICAgICAgIGVu
Y29kZXIgPDwgV1RGOjpnZXQ8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZvdj4ocHJv
amVjdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIGhhc1Byb2plY3Rp
b25NYXRyaXggPSBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpQcm9qZWN0aW9uTWF0cml4Pihwcm9qZWN0aW9uKTsKKyAgICBlbmNvZGVyIDw8IGhh
c1Byb2plY3Rpb25NYXRyaXg7CisgICAgaWYgKGhhc1Byb2plY3Rpb25NYXRyaXgpIHsKKyAgICAg
ICAgZm9yIChmbG9hdCBmIDogV1RGOjpnZXQ8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OlByb2plY3Rpb25NYXRyaXg+KHByb2plY3Rpb24pKQorICAgICAgICAgICAgZW5jb2RlciA8PCBm
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8c3RkOjpudWxscHRyX3Q+KHByb2plY3Rpb24pKTsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KK09wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpWaWV3PiBEZXZpY2U6OkZyYW1l
RGF0YTo6Vmlldzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OlZpZXcgdmlldzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZp
ZXcub2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGJvb2wgaGFz
Rm92OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzRm92KSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIGlmIChoYXNGb3YpIHsKKyAgICAgICAgUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OkZvdiBmb3Y7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm92
KSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHZpZXcucHJvamVj
dGlvbiA9IHsgV1RGTW92ZShmb3YpIH07CisgICAgICAgIHJldHVybiB2aWV3OworICAgIH0KKwor
ICAgIGJvb2wgaGFzUHJvamVjdGlvbk1hdHJpeDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhh
c1Byb2plY3Rpb25NYXRyaXgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
aWYgKGhhc1Byb2plY3Rpb25NYXRyaXgpIHsKKyAgICAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OlByb2plY3Rpb25NYXRyaXggcHJvamVjdGlvbk1hdHJpeDsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6cHJvamVj
dGlvbk1hdHJpeFNpemU7ICsraSkgeworICAgICAgICAgICAgZmxvYXQgZjsKKyAgICAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHByb2plY3Rpb25NYXRyaXhbaV0gPSBmOworICAgICAgICB9Cisg
ICAgICAgIHZpZXcucHJvamVjdGlvbiA9IHsgV1RGTW92ZShwcm9qZWN0aW9uTWF0cml4KSB9Owor
ICAgICAgICByZXR1cm4gdmlldzsKKyAgICB9CisKKyAgICB2aWV3LnByb2plY3Rpb24gPSB7IG51
bGxwdHIgfTsKKyAgICByZXR1cm4gdmlldzsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBpZDsKKyAgICBlbmNvZGVyIDw8IGJv
dW5kczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPERldmljZTo6RnJh
bWVEYXRhOjpTdGFnZVBhcmFtZXRlcnM+IERldmljZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRl
cnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnMgc3RhZ2VQYXJhbWV0ZXJzOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RhZ2VQYXJhbWV0ZXJzLmlkKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YWdlUGFyYW1ldGVycy5ib3VuZHMpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGFnZVBhcmFtZXRlcnM7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERldmljZTo6RnJhbWVEYXRhOjpM
YXllckRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIg
PDwgb3BhcXVlVGV4dHVyZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFs
PERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IERldmljZTo6RnJhbWVEYXRhOjpMYXllckRh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpMYXllckRhdGEgbGF5ZXJEYXRhOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bGF5ZXJEYXRhLm9wYXF1ZVRleHR1cmUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBsYXllckRhdGE7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lk
IERldmljZTo6RnJhbWVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IGlzVHJhY2tpbmdWYWxpZDsKKyAgICBlbmNvZGVyIDw8IGlzUG9zaXRpb25W
YWxpZDsKKyAgICBlbmNvZGVyIDw8IGlzUG9zaXRpb25FbXVsYXRlZDsKKyAgICBlbmNvZGVyIDw8
IHNob3VsZFJlbmRlcjsKKyAgICBlbmNvZGVyIDw8IHByZWRpY3RlZERpc3BsYXlUaW1lOworICAg
IGVuY29kZXIgPDwgb3JpZ2luOworICAgIGVuY29kZXIgPDwgZmxvb3JUcmFuc2Zvcm07CisgICAg
ZW5jb2RlciA8PCBzdGFnZVBhcmFtZXRlcnM7CisgICAgZW5jb2RlciA8PCB2aWV3czsKKyAgICBl
bmNvZGVyIDw8IGxheWVyczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFs
PERldmljZTo6RnJhbWVEYXRhPiBEZXZpY2U6OkZyYW1lRGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRhLmlzVHJhY2tpbmdWYWxpZCkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURh
dGEuaXNQb3NpdGlvblZhbGlkKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1lRGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRh
LnNob3VsZFJlbmRlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRhLm9y
aWdpbikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShmcmFtZURhdGEuZmxvb3JUcmFuc2Zvcm0pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRhLnN0YWdlUGFyYW1ldGVycykp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShm
cmFtZURhdGEudmlld3MpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRhLmxheWVycykpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIGZyYW1lRGF0YTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShXRUJY
UikKIAogfSAvLyBuYW1lc3BhY2UgUGxhdGZvcm1YUgorCisjaWYgRU5BQkxFKFdFQlhSKQorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxQbGF0Zm9ybVhS
OjpSZWZlcmVuY2VTcGFjZVR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUsCisgICAgICAgIFBsYXRmb3Jt
WFI6OlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyLAorICAgICAgICBQbGF0Zm9ybVhSOjpSZWZl
cmVuY2VTcGFjZVR5cGU6OkxvY2FsLAorICAgICAgICBQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFj
ZVR5cGU6OkxvY2FsRmxvb3IsCisgICAgICAgIFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlw
ZTo6Qm91bmRlZEZsb29yLAorICAgICAgICBQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGU6
OlVuYm91bmRlZAorICAgID47Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvY29jb2EvUGxhdGZvcm1YUkNvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS94ci9jb2NvYS9QbGF0Zm9ybVhSQ29jb2EuaAppbmRleCAzMWM5Zjc5NzE1
ZWU3MzAxMmQwYWZhMTIxM2ExYzBmOGQ0MWJhYjQzLi4yNzc3Y2U0OTBkMDEwZGM2OTUyM2RkMmM2
ODY5NjZkZDdiMWYxY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9j
b2NvYS9QbGF0Zm9ybVhSQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9j
b2NvYS9QbGF0Zm9ybVhSQ29jb2EuaApAQCAtMjcsMjIgKzI3LDUgQEAKIAogI2lmIEVOQUJMRShX
RUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgotCi1uYW1l
c3BhY2UgUGxhdGZvcm1YUiB7Ci0KLWNsYXNzIFBsYXRmb3JtWFJEZXZpY2VDb2NvYSA6IHB1Ymxp
YyBEZXZpY2UgewotcHVibGljOgotICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVy
aW5nKFNlc3Npb25Nb2RlKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHNodXREb3duVHJhY2tpbmdB
bmRSZW5kZXJpbmcoKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VT
cGFjZShSZWZlcmVuY2VTcGFjZVR5cGUpIG92ZXJyaWRlIHsgfQotICAgIFZlY3RvcjxWaWV3RGF0
YT4gdmlld3MoU2Vzc2lvbk1vZGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfQotICAg
IHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIG92ZXJyaWRlIHsgfQot
ICAgIE9wdGlvbmFsPExheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qs
IHVpbnQzMl90LCBib29sKSBvdmVycmlkZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH07Ci0gICAg
dm9pZCBkZWxldGVMYXllcihMYXllckhhbmRsZSkgb3ZlcnJpZGUgeyB9OwotfTsKLQotfQotCiAj
aW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1BsYXRmb3JtWFJBZGRpdGlvbnMuaD4KLQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXgg
MGUwZmI4NzBlNTFhNDQ2MDYzMTVhOTRhMjRjNTQ2MTI5YWIwZWI2ZC4uZjlmZjcxNjIyNDZmNzUz
MWRhMTRhNzU3NDc0OWY1OGEyMjdiZGI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtOTgsNiArOTgsNyBAQCAkKFBST0pFQ1RfRElSKS9T
aGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvU2hhcmVkL1dlYkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgogJChQUk9KRUNUX0RJUikvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KKyQoUFJP
SkVDVF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTA1LDggKzEw
Niw4IEBAICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYklu
c3BlY3RvclVJUHJveHkubWVzc2FnZXMuaW4KLSQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvTWVkaWEvQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTk4LDYg
KzE5OSw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9BdWRpb0NhcHR1cmVTYW1w
bGVNYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1Bs
YXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCAzNGFjM2IxZmE5MzQ3NmQxNWU0MjRmYjdiMzA3M2ZlNTI3Mzk3ODQyLi43
NTQ3YmVhOWVjZGE2MTU0N2ZkY2JmOTk4MmIzNTUxOTc5MmYxMzQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTEwOSw2ICsxMDksMTIg
QEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1Nv
Y2tldENoYW5uZWxNZXNzYWdlc1JlcGxpZXMKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL05ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0
U3RyZWFtTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1BsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxhdGZvcm1YUlN5c3RlbVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVz
c2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCkBAIC0yODgsMTIgKzI5NCwx
MiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVU
ZXh0VHJhY2tQcm94eU1lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlVmlk
ZW9UcmFja1Byb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3Rv
clVJUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXMuaAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlV2ViSW5zcGVj
dG9yVUlQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYklu
c3BlY3RvclVJTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVXZWJJbnNwZWN0b3JV
SVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VSZWNlaXZlci5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzUmVwbGllcy5oCkBA
IC00MTgsOSArNDI0LDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3MKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZl
ci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklu
c3BlY3Rvck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3Rvck1lc3NhZ2VzUmVwbGllcy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2Vi
SW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXNSZXBsaWVzLmgKQEAg
LTQzMCw2ICs0MzMsOSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcgogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJ
bnNwZWN0b3JVSU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9XZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VzUmVwbGllcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJNRE5TUmVn
aXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJNRE5TUmVnaXN0ZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJNRE5TUmVnaXN0ZXJNZXNzYWdlc1JlcGxp
ZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDk1YmY0NTE2YTZlMWRkMWM0YWQ0
MGEwZmU5ODE0YjdlOTA2OWIyMWQuLjhhNTdhNDVkNWNkNzYyNjQ5OWVjODM0MGJiYjAyOWZjYzI4
OTY1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE2MSw2ICsxNjEsNyBAQCBN
RVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlVSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXIgXAogCVVJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eSBcCiAJVUlQcm9jZXNz
L1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IFwKKwlVSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1Y
UlN5c3RlbSBcCiAJVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBc
CiAJVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgXAogCVVJUHJv
Y2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgXApAQCAtMjE4LDYgKzIxOSw3
IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQcm9jZXNzIFwKKwlXZWJQcm9jZXNzL2NvY29hL1Bs
YXRmb3JtWFJTeXN0ZW1Qcm94eSBcCiAJV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyIFwKIAlXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIFwK
IAlXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9Mb2dnaW5nLmgKaW5kZXggYTk4M2I1ZjU2MTg1NTJiMzEwNzZiYTI5ODZiMzVkYmI4ZGYyMDc2
OS4uNDExZWQzZWRmNTVlM2RhYTFmMTAyOTYwZGM3Yjk0Y2RlYTc4ZWFiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9Mb2dnaW5nLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFdl
YkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdoZWVsRXZlbnRzKSBcCisgICAgTShYUikg
XAogCiBXRUJLSVQyX0xPR19DSEFOTkVMUyhERUNMQVJFX0xPR19DSEFOTkVMKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBkZDRiNDBiMzcwMTA0MTZjYzZi
NDA3Nzc0MzE1N2UyOTFlODU5MDgyLi5lZDA3NjFlNWU5NjYzODJlMDA5NTM0NGNiNzVmOTc1ZmQ5
ZWY3N2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTM0
Myw2ICszNDMsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgp
OgogICAgICAgICAnV2ViS2l0OjpUcmFuc2FjdGlvbklEJywKICAgICAgICAgJ1dlYktpdDo6VXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OldlYlBhZ2VQ
cm94eUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpYUkRldmljZUlkZW50aWZpZXInLAog
ICAgIF0pCiAKIApAQCAtNzc3LDYgKzc3OCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUp
OgogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclN0eWxlU2hlZXREYXRhJzogWyciV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2Vi
S2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3dlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1l
SW5mbyc6IFsnPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4nLCAnPFdlYkNvcmUv
TGliV2ViUlRDRW51bVRyYWl0cy5oPiddLAorICAgICAgICAnUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGEnOiBbJzxXZWJDb3JlL1BsYXRmb3JtWFIuaD4nXSwKICAgICB9CiAKICAgICBoZWFk
ZXJzID0gW10KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNmI1MTcwOTU0ZTNiYmRjOGFlNmQ5ZmRiZGM5MGUzZTFjYzY3NjE3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCkBA
IC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJYUikKKworI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1YUi5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTsK
Kworc3RydWN0IFhSRGV2aWNlSW5mbzsKKworY2xhc3MgWFJEZXZpY2VQcm94eSBmaW5hbCA6IHB1
YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8WFJEZXZp
Y2VQcm94eT4gY3JlYXRlKFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmKTsK
KyAgICBYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorCisgICAgdm9pZCBzZXNzaW9uRGlkRW5kKCk7CisKK3ByaXZhdGU6CisgICAg
WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3RlbVByb3h5Jik7CisK
KyAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNz
aW9uTW9kZSkgZmluYWw7CisgICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkg
ZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VT
cGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfQorICAgIFZlY3Rv
cjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhQbGF0Zm9ybVhSOjpTZXNzaW9u
TW9kZSkgY29uc3QgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2
aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICBPcHRpb25hbDxQbGF0Zm9y
bVhSOjpMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJf
dCwgYm9vbCkgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9OworICAgIHZvaWQgZGVs
ZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92ZXJyaWRlIHsgfTsKKworICAgIFhS
RGV2aWNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV2Vha1B0cjxQbGF0Zm9ybVhSU3lz
dGVtUHJveHk+IG1feHJTeXN0ZW07CisgICAgYm9vbCBtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5n
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZp
Y2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGMwNjYyZjU3Zjc1NzY0NTRjNTU5N2E5MDFkMWQ4YjliY2I4NzZmOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHku
bW0KQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiWFJEZXZpY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW1wb3J0ICJQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKKyNpbXBvcnQgIlhSRGV2aWNlSW5mby5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgUGxhdGZvcm1YUjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxYUkRl
dmljZVByb3h5PiBYUkRldmljZVByb3h5OjpjcmVhdGUoWFJEZXZpY2VJbmZvJiYgZGV2aWNlSW5m
bywgUGxhdGZvcm1YUlN5c3RlbVByb3h5JiB4clN5c3RlbSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBYUkRldmljZVByb3h5KFdURk1vdmUoZGV2aWNlSW5mbyksIHhyU3lzdGVtKSk7Cit9
CisKK1hSRGV2aWNlUHJveHk6OlhSRGV2aWNlUHJveHkoWFJEZXZpY2VJbmZvJiYgZGV2aWNlSW5m
bywgUGxhdGZvcm1YUlN5c3RlbVByb3h5JiB4clN5c3RlbSkKKyAgICA6IG1feHJTeXN0ZW0obWFr
ZVdlYWtQdHIoeHJTeXN0ZW0pKQoreworICAgIG1faWRlbnRpZmllciA9IGRldmljZUluZm8uaWRl
bnRpZmllcjsKKyAgICBtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nID0gZGV2aWNlSW5mby5zdXBw
b3J0c1N0ZXJlb1JlbmRlcmluZzsKKyAgICBtX3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9
IGRldmljZUluZm8uc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nOworICAgIGlmICghZGV2aWNl
SW5mby5mZWF0dXJlcy5pc0VtcHR5KCkpCisgICAgICAgIHNldEVuYWJsZWRGZWF0dXJlcyhTZXNz
aW9uTW9kZTo6SW1tZXJzaXZlVnIsIGRldmljZUluZm8uZmVhdHVyZXMpOworfQorCit2b2lkIFhS
RGV2aWNlUHJveHk6OnNlc3Npb25EaWRFbmQoKQoreworICAgIGlmICh0cmFja2luZ0FuZFJlbmRl
cmluZ0NsaWVudCgpKQorICAgICAgICB0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpLT5zZXNz
aW9uRGlkRW5kKCk7Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6ZVRyYWNraW5n
QW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlIHNlc3Npb25Nb2RlKQoreworICAg
IGlmIChzZXNzaW9uTW9kZSAhPSBQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3hyU3lzdGVtKQorICAgICAgICBtX3hyU3lz
dGVtLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKK30KKwordm9pZCBYUkRldmlj
ZVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBpZiAobV94clN5
c3RlbSkKKyAgICAgICAgbV94clN5c3RlbS0+c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygp
OworfQorCitWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gWFJEZXZpY2VQcm94
eTo6dmlld3MoU2Vzc2lvbk1vZGUgbW9kZSkgY29uc3QKK3sKKyAgICBWZWN0b3I8RGV2aWNlOjpW
aWV3RGF0YT4gdmlld3M7CisgICAgaWYgKG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgJiYgbW9k
ZSA9PSBTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpIHsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsg
LmFjdGl2ZSA9IHRydWUsIEV5ZTo6TGVmdCB9KTsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFj
dGl2ZSA9IHRydWUsIEV5ZTo6UmlnaHQgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHZpZXdzLmFw
cGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6Ok5vbmUgfSk7CisgICAgcmV0dXJuIHZpZXdzOwor
fQorCit2b2lkIFhSRGV2aWNlUHJveHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6
OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKG1feHJTeXN0ZW0p
CisgICAgICAgIG1feHJTeXN0ZW0tPnJlcXVlc3RGcmFtZShXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBiYjMyNDkw
NzkzNGYzMGZhNGI3N2YzMmJjNzNiYTMyZjQ5ODQyOGYzLi42MTk3MDg3ODI1MTE1NDhiNjJmMjcx
NTZiZDNmNDdkNzFhMzFlYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaApAQCAtMTAzOSwxOSArMTAzOSw0IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRl
c3RpCiB9OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpCi0KLXRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8UGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlPiB7Ci0gICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VU
eXBlLAotICAgICAgICBQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlciwKLSAg
ICAgICAgUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlOjpMb2NhbCwKLSAgICAgICAgUGxh
dGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlOjpMb2NhbEZsb29yLAotICAgICAgICBQbGF0Zm9y
bVhSOjpSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vciwKLSAgICAgICAgUGxhdGZvcm1Y
Ujo6UmVmZXJlbmNlU3BhY2VUeXBlOjpVbmJvdW5kZWQKLSAgICA+OwotfTsKLQotI2VuZGlmCi0K
IH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGY2ZTE2ZjJiYzg0
YzBkNTBhNjY1NWE3MzM2ZmM5ZjI2YjRkNjRhNDQuLjBjMzI1YjYwMzAwYzU1OWFiYjU4MGE3NWIw
NGE0MTk0ZjA0OTk2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTE4MSw2ICsxODEsNyBA
QCBTaGFyZWQvQ29jb2EvV0tOU1VSTFJlcXVlc3QubW0KIFNoYXJlZC9Db2NvYS9XS09iamVjdC5t
bQogU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29hLm1tCiBTaGFy
ZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tCitTaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQog
CiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VF
bnRyeVBvaW50Lm1tCiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VNYWluLm1tCkBAIC0zOTUsNiArMzk2LDcgQEAgVUlQcm9jZXNzL0NvY29hL01l
ZGlhVXRpbGl0aWVzLm1tCiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVz
Lm1tCiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCiBVSVByb2Nlc3MvQ29jb2Ev
UGFnZUNsaWVudEltcGxDb2NvYS5tbQorVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0KIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1NhZmVC
cm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtNTg2LDYgKzU4OCw3IEBAIFdlYlByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAogCiBXZWJQcm9jZXNzL0FwcGxlUGF5L2Nv
Y29hL1dlYlBheW1lbnRDb29yZGluYXRvckNvY29hLm1tCiAKK1dlYlByb2Nlc3MvY29jb2EvUGxh
dGZvcm1YUlN5c3RlbVByb3h5Lm1tCiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIubW0KIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3Bw
CiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCkBAIC03MDEs
NiArNzA0LDggQEAgR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVj
c1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29kZWNzTWVzc2FnZVJlY2VpdmVy
LmNwcAogTWVzc2FnZU5hbWVzLmNwcAorUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VSZWNlaXZlci5j
cHAKK1BsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9IYXJkd2Fy
ZUxpc3RlbmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9TZXNzaW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxh
dGZvcm1YUkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0
Zm9ybVhSQ29vcmRpbmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODk1NDk4MDM2YjFjYWRkZWUxNTBiZjNk
Yjg5NWM1MjcwM2E5MGNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJE
ZXZpY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZvLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRvciB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+UGxhdGZvcm1YUkNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OworCisgICAgdXNpbmcgRGV2
aWNlSW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChPcHRpb25hbDxYUkRldmljZUluZm8+KT47
CisgICAgdmlydHVhbCB2b2lkIGdldFByaW1hcnlEZXZpY2VJbmZvKERldmljZUluZm9DYWxsYmFj
ayYmKSA9IDA7CisKKyAgICAvLyBTZXNzaW9uIGNyZWF0aW9uL3Rlcm1pbmF0aW9uLgorICAgIHVz
aW5nIE9uU2Vzc2lvbkVuZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChYUkRldmljZUlkZW50aWZp
ZXIpPjsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTZXNzaW9uKFdlYlBhZ2VQcm94eSYsIE9uU2Vz
c2lvbkVuZENhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kU2Vzc2lvbklmRXhp
c3RzKFdlYlBhZ2VQcm94eSYpID0gMDsKKworICAgIC8vIFNlc3Npb24gZGlzcGxheSBsb29wLgor
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbkZyYW1lKFdlYlBhZ2VQcm94eSYsIFBs
YXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgPSAwOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDEyMzAzNTZlZmY1NmI2ZmZkYmIxN2JkMjJlNzEwZGM4MjEwODA1OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaApAQCAt
MCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
WFIpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtWFIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBsYXRmb3JtWFJDb29y
ZGluYXRvcjsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworc3RydWN0IFhSRGV2aWNlSW5mbzsKKwor
Y2xhc3MgUGxhdGZvcm1YUlN5c3RlbSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUGxhdGZvcm1YUlN5c3Rl
bShXZWJQYWdlUHJveHkmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVtKCk7CisKKyAg
ICB2b2lkIGludmFsaWRhdGUoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgUGxhdGZvcm1YUkNv
b3JkaW5hdG9yKiB4ckNvb3JkaW5hdG9yKCk7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCisgICAgdm9pZCBlbnVtZXJh
dGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZp
Y2VJbmZvPiYmKT4mJik7CisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
KTsKKyAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHJl
cXVlc3RGcmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhJiYpPiYmKTsKKworICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YmFmODFiMjk5MTcyZGM1YTc4N2I5MjNiZjQ3NjBkNDQ0OTMxN2Jh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZv
cm1YUlN5c3RlbS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNp
ZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFdFQlhSKQorCittZXNzYWdlcyAtPiBQbGF0Zm9y
bVhSU3lzdGVtIE5vdFJlZkNvdW50ZWQgeworICAgIEVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNl
cygpIC0+IChWZWN0b3I8V2ViS2l0OjpYUkRldmljZUluZm8+IGRldmljZXNJbmZvcykgQXN5bmMK
KyAgICBJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQorICAgIFNodXREb3duVHJhY2tp
bmdBbmRSZW5kZXJpbmcoKQorICAgIFJlcXVlc3RGcmFtZSgpIC0+IChzdHJ1Y3QgUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhKSBBc3luYworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA2YTY3N2FiYmQ1NDEyMTE2NDdkZTgxMzZlYmQ2YmM0YzYxOTU2NjAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
Lm1tCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbXBv
cnQgIlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgorI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbU1l
c3NhZ2VzLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtUHJveHlNZXNzYWdlcy5oIgorI2lt
cG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1BsYXRmb3JtWFJTeXN0ZW06OlBsYXRmb3JtWFJTeXN0ZW0oV2Vi
UGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgbV9wYWdlLnByb2Nl
c3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpLCAqdGhpcyk7Cit9CisKK1BsYXRm
b3JtWFJTeXN0ZW06On5QbGF0Zm9ybVhSU3lzdGVtKCkKK3sKKyAgICBtX3BhZ2UucHJvY2Vzcygp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOworfQorCit2b2lkIFBsYXRmb3Jt
WFJTeXN0ZW06OmludmFsaWRhdGUoKQoreworICAgIGlmICh4ckNvb3JkaW5hdG9yKCkpCisgICAg
ICAgIHhyQ29vcmRpbmF0b3IoKS0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1fcGFnZSk7Cit9CisKK3Zv
aWQgUGxhdGZvcm1YUlN5c3RlbTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29v
cmRpbmF0b3IoKTsKKyAgICBpZiAoIXhyQ29vcmRpbmF0b3IpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHhyQ29vcmRpbmF0
b3ItPmdldFByaW1hcnlEZXZpY2VJbmZvKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxYUkRldmljZUluZm8+IGRldmljZUluZm8pIG11dGFi
bGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRldmljZUluZm8gPSBXVEZNb3ZlKGRldmlj
ZUluZm8pXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFkZXZpY2VJbmZvKSB7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZGV2
aWNlSW5mby52YWx1ZSgpIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBQbGF0
Zm9ybVhSU3lzdGVtOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQoreworICAgIGF1
dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCk7Cisg
ICAgaWYgKCF4ckNvb3JkaW5hdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICB4ckNvb3JkaW5h
dG9yLT5zdGFydFNlc3Npb24obV9wYWdlLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
KFhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKSB7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIGRldmljZUlkZW50aWZpZXJdKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlNlc3Npb25EaWRFbmQo
ZGV2aWNlSWRlbnRpZmllcikpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBQbGF0
Zm9ybVhSU3lzdGVtOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBpZiAo
YXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkK
KyAgICAgICAgeHJDb29yZGluYXRvci0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1fcGFnZSk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6cmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNv
b3JkaW5hdG9yKCkpCisgICAgICAgIHhyQ29vcmRpbmF0b3ItPnNjaGVkdWxlQW5pbWF0aW9uRnJh
bWUobV9wYWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK1BsYXRmb3JtWFJD
b29yZGluYXRvciogUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aGlzCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDZmYmNiM2JiNjgzM2Y5ODA3NWNhNjJhNWI3ZmQ1N2ZjMzczMGQ3ODMuLjA1MWRh
ODc2NThkZDM4OWJhZmZmZWJiNjc0OTgyZTY5OTU2NjAzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTAyNSw2ICsxMDI1LDExIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKICAgICBBU1NFUlQoIW1fd2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5KTsKICAgICBtX3dlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eSA9IG1ha2VVbmlxdWU8V2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5PigqdGhpcyk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShXRUJY
UikgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgQVNTRVJUKCFtX3hyU3lzdGVtKTsKKyAgICBtX3hy
U3lzdGVtID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVhSU3lzdGVtPigqdGhpcyk7CisjZW5kaWYKIH0K
IAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9y
UmVsb2FkKCkKQEAgLTc1ODgsNiArNzU5MywxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRT
dGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAjZW5kaWYKIAogICAgIG1f
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CisKKyNpZiBFTkFC
TEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtX3hyU3lzdGVtKSB7CisgICAg
ICAgIG1feHJTeXN0ZW0tPmludmFsaWRhdGUoKTsKKyAgICAgICAgbV94clN5c3RlbSA9IG51bGxw
dHI7CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0
ZXJQcm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hdGlvblJlYXNv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYWFlNWZjZjA1YWIx
YzEyMmRjMzY1Yjg5OWFjY2QzYjBjMDdlYWM0NC4uZjQ5MTVhZWRmNDZhYjk5YWEwNGExZmJlYjEz
NGZmOWQxNTE1NDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTE4Myw2ICsxODMsMTAgQEAgaW50ZXJmYWNlIElEM0QxMURldmljZTE7CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVNlc3Npb25JZGVudGlmaWVyLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJY
UikgJiYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbS5oIgorI2Vu
ZGlmCisKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8V2ViS2l0QWRkaXRp
b25zL1dlYlBhZ2VQcm94eUFkZGl0aW9uc0JlZm9yZS5oPgogI2VuZGlmCkBAIC0yOTkxLDYgKzI5
OTUsMTAgQEAgcHJpdmF0ZToKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogCisjaWYgRU5BQkxFKFdFQlhS
KSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1YUlN5c3Rl
bT4gbV94clN5c3RlbTsKKyNlbmRpZgorCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNp
bXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQYWdlUHJveHlBZGRpdGlvbnNBZnRlci5oPgogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBlMWMyNWNhZjAyMGJjZWNiZjgxZTJkYWFiNWE3NzFjNDk4YmU5MDRjLi41M2E3NGUxZDI4
NmU1OGNiNWNkYjkzMmM5MGVlYzg0ZTk2NDcyZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDAsNiArMTEwMCwxMCBAQAogCQk1
MUZEMThCNjE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZEMThCNDE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggKi87IH07CiAJCTUyNTA4MEIxMjYx
QkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBY
UkRldmljZUlkZW50aWZpZXIuaCAqLzsgfTsKIAkJNTI1MDgwQjIyNjFCREU2QzAwNjc4QUVFIC8q
IFhSRGV2aWNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTI1MDgwQUYyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovOyB9Owor
CQk1MjYzRTI1NzI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNTUyNjFFNzNERjAwMThE
NDdEIC8qIFhSRGV2aWNlUHJveHkuaCAqLzsgfTsKKwkJNTI2M0UyNUEyNjFFOTNBNzAwMThENDdE
IC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNEQyNjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJD
b29yZGluYXRvci5oICovOyB9OworCQk1MjYzRTI1QjI2MUU5M0FCMDAxOEQ0N0QgLyogUGxhdGZv
cm1YUlN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTI2M0UyNEYyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLzsgfTsK
KwkJNTI2M0UyNUYyNjFFOTZFRjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNUQyNjFF
OTZERjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovOyB9OwogCQk1MjcyRDRD
OTFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3MkQ0QzcxRTczNUYwOTAwRUI0Mjkw
IC8qIFdLUHJvdGVjdGlvblNwYWNlTlMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MjhDMzdDMTE5NUNCQjFBMDBEOEI5Q0MgLyogV0tCYWNrRm9y
d2FyZExpc3RQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTlGMjgxMDE5NThGNDc4MDA4Q0FDNzIgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTJENUExQjAxQzU3NDk1QTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUEx
QzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwpA
QCAtNDE2MCw2ICs0MTY0LDE1IEBACiAJCTUyNTA4MEFEMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRl
dmljZUluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUkRl
dmljZUluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNTA4MEFFMjYxQkRF
NkIwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gWFJEZXZpY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUyNTA4MEFGMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUyNjNFMjREMjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29v
cmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNjNFMjRFMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0
Zm9ybVhSU3lzdGVtLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI2M0UyNEYyNjFFNzJFQjAwMThENDdE
IC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjYzRTI1MDI2MUU3MkVDMDAxOEQ0N0Qg
LyogUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjYzRTI1NDI2MUU3M0RF
MDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFhSRGV2aWNlUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUyNjNFMjU1MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTI2M0UyNUMyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI2M0UyNUQyNjFFOTZERjAwMThENDdE
IC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lz
dGVtUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI2M0UyNUUyNjFFOTZF
MDAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0
Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyNzJENEM3MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUHJvdGVjdGlvblNwYWNlTlMuaDsgcGF0
aCA9IG1hYy9XS1Byb3RlY3Rpb25TcGFjZU5TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyNzJENEM4MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQcm90ZWN0aW9uU3BhY2VO
Uy5tbTsgcGF0aCA9IG1hYy9XS1Byb3RlY3Rpb25TcGFjZU5TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk4
Nyw2ICs3MDAwLDEwIEBACiAJCQkJMUFCQzNERjMxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRp
b25TdGF0ZS5tbSAqLywKIAkJCQk1QzZDRTZEMzFGNTlFQTM1MDAwN0M2Q0IgLyogUGFnZUNsaWVu
dEltcGxDb2NvYS5oICovLAogCQkJCTVDNkNFNkQwMUY1OUJDNDYwMDA3QzZDQiAvKiBQYWdlQ2xp
ZW50SW1wbENvY29hLm1tICovLAorCQkJCTUyNjNFMjREMjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0
Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLywKKwkJCQk1MjYzRTI0RjI2MUU3MkVCMDAxOEQ0N0QgLyog
UGxhdGZvcm1YUlN5c3RlbS5oICovLAorCQkJCTUyNjNFMjUwMjYxRTcyRUMwMDE4RDQ3RCAvKiBQ
bGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluICovLAorCQkJCTUyNjNFMjRFMjYxRTcyRUIwMDE4
RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLm1tICovLAogCQkJCUNEQTI5QTFFMUNCRUI1RkIwMDkw
MUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCAqLywKIAkJCQlDREEyOUEyMjFD
QkVCNjFBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
ICovLAogCQkJCUNEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0gKi8sCkBAIC04MjUxLDYgKzgyNjgsOCBAQAogCQkJCTUyNTA4MEFFMjYxQkRF
NkIwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAqLywKIAkJCQk1MjUwODBBRjI2MUJE
RTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggKi8sCiAJCQkJNTI1MDgwQUQyNjFCREU2QjAw
Njc4QUVFIC8qIFhSRGV2aWNlSW5mby5tbSAqLywKKwkJCQk1MjYzRTI1NTI2MUU3M0RGMDAxOEQ0
N0QgLyogWFJEZXZpY2VQcm94eS5oICovLAorCQkJCTUyNjNFMjU0MjYxRTczREUwMDE4RDQ3RCAv
KiBYUkRldmljZVByb3h5Lm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBjb2NvYTsKIAkJCXBhdGgg
PSBDb2NvYTsKQEAgLTkyNDEsNiArOTI2MCw5IEBACiAJCQkJQzFBMTUyRDYyNEU1QTI5QTAwOTc4
QzhCIC8qIEhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMubW0gKi8sCiAJCQkJQzE0RDM3RkMyNEFD
REY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmggKi8sCiAJCQkJ
QzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
Lm1tICovLAorCQkJCTUyNjNFMjVEMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkuaCAqLywKKwkJCQk1MjYzRTI1RTI2MUU5NkUwMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5
c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTUyNjNFMjVDMjYxRTk2REYwMDE4RDQ3RCAv
KiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0gKi8sCiAJCQkJNDQ2REM2NEIyNEEyRDhBRDAwNjFG
MzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmggKi8sCiAJCQkJQ0RBMjlB
MTkxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlD
REEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdl
cy5pbiAqLywKQEAgLTEyMDgyLDYgKzEyMTA0LDkgQEAKIAkJCQkyRDg3MTAxNzE4Mjg0MTVEMDAx
OEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRDg5NDlGMTE4MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRC
YWNraW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M0M0FCQjEyN0I5NURDMDAzMTdGMTYgLyog
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjYzRTI1QTI2MUU5
M0E3MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MjYzRTI1QjI2MUU5M0FCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTI2M0UyNUYyNjFFOTZFRjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ2REM2NEMyNEEyRDhFNTAwNjFGMzkwIC8qIFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEy
OUExQjFDQkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0RBMjlBMjkxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjk3Miw2ICsxMjk5Nyw3IEBACiAJ
CQkJQkNCRUNERTgxNkI2NDE2ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MjUwODBCMTI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjUwODBCMjI2MUJERTZDMDA2NzhBRUUgLyog
WFJEZXZpY2VJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjYzRTI1NzI2MUU3M0RGMDAxOEQ0
N0QgLyogWFJEZXZpY2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CmluZGV4IDE5MmFkOGQxNTE2ZTBkMmRiZjFlNzAzYmM5YTc3NmEzMGQzM2ViY2UuLmJjYzRjMTdh
YzI5NTIxMmNiYTY0ZGVkZDFjOWIzYTkwNmNhMDUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CkBAIC0xNDczLDQgKzE0NzMsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3dNZWRpYUNv
bnRyb2xzQ29udGV4dE1lbnUoRmxvYXRSZWN0JiYgdGFyZ2V0RnJhbWUsIFZlY3QKIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAmJiBVU0UoVUlDT05URVhU
TUVOVSkKIAorI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYkNo
cm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBtX3BhZ2UueHJTeXN0ZW1Qcm94eSgpLmVudW1lcmF0ZUltbWVy
c2l2ZVhSRGV2aWNlcyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMGI4ZDE4MWM0Yzll
ZGUxOTFiMmViOGQ5NjAzZGE4ZTdjMzU3NWUxZS4uNjgxMmU2NDJmZWNkY2FhN2IxZjUxZmUwNzEy
NTgwYTdkNDJjNGVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDM1LDYgKzQzNSwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVudShXZWJDb3JlOjpG
bG9hdFJlY3QmJiwgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFDb250cm9sc0NvbnRleHRN
ZW51SXRlbTo6SUQpPiYmKSBmaW5hbDsKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfQ09OVFJPTFNf
Q09OVEVYVF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCiAKKyNpZiBFTkFCTEUoV0VCWFIp
ICYmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2Vz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmlj
ZUxpc3QmKT4mJikgZmluYWw7CisjZW5kaWYKKwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1h
aW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9v
bCBtX2NhY2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tCmluZGV4IDU4NjE3Y2FkM2FkMGM5NjU4MGRkNmMzOGI3ZTM5NDczODcxZjZjYjAuLjNk
MjFlM2RkMGM4NmQxOWFkNjZhNDM4ZTkxODE4YTlmYzI2MmNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAg
LTQzOSw2ICs0MzksMTUgQEAgdm9pZCBXZWJQYWdlOjpnZXRQREZGaXJzdFBhZ2VTaXplKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGEKICAgICBjb21wbGV0aW9u
SGFuZGxlcihGbG9hdFNpemUocGx1Z2luLT5wZGZEb2N1bWVudFNpemVGb3JQcmludGluZygpKSk7
CiB9CiAKKyNpZiBFTkFCTEUoV0VCWFIpCitQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIFdlYlBhZ2U6
OnhyU3lzdGVtUHJveHkoKQoreworICAgIGlmICghbV94clN5c3RlbVByb3h5KQorICAgICAgICBt
X3hyU3lzdGVtUHJveHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5Pihu
ZXcgUGxhdGZvcm1YUlN5c3RlbVByb3h5KCp0aGlzKSk7CisgICAgcmV0dXJuICptX3hyU3lzdGVt
UHJveHk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCA4YjY5YzgzMzBjMjhjODU3YjEyNTQwNWMzMWMwMTE2MzQ5NjcxZTc2Li41YWQ3NjFk
NGI0MjcwMTRiN2RhYzVmZDM3ZWJmMWIxZDIwOTMxNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDQsNiArMTQ0LDEwIEBAIHR5cGVkZWYgc3Ry
dWN0IF9BdGtPYmplY3QgQXRrT2JqZWN0OwogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9u
SWRlbnRpZmllci5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENP
Q09BKQorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgorI2VuZGlmCisKICNpZiBQ
TEFURk9STShDT0NPQSkKICNpbmNsdWRlICJEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+CkBAIC0xNDI4LDcgKzE0MzIsMTEg
QEAgcHVibGljOgogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgdm9pZCB0ZXh0QXV0
b3NpemluZ1VzZXNJZGVtcG90ZW50TW9kZUNoYW5nZWQoKTsKICNlbmRpZgotICAgIAorCisjaWYg
RU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBQbGF0Zm9ybVhSU3lzdGVtUHJv
eHkmIHhyU3lzdGVtUHJveHkoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAg
LTIzMTAsNiArMjMxOCwxMCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2Vha1B0
cjxXZWJDb3JlOjpIVE1MRWxlbWVudD4sIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxXZWJDb3JlOjpFbGVtZW50PiYmKT4+Pj4gbV9lbGVtZW50c1BlbmRpbmdJbWFnZUV4dHJh
Y3Rpb247CiAgICAgV2Vha0hhc2hTZXQ8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+IG1fZWxlbWVudHNX
aXRoRXh0cmFjdGVkSW1hZ2VzOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRG
T1JNKENPQ09BKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+IG1f
eHJTeXN0ZW1Qcm94eTsKKyNlbmRpZgogfTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiMDMwYjA5MmY4YjE5MzNjNWE1Mzc0M2E3MjM4MjBjZDI2
MmIwYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
UGxhdGZvcm1YUlN5c3RlbVByb3h5LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiWFJEZXZp
Y2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3RlbVByb3h5
IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybVhS
U3lzdGVtUHJveHkoV2ViUGFnZSYpOworICAgIHZpcnR1YWwgflBsYXRmb3JtWFJTeXN0ZW1Qcm94
eSgpOworCisgICAgdm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCYpPiYmKTsK
KyAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpOworICAgIHZvaWQgc2h1
dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRm
b3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAg
UmVmUHRyPFhSRGV2aWNlUHJveHk+IGRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZp
ZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8g
TWVzc2FnZSBoYW5kbGVycworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50aWZp
ZXIpOworCisgICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZpY2VzOwor
ICAgIFdlYlBhZ2UmIG1fcGFnZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxh
dGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5NDA1NzkxYjYxNTQz
OGE5YmY3ZGI0YjRiMDA2Njg3MDgyOTNkNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShXRUJYUikKKworbWVzc2FnZXMgLT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5IE5vdFJlZkNvdW50
ZWQgeworICAgIFNlc3Npb25EaWRFbmQoV2ViS2l0OjpYUkRldmljZUlkZW50aWZpZXIgZGV2aWNl
SWRlbnRpZmllcikKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWVlY2Rk
NDRmMWY1NWQ3MDc2YjM5Mjk4MGRlY2M3OTlkNDUzNjA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQpAQCAt
MCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
UGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbXBvcnQg
IlBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgorI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVBy
b3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3Mu
aCIKKyNpbXBvcnQgIlhSRGV2aWNlSW5mby5oIgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCit1
c2luZyBuYW1lc3BhY2UgUGxhdGZvcm1YUjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eTo6UGxhdGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmIHBhZ2UpCisg
ICAgOiBtX3BhZ2UocGFnZSkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpLCAqdGhpcyk7Cit9CisKK1BsYXRmb3JtWFJT
eXN0ZW1Qcm94eTo6flBsYXRmb3JtWFJTeXN0ZW1Qcm94eSgpCit7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lz
dGVtUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmlj
ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJbnN0YW5jZTo6RGV2aWNlTGlzdCYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OkVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpLCBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oVmVjdG9yPFhSRGV2aWNlSW5mbz4mJiBkZXZpY2Vz
SW5mb3MpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0IGRldmljZXM7
CisgICAgICAgIGZvciAoYXV0byYgZGV2aWNlSW5mbyA6IGRldmljZXNJbmZvcykgeworICAgICAg
ICAgICAgaWYgKGF1dG8gZGV2aWNlID0gZGV2aWNlQnlJZGVudGlmaWVyKGRldmljZUluZm8uaWRl
bnRpZmllcikpCisgICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoKmRldmljZSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoWFJEZXZpY2VQcm94
eTo6Y3JlYXRlKFdURk1vdmUoZGV2aWNlSW5mbyksICp0aGlzKSk7CisgICAgICAgIH0KKyAgICAg
ICAgbV9kZXZpY2VzLnN3YXAoZGV2aWNlcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
ZGV2aWNlcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5Ojppbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQoreworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpQbGF0Zm9ybVhSU3lzdGVtOjpJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCkKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U2h1
dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVt
UHJveHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6UGxhdGZvcm1YUlN5c3RlbTo6UmVxdWVzdEZyYW1lKCksIFdURk1vdmUoY2FsbGJhY2spKTsK
K30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNlc3Npb25EaWRFbmQoWFJEZXZpY2VJ
ZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gZGV2aWNlID0gZGV2
aWNlQnlJZGVudGlmaWVyKGRldmljZUlkZW50aWZpZXIpKQorICAgICAgICBkZXZpY2UtPnNlc3Np
b25EaWRFbmQoKTsKK30KKworUmVmUHRyPFhSRGV2aWNlUHJveHk+IFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eTo6ZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKQor
eworICAgIGZvciAoYXV0byYgZGV2aWNlIDogbV9kZXZpY2VzKSB7CisgICAgICAgIGF1dG8qIGRl
dmljZVByb3h5ID0gc3RhdGljX2Nhc3Q8WFJEZXZpY2VQcm94eSo+KGRldmljZS5wdHIoKSk7Cisg
ICAgICAgIGlmIChkZXZpY2VQcm94eS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXIpCisgICAg
ICAgICAgICByZXR1cm4gZGV2aWNlUHJveHk7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQo=
</data>
<flag name="commit-queue"
          id="445806"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425768</attachid>
            <date>2021-04-12 11:51:39 -0700</date>
            <delta_ts>2021-04-12 14:28:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224353-20210412115138.patch</filename>
            <type>text/plain</type>
            <size>70541</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE5YzQyYWQ0ZjQzY2Q2
Y2UxMjI3NDM5ODFjYzE5M2M3MTc4ZmI0Yi4uZmU4OWIzOGIxMzU3ZTQzMzQxZTZmMjIzZjQ4MjIy
ZWM3YzUxZDVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTA0LTEyICBBZGEg
Q2hhbiAgPGFkYS5jaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGltcGxlbWVudGF0
aW9uIG9mIFdlYkNocm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgYW5k
IFhSRGV2aWNlUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNDM1MworCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAg
ICAgICBSZW1vdmUgUGxhdGZvcm1YUkRldmljZUNvY29hIGFzIFdlYktpdDo6WFJEZXZpY2VQcm94
eSB3aWxsIGJlIGltcGxlbWVudGluZyBQbGF0Zm9ybVhSOjpEZXZpY2UuCisgICAgICAgIEltcGxl
bWVudCB0aGUgZW5jb2RlL2RlY29kZSBtZXRob2RzIHRvIGVuYWJsZSBQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YSB0bworICAgICAgICBiZSBzZW50IG92ZXIgSVBDLgorCisgICAgICAgICog
cGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjp0
cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCBjb25zdCk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6RmxvYXRRdWF0ZXJuaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbjo6ZGVjb2Rl
KToKKyAgICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U6OmRl
Y29kZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZvdjo6
ZGVjb2RlKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpWaWV3Ojpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlZp
ZXc6OmRlY29kZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6U3Rh
Z2VQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhOjpkZWNvZGUpOgorICAg
ICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS94ci9jb2NvYS9QbGF0Zm9ybVhSQ29jb2EuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisKIDIwMjEtMDQtMTIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bnVzZWQgJ0RlZmF1bHREZWZpbmVPd25Qcm9wZXJ0eScgZXh0ZW5kZWQgYXR0cmli
dXRlIHN1cHBvcnQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk2ODI4NDBjZjkwYTE1ZjI1NWU3ZjA2N2VmYjI1YmNk
ODJhYzVhZGUuLmM5OWU5ZDQyM2M0ZmEzZDI2ODM5YmIyNmU4Zjg4NGY0YzM4Mzg5NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMjEtMDQtMTIgIEFkYSBDaGFuICA8YWRhLmNoYW5AYXBw
bGUuY29tPgorCisgICAgICAgIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgV2ViQ2hyb21lQ2xp
ZW50OjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSBhbmQgWFJEZXZpY2VQcm94eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MzUzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uCisKKyAgICAgICAgLSBBZGQgWFJEZXZpY2VQ
cm94eSB3aGljaCBpbXBsZW1lbnRzIFBsYXRmb3JtWFI6OkRldmljZS4KKyAgICAgICAgLSBJbXBs
ZW1lbnQgV2ViQ2hyb21lQ2xpZW50OjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSwgd2hp
Y2ggY2FsbHMgUGxhdGZvcm1YUlN5c3RlbVByb3h5CisgICAgICAgIHRvIGdldCB0aGUgbGlzdCBv
ZiBYUkRldmljZVByb3h5LgorICAgICAgICAtIFhSRGV2aWNlUHJveHkgZ29lcyB0aHJvdWdoIFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eSB0byBoYW5kbGUgaXRzIG9wZXJhdGlvbnMuCisgICAgICAgIFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eSBzZW5kcyBtZXNzYWdlcyBvdmVyIElQQyB0byBQbGF0Zm9ybVhS
U3lzdGVtIG9uIHRoZSBVSSBwcm9jZXNzIHNpZGUsCisgICAgICAgIHdoaWNoIGhhbmRsZXMgWFIg
ZGV2aWNlIGRpc2NvdmVyeSBhbmQgbWFuYWdlcyBzZXNzaW9ucyB2aWEgdGhlIFBsYXRmb3JtWFJD
b29yZGluYXRvciBpbnRlcmZhY2UuCisgICAgICAgIFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRp
bmF0b3IoKSByZXR1cm5zIG51bGwgZm9yIG5vdyBhbmQgd2lsbCBiZSBoYW5kbGVkIGluIGEgbGF0
ZXIgcGF0Y2guCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5u
b3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlhS
RGV2aWNlUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlhSRGV2aWNlUHJveHk6OlhS
RGV2aWNlUHJveHkpOgorICAgICAgICBJbml0aWFsaXplIGl0cyBkYXRhIG1lbWJlcnMgYmFzZWQg
b24gdGhlIFhSRGV2aWNlSW5mbyBwYXNzZWQgaW4uCisgICAgICAgIEtlZXAgYSB3ZWFrIHBvaW50
ZXIgdG8gUGxhdGZvcm1YUlN5c3RlbVByb3h5IChhcyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgaGFz
CisgICAgICAgIHN0cm9uZyByZWZlcmVuY2VzIHRvIGl0cyBsaXN0IG9mIFhSRGV2aWNlUHJveHkp
LgorICAgICAgICAoV2ViS2l0OjpYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKToKKyAgICAg
ICAgTm90aWZ5IHRoZSBUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCB0aGF0IHRoZSBzZXNzaW9u
IGhhcyBlbmRlZC4KKyAgICAgICAgKFdlYktpdDo6WFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6ZVRy
YWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6WFJEZXZpY2VQcm94eTo6c2h1
dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6OlhSRGV2aWNlUHJv
eHk6OnZpZXdzIGNvbnN0KToKKyAgICAgICAgUmV0dXJuIGxlZnQgYW5kIHJpZ2h0IHZpZXdzIGlm
IHRoZSBkZXZpY2Ugc3VwcG9ydHMgc3RlcmVvIHJlbmRlcmluZy4KKyAgICAgICAgT3RoZXJ3aXNl
IHJldHVybiBqdXN0IG9uZSB2aWV3LgorICAgICAgICAoV2ViS2l0OjpYUkRldmljZVByb3h5Ojpy
ZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Q
bGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvY29jb2EvUGxhdGZvcm1YUkNvY29hLmguCisgICAgICAgIEluaXRpYWwgaW50ZXJmYWNl
IGZvciBjb21tdW5pY2F0aW5nIHdpdGggdGhlIHBsYXRmb3JtIHJlZ2FyZGluZyBYUiBkZXZpY2Vz
IGFuZCBzZXNzaW9ucy4KKyAgICAgICAgRm9yIG5vdywgdGhlIGludGVyZmFjZSBjb3ZlcnMgc2Vz
c2lvbiBjcmVhdGlvbiBhbmQgdGVybWluYXRpb24sIGFuZCBzY2hlZHVsaW5nIGZyYW1lIHVwZGF0
ZXMuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvY29jb2EvUGxhdGZvcm1YUkNvY29hLmgu
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW46
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL2NvY29hL1BsYXRmb3JtWFJD
b2NvYS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1YUlN5c3RlbTo6UGxhdGZvcm1YUlN5c3Rl
bSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW06On5QbGF0Zm9ybVhSU3lzdGVt
KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1YUlN5c3RlbTo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIEVuZCBhbnkgZXhpc3Rpbmcgc2Vzc2lvbiBvbiBpbnZhbGlkYXRpb24uCisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW06OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW06OmluaXRpYWxpemVUcmFja2luZ0FuZFJl
bmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW06OnNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtOjpy
ZXF1ZXN0RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3Jk
aW5hdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKToKKyAgICAg
ICAgU2V0IHVwIHRoZSBQbGF0Zm9ybVhSU3lzdGVtIGhlbGQgYnkgdGhlIFdlYlBhZ2VQcm94eS4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAgSW52
YWxpZGF0ZSBtX3hyU3lzdGVtIHNvIGV4aXN0aW5nIHNlc3Npb24gaXMgZW5kZWQgcHJvcGVybHku
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oOgorICAgICAgICBJbmNsdWRlIFdlYWtI
YXNoU2V0LmggZHVlIHRvIHJlY2VudCB0eXBlIGNoYW5nZSBvZiBtX3Byb2Nlc3Nlc1JlcXVpcmlu
Z0hpZ2hQZXJmb3JtYW5jZQorICAgICAgICBmcm9tIEhhc2hTZXQgdG8gV2Vha0hhc2hTZXQuCisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyk6CisgICAg
ICAgIEdldCB0aGUgbGlzdCBvZiBYUkRldmljZUluZm8gdGhhdCByZXByZXNlbnRzIHRoZSBpbW1l
cnNpdmUgZGV2aWNlcyByZXR1cm5lZAorICAgICAgICBmcm9tIFBsYXRmb3JtWFJTeXN0ZW0uIFJl
dXNlIGFueSBleGlzdGluZyBYUkRldmljZVByb3h5IGluc3RhbmNlcyB0aGF0IGhhdmUgdGhlIHNh
bWUKKyAgICAgICAgWFJEZXZpY2VJZGVudGlmaWVyLiBPdGhlcndpc2UsIGNyZWF0ZSBuZXcgb25l
cy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnhyU3lzdGVtUHJveHkpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9QbGF0
Zm9ybVhSU3lzdGVtUHJveHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvY29jb2EvUGxhdGZvcm1YUkNvY29hLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL2NvY29hL1BsYXRmb3JtWFJDb2NvYS5oLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6On5QbGF0Zm9ybVhSU3lzdGVtUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmVudW1lcmF0ZUlt
bWVyc2l2ZVhSRGV2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94
eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1YUlN5c3RlbVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjpyZXF1ZXN0RnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNlc3Npb25EaWRFbmQpOgorICAgICAg
ICAoV2ViS2l0OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmRldmljZUJ5SWRlbnRpZmllcik6CisK
IDIwMjEtMDQtMTIgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV1BFXVtHVEtdIFVzZSBnX29iamVjdF9ub3RpZnlfYnlfcHNwZWMoKSB3aGVu
ZXZlciBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxh
dGZvcm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4
IDFmZWM4NGRjNTkxYjA5M2QxZDhiODMwMjIxMzc3NTllMzdhYzU4OWIuLjA0OTljNzZlMDZlYTY4
MDY5YTgxOGFlMzE1M2E0NzVjZjhmOWQ2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9Q
bGF0Zm9ybVhSLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgPSAwOworICAgIFRyYWNr
aW5nQW5kUmVuZGVyaW5nQ2xpZW50KiB0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQuZ2V0KCk7IH0KICAgICB2b2lk
IHNldFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KFdlYWtQdHI8VHJhY2tpbmdBbmRSZW5kZXJp
bmdDbGllbnQ+JiYgY2xpZW50KSB7IG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQgPSBXVEZN
b3ZlKGNsaWVudCk7IH0KIAogICAgIC8vIElmIHRoaXMgbWV0aG9kIHJldHVybnMgdHJ1ZSwgdGhh
dCBtZWFucyB0aGUgZGV2aWNlIHdpbGwgbm90aWZ5IFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50
CkBAIC0xMTAsMTEgKzExMSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmbG9hdCB5IHsgMC4w
ZiB9OwogICAgICAgICAgICAgZmxvYXQgeiB7IDAuMGYgfTsKICAgICAgICAgICAgIGZsb2F0IHcg
eyAxLjBmIH07CisKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxGbG9hdFF1YXRlcm5pb24+IGRlY29kZShEZWNvZGVyJik7CiAgICAg
ICAgIH07CiAKICAgICAgICAgc3RydWN0IFBvc2UgewogICAgICAgICAgICAgV2ViQ29yZTo6Rmxv
YXRQb2ludDNEIHBvc2l0aW9uOwogICAgICAgICAgICAgRmxvYXRRdWF0ZXJuaW9uIG9yaWVudGF0
aW9uOworCisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8UG9zZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAgfTsKIAogICAgICAg
ICBzdHJ1Y3QgRm92IHsKQEAgLTEyMywyMiArMTMwLDM3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGZsb2F0IGRvd24geyAwLjBmIH07CiAgICAgICAgICAgICBmbG9hdCBsZWZ0IHsgMC4wZiB9Owog
ICAgICAgICAgICAgZmxvYXQgcmlnaHQgeyAwLjBmIH07CisKKyAgICAgICAgICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxGb3Y+IGRlY29kZShEZWNv
ZGVyJik7CiAgICAgICAgIH07CiAKLSAgICAgICAgdXNpbmcgUHJvamVjdGlvbiA9IFZhcmlhbnQ8
Rm92LCBzdGQ6OmFycmF5PGZsb2F0LCAxNj4sIHN0ZDo6bnVsbHB0cl90PjsKKyAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgcHJvamVjdGlvbk1hdHJpeFNpemUgPSAxNjsKKyAgICAgICAg
dHlwZWRlZiBzdGQ6OmFycmF5PGZsb2F0LCBwcm9qZWN0aW9uTWF0cml4U2l6ZT4gUHJvamVjdGlv
bk1hdHJpeDsKKworICAgICAgICB1c2luZyBQcm9qZWN0aW9uID0gVmFyaWFudDxGb3YsIFByb2pl
Y3Rpb25NYXRyaXgsIHN0ZDo6bnVsbHB0cl90PjsKIAogICAgICAgICBzdHJ1Y3QgVmlldyB7CiAg
ICAgICAgICAgICBQb3NlIG9mZnNldDsKICAgICAgICAgICAgIFByb2plY3Rpb24gcHJvamVjdGlv
biA9IHsgbnVsbHB0ciB9OworCisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Vmlldz4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAg
fTsKIAogICAgICAgICBzdHJ1Y3QgU3RhZ2VQYXJhbWV0ZXJzIHsKICAgICAgICAgICAgIGludCBp
ZCB7IDAgfTsKICAgICAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFBvaW50PiBib3VuZHM7
CisKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxTdGFnZVBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CiAgICAgICAgIH07CiAK
ICAgICAgICAgc3RydWN0IExheWVyRGF0YSB7CiAgICAgICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0
IG9wYXF1ZVRleHR1cmUgeyAwIH07CisKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxMYXllckRhdGE+IGRlY29kZShEZWNvZGVyJik7
CiAgICAgICAgIH07CiAKICAgICAgICAgYm9vbCBpc1RyYWNraW5nVmFsaWQgeyBmYWxzZSB9OwpA
QCAtMTUxLDYgKzE3Myw5IEBAIHB1YmxpYzoKICAgICAgICAgU3RhZ2VQYXJhbWV0ZXJzIHN0YWdl
UGFyYW1ldGVyczsKICAgICAgICAgVmVjdG9yPFZpZXc+IHZpZXdzOwogICAgICAgICBIYXNoTWFw
PExheWVySGFuZGxlLCBMYXllckRhdGE+IGxheWVyczsKKworICAgICAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxGcmFtZURhdGE+IGRlY29kZShEZWNvZGVy
Jik7CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXllclZpZXcgewpAQCAtMjA3LDYgKzIzMiwyMjEg
QEAgcHJpdmF0ZToKICAgICBEZXZpY2VMaXN0IG1faW1tZXJzaXZlWFJEZXZpY2VzOwogfTsKIAor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVh
dGVybmlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCB4IDw8IHkgPDwgeiA8PCB3OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9u
YWw8RGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbj4gRGV2aWNlOjpGcmFtZURhdGE6
OkZsb2F0UXVhdGVybmlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgRGV2aWNl
OjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbiBmbG9hdFF1YXRlcm5pb247CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShmbG9hdFF1YXRlcm5pb24ueCkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmbG9hdFF1YXRlcm5pb24ueSkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmbG9hdFF1
YXRlcm5pb24ueikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShmbG9hdFF1YXRlcm5pb24udykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIGZsb2F0UXVhdGVybmlvbjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OlBvc2U6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcG9zaXRpb24gPDwgb3JpZW50YXRpb247Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6
UG9zZT4gRGV2aWNlOjpGcmFtZURhdGE6OlBvc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIERldmljZTo6RnJhbWVEYXRhOjpQb3NlIHBvc2U7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwb3NlLnBvc2l0aW9uKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBvc2Uub3JpZW50YXRpb24pKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBwb3NlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBEZXZpY2U6OkZyYW1lRGF0YTo6Rm92OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHVwIDw8IGRvd24gPDwgbGVmdCA8PCByaWdodDsKK30K
KwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpG
b3Y+IERldmljZTo6RnJhbWVEYXRhOjpGb3Y6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIERldmljZTo6RnJhbWVEYXRhOjpGb3YgZm92OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Zm92LnVwKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGZvdi5kb3duKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGZvdi5sZWZ0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvdi5yaWdodCkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIGZvdjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXc6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgb2Zmc2V0OworCisgICAgYm9vbCBoYXNGb3YgPSBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3Y+KHBy
b2plY3Rpb24pOworICAgIGVuY29kZXIgPDwgaGFzRm92OworICAgIGlmIChoYXNGb3YpIHsKKyAg
ICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
Rm92Pihwcm9qZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaGFz
UHJvamVjdGlvbk1hdHJpeCA9IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OlByb2plY3Rpb25NYXRyaXg+KHByb2plY3Rpb24pOworICAgIGVuY29k
ZXIgPDwgaGFzUHJvamVjdGlvbk1hdHJpeDsKKyAgICBpZiAoaGFzUHJvamVjdGlvbk1hdHJpeCkg
eworICAgICAgICBmb3IgKGZsb2F0IGYgOiBXVEY6OmdldDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YTo6UHJvamVjdGlvbk1hdHJpeD4ocHJvamVjdGlvbikpCisgICAgICAgICAgICBlbmNv
ZGVyIDw8IGY7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxzdGQ6Om51bGxwdHJfdD4ocHJvamVjdGlvbikpOworfQorCit0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OlZpZXc+IERldmlj
ZTo6RnJhbWVEYXRhOjpWaWV3OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6VmlldyB2aWV3OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodmlldy5vZmZzZXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
Ym9vbCBoYXNGb3Y7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNGb3YpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKGhhc0ZvdikgeworICAgICAgICBQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92IGZvdjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShmb3YpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgdmll
dy5wcm9qZWN0aW9uID0geyBXVEZNb3ZlKGZvdikgfTsKKyAgICAgICAgcmV0dXJuIHZpZXc7Cisg
ICAgfQorCisgICAgYm9vbCBoYXNQcm9qZWN0aW9uTWF0cml4OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaGFzUHJvamVjdGlvbk1hdHJpeCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBpZiAoaGFzUHJvamVjdGlvbk1hdHJpeCkgeworICAgICAgICBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6UHJvamVjdGlvbk1hdHJpeCBwcm9qZWN0aW9uTWF0cml4OworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
Ojpwcm9qZWN0aW9uTWF0cml4U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBmbG9hdCBmOworICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcHJvamVjdGlvbk1hdHJpeFtpXSA9IGY7CisgICAg
ICAgIH0KKyAgICAgICAgdmlldy5wcm9qZWN0aW9uID0geyBXVEZNb3ZlKHByb2plY3Rpb25NYXRy
aXgpIH07CisgICAgICAgIHJldHVybiB2aWV3OworICAgIH0KKworICAgIHZpZXcucHJvamVjdGlv
biA9IHsgbnVsbHB0ciB9OworICAgIHJldHVybiB2aWV3OworfQorCit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgordm9pZCBEZXZpY2U6OkZyYW1lRGF0YTo6U3RhZ2VQYXJhbWV0ZXJzOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkOworICAgIGVuY29k
ZXIgPDwgYm91bmRzOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8RGV2
aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVycz4gRGV2aWNlOjpGcmFtZURhdGE6OlN0YWdl
UGFyYW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVycyBzdGFnZVBhcmFtZXRlcnM7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdGFnZVBhcmFtZXRlcnMuaWQpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhZ2VQYXJhbWV0ZXJzLmJv
dW5kcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0YWdlUGFy
YW1ldGVyczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRGV2aWNlOjpGcmFt
ZURhdGE6OkxheWVyRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBvcGFxdWVUZXh0dXJlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
T3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gRGV2aWNlOjpGcmFtZURhdGE6
OkxheWVyRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YSBsYXllckRhdGE7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShsYXllckRhdGEub3BhcXVlVGV4dHVyZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIGxheWVyRGF0YTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgaXNUcmFja2luZ1ZhbGlkOworICAgIGVuY29kZXIgPDwgaXNQ
b3NpdGlvblZhbGlkOworICAgIGVuY29kZXIgPDwgaXNQb3NpdGlvbkVtdWxhdGVkOworICAgIGVu
Y29kZXIgPDwgc2hvdWxkUmVuZGVyOworICAgIGVuY29kZXIgPDwgcHJlZGljdGVkRGlzcGxheVRp
bWU7CisgICAgZW5jb2RlciA8PCBvcmlnaW47CisgICAgZW5jb2RlciA8PCBmbG9vclRyYW5zZm9y
bTsKKyAgICBlbmNvZGVyIDw8IHN0YWdlUGFyYW1ldGVyczsKKyAgICBlbmNvZGVyIDw8IHZpZXdz
OworICAgIGVuY29kZXIgPDwgbGF5ZXJzOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
T3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE+IERldmljZTo6RnJhbWVEYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBmcmFt
ZURhdGE7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEuaXNUcmFja2luZ1ZhbGlk
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGZyYW1lRGF0YS5pc1Bvc2l0aW9uVmFsaWQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRlZCkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShm
cmFtZURhdGEuc2hvdWxkUmVuZGVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSkpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFt
ZURhdGEub3JpZ2luKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGZyYW1lRGF0YS5mbG9vclRyYW5zZm9ybSkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEuc3RhZ2VQYXJh
bWV0ZXJzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGZyYW1lRGF0YS52aWV3cykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEubGF5ZXJzKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gZnJhbWVEYXRhOworfQorCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKQogCiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhSCisKKyNpZiBFTkFCTEUoV0VC
WFIpCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFBs
YXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgICAgIFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSwKKyAgICAgICAg
UGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXIsCisgICAgICAgIFBsYXRmb3Jt
WFI6OlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWwsCisgICAgICAgIFBsYXRmb3JtWFI6OlJlZmVy
ZW5jZVNwYWNlVHlwZTo6TG9jYWxGbG9vciwKKyAgICAgICAgUGxhdGZvcm1YUjo6UmVmZXJlbmNl
U3BhY2VUeXBlOjpCb3VuZGVkRmxvb3IsCisgICAgICAgIFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNw
YWNlVHlwZTo6VW5ib3VuZGVkCisgICAgPjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9jb2NvYS9QbGF0Zm9ybVhSQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL2NvY29hL1BsYXRmb3JtWFJDb2NvYS5oCmluZGV4IDMx
YzlmNzk3MTVlZTczMDEyZDBhZmExMjEzYTFjMGY4ZDQxYmFiNDMuLjI3NzdjZTQ5MGQwMTBkYzY5
NTIzZGQyYzY4Njk2NmRkN2IxZjFjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL2NvY29hL1BsYXRmb3JtWFJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL2NvY29hL1BsYXRmb3JtWFJDb2NvYS5oCkBAIC0yNywyMiArMjcsNSBAQAogCiAjaWYg
RU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgi
Ci0KLW5hbWVzcGFjZSBQbGF0Zm9ybVhSIHsKLQotY2xhc3MgUGxhdGZvcm1YUkRldmljZUNvY29h
IDogcHVibGljIERldmljZSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdB
bmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgc2h1dERvd25U
cmFja2luZ0FuZFJlbmRlcmluZygpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgaW5pdGlhbGl6ZVJl
ZmVyZW5jZVNwYWNlKFJlZmVyZW5jZVNwYWNlVHlwZSkgb3ZlcnJpZGUgeyB9Ci0gICAgVmVjdG9y
PFZpZXdEYXRhPiB2aWV3cyhTZXNzaW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyB9
OyB9Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgb3ZlcnJp
ZGUgeyB9Ci0gICAgT3B0aW9uYWw8TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1
aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsg
fTsKLSAgICB2b2lkIGRlbGV0ZUxheWVyKExheWVySGFuZGxlKSBvdmVycmlkZSB7IH07Ci19Owot
Ci19Ci0KICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvUGxhdGZvcm1YUkFkZGl0aW9ucy5oPgot
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCAwZTBmYjg3MGU1MWE0NDYwNjMxNWE5NGEyNGM1NDYxMjlhYjBlYjZkLi5mOWZmNzE2
MjI0NmY3NTMxZGExNGE3NTc0NzQ5ZjU4YTIyN2JkYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05OCw2ICs5OCw3IEBAICQoUFJPSkVD
VF9ESVIpL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCiAkKFBST0pFQ1Rf
RElSKS9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5p
bgorJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0x
MDUsOCArMTA2LDggQEAgJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eS5tZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9N
ZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0xOTgsNiArMTk5LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL0F1ZGlvQ2Fw
dHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
Y29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDM0YWMzYjFmYTkzNDc2ZDE1ZTQyNGZiN2IzMDczZmU1Mjcz
OTc4NDIuLjc1NDdiZWE5ZWNkYTYxNTQ3ZmRjYmY5OTgyYjM1NTE5NzkyZjEzNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTA5LDYg
KzEwOSwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9O
ZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZl
ci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdv
cmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsYXRmb3JtWFJTeXN0ZW1N
ZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9QbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF0Zm9ybVhS
U3lzdGVtUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF0Zm9ybVhSU3lzdGVtUHJveHlNZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF0Zm9ybVhSU3lzdGVt
UHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTI4OCwx
MiArMjk0LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZVRleHRUcmFja1Byb3h5TWVzc2FnZXNSZXBsaWVzCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlc1JlcGxpZXMu
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlV2Vi
SW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlNZXNzYWdl
cy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVX
ZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2Vp
dmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzUmVwbGllcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVXZWJJbnNw
ZWN0b3JVSVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYklu
c3BlY3RvclVJUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2Vp
dmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXNSZXBs
aWVzLmgKQEAgLTQxOCw5ICs0MjQsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzcwogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvV2ViSW5zcGVjdG9yTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yTWVzc2FnZXNSZXBsaWVzLmgKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXMuaAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VzUmVwbGll
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlc1JlcGxp
ZXMuaApAQCAtNDMwLDYgKzQzMyw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSU1lc3Nh
Z2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXNS
ZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
Yk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk1ETlNSZWdpc3Rlck1lc3NhZ2VzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk1ETlNSZWdpc3Rlck1lc3Nh
Z2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggOTViZjQ1MTZhNmUx
ZGQxYzRhZDQwYTBmZTk4MTRiN2U5MDY5YjIxZC4uOGE1N2E0NWQ1Y2Q3NjI2NDk5ZWM4MzQwYmJi
MDI5ZmNjMjg5NjVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTYxLDYgKzE2
MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlciBcCiAJVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5IFwKIAlV
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9Db2NvYS9Q
bGF0Zm9ybVhSU3lzdGVtIFwKIAlVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5IFwKIAlVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSBc
CiAJVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCkBAIC0yMTgs
NiArMjE5LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYlByb2Nlc3MgXAorCVdlYlByb2Nlc3Mv
Y29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5IFwKIAlXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBhOTgzYjVmNTYxODU1MmIzMTA3NmJhMjk4NmIzNWRi
YjhkZjIwNzY5Li40MTFlZDNlZGY1NWUzZGFhMWYxMDI5NjBkYzdiOTRjZGVhNzhlYWJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtMTA0LDYgKzEwNCw3IEBAIGV4dGVybiAiQyIgewog
ICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2hlZWxFdmVudHMpIFwKKyAg
ICBNKFhSKSBcCiAKIFdFQktJVDJfTE9HX0NIQU5ORUxTKERFQ0xBUkVfTE9HX0NIQU5ORUwpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGRkNGI0MGIzNzAx
MDQxNmNjNmI0MDc3NzQzMTU3ZTI5MWU4NTkwODIuLmVkMDc2MWU1ZTk2NjM4MmUwMDk1MzQ0Y2I3
NWY5NzVmZDllZjc3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtMzQzLDYgKzM0Myw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OlRyYW5zYWN0aW9uSUQnLAogICAgICAgICAnV2Vi
S2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlhSRGV2aWNlSWRlbnRp
ZmllcicsCiAgICAgXSkKIAogCkBAIC03NzcsNiArNzc4LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5
cGUodHlwZSk6CiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEn
OiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0
cnVjdCBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YSc6IFsnIldlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnd2VicnRjOjpXZWJLaXRFbmNv
ZGVkRnJhbWVJbmZvJzogWyc8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oPicsICc8
V2ViQ29yZS9MaWJXZWJSVENFbnVtVHJhaXRzLmg+J10sCisgICAgICAgICdQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YSc6IFsnPFdlYkNvcmUvUGxhdGZvcm1YUi5oPiddLAogICAgIH0KIAog
ICAgIGhlYWRlcnMgPSBbXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
WFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM2YjUxNzA5NTRlM2JiZGM4YWU2ZDlmZGJkYzkwZTNlMWNjNjc2MTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVBy
b3h5LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5j
bHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3Rl
bVByb3h5OworCitzdHJ1Y3QgWFJEZXZpY2VJbmZvOworCitjbGFzcyBYUkRldmljZVByb3h5IGZp
bmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxYUkRldmljZVByb3h5PiBjcmVhdGUoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eSYpOworICAgIFhSRGV2aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIHNlc3Npb25EaWRFbmQoKTsKKworcHJpdmF0
ZToKKyAgICBYUkRldmljZVByb3h5KFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVtUHJv
eHkmKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3Jt
WFI6OlNlc3Npb25Nb2RlKSBmaW5hbDsKKyAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVJl
ZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9Cisg
ICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IHZpZXdzKFBsYXRmb3JtWFI6
OlNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9y
bVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIE9wdGlvbmFs
PFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qs
IHVpbnQzMl90LCBib29sKSBvdmVycmlkZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH07CisgICAg
dm9pZCBkZWxldGVMYXllcihQbGF0Zm9ybVhSOjpMYXllckhhbmRsZSkgb3ZlcnJpZGUgeyB9Owor
CisgICAgWFJEZXZpY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWFrUHRyPFBsYXRm
b3JtWFJTeXN0ZW1Qcm94eT4gbV94clN5c3RlbTsKKyAgICBib29sIG1fc3VwcG9ydHNTdGVyZW9S
ZW5kZXJpbmcgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9YUkRldmljZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQ
cm94eS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYzA2NjJmNTdmNzU3NjQ1NGM1NTk3YTkwMWQxZDhiOWJjYjg3
NmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZp
Y2VQcm94eS5tbQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJYUkRldmljZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNp
bXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgorI2ltcG9ydCAiWFJEZXZpY2VJbmZvLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBQbGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
UmVmPFhSRGV2aWNlUHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8mJiBk
ZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJTeXN0
ZW0pKTsKK30KKworWFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiBk
ZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQorICAgIDogbV94clN5
c3RlbShtYWtlV2Vha1B0cih4clN5c3RlbSkpCit7CisgICAgbV9pZGVudGlmaWVyID0gZGV2aWNl
SW5mby5pZGVudGlmaWVyOworICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZpY2VJ
bmZvLnN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nOworICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRy
YWNraW5nID0gZGV2aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7CisgICAgaWYg
KCFkZXZpY2VJbmZvLmZlYXR1cmVzLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0RW5hYmxlZEZlYXR1
cmVzKFNlc3Npb25Nb2RlOjpJbW1lcnNpdmVWciwgZGV2aWNlSW5mby5mZWF0dXJlcyk7Cit9CisK
K3ZvaWQgWFJEZXZpY2VQcm94eTo6c2Vzc2lvbkRpZEVuZCgpCit7CisgICAgaWYgKHRyYWNraW5n
QW5kUmVuZGVyaW5nQ2xpZW50KCkpCisgICAgICAgIHRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50
KCktPnNlc3Npb25EaWRFbmQoKTsKK30KKwordm9pZCBYUkRldmljZVByb3h5Ojppbml0aWFsaXpl
VHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUgc2Vzc2lvbk1vZGUp
Cit7CisgICAgaWYgKHNlc3Npb25Nb2RlICE9IFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlOjpJbW1l
cnNpdmVWcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAg
IG1feHJTeXN0ZW0tPmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpOworfQorCit2b2lk
IFhSRGV2aWNlUHJveHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQoreworICAgIGlm
IChtX3hyU3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5zaHV0RG93blRyYWNraW5nQW5kUmVu
ZGVyaW5nKCk7Cit9CisKK1ZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiBYUkRl
dmljZVByb3h5Ojp2aWV3cyhTZXNzaW9uTW9kZSBtb2RlKSBjb25zdAoreworICAgIFZlY3RvcjxE
ZXZpY2U6OlZpZXdEYXRhPiB2aWV3czsKKyAgICBpZiAobV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmlu
ZyAmJiBtb2RlID09IFNlc3Npb25Nb2RlOjpJbW1lcnNpdmVWcikgeworICAgICAgICB2aWV3cy5h
cHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpMZWZ0IH0pOworICAgICAgICB2aWV3cy5hcHBl
bmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpSaWdodCB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAg
dmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6Tm9uZSB9KTsKKyAgICByZXR1cm4g
dmlld3M7Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6
OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV94
clN5c3RlbSkKKyAgICAgICAgbV94clN5c3RlbS0+cmVxdWVzdEZyYW1lKFdURk1vdmUoY2FsbGJh
Y2spKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4
IGJiMzI0OTA3OTM0ZjMwZmE0Yjc3ZjMyYmM3M2JhMzJmNDk4NDI4ZjMuLjYxOTcwODc4MjUxMTU0
OGI2MmYyNzE1NmJkM2Y0N2Q3MWEzMWVhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMDM5LDE5ICsxMDM5LDQgQEAgdGVtcGxhdGUgPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2
ZW50Rm9yVGVzdGkKIH07CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikKLQotdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGU+IHsKLSAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBQbGF0Zm9ybVhSOjpSZWZlcmVu
Y2VTcGFjZVR5cGUsCi0gICAgICAgIFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmll
d2VyLAotICAgICAgICBQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGU6OkxvY2FsLAotICAg
ICAgICBQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGU6OkxvY2FsRmxvb3IsCi0gICAgICAg
IFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yLAotICAgICAgICBQ
bGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGU6OlVuYm91bmRlZAotICAgID47Ci19OwotCi0j
ZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjZl
MTZmMmJjODRjMGQ1MGE2NjU1YTczMzZmYzlmMjZiNGQ2NGE0NC4uMGMzMjViNjAzMDBjNTU5YWJi
NTgwYTc1YjA0YTQxOTRmMDQ5OTY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMTgxLDYg
KzE4MSw3IEBAIFNoYXJlZC9Db2NvYS9XS05TVVJMUmVxdWVzdC5tbQogU2hhcmVkL0NvY29hL1dL
T2JqZWN0Lm1tCiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2Eu
bW0KIFNoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KK1NoYXJlZC9Db2NvYS9YUkRldmljZVBy
b3h5Lm1tCiAKIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBD
U2VydmljZUVudHJ5UG9pbnQubW0KIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTM5NSw2ICszOTYsNyBAQCBVSVByb2Nlc3Mv
Q29jb2EvTWVkaWFVdGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25V
dGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KIFVJUHJvY2Vz
cy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCitVSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1Y
UlN5c3RlbS5tbQogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bQogVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC01ODYsNiArNTg4LDcgQEAgV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCiAKIFdlYlByb2Nlc3MvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yQ29jb2EubW0KIAorV2ViUHJvY2Vzcy9j
b2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0KIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbQogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlci5jcHAKIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAK
QEAgLTcwMSw2ICs3MDQsOCBAQCBHUFVQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2Vi
UlRDQ29kZWNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBNZXNzYWdlTmFtZXMuY3BwCitQbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZVJl
Y2VpdmVyLmNwcAorUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRp
b0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb1Nlc3Npb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4OTU0OTgwMzZiMWNhZGRl
ZTE1MGJmM2RiODk1YzUyNzAzYTkwY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNs
dWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJYUkRldmljZUluZm8uaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKKworY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICB1
c2luZyBEZXZpY2VJbmZvQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPFhSRGV2aWNl
SW5mbz4pPjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJpbWFyeURldmljZUluZm8oRGV2aWNlSW5m
b0NhbGxiYWNrJiYpID0gMDsKKworICAgIC8vIFNlc3Npb24gY3JlYXRpb24vdGVybWluYXRpb24u
CisgICAgdXNpbmcgT25TZXNzaW9uRW5kQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFhSRGV2aWNl
SWRlbnRpZmllcik+OworICAgIHZpcnR1YWwgdm9pZCBzdGFydFNlc3Npb24oV2ViUGFnZVByb3h5
JiwgT25TZXNzaW9uRW5kQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTZXNz
aW9uSWZFeGlzdHMoV2ViUGFnZVByb3h5JikgPSAwOworCisgICAgLy8gU2Vzc2lvbiBkaXNwbGF5
IGxvb3AuCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uRnJhbWUoV2ViUGFnZVBy
b3h5JiwgUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSA9IDA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMTIzMDM1NmVmZjU2YjZmZmRiYjE3YmQyMmU3MTBkYzgyMTA4MDU4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3Rl
bS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShXRUJYUikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGxhdGZv
cm1YUkNvb3JkaW5hdG9yOworY2xhc3MgV2ViUGFnZVByb3h5OworCitzdHJ1Y3QgWFJEZXZpY2VJ
bmZvOworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVtIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQbGF0Zm9y
bVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYpOworICAgIHZpcnR1YWwgflBsYXRmb3JtWFJTeXN0ZW0o
KTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBQbGF0
Zm9ybVhSQ29vcmRpbmF0b3IqIHhyQ29vcmRpbmF0b3IoKTsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKKyAgICB2b2lk
IGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxYUkRldmljZUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJl
bmRlcmluZygpOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpOworICAg
IHZvaWQgcmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGEmJik+JiYpOworCisgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiYWY4MWIyOTkxNzJkYzVhNzg3YjkyM2JmNDc2MGQ0
NDQ5MzE3YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworIAorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCWFIpCisKK21lc3NhZ2VzIC0+
IFBsYXRmb3JtWFJTeXN0ZW0gTm90UmVmQ291bnRlZCB7CisgICAgRW51bWVyYXRlSW1tZXJzaXZl
WFJEZXZpY2VzKCkgLT4gKFZlY3RvcjxXZWJLaXQ6OlhSRGV2aWNlSW5mbz4gZGV2aWNlc0luZm9z
KSBBc3luYworICAgIEluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpCisgICAgU2h1dERv
d25UcmFja2luZ0FuZFJlbmRlcmluZygpCisgICAgUmVxdWVzdEZyYW1lKCkgLT4gKHN0cnVjdCBQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGEpIEFzeW5jCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5
c3RlbS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDZhNjc3YWJiZDU0MTIxMTY0N2RlODEzNmViZDZiYzRjNjE5NTY2MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3Jt
WFJTeXN0ZW0ubW0KQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW0uaCIKKworI2lmIEVOQUJMRShXRUJYUikK
KworI2ltcG9ydCAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVhS
U3lzdGVtTWVzc2FnZXMuaCIKKyNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2Vz
LmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxhdGZvcm1YUlN5c3RlbTo6UGxhdGZvcm1YUlN5
c3RlbShXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKKyAgICBtX3Bh
Z2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3Rl
bTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCksICp0aGlzKTsKK30K
KworUGxhdGZvcm1YUlN5c3RlbTo6flBsYXRmb3JtWFJTeXN0ZW0oKQoreworICAgIG1fcGFnZS5w
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVt
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1YUlN5c3RlbTo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKHhyQ29vcmRpbmF0b3Io
KSkKKyAgICAgICAgeHJDb29yZGluYXRvcigpLT5lbmRTZXNzaW9uSWZFeGlzdHMobV9wYWdlKTsK
K30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3Rl
bTo6eHJDb29yZGluYXRvcigpOworICAgIGlmICgheHJDb29yZGluYXRvcikgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgeHJD
b29yZGluYXRvci0+Z2V0UHJpbWFyeURldmljZUluZm8oW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gZGV2aWNlSW5m
bykgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGV2aWNlSW5mbyA9IFdURk1v
dmUoZGV2aWNlSW5mbyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIWRldmljZUluZm8p
IHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyBkZXZpY2VJbmZvLnZhbHVlKCkgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2
b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpCit7
CisgICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0
b3IoKTsKKyAgICBpZiAoIXhyQ29vcmRpbmF0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIHhy
Q29vcmRpbmF0b3ItPnN0YXJ0U2Vzc2lvbihtX3BhZ2UsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKV0oWFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpIHsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgZGV2aWNlSWRlbnRpZmllcl0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFr
VGhpcy0+bV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6U2Vzc2lv
bkRpZEVuZChkZXZpY2VJZGVudGlmaWVyKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2
b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQorewor
ICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGlu
YXRvcigpKQorICAgICAgICB4ckNvb3JkaW5hdG9yLT5lbmRTZXNzaW9uSWZFeGlzdHMobV9wYWdl
KTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpyZXF1ZXN0RnJhbWUoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0
ZW06OnhyQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgeHJDb29yZGluYXRvci0+c2NoZWR1bGVBbmlt
YXRpb25GcmFtZShtX3BhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworUGxh
dGZvcm1YUkNvb3JkaW5hdG9yKiBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggNmZiY2IzYmI2ODMzZjk4MDc1Y2E2MmE1YjdmZDU3ZmMzNzMwZDc4
My4uMDUxZGE4NzY1OGRkMzg5YmFmZmZlYmI2NzQ5ODJlNjk5NTY2MDMxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDI1LDYgKzEwMjUsMTEgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogICAgIEFTU0VSVCgh
bV93ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkpOwogICAgIG1fd2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5ID0gbWFrZVVuaXF1ZTxXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHk+KCp0aGlzKTsKICNlbmRpZgorCisjaWYgRU5B
QkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBBU1NFUlQoIW1feHJTeXN0ZW0pOwor
ICAgIG1feHJTeXN0ZW0gPSBtYWtlVW5pcXVlPFBsYXRmb3JtWFJTeXN0ZW0+KCp0aGlzKTsKKyNl
bmRpZgogfQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFBy
b2Nlc3NGb3JSZWxvYWQoKQpAQCAtNzU4OCw2ICs3NTkzLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKICNlbmRpZgog
CiAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbnVsbHB0cjsKKwor
I2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKG1feHJTeXN0ZW0p
IHsKKyAgICAgICAgbV94clN5c3RlbS0+aW52YWxpZGF0ZSgpOworICAgICAgICBtX3hyU3lzdGVt
ID0gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0
U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0
aW9uUmVhc29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhYWU1
ZmNmMDVhYjFjMTIyZGMzNjViODk5YWNjZDNiMGMwN2VhYzQ0Li5mNDkxNWFlZGY0NmFiOTlhYTA0
YTFmYmViMTM0ZmY5ZDE1MTU0NmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTgzLDYgKzE4MywxMCBAQCBpbnRlcmZhY2UgSUQzRDExRGV2aWNlMTsKICNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbklkZW50aWZpZXIuaD4KICNlbmRpZgogCisjaWYgRU5B
QkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVt
LmgiCisjZW5kaWYKKwogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxXZWJL
aXRBZGRpdGlvbnMvV2ViUGFnZVByb3h5QWRkaXRpb25zQmVmb3JlLmg+CiAjZW5kaWYKQEAgLTI5
OTEsNiArMjk5NSwxMCBAQCBwcml2YXRlOgogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAKKyNpZiBFTkFC
TEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVhSU3lzdGVtPiBtX3hyU3lzdGVtOworI2VuZGlmCisKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBhZ2VQcm94eUFkZGl0aW9uc0FmdGVy
Lmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdo
UGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGln
aFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oCmluZGV4IGMzYjM2NTQyMWEyY2UzMGRlYjZhZTc5NmRl
ZmE1MzVlOTY5MWNhYTUuLjg5NDBlMDZkYTcwNDNiMTVhZDBiMDUyOTAwYjg3OTBjMDQ4ODBjZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VH
UFVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3Jt
YW5jZUdQVU1hbmFnZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8T3BlbkdML0NH
TFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMWMyNWNhZjAyMGJjZWNiZjgx
ZTJkYWFiNWE3NzFjNDk4YmU5MDRjLi41M2E3NGUxZDI4NmU1OGNiNWNkYjkzMmM5MGVlYzg0ZTk2
NDcyZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExMDAsNiArMTEwMCwxMCBAQAogCQk1MUZEMThCNjE2NTFGQkFEMDBEQkUxQ0Ug
LyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291
cmNlTG9hZGVyLmggKi87IH07CiAJCTUyNTA4MEIxMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmlj
ZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAqLzsg
fTsKIAkJNTI1MDgwQjIyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI1MDgwQUYyNjFCREU2QzAw
Njc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovOyB9OworCQk1MjYzRTI1NzI2MUU3M0RGMDAxOEQ0
N0QgLyogWFJEZXZpY2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTI2M0UyNTUyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCAq
LzsgfTsKKwkJNTI2M0UyNUEyNjFFOTNBNzAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0Uy
NEQyNjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5oICovOyB9OworCQk1
MjYzRTI1QjI2MUU5M0FCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNEYyNjFFNzJFQjAwMThE
NDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLzsgfTsKKwkJNTI2M0UyNUYyNjFFOTZFRjAwMThE
NDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNUQyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eS5oICovOyB9OwogCQk1MjcyRDRDOTFFNzM1RjA5MDBFQjQyOTAgLyogV0tQ
cm90ZWN0aW9uU3BhY2VOUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTI3MkQ0QzcxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjhD
MzdDMTE5NUNCQjFBMDBEOEI5Q0MgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTlGMjgxMDE5NThGNDc4
MDA4Q0FDNzIgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJENUExQjAxQzU3NDk1QTAwREUzNEEz
IC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwpAQCAtNDE2MCw2ICs0MTY0LDE1IEBACiAJ
CTUyNTA4MEFEMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUluZm8ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUkRldmljZUluZm8ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUlk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNTA4MEFGMjYxQkRFNkMw
MDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gWFJEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNjNFMjRE
MjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUyNjNFMjRFMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTI2M0UyNEYyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MjYzRTI1MDI2MUU3MkVDMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MjYzRTI1NDI2MUU3M0RFMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94
eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFhSRGV2aWNlUHJv
eHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNjNFMjU1MjYxRTczREYwMDE4
RDQ3RCAvKiBYUkRldmljZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFhSRGV2aWNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI2M0UyNUMy
NjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTI2M0UyNUQyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTI2M0UyNUUyNjFFOTZFMDAwMThENDdEIC8qIFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJENEM3MUU3MzVGMDkwMEVC
NDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdLUHJvdGVjdGlvblNwYWNlTlMuaDsgcGF0aCA9IG1hYy9XS1Byb3RlY3Rpb25TcGFj
ZU5TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJENEM4MUU3MzVGMDkwMEVC
NDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV0tQcm90ZWN0aW9uU3BhY2VOUy5tbTsgcGF0aCA9IG1hYy9XS1Byb3Rl
Y3Rpb25TcGFjZU5TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTFBQTFD
NTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk4Nyw2ICs3MDAwLDEwIEBACiAJCQkJMUFC
QzNERjMxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5tbSAqLywKIAkJCQk1QzZD
RTZEMzFGNTlFQTM1MDAwN0M2Q0IgLyogUGFnZUNsaWVudEltcGxDb2NvYS5oICovLAogCQkJCTVD
NkNFNkQwMUY1OUJDNDYwMDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLm1tICovLAorCQkJ
CTUyNjNFMjREMjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLywK
KwkJCQk1MjYzRTI0RjI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oICovLAor
CQkJCTUyNjNFMjUwMjYxRTcyRUMwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2Vz
LmluICovLAorCQkJCTUyNjNFMjRFMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVt
Lm1tICovLAogCQkJCUNEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkuaCAqLywKIAkJCQlDREEyOUEyMjFDQkVCNjFBMDA5MDFDQ0YgLyogUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTFGMUNCRUI1
RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi8sCkBAIC04MjUx
LDYgKzgyNjgsOCBAQAogCQkJCTUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUlk
ZW50aWZpZXIuaCAqLywKIAkJCQk1MjUwODBBRjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJ
bmZvLmggKi8sCiAJCQkJNTI1MDgwQUQyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5t
bSAqLywKKwkJCQk1MjYzRTI1NTI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oICov
LAorCQkJCTUyNjNFMjU0MjYxRTczREUwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5Lm1tICovLAog
CQkJKTsKIAkJCW5hbWUgPSBjb2NvYTsKIAkJCXBhdGggPSBDb2NvYTsKQEAgLTkyNDEsNiArOTI2
MCw5IEBACiAJCQkJQzFBMTUyRDYyNEU1QTI5QTAwOTc4QzhCIC8qIEhhbmRsZVhQQ0VuZHBvaW50
TWVzc2FnZXMubW0gKi8sCiAJCQkJQzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmggKi8sCiAJCQkJQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0
IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovLAorCQkJCTUyNjNFMjVEMjYx
RTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLywKKwkJCQk1MjYzRTI1
RTI2MUU5NkUwMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICov
LAorCQkJCTUyNjNFMjVDMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHku
bW0gKi8sCiAJCQkJNDQ2REM2NEIyNEEyRDhBRDAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyLmggKi8sCiAJCQkJQ0RBMjlBMTkxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlDREEyOUExQzFDQkRCRjVCMDA5MDFDQ0Yg
LyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKQEAgLTEyMDgyLDYgKzEy
MTA0LDkgQEAKIAkJCQkyRDg3MTAxNzE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDg5NDlGMTE4MjA0NEY2MDBFODk4
QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0M0M0FCQjEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MjYzRTI1QTI2MUU5M0E3MDAxOEQ0N0QgLyogUGxhdGZvcm1Y
UkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjYzRTI1QjI2MUU5M0FCMDAxOEQ0
N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTI2M0UyNUYyNjFF
OTZFRjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDQ2REM2NEMyNEEyRDhFNTAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEyOUExQjFDQkRCRjQxMDA5MDFDQ0YgLyog
UGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMjkxQ0JF
QjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMjk3Miw2ICsxMjk5Nyw3IEBACiAJCQkJQkNCRUNERTgxNkI2NDE2ODAwMDQ3
QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjUwODBC
MTI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MjUwODBCMjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MjYzRTI1NzI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDE5MmFkOGQxNTE2ZTBkMmRi
ZjFlNzAzYmM5YTc3NmEzMGQzM2ViY2UuLmJjYzRjMTdhYzI5NTIxMmNiYTY0ZGVkZDFjOWIzYTkw
NmNhMDUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xNDczLDQgKzE0NzMsMTEgQEAg
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3dNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnUoRmxvYXRS
ZWN0JiYgdGFyZ2V0RnJhbWUsIFZlY3QKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9DT05UUk9M
U19DT05URVhUX01FTlVTKSAmJiBVU0UoVUlDT05URVhUTUVOVSkKIAorI2lmIEVOQUJMRShXRUJY
UikgJiYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZW51bWVyYXRlSW1t
ZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6
SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3Bh
Z2UueHJTeXN0ZW1Qcm94eSgpLmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKaW5kZXggMGI4ZDE4MWM0YzllZGUxOTFiMmViOGQ5NjAzZGE4ZTdjMzU3
NWUxZS4uNjgxMmU2NDJmZWNkY2FhN2IxZjUxZmUwNzEyNTgwYTdkNDJjNGVmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaApAQCAtNDM1LDYgKzQzNSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd01l
ZGlhQ29udHJvbHNDb250ZXh0TWVudShXZWJDb3JlOjpGbG9hdFJlY3QmJiwgVmVjdG9yPFdlYkNv
cmU6Ok1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbTo6SUQpPiYmKSBmaW5hbDsK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfQ09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYgVVNFKFVJ
Q09OVEVYVE1FTlUpCiAKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJikgZmluYWw7CisjZW5k
aWYKKwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3Jv
bGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc1Zl
cnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDU4NjE3Y2FkM2Fk
MGM5NjU4MGRkNmMzOGI3ZTM5NDczODcxZjZjYjAuLjNkMjFlM2RkMGM4NmQxOWFkNjZhNDM4ZTkx
ODE4YTlmYzI2MmNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTQzOSw2ICs0MzksMTUgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRQREZGaXJzdFBhZ2VTaXplKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBDb21wbGV0aW9uSGEKICAgICBjb21wbGV0aW9uSGFuZGxlcihGbG9hdFNpemUocGx1Z2lu
LT5wZGZEb2N1bWVudFNpemVGb3JQcmludGluZygpKSk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCWFIp
CitQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIFdlYlBhZ2U6OnhyU3lzdGVtUHJveHkoKQoreworICAg
IGlmICghbV94clN5c3RlbVByb3h5KQorICAgICAgICBtX3hyU3lzdGVtUHJveHkgPSBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5PihuZXcgUGxhdGZvcm1YUlN5c3RlbVByb3h5
KCp0aGlzKSk7CisgICAgcmV0dXJuICptX3hyU3lzdGVtUHJveHk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4YjY5YzgzMzBjMjhjODU3
YjEyNTQwNWMzMWMwMTE2MzQ5NjcxZTc2Li41YWQ3NjFkNGI0MjcwMTRiN2RhYzVmZDM3ZWJmMWIx
ZDIwOTMxNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC0xNDQsNiArMTQ0LDEwIEBAIHR5cGVkZWYgc3RydWN0IF9BdGtPYmplY3QgQXRrT2JqZWN0
OwogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oPgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eS5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRl
ICJEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxl
U2VsZWN0aW9uLmg+CkBAIC0xNDI4LDcgKzE0MzIsMTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShU
RVhUX0FVVE9TSVpJTkcpCiAgICAgdm9pZCB0ZXh0QXV0b3NpemluZ1VzZXNJZGVtcG90ZW50TW9k
ZUNoYW5nZWQoKTsKICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9S
TShDT0NPQSkKKyAgICBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtUHJveHkoKTsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTIzMTAsNiArMjMxOCwxMCBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2Vha1B0cjxXZWJDb3JlOjpIVE1MRWxlbWVudD4s
IFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiYm
KT4+Pj4gbV9lbGVtZW50c1BlbmRpbmdJbWFnZUV4dHJhY3Rpb247CiAgICAgV2Vha0hhc2hTZXQ8
V2ViQ29yZTo6SFRNTEVsZW1lbnQ+IG1fZWxlbWVudHNXaXRoRXh0cmFjdGVkSW1hZ2VzOwogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+IG1feHJTeXN0ZW1Qcm94eTsKKyNlbmRpZgog
fTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRi
MDMwYjA5MmY4YjE5MzNjNWE1Mzc0M2E3MjM4MjBjZDI2MmIwYzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQlhSKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiWFJEZXZp
Y2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiWFJEZXZpY2VQcm94eS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFn
ZTsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3RlbVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybVhSU3lzdGVtUHJveHkoV2ViUGFnZSYpOwor
ICAgIHZpcnR1YWwgflBsYXRmb3JtWFJTeXN0ZW1Qcm94eSgpOworCisgICAgdm9pZCBlbnVtZXJh
dGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQbGF0Zm9y
bVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCYpPiYmKTsKKyAgICB2b2lkIGluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZygpOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmlu
ZygpOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZy
YW1lQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFhSRGV2aWNlUHJveHk+IGRl
dmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycworICAgIHZv
aWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50aWZpZXIpOworCisgICAgUGxhdGZvcm1YUjo6
SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZpY2VzOworICAgIFdlYlBhZ2UmIG1fcGFnZTsKK307
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc5NDA1NzkxYjYxNTQzOGE5YmY3ZGI0YjRiMDA2Njg3MDgyOTNk
NjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxh
dGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShXRUJYUikKKworbWVzc2FnZXMgLT4g
UGxhdGZvcm1YUlN5c3RlbVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFNlc3Npb25EaWRFbmQo
V2ViS2l0OjpYUkRldmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmllcikKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5
c3RlbVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJT
eXN0ZW1Qcm94eS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWVlY2RkNDRmMWY1NWQ3MDc2YjM5Mjk4MGRlY2M3
OTlkNDUzNjA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5Lmgi
CisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdl
cy5oIgorI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQg
IldlYlBhZ2UuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgIlhSRGV2aWNlSW5m
by5oIgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgUGxhdGZvcm1Y
UjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1BsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6UGxhdGZv
cm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBs
YXRmb3JtWFJTeXN0ZW1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UuaWRlbnRp
ZmllcigpLCAqdGhpcyk7Cit9CisKK1BsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6flBsYXRmb3JtWFJT
eXN0ZW1Qcm94eSgpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3Rl
bVByb3h5OjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJbnN0YW5jZTo6RGV2aWNlTGlzdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06
OkVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oVmVjdG9yPFhSRGV2aWNlSW5mbz4mJiBkZXZpY2VzSW5mb3MpIG11dGFibGUgeworICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFBsYXRmb3Jt
WFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0IGRldmljZXM7CisgICAgICAgIGZvciAoYXV0byYgZGV2
aWNlSW5mbyA6IGRldmljZXNJbmZvcykgeworICAgICAgICAgICAgaWYgKGF1dG8gZGV2aWNlID0g
ZGV2aWNlQnlJZGVudGlmaWVyKGRldmljZUluZm8uaWRlbnRpZmllcikpCisgICAgICAgICAgICAg
ICAgZGV2aWNlcy5hcHBlbmQoKmRldmljZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZGV2aWNlcy5hcHBlbmQoWFJEZXZpY2VQcm94eTo6Y3JlYXRlKFdURk1vdmUoZGV2aWNl
SW5mbyksICp0aGlzKSk7CisgICAgICAgIH0KKyAgICAgICAgbV9kZXZpY2VzLnN3YXAoZGV2aWNl
cyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fZGV2aWNlcyk7CisgICAgfSk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKQoreworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpJbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3Rl
bVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmlu
ZygpKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnJlcXVlc3RGcmFtZShQbGF0
Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAg
bV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6UmVx
dWVzdEZyYW1lKCksIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lz
dGVtUHJveHk6OnNlc3Npb25EaWRFbmQoWFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZp
ZXIpCit7CisgICAgaWYgKGF1dG8gZGV2aWNlID0gZGV2aWNlQnlJZGVudGlmaWVyKGRldmljZUlk
ZW50aWZpZXIpKQorICAgICAgICBkZXZpY2UtPnNlc3Npb25EaWRFbmQoKTsKK30KKworUmVmUHRy
PFhSRGV2aWNlUHJveHk+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZGV2aWNlQnlJZGVudGlmaWVy
KFhSRGV2aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGZvciAoYXV0byYgZGV2aWNl
IDogbV9kZXZpY2VzKSB7CisgICAgICAgIGF1dG8qIGRldmljZVByb3h5ID0gc3RhdGljX2Nhc3Q8
WFJEZXZpY2VQcm94eSo+KGRldmljZS5wdHIoKSk7CisgICAgICAgIGlmIChkZXZpY2VQcm94eS0+
aWRlbnRpZmllcigpID09IGlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gZGV2aWNlUHJv
eHk7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQo=
</data>
<flag name="commit-queue"
          id="445853"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>