<?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>187896</bug_id>
          
          <creation_ts>2018-07-22 18:32:11 -0700</creation_ts>
          <short_desc>&apos;ended&apos; Event doesn&apos;t fire on MediaStreamTrack when a USB camera is unplugged</short_desc>
          <delta_ts>2018-12-21 17:37:10 -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>Safari Technology Preview</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.13</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="Adam">adam</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1444196</commentid>
    <comment_count>0</comment_count>
    <who name="Adam">adam</who>
    <bug_when>2018-07-22 18:32:11 -0700</bug_when>
    <thetext>Steps to reproduce:

1. Plug in a USB web cam
2. Go to https://output.jsbin.com/fofeyan
3. Choose the USB webcam as your camera and click the switch device button
4. Allow access to the camera and wait for it to be acquired.
5. Unplug the USB webcam

Expected result: You get an alert saying &apos;track ended&apos;. This happens in Chrome and Firefox. But in Safari there is no &apos;ended&apos; Event on the MediaStreamTrack.

I tested this in Safari Tech Preview 12.0 and it&apos;s not firing there either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445945</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-27 17:33:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/42681445&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490455</commentid>
    <comment_count>2</comment_count>
      <attachid>357973</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-12-21 13:22:41 -0800</bug_when>
    <thetext>Created attachment 357973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490470</commentid>
    <comment_count>3</comment_count>
      <attachid>357978</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-12-21 14:04:04 -0800</bug_when>
    <thetext>Created attachment 357978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490475</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-12-21 14:13:13 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=357973&amp;action=review

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:636
&gt; +    AVCaptureDeviceTypedef *device = [notification object];
&gt; +    if (this-&gt;device() == device)

Nit: You don&apos;t seem to need the local variable here.

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:726
&gt; +    if (!m_callback)
&gt; +        return;
&gt; +
&gt; +    m_callback-&gt;deviceDisconnected(notification);

Nit: how about:

if (m_callback)
    m_callback-&gt;deviceDisconnected(notification);

&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:95
&gt; +    bool isNonAggregable = !name || !String { name }.startsWith(&quot;com.apple.audio.CoreAudio&quot;);

Woah, that looks super weird.  I realize that brace-initialization is the new hotness, but I don&apos;t think it&apos;s supposed to be used for anonymous variables like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490483</commentid>
    <comment_count>5</comment_count>
      <attachid>357978</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-21 14:24:21 -0800</bug_when>
    <thetext>Comment on attachment 357978
Patch

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

&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp:206
&gt; +void CoreAudioSharedUnit::setCaptureDevice(const String&amp; persistentID, uint32_t captureDeviceID)

Could be String&amp;&amp;

&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp:232
&gt; +    }

Nit: use WTF::anyOf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490519</commentid>
    <comment_count>6</comment_count>
      <attachid>357988</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-12-21 15:15:48 -0800</bug_when>
    <thetext>Created attachment 357988
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490577</commentid>
    <comment_count>7</comment_count>
      <attachid>357988</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-21 17:37:08 -0800</bug_when>
    <thetext>Comment on attachment 357988
Patch for landing.

Clearing flags on attachment: 357988

Committed r239531: &lt;https://trac.webkit.org/changeset/239531&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490578</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-21 17:37:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357973</attachid>
            <date>2018-12-21 13:22:41 -0800</date>
            <delta_ts>2018-12-21 14:04:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187896-20181221132240.patch</filename>
            <type>text/plain</type>
            <size>19117</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMxMGJhYzYyMGVkNjI0
YzZmMmYxYzA3NTUxYWZkNWY3MmY0MmI2Yi4uZDA3MDE2OGU0NTllYTMwZWRmYjBiZWFkMWQwMGY4
MjljYzJlZDJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE4LTEyLTIxICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgICdlbmRlZCcgRXZl
bnQgZG9lc24ndCBmaXJlIG9uIE1lZGlhU3RyZWFtVHJhY2sgd2hlbiBhIFVTQiBjYW1lcmEgaXMg
dW5wbHVnZ2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODc4OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyNjgxNDQ1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGVzdGVk
IG1hbnVhbGx5LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmRldmljZURpc2Nvbm5lY3RlZCk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVy
ZVNvdXJjZU9ic2VydmVyIGFkZE5vdGlmaWNhdGlvbk9ic2VydmVyc10pOgorICAgICAgICAoLVtX
ZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciByZW1vdmVOb3RpZmljYXRpb25PYnNl
cnZlcnNdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIg
ZGV2aWNlQ29ubmVjdGVkRGlkQ2hhbmdlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkZXZpY2VIYXNJbnB1dFN0cmVhbXMpOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZENh
cHR1cmVEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXI6OmNvcmVBdWRpb0NhcHR1cmVEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlc0No
YW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
cmVBdWRpb1NoYXJlZFVuaXQ6OnNldENhcHR1cmVEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6ZGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvU2hhcmVkVW5pdDo6dmVyaWZ5SXNDYXB0dXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2FwdHVyZUZhaWxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlRmFjdG9yeTo6ZGV2aWNlc0NoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Q29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXRDYXB0dXJl
RGV2aWNlSUQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
b3JlQXVkaW9DYXB0dXJlU291cmNlLmg6CisKIDIwMTgtMTItMjAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgT3B0aW9uYWw6OnZhbHVlT3IoKSBpbnN0ZWFk
IG9mIE9wdGlvbmFsOjp2YWx1ZV9vcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAyYmE0NjczYjQ3
OWZiZTBiYWM0OWIyYmJlNjU4MjI0MDE4YzVlMThjLi4xMzI0NGNkNTk5ZmQzNWI3ZmIzZTg3MGRk
ZjczZmE0YmNjZTlmMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
OC0xMi0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICAnZW5kZWQnIEV2ZW50IGRvZXNuJ3QgZmlyZSBvbiBNZWRpYVN0cmVhbVRyYWNrIHdoZW4gYSBV
U0IgY2FtZXJhIGlzIHVucGx1Z2dlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg3ODk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjY4MTQ0NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9z
cGkvY2YvQ29yZUF1ZGlvU1BJLmg6CisKIDIwMTgtMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICB3dGYvT3B0aW9uYWwuaDogbW92ZS1jb25zdHJ1Y3RvciBh
bmQgbW92ZS1hc3NpZ25tZW50IG9wZXJhdG9yIHNob3VsZCBkaXNlbmdhZ2UgdGhlIHZhbHVlIGJl
aW5nIG1vdmVkIGZyb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nm
L0NvcmVBdWRpb1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ29yZUF1ZGlv
U1BJLmgKaW5kZXggMzc3OTlkMmIxMDE1ZjVjMWNiN2E5N2FhMzk3YTQyNzY0ZTUwYTUxNy4uODhh
ODU4ZTkxMGQ0NGQ4MWUyZmE5YjA2NjAzNmM1YTM5NjRhNjdiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJLmgKQEAgLTU1LDcgKzU1LDggQEAgQ0ZfRU5V
TShBdWRpb09iamVjdFByb3BlcnR5U2NvcGUpCiAKIENGX0VOVU0oQXVkaW9PYmplY3RQcm9wZXJ0
eVNlbGVjdG9yKQogewotICAgIGtBdWRpb0hhcmR3YXJlUHJvcGVydHlEZWZhdWx0SW5wdXREZXZp
Y2UgPSAnZEluICcKKyAgICBrQXVkaW9IYXJkd2FyZVByb3BlcnR5RGVmYXVsdElucHV0RGV2aWNl
ID0gJ2RJbiAnLAorICAgIGtBdWRpb0RldmljZVByb3BlcnR5VGFwRW5hYmxlZCA9ICd0YXBkJywK
IH07CiAKIENGX0VOVU0oaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCAyYTUz
MDU0MzE0Njg0YTJlNDc1Nzk4ZmU4Nzk5NjUyZGRhZmUxNjVlLi42MDM4MTcyNjNkZWViMDM4NDlj
ODcxODY0MTg2NDljMDM0ZjFmYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaApAQCAt
NjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJbnRlcnJ1cHRpb25SZWFzb24g
eyBOb25lLCBWaWRlb05vdEFsbG93ZWRJbkJhY2tncm91bmQsIEF1ZGlvSW5Vc2UsIFZpZGVvSW5V
c2UsIFZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSB9OwogICAgIHZvaWQgY2FwdHVyZVNlc3Np
b25CZWdpbkludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KTsKICAgICB2b2lk
IGNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4p
OworICAgIHZvaWQgZGV2aWNlRGlzY29ubmVjdGVkKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4p
OwogCiAgICAgQVZDYXB0dXJlU2Vzc2lvbiogc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vz
c2lvbi5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggYTU0Y2Qx
NGQ2ZWFhNzZiODgwMGU4MDBlYTdiZTJhOGExMDhjNTU0Yi4uZjA1NWJhMzhhY2FmMDNjMWQyMmYw
NDMzMDk1Y2ViNDcyOWU1ZjQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAt
NzgsNiArNzgsOSBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNz
aW9uKQogCiBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZVZpZGVv
LCBOU1N0cmluZyAqKQogCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkNhcHR1
cmVEZXZpY2VXYXNEaXNjb25uZWN0ZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCisjZGVmaW5l
IEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5lY3RlZE5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVE
ZXZpY2VXYXNEaXNjb25uZWN0ZWROb3RpZmljYXRpb24oKQorCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIFNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJl
U2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19Q
T0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVw
dGVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQpAQCAtMTA5LDYgKzExMiw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBQQUw7CiAtKHZvaWQpc2Vzc2lvblJ1bnRpbWVFcnJvcjooTlNOb3RpZmljYXRpb24q
KW5vdGlmaWNhdGlvbjsKIC0odm9pZCliZWdpblNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmlj
YXRpb24qKW5vdGlmaWNhdGlvbjsKIC0odm9pZCllbmRTZXNzaW9uSW50ZXJydXB0ZWQ6KE5TTm90
aWZpY2F0aW9uKilub3RpZmljYXRpb247CistKHZvaWQpZGV2aWNlQ29ubmVjdGVkRGlkQ2hhbmdl
OihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uOwogI2VuZGlmCiBAZW5kCiAKQEAgLTYyNiw2
ICs2MzAsMTQgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJ
bnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW8KIH0KICNlbmRpZgogCit2b2lkIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpkZXZpY2VEaXNjb25uZWN0ZWQoUmV0YWluUHRyPE5TTm90aWZp
Y2F0aW9uPiBub3RpZmljYXRpb24pCit7CisgICAgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqZGV2
aWNlID0gW25vdGlmaWNhdGlvbiBvYmplY3RdOworICAgIGlmICh0aGlzLT5kZXZpY2UoKSA9PSBk
ZXZpY2UpCisgICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNl
cnZlcgpAQCAtNjUwLDEyICs2NjIsMTQgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2Fw
dHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW8KIAogLSAo
dm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZlcnMKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKIAogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyKiBj
ZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAgQVZDYXB0
dXJlU2Vzc2lvblR5cGUqIHNlc3Npb24gPSBtX2NhbGxiYWNrLT5zZXNzaW9uKCk7CiAKKyAgICBb
Y2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGRldmljZUNvbm5lY3Rl
ZERpZENoYW5nZTopIG5hbWU6QVZDYXB0dXJlRGV2aWNlV2FzRGlzY29ubmVjdGVkTm90aWZpY2F0
aW9uIG9iamVjdDpuaWxdOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBBVkNhcHR1
cmVTZXNzaW9uVHlwZSogc2Vzc2lvbiA9IG1fY2FsbGJhY2stPnNlc3Npb24oKTsKICAgICBbY2Vu
dGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHNlc3Npb25SdW50aW1lRXJy
b3I6KSBuYW1lOkFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24gb2JqZWN0
OnNlc3Npb25dOwogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoYmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQ6KSBuYW1lOkFWQ2FwdHVyZVNlc3Npb25XYXNJbnRl
cnJ1cHRlZE5vdGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07CiAgICAgW2NlbnRlciBhZGRPYnNl
cnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihlbmRTZXNzaW9uSW50ZXJydXB0ZWQ6KSBuYW1l
OkFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlvbiBvYmplY3Q6c2Vz
c2lvbl07CkBAIC02NjQsOSArNjc4LDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2Fw
dHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW8KIAogLSAo
dm9pZClyZW1vdmVOb3RpZmljYXRpb25PYnNlcnZlcnMKIHsKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2Jz
ZXJ2ZXI6c2VsZl07Ci0jZW5kaWYKIH0KIAogLSAodm9pZCljYXB0dXJlT3V0cHV0OihBVkNhcHR1
cmVPdXRwdXRUeXBlKiljYXB0dXJlT3V0cHV0IGRpZE91dHB1dFNhbXBsZUJ1ZmZlcjooQ01TYW1w
bGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyIGZyb21Db25uZWN0aW9uOihBVkNhcHR1cmVDb25uZWN0
aW9uVHlwZSopY29ubmVjdGlvbgpAQCAtNzA0LDYgKzcxNiwxNiBAQCB2b2lkIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3Rp
ZmljYXRpbwogICAgICAgICBtX2NhbGxiYWNrLT5jYXB0dXJlRGV2aWNlU3VzcGVuZGVkRGlkQ2hh
bmdlKCk7CiB9CiAKKy0gKHZvaWQpZGV2aWNlQ29ubmVjdGVkRGlkQ2hhbmdlOihOU05vdGlmaWNh
dGlvbiopbm90aWZpY2F0aW9uCit7CisgICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9DYXB0
dXJlU291cmNlT2JzZXJ2ZXI6OmRldmljZUNvbm5lY3RlZERpZENoYW5nZSglcCkiLCBzZWxmKTsK
KworICAgIGlmICghbV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jYWxsYmFj
ay0+ZGV2aWNlRGlzY29ubmVjdGVkKG5vdGlmaWNhdGlvbik7Cit9CisKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogLSAodm9pZClzZXNzaW9uUnVudGltZUVycm9yOihOU05vdGlmaWNhdGlvbiop
bm90aWZpY2F0aW9uCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyLmNwcAppbmRleCAxMDk1NmJhMWZjOTY5NGYwM2YzNTU4YzA3NzM2ZDM1M2U2MjA2ZDQ4Li43
OTk3MDlkNTE3Y2QxMTNmYTNkNTIwMTM2OWM0NGU3MDM3M2EzYTFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTI5LDEwICsyOSwxMiBAQAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUgIkNv
cmVBdWRpb0NhcHR1cmVEZXZpY2UuaCIKKyNpbmNsdWRlICJDb3JlQXVkaW9DYXB0dXJlU291cmNl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaCIKICNpbmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+CiAjaW5jbHVkZSA8Q29y
ZU1lZGlhL0NNU3luYy5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJLmg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIApAQCAtNjcsNyArNjksNiBAQCBzdGF0aWMgYm9vbCBkZXZpY2VIYXNJbnB1dFN0cmVhbXMo
QXVkaW9PYmplY3RJRCBkZXZpY2VJRCkKICAgICBVSW50MzIgZGF0YVNpemUgPSAwOwogICAgIEF1
ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIGFkZHJlc3MgPSB7IGtBdWRpb0RldmljZVByb3BlcnR5
U3RyZWFtQ29uZmlndXJhdGlvbiwga0F1ZGlvRGV2aWNlUHJvcGVydHlTY29wZUlucHV0LCBrQXVk
aW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKICAgICBhdXRvIGVyciA9IEF1ZGlvT2Jq
ZWN0R2V0UHJvcGVydHlEYXRhU2l6ZShkZXZpY2VJRCwgJmFkZHJlc3MsIDAsIG51bGxwdHIsICZk
YXRhU2l6ZSk7Ci0KICAgICBpZiAoZXJyIHx8ICFkYXRhU2l6ZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC04MCw2ICs4MSwyMyBAQCBzdGF0aWMgYm9vbCBkZXZpY2VIYXNJbnB1dFN0cmVh
bXMoQXVkaW9PYmplY3RJRCBkZXZpY2VJRCkKIAogc3RhdGljIGJvb2wgaXNWYWxpZENhcHR1cmVE
ZXZpY2UoY29uc3QgQ29yZUF1ZGlvQ2FwdHVyZURldmljZSYgZGV2aWNlKQogeworICAgIC8vIEln
bm9yZSBvdXRwdXQgZGV2aWNlcyB0aGF0IGhhdmUgaW5wdXQgb25seSBmb3IgZWNobyBjYW5jZWxs
YXRpb24uCisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsga0F1ZGlv
RGV2aWNlUHJvcGVydHlUYXBFbmFibGVkLCBrQXVkaW9EZXZpY2VQcm9wZXJ0eVNjb3BlT3V0cHV0
LCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKKyAgICBpZiAoQXVkaW9PYmpl
Y3RIYXNQcm9wZXJ0eShkZXZpY2UuZGV2aWNlSUQoKSwgJmFkZHJlc3MpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBGaWx0ZXIgb3V0IG5vbi1hZ2dyZWdhYmxlIGRldmljZXMKKyAg
ICBVSW50MzIgZGF0YVNpemUgPSAwOworICAgIGFkZHJlc3MgPSB7IGtBdWRpb09iamVjdFByb3Bl
cnR5Q3JlYXRvciwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0
UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CisgICAgQ0ZTdHJpbmdSZWYgbmFtZSA9IG51bGxwdHI7
CisgICAgZGF0YVNpemUgPSBzaXplb2YobmFtZSk7CisgICAgQXVkaW9PYmplY3RHZXRQcm9wZXJ0
eURhdGEoZGV2aWNlLmRldmljZUlEKCksICZhZGRyZXNzLCAwLCBudWxscHRyLCAmZGF0YVNpemUs
ICZuYW1lKTsKKyAgICBib29sIGlzTm9uQWdncmVnYWJsZSA9ICFuYW1lIHx8ICFTdHJpbmcgeyBu
YW1lIH0uc3RhcnRzV2l0aCgiY29tLmFwcGxlLmF1ZGlvLkNvcmVBdWRpbyIpOworICAgIGlmIChu
YW1lKQorICAgICAgICBDRlJlbGVhc2UobmFtZSk7CisgICAgaWYgKGlzTm9uQWdncmVnYWJsZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgLy8gSWdub3JlIHVubmFtZWQgZGV2aWNlcyBh
bmQgYWdncmVnYXRlIGRldmljZXMgY3JlYXRlZCBieSBWUElPLgogICAgIHJldHVybiAhZGV2aWNl
LmxhYmVsKCkuaXNFbXB0eSgpICYmICFkZXZpY2UubGFiZWwoKS5zdGFydHNXaXRoKCJWUEFVQWdn
cmVnYXRlQXVkaW9EZXZpY2UiKTsKIH0KQEAgLTkxLDggKzEwOSwyNCBAQCBWZWN0b3I8Q29yZUF1
ZGlvQ2FwdHVyZURldmljZT4mIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb3JlQXVk
aW9DYXB0dXJlRAogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgIHJlZnJlc2hB
dWRpb0NhcHR1cmVEZXZpY2VzKERvTm90Tm90aWZ5KTsKIAorICAgICAgICBhdXRvIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpOworICAgICAgICBtX2xpc3RlbmVyQmxvY2sgPSBCbG9ja19j
b3B5KF4oVUludDMyIGNvdW50LCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBwcm9w
ZXJ0aWVzW10pIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBmb3IgKFVJbnQzMiBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKKyAgICAgICAgICAgICAgICBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyYgcHJv
cGVydHkgPSBwcm9wZXJ0aWVzW2ldOworCisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5Lm1T
ZWxlY3RvciAhPSBrQXVkaW9IYXJkd2FyZVByb3BlcnR5RGV2aWNlcykKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+cmVmcmVzaEF1ZGlv
Q2FwdHVyZURldmljZXMoTm90aWZ5KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgIH0pOworCiAgICAgICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNz
IGFkZHJlc3MgPSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlEZXZpY2VzLCBrQXVkaW9PYmplY3RQ
cm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsK
LSAgICAgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEFkZFByb3BlcnR5TGlzdGVuZXIoa0F1ZGlv
T2JqZWN0U3lzdGVtT2JqZWN0LCAmYWRkcmVzcywgZGV2aWNlc0NoYW5nZWQsIHRoaXMpOworICAg
ICAgICBhdXRvIGVyciA9IEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lckJsb2NrKGtBdWRp
b09iamVjdFN5c3RlbU9iamVjdCwgJmFkZHJlc3MsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IG1fbGlzdGVuZXJCbG9jayk7CiAgICAgICAgIGlmIChlcnIpCiAgICAgICAgICAgICBMT0dfRVJS
T1IoIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VzKCVwKSBBdWRpb09iamVj
dEFkZFByb3BlcnR5TGlzdGVuZXIgcmV0dXJuZWQgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGlu
dCllcnIsIChjaGFyKikmZXJyKTsKICAgICB9CkBAIC0xNjQsMTQgKzE5OCwxMCBAQCB2b2lkIENv
cmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyhO
b3RpZnlJZkRldmljZXNIYQogICAgICAgICBtX2RldmljZXMuYXBwZW5kKGNhcHR1cmVEZXZpY2Up
OwogICAgIH0KIAotICAgIGlmIChub3RpZnkgPT0gTm90aWZ5KQorICAgIGlmIChub3RpZnkgPT0g
Tm90aWZ5KSB7CiAgICAgICAgIGRldmljZUNoYW5nZWQoKTsKLX0KLQotT1NTdGF0dXMgQ29yZUF1
ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZXNDaGFuZ2VkKEF1ZGlvT2JqZWN0SUQsIFVJ
bnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqLCB2b2lkKiB1c2VyRGF0YSkK
LXsKLSAgICBzdGF0aWNfY2FzdDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcio+KHVzZXJE
YXRhKS0+cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoTm90aWZ5KTsKLSAgICByZXR1cm4gMDsK
KyAgICAgICAgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUZhY3Rvcnk6OnNpbmdsZXRvbigpLmRldmlj
ZXNDaGFuZ2VkKG1fZGV2aWNlcyk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IDVjOTcy
ZjE4NjRmYTZhMTA3ODc2MmFlNGM0ZmYwZmZlODk3ZjY1OWUuLjE5NDYyZTQ4ZGRlNGE5MDE3ZTg5
NjBkNWQxMzZhYmQ0Yjc3ZDhmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlci5oCkBAIC01Miw3ICs1Miw2IEBAIHByaXZhdGU6CiAgICAgQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZU1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAgICAgfkNvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyKCkgPSBkZWZhdWx0OwogICAgIAotICAgIHN0YXRpYyBPU1N0YXR1cyBkZXZpY2Vz
Q2hhbmdlZChBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlB
ZGRyZXNzKiwgdm9pZCopOwogICAgIFZlY3RvcjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYgY29y
ZUF1ZGlvQ2FwdHVyZURldmljZXMoKTsKIAogICAgIGVudW0gTm90aWZ5SWZEZXZpY2VzSGF2ZUNo
YW5nZWQgeyBOb3RpZnksIERvTm90Tm90aWZ5IH07CkBAIC02MCw2ICs1OSw4IEBAIHByaXZhdGU6
CiAKICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gbV9kZXZpY2VzOwogICAgIFZlY3RvcjxDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlPiBtX2NvcmVBdWRpb0NhcHR1cmVEZXZpY2VzOworCisgICAgQXVk
aW9PYmplY3RQcm9wZXJ0eUxpc3RlbmVyQmxvY2sgbV9saXN0ZW5lckJsb2NrOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmlu
ZGV4IDU3ZDZiMDE0ZmQ1MDU4ZTAxMGM5Njg1MmU0OWY2YzQ1OTg3ZDhhMGIuLjViNzY1NDhlYTUx
NWE1ZWRhNjVlMzI4OTAwMjc3YzdlOGEyZDI1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZS5jcHAKQEAgLTEwMiw3ICsxMDIsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0F1
ZGlvVW5pdCgpIGNvbnN0IHsgcmV0dXJuIG1faW9Vbml0OyB9CiAKLSAgICB2b2lkIHNldENhcHR1
cmVEZXZpY2VJRCh1aW50MzJfdCk7CisgICAgdm9pZCBzZXRDYXB0dXJlRGV2aWNlKGNvbnN0IFN0
cmluZyYsIHVpbnQzMl90KTsKKworICAgIHZvaWQgZGV2aWNlc0NoYW5nZWQoY29uc3QgVmVjdG9y
PENhcHR1cmVEZXZpY2U+Jik7CiAKIHByaXZhdGU6CiAgICAgT1NTdGF0dXMgY29uZmlndXJlU3Bl
YWtlclByb2MoKTsKQEAgLTExNiwxMCArMTE4LDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIE9T
U3RhdHVzIHNwZWFrZXJDYWxsYmFjayh2b2lkKiwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3Mq
LCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiwgVUludDMyLCBBdWRpb0J1ZmZlckxpc3Qq
KTsKICAgICBPU1N0YXR1cyBwcm92aWRlU3BlYWtlckRhdGEoQXVkaW9Vbml0UmVuZGVyQWN0aW9u
RmxhZ3MmLCBjb25zdCBBdWRpb1RpbWVTdGFtcCYsIFVJbnQzMiwgVUludDMyLCBBdWRpb0J1ZmZl
ckxpc3QqKTsKIAotICAgIHZvaWQgc3RhcnRJbnRlcm5hbCgpOworICAgIE9TU3RhdHVzIHN0YXJ0
SW50ZXJuYWwoKTsKICAgICB2b2lkIHN0b3BJbnRlcm5hbCgpOwogCiAgICAgdm9pZCB2ZXJpZnlJ
c0NhcHR1cmluZygpOworICAgIHZvaWQgZGV2aWNlc0NoYW5nZWQoKTsKKyAgICB2b2lkIGNhcHR1
cmVGYWlsZWQoKTsKIAogICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENvcmVBdWRp
b0NhcHR1cmVTb3VyY2U+PiBtX2NsaWVudHM7CiAKQEAgLTE2Miw2ICsxNjYsOCBAQCBwcml2YXRl
OgogICAgIHVpbnQ2NF90IG1fc3BlYWtlclByb2NzQ2FsbGVkIHsgMCB9OwogI2VuZGlmCiAKKyAg
ICBTdHJpbmcgbV9wZXJzaXN0ZW50SUQ7CisKICAgICB1aW50NjRfdCBtX21pY3JvcGhvbmVQcm9j
c0NhbGxlZCB7IDAgfTsKICAgICB1aW50NjRfdCBtX21pY3JvcGhvbmVQcm9jc0NhbGxlZExhc3RU
aW1lIHsgMCB9OwogICAgIFRpbWVyIG1fdmVyaWZ5Q2FwdHVyaW5nVGltZXI7CkBAIC0xOTcsOCAr
MjAzLDEwIEBAIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cmVtb3ZlQ2xpZW50KENvcmVBdWRp
b0NhcHR1cmVTb3VyY2UmIGNsaWVudCkKICAgICB9KTsKIH0KIAotdm9pZCBDb3JlQXVkaW9TaGFy
ZWRVbml0OjpzZXRDYXB0dXJlRGV2aWNlSUQodWludDMyX3QgY2FwdHVyZURldmljZUlEKQordm9p
ZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXRDYXB0dXJlRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVy
c2lzdGVudElELCB1aW50MzJfdCBjYXB0dXJlRGV2aWNlSUQpCiB7CisgICAgbV9wZXJzaXN0ZW50
SUQgPSBwZXJzaXN0ZW50SUQ7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fY2FwdHVy
ZURldmljZUlEID09IGNhcHR1cmVEZXZpY2VJRCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEwLDYg
KzIxOCwyMyBAQCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNldENhcHR1cmVEZXZpY2VJRCh1
aW50MzJfdCBjYXB0dXJlRGV2aWNlSUQpCiAjZW5kaWYKIH0KIAordm9pZCBDb3JlQXVkaW9TaGFy
ZWRVbml0OjpkZXZpY2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGRldmlj
ZXMpCit7CisgICAgaWYgKCFtX2lvVW5pdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBk
ZXZpY2VJc0FsaXZlID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBkZXZpY2UgOiBkZXZpY2VzKSB7
CisgICAgICAgIGlmIChtX3BlcnNpc3RlbnRJRCA9PSBkZXZpY2UucGVyc2lzdGVudElkKCkpIHsK
KyAgICAgICAgICAgIGRldmljZUlzQWxpdmUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWRldmljZUlzQWxpdmUpCisgICAgICAgIGNhcHR1
cmVGYWlsZWQoKTsKK30KKwogdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjphZGRFY2hvQ2FuY2Vs
bGF0aW9uU291cmNlKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSYgc291cmNlKQogewogICAgIGlmICgh
c291cmNlLnNldE91dHB1dEZvcm1hdChtX3NwZWFrZXJQcm9jRm9ybWF0KSkgewpAQCAtNTU5LDcg
KzU4NCw4IEBAIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c3RhcnRQcm9kdWNpbmdEYXRhKCkK
ICAgICAgICAgQVNTRVJUKCFtX2lvVW5pdCk7CiAgICAgfQogCi0gICAgc3RhcnRJbnRlcm5hbCgp
OworICAgIGlmIChzdGFydEludGVybmFsKCkpCisgICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKIH0K
IAogT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cmVzdW1lKCkKQEAgLTU3OCw3ICs2MDQs
NyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0OjpyZXN1bWUoKQogICAgIHJldHVybiAw
OwogfQogCi12b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0SW50ZXJuYWwoKQorT1NTdGF0
dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c3RhcnRJbnRlcm5hbCgpCiB7CiAgICAgT1NTdGF0dXMg
ZXJyOwogICAgIGlmICghbV9pb1VuaXQpIHsKQEAgLTU4Niw3ICs2MTIsNyBAQCB2b2lkIENvcmVB
dWRpb1NoYXJlZFVuaXQ6OnN0YXJ0SW50ZXJuYWwoKQogICAgICAgICBpZiAoZXJyKSB7CiAgICAg
ICAgICAgICBjbGVhbnVwQXVkaW9Vbml0KCk7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW9Vbml0
KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CiAgICAgICAg
IH0KICAgICAgICAgQVNTRVJUKG1faW9Vbml0KTsKICAgICB9CkBAIC01OTgsNyArNjI0LDcgQEAg
dm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzdGFydEludGVybmFsKCkKICAgICBlcnIgPSBBdWRp
b091dHB1dFVuaXRTdGFydChtX2lvVW5pdCk7CiAgICAgaWYgKGVycikgewogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0KCVwKSBBdWRp
b091dHB1dFVuaXRTdGFydCBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50
KWVyciwgKGNoYXIqKSZlcnIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBlcnI7
CiAgICAgfQogCiAgICAgbV9pb1VuaXRTdGFydGVkID0gdHJ1ZTsKQEAgLTYwNiw2ICs2MzIsOCBA
QCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0SW50ZXJuYWwoKQogICAgIG1fdmVyaWZ5
Q2FwdHVyaW5nVGltZXIuc3RhcnRSZXBlYXRpbmcoMTBfcyk7CiAgICAgbV9taWNyb3Bob25lUHJv
Y3NDYWxsZWQgPSAwOwogICAgIG1fbWljcm9waG9uZVByb2NzQ2FsbGVkTGFzdFRpbWUgPSAwOwor
CisgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6dmVyaWZ5SXND
YXB0dXJpbmcoKQpAQCAtNjE3LDggKzY0NSwxNCBAQCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6
OnZlcmlmeUlzQ2FwdHVyaW5nKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGNhcHR1
cmVGYWlsZWQoKTsKK30KKworCit2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmNhcHR1cmVGYWls
ZWQoKQorewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6dmVyaWZ5SXNDYXB0dXJpbmcgLSBjYXB0dXJl
IGZhaWxlZFxuIik7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFy
ZWRVbml0OjpjYXB0dXJlRmFpbGVkIC0gY2FwdHVyZSBmYWlsZWRcbiIpOwogI2VuZGlmCiAgICAg
Zm9yIChDb3JlQXVkaW9DYXB0dXJlU291cmNlJiBjbGllbnQgOiBtX2NsaWVudHMpCiAgICAgICAg
IGNsaWVudC5jYXB0dXJlRmFpbGVkKCk7CkBAIC03ODMsMTIgKzgxNywxNyBAQCBDYXB0dXJlRGV2
aWNlTWFuYWdlciYgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUZhY3Rvcnk6OmF1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIoKQogI2VuZGlmCiB9CiAKLUNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OkNvcmVB
dWRpb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIGxhYmVsLCBTdHJp
bmcmJiBoYXNoU2FsdCwgdWludDMyX3QgcGVyc2lzdGVudElEKQordm9pZCBDb3JlQXVkaW9DYXB0
dXJlU291cmNlRmFjdG9yeTo6ZGV2aWNlc0NoYW5nZWQoY29uc3QgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+JiBkZXZpY2VzKQoreworICAgIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLmRl
dmljZXNDaGFuZ2VkKGRldmljZXMpOworfQorCitDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3Jl
QXVkaW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBsYWJlbCwgU3Ry
aW5nJiYgaGFzaFNhbHQsIHVpbnQzMl90IGNhcHR1cmVEZXZpY2VJRCkKICAgICA6IFJlYWx0aW1l
TWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFdURk1vdmUobGFi
ZWwpLCBXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1
cmVEZXZpY2VJRChwZXJzaXN0ZW50SUQpCisgICAgLCBtX2NhcHR1cmVEZXZpY2VJRChjYXB0dXJl
RGV2aWNlSUQpCiB7CiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmds
ZXRvbigpOwotICAgIHVuaXQuc2V0Q2FwdHVyZURldmljZUlEKG1fY2FwdHVyZURldmljZUlEKTsK
KyAgICB1bml0LnNldENhcHR1cmVEZXZpY2UocGVyc2lzdGVudElEKCksIG1fY2FwdHVyZURldmlj
ZUlEKTsKIAogICAgIGluaXRpYWxpemVFY2hvQ2FuY2VsbGF0aW9uKHVuaXQuZW5hYmxlRWNob0Nh
bmNlbGxhdGlvbigpKTsKICAgICBpbml0aWFsaXplU2FtcGxlUmF0ZSh1bml0LnNhbXBsZVJhdGUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAppbmRleCBkOWZhMGFlNDM0MDZhYTM5
NjBkZDY1OWZlYjdiMTI1OGM4MDU5NzNhLi5mNTIwMzczMWNjZDAxZTQ2YjI3NTg3NjUwNWU2NTQz
ZWMzZWIzMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKQEAgLTExNyw2ICsx
MTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmRJbnRlcnJ1cHRpb24oKTsKICAgICB2b2lkIHNj
aGVkdWxlUmVjb25maWd1cmF0aW9uKCk7CiAKKyAgICB2b2lkIGRldmljZXNDaGFuZ2VkKGNvbnN0
IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYpOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICB2b2lkIHNldENvcmVBdWRpb0FjdGl2ZVNvdXJjZShDb3JlQXVkaW9DYXB0dXJlU291cmNlJiBz
b3VyY2UpIHsgc2V0QWN0aXZlU291cmNlKHNvdXJjZSk7IH0KICAgICB2b2lkIHVuc2V0Q29yZUF1
ZGlvQWN0aXZlU291cmNlKENvcmVBdWRpb0NhcHR1cmVTb3VyY2UmIHNvdXJjZSkgeyB1bnNldEFj
dGl2ZVNvdXJjZShzb3VyY2UpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357978</attachid>
            <date>2018-12-21 14:04:04 -0800</date>
            <delta_ts>2018-12-21 15:15:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187896-20181221140403.patch</filename>
            <type>text/plain</type>
            <size>19319</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMxMGJhYzYyMGVkNjI0
YzZmMmYxYzA3NTUxYWZkNWY3MmY0MmI2Yi4uZDA3MDE2OGU0NTllYTMwZWRmYjBiZWFkMWQwMGY4
MjljYzJlZDJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE4LTEyLTIxICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgICdlbmRlZCcgRXZl
bnQgZG9lc24ndCBmaXJlIG9uIE1lZGlhU3RyZWFtVHJhY2sgd2hlbiBhIFVTQiBjYW1lcmEgaXMg
dW5wbHVnZ2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODc4OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyNjgxNDQ1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGVzdGVk
IG1hbnVhbGx5LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmRldmljZURpc2Nvbm5lY3RlZCk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVy
ZVNvdXJjZU9ic2VydmVyIGFkZE5vdGlmaWNhdGlvbk9ic2VydmVyc10pOgorICAgICAgICAoLVtX
ZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciByZW1vdmVOb3RpZmljYXRpb25PYnNl
cnZlcnNdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIg
ZGV2aWNlQ29ubmVjdGVkRGlkQ2hhbmdlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkZXZpY2VIYXNJbnB1dFN0cmVhbXMpOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZENh
cHR1cmVEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXI6OmNvcmVBdWRpb0NhcHR1cmVEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlc0No
YW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
cmVBdWRpb1NoYXJlZFVuaXQ6OnNldENhcHR1cmVEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6ZGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvU2hhcmVkVW5pdDo6dmVyaWZ5SXNDYXB0dXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2FwdHVyZUZhaWxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlRmFjdG9yeTo6ZGV2aWNlc0NoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Q29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXRDYXB0dXJl
RGV2aWNlSUQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
b3JlQXVkaW9DYXB0dXJlU291cmNlLmg6CisKIDIwMTgtMTItMjAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgT3B0aW9uYWw6OnZhbHVlT3IoKSBpbnN0ZWFk
IG9mIE9wdGlvbmFsOjp2YWx1ZV9vcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAyYmE0NjczYjQ3
OWZiZTBiYWM0OWIyYmJlNjU4MjI0MDE4YzVlMThjLi4xMzI0NGNkNTk5ZmQzNWI3ZmIzZTg3MGRk
ZjczZmE0YmNjZTlmMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
OC0xMi0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICAnZW5kZWQnIEV2ZW50IGRvZXNuJ3QgZmlyZSBvbiBNZWRpYVN0cmVhbVRyYWNrIHdoZW4gYSBV
U0IgY2FtZXJhIGlzIHVucGx1Z2dlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg3ODk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjY4MTQ0NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9z
cGkvY2YvQ29yZUF1ZGlvU1BJLmg6CisKIDIwMTgtMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICB3dGYvT3B0aW9uYWwuaDogbW92ZS1jb25zdHJ1Y3RvciBh
bmQgbW92ZS1hc3NpZ25tZW50IG9wZXJhdG9yIHNob3VsZCBkaXNlbmdhZ2UgdGhlIHZhbHVlIGJl
aW5nIG1vdmVkIGZyb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nm
L0NvcmVBdWRpb1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ29yZUF1ZGlv
U1BJLmgKaW5kZXggMzc3OTlkMmIxMDE1ZjVjMWNiN2E5N2FhMzk3YTQyNzY0ZTUwYTUxNy4uZDVl
OWRhM2YzYzY3NWMxMzI4OGE1NmU2MjUxMTdkMDIzNGEzN2YwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJLmgKQEAgLTMzLDYgKzMzLDEyIEBACiAKICNp
ZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8Q29yZUF1ZGlvL0F1ZGlvSGFyZHdhcmUuaD4KKwor
Q0ZfRU5VTShBdWRpb09iamVjdFByb3BlcnR5U2VsZWN0b3IpCit7CisgICAga0F1ZGlvRGV2aWNl
UHJvcGVydHlUYXBFbmFibGVkID0gJ3RhcGQnLAorfTsKKwogI2Vsc2UKIAogV1RGX0VYVEVSTl9D
X0JFR0lOCkBAIC01NSw3ICs2MSw4IEBAIENGX0VOVU0oQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3Bl
KQogCiBDRl9FTlVNKEF1ZGlvT2JqZWN0UHJvcGVydHlTZWxlY3RvcikKIHsKLSAgICBrQXVkaW9I
YXJkd2FyZVByb3BlcnR5RGVmYXVsdElucHV0RGV2aWNlID0gJ2RJbiAnCisgICAga0F1ZGlvSGFy
ZHdhcmVQcm9wZXJ0eURlZmF1bHRJbnB1dERldmljZSA9ICdkSW4gJywKKyAgICBrQXVkaW9EZXZp
Y2VQcm9wZXJ0eVRhcEVuYWJsZWQgPSAndGFwZCcsCiB9OwogCiBDRl9FTlVNKGludCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggMmE1MzA1NDMxNDY4NGEyZTQ3NTc5OGZlODc5OTY1
MmRkYWZlMTY1ZS4uNjAzODE3MjYzZGVlYjAzODQ5Yzg3MTg2NDE4NjQ5YzAzNGYxZmIwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAg
IGVudW0gY2xhc3MgSW50ZXJydXB0aW9uUmVhc29uIHsgTm9uZSwgVmlkZW9Ob3RBbGxvd2VkSW5C
YWNrZ3JvdW5kLCBBdWRpb0luVXNlLCBWaWRlb0luVXNlLCBWaWRlb05vdEFsbG93ZWRJblNpZGVC
eVNpZGUgfTsKICAgICB2b2lkIGNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24oUmV0YWlu
UHRyPE5TTm90aWZpY2F0aW9uPik7CiAgICAgdm9pZCBjYXB0dXJlU2Vzc2lvbkVuZEludGVycnVw
dGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KTsKKyAgICB2b2lkIGRldmljZURpc2Nvbm5l
Y3RlZChSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KTsKIAogICAgIEFWQ2FwdHVyZVNlc3Npb24q
IHNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLm1tCmluZGV4IGE1NGNkMTRkNmVhYTc2Yjg4MDBlODAwZWE3YmUyYThh
MTA4YzU1NGIuLmYwNTViYTM4YWNhZjAzYzFkMjJmMDQzMzA5NWNlYjQ3MjllNWY0MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTc4LDYgKzc4LDkgQEAgU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbikKIAogU09GVF9MSU5LX0NPTlNUQU5U
KEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVWaWRlbywgTlNTdHJpbmcgKikKIAorU09GVF9MSU5L
X0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlV2FzRGlzY29ubmVjdGVkTm90
aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorI2RlZmluZSBBVkNhcHR1cmVEZXZpY2VXYXNEaXNjb25u
ZWN0ZWROb3RpZmljYXRpb24gZ2V0QVZDYXB0dXJlRGV2aWNlV2FzRGlzY29ubmVjdGVkTm90aWZp
Y2F0aW9uKCkKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBTT0ZUX0xJTktfUE9JTlRFUl9P
UFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmlj
YXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRp
b24sIEFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcg
KikKQEAgLTEwOSw2ICsxMTIsNyBAQCB1c2luZyBuYW1lc3BhY2UgUEFMOwogLSh2b2lkKXNlc3Np
b25SdW50aW1lRXJyb3I6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CiAtKHZvaWQpYmVn
aW5TZXNzaW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CiAtKHZv
aWQpZW5kU2Vzc2lvbkludGVycnVwdGVkOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uOwor
LSh2b2lkKWRldmljZUNvbm5lY3RlZERpZENoYW5nZTooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNh
dGlvbjsKICNlbmRpZgogQGVuZAogCkBAIC02MjYsNiArNjMwLDE0IEBAIHZvaWQgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05v
dGlmaWNhdGlvCiB9CiAjZW5kaWYKIAordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2aWNl
RGlzY29ubmVjdGVkKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKQorewor
ICAgIEFWQ2FwdHVyZURldmljZVR5cGVkZWYgKmRldmljZSA9IFtub3RpZmljYXRpb24gb2JqZWN0
XTsKKyAgICBpZiAodGhpcy0+ZGV2aWNlKCkgPT0gZGV2aWNlKQorICAgICAgICBjYXB0dXJlRmFp
bGVkKCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBAaW1wbGVtZW50YXRpb24g
V2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIKQEAgLTY1MCwxMiArNjYyLDE0IEBA
IHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9u
KFJldGFpblB0cjxOU05vdGlmaWNhdGlvCiAKIC0gKHZvaWQpYWRkTm90aWZpY2F0aW9uT2JzZXJ2
ZXJzCiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQobV9jYWxsYmFjayk7
CiAKICAgICBOU05vdGlmaWNhdGlvbkNlbnRlciogY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdOwotICAgIEFWQ2FwdHVyZVNlc3Npb25UeXBlKiBzZXNzaW9uID0g
bV9jYWxsYmFjay0+c2Vzc2lvbigpOwogCisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihkZXZpY2VDb25uZWN0ZWREaWRDaGFuZ2U6KSBuYW1lOkFWQ2FwdHVy
ZURldmljZVdhc0Rpc2Nvbm5lY3RlZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgQVZDYXB0dXJlU2Vzc2lvblR5cGUqIHNlc3Npb24gPSBt
X2NhbGxiYWNrLT5zZXNzaW9uKCk7CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVj
dG9yOkBzZWxlY3RvcihzZXNzaW9uUnVudGltZUVycm9yOikgbmFtZTpBVkNhcHR1cmVTZXNzaW9u
UnVudGltZUVycm9yTm90aWZpY2F0aW9uIG9iamVjdDpzZXNzaW9uXTsKICAgICBbY2VudGVyIGFk
ZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGJlZ2luU2Vzc2lvbkludGVycnVwdGVk
OikgbmFtZTpBVkNhcHR1cmVTZXNzaW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRpb24gb2JqZWN0
OnNlc3Npb25dOwogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoZW5kU2Vzc2lvbkludGVycnVwdGVkOikgbmFtZTpBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0
aW9uRW5kZWROb3RpZmljYXRpb24gb2JqZWN0OnNlc3Npb25dOwpAQCAtNjY0LDkgKzY3OCw3IEBA
IHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9u
KFJldGFpblB0cjxOU05vdGlmaWNhdGlvCiAKIC0gKHZvaWQpcmVtb3ZlTm90aWZpY2F0aW9uT2Jz
ZXJ2ZXJzCiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOwotI2VuZGlmCiB9CiAK
IC0gKHZvaWQpY2FwdHVyZU91dHB1dDooQVZDYXB0dXJlT3V0cHV0VHlwZSopY2FwdHVyZU91dHB1
dCBkaWRPdXRwdXRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlciBm
cm9tQ29ubmVjdGlvbjooQVZDYXB0dXJlQ29ubmVjdGlvblR5cGUqKWNvbm5lY3Rpb24KQEAgLTcw
NCw2ICs3MTYsMTYgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25F
bmRJbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW8KICAgICAgICAgbV9jYWxsYmFj
ay0+Y2FwdHVyZURldmljZVN1c3BlbmRlZERpZENoYW5nZSgpOwogfQogCistICh2b2lkKWRldmlj
ZUNvbm5lY3RlZERpZENoYW5nZTooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgoreworICAg
IExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyOjpkZXZpY2VD
b25uZWN0ZWREaWRDaGFuZ2UoJXApIiwgc2VsZik7CisKKyAgICBpZiAoIW1fY2FsbGJhY2spCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fY2FsbGJhY2stPmRldmljZURpc2Nvbm5lY3RlZChub3Rp
ZmljYXRpb24pOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpc2Vzc2lv
blJ1bnRpbWVFcnJvcjooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggMTA5NTZiYTFmYzk2
OTRmMDNmMzU1OGMwNzczNmQzNTNlNjIwNmQ0OC4uNzk5NzA5ZDUxN2NkMTEzZmEzZDUyMDEzNjlj
NDRlNzAzNzNhM2ExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXIuY3BwCkBAIC0yOSwxMCArMjksMTIgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlICJDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgiCisj
aW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9V
bml0L0F1ZGlvVW5pdC5oPgogI2luY2x1ZGUgPENvcmVNZWRpYS9DTVN5bmMuaD4KKyNpbmNsdWRl
IDxwYWwvc3BpL2NmL0NvcmVBdWRpb1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTY3LDcgKzY5LDYgQEAgc3Rh
dGljIGJvb2wgZGV2aWNlSGFzSW5wdXRTdHJlYW1zKEF1ZGlvT2JqZWN0SUQgZGV2aWNlSUQpCiAg
ICAgVUludDMyIGRhdGFTaXplID0gMDsKICAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBh
ZGRyZXNzID0geyBrQXVkaW9EZXZpY2VQcm9wZXJ0eVN0cmVhbUNvbmZpZ3VyYXRpb24sIGtBdWRp
b0RldmljZVByb3BlcnR5U2NvcGVJbnB1dCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFz
dGVyIH07CiAgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YVNpemUoZGV2
aWNlSUQsICZhZGRyZXNzLCAwLCBudWxscHRyLCAmZGF0YVNpemUpOwotCiAgICAgaWYgKGVyciB8
fCAhZGF0YVNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODAsNiArODEsMjMgQEAg
c3RhdGljIGJvb2wgZGV2aWNlSGFzSW5wdXRTdHJlYW1zKEF1ZGlvT2JqZWN0SUQgZGV2aWNlSUQp
CiAKIHN0YXRpYyBib29sIGlzVmFsaWRDYXB0dXJlRGV2aWNlKGNvbnN0IENvcmVBdWRpb0NhcHR1
cmVEZXZpY2UmIGRldmljZSkKIHsKKyAgICAvLyBJZ25vcmUgb3V0cHV0IGRldmljZXMgdGhhdCBo
YXZlIGlucHV0IG9ubHkgZm9yIGVjaG8gY2FuY2VsbGF0aW9uLgorICAgIEF1ZGlvT2JqZWN0UHJv
cGVydHlBZGRyZXNzIGFkZHJlc3MgPSB7IGtBdWRpb0RldmljZVByb3BlcnR5VGFwRW5hYmxlZCwg
a0F1ZGlvRGV2aWNlUHJvcGVydHlTY29wZU91dHB1dCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVt
ZW50TWFzdGVyIH07CisgICAgaWYgKEF1ZGlvT2JqZWN0SGFzUHJvcGVydHkoZGV2aWNlLmRldmlj
ZUlEKCksICZhZGRyZXNzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRmlsdGVy
IG91dCBub24tYWdncmVnYWJsZSBkZXZpY2VzCisgICAgVUludDMyIGRhdGFTaXplID0gMDsKKyAg
ICBhZGRyZXNzID0geyBrQXVkaW9PYmplY3RQcm9wZXJ0eUNyZWF0b3IsIGtBdWRpb09iamVjdFBy
b3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9Owor
ICAgIENGU3RyaW5nUmVmIG5hbWUgPSBudWxscHRyOworICAgIGRhdGFTaXplID0gc2l6ZW9mKG5h
bWUpOworICAgIEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKGRldmljZS5kZXZpY2VJRCgpLCAm
YWRkcmVzcywgMCwgbnVsbHB0ciwgJmRhdGFTaXplLCAmbmFtZSk7CisgICAgYm9vbCBpc05vbkFn
Z3JlZ2FibGUgPSAhbmFtZSB8fCAhU3RyaW5nIHsgbmFtZSB9LnN0YXJ0c1dpdGgoImNvbS5hcHBs
ZS5hdWRpby5Db3JlQXVkaW8iKTsKKyAgICBpZiAobmFtZSkKKyAgICAgICAgQ0ZSZWxlYXNlKG5h
bWUpOworICAgIGlmIChpc05vbkFnZ3JlZ2FibGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIC8vIElnbm9yZSB1bm5hbWVkIGRldmljZXMgYW5kIGFnZ3JlZ2F0ZSBkZXZpY2VzIGNyZWF0
ZWQgYnkgVlBJTy4KICAgICByZXR1cm4gIWRldmljZS5sYWJlbCgpLmlzRW1wdHkoKSAmJiAhZGV2
aWNlLmxhYmVsKCkuc3RhcnRzV2l0aCgiVlBBVUFnZ3JlZ2F0ZUF1ZGlvRGV2aWNlIik7CiB9CkBA
IC05MSw4ICsxMDksMjQgQEAgVmVjdG9yPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+JiBDb3JlQXVk
aW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvQ2FwdHVyZUQKICAgICAgICAgaW5pdGlh
bGl6ZWQgPSB0cnVlOwogICAgICAgICByZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyhEb05vdE5v
dGlmeSk7CiAKKyAgICAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKKyAg
ICAgICAgbV9saXN0ZW5lckJsb2NrID0gQmxvY2tfY29weSheKFVJbnQzMiBjb3VudCwgY29uc3Qg
QXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgcHJvcGVydGllc1tdKSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgZm9y
IChVSW50MzIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgY29uc3Qg
QXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MmIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTsKKwor
ICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5tU2VsZWN0b3IgIT0ga0F1ZGlvSGFyZHdhcmVQ
cm9wZXJ0eURldmljZXMpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICAgICAgd2Vha1RoaXMtPnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKE5vdGlmeSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKwogICAg
ICAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9IYXJkd2Fy
ZVByb3BlcnR5RGV2aWNlcywga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlv
T2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07Ci0gICAgICAgIGF1dG8gZXJyID0gQXVkaW9P
YmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVyKGtBdWRpb09iamVjdFN5c3RlbU9iamVjdCwgJmFkZHJl
c3MsIGRldmljZXNDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgYXV0byBlcnIgPSBBdWRpb09iamVj
dEFkZFByb3BlcnR5TGlzdGVuZXJCbG9jayhrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3QsICZhZGRy
ZXNzLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtX2xpc3RlbmVyQmxvY2spOwogICAgICAg
ICBpZiAoZXJyKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3JlQXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlcjo6ZGV2aWNlcyglcCkgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVyIHJldHVy
bmVkIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAg
fQpAQCAtMTY0LDE0ICsxOTgsMTAgQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
cjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoTm90aWZ5SWZEZXZpY2VzSGEKICAgICAgICAg
bV9kZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlKTsKICAgICB9CiAKLSAgICBpZiAobm90aWZ5
ID09IE5vdGlmeSkKKyAgICBpZiAobm90aWZ5ID09IE5vdGlmeSkgewogICAgICAgICBkZXZpY2VD
aGFuZ2VkKCk7Ci19Ci0KLU9TU3RhdHVzIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpk
ZXZpY2VzQ2hhbmdlZChBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJv
cGVydHlBZGRyZXNzKiwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgc3RhdGljX2Nhc3Q8Q29yZUF1
ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIqPih1c2VyRGF0YSktPnJlZnJlc2hBdWRpb0NhcHR1cmVE
ZXZpY2VzKE5vdGlmeSk7Ci0gICAgcmV0dXJuIDA7CisgICAgICAgIENvcmVBdWRpb0NhcHR1cmVT
b3VyY2VGYWN0b3J5OjpzaW5nbGV0b24oKS5kZXZpY2VzQ2hhbmdlZChtX2RldmljZXMpOworICAg
IH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZU1hbmFnZXIuaAppbmRleCA1Yzk3MmYxODY0ZmE2YTEwNzg3NjJhZTRjNGZmMGZm
ZTg5N2Y2NTllLi4xOTQ2MmU0OGRkZTRhOTAxN2U4OTYwZDVkMTM2YWJkNGI3N2Q4Zjc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtNTIsNyArNTIs
NiBAQCBwcml2YXRlOgogICAgIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgPSBkZWZh
dWx0OwogICAgIH5Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpID0gZGVmYXVsdDsKICAg
ICAKLSAgICBzdGF0aWMgT1NTdGF0dXMgZGV2aWNlc0NoYW5nZWQoQXVkaW9PYmplY3RJRCwgVUlu
dDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyosIHZvaWQqKTsKICAgICBWZWN0
b3I8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4mIGNvcmVBdWRpb0NhcHR1cmVEZXZpY2VzKCk7CiAK
ICAgICBlbnVtIE5vdGlmeUlmRGV2aWNlc0hhdmVDaGFuZ2VkIHsgTm90aWZ5LCBEb05vdE5vdGlm
eSB9OwpAQCAtNjAsNiArNTksOCBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+IG1fZGV2aWNlczsKICAgICBWZWN0b3I8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4gbV9jb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlczsKKworICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlMaXN0ZW5lckJs
b2NrIG1fbGlzdGVuZXJCbG9jazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9D
YXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCA1N2Q2YjAxNGZkNTA1OGUwMTBjOTY4
NTJlNDlmNmM0NTk4N2Q4YTBiLi41Yjc2NTQ4ZWE1MTVhNWVkYTY1ZTMyODkwMDI3N2M3ZThhMmQy
NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xMDIsNyArMTAy
LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNBdWRpb1VuaXQoKSBjb25zdCB7IHJldHVybiBt
X2lvVW5pdDsgfQogCi0gICAgdm9pZCBzZXRDYXB0dXJlRGV2aWNlSUQodWludDMyX3QpOworICAg
IHZvaWQgc2V0Q2FwdHVyZURldmljZShjb25zdCBTdHJpbmcmLCB1aW50MzJfdCk7CisKKyAgICB2
b2lkIGRldmljZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYpOwogCiBwcml2
YXRlOgogICAgIE9TU3RhdHVzIGNvbmZpZ3VyZVNwZWFrZXJQcm9jKCk7CkBAIC0xMTYsMTAgKzEx
OCwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBPU1N0YXR1cyBzcGVha2VyQ2FsbGJhY2sodm9p
ZCosIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBV
SW50MzIsIFVJbnQzMiwgQXVkaW9CdWZmZXJMaXN0Kik7CiAgICAgT1NTdGF0dXMgcHJvdmlkZVNw
ZWFrZXJEYXRhKEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzJiwgY29uc3QgQXVkaW9UaW1lU3Rh
bXAmLCBVSW50MzIsIFVJbnQzMiwgQXVkaW9CdWZmZXJMaXN0Kik7CiAKLSAgICB2b2lkIHN0YXJ0
SW50ZXJuYWwoKTsKKyAgICBPU1N0YXR1cyBzdGFydEludGVybmFsKCk7CiAgICAgdm9pZCBzdG9w
SW50ZXJuYWwoKTsKIAogICAgIHZvaWQgdmVyaWZ5SXNDYXB0dXJpbmcoKTsKKyAgICB2b2lkIGRl
dmljZXNDaGFuZ2VkKCk7CisgICAgdm9pZCBjYXB0dXJlRmFpbGVkKCk7CiAKICAgICBWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDb3JlQXVkaW9DYXB0dXJlU291cmNlPj4gbV9jbGllbnRz
OwogCkBAIC0xNjIsNiArMTY2LDggQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX3NwZWFrZXJQ
cm9jc0NhbGxlZCB7IDAgfTsKICNlbmRpZgogCisgICAgU3RyaW5nIG1fcGVyc2lzdGVudElEOwor
CiAgICAgdWludDY0X3QgbV9taWNyb3Bob25lUHJvY3NDYWxsZWQgeyAwIH07CiAgICAgdWludDY0
X3QgbV9taWNyb3Bob25lUHJvY3NDYWxsZWRMYXN0VGltZSB7IDAgfTsKICAgICBUaW1lciBtX3Zl
cmlmeUNhcHR1cmluZ1RpbWVyOwpAQCAtMTk3LDggKzIwMywxMCBAQCB2b2lkIENvcmVBdWRpb1No
YXJlZFVuaXQ6OnJlbW92ZUNsaWVudChDb3JlQXVkaW9DYXB0dXJlU291cmNlJiBjbGllbnQpCiAg
ICAgfSk7CiB9CiAKLXZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0Q2FwdHVyZURldmljZUlE
KHVpbnQzMl90IGNhcHR1cmVEZXZpY2VJRCkKK3ZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0
Q2FwdHVyZURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCwgdWludDMyX3QgY2FwdHVy
ZURldmljZUlEKQogeworICAgIG1fcGVyc2lzdGVudElEID0gcGVyc2lzdGVudElEOworCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIGlmIChtX2NhcHR1cmVEZXZpY2VJRCA9PSBjYXB0dXJlRGV2aWNl
SUQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMCw2ICsyMTgsMjMgQEAgdm9pZCBDb3JlQXVkaW9T
aGFyZWRVbml0OjpzZXRDYXB0dXJlRGV2aWNlSUQodWludDMyX3QgY2FwdHVyZURldmljZUlEKQog
I2VuZGlmCiB9CiAKK3ZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6ZGV2aWNlc0NoYW5nZWQoY29u
c3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBkZXZpY2VzKQoreworICAgIGlmICghbV9pb1VuaXQp
CisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgZGV2aWNlSXNBbGl2ZSA9IGZhbHNlOworICAg
IGZvciAoYXV0byYgZGV2aWNlIDogZGV2aWNlcykgeworICAgICAgICBpZiAobV9wZXJzaXN0ZW50
SUQgPT0gZGV2aWNlLnBlcnNpc3RlbnRJZCgpKSB7CisgICAgICAgICAgICBkZXZpY2VJc0FsaXZl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KCFkZXZpY2VJc0FsaXZlKQorICAgICAgICBjYXB0dXJlRmFpbGVkKCk7Cit9CisKIHZvaWQgQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6YWRkRWNob0NhbmNlbGxhdGlvblNvdXJjZShBdWRpb1NhbXBsZURh
dGFTb3VyY2UmIHNvdXJjZSkKIHsKICAgICBpZiAoIXNvdXJjZS5zZXRPdXRwdXRGb3JtYXQobV9z
cGVha2VyUHJvY0Zvcm1hdCkpIHsKQEAgLTU1OSw3ICs1ODQsOCBAQCB2b2lkIENvcmVBdWRpb1No
YXJlZFVuaXQ6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAgICAgICAgIEFTU0VSVCghbV9pb1VuaXQp
OwogICAgIH0KIAotICAgIHN0YXJ0SW50ZXJuYWwoKTsKKyAgICBpZiAoc3RhcnRJbnRlcm5hbCgp
KQorICAgICAgICBjYXB0dXJlRmFpbGVkKCk7CiB9CiAKIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJl
ZFVuaXQ6OnJlc3VtZSgpCkBAIC01NzgsNyArNjA0LDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hh
cmVkVW5pdDo6cmVzdW1lKCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBDb3JlQXVkaW9TaGFy
ZWRVbml0OjpzdGFydEludGVybmFsKCkKK09TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnN0
YXJ0SW50ZXJuYWwoKQogewogICAgIE9TU3RhdHVzIGVycjsKICAgICBpZiAoIW1faW9Vbml0KSB7
CkBAIC01ODYsNyArNjEyLDcgQEAgdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzdGFydEludGVy
bmFsKCkKICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgY2xlYW51cEF1ZGlvVW5pdCgp
OwogICAgICAgICAgICAgQVNTRVJUKCFtX2lvVW5pdCk7Ci0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChtX2lvVW5p
dCk7CiAgICAgfQpAQCAtNTk4LDcgKzYyNCw3IEBAIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6
c3RhcnRJbnRlcm5hbCgpCiAgICAgZXJyID0gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9pb1VuaXQp
OwogICAgIGlmIChlcnIpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3Jl
QXVkaW9TaGFyZWRVbml0OjpzdGFydCglcCkgQXVkaW9PdXRwdXRVbml0U3RhcnQgZmFpbGVkIHdp
dGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KIAogICAgIG1faW9Vbml0U3Rh
cnRlZCA9IHRydWU7CkBAIC02MDYsNiArNjMyLDggQEAgdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0
OjpzdGFydEludGVybmFsKCkKICAgICBtX3ZlcmlmeUNhcHR1cmluZ1RpbWVyLnN0YXJ0UmVwZWF0
aW5nKDEwX3MpOwogICAgIG1fbWljcm9waG9uZVByb2NzQ2FsbGVkID0gMDsKICAgICBtX21pY3Jv
cGhvbmVQcm9jc0NhbGxlZExhc3RUaW1lID0gMDsKKworICAgIHJldHVybiAwOwogfQogCiB2b2lk
IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnZlcmlmeUlzQ2FwdHVyaW5nKCkKQEAgLTYxNyw4ICs2NDUs
MTQgQEAgdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0Ojp2ZXJpZnlJc0NhcHR1cmluZygpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXB0dXJlRmFpbGVkKCk7Cit9CisKKwordm9pZCBD
b3JlQXVkaW9TaGFyZWRVbml0OjpjYXB0dXJlRmFpbGVkKCkKK3sKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVu
aXQ6OnZlcmlmeUlzQ2FwdHVyaW5nIC0gY2FwdHVyZSBmYWlsZWRcbiIpOworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2FwdHVyZUZhaWxlZCAtIGNh
cHR1cmUgZmFpbGVkXG4iKTsKICNlbmRpZgogICAgIGZvciAoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZSYgY2xpZW50IDogbV9jbGllbnRzKQogICAgICAgICBjbGllbnQuY2FwdHVyZUZhaWxlZCgpOwpA
QCAtNzgzLDEyICs4MTcsMTcgQEAgQ2FwdHVyZURldmljZU1hbmFnZXImIENvcmVBdWRpb0NhcHR1
cmVTb3VyY2VGYWN0b3J5OjphdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKICNlbmRpZgogfQog
Ci1Db3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlKFN0cmluZyYm
IGRldmljZUlELCBTdHJpbmcmJiBsYWJlbCwgU3RyaW5nJiYgaGFzaFNhbHQsIHVpbnQzMl90IHBl
cnNpc3RlbnRJRCkKK3ZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUZhY3Rvcnk6OmRldmljZXND
aGFuZ2VkKGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgZGV2aWNlcykKK3sKKyAgICBDb3Jl
QXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5kZXZpY2VzQ2hhbmdlZChkZXZpY2VzKTsKK30K
KworQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZShTdHJpbmcm
JiBkZXZpY2VJRCwgU3RyaW5nJiYgbGFiZWwsIFN0cmluZyYmIGhhc2hTYWx0LCB1aW50MzJfdCBj
YXB0dXJlRGV2aWNlSUQpCiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGU6OkF1ZGlvLCBXVEZNb3ZlKGxhYmVsKSwgV1RGTW92ZShkZXZpY2VJRCksIFdU
Rk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlRGV2aWNlSUQocGVyc2lzdGVudElEKQor
ICAgICwgbV9jYXB0dXJlRGV2aWNlSUQoY2FwdHVyZURldmljZUlEKQogewogICAgIGF1dG8mIHVu
aXQgPSBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKTsKLSAgICB1bml0LnNldENhcHR1
cmVEZXZpY2VJRChtX2NhcHR1cmVEZXZpY2VJRCk7CisgICAgdW5pdC5zZXRDYXB0dXJlRGV2aWNl
KHBlcnNpc3RlbnRJRCgpLCBtX2NhcHR1cmVEZXZpY2VJRCk7CiAKICAgICBpbml0aWFsaXplRWNo
b0NhbmNlbGxhdGlvbih1bml0LmVuYWJsZUVjaG9DYW5jZWxsYXRpb24oKSk7CiAgICAgaW5pdGlh
bGl6ZVNhbXBsZVJhdGUodW5pdC5zYW1wbGVSYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmgKaW5kZXggZDlmYTBhZTQzNDA2YWEzOTYwZGQ2NTlmZWI3YjEyNThjODA1OTczYS4u
ZjUyMDM3MzFjY2QwMWU0NmIyNzU4NzY1MDVlNjU0M2VjM2ViMzJlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC0xMTcsNiArMTE3LDggQEAgcHVibGljOgogICAgIHZvaWQg
ZW5kSW50ZXJydXB0aW9uKCk7CiAgICAgdm9pZCBzY2hlZHVsZVJlY29uZmlndXJhdGlvbigpOwog
CisgICAgdm9pZCBkZXZpY2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mKTsK
KwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRDb3JlQXVkaW9BY3RpdmVT
b3VyY2UoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgc291cmNlKSB7IHNldEFjdGl2ZVNvdXJjZShz
b3VyY2UpOyB9CiAgICAgdm9pZCB1bnNldENvcmVBdWRpb0FjdGl2ZVNvdXJjZShDb3JlQXVkaW9D
YXB0dXJlU291cmNlJiBzb3VyY2UpIHsgdW5zZXRBY3RpdmVTb3VyY2Uoc291cmNlKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357988</attachid>
            <date>2018-12-21 15:15:48 -0800</date>
            <delta_ts>2018-12-21 17:37:08 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-187896-20181221151547.patch</filename>
            <type>text/plain</type>
            <size>19408</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMxMGJhYzYyMGVkNjI0
YzZmMmYxYzA3NTUxYWZkNWY3MmY0MmI2Yi4uNzZhYzM2YWFjNjEwMjUzODgzOTdkMGViNmNhNTQw
YjVhMjFhNDE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE4LTEyLTIxICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgICdlbmRlZCcgRXZl
bnQgZG9lc24ndCBmaXJlIG9uIE1lZGlhU3RyZWFtVHJhY2sgd2hlbiBhIFVTQiBjYW1lcmEgaXMg
dW5wbHVnZ2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODc4OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyNjgxNDQ1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHRlc3RlZCBtYW51
YWxseS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpk
ZXZpY2VEaXNjb25uZWN0ZWQpOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3Vy
Y2VPYnNlcnZlciBhZGROb3RpZmljYXRpb25PYnNlcnZlcnNdKToKKyAgICAgICAgKC1bV2ViQ29y
ZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJz
XSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGRldmlj
ZUNvbm5lY3RlZERpZENoYW5nZTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGV2aWNlSGFzSW5wdXRTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRDYXB0dXJl
RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojpjb3JlQXVkaW9DYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZXNDaGFuZ2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVk
aW9TaGFyZWRVbml0OjpzZXRDYXB0dXJlRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb1NoYXJlZFVuaXQ6OmRldmljZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb1NoYXJlZFVuaXQ6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
b3JlQXVkaW9TaGFyZWRVbml0OjpzdGFydEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
cmVBdWRpb1NoYXJlZFVuaXQ6OnZlcmlmeUlzQ2FwdHVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNhcHR1cmVGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUZhY3Rvcnk6OmRldmljZXNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0Q2FwdHVyZURldmlj
ZUlEKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZS5oOgorCiAyMDE4LTEyLTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgVXNlIE9wdGlvbmFsOjp2YWx1ZU9yKCkgaW5zdGVhZCBvZiBP
cHRpb25hbDo6dmFsdWVfb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMmJhNDY3M2I0NzlmYmUw
YmFjNDliMmJiZTY1ODIyNDAxOGM1ZTE4Yy4uMzIwNDIzZDA3ODVjZDZkMjRlODIzZWZlMzVjMDlj
ZDQ1YTg0NTI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMTIt
MjEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgJ2Vu
ZGVkJyBFdmVudCBkb2Vzbid0IGZpcmUgb24gTWVkaWFTdHJlYW1UcmFjayB3aGVuIGEgVVNCIGNh
bWVyYSBpcyB1bnBsdWdnZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4Nzg5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDI2ODE0NDU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgICogcGFsL3NwaS9jZi9Db3Jl
QXVkaW9TUEkuaDoKKwogMjAxOC0xMi0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIHd0Zi9PcHRpb25hbC5oOiBtb3ZlLWNvbnN0cnVjdG9yIGFuZCBtb3ZlLWFz
c2lnbm1lbnQgb3BlcmF0b3Igc2hvdWxkIGRpc2VuZ2FnZSB0aGUgdmFsdWUgYmVpbmcgbW92ZWQg
ZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ29yZUF1ZGlv
U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9Db3JlQXVkaW9TUEkuaAppbmRl
eCAzNzc5OWQyYjEwMTVmNWMxY2I3YTk3YWEzOTdhNDI3NjRlNTBhNTE3Li5kNWU5ZGEzZjNjNjc1
YzEzMjg4YTU2ZTYyNTExN2QwMjM0YTM3ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jZi9Db3JlQXVkaW9TUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZi9Db3JlQXVkaW9TUEkuaApAQCAtMzMsNiArMzMsMTIgQEAKIAogI2lmIFBMQVRGT1JN
KE1BQykKICNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgorCitDRl9FTlVNKEF1
ZGlvT2JqZWN0UHJvcGVydHlTZWxlY3RvcikKK3sKKyAgICBrQXVkaW9EZXZpY2VQcm9wZXJ0eVRh
cEVuYWJsZWQgPSAndGFwZCcsCit9OworCiAjZWxzZQogCiBXVEZfRVhURVJOX0NfQkVHSU4KQEAg
LTU1LDcgKzYxLDggQEAgQ0ZfRU5VTShBdWRpb09iamVjdFByb3BlcnR5U2NvcGUpCiAKIENGX0VO
VU0oQXVkaW9PYmplY3RQcm9wZXJ0eVNlbGVjdG9yKQogewotICAgIGtBdWRpb0hhcmR3YXJlUHJv
cGVydHlEZWZhdWx0SW5wdXREZXZpY2UgPSAnZEluICcKKyAgICBrQXVkaW9IYXJkd2FyZVByb3Bl
cnR5RGVmYXVsdElucHV0RGV2aWNlID0gJ2RJbiAnLAorICAgIGtBdWRpb0RldmljZVByb3BlcnR5
VGFwRW5hYmxlZCA9ICd0YXBkJywKIH07CiAKIENGX0VOVU0oaW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UuaAppbmRleCAyYTUzMDU0MzE0Njg0YTJlNDc1Nzk4ZmU4Nzk5NjUyZGRhZmUxNjVl
Li42MDM4MTcyNjNkZWViMDM4NDljODcxODY0MTg2NDljMDM0ZjFmYjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UuaApAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFz
cyBJbnRlcnJ1cHRpb25SZWFzb24geyBOb25lLCBWaWRlb05vdEFsbG93ZWRJbkJhY2tncm91bmQs
IEF1ZGlvSW5Vc2UsIFZpZGVvSW5Vc2UsIFZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSB9Owog
ICAgIHZvaWQgY2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3Rp
ZmljYXRpb24+KTsKICAgICB2b2lkIGNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9uKFJldGFp
blB0cjxOU05vdGlmaWNhdGlvbj4pOworICAgIHZvaWQgZGV2aWNlRGlzY29ubmVjdGVkKFJldGFp
blB0cjxOU05vdGlmaWNhdGlvbj4pOwogCiAgICAgQVZDYXB0dXJlU2Vzc2lvbiogc2Vzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW0KaW5kZXggYTU0Y2QxNGQ2ZWFhNzZiODgwMGU4MDBlYTdiZTJhOGExMDhjNTU0Yi4u
OGEwMGYwNDUxN2Q5NzNmOWQ1YmM3ZDNhOGQzZTM1ZjUzNmZlZDA1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5tbQpAQCAtNzgsNiArNzgsOSBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZGb3Vu
ZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uKQogCiBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0
aW9uLCBBVk1lZGlhVHlwZVZpZGVvLCBOU1N0cmluZyAqKQogCitTT0ZUX0xJTktfQ09OU1RBTlQo
QVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VXYXNEaXNjb25uZWN0ZWROb3RpZmljYXRpb24s
IE5TU3RyaW5nICopCisjZGVmaW5lIEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5lY3RlZE5vdGlm
aWNhdGlvbiBnZXRBVkNhcHR1cmVEZXZpY2VXYXNEaXNjb25uZWN0ZWROb3RpZmljYXRpb24oKQor
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFW
Rm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbiwgTlNT
dHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0
dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQpAQCAtMTA5
LDYgKzExMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAtKHZvaWQpc2Vzc2lvblJ1bnRpbWVF
cnJvcjooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKIC0odm9pZCliZWdpblNlc3Npb25J
bnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKIC0odm9pZCllbmRTZXNz
aW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CistKHZvaWQpZGV2
aWNlQ29ubmVjdGVkRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uOwogI2Vu
ZGlmCiBAZW5kCiAKQEAgLTYyNiw2ICs2MzAsMTMgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW8K
IH0KICNlbmRpZgogCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpkZXZpY2VEaXNjb25uZWN0
ZWQoUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24pCit7CisgICAgaWYgKHRo
aXMtPmRldmljZSgpID09IFtub3RpZmljYXRpb24gb2JqZWN0XSkKKyAgICAgICAgY2FwdHVyZUZh
aWxlZCgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogQGltcGxlbWVudGF0aW9u
IFdlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyCkBAIC02NTAsMTIgKzY2MSwxNCBA
QCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlv
bihSZXRhaW5QdHI8TlNOb3RpZmljYXRpbwogCiAtICh2b2lkKWFkZE5vdGlmaWNhdGlvbk9ic2Vy
dmVycwogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKG1fY2FsbGJhY2sp
OwogCiAgICAgTlNOb3RpZmljYXRpb25DZW50ZXIqIGNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXTsKLSAgICBBVkNhcHR1cmVTZXNzaW9uVHlwZSogc2Vzc2lvbiA9
IG1fY2FsbGJhY2stPnNlc3Npb24oKTsKIAorICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoZGV2aWNlQ29ubmVjdGVkRGlkQ2hhbmdlOikgbmFtZTpBVkNhcHR1
cmVEZXZpY2VXYXNEaXNjb25uZWN0ZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIEFWQ2FwdHVyZVNlc3Npb25UeXBlKiBzZXNzaW9uID0g
bV9jYWxsYmFjay0+c2Vzc2lvbigpOwogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxl
Y3RvcjpAc2VsZWN0b3Ioc2Vzc2lvblJ1bnRpbWVFcnJvcjopIG5hbWU6QVZDYXB0dXJlU2Vzc2lv
blJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07CiAgICAgW2NlbnRlciBh
ZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihiZWdpblNlc3Npb25JbnRlcnJ1cHRl
ZDopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uIG9iamVj
dDpzZXNzaW9uXTsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVj
dG9yKGVuZFNlc3Npb25JbnRlcnJ1cHRlZDopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvbkludGVycnVw
dGlvbkVuZGVkTm90aWZpY2F0aW9uIG9iamVjdDpzZXNzaW9uXTsKQEAgLTY2NCw5ICs2NzcsNyBA
QCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlv
bihSZXRhaW5QdHI8TlNOb3RpZmljYXRpbwogCiAtICh2b2lkKXJlbW92ZU5vdGlmaWNhdGlvbk9i
c2VydmVycwogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKLSNlbmRpZgogfQog
CiAtICh2b2lkKWNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNhcHR1cmVPdXRw
dXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIg
ZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0aW9uCkBAIC03
MDQsNiArNzE1LDE0IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9u
RW5kSW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvCiAgICAgICAgIG1fY2FsbGJh
Y2stPmNhcHR1cmVEZXZpY2VTdXNwZW5kZWREaWRDaGFuZ2UoKTsKIH0KIAorLSAodm9pZClkZXZp
Y2VDb25uZWN0ZWREaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KK3sKKyAg
ICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjo6ZGV2aWNl
Q29ubmVjdGVkRGlkQ2hhbmdlKCVwKSIsIHNlbGYpOworCisgICAgaWYgKG1fY2FsbGJhY2spCisg
ICAgICAgIG1fY2FsbGJhY2stPmRldmljZURpc2Nvbm5lY3RlZChub3RpZmljYXRpb24pOworfQor
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpc2Vzc2lvblJ1bnRpbWVFcnJvcjoo
TlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggMTA5NTZiYTFmYzk2OTRmMDNmMzU1OGMwNzcz
NmQzNTNlNjIwNmQ0OC4uMWM3OGFlNTBjMTZjODQwMzk1MTRiMTA2YWJhZTUxY2E5NWYwNjI2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0y
OSwxMCArMjksMTIgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMp
CiAKICNpbmNsdWRlICJDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgiCisjaW5jbHVkZSAiQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5o
PgogI2luY2x1ZGUgPENvcmVNZWRpYS9DTVN5bmMuaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NmL0Nv
cmVBdWRpb1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTY3LDcgKzY5LDYgQEAgc3RhdGljIGJvb2wgZGV2aWNl
SGFzSW5wdXRTdHJlYW1zKEF1ZGlvT2JqZWN0SUQgZGV2aWNlSUQpCiAgICAgVUludDMyIGRhdGFT
aXplID0gMDsKICAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVk
aW9EZXZpY2VQcm9wZXJ0eVN0cmVhbUNvbmZpZ3VyYXRpb24sIGtBdWRpb0RldmljZVByb3BlcnR5
U2NvcGVJbnB1dCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CiAgICAgYXV0
byBlcnIgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YVNpemUoZGV2aWNlSUQsICZhZGRyZXNz
LCAwLCBudWxscHRyLCAmZGF0YVNpemUpOwotCiAgICAgaWYgKGVyciB8fCAhZGF0YVNpemUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODAsNiArODEsMjMgQEAgc3RhdGljIGJvb2wgZGV2
aWNlSGFzSW5wdXRTdHJlYW1zKEF1ZGlvT2JqZWN0SUQgZGV2aWNlSUQpCiAKIHN0YXRpYyBib29s
IGlzVmFsaWRDYXB0dXJlRGV2aWNlKGNvbnN0IENvcmVBdWRpb0NhcHR1cmVEZXZpY2UmIGRldmlj
ZSkKIHsKKyAgICAvLyBJZ25vcmUgb3V0cHV0IGRldmljZXMgdGhhdCBoYXZlIGlucHV0IG9ubHkg
Zm9yIGVjaG8gY2FuY2VsbGF0aW9uLgorICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIGFk
ZHJlc3MgPSB7IGtBdWRpb0RldmljZVByb3BlcnR5VGFwRW5hYmxlZCwga0F1ZGlvRGV2aWNlUHJv
cGVydHlTY29wZU91dHB1dCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07Cisg
ICAgaWYgKEF1ZGlvT2JqZWN0SGFzUHJvcGVydHkoZGV2aWNlLmRldmljZUlEKCksICZhZGRyZXNz
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSWdub3JlIG5vbi1hZ2dyZWdhYmxl
IGRldmljZXMuCisgICAgVUludDMyIGRhdGFTaXplID0gMDsKKyAgICBhZGRyZXNzID0geyBrQXVk
aW9PYmplY3RQcm9wZXJ0eUNyZWF0b3IsIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWws
IGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OworICAgIENGU3RyaW5nUmVmIG5h
bWUgPSBudWxscHRyOworICAgIGRhdGFTaXplID0gc2l6ZW9mKG5hbWUpOworICAgIEF1ZGlvT2Jq
ZWN0R2V0UHJvcGVydHlEYXRhKGRldmljZS5kZXZpY2VJRCgpLCAmYWRkcmVzcywgMCwgbnVsbHB0
ciwgJmRhdGFTaXplLCAmbmFtZSk7CisgICAgYm9vbCBpc05vbkFnZ3JlZ2FibGUgPSAhbmFtZSB8
fCAhU3RyaW5nKG5hbWUpLnN0YXJ0c1dpdGgoImNvbS5hcHBsZS5hdWRpby5Db3JlQXVkaW8iKTsK
KyAgICBpZiAobmFtZSkKKyAgICAgICAgQ0ZSZWxlYXNlKG5hbWUpOworICAgIGlmIChpc05vbkFn
Z3JlZ2FibGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIElnbm9yZSB1bm5hbWVk
IGRldmljZXMgYW5kIGFnZ3JlZ2F0ZSBkZXZpY2VzIGNyZWF0ZWQgYnkgVlBJTy4KICAgICByZXR1
cm4gIWRldmljZS5sYWJlbCgpLmlzRW1wdHkoKSAmJiAhZGV2aWNlLmxhYmVsKCkuc3RhcnRzV2l0
aCgiVlBBVUFnZ3JlZ2F0ZUF1ZGlvRGV2aWNlIik7CiB9CkBAIC05MSw4ICsxMDksMjQgQEAgVmVj
dG9yPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+JiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
cjo6Y29yZUF1ZGlvQ2FwdHVyZUQKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgICAg
ICByZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyhEb05vdE5vdGlmeSk7CiAKKyAgICAgICAgYXV0
byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKKyAgICAgICAgbV9saXN0ZW5lckJsb2Nr
ID0gQmxvY2tfY29weSheKFVJbnQzMiBjb3VudCwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFk
ZHJlc3MgcHJvcGVydGllc1tdKSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgZm9yIChVSW50MzIgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFk
ZHJlc3MmIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTsKKworICAgICAgICAgICAgICAgIGlmIChw
cm9wZXJ0eS5tU2VsZWN0b3IgIT0ga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURldmljZXMpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnJl
ZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKE5vdGlmeSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKwogICAgICAgICBBdWRpb09iamVjdFByb3Bl
cnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9IYXJkd2FyZVByb3BlcnR5RGV2aWNlcywga0F1
ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50
TWFzdGVyIH07Ci0gICAgICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3Rl
bmVyKGtBdWRpb09iamVjdFN5c3RlbU9iamVjdCwgJmFkZHJlc3MsIGRldmljZXNDaGFuZ2VkLCB0
aGlzKTsKKyAgICAgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEFkZFByb3BlcnR5TGlzdGVuZXJC
bG9jayhrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3QsICZhZGRyZXNzLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBtX2xpc3RlbmVyQmxvY2spOwogICAgICAgICBpZiAoZXJyKQogICAgICAgICAg
ICAgTE9HX0VSUk9SKCJDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlcyglcCkg
QXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVyIHJldHVybmVkIGVycm9yICVkICglLjRzKSIs
IHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgfQpAQCAtMTY0LDE0ICsxOTgsMTAg
QEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVy
ZURldmljZXMoTm90aWZ5SWZEZXZpY2VzSGEKICAgICAgICAgbV9kZXZpY2VzLmFwcGVuZChjYXB0
dXJlRGV2aWNlKTsKICAgICB9CiAKLSAgICBpZiAobm90aWZ5ID09IE5vdGlmeSkKKyAgICBpZiAo
bm90aWZ5ID09IE5vdGlmeSkgewogICAgICAgICBkZXZpY2VDaGFuZ2VkKCk7Ci19Ci0KLU9TU3Rh
dHVzIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VzQ2hhbmdlZChBdWRpb09i
amVjdElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCog
dXNlckRhdGEpCi17Ci0gICAgc3RhdGljX2Nhc3Q8Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIqPih1c2VyRGF0YSktPnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKE5vdGlmeSk7Ci0gICAg
cmV0dXJuIDA7CisgICAgICAgIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5OjpzaW5nbGV0
b24oKS5kZXZpY2VzQ2hhbmdlZChtX2RldmljZXMpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaApp
bmRleCA1Yzk3MmYxODY0ZmE2YTEwNzg3NjJhZTRjNGZmMGZmZTg5N2Y2NTllLi4xOTQ2MmU0OGRk
ZTRhOTAxN2U4OTYwZDVkMTM2YWJkNGI3N2Q4Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtNTIsNyArNTIsNiBAQCBwcml2YXRlOgogICAgIENv
cmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgPSBkZWZhdWx0OwogICAgIH5Db3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlcigpID0gZGVmYXVsdDsKICAgICAKLSAgICBzdGF0aWMgT1NTdGF0
dXMgZGV2aWNlc0NoYW5nZWQoQXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVj
dFByb3BlcnR5QWRkcmVzcyosIHZvaWQqKTsKICAgICBWZWN0b3I8Q29yZUF1ZGlvQ2FwdHVyZURl
dmljZT4mIGNvcmVBdWRpb0NhcHR1cmVEZXZpY2VzKCk7CiAKICAgICBlbnVtIE5vdGlmeUlmRGV2
aWNlc0hhdmVDaGFuZ2VkIHsgTm90aWZ5LCBEb05vdE5vdGlmeSB9OwpAQCAtNjAsNiArNTksOCBA
QCBwcml2YXRlOgogCiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IG1fZGV2aWNlczsKICAgICBW
ZWN0b3I8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4gbV9jb3JlQXVkaW9DYXB0dXJlRGV2aWNlczsK
KworICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlMaXN0ZW5lckJsb2NrIG1fbGlzdGVuZXJCbG9jazsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmNwcAppbmRleCA1N2Q2YjAxNGZkNTA1OGUwMTBjOTY4NTJlNDlmNmM0NTk4N2Q4YTBiLi5k
ZDEzYTUyMGU3ZTY1NzBhN2EzZmJiMTY3NWNkNjRiYzg0MGIxNTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8cGFsL2F2
Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxwYWwvc3BpL2Nm
L0NvcmVBdWRpb1NQSS5oPgogI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8d3RmL0Fs
Z29yaXRobXMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgpA
QCAtMTAyLDcgKzEwMyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzQXVkaW9Vbml0KCkgY29u
c3QgeyByZXR1cm4gbV9pb1VuaXQ7IH0KIAotICAgIHZvaWQgc2V0Q2FwdHVyZURldmljZUlEKHVp
bnQzMl90KTsKKyAgICB2b2lkIHNldENhcHR1cmVEZXZpY2UoU3RyaW5nJiYsIHVpbnQzMl90KTsK
KworICAgIHZvaWQgZGV2aWNlc0NoYW5nZWQoY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+Jik7
CiAKIHByaXZhdGU6CiAgICAgT1NTdGF0dXMgY29uZmlndXJlU3BlYWtlclByb2MoKTsKQEAgLTEx
NiwxMCArMTE5LDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIE9TU3RhdHVzIHNwZWFrZXJDYWxs
YmFjayh2b2lkKiwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVT
dGFtcCosIFVJbnQzMiwgVUludDMyLCBBdWRpb0J1ZmZlckxpc3QqKTsKICAgICBPU1N0YXR1cyBw
cm92aWRlU3BlYWtlckRhdGEoQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmLCBjb25zdCBBdWRp
b1RpbWVTdGFtcCYsIFVJbnQzMiwgVUludDMyLCBBdWRpb0J1ZmZlckxpc3QqKTsKIAotICAgIHZv
aWQgc3RhcnRJbnRlcm5hbCgpOworICAgIE9TU3RhdHVzIHN0YXJ0SW50ZXJuYWwoKTsKICAgICB2
b2lkIHN0b3BJbnRlcm5hbCgpOwogCiAgICAgdm9pZCB2ZXJpZnlJc0NhcHR1cmluZygpOworICAg
IHZvaWQgZGV2aWNlc0NoYW5nZWQoKTsKKyAgICB2b2lkIGNhcHR1cmVGYWlsZWQoKTsKIAogICAg
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENvcmVBdWRpb0NhcHR1cmVTb3VyY2U+PiBt
X2NsaWVudHM7CiAKQEAgLTE2Miw2ICsxNjcsOCBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1f
c3BlYWtlclByb2NzQ2FsbGVkIHsgMCB9OwogI2VuZGlmCiAKKyAgICBTdHJpbmcgbV9wZXJzaXN0
ZW50SUQ7CisKICAgICB1aW50NjRfdCBtX21pY3JvcGhvbmVQcm9jc0NhbGxlZCB7IDAgfTsKICAg
ICB1aW50NjRfdCBtX21pY3JvcGhvbmVQcm9jc0NhbGxlZExhc3RUaW1lIHsgMCB9OwogICAgIFRp
bWVyIG1fdmVyaWZ5Q2FwdHVyaW5nVGltZXI7CkBAIC0xOTcsOCArMjA0LDEwIEBAIHZvaWQgQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6cmVtb3ZlQ2xpZW50KENvcmVBdWRpb0NhcHR1cmVTb3VyY2UmIGNs
aWVudCkKICAgICB9KTsKIH0KIAotdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXRDYXB0dXJl
RGV2aWNlSUQodWludDMyX3QgY2FwdHVyZURldmljZUlEKQordm9pZCBDb3JlQXVkaW9TaGFyZWRV
bml0OjpzZXRDYXB0dXJlRGV2aWNlKFN0cmluZyYmIHBlcnNpc3RlbnRJRCwgdWludDMyX3QgY2Fw
dHVyZURldmljZUlEKQogeworICAgIG1fcGVyc2lzdGVudElEID0gV1RGTW92ZShwZXJzaXN0ZW50
SUQpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChtX2NhcHR1cmVEZXZpY2VJRCA9PSBj
YXB0dXJlRGV2aWNlSUQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMCw2ICsyMTksMTcgQEAgdm9p
ZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXRDYXB0dXJlRGV2aWNlSUQodWludDMyX3QgY2FwdHVy
ZURldmljZUlEKQogI2VuZGlmCiB9CiAKK3ZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6ZGV2aWNl
c0NoYW5nZWQoY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBkZXZpY2VzKQoreworICAgIGlm
ICghbV9pb1VuaXQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChXVEY6OmFueU9mKGRldmlj
ZXMsIFt0aGlzXSAoYXV0byYgZGV2aWNlKSB7IHJldHVybiBtX3BlcnNpc3RlbnRJRCA9PSBkZXZp
Y2UucGVyc2lzdGVudElkKCk7IH0pKQorICAgICAgICByZXR1cm47CisKKyAgICBjYXB0dXJlRmFp
bGVkKCk7Cit9CisKIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6YWRkRWNob0NhbmNlbGxhdGlv
blNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmIHNvdXJjZSkKIHsKICAgICBpZiAoIXNvdXJj
ZS5zZXRPdXRwdXRGb3JtYXQobV9zcGVha2VyUHJvY0Zvcm1hdCkpIHsKQEAgLTU1OSw3ICs1Nzks
OCBAQCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAgICAg
ICAgIEFTU0VSVCghbV9pb1VuaXQpOwogICAgIH0KIAotICAgIHN0YXJ0SW50ZXJuYWwoKTsKKyAg
ICBpZiAoc3RhcnRJbnRlcm5hbCgpKQorICAgICAgICBjYXB0dXJlRmFpbGVkKCk7CiB9CiAKIE9T
U3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnJlc3VtZSgpCkBAIC01NzgsNyArNTk5LDcgQEAg
T1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cmVzdW1lKCkKICAgICByZXR1cm4gMDsKIH0K
IAotdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzdGFydEludGVybmFsKCkKK09TU3RhdHVzIENv
cmVBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0SW50ZXJuYWwoKQogewogICAgIE9TU3RhdHVzIGVycjsK
ICAgICBpZiAoIW1faW9Vbml0KSB7CkBAIC01ODYsNyArNjA3LDcgQEAgdm9pZCBDb3JlQXVkaW9T
aGFyZWRVbml0OjpzdGFydEludGVybmFsKCkKICAgICAgICAgaWYgKGVycikgewogICAgICAgICAg
ICAgY2xlYW51cEF1ZGlvVW5pdCgpOwogICAgICAgICAgICAgQVNTRVJUKCFtX2lvVW5pdCk7Ci0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVChtX2lvVW5pdCk7CiAgICAgfQpAQCAtNTk4LDcgKzYxOSw3IEBAIHZvaWQg
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6c3RhcnRJbnRlcm5hbCgpCiAgICAgZXJyID0gQXVkaW9PdXRw
dXRVbml0U3RhcnQobV9pb1VuaXQpOwogICAgIGlmIChlcnIpIHsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpzdGFydCglcCkgQXVkaW9PdXRw
dXRVbml0U3RhcnQgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIs
IChjaGFyKikmZXJyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZXJyOwogICAg
IH0KIAogICAgIG1faW9Vbml0U3RhcnRlZCA9IHRydWU7CkBAIC02MDYsNiArNjI3LDggQEAgdm9p
ZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzdGFydEludGVybmFsKCkKICAgICBtX3ZlcmlmeUNhcHR1
cmluZ1RpbWVyLnN0YXJ0UmVwZWF0aW5nKDEwX3MpOwogICAgIG1fbWljcm9waG9uZVByb2NzQ2Fs
bGVkID0gMDsKICAgICBtX21pY3JvcGhvbmVQcm9jc0NhbGxlZExhc3RUaW1lID0gMDsKKworICAg
IHJldHVybiAwOwogfQogCiB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnZlcmlmeUlzQ2FwdHVy
aW5nKCkKQEAgLTYxNyw4ICs2NDAsMTQgQEAgdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0Ojp2ZXJp
ZnlJc0NhcHR1cmluZygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXB0dXJlRmFp
bGVkKCk7Cit9CisKKwordm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpjYXB0dXJlRmFpbGVkKCkK
K3sKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnZlcmlmeUlzQ2FwdHVyaW5nIC0gY2FwdHVyZSBmYWls
ZWRcbiIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5p
dDo6Y2FwdHVyZUZhaWxlZCAtIGNhcHR1cmUgZmFpbGVkXG4iKTsKICNlbmRpZgogICAgIGZvciAo
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgY2xpZW50IDogbV9jbGllbnRzKQogICAgICAgICBjbGll
bnQuY2FwdHVyZUZhaWxlZCgpOwpAQCAtNzgzLDEyICs4MTIsMTcgQEAgQ2FwdHVyZURldmljZU1h
bmFnZXImIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5OjphdWRpb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyKCkKICNlbmRpZgogfQogCi1Db3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9D
YXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBsYWJlbCwgU3RyaW5nJiYg
aGFzaFNhbHQsIHVpbnQzMl90IHBlcnNpc3RlbnRJRCkKK3ZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZUZhY3Rvcnk6OmRldmljZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYg
ZGV2aWNlcykKK3sKKyAgICBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5kZXZpY2Vz
Q2hhbmdlZChkZXZpY2VzKTsKK30KKworQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Q29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbGFiZWwsIFN0cmluZyYm
IGhhc2hTYWx0LCB1aW50MzJfdCBjYXB0dXJlRGV2aWNlSUQpCiAgICAgOiBSZWFsdGltZU1lZGlh
U291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBXVEZNb3ZlKGxhYmVsKSwg
V1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlRGV2
aWNlSUQocGVyc2lzdGVudElEKQorICAgICwgbV9jYXB0dXJlRGV2aWNlSUQoY2FwdHVyZURldmlj
ZUlEKQogewogICAgIGF1dG8mIHVuaXQgPSBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24o
KTsKLSAgICB1bml0LnNldENhcHR1cmVEZXZpY2VJRChtX2NhcHR1cmVEZXZpY2VJRCk7CisgICAg
dW5pdC5zZXRDYXB0dXJlRGV2aWNlKFN0cmluZyB7IHBlcnNpc3RlbnRJRCgpIH0sIG1fY2FwdHVy
ZURldmljZUlEKTsKIAogICAgIGluaXRpYWxpemVFY2hvQ2FuY2VsbGF0aW9uKHVuaXQuZW5hYmxl
RWNob0NhbmNlbGxhdGlvbigpKTsKICAgICBpbml0aWFsaXplU2FtcGxlUmF0ZSh1bml0LnNhbXBs
ZVJhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAppbmRleCBkOWZhMGFlNDM0
MDZhYTM5NjBkZDY1OWZlYjdiMTI1OGM4MDU5NzNhLi5mNTIwMzczMWNjZDAxZTQ2YjI3NTg3NjUw
NWU2NTQzZWMzZWIzMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKQEAgLTEx
Nyw2ICsxMTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmRJbnRlcnJ1cHRpb24oKTsKICAgICB2
b2lkIHNjaGVkdWxlUmVjb25maWd1cmF0aW9uKCk7CiAKKyAgICB2b2lkIGRldmljZXNDaGFuZ2Vk
KGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYpOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2b2lkIHNldENvcmVBdWRpb0FjdGl2ZVNvdXJjZShDb3JlQXVkaW9DYXB0dXJlU291
cmNlJiBzb3VyY2UpIHsgc2V0QWN0aXZlU291cmNlKHNvdXJjZSk7IH0KICAgICB2b2lkIHVuc2V0
Q29yZUF1ZGlvQWN0aXZlU291cmNlKENvcmVBdWRpb0NhcHR1cmVTb3VyY2UmIHNvdXJjZSkgeyB1
bnNldEFjdGl2ZVNvdXJjZShzb3VyY2UpOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>