<?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>214245</bug_id>
          
          <creation_ts>2020-07-12 19:47:18 -0700</creation_ts>
          <short_desc>Resolve race between IOHIDManager and GameController framework</short_desc>
          <delta_ts>2020-07-15 10:10:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1670953</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-12 19:47:18 -0700</bug_when>
    <thetext>Resolve race between IOHIDManager and GameController framework

There&apos;s a race between the IOHIDService being available for an IOHIDDevice, and GameController framework publishing that same device.

This leads us to sometimes show the same gamepad twice - Once through IOHID and once through GCF.

We can shift our HID provider to use IOHIDService directly to resolve this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671544</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-14 15:12:32 -0700</bug_when>
    <thetext>rdar://problem/65554490</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671546</commentid>
    <comment_count>2</comment_count>
      <attachid>404292</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-14 15:27:08 -0700</bug_when>
    <thetext>Created attachment 404292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671562</commentid>
    <comment_count>3</comment_count>
      <attachid>404298</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-14 15:49:48 -0700</bug_when>
    <thetext>Created attachment 404298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671610</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-14 17:13:29 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #0)
&gt; Resolve race between IOHIDManager and GameController framework
&gt; 
&gt; There&apos;s a race between the IOHIDService being available for an IOHIDDevice,
&gt; and GameController framework publishing that same device.
&gt; 
&gt; This leads us to sometimes show the same gamepad twice - Once through IOHID
&gt; and once through GCF.
&gt; 
&gt; We can shift our HID provider to use IOHIDService directly to resolve this.

BTW ^^^ That wasn&apos;t possible. So we&apos;re doing the approach in the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671653</commentid>
    <comment_count>5</comment_count>
      <attachid>404298</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-07-14 21:59:09 -0700</bug_when>
    <thetext>Comment on attachment 404298
Patch

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

&gt; Source/WebCore/ChangeLog:16
&gt; +        GameControler.framework uses IOHIDServices.

Controller

&gt; Source/WebCore/ChangeLog:42
&gt; +        In my testing, when the service publishes after the devices, it&apos;s always wihin 50ms, so the 1s
&gt; +        delay seems sufficient.

Slightly frightening. Do you understand the source of the delay? (if it&apos;s, say, fetching something from disk, it might be much longer on some hardware).

&gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.h:59
&gt; +        Yes,
&gt; +        No

Someone debugging later might get quite sad about the order of these values (say, if they cast to bool in logging). Maybe swap them?

&gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.mm:191
&gt; +    Yes,
&gt; +    No,
&gt; +    Maybe,

You&apos;ve done it again

&gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.mm:268
&gt; +    [matchingAttributes addObject:@{(id)CFSTR(kIOHIDDeviceUsagePageKey) : @(kHIDPage_GenericDesktop), (id)CFSTR(kIOHIDDeviceUsageKey) : @(kHIDUsage_GD_GamePad)}];
&gt; +    [matchingAttributes addObject:@{(id)CFSTR(kIOHIDDeviceUsagePageKey) : @(kHIDPage_GenericDesktop), (id)CFSTR(kIOHIDDeviceUsageKey) : @(kHIDUsage_GD_Joystick)}];

Why are you making CFStrings? Seems like NSString is fine, due to toll-free bridging, no? (and then you can just @() like you do for the what-I-assume-are-NSNumbers)

&gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.mm:270
&gt; +    IOHIDEventSystemClientSetMatchingMultiple(m_eventSystemClient.get(), (__bridge CFArrayRef)(matchingAttributes));

Weird extra parens around matchingAttributes

&gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.mm:275
&gt; +        HIDGamepadProvider::singleton().newGamePadServicePublished();

The leading &quot;new&quot; is triggering my &quot;new or create&quot; instinct. Maybe didPublishNewGamePadService? Or, since we aren&apos;t the ones publishing, some other verb?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671660</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-14 22:45:42 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #5)
&gt; Comment on attachment 404298 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404298&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +        GameControler.framework uses IOHIDServices.
&gt; 
&gt; Controller
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:42
&gt; &gt; +        In my testing, when the service publishes after the devices, it&apos;s always wihin 50ms, so the 1s
&gt; &gt; +        delay seems sufficient.
&gt; 
&gt; Slightly frightening. Do you understand the source of the delay? (if it&apos;s,
&gt; say, fetching something from disk, it might be much longer on some hardware).

It&apos;s not storage bound.

The &quot;normal&quot; race is simply mach messaging from the kernel coming up to user space through two different mach ports. A truly classic race.

A potential race *is* I/O bound as an atypically behaved physical gamepad device can get itself into this situation by being &quot;weird&quot; over USB/BT.

50ms is &quot;a few ms roundtrip on one of those busses&quot; plus a few kernel-&gt;user roundtrips.

We don&apos;t expect even that on common, well behaved hardware.

If the physical hardware itself causes a 1s delay...  It is PROBABLY not a piece of hardware GameController framework would handle (PS4, Xbox1, and MFi controllers) which are all known to behave.

tldr; I could construct a physical device to misbehave in this manner on purpose to exceed even the one second delay, but in the real world no such device would be handled by GCF

&gt; 
&gt; &gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.h:59
&gt; &gt; +        Yes,
&gt; &gt; +        No
&gt; 
&gt; Someone debugging later might get quite sad about the order of these values
&gt; (say, if they cast to bool in logging). Maybe swap them?

Yes.

&gt; 
&gt; &gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.mm:191
&gt; &gt; +    Yes,
&gt; &gt; +    No,
&gt; &gt; +    Maybe,
&gt; 
&gt; You&apos;ve done it again

It&apos;s as if my tired brain that fell into the anti-pattern once could fall into it again.

&gt; 
&gt; &gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.mm:268
&gt; &gt; +    [matchingAttributes addObject:@{(id)CFSTR(kIOHIDDeviceUsagePageKey) : @(kHIDPage_GenericDesktop), (id)CFSTR(kIOHIDDeviceUsageKey) : @(kHIDUsage_GD_GamePad)}];
&gt; &gt; +    [matchingAttributes addObject:@{(id)CFSTR(kIOHIDDeviceUsagePageKey) : @(kHIDPage_GenericDesktop), (id)CFSTR(kIOHIDDeviceUsageKey) : @(kHIDUsage_GD_Joystick)}];
&gt; 
&gt; Why are you making CFStrings? Seems like NSString is fine, due to toll-free
&gt; bridging, no? (and then you can just @() like you do for the
&gt; what-I-assume-are-NSNumbers)

Yah 100%.
&gt; 
&gt; &gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.mm:270
&gt; &gt; +    IOHIDEventSystemClientSetMatchingMultiple(m_eventSystemClient.get(), (__bridge CFArrayRef)(matchingAttributes));
&gt; 
&gt; Weird extra parens around matchingAttributes
&gt; 

Yah 100%

&gt; &gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.mm:275
&gt; &gt; +        HIDGamepadProvider::singleton().newGamePadServicePublished();
&gt; 
&gt; The leading &quot;new&quot; is triggering my &quot;new or create&quot; instinct. Maybe
&gt; didPublishNewGamePadService? Or, since we aren&apos;t the ones publishing, some
&gt; other verb?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671672</commentid>
    <comment_count>7</comment_count>
      <attachid>404320</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-14 23:26:14 -0700</bug_when>
    <thetext>Created attachment 404320
Those changes, plus some &quot;make it build on Big Sur&quot; changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671683</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-15 01:00:17 -0700</bug_when>
    <thetext>Committed r264389: &lt;https://trac.webkit.org/changeset/264389&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404320.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671756</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-15 09:01:21 -0700</bug_when>
    <thetext>This broke release builds on Catalina/Big Sur (due to unused variable),
and non-Apple-Internal builds (due to some missing SPI forward decls)

Fixing both soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671762</commentid>
    <comment_count>10</comment_count>
      <attachid>404349</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-15 09:19:23 -0700</bug_when>
    <thetext>Created attachment 404349
Other configuration build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671774</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-15 09:51:55 -0700</bug_when>
    <thetext>EWS isn&apos;t doing anything here...
So I doubt the CQ will either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671779</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-15 10:06:47 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671780</commentid>
    <comment_count>13</comment_count>
      <attachid>404352</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-15 10:06:48 -0700</bug_when>
    <thetext>Created attachment 404352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671781</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-15 10:10:52 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/264402/webkit for the OSS build SPI fix
https://trac.webkit.org/changeset/264401/webkit for the release build fix</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404292</attachid>
            <date>2020-07-14 15:27:08 -0700</date>
            <delta_ts>2020-07-14 15:49:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>19142</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZGYxYmY0NzJkNmVlLi40ZWJmMTBjZjVkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MjAtMDctMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJl
c29sdmUgcmFjZSBiZXR3ZWVuIElPSElETWFuYWdlciBhbmQgR2FtZUNvbnRyb2xsZXIgZnJhbWV3
b3JrLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU1NTQ0OTA+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjAt
MDctMTMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2xlYW4gdXAgU291cmNlUHJvdmlkZXIgYW5kIGFkZCBjYWxsZXIgcmVsYXRpdmUgbG9hZCBzY3Jp
cHQgdG8ganNjLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCBlNDdhNzQ1YzZjZDguLjdjOWRj
ZTEzZGUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTU3OCw2ICs1NzgsMTAgQEAKICNkZWZp
bmUgSEFWRV9HQ0VYVEVOREVER0FNRVBBRF9IT01FX0JVVFRPTiAxCiAjZW5kaWYKIAorI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNzAw
KQorI2RlZmluZSBIQVZFX0dDQ09OVFJPTExFUl9ISURfREVWSUNFX0NIRUNLCisjZW5kaWYKKwog
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxNjAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTQwMDAwKQogI2RlZmluZSBIQVZFX1dFQlAgMQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNGZlMmMzNWU0OTdkLi43NmYwYTUzNzc0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1OSBAQAorMjAyMC0wNy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzb2x2ZSByYWNlIGJldHdlZW4gSU9ISURNYW5hZ2VyIGFuZCBHYW1lQ29udHJv
bGxlciBmcmFtZXdvcmsuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTU1NDQ5MD4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyNDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBhdXRvbWF0ZWQgdGVzdGlu
ZyBhdmFpbGFibGUuCisgICAgICAgIAorICAgICAgICBJT0hJRERldmljZXMgYW5kIElPSElEU2Vy
dmljZXMgYXJlIHR3byBzZXBhcmF0ZSB0aGluZ3MuCisgICAgICAgIAorICAgICAgICBBbiBJT0hJ
RERldmljZSBhbmQgSU9ISURTZXJ2aWNlIG9mdGVuIGhhdmUgYSAxLXRvLTEgY29ycmVsYXRpb24s
IGJ1dCB0aGUgSU9ISUREZXZpY2UgbWlnaHQgYmUKKyAgICAgICAgcHVibGlzaGVkIHRvIHRoZSBh
cHBsaWNhdGlvbiBiZWZvcmUgdGhlIElPSElEU2VydmljZSBpcy4KKyAgICAgICAgCisgICAgICAg
IFdlYktpdCdzIEhJRCBnYW1lcGFkIG1hbmFnZXIgdXNlcyBJT0hJRERldmljZS4KKyAgICAgICAg
R2FtZUNvbnRyb2xlci5mcmFtZXdvcmsgdXNlcyBJT0hJRFNlcnZpY2VzLgorICAgICAgICAKKyAg
ICAgICAgV2hlbiB3ZSBhZGRlZCB0aGUgYWJpbGl0eSBmb3IgV2ViS2l0IHRvIHN3aXRjaCBiZXR3
ZWVuIEhJRCBhbmQgR0NGLCB0aGUgZm9sbG93aW5nIGhhcHBlbnM6CisKKyAgICAgICAgLSBTb21l
dGltZXMgdGhlIElPSElEU2VydmljZUNsaWVudCB3aWxsIGdldCBwdWJsaXNoZWQgZmlyc3QuIFRo
ZW4gd2hlbiB0aGUgSU9ISUREZXZpY2UgaXMgcHVibGlzaGVkLAorICAgICAgICAgIGFuZCBXZWJL
aXQgd2FzIGRlY2lkaW5nIHdoaWNoIGdhbWVwYWQgbWFuYWdlciB0byB1c2UsIHRoZSBkZXZpY2Un
cyBzZXJ2aWNlcyBhcmUgYXZhaWxhYmxlLAorICAgICAgICAgIGFuZCB3ZSBnZXQgdGhlIHJpZ2h0
IGFuc3dlci4KKyAgICAgICAgCisgICAgICAgIC0gU29tZXRpbWVzLCB0aGUgSU9ISUREZXZpY2Ug
aXMgcHVibGlzaGVkIGZpcnN0LiBUaGVuIHdoZW4gV2ViS2l0IGlzIGRlY2lkaW5nIHdoaWNoIGdh
bWVwYWQgCisgICAgICAgICAgbWFuYWdlciB0byB1c2UsIGl0IGNhbid0IGNoZWNrIHRoZSBJT0hJ
RFNlcnZpY2VDbGllbnQgYWdhaW5zdCBHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsuCisgICAgICAg
ICAgU28gd2UgaGF2ZSB0aGUgSElEIG1hbmFnZXIgaGFuZGxlIHRoZSBkZXZpY2UuLi4gYnV0IHRo
ZW4gR0NGIGNvbWVzIGFsb25nIGEgc3BsaXQgc2Vjb25kIGxhdGVyCisgICAgICAgICAgYW5kIEFM
U08gaGFuZGxlcyBpdC4KKyAgICAgICAgICAKKyAgICAgICAgVGhlICJkZXZpY2UgYmVmb3JlIHNl
cnZpY2UiIHNjZW5hcmlvIHJlc3VsdHMgaW4gdGhlIHNhbWUgZ2FtZXBhZCBzaG93aW5nIHVwIHR3
aWNlLgorICAgICAgICAKKyAgICAgICAgVG8gcmVzb2x2ZSB0aGlzLCB3ZSBkbyB0aGUgZm9sbG93
aW5nOgorICAgICAgICAKKyAgICAgICAgMSAtIElmIGFuIElPSElERGV2aWNlIGF0dGFjaGVzIGFu
ZCBpdHMgc2VydmljZXMgYXJlbid0IGF2YWlsYWJsZSB5ZXQsIHdlIGRlbGF5IG1hbmFnaW5nIGl0
LgorICAgICAgICAyIC0gV2hlbiB3ZSBkZWxheSBtYW5hZ2luZyBhIGRldmljZSwgd2Ugc3RhcnQg
bGlzdGVuaW5nIGZvciBJT0hJRFNlcnZpY2VDbGllbnQgYWRkaXRpb25zLgorICAgICAgICAzIC0g
RWFjaCB0aW1lIGEgR2FtZVBhZCBzZXJ2aWNlIGlzIHB1Ymxpc2hlZCwgd2Ugb25jZSBhZ2FpbiB0
cnkgdG8gZGV0ZXJtaW5lIGlmIEdDRiB3aWxsIGhhbmRsZQorICAgICAgICAgICAgdGhlIGRldmlj
ZS4KKyAgICAgICAgNCAtIEFzIGxvbmcgYXMgdGhlIGFuc3dlciBpcyAiTWF5YmUiIC0gaW5zdGVh
ZCBvZiAiWWVzIiBvciAiTm8iIC0gd2UgcmVmdXNlIHRvIG1hbmFnZSB0aGUgZGV2aWNlLgorICAg
ICAgICA1IC0gQWZ0ZXIgYSBicmllZiBkZWxheSAoY3VycmVudGx5IDEgc2Vjb25kKSwgd2Ugd2ls
bCBnaXZlIHVwIHdhaXRpbmcgZm9yIHB1Ymxpc2hlZCBzZXJ2aWNlcworICAgICAgICAgICAgYW5k
IG1hbmFnZSB0aGUgZGV2aWNlIHdpdGggdGhlIEhJRCBnYW1lcGFkIHByb3ZpZGVyLgorICAgICAg
ICAgICAgCisgICAgICAgIEluIG15IHRlc3RpbmcsIHdoZW4gdGhlIHNlcnZpY2UgcHVibGlzaGVz
IGFmdGVyIHRoZSBkZXZpY2VzLCBpdCdzIGFsd2F5cyB3aWhpbiA1MG1zLCBzbyB0aGUgMXMKKyAg
ICAgICAgZGVsYXkgc2VlbXMgc3VmZmljaWVudC4KKyAgICAgICAgCisgICAgICAgIE5PVEU6IFRo
ZSBhYm92ZSBhbGwgaG9sZHMgdHJ1ZSB3aXRoIHRoZSAiTXVsdGlHYW1lcGFkUHJvdmlkZXIiIG9u
IENhdGFsaW5hLgorICAgICAgICBPbiBCaWcgU3VyLCB0aGVyZSdzIGJyYW5kIG5ldyBHYW1lQ29u
dHJvbGxlciBmcmFtZXdvcmsgQVBJIHRoYXQgbWFrZXMgdGhpcyBtdWNoIGVhc2llci4g8J+RjQor
CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6ZGV2aWNlQWRkZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpn
YW1lQ29udHJvbGxlckZyYW1ld29ya1dpbGxIYW5kbGVISUREZXZpY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjp3YWl0Rm9yTWFuYWdlbWVudERlY2lzaW9uRm9yRGV2
aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlRGV2aWNl
V2FpdGluZ0Zvck1hbmFnZW1lbnREZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1l
cGFkUHJvdmlkZXI6Om5ld0dhbWVQYWRTZXJ2aWNlUHVibGlzaGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1vdmVkKToKKwogMjAyMC0wNy0xMyAgQW5kcmVz
IEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjog
KHIyNTc5MTU/KSBbIE1hYyBdIGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLW1lbW9y
eS1tYW5hZ2VtZW50Lmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4
IGNiYTkxNGUxZTM4ZC4uY2I0YTJlZDQxMzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAyMC0wNy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzb2x2ZSByYWNlIGJldHdlZW4gSU9ISURNYW5hZ2VyIGFuZCBHYW1lQ29udHJv
bGxlciBmcmFtZXdvcmsuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTU1NDQ5MD4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyNDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvbWFjL0lPS2l0
U1BJTWFjLmg6CisKIDIwMjAtMDctMTIgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBCdWlsZGluZyBDRk5ldHdvcmtTUEkgd2l0aCB0aGUgbWFjT1MgQmlnIFN1ciBwdWJs
aWMgU0RLIGZhaWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
SU9LaXRTUElNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQSU1h
Yy5oCmluZGV4IGQyMTdmMjhhNDdhMy4uNTM2M2Y3MzgyMDliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaApAQCAtMzMsMTEgKzMzLDEzIEBACiAjZWxz
ZQogCiBXVEZfRVhURVJOX0NfQkVHSU4KK3R5cGVkZWYgdm9pZCAoXklPSElEU2VydmljZUNsaWVu
dEJsb2NrKSh2b2lkICosIHZvaWQgKiwgSU9ISURTZXJ2aWNlQ2xpZW50UmVmKTsKIHR5cGVkZWYg
c3RydWN0IENGX0JSSURHRURfVFlQRShpZCkgX19JT0hJRFNlcnZpY2VDbGllbnQgKiBJT0hJRFNl
cnZpY2VDbGllbnRSZWY7CiB0eXBlZGVmIHN0cnVjdCBDRl9CUklER0VEX1RZUEUoaWQpIF9fSU9I
SURFdmVudFN5c3RlbUNsaWVudCAqIElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWY7CiBJT0hJREV2
ZW50U3lzdGVtQ2xpZW50UmVmIElPSElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUoQ0ZBbGxvY2F0
b3JSZWYpOwogdm9pZCBJT0hJREV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0Y2hpbmcoSU9ISURFdmVu
dFN5c3RlbUNsaWVudFJlZiwgQ0ZEaWN0aW9uYXJ5UmVmKTsKIElPSElEU2VydmljZUNsaWVudFJl
ZiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VGb3JSZWdpc3RyeUlEKElPSElERXZl
bnRTeXN0ZW1DbGllbnRSZWYsIHVpbnQ2NF90IHJlZ2lzdHJ5SUQpOwordm9pZCBJT0hJREV2ZW50
U3lzdGVtQ2xpZW50UmVnaXN0ZXJEZXZpY2VNYXRjaGluZ0Jsb2NrKElPSElERXZlbnRTeXN0ZW1D
bGllbnRSZWYsIElPSElEU2VydmljZUNsaWVudEJsb2NrLCB2b2lkICosIHZvaWQgKik7CiBXVEZf
RVhURVJOX0NfRU5ECiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJv
dmlkZXIuaAppbmRleCBmYjQ0MzhhZTI2ODguLjg2MzhhZWMxY2UwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVy
LmgKQEAgLTMxLDkgKzMxLDExIEBACiAjaW5jbHVkZSAiSElER2FtZXBhZC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElETWFuYWdlci5oPgorI2luY2x1ZGUg
PHBhbC9zcGkvbWFjL0lPS2l0U1BJTWFjLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDggKzUz
LDEyIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdJ
bnB1dCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nSW5wdXQoKTsK
LSAgICAKLSAgICB2b2lkIGRldmljZUFkZGVkKElPSElERGV2aWNlUmVmKTsKKworICAgIGVudW0g
Y2xhc3MgQWxsb3dNYW5hZ2VtZW50RGVjaXNpb25EZWxheSA6IGJvb2wgeworICAgICAgICBZZXMs
CisgICAgICAgIE5vCisgICAgfTsKKyAgICB2b2lkIGRldmljZUFkZGVkKElPSElERGV2aWNlUmVm
LCBBbGxvd01hbmFnZW1lbnREZWNpc2lvbkRlbGF5KTsKICAgICB2b2lkIGRldmljZVJlbW92ZWQo
SU9ISUREZXZpY2VSZWYpOwogICAgIHZvaWQgdmFsdWVzQ2hhbmdlZChJT0hJRFZhbHVlUmVmKTsK
IApAQCAtNzMsNyArNzksNiBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFBsYXRmb3JtR2FtZXBh
ZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAgICBIYXNoTWFwPElPSElERGV2aWNlUmVmLCBzdGQ6OnVu
aXF1ZV9wdHI8SElER2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKLSAgICBIYXNoU2V0PElPSElERGV2
aWNlUmVmPiBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzOwogCiAgICAgUmV0YWluUHRy
PElPSElETWFuYWdlclJlZj4gbV9tYW5hZ2VyOwogCkBAIC04Miw2ICs4NywxNyBAQCBwcml2YXRl
OgogCiAgICAgVGltZXIgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lcjsKICAgICBUaW1l
ciBtX2lucHV0Tm90aWZpY2F0aW9uVGltZXI7CisKKyNpZiBIQVZFKE1VTFRJR0FNRVBBRFBST1ZJ
REVSX1NVUFBPUlQpICYmICFIQVZFKEdDQ09OVFJPTExFUl9ISURfREVWSUNFX0NIRUNLKQorICAg
IHZvaWQgd2FpdEZvck1hbmFnZW1lbnREZWNpc2lvbkZvckRldmljZShJT0hJRERldmljZVJlZik7
CisgICAgYm9vbCByZW1vdmVEZXZpY2VXYWl0aW5nRm9yTWFuYWdlbWVudERlY2lzaW9uKElPSElE
RGV2aWNlUmVmKTsKKyAgICB2b2lkIG5ld0dhbWVQYWRTZXJ2aWNlUHVibGlzaGVkKCk7CisKKyAg
ICBIYXNoU2V0PElPSElERGV2aWNlUmVmPiBtX2RldmljZXNXYWl0aW5nTWFuYWdlbWVudERlY2lz
aW9uOworICAgIEhhc2hTZXQ8SU9ISUREZXZpY2VSZWY+IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2Vk
R2FtZXBhZHM7CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9kZWxheU1hbmFnZW1lbnREZWNpc2lv
blF1ZXVlOworICAgIFJldGFpblB0cjxJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmPiBtX2V2ZW50
U3lzdGVtQ2xpZW50OworI2VuZGlmIC8vIEhBVkUoTVVMVElHQU1FUEFEUFJPVklERVJfU1VQUE9S
VCkgJiYgIUhBVkUoR0NDT05UUk9MTEVSX0hJRF9ERVZJQ0VfQ0hFQ0spCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIubW0KaW5kZXggZGE1MjFkNjNjZGI1Li40NzM5
NTlmNzM0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIubW0KQEAgLTM0LDYgKzM0LDEwIEBACiAjaW1wb3J0
IDxwYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKKyNpZiBIQVZFKEdDQ09OVFJPTExFUl9ISURfREVWSUNFX0NIRUNLKQorI2ltcG9ydCA8
R2FtZUNvbnRyb2xsZXIvR0NDb250cm9sbGVyLmg+CisjZW5kaWYKKwogI2ltcG9ydCAiR2FtZUNv
bnRyb2xsZXJTb2Z0TGluay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw3ICs2Miw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkZXZpY2VNYXRjaGluZ0RpY3Rp
b25hcnkodWludDMyX3QgdXNhZ2VQYWdlLCB1CiBzdGF0aWMgdm9pZCBkZXZpY2VBZGRlZENhbGxi
YWNrKHZvaWQqIGNvbnRleHQsIElPUmV0dXJuLCB2b2lkKiwgSU9ISUREZXZpY2VSZWYgZGV2aWNl
KQogewogICAgIEhJREdhbWVwYWRQcm92aWRlciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxISURH
YW1lcGFkUHJvdmlkZXIqPihjb250ZXh0KTsKLSAgICBsaXN0ZW5lci0+ZGV2aWNlQWRkZWQoZGV2
aWNlKTsKKyAgICBsaXN0ZW5lci0+ZGV2aWNlQWRkZWQoZGV2aWNlLCBISURHYW1lcGFkUHJvdmlk
ZXI6OkFsbG93TWFuYWdlbWVudERlY2lzaW9uRGVsYXk6Olllcyk7CiB9CiAKIHN0YXRpYyB2b2lk
IGRldmljZVJlbW92ZWRDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBJT1JldHVybiwgdm9pZCosIElP
SElERGV2aWNlUmVmIGRldmljZSkKQEAgLTE4MCw2MSArMTg0LDE2NSBAQCB2b2lkIEhJREdhbWVw
YWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQm
IGNsaWVudCkKIH0KIAogI2lmIEhBVkUoTVVMVElHQU1FUEFEUFJPVklERVJfU1VQUE9SVCkKLXN0
YXRpYyBib29sIGdhbWVDb250cm9sbGVyRnJhbWV3b3JrV2lsbEhhbmRsZUhJRERldmljZShJT0hJ
RERldmljZVJlZiBkZXZpY2UpCisKK2VudW0gY2xhc3MgR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtI
YW5kbGVzRGV2aWNlIDogdWludDhfdCB7CisgICAgWWVzLAorICAgIE5vLAorICAgIE1heWJlLAor
fTsKKworc3RhdGljIEdhbWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZSBnYW1lQ29u
dHJvbGxlckZyYW1ld29ya1dpbGxIYW5kbGVISUREZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNl
KQogewogICAgIGlmICghaXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0F2YWlsYWJsZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBHYW1lQ29udHJvbGxlckZyYW1ld29y
a0hhbmRsZXNEZXZpY2U6Ok5vOworCisjaWYgSEFWRShHQ0NPTlRST0xMRVJfSElEX0RFVklDRV9D
SEVDSykKKyAgICByZXR1cm4gW2dldEdDQ29udHJvbGxlckNsYXNzKCkgc3VwcG9ydHNISUREZXZp
Y2U6ZGV2aWNlXSA/IEdhbWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6WWVzIDog
R2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpObzsKKyNlbmRpZgogCiAgICAg
YXV0byBkZXZpY2VTZXJ2aWNlID0gSU9ISUREZXZpY2VHZXRTZXJ2aWNlKGRldmljZSk7CiAgICAg
aWYgKCFkZXZpY2VTZXJ2aWNlKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6Ok1heWJlOwogCiAgICAgLy8g
Q2hlY2sgdGhlIHNlcnZpY2UgZGlyZWN0bHkgYmFja2luZyB0aGlzIGRldmljZQogICAgIHVpbnQ2
NF90IHJlZ2lzdHJ5SUQ7CiAgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldFJlZ2lzdHJ5RW50cnlJ
RChkZXZpY2VTZXJ2aWNlLCAmcmVnaXN0cnlJRCkgIT0gS0VSTl9TVUNDRVNTKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRs
ZXNEZXZpY2U6Ok1heWJlOwogCiAgICAgYXV0byBldmVudFN5c3RlbUNsaWVudCA9IGFkb3B0Q0Yo
SU9ISURFdmVudFN5c3RlbUNsaWVudENyZWF0ZShudWxscHRyKSk7CiAgICAgSU9ISURFdmVudFN5
c3RlbUNsaWVudFNldE1hdGNoaW5nKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCBudWxscHRyKTsK
ICAgICBhdXRvIHNlcnZpY2VDbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRD
b3B5U2VydmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5
SUQpKTsKLSAgICBpZiAoc2VydmljZUNsaWVudCkgewotICAgICAgICBpZiAoQ29udHJvbGxlckNs
YXNzRm9yU2VydmljZShzZXJ2aWNlQ2xpZW50LmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KKyAgICBpZiAoc2VydmljZUNsaWVudCAmJiBDb250cm9sbGVyQ2xhc3NGb3JT
ZXJ2aWNlKHNlcnZpY2VDbGllbnQuZ2V0KCkpKQorICAgICAgICByZXR1cm4gR2FtZUNvbnRyb2xs
ZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpZZXM7CiAKICAgICAvLyBPdGhlcndpc2UsIGNoZWNr
IGl0cyBncmFuZGNoaWxkIHNlcnZpY2UKICAgICBpb19yZWdpc3RyeV9lbnRyeV90IGNoaWxkOwog
ICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRDaGlsZEVudHJ5KGRldmljZVNlcnZpY2UsIGtJT1Nl
cnZpY2VQbGFuZSwgJmNoaWxkKSAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIEdhbWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6
TWF5YmU7CiAgICAgaWYgKCFjaGlsZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpNYXliZTsKIAogICAg
IGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRDaGlsZEVudHJ5KGNoaWxkLCBrSU9TZXJ2aWNlUGxhbmUs
ICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6Ok1heWJlOwogICAg
IGlmICghY2hpbGQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEdhbWVD
b250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6TWF5YmU7CiAKICAgICBpZiAoSU9SZWdp
c3RyeUVudHJ5R2V0UmVnaXN0cnlFbnRyeUlEKGNoaWxkLCAmcmVnaXN0cnlJRCkgIT0gS0VSTl9T
VUNDRVNTKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBHYW1lQ29udHJv
bGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6Ok1heWJlOwogCiAgICAgc2VydmljZUNsaWVudCA9
IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJRChl
dmVudFN5c3RlbUNsaWVudC5nZXQoKSwgcmVnaXN0cnlJRCkpOwogICAgIGlmICghc2VydmljZUNs
aWVudCkKKyAgICAgICAgcmV0dXJuIEdhbWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0Rldmlj
ZTo6TWF5YmU7CisKKyAgICByZXR1cm4gQ29udHJvbGxlckNsYXNzRm9yU2VydmljZShzZXJ2aWNl
Q2xpZW50LmdldCgpKSA/IEdhbWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6WWVz
IDogR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpObzsKK30KKworI2lmICFI
QVZFKEdDQ09OVFJPTExFUl9ISURfREVWSUNFX0NIRUNLKQorCitzdGF0aWMgY29uc3QgU2Vjb25k
cyBtYW5hZ2VtZW50RGVjaXNpb25EZWxheSB7IDEwMDBfbXMgfTsKKwordm9pZCBISURHYW1lcGFk
UHJvdmlkZXI6OndhaXRGb3JNYW5hZ2VtZW50RGVjaXNpb25Gb3JEZXZpY2UoSU9ISUREZXZpY2VS
ZWYgZGV2aWNlKQoreworICAgIExPRyhHYW1lcGFkLCAiVW5hYmxlIHRvIGRldGVybWluZSBpZiBH
YW1lQ29udHJvbGxlciBmcmFtZXdvcmsgd2lsbCBoYW5kbGUgbmV3bHkgYXR0YWNoZWQgZGV2aWNl
ICVwIC0gRGVsYXlpbmcgbWFuYWdlbWVudCBkZWNpc2lvbiIsIGRldmljZSk7CisgICAgbV9kZXZp
Y2VzV2FpdGluZ01hbmFnZW1lbnREZWNpc2lvbi5hZGQoZGV2aWNlKTsKKworICAgIGlmICghbV9k
ZWxheU1hbmFnZW1lbnREZWNpc2lvblF1ZXVlKQorICAgICAgICBtX2RlbGF5TWFuYWdlbWVudERl
Y2lzaW9uUXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5HYW1lcGFk
TWFuYWdlbWVudERlY2lzaW9uIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6
UU9TOjpVdGlsaXR5KTsKKworICAgIGF1dG8gZGVsYXllZERldmljZSA9IFJldGFpblB0cjxJT0hJ
RERldmljZVJlZj4oZGV2aWNlKTsKKyAgICBtX2RlbGF5TWFuYWdlbWVudERlY2lzaW9uUXVldWUt
PmRpc3BhdGNoQWZ0ZXIobWFuYWdlbWVudERlY2lzaW9uRGVsYXksIFt0aGlzLCBkZWxheWVkRGV2
aWNlID0gV1RGTW92ZShkZWxheWVkRGV2aWNlKV0geworICAgICAgICAvLyBJZiB0aGlzIGRldmlj
ZSB3YXMgc3RpbGwgd2FpdGluZyBmb3IgaXRzIG1hbmFnZW1lbnQgZGVjaXNpb24sIHRoZW4gdGhl
IEhJRCBwcm92aWRlciB3aWxsIGhhbmRsZSBpdC4KKyAgICAgICAgaWYgKHJlbW92ZURldmljZVdh
aXRpbmdGb3JNYW5hZ2VtZW50RGVjaXNpb24oZGVsYXllZERldmljZS5nZXQoKSkpCisgICAgICAg
ICAgICBkZXZpY2VBZGRlZChkZWxheWVkRGV2aWNlLmdldCgpLCBBbGxvd01hbmFnZW1lbnREZWNp
c2lvbkRlbGF5OjpObyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIExPRyhHYW1lcGFkLCAi
TWFuYWdlbWVudCBkZWNpc2lvbiBkZWxheSBmb3IgZGV2aWNlICVwIGhhcyBleHBpcmVkLCBidXQg
ZGV2aWNlIGhhcyBhbHJlYWR5IGJlZW4gaGFuZGxlZCIsIGRlbGF5ZWREZXZpY2UuZ2V0KCkpOwor
ICAgIH0pOworCisgICAgaWYgKG1fZGV2aWNlc1dhaXRpbmdNYW5hZ2VtZW50RGVjaXNpb24uc2l6
ZSgpID4gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ldmVudFN5c3RlbUNsaWVudCA9IGFk
b3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENyZWF0ZVdpdGhUeXBlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtJT0hJREV2ZW50U3lzdGVtQ2xpZW50VHlwZU1vbml0b3IsIDApKTsKKworICAgIE5T
TXV0YWJsZUFycmF5ICptYXRjaGluZ0F0dHJpYnV0ZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXld
OworICAgIFttYXRjaGluZ0F0dHJpYnV0ZXMgYWRkT2JqZWN0OkB7KGlkKUNGU1RSKGtJT0hJRERl
dmljZVVzYWdlUGFnZUtleSkgOiBAKGtISURQYWdlX0dlbmVyaWNEZXNrdG9wKSwgKGlkKUNGU1RS
KGtJT0hJRERldmljZVVzYWdlS2V5KSA6IEAoa0hJRFVzYWdlX0dEX0dhbWVQYWQpfV07CisgICAg
W21hdGNoaW5nQXR0cmlidXRlcyBhZGRPYmplY3Q6QHsoaWQpQ0ZTVFIoa0lPSElERGV2aWNlVXNh
Z2VQYWdlS2V5KSA6IEAoa0hJRFBhZ2VfR2VuZXJpY0Rlc2t0b3ApLCAoaWQpQ0ZTVFIoa0lPSElE
RGV2aWNlVXNhZ2VLZXkpIDogQChrSElEVXNhZ2VfR0RfSm95c3RpY2spfV07CisKKyAgICBJT0hJ
REV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0Y2hpbmdNdWx0aXBsZShtX2V2ZW50U3lzdGVtQ2xpZW50
LmdldCgpLCAoX19icmlkZ2UgQ0ZBcnJheVJlZikobWF0Y2hpbmdBdHRyaWJ1dGVzKSk7CisgICAg
SU9ISURFdmVudFN5c3RlbUNsaWVudFNjaGVkdWxlV2l0aERpc3BhdGNoUXVldWUobV9ldmVudFN5
c3RlbUNsaWVudC5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAgSU9ISURF
dmVudFN5c3RlbUNsaWVudFJlZ2lzdGVyRGV2aWNlTWF0Y2hpbmdCbG9jayhtX2V2ZW50U3lzdGVt
Q2xpZW50LmdldCgpLCBeKHZvaWQgKiwgdm9pZCAqLCBJT0hJRFNlcnZpY2VDbGllbnRSZWYpIHsK
KyAgICAgICAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgY2FyZSBhYm91dCB0aGUgYWN0dWFsIHB1Ymxp
c2hlZCBzZXJ2aWNlLgorICAgICAgICAvLyBBbnkgbmV3IEdhbWVQYWQgc2VydmljZSBpcyB3b3J0
aCByZS1jaGVja2luZyBldmVyeSBwZW5kaW5nIElPSElERGV2aWNlIGFnYWluc3QgR2FtZUNvbnRy
b2xsZXIgZnJhbWV3b3JrLgorICAgICAgICBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigp
Lm5ld0dhbWVQYWRTZXJ2aWNlUHVibGlzaGVkKCk7CisgICAgfSwgbnVsbHB0ciwgbnVsbHB0cik7
Cit9CisKK2Jvb2wgSElER2FtZXBhZFByb3ZpZGVyOjpyZW1vdmVEZXZpY2VXYWl0aW5nRm9yTWFu
YWdlbWVudERlY2lzaW9uKElPSElERGV2aWNlUmVmIGRldmljZSkKK3sKKyAgICBpZiAoIW1fZGV2
aWNlc1dhaXRpbmdNYW5hZ2VtZW50RGVjaXNpb24ucmVtb3ZlKGRldmljZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKHNlcnZp
Y2VDbGllbnQuZ2V0KCkpOworICAgIGlmIChtX2RldmljZXNXYWl0aW5nTWFuYWdlbWVudERlY2lz
aW9uLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBUaGF0IHdhcyB0aGUgbGFzdCBkZXZpY2UsIHNv
IHdlIGNhbiBzdG9wIG1vbml0b3JpbmcgZm9yIElPSElEU2VydmljZUNsaWVudHMKKyAgICAgICAg
QVNTRVJUKG1fZXZlbnRTeXN0ZW1DbGllbnQpOworICAgICAgICBJT0hJREV2ZW50U3lzdGVtQ2xp
ZW50VW5yZWdpc3RlckRldmljZU1hdGNoaW5nQmxvY2sobV9ldmVudFN5c3RlbUNsaWVudC5nZXQo
KSk7CisgICAgICAgIG1fZXZlbnRTeXN0ZW1DbGllbnQgPSBudWxscHRyOworICAgICAgICBtX2Rl
bGF5TWFuYWdlbWVudERlY2lzaW9uUXVldWUgPSBudWxscHRyOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOwogfQotI2VuZGlmIC8vIEhBVkUoTVVMVElHQU1FUEFEUFJPVklERVJfU1VQUE9SVCkK
IAordm9pZCBISURHYW1lcGFkUHJvdmlkZXI6Om5ld0dhbWVQYWRTZXJ2aWNlUHVibGlzaGVkKCkK
K3sKKyAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlcjo6bmV3R2FtZVBhZFNlcnZp
Y2VQdWJsaXNoZWQoKSIpOworICAgIElPSElERGV2aWNlUmVmIG1hdGNoZWREZXZpY2UgPSBudWxs
cHRyOworICAgIGZvciAoYXV0byBkZXZpY2UgOiBtX2RldmljZXNXYWl0aW5nTWFuYWdlbWVudERl
Y2lzaW9uKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZ2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtX
aWxsSGFuZGxlSElERGV2aWNlKGRldmljZSk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gR2FtZUNv
bnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpZZXMgfHwgcmVzdWx0ID09IEdhbWVDb250
cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6Tm8pIHsKKyAgICAgICAgICAgIG1hdGNoZWRE
ZXZpY2UgPSBkZXZpY2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChtYXRjaGVkRGV2aWNlKSB7CisgICAgICAgIExPRyhHYW1lcGFkLCAiRGV2aWNlICVw
IHBlbmRpbmcgbWFuYWdlbWVudCBkZWNpc2lvbiBjYW4gbm93IGJlIG1hbmFnZWQiLCBtYXRjaGVk
RGV2aWNlKTsKKyAgICAgICAgcmVtb3ZlRGV2aWNlV2FpdGluZ0Zvck1hbmFnZW1lbnREZWNpc2lv
bihtYXRjaGVkRGV2aWNlKTsKKyAgICAgICAgZGV2aWNlQWRkZWQobWF0Y2hlZERldmljZSwgQWxs
b3dNYW5hZ2VtZW50RGVjaXNpb25EZWxheTo6Tm8pOworICAgIH0KK30KIAorI2VuZGlmIC8vICFI
QVZFKEdDQ09OVFJPTExFUl9ISURfREVWSUNFX0NIRUNLKQorI2VuZGlmIC8vIEhBVkUoTVVMVElH
QU1FUEFEUFJPVklERVJfU1VQUE9SVCkKIAotdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmlj
ZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKK3ZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpk
ZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UsIEFsbG93TWFuYWdlbWVudERlY2lzaW9u
RGVsYXkgYWxsb3dNYW5hZ2VtZW50RGVjaXNpb25EZWxheSkKIHsKICNpZiBIQVZFKE1VTFRJR0FN
RVBBRFBST1ZJREVSX1NVUFBPUlQpCi0gICAgaWYgKG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJh
bWV3b3JrRGV2aWNlcyAmJiBnYW1lQ29udHJvbGxlckZyYW1ld29ya1dpbGxIYW5kbGVISUREZXZp
Y2UoZGV2aWNlKSkgewotICAgICAgICBMT0coR2FtZXBhZCwgIkdhbWVDb250cm9sbGVyIGZyYW1l
d29yayB3aWxsIGhhbmRsZSBhdHRhY2hlZCBkZXZpY2UgJXAgLSBISURHYW1lcGFkUHJvdmlkZXIg
aWdub3JpbmcgaXQiLCBkZXZpY2UpOwotICAgICAgICBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdh
bWVwYWRzLmFkZChkZXZpY2UpOwotICAgICAgICByZXR1cm47CisgICAgaWYgKG1faWdub3Jlc0dh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcykgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGdh
bWVDb250cm9sbGVyRnJhbWV3b3JrV2lsbEhhbmRsZUhJRERldmljZShkZXZpY2UpOworICAgICAg
ICBzd2l0Y2ggKHJlc3VsdCkgeworICAgICAgICBjYXNlIEdhbWVDb250cm9sbGVyRnJhbWV3b3Jr
SGFuZGxlc0RldmljZTo6WWVzOgorICAgICAgICAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJv
bGxlciBmcmFtZXdvcmsgd2lsbCBoYW5kbGUgbmV3bHkgYXR0YWNoZWQgZGV2aWNlICVwIC0gSElE
R2FtZXBhZFByb3ZpZGVyIGlnbm9yaW5nIGl0IiwgZGV2aWNlKTsKKyAgICAgICAgICAgIG1fZ2Ft
ZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHMuYWRkKGRldmljZSk7CisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgY2FzZSBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6
Ok1heWJlOgorICAgICAgICAgICAgaWYgKGFsbG93TWFuYWdlbWVudERlY2lzaW9uRGVsYXkgPT0g
QWxsb3dNYW5hZ2VtZW50RGVjaXNpb25EZWxheTo6Tm8pIHsKKyAgICAgICAgICAgICAgICBMT0co
R2FtZXBhZCwgIlVuYWJsZSB0byBkZXRlcm1pbmUgaWYgR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3Jr
IHdpbGwgaGFuZGxlIGF0dGFjaGVkIGRldmljZSAlcCAtIEhJREdhbWVwYWRQcm92aWRlciB3aWxs
IGhhbmRsZSBpdCIsIGRldmljZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIEdpdmUgSU9ISURTZXJ2aWNlQ2xpZW50IGNhbGxiYWNrcyBh
IGNoYW5jZSB0byBjb25maXJtIHdoZXRoZXIgb3Igbm90CisgICAgICAgICAgICAvLyB0aGlzIGRl
dmljZSB3aWxsIGJlIGhhbmRsZWQgYnkgR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrCisgICAgICAg
ICAgICB3YWl0Rm9yTWFuYWdlbWVudERlY2lzaW9uRm9yRGV2aWNlKGRldmljZSk7CisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRs
ZXNEZXZpY2U6Ok5vOgorICAgICAgICAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlciBm
cmFtZXdvcmsgZG9lcyBub3QgaGFuZGxlIGF0dGFjaGVkIGRldmljZSAlcCAtIEhJREdhbWVwYWRQ
cm92aWRlciB3aWxsIGhhbmRsZSBpdCIsIGRldmljZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFsbG93QXR0YWNobWVudERl
bGF5KTsKICNlbmRpZiAvLyBIQVZFKE1VTFRJR0FNRVBBRFBST1ZJREVSX1NVUFBPUlQpCiAKICAg
ICBBU1NFUlQoIW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CkBAIC0yNzIsMTIgKzM4MCwyMyBA
QCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2
aWNlKQogCiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlUmVtb3ZlZChJT0hJRERldmlj
ZVJlZiBkZXZpY2UpCiB7CisjaWYgSEFWRShNVUxUSUdBTUVQQURQUk9WSURFUl9TVVBQT1JUKQor
ICAgIGJvb2wgd2FzUmVtb3ZlZCA9IHJlbW92ZURldmljZVdhaXRpbmdGb3JNYW5hZ2VtZW50RGVj
aXNpb24oZGV2aWNlKTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+
IHJlbW92ZWRHYW1lcGFkID0gcmVtb3ZlR2FtZXBhZEZvckRldmljZShkZXZpY2UpOwogCiAgICAg
aWYgKCFyZW1vdmVkR2FtZXBhZCkgewogICAgICAgICBhdXRvIHRha2VuID0gbV9nYW1lQ29udHJv
bGxlck1hbmFnZWRHYW1lcGFkcy50YWtlKGRldmljZSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
dGFrZW4sIHRha2VuKTsKLSAgICAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIg
aW5mb3JtZWQgb2YgcmVtb3ZhbCBvZiBkZXZpY2UgJXAsIHdoaWNoIGlzIG1hbmFnZWQgYnkgR2Ft
ZUNvbnRyb2xsZXIgZnJhbWV3b3JrLiBJZ25vcmluZy4iLCBkZXZpY2UpOworCisgICAgICAgIC8v
IElmIHRoaXMgZGV2aWNlIGRpZG4ndCBzaG93IHVwIGluIHRoZSBnYW1lcGFkIG1hcCwgdGhlbiBp
dCB3YXMgZWl0aGVyIG1hbmFnZWQgYnkgR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrCisgICAgICAg
IC8vIG9yIHdlIHdlcmUgc3RpbGwgd2FpdGluZyB0byBkZWNpZGUgd2hpY2ggcHJvdmlkZXIgd291
bGQgbWFuYWdlIGl0LgorICAgICAgICBBU1NFUlQodGFrZW4gfHwgd2FzUmVtb3ZlZCk7CisKKyAg
ICAgICAgaWYgKHRha2VuKQorICAgICAgICAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJv
dmlkZXIgaW5mb3JtZWQgb2YgcmVtb3ZhbCBvZiBkZXZpY2UgJXAsIHdoaWNoIGlzIG1hbmFnZWQg
YnkgR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrLiBJZ25vcmluZy4iLCBkZXZpY2UpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBpbmZv
cm1lZCBvZiByZW1vdmFsIG9mIGRldmljZSAlcCwgd2hpY2ggd2FzIG5vdCB5ZXQgbWFuYWdlZC4g
SWdub3JpbmcuIiwgZGV2aWNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404298</attachid>
            <date>2020-07-14 15:49:48 -0700</date>
            <delta_ts>2020-07-15 10:06:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>19190</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZGYxYmY0NzJkNmVlLi40ZWJmMTBjZjVkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MjAtMDctMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJl
c29sdmUgcmFjZSBiZXR3ZWVuIElPSElETWFuYWdlciBhbmQgR2FtZUNvbnRyb2xsZXIgZnJhbWV3
b3JrLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU1NTQ0OTA+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjAt
MDctMTMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2xlYW4gdXAgU291cmNlUHJvdmlkZXIgYW5kIGFkZCBjYWxsZXIgcmVsYXRpdmUgbG9hZCBzY3Jp
cHQgdG8ganNjLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCBlNDdhNzQ1YzZjZDguLjdjOWRj
ZTEzZGUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTU3OCw2ICs1NzgsMTAgQEAKICNkZWZp
bmUgSEFWRV9HQ0VYVEVOREVER0FNRVBBRF9IT01FX0JVVFRPTiAxCiAjZW5kaWYKIAorI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNzAw
KQorI2RlZmluZSBIQVZFX0dDQ09OVFJPTExFUl9ISURfREVWSUNFX0NIRUNLCisjZW5kaWYKKwog
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxNjAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTQwMDAwKQogI2RlZmluZSBIQVZFX1dFQlAgMQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNGZlMmMzNWU0OTdkLi43NmYwYTUzNzc0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1OSBAQAorMjAyMC0wNy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzb2x2ZSByYWNlIGJldHdlZW4gSU9ISURNYW5hZ2VyIGFuZCBHYW1lQ29udHJv
bGxlciBmcmFtZXdvcmsuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTU1NDQ5MD4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyNDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBhdXRvbWF0ZWQgdGVzdGlu
ZyBhdmFpbGFibGUuCisgICAgICAgIAorICAgICAgICBJT0hJRERldmljZXMgYW5kIElPSElEU2Vy
dmljZXMgYXJlIHR3byBzZXBhcmF0ZSB0aGluZ3MuCisgICAgICAgIAorICAgICAgICBBbiBJT0hJ
RERldmljZSBhbmQgSU9ISURTZXJ2aWNlIG9mdGVuIGhhdmUgYSAxLXRvLTEgY29ycmVsYXRpb24s
IGJ1dCB0aGUgSU9ISUREZXZpY2UgbWlnaHQgYmUKKyAgICAgICAgcHVibGlzaGVkIHRvIHRoZSBh
cHBsaWNhdGlvbiBiZWZvcmUgdGhlIElPSElEU2VydmljZSBpcy4KKyAgICAgICAgCisgICAgICAg
IFdlYktpdCdzIEhJRCBnYW1lcGFkIG1hbmFnZXIgdXNlcyBJT0hJRERldmljZS4KKyAgICAgICAg
R2FtZUNvbnRyb2xlci5mcmFtZXdvcmsgdXNlcyBJT0hJRFNlcnZpY2VzLgorICAgICAgICAKKyAg
ICAgICAgV2hlbiB3ZSBhZGRlZCB0aGUgYWJpbGl0eSBmb3IgV2ViS2l0IHRvIHN3aXRjaCBiZXR3
ZWVuIEhJRCBhbmQgR0NGLCB0aGUgZm9sbG93aW5nIGhhcHBlbnM6CisKKyAgICAgICAgLSBTb21l
dGltZXMgdGhlIElPSElEU2VydmljZUNsaWVudCB3aWxsIGdldCBwdWJsaXNoZWQgZmlyc3QuIFRo
ZW4gd2hlbiB0aGUgSU9ISUREZXZpY2UgaXMgcHVibGlzaGVkLAorICAgICAgICAgIGFuZCBXZWJL
aXQgd2FzIGRlY2lkaW5nIHdoaWNoIGdhbWVwYWQgbWFuYWdlciB0byB1c2UsIHRoZSBkZXZpY2Un
cyBzZXJ2aWNlcyBhcmUgYXZhaWxhYmxlLAorICAgICAgICAgIGFuZCB3ZSBnZXQgdGhlIHJpZ2h0
IGFuc3dlci4KKyAgICAgICAgCisgICAgICAgIC0gU29tZXRpbWVzLCB0aGUgSU9ISUREZXZpY2Ug
aXMgcHVibGlzaGVkIGZpcnN0LiBUaGVuIHdoZW4gV2ViS2l0IGlzIGRlY2lkaW5nIHdoaWNoIGdh
bWVwYWQgCisgICAgICAgICAgbWFuYWdlciB0byB1c2UsIGl0IGNhbid0IGNoZWNrIHRoZSBJT0hJ
RFNlcnZpY2VDbGllbnQgYWdhaW5zdCBHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsuCisgICAgICAg
ICAgU28gd2UgaGF2ZSB0aGUgSElEIG1hbmFnZXIgaGFuZGxlIHRoZSBkZXZpY2UuLi4gYnV0IHRo
ZW4gR0NGIGNvbWVzIGFsb25nIGEgc3BsaXQgc2Vjb25kIGxhdGVyCisgICAgICAgICAgYW5kIEFM
U08gaGFuZGxlcyBpdC4KKyAgICAgICAgICAKKyAgICAgICAgVGhlICJkZXZpY2UgYmVmb3JlIHNl
cnZpY2UiIHNjZW5hcmlvIHJlc3VsdHMgaW4gdGhlIHNhbWUgZ2FtZXBhZCBzaG93aW5nIHVwIHR3
aWNlLgorICAgICAgICAKKyAgICAgICAgVG8gcmVzb2x2ZSB0aGlzLCB3ZSBkbyB0aGUgZm9sbG93
aW5nOgorICAgICAgICAKKyAgICAgICAgMSAtIElmIGFuIElPSElERGV2aWNlIGF0dGFjaGVzIGFu
ZCBpdHMgc2VydmljZXMgYXJlbid0IGF2YWlsYWJsZSB5ZXQsIHdlIGRlbGF5IG1hbmFnaW5nIGl0
LgorICAgICAgICAyIC0gV2hlbiB3ZSBkZWxheSBtYW5hZ2luZyBhIGRldmljZSwgd2Ugc3RhcnQg
bGlzdGVuaW5nIGZvciBJT0hJRFNlcnZpY2VDbGllbnQgYWRkaXRpb25zLgorICAgICAgICAzIC0g
RWFjaCB0aW1lIGEgR2FtZVBhZCBzZXJ2aWNlIGlzIHB1Ymxpc2hlZCwgd2Ugb25jZSBhZ2FpbiB0
cnkgdG8gZGV0ZXJtaW5lIGlmIEdDRiB3aWxsIGhhbmRsZQorICAgICAgICAgICAgdGhlIGRldmlj
ZS4KKyAgICAgICAgNCAtIEFzIGxvbmcgYXMgdGhlIGFuc3dlciBpcyAiTWF5YmUiIC0gaW5zdGVh
ZCBvZiAiWWVzIiBvciAiTm8iIC0gd2UgcmVmdXNlIHRvIG1hbmFnZSB0aGUgZGV2aWNlLgorICAg
ICAgICA1IC0gQWZ0ZXIgYSBicmllZiBkZWxheSAoY3VycmVudGx5IDEgc2Vjb25kKSwgd2Ugd2ls
bCBnaXZlIHVwIHdhaXRpbmcgZm9yIHB1Ymxpc2hlZCBzZXJ2aWNlcworICAgICAgICAgICAgYW5k
IG1hbmFnZSB0aGUgZGV2aWNlIHdpdGggdGhlIEhJRCBnYW1lcGFkIHByb3ZpZGVyLgorICAgICAg
ICAgICAgCisgICAgICAgIEluIG15IHRlc3RpbmcsIHdoZW4gdGhlIHNlcnZpY2UgcHVibGlzaGVz
IGFmdGVyIHRoZSBkZXZpY2VzLCBpdCdzIGFsd2F5cyB3aWhpbiA1MG1zLCBzbyB0aGUgMXMKKyAg
ICAgICAgZGVsYXkgc2VlbXMgc3VmZmljaWVudC4KKyAgICAgICAgCisgICAgICAgIE5PVEU6IFRo
ZSBhYm92ZSBhbGwgaG9sZHMgdHJ1ZSB3aXRoIHRoZSAiTXVsdGlHYW1lcGFkUHJvdmlkZXIiIG9u
IENhdGFsaW5hLgorICAgICAgICBPbiBCaWcgU3VyLCB0aGVyZSdzIGJyYW5kIG5ldyBHYW1lQ29u
dHJvbGxlciBmcmFtZXdvcmsgQVBJIHRoYXQgbWFrZXMgdGhpcyBtdWNoIGVhc2llci4g8J+RjQor
CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6ZGV2aWNlQWRkZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpn
YW1lQ29udHJvbGxlckZyYW1ld29ya1dpbGxIYW5kbGVISUREZXZpY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjp3YWl0Rm9yTWFuYWdlbWVudERlY2lzaW9uRm9yRGV2
aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlRGV2aWNl
V2FpdGluZ0Zvck1hbmFnZW1lbnREZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1l
cGFkUHJvdmlkZXI6Om5ld0dhbWVQYWRTZXJ2aWNlUHVibGlzaGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1vdmVkKToKKwogMjAyMC0wNy0xMyAgQW5kcmVz
IEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjog
KHIyNTc5MTU/KSBbIE1hYyBdIGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLW1lbW9y
eS1tYW5hZ2VtZW50Lmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4
IGNiYTkxNGUxZTM4ZC4uY2I0YTJlZDQxMzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAyMC0wNy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzb2x2ZSByYWNlIGJldHdlZW4gSU9ISURNYW5hZ2VyIGFuZCBHYW1lQ29udHJv
bGxlciBmcmFtZXdvcmsuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTU1NDQ5MD4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyNDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvbWFjL0lPS2l0
U1BJTWFjLmg6CisKIDIwMjAtMDctMTIgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBCdWlsZGluZyBDRk5ldHdvcmtTUEkgd2l0aCB0aGUgbWFjT1MgQmlnIFN1ciBwdWJs
aWMgU0RLIGZhaWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
SU9LaXRTUElNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQSU1h
Yy5oCmluZGV4IGQyMTdmMjhhNDdhMy4uMWFkYjk3YjY3YzFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaApAQCAtMzUsOSArMzUsMTIgQEAKIFdURl9F
WFRFUk5fQ19CRUdJTgogdHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBfX0lPSElE
U2VydmljZUNsaWVudCAqIElPSElEU2VydmljZUNsaWVudFJlZjsKIHR5cGVkZWYgc3RydWN0IENG
X0JSSURHRURfVFlQRShpZCkgX19JT0hJREV2ZW50U3lzdGVtQ2xpZW50ICogSU9ISURFdmVudFN5
c3RlbUNsaWVudFJlZjsKK3R5cGVkZWYgdm9pZCAoXklPSElEU2VydmljZUNsaWVudEJsb2NrKSh2
b2lkICosIHZvaWQgKiwgSU9ISURTZXJ2aWNlQ2xpZW50UmVmKTsKKwogSU9ISURFdmVudFN5c3Rl
bUNsaWVudFJlZiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKENGQWxsb2NhdG9yUmVmKTsK
IHZvaWQgSU9ISURFdmVudFN5c3RlbUNsaWVudFNldE1hdGNoaW5nKElPSElERXZlbnRTeXN0ZW1D
bGllbnRSZWYsIENGRGljdGlvbmFyeVJlZik7CiBJT0hJRFNlcnZpY2VDbGllbnRSZWYgSU9ISURF
dmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJRChJT0hJREV2ZW50U3lzdGVt
Q2xpZW50UmVmLCB1aW50NjRfdCByZWdpc3RyeUlEKTsKK3ZvaWQgSU9ISURFdmVudFN5c3RlbUNs
aWVudFJlZ2lzdGVyRGV2aWNlTWF0Y2hpbmdCbG9jayhJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVm
LCBJT0hJRFNlcnZpY2VDbGllbnRCbG9jaywgdm9pZCAqLCB2b2lkICopOwogV1RGX0VYVEVSTl9D
X0VORAogCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgK
aW5kZXggZmI0NDM4YWUyNjg4Li44NjM4YWVjMWNlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCkBAIC0z
MSw5ICszMSwxMSBAQAogI2luY2x1ZGUgIkhJREdhbWVwYWQuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJRE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxwYWwvc3Bp
L21hYy9JT0tpdFNQSU1hYy5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9X
b3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSw4ICs1MywxMiBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BNb25pdG9yaW5nSW5wdXQoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0TW9uaXRvcmluZ0lucHV0KCk7Ci0gICAgCi0g
ICAgdm9pZCBkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZik7CisKKyAgICBlbnVtIGNsYXNzIEFs
bG93TWFuYWdlbWVudERlY2lzaW9uRGVsYXkgOiBib29sIHsKKyAgICAgICAgWWVzLAorICAgICAg
ICBObworICAgIH07CisgICAgdm9pZCBkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiwgQWxsb3dN
YW5hZ2VtZW50RGVjaXNpb25EZWxheSk7CiAgICAgdm9pZCBkZXZpY2VSZW1vdmVkKElPSElERGV2
aWNlUmVmKTsKICAgICB2b2lkIHZhbHVlc0NoYW5nZWQoSU9ISURWYWx1ZVJlZik7CiAKQEAgLTcz
LDcgKzc5LDYgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dh
bWVwYWRWZWN0b3I7CiAgICAgSGFzaE1hcDxJT0hJRERldmljZVJlZiwgc3RkOjp1bmlxdWVfcHRy
PEhJREdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7Ci0gICAgSGFzaFNldDxJT0hJRERldmljZVJlZj4g
bV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFkczsKIAogICAgIFJldGFpblB0cjxJT0hJRE1h
bmFnZXJSZWY+IG1fbWFuYWdlcjsKIApAQCAtODIsNiArODcsMTcgQEAgcHJpdmF0ZToKIAogICAg
IFRpbWVyIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkVGltZXI7CiAgICAgVGltZXIgbV9pbnB1
dE5vdGlmaWNhdGlvblRpbWVyOworCisjaWYgSEFWRShNVUxUSUdBTUVQQURQUk9WSURFUl9TVVBQ
T1JUKSAmJiAhSEFWRShHQ0NPTlRST0xMRVJfSElEX0RFVklDRV9DSEVDSykKKyAgICB2b2lkIHdh
aXRGb3JNYW5hZ2VtZW50RGVjaXNpb25Gb3JEZXZpY2UoSU9ISUREZXZpY2VSZWYpOworICAgIGJv
b2wgcmVtb3ZlRGV2aWNlV2FpdGluZ0Zvck1hbmFnZW1lbnREZWNpc2lvbihJT0hJRERldmljZVJl
Zik7CisgICAgdm9pZCBuZXdHYW1lUGFkU2VydmljZVB1Ymxpc2hlZCgpOworCisgICAgSGFzaFNl
dDxJT0hJRERldmljZVJlZj4gbV9kZXZpY2VzV2FpdGluZ01hbmFnZW1lbnREZWNpc2lvbjsKKyAg
ICBIYXNoU2V0PElPSElERGV2aWNlUmVmPiBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRz
OworICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fZGVsYXlNYW5hZ2VtZW50RGVjaXNpb25RdWV1ZTsK
KyAgICBSZXRhaW5QdHI8SU9ISURFdmVudFN5c3RlbUNsaWVudFJlZj4gbV9ldmVudFN5c3RlbUNs
aWVudDsKKyNlbmRpZiAvLyBIQVZFKE1VTFRJR0FNRVBBRFBST1ZJREVSX1NVUFBPUlQpICYmICFI
QVZFKEdDQ09OVFJPTExFUl9ISURfREVWSUNFX0NIRUNLKQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
SElER2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9t
YWMvSElER2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IGRhNTIxZDYzY2RiNS4uMTI3MzBlZTczNDE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1l
cGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
SElER2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0zNCw2ICszNCwxMCBAQAogI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvSU9LaXRTUElNYWMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisj
aWYgSEFWRShHQ0NPTlRST0xMRVJfSElEX0RFVklDRV9DSEVDSykKKyNpbXBvcnQgPEdhbWVDb250
cm9sbGVyL0dDQ29udHJvbGxlci5oPgorI2VuZGlmCisKICNpbXBvcnQgIkdhbWVDb250cm9sbGVy
U29mdExpbmsuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsNyArNjIsNyBAQCBzdGF0
aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGV2aWNlTWF0Y2hpbmdEaWN0aW9uYXJ5KHVp
bnQzMl90IHVzYWdlUGFnZSwgdQogc3RhdGljIHZvaWQgZGV2aWNlQWRkZWRDYWxsYmFjayh2b2lk
KiBjb250ZXh0LCBJT1JldHVybiwgdm9pZCosIElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKICAg
ICBISURHYW1lcGFkUHJvdmlkZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SElER2FtZXBhZFBy
b3ZpZGVyKj4oY29udGV4dCk7Ci0gICAgbGlzdGVuZXItPmRldmljZUFkZGVkKGRldmljZSk7Cisg
ICAgbGlzdGVuZXItPmRldmljZUFkZGVkKGRldmljZSwgSElER2FtZXBhZFByb3ZpZGVyOjpBbGxv
d01hbmFnZW1lbnREZWNpc2lvbkRlbGF5OjpZZXMpOwogfQogCiBzdGF0aWMgdm9pZCBkZXZpY2VS
ZW1vdmVkQ2FsbGJhY2sodm9pZCogY29udGV4dCwgSU9SZXR1cm4sIHZvaWQqLCBJT0hJRERldmlj
ZVJlZiBkZXZpY2UpCkBAIC0xODAsNjEgKzE4NCwxNjUgQEAgdm9pZCBISURHYW1lcGFkUHJvdmlk
ZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQp
CiB9CiAKICNpZiBIQVZFKE1VTFRJR0FNRVBBRFBST1ZJREVSX1NVUFBPUlQpCi1zdGF0aWMgYm9v
bCBnYW1lQ29udHJvbGxlckZyYW1ld29ya1dpbGxIYW5kbGVISUREZXZpY2UoSU9ISUREZXZpY2VS
ZWYgZGV2aWNlKQorCitlbnVtIGNsYXNzIEdhbWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0Rl
dmljZSA6IHVpbnQ4X3QgeworICAgIFllcywKKyAgICBObywKKyAgICBNYXliZSwKK307CisKK3N0
YXRpYyBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2UgZ2FtZUNvbnRyb2xsZXJG
cmFtZXdvcmtXaWxsSGFuZGxlSElERGV2aWNlKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKICAg
ICBpZiAoIWlzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtBdmFpbGFibGUoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVz
RGV2aWNlOjpObzsKKworI2lmIEhBVkUoR0NDT05UUk9MTEVSX0hJRF9ERVZJQ0VfQ0hFQ0spCisg
ICAgcmV0dXJuIFtnZXRHQ0NvbnRyb2xsZXJDbGFzcygpIHN1cHBvcnRzSElERGV2aWNlOmRldmlj
ZV0gPyBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6OlllcyA6IEdhbWVDb250
cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6Tm87CisjZW5kaWYKIAogICAgIGF1dG8gZGV2
aWNlU2VydmljZSA9IElPSElERGV2aWNlR2V0U2VydmljZShkZXZpY2UpOwogICAgIGlmICghZGV2
aWNlU2VydmljZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR2FtZUNv
bnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpNYXliZTsKIAogICAgIC8vIENoZWNrIHRo
ZSBzZXJ2aWNlIGRpcmVjdGx5IGJhY2tpbmcgdGhpcyBkZXZpY2UKICAgICB1aW50NjRfdCByZWdp
c3RyeUlEOwogICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVudHJ5SUQoZGV2aWNl
U2VydmljZSwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNl
OjpNYXliZTsKIAogICAgIGF1dG8gZXZlbnRTeXN0ZW1DbGllbnQgPSBhZG9wdENGKElPSElERXZl
bnRTeXN0ZW1DbGllbnRDcmVhdGUobnVsbHB0cikpOwogICAgIElPSElERXZlbnRTeXN0ZW1DbGll
bnRTZXRNYXRjaGluZyhldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgbnVsbHB0cik7CiAgICAgYXV0
byBzZXJ2aWNlQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29weVNlcnZp
Y2VGb3JSZWdpc3RyeUlEKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCByZWdpc3RyeUlEKSk7Ci0g
ICAgaWYgKHNlcnZpY2VDbGllbnQpIHsKLSAgICAgICAgaWYgKENvbnRyb2xsZXJDbGFzc0ZvclNl
cnZpY2Uoc2VydmljZUNsaWVudC5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9CisgICAgaWYgKHNlcnZpY2VDbGllbnQgJiYgQ29udHJvbGxlckNsYXNzRm9yU2VydmljZShz
ZXJ2aWNlQ2xpZW50LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIEdhbWVDb250cm9sbGVyRnJhbWV3
b3JrSGFuZGxlc0RldmljZTo6WWVzOwogCiAgICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBpdHMgZ3Jh
bmRjaGlsZCBzZXJ2aWNlCiAgICAgaW9fcmVnaXN0cnlfZW50cnlfdCBjaGlsZDsKICAgICBpZiAo
SU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShkZXZpY2VTZXJ2aWNlLCBrSU9TZXJ2aWNlUGxh
bmUsICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6Ok1heWJlOwog
ICAgIGlmICghY2hpbGQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEdh
bWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6TWF5YmU7CiAKICAgICBpZiAoSU9S
ZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShjaGlsZCwga0lPU2VydmljZVBsYW5lLCAmY2hpbGQp
ICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
R2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpNYXliZTsKICAgICBpZiAoIWNo
aWxkKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBHYW1lQ29udHJvbGxl
ckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6Ok1heWJlOwogCiAgICAgaWYgKElPUmVnaXN0cnlFbnRy
eUdldFJlZ2lzdHJ5RW50cnlJRChjaGlsZCwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcmtIYW5kbGVzRGV2aWNlOjpNYXliZTsKIAogICAgIHNlcnZpY2VDbGllbnQgPSBhZG9wdENG
KElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2VydmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0
ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5SUQpKTsKICAgICBpZiAoIXNlcnZpY2VDbGllbnQpCisg
ICAgICAgIHJldHVybiBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6Ok1heWJl
OworCisgICAgcmV0dXJuIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5n
ZXQoKSkgPyBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6OlllcyA6IEdhbWVD
b250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6Tm87Cit9CisKKyNpZiAhSEFWRShHQ0NP
TlRST0xMRVJfSElEX0RFVklDRV9DSEVDSykKKworc3RhdGljIGNvbnN0IFNlY29uZHMgbWFuYWdl
bWVudERlY2lzaW9uRGVsYXkgeyAxMDAwX21zIH07CisKK3ZvaWQgSElER2FtZXBhZFByb3ZpZGVy
Ojp3YWl0Rm9yTWFuYWdlbWVudERlY2lzaW9uRm9yRGV2aWNlKElPSElERGV2aWNlUmVmIGRldmlj
ZSkKK3sKKyAgICBMT0coR2FtZXBhZCwgIlVuYWJsZSB0byBkZXRlcm1pbmUgaWYgR2FtZUNvbnRy
b2xsZXIgZnJhbWV3b3JrIHdpbGwgaGFuZGxlIG5ld2x5IGF0dGFjaGVkIGRldmljZSAlcCAtIERl
bGF5aW5nIG1hbmFnZW1lbnQgZGVjaXNpb24iLCBkZXZpY2UpOworICAgIG1fZGV2aWNlc1dhaXRp
bmdNYW5hZ2VtZW50RGVjaXNpb24uYWRkKGRldmljZSk7CisKKyAgICBpZiAoIW1fZGVsYXlNYW5h
Z2VtZW50RGVjaXNpb25RdWV1ZSkKKyAgICAgICAgbV9kZWxheU1hbmFnZW1lbnREZWNpc2lvblF1
ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuR2FtZXBhZE1hbmFnZW1l
bnREZWNpc2lvbiIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRp
bGl0eSk7CisKKyAgICBhdXRvIGRlbGF5ZWREZXZpY2UgPSBSZXRhaW5QdHI8SU9ISUREZXZpY2VS
ZWY+KGRldmljZSk7CisgICAgbV9kZWxheU1hbmFnZW1lbnREZWNpc2lvblF1ZXVlLT5kaXNwYXRj
aEFmdGVyKG1hbmFnZW1lbnREZWNpc2lvbkRlbGF5LCBbdGhpcywgZGVsYXllZERldmljZSA9IFdU
Rk1vdmUoZGVsYXllZERldmljZSldIHsKKyAgICAgICAgLy8gSWYgdGhpcyBkZXZpY2Ugd2FzIHN0
aWxsIHdhaXRpbmcgZm9yIGl0cyBtYW5hZ2VtZW50IGRlY2lzaW9uLCB0aGVuIHRoZSBISUQgcHJv
dmlkZXIgd2lsbCBoYW5kbGUgaXQuCisgICAgICAgIGlmIChyZW1vdmVEZXZpY2VXYWl0aW5nRm9y
TWFuYWdlbWVudERlY2lzaW9uKGRlbGF5ZWREZXZpY2UuZ2V0KCkpKQorICAgICAgICAgICAgZGV2
aWNlQWRkZWQoZGVsYXllZERldmljZS5nZXQoKSwgQWxsb3dNYW5hZ2VtZW50RGVjaXNpb25EZWxh
eTo6Tm8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBMT0coR2FtZXBhZCwgIk1hbmFnZW1l
bnQgZGVjaXNpb24gZGVsYXkgZm9yIGRldmljZSAlcCBoYXMgZXhwaXJlZCwgYnV0IGRldmljZSBo
YXMgYWxyZWFkeSBiZWVuIGhhbmRsZWQiLCBkZWxheWVkRGV2aWNlLmdldCgpKTsKKyAgICB9KTsK
KworICAgIGlmIChtX2RldmljZXNXYWl0aW5nTWFuYWdlbWVudERlY2lzaW9uLnNpemUoKSA+IDEp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZXZlbnRTeXN0ZW1DbGllbnQgPSBhZG9wdENGKElP
SElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGVXaXRoVHlwZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
SU9ISURFdmVudFN5c3RlbUNsaWVudFR5cGVNb25pdG9yLCAwKSk7CisKKyAgICBOU011dGFibGVB
cnJheSAqbWF0Y2hpbmdBdHRyaWJ1dGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBb
bWF0Y2hpbmdBdHRyaWJ1dGVzIGFkZE9iamVjdDpAeyhpZClDRlNUUihrSU9ISUREZXZpY2VVc2Fn
ZVBhZ2VLZXkpIDogQChrSElEUGFnZV9HZW5lcmljRGVza3RvcCksIChpZClDRlNUUihrSU9ISURE
ZXZpY2VVc2FnZUtleSkgOiBAKGtISURVc2FnZV9HRF9HYW1lUGFkKX1dOworICAgIFttYXRjaGlu
Z0F0dHJpYnV0ZXMgYWRkT2JqZWN0OkB7KGlkKUNGU1RSKGtJT0hJRERldmljZVVzYWdlUGFnZUtl
eSkgOiBAKGtISURQYWdlX0dlbmVyaWNEZXNrdG9wKSwgKGlkKUNGU1RSKGtJT0hJRERldmljZVVz
YWdlS2V5KSA6IEAoa0hJRFVzYWdlX0dEX0pveXN0aWNrKX1dOworCisgICAgSU9ISURFdmVudFN5
c3RlbUNsaWVudFNldE1hdGNoaW5nTXVsdGlwbGUobV9ldmVudFN5c3RlbUNsaWVudC5nZXQoKSwg
KF9fYnJpZGdlIENGQXJyYXlSZWYpKG1hdGNoaW5nQXR0cmlidXRlcykpOworICAgIElPSElERXZl
bnRTeXN0ZW1DbGllbnRTY2hlZHVsZVdpdGhEaXNwYXRjaFF1ZXVlKG1fZXZlbnRTeXN0ZW1DbGll
bnQuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgIElPSElERXZlbnRTeXN0
ZW1DbGllbnRSZWdpc3RlckRldmljZU1hdGNoaW5nQmxvY2sobV9ldmVudFN5c3RlbUNsaWVudC5n
ZXQoKSwgXih2b2lkICosIHZvaWQgKiwgSU9ISURTZXJ2aWNlQ2xpZW50UmVmKSB7CisgICAgICAg
IC8vIFdlIGRvbid0IGFjdHVhbGx5IGNhcmUgYWJvdXQgdGhlIGFjdHVhbCBwdWJsaXNoZWQgc2Vy
dmljZS4KKyAgICAgICAgLy8gQW55IG5ldyBHYW1lUGFkIHNlcnZpY2UgaXMgd29ydGggcmUtY2hl
Y2tpbmcgZXZlcnkgcGVuZGluZyBJT0hJRERldmljZSBhZ2FpbnN0IEdhbWVDb250cm9sbGVyIGZy
YW1ld29yay4KKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5uZXdHYW1l
UGFkU2VydmljZVB1Ymxpc2hlZCgpOworICAgIH0sIG51bGxwdHIsIG51bGxwdHIpOworfQorCiti
b29sIEhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlRGV2aWNlV2FpdGluZ0Zvck1hbmFnZW1lbnRE
ZWNpc2lvbihJT0hJRERldmljZVJlZiBkZXZpY2UpCit7CisgICAgaWYgKCFtX2RldmljZXNXYWl0
aW5nTWFuYWdlbWVudERlY2lzaW9uLnJlbW92ZShkZXZpY2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZXR1cm4gQ29udHJvbGxlckNsYXNzRm9yU2VydmljZShzZXJ2aWNlQ2xpZW50
LmdldCgpKTsKKyAgICBpZiAobV9kZXZpY2VzV2FpdGluZ01hbmFnZW1lbnREZWNpc2lvbi5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgLy8gVGhhdCB3YXMgdGhlIGxhc3QgZGV2aWNlLCBzbyB3ZSBjYW4g
c3RvcCBtb25pdG9yaW5nIGZvciBJT0hJRFNlcnZpY2VDbGllbnRzCisgICAgICAgIEFTU0VSVCht
X2V2ZW50U3lzdGVtQ2xpZW50KTsKKyAgICAgICAgSU9ISURFdmVudFN5c3RlbUNsaWVudFVucmVn
aXN0ZXJEZXZpY2VNYXRjaGluZ0Jsb2NrKG1fZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCkpOworICAg
ICAgICBtX2V2ZW50U3lzdGVtQ2xpZW50ID0gbnVsbHB0cjsKKyAgICAgICAgbV9kZWxheU1hbmFn
ZW1lbnREZWNpc2lvblF1ZXVlID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KLSNlbmRpZiAvLyBIQVZFKE1VTFRJR0FNRVBBRFBST1ZJREVSX1NVUFBPUlQpCiAKK3ZvaWQg
SElER2FtZXBhZFByb3ZpZGVyOjpuZXdHYW1lUGFkU2VydmljZVB1Ymxpc2hlZCgpCit7CisgICAg
TE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXI6Om5ld0dhbWVQYWRTZXJ2aWNlUHVibGlz
aGVkKCkiKTsKKyAgICBJT0hJRERldmljZVJlZiBtYXRjaGVkRGV2aWNlID0gbnVsbHB0cjsKKyAg
ICBmb3IgKGF1dG8gZGV2aWNlIDogbV9kZXZpY2VzV2FpdGluZ01hbmFnZW1lbnREZWNpc2lvbikg
eworICAgICAgICBhdXRvIHJlc3VsdCA9IGdhbWVDb250cm9sbGVyRnJhbWV3b3JrV2lsbEhhbmRs
ZUhJRERldmljZShkZXZpY2UpOworICAgICAgICBpZiAocmVzdWx0ID09IEdhbWVDb250cm9sbGVy
RnJhbWV3b3JrSGFuZGxlc0RldmljZTo6WWVzIHx8IHJlc3VsdCA9PSBHYW1lQ29udHJvbGxlckZy
YW1ld29ya0hhbmRsZXNEZXZpY2U6Ok5vKSB7CisgICAgICAgICAgICBtYXRjaGVkRGV2aWNlID0g
ZGV2aWNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
bWF0Y2hlZERldmljZSkgeworICAgICAgICBMT0coR2FtZXBhZCwgIkRldmljZSAlcCBwZW5kaW5n
IG1hbmFnZW1lbnQgZGVjaXNpb24gY2FuIG5vdyBiZSBtYW5hZ2VkIiwgbWF0Y2hlZERldmljZSk7
CisgICAgICAgIHJlbW92ZURldmljZVdhaXRpbmdGb3JNYW5hZ2VtZW50RGVjaXNpb24obWF0Y2hl
ZERldmljZSk7CisgICAgICAgIGRldmljZUFkZGVkKG1hdGNoZWREZXZpY2UsIEFsbG93TWFuYWdl
bWVudERlY2lzaW9uRGVsYXk6Ok5vKTsKKyAgICB9Cit9CiAKKyNlbmRpZiAvLyAhSEFWRShHQ0NP
TlRST0xMRVJfSElEX0RFVklDRV9DSEVDSykKKyNlbmRpZiAvLyBIQVZFKE1VTFRJR0FNRVBBRFBS
T1ZJREVSX1NVUFBPUlQpCiAKLXZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJ
T0hJRERldmljZVJlZiBkZXZpY2UpCit2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRk
ZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlLCBBbGxvd01hbmFnZW1lbnREZWNpc2lvbkRlbGF5IGFs
bG93TWFuYWdlbWVudERlY2lzaW9uRGVsYXkpCiB7CiAjaWYgSEFWRShNVUxUSUdBTUVQQURQUk9W
SURFUl9TVVBQT1JUKQotICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0Rl
dmljZXMgJiYgZ2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtXaWxsSGFuZGxlSElERGV2aWNlKGRldmlj
ZSkpIHsKLSAgICAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsgd2ls
bCBoYW5kbGUgYXR0YWNoZWQgZGV2aWNlICVwIC0gSElER2FtZXBhZFByb3ZpZGVyIGlnbm9yaW5n
IGl0IiwgZGV2aWNlKTsKLSAgICAgICAgbV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFkcy5h
ZGQoZGV2aWNlKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJv
bGxlckZyYW1ld29ya0RldmljZXMpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBnYW1lQ29udHJv
bGxlckZyYW1ld29ya1dpbGxIYW5kbGVISUREZXZpY2UoZGV2aWNlKTsKKyAgICAgICAgc3dpdGNo
IChyZXN1bHQpIHsKKyAgICAgICAgY2FzZSBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNE
ZXZpY2U6OlllczoKKyAgICAgICAgICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXIgZnJh
bWV3b3JrIHdpbGwgaGFuZGxlIG5ld2x5IGF0dGFjaGVkIGRldmljZSAlcCAtIEhJREdhbWVwYWRQ
cm92aWRlciBpZ25vcmluZyBpdCIsIGRldmljZSk7CisgICAgICAgICAgICBtX2dhbWVDb250cm9s
bGVyTWFuYWdlZEdhbWVwYWRzLmFkZChkZXZpY2UpOworICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGNhc2UgR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpNYXliZToK
KyAgICAgICAgICAgIGlmIChhbGxvd01hbmFnZW1lbnREZWNpc2lvbkRlbGF5ID09IEFsbG93TWFu
YWdlbWVudERlY2lzaW9uRGVsYXk6Ok5vKSB7CisgICAgICAgICAgICAgICAgTE9HKEdhbWVwYWQs
ICJVbmFibGUgdG8gZGV0ZXJtaW5lIGlmIEdhbWVDb250cm9sbGVyIGZyYW1ld29yayB3aWxsIGhh
bmRsZSBhdHRhY2hlZCBkZXZpY2UgJXAgLSBISURHYW1lcGFkUHJvdmlkZXIgd2lsbCBoYW5kbGUg
aXQiLCBkZXZpY2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBHaXZlIElPSElEU2VydmljZUNsaWVudCBjYWxsYmFja3MgYSBjaGFuY2Ug
dG8gY29uZmlybSB3aGV0aGVyIG9yIG5vdAorICAgICAgICAgICAgLy8gdGhpcyBkZXZpY2Ugd2ls
bCBiZSBoYW5kbGVkIGJ5IEdhbWVDb250cm9sbGVyIGZyYW1ld29yaworICAgICAgICAgICAgd2Fp
dEZvck1hbmFnZW1lbnREZWNpc2lvbkZvckRldmljZShkZXZpY2UpOworICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGNhc2UgR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNl
OjpObzoKKyAgICAgICAgICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3Jr
IGRvZXMgbm90IGhhbmRsZSBhdHRhY2hlZCBkZXZpY2UgJXAgLSBISURHYW1lcGFkUHJvdmlkZXIg
d2lsbCBoYW5kbGUgaXQiLCBkZXZpY2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhbGxvd01hbmFnZW1lbnREZWNpc2lvbkRl
bGF5KTsKICNlbmRpZiAvLyBIQVZFKE1VTFRJR0FNRVBBRFBST1ZJREVSX1NVUFBPUlQpCiAKICAg
ICBBU1NFUlQoIW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CkBAIC0yNzIsMTIgKzM4MCwyNSBA
QCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2
aWNlKQogCiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlUmVtb3ZlZChJT0hJRERldmlj
ZVJlZiBkZXZpY2UpCiB7CisjaWYgSEFWRShNVUxUSUdBTUVQQURQUk9WSURFUl9TVVBQT1JUKQor
ICAgIGJvb2wgd2FzUmVtb3ZlZCA9IHJlbW92ZURldmljZVdhaXRpbmdGb3JNYW5hZ2VtZW50RGVj
aXNpb24oZGV2aWNlKTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+
IHJlbW92ZWRHYW1lcGFkID0gcmVtb3ZlR2FtZXBhZEZvckRldmljZShkZXZpY2UpOwogCiAgICAg
aWYgKCFyZW1vdmVkR2FtZXBhZCkgeworI2lmIEhBVkUoTVVMVElHQU1FUEFEUFJPVklERVJfU1VQ
UE9SVCkKICAgICAgICAgYXV0byB0YWtlbiA9IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBh
ZHMudGFrZShkZXZpY2UpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbik7Ci0g
ICAgICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGluZm9ybWVkIG9mIHJlbW92
YWwgb2YgZGV2aWNlICVwLCB3aGljaCBpcyBtYW5hZ2VkIGJ5IEdhbWVDb250cm9sbGVyIGZyYW1l
d29yay4gSWdub3JpbmcuIiwgZGV2aWNlKTsKKworICAgICAgICAvLyBJZiB0aGlzIGRldmljZSBk
aWRuJ3Qgc2hvdyB1cCBpbiB0aGUgZ2FtZXBhZCBtYXAsIHRoZW4gaXQgd2FzIGVpdGhlciBtYW5h
Z2VkIGJ5IEdhbWVDb250cm9sbGVyIGZyYW1ld29yaworICAgICAgICAvLyBvciB3ZSB3ZXJlIHN0
aWxsIHdhaXRpbmcgdG8gZGVjaWRlIHdoaWNoIHByb3ZpZGVyIHdvdWxkIG1hbmFnZSBpdC4KKyAg
ICAgICAgQVNTRVJUKHRha2VuIHx8IHdhc1JlbW92ZWQpOworCisgICAgICAgIGlmICh0YWtlbikK
KyAgICAgICAgICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGluZm9ybWVkIG9m
IHJlbW92YWwgb2YgZGV2aWNlICVwLCB3aGljaCBpcyBtYW5hZ2VkIGJ5IEdhbWVDb250cm9sbGVy
IGZyYW1ld29yay4gSWdub3JpbmcuIiwgZGV2aWNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgaW5mb3JtZWQgb2YgcmVtb3ZhbCBv
ZiBkZXZpY2UgJXAsIHdoaWNoIHdhcyBub3QgeWV0IG1hbmFnZWQuIElnbm9yaW5nLiIsIGRldmlj
ZSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404320</attachid>
            <date>2020-07-14 23:26:14 -0700</date>
            <delta_ts>2020-07-15 10:06:43 -0700</delta_ts>
            <desc>Those changes, plus some &quot;make it build on Big Sur&quot; changes</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>19532</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNWJhMzI5NGIwNGQ2Li5hMzQ1NjQwODE1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MjAtMDctMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJl
c29sdmUgcmFjZSBiZXR3ZWVuIElPSElETWFuYWdlciBhbmQgR2FtZUNvbnRyb2xsZXIgZnJhbWV3
b3JrLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU1NTQ0OTA+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltIEhvcnRvbi4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMC0wNy0x
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJFR1JFU1NJT04ocjI2MjM0MSkgVVJMOjpjcmVhdGVDRlVSTCBzaG91bGQgcHJvZHVjZSBhIENG
VVJMIHRoYXQgdXNlcyBVVEYtOCB0byBkZWNvZGUgaXRzIHBlcmNlbnQtZW5jb2RlZCBzZXF1ZW5j
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggZTQ3YTc0NWM2Y2Q4Li4yMGEwYTg4YWYyYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC01NzgsNiArNTc4LDEwIEBACiAjZGVmaW5lIEhBVkVfR0NF
WFRFTkRFREdBTUVQQURfSE9NRV9CVVRUT04gMQogI2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTcwMCkKKyNkZWZpbmUg
SEFWRV9HQ0NPTlRST0xMRVJfSElEX0RFVklDRV9DSEVDSyAxCisjZW5kaWYKKwogI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNjAwKSB8
fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTQwMDAwKQogI2RlZmluZSBIQVZFX1dFQlAgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjIxZjkzNjAwOTMyLi4xM2FlMjhmZTViNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAor
MjAyMC0wNy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVzb2x2ZSByYWNlIGJldHdlZW4gSU9ISURNYW5hZ2VyIGFuZCBHYW1lQ29udHJvbGxlciBmcmFt
ZXdvcmsuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTU1NDQ5MD4gYW5kIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyNDUKKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW0gSG9ydG9uLgorCisgICAgICAgIE5vIGF1dG9tYXRlZCB0ZXN0aW5nIGF2YWlsYWJsZS4K
KyAgICAgICAgCisgICAgICAgIElPSElERGV2aWNlcyBhbmQgSU9ISURTZXJ2aWNlcyBhcmUgdHdv
IHNlcGFyYXRlIHRoaW5ncy4KKyAgICAgICAgCisgICAgICAgIEFuIElPSElERGV2aWNlIGFuZCBJ
T0hJRFNlcnZpY2Ugb2Z0ZW4gaGF2ZSBhIDEtdG8tMSBjb3JyZWxhdGlvbiwgYnV0IHRoZSBJT0hJ
RERldmljZSBtaWdodCBiZQorICAgICAgICBwdWJsaXNoZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGJl
Zm9yZSB0aGUgSU9ISURTZXJ2aWNlIGlzLgorICAgICAgICAKKyAgICAgICAgV2ViS2l0J3MgSElE
IGdhbWVwYWQgbWFuYWdlciB1c2VzIElPSElERGV2aWNlLgorICAgICAgICBHYW1lQ29udHJvbGxl
ci5mcmFtZXdvcmsgdXNlcyBJT0hJRFNlcnZpY2VzLgorICAgICAgICAKKyAgICAgICAgV2hlbiB3
ZSBhZGRlZCB0aGUgYWJpbGl0eSBmb3IgV2ViS2l0IHRvIHN3aXRjaCBiZXR3ZWVuIEhJRCBhbmQg
R0NGLCB0aGUgZm9sbG93aW5nIGhhcHBlbnM6CisKKyAgICAgICAgLSBTb21ldGltZXMgdGhlIElP
SElEU2VydmljZUNsaWVudCB3aWxsIGdldCBwdWJsaXNoZWQgZmlyc3QuIFRoZW4gd2hlbiB0aGUg
SU9ISUREZXZpY2UgaXMgcHVibGlzaGVkLAorICAgICAgICAgIGFuZCBXZWJLaXQgd2FzIGRlY2lk
aW5nIHdoaWNoIGdhbWVwYWQgbWFuYWdlciB0byB1c2UsIHRoZSBkZXZpY2UncyBzZXJ2aWNlcyBh
cmUgYXZhaWxhYmxlLAorICAgICAgICAgIGFuZCB3ZSBnZXQgdGhlIHJpZ2h0IGFuc3dlci4KKyAg
ICAgICAgCisgICAgICAgIC0gU29tZXRpbWVzLCB0aGUgSU9ISUREZXZpY2UgaXMgcHVibGlzaGVk
IGZpcnN0LiBUaGVuIHdoZW4gV2ViS2l0IGlzIGRlY2lkaW5nIHdoaWNoIGdhbWVwYWQgCisgICAg
ICAgICAgbWFuYWdlciB0byB1c2UsIGl0IGNhbid0IGNoZWNrIHRoZSBJT0hJRFNlcnZpY2VDbGll
bnQgYWdhaW5zdCBHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsuCisgICAgICAgICAgU28gd2UgaGF2
ZSB0aGUgSElEIG1hbmFnZXIgaGFuZGxlIHRoZSBkZXZpY2UuLi4gYnV0IHRoZW4gR0NGIGNvbWVz
IGFsb25nIGEgc3BsaXQgc2Vjb25kIGxhdGVyCisgICAgICAgICAgYW5kIEFMU08gaGFuZGxlcyBp
dC4KKyAgICAgICAgICAKKyAgICAgICAgVGhlICJkZXZpY2UgYmVmb3JlIHNlcnZpY2UiIHNjZW5h
cmlvIHJlc3VsdHMgaW4gdGhlIHNhbWUgZ2FtZXBhZCBzaG93aW5nIHVwIHR3aWNlLgorICAgICAg
ICAKKyAgICAgICAgVG8gcmVzb2x2ZSB0aGlzLCB3ZSBkbyB0aGUgZm9sbG93aW5nOgorICAgICAg
ICAKKyAgICAgICAgMSAtIElmIGFuIElPSElERGV2aWNlIGF0dGFjaGVzIGFuZCBpdHMgc2Vydmlj
ZXMgYXJlbid0IGF2YWlsYWJsZSB5ZXQsIHdlIGRlbGF5IG1hbmFnaW5nIGl0LgorICAgICAgICAy
IC0gV2hlbiB3ZSBkZWxheSBtYW5hZ2luZyBhIGRldmljZSwgd2Ugc3RhcnQgbGlzdGVuaW5nIGZv
ciBJT0hJRFNlcnZpY2VDbGllbnQgYWRkaXRpb25zLgorICAgICAgICAzIC0gRWFjaCB0aW1lIGEg
R2FtZVBhZCBzZXJ2aWNlIGlzIHB1Ymxpc2hlZCwgd2Ugb25jZSBhZ2FpbiB0cnkgdG8gZGV0ZXJt
aW5lIGlmIEdDRiB3aWxsIGhhbmRsZQorICAgICAgICAgICAgdGhlIGRldmljZS4KKyAgICAgICAg
NCAtIEFzIGxvbmcgYXMgdGhlIGFuc3dlciBpcyAiTWF5YmUiIC0gaW5zdGVhZCBvZiAiWWVzIiBv
ciAiTm8iIC0gd2UgcmVmdXNlIHRvIG1hbmFnZSB0aGUgZGV2aWNlLgorICAgICAgICA1IC0gQWZ0
ZXIgYSBicmllZiBkZWxheSAoY3VycmVudGx5IDEgc2Vjb25kKSwgd2Ugd2lsbCBnaXZlIHVwIHdh
aXRpbmcgZm9yIHB1Ymxpc2hlZCBzZXJ2aWNlcworICAgICAgICAgICAgYW5kIG1hbmFnZSB0aGUg
ZGV2aWNlIHdpdGggdGhlIEhJRCBnYW1lcGFkIHByb3ZpZGVyLgorICAgICAgICAgICAgCisgICAg
ICAgIEluIG15IHRlc3RpbmcsIHdoZW4gdGhlIHNlcnZpY2UgcHVibGlzaGVzIGFmdGVyIHRoZSBk
ZXZpY2VzLCBpdCdzIGFsd2F5cyB3aXRoaW4gNTBtcywKKyAgICAgICAgKGFuZCB1c3VhbGx5IGp1
c3QgYSBzcGluIG9yIHR3byBvZiB0aGUgcnVubG9vcCkgc28gdGhlIDFzIGRlbGF5IHNlZW1zIHN1
ZmZpY2llbnQuCisgICAgICAgIAorICAgICAgICBOT1RFOiBUaGUgYWJvdmUgYWxsIGhvbGRzIHRy
dWUgd2l0aCB0aGUgIk11bHRpR2FtZXBhZFByb3ZpZGVyIiBvbiBDYXRhbGluYS4KKyAgICAgICAg
T24gQmlnIFN1ciwgdGhlcmUncyBicmFuZCBuZXcgR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrIEFQ
SSB0aGF0IG1ha2VzIHRoaXMgbXVjaCBlYXNpZXIuIPCfkY0KKworICAgICAgICAqIHBsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dh
bWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRldmlj
ZUFkZGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Z2FtZUNvbnRyb2xsZXJGcmFtZXdv
cmtXaWxsSGFuZGxlSElERGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92
aWRlcjo6d2FpdEZvck1hbmFnZW1lbnREZWNpc2lvbkZvckRldmljZSk6CisgICAgICAgIChXZWJD
b3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OnJlbW92ZURldmljZVdhaXRpbmdGb3JNYW5hZ2VtZW50
RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpuZXdHYW1l
UGFkU2VydmljZVB1Ymxpc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlk
ZXI6OmRldmljZUFkZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6
ZGV2aWNlUmVtb3ZlZCk6CisKIDIwMjAtMDctMTQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBDYXJldCBsZWF2ZXMgdHJhaWxzIGJlaGluZCB3aGVuIHRoZSBlZGl0
YWJsZSBjb250ZW50IGlzIHN1YnBpeGVsIHBvc2l0aW9uZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4
IGNiYTkxNGUxZTM4ZC4uZWIxZjM1Y2VlMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAyMC0wNy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzb2x2ZSByYWNlIGJldHdlZW4gSU9ISURNYW5hZ2VyIGFuZCBHYW1lQ29udHJv
bGxlciBmcmFtZXdvcmsuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTU1NDQ5MD4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyNDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogcGFsL3NwaS9tYWMvSU9LaXRTUElN
YWMuaDoKKwogMjAyMC0wNy0xMiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIEJ1aWxkaW5nIENGTmV0d29ya1NQSSB3aXRoIHRoZSBtYWNPUyBCaWcgU3VyIHB1YmxpYyBT
REsgZmFpbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9JT0tp
dFNQSU1hYy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0lPS2l0U1BJTWFjLmgK
aW5kZXggZDIxN2YyOGE0N2EzLi4xYWRiOTdiNjdjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oCkBAIC0zNSw5ICszNSwxMiBAQAogV1RGX0VYVEVS
Tl9DX0JFR0lOCiB0eXBlZGVmIHN0cnVjdCBDRl9CUklER0VEX1RZUEUoaWQpIF9fSU9ISURTZXJ2
aWNlQ2xpZW50ICogSU9ISURTZXJ2aWNlQ2xpZW50UmVmOwogdHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJ
REdFRF9UWVBFKGlkKSBfX0lPSElERXZlbnRTeXN0ZW1DbGllbnQgKiBJT0hJREV2ZW50U3lzdGVt
Q2xpZW50UmVmOwordHlwZWRlZiB2b2lkICheSU9ISURTZXJ2aWNlQ2xpZW50QmxvY2spKHZvaWQg
Kiwgdm9pZCAqLCBJT0hJRFNlcnZpY2VDbGllbnRSZWYpOworCiBJT0hJREV2ZW50U3lzdGVtQ2xp
ZW50UmVmIElPSElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYpOwogdm9p
ZCBJT0hJREV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0Y2hpbmcoSU9ISURFdmVudFN5c3RlbUNsaWVu
dFJlZiwgQ0ZEaWN0aW9uYXJ5UmVmKTsKIElPSElEU2VydmljZUNsaWVudFJlZiBJT0hJREV2ZW50
U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VGb3JSZWdpc3RyeUlEKElPSElERXZlbnRTeXN0ZW1DbGll
bnRSZWYsIHVpbnQ2NF90IHJlZ2lzdHJ5SUQpOwordm9pZCBJT0hJREV2ZW50U3lzdGVtQ2xpZW50
UmVnaXN0ZXJEZXZpY2VNYXRjaGluZ0Jsb2NrKElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYsIElP
SElEU2VydmljZUNsaWVudEJsb2NrLCB2b2lkICosIHZvaWQgKik7CiBXVEZfRVhURVJOX0NfRU5E
CiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaAppbmRl
eCBmYjQ0MzhhZTI2ODguLmJkMWU4MjQzNWZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKQEAgLTMxLDkg
KzMxLDExIEBACiAjaW5jbHVkZSAiSElER2FtZXBhZC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8SU9LaXQvaGlkL0lPSElETWFuYWdlci5oPgorI2luY2x1ZGUgPHBhbC9zcGkvbWFj
L0lPS2l0U1BJTWFjLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDggKzUzLDEyIEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdJbnB1dCgpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nSW5wdXQoKTsKLSAgICAKLSAgICB2
b2lkIGRldmljZUFkZGVkKElPSElERGV2aWNlUmVmKTsKKworICAgIGVudW0gY2xhc3MgQWxsb3dN
YW5hZ2VtZW50RGVjaXNpb25EZWxheSA6IGJvb2wgeworICAgICAgICBObywKKyAgICAgICAgWWVz
CisgICAgfTsKKyAgICB2b2lkIGRldmljZUFkZGVkKElPSElERGV2aWNlUmVmLCBBbGxvd01hbmFn
ZW1lbnREZWNpc2lvbkRlbGF5KTsKICAgICB2b2lkIGRldmljZVJlbW92ZWQoSU9ISUREZXZpY2VS
ZWYpOwogICAgIHZvaWQgdmFsdWVzQ2hhbmdlZChJT0hJRFZhbHVlUmVmKTsKIApAQCAtNzMsNyAr
NzksNiBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBh
ZFZlY3RvcjsKICAgICBIYXNoTWFwPElPSElERGV2aWNlUmVmLCBzdGQ6OnVuaXF1ZV9wdHI8SElE
R2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKLSAgICBIYXNoU2V0PElPSElERGV2aWNlUmVmPiBtX2dh
bWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzOwogCiAgICAgUmV0YWluUHRyPElPSElETWFuYWdl
clJlZj4gbV9tYW5hZ2VyOwogCkBAIC04Miw2ICs4NywxOSBAQCBwcml2YXRlOgogCiAgICAgVGlt
ZXIgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lcjsKICAgICBUaW1lciBtX2lucHV0Tm90
aWZpY2F0aW9uVGltZXI7CisKKyNpZiBIQVZFKE1VTFRJR0FNRVBBRFBST1ZJREVSX1NVUFBPUlQp
CisgICAgSGFzaFNldDxJT0hJRERldmljZVJlZj4gbV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1l
cGFkczsKKyNpZiAhSEFWRShHQ0NPTlRST0xMRVJfSElEX0RFVklDRV9DSEVDSykKKyAgICB2b2lk
IHdhaXRGb3JNYW5hZ2VtZW50RGVjaXNpb25Gb3JEZXZpY2UoSU9ISUREZXZpY2VSZWYpOworICAg
IGJvb2wgcmVtb3ZlRGV2aWNlV2FpdGluZ0Zvck1hbmFnZW1lbnREZWNpc2lvbihJT0hJRERldmlj
ZVJlZik7CisgICAgdm9pZCBnYW1lUGFkU2VydmljZVdhc1B1Ymxpc2hlZCgpOworCisgICAgSGFz
aFNldDxJT0hJRERldmljZVJlZj4gbV9kZXZpY2VzV2FpdGluZ01hbmFnZW1lbnREZWNpc2lvbjsK
KyAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2RlbGF5TWFuYWdlbWVudERlY2lzaW9uUXVldWU7Cisg
ICAgUmV0YWluUHRyPElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWY+IG1fZXZlbnRTeXN0ZW1DbGll
bnQ7CisjZW5kaWYgLy8gIUhBVkUoR0NDT05UUk9MTEVSX0hJRF9ERVZJQ0VfQ0hFQ0spCisjZW5k
aWYgLy8gSEFWRShNVUxUSUdBTUVQQURQUk9WSURFUl9TVVBQT1JUKQogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IGRhNTIxZDYzY2RiNS4uNWIwMjlk
ZjgzNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0zNCw2ICszNCwxMCBAQAogI2ltcG9ydCA8
cGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogCisjaWYgSEFWRShHQ0NPTlRST0xMRVJfSElEX0RFVklDRV9DSEVDSykKKyNpbXBvcnQgPEdh
bWVDb250cm9sbGVyL0dDQ29udHJvbGxlci5oPgorI2VuZGlmCisKICNpbXBvcnQgIkdhbWVDb250
cm9sbGVyU29mdExpbmsuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsNyArNjIsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGV2aWNlTWF0Y2hpbmdEaWN0aW9u
YXJ5KHVpbnQzMl90IHVzYWdlUGFnZSwgdQogc3RhdGljIHZvaWQgZGV2aWNlQWRkZWRDYWxsYmFj
ayh2b2lkKiBjb250ZXh0LCBJT1JldHVybiwgdm9pZCosIElPSElERGV2aWNlUmVmIGRldmljZSkK
IHsKICAgICBISURHYW1lcGFkUHJvdmlkZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SElER2Ft
ZXBhZFByb3ZpZGVyKj4oY29udGV4dCk7Ci0gICAgbGlzdGVuZXItPmRldmljZUFkZGVkKGRldmlj
ZSk7CisgICAgbGlzdGVuZXItPmRldmljZUFkZGVkKGRldmljZSwgSElER2FtZXBhZFByb3ZpZGVy
OjpBbGxvd01hbmFnZW1lbnREZWNpc2lvbkRlbGF5OjpZZXMpOwogfQogCiBzdGF0aWMgdm9pZCBk
ZXZpY2VSZW1vdmVkQ2FsbGJhY2sodm9pZCogY29udGV4dCwgSU9SZXR1cm4sIHZvaWQqLCBJT0hJ
RERldmljZVJlZiBkZXZpY2UpCkBAIC0xODAsNjEgKzE4NCwxNjkgQEAgdm9pZCBISURHYW1lcGFk
UHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBj
bGllbnQpCiB9CiAKICNpZiBIQVZFKE1VTFRJR0FNRVBBRFBST1ZJREVSX1NVUFBPUlQpCi1zdGF0
aWMgYm9vbCBnYW1lQ29udHJvbGxlckZyYW1ld29ya1dpbGxIYW5kbGVISUREZXZpY2UoSU9ISURE
ZXZpY2VSZWYgZGV2aWNlKQorCitlbnVtIGNsYXNzIEdhbWVDb250cm9sbGVyRnJhbWV3b3JrSGFu
ZGxlc0RldmljZSA6IHVpbnQ4X3QgeworICAgIE5vLAorICAgIFllcywKKyAgICBNYXliZSwKK307
CisKK3N0YXRpYyBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2UgZ2FtZUNvbnRy
b2xsZXJGcmFtZXdvcmtXaWxsSGFuZGxlSElERGV2aWNlKElPSElERGV2aWNlUmVmIGRldmljZSkK
IHsKICAgICBpZiAoIWlzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtBdmFpbGFibGUoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtI
YW5kbGVzRGV2aWNlOjpObzsKKworI2lmIEhBVkUoR0NDT05UUk9MTEVSX0hJRF9ERVZJQ0VfQ0hF
Q0spCisgICAgcmV0dXJuIFtnZXRHQ0NvbnRyb2xsZXJDbGFzcygpIHN1cHBvcnRzSElERGV2aWNl
OmRldmljZV0gPyBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6OlllcyA6IEdh
bWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6Tm87CisjZW5kaWYKIAogICAgIGF1
dG8gZGV2aWNlU2VydmljZSA9IElPSElERGV2aWNlR2V0U2VydmljZShkZXZpY2UpOwogICAgIGlm
ICghZGV2aWNlU2VydmljZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
R2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpNYXliZTsKIAogICAgIC8vIENo
ZWNrIHRoZSBzZXJ2aWNlIGRpcmVjdGx5IGJhY2tpbmcgdGhpcyBkZXZpY2UKICAgICB1aW50NjRf
dCByZWdpc3RyeUlEOwogICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVudHJ5SUQo
ZGV2aWNlU2VydmljZSwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVz
RGV2aWNlOjpNYXliZTsKIAogICAgIGF1dG8gZXZlbnRTeXN0ZW1DbGllbnQgPSBhZG9wdENGKElP
SElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUobnVsbHB0cikpOwogICAgIElPSElERXZlbnRTeXN0
ZW1DbGllbnRTZXRNYXRjaGluZyhldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgbnVsbHB0cik7CiAg
ICAgYXV0byBzZXJ2aWNlQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29w
eVNlcnZpY2VGb3JSZWdpc3RyeUlEKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCByZWdpc3RyeUlE
KSk7Ci0gICAgaWYgKHNlcnZpY2VDbGllbnQpIHsKLSAgICAgICAgaWYgKENvbnRyb2xsZXJDbGFz
c0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9CisgICAgaWYgKHNlcnZpY2VDbGllbnQgJiYgQ29udHJvbGxlckNsYXNzRm9yU2Vy
dmljZShzZXJ2aWNlQ2xpZW50LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIEdhbWVDb250cm9sbGVy
RnJhbWV3b3JrSGFuZGxlc0RldmljZTo6WWVzOwogCiAgICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBp
dHMgZ3JhbmRjaGlsZCBzZXJ2aWNlCiAgICAgaW9fcmVnaXN0cnlfZW50cnlfdCBjaGlsZDsKICAg
ICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShkZXZpY2VTZXJ2aWNlLCBrSU9TZXJ2
aWNlUGxhbmUsICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6Ok1h
eWJlOwogICAgIGlmICghY2hpbGQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIEdhbWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6TWF5YmU7CiAKICAgICBp
ZiAoSU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShjaGlsZCwga0lPU2VydmljZVBsYW5lLCAm
Y2hpbGQpICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpNYXliZTsKICAgICBp
ZiAoIWNoaWxkKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBHYW1lQ29u
dHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6Ok1heWJlOwogCiAgICAgaWYgKElPUmVnaXN0
cnlFbnRyeUdldFJlZ2lzdHJ5RW50cnlJRChjaGlsZCwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VD
Q0VTUykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gR2FtZUNvbnRyb2xs
ZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpNYXliZTsKIAogICAgIHNlcnZpY2VDbGllbnQgPSBh
ZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2VydmljZUZvclJlZ2lzdHJ5SUQoZXZl
bnRTeXN0ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5SUQpKTsKICAgICBpZiAoIXNlcnZpY2VDbGll
bnQpCisgICAgICAgIHJldHVybiBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6
Ok1heWJlOworCisgICAgcmV0dXJuIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uoc2VydmljZUNs
aWVudC5nZXQoKSkgPyBHYW1lQ29udHJvbGxlckZyYW1ld29ya0hhbmRsZXNEZXZpY2U6OlllcyA6
IEdhbWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6Tm87Cit9CisKKyNpZiAhSEFW
RShHQ0NPTlRST0xMRVJfSElEX0RFVklDRV9DSEVDSykKKworc3RhdGljIGNvbnN0IFNlY29uZHMg
bWFuYWdlbWVudERlY2lzaW9uRGVsYXkgeyAxMDAwX21zIH07CisKK3ZvaWQgSElER2FtZXBhZFBy
b3ZpZGVyOjp3YWl0Rm9yTWFuYWdlbWVudERlY2lzaW9uRm9yRGV2aWNlKElPSElERGV2aWNlUmVm
IGRldmljZSkKK3sKKyAgICBMT0coR2FtZXBhZCwgIlVuYWJsZSB0byBkZXRlcm1pbmUgaWYgR2Ft
ZUNvbnRyb2xsZXIgZnJhbWV3b3JrIHdpbGwgaGFuZGxlIG5ld2x5IGF0dGFjaGVkIGRldmljZSAl
cCAtIERlbGF5aW5nIG1hbmFnZW1lbnQgZGVjaXNpb24iLCBkZXZpY2UpOworICAgIG1fZGV2aWNl
c1dhaXRpbmdNYW5hZ2VtZW50RGVjaXNpb24uYWRkKGRldmljZSk7CisKKyAgICBpZiAoIW1fZGVs
YXlNYW5hZ2VtZW50RGVjaXNpb25RdWV1ZSkKKyAgICAgICAgbV9kZWxheU1hbmFnZW1lbnREZWNp
c2lvblF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuR2FtZXBhZE1h
bmFnZW1lbnREZWNpc2lvbiIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFP
Uzo6VXRpbGl0eSk7CisKKyAgICBhdXRvIGRlbGF5ZWREZXZpY2UgPSBSZXRhaW5QdHI8SU9ISURE
ZXZpY2VSZWY+KGRldmljZSk7CisgICAgbV9kZWxheU1hbmFnZW1lbnREZWNpc2lvblF1ZXVlLT5k
aXNwYXRjaEFmdGVyKG1hbmFnZW1lbnREZWNpc2lvbkRlbGF5LCBbdGhpcywgZGVsYXllZERldmlj
ZSA9IFdURk1vdmUoZGVsYXllZERldmljZSldIHsKKyAgICAgICAgLy8gSWYgdGhpcyBkZXZpY2Ug
d2FzIHN0aWxsIHdhaXRpbmcgZm9yIGl0cyBtYW5hZ2VtZW50IGRlY2lzaW9uLCB0aGVuIHRoZSBI
SUQgcHJvdmlkZXIgd2lsbCBoYW5kbGUgaXQuCisgICAgICAgIGlmIChyZW1vdmVEZXZpY2VXYWl0
aW5nRm9yTWFuYWdlbWVudERlY2lzaW9uKGRlbGF5ZWREZXZpY2UuZ2V0KCkpKQorICAgICAgICAg
ICAgZGV2aWNlQWRkZWQoZGVsYXllZERldmljZS5nZXQoKSwgQWxsb3dNYW5hZ2VtZW50RGVjaXNp
b25EZWxheTo6Tm8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBMT0coR2FtZXBhZCwgIk1h
bmFnZW1lbnQgZGVjaXNpb24gZGVsYXkgZm9yIGRldmljZSAlcCBoYXMgZXhwaXJlZCwgYnV0IGRl
dmljZSBoYXMgYWxyZWFkeSBiZWVuIGhhbmRsZWQiLCBkZWxheWVkRGV2aWNlLmdldCgpKTsKKyAg
ICB9KTsKKworICAgIGlmIChtX2RldmljZXNXYWl0aW5nTWFuYWdlbWVudERlY2lzaW9uLnNpemUo
KSA+IDEpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZXZlbnRTeXN0ZW1DbGllbnQgPSBhZG9w
dENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGVXaXRoVHlwZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrSU9ISURFdmVudFN5c3RlbUNsaWVudFR5cGVNb25pdG9yLCAwKSk7CisKKyAgICBOU011
dGFibGVBcnJheSAqbWF0Y2hpbmdBdHRyaWJ1dGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
KyAgICBbbWF0Y2hpbmdBdHRyaWJ1dGVzIGFkZE9iamVjdDpAe0Aoa0lPSElERGV2aWNlVXNhZ2VQ
YWdlS2V5KSA6IEAoa0hJRFBhZ2VfR2VuZXJpY0Rlc2t0b3ApLCBAKGtJT0hJRERldmljZVVzYWdl
S2V5KSA6IEAoa0hJRFVzYWdlX0dEX0dhbWVQYWQpfV07CisgICAgW21hdGNoaW5nQXR0cmlidXRl
cyBhZGRPYmplY3Q6QHtAKGtJT0hJRERldmljZVVzYWdlUGFnZUtleSkgOiBAKGtISURQYWdlX0dl
bmVyaWNEZXNrdG9wKSwgQChrSU9ISUREZXZpY2VVc2FnZUtleSkgOiBAKGtISURVc2FnZV9HRF9K
b3lzdGljayl9XTsKKworICAgIElPSElERXZlbnRTeXN0ZW1DbGllbnRTZXRNYXRjaGluZ011bHRp
cGxlKG1fZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIChfX2JyaWRnZSBDRkFycmF5UmVmKW1hdGNo
aW5nQXR0cmlidXRlcyk7CisgICAgSU9ISURFdmVudFN5c3RlbUNsaWVudFNjaGVkdWxlV2l0aERp
c3BhdGNoUXVldWUobV9ldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSk7CisgICAgSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZ2lzdGVyRGV2aWNlTWF0Y2hp
bmdCbG9jayhtX2V2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCBeKHZvaWQgKiwgdm9pZCAqLCBJT0hJ
RFNlcnZpY2VDbGllbnRSZWYpIHsKKyAgICAgICAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgY2FyZSBh
Ym91dCB0aGUgYWN0dWFsIHB1Ymxpc2hlZCBzZXJ2aWNlLgorICAgICAgICAvLyBBbnkgbmV3IEdh
bWVQYWQgc2VydmljZSBpcyB3b3J0aCByZS1jaGVja2luZyBldmVyeSBwZW5kaW5nIElPSElERGV2
aWNlIGFnYWluc3QgR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrLgorICAgICAgICBISURHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpLmdhbWVQYWRTZXJ2aWNlV2FzUHVibGlzaGVkKCk7CisgICAg
fSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK2Jvb2wgSElER2FtZXBhZFByb3ZpZGVyOjpyZW1v
dmVEZXZpY2VXYWl0aW5nRm9yTWFuYWdlbWVudERlY2lzaW9uKElPSElERGV2aWNlUmVmIGRldmlj
ZSkKK3sKKyAgICBpZiAoIW1fZGV2aWNlc1dhaXRpbmdNYW5hZ2VtZW50RGVjaXNpb24ucmVtb3Zl
KGRldmljZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBDb250cm9sbGVy
Q2xhc3NGb3JTZXJ2aWNlKHNlcnZpY2VDbGllbnQuZ2V0KCkpOworICAgIGlmIChtX2RldmljZXNX
YWl0aW5nTWFuYWdlbWVudERlY2lzaW9uLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBUaGF0IHdh
cyB0aGUgbGFzdCBkZXZpY2UsIHNvIHdlIGNhbiBzdG9wIG1vbml0b3JpbmcgZm9yIElPSElEU2Vy
dmljZUNsaWVudHMKKyAgICAgICAgQVNTRVJUKG1fZXZlbnRTeXN0ZW1DbGllbnQpOworICAgICAg
ICBJT0hJREV2ZW50U3lzdGVtQ2xpZW50VW5yZWdpc3RlckRldmljZU1hdGNoaW5nQmxvY2sobV9l
dmVudFN5c3RlbUNsaWVudC5nZXQoKSk7CisgICAgICAgIG1fZXZlbnRTeXN0ZW1DbGllbnQgPSBu
dWxscHRyOworICAgICAgICBtX2RlbGF5TWFuYWdlbWVudERlY2lzaW9uUXVldWUgPSBudWxscHRy
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmIC8vIEhBVkUoTVVMVElHQU1F
UEFEUFJPVklERVJfU1VQUE9SVCkKIAordm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmdhbWVQYWRT
ZXJ2aWNlV2FzUHVibGlzaGVkKCkKK3sKKyAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92
aWRlcjo6Z2FtZVBhZFNlcnZpY2VXYXNQdWJsaXNoZWQoKSIpOworICAgIElPSElERGV2aWNlUmVm
IG1hdGNoZWREZXZpY2UgPSBudWxscHRyOworICAgIGZvciAoYXV0byBkZXZpY2UgOiBtX2Rldmlj
ZXNXYWl0aW5nTWFuYWdlbWVudERlY2lzaW9uKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZ2Ft
ZUNvbnRyb2xsZXJGcmFtZXdvcmtXaWxsSGFuZGxlSElERGV2aWNlKGRldmljZSk7CisgICAgICAg
IGlmIChyZXN1bHQgPT0gR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpZZXMg
fHwgcmVzdWx0ID09IEdhbWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6Tm8pIHsK
KyAgICAgICAgICAgIG1hdGNoZWREZXZpY2UgPSBkZXZpY2U7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KIAorICAgIGlmIChtYXRjaGVkRGV2aWNlKSB7CisgICAgICAgIExP
RyhHYW1lcGFkLCAiRGV2aWNlICVwIHBlbmRpbmcgbWFuYWdlbWVudCBkZWNpc2lvbiBjYW4gbm93
IGJlIG1hbmFnZWQiLCBtYXRjaGVkRGV2aWNlKTsKKyAgICAgICAgcmVtb3ZlRGV2aWNlV2FpdGlu
Z0Zvck1hbmFnZW1lbnREZWNpc2lvbihtYXRjaGVkRGV2aWNlKTsKKyAgICAgICAgZGV2aWNlQWRk
ZWQobWF0Y2hlZERldmljZSwgQWxsb3dNYW5hZ2VtZW50RGVjaXNpb25EZWxheTo6Tm8pOworICAg
IH0KK30KKworI2VuZGlmIC8vICFIQVZFKEdDQ09OVFJPTExFUl9ISURfREVWSUNFX0NIRUNLKQor
I2VuZGlmIC8vIEhBVkUoTVVMVElHQU1FUEFEUFJPVklERVJfU1VQUE9SVCkKIAotdm9pZCBISURH
YW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKK3ZvaWQg
SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UsIEFs
bG93TWFuYWdlbWVudERlY2lzaW9uRGVsYXkgYWxsb3dNYW5hZ2VtZW50RGVjaXNpb25EZWxheSkK
IHsKICNpZiBIQVZFKE1VTFRJR0FNRVBBRFBST1ZJREVSX1NVUFBPUlQpCi0gICAgaWYgKG1faWdu
b3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyAmJiBnYW1lQ29udHJvbGxlckZyYW1l
d29ya1dpbGxIYW5kbGVISUREZXZpY2UoZGV2aWNlKSkgewotICAgICAgICBMT0coR2FtZXBhZCwg
IkdhbWVDb250cm9sbGVyIGZyYW1ld29yayB3aWxsIGhhbmRsZSBhdHRhY2hlZCBkZXZpY2UgJXAg
LSBISURHYW1lcGFkUHJvdmlkZXIgaWdub3JpbmcgaXQiLCBkZXZpY2UpOwotICAgICAgICBtX2dh
bWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzLmFkZChkZXZpY2UpOwotICAgICAgICByZXR1cm47
CisgICAgaWYgKG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcykgeworICAg
ICAgICBhdXRvIHJlc3VsdCA9IGdhbWVDb250cm9sbGVyRnJhbWV3b3JrV2lsbEhhbmRsZUhJRERl
dmljZShkZXZpY2UpOworICAgICAgICBzd2l0Y2ggKHJlc3VsdCkgeworICAgICAgICBjYXNlIEdh
bWVDb250cm9sbGVyRnJhbWV3b3JrSGFuZGxlc0RldmljZTo6WWVzOgorICAgICAgICAgICAgTE9H
KEdhbWVwYWQsICJHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsgd2lsbCBoYW5kbGUgbmV3bHkgYXR0
YWNoZWQgZGV2aWNlICVwIC0gSElER2FtZXBhZFByb3ZpZGVyIGlnbm9yaW5nIGl0IiwgZGV2aWNl
KTsKKyAgICAgICAgICAgIG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHMuYWRkKGRldmlj
ZSk7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBHYW1lQ29udHJvbGxlckZy
YW1ld29ya0hhbmRsZXNEZXZpY2U6Ok1heWJlOgorI2lmIEhBVkUoR0NDT05UUk9MTEVSX0hJRF9E
RVZJQ0VfQ0hFQ0spCisgICAgICAgICAgICBVTlVTRURfUEFSQU0oYWxsb3dNYW5hZ2VtZW50RGVj
aXNpb25EZWxheSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
I2Vsc2UKKyAgICAgICAgICAgIGlmIChhbGxvd01hbmFnZW1lbnREZWNpc2lvbkRlbGF5ID09IEFs
bG93TWFuYWdlbWVudERlY2lzaW9uRGVsYXk6Ok5vKSB7CisgICAgICAgICAgICAgICAgTE9HKEdh
bWVwYWQsICJVbmFibGUgdG8gZGV0ZXJtaW5lIGlmIEdhbWVDb250cm9sbGVyIGZyYW1ld29yayB3
aWxsIGhhbmRsZSBhdHRhY2hlZCBkZXZpY2UgJXAgLSBISURHYW1lcGFkUHJvdmlkZXIgd2lsbCBo
YW5kbGUgaXQiLCBkZXZpY2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBHaXZlIElPSElEU2VydmljZUNsaWVudCBjYWxsYmFja3MgYSBj
aGFuY2UgdG8gY29uZmlybSB3aGV0aGVyIG9yIG5vdAorICAgICAgICAgICAgLy8gdGhpcyBkZXZp
Y2Ugd2lsbCBiZSBoYW5kbGVkIGJ5IEdhbWVDb250cm9sbGVyIGZyYW1ld29yaworICAgICAgICAg
ICAgd2FpdEZvck1hbmFnZW1lbnREZWNpc2lvbkZvckRldmljZShkZXZpY2UpOworICAgICAgICAg
ICAgcmV0dXJuOworI2VuZGlmIC8vIEhBVkUoR0NDT05UUk9MTEVSX0hJRF9ERVZJQ0VfQ0hFQ0sp
CisgICAgICAgIGNhc2UgR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtIYW5kbGVzRGV2aWNlOjpObzoK
KyAgICAgICAgICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrIGRvZXMg
bm90IGhhbmRsZSBhdHRhY2hlZCBkZXZpY2UgJXAgLSBISURHYW1lcGFkUHJvdmlkZXIgd2lsbCBo
YW5kbGUgaXQiLCBkZXZpY2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhbGxvd01hbmFnZW1lbnREZWNpc2lvbkRlbGF5KTsK
ICNlbmRpZiAvLyBIQVZFKE1VTFRJR0FNRVBBRFBST1ZJREVSX1NVUFBPUlQpCiAKICAgICBBU1NF
UlQoIW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CkBAIC0yNzIsMTIgKzM4NCwyOSBAQCB2b2lk
IEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQog
CiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlUmVtb3ZlZChJT0hJRERldmljZVJlZiBk
ZXZpY2UpCiB7CisjaWYgSEFWRShNVUxUSUdBTUVQQURQUk9WSURFUl9TVVBQT1JUKSAmJiAhSEFW
RShHQ0NPTlRST0xMRVJfSElEX0RFVklDRV9DSEVDSykKKyAgICBib29sIHdhc1JlbW92ZWQgPSBy
ZW1vdmVEZXZpY2VXYWl0aW5nRm9yTWFuYWdlbWVudERlY2lzaW9uKGRldmljZSk7CisjZW5kaWYK
KwogICAgIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiByZW1vdmVkR2FtZXBhZCA9IHJlbW92
ZUdhbWVwYWRGb3JEZXZpY2UoZGV2aWNlKTsKIAogICAgIGlmICghcmVtb3ZlZEdhbWVwYWQpIHsK
KyNpZiBIQVZFKE1VTFRJR0FNRVBBRFBST1ZJREVSX1NVUFBPUlQpCiAgICAgICAgIGF1dG8gdGFr
ZW4gPSBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzLnRha2UoZGV2aWNlKTsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgdGFrZW4pOwotICAgICAgICBMT0coR2FtZXBhZCwgIkhJ
REdhbWVwYWRQcm92aWRlciBpbmZvcm1lZCBvZiByZW1vdmFsIG9mIGRldmljZSAlcCwgd2hpY2gg
aXMgbWFuYWdlZCBieSBHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsuIElnbm9yaW5nLiIsIGRldmlj
ZSk7CisKKyAgICAgICAgLy8gSWYgdGhpcyBkZXZpY2UgZGlkbid0IHNob3cgdXAgaW4gdGhlIGdh
bWVwYWQgbWFwLCB0aGVuIGl0IHdhcyBlaXRoZXIgbWFuYWdlZCBieSBHYW1lQ29udHJvbGxlciBm
cmFtZXdvcmsKKyAgICAgICAgLy8gb3Igd2Ugd2VyZSBzdGlsbCB3YWl0aW5nIHRvIGRlY2lkZSB3
aGljaCBwcm92aWRlciB3b3VsZCBtYW5hZ2UgaXQuCisjaWYgSEFWRShHQ0NPTlRST0xMRVJfSElE
X0RFVklDRV9DSEVDSykKKyAgICAgICAgQVNTRVJUKHRha2VuKTsKKyNlbHNlCisgICAgICAgIEFT
U0VSVCh0YWtlbiB8fCB3YXNSZW1vdmVkKTsKKyNlbmRpZgorCisgICAgICAgIGlmICh0YWtlbikK
KyAgICAgICAgICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGluZm9ybWVkIG9m
IHJlbW92YWwgb2YgZGV2aWNlICVwLCB3aGljaCBpcyBtYW5hZ2VkIGJ5IEdhbWVDb250cm9sbGVy
IGZyYW1ld29yay4gSWdub3JpbmcuIiwgZGV2aWNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgaW5mb3JtZWQgb2YgcmVtb3ZhbCBv
ZiBkZXZpY2UgJXAsIHdoaWNoIHdhcyBub3QgeWV0IG1hbmFnZWQuIElnbm9yaW5nLiIsIGRldmlj
ZSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404349</attachid>
            <date>2020-07-15 09:19:23 -0700</date>
            <delta_ts>2020-07-15 10:06:45 -0700</delta_ts>
            <desc>Other configuration build fixes</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>3382</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYmQzMzc5M2QxYTguLjdjM2NiM2Q3ZTA3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDIwLTA3LTE1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggc29tZSBidWlsZCBjb25maWd1cmF0aW9ucyBhZnRlciByMjY0Mzg5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyNDUK
KworICAgICAgICBVbnJldmlld2VkLgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
SElER2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3Zp
ZGVyOjpkZXZpY2VSZW1vdmVkKTogVU5VU0VEX1BBUkFNIGluIGEgcmVsZWFzZSBidWlsZC4KKwog
MjAyMC0wNy0xNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0lGQ10gUmVtb3ZlIERpc3BsYXk6OkxpbmVCb3g6OmlzQ29uc2lkZXJlZEVtcHR5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwppbmRleCA1OGNkNTBiNzU1MWMuLjE0MDdkNmI5MjBiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDctMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBzb21lIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFm
dGVyIHIyNjQzODkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDI0NQorCisgICAgICAgIFVucmV2aWV3ZWQuCisKKyAgICAgICAgKiBwYWwvc3BpL21h
Yy9JT0tpdFNQSU1hYy5oOiBGb3J3YXJkIGRlY2xhcmUgbmV3bHkgdXNlZCBzdHVmZi4KKwogMjAy
MC0wNy0xNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVz
b2x2ZSByYWNlIGJldHdlZW4gSU9ISURNYW5hZ2VyIGFuZCBHYW1lQ29udHJvbGxlciBmcmFtZXdv
cmsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSU9LaXRTUElN
YWMuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oCmluZGV4
IDFhZGI5N2I2N2MxYi4uYzc2ODgxODlmZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9tYWMvSU9LaXRTUElNYWMuaApAQCAtMzcsMTAgKzM3LDIzIEBAIHR5cGVkZWYgc3RydWN0
IENGX0JSSURHRURfVFlQRShpZCkgX19JT0hJRFNlcnZpY2VDbGllbnQgKiBJT0hJRFNlcnZpY2VD
bGllbnRSZWY7CiB0eXBlZGVmIHN0cnVjdCBDRl9CUklER0VEX1RZUEUoaWQpIF9fSU9ISURFdmVu
dFN5c3RlbUNsaWVudCAqIElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWY7CiB0eXBlZGVmIHZvaWQg
KF5JT0hJRFNlcnZpY2VDbGllbnRCbG9jaykodm9pZCAqLCB2b2lkICosIElPSElEU2VydmljZUNs
aWVudFJlZik7CiAKK3R5cGVkZWYgQ0ZfRU5VTShpbnQsIElPSElERXZlbnRTeXN0ZW1DbGllbnRU
eXBlKQoreworICAgIGtJT0hJREV2ZW50U3lzdGVtQ2xpZW50VHlwZUFkbWluLAorICAgIGtJT0hJ
REV2ZW50U3lzdGVtQ2xpZW50VHlwZU1vbml0b3IsCisgICAga0lPSElERXZlbnRTeXN0ZW1DbGll
bnRUeXBlUGFzc2l2ZSwKKyAgICBrSU9ISURFdmVudFN5c3RlbUNsaWVudFR5cGVSYXRlQ29udHJv
bGxlZCwKKyAgICBrSU9ISURFdmVudFN5c3RlbUNsaWVudFR5cGVTaW1wbGUKK307CisKK0lPSElE
RXZlbnRTeXN0ZW1DbGllbnRSZWYgSU9ISURFdmVudFN5c3RlbUNsaWVudENyZWF0ZVdpdGhUeXBl
KENGQWxsb2NhdG9yUmVmLCBJT0hJREV2ZW50U3lzdGVtQ2xpZW50VHlwZSwgQ0ZEaWN0aW9uYXJ5
UmVmKTsKIElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYgSU9ISURFdmVudFN5c3RlbUNsaWVudENy
ZWF0ZShDRkFsbG9jYXRvclJlZik7CiB2b2lkIElPSElERXZlbnRTeXN0ZW1DbGllbnRTZXRNYXRj
aGluZyhJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmLCBDRkRpY3Rpb25hcnlSZWYpOwordm9pZCBJ
T0hJREV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0Y2hpbmdNdWx0aXBsZShJT0hJREV2ZW50U3lzdGVt
Q2xpZW50UmVmLCBDRkFycmF5UmVmKTsKIElPSElEU2VydmljZUNsaWVudFJlZiBJT0hJREV2ZW50
U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VGb3JSZWdpc3RyeUlEKElPSElERXZlbnRTeXN0ZW1DbGll
bnRSZWYsIHVpbnQ2NF90IHJlZ2lzdHJ5SUQpOwogdm9pZCBJT0hJREV2ZW50U3lzdGVtQ2xpZW50
UmVnaXN0ZXJEZXZpY2VNYXRjaGluZ0Jsb2NrKElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYsIElP
SElEU2VydmljZUNsaWVudEJsb2NrLCB2b2lkICosIHZvaWQgKik7Cit2b2lkIElPSElERXZlbnRT
eXN0ZW1DbGllbnRVbnJlZ2lzdGVyRGV2aWNlTWF0Y2hpbmdCbG9jayhJT0hJREV2ZW50U3lzdGVt
Q2xpZW50UmVmKTsKK3ZvaWQgSU9ISURFdmVudFN5c3RlbUNsaWVudFNjaGVkdWxlV2l0aERpc3Bh
dGNoUXVldWUoSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiwgZGlzcGF0Y2hfcXVldWVfdCk7CiBX
VEZfRVhURVJOX0NfRU5ECiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBh
ZFByb3ZpZGVyLm1tCmluZGV4IDViMDI5ZGY4MzViNS4uZjkxMGZlYTU2ZWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLm1tCkBAIC0zOTksNiArMzk5LDcgQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRl
dmljZVJlbW92ZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogI2lmIEhBVkUoR0NDT05UUk9MTEVS
X0hJRF9ERVZJQ0VfQ0hFQ0spCiAgICAgICAgIEFTU0VSVCh0YWtlbik7CiAjZWxzZQorICAgICAg
ICBVTlVTRURfUEFSQU0od2FzUmVtb3ZlZCk7CiAgICAgICAgIEFTU0VSVCh0YWtlbiB8fCB3YXNS
ZW1vdmVkKTsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404352</attachid>
            <date>2020-07-15 10:06:48 -0700</date>
            <delta_ts>2020-07-15 10:10:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214245-20200715100647.patch</filename>
            <type>text/plain</type>
            <size>2311</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA1OGNkNTBi
NzU1MWMzOTY1ZWU1YjcyNzQ5YjRhMmI4MmExNWU3ZWM5Li40YzE1MGQzOGE5NDVkMTJiMWRmZDMy
YTViM2U4M2FlYWJjMWZmNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAor
MjAyMC0wNy0xNSAgQnJhZHkgRWlkc29uIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBV
bnJldmlld2VkLCBmaXggT3BlbiBTb3VyY2UgYnVpbGQgYWZ0ZXIgcjI2NDM4OS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDI0NQorCisgICAgICAg
ICogcGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaDoKKwogMjAyMC0wNy0xNSAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb2x2ZSByYWNlIGJldHdlZW4gSU9I
SURNYW5hZ2VyIGFuZCBHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oCmluZGV4IDFhZGI5N2I2N2MxYmZhN2Y1Mzgz
NjBiMzczOWUxMGEzNmFmMjlmZTYuLmM3Njg4MTg5ZmQ3NTkwNzNjZTkxN2Y5NjljMjk4MWY2NzQ4
MmM4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQ
SU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5o
CkBAIC0zNywxMCArMzcsMjMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBf
X0lPSElEU2VydmljZUNsaWVudCAqIElPSElEU2VydmljZUNsaWVudFJlZjsKIHR5cGVkZWYgc3Ry
dWN0IENGX0JSSURHRURfVFlQRShpZCkgX19JT0hJREV2ZW50U3lzdGVtQ2xpZW50ICogSU9ISURF
dmVudFN5c3RlbUNsaWVudFJlZjsKIHR5cGVkZWYgdm9pZCAoXklPSElEU2VydmljZUNsaWVudEJs
b2NrKSh2b2lkICosIHZvaWQgKiwgSU9ISURTZXJ2aWNlQ2xpZW50UmVmKTsKIAordHlwZWRlZiBD
Rl9FTlVNKGludCwgSU9ISURFdmVudFN5c3RlbUNsaWVudFR5cGUpCit7CisgICAga0lPSElERXZl
bnRTeXN0ZW1DbGllbnRUeXBlQWRtaW4sCisgICAga0lPSElERXZlbnRTeXN0ZW1DbGllbnRUeXBl
TW9uaXRvciwKKyAgICBrSU9ISURFdmVudFN5c3RlbUNsaWVudFR5cGVQYXNzaXZlLAorICAgIGtJ
T0hJREV2ZW50U3lzdGVtQ2xpZW50VHlwZVJhdGVDb250cm9sbGVkLAorICAgIGtJT0hJREV2ZW50
U3lzdGVtQ2xpZW50VHlwZVNpbXBsZQorfTsKKworSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiBJ
T0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlV2l0aFR5cGUoQ0ZBbGxvY2F0b3JSZWYsIElPSElE
RXZlbnRTeXN0ZW1DbGllbnRUeXBlLCBDRkRpY3Rpb25hcnlSZWYpOwogSU9ISURFdmVudFN5c3Rl
bUNsaWVudFJlZiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKENGQWxsb2NhdG9yUmVmKTsK
IHZvaWQgSU9ISURFdmVudFN5c3RlbUNsaWVudFNldE1hdGNoaW5nKElPSElERXZlbnRTeXN0ZW1D
bGllbnRSZWYsIENGRGljdGlvbmFyeVJlZik7Cit2b2lkIElPSElERXZlbnRTeXN0ZW1DbGllbnRT
ZXRNYXRjaGluZ011bHRpcGxlKElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYsIENGQXJyYXlSZWYp
OwogSU9ISURTZXJ2aWNlQ2xpZW50UmVmIElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2Vydmlj
ZUZvclJlZ2lzdHJ5SUQoSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiwgdWludDY0X3QgcmVnaXN0
cnlJRCk7CiB2b2lkIElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWdpc3RlckRldmljZU1hdGNoaW5n
QmxvY2soSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiwgSU9ISURTZXJ2aWNlQ2xpZW50QmxvY2ss
IHZvaWQgKiwgdm9pZCAqKTsKK3ZvaWQgSU9ISURFdmVudFN5c3RlbUNsaWVudFVucmVnaXN0ZXJE
ZXZpY2VNYXRjaGluZ0Jsb2NrKElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYpOwordm9pZCBJT0hJ
REV2ZW50U3lzdGVtQ2xpZW50U2NoZWR1bGVXaXRoRGlzcGF0Y2hRdWV1ZShJT0hJREV2ZW50U3lz
dGVtQ2xpZW50UmVmLCBkaXNwYXRjaF9xdWV1ZV90KTsKIFdURl9FWFRFUk5fQ19FTkQKIAogI2Vu
ZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>