<?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>236531</bug_id>
          
          <creation_ts>2022-02-11 15:24:30 -0800</creation_ts>
          <short_desc>[macOS] Use system window and screen picker when available</short_desc>
          <delta_ts>2022-02-14 09:59:58 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1840597</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-11 15:24:30 -0800</bug_when>
    <thetext>Use system window and screen picker when available</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840600</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-11 15:28:56 -0800</bug_when>
    <thetext>rdar://87111816</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840611</commentid>
    <comment_count>2</comment_count>
      <attachid>451757</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-11 16:24:24 -0800</bug_when>
    <thetext>Created attachment 451757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840613</commentid>
    <comment_count>3</comment_count>
      <attachid>451757</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-11 16:33:17 -0800</bug_when>
    <thetext>Comment on attachment 451757
Patch

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

r=me with nit

&gt; Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:151
&gt; +    RunLoop::main().dispatch([self, strongSelf = RetainPtr { self }, session = RetainPtr { session }]() mutable {

We shouldn&apos;t use RunLoop::main().dispatch() from WebCore code, because it will dispatch to the wrong thread on iOS/WK1. Just use runOnMainThread(). It&apos;s a known problem that this pattern is super confusing; apologies!

&gt; Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:159
&gt; +    RunLoop::main().dispatch([self, strongSelf = RetainPtr { self }, session = RetainPtr { session }]() mutable {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840699</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-12 08:10:04 -0800</bug_when>
    <thetext>Committed r289696 (247181@main): &lt;https://commits.webkit.org/247181@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451757.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840724</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-12 13:28:05 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840725</commentid>
    <comment_count>6</comment_count>
      <attachid>451793</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-12 13:28:07 -0800</bug_when>
    <thetext>Created attachment 451793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840733</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-12 14:59:00 -0800</bug_when>
    <thetext>Committed r289701 (247186@main): &lt;https://commits.webkit.org/247186@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451793.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841304</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-02-14 09:59:58 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:151
&gt; &gt; +    RunLoop::main().dispatch([self, strongSelf = RetainPtr { self }, session = RetainPtr { session }]() mutable {
&gt; 
&gt; We shouldn&apos;t use RunLoop::main().dispatch() from WebCore code, because it
&gt; will dispatch to the wrong thread on iOS/WK1. Just use runOnMainThread().
&gt; It&apos;s a known problem that this pattern is super confusing; apologies!

Would this review comment be easier to understand if we renamed callOnMainThread to callOnWebCoreThread (or similar)? (I have been low-key wanting to rename that function for a few years, but not sure if the proposed new name would help most people or not.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451757</attachid>
            <date>2022-02-11 16:24:24 -0800</date>
            <delta_ts>2022-02-12 08:10:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236531-20220211162423.patch</filename>
            <type>text/plain</type>
            <size>50372</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI0NmJlODA1NzJjYWRmZmYwMzU5OTQ5
ZWEwYTQxNWIyNWI3NjVlNDIuLjYyNTc2OTMwZjZjNjgzZGY5OTQ5ZjE2ODQwZDM5YWE2OWEwZjhh
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTEgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBVc2Ugc3lzdGVtIHdpbmRvdyBh
bmQgc2NyZWVuIHBpY2tlciB3aGVuIGF2YWlsYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTMxCisgICAgICAgIHJkYXI6Ly84NzExMTgxNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtSGF2ZS5oOiBEZWZpbmUgSEFWRV9TQ19DT05URU5UX1NIQVJJTkdfU0VTU0lPTi4KKwog
MjAyMi0wMi0xMSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IGhlYWRlcnMgaW4gaW5zdGFsbCBidWlsZHMgYW5kIGFkZCB1bnRyYWNrZWQgaGVhZGVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGE0OGE0YmJmZGJjYWZhY2FhZjZhZjBmYTk1MzZiY2UwNzA4YTgxOTguLjY4
OGUzZjM0ZTY3OWE0NGQ3ZWY2MGQxOTljYmY2OGJiMmM2NThhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAyMi0wMi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBbbWFjT1NdIFVzZSBzeXN0ZW0gd2luZG93IGFuZCBzY3JlZW4gcGlj
a2VyIHdoZW4gYXZhaWxhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzY1MzEKKyAgICAgICAgcmRhcjovLzg3MTExODE2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIG1hbnVhbGx5LgorCisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDogQWRkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogZW4ubHBy
b2ovTG9jYWxpemFibGUuc3RyaW5nczogVXBkYXRlIHByb21wdHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmNhcHR1cmVyQ29uZmln
dXJhdGlvbkNoYW5nZWQpOiBBbGxvdyBhIGNhcHR1cmVyCisgICAgICAgIHRvIG5vdGlmeSB0aGUg
c291cmNlIG9mIGEgY29uZmlndXJhdGlvbiBjaGFuZ2UuCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FwdHVyZXJPYnNlcnZlcjo6Y2FwdHVyZXJDb25maWd1cmF0aW9uQ2hhbmdlZCk6CisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuQ2FwdHVyZUtpdENhcHR1
cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuQ2Fw
dHVyZUtpdENhcHR1cmVTb3VyY2UubW06CisgICAgICAgICgtW1dlYkNvcmVTY3JlZW5DYXB0dXJl
S2l0SGVscGVyIHN0cmVhbTpkaWRTdG9wV2l0aEVycm9yOl0pOiBGb3J3YXJkIGRlbGVnYXRlIGNh
bGxiYWNrcworICAgICAgICB0byB0aGUgY2FwdHVyZSBzb3VyY2UuCisgICAgICAgICgtW1dlYkNv
cmVTY3JlZW5DYXB0dXJlS2l0SGVscGVyIHNlc3Npb25EaWRFbmQ6XSk6IERpdHRvLgorICAgICAg
ICAoLVtXZWJDb3JlU2NyZWVuQ2FwdHVyZUtpdEhlbHBlciBzZXNzaW9uRGlkQ2hhbmdlQ29udGVu
dDpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkNvcmVTY3JlZW5DYXB0dXJlS2l0SGVscGVyIHBp
Y2tlckNhbmNlbGVkRm9yU2Vzc2lvbjpdKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3Jl
ZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6c2Vzc2lvbkRpZENoYW5nZUNvbnRlbnQpOiBSZWFj
dCB0byBhCisgICAgICAgIHJlY29uZmlndXJhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmVl
bkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpzZXNzaW9uRGlkRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpzdGFydENvbnRlbnRTdHJlYW0pOiBV
c2UgdGhlIHNoYXJpbmcKKyAgICAgICAgc2Vzc2lvbiBtYW5hZ2VyIHdoZW4gYXZhaWxhYmxlLgor
ICAgICAgICAoV2ViQ29yZTo6U2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OmludHJpbnNp
Y1NpemUgY29uc3QpOiBHZXQgdGhlIHNpemUgZnJvbQorICAgICAgICB0aGUgY29udGVudCB3aGVu
IHBvc3NpYmxlLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNh
cHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2VyOjpTaGFyaW5nU2Vzc2lvbk9i
c2VydmVyOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlci5tbTogQWRkZWQuCisg
ICAgICAgICgtW1dlYkRpc3BsYXlNZWRpYVByb21wdEhlbHBlciBpbml0V2l0aENhbGxiYWNrOl0p
OgorICAgICAgICAoLVtXZWJEaXNwbGF5TWVkaWFQcm9tcHRIZWxwZXIgZGlzY29ubmVjdF0pOgor
ICAgICAgICAoLVtXZWJEaXNwbGF5TWVkaWFQcm9tcHRIZWxwZXIgc3RhcnRPYnNlcnZpbmdTZXNz
aW9uOl0pOgorICAgICAgICAoLVtXZWJEaXNwbGF5TWVkaWFQcm9tcHRIZWxwZXIgc3RvcE9ic2Vy
dmluZ1Nlc3Npb246XSk6CisgICAgICAgICgtW1dlYkRpc3BsYXlNZWRpYVByb21wdEhlbHBlciBz
ZXNzaW9uRGlkRW5kOl0pOgorICAgICAgICAoLVtXZWJEaXNwbGF5TWVkaWFQcm9tcHRIZWxwZXIg
c2Vzc2lvbkRpZENoYW5nZUNvbnRlbnQ6XSk6CisgICAgICAgICgtW1dlYkRpc3BsYXlNZWRpYVBy
b21wdEhlbHBlciBwaWNrZXJDYW5jZWxlZEZvclNlc3Npb246XSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2VyOjppc0F2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2VyOjpz
aW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNz
aW9uTWFuYWdlcjo6U2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2VyOjp+U2Ny
ZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2VyOjpwaWNrZXJDYW5jZWxlZEZvclNl
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9u
TWFuYWdlcjo6c2Vzc2lvbkRpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5DYXB0dXJl
S2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2VyOjpzZXNzaW9uRGlkQ2hhbmdlQ29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2VyOjpzaG93
V2luZG93UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkNhcHR1cmVLaXRTaGFyaW5n
U2Vzc2lvbk1hbmFnZXI6OnNob3dTY3JlZW5QaWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
ZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlcjo6cHJvbXB0Rm9yR2V0RGlzcGxheU1l
ZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1h
bmFnZXI6OnRha2VTaGFyaW5nU2Vzc2lvbkZvckZpbHRlcik6CisKIDIwMjItMDItMTEgIEdhYnJp
ZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+CiAKICAgICAgICAgS2VlcCBw
cm9taXNlIGluIHNjb3BlIHdoZW4gY2FsbGluZyBEZWZlcnJlZFByb21pc2U6OnJlamVjdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggMGE3ODdlMDU4NDA2NjFiNDhiZjY3MGY2OTkzZjZmNGU4ZWFlMmJm
Mi4uZTMwODk0YmNhNGMxYTliZjI4NDQzYmJjOWJkZWQxYzYyMGZhMTQ1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDItMTEgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBVc2Ugc3lzdGVtIHdpbmRvdyBh
bmQgc2NyZWVuIHBpY2tlciB3aGVuIGF2YWlsYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTMxCisgICAgICAgIHJkYXI6Ly84NzExMTgxNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFsL21hYy9TY3JlZW5DYXB0dXJl
S2l0U29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvbWFjL1NjcmVlbkNhcHR1cmVLaXRTb2Z0TGlu
ay5tbToKKyAgICAgICAgKiBwYWwvc3BpL21hYy9TY3JlZW5DYXB0dXJlS2l0U1BJLmg6IEFkZGVk
LgorCiAyMDIyLTAyLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPU10gU3VwcG9ydCBib3RoIHZlcnNpb25zIG9mIFNjcmVlbkNhcHR1cmVL
aXQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGExOWJiMjNhNjY4MTRiYWE1ZTI3M2Q5YzZiMWIyZjBhNDNiZmI3
OWYuLjc4MDg0MzBiNjNhMjZmYjg4YmM2ZjBmOTlmOWVhMzdmYTgyNzcwMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjItMDItMTEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBVc2Ugc3lzdGVtIHdpbmRvdyBhbmQgc2NyZWVu
IHBpY2tlciB3aGVuIGF2YWlsYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTMxCisgICAgICAgIHJkYXI6Ly84NzExMTgxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL0Nv
Y29hL1NhZmVCcm93c2luZ1NQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvRGlzcGxheUNh
cHR1cmVTZXNzaW9uTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUNhcHR1cmVT
ZXNzaW9uTWFuYWdlcjo6YWxlcnRGb3JHZXREaXNwbGF5TWVkaWEpOiBVcGRhdGUgcHJvbXB0IHN0
cmluZ3MuCisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXI6OnNo
b3dXaW5kb3dQaWNrZXIpOiBVc2UgY2FwdHVyZSBzZXNzaW9uIAorICAgICAgICBtYW5hZ2VyIHdo
ZW4gYXZhaWxhYmxlLgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5h
Z2VyOjpzaG93U2NyZWVuUGlja2VyKTogRGl0dG8uCisKIDIwMjItMDItMTEgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIGEgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uIHN1YmNsYXNzIGZvciBHUFUgUHJvY2Vzcy1iYXNl
ZCByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggNGRjYTVhMjYwN2UyYTcwZDk2ODg5
YWVhMGFmZGVhYzc5NjAyYjI2My4uOGExNjU4NDcyNDg3MzVjYjBiODU4YjIxYzE1ZTVkMWQxOTYz
OTVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTExNDIsNiArMTE0MiwxMCBAQAogI2RlZmlu
ZSBIQVZFX1NDUkVFTl9DQVBUVVJFX0tJVCAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQorI2RlZmluZSBI
QVZFX1NDX0NPTlRFTlRfU0hBUklOR19TRVNTSU9OIDEKKyNlbmRpZgorCiAjaWYgKChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKSBcCiAg
ICAgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTYwMDAwKSkKICNkZWZpbmUgSEFWRV9TQU5EQk9YX1NUQVRFX0ZMQUdTIDEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4Mzgw
ZWUwNjU1MmNiMGRkNzIzNmI5ZjQyMWM2NjA4Y2Q2ZDhmZWJlLi5jNWE5MThmN2Q0MGQwNDFhMjkz
Mzk0NmU3MjA2YzcxYzc1M2Y1ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFM
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMSw2ICsyMSw3IEBACiAvKiBFbmQgUEJYQWdn
cmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KKwkJMDcwMzVEMzEyN0E5QjMzMDAwRkIwM0U0IC8qIFNjcmVlbkNhcHR1cmVLaXRTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDM1RDMwMjdB
OUIzMkUwMEZCMDNFNCAvKiBTY3JlZW5DYXB0dXJlS2l0U1BJLmggKi87IH07CiAJCTA3MUMwMDM3
MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAv
KiBSZXBsYXlLaXRTb2Z0TGluay5tbSAqLzsgfTsKIAkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3
IC8qIFJlcGxheUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzFDMDAzNjI3MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExp
bmsuaCAqLzsgfTsKIAkJMDc2MTFEQjYyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc2MTFEQjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oICovOyB9
OwpAQCAtNDMwLDYgKzQzMSw3IEBACiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkwNzAzNUQz
MDI3QTlCMzJFMDBGQjAzRTQgLyogU2NyZWVuQ2FwdHVyZUtpdFNQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JlZW5DYXB0dXJlS2l0U1BJLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0
TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlcGxheUtp
dFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFDMDAzNjI3MDdF
REYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVwbGF5S2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDc2MTFEQjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2FnZVRyYWNraW5nU29mdExpbmsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTUsNyArMTA1Nyw3IEBACiAJCQkJ
MEM3Nzg1ODQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TV2luZG93U1BJLmggKi8sCiAJCQkJMEM3Nzg1
ODUxRjQ1MTMwRjAwRjRFQkI2IC8qIFBJUFNQSS5oICovLAogCQkJCTBDNzc4NTg3MUY0NTEzMEYw
MEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCAqLywKLQkJCQlBMTE3NUI0ODFGNkFGRjhFMDBD
NEI5RjAgLyogU3BlZWNoU3ludGhlc2lzU1BJLmggKi8sCisJCQkJMDcwMzVEMzAyN0E5QjMyRTAw
RkIwM0U0IC8qIFNjcmVlbkNhcHR1cmVLaXRTUEkuaCAqLywKIAkJCQk3MUIxMTQxRjI2ODIzQUNE
MDA0RDY3MDEgLyogU3lzdGVtUHJldmlld1NQSS5oICovLAogCQkJCTBDNzc4NTg4MUY0NTEzMEYw
MEY0RUJCNiAvKiBUZWxlcGhvbnlVdGlsaXRpZXNTUEkuaCAqLywKIAkJCSk7CkBAIC0xNjc3LDYg
KzE2NzksNyBAQAogCQkJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNERERDlGMjczRUY1NkUwMDY2MEVCQiAvKiBTY2VuZUtpdFNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc3ODkxODIyNzNCMTRGRjAwRTQwOEQxIC8qIFNjcmVl
bkNhcHR1cmVLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwMzVEMzEyN0E5QjMz
MDAwRkIwM0U0IC8qIFNjcmVlbkNhcHR1cmVLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
MEFCOEYxMjBBRTJFOEQwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEMyREExNTgxRjNCRUI0OTAwREJDMzE3IC8qIFNlcnZlcnNTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUEzQzY2Q0REMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9tYWMvU2NyZWVuQ2Fw
dHVyZUtpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL21hYy9TY3JlZW5DYXB0
dXJlS2l0U29mdExpbmsuaAppbmRleCA3YTgwNTFkZWEzMTUxMTlkMGIyM2RhMTVkZDM1NGY1Yjlh
ZjAyZjkwLi42NTdkZDA3MmVkZmJjZDgxMWJhYjUwYjg1NDYwYThiNzVhOThhYTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL21hYy9TY3JlZW5DYXB0dXJlS2l0U29mdExpbmsu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL21hYy9TY3JlZW5DYXB0dXJlS2l0U29mdExp
bmsuaApAQCAtMzYsNiArMzYsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUl9XSVRIX0FW
QUlMQUJJTElUWShQQUwsIFNDU2hhcmVhYmxlQ29udGVudCwgQVBJX0FWQUlMQQogU09GVF9MSU5L
X0NMQVNTX0ZPUl9IRUFERVJfV0lUSF9BVkFJTEFCSUxJVFkoUEFMLCBTQ0NvbnRlbnRGaWx0ZXIs
IEFQSV9BVkFJTEFCTEUobWFjb3MoMTIuMykpKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVJf
V0lUSF9BVkFJTEFCSUxJVFkoUEFMLCBTQ1N0cmVhbUNvbmZpZ3VyYXRpb24sIEFQSV9BVkFJTEFC
TEUobWFjb3MoMTIuMykpKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVJfV0lUSF9BVkFJTEFC
SUxJVFkoUEFMLCBTQ1N0cmVhbSwgQVBJX0FWQUlMQUJMRShtYWNvcygxMi4zKSkpCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNDQ29udGVudFNoYXJpbmdTZXNzaW9uKQogCiBTT0ZU
X0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIFNjcmVlbkNhcHR1cmVLaXQs
IFNDU3RyZWFtRnJhbWVJbmZvU3RhdHVzLCBOU1N0cmluZyAqKQogI2RlZmluZSBTQ1N0cmVhbUZy
YW1lSW5mb1N0YXR1cyBnZXRfU2NyZWVuQ2FwdHVyZUtpdF9TQ1N0cmVhbUZyYW1lSW5mb1N0YXR1
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL21hYy9TY3JlZW5DYXB0dXJl
S2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL21hYy9TY3JlZW5DYXB0dXJl
S2l0U29mdExpbmsubW0KaW5kZXggMWExYzg4YjMwMmU3ZmZhMzhiMGIyNTc3YjJjZDAzZjdmY2Qz
ZGUzZC4uZGQwYjgzMzVjZDY1OWVkODMxYjVkNTYyNDc1ZjFkMTZlNGNiNjE1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNvZnRMaW5rLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvbWFjL1NjcmVlbkNhcHR1cmVLaXRTb2Z0TGlu
ay5tbQpAQCAtMzYsNiArMzYsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05B
TF9XSVRIX0VYUE9SVF9BTkRfQVZBSUxBQklMSVRZKFBBTCwgU2NyZWVuQ2FwdAogU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlRfQU5EX0FWQUlMQUJJTElUWShQ
QUwsIFNjcmVlbkNhcHR1cmVLaXQsIFNDQ29udGVudEZpbHRlciwgUEFMX0VYUE9SVCwgQVBJX0FW
QUlMQUJMRShtYWNvcygxMi4zKSkpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05B
TF9XSVRIX0VYUE9SVF9BTkRfQVZBSUxBQklMSVRZKFBBTCwgU2NyZWVuQ2FwdHVyZUtpdCwgU0NT
dHJlYW1Db25maWd1cmF0aW9uLCBQQUxfRVhQT1JULCBBUElfQVZBSUxBQkxFKG1hY29zKDEyLjMp
KSkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUX0FORF9B
VkFJTEFCSUxJVFkoUEFMLCBTY3JlZW5DYXB0dXJlS2l0LCBTQ1N0cmVhbSwgUEFMX0VYUE9SVCwg
QVBJX0FWQUlMQUJMRShtYWNvcygxMi4zKSkpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9P
UFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIFNjcmVlbkNhcHR1cmVLaXQsIFNDQ29udGVudFNoYXJp
bmdTZXNzaW9uLCBQQUxfRVhQT1JUKQogCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFNjcmVlbkNhcHR1cmVLaXQsIFNDU3RyZWFtRnJhbWVJ
bmZvU3RhdHVzLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NPTlNUQU5UX01B
WV9GQUlMX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTY3JlZW5DYXB0dXJlS2l0LCBTQ1N0
cmVhbUZyYW1lSW5mb1N0YXR1c0tleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9TY3JlZW5DYXB0dXJlS2l0U1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNQSS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk5ZWVkNDBjNjMyZWQ3ODk5MjU2ZDE4OGQ1M2NiMzZiOGU2YWUyZGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvU2NyZWVuQ2FwdHVy
ZUtpdFNQSS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgSEFWRShTQ1JFRU5f
Q0FQVFVSRV9LSVQpCisKKyNpbXBvcnQgPFNjcmVlbkNhcHR1cmVLaXQvU2NyZWVuQ2FwdHVyZUtp
dC5oPgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8U2NyZWVuQ2Fw
dHVyZUtpdC9TQ0NvbnRlbnRGaWx0ZXJQcml2YXRlLmg+CisjaW1wb3J0IDxTY3JlZW5DYXB0dXJl
S2l0L1NDQ29udGVudFNoYXJpbmdTZXNzaW9uLmg+CisjaW1wb3J0IDxTY3JlZW5DYXB0dXJlS2l0
L1NDU3RyZWFtX1ByaXZhdGUuaD4KKworI2Vsc2UgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
U0NDb250ZW50RmlsdGVyVHlwZSkgeworICAgIFNDQ29udGVudEZpbHRlclR5cGVOb3RoaW5nLAor
ICAgIFNDQ29udGVudEZpbHRlclR5cGVEaXNwbGF5LAorICAgIFNDQ29udGVudEZpbHRlclR5cGVB
cHBzQW5kV2luZG93c1Bpbm5lZFRvRGlzcGxheSwKKyAgICBTQ0NvbnRlbnRGaWx0ZXJUeXBlRGVz
a3RvcEluZGVwZW5kZW50V2luZG93LAorICAgIFNDQ29udGVudEZpbHRlclR5cGVDbGllbnRTaG91
bGRJbXBsZW1lbnREZWZhdWx0Cit9OworCitAaW50ZXJmYWNlIFNDQ29udGVudEZpbHRlciAoKQor
QHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgU0NXaW5kb3cgKndpbmRvdzsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBzdHJvbmcpIFNDRGlzcGxheSAqZGlzcGxheTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBhc3NpZ24pIFNDQ29udGVudEZpbHRlclR5cGUgdHlwZTsKK0BlbmQKKworQGludGVy
ZmFjZSBTQ0NvbnRlbnRGaWx0ZXJEaXNwbGF5SW5mb3JtYXRpb24gOiBOU09iamVjdAorQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBTQ0Rpc3BsYXkgKmRpc3BsYXk7CitAZW5kCisKK0Bp
bnRlcmZhY2UgU0NDb250ZW50RmlsdGVyRGVza3RvcEluZGVwZW5kZW50V2luZG93SW5mb3JtYXRp
b24gOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBTQ1dpbmRvdyAq
d2luZG93OworQGVuZAorCitAY2xhc3MgU0NDb250ZW50U2hhcmluZ1Nlc3Npb247CisKK0Bwcm90
b2NvbCBTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvblByb3RvY29sIDxOU09iamVjdD4KK0BvcHRpb25h
bAorLSAodm9pZClzZXNzaW9uRGlkRW5kOihTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvbiAqKXNlc3Np
b247CistICh2b2lkKXNlc3Npb25EaWRDaGFuZ2VDb250ZW50OihTQ0NvbnRlbnRTaGFyaW5nU2Vz
c2lvbiAqKXNlc3Npb247CistICh2b2lkKXBpY2tlckNhbmNlbGVkRm9yU2Vzc2lvbjooU0NDb250
ZW50U2hhcmluZ1Nlc3Npb24gKilzZXNzaW9uOworQGVuZAorCitAaW50ZXJmYWNlIFNDQ29udGVu
dFNoYXJpbmdTZXNzaW9uIDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBp
ZDxTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvblByb3RvY29sPiBkZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgY29weSkgU0NDb250ZW50RmlsdGVyICpjb250ZW50OworCist
IChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlOworLSAoQk9PTClpc0VxdWFsVG9TaGFyaW5nU2Vz
c2lvbjooU0NDb250ZW50U2hhcmluZ1Nlc3Npb24gKilvdGhlcjsKKy0gKHZvaWQpc2hvd1BpY2tl
ckZvclR5cGU6KFNDQ29udGVudEZpbHRlclR5cGUpdHlwZTsKKy0gKHZvaWQpdXBkYXRlQ29udGVu
dDooU0NDb250ZW50RmlsdGVyICopY29udGVudDsKKy0gKHZvaWQpZW5kOworQGVuZAorCitAaW50
ZXJmYWNlIFNDU3RyZWFtIChTQ0NvbnRlbnRTaGFyaW5nKSA8U0NDb250ZW50U2hhcmluZ1Nlc3Np
b25Qcm90b2NvbD4KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNoYXJpbmdTZXNzaW9uOihTQ0Nv
bnRlbnRTaGFyaW5nU2Vzc2lvbiAqKXNlc3Npb24gY2FwdHVyZU91dHB1dFByb3BlcnRpZXM6KFND
U3RyZWFtQ29uZmlndXJhdGlvbiAqKXN0cmVhbUNvbmZpZyBkZWxlZ2F0ZTooaWQ8U0NTdHJlYW1E
ZWxlZ2F0ZT4pZGVsZWdhdGU7CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5k
aWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2VuZGlmIC8vIEhBVkUoU0NSRUVOX0NB
UFRVUkVfS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjFiNzM4ZTU1NmFjM2Q4YmQx
ZWQ3YWFmYWIwYzIzOGRkYTlkNzQxOS4uMTA3NWVhYzQ3NmE1NGI4MjAwZDA2ZTliODQzNmIyNDg5
NWQ0MmM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC01NjUsNiArNTY1LDcgQEAgcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMubW0KIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VD
b2NvYS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVy
ZVNvdXJjZS5tbQorcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRTaGFy
aW5nU2Vzc2lvbk1hbmFnZXIubW0KIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyQ29jb2EubW0KIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2suY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGE4ZDczNjg1ZTBiYjRmNGE3NTRlZGU0OTE3NmEzMmI4MGUyZDJkYmIuLjgwNjU0ZDMzZmY2
YjkxMTczMTVkNzRiNmQzOGNjNWE5ZmI3MjA5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOCw2ICsxMTgsNyBAQAogCQkw
NzM3OTRGQTE5RjU4NjRFMDBFNUEwNDUgLyogUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNzk0RjQxOUY1
ODY0RTAwRTVBMDQ1IC8qIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCAqLzsgfTsKIAkJMDcz
Nzk0RkUxOUY1ODY0RTAwRTVBMDQ1IC8qIFJUQ05vdGlmaWVyc01vY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mzc5NEY4MTlGNTg2NEUwMEU1QTA0
NSAvKiBSVENOb3RpZmllcnNNb2NrLmggKi87IH07CiAJCTA3MzhFNUVDMjQ5OTgzOTAwMERBMTAx
QyAvKiBBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0UGlja2VyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczOEU1RUEyNDk5NjhBRDAw
REExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJnZXRQaWNrZXIubW0gKi87
IH07CisJCTA3Mzk1NUJCMjdBQjI3N0YwMDlBMDhEMiAvKiBTY3JlZW5DYXB0dXJlS2l0U2hhcmlu
Z1Nlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzAzNUQzMjI3QTlCNjBCMDBGQjAzRTQgLyogU2NyZWVuQ2FwdHVyZUtpdFNoYXJp
bmdTZXNzaW9uTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA3M0ExNTU0MjE3N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQTE1
NTMyMTc3QTM5QTAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQjg3NjcxRTQzODVBQzAwNzFD
MEVDIC8qIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQjg3NjMxRTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2Ft
cGxlQnVmZmVyTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTA3M0I4NzY5MUU0Mzg1QUMwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4
NzY1MUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTkyNiw2ICs1OTI3LDgg
QEAKIAkJMDcwMzM0RDYxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFja0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDcwMzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja0Jhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzAzMzRFODE0NUExRjM1MDA4RDhENDUgLyogSlNUcmFja0N1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNrQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwMzVEMzIyN0E5QjYwQjAw
RkIwM0U0IC8qIFNjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzAzNUQzNDI3QTlCNjExMDBGQjAzRTQgLyogU2NyZWVu
Q2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFNjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3MDM2M0RBMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQ2FwdHVyZURl
dmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwMzYzREIxODFB
MUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzAzNjNERTE4MUExQ0RDMDBDMDc0QTUgLyogQVZW
aWRlb0NhcHR1cmVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVZW
aWRlb0NhcHR1cmVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NzMw
LDYgKzE4NzMzLDggQEAKIAkJCQk0MUQxOTM4RjIxNTJDNTYxMDA2RjE0Q0EgLyogUmVhbHRpbWVW
aWRlb1V0aWxpdGllcy5oICovLAogCQkJCTA3MEJFRDk3MjczRjQxNTYwMDU4MzkyNiAvKiBTY3Jl
ZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5oICovLAogCQkJCTA3MEJFRDk2MjczRjQxNTYwMDU4
MzkyNiAvKiBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5tbSAqLywKKwkJCQkwNzAzNUQz
MjI3QTlCNjBCMDBGQjAzRTQgLyogU2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdl
ci5oICovLAorCQkJCTA3MDM1RDM0MjdBOUI2MTEwMEZCMDNFNCAvKiBTY3JlZW5DYXB0dXJlS2l0
U2hhcmluZ1Nlc3Npb25NYW5hZ2VyLm1tICovLAogCQkJCTA3RDYzNzNFMUJCMEIxMTMwMDI1NkNF
OSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuaCAqLywKIAkJCQkwN0Q2MzczRjFCQjBC
MTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLm1tICovLAogCQkJKTsK
QEAgLTM3MDcxLDYgKzM3MDc2LDcgQEAKIAkJCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyog
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
QzAxQkUwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcw
QkVEOTgyNzNGNDE1RDAwNTgzOTI2IC8qIFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwNzM5NTVCQjI3QUIyNzdGMDA5QTA4RDIgLyogU2NyZWVuQ2Fw
dHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzFFMUQy
MzYyMDNERjE1NDAwNTg0NjY1IC8qIFNjcmVlblByb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4NEQ4MkMxMTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MkU0QzUwMjYxNkE4MTEwMDNBMkM2NyAvKiBTY3JpcHRC
dWZmZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZW4ubHBy
b2ovTG9jYWxpemFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXph
YmxlLnN0cmluZ3MKaW5kZXggM2VlZTg4ZjIxNmU5NzhkZjYzMDk2ODU5YzE0YjRjYjU1ODRmYTVm
NC4uMDJkMmJiNDcyMzE2MjBiOTNjN2JiYmJjNjYyZmY4YzRmYmZlZTZkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC0xNDYsMTAgKzE0NiwxMCBA
QAogIkFsaWduIFJpZ2h0IChVbmRvIGFjdGlvbiBuYW1lKSIgPSAiQWxpZ24gUmlnaHQiOwogCiAv
KiBBbGxvdyBzY3JlZW4gYnV0dG9uIHRpdGxlIGluIHdpbmRvdyBhbmQgc2NyZWVuIHNoYXJpbmcg
cHJvbXB0ICovCi0iQWxsb3cgT2JzZXJ2aW5nIGEgU2NyZWVuIiA9ICJBbGxvdyBPYnNlcnZpbmcg
YSBTY3JlZW4iOworIkFsbG93IHRvIFNoYXJlIFNjcmVlbiIgPSAiQWxsb3cgdG8gU2hhcmUgU2Ny
ZWVuIjsKIAogLyogQWxsb3cgd2luZG93IGJ1dHRvbiB0aXRsZSBpbiB3aW5kb3cgYW5kIHNjcmVl
biBzaGFyaW5nIHByb21wdCAqLwotIkFsbG93IE9ic2VydmluZyBhIFdpbmRvdyIgPSAiQWxsb3cg
T2JzZXJ2aW5nIGEgV2luZG93IjsKKyJBbGxvdyB0byBTaGFyZSBXaW5kb3ciID0gIkFsbG93IHRv
IFNoYXJlIFdpbmRvdyI7CiAKIC8qIEJ1dHRvbiB0aXRsZSBpbiBTdG9yYWdlIEFjY2VzcyBBUEkg
cHJvbXB0ICovCiAiQWxsb3cgKGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNj
ZXNzKSIgPSAiQWxsb3ciOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
LmNwcAppbmRleCAzYzZmNzM5YjgxMWJkYjA1OWZhZTNhMzg4NmM1NzlmMzNhNjYxNmNiLi41NTRm
OGRkMjdhNGJlNWRlZDZlNWUxNmE1MmJjZDRhZDkwNmY0MmI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNv
Y29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcApAQCAtMzI0LDYgKzMyNCwxNiBAQCB2b2lkIERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgpCiAgICAgdmlkZW9TYW1wbGVBdmFp
bGFibGUoKnNhbXBsZS5nZXQoKSwgbWV0YWRhdGEpOwogfQogCit2b2lkIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OmNhcHR1cmVyQ29uZmlndXJhdGlvbkNoYW5nZWQoKQoreworICAgIG1fY3Vy
cmVudFNldHRpbmdzID0geyB9OworICAgIGF1dG8gY2FwdHVyZXJJbnRyaW5zaWNTaXplID0gbV9j
YXB0dXJlci0+aW50cmluc2ljU2l6ZSgpOworICAgIGlmICh0aGlzLT5pbnRyaW5zaWNTaXplKCkg
IT0gY2FwdHVyZXJJbnRyaW5zaWNTaXplKSB7CisgICAgICAgIG1fY2FwYWJpbGl0aWVzID0geyB9
OworICAgICAgICBzZXRJbnRyaW5zaWNTaXplKGNhcHR1cmVySW50cmluc2ljU2l6ZSk7CisgICAg
fQorfQorCiB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldExvZ2dlcihjb25zdCBM
b2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikKIHsKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaAppbmRleCA4ZjRlYmVhZTQwYTc1N2Q3NjU4OWVkZDZi
NjU5NDRmMGYxMmUyYzAzLi4wNDVjOGNjNDM1ZmNiMjljNWRlZDBiMmYxYWVjYTUyNDJjNWFlOGMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCkBAIC01Nyw2ICs1
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjYXB0dXJlcklzUnVubmluZ0NoYW5n
ZWQoYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNhcHR1cmVyRmFpbGVkKCkgeyB9OworICAg
IHZpcnR1YWwgdm9pZCBjYXB0dXJlckNvbmZpZ3VyYXRpb25DaGFuZ2VkKCkgeyB9OwogfTsKIAog
Y2xhc3MgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSBmaW5hbApAQCAtOTksNiArMTAwLDExIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGlmIChtX29ic2VydmVyKQogICAgICAgICAgICAgICAgIG1f
b2JzZXJ2ZXItPmNhcHR1cmVyRmFpbGVkKCk7CiAgICAgICAgIH0KKyAgICAgICAgdm9pZCBjb25m
aWd1cmF0aW9uQ2hhbmdlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX29ic2VydmVy
KQorICAgICAgICAgICAgICAgIG1fb2JzZXJ2ZXItPmNhcHR1cmVyQ29uZmlndXJhdGlvbkNoYW5n
ZWQoKTsKKyAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2Vha1B0cjxDYXB0dXJl
ck9ic2VydmVyPiBtX29ic2VydmVyOwpAQCAtMTMyLDYgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gQ2FwdHVyZXJPYnNlcnZlcgogICAgIHZvaWQgY2FwdHVyZXJJc1J1bm5pbmdDaGFuZ2VkKGJv
b2wgaXNSdW5uaW5nKSBmaW5hbCB7IG5vdGlmeU11dGVkQ2hhbmdlKCFpc1J1bm5pbmcpOyB9CiAg
ICAgdm9pZCBjYXB0dXJlckZhaWxlZCgpIGZpbmFsIHsgY2FwdHVyZUZhaWxlZCgpOyB9CisgICAg
dm9pZCBjYXB0dXJlckNvbmZpZ3VyYXRpb25DaGFuZ2VkKCkgZmluYWw7CiAKICAgICB2b2lkIGVt
aXRGcmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5o
CmluZGV4IDgxNWU2YjY1N2RlNTIwZDU1YjMyOTE2ZGFhYjI1NDNmZDQxNjJhMDIuLjVlOTZhZGY2
MTFhMTg5MzA3NGM1Mjg5ZTQ1OWVlZmIyMDFjYmZkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5D
YXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5oCkBAIC0zOSwxMyArMzksMTIgQEAgT0JKQ19DTEFTUyBT
Q0Rpc3BsYXk7CiBPQkpDX0NMQVNTIFNDU2hhcmVhYmxlQ29udGVudDsKIE9CSkNfQ0xBU1MgU0NT
dHJlYW07CiBPQkpDX0NMQVNTIFNDQ29udGVudEZpbHRlcjsKK09CSkNfQ0xBU1MgU0NDb250ZW50
U2hhcmluZ1Nlc3Npb247CiBPQkpDX0NMQVNTIFNDU3RyZWFtQ29uZmlndXJhdGlvbjsKIE9CSkNf
Q0xBU1MgU0NXaW5kb3c7CiBPQkpDX0NMQVNTIFdlYkNvcmVTY3JlZW5DYXB0dXJlS2l0SGVscGVy
OwogdXNpbmcgQ01TYW1wbGVCdWZmZXJSZWYgPSBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIq
OwogCi10eXBlZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSogSU9TdXJmYWNlUmVmOwotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlIGZpbmFs
CkBAIC03MCw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0cmVhbUZhaWxlZFdpdGhFcnJv
cihSZXRhaW5QdHI8TlNFcnJvcj4mJiwgY29uc3QgU3RyaW5nJik7CiAgICAgZW51bSBjbGFzcyBT
YW1wbGVUeXBlIHsgVmlkZW8gfTsKICAgICB2b2lkIHN0cmVhbURpZE91dHB1dFNhbXBsZUJ1ZmZl
cihSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+LCBTYW1wbGVUeXBlKTsKKyAgICB2b2lkIHNl
c3Npb25EaWRDaGFuZ2VDb250ZW50KFJldGFpblB0cjxTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvbj4p
OworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChSZXRhaW5QdHI8U0NDb250ZW50U2hhcmluZ1Nlc3Np
b24+KTsKIAogcHJpdmF0ZToKIApAQCAtMTA0LDYgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgUmV0
YWluUHRyPFNDQ29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOwogICAgIFJldGFpblB0cjxT
Q1N0cmVhbT4gbV9jb250ZW50U3RyZWFtOwogICAgIFJldGFpblB0cjxTQ1N0cmVhbUNvbmZpZ3Vy
YXRpb24+IG1fc3RyZWFtQ29uZmlndXJhdGlvbjsKKyAgICBSZXRhaW5QdHI8U0NDb250ZW50U2hh
cmluZ1Nlc3Npb24+IG1fY29udGVudFNoYXJpbmdTZXNzaW9uOwogICAgIE9TT2JqZWN0UHRyPGRp
c3BhdGNoX3F1ZXVlX3Q+IG1fY2FwdHVyZVF1ZXVlOwogICAgIEJsb2NrUHRyPHZvaWQoU0NTdHJl
YW0gKiwgQ01TYW1wbGVCdWZmZXJSZWYpPiBtX2ZyYW1lQXZhaWxhYmxlSGFuZGxlcjsKICAgICBD
YXB0dXJlRGV2aWNlIG1fY2FwdHVyZURldmljZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0dXJl
S2l0Q2FwdHVyZVNvdXJjZS5tbQppbmRleCA3MDE0YTAxMGUwNzk3MDkzNGQxNTJkMmUwZjM1YWMy
ZTJhOGJhNjVjLi40MDRkNjc5MTc2NzFhYjI4NjVkMGJhZDkyZmNmYjNkZWJkNTg3MWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuQ2Fw
dHVyZUtpdENhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlLm1tCkBAIC0yMyw4ICsy
Myw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5oIgorI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5oIgogCiAjaWYgSEFWRShT
Q1JFRU5fQ0FQVFVSRV9LSVQpCiAKQEAgLTM0LDcgKzM0LDkgQEAKICNpbXBvcnQgIlBsYXRmb3Jt
U2NyZWVuLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCiAjaW1wb3J0
ICJSZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTY3JlZW5DYXB0dXJlS2l0U2hh
cmluZ1Nlc3Npb25NYW5hZ2VyLmgiCiAjaW1wb3J0IDxTY3JlZW5DYXB0dXJlS2l0L1NjcmVlbkNh
cHR1cmVLaXQuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL1NjcmVlbkNhcHR1cmVLaXRTUEkuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtOTEsNyArOTMsMTEgQEAg
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tTQ1N0cmVhbU91dHB1dFR5cGUpIHsKICNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VuZ3VhcmRlZC1hdmFpbGFiaWxpdHktbmV3
IgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLUBpbnRlcmZhY2UgV2ViQ29yZVNjcmVlbkNh
cHR1cmVLaXRIZWxwZXIgOiBOU09iamVjdDxTQ1N0cmVhbURlbGVnYXRlLCBXS1NDU3RyZWFtT3V0
cHV0PiB7CitAaW50ZXJmYWNlIFdlYkNvcmVTY3JlZW5DYXB0dXJlS2l0SGVscGVyIDogTlNPYmpl
Y3Q8U0NTdHJlYW1EZWxlZ2F0ZSwKKyNpZiBIQVZFKFNDX0NPTlRFTlRfU0hBUklOR19TRVNTSU9O
KQorICAgIFNDQ29udGVudFNoYXJpbmdTZXNzaW9uUHJvdG9jb2wsCisjZW5kaWYKKyAgICBXS1ND
U3RyZWFtT3V0cHV0PiB7CiAgICAgV2Vha1B0cjxTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJj
ZT4gX2NhbGxiYWNrOwogfQogCkBAIC05OSw2ICsxMDUsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIC0gKHZvaWQpZGlzY29ubmVjdDsKIC0gKHZvaWQpc3RyZWFtOihTQ1N0cmVhbSAqKXN0
cmVhbSBkaWRTdG9wV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CiAtICh2b2lkKXN0cmVhbToo
U0NTdHJlYW0gKilzdHJlYW0gZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJl
ZilzYW1wbGVCdWZmZXIgb2ZUeXBlOihXS1NDU3RyZWFtT3V0cHV0VHlwZSl0eXBlOworLSAodm9p
ZClzZXNzaW9uRGlkRW5kOihTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvbiAqKXNlc3Npb247CistICh2
b2lkKXNlc3Npb25EaWRDaGFuZ2VDb250ZW50OihTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvbiAqKXNl
c3Npb247CistICh2b2lkKXBpY2tlckNhbmNlbGVkRm9yU2Vzc2lvbjooU0NDb250ZW50U2hhcmlu
Z1Nlc3Npb24gKilzZXNzaW9uOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNjcmVl
bkNhcHR1cmVLaXRIZWxwZXIKQEAgLTExOSwxMSArMTI4LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiAtICh2b2lkKXN0cmVhbTooU0NTdHJlYW0gKilzdHJlYW0gZGlkU3RvcFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yCiB7Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3AoW3N0cm9uZ1Nl
bGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGVycm9yID0gUmV0YWluUHRyIHsgZXJyb3IgfV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5fY2FsbGJhY2spCisgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW3NlbGYsIHN0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGVycm9y
ID0gUmV0YWluUHRyIHsgZXJyb3IgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFfY2FsbGJh
Y2spCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgc3Ryb25nU2VsZi0+X2NhbGxiYWNr
LT5zdHJlYW1GYWlsZWRXaXRoRXJyb3IoV1RGTW92ZShlcnJvciksICItW1NDU3RyZWFtRGVsZWdh
dGUgc3RyZWFtOmRpZFN0b3BXaXRoRXJyb3I6XSBjYWxsZWQiX3MpOworICAgICAgICBfY2FsbGJh
Y2stPnN0cmVhbUZhaWxlZFdpdGhFcnJvcihXVEZNb3ZlKGVycm9yKSwgIi1bU0NTdHJlYW1EZWxl
Z2F0ZSBzdHJlYW06ZGlkU3RvcFdpdGhFcnJvcjpdIGNhbGxlZCJfcyk7CiAgICAgfSk7CiB9CiAK
QEAgLTEzNyw2ICsxNDYsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgfSk7CiB9
CiAKKy0gKHZvaWQpc2Vzc2lvbkRpZEVuZDooU0NDb250ZW50U2hhcmluZ1Nlc3Npb24gKilzZXNz
aW9uCit7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdTZWxmID0g
UmV0YWluUHRyIHsgc2VsZiB9LCBzZXNzaW9uID0gUmV0YWluUHRyIHsgc2Vzc2lvbiB9XSgpIG11
dGFibGUgeworICAgICAgICBpZiAoX2NhbGxiYWNrKQorICAgICAgICAgICAgX2NhbGxiYWNrLT5z
ZXNzaW9uRGlkRW5kKHNlc3Npb24pOworICAgIH0pOworfQorCistICh2b2lkKXNlc3Npb25EaWRD
aGFuZ2VDb250ZW50OihTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvbiAqKXNlc3Npb24KK3sKKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBz
ZWxmIH0sIHNlc3Npb24gPSBSZXRhaW5QdHIgeyBzZXNzaW9uIH1dKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChfY2FsbGJhY2spCisgICAgICAgICAgICBfY2FsbGJhY2stPnNlc3Npb25EaWRDaGFu
Z2VDb250ZW50KHNlc3Npb24pOworICAgIH0pOworfQorCistICh2b2lkKXBpY2tlckNhbmNlbGVk
Rm9yU2Vzc2lvbjooU0NDb250ZW50U2hhcmluZ1Nlc3Npb24gKilzZXNzaW9uCit7Cit9CiBAZW5k
CiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKQEAgLTIzNiw2ICsyNjQsNDUgQEAgdm9p
ZCBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6c3RyZWFtRmFpbGVkV2l0aEVycm9yKFJl
dGFpblB0cjxOU0Vycm9yPiYmIGUKICAgICBjYXB0dXJlRmFpbGVkKCk7CiB9CiAKK3ZvaWQgU2Ny
ZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnNlc3Npb25EaWRDaGFuZ2VDb250ZW50KFJldGFp
blB0cjxTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvbj4gc2Vzc2lvbikKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgaWYgKFtzZXNzaW9uIGNvbnRlbnRdLnR5cGUgPT0gU0NDb250
ZW50RmlsdGVyVHlwZU5vdGhpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6b3B0aW9u
YWw8Q2FwdHVyZURldmljZT4gZGV2aWNlOworICAgIFNDQ29udGVudEZpbHRlciogY29udGVudCA9
IFtzZXNzaW9uIGNvbnRlbnRdOworICAgIHN3aXRjaCAoY29udGVudC50eXBlKSB7CisgICAgY2Fz
ZSBTQ0NvbnRlbnRGaWx0ZXJUeXBlRGVza3RvcEluZGVwZW5kZW50V2luZG93OgorICAgICAgICBk
ZXZpY2UgPSB3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChTdHJpbmc6Om51bWJl
cihjb250ZW50LmRlc2t0b3BJbmRlcGVuZGVudFdpbmRvd0luZm8ud2luZG93LndpbmRvd0lEKSk7
CisgICAgICAgIG1fY29udGVudCA9IGNvbnRlbnQuZGVza3RvcEluZGVwZW5kZW50V2luZG93SW5m
by53aW5kb3c7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU0NDb250ZW50RmlsdGVyVHlwZURp
c3BsYXk6CisgICAgICAgIGRldmljZSA9IHNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVu
dElEKFN0cmluZzo6bnVtYmVyKGNvbnRlbnQuZGlzcGxheUluZm8uZGlzcGxheS5kaXNwbGF5SUQp
KTsKKyAgICAgICAgbV9jb250ZW50ID0gY29udGVudC5kaXNwbGF5SW5mby5kaXNwbGF5OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFNDQ29udGVudEZpbHRlclR5cGVOb3RoaW5nOgorICAgIGNh
c2UgU0NDb250ZW50RmlsdGVyVHlwZUFwcHNBbmRXaW5kb3dzUGlubmVkVG9EaXNwbGF5OgorICAg
IGNhc2UgU0NDb250ZW50RmlsdGVyVHlwZUNsaWVudFNob3VsZEltcGxlbWVudERlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmICghZGV2aWNlKSB7CisgICAgICAgIHN0cmVhbUZhaWxlZFdpdGhFcnJvcihuaWwsICJGYWls
ZWQgZmluZCBDYXB0dXJlRGV2aWNlIGFmdGVyIGNvbnRlbnQgY2hhbmdlIl9zKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fY2FwdHVyZURldmljZSA9IGRldmljZS52YWx1ZSgpOwor
ICAgIG1faW50cmluc2ljU2l6ZSA9IHsgfTsKKyAgICBjb25maWd1cmF0aW9uQ2hhbmdlZCgpOwor
fQorCit2b2lkIFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpzZXNzaW9uRGlkRW5kKFJl
dGFpblB0cjxTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvbj4pCit7CisgICAgc3RyZWFtRmFpbGVkV2l0
aEVycm9yKG5pbCwgInNlc3Npb25EaWRFbmQiX3MpOworfQorCiBEaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBlIFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpn
ZW5lcmF0ZUZyYW1lKCkKIHsKICAgICByZXR1cm4gbV9jdXJyZW50RnJhbWU7CkBAIC0zNDgsOCAr
NDE1LDIyIEBAIHZvaWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN0YXJ0Q29udGVu
dFN0cmVhbSgpCiAgICAgZWxzZQogICAgICAgICBtX2NvbnRlbnRTdHJlYW0gPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jU0NTdHJlYW1JbnN0YW5jZSgpIGluaXRXaXRoRmlsdGVyOm1fY29udGVudEZpbHRl
ci5nZXQoKSBjYXB0dXJlT3V0cHV0UHJvcGVydGllczpzdHJlYW1Db25maWd1cmF0aW9uKCkuZ2V0
KCkgZGVsZWdhdGU6bV9jYXB0dXJlSGVscGVyLmdldCgpXSk7CiAKKyNpZiBIQVZFKFNDX0NPTlRF
TlRfU0hBUklOR19TRVNTSU9OKQorICAgIGlmIChTY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Np
b25NYW5hZ2VyOjppc0F2YWlsYWJsZSgpKSB7CisgICAgICAgIG1fY29udGVudFNoYXJpbmdTZXNz
aW9uID0gU2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCku
dGFrZVNoYXJpbmdTZXNzaW9uRm9yRmlsdGVyKG1fY29udGVudEZpbHRlci5nZXQoKSk7CisgICAg
ICAgIGlmICghbV9jb250ZW50U2hhcmluZ1Nlc3Npb24pIHsKKyAgICAgICAgICAgIHN0cmVhbUZh
aWxlZFdpdGhFcnJvcihuaWwsICJGYWlsZWQgdG8gZ2V0IFNoYXJpbmdTZXNzaW9uIl9zKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fY29udGVudFN0cmVhbSA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NTQ1N0cmVhbUluc3RhbmNlKCkgaW5pdFdpdGhTaGFyaW5nU2Vz
c2lvbjptX2NvbnRlbnRTaGFyaW5nU2Vzc2lvbi5nZXQoKSBjYXB0dXJlT3V0cHV0UHJvcGVydGll
czpzdHJlYW1Db25maWd1cmF0aW9uKCkuZ2V0KCkgZGVsZWdhdGU6bV9jYXB0dXJlSGVscGVyLmdl
dCgpXSk7CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgbV9jb250ZW50U3RyZWFtID0gYWRv
cHROUyhbUEFMOjphbGxvY1NDU3RyZWFtSW5zdGFuY2UoKSBpbml0V2l0aEZpbHRlcjptX2NvbnRl
bnRGaWx0ZXIuZ2V0KCkgY2FwdHVyZU91dHB1dFByb3BlcnRpZXM6c3RyZWFtQ29uZmlndXJhdGlv
bigpLmdldCgpIGRlbGVnYXRlOm1fY2FwdHVyZUhlbHBlci5nZXQoKV0pOworCisKICAgICBpZiAo
IW1fY29udGVudFN0cmVhbSkgewotICAgICAgICBzdHJlYW1GYWlsZWRXaXRoRXJyb3IobmlsLCAi
RmFpbGVkIHRvIGFsbG9jYXRlIFNMQ29udGVudFN0cmVhbSJfcyk7CisgICAgICAgIHN0cmVhbUZh
aWxlZFdpdGhFcnJvcihuaWwsICJGYWlsZWQgdG8gYWxsb2NhdGUgQ29udGVudFN0cmVhbSJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM4NSw2ICs0NjYsMTkgQEAgSW50U2l6ZSBT
Y3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6aW50cmluc2ljU2l6ZSgpIGNvbnN0CiAgICAg
aWYgKG1faW50cmluc2ljU2l6ZSkKICAgICAgICAgcmV0dXJuIG1faW50cmluc2ljU2l6ZS52YWx1
ZSgpOwogCisgICAgaWYgKG1fY29udGVudCkgeworICAgICAgICBhdXRvIGZyYW1lID0gc3dpdGNo
T24obV9jb250ZW50LnZhbHVlKCksCisgICAgICAgICAgICBbXSAoY29uc3QgUmV0YWluUHRyPFND
RGlzcGxheT4gZGlzcGxheSkgLT4gQ0dSZWN0IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gW2Rp
c3BsYXkgZnJhbWVdOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIFtdIChjb25zdCBSZXRh
aW5QdHI8U0NXaW5kb3c+IHdpbmRvdykgLT4gQ0dSZWN0IHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gW3dpbmRvdyBmcmFtZV07CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAg
cmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50PihmcmFtZS5zaXplLndpZHRoKSwgc3RhdGljX2Nhc3Q8
aW50PihmcmFtZS5zaXplLmhlaWdodCkgfTsKKyAgICB9CisKICAgICBpZiAobV9jYXB0dXJlRGV2
aWNlLnR5cGUoKSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4pIHsKICAgICAg
ICAgYXV0byBkaXNwbGF5TW9kZSA9IGFkb3B0Q0YoQ0dEaXNwbGF5Q29weURpc3BsYXlNb2RlKG1f
ZGV2aWNlSUQpKTsKICAgICAgICAgYXV0byBzY3JlZW5XaWR0aCA9IENHRGlzcGxheU1vZGVHZXRQ
aXhlbHNXaWRlKGRpc3BsYXlNb2RlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVu
Q2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MjM4ZWJhMDU3
YzQ2ODI3NmFjMDc0YjZjNzgxYzFhOWI3YzUzN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdT
ZXNzaW9uTWFuYWdlci5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI3ByYWdtYSBvbmNl
CisKKyNpZiBIQVZFKFNDX0NPTlRFTlRfU0hBUklOR19TRVNTSU9OKQorCisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCitPQkpDX0NMQVNTIFNDQ29udGVudFNoYXJpbmdTZXNzaW9uOworT0JKQ19DTEFT
UyBXZWJEaXNwbGF5TWVkaWFQcm9tcHRIZWxwZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ2FwdHVyZURldmljZTsKKworY2xhc3MgU2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNz
aW9uTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTY3JlZW5DYXB0dXJlS2l0U2hhcmlu
Z1Nlc3Npb25NYW5hZ2VyPiB7CitwdWJsaWM6CisgICAgY2xhc3MgU2hhcmluZ1Nlc3Npb25PYnNl
cnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTaGFyaW5nU2Vzc2lvbk9ic2VydmVyPiB7Cisg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5TaGFyaW5nU2Vzc2lvbk9ic2VydmVyKCkgPSBk
ZWZhdWx0OworCisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IFNjcmVlbiwgV2luZG93IH07Cisg
ICAgICAgIHZpcnR1YWwgVHlwZSBzZXNzaW9uVHlwZSgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmly
dHVhbCB1aW50MzJfdCBzZXNzaW9uSUQoKSBjb25zdCA9IDA7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIHNlc3Npb25DaGFuZ2VkKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbkVu
ZGVkKCkgPSAwOworCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyaW5nU2Vzc2lv
bk9ic2VydmVyJiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHNl
c3Npb25UeXBlKCkgPT0gb3RoZXIuc2Vzc2lvblR5cGUoKSAmJiBzZXNzaW9uSUQoKSA9PSBvdGhl
ci5zZXNzaW9uSUQoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlciYgc2luZ2xldG9uKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKKworICAgIFNj
cmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXIoKTsKKyAgICB+U2NyZWVuQ2FwdHVy
ZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlcigpOworCisgICAgUmV0YWluUHRyPFNDQ29udGVudFNo
YXJpbmdTZXNzaW9uPiB0YWtlU2hhcmluZ1Nlc3Npb25Gb3JGaWx0ZXIoU0NDb250ZW50RmlsdGVy
Kik7CisKKyAgICBSZXRhaW5QdHI8U0NDb250ZW50U2hhcmluZ1Nlc3Npb24+IGFkZFNoYXJpbmdT
ZXNzaW9uT2JzZXJ2ZXIoU2hhcmluZ1Nlc3Npb25PYnNlcnZlciYpOworICAgIHZvaWQgcmVtb3Zl
U2hhcmluZ1Nlc3Npb25PYnNlcnZlcihTaGFyaW5nU2Vzc2lvbk9ic2VydmVyJik7CisKKyAgICB2
b2lkIHNlc3Npb25EaWRDaGFuZ2VDb250ZW50KFJldGFpblB0cjxTQ0NvbnRlbnRTaGFyaW5nU2Vz
c2lvbj4pOworICAgIHZvaWQgcGlja2VyQ2FuY2VsZWRGb3JTZXNzaW9uKFJldGFpblB0cjxTQ0Nv
bnRlbnRTaGFyaW5nU2Vzc2lvbj4pOworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChSZXRhaW5QdHI8
U0NDb250ZW50U2hhcmluZ1Nlc3Npb24+KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hv
d1dpbmRvd1BpY2tlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Q2FwdHVy
ZURldmljZT4pPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3dTY3JlZW5QaWNrZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+KT4mJik7
CisKK3ByaXZhdGU6CisgICAgdm9pZCBjbGVhbnVwQWxsU2Vzc2lvbnMoKTsKKworICAgIGVudW0g
Y2xhc3MgUHJvbXB0VHlwZSB7IFdpbmRvdywgU2NyZWVuIH07CisgICAgdm9pZCBwcm9tcHRGb3JH
ZXREaXNwbGF5TWVkaWEoUHJvbXB0VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPENhcHR1cmVEZXZpY2U+KT4mJik7CisKKyAgICBWZWN0b3I8UmV0YWluUHRyPFNDQ29u
dGVudFNoYXJpbmdTZXNzaW9uPj4gbV9wZW5kaW5nQ2FwdHVyZVNlc3Npb25zOworICAgIFJldGFp
blB0cjxXZWJEaXNwbGF5TWVkaWFQcm9tcHRIZWxwZXI+IG1fcHJvbXB0SGVscGVyOworICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPik+IG1fY29t
cGxldGlvbkhhbmRsZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBIQVZFKFNDX0NPTlRFTlRfU0hBUklOR19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vz
c2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
U2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlci5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTA2
NzU3ZWMwODJmMTIzYTgwOThmYTViMGU2MmQ5OWVhMDM0ZGNiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRT
aGFyaW5nU2Vzc2lvbk1hbmFnZXIubW0KQEAgLTAsMCArMSwyNzMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lv
bk1hbmFnZXIuaCIKKworI2lmIEhBVkUoU0NfQ09OVEVOVF9TSEFSSU5HX1NFU1NJT04pCisKKyNp
bXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNl
LmgiCisjaW1wb3J0IDxwYWwvc3BpL21hYy9TY3JlZW5DYXB0dXJlS2l0U1BJLmg+CisjaW1wb3J0
IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisKKyNpbXBvcnQgPHBhbC9tYWMvU2NyZWVuQ2Fw
dHVyZUtpdFNvZnRMaW5rLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50ZXJm
YWNlIFdlYkRpc3BsYXlNZWRpYVByb21wdEhlbHBlciA6IE5TT2JqZWN0IDxTQ0NvbnRlbnRTaGFy
aW5nU2Vzc2lvblByb3RvY29sPiB7CisgICAgV2Vha1B0cjxTY3JlZW5DYXB0dXJlS2l0U2hhcmlu
Z1Nlc3Npb25NYW5hZ2VyPiBfY2FsbGJhY2s7CisgICAgVmVjdG9yPFJldGFpblB0cjxTQ0NvbnRl
bnRTaGFyaW5nU2Vzc2lvbj4+IF9zZXNzaW9uczsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoQ2FsbGJhY2s6KFNjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXIqKWNhbGxi
YWNrOworLSAodm9pZClkaXNjb25uZWN0OworLSAodm9pZClzdGFydE9ic2VydmluZ1Nlc3Npb246
KFNDQ29udGVudFNoYXJpbmdTZXNzaW9uICopc2Vzc2lvbjsKKy0gKHZvaWQpc3RvcE9ic2Vydmlu
Z1Nlc3Npb246KFNDQ29udGVudFNoYXJpbmdTZXNzaW9uICopc2Vzc2lvbjsKKy0gKHZvaWQpc2Vz
c2lvbkRpZEVuZDooU0NDb250ZW50U2hhcmluZ1Nlc3Npb24gKilzZXNzaW9uOworLSAodm9pZClz
ZXNzaW9uRGlkQ2hhbmdlQ29udGVudDooU0NDb250ZW50U2hhcmluZ1Nlc3Npb24gKilzZXNzaW9u
OworLSAodm9pZClwaWNrZXJDYW5jZWxlZEZvclNlc3Npb246KFNDQ29udGVudFNoYXJpbmdTZXNz
aW9uICopc2Vzc2lvbjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkRpc3BsYXlNZWRpYVBy
b21wdEhlbHBlcgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2FsbGJhY2s6KFNjcmVlbkNhcHR1
cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXIqKWNhbGxiYWNrCit7CisgICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBzZWxmOworCisgICAgX2Nh
bGxiYWNrID0gV2Vha1B0ciB7IGNhbGxiYWNrIH07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KHZvaWQpZGlzY29ubmVjdAoreworICAgIF9jYWxsYmFjayA9IG51bGxwdHI7CisgICAgZm9yIChh
dXRvJiBzZXNzaW9uIDogX3Nlc3Npb25zKQorICAgICAgICBbc2Vzc2lvbiBzZXREZWxlZ2F0ZTpu
aWxdOworICAgIF9zZXNzaW9ucy5jbGVhcigpOworfQorCistICh2b2lkKXN0YXJ0T2JzZXJ2aW5n
U2Vzc2lvbjooU0NDb250ZW50U2hhcmluZ1Nlc3Npb24gKilzZXNzaW9uCit7CisgICAgQVNTRVJU
KCFfc2Vzc2lvbnMuY29udGFpbnMoc2Vzc2lvbikpOworICAgIF9zZXNzaW9ucy5hcHBlbmQoUmV0
YWluUHRyIHsgc2Vzc2lvbiB9KTsKKyAgICBbc2Vzc2lvbiBzZXREZWxlZ2F0ZTpzZWxmXTsKK30K
KworLSAodm9pZClzdG9wT2JzZXJ2aW5nU2Vzc2lvbjooU0NDb250ZW50U2hhcmluZ1Nlc3Npb24g
KilzZXNzaW9uCit7CisgICAgYXV0byBpbmRleCA9IF9zZXNzaW9ucy5maW5kKFJldGFpblB0ciB7
IHNlc3Npb24gfSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47
CisKKyAgICBbc2Vzc2lvbiBzZXREZWxlZ2F0ZTpuaWxdOworICAgIF9zZXNzaW9ucy5yZW1vdmVB
bGwoc2Vzc2lvbik7Cit9CisKKy0gKHZvaWQpc2Vzc2lvbkRpZEVuZDooU0NDb250ZW50U2hhcmlu
Z1Nlc3Npb24gKilzZXNzaW9uCit7CisgICAgYXV0byBpbmRleCA9IF9zZXNzaW9ucy5maW5kKFJl
dGFpblB0ciB7IHNlc3Npb24gfSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAg
ICByZXR1cm47Cit9CisKKy0gKHZvaWQpc2Vzc2lvbkRpZENoYW5nZUNvbnRlbnQ6KFNDQ29udGVu
dFNoYXJpbmdTZXNzaW9uICopc2Vzc2lvbgoreworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbc2VsZiwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgc2Vzc2lvbiA9IFJl
dGFpblB0ciB7IHNlc3Npb24gfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKF9jYWxsYmFjaykK
KyAgICAgICAgICAgIF9jYWxsYmFjay0+c2Vzc2lvbkRpZENoYW5nZUNvbnRlbnQoc2Vzc2lvbik7
CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcGlja2VyQ2FuY2VsZWRGb3JTZXNzaW9uOihTQ0NvbnRl
bnRTaGFyaW5nU2Vzc2lvbiAqKXNlc3Npb24KK3sKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3NlbGYsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIHNlc3Npb24gPSBS
ZXRhaW5QdHIgeyBzZXNzaW9uIH1dKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChfY2FsbGJhY2sp
CisgICAgICAgICAgICBfY2FsbGJhY2stPnBpY2tlckNhbmNlbGVkRm9yU2Vzc2lvbihzZXNzaW9u
KTsKKyAgICB9KTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFNjcmVl
bkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXI6OmlzQXZhaWxhYmxlKCkKK3sKKyAgICBy
ZXR1cm4gV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5wcml2YXRlLnNjcmVl
bmNhcHR1cmVraXQuc2hhcmluZ3Nlc3Npb24iKQorICAgICAgICAgICAgJiYgUEFMOjpnZXRTQ0Nv
bnRlbnRTaGFyaW5nU2Vzc2lvbkNsYXNzKCkKKyAgICAgICAgICAgICYmIFNjcmVlbkNhcHR1cmVL
aXRDYXB0dXJlU291cmNlOjppc0F2YWlsYWJsZSgpOworfQorCitTY3JlZW5DYXB0dXJlS2l0U2hh
cmluZ1Nlc3Npb25NYW5hZ2VyJiBTY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2Vy
OjpzaW5nbGV0b24oKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXI+IG1h
bmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisKK1NjcmVlbkNhcHR1cmVLaXRTaGFyaW5n
U2Vzc2lvbk1hbmFnZXI6OlNjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXIoKQor
eworfQorCitTY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2VyOjp+U2NyZWVuQ2Fw
dHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlcigpCit7CisgICAgaWYgKG1fcHJvbXB0SGVscGVy
KSB7CisgICAgICAgIFttX3Byb21wdEhlbHBlciBkaXNjb25uZWN0XTsKKyAgICAgICAgbV9wcm9t
cHRIZWxwZXIgPSBudWxscHRyOworICAgIH0KKworICAgIGZvciAoYXV0byBzZXNzaW9uIDogbV9w
ZW5kaW5nQ2FwdHVyZVNlc3Npb25zKSB7CisgICAgICAgIFttX3Byb21wdEhlbHBlciBzdG9wT2Jz
ZXJ2aW5nU2Vzc2lvbjpzZXNzaW9uLmdldCgpXTsKKyAgICAgICAgW3Nlc3Npb24gZW5kXTsKKyAg
ICB9CisgICAgbV9wZW5kaW5nQ2FwdHVyZVNlc3Npb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgU2Ny
ZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlcjo6cGlja2VyQ2FuY2VsZWRGb3JTZXNz
aW9uKFJldGFpblB0cjxTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvbj4gc2Vzc2lvbikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NvbXBsZXRpb25IYW5kbGVyKTsK
KworICAgIGlmICghbV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
W21fcHJvbXB0SGVscGVyIHN0b3BPYnNlcnZpbmdTZXNzaW9uOnNlc3Npb24uZ2V0KCldOworICAg
IFtzZXNzaW9uIGVuZF07CisKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNo
YW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
ZDo6bnVsbG9wdCk7Cit9CisKK3ZvaWQgU2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFu
YWdlcjo6c2Vzc2lvbkRpZEVuZChSZXRhaW5QdHI8U0NDb250ZW50U2hhcmluZ1Nlc3Npb24+IHNl
c3Npb24pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gaW5kZXgg
PSBtX3BlbmRpbmdDYXB0dXJlU2Vzc2lvbnMuZmluZElmKFtzZXNzaW9uXShhdXRvIHBlbmRpbmdT
ZXNzaW9uKSB7CisgICAgICAgIHJldHVybiBbcGVuZGluZ1Nlc3Npb24gaXNFcXVhbDpzZXNzaW9u
LmdldCgpXTsKKyAgICB9KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFttX3Byb21wdEhlbHBlciBzdG9wT2JzZXJ2aW5nU2Vzc2lvbjpzZXNzaW9u
LmdldCgpXTsKKyAgICBtX3BlbmRpbmdDYXB0dXJlU2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsKK30K
Kwordm9pZCBTY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2VyOjpzZXNzaW9uRGlk
Q2hhbmdlQ29udGVudChSZXRhaW5QdHI8U0NDb250ZW50U2hhcmluZ1Nlc3Npb24+IHNlc3Npb24p
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChbc2Vzc2lvbiBjb250
ZW50XS50eXBlID09IFNDQ29udGVudEZpbHRlclR5cGVOb3RoaW5nKSB7CisgICAgICAgIHNlc3Np
b25EaWRFbmQoc2Vzc2lvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGlu
ZGV4ID0gbV9wZW5kaW5nQ2FwdHVyZVNlc3Npb25zLmZpbmRJZihbc2Vzc2lvbl0oYXV0byBwZW5k
aW5nU2Vzc2lvbikgeworICAgICAgICByZXR1cm4gW3BlbmRpbmdTZXNzaW9uIGlzRXF1YWw6c2Vz
c2lvbi5nZXQoKV07CisgICAgfSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAg
ICByZXR1cm47CisKKyAgICBBU1NFUlQobV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgaWYgKCFt
X2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGQ6Om9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IGRldmljZTsKKyAgICBTQ0NvbnRlbnRGaWx0ZXIqIGNvbnRlbnQgPSBb
c2Vzc2lvbiBjb250ZW50XTsKKyAgICBzd2l0Y2ggKGNvbnRlbnQudHlwZSkgeworICAgIGNhc2Ug
U0NDb250ZW50RmlsdGVyVHlwZURlc2t0b3BJbmRlcGVuZGVudFdpbmRvdzoKKyAgICAgICAgZGV2
aWNlID0gU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OndpbmRvd0NhcHR1cmVEZXZpY2VX
aXRoUGVyc2lzdGVudElEKFN0cmluZzo6bnVtYmVyKGNvbnRlbnQuZGVza3RvcEluZGVwZW5kZW50
V2luZG93SW5mby53aW5kb3cud2luZG93SUQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
Q0NvbnRlbnRGaWx0ZXJUeXBlRGlzcGxheToKKyAgICAgICAgZGV2aWNlID0gU2NyZWVuQ2FwdHVy
ZUtpdENhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKFN0
cmluZzo6bnVtYmVyKGNvbnRlbnQuZGlzcGxheUluZm8uZGlzcGxheS5kaXNwbGF5SUQpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTQ0NvbnRlbnRGaWx0ZXJUeXBlTm90aGluZzoKKyAgICBj
YXNlIFNDQ29udGVudEZpbHRlclR5cGVBcHBzQW5kV2luZG93c1Bpbm5lZFRvRGlzcGxheToKKyAg
ICBjYXNlIFNDQ29udGVudEZpbHRlclR5cGVDbGllbnRTaG91bGRJbXBsZW1lbnREZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhh
bmRsZXIsIHsgfSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoZGV2aWNlKTsKK30KKwordm9pZCBT
Y3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2VyOjpzaG93V2luZG93UGlja2VyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgcHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKFByb21wdFR5
cGU6OldpbmRvdywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFNjcmVl
bkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXI6OnNob3dTY3JlZW5QaWNrZXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBwcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoUHJvbXB0VHlwZTo6
U2NyZWVuLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgU2NyZWVuQ2Fw
dHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlcjo6cHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKFBy
b21wdFR5cGUgcHJvbXB0VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNB
dmFpbGFibGUoKSk7CisgICAgQVNTRVJUKCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGlm
ICghaXNBdmFpbGFibGUoKSB8fCBtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvbiogc2Vzc2lvbiA9IFtbUEFMOjpnZXRTQ0Nv
bnRlbnRTaGFyaW5nU2Vzc2lvbkNsYXNzKCkgYWxsb2NdIGluaXRXaXRoVGl0bGU6QCJXZWJLaXQg
Z2V0RGlzcGxheU1lZGlhIFByb21wdCJdOworICAgIGlmICghc2Vzc2lvbikgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJTY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25N
YW5hZ2VyOjpwcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEgdW5hYmxlIHRvIGNyZWF0ZSBzaGFyaW5n
IHNlc3Npb24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9wcm9tcHRIZWxwZXIpCisgICAgICAg
IG1fcHJvbXB0SGVscGVyID0gYWRvcHROUyhbW1dlYkRpc3BsYXlNZWRpYVByb21wdEhlbHBlciBh
bGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSk7CisKKyAgICBbbV9wcm9tcHRIZWxwZXIgc3Rh
cnRPYnNlcnZpbmdTZXNzaW9uOnNlc3Npb25dOworICAgIG1fcGVuZGluZ0NhcHR1cmVTZXNzaW9u
cy5hcHBlbmQoc2Vzc2lvbik7CisgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpOworCisgICAgW3Nlc3Npb24gc2hvd1BpY2tlckZvclR5cGU6cHJvbXB0
VHlwZSA9PSBQcm9tcHRUeXBlOjpXaW5kb3cgPyBTQ0NvbnRlbnRGaWx0ZXJUeXBlRGVza3RvcElu
ZGVwZW5kZW50V2luZG93IDogU0NDb250ZW50RmlsdGVyVHlwZURpc3BsYXldOworfQorCitSZXRh
aW5QdHI8U0NDb250ZW50U2hhcmluZ1Nlc3Npb24+IFNjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vz
c2lvbk1hbmFnZXI6OnRha2VTaGFyaW5nU2Vzc2lvbkZvckZpbHRlcihTQ0NvbnRlbnRGaWx0ZXIq
IGZpbHRlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBpbmRl
eCA9IG1fcGVuZGluZ0NhcHR1cmVTZXNzaW9ucy5maW5kSWYoW2ZpbHRlcl0oYXV0byBwZW5kaW5n
U2Vzc2lvbikgeworICAgICAgICByZXR1cm4gW2ZpbHRlciBpc0VxdWFsOltwZW5kaW5nU2Vzc2lv
biBjb250ZW50XV07CisgICAgfSk7CisgICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKKyAg
ICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2Vi
UlRDLCAiU2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlcjo6dGFrZVNoYXJpbmdT
ZXNzaW9uRm9yRmlsdGVyIHNoYXJpbmcgc2Vzc2lvbiBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUmV0YWluUHRyPFNDQ29udGVudFNoYXJpbmdTZXNz
aW9uPiBzZXNzaW9uID0gbV9wZW5kaW5nQ2FwdHVyZVNlc3Npb25zW2luZGV4XTsKKyAgICBtX3Bl
bmRpbmdDYXB0dXJlU2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsKKworICAgIHJldHVybiBXVEZNb3Zl
KHNlc3Npb24pOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhB
VkUoU0NfQ09OVEVOVF9TSEFSSU5HX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3NwaS9Db2NvYS9TYWZlQnJvd3NpbmdTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vc3BpL0NvY29hL1NhZmVCcm93c2luZ1NQSS5oCmluZGV4IGY2MGJhYTFiNjNkZTI1NWJj
YzQ4NjlmMGQ0NWZlZjIwYzk2YzBlMjYuLjJjYmQyYmZmODYwN2MyY2E4YzIzYmEwNjNmZDk1ZDNl
MWE5YzAyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL1Nh
ZmVCcm93c2luZ1NQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL1Nh
ZmVCcm93c2luZ1NQSS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpZiAwICYmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpbXBvcnQgPFNhZmFyaVNhZmVCcm93c2luZy9TYWZh
cmlTYWZlQnJvd3NpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL0Rpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvRGlzcGxheUNhcHR1cmVTZXNzaW9uTWFuYWdlci5tbQppbmRleCA3OTlmNmYxM2Ey
NDI5ZjBkNzk2NjI3MjE4MGNjNjRjMzA2YTIzMmVjLi43Y2RiMjQwZjNiNGYxZDQ4ZjE2MjBjNmQx
ODVmNDRmMGRkMjg4MWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
RGlzcGxheUNhcHR1cmVTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvRGlzcGxheUNhcHR1cmVTZXNzaW9uTWFuYWdlci5tbQpAQCAtMzYsNiArMzYsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmVl
bkNhcHR1cmVLaXRDYXB0dXJlU291cmNlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NjcmVlbkNhcHR1
cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9NYWlu
VGhyZWFkLmg+CkBAIC0xNDEsOCArMTQyLDggQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNlc3Npb25N
YW5hZ2VyOjphbGVydEZvckdldERpc3BsYXlNZWRpYShXZWJQYWdlUHJveHkmIHBhZ2UsIGMKICAg
ICAgICAgdmlzaWJsZU9yaWdpbiA9IGFwcGxpY2F0aW9uVmlzaWJsZU5hbWUoKTsKIAogICAgIE5T
U3RyaW5nICphbGVydFRpdGxlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX05T
U1RSSU5HKEAiQWxsb3cg4oCcJUDigJ0gdG8gb2JzZXJ2ZSBvbmUgb2YgeW91ciB3aW5kb3dzIG9y
IHNjcmVlbnM/IiwgIk1lc3NhZ2UgZm9yIHdpbmRvdyBhbmQgc2NyZWVuIHNoYXJpbmcgcHJvbXB0
IiksIHZpc2libGVPcmlnaW5dOwotICAgIGF1dG8gKmFsbG93V2luZG93QnV0dG9uU3RyaW5nID0g
V0VCX1VJX05TU1RSSU5HKEAiQWxsb3cgT2JzZXJ2aW5nIGEgV2luZG93IiwgIkFsbG93IHdpbmRv
dyBidXR0b24gdGl0bGUgaW4gd2luZG93IGFuZCBzY3JlZW4gc2hhcmluZyBwcm9tcHQiKTsKLSAg
ICBhdXRvICphbGxvd1NjcmVlbkJ1dHRvblN0cmluZyA9IFdFQl9VSV9OU1NUUklORyhAIkFsbG93
IE9ic2VydmluZyBhIFNjcmVlbiIsICJBbGxvdyBzY3JlZW4gYnV0dG9uIHRpdGxlIGluIHdpbmRv
dyBhbmQgc2NyZWVuIHNoYXJpbmcgcHJvbXB0Iik7CisgICAgYXV0byAqYWxsb3dXaW5kb3dCdXR0
b25TdHJpbmcgPSBXRUJfVUlfTlNTVFJJTkcoQCJBbGxvdyB0byBTaGFyZSBXaW5kb3ciLCAiQWxs
b3cgd2luZG93IGJ1dHRvbiB0aXRsZSBpbiB3aW5kb3cgYW5kIHNjcmVlbiBzaGFyaW5nIHByb21w
dCIpOworICAgIGF1dG8gKmFsbG93U2NyZWVuQnV0dG9uU3RyaW5nID0gV0VCX1VJX05TU1RSSU5H
KEAiQWxsb3cgdG8gU2hhcmUgU2NyZWVuIiwgIkFsbG93IHNjcmVlbiBidXR0b24gdGl0bGUgaW4g
d2luZG93IGFuZCBzY3JlZW4gc2hhcmluZyBwcm9tcHQiKTsKICAgICBhdXRvICpkb05vdEFsbG93
QnV0dG9uU3RyaW5nID0gV0VCX1VJX05TU1RSSU5HKEAiRG9u4oCZdCBBbGxvdyAod2luZG93IGFu
ZCBzY3JlZW4gc2hhcmluZykiLCAiRGlzYWxsb3cgYnV0dG9uIHRpdGxlIGluIHdpbmRvdyBhbmQg
c2NyZWVuIHNoYXJpbmcgcHJvbXB0Iik7CiAKICAgICBhdXRvIGFsZXJ0ID0gYWRvcHROUyhbW05T
QWxlcnQgYWxsb2NdIGluaXRdKTsKQEAgLTE5OCw2ICsxOTksMTMgQEAgdm9pZCBEaXNwbGF5Q2Fw
dHVyZVNlc3Npb25NYW5hZ2VyOjpzaG93V2luZG93UGlja2VyKFdlYlBhZ2VQcm94eSYgcGFnZSwg
Y29uc3QgV2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEhBVkUoU0NfQ09OVEVOVF9T
SEFSSU5HX1NFU1NJT04pCisgICAgaWYgKFNjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1h
bmFnZXI6OmlzQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgU2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdT
ZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuc2hvd1dpbmRvd1BpY2tlcihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGFs
ZXJ0Rm9yV2luZG93U2VsZWN0aW9uKHBhZ2UsIG9yaWdpbiwgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gd2luZG93
SUQsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB3aW5kb3dUaXRsZSkgbXV0YWJsZSB7CiAKICAgICAg
ICAgaWYgKCF3aW5kb3dJRCB8fCAhd2luZG93VGl0bGUpIHsKQEAgLTIxNyw2ICsyMjUsMTMgQEAg
dm9pZCBEaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5hZ2VyOjpzaG93U2NyZWVuUGlja2VyKFdlYlBh
Z2VQcm94eSYsIGNvbnN0IFdlYkNvcmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEhB
VkUoU0NfQ09OVEVOVF9TSEFSSU5HX1NFU1NJT04pCisgICAgaWYgKFNjcmVlbkNhcHR1cmVLaXRT
aGFyaW5nU2Vzc2lvbk1hbmFnZXI6OmlzQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgU2NyZWVuQ2Fw
dHVyZUtpdFNoYXJpbmdTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuc2hvd1NjcmVlblBpY2tl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIGNhbGxPbk1haW5SdW5Mb29wKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgZm9yIChhdXRvJiBk
ZXZpY2UgOiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5kaXNwbGF5Q2Fw
dHVyZUZhY3RvcnkoKS5kaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKS5jYXB0dXJlRGV2aWNl
cygpKSB7CiAgICAgICAgICAgICBpZiAoZGV2aWNlLmVuYWJsZWQoKSAmJiBkZXZpY2UudHlwZSgp
ID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbikgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451793</attachid>
            <date>2022-02-12 13:28:07 -0800</date>
            <delta_ts>2022-02-12 14:59:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236531-20220212132807.patch</filename>
            <type>text/plain</type>
            <size>1549</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzExYzEyMGNiMTFhM2Yz
NmE1MmNkNWQ0ZTVlNjVmYjk0ZmZmZDQ0Mi4uNzU5YjMzM2FjYjQ0YmJkYjMyMmQzYzA0OGM5YzVm
NjJlYjA5NTg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTEyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVXNl
IHN5c3RlbSB3aW5kb3cgYW5kIHNjcmVlbiBwaWNrZXIgd2hlbiBhdmFpbGFibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjUzMQorICAgICAgICBy
ZGFyOi8vODcxMTE4MTYKKworICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KKworICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Np
b25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuQ2FwdHVyZUtpdFNoYXJpbmdT
ZXNzaW9uTWFuYWdlcjo6dGFrZVNoYXJpbmdTZXNzaW9uRm9yRmlsdGVyKToKKwogMjAyMi0wMi0x
MiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW0ZsZXhib3hdIFNob3cgaXRlbSBib3VuZHMsIGdhcHMsIGFuZCBmcmVlIHNwYWNlIGlu
IGZsZXggb3ZlcmxheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0U2hhcmluZ1Nlc3Npb25NYW5hZ2VyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRTaGFy
aW5nU2Vzc2lvbk1hbmFnZXIubW0KaW5kZXggMDEwNjc1N2VjMDgyZjEyM2E4MDk4ZmE1YjBlNjJk
OTllYTAzNGRjYi4uNDk4OTY0MTg3YWY5NjJlNGE4N2Y0YTU3MmQ3ZjY4MmVmZTc0OWM1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNh
cHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFn
ZXIubW0KQEAgLTI2NCw3ICsyNjQsNyBAQCBSZXRhaW5QdHI8U0NDb250ZW50U2hhcmluZ1Nlc3Np
b24+IFNjcmVlbkNhcHR1cmVLaXRTaGFyaW5nU2Vzc2lvbk1hbmFnZXI6OnRha2VTaAogICAgIFJl
dGFpblB0cjxTQ0NvbnRlbnRTaGFyaW5nU2Vzc2lvbj4gc2Vzc2lvbiA9IG1fcGVuZGluZ0NhcHR1
cmVTZXNzaW9uc1tpbmRleF07CiAgICAgbV9wZW5kaW5nQ2FwdHVyZVNlc3Npb25zLnJlbW92ZShp
bmRleCk7CiAKLSAgICByZXR1cm4gV1RGTW92ZShzZXNzaW9uKTsKKyAgICByZXR1cm4gc2Vzc2lv
bjsKIH0KIAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>