<?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>194240</bug_id>
          
          <creation_ts>2019-02-04 13:51:19 -0800</creation_ts>
          <short_desc>Filter out Overconstrainederror.constraint when getUserMedia is not granted</short_desc>
          <delta_ts>2019-02-11 10:49:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</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>
          <dependson>194482</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>pnormand</cc>
    
    <cc>tsaunier</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1502002</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-02-04 13:51:19 -0800</bug_when>
    <thetext>Filter out Overconstrainederror.constraint when getUserMedia is not granted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502385</commentid>
    <comment_count>1</comment_count>
      <attachid>361196</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-02-05 09:22:18 -0800</bug_when>
    <thetext>Created attachment 361196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503379</commentid>
    <comment_count>2</comment_count>
      <attachid>361304</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-02-06 10:32:04 -0800</bug_when>
    <thetext>Created attachment 361304
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503814</commentid>
    <comment_count>3</comment_count>
      <attachid>361417</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-02-07 10:56:24 -0800</bug_when>
    <thetext>Created attachment 361417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503925</commentid>
    <comment_count>4</comment_count>
      <attachid>361417</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-02-07 14:06:44 -0800</bug_when>
    <thetext>Comment on attachment 361417
Patch

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

&gt; Source/WebKit/ChangeLog:8
&gt; +        Make sure in UIProcess to filter out constraint if either the page had not gum granted

Nit: &quot;filter out constraint if either the page had not gum granted&quot; =&gt; &quot;filter out the failed constraint name if either the page has not granted gUM&quot;

&gt; Source/WebKit/ChangeLog:9
&gt; +        or it has not persistent access.

Nit: &quot;it has not persistent access&quot; =&gt; &quot;it does not have persistent access&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503972</commentid>
    <comment_count>5</comment_count>
      <attachid>361457</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-02-07 15:09:54 -0800</bug_when>
    <thetext>Created attachment 361457
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503986</commentid>
    <comment_count>6</comment_count>
      <attachid>361457</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-07 15:49:05 -0800</bug_when>
    <thetext>Comment on attachment 361457
Patch for landing

Clearing flags on attachment: 361457

Committed r241167: &lt;https://trac.webkit.org/changeset/241167&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503987</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-07 15:49:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503988</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-07 15:50:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/47900857&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504700</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-02-10 11:40:04 -0800</bug_when>
    <thetext>This broke the GTK Release mediastream tests:

Thread 1 (Thread 0x7f85423464c0 (LWP 95867)):
#0  0x00007f8551069987 in _ZN6WebKit38UserMediaPermissionRequestManagerProxy34requestUserMediaPermissionForFrameEmmON3WTF3RefIN7WebCore14SecurityOriginENS1_13DumbPtrTraitsIS4_EEEES8_ONS3_18MediaStreamRequestE () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#1  0x00007f85510967ca in _ZN6WebKit12WebPageProxy34requestUserMediaPermissionForFrameEmmRKN7WebCore18SecurityOriginDataES4_ONS1_18MediaStreamRequestE () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#2  0x00007f8550ec15bc in _ZN3IPC13handleMessageIN8Messages12WebPageProxy34RequestUserMediaPermissionForFrameEN6WebKit12WebPageProxyEMS5_FvmmRKN7WebCore18SecurityOriginDataES9_ONS6_18MediaStreamRequestEEEEvRNS_7DecoderEPT0_T1_ () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#3  0x00007f8550eafe6c in _ZN6WebKit12WebPageProxy17didReceiveMessageERN3IPC10ConnectionERNS1_7DecoderE () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#4  0x00007f8550fc2d09 in _ZN3IPC18MessageReceiverMap15dispatchMessageERNS_10ConnectionERNS_7DecoderE () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#5  0x00007f85510bcaf2 in _ZN6WebKit15WebProcessProxy17didReceiveMessageERN3IPC10ConnectionERNS1_7DecoderE () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#6  0x00007f8550fbbe4f in _ZN3IPC10Connection15dispatchMessageERNS_7DecoderE () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#7  0x00007f8550fbd6bb in _ZN3IPC10Connection15dispatchMessageESt10unique_ptrINS_7DecoderESt14default_deleteIS2_EE () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#8  0x00007f8550fbe553 in _ZN3IPC10Connection24dispatchIncomingMessagesEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#9  0x0000559724407aa8 in _ZN3WTF7RunLoop11performWorkEv ()
#10 0x000055972446d4d9 in _ZZN3WTF7RunLoopC4EvENUlPvE_4_FUNES1_ ()
#11 0x00007f854eac165a in g_main_dispatch () at ../../Source/glib-2.58.1/glib/gmain.c:3182
#12 g_main_context_dispatch () at ../../Source/glib-2.58.1/glib/gmain.c:3847
#13 0x00007f854eac19e8 in g_main_context_iterate () at ../../Source/glib-2.58.1/glib/gmain.c:3920
#14 0x00007f854eac1d02 in g_main_loop_run () at ../../Source/glib-2.58.1/glib/gmain.c:4116
#15 0x000055972446df20 in _ZN3WTF7RunLoop3runEv ()
#16 0x00005597243ec8b2 in _ZN3WTR14TestController16platformRunUntilERbN3WTF7SecondsE ()
#17 0x00005597243d4fa1 in _ZN3WTR14TestInvocation6invokeEv ()
#18 0x00005597243c96c2 in _ZN3WTR14TestController7runTestEPKc ()
#19 0x00005597243c9e7b in _ZN3WTR14TestController20runTestingServerLoopEv ()
#20 0x00005597243ca208 in _ZN3WTR14TestControllerC2EiPPKc ()
#21 0x00005597243bb8c1 in main ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504702</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-10 11:42:04 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 194482</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504791</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-02-10 21:17:19 -0800</bug_when>
    <thetext>Philippe, any idea why the patch broke the GTK build? nullptr dereference ? uaf?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504810</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-02-10 22:56:26 -0800</bug_when>
    <thetext>OK, I think this is again the use of a variable while moving in a lambda that is causing the issue.
&gt; getUserMediaPermissionInfo(frameID, request-&gt;userMediaDocumentSecurityOrigin(), request-&gt;topLevelDocumentSecurityOrigin(), [this, request = request.releaseNonNull()](Optional&lt;bool&gt; hasPersistentAccess) mutable {

Will fix it and reland it.
If you have time, let me know if this is not the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504901</commentid>
    <comment_count>13</comment_count>
      <attachid>361689</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-02-11 09:53:28 -0800</bug_when>
    <thetext>Created attachment 361689
GTK fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504922</commentid>
    <comment_count>14</comment_count>
      <attachid>361689</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-11 10:49:16 -0800</bug_when>
    <thetext>Comment on attachment 361689
GTK fix

Clearing flags on attachment: 361689

Committed r241270: &lt;https://trac.webkit.org/changeset/241270&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504923</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-11 10:49:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361196</attachid>
            <date>2019-02-05 09:22:18 -0800</date>
            <delta_ts>2019-02-06 10:32:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194240-20190205092213.patch</filename>
            <type>text/plain</type>
            <size>47774</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwOTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlYjE1ZDU0ODk2ODhlOTgx
Y2JkZWFjYmUxNzQwYmVjYzRlYzI4MjcuLjRhMGJjMDk1YWIyY2NlZmViMmY1OGI0Y2UyMWRkOGI0
Y2VlMjgzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTktMDItMDUgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbHRlciBvdXQgT3ZlcmNvbnN0
cmFpbmVkZXJyb3IuY29uc3RyYWludCB3aGVuIGdldFVzZXJNZWRpYSBpcyBub3QgZ3JhbnRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MjQwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJl
IGluIFVJUHJvY2VzcyB0byBmaWx0ZXIgb3V0IGNvbnN0cmFpbnQgaWYgZWl0aGVyIHRoZSBwYWdl
IGhhZCBub3QgZ3VtIGdyYW50ZWQKKyAgICAgICAgb3IgaXQgaGFzIG5vdCBwZXJzaXN0ZW50IGFj
Y2Vzcy4KKworICAgICAgICBSZWZhY3RvciBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eSB0byBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBlYXNpZXIgdG8gdW5kZXJzdGFuZC4K
KyAgICAgICAgU29tZSBmdXJ0aGVyIHJlZmFjdG9yaW5nIG1pZ2h0IGZvbGxvdy4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGFkZGVkIHRlc3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tQcm94eTo6c2V0VXNlck1lZGlhQWNjZXNzSW5mbyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1
cmVEZXZpY2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5Ojp1c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKToKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdyYW50QWNj
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmdldFJlcXVlc3RBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5Ojpwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJN
ZWRpYVBlcm1pc3Npb25JbnZhbGlkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lv
blZhbGlkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjpnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp3YXNHcmFudGVk
VmlkZW9PckF1ZGlvQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNvbXB1dGVGaWx0ZXJlZERldmljZUxpc3QpOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVy
YXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUGVybWlzc2lvblJlcXVlc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OnNldEVsaWdpYmxlVmlkZW9EZXZpY2VVSURzKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6c2V0RWxpZ2libGVBdWRpb0Rl
dmljZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5OjpoYXNBdWRpb0RldmljZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6Omhhc1ZpZGVvRGV2aWNlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6aGFzUGVyc2lzdGVudEFjY2Vz
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OnNldEhhc1BlcnNpc3RlbnRBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp1c2VyTWVkaWFJRCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnRvcExldmVsRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk6OnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp1c2VyUmVxdWVz
dCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OnNldERldmljZUlkZW50aWZpZXJIYXNoU2FsdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmF1
ZGlvRGV2aWNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eTo6dmlkZW9EZXZpY2UgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKwogMjAxOS0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIE1vdmUgWFBDU2VydmljZSBtYWluIHRvIGEgc2hhcmVkIGZpbGUg
Y2FsbGluZyBhIEMgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcAppbmRleCA5NjUxM2ViMDExYjAw
MGRlMDM3MWJmN2QyMjI1MDgyMTRmMmRhN2RmLi41OTFjOTljMWM3YWViODgxNGI1YzA5YWUyMzc1
N2IxMWMyMzk0ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIHZvaWQg
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OnNldFVzZXJNZWRpYUFjY2Vzc0luZm8oYm9v
bCBhbGxvd2VkKQogICAgIGlmICghbV9jb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9jb21wbGV0aW9uSGFuZGxlcihhbGxvd2VkKTsKLSAgICBtX2NvbXBsZXRpb25I
YW5kbGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZSht
X2NvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd2VkKTsKIH0K
IAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6aW52YWxpZGF0ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggNzhjZDBjNjkxMDY4MTgxYmFhOWFk
NmQwYmUzZjBiMTBmYzQ0YjY4Mi4uODg4MDNlYjBjN2YxNWFiYWRlNTBkYWY3NGQ2NTRmMmRjYmU3
MWNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtOTIsMjEgKzky
LDE4IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1
cmVEZXZpY2VzQ2hhbmdlZCgpCiAgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpIHx8ICFtX3BhZ2Uu
bWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVxdWVzdElEID0gZ2Vu
ZXJhdGVSZXF1ZXN0SUQoKTsKLSAgICBhdXRvIGhhbmRsZXIgPSBbdGhpcywgcmVxdWVzdElEXShi
b29sIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpIG11dGFibGUgewotCi0gICAgICAgIGF1dG8g
cGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy50YWtlKHJlcXVlc3RJRCk7
Ci0gICAgICAgIGlmICghcGVuZGluZ1JlcXVlc3QgfHwgIW1fcGFnZS5pc1ZhbGlkKCkpCisgICAg
YXV0byBoYW5kbGVyID0gW3RoaXNdKE9wdGlvbmFsPGJvb2w+IG9yaWdpbkhhc1BlcnNpc3RlbnRB
Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBpZiAoIW9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3Mg
fHwgIW1fcGFnZS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KG1fZ3JhbnRlZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiAhb3JpZ2luSGFzUGVyc2lzdGVudEFjY2Vz
cykKKyAgICAgICAgaWYgKG1fZ3JhbnRlZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiAhKm9yaWdpbkhh
c1BlcnNpc3RlbnRBY2Nlc3MpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9wYWdl
LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXB0dXJlRGV2aWNlc0NoYW5nZWQo
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKICAgICB9OwogCiAgICAgYXV0byBvcmlnaW4gPSBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fcGFnZS5tYWluRnJhbWUoKS0+dXJsKCkpOwotICAg
IGdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKHJlcXVlc3RJRCwgbV9wYWdlLm1haW5GcmFtZSgp
LT5mcmFtZUlEKCksIFdURk1vdmUoaGFuZGxlciksIG9yaWdpbi5nZXQoKSwgV1RGTW92ZShvcmln
aW4pKTsKKyAgICBnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyhtX3BhZ2UubWFpbkZyYW1lKCkt
PmZyYW1lSUQoKSwgb3JpZ2luLmdldCgpLCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoaGFuZGxl
cikpOwogI2VuZGlmCiB9CiAKQEAgLTExNSwxMyArMTEyLDYgQEAgdm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y2xlYXJDYWNoZWRTdGF0ZSgpCiAgICAgaW52YWxp
ZGF0ZVBlbmRpbmdSZXF1ZXN0cygpOwogfQogCi1SZWY8VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eT4gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVBl
cm1pc3Npb25SZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBtYWluRnJhbWVJ
RCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3Vt
ZW50T3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwg
VmVjdG9yPENhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8Q2FwdHVyZURldmlj
ZT4mJiB2aWRlb0RldmljZXMsIE1lZGlhU3RyZWFtUmVxdWVzdCYmIHJlcXVlc3QpCi17Ci0gICAg
YXV0byBwZXJtaXNzaW9uUmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIG1haW5GcmFtZUlELCBmcmFtZUlELCBXVEZNb3Zl
KHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2lu
KSwgV1RGTW92ZShhdWRpb0RldmljZXMpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlcyksIFdURk1vdmUo
cmVxdWVzdCkpOwotICAgIG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzLmFkZCh1c2VyTWVkaWFJ
RCwgcGVybWlzc2lvblJlcXVlc3QucHRyKCkpOwotICAgIHJldHVybiBwZXJtaXNzaW9uUmVxdWVz
dDsKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBzdGF0aWMgdWludDY0X3QgdG9XZWJD
b3JlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0Rlbmlh
bFJlYXNvbiByZWFzb24pCiB7CkBAIC0xODYsMTUgKzE3NiwxOCBAQCB2b2lkIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp1c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKHVp
bnQ2NF90CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2Uu
d2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNo
U2FsdEZvck9yaWdpbihyZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCks
IHJlcXVlc3QtPnRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHVzZXJNZWRpYUlELCBhdWRpb0RldmljZSA9IFdURk1v
dmUoYXVkaW9EZXZpY2UpLCB2aWRlb0RldmljZSA9IFdURk1vdmUodmlkZW9EZXZpY2UpLCBsb2Nh
bFJlcXVlc3QgPSByZXF1ZXN0LmNvcHlSZWYoKV0gKFN0cmluZyYmIGRldmljZUlESGFzaFNhbHQp
IG11dGFibGUgeworICAgIGF1dG8mIHVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBy
ZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byYgdG9w
TGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC0+dG9wTGV2ZWxEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKCk7CisgICAgbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRGb3JPcmlnaW4odXNlck1lZGlhRG9jdW1l
bnRTZWN1cml0eU9yaWdpbiwgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3QgPSByZXF1ZXN0LnJlbGVhc2VO
b25OdWxsKCldIChTdHJpbmcmJiBkZXZpY2VJREhhc2hTYWx0KSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGdyYW50QWNj
ZXNzKHVzZXJNZWRpYUlELCBXVEZNb3ZlKGF1ZGlvRGV2aWNlKSwgV1RGTW92ZSh2aWRlb0Rldmlj
ZSksIFdURk1vdmUoZGV2aWNlSURIYXNoU2FsdCkpKSB7Ci0gICAgICAgICAgICBtX2dyYW50ZWRS
ZXF1ZXN0cy5hcHBlbmQobG9jYWxSZXF1ZXN0LnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICAg
ICAgaWYgKG1faGFzRmlsdGVyZWREZXZpY2VMaXN0KQotICAgICAgICAgICAgICAgIGNhcHR1cmVE
ZXZpY2VzQ2hhbmdlZCgpOwotICAgICAgICAgICAgbV9oYXNGaWx0ZXJlZERldmljZUxpc3QgPSBm
YWxzZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWdyYW50QWNjZXNzKHJlcXVlc3QpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmFwcGVuZChXVEZN
b3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgaWYgKG1faGFzRmlsdGVyZWREZXZpY2VMaXN0KQorICAg
ICAgICAgICAgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CisgICAgICAgIG1faGFzRmlsdGVyZWRE
ZXZpY2VMaXN0ID0gZmFsc2U7CiAgICAgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh1c2Vy
TWVkaWFJRCk7CkBAIC0yNjQsMTQgKzI1NywxNCBAQCBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5Ojp3YXNSZXF1ZXN0RGVuaWVkKHVpbnQ2NF90IG1haW5GcmFtZQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Z3JhbnRBY2Nlc3ModWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IENhcHR1
cmVEZXZpY2UgYXVkaW9EZXZpY2UsIGNvbnN0IENhcHR1cmVEZXZpY2UgdmlkZW9EZXZpY2UsIGNv
bnN0IFN0cmluZyYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KQorYm9vbCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z3JhbnRBY2Nlc3MoY29uc3QgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCkKIHsKLSAgICBpZiAoIVVzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyOjpzaW5nbGV0b24oKS53aWxsQ3JlYXRlTWVkaWFTdHJlYW0oKnRoaXMsICEhYXVk
aW9EZXZpY2UsICEhdmlkZW9EZXZpY2UpKSB7Ci0gICAgICAgIGRlbnlSZXF1ZXN0KHVzZXJNZWRp
YUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5p
YWxSZWFzb246Ok90aGVyRmFpbHVyZSwgIlVuYWJsZSB0byBleHRlbmQgc2FuZGJveC4iKTsKKyAg
ICBpZiAoIVVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS53aWxsQ3JlYXRlTWVk
aWFTdHJlYW0oKnRoaXMsIHJlcXVlc3QuaGFzQXVkaW9EZXZpY2UoKSwgcmVxdWVzdC5oYXNWaWRl
b0RldmljZSgpKSkgeworICAgICAgICBkZW55UmVxdWVzdChyZXF1ZXN0LnVzZXJNZWRpYUlEKCks
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJl
YXNvbjo6T3RoZXJGYWlsdXJlLCAiVW5hYmxlIHRvIGV4dGVuZCBzYW5kYm94LiIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKHVzZXJNZWRpYUlELCBhdWRp
b0RldmljZSwgdmlkZW9EZXZpY2UsIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKHJlcXVlc3QudXNlck1lZGlhSUQoKSwgcmVxdWVzdC5h
dWRpb0RldmljZSgpLCByZXF1ZXN0LnZpZGVvRGV2aWNlKCksIHJlcXVlc3QuZGV2aWNlSWRlbnRp
Zmllckhhc2hTYWx0KCkpLCBtX3BhZ2UucGFnZUlEKCkpOwogICAgIHJldHVybiB0cnVlOwogfQog
I2VuZGlmCkBAIC0yOTQsMjUgKzI4NywyNiBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjpzY2hlZHVsZU5leHRSZWplY3Rpb24oKQogfQogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpS
ZXF1ZXN0QWN0aW9uIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpnZXRS
ZXF1ZXN0QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFE
b2N1bWVudE9yaWdpbiwgU2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIGNv
bnN0IE1lZGlhU3RyZWFtUmVxdWVzdCYgdXNlclJlcXVlc3QsIFZlY3RvcjxDYXB0dXJlRGV2aWNl
PiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNlcykKK1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpSZXF1ZXN0QWN0aW9uIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpnZXRSZXF1ZXN0QWN0aW9uKGNvbnN0
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QpCiB7Ci0gICAgYm9vbCBy
ZXF1ZXN0aW5nU2NyZWVuQ2FwdHVyZSA9IHVzZXJSZXF1ZXN0LnR5cGUgPT0gTWVkaWFTdHJlYW1S
ZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWE7Ci0gICAgQVNTRVJUKCEocmVxdWVzdGluZ1NjcmVl
bkNhcHR1cmUgJiYgdmlkZW9EZXZpY2VzLmlzRW1wdHkoKSkpOwotICAgIEFTU0VSVCghKHJlcXVl
c3RpbmdTY3JlZW5DYXB0dXJlICYmICFhdWRpb0RldmljZXMuaXNFbXB0eSgpKSk7Ci0gICAgYm9v
bCByZXF1ZXN0aW5nQ2FtZXJhID0gIXJlcXVlc3RpbmdTY3JlZW5DYXB0dXJlICYmICF2aWRlb0Rl
dmljZXMuaXNFbXB0eSgpOwotICAgIGJvb2wgcmVxdWVzdGluZ01pY3JvcGhvbmUgPSAhYXVkaW9E
ZXZpY2VzLmlzRW1wdHkoKTsKKyAgICBib29sIHJlcXVlc3RpbmdTY3JlZW5DYXB0dXJlID0gcmVx
dWVzdC5yZXF1ZXN0VHlwZSgpID09IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1l
ZGlhOworICAgIGJvb2wgcmVxdWVzdGluZ0NhbWVyYSA9ICFyZXF1ZXN0aW5nU2NyZWVuQ2FwdHVy
ZSAmJiByZXF1ZXN0Lmhhc1ZpZGVvRGV2aWNlKCk7CisgICAgYm9vbCByZXF1ZXN0aW5nTWljcm9w
aG9uZSA9IHJlcXVlc3QuaGFzQXVkaW9EZXZpY2UoKTsKKworICAgIEFTU0VSVCghKHJlcXVlc3Rp
bmdTY3JlZW5DYXB0dXJlICYmICFyZXF1ZXN0Lmhhc1ZpZGVvRGV2aWNlKCkpKTsKKyAgICBBU1NF
UlQoIShyZXF1ZXN0aW5nU2NyZWVuQ2FwdHVyZSAmJiByZXF1ZXN0aW5nTWljcm9waG9uZSkpOwog
Ci0gICAgaWYgKHdhc1JlcXVlc3REZW5pZWQoZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmln
aW4sIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIHJlcXVlc3RpbmdNaWNyb3Bob25lLCByZXF1ZXN0
aW5nQ2FtZXJhLCByZXF1ZXN0aW5nU2NyZWVuQ2FwdHVyZSkpCisgICAgaWYgKHdhc1JlcXVlc3RE
ZW5pZWQocmVxdWVzdC5mcmFtZUlEKCksIHJlcXVlc3QudXNlck1lZGlhRG9jdW1lbnRTZWN1cml0
eU9yaWdpbigpLCByZXF1ZXN0LnRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCByZXF1
ZXN0aW5nTWljcm9waG9uZSwgcmVxdWVzdGluZ0NhbWVyYSwgcmVxdWVzdGluZ1NjcmVlbkNhcHR1
cmUpKQogICAgICAgICByZXR1cm4gUmVxdWVzdEFjdGlvbjo6RGVueTsKIAotICAgIGlmICh1c2Vy
UmVxdWVzdC50eXBlID09IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1lZGlhKQor
ICAgIGlmIChyZXF1ZXN0LnJlcXVlc3RUeXBlKCkgPT0gTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBl
OjpEaXNwbGF5TWVkaWEpCiAgICAgICAgIHJldHVybiBSZXF1ZXN0QWN0aW9uOjpQcm9tcHQ7CiAK
LSAgICByZXR1cm4gc2VhcmNoRm9yR3JhbnRlZFJlcXVlc3QoZnJhbWVJRCwgdXNlck1lZGlhRG9j
dW1lbnRPcmlnaW4sIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIHJlcXVlc3RpbmdNaWNyb3Bob25l
LCByZXF1ZXN0aW5nQ2FtZXJhKSA/IFJlcXVlc3RBY3Rpb246OkdyYW50IDogUmVxdWVzdEFjdGlv
bjo6UHJvbXB0OworICAgIHJldHVybiBzZWFyY2hGb3JHcmFudGVkUmVxdWVzdChyZXF1ZXN0LmZy
YW1lSUQoKSwgcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVl
c3QudG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3RpbmdNaWNyb3Bob25l
LCByZXF1ZXN0aW5nQ2FtZXJhKSA/IFJlcXVlc3RBY3Rpb246OkdyYW50IDogUmVxdWVzdEFjdGlv
bjo6UHJvbXB0OwogfQogI2VuZGlmCiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3Qg
dXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB1c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1l
bnRPcmlnaW4sIGNvbnN0IE1lZGlhU3RyZWFtUmVxdWVzdCYgdXNlclJlcXVlc3QpCit2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVy
bWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBS
ZWY8U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBNZWRpYVN0cmVhbVJlcXVlc3QmJiB1
c2VyUmVxdWVzdCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmICghVXNlck1l
ZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLmNhcHR1cmVFbmFibGVkKCkpIHsKQEAgLTMy
MSw5MyArMzE1LDYyIEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUoCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpJbnZhbGlkQ29uc3RyYWlu
dHNIYW5kbGVyIGludmFsaWRIYW5kbGVyID0gW3RoaXMsIHVzZXJNZWRpYUlEXShjb25zdCBTdHJp
bmcmIGludmFsaWRDb25zdHJhaW50KSB7Ci0gICAgICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCisgICAgICAg
IHJldHVybjsKIAotICAgICAgICBkZW55UmVxdWVzdCh1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpJbnZhbGlk
Q29uc3RyYWludCwgaW52YWxpZENvbnN0cmFpbnQpOwotICAgIH07CisgICAgYXV0byB1c2VyTWVk
aWFPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXNlck1lZGlhRG9jdW1lbnRP
cmlnaW4uZ2V0KCkpOworICAgIGF1dG8gdG9wTGV2ZWxPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbi5nZXQoKSk7CiAKLSAgICBhdXRvIHZh
bGlkSGFuZGxlciA9IFt0aGlzLCB1c2VyTWVkaWFJRCwgZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1l
bnRPcmlnaW4gPSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCksIHRvcExldmVsRG9j
dW1lbnRPcmlnaW4gPSB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmNvcHlSZWYoKSwgbG9jYWxVc2Vy
UmVxdWVzdCA9IHVzZXJSZXF1ZXN0XShWZWN0b3I8Q2FwdHVyZURldmljZT4mJiBhdWRpb0Rldmlj
ZXMsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgU3RyaW5nJiYgZGV2aWNl
SWRlbnRpZmllckhhc2hTYWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3BhZ2UuaXNWYWxp
ZCgpIHx8ICFtX3BhZ2UubWFpbkZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgYXV0
byByZXF1ZXN0ID0gbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHMuYWRkKHVzZXJNZWRpYUlELCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUoKnRoaXMsIHVzZXJNZWRpYUlE
LCBtX3BhZ2UubWFpbkZyYW1lKCktPmZyYW1lSUQoKSwgZnJhbWVJRCwgV1RGTW92ZSh1c2VyTWVk
aWFEb2N1bWVudE9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbiksIHsgfSwg
eyB9LCBXVEZNb3ZlKHVzZXJSZXF1ZXN0KSkpLml0ZXJhdG9yLT52YWx1ZS5jb3B5UmVmKCk7CiAK
LSAgICAgICAgaWYgKHZpZGVvRGV2aWNlcy5pc0VtcHR5KCkgJiYgYXVkaW9EZXZpY2VzLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgZGVueVJlcXVlc3QodXNlck1lZGlhSUQsIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6Tm9Db25z
dHJhaW50cywgZW1wdHlTdHJpbmcoKSk7CisgICAgZ2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8o
ZnJhbWVJRCwgcmVxdWVzdC0+dXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCByZXF1
ZXN0LT50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgW3RoaXMsIHJlcXVlc3QgPSBy
ZXF1ZXN0LnJlbGVhc2VOb25OdWxsKCldKE9wdGlvbmFsPGJvb2w+IGhhc1BlcnNpc3RlbnRBY2Nl
c3MpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlcXVlc3QtPmlzUGVuZGluZygpKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKLSAgICAgICAgYXV0byBhY3Rpb24gPSBnZXRSZXF1
ZXN0QWN0aW9uKG1fcGFnZS5tYWluRnJhbWUoKS0+ZnJhbWVJRCgpLCB1c2VyTWVkaWFEb2N1bWVu
dE9yaWdpbi5nZXQoKSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi5nZXQoKSwgbG9jYWxVc2VyUmVx
dWVzdCwgYXVkaW9EZXZpY2VzLCB2aWRlb0RldmljZXMpOwotICAgICAgICBpZiAoYWN0aW9uID09
IFJlcXVlc3RBY3Rpb246OkRlbnkpIHsKLSAgICAgICAgICAgIGRlbnlSZXF1ZXN0KHVzZXJNZWRp
YUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5p
YWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICBpZiAo
IWhhc1BlcnNpc3RlbnRBY2Nlc3MpIHsKKyAgICAgICAgICAgIHJlcXVlc3QtPmRlbnkoVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpP
dGhlckZhaWx1cmUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGFjdGlvbiA9PSBSZXF1ZXN0QWN0aW9uOjpHcmFudCkgewotICAgICAgICAgICAgQVNTRVJU
KGxvY2FsVXNlclJlcXVlc3QudHlwZSAhPSBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6OkRpc3Bs
YXlNZWRpYSk7CisgICAgICAgIHByb2Nlc3NVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXVEZN
b3ZlKHJlcXVlc3QpLCAqaGFzUGVyc2lzdGVudEFjY2Vzcyk7CisgICAgfSk7Cit9CiAKLSAgICAg
ICAgICAgIGlmIChtX3BhZ2UuaXNWaWV3VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8g
V2Ugc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUgZGV2aWNlcywgYnV0IHRoZSBjdXJyZW50IGNs
aWVudCBBUEkgYWxsb3dzIGNsaWVudCB0byBzZWxlY3Qgd2hpY2ggZGV2aWNlIHRvIHBpY2suCi0g
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgcG9zc2libGl0eSBmb3IgdGhlIGNs
aWVudCB0byBkbyB0aGUgZGV2aWNlIHNlbGVjdGlvbi4KLSAgICAgICAgICAgICAgICBhdXRvIGF1
ZGlvRGV2aWNlID0gIWF1ZGlvRGV2aWNlcy5pc0VtcHR5KCkgPyBhdWRpb0RldmljZXNbMF0gOiBD
YXB0dXJlRGV2aWNlKCk7Ci0gICAgICAgICAgICAgICAgYXV0byB2aWRlb0RldmljZSA9ICF2aWRl
b0RldmljZXMuaXNFbXB0eSgpID8gdmlkZW9EZXZpY2VzWzBdIDogQ2FwdHVyZURldmljZSgpOwot
ICAgICAgICAgICAgICAgIGdyYW50QWNjZXNzKHVzZXJNZWRpYUlELCBXVEZNb3ZlKGF1ZGlvRGV2
aWNlKSwgV1RGTW92ZSh2aWRlb0RldmljZSksIFdURk1vdmUoZGV2aWNlSWRlbnRpZmllckhhc2hT
YWx0KSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3ByZWdyYW50ZWRS
ZXF1ZXN0cy5hcHBlbmQoY3JlYXRlUGVybWlzc2lvblJlcXVlc3QodXNlck1lZGlhSUQsIG1fcGFn
ZS5tYWluRnJhbWUoKS0+ZnJhbWVJRCgpLCBmcmFtZUlELCBXVEZNb3ZlKHVzZXJNZWRpYURvY3Vt
ZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShhdWRp
b0RldmljZXMpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlcyksIFdURk1vdmUobG9jYWxVc2VyUmVxdWVz
dCkpKTsKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnByb2Nl
c3NVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChSZWY8VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eT4mJiByZXF1ZXN0LCBib29sIGhhc1BlcnNpc3RlbnRBY2Nlc3MpCit7CisgICAgaWYg
KGhhc1BlcnNpc3RlbnRBY2Nlc3MpCisgICAgICAgIHJlcXVlc3QtPnNldEhhc1BlcnNpc3RlbnRB
Y2Nlc3MoKTsKIAorICAgIGF1dG8mIHVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBy
ZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byYgdG9w
TGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC0+dG9wTGV2ZWxEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKCk7CisgICAgbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRGb3JPcmlnaW4odXNlck1lZGlhRG9jdW1l
bnRTZWN1cml0eU9yaWdpbiwgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBbdGhpcywg
cmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCldIChTdHJpbmcmJiBkZXZpY2VJREhhc2hTYWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXF1ZXN0LT5pc1BlbmRpbmcoKSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gdXNlck1lZGlhT3JpZ2luID0gQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmdldCgpKTsK
LSAgICAgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpKTsKLSAgICAgICAgYXV0byBwZW5kaW5nUmVx
dWVzdCA9IGNyZWF0ZVBlcm1pc3Npb25SZXF1ZXN0KHVzZXJNZWRpYUlELCBtX3BhZ2UubWFpbkZy
YW1lKCktPmZyYW1lSUQoKSwgZnJhbWVJRCwgV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdp
biksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbiksIFdURk1vdmUoYXVkaW9EZXZpY2Vz
KSwgV1RGTW92ZSh2aWRlb0RldmljZXMpLCBXVEZNb3ZlKGxvY2FsVXNlclJlcXVlc3QpKTsKLQot
ICAgICAgICBpZiAobV9wYWdlLmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpKSB7Ci0gICAgICAg
ICAgICBpZiAoV2ViQXV0b21hdGlvblNlc3Npb24qIGF1dG9tYXRpb25TZXNzaW9uID0gbV9wYWdl
LnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoYXV0b21hdGlvblNlc3Npb24tPnNob3VsZEFsbG93R2V0VXNlck1lZGlhRm9y
UGFnZShtX3BhZ2UpKQotICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdC0+YWxsb3co
KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHVzZXJNZWRpYUFj
Y2Vzc1dhc0RlbmllZCh1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKIAorICAg
ICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpJbnZhbGlkQ29uc3RyYWludHNIYW5kbGVy
IGludmFsaWRIYW5kbGVyID0gW3RoaXMsIHJlcXVlc3QgPSByZXF1ZXN0LmNvcHlSZWYoKV0oY29u
c3QgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkgeworICAgICAgICAgICAgaWYgKCFyZXF1ZXN0
LT5pc1BlbmRpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVE
ZXZpY2VzRW5hYmxlZCgpICYmICFtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmlj
ZXNQcm9tcHRFbmFibGVkKCkpIHsKLSAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5hbGxvdygp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKLSAgICAgICAgLy8gSWYgcGFnZSBu
YXZpZ2F0ZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCB0aGUgcGFnZSBjbGllbnQgZm9yIGF1
dGhvcml6YXRpb24uCi0gICAgICAgIGF1dG8qIHdlYkZyYW1lID0gbV9wYWdlLnByb2Nlc3MoKS53
ZWJGcmFtZShmcmFtZUlEKTsKKyAgICAgICAgICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCF3ZWJGcmFtZSB8fCAhU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcobV9wYWdlLnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVV
UkwoKSktPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHRvcExldmVsT3JpZ2luLT5zZWN1cml0eU9yaWdp
bigpKSkgewotICAgICAgICAgICAgZGVueVJlcXVlc3QodXNlck1lZGlhSUQsIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6Tm9Db25z
dHJhaW50cywgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
KyAgICAgICAgICAgIHByb2Nlc3NVc2VyTWVkaWFQZXJtaXNzaW9uSW52YWxpZFJlcXVlc3QocmVx
dWVzdC5nZXQoKSwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICB9OwogCi0gICAgICAgIC8v
IEZJWE1FOiBSZW1vdmUgd2ViRnJhbWUsIHVzZXJNZWRpYU9yaWdpbiBhbmQgdG9wTGV2ZWxPcmln
aW4gZnJvbSB0aGlzIHVpQ2xpZW50IEFQSSBjYWxsLgotICAgICAgICBtX3BhZ2UudWlDbGllbnQo
KS5kZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsICp3ZWJG
cmFtZSwgV1RGTW92ZSh1c2VyTWVkaWFPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luKSwg
cGVuZGluZ1JlcXVlc3QuZ2V0KCkpOwotICAgIH07Ci0KLSAgICBhdXRvIHJlcXVlc3RJRCA9IGdl
bmVyYXRlUmVxdWVzdElEKCk7Ci0gICAgYXV0byBoYXZlUGVybWlzc2lvbkluZm9IYW5kbGVyID0g
W3RoaXMsIHJlcXVlc3RJRCwgdmFsaWRIYW5kbGVyID0gV1RGTW92ZSh2YWxpZEhhbmRsZXIpLCBp
bnZhbGlkSGFuZGxlciA9IFdURk1vdmUoaW52YWxpZEhhbmRsZXIpLCBsb2NhbFVzZXJSZXF1ZXN0
ID0gdXNlclJlcXVlc3RdKGJvb2wgb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8gdmFsaWRIYW5kbGVyID0gW3RoaXMsIHJlcXVlc3QgPSByZXF1ZXN0LmNv
cHlSZWYoKV0oVmVjdG9yPENhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8Q2Fw
dHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFN0cmluZyYmIGRldmljZUlkZW50aWZpZXJIYXNo
U2FsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXJlcXVlc3QtPmlzUGVuZGluZygpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0g
bV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMudGFrZShyZXF1ZXN0SUQpOwotICAgICAgICBpZiAoIXBl
bmRpbmdSZXF1ZXN0KQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKCFtX3Bh
Z2UuaXNWYWxpZCgpIHx8ICFtX3BhZ2UubWFpbkZyYW1lKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIHByb2Nlc3NVc2VyTWVkaWFQZXJtaXNzaW9uVmFsaWRSZXF1ZXN0KFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUoYXVkaW9EZXZpY2VzKSwgV1RGTW92ZSh2aWRlb0Rldmlj
ZXMpLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCkpOworICAgICAgICB9OwogCiAg
ICAgICAgIHN5bmNXaXRoV2ViQ29yZVByZWZzKCk7CiAKLSAgICAgICAgbV9wYWdlLndlYnNpdGVE
YXRhU3RvcmUoKS5kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRGb3JP
cmlnaW4ocGVuZGluZ1JlcXVlc3QudmFsdWUoKS0+dXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9y
aWdpbigpLCBwZW5kaW5nUmVxdWVzdC52YWx1ZSgpLT50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlP
cmlnaW4oKSwgW3ZhbGlkSGFuZGxlciA9IFdURk1vdmUodmFsaWRIYW5kbGVyKSwgaW52YWxpZEhh
bmRsZXIgPSBXVEZNb3ZlKGludmFsaWRIYW5kbGVyKSwgbG9jYWxVc2VyUmVxdWVzdCA9IGxvY2Fs
VXNlclJlcXVlc3RdIChTdHJpbmcmJiBkZXZpY2VJREhhc2hTYWx0KSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnZhbGlkYXRlUmVx
dWVzdENvbnN0cmFpbnRzKFdURk1vdmUodmFsaWRIYW5kbGVyKSwgV1RGTW92ZShpbnZhbGlkSGFu
ZGxlciksIFdURk1vdmUobG9jYWxVc2VyUmVxdWVzdCksIFdURk1vdmUoZGV2aWNlSURIYXNoU2Fs
dCkpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgZ2V0VXNlck1lZGlhUGVybWlzc2lvbklu
Zm8ocmVxdWVzdElELCBmcmFtZUlELCBXVEZNb3ZlKGhhdmVQZXJtaXNzaW9uSW5mb0hhbmRsZXIp
LCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3Vt
ZW50T3JpZ2luKSk7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRv
bigpLnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFdURk1vdmUodmFsaWRIYW5kbGVyKSwgV1RG
TW92ZShpbnZhbGlkSGFuZGxlciksIHJlcXVlc3QtPnVzZXJSZXF1ZXN0KCksIFdURk1vdmUoZGV2
aWNlSURIYXNoU2FsdCkpOworICAgIH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odXNlck1l
ZGlhSUQpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTQxOCwyMSArMzgxLDk0IEBA
IHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUoCiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z2V0VXNlck1lZGlh
UGVybWlzc2lvbkluZm8odWludDY0X3QgcmVxdWVzdElELCB1aW50NjRfdCBmcmFtZUlELCBVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBS
ZWY8U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luKQordm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25JbnZhbGlk
UmVxdWVzdChjb25zdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0LCBj
b25zdCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQoreworICAgIGJvb2wgZmlsdGVyQ29uc3Ry
YWludCA9ICFyZXF1ZXN0Lmhhc1BlcnNpc3RlbnRBY2Nlc3MoKSAmJiAhd2FzR3JhbnRlZFZpZGVv
T3JBdWRpb0FjY2VzcyhyZXF1ZXN0LmZyYW1lSUQoKSwgcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KCkpOworCisgICAgZGVueVJlcXVlc3QocmVxdWVzdC51c2VyTWVkaWFJRCgpLCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OkludmFs
aWRDb25zdHJhaW50LCBmaWx0ZXJDb25zdHJhaW50ID8gU3RyaW5nIHsgfSA6IGludmFsaWRDb25z
dHJhaW50KTsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6cHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25WYWxpZFJlcXVlc3QoUmVmPFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk+JiYgcmVxdWVzdCwgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiYg
YXVkaW9EZXZpY2VzLCBWZWN0b3I8Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFN0cmlu
ZyYmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCkKK3sKKyAgICBpZiAodmlkZW9EZXZpY2VzLmlz
RW1wdHkoKSAmJiBhdWRpb0RldmljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGRlbnlSZXF1ZXN0
KHJlcXVlc3QtPnVzZXJNZWRpYUlEKCksIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6Tm9Db25zdHJhaW50cywgZW1wdHlTdHJpbmco
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXF1ZXN0LT5zZXREZXZpY2VJZGVu
dGlmaWVySGFzaFNhbHQoV1RGTW92ZShkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpKTsKKyAgICBy
ZXF1ZXN0LT5zZXRFbGlnaWJsZVZpZGVvRGV2aWNlVUlEcyhXVEZNb3ZlKHZpZGVvRGV2aWNlcykp
OworICAgIHJlcXVlc3QtPnNldEVsaWdpYmxlQXVkaW9EZXZpY2VVSURzKFdURk1vdmUoYXVkaW9E
ZXZpY2VzKSk7CisKKyAgICBhdXRvIGFjdGlvbiA9IGdldFJlcXVlc3RBY3Rpb24ocmVxdWVzdCk7
CisgICAgaWYgKGFjdGlvbiA9PSBSZXF1ZXN0QWN0aW9uOjpEZW55KSB7CisgICAgICAgIGRlbnlS
ZXF1ZXN0KHJlcXVlc3QtPnVzZXJNZWRpYUlEKCksIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCwgZW1w
dHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYWN0aW9uID09
IFJlcXVlc3RBY3Rpb246OkdyYW50KSB7CisgICAgICAgIEFTU0VSVChyZXF1ZXN0LT5yZXF1ZXN0
VHlwZSgpICE9IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1lZGlhKTsKKworICAg
ICAgICBpZiAobV9wYWdlLmlzVmlld1Zpc2libGUoKSkKKyAgICAgICAgICAgIGdyYW50QWNjZXNz
KHJlcXVlc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3ByZWdyYW50ZWRSZXF1ZXN0
cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChtX3BhZ2UuaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkpIHsKKyAgICAgICAgaWYg
KFdlYkF1dG9tYXRpb25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKSB7CisgICAgICAgICAgICBpZiAo
YXV0b21hdGlvblNlc3Npb24tPnNob3VsZEFsbG93R2V0VXNlck1lZGlhRm9yUGFnZShtX3BhZ2Up
KQorICAgICAgICAgICAgICAgIHJlcXVlc3QtPmFsbG93KCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdXNlck1lZGlhQWNjZXNzV2FzRGVuaWVkKHJlcXVlc3QtPnVzZXJNZWRp
YUlEKCksIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0Rl
bmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CisKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVy
ZURldmljZXNFbmFibGVkKCkgJiYgIW1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2
aWNlc1Byb21wdEVuYWJsZWQoKSkgeworICAgICAgICByZXF1ZXN0LT5hbGxvdygpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgcGFnZSBuYXZpZ2F0ZWQsIHRoZXJlIGlzIG5v
IG5lZWQgdG8gY2FsbCB0aGUgcGFnZSBjbGllbnQgZm9yIGF1dGhvcml6YXRpb24uCisgICAgYXV0
byogd2ViRnJhbWUgPSBtX3BhZ2UucHJvY2VzcygpLndlYkZyYW1lKHJlcXVlc3QtPmZyYW1lSUQo
KSk7CisKKyAgICBpZiAoIXdlYkZyYW1lIHx8ICFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhtX3BhZ2UucGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKS0+aXNTYW1lU2NoZW1lSG9z
dFBvcnQocmVxdWVzdC0+dG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAg
ICAgIGRlbnlSZXF1ZXN0KHJlcXVlc3QtPnVzZXJNZWRpYUlEKCksIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6Tm9Db25zdHJhaW50
cywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhN
RTogUmVtb3ZlIHdlYkZyYW1lLCB1c2VyTWVkaWFPcmlnaW4gYW5kIHRvcExldmVsT3JpZ2luIGZy
b20gdGhpcyB1aUNsaWVudCBBUEkgY2FsbC4KKyAgICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQ
STo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luKCkpOworICAgIGF1dG8gdG9wTGV2ZWxPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUocmVxdWVzdC0+dG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpOwor
ICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0KG1fcGFnZSwgKndlYkZyYW1lLCBXVEZNb3ZlKHVzZXJNZWRpYU9yaWdpbiksIFdURk1v
dmUodG9wTGV2ZWxPcmlnaW4pLCByZXF1ZXN0KTsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8odWludDY0
X3QgZnJhbWVJRCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxib29sPik+JiYgaGFuZGxlcikKIHsKICAgICBhdXRvKiB3
ZWJGcmFtZSA9IG1fcGFnZS5wcm9jZXNzKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYgKCF3
ZWJGcmFtZSB8fCAhU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcobV9wYWdlLnBhZ2VM
b2FkU3RhdGUoKS5hY3RpdmVVUkwoKSktPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHRvcExldmVsRG9j
dW1lbnRPcmlnaW4uZ2V0KCkpKSB7Ci0gICAgICAgIGhhbmRsZXIoZmFsc2UpOworICAgICAgICBo
YW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBhdXRvIHJlcXVlc3RJ
RCA9IGdlbmVyYXRlUmVxdWVzdElEKCk7CiAgICAgYXV0byB1c2VyTWVkaWFPcmlnaW4gPSBBUEk6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uZ2V0KCkpOwog
ICAgIGF1dG8gdG9wTGV2ZWxPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9w
TGV2ZWxEb2N1bWVudE9yaWdpbi5nZXQoKSk7Ci0gICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUHJveHk6OmNyZWF0ZShmcmFtZUlELCBXVEZNb3ZlKGhhbmRsZXIpLCBX
VEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50
T3JpZ2luKSk7CisgICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHk6OmNyZWF0ZShmcmFtZUlELCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyks
IHJlcXVlc3RJRCwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildKGJvb2wgYWxsb3dlZCkgbXV0
YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGhhbmRsZXIoeyB9
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXV0byByZXF1
ZXN0ID0gbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMudGFrZShyZXF1ZXN0SUQpKQorICAgICAgICAg
ICAgaGFuZGxlcihhbGxvd2VkKTsKKyAgICB9LCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3Jp
Z2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSk7CiAKLSAgICBtX3BlbmRpbmdE
ZXZpY2VSZXF1ZXN0cy5hZGQocmVxdWVzdElELCByZXF1ZXN0LmNvcHlSZWYoKSk7CisgICAgYXV0
byYgY2hlY2tSZXF1ZXN0ID0gbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMuYWRkKHJlcXVlc3RJRCwg
V1RGTW92ZShyZXF1ZXN0KSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgd2ViRnJhbWUsIHVzZXJNZWRpYU9yaWdpbiBhbmQgdG9wTGV2ZWxPcmlnaW4gZnJvbSB0
aGlzIHVpQ2xpZW50IEFQSSBjYWxsLgotICAgIG1fcGFnZS51aUNsaWVudCgpLmNoZWNrVXNlck1l
ZGlhUGVybWlzc2lvbkZvck9yaWdpbihtX3BhZ2UsICp3ZWJGcmFtZSwgdXNlck1lZGlhT3JpZ2lu
LmdldCgpLCB0b3BMZXZlbE9yaWdpbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSk7CisgICAgbV9wYWdl
LnVpQ2xpZW50KCkuY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKG1fcGFnZSwgKndl
YkZyYW1lLCB1c2VyTWVkaWFPcmlnaW4uZ2V0KCksIHRvcExldmVsT3JpZ2luLmdldCgpLCBjaGVj
a1JlcXVlc3QpOwogfQogCiBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5Ojp3YXNHcmFudGVkVmlkZW9PckF1ZGlvQWNjZXNzKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4pCkBAIC00NTMsMTIgKzQ4OSw5IEBAIGJvb2wg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6Ondhc0dyYW50ZWRWaWRlb09y
QXVkaW9BY2Nlc3ModWludDY0CiAKICAgICByZXR1cm4gZmFsc2U7CiB9Ci0jZW5kaWYKIAotdm9p
ZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFE
ZXZpY2VzRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4pCitWZWN0b3I8Q2FwdHVyZURldmljZT4g
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNvbXB1dGVGaWx0ZXJlZERl
dmljZUxpc3QoYm9vbCByZXZlYWxJZHNBbmRMYWJlbHMsIGNvbnN0IFN0cmluZyYgZGV2aWNlSURI
YXNoU2FsdCkKIHsKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRNYXhpbXVtQ2FtZXJhQ291bnQg
PSAyOwogI2Vsc2UKQEAgLTQ2Niw2MSArNDk5LDY4IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2
CiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRNYXhpbXVtTWljcm9waG9uZUNv
dW50ID0gMTsKIAotICAgIGF1dG8gcmVxdWVzdElEID0gZ2VuZXJhdGVSZXF1ZXN0SUQoKTsKLSAg
ICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHJlcXVlc3RJRCwgdXNlck1lZGlhSUQs
IHJlcXVlc3RPcmlnaW4gPSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCksIHRvcE9y
aWdpbiA9IHRvcExldmVsRG9jdW1lbnRPcmlnaW4uY29weVJlZigpXShib29sIG9yaWdpbkhhc1Bl
cnNpc3RlbnRBY2Nlc3MpIHsKKyAgICBhdXRvIGRldmljZXMgPSBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpzaW5nbGV0b24oKS5nZXRNZWRpYVN0cmVhbURldmljZXMoKTsKKyAgICBpbnQgY2Ft
ZXJhQ291bnQgPSAwOworICAgIGludCBtaWNyb3Bob25lQ291bnQgPSAwOworCisgICAgVmVjdG9y
PENhcHR1cmVEZXZpY2U+IGZpbHRlcmVkRGV2aWNlczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRl
dmljZSA6IGRldmljZXMpIHsKKyAgICAgICAgaWYgKCFkZXZpY2UuZW5hYmxlZCgpIHx8IChkZXZp
Y2UudHlwZSgpICE9IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSAm
JiBkZXZpY2UudHlwZSgpICE9IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1p
Y3JvcGhvbmUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFyZXZlYWxJ
ZHNBbmRMYWJlbHMpIHsKKyAgICAgICAgICAgIGlmIChkZXZpY2UudHlwZSgpID09IFdlYkNvcmU6
OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSAmJiArK2NhbWVyYUNvdW50ID4gZGVm
YXVsdE1heGltdW1DYW1lcmFDb3VudCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIGlmIChkZXZpY2UudHlwZSgpID09IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6Ok1pY3JvcGhvbmUgJiYgKyttaWNyb3Bob25lQ291bnQgPiBkZWZhdWx0TWF4aW11bU1p
Y3JvcGhvbmVDb3VudCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGF1dG8gbGFiZWwgPSBlbXB0eVN0cmluZygpOworICAgICAgICBhdXRvIGlkID0gZW1w
dHlTdHJpbmcoKTsKKyAgICAgICAgYXV0byBncm91cElkID0gZW1wdHlTdHJpbmcoKTsKKyAgICAg
ICAgaWYgKHJldmVhbElkc0FuZExhYmVscykgeworICAgICAgICAgICAgbGFiZWwgPSBkZXZpY2Uu
bGFiZWwoKTsKKyAgICAgICAgICAgIGlkID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2lu
Z2xldG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KGRldmljZS5wZXJzaXN0ZW50SWQoKSwgZGV2aWNl
SURIYXNoU2FsdCk7CisgICAgICAgICAgICBncm91cElkID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KGRldmljZS5ncm91cElkKCksIGRl
dmljZUlESGFzaFNhbHQpOworICAgICAgICB9CisKKyAgICAgICAgZmlsdGVyZWREZXZpY2VzLmFw
cGVuZChDYXB0dXJlRGV2aWNlKGlkLCBkZXZpY2UudHlwZSgpLCBsYWJlbCwgZ3JvdXBJZCkpOwor
ICAgIH0KKworICAgIG1faGFzRmlsdGVyZWREZXZpY2VMaXN0ID0gIXJldmVhbElkc0FuZExhYmVs
czsKKyAgICByZXR1cm4gZmlsdGVyZWREZXZpY2VzOworfQorI2VuZGlmCisKK3ZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0Zv
ckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiB0b3BMZXZlbERvY3VtZW50T3JpZ2luKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCB1c2VyTWVkaWFJRCwgZnJhbWVJRCwg
dXNlck1lZGlhRG9jdW1lbnRPcmlnaW4gPSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5jb3B5UmVm
KCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4gPSB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmNvcHlS
ZWYoKV0oT3B0aW9uYWw8Ym9vbD4gb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykgbXV0YWJsZSB7
CisgICAgICAgIGlmICghb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykKKyAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRGb3JPcmlnaW4ocmVxdWVzdE9yaWdpbi5nZXQoKSwg
dG9wT3JpZ2luLmdldCgpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJl
cXVlc3RJRCwgdXNlck1lZGlhSUQsICZvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzXSAoU3RyaW5n
JiYgZGV2aWNlSURIYXNoU2FsdCkgeworICAgICAgICAvLyBGSVhNRTogVGhlIGVudW1lcmF0ZSBk
ZXZpY2UgcmVxdWVzdCBtYXkgYmUgaW52YWxpZGF0ZWQgYWZ0ZXIgdGhhdCBwb2ludCwgd2Ugc2hv
dWxkIGNhbmNlbCBpdC4KKyAgICAgICAgYXV0byYgcmVxdWVzdE9yaWdpbiA9IHVzZXJNZWRpYURv
Y3VtZW50T3JpZ2luLmdldCgpOworICAgICAgICBhdXRvJiB0b3BPcmlnaW4gPSB0b3BMZXZlbERv
Y3VtZW50T3JpZ2luLmdldCgpOworICAgICAgICBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLmRl
dmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbihyZXF1ZXN0
T3JpZ2luLCB0b3BPcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
ZnJhbWVJRCwgdXNlck1lZGlhSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luID0gV1RGTW92ZSh1
c2VyTWVkaWFEb2N1bWVudE9yaWdpbiksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4gPSBXVEZNb3Zl
KHRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzID0gKm9y
aWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3NdIChTdHJpbmcmJiBkZXZpY2VJREhhc2hTYWx0KSB7CiAg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy50YWtl
KHJlcXVlc3RJRCk7Ci0gICAgICAgICAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KQotICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgc3luY1dpdGhXZWJDb3JlUHJlZnMo
KTsKIAotICAgICAgICAgICAgYXV0byBkZXZpY2VzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJlYW1EZXZpY2VzKCk7Ci0gICAgICAgICAgICBhdXRv
JiByZXF1ZXN0ID0gKnBlbmRpbmdSZXF1ZXN0OwotICAgICAgICAgICAgYm9vbCByZXZlYWxJZHNB
bmRMYWJlbHMgPSBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIHx8IHdhc0dyYW50ZWRWaWRlb09y
QXVkaW9BY2Nlc3MocmVxdWVzdC0+ZnJhbWVJRCgpLCByZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QtPnRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdp
bigpKTsKLSAgICAgICAgICAgIGludCBjYW1lcmFDb3VudCA9IDA7Ci0gICAgICAgICAgICBpbnQg
bWljcm9waG9uZUNvdW50ID0gMDsKLQotICAgICAgICAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+
IGZpbHRlcmVkRGV2aWNlczsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2aWNlIDog
ZGV2aWNlcykgewotICAgICAgICAgICAgICAgIGlmICghZGV2aWNlLmVuYWJsZWQoKSB8fCAoZGV2
aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEg
JiYgZGV2aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpN
aWNyb3Bob25lKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoIXJldmVhbElkc0FuZExhYmVscykgewotICAgICAgICAgICAgICAgICAgICBpZiAo
ZGV2aWNlLnR5cGUoKSA9PSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1l
cmEgJiYgKytjYW1lcmFDb3VudCA+IGRlZmF1bHRNYXhpbXVtQ2FtZXJhQ291bnQpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRldmlj
ZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9u
ZSAmJiArK21pY3JvcGhvbmVDb3VudCA+IGRlZmF1bHRNYXhpbXVtTWljcm9waG9uZUNvdW50KQot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgYXV0byBsYWJlbCA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAg
ICAgYXV0byBpZCA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBncm91cElk
ID0gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBpZiAocmV2ZWFsSWRzQW5kTGFiZWxz
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gZGV2aWNlLmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlkID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCku
aGFzaFN0cmluZ1dpdGhTYWx0KGRldmljZS5wZXJzaXN0ZW50SWQoKSwgZGV2aWNlSURIYXNoU2Fs
dCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyb3VwSWQgPSBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5oYXNoU3RyaW5nV2l0aFNhbHQoZGV2aWNlLmdyb3VwSWQoKSwgZGV2
aWNlSURIYXNoU2FsdCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZmls
dGVyZWREZXZpY2VzLmFwcGVuZChDYXB0dXJlRGV2aWNlKGlkLCBkZXZpY2UudHlwZSgpLCBsYWJl
bCwgZ3JvdXBJZCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX2hhc0ZpbHRlcmVk
RGV2aWNlTGlzdCA9ICFyZXZlYWxJZHNBbmRMYWJlbHM7Ci0KLSAgICAgICAgICAgIG1fcGFnZS5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVNZWRpYURldmljZUVu
dW1lcmF0aW9uKHVzZXJNZWRpYUlELCBXVEZNb3ZlKGZpbHRlcmVkRGV2aWNlcyksIFdURk1vdmUo
ZGV2aWNlSURIYXNoU2FsdCksIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgICAgICAgICAgYm9vbCByZXZlYWxJZHNBbmRMYWJlbHMgPSBvcmlnaW5IYXNQ
ZXJzaXN0ZW50QWNjZXNzIHx8IHdhc0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nlc3MoZnJhbWVJRCwg
dXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uZ2V0KCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4uZ2V0
KCkpOworCisgICAgICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbiB7IHVzZXJNZWRpYUlELCBjb21w
dXRlRmlsdGVyZWREZXZpY2VMaXN0KHJldmVhbElkc0FuZExhYmVscywgZGV2aWNlSURIYXNoU2Fs
dCksIGRldmljZUlESGFzaFNhbHQsIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MgfSwgbV9wYWdl
LnBhZ2VJRCgpKTsKICAgICAgICAgfSk7CiAgICAgfTsKIAotICAgIGdldFVzZXJNZWRpYVBlcm1p
c3Npb25JbmZvKHJlcXVlc3RJRCwgZnJhbWVJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9jdW1l
bnRPcmlnaW4pKTsKKyAgICBnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyhmcmFtZUlELCBXVEZN
b3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3Jp
Z2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0odXNlck1lZGlhSUQpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IGVhY2NlNmY5MmI2NWZmY2MyOWJlNGQxMzc4OGRhODFk
OTE1OTA1NTguLmE5NDA0YmY2ODlkYzE3NDJhMmFhMjRkMjI3MDIxZDE2OTg2YTNmOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUg
IlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUHJvZHVjZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CkBAIC00
OCw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZVBlbmRpbmdSZXF1ZXN0
cygpOwogCi0gICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2
NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+JiYgIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJl
YW1SZXF1ZXN0Jik7CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1l
KHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+JiYgIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgV2ViQ29yZTo6TWVkaWFTdHJl
YW1SZXF1ZXN0JiYpOwogCiAgICAgdm9pZCByZXNldEFjY2Vzcyh1aW50NjRfdCBtYWluRnJhbWVJ
RCk7CiAgICAgdm9pZCB2aWV3SXNCZWNvbWluZ1Zpc2libGUoKTsKQEAgLTcxLDI2ICs3MiwzOSBA
QCBwcml2YXRlOgogICAgIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVh
dGVQZXJtaXNzaW9uUmVxdWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgbWFpbkZy
YW1lSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1
c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRv
cExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1
ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2Vz
LCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJik7CiAgICAgdm9pZCBkZW55UmVxdWVzdCh1
aW50NjRfdCB1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNl
ck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uLCBjb25zdCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50
KTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGJvb2wgZ3JhbnRBY2Nlc3ModWludDY0
X3QgdXNlck1lZGlhSUQsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgYXVkaW9EZXZpY2Us
IGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgdmlkZW9EZXZpY2UsIGNvbnN0IFN0cmluZyYg
ZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KTsKKyAgICBib29sIGdyYW50QWNjZXNzKGNvbnN0IFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKTsKIAogICAgIGNvbnN0IFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHkqIHNlYXJjaEZvckdyYW50ZWRSZXF1ZXN0KHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9y
aWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmln
aW4sIGJvb2wgbmVlZHNBdWRpbywgYm9vbCBuZWVkc1ZpZGVvKSBjb25zdDsKICAgICBib29sIHdh
c1JlcXVlc3REZW5pZWQodWludDY0X3QgbWFpbkZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIGJvb2wgbmVlZHNBdWRpbywgYm9vbCBu
ZWVkc1ZpZGVvLCBib29sIG5lZWRzU2NyZWVuQ2FwdHVyZSk7CiAKLSAgICB2b2lkIGdldFVzZXJN
ZWRpYVBlcm1pc3Npb25JbmZvKHVpbnQ2NF90IHJlcXVlc3RJRCwgdWludDY0X3QgZnJhbWVJRCwg
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OkNvbXBsZXRpb25IYW5kbGVyJiYsIFJlZjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4pOworICAgIHZv
aWQgZ2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8odWludDY0X3QgZnJhbWVJRCwgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxib29sPik+JiYpOwogCiAgICAgZW51bSBjbGFzcyBSZXF1ZXN0
QWN0aW9uIHsKICAgICAgICAgRGVueSwKICAgICAgICAgR3JhbnQsCiAgICAgICAgIFByb21wdAog
ICAgIH07Ci0gICAgUmVxdWVzdEFjdGlvbiBnZXRSZXF1ZXN0QWN0aW9uKHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIGNvbnN0IFdlYkNv
cmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYg
YXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNl
cyk7CisgICAgUmVxdWVzdEFjdGlvbiBnZXRSZXF1ZXN0QWN0aW9uKGNvbnN0IFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHkmKTsKIAogICAgIGJvb2wgd2FzR3JhbnRlZFZpZGVvT3JBdWRp
b0FjY2Vzcyh1aW50NjRfdCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRp
YURvY3VtZW50T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxE
b2N1bWVudE9yaWdpbik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gY29t
cHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChib29sIHJldmVhbElkc0FuZExhYmVscywgY29uc3QgU3Ry
aW5nJiBkZXZpY2VJREhhc2hTYWx0KTsKKworICAgIHZvaWQgcHJvY2Vzc1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0KFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiYmLCBib29s
IGhhc1BlcnNpc3RlbnRBY2Nlc3MpOworICAgIHZvaWQgcHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Np
b25JbnZhbGlkUmVxdWVzdChjb25zdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Jiwg
Y29uc3QgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCk7CisgICAgdm9pZCBwcm9jZXNzVXNlck1l
ZGlhUGVybWlzc2lvblZhbGlkUmVxdWVzdChSZWY8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eT4mJiwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBW
ZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFN0cmluZyYmIGRl
dmljZUlkZW50aWZpZXJIYXNoU2FsdCk7CiAjZW5kaWYKIAogICAgIHZvaWQgd2F0Y2hkb2dUaW1l
ckZpcmVkKCk7CiAKKyAgICBzdHJ1Y3QgUGVuZGluZ0VtdW1lcmF0ZURldmljZVJlcXVlc3Qgewor
ICAgICAgICB1aW50NjRfdCBtYWluRnJhbWVJRDsKKyAgICAgICAgUmVmPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbjsKKyAgICAgICAgUmVmPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiB0b3BMZXZlbERvY3VtZW50T3JpZ2luOworICAgIH07CisKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4+
IG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eT4+IG1fcGVuZGluZ0VudW1lcmF0ZURldmljZVJl
cXVlc3RzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tQcm94eT4+IG1fcGVuZGluZ0RldmljZVJlcXVlc3RzOwogCiAgICAgV2ViUGFnZVByb3h5JiBt
X3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgKaW5kZXggYWM4MDVlNzg4YmUyMzE3ZTBhN2FhZWI3MTg5
MDljZjQ1YmNhODkwOC4uMDY3ZjgwMjAzZjFhNWZkZDMyMzhjOGFlMjlkN2RjYWNhMWFlYTEyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaApAQCAtNDgsMjEgKzQ4LDQyIEBAIHB1YmxpYzoKICAgICB2b2lk
IGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uID0gVXNlck1lZGlhQWNjZXNzRGVuaWFs
UmVhc29uOjpVc2VyTWVkaWFEaXNhYmxlZCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAg
ICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbWFuYWdlcjsgfQogCiAgICAgYm9v
bCByZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxpZ2libGVBdWRpb0Rl
dmljZXMuc2l6ZSgpOyB9CiAgICAgYm9vbCByZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpIGNvbnN0IHsg
cmV0dXJuICFyZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkgJiYgbV9lbGlnaWJsZVZpZGVvRGV2aWNl
cy5zaXplKCk7IH0KICAgICBib29sIHJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVlc3QudHlwZSA9PSBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6
OkRpc3BsYXlNZWRpYSAmJiBtX2VsaWdpYmxlVmlkZW9EZXZpY2VzLnNpemUoKTsgfQogCisgICAg
dm9pZCBzZXRFbGlnaWJsZVZpZGVvRGV2aWNlVUlEcyhWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURl
dmljZT4mJiBkZXZpY2VzKSB7IG1fZWxpZ2libGVWaWRlb0RldmljZXMgPSBXVEZNb3ZlKGRldmlj
ZXMpOyB9CisgICAgdm9pZCBzZXRFbGlnaWJsZUF1ZGlvRGV2aWNlVUlEcyhWZWN0b3I8V2ViQ29y
ZTo6Q2FwdHVyZURldmljZT4mJiBkZXZpY2VzKSB7IG1fZWxpZ2libGVBdWRpb0RldmljZXMgPSBX
VEZNb3ZlKGRldmljZXMpOyB9CisKICAgICBWZWN0b3I8U3RyaW5nPiB2aWRlb0RldmljZVVJRHMo
KSBjb25zdDsKICAgICBWZWN0b3I8U3RyaW5nPiBhdWRpb0RldmljZVVJRHMoKSBjb25zdDsKKyAg
ICBib29sIGhhc0F1ZGlvRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gIW1fZWxpZ2libGVBdWRpb0Rl
dmljZXMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNWaWRlb0RldmljZSgpIGNvbnN0IHsgcmV0
dXJuICFtX2VsaWdpYmxlVmlkZW9EZXZpY2VzLmlzRW1wdHkoKTsgfQorCisgICAgYm9vbCBoYXNQ
ZXJzaXN0ZW50QWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZXJzaXN0ZW50QWNjZXNzOyB9
CisgICAgdm9pZCBzZXRIYXNQZXJzaXN0ZW50QWNjZXNzKCkgeyBtX2hhc1BlcnNpc3RlbnRBY2Nl
c3MgPSB0cnVlOyB9CiAKKyAgICB1aW50NjRfdCB1c2VyTWVkaWFJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlck1lZGlhSUQ7IH0KICAgICB1aW50NjRfdCBtYWluRnJhbWVJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFpbkZyYW1lSUQ7IH0KICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9mcmFtZUlEOyB9CisKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxE
b2N1bWVudFNlY3VyaXR5T3JpZ2luKCkgeyByZXR1cm4gbV90b3BMZXZlbERvY3VtZW50U2VjdXJp
dHlPcmlnaW4uZ2V0KCk7IH0KICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlh
RG9jdW1lbnRTZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fdXNlck1lZGlhRG9jdW1lbnRTZWN1
cml0eU9yaWdpbi5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0
b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3RvcExldmVs
RG9jdW1lbnRTZWN1cml0eU9yaWdpbi5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV91c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luLmdldCgpOyB9CisKKyAgICBjb25z
dCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmIHVzZXJSZXF1ZXN0KCkgY29uc3QgeyByZXR1
cm4gbV9yZXF1ZXN0OyB9CiAKICAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGUg
cmVxdWVzdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3QudHlwZTsgfQogCisgICAgdm9p
ZCBzZXREZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoU3RyaW5nJiYgc2FsdCkgeyBtX2RldmljZUlk
ZW50aWZpZXJIYXNoU2FsdCA9IFdURk1vdmUoc2FsdCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRl
dmljZUlkZW50aWZpZXJIYXNoU2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWRlbnRpZmll
ckhhc2hTYWx0OyB9CisKKyAgICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlIGF1ZGlvRGV2aWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9lbGlnaWJsZUF1ZGlvRGV2aWNlcy5pc0VtcHR5KCkgPyBXZWJDb3Jl
OjpDYXB0dXJlRGV2aWNlIHsgfSA6IG1fZWxpZ2libGVBdWRpb0RldmljZXNbMF07IH0KKyAgICBX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlIHZpZGVvRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9lbGln
aWJsZVZpZGVvRGV2aWNlcy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlIHsgfSA6
IG1fZWxpZ2libGVWaWRlb0RldmljZXNbMF07IH0KKwogcHJpdmF0ZToKICAgICBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IG1haW5GcmFtZUlELCB1aW50NjRf
dCBmcmFtZUlELCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1l
bnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50
T3JpZ2luLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiBhdWRpb0RldmljZXMsIFZl
Y3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgV2ViQ29yZTo6TWVk
aWFTdHJlYW1SZXF1ZXN0JiYpOwogCkBAIC03NSw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IG1fZWxpZ2libGVWaWRlb0RldmljZXM7CiAgICAg
VmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IG1fZWxpZ2libGVBdWRpb0RldmljZXM7CiAg
ICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBib29sIG1faGFz
UGVyc2lzdGVudEFjY2VzcyB7IGZhbHNlIH07CisgICAgU3RyaW5nIG1fZGV2aWNlSWRlbnRpZmll
ckhhc2hTYWx0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjOGUwZmViYThmNTZjYzc4MzI1YWQ1MDgzZTRj
ZjU5NjdiMzJhNDVkLi5hYzJlYWM5ODQ0ZTQwN2ZkN2ExMzU0ZTRkODYxMmVhMDc1ZGQ0YjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTcwMTcsMTIgKzcw
MTcsMTIgQEAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIFdlYlBhZ2VQ
cm94eTo6dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKIH0KICNlbmRpZgogCi12b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiAgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5EYXRhLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHRvcExldmVsRG9jdW1lbnRPcmlnaW5EYXRhLCBjb25zdCBXZWJDb3JlOjpN
ZWRpYVN0cmVhbVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFVz
ZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiAgdXNlck1lZGlhRG9j
dW1lbnRPcmlnaW5EYXRhLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExl
dmVsRG9jdW1lbnRPcmlnaW5EYXRhLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1
ZXN0KQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgTUVTU0FHRV9DSEVDSyhtX3By
b2Nlc3MsIG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCkpOwogCi0gICAgdXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkucmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFt
ZSh1c2VyTWVkaWFJRCwgZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5EYXRhLnNlY3Vy
aXR5T3JpZ2luKCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCks
IHJlcXVlc3QpOworICAgIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnJlcXVl
c3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodXNlck1lZGlhSUQsIGZyYW1lSUQsIHVzZXJN
ZWRpYURvY3VtZW50T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpLCB0b3BMZXZlbERvY3VtZW50
T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlcXVlc3QpKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHVzZXJNZWRpYUlEKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDdiZTkxOTQzODkwYjc1
ZDBlMjhjYTM3MDFmNWI0NjdlYzA4NzQ3YTIuLjdkMmIzNWI2Mjg5ZWM3NTBmOWI4MmMyNzVkNTkx
NmI2ZTBlYmZhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
NTk3LDcgKzE1OTcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIHVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcigpOwogI2VuZGlmCi0gICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVy
bWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbERv
Y3VtZW50T3JpZ2luSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0
Jik7CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90
IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luSWRlbnRpZmllciwg
V2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYpOwogICAgIHZvaWQgZW51bWVyYXRlTWVkaWFE
ZXZpY2VzRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5E
YXRhLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsRG9jdW1lbnRP
cmlnaW5EYXRhKTsKICAgICB2b2lkIGJlZ2luTW9uaXRvcmluZ0NhcHR1cmVEZXZpY2VzKCk7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZjNlMjA2NGMyM2ExODljODcyNWZiZTU3N2IyMTkyMTY5ZmJlMjcyLi5jYjYzY2U0
Nzc3NzExOGJlNDQ3ZDM1ZTUzMmI2Y2YzMzY5YWNhY2FiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTktMDItMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAg
IEZpbHRlciBvdXQgT3ZlcmNvbnN0cmFpbmVkZXJyb3IuY29uc3RyYWludCB3aGVuIGdldFVzZXJN
ZWRpYSBpcyBub3QgZ3JhbnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk0MjQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL292ZXJjb25zdHJhaW5lZGVycm9yLWNvbnN0
cmFpbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL292
ZXJjb25zdHJhaW5lZGVycm9yLWNvbnN0cmFpbnQuaHRtbDogQWRkZWQuCisKIDIwMTktMDItMDQg
IFNoYXduIFJvYmVydHMgIDxzcm9iZXJ0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBTaW11
bGF0b3JdIHBhZ2VvdmVybGF5L292ZXJsYXkgdGVzdHMgYXJlIGZsYWt5IGZhaWx1cmVzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL292ZXJjb25zdHJhaW5lZGVycm9y
LWNvbnN0cmFpbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9v
dmVyY29uc3RyYWluZWRlcnJvci1jb25zdHJhaW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NDJiNWJhNzQ2Y2JhNjk0ZmQwODQyM2M1NjAxMDY3ZTQ4MDQxZmRlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9vdmVyY29uc3RyYWluZWRlcnJvci1jb25z
dHJhaW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBCZWZvcmUgZ3JhbnQg
CitQQVNTIEFmdGVyIGdyYW50IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL292ZXJjb25zdHJhaW5lZGVycm9yLWNvbnN0cmFpbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vb3ZlcmNvbnN0cmFpbmVkZXJyb3ItY29uc3RyYWludC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMxNzZlZmNlYmU2YWFhYTE1MGQ1YTJhMWM3OGU5MTk0NTA0ZGRmZDAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL292ZXJjb25zdHJhaW5l
ZGVycm9yLWNvbnN0cmFpbnQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IWRvY3R5cGUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAg
ICAgIDx0aXRsZT5PdmVyQ29uc3RyYWluZWRFcnJvci5jb25zdHJhaW50IHRlc3Rpbmc8L3RpdGxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorCisgICAgICAg
IDxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5zZXRVc2Vy
TWVkaWFQZXJtaXNzaW9uKHRydWUpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgd2luZG93
LmludGVybmFscy5zZXRNb2NrTWVkaWFDYXB0dXJlRGV2aWNlc0VuYWJsZWQodHJ1ZSk7CisKK3By
b21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHthdWRpbzoge2RldmljZUlkOiB7ZXhhY3Q6Im5vbmUifX19KS50aGVu
KAorICAgICAgICAoKSA9PiBhc3NlcnRfbm90X3JlYWNoZWQoImd1bSBzaG91bGQgZmFpbCIpLAor
ICAgICAgICAoZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBpbnN0YW5jZW9mIE92
ZXJjb25zdHJhaW5lZEVycm9yKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZS5jb25zdHJh
aW50LCAiIiwgImNvbnN0cmFpbnQgc2hvdWxkIGJlIHRoZSBlbXB0eSBzdHJpbmciKTsKKyAgICAg
ICAgfQorICAgICk7Cit9LCAiQmVmb3JlIGdyYW50Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyh0
ZXN0KSA9PiB7CisgICAgYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e2F1ZGlvOiB0cnVlfSk7CisgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHthdWRpbzoge2RldmljZUlkOiB7ZXhhY3Q6Im5vbmUifX19KS50aGVuKAorICAgICAg
ICAoKSA9PiBhc3NlcnRfbm90X3JlYWNoZWQoImd1bSBzaG91bGQgZmFpbCIpLAorICAgICAgICAo
ZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBpbnN0YW5jZW9mIE92ZXJjb25zdHJh
aW5lZEVycm9yKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZS5jb25zdHJhaW50LCAiZGV2
aWNlSWQiLCAiY29uc3RyYWludCBzaG91bGQgYmUgZGV2aWNlSWQiKTsKKyAgICAgICAgfQorICAg
ICk7Cit9LCAiQWZ0ZXIgZ3JhbnQiKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361304</attachid>
            <date>2019-02-06 10:32:04 -0800</date>
            <delta_ts>2019-02-07 10:56:23 -0800</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-194240-20190206103204.patch</filename>
            <type>text/plain</type>
            <size>49829</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU2YmFiNjhhZmQ1Njk1NjZi
NDU2MjQwNTA3YmZkOTZkNmU2ZTM5N2QuLmU0YTViNGU4MGVhZWU1ZWM0MzEzOWU0NDdkNTBjN2Iz
YzVlNTE5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTktMDItMDYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbHRlciBvdXQgT3ZlcmNvbnN0
cmFpbmVkZXJyb3IuY29uc3RyYWludCB3aGVuIGdldFVzZXJNZWRpYSBpcyBub3QgZ3JhbnRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MjQwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJl
IGluIFVJUHJvY2VzcyB0byBmaWx0ZXIgb3V0IGNvbnN0cmFpbnQgaWYgZWl0aGVyIHRoZSBwYWdl
IGhhZCBub3QgZ3VtIGdyYW50ZWQKKyAgICAgICAgb3IgaXQgaGFzIG5vdCBwZXJzaXN0ZW50IGFj
Y2Vzcy4KKworICAgICAgICBSZWZhY3RvciBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eSB0byBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBlYXNpZXIgdG8gdW5kZXJzdGFuZC4K
KyAgICAgICAgU29tZSBmdXJ0aGVyIHJlZmFjdG9yaW5nIG1pZ2h0IGZvbGxvdy4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGFkZGVkIHRlc3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tQcm94eTo6c2V0VXNlck1lZGlhQWNjZXNzSW5mbyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1
cmVEZXZpY2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5Ojp1c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKToKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdyYW50QWNj
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmdldFJlcXVlc3RBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5Ojpwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJN
ZWRpYVBlcm1pc3Npb25JbnZhbGlkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lv
blZhbGlkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjpnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp3YXNHcmFudGVk
VmlkZW9PckF1ZGlvQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNvbXB1dGVGaWx0ZXJlZERldmljZUxpc3QpOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVy
YXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUGVybWlzc2lvblJlcXVlc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OnNldEVsaWdpYmxlVmlkZW9EZXZpY2VVSURzKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6c2V0RWxpZ2libGVBdWRpb0Rl
dmljZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5OjpoYXNBdWRpb0RldmljZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6Omhhc1ZpZGVvRGV2aWNlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6aGFzUGVyc2lzdGVudEFjY2Vz
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OnNldEhhc1BlcnNpc3RlbnRBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp1c2VyTWVkaWFJRCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnRvcExldmVsRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk6OnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp1c2VyUmVxdWVz
dCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OnNldERldmljZUlkZW50aWZpZXJIYXNoU2FsdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmF1
ZGlvRGV2aWNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eTo6dmlkZW9EZXZpY2UgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKwogMjAxOS0wMi0wNiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxp
YS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjQwNzg1KTogW1NPVVBdIEJyb2tlIGNvb2tp
ZSBwZXJzaXN0ZW50IHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcAppbmRleCA5NjUxM2ViMDExYjAw
MGRlMDM3MWJmN2QyMjI1MDgyMTRmMmRhN2RmLi42OGZlN2U1OGE3MzRlZGNjZmRlNDdjNTdiNzdj
Mzk2OTNkZjYzMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwCkBAIC00MCwxOSArNDAsMjYgQEAgVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
KHVpbnQ2NF90IGZyYW1lSUQsIEMKICAgICAsIG1fdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbikpCiB7CiB9Ci0KKyAgICAKK1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Ojp+VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHko
KQoreworICAgIGludmFsaWRhdGUoKTsKK30KKyAgICAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrUHJveHk6OnNldFVzZXJNZWRpYUFjY2Vzc0luZm8oYm9vbCBhbGxvd2VkKQogewogICAg
IEFTU0VSVChtX2NvbXBsZXRpb25IYW5kbGVyKTsKICAgICBpZiAoIW1fY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29tcGxldGlvbkhhbmRsZXIoYWxsb3dlZCk7
Ci0gICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7CisgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoYWxsb3dlZCk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6
OmludmFsaWRhdGUoKQogeworICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBt
X2NvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eS5oCmluZGV4IDZhMDg5NTA2Y2VhMzg4ZDFkNGMzZDZkZWZkYTVm
ZTBlMGFlZTU3YzQuLmRkMDIwNWJjYzRjNTdlYTliYjdlYWJjNjc5ZGI1ZjM1Yjk3MjJmZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrUHJveHkuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJNZWRp
YVBlcm1pc3Npb25DaGVjaz4gewogcHVibGljOgogCi0gICAgdXNpbmcgQ29tcGxldGlvbkhhbmRs
ZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBhbGxvd2VkKT47CisgICAgdXNpbmcgQ29tcGxl
dGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8Ym9vbD4g
YWxsb3dlZCk+OwogCiAgICAgc3RhdGljIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eT4gY3JlYXRlKHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlciwg
UmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbikKICAg
ICB7CkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHkodWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXImJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3Jp
Z2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdp
bik7CisgICAgflVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5KCk7CiAKICAgICB1aW50NjRf
dCBtX2ZyYW1lSUQ7CiAgICAgQ29tcGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCA5ZmEzYTUwZDk2MGE0MjUw
MGFlNGVjNWJmNDdmNWFjOTkwNDdjZTg0Li41NjAwODQzNmQxODg3OWY4MmEyNzc2ZjkwMTM5NTE1
NjgyNjhmZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC03NSw4
ICs3NSw2IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6Omlu
dmFsaWRhdGVQZW5kaW5nUmVxdWVzdHMoKQogICAgICAgICByZXF1ZXN0LT5pbnZhbGlkYXRlKCk7
CiAgICAgbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHMuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0
byYgcmVxdWVzdCA6IG1fcGVuZGluZ0RldmljZVJlcXVlc3RzLnZhbHVlcygpKQotICAgICAgICBy
ZXF1ZXN0LT5pbnZhbGlkYXRlKCk7CiAgICAgbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMuY2xlYXIo
KTsKIH0KIApAQCAtOTIsMjMgKzkwLDE4IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpCiAgICAgaWYgKCFtX3BhZ2Uu
aXNWYWxpZCgpIHx8ICFtX3BhZ2UubWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gcmVxdWVzdElEID0gZ2VuZXJhdGVSZXF1ZXN0SUQoKTsKLSAgICBhdXRvIGhhbmRsZXIg
PSBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3RJRF0oYm9vbCBv
cmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICBhdXRvIGhhbmRsZXIgPSBbdGhpc10oT3B0aW9uYWw8Ym9vbD4gb3JpZ2luSGFzUGVy
c2lzdGVudEFjY2VzcykgbXV0YWJsZSB7CisgICAgICAgIGlmICghb3JpZ2luSGFzUGVyc2lzdGVu
dEFjY2VzcyB8fCAhbV9wYWdlLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMudGFrZShy
ZXF1ZXN0SUQpOwotICAgICAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0IHx8ICFtX3BhZ2UuaXNWYWxp
ZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChtX2dyYW50ZWRSZXF1ZXN0
cy5pc0VtcHR5KCkgJiYgIW9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpCisgICAgICAgIGlmICht
X2dyYW50ZWRSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgISpvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNz
KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2FwdHVyZURldmljZXNDaGFuZ2VkKCksIG1fcGFnZS5wYWdlSUQo
KSk7CiAgICAgfTsKIAogICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShtX3BhZ2UubWFpbkZyYW1lKCktPnVybCgpKTsKLSAgICBnZXRVc2VyTWVkaWFQZXJt
aXNzaW9uSW5mbyhyZXF1ZXN0SUQsIG1fcGFnZS5tYWluRnJhbWUoKS0+ZnJhbWVJRCgpLCBXVEZN
b3ZlKGhhbmRsZXIpLCBvcmlnaW4uZ2V0KCksIFdURk1vdmUob3JpZ2luKSk7CisgICAgZ2V0VXNl
ck1lZGlhUGVybWlzc2lvbkluZm8obV9wYWdlLm1haW5GcmFtZSgpLT5mcmFtZUlEKCksIG9yaWdp
bi5nZXQoKSwgV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGhhbmRsZXIpKTsKICNlbmRpZgogfQog
CkBAIC0xMTcsMTMgKzExMCw2IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmNsZWFyQ2FjaGVkU3RhdGUoKQogICAgIGludmFsaWRhdGVQZW5kaW5nUmVxdWVz
dHMoKTsKIH0KIAotUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVQZXJtaXNzaW9uUmVxdWVzdCh1
aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgbWFpbkZyYW1lSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxDYXB0dXJlRGV2
aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2Vz
LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0KQotewotICAgIGF1dG8gcGVybWlzc2lvblJl
cXVlc3QgPSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUoKnRoaXMsIHVz
ZXJNZWRpYUlELCBtYWluRnJhbWVJRCwgZnJhbWVJRCwgV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVu
dE9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbiksIFdURk1vdmUoYXVkaW9E
ZXZpY2VzKSwgV1RGTW92ZSh2aWRlb0RldmljZXMpLCBXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICBt
X3BlbmRpbmdVc2VyTWVkaWFSZXF1ZXN0cy5hZGQodXNlck1lZGlhSUQsIHBlcm1pc3Npb25SZXF1
ZXN0LnB0cigpKTsKLSAgICByZXR1cm4gcGVybWlzc2lvblJlcXVlc3Q7Ci19Ci0KICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogc3RhdGljIHVpbnQ2NF90IHRvV2ViQ29yZShVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24gcmVhc29uKQog
ewpAQCAtMTg4LDE1ICsxNzQsMTggQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6dXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCh1aW50NjRfdAogICAgIGlmICgh
cmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUo
KS5kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRGb3JPcmlnaW4ocmVx
dWVzdC0+dXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCByZXF1ZXN0LT50b3BMZXZl
bERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpLCB1c2VyTWVkaWFJRCwgYXVkaW9EZXZpY2UgPSBXVEZNb3ZlKGF1ZGlvRGV2aWNlKSwg
dmlkZW9EZXZpY2UgPSBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgbG9jYWxSZXF1ZXN0ID0gcmVxdWVz
dC5jb3B5UmVmKCldIChTdHJpbmcmJiBkZXZpY2VJREhhc2hTYWx0KSBtdXRhYmxlIHsKKyAgICBh
dXRvJiB1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC0+dXNlck1lZGlh
RG9jdW1lbnRTZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8mIHRvcExldmVsRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiA9IHJlcXVlc3QtPnRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpOwor
ICAgIG1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoKS5k
ZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luKHVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4s
IHRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCByZXF1ZXN0ID0gcmVxdWVzdC5yZWxlYXNlTm9uTnVsbCgpXSAoU3RyaW5n
JiYgZGV2aWNlSURIYXNoU2FsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChncmFudEFjY2Vzcyh1c2VyTWVkaWFJRCwg
V1RGTW92ZShhdWRpb0RldmljZSksIFdURk1vdmUodmlkZW9EZXZpY2UpLCBXVEZNb3ZlKGRldmlj
ZUlESGFzaFNhbHQpKSkgewotICAgICAgICAgICAgbV9ncmFudGVkUmVxdWVzdHMuYXBwZW5kKGxv
Y2FsUmVxdWVzdC5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgICAgIGlmIChtX2hhc0ZpbHRl
cmVkRGV2aWNlTGlzdCkKLSAgICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsK
LSAgICAgICAgICAgIG1faGFzRmlsdGVyZWREZXZpY2VMaXN0ID0gZmFsc2U7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKCFncmFudEFjY2VzcyhyZXF1ZXN0KSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX2dyYW50ZWRSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7Cisg
ICAgICAgIGlmIChtX2hhc0ZpbHRlcmVkRGV2aWNlTGlzdCkKKyAgICAgICAgICAgIGNhcHR1cmVE
ZXZpY2VzQ2hhbmdlZCgpOworICAgICAgICBtX2hhc0ZpbHRlcmVkRGV2aWNlTGlzdCA9IGZhbHNl
OwogICAgIH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odXNlck1lZGlhSUQpOwpAQCAtMjY2
LDE0ICsyNTUsMTQgQEAgYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6d2FzUmVxdWVzdERlbmllZCh1aW50NjRfdCBtYWluRnJhbWUKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdyYW50
QWNjZXNzKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBDYXB0dXJlRGV2aWNlIGF1ZGlvRGV2
aWNlLCBjb25zdCBDYXB0dXJlRGV2aWNlIHZpZGVvRGV2aWNlLCBjb25zdCBTdHJpbmcmIGRldmlj
ZUlkZW50aWZpZXJIYXNoU2FsdCkKK2Jvb2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmdyYW50QWNjZXNzKGNvbnN0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKCFVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xl
dG9uKCkud2lsbENyZWF0ZU1lZGlhU3RyZWFtKCp0aGlzLCAhIWF1ZGlvRGV2aWNlLCAhIXZpZGVv
RGV2aWNlKSkgewotICAgICAgICBkZW55UmVxdWVzdCh1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpPdGhlckZh
aWx1cmUsICJVbmFibGUgdG8gZXh0ZW5kIHNhbmRib3guIik7CisgICAgaWYgKCFVc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkud2lsbENyZWF0ZU1lZGlhU3RyZWFtKCp0aGlzLCBy
ZXF1ZXN0Lmhhc0F1ZGlvRGV2aWNlKCksIHJlcXVlc3QuaGFzVmlkZW9EZXZpY2UoKSkpIHsKKyAg
ICAgICAgZGVueVJlcXVlc3QocmVxdWVzdC51c2VyTWVkaWFJRCgpLCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246Ok90aGVyRmFpbHVy
ZSwgIlVuYWJsZSB0byBleHRlbmQgc2FuZGJveC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXNl
ck1lZGlhQWNjZXNzV2FzR3JhbnRlZCh1c2VyTWVkaWFJRCwgYXVkaW9EZXZpY2UsIHZpZGVvRGV2
aWNlLCBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1f
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNzV2Fz
R3JhbnRlZChyZXF1ZXN0LnVzZXJNZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9EZXZpY2UoKSwgcmVx
dWVzdC52aWRlb0RldmljZSgpLCByZXF1ZXN0LmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCgpKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpAQCAtMjk2LDI1
ICsyODUsMjYgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
c2NoZWR1bGVOZXh0UmVqZWN0aW9uKCkKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6UmVxdWVzdEFjdGlvbiBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z2V0UmVxdWVzdEFjdGlvbih1aW50
NjRfdCBmcmFtZUlELCBTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFNl
Y3VyaXR5T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBjb25zdCBNZWRpYVN0cmVhbVJl
cXVlc3QmIHVzZXJSZXF1ZXN0LCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGF1ZGlvRGV2aWNlcywg
VmVjdG9yPENhcHR1cmVEZXZpY2U+JiB2aWRlb0RldmljZXMpCitVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6UmVxdWVzdEFjdGlvbiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6Z2V0UmVxdWVzdEFjdGlvbihjb25zdCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0KQogewotICAgIGJvb2wgcmVxdWVzdGluZ1NjcmVlbkNh
cHR1cmUgPSB1c2VyUmVxdWVzdC50eXBlID09IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlz
cGxheU1lZGlhOwotICAgIEFTU0VSVCghKHJlcXVlc3RpbmdTY3JlZW5DYXB0dXJlICYmIHZpZGVv
RGV2aWNlcy5pc0VtcHR5KCkpKTsKLSAgICBBU1NFUlQoIShyZXF1ZXN0aW5nU2NyZWVuQ2FwdHVy
ZSAmJiAhYXVkaW9EZXZpY2VzLmlzRW1wdHkoKSkpOwotICAgIGJvb2wgcmVxdWVzdGluZ0NhbWVy
YSA9ICFyZXF1ZXN0aW5nU2NyZWVuQ2FwdHVyZSAmJiAhdmlkZW9EZXZpY2VzLmlzRW1wdHkoKTsK
LSAgICBib29sIHJlcXVlc3RpbmdNaWNyb3Bob25lID0gIWF1ZGlvRGV2aWNlcy5pc0VtcHR5KCk7
CisgICAgYm9vbCByZXF1ZXN0aW5nU2NyZWVuQ2FwdHVyZSA9IHJlcXVlc3QucmVxdWVzdFR5cGUo
KSA9PSBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6OkRpc3BsYXlNZWRpYTsKKyAgICBib29sIHJl
cXVlc3RpbmdDYW1lcmEgPSAhcmVxdWVzdGluZ1NjcmVlbkNhcHR1cmUgJiYgcmVxdWVzdC5oYXNW
aWRlb0RldmljZSgpOworICAgIGJvb2wgcmVxdWVzdGluZ01pY3JvcGhvbmUgPSByZXF1ZXN0Lmhh
c0F1ZGlvRGV2aWNlKCk7CiAKLSAgICBpZiAod2FzUmVxdWVzdERlbmllZChmcmFtZUlELCB1c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbiwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgcmVxdWVzdGluZ01p
Y3JvcGhvbmUsIHJlcXVlc3RpbmdDYW1lcmEsIHJlcXVlc3RpbmdTY3JlZW5DYXB0dXJlKSkKKyAg
ICBBU1NFUlQoIShyZXF1ZXN0aW5nU2NyZWVuQ2FwdHVyZSAmJiAhcmVxdWVzdC5oYXNWaWRlb0Rl
dmljZSgpKSk7CisgICAgQVNTRVJUKCEocmVxdWVzdGluZ1NjcmVlbkNhcHR1cmUgJiYgcmVxdWVz
dGluZ01pY3JvcGhvbmUpKTsKKworICAgIGlmICh3YXNSZXF1ZXN0RGVuaWVkKHJlcXVlc3QuZnJh
bWVJRCgpLCByZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVz
dC50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdGluZ01pY3JvcGhvbmUs
IHJlcXVlc3RpbmdDYW1lcmEsIHJlcXVlc3RpbmdTY3JlZW5DYXB0dXJlKSkKICAgICAgICAgcmV0
dXJuIFJlcXVlc3RBY3Rpb246OkRlbnk7CiAKLSAgICBpZiAodXNlclJlcXVlc3QudHlwZSA9PSBN
ZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6OkRpc3BsYXlNZWRpYSkKKyAgICBpZiAocmVxdWVzdC5y
ZXF1ZXN0VHlwZSgpID09IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1lZGlhKQog
ICAgICAgICByZXR1cm4gUmVxdWVzdEFjdGlvbjo6UHJvbXB0OwogCi0gICAgcmV0dXJuIHNlYXJj
aEZvckdyYW50ZWRSZXF1ZXN0KGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCB0b3BM
ZXZlbERvY3VtZW50T3JpZ2luLCByZXF1ZXN0aW5nTWljcm9waG9uZSwgcmVxdWVzdGluZ0NhbWVy
YSkgPyBSZXF1ZXN0QWN0aW9uOjpHcmFudCA6IFJlcXVlc3RBY3Rpb246OlByb21wdDsKKyAgICBy
ZXR1cm4gc2VhcmNoRm9yR3JhbnRlZFJlcXVlc3QocmVxdWVzdC5mcmFtZUlEKCksIHJlcXVlc3Qu
dXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCByZXF1ZXN0LnRvcExldmVsRG9jdW1l
bnRTZWN1cml0eU9yaWdpbigpLCByZXF1ZXN0aW5nTWljcm9waG9uZSwgcmVxdWVzdGluZ0NhbWVy
YSkgPyBSZXF1ZXN0QWN0aW9uOjpHcmFudCA6IFJlcXVlc3RBY3Rpb246OlByb21wdDsKIH0KICNl
bmRpZgogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1
ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50
NjRfdCBmcmFtZUlELCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmln
aW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBjb25zdCBN
ZWRpYVN0cmVhbVJlcXVlc3QmIHVzZXJSZXF1ZXN0KQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1
aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2
ZWxEb2N1bWVudE9yaWdpbiwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYgdXNlclJlcXVlc3QpCiB7CiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBpZiAoIVVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5jYXB0dXJlRW5hYmxlZCgpKSB7CkBAIC0zMjMsOTUgKzMxMyw2MiBAQCB2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0VXNlck1l
ZGlhUGVybWlzc2lvbkZvckZyYW1lKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6SW52YWxpZENvbnN0cmFpbnRzSGFuZGxlciBpbnZhbGlk
SGFuZGxlciA9IFt0aGlzLCB1c2VyTWVkaWFJRF0oY29uc3QgU3RyaW5nJiBpbnZhbGlkQ29uc3Ry
YWludCkgewotICAgICAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgZGVueVJlcXVlc3QodXNlck1lZGlhSUQsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6SW52YWxpZENvbnN0cmFpbnQsIGludmFs
aWRDb25zdHJhaW50KTsKLSAgICB9OworICAgIGF1dG8gdXNlck1lZGlhT3JpZ2luID0gQVBJOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmdldCgpKTsKKyAg
ICBhdXRvIHRvcExldmVsT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvcExl
dmVsRG9jdW1lbnRPcmlnaW4uZ2V0KCkpOwogCi0gICAgYXV0byB2YWxpZEhhbmRsZXIgPSBbdGhp
cywgdXNlck1lZGlhSUQsIGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luID0gdXNlck1l
ZGlhRG9jdW1lbnRPcmlnaW4uY29weVJlZigpLCB0b3BMZXZlbERvY3VtZW50T3JpZ2luID0gdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCksIGxvY2FsVXNlclJlcXVlc3QgPSB1c2VyUmVx
dWVzdF0oVmVjdG9yPENhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8Q2FwdHVy
ZURldmljZT4mJiB2aWRlb0RldmljZXMsIFN0cmluZyYmIGRldmljZUlkZW50aWZpZXJIYXNoU2Fs
dCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSB8fCAhbV9wYWdlLm1h
aW5GcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVxdWVzdCA9IG1fcGVu
ZGluZ1VzZXJNZWRpYVJlcXVlc3RzLmFkZCh1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eTo6Y3JlYXRlKCp0aGlzLCB1c2VyTWVkaWFJRCwgbV9wYWdlLm1haW5GcmFt
ZSgpLT5mcmFtZUlEKCksIGZyYW1lSUQsIFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4p
LCBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCB7IH0sIHsgfSwgV1RGTW92ZSh1c2Vy
UmVxdWVzdCkpKS5pdGVyYXRvci0+dmFsdWUuY29weVJlZigpOwogCi0gICAgICAgIGlmICh2aWRl
b0RldmljZXMuaXNFbXB0eSgpICYmIGF1ZGlvRGV2aWNlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIGRlbnlSZXF1ZXN0KHVzZXJNZWRpYUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246Ok5vQ29uc3RyYWludHMsIGVtcHR5U3Ry
aW5nKCkpOworICAgIGdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKGZyYW1lSUQsIHJlcXVlc3Qt
PnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC0+dG9wTGV2ZWxEb2N1
bWVudFNlY3VyaXR5T3JpZ2luKCksIFt0aGlzLCByZXF1ZXN0ID0gcmVxdWVzdC5yZWxlYXNlTm9u
TnVsbCgpXShPcHRpb25hbDxib29sPiBoYXNQZXJzaXN0ZW50QWNjZXNzKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKCFyZXF1ZXN0LT5pc1BlbmRpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQogCi0gICAgICAgIGF1dG8gYWN0aW9uID0gZ2V0UmVxdWVzdEFjdGlvbihtX3BhZ2Uu
bWFpbkZyYW1lKCktPmZyYW1lSUQoKSwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uZ2V0KCksIHRv
cExldmVsRG9jdW1lbnRPcmlnaW4uZ2V0KCksIGxvY2FsVXNlclJlcXVlc3QsIGF1ZGlvRGV2aWNl
cywgdmlkZW9EZXZpY2VzKTsKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBSZXF1ZXN0QWN0aW9uOjpE
ZW55KSB7Ci0gICAgICAgICAgICBkZW55UmVxdWVzdCh1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNz
aW9uRGVuaWVkLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgaWYgKCFoYXNQZXJzaXN0ZW50QWNj
ZXNzKSB7CisgICAgICAgICAgICByZXF1ZXN0LT5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6T3RoZXJGYWlsdXJlKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhY3Rpb24gPT0gUmVx
dWVzdEFjdGlvbjo6R3JhbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVChsb2NhbFVzZXJSZXF1ZXN0
LnR5cGUgIT0gTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWEpOworICAgICAg
ICBwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgKmhh
c1BlcnNpc3RlbnRBY2Nlc3MpOworICAgIH0pOworfQogCi0gICAgICAgICAgICBpZiAobV9wYWdl
LmlzVmlld1Zpc2libGUoKSkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNlbGVjdCB0aGUgZmly
c3QgYXZhaWxhYmxlIGRldmljZXMsIGJ1dCB0aGUgY3VycmVudCBjbGllbnQgQVBJIGFsbG93cyBj
bGllbnQgdG8gc2VsZWN0IHdoaWNoIGRldmljZSB0byBwaWNrLgotICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhlIHBvc3NpYmxpdHkgZm9yIHRoZSBjbGllbnQgdG8gZG8gdGhlIGRl
dmljZSBzZWxlY3Rpb24uCi0gICAgICAgICAgICAgICAgYXV0byBhdWRpb0RldmljZSA9ICFhdWRp
b0RldmljZXMuaXNFbXB0eSgpID8gYXVkaW9EZXZpY2VzWzBdIDogQ2FwdHVyZURldmljZSgpOwot
ICAgICAgICAgICAgICAgIGF1dG8gdmlkZW9EZXZpY2UgPSAhdmlkZW9EZXZpY2VzLmlzRW1wdHko
KSA/IHZpZGVvRGV2aWNlc1swXSA6IENhcHR1cmVEZXZpY2UoKTsKLSAgICAgICAgICAgICAgICBn
cmFudEFjY2Vzcyh1c2VyTWVkaWFJRCwgV1RGTW92ZShhdWRpb0RldmljZSksIFdURk1vdmUodmlk
ZW9EZXZpY2UpLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCkpOwotICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV9wcmVncmFudGVkUmVxdWVzdHMuYXBwZW5kKGNy
ZWF0ZVBlcm1pc3Npb25SZXF1ZXN0KHVzZXJNZWRpYUlELCBtX3BhZ2UubWFpbkZyYW1lKCktPmZy
YW1lSUQoKSwgZnJhbWVJRCwgV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiksIFdURk1v
dmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbiksIFdURk1vdmUoYXVkaW9EZXZpY2VzKSwgV1RGTW92
ZSh2aWRlb0RldmljZXMpLCBXVEZNb3ZlKGxvY2FsVXNlclJlcXVlc3QpKSk7Cit2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpwcm9jZXNzVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QoUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+JiYgcmVxdWVz
dCwgYm9vbCBoYXNQZXJzaXN0ZW50QWNjZXNzKQoreworICAgIGlmIChoYXNQZXJzaXN0ZW50QWNj
ZXNzKQorICAgICAgICByZXF1ZXN0LT5zZXRIYXNQZXJzaXN0ZW50QWNjZXNzKCk7CiAKKyAgICBh
dXRvJiB1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC0+dXNlck1lZGlh
RG9jdW1lbnRTZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8mIHRvcExldmVsRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiA9IHJlcXVlc3QtPnRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpOwor
ICAgIG1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoKS5k
ZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luKHVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4s
IHRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3Zl
KHJlcXVlc3QpXSAoU3RyaW5nJiYgZGV2aWNlSURIYXNoU2FsdCkgbXV0YWJsZSB7CisgICAgICAg
IGlmICghcmVxdWVzdC0+aXNQZW5kaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5nZXQoKSk7Ci0gICAgICAgIGF1dG8gdG9w
TGV2ZWxPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9wTGV2ZWxEb2N1bWVu
dE9yaWdpbi5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBjcmVhdGVQZXJt
aXNzaW9uUmVxdWVzdCh1c2VyTWVkaWFJRCwgbV9wYWdlLm1haW5GcmFtZSgpLT5mcmFtZUlEKCks
IGZyYW1lSUQsIFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExl
dmVsRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKGF1ZGlvRGV2aWNlcyksIFdURk1vdmUodmlkZW9E
ZXZpY2VzKSwgV1RGTW92ZShsb2NhbFVzZXJSZXF1ZXN0KSk7Ci0KLSAgICAgICAgaWYgKG1fcGFn
ZS5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSkgewotICAgICAgICAgICAgaWYgKFdlYkF1dG9t
YXRpb25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG9t
YXRpb25TZXNzaW9uLT5zaG91bGRBbGxvd0dldFVzZXJNZWRpYUZvclBhZ2UobV9wYWdlKSkKLSAg
ICAgICAgICAgICAgICAgICAgcGVuZGluZ1JlcXVlc3QtPmFsbG93KCk7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB1c2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQodXNl
ck1lZGlhSUQsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vz
c0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CiAKKyAgICAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6SW52YWxpZENvbnN0cmFpbnRzSGFuZGxlciBpbnZhbGlkSGFuZGxlciA9
IFt0aGlzLCByZXF1ZXN0ID0gcmVxdWVzdC5jb3B5UmVmKCldKGNvbnN0IFN0cmluZyYgaW52YWxp
ZENvbnN0cmFpbnQpIHsKKyAgICAgICAgICAgIGlmICghcmVxdWVzdC0+aXNQZW5kaW5nKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKG1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKSAm
JiAhbV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzUHJvbXB0RW5hYmxlZCgp
KSB7Ci0gICAgICAgICAgICBwZW5kaW5nUmVxdWVzdC0+YWxsb3coKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHBhZ2UgbmF2aWdhdGVkLCB0aGVyZSBp
cyBubyBuZWVkIHRvIGNhbGwgdGhlIHBhZ2UgY2xpZW50IGZvciBhdXRob3JpemF0aW9uLgotICAg
ICAgICBhdXRvKiB3ZWJGcmFtZSA9IG1fcGFnZS5wcm9jZXNzKCkud2ViRnJhbWUoZnJhbWVJRCk7
Ci0KLSAgICAgICAgaWYgKCF3ZWJGcmFtZSB8fCAhU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcobV9wYWdlLnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVVUkwoKSktPmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHRvcExldmVsT3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKSkgewotICAgICAgICAgICAg
ZGVueVJlcXVlc3QodXNlck1lZGlhSUQsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6Tm9Db25zdHJhaW50cywgZW1wdHlTdHJpbmco
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbV9w
YWdlLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gRklY
TUU6IFJlbW92ZSB3ZWJGcmFtZSwgdXNlck1lZGlhT3JpZ2luIGFuZCB0b3BMZXZlbE9yaWdpbiBm
cm9tIHRoaXMgdWlDbGllbnQgQVBJIGNhbGwuCi0gICAgICAgIG1fcGFnZS51aUNsaWVudCgpLmRl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KG1fcGFnZSwgKndlYkZyYW1l
LCBXVEZNb3ZlKHVzZXJNZWRpYU9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxPcmlnaW4pLCBwZW5k
aW5nUmVxdWVzdC5nZXQoKSk7Ci0gICAgfTsKKyAgICAgICAgICAgIHByb2Nlc3NVc2VyTWVkaWFQ
ZXJtaXNzaW9uSW52YWxpZFJlcXVlc3QocmVxdWVzdC5nZXQoKSwgaW52YWxpZENvbnN0cmFpbnQp
OworICAgICAgICB9OwogCi0gICAgYXV0byByZXF1ZXN0SUQgPSBnZW5lcmF0ZVJlcXVlc3RJRCgp
OwotICAgIGF1dG8gaGF2ZVBlcm1pc3Npb25JbmZvSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdElELCB2YWxpZEhhbmRsZXIgPSBXVEZNb3ZlKHZh
bGlkSGFuZGxlciksIGludmFsaWRIYW5kbGVyID0gV1RGTW92ZShpbnZhbGlkSGFuZGxlciksIGxv
Y2FsVXNlclJlcXVlc3QgPSB1c2VyUmVxdWVzdF0oYm9vbCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNj
ZXNzKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgYXV0byB2YWxpZEhhbmRsZXIgPSBbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3Qu
Y29weVJlZigpXShWZWN0b3I8Q2FwdHVyZURldmljZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxD
YXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgU3RyaW5nJiYgZGV2aWNlSWRlbnRpZmllckhh
c2hTYWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcmVxdWVzdC0+aXNQZW5kaW5nKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gcGVuZGluZ1JlcXVlc3Qg
PSBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy50YWtlKHJlcXVlc3RJRCk7Ci0gICAgICAgIGlmICgh
cGVuZGluZ1JlcXVlc3QpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoIW1f
cGFnZS5pc1ZhbGlkKCkgfHwgIW1fcGFnZS5tYWluRnJhbWUoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgcHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25WYWxpZFJlcXVlc3Qo
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShhdWRpb0RldmljZXMpLCBXVEZNb3ZlKHZpZGVvRGV2
aWNlcyksIFdURk1vdmUoZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSk7CisgICAgICAgIH07CiAK
ICAgICAgICAgc3luY1dpdGhXZWJDb3JlUHJlZnMoKTsKIAotICAgICAgICBtX3BhZ2Uud2Vic2l0
ZURhdGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNoU2FsdEZv
ck9yaWdpbihwZW5kaW5nUmVxdWVzdC52YWx1ZSgpLT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5
T3JpZ2luKCksIHBlbmRpbmdSZXF1ZXN0LnZhbHVlKCktPnRvcExldmVsRG9jdW1lbnRTZWN1cml0
eU9yaWdpbigpLCBbdmFsaWRIYW5kbGVyID0gV1RGTW92ZSh2YWxpZEhhbmRsZXIpLCBpbnZhbGlk
SGFuZGxlciA9IFdURk1vdmUoaW52YWxpZEhhbmRsZXIpLCBsb2NhbFVzZXJSZXF1ZXN0ID0gbG9j
YWxVc2VyUmVxdWVzdF0gKFN0cmluZyYmIGRldmljZUlESGFzaFNhbHQpIG11dGFibGUgewotICAg
ICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkudmFsaWRhdGVS
ZXF1ZXN0Q29uc3RyYWludHMoV1RGTW92ZSh2YWxpZEhhbmRsZXIpLCBXVEZNb3ZlKGludmFsaWRI
YW5kbGVyKSwgV1RGTW92ZShsb2NhbFVzZXJSZXF1ZXN0KSwgV1RGTW92ZShkZXZpY2VJREhhc2hT
YWx0KSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBnZXRVc2VyTWVkaWFQZXJtaXNzaW9u
SW5mbyhyZXF1ZXN0SUQsIGZyYW1lSUQsIFdURk1vdmUoaGF2ZVBlcm1pc3Npb25JbmZvSGFuZGxl
ciksIFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9j
dW1lbnRPcmlnaW4pKTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkudmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoV1RGTW92ZSh2YWxpZEhhbmRsZXIpLCBX
VEZNb3ZlKGludmFsaWRIYW5kbGVyKSwgcmVxdWVzdC0+dXNlclJlcXVlc3QoKSwgV1RGTW92ZShk
ZXZpY2VJREhhc2hTYWx0KSk7CisgICAgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh1c2Vy
TWVkaWFJRCk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNDIyLDE5ICszNzksOTMg
QEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFVz
ZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSgKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpnZXRVc2VyTWVk
aWFQZXJtaXNzaW9uSW5mbyh1aW50NjRfdCByZXF1ZXN0SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjpDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIs
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4pCit2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lvbkludmFs
aWRSZXF1ZXN0KGNvbnN0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3Qs
IGNvbnN0IFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCit7CisgICAgYm9vbCBmaWx0ZXJDb25z
dHJhaW50ID0gIXJlcXVlc3QuaGFzUGVyc2lzdGVudEFjY2VzcygpICYmICF3YXNHcmFudGVkVmlk
ZW9PckF1ZGlvQWNjZXNzKHJlcXVlc3QuZnJhbWVJRCgpLCByZXF1ZXN0LnVzZXJNZWRpYURvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmln
aW4oKSk7CisKKyAgICBkZW55UmVxdWVzdChyZXF1ZXN0LnVzZXJNZWRpYUlEKCksIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6SW52
YWxpZENvbnN0cmFpbnQsIGZpbHRlckNvbnN0cmFpbnQgPyBTdHJpbmcgeyB9IDogaW52YWxpZENv
bnN0cmFpbnQpOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5Ojpwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lvblZhbGlkUmVxdWVzdChSZWY8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eT4mJiByZXF1ZXN0LCBWZWN0b3I8Q2FwdHVyZURldmljZT4m
JiBhdWRpb0RldmljZXMsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgU3Ry
aW5nJiYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KQoreworICAgIGlmICh2aWRlb0RldmljZXMu
aXNFbXB0eSgpICYmIGF1ZGlvRGV2aWNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgZGVueVJlcXVl
c3QocmVxdWVzdC0+dXNlck1lZGlhSUQoKSwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpOb0NvbnN0cmFpbnRzLCBlbXB0eVN0cmlu
ZygpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlcXVlc3QtPnNldERldmljZUlk
ZW50aWZpZXJIYXNoU2FsdChXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCkpOworICAg
IHJlcXVlc3QtPnNldEVsaWdpYmxlVmlkZW9EZXZpY2VVSURzKFdURk1vdmUodmlkZW9EZXZpY2Vz
KSk7CisgICAgcmVxdWVzdC0+c2V0RWxpZ2libGVBdWRpb0RldmljZVVJRHMoV1RGTW92ZShhdWRp
b0RldmljZXMpKTsKKworICAgIGF1dG8gYWN0aW9uID0gZ2V0UmVxdWVzdEFjdGlvbihyZXF1ZXN0
KTsKKyAgICBpZiAoYWN0aW9uID09IFJlcXVlc3RBY3Rpb246OkRlbnkpIHsKKyAgICAgICAgZGVu
eVJlcXVlc3QocmVxdWVzdC0+dXNlck1lZGlhSUQoKSwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkLCBl
bXB0eVN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhY3Rpb24g
PT0gUmVxdWVzdEFjdGlvbjo6R3JhbnQpIHsKKyAgICAgICAgQVNTRVJUKHJlcXVlc3QtPnJlcXVl
c3RUeXBlKCkgIT0gTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWEpOworCisg
ICAgICAgIGlmIChtX3BhZ2UuaXNWaWV3VmlzaWJsZSgpKQorICAgICAgICAgICAgZ3JhbnRBY2Nl
c3MocmVxdWVzdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcHJlZ3JhbnRlZFJlcXVl
c3RzLmFwcGVuZChXVEZNb3ZlKHJlcXVlc3QpKTsKKworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKG1fcGFnZS5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSkgeworICAgICAgICBp
ZiAoV2ViQXV0b21hdGlvblNlc3Npb24qIGF1dG9tYXRpb25TZXNzaW9uID0gbV9wYWdlLnByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvbWF0aW9uU2Vzc2lvbi0+c2hvdWxkQWxsb3dHZXRVc2VyTWVkaWFGb3JQYWdlKG1fcGFn
ZSkpCisgICAgICAgICAgICAgICAgcmVxdWVzdC0+YWxsb3coKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB1c2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQocmVxdWVzdC0+dXNlck1l
ZGlhSUQoKSwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNz
RGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKKworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQoKSAmJiAhbV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVE
ZXZpY2VzUHJvbXB0RW5hYmxlZCgpKSB7CisgICAgICAgIHJlcXVlc3QtPmFsbG93KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJZiBwYWdlIG5hdmlnYXRlZCwgdGhlcmUgaXMg
bm8gbmVlZCB0byBjYWxsIHRoZSBwYWdlIGNsaWVudCBmb3IgYXV0aG9yaXphdGlvbi4KKyAgICBh
dXRvKiB3ZWJGcmFtZSA9IG1fcGFnZS5wcm9jZXNzKCkud2ViRnJhbWUocmVxdWVzdC0+ZnJhbWVJ
RCgpKTsKKworICAgIGlmICghd2ViRnJhbWUgfHwgIVNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKG1fcGFnZS5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpLT5pc1NhbWVTY2hlbWVI
b3N0UG9ydChyZXF1ZXN0LT50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAg
ICAgICAgZGVueVJlcXVlc3QocmVxdWVzdC0+dXNlck1lZGlhSUQoKSwgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpOb0NvbnN0cmFp
bnRzLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJ
WE1FOiBSZW1vdmUgd2ViRnJhbWUsIHVzZXJNZWRpYU9yaWdpbiBhbmQgdG9wTGV2ZWxPcmlnaW4g
ZnJvbSB0aGlzIHVpQ2xpZW50IEFQSSBjYWxsLgorICAgIGF1dG8gdXNlck1lZGlhT3JpZ2luID0g
QVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcXVlc3QtPnVzZXJNZWRpYURvY3VtZW50U2Vj
dXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShyZXF1ZXN0LT50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSk7
CisgICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QobV9wYWdlLCAqd2ViRnJhbWUsIFdURk1vdmUodXNlck1lZGlhT3JpZ2luKSwgV1RG
TW92ZSh0b3BMZXZlbE9yaWdpbiksIHJlcXVlc3QpOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyh1aW50
NjRfdCBmcmFtZUlELCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmln
aW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPGJvb2w+KT4mJiBoYW5kbGVyKQogewogICAgIGF1dG8q
IHdlYkZyYW1lID0gbV9wYWdlLnByb2Nlc3MoKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAo
IXdlYkZyYW1lIHx8ICFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX3BhZ2UucGFn
ZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKS0+aXNTYW1lU2NoZW1lSG9zdFBvcnQodG9wTGV2ZWxE
b2N1bWVudE9yaWdpbi5nZXQoKSkpIHsKLSAgICAgICAgaGFuZGxlcihmYWxzZSk7CisgICAgICAg
IGhhbmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gdXNlck1l
ZGlhT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVzZXJNZWRpYURvY3VtZW50
T3JpZ2luLmdldCgpKTsKICAgICBhdXRvIHRvcExldmVsT3JpZ2luID0gQVBJOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4uZ2V0KCkpOwotICAgIGF1dG8gcmVx
dWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjpjcmVhdGUoZnJhbWVJRCwgV1RG
TW92ZShoYW5kbGVyKSwgV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiksIFdURk1vdmUo
dG9wTGV2ZWxEb2N1bWVudE9yaWdpbikpOwogCi0gICAgbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMu
YWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5jb3B5UmVmKCkpOworICAgIGF1dG8gcmVxdWVzdElEID0g
Z2VuZXJhdGVSZXF1ZXN0SUQoKTsKKyAgICBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy5hZGQocmVx
dWVzdElEKTsKKworICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1By
b3h5OjpjcmVhdGUoZnJhbWVJRCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCByZXF1ZXN0SUQsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShPcHRpb25hbDxib29sPiBh
bGxvd2VkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhbV9wZW5kaW5nRGV2
aWNlUmVxdWVzdHMucmVtb3ZlKHJlcXVlc3RJRCkgfHwgIWFsbG93ZWQpIHsKKyAgICAgICAgICAg
IGhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBo
YW5kbGVyKCphbGxvd2VkKTsKKyAgICB9LCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
KSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSk7CisKICAgICAvLyBGSVhNRTogUmVt
b3ZlIHdlYkZyYW1lLCB1c2VyTWVkaWFPcmlnaW4gYW5kIHRvcExldmVsT3JpZ2luIGZyb20gdGhp
cyB1aUNsaWVudCBBUEkgY2FsbC4KICAgICBtX3BhZ2UudWlDbGllbnQoKS5jaGVja1VzZXJNZWRp
YVBlcm1pc3Npb25Gb3JPcmlnaW4obV9wYWdlLCAqd2ViRnJhbWUsIHVzZXJNZWRpYU9yaWdpbi5n
ZXQoKSwgdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpOwogfQpAQCAtNDU3LDEy
ICs0ODgsOSBAQCBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp3
YXNHcmFudGVkVmlkZW9PckF1ZGlvQWNjZXNzKHVpbnQ2NAogCiAgICAgcmV0dXJuIGZhbHNlOwog
fQotI2VuZGlmCiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50
NjRfdCBmcmFtZUlELCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmln
aW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luKQorVmVjdG9y
PENhcHR1cmVEZXZpY2U+IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpj
b21wdXRlRmlsdGVyZWREZXZpY2VMaXN0KGJvb2wgcmV2ZWFsSWRzQW5kTGFiZWxzLCBjb25zdCBT
dHJpbmcmIGRldmljZUlESGFzaFNhbHQpCiB7Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0TWF4
aW11bUNhbWVyYUNvdW50ID0gMjsKICNlbHNlCkBAIC00NzAsMTkgKzQ5OCw1NiBAQCB2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjplbnVtZXJhdGVNZWRpYURldmlj
ZXNGb3JGcmFtZSh1aW50NgogI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0TWF4
aW11bU1pY3JvcGhvbmVDb3VudCA9IDE7CiAKLSAgICBhdXRvIHJlcXVlc3RJRCA9IGdlbmVyYXRl
UmVxdWVzdElEKCk7Ci0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdElELCB1c2VyTWVkaWFJRCwgcmVxdWVzdE9y
aWdpbiA9IHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmNvcHlSZWYoKSwgdG9wT3JpZ2luID0gdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCldKGJvb2wgb3JpZ2luSGFzUGVyc2lzdGVudEFj
Y2VzcykgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgYXV0byBkZXZpY2Vz
ID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJlYW1E
ZXZpY2VzKCk7CisgICAgaW50IGNhbWVyYUNvdW50ID0gMDsKKyAgICBpbnQgbWljcm9waG9uZUNv
dW50ID0gMDsKKworICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBmaWx0ZXJlZERldmljZXM7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBkZXZpY2UgOiBkZXZpY2VzKSB7CisgICAgICAgIGlmICghZGV2
aWNlLmVuYWJsZWQoKSB8fCAoZGV2aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpDYW1lcmEgJiYgZGV2aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGlmICghcmV2ZWFsSWRzQW5kTGFiZWxzKSB7CisgICAgICAgICAgICBpZiAoZGV2
aWNlLnR5cGUoKSA9PSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEg
JiYgKytjYW1lcmFDb3VudCA+IGRlZmF1bHRNYXhpbXVtQ2FtZXJhQ291bnQpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoZGV2aWNlLnR5cGUoKSA9PSBXZWJDb3Jl
OjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lICYmICsrbWljcm9waG9uZUNv
dW50ID4gZGVmYXVsdE1heGltdW1NaWNyb3Bob25lQ291bnQpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGxhYmVsID0gZW1wdHlTdHJpbmcoKTsK
KyAgICAgICAgYXV0byBpZCA9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgIGF1dG8gZ3JvdXBJZCA9
IGVtcHR5U3RyaW5nKCk7CisgICAgICAgIGlmIChyZXZlYWxJZHNBbmRMYWJlbHMpIHsKKyAgICAg
ICAgICAgIGxhYmVsID0gZGV2aWNlLmxhYmVsKCk7CisgICAgICAgICAgICBpZCA9IFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmhhc2hTdHJpbmdXaXRoU2FsdChkZXZpY2Uu
cGVyc2lzdGVudElkKCksIGRldmljZUlESGFzaFNhbHQpOworICAgICAgICAgICAgZ3JvdXBJZCA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmhhc2hTdHJpbmdXaXRoU2Fs
dChkZXZpY2UuZ3JvdXBJZCgpLCBkZXZpY2VJREhhc2hTYWx0KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZpbHRlcmVkRGV2aWNlcy5hcHBlbmQoQ2FwdHVyZURldmljZShpZCwgZGV2aWNlLnR5cGUo
KSwgbGFiZWwsIGdyb3VwSWQpKTsKKyAgICB9CisKKyAgICBtX2hhc0ZpbHRlcmVkRGV2aWNlTGlz
dCA9ICFyZXZlYWxJZHNBbmRMYWJlbHM7CisgICAgcmV0dXJuIGZpbHRlcmVkRGV2aWNlczsKK30K
KyNlbmRpZgorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpl
bnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0
X3QgZnJhbWVJRCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbikKK3sKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywg
dXNlck1lZGlhSUQsIGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luID0gdXNlck1lZGlh
RG9jdW1lbnRPcmlnaW4uY29weVJlZigpLCB0b3BMZXZlbERvY3VtZW50T3JpZ2luID0gdG9wTGV2
ZWxEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCldKE9wdGlvbmFsPGJvb2w+IG9yaWdpbkhhc1BlcnNp
c3RlbnRBY2Nlc3MpIG11dGFibGUgeworICAgICAgICBpZiAoIW9yaWdpbkhhc1BlcnNpc3RlbnRB
Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKCFtX3BhZ2UuaXNWYWxp
ZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fcGFnZS53ZWJzaXRlRGF0YVN0
b3JlKCkuZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoKS5kZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2lu
KHJlcXVlc3RPcmlnaW4uZ2V0KCksIHRvcE9yaWdpbi5nZXQoKSwgW3RoaXMsIHdlYWtUaGlzID0g
V1RGTW92ZSh3ZWFrVGhpcyksIHJlcXVlc3RJRCwgdXNlck1lZGlhSUQsICZvcmlnaW5IYXNQZXJz
aXN0ZW50QWNjZXNzXSAoU3RyaW5nJiYgZGV2aWNlSURIYXNoU2FsdCkgewotICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBhdXRv
IHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMudGFrZShyZXF1ZXN0SUQp
OwotICAgICAgICAgICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkKKyAgICAgICAgYXV0byByZXF1ZXN0
SUQgPSBnZW5lcmF0ZVJlcXVlc3RJRCgpOworICAgICAgICBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0
cy5hZGQocmVxdWVzdElEKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8mIHJlcXVlc3RPcmlnaW4g
PSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5nZXQoKTsKKyAgICAgICAgYXV0byYgdG9wT3JpZ2lu
ID0gdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi5nZXQoKTsKKyAgICAgICAgbV9wYWdlLndlYnNpdGVE
YXRhU3RvcmUoKS5kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRGb3JP
cmlnaW4ocmVxdWVzdE9yaWdpbiwgdG9wT3JpZ2luLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHJlcXVlc3RJRCwgZnJhbWVJRCwgdXNlck1lZGlhSUQsIHVzZXJNZWRpYURv
Y3VtZW50T3JpZ2luID0gV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiksIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4gPSBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCBvcmlnaW5I
YXNQZXJzaXN0ZW50QWNjZXNzID0gKm9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3NdIChTdHJpbmcm
JiBkZXZpY2VJREhhc2hTYWx0KSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFtX3Bl
bmRpbmdEZXZpY2VSZXF1ZXN0cy5yZW1vdmUocmVxdWVzdElEKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKQEAgLTQ5MCw0MyAr
NTU1LDEzIEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVu
dW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2CiAKICAgICAgICAgICAgIHN5bmNXaXRo
V2ViQ29yZVByZWZzKCk7CiAKLSAgICAgICAgICAgIGF1dG8gZGV2aWNlcyA9IFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtRGV2aWNlcygpOwotICAg
ICAgICAgICAgYXV0byYgcmVxdWVzdCA9ICpwZW5kaW5nUmVxdWVzdDsKLSAgICAgICAgICAgIGJv
b2wgcmV2ZWFsSWRzQW5kTGFiZWxzID0gb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcyB8fCB3YXNH
cmFudGVkVmlkZW9PckF1ZGlvQWNjZXNzKHJlcXVlc3QtPmZyYW1lSUQoKSwgcmVxdWVzdC0+dXNl
ck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCByZXF1ZXN0LT50b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgICAgICAgICBpbnQgY2FtZXJhQ291bnQgPSAwOwotICAg
ICAgICAgICAgaW50IG1pY3JvcGhvbmVDb3VudCA9IDA7Ci0KLSAgICAgICAgICAgIFZlY3RvcjxD
YXB0dXJlRGV2aWNlPiBmaWx0ZXJlZERldmljZXM7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGRldmljZSA6IGRldmljZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWRldmljZS5lbmFi
bGVkKCkgfHwgKGRldmljZS50eXBlKCkgIT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZTo6Q2FtZXJhICYmIGRldmljZS50eXBlKCkgIT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6TWljcm9waG9uZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXZlYWxJZHNBbmRMYWJlbHMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6Q2FtZXJhICYmICsrY2FtZXJhQ291bnQgPiBkZWZhdWx0TWF4aW11bUNhbWVyYUNv
dW50KQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChkZXZpY2UudHlwZSgpID09IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6Ok1pY3JvcGhvbmUgJiYgKyttaWNyb3Bob25lQ291bnQgPiBkZWZhdWx0TWF4aW11bU1pY3Jv
cGhvbmVDb3VudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGF1dG8gbGFiZWwgPSBlbXB0eVN0cmluZygpOwot
ICAgICAgICAgICAgICAgIGF1dG8gaWQgPSBlbXB0eVN0cmluZygpOwotICAgICAgICAgICAgICAg
IGF1dG8gZ3JvdXBJZCA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJldmVh
bElkc0FuZExhYmVscykgewotICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IGRldmljZS5sYWJl
bCgpOwotICAgICAgICAgICAgICAgICAgICBpZCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNpbmdsZXRvbigpLmhhc2hTdHJpbmdXaXRoU2FsdChkZXZpY2UucGVyc2lzdGVudElkKCksIGRl
dmljZUlESGFzaFNhbHQpOwotICAgICAgICAgICAgICAgICAgICBncm91cElkID0gUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KGRldmljZS5n
cm91cElkKCksIGRldmljZUlESGFzaFNhbHQpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIGZpbHRlcmVkRGV2aWNlcy5hcHBlbmQoQ2FwdHVyZURldmljZShpZCwgZGV2aWNl
LnR5cGUoKSwgbGFiZWwsIGdyb3VwSWQpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
bV9oYXNGaWx0ZXJlZERldmljZUxpc3QgPSAhcmV2ZWFsSWRzQW5kTGFiZWxzOwotCi0gICAgICAg
ICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRl
TWVkaWFEZXZpY2VFbnVtZXJhdGlvbih1c2VyTWVkaWFJRCwgV1RGTW92ZShmaWx0ZXJlZERldmlj
ZXMpLCBXVEZNb3ZlKGRldmljZUlESGFzaFNhbHQpLCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNz
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIGJvb2wgcmV2ZWFsSWRzQW5kTGFiZWxz
ID0gb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcyB8fCB3YXNHcmFudGVkVmlkZW9PckF1ZGlvQWNj
ZXNzKGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmdldCgpLCB0b3BMZXZlbERvY3Vt
ZW50T3JpZ2luLmdldCgpKTsKKworICAgICAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24geyB1c2Vy
TWVkaWFJRCwgY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChyZXZlYWxJZHNBbmRMYWJlbHMsIGRl
dmljZUlESGFzaFNhbHQpLCBkZXZpY2VJREhhc2hTYWx0LCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNj
ZXNzIH0sIG1fcGFnZS5wYWdlSUQoKSk7CiAgICAgICAgIH0pOwogICAgIH07CiAKLSAgICBnZXRV
c2VyTWVkaWFQZXJtaXNzaW9uSW5mbyhyZXF1ZXN0SUQsIGZyYW1lSUQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0
b3BMZXZlbERvY3VtZW50T3JpZ2luKSk7CisgICAgZ2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8o
ZnJhbWVJRCwgV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiksIFdURk1vdmUodG9wTGV2
ZWxEb2N1bWVudE9yaWdpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHVzZXJNZWRpYUlEKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7
CkBAIC01OTYsMyArNjMxLDQgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6d2F0Y2hkb2dUaW1lckZpcmVkKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IGVhY2NlNmY5MmI2NWZmY2My
OWJlNGQxMzc4OGRhODFkOTE1OTA1NTguLmExMTVjNDM4Njc1MzdlYzhkNTNkZjVkZmJlNTJlMmVj
ZDY5MTVlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtMjMsNiArMjMs
NyBAQAogI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9T
ZWNvbmRzLmg+CkBAIC00OCw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0
ZVBlbmRpbmdSZXF1ZXN0cygpOwogCi0gICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lv
bkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgY29uc3QgV2Vi
Q29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0Jik7CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVy
bWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgV2Vi
Q29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYpOwogCiAgICAgdm9pZCByZXNldEFjY2Vzcyh1aW50
NjRfdCBtYWluRnJhbWVJRCk7CiAgICAgdm9pZCB2aWV3SXNCZWNvbWluZ1Zpc2libGUoKTsKQEAg
LTcxLDI3ICs3MiwzMyBAQCBwcml2YXRlOgogICAgIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiBjcmVhdGVQZXJtaXNzaW9uUmVxdWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJRCwg
dWludDY0X3QgbWFpbkZyYW1lSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+
JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJik7CiAgICAgdm9p
ZCBkZW55UmVxdWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uLCBjb25zdCBTdHJpbmcmIGlu
dmFsaWRDb25zdHJhaW50KTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGJvb2wgZ3Jh
bnRBY2Nlc3ModWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZp
Y2UgYXVkaW9EZXZpY2UsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgdmlkZW9EZXZpY2Us
IGNvbnN0IFN0cmluZyYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KTsKKyAgICBib29sIGdyYW50
QWNjZXNzKGNvbnN0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKTsKIAogICAgIGNv
bnN0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHNlYXJjaEZvckdyYW50ZWRSZXF1
ZXN0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExl
dmVsRG9jdW1lbnRPcmlnaW4sIGJvb2wgbmVlZHNBdWRpbywgYm9vbCBuZWVkc1ZpZGVvKSBjb25z
dDsKICAgICBib29sIHdhc1JlcXVlc3REZW5pZWQodWludDY0X3QgbWFpbkZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIGJvb2wgbmVl
ZHNBdWRpbywgYm9vbCBuZWVkc1ZpZGVvLCBib29sIG5lZWRzU2NyZWVuQ2FwdHVyZSk7CiAKLSAg
ICB2b2lkIGdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKHVpbnQ2NF90IHJlcXVlc3RJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OkNvbXBsZXRpb25I
YW5kbGVyJiYsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVu
dE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRP
cmlnaW4pOworICAgIHZvaWQgZ2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8odWludDY0X3QgZnJh
bWVJRCwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3Jp
Z2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxib29sPik+JiYpOwogCiAgICAgZW51
bSBjbGFzcyBSZXF1ZXN0QWN0aW9uIHsKICAgICAgICAgRGVueSwKICAgICAgICAgR3JhbnQsCiAg
ICAgICAgIFByb21wdAogICAgIH07Ci0gICAgUmVxdWVzdEFjdGlvbiBnZXRSZXF1ZXN0QWN0aW9u
KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1
bWVudE9yaWdpbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmln
aW4sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYsIFZlY3RvcjxXZWJDb3JlOjpD
YXB0dXJlRGV2aWNlPiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmlj
ZT4mIHZpZGVvRGV2aWNlcyk7CisgICAgUmVxdWVzdEFjdGlvbiBnZXRSZXF1ZXN0QWN0aW9uKGNv
bnN0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKTsKIAogICAgIGJvb2wgd2FzR3Jh
bnRlZFZpZGVvT3JBdWRpb0FjY2Vzcyh1aW50NjRfdCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q2Fw
dHVyZURldmljZT4gY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChib29sIHJldmVhbElkc0FuZExh
YmVscywgY29uc3QgU3RyaW5nJiBkZXZpY2VJREhhc2hTYWx0KTsKKworICAgIHZvaWQgcHJvY2Vz
c1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5PiYmLCBib29sIGhhc1BlcnNpc3RlbnRBY2Nlc3MpOworICAgIHZvaWQgcHJvY2Vzc1Vz
ZXJNZWRpYVBlcm1pc3Npb25JbnZhbGlkUmVxdWVzdChjb25zdCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5JiwgY29uc3QgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCk7CisgICAgdm9p
ZCBwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lvblZhbGlkUmVxdWVzdChSZWY8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eT4mJiwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYg
YXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiB2aWRlb0Rldmlj
ZXMsIFN0cmluZyYmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk7CiAjZW5kaWYKIAogICAgIHZv
aWQgd2F0Y2hkb2dUaW1lckZpcmVkKCk7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4+IG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVl
c3RzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eT4+IG1fcGVuZGluZ0RldmljZVJlcXVlc3RzOworICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1f
cGVuZGluZ0RldmljZVJlcXVlc3RzOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkuaAppbmRleCBhYzgwNWU3ODhiZTIzMTdlMGE3YWFlYjcxODkwOWNmNDViY2E4
OTA4Li4wNjdmODAyMDNmMWE1ZmRkMzIzOGM4YWUyOWQ3ZGNhY2ExYWVhMTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eS5oCkBAIC00OCwyMSArNDgsNDIgQEAgcHVibGljOgogICAgIHZvaWQgZGVueShVc2Vy
TWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24gPSBVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlVz
ZXJNZWRpYURpc2FibGVkKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIGJvb2wgaXNQ
ZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9tYW5hZ2VyOyB9CiAKICAgICBib29sIHJlcXVpcmVz
QXVkaW9DYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lbGlnaWJsZUF1ZGlvRGV2aWNlcy5zaXpl
KCk7IH0KICAgICBib29sIHJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gIXJl
cXVpcmVzRGlzcGxheUNhcHR1cmUoKSAmJiBtX2VsaWdpYmxlVmlkZW9EZXZpY2VzLnNpemUoKTsg
fQogICAgIGJvb2wgcmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVx
dWVzdC50eXBlID09IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1l
ZGlhICYmIG1fZWxpZ2libGVWaWRlb0RldmljZXMuc2l6ZSgpOyB9CiAKKyAgICB2b2lkIHNldEVs
aWdpYmxlVmlkZW9EZXZpY2VVSURzKFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGRl
dmljZXMpIHsgbV9lbGlnaWJsZVZpZGVvRGV2aWNlcyA9IFdURk1vdmUoZGV2aWNlcyk7IH0KKyAg
ICB2b2lkIHNldEVsaWdpYmxlQXVkaW9EZXZpY2VVSURzKFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJl
RGV2aWNlPiYmIGRldmljZXMpIHsgbV9lbGlnaWJsZUF1ZGlvRGV2aWNlcyA9IFdURk1vdmUoZGV2
aWNlcyk7IH0KKwogICAgIFZlY3RvcjxTdHJpbmc+IHZpZGVvRGV2aWNlVUlEcygpIGNvbnN0Owog
ICAgIFZlY3RvcjxTdHJpbmc+IGF1ZGlvRGV2aWNlVUlEcygpIGNvbnN0OworICAgIGJvb2wgaGFz
QXVkaW9EZXZpY2UoKSBjb25zdCB7IHJldHVybiAhbV9lbGlnaWJsZUF1ZGlvRGV2aWNlcy5pc0Vt
cHR5KCk7IH0KKyAgICBib29sIGhhc1ZpZGVvRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gIW1fZWxp
Z2libGVWaWRlb0RldmljZXMuaXNFbXB0eSgpOyB9CisKKyAgICBib29sIGhhc1BlcnNpc3RlbnRB
Y2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1BlcnNpc3RlbnRBY2Nlc3M7IH0KKyAgICB2b2lk
IHNldEhhc1BlcnNpc3RlbnRBY2Nlc3MoKSB7IG1faGFzUGVyc2lzdGVudEFjY2VzcyA9IHRydWU7
IH0KIAorICAgIHVpbnQ2NF90IHVzZXJNZWRpYUlEKCkgY29uc3QgeyByZXR1cm4gbV91c2VyTWVk
aWFJRDsgfQogICAgIHVpbnQ2NF90IG1haW5GcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9tYWlu
RnJhbWVJRDsgfQogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
SUQ7IH0KKwogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50U2Vj
dXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3RvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbi5n
ZXQoKTsgfQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKCkgeyByZXR1cm4gbV91c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
LmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9j
dW1lbnRTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGV2ZWxEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luLmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
IHVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3VzZXJN
ZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0KKworICAgIGNvbnN0IFdlYkNvcmU6
Ok1lZGlhU3RyZWFtUmVxdWVzdCYgdXNlclJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVl
c3Q7IH0KIAogICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZSByZXF1ZXN0VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdC50eXBlOyB9CiAKKyAgICB2b2lkIHNldERldmlj
ZUlkZW50aWZpZXJIYXNoU2FsdChTdHJpbmcmJiBzYWx0KSB7IG1fZGV2aWNlSWRlbnRpZmllckhh
c2hTYWx0ID0gV1RGTW92ZShzYWx0KTsgfQorICAgIGNvbnN0IFN0cmluZyYgZGV2aWNlSWRlbnRp
Zmllckhhc2hTYWx0KCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQ7
IH0KKworICAgIFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgYXVkaW9EZXZpY2UoKSBjb25zdCB7IHJl
dHVybiBtX2VsaWdpYmxlQXVkaW9EZXZpY2VzLmlzRW1wdHkoKSA/IFdlYkNvcmU6OkNhcHR1cmVE
ZXZpY2UgeyB9IDogbV9lbGlnaWJsZUF1ZGlvRGV2aWNlc1swXTsgfQorICAgIFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2UgdmlkZW9EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2VsaWdpYmxlVmlkZW9E
ZXZpY2VzLmlzRW1wdHkoKSA/IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgeyB9IDogbV9lbGlnaWJs
ZVZpZGVvRGV2aWNlc1swXTsgfQorCiBwcml2YXRlOgogICAgIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmLCB1aW50
NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgbWFpbkZyYW1lSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwg
UmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZl
Y3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNv
cmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJl
cXVlc3QmJik7CiAKQEAgLTc1LDYgKzk2LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViQ29y
ZTo6Q2FwdHVyZURldmljZT4gbV9lbGlnaWJsZVZpZGVvRGV2aWNlczsKICAgICBWZWN0b3I8V2Vi
Q29yZTo6Q2FwdHVyZURldmljZT4gbV9lbGlnaWJsZUF1ZGlvRGV2aWNlczsKICAgICBXZWJDb3Jl
OjpNZWRpYVN0cmVhbVJlcXVlc3QgbV9yZXF1ZXN0OworICAgIGJvb2wgbV9oYXNQZXJzaXN0ZW50
QWNjZXNzIHsgZmFsc2UgfTsKKyAgICBTdHJpbmcgbV9kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDdhYjU2ZjExMWU2MTE0OWE2ZjE0MjlmNTRhMGQzYjJhYmE3NDhi
MzcuLmUwMjhmODQ2N2IzYzM2N2VlMzQwYjFmNzJjNzJhMGY4ZWVkMTYxZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzAxNSwxMiArNzAxNSwxMiBAQCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgV2ViUGFnZVByb3h5Ojp1c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdAogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmICB1c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFt
UmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVy
bWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmICB1c2VyTWVkaWFEb2N1bWVudE9yaWdp
bkRhdGEsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxEb2N1bWVu
dE9yaWdpbkRhdGEsIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKSk7CiAKLSAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKS5yZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVzZXJNZWRp
YUlELCBmcmFtZUlELCB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4o
KSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdCk7
CisgICAgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkucmVxdWVzdFVzZXJNZWRp
YVBlcm1pc3Npb25Gb3JGcmFtZSh1c2VyTWVkaWFJRCwgZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1l
bnRPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW5EYXRh
LnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVxdWVzdCkpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0odXNlck1lZGlhSUQpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2JlOTE5NDM4OTBiNzVkMGUyOGNhMzcw
MWY1YjQ2N2VjMDg3NDdhMi4uN2QyYjM1YjYyODllYzc1MGY5YjgyYzI3NWQ1OTE2YjZlMGViZmE0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1OTcsNyArMTU5
Nyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKCk7CiAjZW5kaWYKLSAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9y
RnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsRG9jdW1lbnRPcmln
aW5JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmKTsKKyAgICB2
b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlh
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
dXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBXZWJDb3JlOjpN
ZWRpYVN0cmVhbVJlcXVlc3QmJik7CiAgICAgdm9pZCBlbnVtZXJhdGVNZWRpYURldmljZXNGb3JG
cmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbkRhdGEsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbkRhdGEp
OwogICAgIHZvaWQgYmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZh
NTA1NDc3ZmFlYmQ4YzgzNzI3YjE2OTQwNTgzMjk1MjE2ZmE4NGQuLjU0NWMwMTRmYmNkNTg0OWI0
NTNhMDk0MGQzNmE2Nzg0ZDRjOThkYWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wMi0w
NiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgRmlsdGVyIG91
dCBPdmVyY29uc3RyYWluZWRlcnJvci5jb25zdHJhaW50IHdoZW4gZ2V0VXNlck1lZGlhIGlzIG5v
dCBncmFudGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTQyNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGZhc3QvbWVkaWFzdHJlYW0vb3ZlcmNvbnN0cmFpbmVkZXJyb3ItY29uc3RyYWludC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vb3ZlcmNvbnN0cmFp
bmVkZXJyb3ItY29uc3RyYWludC5odG1sOiBBZGRlZC4KKwogMjAxOS0wMi0wNiAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fZG9j
dW1lbnQuaXNSZXNvbHZpbmdUcmVlU3R5bGUoKSkgaW4gY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50IGF0IFdlYkNvcmU6IFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6On5TdHlsZVJlc29sdmVyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL292ZXJjb25zdHJhaW5lZGVy
cm9yLWNvbnN0cmFpbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9vdmVyY29uc3RyYWluZWRlcnJvci1jb25zdHJhaW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NDJiNWJhNzQ2Y2JhNjk0ZmQwODQyM2M1NjAxMDY3ZTQ4MDQxZmRlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9vdmVyY29uc3RyYWluZWRlcnJvci1j
b25zdHJhaW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBCZWZvcmUgZ3Jh
bnQgCitQQVNTIEFmdGVyIGdyYW50IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL292ZXJjb25zdHJhaW5lZGVycm9yLWNvbnN0cmFpbnQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vb3ZlcmNvbnN0cmFpbmVkZXJyb3ItY29uc3RyYWludC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMxNzZlZmNlYmU2YWFhYTE1MGQ1YTJhMWM3OGU5MTk0NTA0ZGRmZDAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL292ZXJjb25zdHJh
aW5lZGVycm9yLWNvbnN0cmFpbnQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IWRvY3R5cGUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgICAgIDx0aXRsZT5PdmVyQ29uc3RyYWluZWRFcnJvci5jb25zdHJhaW50IHRlc3Rpbmc8L3Rp
dGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorCisgICAg
ICAgIDxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5zZXRV
c2VyTWVkaWFQZXJtaXNzaW9uKHRydWUpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgd2lu
ZG93LmludGVybmFscy5zZXRNb2NrTWVkaWFDYXB0dXJlRGV2aWNlc0VuYWJsZWQodHJ1ZSk7CisK
K3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzoge2RldmljZUlkOiB7ZXhhY3Q6Im5vbmUifX19KS50
aGVuKAorICAgICAgICAoKSA9PiBhc3NlcnRfbm90X3JlYWNoZWQoImd1bSBzaG91bGQgZmFpbCIp
LAorICAgICAgICAoZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBpbnN0YW5jZW9m
IE92ZXJjb25zdHJhaW5lZEVycm9yKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZS5jb25z
dHJhaW50LCAiIiwgImNvbnN0cmFpbnQgc2hvdWxkIGJlIHRoZSBlbXB0eSBzdHJpbmciKTsKKyAg
ICAgICAgfQorICAgICk7Cit9LCAiQmVmb3JlIGdyYW50Iik7CisKK3Byb21pc2VfdGVzdChhc3lu
Yyh0ZXN0KSA9PiB7CisgICAgYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoe2F1ZGlvOiB0cnVlfSk7CisgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0
VXNlck1lZGlhKHthdWRpbzoge2RldmljZUlkOiB7ZXhhY3Q6Im5vbmUifX19KS50aGVuKAorICAg
ICAgICAoKSA9PiBhc3NlcnRfbm90X3JlYWNoZWQoImd1bSBzaG91bGQgZmFpbCIpLAorICAgICAg
ICAoZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBpbnN0YW5jZW9mIE92ZXJjb25z
dHJhaW5lZEVycm9yKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZS5jb25zdHJhaW50LCAi
ZGV2aWNlSWQiLCAiY29uc3RyYWludCBzaG91bGQgYmUgZGV2aWNlSWQiKTsKKyAgICAgICAgfQor
ICAgICk7Cit9LCAiQWZ0ZXIgZ3JhbnQiKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361417</attachid>
            <date>2019-02-07 10:56:24 -0800</date>
            <delta_ts>2019-02-07 15:09:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194240-20190207105623.patch</filename>
            <type>text/plain</type>
            <size>50192</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVlNzJhOTdhMjQ3ZjgyYWM1
MDQzNWUxM2RhZTA5MjE2NWVmYTA3OTMuLmUyMDcyZTkwODMzZDczMDhhMmNlNGM4MDEzYWRlNjk4
ZjQ4YjllYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTktMDItMDcgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbHRlciBvdXQgT3ZlcmNvbnN0
cmFpbmVkZXJyb3IuY29uc3RyYWludCB3aGVuIGdldFVzZXJNZWRpYSBpcyBub3QgZ3JhbnRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MjQwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJl
IGluIFVJUHJvY2VzcyB0byBmaWx0ZXIgb3V0IGNvbnN0cmFpbnQgaWYgZWl0aGVyIHRoZSBwYWdl
IGhhZCBub3QgZ3VtIGdyYW50ZWQKKyAgICAgICAgb3IgaXQgaGFzIG5vdCBwZXJzaXN0ZW50IGFj
Y2Vzcy4KKworICAgICAgICBSZWZhY3RvciBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eSB0byBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBlYXNpZXIgdG8gdW5kZXJzdGFuZC4K
KyAgICAgICAgU29tZSBmdXJ0aGVyIHJlZmFjdG9yaW5nIG1pZ2h0IGZvbGxvdy4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGFkZGVkIHRlc3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tQcm94eTo6c2V0VXNlck1lZGlhQWNjZXNzSW5mbyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1
cmVEZXZpY2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5Ojp1c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKToKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdyYW50QWNj
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmdldFJlcXVlc3RBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5Ojpwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJN
ZWRpYVBlcm1pc3Npb25JbnZhbGlkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lv
blZhbGlkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjpnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp3YXNHcmFudGVk
VmlkZW9PckF1ZGlvQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNvbXB1dGVGaWx0ZXJlZERldmljZUxpc3QpOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVy
YXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUGVybWlzc2lvblJlcXVlc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OnNldEVsaWdpYmxlVmlkZW9EZXZpY2VVSURzKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6c2V0RWxpZ2libGVBdWRpb0Rl
dmljZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5OjpoYXNBdWRpb0RldmljZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6Omhhc1ZpZGVvRGV2aWNlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6aGFzUGVyc2lzdGVudEFjY2Vz
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OnNldEhhc1BlcnNpc3RlbnRBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp1c2VyTWVkaWFJRCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnRvcExldmVsRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk6OnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp1c2VyUmVxdWVz
dCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OnNldERldmljZUlkZW50aWZpZXJIYXNoU2FsdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmF1
ZGlvRGV2aWNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eTo6dmlkZW9EZXZpY2UgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKwogMjAxOS0wMi0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFrZSB0byBjbGVhciBzb3VyY2VzIGZyb20gVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eSBhbmQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgd2hlbiBubyBsb25nZXIgbmVlZGVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eS5jcHAKaW5kZXggOTY1MTNlYjAxMWIwMDBkZTAzNzFiZjdkMjIyNTA4MjE0
ZjJkYTdkZi4uMzA0ZmEyMWMyNGE2NjY4YjMxNWUwM2I5NGIxZGRiZjlkOWVmNzJkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1Byb3h5LmNwcApAQCAtNDEsMTkgKzQxLDI0IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSh1aW50NjRfdCBmcmFtZUlELCBD
CiB7CiB9CiAKK1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Ojp+VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkoKQoreworICAgIGludmFsaWRhdGUoKTsKK30KKwogdm9pZCBVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6c2V0VXNlck1lZGlhQWNjZXNzSW5mbyhib29sIGFsbG93
ZWQpCiB7CiAgICAgQVNTRVJUKG1fY29tcGxldGlvbkhhbmRsZXIpOwotICAgIGlmICghbV9jb21w
bGV0aW9uSGFuZGxlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb21wbGV0aW9uSGFuZGxl
cihhbGxvd2VkKTsKLSAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsKKyAgICBjb21w
bGV0ZShhbGxvd2VkKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6
aW52YWxpZGF0ZSgpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Ojpjb21wbGV0
ZShPcHRpb25hbDxib29sPiBhbGxvd2VkKQogewotICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBu
dWxscHRyOworICAgIGlmICghbV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxl
cik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5LmgKaW5kZXggNmEwODk1MDZjZWEzODhkMWQ0YzNkNmRlZmRhNWZl
MGUwYWVlNTdjNC4uOWUwMGJiOTM3NGJiNTZkOTIwNjQ0NDBhNmFjNzRhNmE3Y2ZlYWIxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tQcm94eS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29uc3RyYWludHMuaD4KLSNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1By
b3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrPiB7CiBwdWJsaWM6CiAKLSAgICB1c2luZyBDb21wbGV0aW9uSGFuZGxl
ciA9IFdURjo6RnVuY3Rpb248dm9pZChib29sIGFsbG93ZWQpPjsKKyAgICB1c2luZyBDb21wbGV0
aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxib29sPiBh
bGxvd2VkKT47CiAKICAgICBzdGF0aWMgUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
PiBjcmVhdGUodWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJl
ZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luKQogICAg
IHsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkZW55KCkgeyBzZXRVc2Vy
TWVkaWFBY2Nlc3NJbmZvKGZhbHNlKTsgfQogICAgIHZvaWQgc2V0VXNlck1lZGlhQWNjZXNzSW5m
byhib29sKTsKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICB2b2lkIGludmFsaWRhdGUoKSB7
IGNvbXBsZXRlKHsgfSk7IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lSUQ7IH0KICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlhRG9j
dW1lbnRTZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fdXNlck1lZGlhRG9jdW1lbnRTZWN1cml0
eU9yaWdpbi5nZXQoKTsgfQpAQCAtNTYsNyArNTYsMTAgQEAgcHVibGljOgogICAgIAogcHJpdmF0
ZToKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSh1aW50NjRfdCBmcmFtZUlELCBD
b21wbGV0aW9uSGFuZGxlciYmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1l
ZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZl
bERvY3VtZW50T3JpZ2luKTsKKyAgICB+VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkoKTsK
IAorICAgIHZvaWQgY29tcGxldGUoT3B0aW9uYWw8Ym9vbD4gYWxsb3dlZCk7CisgICAgCiAgICAg
dWludDY0X3QgbV9mcmFtZUlEOwogICAgIENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhh
bmRsZXI7CiAgICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3VzZXJNZWRpYURvY3Vt
ZW50U2VjdXJpdHlPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5k
ZXggOWZhM2E1MGQ5NjBhNDI1MDBhZTRlYzViZjQ3ZjVhYzk5MDQ3Y2U4NC4uN2I4YzYxNDFlZGM5
M2ZkYjU1ZDJjOGI2Y2VjN2FlOGUyZGQ1MjdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcApAQCAtNzUsOCArNzUsNiBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUGVuZGluZ1JlcXVlc3RzKCkKICAgICAgICAgcmVx
dWVzdC0+aW52YWxpZGF0ZSgpOwogICAgIG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzLmNsZWFy
KCk7CiAKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy52
YWx1ZXMoKSkKLSAgICAgICAgcmVxdWVzdC0+aW52YWxpZGF0ZSgpOwogICAgIG1fcGVuZGluZ0Rl
dmljZVJlcXVlc3RzLmNsZWFyKCk7CiB9CiAKQEAgLTkyLDIzICs5MCwxOCBAQCB2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQo
KQogICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSB8fCAhbV9wYWdlLm1haW5GcmFtZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlcXVlc3RJRCA9IGdlbmVyYXRlUmVxdWVzdElEKCk7
Ci0gICAgYXV0byBoYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCByZXF1ZXN0SURdKGJvb2wgb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykgbXV0YWJsZSB7Ci0g
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgYXV0byBoYW5kbGVyID0gW3RoaXNdKE9wdGlvbmFs
PGJvb2w+IG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpIG11dGFibGUgeworICAgICAgICBpZiAo
IW9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MgfHwgIW1fcGFnZS5pc1ZhbGlkKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0Rl
dmljZVJlcXVlc3RzLnRha2UocmVxdWVzdElEKTsKLSAgICAgICAgaWYgKCFwZW5kaW5nUmVxdWVz
dCB8fCAhbV9wYWdlLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBp
ZiAobV9ncmFudGVkUmVxdWVzdHMuaXNFbXB0eSgpICYmICFvcmlnaW5IYXNQZXJzaXN0ZW50QWNj
ZXNzKQorICAgICAgICBpZiAobV9ncmFudGVkUmVxdWVzdHMuaXNFbXB0eSgpICYmICEqb3JpZ2lu
SGFzUGVyc2lzdGVudEFjY2VzcykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX3Bh
Z2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1cmVEZXZpY2VzQ2hhbmdl
ZCgpLCBtX3BhZ2UucGFnZUlEKCkpOwogICAgIH07CiAKICAgICBhdXRvIG9yaWdpbiA9IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9wYWdlLm1haW5GcmFtZSgpLT51cmwoKSk7Ci0g
ICAgZ2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8ocmVxdWVzdElELCBtX3BhZ2UubWFpbkZyYW1l
KCktPmZyYW1lSUQoKSwgV1RGTW92ZShoYW5kbGVyKSwgb3JpZ2luLmdldCgpLCBXVEZNb3ZlKG9y
aWdpbikpOworICAgIGdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKG1fcGFnZS5tYWluRnJhbWUo
KS0+ZnJhbWVJRCgpLCBvcmlnaW4uZ2V0KCksIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShoYW5k
bGVyKSk7CiAjZW5kaWYKIH0KIApAQCAtMTE3LDEzICsxMTAsNiBAQCB2b2lkIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjbGVhckNhY2hlZFN0YXRlKCkKICAgICBpbnZh
bGlkYXRlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKLVJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRl
UGVybWlzc2lvblJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IG1haW5GcmFt
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9j
dW1lbnRPcmlnaW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2lu
LCBWZWN0b3I8Q2FwdHVyZURldmljZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxDYXB0dXJlRGV2
aWNlPiYmIHZpZGVvRGV2aWNlcywgTWVkaWFTdHJlYW1SZXF1ZXN0JiYgcmVxdWVzdCkKLXsKLSAg
ICBhdXRvIHBlcm1pc3Npb25SZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eTo6Y3JlYXRlKCp0aGlzLCB1c2VyTWVkaWFJRCwgbWFpbkZyYW1lSUQsIGZyYW1lSUQsIFdURk1v
dmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmln
aW4pLCBXVEZNb3ZlKGF1ZGlvRGV2aWNlcyksIFdURk1vdmUodmlkZW9EZXZpY2VzKSwgV1RGTW92
ZShyZXF1ZXN0KSk7Ci0gICAgbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHMuYWRkKHVzZXJNZWRp
YUlELCBwZXJtaXNzaW9uUmVxdWVzdC5wdHIoKSk7Ci0gICAgcmV0dXJuIHBlcm1pc3Npb25SZXF1
ZXN0OwotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHN0YXRpYyB1aW50NjRfdCB0b1dl
YkNvcmUoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVu
aWFsUmVhc29uIHJlYXNvbikKIHsKQEAgLTE4OCwxNSArMTc0LDE4IEBAIHZvaWQgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQo
dWludDY0X3QKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFn
ZS53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoKS5kZXZpY2VJZEhh
c2hTYWx0Rm9yT3JpZ2luKHJlcXVlc3QtPnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4o
KSwgcmVxdWVzdC0+dG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdXNlck1lZGlhSUQsIGF1ZGlvRGV2aWNlID0gV1RG
TW92ZShhdWRpb0RldmljZSksIHZpZGVvRGV2aWNlID0gV1RGTW92ZSh2aWRlb0RldmljZSksIGxv
Y2FsUmVxdWVzdCA9IHJlcXVlc3QuY29weVJlZigpXSAoU3RyaW5nJiYgZGV2aWNlSURIYXNoU2Fs
dCkgbXV0YWJsZSB7CisgICAgYXV0byYgdXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9
IHJlcXVlc3QtPnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvJiB0
b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSByZXF1ZXN0LT50b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4oKTsKKyAgICBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlk
SGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbih1c2VyTWVkaWFEb2N1
bWVudFNlY3VyaXR5T3JpZ2luLCB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4sIFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCA9IHJlcXVlc3QucmVsZWFz
ZU5vbk51bGwoKV0gKFN0cmluZyYmIGRldmljZUlESGFzaFNhbHQpIG11dGFibGUgewogICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoZ3JhbnRB
Y2Nlc3ModXNlck1lZGlhSUQsIFdURk1vdmUoYXVkaW9EZXZpY2UpLCBXVEZNb3ZlKHZpZGVvRGV2
aWNlKSwgV1RGTW92ZShkZXZpY2VJREhhc2hTYWx0KSkpIHsKLSAgICAgICAgICAgIG1fZ3JhbnRl
ZFJlcXVlc3RzLmFwcGVuZChsb2NhbFJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAg
ICAgICBpZiAobV9oYXNGaWx0ZXJlZERldmljZUxpc3QpCi0gICAgICAgICAgICAgICAgY2FwdHVy
ZURldmljZXNDaGFuZ2VkKCk7Ci0gICAgICAgICAgICBtX2hhc0ZpbHRlcmVkRGV2aWNlTGlzdCA9
IGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGlmICghZ3JhbnRBY2Nlc3MocmVxdWVzdCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9ncmFudGVkUmVxdWVzdHMuYXBwZW5kKFdU
Rk1vdmUocmVxdWVzdCkpOworICAgICAgICBpZiAobV9oYXNGaWx0ZXJlZERldmljZUxpc3QpCisg
ICAgICAgICAgICBjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKyAgICAgICAgbV9oYXNGaWx0ZXJl
ZERldmljZUxpc3QgPSBmYWxzZTsKICAgICB9KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHVz
ZXJNZWRpYUlEKTsKQEAgLTI2NiwxNCArMjU1LDE0IEBAIGJvb2wgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6Ondhc1JlcXVlc3REZW5pZWQodWludDY0X3QgbWFpbkZyYW1l
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpncmFudEFjY2Vzcyh1aW50NjRfdCB1c2VyTWVkaWFJRCwgY29uc3QgQ2Fw
dHVyZURldmljZSBhdWRpb0RldmljZSwgY29uc3QgQ2FwdHVyZURldmljZSB2aWRlb0RldmljZSwg
Y29uc3QgU3RyaW5nJiBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpCitib29sIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpncmFudEFjY2Vzcyhjb25zdCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0KQogewotICAgIGlmICghVXNlck1lZGlhUHJv
Y2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLndpbGxDcmVhdGVNZWRpYVN0cmVhbSgqdGhpcywgISFh
dWRpb0RldmljZSwgISF2aWRlb0RldmljZSkpIHsKLSAgICAgICAgZGVueVJlcXVlc3QodXNlck1l
ZGlhSUQsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0Rl
bmlhbFJlYXNvbjo6T3RoZXJGYWlsdXJlLCAiVW5hYmxlIHRvIGV4dGVuZCBzYW5kYm94LiIpOwor
ICAgIGlmICghVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLndpbGxDcmVhdGVN
ZWRpYVN0cmVhbSgqdGhpcywgcmVxdWVzdC5oYXNBdWRpb0RldmljZSgpLCByZXF1ZXN0Lmhhc1Zp
ZGVvRGV2aWNlKCkpKSB7CisgICAgICAgIGRlbnlSZXF1ZXN0KHJlcXVlc3QudXNlck1lZGlhSUQo
KSwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFs
UmVhc29uOjpPdGhlckZhaWx1cmUsICJVbmFibGUgdG8gZXh0ZW5kIHNhbmRib3guIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQodXNlck1lZGlhSUQsIGF1
ZGlvRGV2aWNlLCB2aWRlb0RldmljZSwgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSwgbV9wYWdl
LnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQocmVxdWVzdC51c2VyTWVkaWFJRCgpLCByZXF1ZXN0
LmF1ZGlvRGV2aWNlKCksIHJlcXVlc3QudmlkZW9EZXZpY2UoKSwgcmVxdWVzdC5kZXZpY2VJZGVu
dGlmaWVySGFzaFNhbHQoKSksIG1fcGFnZS5wYWdlSUQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAjZW5kaWYKQEAgLTI5NiwyNSArMjg1LDI2IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OnNjaGVkdWxlTmV4dFJlamVjdGlvbigpCiB9CiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OlJlcXVlc3RBY3Rpb24gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6Omdl
dFJlcXVlc3RBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRp
YURvY3VtZW50T3JpZ2luLCBTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwg
Y29uc3QgTWVkaWFTdHJlYW1SZXF1ZXN0JiB1c2VyUmVxdWVzdCwgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+JiBhdWRpb0RldmljZXMsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgdmlkZW9EZXZpY2VzKQor
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OlJlcXVlc3RBY3Rpb24gVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdldFJlcXVlc3RBY3Rpb24oY29u
c3QgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCkKIHsKLSAgICBib29s
IHJlcXVlc3RpbmdTY3JlZW5DYXB0dXJlID0gdXNlclJlcXVlc3QudHlwZSA9PSBNZWRpYVN0cmVh
bVJlcXVlc3Q6OlR5cGU6OkRpc3BsYXlNZWRpYTsKLSAgICBBU1NFUlQoIShyZXF1ZXN0aW5nU2Ny
ZWVuQ2FwdHVyZSAmJiB2aWRlb0RldmljZXMuaXNFbXB0eSgpKSk7Ci0gICAgQVNTRVJUKCEocmVx
dWVzdGluZ1NjcmVlbkNhcHR1cmUgJiYgIWF1ZGlvRGV2aWNlcy5pc0VtcHR5KCkpKTsKLSAgICBi
b29sIHJlcXVlc3RpbmdDYW1lcmEgPSAhcmVxdWVzdGluZ1NjcmVlbkNhcHR1cmUgJiYgIXZpZGVv
RGV2aWNlcy5pc0VtcHR5KCk7Ci0gICAgYm9vbCByZXF1ZXN0aW5nTWljcm9waG9uZSA9ICFhdWRp
b0RldmljZXMuaXNFbXB0eSgpOworICAgIGJvb2wgcmVxdWVzdGluZ1NjcmVlbkNhcHR1cmUgPSBy
ZXF1ZXN0LnJlcXVlc3RUeXBlKCkgPT0gTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNwbGF5
TWVkaWE7CisgICAgYm9vbCByZXF1ZXN0aW5nQ2FtZXJhID0gIXJlcXVlc3RpbmdTY3JlZW5DYXB0
dXJlICYmIHJlcXVlc3QuaGFzVmlkZW9EZXZpY2UoKTsKKyAgICBib29sIHJlcXVlc3RpbmdNaWNy
b3Bob25lID0gcmVxdWVzdC5oYXNBdWRpb0RldmljZSgpOwogCi0gICAgaWYgKHdhc1JlcXVlc3RE
ZW5pZWQoZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIHRvcExldmVsRG9jdW1lbnRP
cmlnaW4sIHJlcXVlc3RpbmdNaWNyb3Bob25lLCByZXF1ZXN0aW5nQ2FtZXJhLCByZXF1ZXN0aW5n
U2NyZWVuQ2FwdHVyZSkpCisgICAgQVNTRVJUKCEocmVxdWVzdGluZ1NjcmVlbkNhcHR1cmUgJiYg
IXJlcXVlc3QuaGFzVmlkZW9EZXZpY2UoKSkpOworICAgIEFTU0VSVCghKHJlcXVlc3RpbmdTY3Jl
ZW5DYXB0dXJlICYmIHJlcXVlc3RpbmdNaWNyb3Bob25lKSk7CisKKyAgICBpZiAod2FzUmVxdWVz
dERlbmllZChyZXF1ZXN0LmZyYW1lSUQoKSwgcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luKCksIHJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJl
cXVlc3RpbmdNaWNyb3Bob25lLCByZXF1ZXN0aW5nQ2FtZXJhLCByZXF1ZXN0aW5nU2NyZWVuQ2Fw
dHVyZSkpCiAgICAgICAgIHJldHVybiBSZXF1ZXN0QWN0aW9uOjpEZW55OwogCi0gICAgaWYgKHVz
ZXJSZXF1ZXN0LnR5cGUgPT0gTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWEp
CisgICAgaWYgKHJlcXVlc3QucmVxdWVzdFR5cGUoKSA9PSBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5
cGU6OkRpc3BsYXlNZWRpYSkKICAgICAgICAgcmV0dXJuIFJlcXVlc3RBY3Rpb246OlByb21wdDsK
IAotICAgIHJldHVybiBzZWFyY2hGb3JHcmFudGVkUmVxdWVzdChmcmFtZUlELCB1c2VyTWVkaWFE
b2N1bWVudE9yaWdpbiwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgcmVxdWVzdGluZ01pY3JvcGhv
bmUsIHJlcXVlc3RpbmdDYW1lcmEpID8gUmVxdWVzdEFjdGlvbjo6R3JhbnQgOiBSZXF1ZXN0QWN0
aW9uOjpQcm9tcHQ7CisgICAgcmV0dXJuIHNlYXJjaEZvckdyYW50ZWRSZXF1ZXN0KHJlcXVlc3Qu
ZnJhbWVJRCgpLCByZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVx
dWVzdC50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdGluZ01pY3JvcGhv
bmUsIHJlcXVlc3RpbmdDYW1lcmEpID8gUmVxdWVzdEFjdGlvbjo6R3JhbnQgOiBSZXF1ZXN0QWN0
aW9uOjpQcm9tcHQ7CiB9CiAjZW5kaWYKIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRf
dCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHVz
ZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1
bWVudE9yaWdpbiwgY29uc3QgTWVkaWFTdHJlYW1SZXF1ZXN0JiB1c2VyUmVxdWVzdCkKK3ZvaWQg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQ
ZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIE1lZGlhU3RyZWFtUmVxdWVzdCYm
IHVzZXJSZXF1ZXN0KQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgaWYgKCFVc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkuY2FwdHVyZUVuYWJsZWQoKSkgewpAQCAt
MzIzLDk1ICszMTMsNjIgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSgKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OkludmFsaWRDb25zdHJh
aW50c0hhbmRsZXIgaW52YWxpZEhhbmRsZXIgPSBbdGhpcywgdXNlck1lZGlhSURdKGNvbnN0IFN0
cmluZyYgaW52YWxpZENvbnN0cmFpbnQpIHsKLSAgICAgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgp
KQotICAgICAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGRlbnlSZXF1ZXN0KHVzZXJNZWRpYUlELCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OkludmFs
aWRDb25zdHJhaW50LCBpbnZhbGlkQ29uc3RyYWludCk7Ci0gICAgfTsKKyAgICBhdXRvIHVzZXJN
ZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1c2VyTWVkaWFEb2N1bWVu
dE9yaWdpbi5nZXQoKSk7CisgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpKTsKIAotICAgIGF1dG8g
dmFsaWRIYW5kbGVyID0gW3RoaXMsIHVzZXJNZWRpYUlELCBmcmFtZUlELCB1c2VyTWVkaWFEb2N1
bWVudE9yaWdpbiA9IHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmNvcHlSZWYoKSwgdG9wTGV2ZWxE
b2N1bWVudE9yaWdpbiA9IHRvcExldmVsRG9jdW1lbnRPcmlnaW4uY29weVJlZigpLCBsb2NhbFVz
ZXJSZXF1ZXN0ID0gdXNlclJlcXVlc3RdKFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2
aWNlcywgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBTdHJpbmcmJiBkZXZp
Y2VJZGVudGlmaWVySGFzaFNhbHQpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fcGFnZS5pc1Zh
bGlkKCkgfHwgIW1fcGFnZS5tYWluRnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBh
dXRvIHJlcXVlc3QgPSBtX3BlbmRpbmdVc2VyTWVkaWFSZXF1ZXN0cy5hZGQodXNlck1lZGlhSUQs
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlh
SUQsIG1fcGFnZS5tYWluRnJhbWUoKS0+ZnJhbWVJRCgpLCBmcmFtZUlELCBXVEZNb3ZlKHVzZXJN
ZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSwgeyB9
LCB7IH0sIFdURk1vdmUodXNlclJlcXVlc3QpKSkuaXRlcmF0b3ItPnZhbHVlLmNvcHlSZWYoKTsK
IAotICAgICAgICBpZiAodmlkZW9EZXZpY2VzLmlzRW1wdHkoKSAmJiBhdWRpb0RldmljZXMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICBkZW55UmVxdWVzdCh1c2VyTWVkaWFJRCwgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpOb0Nv
bnN0cmFpbnRzLCBlbXB0eVN0cmluZygpKTsKKyAgICBnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5m
byhmcmFtZUlELCByZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJl
cXVlc3QtPnRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCBbdGhpcywgcmVxdWVzdCA9
IHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKV0oT3B0aW9uYWw8Ym9vbD4gaGFzUGVyc2lzdGVudEFj
Y2VzcykgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVxdWVzdC0+aXNQZW5kaW5nKCkpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAotICAgICAgICBhdXRvIGFjdGlvbiA9IGdldFJl
cXVlc3RBY3Rpb24obV9wYWdlLm1haW5GcmFtZSgpLT5mcmFtZUlEKCksIHVzZXJNZWRpYURvY3Vt
ZW50T3JpZ2luLmdldCgpLCB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpLCBsb2NhbFVzZXJS
ZXF1ZXN0LCBhdWRpb0RldmljZXMsIHZpZGVvRGV2aWNlcyk7Ci0gICAgICAgIGlmIChhY3Rpb24g
PT0gUmVxdWVzdEFjdGlvbjo6RGVueSkgewotICAgICAgICAgICAgZGVueVJlcXVlc3QodXNlck1l
ZGlhSUQsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0Rl
bmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGlm
ICghaGFzUGVyc2lzdGVudEFjY2VzcykgeworICAgICAgICAgICAgcmVxdWVzdC0+ZGVueShVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246
Ok90aGVyRmFpbHVyZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoYWN0aW9uID09IFJlcXVlc3RBY3Rpb246OkdyYW50KSB7Ci0gICAgICAgICAgICBBU1NF
UlQobG9jYWxVc2VyUmVxdWVzdC50eXBlICE9IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlz
cGxheU1lZGlhKTsKKyAgICAgICAgcHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdU
Rk1vdmUocmVxdWVzdCksICpoYXNQZXJzaXN0ZW50QWNjZXNzKTsKKyAgICB9KTsKK30KIAotICAg
ICAgICAgICAgaWYgKG1fcGFnZS5pc1ZpZXdWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgICAgICAv
LyBXZSBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZSBkZXZpY2VzLCBidXQgdGhlIGN1cnJlbnQg
Y2xpZW50IEFQSSBhbGxvd3MgY2xpZW50IHRvIHNlbGVjdCB3aGljaCBkZXZpY2UgdG8gcGljay4K
LSAgICAgICAgICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBwb3NzaWJsaXR5IGZvciB0aGUg
Y2xpZW50IHRvIGRvIHRoZSBkZXZpY2Ugc2VsZWN0aW9uLgotICAgICAgICAgICAgICAgIGF1dG8g
YXVkaW9EZXZpY2UgPSAhYXVkaW9EZXZpY2VzLmlzRW1wdHkoKSA/IGF1ZGlvRGV2aWNlc1swXSA6
IENhcHR1cmVEZXZpY2UoKTsKLSAgICAgICAgICAgICAgICBhdXRvIHZpZGVvRGV2aWNlID0gIXZp
ZGVvRGV2aWNlcy5pc0VtcHR5KCkgPyB2aWRlb0RldmljZXNbMF0gOiBDYXB0dXJlRGV2aWNlKCk7
Ci0gICAgICAgICAgICAgICAgZ3JhbnRBY2Nlc3ModXNlck1lZGlhSUQsIFdURk1vdmUoYXVkaW9E
ZXZpY2UpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgV1RGTW92ZShkZXZpY2VJZGVudGlmaWVySGFz
aFNhbHQpKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG1fcHJlZ3JhbnRl
ZFJlcXVlc3RzLmFwcGVuZChjcmVhdGVQZXJtaXNzaW9uUmVxdWVzdCh1c2VyTWVkaWFJRCwgbV9w
YWdlLm1haW5GcmFtZSgpLT5mcmFtZUlEKCksIGZyYW1lSUQsIFdURk1vdmUodXNlck1lZGlhRG9j
dW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKGF1
ZGlvRGV2aWNlcyksIFdURk1vdmUodmlkZW9EZXZpY2VzKSwgV1RGTW92ZShsb2NhbFVzZXJSZXF1
ZXN0KSkpOwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJv
Y2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiYmIHJlcXVlc3QsIGJvb2wgaGFzUGVyc2lzdGVudEFjY2VzcykKK3sKKyAgICBp
ZiAoaGFzUGVyc2lzdGVudEFjY2VzcykKKyAgICAgICAgcmVxdWVzdC0+c2V0SGFzUGVyc2lzdGVu
dEFjY2VzcygpOwogCisgICAgYXV0byYgdXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9
IHJlcXVlc3QtPnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvJiB0
b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSByZXF1ZXN0LT50b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4oKTsKKyAgICBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlk
SGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbih1c2VyTWVkaWFEb2N1
bWVudFNlY3VyaXR5T3JpZ2luLCB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4sIFt0aGlz
LCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KV0gKFN0cmluZyYmIGRldmljZUlESGFzaFNhbHQp
IG11dGFibGUgeworICAgICAgICBpZiAoIXJlcXVlc3QtPmlzUGVuZGluZygpKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB1c2VyTWVkaWFPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uZ2V0KCkp
OwotICAgICAgICBhdXRvIHRvcExldmVsT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4uZ2V0KCkpOwotICAgICAgICBhdXRvIHBlbmRpbmdS
ZXF1ZXN0ID0gY3JlYXRlUGVybWlzc2lvblJlcXVlc3QodXNlck1lZGlhSUQsIG1fcGFnZS5tYWlu
RnJhbWUoKS0+ZnJhbWVJRCgpLCBmcmFtZUlELCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3Jp
Z2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShhdWRpb0Rldmlj
ZXMpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlcyksIFdURk1vdmUobG9jYWxVc2VyUmVxdWVzdCkpOwot
Ci0gICAgICAgIGlmIChtX3BhZ2UuaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkpIHsKLSAgICAg
ICAgICAgIGlmIChXZWJBdXRvbWF0aW9uU2Vzc2lvbiogYXV0b21hdGlvblNlc3Npb24gPSBtX3Bh
Z2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkgewotICAgICAg
ICAgICAgICAgIGlmIChhdXRvbWF0aW9uU2Vzc2lvbi0+c2hvdWxkQWxsb3dHZXRVc2VyTWVkaWFG
b3JQYWdlKG1fcGFnZSkpCi0gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5hbGxv
dygpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdXNlck1lZGlh
QWNjZXNzV2FzRGVuaWVkKHVzZXJNZWRpYUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogCisg
ICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OkludmFsaWRDb25zdHJhaW50c0hhbmRs
ZXIgaW52YWxpZEhhbmRsZXIgPSBbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QuY29weVJlZigpXShj
b25zdCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KSB7CisgICAgICAgICAgICBpZiAoIXJlcXVl
c3QtPmlzUGVuZGluZygpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQogCi0gICAgICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVy
ZURldmljZXNFbmFibGVkKCkgJiYgIW1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2
aWNlc1Byb21wdEVuYWJsZWQoKSkgewotICAgICAgICAgICAgcGVuZGluZ1JlcXVlc3QtPmFsbG93
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBwYWdl
IG5hdmlnYXRlZCwgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIHRoZSBwYWdlIGNsaWVudCBmb3Ig
YXV0aG9yaXphdGlvbi4KLSAgICAgICAgYXV0byogd2ViRnJhbWUgPSBtX3BhZ2UucHJvY2Vzcygp
LndlYkZyYW1lKGZyYW1lSUQpOwotCi0gICAgICAgIGlmICghd2ViRnJhbWUgfHwgIVNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG1fcGFnZS5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJM
KCkpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BMZXZlbE9yaWdpbi0+c2VjdXJpdHlPcmlnaW4o
KSkpIHsKLSAgICAgICAgICAgIGRlbnlSZXF1ZXN0KHVzZXJNZWRpYUlELCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246Ok5vQ29uc3Ry
YWludHMsIGVtcHR5U3RyaW5nKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgd2ViRnJhbWUsIHVzZXJNZWRpYU9yaWdpbiBh
bmQgdG9wTGV2ZWxPcmlnaW4gZnJvbSB0aGlzIHVpQ2xpZW50IEFQSSBjYWxsLgotICAgICAgICBt
X3BhZ2UudWlDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dChtX3BhZ2UsICp3ZWJGcmFtZSwgV1RGTW92ZSh1c2VyTWVkaWFPcmlnaW4pLCBXVEZNb3ZlKHRv
cExldmVsT3JpZ2luKSwgcGVuZGluZ1JlcXVlc3QuZ2V0KCkpOwotICAgIH07CisgICAgICAgICAg
ICBwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lvbkludmFsaWRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCks
IGludmFsaWRDb25zdHJhaW50KTsKKyAgICAgICAgfTsKIAotICAgIGF1dG8gcmVxdWVzdElEID0g
Z2VuZXJhdGVSZXF1ZXN0SUQoKTsKLSAgICBhdXRvIGhhdmVQZXJtaXNzaW9uSW5mb0hhbmRsZXIg
PSBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3RJRCwgdmFsaWRI
YW5kbGVyID0gV1RGTW92ZSh2YWxpZEhhbmRsZXIpLCBpbnZhbGlkSGFuZGxlciA9IFdURk1vdmUo
aW52YWxpZEhhbmRsZXIpLCBsb2NhbFVzZXJSZXF1ZXN0ID0gdXNlclJlcXVlc3RdKGJvb2wgb3Jp
Z2luSGFzUGVyc2lzdGVudEFjY2VzcykgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMp
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gdmFsaWRIYW5kbGVyID0gW3RoaXMs
IHJlcXVlc3QgPSByZXF1ZXN0LmNvcHlSZWYoKV0oVmVjdG9yPENhcHR1cmVEZXZpY2U+JiYgYXVk
aW9EZXZpY2VzLCBWZWN0b3I8Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFN0cmluZyYm
IGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXJl
cXVlc3QtPmlzUGVuZGluZygpKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBh
dXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMudGFrZShyZXF1ZXN0
SUQpOwotICAgICAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KQotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpIHx8ICFtX3BhZ2UubWFpbkZyYW1lKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghbV9wYWdlLmlzVmFsaWQo
KSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHByb2Nlc3NVc2VyTWVkaWFQZXJt
aXNzaW9uVmFsaWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoYXVkaW9EZXZpY2Vz
KSwgV1RGTW92ZSh2aWRlb0RldmljZXMpLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2Fs
dCkpOworICAgICAgICB9OwogCiAgICAgICAgIHN5bmNXaXRoV2ViQ29yZVByZWZzKCk7CiAKLSAg
ICAgICAgbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgp
LmRldmljZUlkSGFzaFNhbHRGb3JPcmlnaW4ocGVuZGluZ1JlcXVlc3QudmFsdWUoKS0+dXNlck1l
ZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCBwZW5kaW5nUmVxdWVzdC52YWx1ZSgpLT50b3BM
ZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgW3ZhbGlkSGFuZGxlciA9IFdURk1vdmUodmFs
aWRIYW5kbGVyKSwgaW52YWxpZEhhbmRsZXIgPSBXVEZNb3ZlKGludmFsaWRIYW5kbGVyKSwgbG9j
YWxVc2VyUmVxdWVzdCA9IGxvY2FsVXNlclJlcXVlc3RdIChTdHJpbmcmJiBkZXZpY2VJREhhc2hT
YWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNp
bmdsZXRvbigpLnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFdURk1vdmUodmFsaWRIYW5kbGVy
KSwgV1RGTW92ZShpbnZhbGlkSGFuZGxlciksIFdURk1vdmUobG9jYWxVc2VyUmVxdWVzdCksIFdU
Rk1vdmUoZGV2aWNlSURIYXNoU2FsdCkpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgZ2V0
VXNlck1lZGlhUGVybWlzc2lvbkluZm8ocmVxdWVzdElELCBmcmFtZUlELCBXVEZNb3ZlKGhhdmVQ
ZXJtaXNzaW9uSW5mb0hhbmRsZXIpLCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwg
V1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSk7CisgICAgICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFdURk1v
dmUodmFsaWRIYW5kbGVyKSwgV1RGTW92ZShpbnZhbGlkSGFuZGxlciksIHJlcXVlc3QtPnVzZXJS
ZXF1ZXN0KCksIFdURk1vdmUoZGV2aWNlSURIYXNoU2FsdCkpOworICAgIH0pOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0odXNlck1lZGlhSUQpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsK
QEAgLTQyMiwxOSArMzc5LDkzIEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUoCiB9CiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6Z2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8odWludDY0X3QgcmVxdWVzdElELCB1
aW50NjRfdCBmcmFtZUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6Q29tcGxldGlv
bkhhbmRsZXImJiBoYW5kbGVyLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1l
bnRPcmlnaW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luKQor
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJN
ZWRpYVBlcm1pc3Npb25JbnZhbGlkUmVxdWVzdChjb25zdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQorewor
ICAgIGJvb2wgZmlsdGVyQ29uc3RyYWludCA9ICFyZXF1ZXN0Lmhhc1BlcnNpc3RlbnRBY2Nlc3Mo
KSAmJiAhd2FzR3JhbnRlZFZpZGVvT3JBdWRpb0FjY2VzcyhyZXF1ZXN0LmZyYW1lSUQoKSwgcmVx
dWVzdC51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QudG9wTGV2ZWxE
b2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpOworCisgICAgZGVueVJlcXVlc3QocmVxdWVzdC51c2Vy
TWVkaWFJRCgpLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nl
c3NEZW5pYWxSZWFzb246OkludmFsaWRDb25zdHJhaW50LCBmaWx0ZXJDb25zdHJhaW50ID8gU3Ry
aW5nIHsgfSA6IGludmFsaWRDb25zdHJhaW50KTsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25WYWxpZFJl
cXVlc3QoUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+JiYgcmVxdWVzdCwgVmVj
dG9yPENhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8Q2FwdHVyZURldmljZT4m
JiB2aWRlb0RldmljZXMsIFN0cmluZyYmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCkKK3sKKyAg
ICBpZiAodmlkZW9EZXZpY2VzLmlzRW1wdHkoKSAmJiBhdWRpb0RldmljZXMuaXNFbXB0eSgpKSB7
CisgICAgICAgIGRlbnlSZXF1ZXN0KHJlcXVlc3QtPnVzZXJNZWRpYUlEKCksIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6Tm9Db25z
dHJhaW50cywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBy
ZXF1ZXN0LT5zZXREZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoV1RGTW92ZShkZXZpY2VJZGVudGlm
aWVySGFzaFNhbHQpKTsKKyAgICByZXF1ZXN0LT5zZXRFbGlnaWJsZVZpZGVvRGV2aWNlVUlEcyhX
VEZNb3ZlKHZpZGVvRGV2aWNlcykpOworICAgIHJlcXVlc3QtPnNldEVsaWdpYmxlQXVkaW9EZXZp
Y2VVSURzKFdURk1vdmUoYXVkaW9EZXZpY2VzKSk7CisKKyAgICBhdXRvIGFjdGlvbiA9IGdldFJl
cXVlc3RBY3Rpb24ocmVxdWVzdCk7CisgICAgaWYgKGFjdGlvbiA9PSBSZXF1ZXN0QWN0aW9uOjpE
ZW55KSB7CisgICAgICAgIGRlbnlSZXF1ZXN0KHJlcXVlc3QtPnVzZXJNZWRpYUlEKCksIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6
UGVybWlzc2lvbkRlbmllZCwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoYWN0aW9uID09IFJlcXVlc3RBY3Rpb246OkdyYW50KSB7CisgICAgICAgIEFT
U0VSVChyZXF1ZXN0LT5yZXF1ZXN0VHlwZSgpICE9IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6
RGlzcGxheU1lZGlhKTsKKworICAgICAgICBpZiAobV9wYWdlLmlzVmlld1Zpc2libGUoKSkKKyAg
ICAgICAgICAgIGdyYW50QWNjZXNzKHJlcXVlc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX3ByZWdyYW50ZWRSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CisKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3BhZ2UuaXNDb250cm9sbGVkQnlBdXRvbWF0
aW9uKCkpIHsKKyAgICAgICAgaWYgKFdlYkF1dG9tYXRpb25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vz
c2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigp
KSB7CisgICAgICAgICAgICBpZiAoYXV0b21hdGlvblNlc3Npb24tPnNob3VsZEFsbG93R2V0VXNl
ck1lZGlhRm9yUGFnZShtX3BhZ2UpKQorICAgICAgICAgICAgICAgIHJlcXVlc3QtPmFsbG93KCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdXNlck1lZGlhQWNjZXNzV2FzRGVu
aWVkKHJlcXVlc3QtPnVzZXJNZWRpYUlEKCksIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CisKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtX3BhZ2UucHJl
ZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkgJiYgIW1fcGFnZS5wcmVmZXJl
bmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc1Byb21wdEVuYWJsZWQoKSkgeworICAgICAgICByZXF1
ZXN0LT5hbGxvdygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgcGFnZSBu
YXZpZ2F0ZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCB0aGUgcGFnZSBjbGllbnQgZm9yIGF1
dGhvcml6YXRpb24uCisgICAgYXV0byogd2ViRnJhbWUgPSBtX3BhZ2UucHJvY2VzcygpLndlYkZy
YW1lKHJlcXVlc3QtPmZyYW1lSUQoKSk7CisKKyAgICBpZiAoIXdlYkZyYW1lIHx8ICFTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX3BhZ2UucGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVS
TCgpKS0+aXNTYW1lU2NoZW1lSG9zdFBvcnQocmVxdWVzdC0+dG9wTGV2ZWxEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luKCkpKSB7CisgICAgICAgIGRlbnlSZXF1ZXN0KHJlcXVlc3QtPnVzZXJNZWRpYUlE
KCksIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0Rlbmlh
bFJlYXNvbjo6Tm9Db25zdHJhaW50cywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHdlYkZyYW1lLCB1c2VyTWVkaWFPcmlnaW4g
YW5kIHRvcExldmVsT3JpZ2luIGZyb20gdGhpcyB1aUNsaWVudCBBUEkgY2FsbC4KKyAgICBhdXRv
IHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0LT51
c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gdG9wTGV2ZWxPcmln
aW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVxdWVzdC0+dG9wTGV2ZWxEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luKCkpOworICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZv
clVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KG1fcGFnZSwgKndlYkZyYW1lLCBXVEZNb3ZlKHVz
ZXJNZWRpYU9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxPcmlnaW4pLCByZXF1ZXN0KTsKK30KKwor
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z2V0VXNlck1lZGlh
UGVybWlzc2lvbkluZm8odWludDY0X3QgZnJhbWVJRCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHVz
ZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1
bWVudE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxib29sPik+JiYgaGFu
ZGxlcikKIHsKICAgICBhdXRvKiB3ZWJGcmFtZSA9IG1fcGFnZS5wcm9jZXNzKCkud2ViRnJhbWUo
ZnJhbWVJRCk7CiAgICAgaWYgKCF3ZWJGcmFtZSB8fCAhU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcobV9wYWdlLnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVVUkwoKSktPmlzU2FtZVNjaGVt
ZUhvc3RQb3J0KHRvcExldmVsRG9jdW1lbnRPcmlnaW4uZ2V0KCkpKSB7Ci0gICAgICAgIGhhbmRs
ZXIoZmFsc2UpOworICAgICAgICBoYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5nZXQoKSk7CiAgICAgYXV0byB0b3BMZXZlbE9yaWdp
biA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdl
dCgpKTsKLSAgICBhdXRvIHJlcXVlc3QgPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6
Y3JlYXRlKGZyYW1lSUQsIFdURk1vdmUoaGFuZGxlciksIFdURk1vdmUodXNlck1lZGlhRG9jdW1l
bnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pKTsKIAotICAgIG1fcGVu
ZGluZ0RldmljZVJlcXVlc3RzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QuY29weVJlZigpKTsKKyAg
ICBhdXRvIHJlcXVlc3RJRCA9IGdlbmVyYXRlUmVxdWVzdElEKCk7CisgICAgbV9wZW5kaW5nRGV2
aWNlUmVxdWVzdHMuYWRkKHJlcXVlc3RJRCk7CisKKyAgICBhdXRvIHJlcXVlc3QgPSBVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6Y3JlYXRlKGZyYW1lSUQsIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdElELCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVy
KV0oT3B0aW9uYWw8Ym9vbD4gYWxsb3dlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1Ro
aXMgfHwgIW1fcGVuZGluZ0RldmljZVJlcXVlc3RzLnJlbW92ZShyZXF1ZXN0SUQpIHx8ICFhbGxv
d2VkKSB7CisgICAgICAgICAgICBoYW5kbGVyKHsgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaGFuZGxlcigqYWxsb3dlZCk7CisgICAgfSwgV1RGTW92ZSh1c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbikpOwor
CiAgICAgLy8gRklYTUU6IFJlbW92ZSB3ZWJGcmFtZSwgdXNlck1lZGlhT3JpZ2luIGFuZCB0b3BM
ZXZlbE9yaWdpbiBmcm9tIHRoaXMgdWlDbGllbnQgQVBJIGNhbGwuCiAgICAgbV9wYWdlLnVpQ2xp
ZW50KCkuY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKG1fcGFnZSwgKndlYkZyYW1l
LCB1c2VyTWVkaWFPcmlnaW4uZ2V0KCksIHRvcExldmVsT3JpZ2luLmdldCgpLCByZXF1ZXN0Lmdl
dCgpKTsKIH0KQEAgLTQ1NywxMiArNDg4LDkgQEAgYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6d2FzR3JhbnRlZFZpZGVvT3JBdWRpb0FjY2Vzcyh1aW50NjQKIAog
ICAgIHJldHVybiBmYWxzZTsKIH0KLSNlbmRpZgogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5OjplbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSh1aW50NjRf
dCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHVz
ZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1
bWVudE9yaWdpbikKK1ZlY3RvcjxDYXB0dXJlRGV2aWNlPiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6Y29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChib29sIHJldmVhbElk
c0FuZExhYmVscywgY29uc3QgU3RyaW5nJiBkZXZpY2VJREhhc2hTYWx0KQogewotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBj
b25zdCBpbnQgZGVmYXVsdE1heGltdW1DYW1lcmFDb3VudCA9IDI7CiAjZWxzZQpAQCAtNDcwLDE5
ICs0OTgsNTYgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDYKICNlbmRpZgogICAgIHN0YXRpYyBj
b25zdCBpbnQgZGVmYXVsdE1heGltdW1NaWNyb3Bob25lQ291bnQgPSAxOwogCi0gICAgYXV0byBy
ZXF1ZXN0SUQgPSBnZW5lcmF0ZVJlcXVlc3RJRCgpOwotICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3RJRCwgdXNl
ck1lZGlhSUQsIHJlcXVlc3RPcmlnaW4gPSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5jb3B5UmVm
KCksIHRvcE9yaWdpbiA9IHRvcExldmVsRG9jdW1lbnRPcmlnaW4uY29weVJlZigpXShib29sIG9y
aWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgIGF1dG8gZGV2aWNlcyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRv
bigpLmdldE1lZGlhU3RyZWFtRGV2aWNlcygpOworICAgIGludCBjYW1lcmFDb3VudCA9IDA7Cisg
ICAgaW50IG1pY3JvcGhvbmVDb3VudCA9IDA7CisKKyAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4g
ZmlsdGVyZWREZXZpY2VzOworICAgIGZvciAoY29uc3QgYXV0byYgZGV2aWNlIDogZGV2aWNlcykg
eworICAgICAgICBpZiAoIWRldmljZS5lbmFibGVkKCkgfHwgKGRldmljZS50eXBlKCkgIT0gV2Vi
Q29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhICYmIGRldmljZS50eXBlKCkg
IT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIXJldmVhbElkc0FuZExhYmVscykgewor
ICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6Q2FtZXJhICYmICsrY2FtZXJhQ291bnQgPiBkZWZhdWx0TWF4aW11bUNhbWVy
YUNvdW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGRldmlj
ZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9u
ZSAmJiArK21pY3JvcGhvbmVDb3VudCA+IGRlZmF1bHRNYXhpbXVtTWljcm9waG9uZUNvdW50KQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBsYWJl
bCA9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgIGF1dG8gaWQgPSBlbXB0eVN0cmluZygpOworICAg
ICAgICBhdXRvIGdyb3VwSWQgPSBlbXB0eVN0cmluZygpOworICAgICAgICBpZiAocmV2ZWFsSWRz
QW5kTGFiZWxzKSB7CisgICAgICAgICAgICBsYWJlbCA9IGRldmljZS5sYWJlbCgpOworICAgICAg
ICAgICAgaWQgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5oYXNoU3Ry
aW5nV2l0aFNhbHQoZGV2aWNlLnBlcnNpc3RlbnRJZCgpLCBkZXZpY2VJREhhc2hTYWx0KTsKKyAg
ICAgICAgICAgIGdyb3VwSWQgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KS5oYXNoU3RyaW5nV2l0aFNhbHQoZGV2aWNlLmdyb3VwSWQoKSwgZGV2aWNlSURIYXNoU2FsdCk7
CisgICAgICAgIH0KKworICAgICAgICBmaWx0ZXJlZERldmljZXMuYXBwZW5kKENhcHR1cmVEZXZp
Y2UoaWQsIGRldmljZS50eXBlKCksIGxhYmVsLCBncm91cElkKSk7CisgICAgfQorCisgICAgbV9o
YXNGaWx0ZXJlZERldmljZUxpc3QgPSAhcmV2ZWFsSWRzQW5kTGFiZWxzOworICAgIHJldHVybiBm
aWx0ZXJlZERldmljZXM7Cit9CisjZW5kaWYKKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDY0X3Qg
dXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB1c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1l
bnRPcmlnaW4pCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gW3RoaXMsIHVzZXJNZWRpYUlELCBmcmFtZUlELCB1c2VyTWVkaWFEb2N1bWVu
dE9yaWdpbiA9IHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmNvcHlSZWYoKSwgdG9wTGV2ZWxEb2N1
bWVudE9yaWdpbiA9IHRvcExldmVsRG9jdW1lbnRPcmlnaW4uY29weVJlZigpXShPcHRpb25hbDxi
b29sPiBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFv
cmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGlmICghbV9wYWdlLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBt
X3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNl
SWRIYXNoU2FsdEZvck9yaWdpbihyZXF1ZXN0T3JpZ2luLmdldCgpLCB0b3BPcmlnaW4uZ2V0KCks
IFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZXF1ZXN0SUQsIHVzZXJNZWRp
YUlELCAmb3JpZ2luSGFzUGVyc2lzdGVudEFjY2Vzc10gKFN0cmluZyYmIGRldmljZUlESGFzaFNh
bHQpIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0RldmljZVJlcXVl
c3RzLnRha2UocmVxdWVzdElEKTsKLSAgICAgICAgICAgIGlmICghcGVuZGluZ1JlcXVlc3QpCisg
ICAgICAgIGF1dG8gcmVxdWVzdElEID0gZ2VuZXJhdGVSZXF1ZXN0SUQoKTsKKyAgICAgICAgbV9w
ZW5kaW5nRGV2aWNlUmVxdWVzdHMuYWRkKHJlcXVlc3RJRCk7CisKKyAgICAgICAgYXV0byYgcmVx
dWVzdE9yaWdpbiA9IHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmdldCgpOworICAgICAgICBhdXRv
JiB0b3BPcmlnaW4gPSB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpOworICAgICAgICBtX3Bh
Z2Uud2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRI
YXNoU2FsdEZvck9yaWdpbihyZXF1ZXN0T3JpZ2luLCB0b3BPcmlnaW4sIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdElELCBmcmFtZUlELCB1c2VyTWVkaWFJRCwg
dXNlck1lZGlhRG9jdW1lbnRPcmlnaW4gPSBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
KSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiA9IFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdp
biksIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MgPSAqb3JpZ2luSGFzUGVyc2lzdGVudEFjY2Vz
c10gKFN0cmluZyYmIGRldmljZUlESGFzaFNhbHQpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMgfHwgIW1fcGVuZGluZ0RldmljZVJlcXVlc3RzLnJlbW92ZShyZXF1ZXN0SUQpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpKQpA
QCAtNDkwLDQzICs1NTUsMTMgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDYKIAogICAgICAgICAg
ICAgc3luY1dpdGhXZWJDb3JlUHJlZnMoKTsKIAotICAgICAgICAgICAgYXV0byBkZXZpY2VzID0g
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJlYW1EZXZp
Y2VzKCk7Ci0gICAgICAgICAgICBhdXRvJiByZXF1ZXN0ID0gKnBlbmRpbmdSZXF1ZXN0OwotICAg
ICAgICAgICAgYm9vbCByZXZlYWxJZHNBbmRMYWJlbHMgPSBvcmlnaW5IYXNQZXJzaXN0ZW50QWNj
ZXNzIHx8IHdhc0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nlc3MocmVxdWVzdC0+ZnJhbWVJRCgpLCBy
ZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QtPnRvcExl
dmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKTsKLSAgICAgICAgICAgIGludCBjYW1lcmFDb3Vu
dCA9IDA7Ci0gICAgICAgICAgICBpbnQgbWljcm9waG9uZUNvdW50ID0gMDsKLQotICAgICAgICAg
ICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGZpbHRlcmVkRGV2aWNlczsKLSAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgZGV2aWNlIDogZGV2aWNlcykgewotICAgICAgICAgICAgICAgIGlmICgh
ZGV2aWNlLmVuYWJsZWQoKSB8fCAoZGV2aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEgJiYgZGV2aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lKSkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXJldmVhbElkc0FuZExhYmVscykgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoZGV2aWNlLnR5cGUoKSA9PSBXZWJDb3JlOjpDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEgJiYgKytjYW1lcmFDb3VudCA+IGRlZmF1bHRNYXhp
bXVtQ2FtZXJhQ291bnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSAmJiArK21pY3JvcGhvbmVDb3VudCA+IGRlZmF1bHRN
YXhpbXVtTWljcm9waG9uZUNvdW50KQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYXV0byBsYWJlbCA9IGVtcHR5
U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBpZCA9IGVtcHR5U3RyaW5nKCk7Ci0gICAg
ICAgICAgICAgICAgYXV0byBncm91cElkID0gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAg
ICBpZiAocmV2ZWFsSWRzQW5kTGFiZWxzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxhYmVsID0g
ZGV2aWNlLmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlkID0gUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KGRldmljZS5wZXJzaXN0
ZW50SWQoKSwgZGV2aWNlSURIYXNoU2FsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyb3VwSWQg
PSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5oYXNoU3RyaW5nV2l0aFNh
bHQoZGV2aWNlLmdyb3VwSWQoKSwgZGV2aWNlSURIYXNoU2FsdCk7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgZmlsdGVyZWREZXZpY2VzLmFwcGVuZChDYXB0dXJlRGV2aWNl
KGlkLCBkZXZpY2UudHlwZSgpLCBsYWJlbCwgZ3JvdXBJZCkpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBtX2hhc0ZpbHRlcmVkRGV2aWNlTGlzdCA9ICFyZXZlYWxJZHNBbmRMYWJlbHM7
Ci0KLSAgICAgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ29tcGxldGVNZWRpYURldmljZUVudW1lcmF0aW9uKHVzZXJNZWRpYUlELCBXVEZNb3ZlKGZp
bHRlcmVkRGV2aWNlcyksIFdURk1vdmUoZGV2aWNlSURIYXNoU2FsdCksIG9yaWdpbkhhc1BlcnNp
c3RlbnRBY2Nlc3MpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICAgICAgYm9vbCByZXZlYWxJ
ZHNBbmRMYWJlbHMgPSBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIHx8IHdhc0dyYW50ZWRWaWRl
b09yQXVkaW9BY2Nlc3MoZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uZ2V0KCksIHRv
cExldmVsRG9jdW1lbnRPcmlnaW4uZ2V0KCkpOworCisgICAgICAgICAgICBtX3BhZ2UucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJh
dGlvbiB7IHVzZXJNZWRpYUlELCBjb21wdXRlRmlsdGVyZWREZXZpY2VMaXN0KHJldmVhbElkc0Fu
ZExhYmVscywgZGV2aWNlSURIYXNoU2FsdCksIGRldmljZUlESGFzaFNhbHQsIG9yaWdpbkhhc1Bl
cnNpc3RlbnRBY2Nlc3MgfSwgbV9wYWdlLnBhZ2VJRCgpKTsKICAgICAgICAgfSk7CiAgICAgfTsK
IAotICAgIGdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKHJlcXVlc3RJRCwgZnJhbWVJRCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4p
LCBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pKTsKKyAgICBnZXRVc2VyTWVkaWFQZXJt
aXNzaW9uSW5mbyhmcmFtZUlELCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RG
TW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odXNlck1lZGlhSUQpOwogICAgIFVOVVNFRF9QQVJB
TShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IGVhY2NlNmY5
MmI2NWZmY2MyOWJlNGQxMzc4OGRhODFkOTE1OTA1NTguLmExMTVjNDM4Njc1MzdlYzhkNTNkZjVk
ZmJlNTJlMmVjZDY5MTVlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAt
MjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHku
aCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1
ZGUgPHd0Zi9TZWNvbmRzLmg+CkBAIC00OCw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
aW52YWxpZGF0ZVBlbmRpbmdSZXF1ZXN0cygpOwogCi0gICAgdm9pZCByZXF1ZXN0VXNlck1lZGlh
UGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlE
LCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgIHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
LCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwg
Y29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0Jik7CisgICAgdm9pZCByZXF1ZXN0VXNl
ck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBm
cmFtZUlELCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgIHVzZXJNZWRpYURvY3VtZW50
T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9y
aWdpbiwgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYpOwogCiAgICAgdm9pZCByZXNldEFj
Y2Vzcyh1aW50NjRfdCBtYWluRnJhbWVJRCk7CiAgICAgdm9pZCB2aWV3SXNCZWNvbWluZ1Zpc2li
bGUoKTsKQEAgLTcxLDI3ICs3MiwzMyBAQCBwcml2YXRlOgogICAgIFJlZjxVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5PiBjcmVhdGVQZXJtaXNzaW9uUmVxdWVzdCh1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgdWludDY0X3QgbWFpbkZyYW1lSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJD
b3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1
cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJik7
CiAgICAgdm9pZCBkZW55UmVxdWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uLCBjb25zdCBT
dHJpbmcmIGludmFsaWRDb25zdHJhaW50KTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAg
IGJvb2wgZ3JhbnRBY2Nlc3ModWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2UgYXVkaW9EZXZpY2UsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2Ugdmlk
ZW9EZXZpY2UsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KTsKKyAgICBi
b29sIGdyYW50QWNjZXNzKGNvbnN0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKTsK
IAogICAgIGNvbnN0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHNlYXJjaEZvckdy
YW50ZWRSZXF1ZXN0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIGJvb2wgbmVlZHNBdWRpbywgYm9vbCBuZWVkc1Zp
ZGVvKSBjb25zdDsKICAgICBib29sIHdhc1JlcXVlc3REZW5pZWQodWludDY0X3QgbWFpbkZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdp
biwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4s
IGJvb2wgbmVlZHNBdWRpbywgYm9vbCBuZWVkc1ZpZGVvLCBib29sIG5lZWRzU2NyZWVuQ2FwdHVy
ZSk7CiAKLSAgICB2b2lkIGdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKHVpbnQ2NF90IHJlcXVl
c3RJRCwgdWludDY0X3QgZnJhbWVJRCwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OkNv
bXBsZXRpb25IYW5kbGVyJiYsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVk
aWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4pOworICAgIHZvaWQgZ2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8odWlu
dDY0X3QgZnJhbWVJRCwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURv
Y3VtZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1
bWVudE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxib29sPik+JiYpOwog
CiAgICAgZW51bSBjbGFzcyBSZXF1ZXN0QWN0aW9uIHsKICAgICAgICAgRGVueSwKICAgICAgICAg
R3JhbnQsCiAgICAgICAgIFByb21wdAogICAgIH07Ci0gICAgUmVxdWVzdEFjdGlvbiBnZXRSZXF1
ZXN0QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9j
dW1lbnRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYsIFZlY3RvcjxX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2Fw
dHVyZURldmljZT4mIHZpZGVvRGV2aWNlcyk7CisgICAgUmVxdWVzdEFjdGlvbiBnZXRSZXF1ZXN0
QWN0aW9uKGNvbnN0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKTsKIAogICAgIGJv
b2wgd2FzR3JhbnRlZFZpZGVvT3JBdWRpb0FjY2Vzcyh1aW50NjRfdCwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbik7CisKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6Q2FwdHVyZURldmljZT4gY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChib29sIHJldmVh
bElkc0FuZExhYmVscywgY29uc3QgU3RyaW5nJiBkZXZpY2VJREhhc2hTYWx0KTsKKworICAgIHZv
aWQgcHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFJlZjxVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5PiYmLCBib29sIGhhc1BlcnNpc3RlbnRBY2Nlc3MpOworICAgIHZvaWQg
cHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25JbnZhbGlkUmVxdWVzdChjb25zdCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5JiwgY29uc3QgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCk7
CisgICAgdm9pZCBwcm9jZXNzVXNlck1lZGlhUGVybWlzc2lvblZhbGlkUmVxdWVzdChSZWY8VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4mJiwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVE
ZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiB2
aWRlb0RldmljZXMsIFN0cmluZyYmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk7CiAjZW5kaWYK
IAogICAgIHZvaWQgd2F0Y2hkb2dUaW1lckZpcmVkKCk7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4+IG1fcGVuZGluZ1VzZXJN
ZWRpYVJlcXVlc3RzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eT4+IG1fcGVuZGluZ0RldmljZVJlcXVlc3RzOworICAgIEhhc2hTZXQ8dWlu
dDY0X3Q+IG1fcGVuZGluZ0RldmljZVJlcXVlc3RzOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3Bh
Z2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHkuaAppbmRleCBhYzgwNWU3ODhiZTIzMTdlMGE3YWFlYjcxODkw
OWNmNDViY2E4OTA4Li4wNjdmODAyMDNmMWE1ZmRkMzIzOGM4YWUyOWQ3ZGNhY2ExYWVhMTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eS5oCkBAIC00OCwyMSArNDgsNDIgQEAgcHVibGljOgogICAgIHZvaWQg
ZGVueShVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24gPSBVc2VyTWVkaWFBY2Nlc3NEZW5pYWxS
ZWFzb246OlVzZXJNZWRpYURpc2FibGVkKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAg
IGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9tYW5hZ2VyOyB9CiAKICAgICBib29s
IHJlcXVpcmVzQXVkaW9DYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lbGlnaWJsZUF1ZGlvRGV2
aWNlcy5zaXplKCk7IH0KICAgICBib29sIHJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gIXJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSAmJiBtX2VsaWdpYmxlVmlkZW9EZXZpY2Vz
LnNpemUoKTsgfQogICAgIGJvb2wgcmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVxdWVzdC50eXBlID09IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6
RGlzcGxheU1lZGlhICYmIG1fZWxpZ2libGVWaWRlb0RldmljZXMuc2l6ZSgpOyB9CiAKKyAgICB2
b2lkIHNldEVsaWdpYmxlVmlkZW9EZXZpY2VVSURzKFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2
aWNlPiYmIGRldmljZXMpIHsgbV9lbGlnaWJsZVZpZGVvRGV2aWNlcyA9IFdURk1vdmUoZGV2aWNl
cyk7IH0KKyAgICB2b2lkIHNldEVsaWdpYmxlQXVkaW9EZXZpY2VVSURzKFZlY3RvcjxXZWJDb3Jl
OjpDYXB0dXJlRGV2aWNlPiYmIGRldmljZXMpIHsgbV9lbGlnaWJsZUF1ZGlvRGV2aWNlcyA9IFdU
Rk1vdmUoZGV2aWNlcyk7IH0KKwogICAgIFZlY3RvcjxTdHJpbmc+IHZpZGVvRGV2aWNlVUlEcygp
IGNvbnN0OwogICAgIFZlY3RvcjxTdHJpbmc+IGF1ZGlvRGV2aWNlVUlEcygpIGNvbnN0OworICAg
IGJvb2wgaGFzQXVkaW9EZXZpY2UoKSBjb25zdCB7IHJldHVybiAhbV9lbGlnaWJsZUF1ZGlvRGV2
aWNlcy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc1ZpZGVvRGV2aWNlKCkgY29uc3QgeyByZXR1
cm4gIW1fZWxpZ2libGVWaWRlb0RldmljZXMuaXNFbXB0eSgpOyB9CisKKyAgICBib29sIGhhc1Bl
cnNpc3RlbnRBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1BlcnNpc3RlbnRBY2Nlc3M7IH0K
KyAgICB2b2lkIHNldEhhc1BlcnNpc3RlbnRBY2Nlc3MoKSB7IG1faGFzUGVyc2lzdGVudEFjY2Vz
cyA9IHRydWU7IH0KIAorICAgIHVpbnQ2NF90IHVzZXJNZWRpYUlEKCkgY29uc3QgeyByZXR1cm4g
bV91c2VyTWVkaWFJRDsgfQogICAgIHVpbnQ2NF90IG1haW5GcmFtZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9tYWluRnJhbWVJRDsgfQogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lSUQ7IH0KKwogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbERv
Y3VtZW50U2VjdXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3RvcExldmVsRG9jdW1lbnRTZWN1cml0
eU9yaWdpbi5nZXQoKTsgfQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFE
b2N1bWVudFNlY3VyaXR5T3JpZ2luKCkgeyByZXR1cm4gbV91c2VyTWVkaWFEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luLmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRv
cExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGV2ZWxE
b2N1bWVudFNlY3VyaXR5T3JpZ2luLmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX3VzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0KKworICAgIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYgdXNlclJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3Q7IH0KIAogICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZSBy
ZXF1ZXN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdC50eXBlOyB9CiAKKyAgICB2b2lk
IHNldERldmljZUlkZW50aWZpZXJIYXNoU2FsdChTdHJpbmcmJiBzYWx0KSB7IG1fZGV2aWNlSWRl
bnRpZmllckhhc2hTYWx0ID0gV1RGTW92ZShzYWx0KTsgfQorICAgIGNvbnN0IFN0cmluZyYgZGV2
aWNlSWRlbnRpZmllckhhc2hTYWx0KCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZGVudGlmaWVy
SGFzaFNhbHQ7IH0KKworICAgIFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgYXVkaW9EZXZpY2UoKSBj
b25zdCB7IHJldHVybiBtX2VsaWdpYmxlQXVkaW9EZXZpY2VzLmlzRW1wdHkoKSA/IFdlYkNvcmU6
OkNhcHR1cmVEZXZpY2UgeyB9IDogbV9lbGlnaWJsZUF1ZGlvRGV2aWNlc1swXTsgfQorICAgIFdl
YkNvcmU6OkNhcHR1cmVEZXZpY2UgdmlkZW9EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2VsaWdp
YmxlVmlkZW9EZXZpY2VzLmlzRW1wdHkoKSA/IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgeyB9IDog
bV9lbGlnaWJsZVZpZGVvRGV2aWNlc1swXTsgfQorCiBwcml2YXRlOgogICAgIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkmLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgbWFpbkZyYW1lSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVu
dE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRP
cmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVj
dG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRp
YVN0cmVhbVJlcXVlc3QmJik7CiAKQEAgLTc1LDYgKzk2LDggQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gbV9lbGlnaWJsZVZpZGVvRGV2aWNlczsKICAgICBW
ZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gbV9lbGlnaWJsZUF1ZGlvRGV2aWNlczsKICAg
ICBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QgbV9yZXF1ZXN0OworICAgIGJvb2wgbV9oYXNQ
ZXJzaXN0ZW50QWNjZXNzIHsgZmFsc2UgfTsKKyAgICBTdHJpbmcgbV9kZXZpY2VJZGVudGlmaWVy
SGFzaFNhbHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGYzOTlmMGVmMDFlZTRlOGU2MDFlY2ZkYTJlMWU1
MzIxYzJjMjI2ZDAuLjcwYTA5NzBlOGY5ODdiODE2ODc0NGUyYWM2NGUzNWFjMTcxNTI3OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzAxNSwxMiArNzAx
NSwxMiBAQCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgV2ViUGFnZVBy
b3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJN
ZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmICB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNl
ck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmICB1c2VyTWVkaWFEb2N1
bWVudE9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2
ZWxEb2N1bWVudE9yaWdpbkRhdGEsIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYmIHJlcXVl
c3QpCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJv
Y2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKSk7CiAKLSAgICB1c2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5yZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1l
KHVzZXJNZWRpYUlELCBmcmFtZUlELCB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbkRhdGEuc2VjdXJp
dHlPcmlnaW4oKSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSwg
cmVxdWVzdCk7CisgICAgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkucmVxdWVz
dFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1c2VyTWVkaWFJRCwgZnJhbWVJRCwgdXNlck1l
ZGlhRG9jdW1lbnRPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCksIHRvcExldmVsRG9jdW1lbnRP
cmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVxdWVzdCkpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0odXNlck1lZGlhSUQpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2JlOTE5NDM4OTBiNzVk
MGUyOGNhMzcwMWY1YjQ2N2VjMDg3NDdhMi4uN2QyYjM1YjYyODllYzc1MGY5YjgyYzI3NWQ1OTE2
YjZlMGViZmE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1
OTcsNyArMTU5Nyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgdXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKCk7CiAjZW5kaWYKLSAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsRG9j
dW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3Qm
KTsKKyAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3Qg
dXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBX
ZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJik7CiAgICAgdm9pZCBlbnVtZXJhdGVNZWRpYURl
dmljZXNGb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbkRh
dGEsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxEb2N1bWVudE9y
aWdpbkRhdGEpOwogICAgIHZvaWQgYmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKTsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDkyZGY5NWFkNTM1MjQ1MGYxZmFiYTM5ODg4NDA3MzQ5NzcyNzM5ZGIuLjU5ODM2OWE0
NDMwM2Q0MjQ0YjYwYWY5MTUxMjkzMTgyMDc3NTcwY2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxOS0wMi0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
RmlsdGVyIG91dCBPdmVyY29uc3RyYWluZWRlcnJvci5jb25zdHJhaW50IHdoZW4gZ2V0VXNlck1l
ZGlhIGlzIG5vdCBncmFudGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTQyNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vb3ZlcmNvbnN0cmFpbmVkZXJyb3ItY29uc3Ry
YWludC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vb3Zl
cmNvbnN0cmFpbmVkZXJyb3ItY29uc3RyYWludC5odG1sOiBBZGRlZC4KKwogMjAxOS0wMi0wNyAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW091dC1vZi1m
bG93XSBVc2UgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBwYWRkaW5nIHdpZHRoIHdoZW4gY29tcHV0
aW5nIG1pbi9tYXggd2lkdGguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL292ZXJjb25zdHJhaW5lZGVycm9yLWNvbnN0cmFpbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9vdmVyY29uc3RyYWluZWRlcnJvci1jb25zdHJhaW50LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDJiNWJhNzQ2Y2JhNjk0ZmQwODQyM2M1NjAxMDY3ZTQ4
MDQxZmRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9v
dmVyY29uc3RyYWluZWRlcnJvci1jb25zdHJhaW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQg
QEAKKworUEFTUyBCZWZvcmUgZ3JhbnQgCitQQVNTIEFmdGVyIGdyYW50IAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL292ZXJjb25zdHJhaW5lZGVycm9yLWNvbnN0
cmFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vb3ZlcmNvbnN0cmFpbmVk
ZXJyb3ItY29uc3RyYWludC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxNzZlZmNlYmU2YWFhYTE1MGQ1YTJh
MWM3OGU5MTk0NTA0ZGRmZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL292ZXJjb25zdHJhaW5lZGVycm9yLWNvbnN0cmFpbnQuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDx0aXRsZT5PdmVyQ29uc3RyYWluZWRFcnJvci5j
b25zdHJhaW50IHRlc3Rpbmc8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5PgorCisgICAgICAgIDxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRydWUpOworaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgd2luZG93LmludGVybmFscy5zZXRNb2NrTWVkaWFDYXB0dXJlRGV2
aWNlc0VuYWJsZWQodHJ1ZSk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgICAgcmV0
dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzoge2RldmljZUlk
OiB7ZXhhY3Q6Im5vbmUifX19KS50aGVuKAorICAgICAgICAoKSA9PiBhc3NlcnRfbm90X3JlYWNo
ZWQoImd1bSBzaG91bGQgZmFpbCIpLAorICAgICAgICAoZSkgPT4geworICAgICAgICAgICAgYXNz
ZXJ0X3RydWUoZSBpbnN0YW5jZW9mIE92ZXJjb25zdHJhaW5lZEVycm9yKTsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoZS5jb25zdHJhaW50LCAiIiwgImNvbnN0cmFpbnQgc2hvdWxkIGJlIHRo
ZSBlbXB0eSBzdHJpbmciKTsKKyAgICAgICAgfQorICAgICk7Cit9LCAiQmVmb3JlIGdyYW50Iik7
CisKK3Byb21pc2VfdGVzdChhc3luYyh0ZXN0KSA9PiB7CisgICAgYXdhaXQgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisgICAgcmV0dXJuIG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzoge2RldmljZUlkOiB7ZXhhY3Q6
Im5vbmUifX19KS50aGVuKAorICAgICAgICAoKSA9PiBhc3NlcnRfbm90X3JlYWNoZWQoImd1bSBz
aG91bGQgZmFpbCIpLAorICAgICAgICAoZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X3RydWUo
ZSBpbnN0YW5jZW9mIE92ZXJjb25zdHJhaW5lZEVycm9yKTsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoZS5jb25zdHJhaW50LCAiZGV2aWNlSWQiLCAiY29uc3RyYWludCBzaG91bGQgYmUgZGV2
aWNlSWQiKTsKKyAgICAgICAgfQorICAgICk7Cit9LCAiQWZ0ZXIgZ3JhbnQiKTsKKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361457</attachid>
            <date>2019-02-07 15:09:54 -0800</date>
            <delta_ts>2019-02-11 09:53:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-194240-20190207150953.patch</filename>
            <type>text/plain</type>
            <size>50137</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVlNzJhOTdhMjQ3ZjgyYWM1
MDQzNWUxM2RhZTA5MjE2NWVmYTA3OTMuLjYzN2RlNzljOWFhZjRlMWZkY2JjMTE5OTZmYTIzMjQ3
ZTNhZjg2MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTktMDItMDcgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbHRlciBvdXQgT3ZlcmNvbnN0
cmFpbmVkZXJyb3IuY29uc3RyYWludCB3aGVuIGdldFVzZXJNZWRpYSBpcyBub3QgZ3JhbnRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MjQwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIE1ha2Ugc3VyZSBp
biBVSVByb2Nlc3MgdG8gZmlsdGVyIG91dCBjb25zdHJhaW50IGlmIGVpdGhlciB0aGUgcGFnZSB3
YXMgbm90IGdyYW50ZWQgZ3VtIGFjY2VzcyBvciBpdCBoYXMgbm8gcGVyc2lzdGVudCBhY2Nlc3Mu
CisKKyAgICAgICAgUmVmYWN0b3IgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkgdG8gbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gZWFzaWVyIHRvIHVuZGVyc3RhbmQuCisKKyAg
ICAgICAgQ292ZXJlZCBieSBhZGRlZCB0ZXN0LgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUHJveHk6OnNldFVzZXJNZWRpYUFjY2Vzc0luZm8pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpj
YXB0dXJlRGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6dXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpncmFu
dEFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpnZXRSZXF1ZXN0QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnByb2Nlc3NV
c2VyTWVkaWFQZXJtaXNzaW9uSW52YWxpZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJNZWRpYVBlcm1p
c3Npb25WYWxpZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6Z2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8pOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6d2FzR3Jh
bnRlZFZpZGVvT3JBdWRpb0FjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpjb21wdXRlRmlsdGVyZWREZXZpY2VMaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVu
dW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVBlcm1pc3Npb25SZXF1ZXN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpzZXRFbGlnaWJsZVZpZGVvRGV2aWNlVUlEcyk6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnNldEVsaWdpYmxlQXVk
aW9EZXZpY2VVSURzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eTo6aGFzQXVkaW9EZXZpY2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpoYXNWaWRlb0RldmljZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6Omhhc1BlcnNpc3RlbnRB
Y2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjpzZXRIYXNQZXJzaXN0ZW50QWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6dXNlck1lZGlhSUQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp0b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5Ojp1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6dXNlclJl
cXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjpzZXREZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpOgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OjphdWRpb0RldmljZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OnZpZGVvRGV2aWNlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisKIDIwMTktMDItMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2UgdG8gY2xlYXIgc291cmNlcyBmcm9tIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkgYW5kIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIHdoZW4gbm8gbG9uZ2VyIG5l
ZWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHkuY3BwCmluZGV4IDk2NTEzZWIwMTFiMDAwZGUwMzcxYmY3ZDIyMjUw
ODIxNGYyZGE3ZGYuLjMwNGZhMjFjMjRhNjY2OGIzMTVlMDNiOTRiMWRkYmY5ZDllZjcyZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eS5jcHAKQEAgLTQxLDE5ICs0MSwyNCBAQCBVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkodWludDY0X3QgZnJhbWVJ
RCwgQwogewogfQogCitVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6flVzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5KCkKK3sKKyAgICBpbnZhbGlkYXRlKCk7Cit9CisKIHZvaWQgVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OnNldFVzZXJNZWRpYUFjY2Vzc0luZm8oYm9vbCBh
bGxvd2VkKQogewogICAgIEFTU0VSVChtX2NvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBpZiAoIW1f
Y29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29tcGxldGlvbkhh
bmRsZXIoYWxsb3dlZCk7Ci0gICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7CisgICAg
Y29tcGxldGUoYWxsb3dlZCk7CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHk6OmludmFsaWRhdGUoKQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6Y29t
cGxldGUoT3B0aW9uYWw8Ym9vbD4gYWxsb3dlZCkKIHsKLSAgICBtX2NvbXBsZXRpb25IYW5kbGVy
ID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhh
bmRsZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93ZWQpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oCmluZGV4IDZhMDg5NTA2Y2VhMzg4ZDFkNGMzZDZkZWZk
YTVmZTBlMGFlZTU3YzQuLjllMDBiYjkzNzRiYjU2ZDkyMDY0NDQwYTZhYzc0YTZhN2NmZWFiMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+Ci0jaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjaz4gewogcHVibGljOgogCi0gICAgdXNpbmcgQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBhbGxvd2VkKT47CisgICAgdXNpbmcgQ29t
cGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8Ym9v
bD4gYWxsb3dlZCk+OwogCiAgICAgc3RhdGljIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eT4gY3JlYXRlKHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxl
ciwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
LCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbikK
ICAgICB7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVueSgpIHsgc2V0
VXNlck1lZGlhQWNjZXNzSW5mbyhmYWxzZSk7IH0KICAgICB2b2lkIHNldFVzZXJNZWRpYUFjY2Vz
c0luZm8oYm9vbCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgdm9pZCBpbnZhbGlkYXRl
KCkgeyBjb21wbGV0ZSh7IH0pOyB9CiAKICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFtZUlEOyB9CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRp
YURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3VzZXJNZWRpYURvY3VtZW50U2Vj
dXJpdHlPcmlnaW4uZ2V0KCk7IH0KQEAgLTU2LDcgKzU2LDEwIEBAIHB1YmxpYzoKICAgICAKIHBy
aXZhdGU6CiAgICAgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkodWludDY0X3QgZnJhbWVJ
RCwgQ29tcGxldGlvbkhhbmRsZXImJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVz
ZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbik7CisgICAgflVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
KCk7CiAKKyAgICB2b2lkIGNvbXBsZXRlKE9wdGlvbmFsPGJvb2w+IGFsbG93ZWQpOworICAgIAog
ICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKICAgICBDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRp
b25IYW5kbGVyOwogICAgIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV91c2VyTWVkaWFE
b2N1bWVudFNlY3VyaXR5T3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CmluZGV4IDlmYTNhNTBkOTYwYTQyNTAwYWU0ZWM1YmY0N2Y1YWM5OTA0N2NlODQuLjdiOGM2MTQx
ZWRjOTNmZGI1NWQyYzhiNmNlYzdhZThlMmRkNTI3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHAKQEAgLTc1LDggKzc1LDYgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVBlbmRpbmdSZXF1ZXN0cygpCiAgICAgICAg
IHJlcXVlc3QtPmludmFsaWRhdGUoKTsKICAgICBtX3BlbmRpbmdVc2VyTWVkaWFSZXF1ZXN0cy5j
bGVhcigpOwogCi0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9wZW5kaW5nRGV2aWNlUmVxdWVz
dHMudmFsdWVzKCkpCi0gICAgICAgIHJlcXVlc3QtPmludmFsaWRhdGUoKTsKICAgICBtX3BlbmRp
bmdEZXZpY2VSZXF1ZXN0cy5jbGVhcigpOwogfQogCkBAIC05MiwyMyArOTAsMTggQEAgdm9pZCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y2FwdHVyZURldmljZXNDaGFu
Z2VkKCkKICAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkgfHwgIW1fcGFnZS5tYWluRnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZXF1ZXN0SUQgPSBnZW5lcmF0ZVJlcXVlc3RJ
RCgpOwotICAgIGF1dG8gaGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgcmVxdWVzdElEXShib29sIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpIG11dGFibGUg
ewotICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgIGF1dG8gaGFuZGxlciA9IFt0aGlzXShPcHRp
b25hbDxib29sPiBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCFvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIHx8ICFtX3BhZ2UuaXNWYWxpZCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRp
bmdEZXZpY2VSZXF1ZXN0cy50YWtlKHJlcXVlc3RJRCk7Ci0gICAgICAgIGlmICghcGVuZGluZ1Jl
cXVlc3QgfHwgIW1fcGFnZS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgaWYgKG1fZ3JhbnRlZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiAhb3JpZ2luSGFzUGVyc2lzdGVu
dEFjY2VzcykKKyAgICAgICAgaWYgKG1fZ3JhbnRlZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiAhKm9y
aWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
bV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXB0dXJlRGV2aWNlc0No
YW5nZWQoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKICAgICB9OwogCiAgICAgYXV0byBvcmlnaW4gPSBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fcGFnZS5tYWluRnJhbWUoKS0+dXJsKCkp
OwotICAgIGdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKHJlcXVlc3RJRCwgbV9wYWdlLm1haW5G
cmFtZSgpLT5mcmFtZUlEKCksIFdURk1vdmUoaGFuZGxlciksIG9yaWdpbi5nZXQoKSwgV1RGTW92
ZShvcmlnaW4pKTsKKyAgICBnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyhtX3BhZ2UubWFpbkZy
YW1lKCktPmZyYW1lSUQoKSwgb3JpZ2luLmdldCgpLCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUo
aGFuZGxlcikpOwogI2VuZGlmCiB9CiAKQEAgLTExNywxMyArMTEwLDYgQEAgdm9pZCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y2xlYXJDYWNoZWRTdGF0ZSgpCiAgICAg
aW52YWxpZGF0ZVBlbmRpbmdSZXF1ZXN0cygpOwogfQogCi1SZWY8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eT4gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNy
ZWF0ZVBlcm1pc3Npb25SZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBtYWlu
RnJhbWVJRCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRp
YURvY3VtZW50T3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9y
aWdpbiwgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8Q2FwdHVy
ZURldmljZT4mJiB2aWRlb0RldmljZXMsIE1lZGlhU3RyZWFtUmVxdWVzdCYmIHJlcXVlc3QpCi17
Ci0gICAgYXV0byBwZXJtaXNzaW9uUmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIG1haW5GcmFtZUlELCBmcmFtZUlELCBX
VEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50
T3JpZ2luKSwgV1RGTW92ZShhdWRpb0RldmljZXMpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlcyksIFdU
Rk1vdmUocmVxdWVzdCkpOwotICAgIG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzLmFkZCh1c2Vy
TWVkaWFJRCwgcGVybWlzc2lvblJlcXVlc3QucHRyKCkpOwotICAgIHJldHVybiBwZXJtaXNzaW9u
UmVxdWVzdDsKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBzdGF0aWMgdWludDY0X3Qg
dG9XZWJDb3JlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vz
c0RlbmlhbFJlYXNvbiByZWFzb24pCiB7CkBAIC0xODgsMTUgKzE3NCwxOCBAQCB2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp1c2VyTWVkaWFBY2Nlc3NXYXNHcmFu
dGVkKHVpbnQ2NF90CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNl
SWRIYXNoU2FsdEZvck9yaWdpbihyZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCksIHJlcXVlc3QtPnRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHVzZXJNZWRpYUlELCBhdWRpb0RldmljZSA9
IFdURk1vdmUoYXVkaW9EZXZpY2UpLCB2aWRlb0RldmljZSA9IFdURk1vdmUodmlkZW9EZXZpY2Up
LCBsb2NhbFJlcXVlc3QgPSByZXF1ZXN0LmNvcHlSZWYoKV0gKFN0cmluZyYmIGRldmljZUlESGFz
aFNhbHQpIG11dGFibGUgeworICAgIGF1dG8mIHVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmln
aW4gPSByZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0
byYgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC0+dG9wTGV2ZWxEb2N1
bWVudFNlY3VyaXR5T3JpZ2luKCk7CisgICAgbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5kZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRGb3JPcmlnaW4odXNlck1lZGlh
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3QgPSByZXF1ZXN0LnJl
bGVhc2VOb25OdWxsKCldIChTdHJpbmcmJiBkZXZpY2VJREhhc2hTYWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGdy
YW50QWNjZXNzKHVzZXJNZWRpYUlELCBXVEZNb3ZlKGF1ZGlvRGV2aWNlKSwgV1RGTW92ZSh2aWRl
b0RldmljZSksIFdURk1vdmUoZGV2aWNlSURIYXNoU2FsdCkpKSB7Ci0gICAgICAgICAgICBtX2dy
YW50ZWRSZXF1ZXN0cy5hcHBlbmQobG9jYWxSZXF1ZXN0LnJlbGVhc2VOb25OdWxsKCkpOwotICAg
ICAgICAgICAgaWYgKG1faGFzRmlsdGVyZWREZXZpY2VMaXN0KQotICAgICAgICAgICAgICAgIGNh
cHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwotICAgICAgICAgICAgbV9oYXNGaWx0ZXJlZERldmljZUxp
c3QgPSBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWdyYW50QWNjZXNzKHJlcXVlc3Qp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmFwcGVu
ZChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgaWYgKG1faGFzRmlsdGVyZWREZXZpY2VMaXN0
KQorICAgICAgICAgICAgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CisgICAgICAgIG1faGFzRmls
dGVyZWREZXZpY2VMaXN0ID0gZmFsc2U7CiAgICAgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TSh1c2VyTWVkaWFJRCk7CkBAIC0yNjYsMTQgKzI1NSwxNCBAQCBib29sIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp3YXNSZXF1ZXN0RGVuaWVkKHVpbnQ2NF90IG1haW5G
cmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6Z3JhbnRBY2Nlc3ModWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0
IENhcHR1cmVEZXZpY2UgYXVkaW9EZXZpY2UsIGNvbnN0IENhcHR1cmVEZXZpY2UgdmlkZW9EZXZp
Y2UsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KQorYm9vbCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z3JhbnRBY2Nlc3MoY29uc3QgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCkKIHsKLSAgICBpZiAoIVVzZXJNZWRp
YVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS53aWxsQ3JlYXRlTWVkaWFTdHJlYW0oKnRoaXMs
ICEhYXVkaW9EZXZpY2UsICEhdmlkZW9EZXZpY2UpKSB7Ci0gICAgICAgIGRlbnlSZXF1ZXN0KHVz
ZXJNZWRpYUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nl
c3NEZW5pYWxSZWFzb246Ok90aGVyRmFpbHVyZSwgIlVuYWJsZSB0byBleHRlbmQgc2FuZGJveC4i
KTsKKyAgICBpZiAoIVVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS53aWxsQ3Jl
YXRlTWVkaWFTdHJlYW0oKnRoaXMsIHJlcXVlc3QuaGFzQXVkaW9EZXZpY2UoKSwgcmVxdWVzdC5o
YXNWaWRlb0RldmljZSgpKSkgeworICAgICAgICBkZW55UmVxdWVzdChyZXF1ZXN0LnVzZXJNZWRp
YUlEKCksIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0Rl
bmlhbFJlYXNvbjo6T3RoZXJGYWlsdXJlLCAiVW5hYmxlIHRvIGV4dGVuZCBzYW5kYm94LiIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKHVzZXJNZWRpYUlE
LCBhdWRpb0RldmljZSwgdmlkZW9EZXZpY2UsIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKHJlcXVlc3QudXNlck1lZGlhSUQoKSwgcmVx
dWVzdC5hdWRpb0RldmljZSgpLCByZXF1ZXN0LnZpZGVvRGV2aWNlKCksIHJlcXVlc3QuZGV2aWNl
SWRlbnRpZmllckhhc2hTYWx0KCkpLCBtX3BhZ2UucGFnZUlEKCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogI2VuZGlmCkBAIC0yOTYsMjUgKzI4NSwyNiBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpzY2hlZHVsZU5leHRSZWplY3Rpb24oKQogfQogCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5OjpSZXF1ZXN0QWN0aW9uIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpnZXRSZXF1ZXN0QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luJiB1c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbiwgU2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmln
aW4sIGNvbnN0IE1lZGlhU3RyZWFtUmVxdWVzdCYgdXNlclJlcXVlc3QsIFZlY3RvcjxDYXB0dXJl
RGV2aWNlPiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNl
cykKK1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpSZXF1ZXN0QWN0aW9u
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpnZXRSZXF1ZXN0QWN0aW9u
KGNvbnN0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QpCiB7Ci0gICAg
Ym9vbCByZXF1ZXN0aW5nU2NyZWVuQ2FwdHVyZSA9IHVzZXJSZXF1ZXN0LnR5cGUgPT0gTWVkaWFT
dHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWE7Ci0gICAgQVNTRVJUKCEocmVxdWVzdGlu
Z1NjcmVlbkNhcHR1cmUgJiYgdmlkZW9EZXZpY2VzLmlzRW1wdHkoKSkpOwotICAgIEFTU0VSVCgh
KHJlcXVlc3RpbmdTY3JlZW5DYXB0dXJlICYmICFhdWRpb0RldmljZXMuaXNFbXB0eSgpKSk7Ci0g
ICAgYm9vbCByZXF1ZXN0aW5nQ2FtZXJhID0gIXJlcXVlc3RpbmdTY3JlZW5DYXB0dXJlICYmICF2
aWRlb0RldmljZXMuaXNFbXB0eSgpOwotICAgIGJvb2wgcmVxdWVzdGluZ01pY3JvcGhvbmUgPSAh
YXVkaW9EZXZpY2VzLmlzRW1wdHkoKTsKKyAgICBib29sIHJlcXVlc3RpbmdTY3JlZW5DYXB0dXJl
ID0gcmVxdWVzdC5yZXF1ZXN0VHlwZSgpID09IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlz
cGxheU1lZGlhOworICAgIGJvb2wgcmVxdWVzdGluZ0NhbWVyYSA9ICFyZXF1ZXN0aW5nU2NyZWVu
Q2FwdHVyZSAmJiByZXF1ZXN0Lmhhc1ZpZGVvRGV2aWNlKCk7CisgICAgYm9vbCByZXF1ZXN0aW5n
TWljcm9waG9uZSA9IHJlcXVlc3QuaGFzQXVkaW9EZXZpY2UoKTsKIAotICAgIGlmICh3YXNSZXF1
ZXN0RGVuaWVkKGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCB0b3BMZXZlbERvY3Vt
ZW50T3JpZ2luLCByZXF1ZXN0aW5nTWljcm9waG9uZSwgcmVxdWVzdGluZ0NhbWVyYSwgcmVxdWVz
dGluZ1NjcmVlbkNhcHR1cmUpKQorICAgIEFTU0VSVCghKHJlcXVlc3RpbmdTY3JlZW5DYXB0dXJl
ICYmICFyZXF1ZXN0Lmhhc1ZpZGVvRGV2aWNlKCkpKTsKKyAgICBBU1NFUlQoIShyZXF1ZXN0aW5n
U2NyZWVuQ2FwdHVyZSAmJiByZXF1ZXN0aW5nTWljcm9waG9uZSkpOworCisgICAgaWYgKHdhc1Jl
cXVlc3REZW5pZWQocmVxdWVzdC5mcmFtZUlEKCksIHJlcXVlc3QudXNlck1lZGlhRG9jdW1lbnRT
ZWN1cml0eU9yaWdpbigpLCByZXF1ZXN0LnRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigp
LCByZXF1ZXN0aW5nTWljcm9waG9uZSwgcmVxdWVzdGluZ0NhbWVyYSwgcmVxdWVzdGluZ1NjcmVl
bkNhcHR1cmUpKQogICAgICAgICByZXR1cm4gUmVxdWVzdEFjdGlvbjo6RGVueTsKIAotICAgIGlm
ICh1c2VyUmVxdWVzdC50eXBlID09IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1l
ZGlhKQorICAgIGlmIChyZXF1ZXN0LnJlcXVlc3RUeXBlKCkgPT0gTWVkaWFTdHJlYW1SZXF1ZXN0
OjpUeXBlOjpEaXNwbGF5TWVkaWEpCiAgICAgICAgIHJldHVybiBSZXF1ZXN0QWN0aW9uOjpQcm9t
cHQ7CiAKLSAgICByZXR1cm4gc2VhcmNoRm9yR3JhbnRlZFJlcXVlc3QoZnJhbWVJRCwgdXNlck1l
ZGlhRG9jdW1lbnRPcmlnaW4sIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIHJlcXVlc3RpbmdNaWNy
b3Bob25lLCByZXF1ZXN0aW5nQ2FtZXJhKSA/IFJlcXVlc3RBY3Rpb246OkdyYW50IDogUmVxdWVz
dEFjdGlvbjo6UHJvbXB0OworICAgIHJldHVybiBzZWFyY2hGb3JHcmFudGVkUmVxdWVzdChyZXF1
ZXN0LmZyYW1lSUQoKSwgcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCks
IHJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3RpbmdNaWNy
b3Bob25lLCByZXF1ZXN0aW5nQ2FtZXJhKSA/IFJlcXVlc3RBY3Rpb246OkdyYW50IDogUmVxdWVz
dEFjdGlvbjo6UHJvbXB0OwogfQogI2VuZGlmCiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWlu
dDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4sIGNvbnN0IE1lZGlhU3RyZWFtUmVxdWVzdCYgdXNlclJlcXVlc3QpCit2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0VXNlck1l
ZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFt
ZUlELCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxT
ZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBNZWRpYVN0cmVhbVJlcXVl
c3QmJiB1c2VyUmVxdWVzdCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmICgh
VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLmNhcHR1cmVFbmFibGVkKCkpIHsK
QEAgLTMyMyw5NSArMzEzLDYyIEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUoCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpJbnZhbGlkQ29u
c3RyYWludHNIYW5kbGVyIGludmFsaWRIYW5kbGVyID0gW3RoaXMsIHVzZXJNZWRpYUlEXShjb25z
dCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KSB7Ci0gICAgICAgIGlmICghbV9wYWdlLmlzVmFs
aWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCisg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBkZW55UmVxdWVzdCh1c2VyTWVkaWFJRCwgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpJ
bnZhbGlkQ29uc3RyYWludCwgaW52YWxpZENvbnN0cmFpbnQpOwotICAgIH07CisgICAgYXV0byB1
c2VyTWVkaWFPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXNlck1lZGlhRG9j
dW1lbnRPcmlnaW4uZ2V0KCkpOworICAgIGF1dG8gdG9wTGV2ZWxPcmlnaW4gPSBBUEk6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbi5nZXQoKSk7CiAKLSAgICBh
dXRvIHZhbGlkSGFuZGxlciA9IFt0aGlzLCB1c2VyTWVkaWFJRCwgZnJhbWVJRCwgdXNlck1lZGlh
RG9jdW1lbnRPcmlnaW4gPSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCksIHRvcExl
dmVsRG9jdW1lbnRPcmlnaW4gPSB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmNvcHlSZWYoKSwgbG9j
YWxVc2VyUmVxdWVzdCA9IHVzZXJSZXF1ZXN0XShWZWN0b3I8Q2FwdHVyZURldmljZT4mJiBhdWRp
b0RldmljZXMsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgU3RyaW5nJiYg
ZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3BhZ2Uu
aXNWYWxpZCgpIHx8ICFtX3BhZ2UubWFpbkZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgYXV0byByZXF1ZXN0ID0gbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHMuYWRkKHVzZXJNZWRp
YUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUoKnRoaXMsIHVzZXJN
ZWRpYUlELCBtX3BhZ2UubWFpbkZyYW1lKCktPmZyYW1lSUQoKSwgZnJhbWVJRCwgV1RGTW92ZSh1
c2VyTWVkaWFEb2N1bWVudE9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbiks
IHsgfSwgeyB9LCBXVEZNb3ZlKHVzZXJSZXF1ZXN0KSkpLml0ZXJhdG9yLT52YWx1ZS5jb3B5UmVm
KCk7CiAKLSAgICAgICAgaWYgKHZpZGVvRGV2aWNlcy5pc0VtcHR5KCkgJiYgYXVkaW9EZXZpY2Vz
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZGVueVJlcXVlc3QodXNlck1lZGlhSUQsIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6
Tm9Db25zdHJhaW50cywgZW1wdHlTdHJpbmcoKSk7CisgICAgZ2V0VXNlck1lZGlhUGVybWlzc2lv
bkluZm8oZnJhbWVJRCwgcmVxdWVzdC0+dXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigp
LCByZXF1ZXN0LT50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgW3RoaXMsIHJlcXVl
c3QgPSByZXF1ZXN0LnJlbGVhc2VOb25OdWxsKCldKE9wdGlvbmFsPGJvb2w+IGhhc1BlcnNpc3Rl
bnRBY2Nlc3MpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlcXVlc3QtPmlzUGVuZGluZygpKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKLSAgICAgICAgYXV0byBhY3Rpb24gPSBn
ZXRSZXF1ZXN0QWN0aW9uKG1fcGFnZS5tYWluRnJhbWUoKS0+ZnJhbWVJRCgpLCB1c2VyTWVkaWFE
b2N1bWVudE9yaWdpbi5nZXQoKSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi5nZXQoKSwgbG9jYWxV
c2VyUmVxdWVzdCwgYXVkaW9EZXZpY2VzLCB2aWRlb0RldmljZXMpOwotICAgICAgICBpZiAoYWN0
aW9uID09IFJlcXVlc3RBY3Rpb246OkRlbnkpIHsKLSAgICAgICAgICAgIGRlbnlSZXF1ZXN0KHVz
ZXJNZWRpYUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nl
c3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQsIGVtcHR5U3RyaW5nKCkpOworICAgICAg
ICBpZiAoIWhhc1BlcnNpc3RlbnRBY2Nlc3MpIHsKKyAgICAgICAgICAgIHJlcXVlc3QtPmRlbnko
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVh
c29uOjpPdGhlckZhaWx1cmUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKGFjdGlvbiA9PSBSZXF1ZXN0QWN0aW9uOjpHcmFudCkgewotICAgICAgICAgICAg
QVNTRVJUKGxvY2FsVXNlclJlcXVlc3QudHlwZSAhPSBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6
OkRpc3BsYXlNZWRpYSk7CisgICAgICAgIHByb2Nlc3NVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dChXVEZNb3ZlKHJlcXVlc3QpLCAqaGFzUGVyc2lzdGVudEFjY2Vzcyk7CisgICAgfSk7Cit9CiAK
LSAgICAgICAgICAgIGlmIChtX3BhZ2UuaXNWaWV3VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gV2Ugc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUgZGV2aWNlcywgYnV0IHRoZSBjdXJy
ZW50IGNsaWVudCBBUEkgYWxsb3dzIGNsaWVudCB0byBzZWxlY3Qgd2hpY2ggZGV2aWNlIHRvIHBp
Y2suCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgcG9zc2libGl0eSBmb3Ig
dGhlIGNsaWVudCB0byBkbyB0aGUgZGV2aWNlIHNlbGVjdGlvbi4KLSAgICAgICAgICAgICAgICBh
dXRvIGF1ZGlvRGV2aWNlID0gIWF1ZGlvRGV2aWNlcy5pc0VtcHR5KCkgPyBhdWRpb0RldmljZXNb
MF0gOiBDYXB0dXJlRGV2aWNlKCk7Ci0gICAgICAgICAgICAgICAgYXV0byB2aWRlb0RldmljZSA9
ICF2aWRlb0RldmljZXMuaXNFbXB0eSgpID8gdmlkZW9EZXZpY2VzWzBdIDogQ2FwdHVyZURldmlj
ZSgpOwotICAgICAgICAgICAgICAgIGdyYW50QWNjZXNzKHVzZXJNZWRpYUlELCBXVEZNb3ZlKGF1
ZGlvRGV2aWNlKSwgV1RGTW92ZSh2aWRlb0RldmljZSksIFdURk1vdmUoZGV2aWNlSWRlbnRpZmll
ckhhc2hTYWx0KSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3ByZWdy
YW50ZWRSZXF1ZXN0cy5hcHBlbmQoY3JlYXRlUGVybWlzc2lvblJlcXVlc3QodXNlck1lZGlhSUQs
IG1fcGFnZS5tYWluRnJhbWUoKS0+ZnJhbWVJRCgpLCBmcmFtZUlELCBXVEZNb3ZlKHVzZXJNZWRp
YURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSwgV1RGTW92
ZShhdWRpb0RldmljZXMpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlcyksIFdURk1vdmUobG9jYWxVc2Vy
UmVxdWVzdCkpKTsKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OnByb2Nlc3NVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChSZWY8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eT4mJiByZXF1ZXN0LCBib29sIGhhc1BlcnNpc3RlbnRBY2Nlc3MpCit7Cisg
ICAgaWYgKGhhc1BlcnNpc3RlbnRBY2Nlc3MpCisgICAgICAgIHJlcXVlc3QtPnNldEhhc1BlcnNp
c3RlbnRBY2Nlc3MoKTsKIAorICAgIGF1dG8mIHVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmln
aW4gPSByZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0
byYgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC0+dG9wTGV2ZWxEb2N1
bWVudFNlY3VyaXR5T3JpZ2luKCk7CisgICAgbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5kZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRGb3JPcmlnaW4odXNlck1lZGlh
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBb
dGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCldIChTdHJpbmcmJiBkZXZpY2VJREhhc2hT
YWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXF1ZXN0LT5pc1BlbmRpbmcoKSkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gdXNlck1lZGlhT3JpZ2lu
ID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmdl
dCgpKTsKLSAgICAgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpKTsKLSAgICAgICAgYXV0byBwZW5k
aW5nUmVxdWVzdCA9IGNyZWF0ZVBlcm1pc3Npb25SZXF1ZXN0KHVzZXJNZWRpYUlELCBtX3BhZ2Uu
bWFpbkZyYW1lKCktPmZyYW1lSUQoKSwgZnJhbWVJRCwgV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVu
dE9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbiksIFdURk1vdmUoYXVkaW9E
ZXZpY2VzKSwgV1RGTW92ZSh2aWRlb0RldmljZXMpLCBXVEZNb3ZlKGxvY2FsVXNlclJlcXVlc3Qp
KTsKLQotICAgICAgICBpZiAobV9wYWdlLmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpKSB7Ci0g
ICAgICAgICAgICBpZiAoV2ViQXV0b21hdGlvblNlc3Npb24qIGF1dG9tYXRpb25TZXNzaW9uID0g
bV9wYWdlLnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoYXV0b21hdGlvblNlc3Npb24tPnNob3VsZEFsbG93R2V0VXNlck1l
ZGlhRm9yUGFnZShtX3BhZ2UpKQotICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdC0+
YWxsb3coKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHVzZXJN
ZWRpYUFjY2Vzc1dhc0RlbmllZCh1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsK
IAorICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpJbnZhbGlkQ29uc3RyYWludHNI
YW5kbGVyIGludmFsaWRIYW5kbGVyID0gW3RoaXMsIHJlcXVlc3QgPSByZXF1ZXN0LmNvcHlSZWYo
KV0oY29uc3QgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkgeworICAgICAgICAgICAgaWYgKCFy
ZXF1ZXN0LT5pc1BlbmRpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KIAotICAgICAgICBpZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZCgpICYmICFtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVy
ZURldmljZXNQcm9tcHRFbmFibGVkKCkpIHsKLSAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5h
bGxvdygpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYg
cGFnZSBuYXZpZ2F0ZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCB0aGUgcGFnZSBjbGllbnQg
Zm9yIGF1dGhvcml6YXRpb24uCi0gICAgICAgIGF1dG8qIHdlYkZyYW1lID0gbV9wYWdlLnByb2Nl
c3MoKS53ZWJGcmFtZShmcmFtZUlEKTsKLQotICAgICAgICBpZiAoIXdlYkZyYW1lIHx8ICFTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX3BhZ2UucGFnZUxvYWRTdGF0ZSgpLmFjdGl2
ZVVSTCgpKS0+aXNTYW1lU2NoZW1lSG9zdFBvcnQodG9wTGV2ZWxPcmlnaW4tPnNlY3VyaXR5T3Jp
Z2luKCkpKSB7Ci0gICAgICAgICAgICBkZW55UmVxdWVzdCh1c2VyTWVkaWFJRCwgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpOb0Nv
bnN0cmFpbnRzLCBlbXB0eVN0cmluZygpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQorICAgICAgICAgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHdlYkZyYW1lLCB1c2VyTWVkaWFPcmln
aW4gYW5kIHRvcExldmVsT3JpZ2luIGZyb20gdGhpcyB1aUNsaWVudCBBUEkgY2FsbC4KLSAgICAg
ICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QobV9wYWdlLCAqd2ViRnJhbWUsIFdURk1vdmUodXNlck1lZGlhT3JpZ2luKSwgV1RGTW92
ZSh0b3BMZXZlbE9yaWdpbiksIHBlbmRpbmdSZXF1ZXN0LmdldCgpKTsKLSAgICB9OworICAgICAg
ICAgICAgcHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25JbnZhbGlkUmVxdWVzdChyZXF1ZXN0Lmdl
dCgpLCBpbnZhbGlkQ29uc3RyYWludCk7CisgICAgICAgIH07CiAKLSAgICBhdXRvIHJlcXVlc3RJ
RCA9IGdlbmVyYXRlUmVxdWVzdElEKCk7Ci0gICAgYXV0byBoYXZlUGVybWlzc2lvbkluZm9IYW5k
bGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0SUQsIHZh
bGlkSGFuZGxlciA9IFdURk1vdmUodmFsaWRIYW5kbGVyKSwgaW52YWxpZEhhbmRsZXIgPSBXVEZN
b3ZlKGludmFsaWRIYW5kbGVyKSwgbG9jYWxVc2VyUmVxdWVzdCA9IHVzZXJSZXF1ZXN0XShib29s
IG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtU
aGlzKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIHZhbGlkSGFuZGxlciA9IFt0
aGlzLCByZXF1ZXN0ID0gcmVxdWVzdC5jb3B5UmVmKCldKFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYm
IGF1ZGlvRGV2aWNlcywgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBTdHJp
bmcmJiBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpIG11dGFibGUgeworICAgICAgICAgICAgaWYg
KCFyZXF1ZXN0LT5pc1BlbmRpbmcoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0RldmljZVJlcXVlc3RzLnRha2UocmVx
dWVzdElEKTsKLSAgICAgICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSB8fCAhbV9wYWdlLm1haW5GcmFt
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIW1fcGFnZS5pc1Zh
bGlkKCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBwcm9jZXNzVXNlck1lZGlh
UGVybWlzc2lvblZhbGlkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGF1ZGlvRGV2
aWNlcyksIFdURk1vdmUodmlkZW9EZXZpY2VzKSwgV1RGTW92ZShkZXZpY2VJZGVudGlmaWVySGFz
aFNhbHQpKTsKKyAgICAgICAgfTsKIAogICAgICAgICBzeW5jV2l0aFdlYkNvcmVQcmVmcygpOwog
Ci0gICAgICAgIG1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2UoKS5kZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luKHBlbmRpbmdSZXF1ZXN0LnZhbHVlKCktPnVz
ZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcGVuZGluZ1JlcXVlc3QudmFsdWUoKS0+
dG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIFt2YWxpZEhhbmRsZXIgPSBXVEZNb3Zl
KHZhbGlkSGFuZGxlciksIGludmFsaWRIYW5kbGVyID0gV1RGTW92ZShpbnZhbGlkSGFuZGxlciks
IGxvY2FsVXNlclJlcXVlc3QgPSBsb2NhbFVzZXJSZXF1ZXN0XSAoU3RyaW5nJiYgZGV2aWNlSURI
YXNoU2FsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS52YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhXVEZNb3ZlKHZhbGlkSGFu
ZGxlciksIFdURk1vdmUoaW52YWxpZEhhbmRsZXIpLCBXVEZNb3ZlKGxvY2FsVXNlclJlcXVlc3Qp
LCBXVEZNb3ZlKGRldmljZUlESGFzaFNhbHQpKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAg
IGdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKHJlcXVlc3RJRCwgZnJhbWVJRCwgV1RGTW92ZSho
YXZlUGVybWlzc2lvbkluZm9IYW5kbGVyKSwgV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdp
biksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbikpOworICAgICAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhX
VEZNb3ZlKHZhbGlkSGFuZGxlciksIFdURk1vdmUoaW52YWxpZEhhbmRsZXIpLCByZXF1ZXN0LT51
c2VyUmVxdWVzdCgpLCBXVEZNb3ZlKGRldmljZUlESGFzaFNhbHQpKTsKKyAgICB9KTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHVzZXJNZWRpYUlEKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJ
RCk7CkBAIC00MjIsMTkgKzM3OSw5MyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKAogfQogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHk6OmdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgdWludDY0X3QgZnJhbWVJRCwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OkNvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlciwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURv
Y3VtZW50T3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdp
bikKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnByb2Nlc3NV
c2VyTWVkaWFQZXJtaXNzaW9uSW52YWxpZFJlcXVlc3QoY29uc3QgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eSYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkK
K3sKKyAgICBib29sIGZpbHRlckNvbnN0cmFpbnQgPSAhcmVxdWVzdC5oYXNQZXJzaXN0ZW50QWNj
ZXNzKCkgJiYgIXdhc0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nlc3MocmVxdWVzdC5mcmFtZUlEKCks
IHJlcXVlc3QudXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCByZXF1ZXN0LnRvcExl
dmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKTsKKworICAgIGRlbnlSZXF1ZXN0KHJlcXVlc3Qu
dXNlck1lZGlhSUQoKSwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlh
QWNjZXNzRGVuaWFsUmVhc29uOjpJbnZhbGlkQ29uc3RyYWludCwgZmlsdGVyQ29uc3RyYWludCA/
IFN0cmluZyB7IH0gOiBpbnZhbGlkQ29uc3RyYWludCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnByb2Nlc3NVc2VyTWVkaWFQZXJtaXNzaW9uVmFs
aWRSZXF1ZXN0KFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiYmIHJlcXVlc3Qs
IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+JiYgdmlkZW9EZXZpY2VzLCBTdHJpbmcmJiBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpCit7
CisgICAgaWYgKHZpZGVvRGV2aWNlcy5pc0VtcHR5KCkgJiYgYXVkaW9EZXZpY2VzLmlzRW1wdHko
KSkgeworICAgICAgICBkZW55UmVxdWVzdChyZXF1ZXN0LT51c2VyTWVkaWFJRCgpLCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246Ok5v
Q29uc3RyYWludHMsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgcmVxdWVzdC0+c2V0RGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KFdURk1vdmUoZGV2aWNlSWRl
bnRpZmllckhhc2hTYWx0KSk7CisgICAgcmVxdWVzdC0+c2V0RWxpZ2libGVWaWRlb0RldmljZVVJ
RHMoV1RGTW92ZSh2aWRlb0RldmljZXMpKTsKKyAgICByZXF1ZXN0LT5zZXRFbGlnaWJsZUF1ZGlv
RGV2aWNlVUlEcyhXVEZNb3ZlKGF1ZGlvRGV2aWNlcykpOworCisgICAgYXV0byBhY3Rpb24gPSBn
ZXRSZXF1ZXN0QWN0aW9uKHJlcXVlc3QpOworICAgIGlmIChhY3Rpb24gPT0gUmVxdWVzdEFjdGlv
bjo6RGVueSkgeworICAgICAgICBkZW55UmVxdWVzdChyZXF1ZXN0LT51c2VyTWVkaWFJRCgpLCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFz
b246OlBlcm1pc3Npb25EZW5pZWQsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKGFjdGlvbiA9PSBSZXF1ZXN0QWN0aW9uOjpHcmFudCkgeworICAgICAg
ICBBU1NFUlQocmVxdWVzdC0+cmVxdWVzdFR5cGUoKSAhPSBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5
cGU6OkRpc3BsYXlNZWRpYSk7CisKKyAgICAgICAgaWYgKG1fcGFnZS5pc1ZpZXdWaXNpYmxlKCkp
CisgICAgICAgICAgICBncmFudEFjY2VzcyhyZXF1ZXN0KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9wcmVncmFudGVkUmVxdWVzdHMuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOworCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9wYWdlLmlzQ29udHJvbGxlZEJ5QXV0
b21hdGlvbigpKSB7CisgICAgICAgIGlmIChXZWJBdXRvbWF0aW9uU2Vzc2lvbiogYXV0b21hdGlv
blNlc3Npb24gPSBtX3BhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Np
b24oKSkgeworICAgICAgICAgICAgaWYgKGF1dG9tYXRpb25TZXNzaW9uLT5zaG91bGRBbGxvd0dl
dFVzZXJNZWRpYUZvclBhZ2UobV9wYWdlKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0LT5hbGxv
dygpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHVzZXJNZWRpYUFjY2Vzc1dh
c0RlbmllZChyZXF1ZXN0LT51c2VyTWVkaWFJRCgpLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwor
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9wYWdl
LnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpICYmICFtX3BhZ2UucHJl
ZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNQcm9tcHRFbmFibGVkKCkpIHsKKyAgICAgICAg
cmVxdWVzdC0+YWxsb3coKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIElmIHBh
Z2UgbmF2aWdhdGVkLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgdGhlIHBhZ2UgY2xpZW50IGZv
ciBhdXRob3JpemF0aW9uLgorICAgIGF1dG8qIHdlYkZyYW1lID0gbV9wYWdlLnByb2Nlc3MoKS53
ZWJGcmFtZShyZXF1ZXN0LT5mcmFtZUlEKCkpOworCisgICAgaWYgKCF3ZWJGcmFtZSB8fCAhU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcobV9wYWdlLnBhZ2VMb2FkU3RhdGUoKS5hY3Rp
dmVVUkwoKSktPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHJlcXVlc3QtPnRvcExldmVsRG9jdW1lbnRT
ZWN1cml0eU9yaWdpbigpKSkgeworICAgICAgICBkZW55UmVxdWVzdChyZXF1ZXN0LT51c2VyTWVk
aWFJRCgpLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NE
ZW5pYWxSZWFzb246Ok5vQ29uc3RyYWludHMsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFJlbW92ZSB3ZWJGcmFtZSwgdXNlck1lZGlhT3Jp
Z2luIGFuZCB0b3BMZXZlbE9yaWdpbiBmcm9tIHRoaXMgdWlDbGllbnQgQVBJIGNhbGwuCisgICAg
YXV0byB1c2VyTWVkaWFPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVxdWVz
dC0+dXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKTsKKyAgICBhdXRvIHRvcExldmVs
T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcXVlc3QtPnRvcExldmVsRG9j
dW1lbnRTZWN1cml0eU9yaWdpbigpKTsKKyAgICBtX3BhZ2UudWlDbGllbnQoKS5kZWNpZGVQb2xp
Y3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsICp3ZWJGcmFtZSwgV1RGTW92
ZSh1c2VyTWVkaWFPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luKSwgcmVxdWVzdCk7Cit9
CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdldFVzZXJN
ZWRpYVBlcm1pc3Npb25JbmZvKHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8Ym9vbD4pPiYm
IGhhbmRsZXIpCiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBtX3BhZ2UucHJvY2VzcygpLndlYkZy
YW1lKGZyYW1lSUQpOwogICAgIGlmICghd2ViRnJhbWUgfHwgIVNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKG1fcGFnZS5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpLT5pc1NhbWVT
Y2hlbWVIb3N0UG9ydCh0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpKSkgewotICAgICAgICBo
YW5kbGVyKGZhbHNlKTsKKyAgICAgICAgaGFuZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgYXV0byB1c2VyTWVkaWFPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uZ2V0KCkpOwogICAgIGF1dG8gdG9wTGV2ZWxP
cmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9wTGV2ZWxEb2N1bWVudE9yaWdp
bi5nZXQoKSk7Ci0gICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHk6OmNyZWF0ZShmcmFtZUlELCBXVEZNb3ZlKGhhbmRsZXIpLCBXVEZNb3ZlKHVzZXJNZWRpYURv
Y3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSk7CiAKLSAgICBt
X3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy5hZGQocmVxdWVzdElELCByZXF1ZXN0LmNvcHlSZWYoKSk7
CisgICAgYXV0byByZXF1ZXN0SUQgPSBnZW5lcmF0ZVJlcXVlc3RJRCgpOworICAgIG1fcGVuZGlu
Z0RldmljZVJlcXVlc3RzLmFkZChyZXF1ZXN0SUQpOworCisgICAgYXV0byByZXF1ZXN0ID0gVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OmNyZWF0ZShmcmFtZUlELCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3RJRCwgaGFuZGxlciA9IFdURk1vdmUoaGFu
ZGxlcildKE9wdGlvbmFsPGJvb2w+IGFsbG93ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICFtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy5yZW1vdmUocmVxdWVzdElEKSB8fCAh
YWxsb3dlZCkgeworICAgICAgICAgICAgaGFuZGxlcih7IH0pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGhhbmRsZXIoKmFsbG93ZWQpOworICAgIH0sIFdURk1vdmUo
dXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4p
KTsKKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgd2ViRnJhbWUsIHVzZXJNZWRpYU9yaWdpbiBhbmQg
dG9wTGV2ZWxPcmlnaW4gZnJvbSB0aGlzIHVpQ2xpZW50IEFQSSBjYWxsLgogICAgIG1fcGFnZS51
aUNsaWVudCgpLmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihtX3BhZ2UsICp3ZWJG
cmFtZSwgdXNlck1lZGlhT3JpZ2luLmdldCgpLCB0b3BMZXZlbE9yaWdpbi5nZXQoKSwgcmVxdWVz
dC5nZXQoKSk7CiB9CkBAIC00NTcsMTIgKzQ4OCw5IEBAIGJvb2wgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6Ondhc0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nlc3ModWludDY0
CiAKICAgICByZXR1cm4gZmFsc2U7CiB9Ci0jZW5kaWYKIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUodWlu
dDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4pCitWZWN0b3I8Q2FwdHVyZURldmljZT4gVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNvbXB1dGVGaWx0ZXJlZERldmljZUxpc3QoYm9vbCByZXZl
YWxJZHNBbmRMYWJlbHMsIGNvbnN0IFN0cmluZyYgZGV2aWNlSURIYXNoU2FsdCkKIHsKLSNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0
aWMgY29uc3QgaW50IGRlZmF1bHRNYXhpbXVtQ2FtZXJhQ291bnQgPSAyOwogI2Vsc2UKQEAgLTQ3
MCwxOSArNDk4LDU2IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2CiAjZW5kaWYKICAgICBzdGF0
aWMgY29uc3QgaW50IGRlZmF1bHRNYXhpbXVtTWljcm9waG9uZUNvdW50ID0gMTsKIAotICAgIGF1
dG8gcmVxdWVzdElEID0gZ2VuZXJhdGVSZXF1ZXN0SUQoKTsKLSAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0SUQs
IHVzZXJNZWRpYUlELCByZXF1ZXN0T3JpZ2luID0gdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uY29w
eVJlZigpLCB0b3BPcmlnaW4gPSB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmNvcHlSZWYoKV0oYm9v
bCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICBhdXRvIGRldmljZXMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5n
bGV0b24oKS5nZXRNZWRpYVN0cmVhbURldmljZXMoKTsKKyAgICBpbnQgY2FtZXJhQ291bnQgPSAw
OworICAgIGludCBtaWNyb3Bob25lQ291bnQgPSAwOworCisgICAgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+IGZpbHRlcmVkRGV2aWNlczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRldmljZSA6IGRldmlj
ZXMpIHsKKyAgICAgICAgaWYgKCFkZXZpY2UuZW5hYmxlZCgpIHx8IChkZXZpY2UudHlwZSgpICE9
IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSAmJiBkZXZpY2UudHlw
ZSgpICE9IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFyZXZlYWxJZHNBbmRMYWJlbHMp
IHsKKyAgICAgICAgICAgIGlmIChkZXZpY2UudHlwZSgpID09IFdlYkNvcmU6OkNhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OkNhbWVyYSAmJiArK2NhbWVyYUNvdW50ID4gZGVmYXVsdE1heGltdW1D
YW1lcmFDb3VudCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChk
ZXZpY2UudHlwZSgpID09IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3Jv
cGhvbmUgJiYgKyttaWNyb3Bob25lQ291bnQgPiBkZWZhdWx0TWF4aW11bU1pY3JvcGhvbmVDb3Vu
dCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8g
bGFiZWwgPSBlbXB0eVN0cmluZygpOworICAgICAgICBhdXRvIGlkID0gZW1wdHlTdHJpbmcoKTsK
KyAgICAgICAgYXV0byBncm91cElkID0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgaWYgKHJldmVh
bElkc0FuZExhYmVscykgeworICAgICAgICAgICAgbGFiZWwgPSBkZXZpY2UubGFiZWwoKTsKKyAg
ICAgICAgICAgIGlkID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuaGFz
aFN0cmluZ1dpdGhTYWx0KGRldmljZS5wZXJzaXN0ZW50SWQoKSwgZGV2aWNlSURIYXNoU2FsdCk7
CisgICAgICAgICAgICBncm91cElkID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KGRldmljZS5ncm91cElkKCksIGRldmljZUlESGFzaFNh
bHQpOworICAgICAgICB9CisKKyAgICAgICAgZmlsdGVyZWREZXZpY2VzLmFwcGVuZChDYXB0dXJl
RGV2aWNlKGlkLCBkZXZpY2UudHlwZSgpLCBsYWJlbCwgZ3JvdXBJZCkpOworICAgIH0KKworICAg
IG1faGFzRmlsdGVyZWREZXZpY2VMaXN0ID0gIXJldmVhbElkc0FuZExhYmVsczsKKyAgICByZXR1
cm4gZmlsdGVyZWREZXZpY2VzOworfQorI2VuZGlmCisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2
NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYg
dXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERv
Y3VtZW50T3JpZ2luKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFt0aGlzLCB1c2VyTWVkaWFJRCwgZnJhbWVJRCwgdXNlck1lZGlhRG9j
dW1lbnRPcmlnaW4gPSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCksIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4gPSB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmNvcHlSZWYoKV0oT3B0aW9u
YWw8Ym9vbD4gb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykgbXV0YWJsZSB7CisgICAgICAgIGlm
ICghb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpLmRl
dmljZUlkSGFzaFNhbHRGb3JPcmlnaW4ocmVxdWVzdE9yaWdpbi5nZXQoKSwgdG9wT3JpZ2luLmdl
dCgpLCBbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVxdWVzdElELCB1c2Vy
TWVkaWFJRCwgJm9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3NdIChTdHJpbmcmJiBkZXZpY2VJREhh
c2hTYWx0KSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdEZXZpY2VS
ZXF1ZXN0cy50YWtlKHJlcXVlc3RJRCk7Ci0gICAgICAgICAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0
KQorICAgICAgICBhdXRvIHJlcXVlc3RJRCA9IGdlbmVyYXRlUmVxdWVzdElEKCk7CisgICAgICAg
IG1fcGVuZGluZ0RldmljZVJlcXVlc3RzLmFkZChyZXF1ZXN0SUQpOworCisgICAgICAgIGF1dG8m
IHJlcXVlc3RPcmlnaW4gPSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5nZXQoKTsKKyAgICAgICAg
YXV0byYgdG9wT3JpZ2luID0gdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi5nZXQoKTsKKyAgICAgICAg
bV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpLmRldmlj
ZUlkSGFzaFNhbHRGb3JPcmlnaW4ocmVxdWVzdE9yaWdpbiwgdG9wT3JpZ2luLCBbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3RJRCwgZnJhbWVJRCwgdXNlck1lZGlh
SUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luID0gV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9y
aWdpbiksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4gPSBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRP
cmlnaW4pLCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzID0gKm9yaWdpbkhhc1BlcnNpc3RlbnRB
Y2Nlc3NdIChTdHJpbmcmJiBkZXZpY2VJREhhc2hTYWx0KSB7CisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICFtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy5yZW1vdmUocmVxdWVzdElEKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGlmICghbV9wYWdlLmlzVmFsaWQo
KSkKQEAgLTQ5MCw0MyArNTU1LDEzIEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2CiAKICAgICAg
ICAgICAgIHN5bmNXaXRoV2ViQ29yZVByZWZzKCk7CiAKLSAgICAgICAgICAgIGF1dG8gZGV2aWNl
cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFt
RGV2aWNlcygpOwotICAgICAgICAgICAgYXV0byYgcmVxdWVzdCA9ICpwZW5kaW5nUmVxdWVzdDsK
LSAgICAgICAgICAgIGJvb2wgcmV2ZWFsSWRzQW5kTGFiZWxzID0gb3JpZ2luSGFzUGVyc2lzdGVu
dEFjY2VzcyB8fCB3YXNHcmFudGVkVmlkZW9PckF1ZGlvQWNjZXNzKHJlcXVlc3QtPmZyYW1lSUQo
KSwgcmVxdWVzdC0+dXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCByZXF1ZXN0LT50
b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgICAgICAgICBpbnQgY2FtZXJh
Q291bnQgPSAwOwotICAgICAgICAgICAgaW50IG1pY3JvcGhvbmVDb3VudCA9IDA7Ci0KLSAgICAg
ICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBmaWx0ZXJlZERldmljZXM7Ci0gICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGRldmljZSA6IGRldmljZXMpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIWRldmljZS5lbmFibGVkKCkgfHwgKGRldmljZS50eXBlKCkgIT0gV2ViQ29yZTo6Q2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhICYmIGRldmljZS50eXBlKCkgIT0gV2ViQ29yZTo6
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgaWYgKCFyZXZlYWxJZHNBbmRMYWJlbHMp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhICYmICsrY2FtZXJhQ291bnQgPiBkZWZhdWx0
TWF4aW11bUNhbWVyYUNvdW50KQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChkZXZpY2UudHlwZSgpID09IFdlYkNvcmU6OkNhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUgJiYgKyttaWNyb3Bob25lQ291bnQgPiBkZWZh
dWx0TWF4aW11bU1pY3JvcGhvbmVDb3VudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGF1dG8gbGFiZWwgPSBl
bXB0eVN0cmluZygpOwotICAgICAgICAgICAgICAgIGF1dG8gaWQgPSBlbXB0eVN0cmluZygpOwot
ICAgICAgICAgICAgICAgIGF1dG8gZ3JvdXBJZCA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJldmVhbElkc0FuZExhYmVscykgewotICAgICAgICAgICAgICAgICAgICBsYWJl
bCA9IGRldmljZS5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICBpZCA9IFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmhhc2hTdHJpbmdXaXRoU2FsdChkZXZpY2UucGVy
c2lzdGVudElkKCksIGRldmljZUlESGFzaFNhbHQpOwotICAgICAgICAgICAgICAgICAgICBncm91
cElkID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dp
dGhTYWx0KGRldmljZS5ncm91cElkKCksIGRldmljZUlESGFzaFNhbHQpOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIGZpbHRlcmVkRGV2aWNlcy5hcHBlbmQoQ2FwdHVyZURl
dmljZShpZCwgZGV2aWNlLnR5cGUoKSwgbGFiZWwsIGdyb3VwSWQpKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgbV9oYXNGaWx0ZXJlZERldmljZUxpc3QgPSAhcmV2ZWFsSWRzQW5kTGFi
ZWxzOwotCi0gICAgICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbih1c2VyTWVkaWFJRCwgV1RGTW92
ZShmaWx0ZXJlZERldmljZXMpLCBXVEZNb3ZlKGRldmljZUlESGFzaFNhbHQpLCBvcmlnaW5IYXNQ
ZXJzaXN0ZW50QWNjZXNzKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIGJvb2wgcmV2
ZWFsSWRzQW5kTGFiZWxzID0gb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcyB8fCB3YXNHcmFudGVk
VmlkZW9PckF1ZGlvQWNjZXNzKGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmdldCgp
LCB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpKTsKKworICAgICAgICAgICAgbV9wYWdlLnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51
bWVyYXRpb24geyB1c2VyTWVkaWFJRCwgY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChyZXZlYWxJ
ZHNBbmRMYWJlbHMsIGRldmljZUlESGFzaFNhbHQpLCBkZXZpY2VJREhhc2hTYWx0LCBvcmlnaW5I
YXNQZXJzaXN0ZW50QWNjZXNzIH0sIG1fcGFnZS5wYWdlSUQoKSk7CiAgICAgICAgIH0pOwogICAg
IH07CiAKLSAgICBnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyhyZXF1ZXN0SUQsIGZyYW1lSUQs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3Jp
Z2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSk7CisgICAgZ2V0VXNlck1lZGlh
UGVybWlzc2lvbkluZm8oZnJhbWVJRCwgV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiks
IFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHVzZXJNZWRpYUlEKTsKICAgICBVTlVTRURf
UEFSQU0oZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRleCBlYWNj
ZTZmOTJiNjVmZmNjMjliZTRkMTM3ODhkYTgxZDkxNTkwNTU4Li5hMTE1YzQzODY3NTM3ZWM4ZDUz
ZGY1ZGZiZTUyZTJlY2Q2OTE1ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgK
QEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVByb2R1Y2VyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNp
bmNsdWRlIDx3dGYvU2Vjb25kcy5oPgpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGludmFsaWRhdGVQZW5kaW5nUmVxdWVzdHMoKTsKIAotICAgIHZvaWQgcmVxdWVzdFVzZXJN
ZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJh
bWVJRCwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmICB1c2VyTWVkaWFEb2N1bWVudE9y
aWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmln
aW4sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYpOworICAgIHZvaWQgcmVxdWVz
dFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0
X3QgZnJhbWVJRCwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmICB1c2VyTWVkaWFEb2N1
bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1l
bnRPcmlnaW4sIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYmKTsKIAogICAgIHZvaWQgcmVz
ZXRBY2Nlc3ModWludDY0X3QgbWFpbkZyYW1lSUQpOwogICAgIHZvaWQgdmlld0lzQmVjb21pbmdW
aXNpYmxlKCk7CkBAIC03MSwyNyArNzIsMzMgQEAgcHJpdmF0ZToKICAgICBSZWY8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlUGVybWlzc2lvblJlcXVlc3QodWludDY0X3Qg
dXNlck1lZGlhSUQsIHVpbnQ2NF90IG1haW5GcmFtZUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBWZWN0b3I8
V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxXZWJDb3JlOjpD
YXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0
JiYpOwogICAgIHZvaWQgZGVueVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbiwgY29u
c3QgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCk7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LSAgICBib29sIGdyYW50QWNjZXNzKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBXZWJDb3Jl
OjpDYXB0dXJlRGV2aWNlIGF1ZGlvRGV2aWNlLCBjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNl
IHZpZGVvRGV2aWNlLCBjb25zdCBTdHJpbmcmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk7Cisg
ICAgYm9vbCBncmFudEFjY2Vzcyhjb25zdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
Jik7CiAKICAgICBjb25zdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KiBzZWFyY2hG
b3JHcmFudGVkUmVxdWVzdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBib29sIG5lZWRzQXVkaW8sIGJvb2wgbmVl
ZHNWaWRlbykgY29uc3Q7CiAgICAgYm9vbCB3YXNSZXF1ZXN0RGVuaWVkKHVpbnQ2NF90IG1haW5G
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlhRG9jdW1lbnRP
cmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50T3Jp
Z2luLCBib29sIG5lZWRzQXVkaW8sIGJvb2wgbmVlZHNWaWRlbywgYm9vbCBuZWVkc1NjcmVlbkNh
cHR1cmUpOwogCi0gICAgdm9pZCBnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyh1aW50NjRfdCBy
ZXF1ZXN0SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
OjpDb21wbGV0aW9uSGFuZGxlciYmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNl
ck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BM
ZXZlbERvY3VtZW50T3JpZ2luKTsKKyAgICB2b2lkIGdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZv
KHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVk
aWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8Ym9vbD4pPiYm
KTsKIAogICAgIGVudW0gY2xhc3MgUmVxdWVzdEFjdGlvbiB7CiAgICAgICAgIERlbnksCiAgICAg
ICAgIEdyYW50LAogICAgICAgICBQcm9tcHQKICAgICB9OwotICAgIFJlcXVlc3RBY3Rpb24gZ2V0
UmVxdWVzdEFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYg
dXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZl
bERvY3VtZW50T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmLCBWZWN0
b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6
OkNhcHR1cmVEZXZpY2U+JiB2aWRlb0RldmljZXMpOworICAgIFJlcXVlc3RBY3Rpb24gZ2V0UmVx
dWVzdEFjdGlvbihjb25zdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Jik7CiAKICAg
ICBib29sIHdhc0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nlc3ModWludDY0X3QsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4pOworCisgICAgVmVjdG9y
PFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IGNvbXB1dGVGaWx0ZXJlZERldmljZUxpc3QoYm9vbCBy
ZXZlYWxJZHNBbmRMYWJlbHMsIGNvbnN0IFN0cmluZyYgZGV2aWNlSURIYXNoU2FsdCk7CisKKyAg
ICB2b2lkIHByb2Nlc3NVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChSZWY8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eT4mJiwgYm9vbCBoYXNQZXJzaXN0ZW50QWNjZXNzKTsKKyAgICB2
b2lkIHByb2Nlc3NVc2VyTWVkaWFQZXJtaXNzaW9uSW52YWxpZFJlcXVlc3QoY29uc3QgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYsIGNvbnN0IFN0cmluZyYgaW52YWxpZENvbnN0cmFp
bnQpOworICAgIHZvaWQgcHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25WYWxpZFJlcXVlc3QoUmVm
PFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+JiYsIFZlY3RvcjxXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+
JiYgdmlkZW9EZXZpY2VzLCBTdHJpbmcmJiBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpOwogI2Vu
ZGlmCiAKICAgICB2b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgpOwogCiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+PiBtX3BlbmRpbmdV
c2VyTWVkaWFSZXF1ZXN0czsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8VXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHk+PiBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0czsKKyAgICBIYXNoU2V0
PHVpbnQ2NF90PiBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0czsKIAogICAgIFdlYlBhZ2VQcm94eSYg
bV9wYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgKaW5kZXggYWM4MDVlNzg4YmUyMzE3ZTBhN2FhZWI3
MTg5MDljZjQ1YmNhODkwOC4uMDY3ZjgwMjAzZjFhNWZkZDMyMzhjOGFlMjlkN2RjYWNhMWFlYTEy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHkuaApAQCAtNDgsMjEgKzQ4LDQyIEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uID0gVXNlck1lZGlhQWNjZXNzRGVu
aWFsUmVhc29uOjpVc2VyTWVkaWFEaXNhYmxlZCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsK
KyAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbWFuYWdlcjsgfQogCiAgICAg
Ym9vbCByZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxpZ2libGVBdWRp
b0RldmljZXMuc2l6ZSgpOyB9CiAgICAgYm9vbCByZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpIGNvbnN0
IHsgcmV0dXJuICFyZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkgJiYgbV9lbGlnaWJsZVZpZGVvRGV2
aWNlcy5zaXplKCk7IH0KICAgICBib29sIHJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSBjb25zdCB7
IHJldHVybiBtX3JlcXVlc3QudHlwZSA9PSBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5
cGU6OkRpc3BsYXlNZWRpYSAmJiBtX2VsaWdpYmxlVmlkZW9EZXZpY2VzLnNpemUoKTsgfQogCisg
ICAgdm9pZCBzZXRFbGlnaWJsZVZpZGVvRGV2aWNlVUlEcyhWZWN0b3I8V2ViQ29yZTo6Q2FwdHVy
ZURldmljZT4mJiBkZXZpY2VzKSB7IG1fZWxpZ2libGVWaWRlb0RldmljZXMgPSBXVEZNb3ZlKGRl
dmljZXMpOyB9CisgICAgdm9pZCBzZXRFbGlnaWJsZUF1ZGlvRGV2aWNlVUlEcyhWZWN0b3I8V2Vi
Q29yZTo6Q2FwdHVyZURldmljZT4mJiBkZXZpY2VzKSB7IG1fZWxpZ2libGVBdWRpb0RldmljZXMg
PSBXVEZNb3ZlKGRldmljZXMpOyB9CisKICAgICBWZWN0b3I8U3RyaW5nPiB2aWRlb0RldmljZVVJ
RHMoKSBjb25zdDsKICAgICBWZWN0b3I8U3RyaW5nPiBhdWRpb0RldmljZVVJRHMoKSBjb25zdDsK
KyAgICBib29sIGhhc0F1ZGlvRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gIW1fZWxpZ2libGVBdWRp
b0RldmljZXMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNWaWRlb0RldmljZSgpIGNvbnN0IHsg
cmV0dXJuICFtX2VsaWdpYmxlVmlkZW9EZXZpY2VzLmlzRW1wdHkoKTsgfQorCisgICAgYm9vbCBo
YXNQZXJzaXN0ZW50QWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZXJzaXN0ZW50QWNjZXNz
OyB9CisgICAgdm9pZCBzZXRIYXNQZXJzaXN0ZW50QWNjZXNzKCkgeyBtX2hhc1BlcnNpc3RlbnRB
Y2Nlc3MgPSB0cnVlOyB9CiAKKyAgICB1aW50NjRfdCB1c2VyTWVkaWFJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlck1lZGlhSUQ7IH0KICAgICB1aW50NjRfdCBtYWluRnJhbWVJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFpbkZyYW1lSUQ7IH0KICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFtZUlEOyB9CisKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2
ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkgeyByZXR1cm4gbV90b3BMZXZlbERvY3VtZW50U2Vj
dXJpdHlPcmlnaW4uZ2V0KCk7IH0KICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdXNlck1l
ZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fdXNlck1lZGlhRG9jdW1lbnRT
ZWN1cml0eU9yaWdpbi5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3RvcExl
dmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbi5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luLmdldCgpOyB9CisKKyAgICBj
b25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmIHVzZXJSZXF1ZXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1ZXN0OyB9CiAKICAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5
cGUgcmVxdWVzdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3QudHlwZTsgfQogCisgICAg
dm9pZCBzZXREZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoU3RyaW5nJiYgc2FsdCkgeyBtX2Rldmlj
ZUlkZW50aWZpZXJIYXNoU2FsdCA9IFdURk1vdmUoc2FsdCk7IH0KKyAgICBjb25zdCBTdHJpbmcm
IGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWRlbnRp
Zmllckhhc2hTYWx0OyB9CisKKyAgICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlIGF1ZGlvRGV2aWNl
KCkgY29uc3QgeyByZXR1cm4gbV9lbGlnaWJsZUF1ZGlvRGV2aWNlcy5pc0VtcHR5KCkgPyBXZWJD
b3JlOjpDYXB0dXJlRGV2aWNlIHsgfSA6IG1fZWxpZ2libGVBdWRpb0RldmljZXNbMF07IH0KKyAg
ICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlIHZpZGVvRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9l
bGlnaWJsZVZpZGVvRGV2aWNlcy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlIHsg
fSA6IG1fZWxpZ2libGVWaWRlb0RldmljZXNbMF07IH0KKwogcHJpdmF0ZToKICAgICBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IG1haW5GcmFtZUlELCB1aW50
NjRfdCBmcmFtZUlELCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9j
dW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3Vt
ZW50T3JpZ2luLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiBhdWRpb0RldmljZXMs
IFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgV2ViQ29yZTo6
TWVkaWFTdHJlYW1SZXF1ZXN0JiYpOwogCkBAIC03NSw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IG1fZWxpZ2libGVWaWRlb0RldmljZXM7CiAg
ICAgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IG1fZWxpZ2libGVBdWRpb0RldmljZXM7
CiAgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBib29sIG1f
aGFzUGVyc2lzdGVudEFjY2VzcyB7IGZhbHNlIH07CisgICAgU3RyaW5nIG1fZGV2aWNlSWRlbnRp
Zmllckhhc2hTYWx0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmMzk5ZjBlZjAxZWU0ZThlNjAxZWNmZGEy
ZTFlNTMyMWMyYzIyNmQwLi43MGEwOTcwZThmOTg3YjgxNjg3NDRlMmFjNjRlMzVhYzE3MTUyNzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTcwMTUsMTIg
KzcwMTUsMTIgQEAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIFdlYlBh
Z2VQcm94eTo6dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKIH0KICNlbmRpZgogCi12b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1
c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiAgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5EYXRhLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHRvcExldmVsRG9jdW1lbnRPcmlnaW5EYXRhLCBjb25zdCBXZWJDb3Jl
OjpNZWRpYVN0cmVhbVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiAgdXNlck1lZGlh
RG9jdW1lbnRPcmlnaW5EYXRhLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRv
cExldmVsRG9jdW1lbnRPcmlnaW5EYXRhLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiBy
ZXF1ZXN0KQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgTUVTU0FHRV9DSEVDSyht
X3Byb2Nlc3MsIG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCkpOwogCi0gICAgdXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkucmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JG
cmFtZSh1c2VyTWVkaWFJRCwgZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5EYXRhLnNl
Y3VyaXR5T3JpZ2luKCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2lu
KCksIHJlcXVlc3QpOworICAgIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnJl
cXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodXNlck1lZGlhSUQsIGZyYW1lSUQsIHVz
ZXJNZWRpYURvY3VtZW50T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpLCB0b3BMZXZlbERvY3Vt
ZW50T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlcXVlc3QpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHVzZXJNZWRpYUlEKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDdiZTkxOTQzODkw
Yjc1ZDBlMjhjYTM3MDFmNWI0NjdlYzA4NzQ3YTIuLjdkMmIzNWI2Mjg5ZWM3NTBmOWI4MmMyNzVk
NTkxNmI2ZTBlYmZhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0xNTk3LDcgKzE1OTcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIHVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcigpOwogI2VuZGlmCi0gICAgdm9pZCByZXF1ZXN0VXNlck1lZGlh
UGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHVzZXJNZWRpYURvY3VtZW50T3Jp
Z2luSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZl
bERvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1
ZXN0Jik7CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2
NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luSWRlbnRpZmll
ciwgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYpOwogICAgIHZvaWQgZW51bWVyYXRlTWVk
aWFEZXZpY2VzRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdXNlck1lZGlhRG9jdW1lbnRPcmln
aW5EYXRhLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsRG9jdW1l
bnRPcmlnaW5EYXRhKTsKICAgICB2b2lkIGJlZ2luTW9uaXRvcmluZ0NhcHR1cmVEZXZpY2VzKCk7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA5MmRmOTVhZDUzNTI0NTBmMWZhYmEzOTg4ODQwNzM0OTc3MjczOWRiLi41ODk3
NWRkYjVlNTZhODZmYzQwMGRjNTZiZDQ4NjgzZWJmODZlNjhkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTktMDItMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAg
ICAgIEZpbHRlciBvdXQgT3ZlcmNvbnN0cmFpbmVkZXJyb3IuY29uc3RyYWludCB3aGVuIGdldFVz
ZXJNZWRpYSBpcyBub3QgZ3JhbnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk0MjQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9vdmVyY29uc3RyYWluZWRlcnJvci1jb25z
dHJhaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9v
dmVyY29uc3RyYWluZWRlcnJvci1jb25zdHJhaW50Lmh0bWw6IEFkZGVkLgorCiAyMDE5LTAyLTA3
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bT3V0LW9m
LWZsb3ddIFVzZSB0aGUgY29udGFpbmluZyBibG9jaydzIHBhZGRpbmcgd2lkdGggd2hlbiBjb21w
dXRpbmcgbWluL21heCB3aWR0aC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vb3ZlcmNvbnN0cmFpbmVkZXJyb3ItY29uc3RyYWludC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL292ZXJjb25zdHJhaW5lZGVycm9yLWNvbnN0cmFpbnQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MmI1YmE3NDZjYmE2OTRmZDA4NDIzYzU2MDEwNjdl
NDgwNDFmZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L292ZXJjb25zdHJhaW5lZGVycm9yLWNvbnN0cmFpbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorCitQQVNTIEJlZm9yZSBncmFudCAKK1BBU1MgQWZ0ZXIgZ3JhbnQgCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vb3ZlcmNvbnN0cmFpbmVkZXJyb3ItY29u
c3RyYWludC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9vdmVyY29uc3RyYWlu
ZWRlcnJvci1jb25zdHJhaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE3NmVmY2ViZTZhYWFhMTUwZDVh
MmExYzc4ZTkxOTQ1MDRkZGZkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vb3ZlcmNvbnN0cmFpbmVkZXJyb3ItY29uc3RyYWludC5odG1sCkBAIC0wLDAg
KzEsMzkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHRpdGxlPk92ZXJDb25zdHJhaW5lZEVycm9y
LmNvbnN0cmFpbnQgdGVzdGluZzwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHk+CisKKyAgICAgICAgPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CitpZiAod2lu
ZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldE1vY2tNZWRpYUNhcHR1cmVE
ZXZpY2VzRW5hYmxlZCh0cnVlKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgICBy
ZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB7ZGV2aWNl
SWQ6IHtleGFjdDoibm9uZSJ9fX0pLnRoZW4oCisgICAgICAgICgpID0+IGFzc2VydF9ub3RfcmVh
Y2hlZCgiZ3VtIHNob3VsZCBmYWlsIiksCisgICAgICAgIChlKSA9PiB7CisgICAgICAgICAgICBh
c3NlcnRfdHJ1ZShlIGluc3RhbmNlb2YgT3ZlcmNvbnN0cmFpbmVkRXJyb3IpOworICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhlLmNvbnN0cmFpbnQsICIiLCAiY29uc3RyYWludCBzaG91bGQgYmUg
dGhlIGVtcHR5IHN0cmluZyIpOworICAgICAgICB9CisgICAgKTsKK30sICJCZWZvcmUgZ3JhbnQi
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jKHRlc3QpID0+IHsKKyAgICBhd2FpdCBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICByZXR1cm4gbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB7ZGV2aWNlSWQ6IHtleGFj
dDoibm9uZSJ9fX0pLnRoZW4oCisgICAgICAgICgpID0+IGFzc2VydF9ub3RfcmVhY2hlZCgiZ3Vt
IHNob3VsZCBmYWlsIiksCisgICAgICAgIChlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1
ZShlIGluc3RhbmNlb2YgT3ZlcmNvbnN0cmFpbmVkRXJyb3IpOworICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhlLmNvbnN0cmFpbnQsICJkZXZpY2VJZCIsICJjb25zdHJhaW50IHNob3VsZCBiZSBk
ZXZpY2VJZCIpOworICAgICAgICB9CisgICAgKTsKK30sICJBZnRlciBncmFudCIpOworICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361689</attachid>
            <date>2019-02-11 09:53:28 -0800</date>
            <delta_ts>2019-02-11 10:49:16 -0800</delta_ts>
            <desc>GTK fix</desc>
            <filename>bug-194240-20190211095325.patch</filename>
            <type>text/plain</type>
            <size>49992</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5OWNmZjE1ODEwMzc5MDc2
MTE5YWRmZDIwMGIxY2I1NzZhN2ZmMmYuLjU1MzBmMTY1NDAwZjNmOGUxN2JhOTJhZmU5NjRhMGQ3
MjFkNDkxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTktMDItMTEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbHRlciBvdXQgT3ZlcmNvbnN0
cmFpbmVkZXJyb3IuY29uc3RyYWludCB3aGVuIGdldFVzZXJNZWRpYSBpcyBub3QgZ3JhbnRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MjQwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIE1ha2Ugc3VyZSBp
biBVSVByb2Nlc3MgdG8gZmlsdGVyIG91dCBjb25zdHJhaW50IGlmIGVpdGhlciB0aGUgcGFnZSB3
YXMgbm90IGdyYW50ZWQgZ3VtIGFjY2VzcyBvciBpdCBoYXMgbm8gcGVyc2lzdGVudCBhY2Nlc3Mu
CisKKyAgICAgICAgUmVmYWN0b3IgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkgdG8gbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gZWFzaWVyIHRvIHVuZGVyc3RhbmQuCisKKyAg
ICAgICAgQ292ZXJlZCBieSBhZGRlZCB0ZXN0LgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUHJveHk6OnNldFVzZXJNZWRpYUFjY2Vzc0luZm8pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpj
YXB0dXJlRGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6dXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpncmFu
dEFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpnZXRSZXF1ZXN0QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnByb2Nlc3NV
c2VyTWVkaWFQZXJtaXNzaW9uSW52YWxpZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJNZWRpYVBlcm1p
c3Npb25WYWxpZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6Z2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8pOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6d2FzR3Jh
bnRlZFZpZGVvT3JBdWRpb0FjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpjb21wdXRlRmlsdGVyZWREZXZpY2VMaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVu
dW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVBlcm1pc3Npb25SZXF1ZXN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpzZXRFbGlnaWJsZVZpZGVvRGV2aWNlVUlEcyk6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnNldEVsaWdpYmxlQXVk
aW9EZXZpY2VVSURzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eTo6aGFzQXVkaW9EZXZpY2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpoYXNWaWRlb0RldmljZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6Omhhc1BlcnNpc3RlbnRB
Y2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjpzZXRIYXNQZXJzaXN0ZW50QWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6dXNlck1lZGlhSUQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp0b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5Ojp1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6dXNlclJl
cXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjpzZXREZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpOgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OjphdWRpb0RldmljZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OnZpZGVvRGV2aWNlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisKIDIwMTktMDItMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIERvIG5vdCB0cnkgdG8gY3JlYXRlIGVtcHR5IGVn
bCB3aW5kb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKaW5kZXggOTY1MTNlYjAxMWIwMDBkZTAzNzFiZjdk
MjIyNTA4MjE0ZjJkYTdkZi4uMzA0ZmEyMWMyNGE2NjY4YjMxNWUwM2I5NGIxZGRiZjlkOWVmNzJk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5LmNwcApAQCAtNDEsMTkgKzQxLDI0IEBAIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSh1aW50NjRfdCBm
cmFtZUlELCBDCiB7CiB9CiAKK1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Ojp+VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHkoKQoreworICAgIGludmFsaWRhdGUoKTsKK30KKwogdm9p
ZCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6c2V0VXNlck1lZGlhQWNjZXNzSW5mbyhi
b29sIGFsbG93ZWQpCiB7CiAgICAgQVNTRVJUKG1fY29tcGxldGlvbkhhbmRsZXIpOwotICAgIGlm
ICghbV9jb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb21wbGV0
aW9uSGFuZGxlcihhbGxvd2VkKTsKLSAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsK
KyAgICBjb21wbGV0ZShhbGxvd2VkKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tQcm94eTo6aW52YWxpZGF0ZSgpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
Ojpjb21wbGV0ZShPcHRpb25hbDxib29sPiBhbGxvd2VkKQogewotICAgIG1fY29tcGxldGlvbkhh
bmRsZXIgPSBudWxscHRyOworICAgIGlmICghbV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0
aW9uSGFuZGxlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dlZCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmgKaW5kZXggNmEwODk1MDZjZWEzODhkMWQ0YzNk
NmRlZmRhNWZlMGUwYWVlNTdjNC4uOWUwMGJiOTM3NGJiNTZkOTIwNjQ0NDBhNmFjNzRhNmE3Y2Zl
YWIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29uc3RyYWludHMuaD4KLSNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1Byb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiB7CiBwdWJsaWM6CiAKLSAgICB1c2luZyBDb21wbGV0
aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChib29sIGFsbG93ZWQpPjsKKyAgICB1c2lu
ZyBDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxib29sPiBhbGxvd2VkKT47CiAKICAgICBzdGF0aWMgUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1Byb3h5PiBjcmVhdGUodWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXImJiBo
YW5kbGVyLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRP
cmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3Jp
Z2luKQogICAgIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkZW55KCkg
eyBzZXRVc2VyTWVkaWFBY2Nlc3NJbmZvKGZhbHNlKTsgfQogICAgIHZvaWQgc2V0VXNlck1lZGlh
QWNjZXNzSW5mbyhib29sKTsKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICB2b2lkIGludmFs
aWRhdGUoKSB7IGNvbXBsZXRlKHsgfSk7IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lSUQ7IH0KICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdXNl
ck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fdXNlck1lZGlhRG9jdW1l
bnRTZWN1cml0eU9yaWdpbi5nZXQoKTsgfQpAQCAtNTYsNyArNTYsMTAgQEAgcHVibGljOgogICAg
IAogcHJpdmF0ZToKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSh1aW50NjRfdCBm
cmFtZUlELCBDb21wbGV0aW9uSGFuZGxlciYmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4m
JiB0b3BMZXZlbERvY3VtZW50T3JpZ2luKTsKKyAgICB+VXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
UHJveHkoKTsKIAorICAgIHZvaWQgY29tcGxldGUoT3B0aW9uYWw8Ym9vbD4gYWxsb3dlZCk7Cisg
ICAgCiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIENvbXBsZXRpb25IYW5kbGVyIG1fY29t
cGxldGlvbkhhbmRsZXI7CiAgICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3VzZXJN
ZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5jcHAKaW5kZXggOWZhM2E1MGQ5NjBhNDI1MDBhZTRlYzViZjQ3ZjVhYzk5MDQ3Y2U4NC4uMzFi
NDY3MTkxOTA3ODdjZDkwNmY1OWRkNGU1NTQxNmEzNjE0ZGJkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtNzUsOCArNzUsNiBAQCB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUGVuZGluZ1JlcXVlc3RzKCkKICAg
ICAgICAgcmVxdWVzdC0+aW52YWxpZGF0ZSgpOwogICAgIG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVl
c3RzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3BlbmRpbmdEZXZpY2VS
ZXF1ZXN0cy52YWx1ZXMoKSkKLSAgICAgICAgcmVxdWVzdC0+aW52YWxpZGF0ZSgpOwogICAgIG1f
cGVuZGluZ0RldmljZVJlcXVlc3RzLmNsZWFyKCk7CiB9CiAKQEAgLTkyLDIzICs5MCwxOCBAQCB2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjYXB0dXJlRGV2aWNl
c0NoYW5nZWQoKQogICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSB8fCAhbV9wYWdlLm1haW5GcmFt
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlcXVlc3RJRCA9IGdlbmVyYXRlUmVx
dWVzdElEKCk7Ci0gICAgYXV0byBoYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCByZXF1ZXN0SURdKGJvb2wgb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykgbXV0
YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgYXV0byBoYW5kbGVyID0gW3RoaXNd
KE9wdGlvbmFsPGJvb2w+IG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpIG11dGFibGUgeworICAg
ICAgICBpZiAoIW9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MgfHwgIW1fcGFnZS5pc1ZhbGlkKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1f
cGVuZGluZ0RldmljZVJlcXVlc3RzLnRha2UocmVxdWVzdElEKTsKLSAgICAgICAgaWYgKCFwZW5k
aW5nUmVxdWVzdCB8fCAhbV9wYWdlLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpZiAobV9ncmFudGVkUmVxdWVzdHMuaXNFbXB0eSgpICYmICFvcmlnaW5IYXNQZXJz
aXN0ZW50QWNjZXNzKQorICAgICAgICBpZiAobV9ncmFudGVkUmVxdWVzdHMuaXNFbXB0eSgpICYm
ICEqb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1cmVEZXZp
Y2VzQ2hhbmdlZCgpLCBtX3BhZ2UucGFnZUlEKCkpOwogICAgIH07CiAKICAgICBhdXRvIG9yaWdp
biA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9wYWdlLm1haW5GcmFtZSgpLT51
cmwoKSk7Ci0gICAgZ2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8ocmVxdWVzdElELCBtX3BhZ2Uu
bWFpbkZyYW1lKCktPmZyYW1lSUQoKSwgV1RGTW92ZShoYW5kbGVyKSwgb3JpZ2luLmdldCgpLCBX
VEZNb3ZlKG9yaWdpbikpOworICAgIGdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKG1fcGFnZS5t
YWluRnJhbWUoKS0+ZnJhbWVJRCgpLCBvcmlnaW4uZ2V0KCksIFdURk1vdmUob3JpZ2luKSwgV1RG
TW92ZShoYW5kbGVyKSk7CiAjZW5kaWYKIH0KIApAQCAtMTE3LDEzICsxMTAsNiBAQCB2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjbGVhckNhY2hlZFN0YXRlKCkK
ICAgICBpbnZhbGlkYXRlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKLVJlZjxVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5PiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6Y3JlYXRlUGVybWlzc2lvblJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90
IG1haW5GcmFtZUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdXNl
ck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3Vt
ZW50T3JpZ2luLCBWZWN0b3I8Q2FwdHVyZURldmljZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxD
YXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgTWVkaWFTdHJlYW1SZXF1ZXN0JiYgcmVxdWVz
dCkKLXsKLSAgICBhdXRvIHBlcm1pc3Npb25SZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eTo6Y3JlYXRlKCp0aGlzLCB1c2VyTWVkaWFJRCwgbWFpbkZyYW1lSUQsIGZyYW1l
SUQsIFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9j
dW1lbnRPcmlnaW4pLCBXVEZNb3ZlKGF1ZGlvRGV2aWNlcyksIFdURk1vdmUodmlkZW9EZXZpY2Vz
KSwgV1RGTW92ZShyZXF1ZXN0KSk7Ci0gICAgbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHMuYWRk
KHVzZXJNZWRpYUlELCBwZXJtaXNzaW9uUmVxdWVzdC5wdHIoKSk7Ci0gICAgcmV0dXJuIHBlcm1p
c3Npb25SZXF1ZXN0OwotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHN0YXRpYyB1aW50
NjRfdCB0b1dlYkNvcmUoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlh
QWNjZXNzRGVuaWFsUmVhc29uIHJlYXNvbikKIHsKQEAgLTE4OCwxNSArMTc0LDE4IEBAIHZvaWQg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnVzZXJNZWRpYUFjY2Vzc1dh
c0dyYW50ZWQodWludDY0X3QKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoKS5k
ZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luKHJlcXVlc3QtPnVzZXJNZWRpYURvY3VtZW50U2VjdXJp
dHlPcmlnaW4oKSwgcmVxdWVzdC0+dG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdXNlck1lZGlhSUQsIGF1ZGlvRGV2
aWNlID0gV1RGTW92ZShhdWRpb0RldmljZSksIHZpZGVvRGV2aWNlID0gV1RGTW92ZSh2aWRlb0Rl
dmljZSksIGxvY2FsUmVxdWVzdCA9IHJlcXVlc3QuY29weVJlZigpXSAoU3RyaW5nJiYgZGV2aWNl
SURIYXNoU2FsdCkgbXV0YWJsZSB7CisgICAgYXV0byYgdXNlck1lZGlhRG9jdW1lbnRTZWN1cml0
eU9yaWdpbiA9IHJlcXVlc3QtPnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKKyAg
ICBhdXRvJiB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSByZXF1ZXN0LT50b3BMZXZl
bERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKKyAgICBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgp
LmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbih1c2Vy
TWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmln
aW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCA9IHJlcXVl
c3QucmVsZWFzZU5vbk51bGwoKV0gKFN0cmluZyYmIGRldmljZUlESGFzaFNhbHQpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBp
ZiAoZ3JhbnRBY2Nlc3ModXNlck1lZGlhSUQsIFdURk1vdmUoYXVkaW9EZXZpY2UpLCBXVEZNb3Zl
KHZpZGVvRGV2aWNlKSwgV1RGTW92ZShkZXZpY2VJREhhc2hTYWx0KSkpIHsKLSAgICAgICAgICAg
IG1fZ3JhbnRlZFJlcXVlc3RzLmFwcGVuZChsb2NhbFJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7
Ci0gICAgICAgICAgICBpZiAobV9oYXNGaWx0ZXJlZERldmljZUxpc3QpCi0gICAgICAgICAgICAg
ICAgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7Ci0gICAgICAgICAgICBtX2hhc0ZpbHRlcmVkRGV2
aWNlTGlzdCA9IGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGlmICghZ3JhbnRBY2Nlc3MocmVx
dWVzdCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9ncmFudGVkUmVxdWVzdHMu
YXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICBpZiAobV9oYXNGaWx0ZXJlZERldmlj
ZUxpc3QpCisgICAgICAgICAgICBjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKyAgICAgICAgbV9o
YXNGaWx0ZXJlZERldmljZUxpc3QgPSBmYWxzZTsKICAgICB9KTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKHVzZXJNZWRpYUlEKTsKQEAgLTI2NiwxNCArMjU1LDE0IEBAIGJvb2wgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6Ondhc1JlcXVlc3REZW5pZWQodWludDY0X3Qg
bWFpbkZyYW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpncmFudEFjY2Vzcyh1aW50NjRfdCB1c2VyTWVkaWFJRCwg
Y29uc3QgQ2FwdHVyZURldmljZSBhdWRpb0RldmljZSwgY29uc3QgQ2FwdHVyZURldmljZSB2aWRl
b0RldmljZSwgY29uc3QgU3RyaW5nJiBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpCitib29sIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpncmFudEFjY2Vzcyhjb25zdCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0KQogewotICAgIGlmICghVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLndpbGxDcmVhdGVNZWRpYVN0cmVhbSgq
dGhpcywgISFhdWRpb0RldmljZSwgISF2aWRlb0RldmljZSkpIHsKLSAgICAgICAgZGVueVJlcXVl
c3QodXNlck1lZGlhSUQsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRp
YUFjY2Vzc0RlbmlhbFJlYXNvbjo6T3RoZXJGYWlsdXJlLCAiVW5hYmxlIHRvIGV4dGVuZCBzYW5k
Ym94LiIpOworICAgIGlmICghVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLndp
bGxDcmVhdGVNZWRpYVN0cmVhbSgqdGhpcywgcmVxdWVzdC5oYXNBdWRpb0RldmljZSgpLCByZXF1
ZXN0Lmhhc1ZpZGVvRGV2aWNlKCkpKSB7CisgICAgICAgIGRlbnlSZXF1ZXN0KHJlcXVlc3QudXNl
ck1lZGlhSUQoKSwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNj
ZXNzRGVuaWFsUmVhc29uOjpPdGhlckZhaWx1cmUsICJVbmFibGUgdG8gZXh0ZW5kIHNhbmRib3gu
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX3BhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQodXNlck1l
ZGlhSUQsIGF1ZGlvRGV2aWNlLCB2aWRlb0RldmljZSwgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQocmVxdWVzdC51c2VyTWVkaWFJRCgp
LCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCksIHJlcXVlc3QudmlkZW9EZXZpY2UoKSwgcmVxdWVzdC5k
ZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoKSksIG1fcGFnZS5wYWdlSUQoKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAjZW5kaWYKQEAgLTI5NiwyNSArMjg1LDI2IEBAIHZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnNjaGVkdWxlTmV4dFJlamVjdGlvbigpCiB9CiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OlJlcXVlc3RBY3Rpb24gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmdldFJlcXVlc3RBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW4m
IHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxEb2N1bWVu
dE9yaWdpbiwgY29uc3QgTWVkaWFTdHJlYW1SZXF1ZXN0JiB1c2VyUmVxdWVzdCwgVmVjdG9yPENh
cHR1cmVEZXZpY2U+JiBhdWRpb0RldmljZXMsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgdmlkZW9E
ZXZpY2VzKQorVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OlJlcXVlc3RB
Y3Rpb24gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdldFJlcXVlc3RB
Y3Rpb24oY29uc3QgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCkKIHsK
LSAgICBib29sIHJlcXVlc3RpbmdTY3JlZW5DYXB0dXJlID0gdXNlclJlcXVlc3QudHlwZSA9PSBN
ZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6OkRpc3BsYXlNZWRpYTsKLSAgICBBU1NFUlQoIShyZXF1
ZXN0aW5nU2NyZWVuQ2FwdHVyZSAmJiB2aWRlb0RldmljZXMuaXNFbXB0eSgpKSk7Ci0gICAgQVNT
RVJUKCEocmVxdWVzdGluZ1NjcmVlbkNhcHR1cmUgJiYgIWF1ZGlvRGV2aWNlcy5pc0VtcHR5KCkp
KTsKLSAgICBib29sIHJlcXVlc3RpbmdDYW1lcmEgPSAhcmVxdWVzdGluZ1NjcmVlbkNhcHR1cmUg
JiYgIXZpZGVvRGV2aWNlcy5pc0VtcHR5KCk7Ci0gICAgYm9vbCByZXF1ZXN0aW5nTWljcm9waG9u
ZSA9ICFhdWRpb0RldmljZXMuaXNFbXB0eSgpOworICAgIGJvb2wgcmVxdWVzdGluZ1NjcmVlbkNh
cHR1cmUgPSByZXF1ZXN0LnJlcXVlc3RUeXBlKCkgPT0gTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBl
OjpEaXNwbGF5TWVkaWE7CisgICAgYm9vbCByZXF1ZXN0aW5nQ2FtZXJhID0gIXJlcXVlc3RpbmdT
Y3JlZW5DYXB0dXJlICYmIHJlcXVlc3QuaGFzVmlkZW9EZXZpY2UoKTsKKyAgICBib29sIHJlcXVl
c3RpbmdNaWNyb3Bob25lID0gcmVxdWVzdC5oYXNBdWRpb0RldmljZSgpOwogCi0gICAgaWYgKHdh
c1JlcXVlc3REZW5pZWQoZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4sIHJlcXVlc3RpbmdNaWNyb3Bob25lLCByZXF1ZXN0aW5nQ2FtZXJhLCBy
ZXF1ZXN0aW5nU2NyZWVuQ2FwdHVyZSkpCisgICAgQVNTRVJUKCEocmVxdWVzdGluZ1NjcmVlbkNh
cHR1cmUgJiYgIXJlcXVlc3QuaGFzVmlkZW9EZXZpY2UoKSkpOworICAgIEFTU0VSVCghKHJlcXVl
c3RpbmdTY3JlZW5DYXB0dXJlICYmIHJlcXVlc3RpbmdNaWNyb3Bob25lKSk7CisKKyAgICBpZiAo
d2FzUmVxdWVzdERlbmllZChyZXF1ZXN0LmZyYW1lSUQoKSwgcmVxdWVzdC51c2VyTWVkaWFEb2N1
bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCksIHJlcXVlc3RpbmdNaWNyb3Bob25lLCByZXF1ZXN0aW5nQ2FtZXJhLCByZXF1ZXN0aW5n
U2NyZWVuQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBSZXF1ZXN0QWN0aW9uOjpEZW55OwogCi0g
ICAgaWYgKHVzZXJSZXF1ZXN0LnR5cGUgPT0gTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNw
bGF5TWVkaWEpCisgICAgaWYgKHJlcXVlc3QucmVxdWVzdFR5cGUoKSA9PSBNZWRpYVN0cmVhbVJl
cXVlc3Q6OlR5cGU6OkRpc3BsYXlNZWRpYSkKICAgICAgICAgcmV0dXJuIFJlcXVlc3RBY3Rpb246
OlByb21wdDsKIAotICAgIHJldHVybiBzZWFyY2hGb3JHcmFudGVkUmVxdWVzdChmcmFtZUlELCB1
c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgcmVxdWVzdGlu
Z01pY3JvcGhvbmUsIHJlcXVlc3RpbmdDYW1lcmEpID8gUmVxdWVzdEFjdGlvbjo6R3JhbnQgOiBS
ZXF1ZXN0QWN0aW9uOjpQcm9tcHQ7CisgICAgcmV0dXJuIHNlYXJjaEZvckdyYW50ZWRSZXF1ZXN0
KHJlcXVlc3QuZnJhbWVJRCgpLCByZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmln
aW4oKSwgcmVxdWVzdC50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdGlu
Z01pY3JvcGhvbmUsIHJlcXVlc3RpbmdDYW1lcmEpID8gUmVxdWVzdEFjdGlvbjo6R3JhbnQgOiBS
ZXF1ZXN0QWN0aW9uOjpQcm9tcHQ7CiB9CiAjZW5kaWYKIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFt
ZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbiwgY29uc3QgTWVkaWFTdHJlYW1SZXF1ZXN0JiB1c2VyUmVxdWVz
dCkKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RV
c2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIE1lZGlhU3RyZWFt
UmVxdWVzdCYmIHVzZXJSZXF1ZXN0KQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
aWYgKCFVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkuY2FwdHVyZUVuYWJsZWQo
KSkgewpAQCAtMzIzLDk1ICszMTMsNjEgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSgKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OkludmFs
aWRDb25zdHJhaW50c0hhbmRsZXIgaW52YWxpZEhhbmRsZXIgPSBbdGhpcywgdXNlck1lZGlhSURd
KGNvbnN0IFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpIHsKLSAgICAgICAgaWYgKCFtX3BhZ2Uu
aXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGRlbnlSZXF1ZXN0KHVz
ZXJNZWRpYUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nl
c3NEZW5pYWxSZWFzb246OkludmFsaWRDb25zdHJhaW50LCBpbnZhbGlkQ29uc3RyYWludCk7Ci0g
ICAgfTsKKyAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gdmFsaWRIYW5kbGVyID0gW3RoaXMsIHVzZXJNZWRpYUlELCBmcmFtZUlELCB1c2VyTWVk
aWFEb2N1bWVudE9yaWdpbiA9IHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmNvcHlSZWYoKSwgdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbiA9IHRvcExldmVsRG9jdW1lbnRPcmlnaW4uY29weVJlZigpLCBs
b2NhbFVzZXJSZXF1ZXN0ID0gdXNlclJlcXVlc3RdKFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIGF1
ZGlvRGV2aWNlcywgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBTdHJpbmcm
JiBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fcGFn
ZS5pc1ZhbGlkKCkgfHwgIW1fcGFnZS5tYWluRnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIHJlcXVlc3QgPSBtX3BlbmRpbmdVc2VyTWVkaWFSZXF1ZXN0cy5hZGQodXNlck1l
ZGlhSUQsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNl
ck1lZGlhSUQsIG1fcGFnZS5tYWluRnJhbWUoKS0+ZnJhbWVJRCgpLCBmcmFtZUlELCBXVEZNb3Zl
KHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2lu
KSwgeyB9LCB7IH0sIFdURk1vdmUodXNlclJlcXVlc3QpKSkuaXRlcmF0b3ItPnZhbHVlLmNvcHlS
ZWYoKTsKIAotICAgICAgICBpZiAodmlkZW9EZXZpY2VzLmlzRW1wdHkoKSAmJiBhdWRpb0Rldmlj
ZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBkZW55UmVxdWVzdCh1c2VyTWVkaWFJRCwgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29u
OjpOb0NvbnN0cmFpbnRzLCBlbXB0eVN0cmluZygpKTsKKyAgICBhdXRvJiB1c2VyTWVkaWFPcmln
aW4gPSByZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0
byYgdG9wTGV2ZWxPcmlnaW4gPSByZXF1ZXN0LT50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmln
aW4oKTsKKyAgICBnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyhmcmFtZUlELCB1c2VyTWVkaWFP
cmlnaW4sIHRvcExldmVsT3JpZ2luLCBbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QucmVsZWFzZU5v
bk51bGwoKV0oT3B0aW9uYWw8Ym9vbD4gaGFzUGVyc2lzdGVudEFjY2VzcykgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghcmVxdWVzdC0+aXNQZW5kaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KIAotICAgICAgICBhdXRvIGFjdGlvbiA9IGdldFJlcXVlc3RBY3Rpb24obV9wYWdl
Lm1haW5GcmFtZSgpLT5mcmFtZUlEKCksIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmdldCgpLCB0
b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpLCBsb2NhbFVzZXJSZXF1ZXN0LCBhdWRpb0Rldmlj
ZXMsIHZpZGVvRGV2aWNlcyk7Ci0gICAgICAgIGlmIChhY3Rpb24gPT0gUmVxdWVzdEFjdGlvbjo6
RGVueSkgewotICAgICAgICAgICAgZGVueVJlcXVlc3QodXNlck1lZGlhSUQsIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlz
c2lvbkRlbmllZCwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGlmICghaGFzUGVyc2lzdGVudEFj
Y2VzcykgeworICAgICAgICAgICAgcmVxdWVzdC0+ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246Ok90aGVyRmFpbHVyZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYWN0aW9uID09IFJl
cXVlc3RBY3Rpb246OkdyYW50KSB7Ci0gICAgICAgICAgICBBU1NFUlQobG9jYWxVc2VyUmVxdWVz
dC50eXBlICE9IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1lZGlhKTsKKyAgICAg
ICAgcHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksICpo
YXNQZXJzaXN0ZW50QWNjZXNzKTsKKyAgICB9KTsKK30KIAotICAgICAgICAgICAgaWYgKG1fcGFn
ZS5pc1ZpZXdWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzZWxlY3QgdGhlIGZp
cnN0IGF2YWlsYWJsZSBkZXZpY2VzLCBidXQgdGhlIGN1cnJlbnQgY2xpZW50IEFQSSBhbGxvd3Mg
Y2xpZW50IHRvIHNlbGVjdCB3aGljaCBkZXZpY2UgdG8gcGljay4KLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoZSBwb3NzaWJsaXR5IGZvciB0aGUgY2xpZW50IHRvIGRvIHRoZSBk
ZXZpY2Ugc2VsZWN0aW9uLgotICAgICAgICAgICAgICAgIGF1dG8gYXVkaW9EZXZpY2UgPSAhYXVk
aW9EZXZpY2VzLmlzRW1wdHkoKSA/IGF1ZGlvRGV2aWNlc1swXSA6IENhcHR1cmVEZXZpY2UoKTsK
LSAgICAgICAgICAgICAgICBhdXRvIHZpZGVvRGV2aWNlID0gIXZpZGVvRGV2aWNlcy5pc0VtcHR5
KCkgPyB2aWRlb0RldmljZXNbMF0gOiBDYXB0dXJlRGV2aWNlKCk7Ci0gICAgICAgICAgICAgICAg
Z3JhbnRBY2Nlc3ModXNlck1lZGlhSUQsIFdURk1vdmUoYXVkaW9EZXZpY2UpLCBXVEZNb3ZlKHZp
ZGVvRGV2aWNlKSwgV1RGTW92ZShkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpKTsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG1fcHJlZ3JhbnRlZFJlcXVlc3RzLmFwcGVuZChj
cmVhdGVQZXJtaXNzaW9uUmVxdWVzdCh1c2VyTWVkaWFJRCwgbV9wYWdlLm1haW5GcmFtZSgpLT5m
cmFtZUlEKCksIGZyYW1lSUQsIFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZN
b3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKGF1ZGlvRGV2aWNlcyksIFdURk1v
dmUodmlkZW9EZXZpY2VzKSwgV1RGTW92ZShsb2NhbFVzZXJSZXF1ZXN0KSkpOwordm9pZCBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0KFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiYmIHJlcXVl
c3QsIGJvb2wgaGFzUGVyc2lzdGVudEFjY2VzcykKK3sKKyAgICBpZiAoaGFzUGVyc2lzdGVudEFj
Y2VzcykKKyAgICAgICAgcmVxdWVzdC0+c2V0SGFzUGVyc2lzdGVudEFjY2VzcygpOwogCisgICAg
YXV0byYgdXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IHJlcXVlc3QtPnVzZXJNZWRp
YURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvJiB0b3BMZXZlbERvY3VtZW50U2Vj
dXJpdHlPcmlnaW4gPSByZXF1ZXN0LT50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsK
KyAgICBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCku
ZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbih1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
LCB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4sIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KV0gKFN0cmluZyYmIGRldmljZUlESGFzaFNhbHQpIG11dGFibGUgeworICAgICAg
ICBpZiAoIXJlcXVlc3QtPmlzUGVuZGluZygpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYXV0byB1c2VyTWVkaWFPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uZ2V0KCkpOwotICAgICAgICBhdXRvIHRv
cExldmVsT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvcExldmVsRG9jdW1l
bnRPcmlnaW4uZ2V0KCkpOwotICAgICAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gY3JlYXRlUGVy
bWlzc2lvblJlcXVlc3QodXNlck1lZGlhSUQsIG1fcGFnZS5tYWluRnJhbWUoKS0+ZnJhbWVJRCgp
LCBmcmFtZUlELCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BM
ZXZlbERvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShhdWRpb0RldmljZXMpLCBXVEZNb3ZlKHZpZGVv
RGV2aWNlcyksIFdURk1vdmUobG9jYWxVc2VyUmVxdWVzdCkpOwotCi0gICAgICAgIGlmIChtX3Bh
Z2UuaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkpIHsKLSAgICAgICAgICAgIGlmIChXZWJBdXRv
bWF0aW9uU2Vzc2lvbiogYXV0b21hdGlvblNlc3Npb24gPSBtX3BhZ2UucHJvY2VzcygpLnByb2Nl
c3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRv
bWF0aW9uU2Vzc2lvbi0+c2hvdWxkQWxsb3dHZXRVc2VyTWVkaWFGb3JQYWdlKG1fcGFnZSkpCi0g
ICAgICAgICAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5hbGxvdygpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdXNlck1lZGlhQWNjZXNzV2FzRGVuaWVkKHVz
ZXJNZWRpYUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nl
c3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogCisgICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OkludmFsaWRDb25zdHJhaW50c0hhbmRsZXIgaW52YWxpZEhhbmRsZXIg
PSBbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QuY29weVJlZigpXShjb25zdCBTdHJpbmcmIGludmFs
aWRDb25zdHJhaW50KSB7CisgICAgICAgICAgICBpZiAoIXJlcXVlc3QtPmlzUGVuZGluZygpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogCi0gICAg
ICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkg
JiYgIW1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc1Byb21wdEVuYWJsZWQo
KSkgewotICAgICAgICAgICAgcGVuZGluZ1JlcXVlc3QtPmFsbG93KCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gSWYgcGFnZSBuYXZpZ2F0ZWQsIHRo
ZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCB0aGUgcGFnZSBjbGllbnQgZm9yIGF1dGhvcml6YXRpb24u
Ci0gICAgICAgIGF1dG8qIHdlYkZyYW1lID0gbV9wYWdlLnByb2Nlc3MoKS53ZWJGcmFtZShmcmFt
ZUlEKTsKKyAgICAgICAgICAgIHByb2Nlc3NVc2VyTWVkaWFQZXJtaXNzaW9uSW52YWxpZFJlcXVl
c3QocmVxdWVzdC5nZXQoKSwgaW52YWxpZENvbnN0cmFpbnQpOworICAgICAgICB9OwogCi0gICAg
ICAgIGlmICghd2ViRnJhbWUgfHwgIVNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG1f
cGFnZS5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydCh0
b3BMZXZlbE9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKLSAgICAgICAgICAgIGRlbnlSZXF1
ZXN0KHVzZXJNZWRpYUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVk
aWFBY2Nlc3NEZW5pYWxSZWFzb246Ok5vQ29uc3RyYWludHMsIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB3
ZWJGcmFtZSwgdXNlck1lZGlhT3JpZ2luIGFuZCB0b3BMZXZlbE9yaWdpbiBmcm9tIHRoaXMgdWlD
bGllbnQgQVBJIGNhbGwuCi0gICAgICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZv
clVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KG1fcGFnZSwgKndlYkZyYW1lLCBXVEZNb3ZlKHVz
ZXJNZWRpYU9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxPcmlnaW4pLCBwZW5kaW5nUmVxdWVzdC5n
ZXQoKSk7Ci0gICAgfTsKKyAgICAgICAgYXV0byB2YWxpZEhhbmRsZXIgPSBbdGhpcywgcmVxdWVz
dCA9IHJlcXVlc3QuY29weVJlZigpXShWZWN0b3I8Q2FwdHVyZURldmljZT4mJiBhdWRpb0Rldmlj
ZXMsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgU3RyaW5nJiYgZGV2aWNl
SWRlbnRpZmllckhhc2hTYWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcmVxdWVzdC0+
aXNQZW5kaW5nKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZXF1ZXN0
SUQgPSBnZW5lcmF0ZVJlcXVlc3RJRCgpOwotICAgIGF1dG8gaGF2ZVBlcm1pc3Npb25JbmZvSGFu
ZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdElELCB2
YWxpZEhhbmRsZXIgPSBXVEZNb3ZlKHZhbGlkSGFuZGxlciksIGludmFsaWRIYW5kbGVyID0gV1RG
TW92ZShpbnZhbGlkSGFuZGxlciksIGxvY2FsVXNlclJlcXVlc3QgPSB1c2VyUmVxdWVzdF0oYm9v
bCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFr
VGhpcykKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICghbV9wYWdlLmlzVmFs
aWQoKSB8fCAhbV9wYWdlLm1haW5GcmFtZSgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMudGFr
ZShyZXF1ZXN0SUQpOwotICAgICAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHByb2Nlc3NVc2VyTWVkaWFQZXJtaXNzaW9uVmFsaWRSZXF1ZXN0
KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoYXVkaW9EZXZpY2VzKSwgV1RGTW92ZSh2aWRlb0Rl
dmljZXMpLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCkpOworICAgICAgICB9Owog
CiAgICAgICAgIHN5bmNXaXRoV2ViQ29yZVByZWZzKCk7CiAKLSAgICAgICAgbV9wYWdlLndlYnNp
dGVEYXRhU3RvcmUoKS5kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRG
b3JPcmlnaW4ocGVuZGluZ1JlcXVlc3QudmFsdWUoKS0+dXNlck1lZGlhRG9jdW1lbnRTZWN1cml0
eU9yaWdpbigpLCBwZW5kaW5nUmVxdWVzdC52YWx1ZSgpLT50b3BMZXZlbERvY3VtZW50U2VjdXJp
dHlPcmlnaW4oKSwgW3ZhbGlkSGFuZGxlciA9IFdURk1vdmUodmFsaWRIYW5kbGVyKSwgaW52YWxp
ZEhhbmRsZXIgPSBXVEZNb3ZlKGludmFsaWRIYW5kbGVyKSwgbG9jYWxVc2VyUmVxdWVzdCA9IGxv
Y2FsVXNlclJlcXVlc3RdIChTdHJpbmcmJiBkZXZpY2VJREhhc2hTYWx0KSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKFdURk1vdmUodmFsaWRIYW5kbGVyKSwgV1RGTW92ZShpbnZhbGlk
SGFuZGxlciksIFdURk1vdmUobG9jYWxVc2VyUmVxdWVzdCksIFdURk1vdmUoZGV2aWNlSURIYXNo
U2FsdCkpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgZ2V0VXNlck1lZGlhUGVybWlzc2lv
bkluZm8ocmVxdWVzdElELCBmcmFtZUlELCBXVEZNb3ZlKGhhdmVQZXJtaXNzaW9uSW5mb0hhbmRs
ZXIpLCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERv
Y3VtZW50T3JpZ2luKSk7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmds
ZXRvbigpLnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFdURk1vdmUodmFsaWRIYW5kbGVyKSwg
V1RGTW92ZShpbnZhbGlkSGFuZGxlciksIHJlcXVlc3QtPnVzZXJSZXF1ZXN0KCksIFdURk1vdmUo
ZGV2aWNlSURIYXNoU2FsdCkpOworICAgIH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odXNl
ck1lZGlhSUQpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTQyMiwxOSArMzc4LDkz
IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RV
c2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUoCiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z2V0VXNlck1l
ZGlhUGVybWlzc2lvbkluZm8odWludDY0X3QgcmVxdWVzdElELCB1aW50NjRfdCBmcmFtZUlELCBV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVy
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luKQordm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25JbnZh
bGlkUmVxdWVzdChjb25zdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQoreworICAgIGJvb2wgZmlsdGVyQ29u
c3RyYWludCA9ICFyZXF1ZXN0Lmhhc1BlcnNpc3RlbnRBY2Nlc3MoKSAmJiAhd2FzR3JhbnRlZFZp
ZGVvT3JBdWRpb0FjY2VzcyhyZXF1ZXN0LmZyYW1lSUQoKSwgcmVxdWVzdC51c2VyTWVkaWFEb2N1
bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCkpOworCisgICAgZGVueVJlcXVlc3QocmVxdWVzdC51c2VyTWVkaWFJRCgpLCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246Oklu
dmFsaWRDb25zdHJhaW50LCBmaWx0ZXJDb25zdHJhaW50ID8gU3RyaW5nIHsgfSA6IGludmFsaWRD
b25zdHJhaW50KTsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6cHJvY2Vzc1VzZXJNZWRpYVBlcm1pc3Npb25WYWxpZFJlcXVlc3QoUmVmPFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+JiYgcmVxdWVzdCwgVmVjdG9yPENhcHR1cmVEZXZpY2U+
JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFN0
cmluZyYmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCkKK3sKKyAgICBpZiAodmlkZW9EZXZpY2Vz
LmlzRW1wdHkoKSAmJiBhdWRpb0RldmljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGRlbnlSZXF1
ZXN0KHJlcXVlc3QtPnVzZXJNZWRpYUlEKCksIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6Tm9Db25zdHJhaW50cywgZW1wdHlTdHJp
bmcoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXF1ZXN0LT5zZXREZXZpY2VJ
ZGVudGlmaWVySGFzaFNhbHQoV1RGTW92ZShkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpKTsKKyAg
ICByZXF1ZXN0LT5zZXRFbGlnaWJsZVZpZGVvRGV2aWNlVUlEcyhXVEZNb3ZlKHZpZGVvRGV2aWNl
cykpOworICAgIHJlcXVlc3QtPnNldEVsaWdpYmxlQXVkaW9EZXZpY2VVSURzKFdURk1vdmUoYXVk
aW9EZXZpY2VzKSk7CisKKyAgICBhdXRvIGFjdGlvbiA9IGdldFJlcXVlc3RBY3Rpb24ocmVxdWVz
dCk7CisgICAgaWYgKGFjdGlvbiA9PSBSZXF1ZXN0QWN0aW9uOjpEZW55KSB7CisgICAgICAgIGRl
bnlSZXF1ZXN0KHJlcXVlc3QtPnVzZXJNZWRpYUlEKCksIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCwg
ZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYWN0aW9u
ID09IFJlcXVlc3RBY3Rpb246OkdyYW50KSB7CisgICAgICAgIEFTU0VSVChyZXF1ZXN0LT5yZXF1
ZXN0VHlwZSgpICE9IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1lZGlhKTsKKwor
ICAgICAgICBpZiAobV9wYWdlLmlzVmlld1Zpc2libGUoKSkKKyAgICAgICAgICAgIGdyYW50QWNj
ZXNzKHJlcXVlc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3ByZWdyYW50ZWRSZXF1
ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtX3BhZ2UuaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkpIHsKKyAgICAgICAg
aWYgKFdlYkF1dG9tYXRpb25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9j
ZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKSB7CisgICAgICAgICAgICBp
ZiAoYXV0b21hdGlvblNlc3Npb24tPnNob3VsZEFsbG93R2V0VXNlck1lZGlhRm9yUGFnZShtX3Bh
Z2UpKQorICAgICAgICAgICAgICAgIHJlcXVlc3QtPmFsbG93KCk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdXNlck1lZGlhQWNjZXNzV2FzRGVuaWVkKHJlcXVlc3QtPnVzZXJN
ZWRpYUlEKCksIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vz
c0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CisKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2Fw
dHVyZURldmljZXNFbmFibGVkKCkgJiYgIW1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJl
RGV2aWNlc1Byb21wdEVuYWJsZWQoKSkgeworICAgICAgICByZXF1ZXN0LT5hbGxvdygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgcGFnZSBuYXZpZ2F0ZWQsIHRoZXJlIGlz
IG5vIG5lZWQgdG8gY2FsbCB0aGUgcGFnZSBjbGllbnQgZm9yIGF1dGhvcml6YXRpb24uCisgICAg
YXV0byogd2ViRnJhbWUgPSBtX3BhZ2UucHJvY2VzcygpLndlYkZyYW1lKHJlcXVlc3QtPmZyYW1l
SUQoKSk7CisKKyAgICBpZiAoIXdlYkZyYW1lIHx8ICFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyhtX3BhZ2UucGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKS0+aXNTYW1lU2NoZW1l
SG9zdFBvcnQocmVxdWVzdC0+dG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpKSB7Cisg
ICAgICAgIGRlbnlSZXF1ZXN0KHJlcXVlc3QtPnVzZXJNZWRpYUlEKCksIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6Tm9Db25zdHJh
aW50cywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBG
SVhNRTogUmVtb3ZlIHdlYkZyYW1lLCB1c2VyTWVkaWFPcmlnaW4gYW5kIHRvcExldmVsT3JpZ2lu
IGZyb20gdGhpcyB1aUNsaWVudCBBUEkgY2FsbC4KKyAgICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9
IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gdG9wTGV2ZWxPcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUocmVxdWVzdC0+dG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkp
OworICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KG1fcGFnZSwgKndlYkZyYW1lLCBXVEZNb3ZlKHVzZXJNZWRpYU9yaWdpbiksIFdU
Rk1vdmUodG9wTGV2ZWxPcmlnaW4pLCByZXF1ZXN0KTsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8odWlu
dDY0X3QgZnJhbWVJRCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3Jp
Z2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxib29sPik+JiYgaGFuZGxlcikKIHsKICAgICBhdXRv
KiB3ZWJGcmFtZSA9IG1fcGFnZS5wcm9jZXNzKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYg
KCF3ZWJGcmFtZSB8fCAhU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcobV9wYWdlLnBh
Z2VMb2FkU3RhdGUoKS5hY3RpdmVVUkwoKSktPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHRvcExldmVs
RG9jdW1lbnRPcmlnaW4uZ2V0KCkpKSB7Ci0gICAgICAgIGhhbmRsZXIoZmFsc2UpOworICAgICAg
ICBoYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHVzZXJN
ZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1c2VyTWVkaWFEb2N1bWVu
dE9yaWdpbi5nZXQoKSk7CiAgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpKTsKLSAgICBhdXRvIHJl
cXVlc3QgPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6Y3JlYXRlKGZyYW1lSUQsIFdU
Rk1vdmUoaGFuZGxlciksIFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3Zl
KHRvcExldmVsRG9jdW1lbnRPcmlnaW4pKTsKIAotICAgIG1fcGVuZGluZ0RldmljZVJlcXVlc3Rz
LmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QuY29weVJlZigpKTsKKyAgICBhdXRvIHJlcXVlc3RJRCA9
IGdlbmVyYXRlUmVxdWVzdElEKCk7CisgICAgbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMuYWRkKHJl
cXVlc3RJRCk7CisKKyAgICBhdXRvIHJlcXVlc3QgPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eTo6Y3JlYXRlKGZyYW1lSUQsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcmVxdWVzdElELCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oT3B0aW9uYWw8Ym9vbD4g
YWxsb3dlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIW1fcGVuZGluZ0Rl
dmljZVJlcXVlc3RzLnJlbW92ZShyZXF1ZXN0SUQpIHx8ICFhbGxvd2VkKSB7CisgICAgICAgICAg
ICBoYW5kbGVyKHsgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
aGFuZGxlcigqYWxsb3dlZCk7CisgICAgfSwgV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdp
biksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbikpOworCiAgICAgLy8gRklYTUU6IFJl
bW92ZSB3ZWJGcmFtZSwgdXNlck1lZGlhT3JpZ2luIGFuZCB0b3BMZXZlbE9yaWdpbiBmcm9tIHRo
aXMgdWlDbGllbnQgQVBJIGNhbGwuCiAgICAgbV9wYWdlLnVpQ2xpZW50KCkuY2hlY2tVc2VyTWVk
aWFQZXJtaXNzaW9uRm9yT3JpZ2luKG1fcGFnZSwgKndlYkZyYW1lLCB1c2VyTWVkaWFPcmlnaW4u
Z2V0KCksIHRvcExldmVsT3JpZ2luLmdldCgpLCByZXF1ZXN0LmdldCgpKTsKIH0KQEAgLTQ1Nywx
MiArNDg3LDkgQEAgYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
d2FzR3JhbnRlZFZpZGVvT3JBdWRpb0FjY2Vzcyh1aW50NjQKIAogICAgIHJldHVybiBmYWxzZTsK
IH0KLSNlbmRpZgogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjplbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3Jp
Z2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbikKK1ZlY3Rv
cjxDYXB0dXJlRGV2aWNlPiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
Y29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChib29sIHJldmVhbElkc0FuZExhYmVscywgY29uc3Qg
U3RyaW5nJiBkZXZpY2VJREhhc2hTYWx0KQogewotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0K
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdE1h
eGltdW1DYW1lcmFDb3VudCA9IDI7CiAjZWxzZQpAQCAtNDcwLDE5ICs0OTcsNTYgQEAgdm9pZCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZp
Y2VzRm9yRnJhbWUodWludDYKICNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdE1h
eGltdW1NaWNyb3Bob25lQ291bnQgPSAxOwogCi0gICAgYXV0byByZXF1ZXN0SUQgPSBnZW5lcmF0
ZVJlcXVlc3RJRCgpOwotICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3RJRCwgdXNlck1lZGlhSUQsIHJlcXVlc3RP
cmlnaW4gPSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCksIHRvcE9yaWdpbiA9IHRv
cExldmVsRG9jdW1lbnRPcmlnaW4uY29weVJlZigpXShib29sIG9yaWdpbkhhc1BlcnNpc3RlbnRB
Y2Nlc3MpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgIGF1dG8gZGV2aWNl
cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFt
RGV2aWNlcygpOworICAgIGludCBjYW1lcmFDb3VudCA9IDA7CisgICAgaW50IG1pY3JvcGhvbmVD
b3VudCA9IDA7CisKKyAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gZmlsdGVyZWREZXZpY2VzOwor
ICAgIGZvciAoY29uc3QgYXV0byYgZGV2aWNlIDogZGV2aWNlcykgeworICAgICAgICBpZiAoIWRl
dmljZS5lbmFibGVkKCkgfHwgKGRldmljZS50eXBlKCkgIT0gV2ViQ29yZTo6Q2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZTo6Q2FtZXJhICYmIGRldmljZS50eXBlKCkgIT0gV2ViQ29yZTo6Q2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBpZiAoIXJldmVhbElkc0FuZExhYmVscykgeworICAgICAgICAgICAgaWYgKGRl
dmljZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJh
ICYmICsrY2FtZXJhQ291bnQgPiBkZWZhdWx0TWF4aW11bUNhbWVyYUNvdW50KQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gV2ViQ29y
ZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSAmJiArK21pY3JvcGhvbmVD
b3VudCA+IGRlZmF1bHRNYXhpbXVtTWljcm9waG9uZUNvdW50KQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBsYWJlbCA9IGVtcHR5U3RyaW5nKCk7
CisgICAgICAgIGF1dG8gaWQgPSBlbXB0eVN0cmluZygpOworICAgICAgICBhdXRvIGdyb3VwSWQg
PSBlbXB0eVN0cmluZygpOworICAgICAgICBpZiAocmV2ZWFsSWRzQW5kTGFiZWxzKSB7CisgICAg
ICAgICAgICBsYWJlbCA9IGRldmljZS5sYWJlbCgpOworICAgICAgICAgICAgaWQgPSBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5oYXNoU3RyaW5nV2l0aFNhbHQoZGV2aWNl
LnBlcnNpc3RlbnRJZCgpLCBkZXZpY2VJREhhc2hTYWx0KTsKKyAgICAgICAgICAgIGdyb3VwSWQg
PSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5oYXNoU3RyaW5nV2l0aFNh
bHQoZGV2aWNlLmdyb3VwSWQoKSwgZGV2aWNlSURIYXNoU2FsdCk7CisgICAgICAgIH0KKworICAg
ICAgICBmaWx0ZXJlZERldmljZXMuYXBwZW5kKENhcHR1cmVEZXZpY2UoaWQsIGRldmljZS50eXBl
KCksIGxhYmVsLCBncm91cElkKSk7CisgICAgfQorCisgICAgbV9oYXNGaWx0ZXJlZERldmljZUxp
c3QgPSAhcmV2ZWFsSWRzQW5kTGFiZWxzOworICAgIHJldHVybiBmaWx0ZXJlZERldmljZXM7Cit9
CisjZW5kaWYKKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdp
biwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4pCit7CisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMs
IHVzZXJNZWRpYUlELCBmcmFtZUlELCB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiA9IHVzZXJNZWRp
YURvY3VtZW50T3JpZ2luLmNvcHlSZWYoKSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiA9IHRvcExl
dmVsRG9jdW1lbnRPcmlnaW4uY29weVJlZigpXShPcHRpb25hbDxib29sPiBvcmlnaW5IYXNQZXJz
aXN0ZW50QWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFvcmlnaW5IYXNQZXJzaXN0ZW50
QWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghbV9wYWdlLmlzVmFs
aWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX3BhZ2Uud2Vic2l0ZURhdGFT
dG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdp
bihyZXF1ZXN0T3JpZ2luLmdldCgpLCB0b3BPcmlnaW4uZ2V0KCksIFt0aGlzLCB3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpLCByZXF1ZXN0SUQsIHVzZXJNZWRpYUlELCAmb3JpZ2luSGFzUGVy
c2lzdGVudEFjY2Vzc10gKFN0cmluZyYmIGRldmljZUlESGFzaFNhbHQpIHsKLSAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYXV0
byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0RldmljZVJlcXVlc3RzLnRha2UocmVxdWVzdElE
KTsKLSAgICAgICAgICAgIGlmICghcGVuZGluZ1JlcXVlc3QpCisgICAgICAgIGF1dG8gcmVxdWVz
dElEID0gZ2VuZXJhdGVSZXF1ZXN0SUQoKTsKKyAgICAgICAgbV9wZW5kaW5nRGV2aWNlUmVxdWVz
dHMuYWRkKHJlcXVlc3RJRCk7CisKKyAgICAgICAgYXV0byYgcmVxdWVzdE9yaWdpbiA9IHVzZXJN
ZWRpYURvY3VtZW50T3JpZ2luLmdldCgpOworICAgICAgICBhdXRvJiB0b3BPcmlnaW4gPSB0b3BM
ZXZlbERvY3VtZW50T3JpZ2luLmdldCgpOworICAgICAgICBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9y
ZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbihy
ZXF1ZXN0T3JpZ2luLCB0b3BPcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgcmVxdWVzdElELCBmcmFtZUlELCB1c2VyTWVkaWFJRCwgdXNlck1lZGlhRG9jdW1lbnRP
cmlnaW4gPSBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgdG9wTGV2ZWxEb2N1bWVu
dE9yaWdpbiA9IFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbiksIG9yaWdpbkhhc1BlcnNp
c3RlbnRBY2Nlc3MgPSAqb3JpZ2luSGFzUGVyc2lzdGVudEFjY2Vzc10gKFN0cmluZyYmIGRldmlj
ZUlESGFzaFNhbHQpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIW1fcGVuZGluZ0Rl
dmljZVJlcXVlc3RzLnJlbW92ZShyZXF1ZXN0SUQpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpKQpAQCAtNDkwLDQzICs1NTQsMTMg
QEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRl
TWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDYKIAogICAgICAgICAgICAgc3luY1dpdGhXZWJDb3Jl
UHJlZnMoKTsKIAotICAgICAgICAgICAgYXV0byBkZXZpY2VzID0gUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJlYW1EZXZpY2VzKCk7Ci0gICAgICAgICAg
ICBhdXRvJiByZXF1ZXN0ID0gKnBlbmRpbmdSZXF1ZXN0OwotICAgICAgICAgICAgYm9vbCByZXZl
YWxJZHNBbmRMYWJlbHMgPSBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIHx8IHdhc0dyYW50ZWRW
aWRlb09yQXVkaW9BY2Nlc3MocmVxdWVzdC0+ZnJhbWVJRCgpLCByZXF1ZXN0LT51c2VyTWVkaWFE
b2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QtPnRvcExldmVsRG9jdW1lbnRTZWN1cml0
eU9yaWdpbigpKTsKLSAgICAgICAgICAgIGludCBjYW1lcmFDb3VudCA9IDA7Ci0gICAgICAgICAg
ICBpbnQgbWljcm9waG9uZUNvdW50ID0gMDsKLQotICAgICAgICAgICAgVmVjdG9yPENhcHR1cmVE
ZXZpY2U+IGZpbHRlcmVkRGV2aWNlczsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2
aWNlIDogZGV2aWNlcykgewotICAgICAgICAgICAgICAgIGlmICghZGV2aWNlLmVuYWJsZWQoKSB8
fCAoZGV2aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpD
YW1lcmEgJiYgZGV2aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpNaWNyb3Bob25lKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoIXJldmVhbElkc0FuZExhYmVscykgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoZGV2aWNlLnR5cGUoKSA9PSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpDYW1lcmEgJiYgKytjYW1lcmFDb3VudCA+IGRlZmF1bHRNYXhpbXVtQ2FtZXJhQ291bnQpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGRldmljZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWlj
cm9waG9uZSAmJiArK21pY3JvcGhvbmVDb3VudCA+IGRlZmF1bHRNYXhpbXVtTWljcm9waG9uZUNv
dW50KQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgYXV0byBsYWJlbCA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAg
ICAgICAgICAgYXV0byBpZCA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBn
cm91cElkID0gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBpZiAocmV2ZWFsSWRzQW5k
TGFiZWxzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gZGV2aWNlLmxhYmVsKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlkID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KGRldmljZS5wZXJzaXN0ZW50SWQoKSwgZGV2aWNlSURI
YXNoU2FsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyb3VwSWQgPSBSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5oYXNoU3RyaW5nV2l0aFNhbHQoZGV2aWNlLmdyb3VwSWQo
KSwgZGV2aWNlSURIYXNoU2FsdCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgZmlsdGVyZWREZXZpY2VzLmFwcGVuZChDYXB0dXJlRGV2aWNlKGlkLCBkZXZpY2UudHlwZSgp
LCBsYWJlbCwgZ3JvdXBJZCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX2hhc0Zp
bHRlcmVkRGV2aWNlTGlzdCA9ICFyZXZlYWxJZHNBbmRMYWJlbHM7Ci0KLSAgICAgICAgICAgIG1f
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVNZWRpYURl
dmljZUVudW1lcmF0aW9uKHVzZXJNZWRpYUlELCBXVEZNb3ZlKGZpbHRlcmVkRGV2aWNlcyksIFdU
Rk1vdmUoZGV2aWNlSURIYXNoU2FsdCksIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgICAgICAgICAgYm9vbCByZXZlYWxJZHNBbmRMYWJlbHMgPSBvcmln
aW5IYXNQZXJzaXN0ZW50QWNjZXNzIHx8IHdhc0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nlc3MoZnJh
bWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uZ2V0KCksIHRvcExldmVsRG9jdW1lbnRPcmln
aW4uZ2V0KCkpOworCisgICAgICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbiB7IHVzZXJNZWRpYUlE
LCBjb21wdXRlRmlsdGVyZWREZXZpY2VMaXN0KHJldmVhbElkc0FuZExhYmVscywgZGV2aWNlSURI
YXNoU2FsdCksIGRldmljZUlESGFzaFNhbHQsIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MgfSwg
bV9wYWdlLnBhZ2VJRCgpKTsKICAgICAgICAgfSk7CiAgICAgfTsKIAotICAgIGdldFVzZXJNZWRp
YVBlcm1pc3Npb25JbmZvKHJlcXVlc3RJRCwgZnJhbWVJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVs
RG9jdW1lbnRPcmlnaW4pKTsKKyAgICBnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyhmcmFtZUlE
LCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3Vt
ZW50T3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0odXNlck1lZGlhSUQpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IGVhY2NlNmY5MmI2NWZmY2MyOWJlNGQxMzc4
OGRhODFkOTE1OTA1NTguLmExMTVjNDM4Njc1MzdlYzhkNTNkZjVkZmJlNTJlMmVjZDY5MTVlMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtMjMsNiArMjMsNyBAQAogI2lu
Y2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhUHJvZHVjZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+
CkBAIC00OCw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZVBlbmRpbmdS
ZXF1ZXN0cygpOwogCi0gICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1l
KHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+JiYgIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVk
aWFTdHJlYW1SZXF1ZXN0Jik7CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZv
ckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYgIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgV2ViQ29yZTo6TWVk
aWFTdHJlYW1SZXF1ZXN0JiYpOwogCiAgICAgdm9pZCByZXNldEFjY2Vzcyh1aW50NjRfdCBtYWlu
RnJhbWVJRCk7CiAgICAgdm9pZCB2aWV3SXNCZWNvbWluZ1Zpc2libGUoKTsKQEAgLTcxLDI3ICs3
MiwzMyBAQCBwcml2YXRlOgogICAgIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
PiBjcmVhdGVQZXJtaXNzaW9uUmVxdWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3Qg
bWFpbkZyYW1lSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
PiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNl
PiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9E
ZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJik7CiAgICAgdm9pZCBkZW55UmVx
dWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uLCBjb25zdCBTdHJpbmcmIGludmFsaWRDb25z
dHJhaW50KTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGJvb2wgZ3JhbnRBY2Nlc3Mo
dWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgYXVkaW9E
ZXZpY2UsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgdmlkZW9EZXZpY2UsIGNvbnN0IFN0
cmluZyYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KTsKKyAgICBib29sIGdyYW50QWNjZXNzKGNv
bnN0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKTsKIAogICAgIGNvbnN0IFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHNlYXJjaEZvckdyYW50ZWRSZXF1ZXN0KHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1
bWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1l
bnRPcmlnaW4sIGJvb2wgbmVlZHNBdWRpbywgYm9vbCBuZWVkc1ZpZGVvKSBjb25zdDsKICAgICBi
b29sIHdhc1JlcXVlc3REZW5pZWQodWludDY0X3QgbWFpbkZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIGJvb2wgbmVlZHNBdWRpbywg
Ym9vbCBuZWVkc1ZpZGVvLCBib29sIG5lZWRzU2NyZWVuQ2FwdHVyZSk7CiAKLSAgICB2b2lkIGdl
dFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKHVpbnQ2NF90IHJlcXVlc3RJRCwgdWludDY0X3QgZnJh
bWVJRCwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OkNvbXBsZXRpb25IYW5kbGVyJiYs
IFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwg
UmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4pOwor
ICAgIHZvaWQgZ2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8odWludDY0X3QgZnJhbWVJRCwgUmVm
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxib29sPik+JiYpOwogCiAgICAgZW51bSBjbGFzcyBS
ZXF1ZXN0QWN0aW9uIHsKICAgICAgICAgRGVueSwKICAgICAgICAgR3JhbnQsCiAgICAgICAgIFBy
b21wdAogICAgIH07Ci0gICAgUmVxdWVzdEFjdGlvbiBnZXRSZXF1ZXN0QWN0aW9uKHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdp
biwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2
aWNlPiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mIHZpZGVv
RGV2aWNlcyk7CisgICAgUmVxdWVzdEFjdGlvbiBnZXRSZXF1ZXN0QWN0aW9uKGNvbnN0IFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKTsKIAogICAgIGJvb2wgd2FzR3JhbnRlZFZpZGVv
T3JBdWRpb0FjY2Vzcyh1aW50NjRfdCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHVz
ZXJNZWRpYURvY3VtZW50T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmlj
ZT4gY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChib29sIHJldmVhbElkc0FuZExhYmVscywgY29u
c3QgU3RyaW5nJiBkZXZpY2VJREhhc2hTYWx0KTsKKworICAgIHZvaWQgcHJvY2Vzc1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiYm
LCBib29sIGhhc1BlcnNpc3RlbnRBY2Nlc3MpOworICAgIHZvaWQgcHJvY2Vzc1VzZXJNZWRpYVBl
cm1pc3Npb25JbnZhbGlkUmVxdWVzdChjb25zdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5JiwgY29uc3QgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCk7CisgICAgdm9pZCBwcm9jZXNz
VXNlck1lZGlhUGVybWlzc2lvblZhbGlkUmVxdWVzdChSZWY8VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eT4mJiwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZp
Y2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFN0cmlu
ZyYmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk7CiAjZW5kaWYKIAogICAgIHZvaWQgd2F0Y2hk
b2dUaW1lckZpcmVkKCk7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eT4+IG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzOwotICAg
IEhhc2hNYXA8dWludDY0X3QsIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eT4+IG1f
cGVuZGluZ0RldmljZVJlcXVlc3RzOworICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1fcGVuZGluZ0Rl
dmljZVJlcXVlc3RzOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkuaAppbmRleCBhYzgwNWU3ODhiZTIzMTdlMGE3YWFlYjcxODkwOWNmNDViY2E4OTA4Li4wNjdm
ODAyMDNmMWE1ZmRkMzIzOGM4YWUyOWQ3ZGNhY2ExYWVhMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5o
CkBAIC00OCwyMSArNDgsNDIgQEAgcHVibGljOgogICAgIHZvaWQgZGVueShVc2VyTWVkaWFBY2Nl
c3NEZW5pYWxSZWFzb24gPSBVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlVzZXJNZWRpYURp
c2FibGVkKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIGJvb2wgaXNQZW5kaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9tYW5hZ2VyOyB9CiAKICAgICBib29sIHJlcXVpcmVzQXVkaW9DYXB0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lbGlnaWJsZUF1ZGlvRGV2aWNlcy5zaXplKCk7IH0KICAg
ICBib29sIHJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gIXJlcXVpcmVzRGlz
cGxheUNhcHR1cmUoKSAmJiBtX2VsaWdpYmxlVmlkZW9EZXZpY2VzLnNpemUoKTsgfQogICAgIGJv
b2wgcmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdC50eXBl
ID09IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1lZGlhICYmIG1f
ZWxpZ2libGVWaWRlb0RldmljZXMuc2l6ZSgpOyB9CiAKKyAgICB2b2lkIHNldEVsaWdpYmxlVmlk
ZW9EZXZpY2VVSURzKFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGRldmljZXMpIHsg
bV9lbGlnaWJsZVZpZGVvRGV2aWNlcyA9IFdURk1vdmUoZGV2aWNlcyk7IH0KKyAgICB2b2lkIHNl
dEVsaWdpYmxlQXVkaW9EZXZpY2VVSURzKFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYm
IGRldmljZXMpIHsgbV9lbGlnaWJsZUF1ZGlvRGV2aWNlcyA9IFdURk1vdmUoZGV2aWNlcyk7IH0K
KwogICAgIFZlY3RvcjxTdHJpbmc+IHZpZGVvRGV2aWNlVUlEcygpIGNvbnN0OwogICAgIFZlY3Rv
cjxTdHJpbmc+IGF1ZGlvRGV2aWNlVUlEcygpIGNvbnN0OworICAgIGJvb2wgaGFzQXVkaW9EZXZp
Y2UoKSBjb25zdCB7IHJldHVybiAhbV9lbGlnaWJsZUF1ZGlvRGV2aWNlcy5pc0VtcHR5KCk7IH0K
KyAgICBib29sIGhhc1ZpZGVvRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gIW1fZWxpZ2libGVWaWRl
b0RldmljZXMuaXNFbXB0eSgpOyB9CisKKyAgICBib29sIGhhc1BlcnNpc3RlbnRBY2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX2hhc1BlcnNpc3RlbnRBY2Nlc3M7IH0KKyAgICB2b2lkIHNldEhhc1Bl
cnNpc3RlbnRBY2Nlc3MoKSB7IG1faGFzUGVyc2lzdGVudEFjY2VzcyA9IHRydWU7IH0KIAorICAg
IHVpbnQ2NF90IHVzZXJNZWRpYUlEKCkgY29uc3QgeyByZXR1cm4gbV91c2VyTWVkaWFJRDsgfQog
ICAgIHVpbnQ2NF90IG1haW5GcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVJRDsg
fQogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSUQ7IH0KKwog
ICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmln
aW4oKSB7IHJldHVybiBtX3RvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbi5nZXQoKTsgfQog
ICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCkgeyByZXR1cm4gbV91c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luLmdldCgpOyB9
CisgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRTZWN1
cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luLmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRp
YURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3VzZXJNZWRpYURvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0KKworICAgIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtUmVxdWVzdCYgdXNlclJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KIAog
ICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZSByZXF1ZXN0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVxdWVzdC50eXBlOyB9CiAKKyAgICB2b2lkIHNldERldmljZUlkZW50aWZp
ZXJIYXNoU2FsdChTdHJpbmcmJiBzYWx0KSB7IG1fZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0ID0g
V1RGTW92ZShzYWx0KTsgfQorICAgIGNvbnN0IFN0cmluZyYgZGV2aWNlSWRlbnRpZmllckhhc2hT
YWx0KCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQ7IH0KKworICAg
IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgYXVkaW9EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2Vs
aWdpYmxlQXVkaW9EZXZpY2VzLmlzRW1wdHkoKSA/IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgeyB9
IDogbV9lbGlnaWJsZUF1ZGlvRGV2aWNlc1swXTsgfQorICAgIFdlYkNvcmU6OkNhcHR1cmVEZXZp
Y2UgdmlkZW9EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2VsaWdpYmxlVmlkZW9EZXZpY2VzLmlz
RW1wdHkoKSA/IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgeyB9IDogbV9lbGlnaWJsZVZpZGVvRGV2
aWNlc1swXTsgfQorCiBwcml2YXRlOgogICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgdWludDY0X3QgbWFpbkZyYW1lSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJD
b3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1
cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJik7
CiAKQEAgLTc1LDYgKzk2LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVy
ZURldmljZT4gbV9lbGlnaWJsZVZpZGVvRGV2aWNlczsKICAgICBWZWN0b3I8V2ViQ29yZTo6Q2Fw
dHVyZURldmljZT4gbV9lbGlnaWJsZUF1ZGlvRGV2aWNlczsKICAgICBXZWJDb3JlOjpNZWRpYVN0
cmVhbVJlcXVlc3QgbV9yZXF1ZXN0OworICAgIGJvb2wgbV9oYXNQZXJzaXN0ZW50QWNjZXNzIHsg
ZmFsc2UgfTsKKyAgICBTdHJpbmcgbV9kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDk0YmIwN2JmNmQxZDQyMmZlNTBiMGU0Yzg2NThiZTY0Mjc5MTFhNjYuLjZhMTc3
NDUzZmRjZDI1YTk5ZWVjYTAxZTc5OWM1YzVlMjQ4MzRiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzAyMiwxMiArNzAyMiwxMiBAQCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgV2ViUGFnZVByb3h5Ojp1c2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdAogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNl
ck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmICB1c2VyTWVkaWFEb2N1
bWVudE9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2
ZWxEb2N1bWVudE9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYg
cmVxdWVzdCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZv
ckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmICB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbkRhdGEsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbkRh
dGEsIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53
ZWJGcmFtZShmcmFtZUlEKSk7CiAKLSAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIoKS5yZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVzZXJNZWRpYUlELCBmcmFt
ZUlELCB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSwgdG9wTGV2
ZWxEb2N1bWVudE9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdCk7CisgICAgdXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkucmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Np
b25Gb3JGcmFtZSh1c2VyTWVkaWFJRCwgZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5E
YXRhLnNlY3VyaXR5T3JpZ2luKCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW5EYXRhLnNlY3VyaXR5
T3JpZ2luKCksIFdURk1vdmUocmVxdWVzdCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odXNl
ck1lZGlhSUQpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZDM4NGNkN2MwMzQ4MGQ4NTg2MGIxYzU4ZTM3ZjVmMjJh
NDRlOGFjMy4uZDk5YzJhZGE0YjRkNmMzYTM2NzM0ZjQzNGVkOTU1NWU0OGE4YzBiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2MDMsNyArMTYwMyw3IEBAIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eSYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCk7
CiAjZW5kaWYKLSAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWlu
dDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmKTsKKyAgICB2b2lkIHJlcXVl
c3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdXNlck1lZGlh
RG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVN0cmVh
bVJlcXVlc3QmJik7CiAgICAgdm9pZCBlbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSh1aW50
NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbkRhdGEpOwogICAgIHZv
aWQgYmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJkZmFhNWNhNDNl
NWMwNGIyMTMxYTMyMDEyMDQyYzdiZjBjNzg4YzIuLmQzYzBkMjkwZTRkZDA2MWUyNmFiYmRjYjhk
MDAyZjA5N2U0ZDJiYWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wMi0xMSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgRmlsdGVyIG91dCBPdmVyY29u
c3RyYWluZWRlcnJvci5jb25zdHJhaW50IHdoZW4gZ2V0VXNlck1lZGlhIGlzIG5vdCBncmFudGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQyNDAK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL292ZXJjb25zdHJhaW5lZGVycm9yLWNvbnN0cmFpbnQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL292ZXJjb25zdHJhaW5lZGVycm9yLWNv
bnN0cmFpbnQuaHRtbDogQWRkZWQuCisKIDIwMTktMDItMTEgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgV1BFIGdhcmRlbmluZy4gQWRk
aW5nIGFkZGl0aW9uYWwgYmFzZWxpbmVzIGFmdGVyIGZvbnQgdmFyaWF0aW9ucwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9vdmVyY29uc3RyYWluZWRlcnJvci1jb25z
dHJhaW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vb3ZlcmNv
bnN0cmFpbmVkZXJyb3ItY29uc3RyYWludC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQyYjVi
YTc0NmNiYTY5NGZkMDg0MjNjNTYwMTA2N2U0ODA0MWZkZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vb3ZlcmNvbnN0cmFpbmVkZXJyb3ItY29uc3RyYWlu
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgQmVmb3JlIGdyYW50IAorUEFT
UyBBZnRlciBncmFudCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9vdmVyY29uc3RyYWluZWRlcnJvci1jb25zdHJhaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL292ZXJjb25zdHJhaW5lZGVycm9yLWNvbnN0cmFpbnQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMTc2ZWZjZWJlNmFhYWExNTBkNWEyYTFjNzhlOTE5NDUwNGRkZmQwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9vdmVyY29uc3RyYWluZWRlcnJv
ci1jb25zdHJhaW50Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8
dGl0bGU+T3ZlckNvbnN0cmFpbmVkRXJyb3IuY29uc3RyYWludCB0ZXN0aW5nPC90aXRsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKworICAgICAgICA8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlh
UGVybWlzc2lvbih0cnVlKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0TW9ja01lZGlhQ2FwdHVyZURldmljZXNFbmFibGVkKHRydWUpOworCitwcm9taXNl
X3Rlc3QoYXN5bmMgKCkgPT4geworICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7YXVkaW86IHtkZXZpY2VJZDoge2V4YWN0OiJub25lIn19fSkudGhlbigKKyAg
ICAgICAgKCkgPT4gYXNzZXJ0X25vdF9yZWFjaGVkKCJndW0gc2hvdWxkIGZhaWwiKSwKKyAgICAg
ICAgKGUpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGUgaW5zdGFuY2VvZiBPdmVyY29u
c3RyYWluZWRFcnJvcik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUuY29uc3RyYWludCwg
IiIsICJjb25zdHJhaW50IHNob3VsZCBiZSB0aGUgZW1wdHkgc3RyaW5nIik7CisgICAgICAgIH0K
KyAgICApOworfSwgIkJlZm9yZSBncmFudCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmModGVzdCkg
PT4geworICAgIGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRp
bzogdHJ1ZX0pOworICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7YXVkaW86IHtkZXZpY2VJZDoge2V4YWN0OiJub25lIn19fSkudGhlbigKKyAgICAgICAgKCkg
PT4gYXNzZXJ0X25vdF9yZWFjaGVkKCJndW0gc2hvdWxkIGZhaWwiKSwKKyAgICAgICAgKGUpID0+
IHsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGUgaW5zdGFuY2VvZiBPdmVyY29uc3RyYWluZWRF
cnJvcik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUuY29uc3RyYWludCwgImRldmljZUlk
IiwgImNvbnN0cmFpbnQgc2hvdWxkIGJlIGRldmljZUlkIik7CisgICAgICAgIH0KKyAgICApOwor
fSwgIkFmdGVyIGdyYW50Iik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>