<?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>140691</bug_id>
          
          <creation_ts>2015-01-20 12:18:58 -0800</creation_ts>
          <short_desc>Teach run-webkit-app --simulator how to install custom built app</short_desc>
          <delta_ts>2015-01-27 07:18:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 8.1</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1062840</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-01-20 12:18:58 -0800</bug_when>
    <thetext>Currently run-webkit-app --simulator can only run apps that are either system apps or have been installed (say, using simctl install) in the simulator device whose name has the form &quot;iPhone 5s For WebKit Development.&quot; Towards making run-webkit-app more straightforward to use we should teach webkitdirs::runIOSWebKitAppInSimulator() how to install a custom built app. As a side effect of such a change run-safari --simulator will know how to install a custom built MobileSafari (if it exists).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062856</commentid>
    <comment_count>1</comment_count>
      <attachid>245013</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-01-20 13:09:10 -0800</bug_when>
    <thetext>Created attachment 245013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064185</commentid>
    <comment_count>2</comment_count>
      <attachid>245013</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-01-26 10:27:26 -0800</bug_when>
    <thetext>Comment on attachment 245013
Patch

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

r=me, but please consider renaming openIOSSimulator() (in a follow-up patch if easier) and whether it&apos;s okay to remove the sleep() calls from the do/while loops.

&gt; Tools/Scripts/webkitdirs.pm:2074
&gt;  sub openIOSSimulator($)

This subroutine should have a better name if it always quits the iOS Simulator, and then relaunches it.

It will also make the comments below (near calls to openIOSSimulator()) make more sense.  :)

&gt; Tools/Scripts/webkitdirs.pm:2086
&gt;      my $device;
&gt;      do {
&gt; -        $device = iosSimulatorDeviceByName($simulatedDevice-&gt;{name});
&gt; -        sleep(2);
&gt; +        $device = iosSimulatorDeviceByUDID($simulatedDevice-&gt;{UDID});
&gt;      } while ($device-&gt;{state} ne SIMULATOR_DEVICE_STATE_BOOTED);

Why is it okay to remove the sleep(2) statement here?  Do we really want to run this as quickly as possible?  (I&apos;d like this answered before landing the patch.)

Also, this loop is duplicated (other than the UDID and the state being waited for) in quitIOSSimulator().  Might be a good candidate to extract a common subroutine?  (This does not block landing the patch.)

&gt; Tools/Scripts/webkitdirs.pm:2103
&gt; +    my $device;
&gt; +    do {
&gt; +        $device = iosSimulatorDeviceByUDID($waitForShutdownOfSimulatedDeviceUDID);
&gt; +    } while ($device-&gt;{state} ne SIMULATOR_DEVICE_STATE_SHUTDOWN);

Ditto about no sleep() statement here, and extracting common code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064199</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-01-26 11:18:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Tools/Scripts/webkitdirs.pm:2074
&gt; &gt;  sub openIOSSimulator($)
&gt; 
&gt; This subroutine should have a better name if it always quits the iOS
&gt; Simulator, and then relaunches it.
&gt;

Will rename this function to relaunchIOSSimulator.

&gt; 
&gt; &gt; Tools/Scripts/webkitdirs.pm:2086
&gt; &gt;      my $device;
&gt; &gt;      do {
&gt; &gt; -        $device = iosSimulatorDeviceByName($simulatedDevice-&gt;{name});
&gt; &gt; -        sleep(2);
&gt; &gt; +        $device = iosSimulatorDeviceByUDID($simulatedDevice-&gt;{UDID});
&gt; &gt;      } while ($device-&gt;{state} ne SIMULATOR_DEVICE_STATE_BOOTED);
&gt; 
&gt; Why is it okay to remove the sleep(2) statement here?  Do we really want to
&gt; run this as quickly as possible?

As discussed on IRC today (01/26), the sleep() calls made run-safari feel sluggish since it takes units in seconds. Let&apos;s try sleeping for 500ms between polls to the file system for the simulator device state.

&gt; Also, this loop is duplicated (other than the UDID and the state being
&gt; waited for) in quitIOSSimulator().  Might be a good candidate to extract a
&gt; common subroutine?  (This does not block landing the patch.)
&gt; 
&gt; &gt; Tools/Scripts/webkitdirs.pm:2103
&gt; &gt; +    my $device;
&gt; &gt; +    do {
&gt; &gt; +        $device = iosSimulatorDeviceByUDID($waitForShutdownOfSimulatedDeviceUDID);
&gt; &gt; +    } while ($device-&gt;{state} ne SIMULATOR_DEVICE_STATE_SHUTDOWN);
&gt; 
&gt; Ditto about no sleep() statement here, and extracting common code.

Will extract common code into a shared function and sleep for 500ms between calls to iosSimulatorDeviceByUDID().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064201</commentid>
    <comment_count>4</comment_count>
      <attachid>245359</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-01-26 11:26:29 -0800</bug_when>
    <thetext>Created attachment 245359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064204</commentid>
    <comment_count>5</comment_count>
      <attachid>245359</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-01-26 11:34:56 -0800</bug_when>
    <thetext>Comment on attachment 245359
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064207</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-01-26 11:45:47 -0800</bug_when>
    <thetext>Committed r179130: &lt;http://trac.webkit.org/changeset/179130&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064508</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-01-27 07:18:30 -0800</bug_when>
    <thetext>I inadvertently omitted the directory test flag in hasUserInstalledAppInSimulatorDevice() when testing for the presence of the simulator device-specific user installed app directory.

Committed fix in &lt;http://trac.webkit.org/changeset/179179&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245013</attachid>
            <date>2015-01-20 13:09:10 -0800</date>
            <delta_ts>2015-01-26 11:26:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140691-20150120130917.patch</filename>
            <type>text/plain</type>
            <size>14621</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NjE4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWIwMGUxYWMwYWI0ZTUyMTcyMThlNWY2YjBiOWI5MTlk
MmI4MjE3NC4uYmQ5MTU4YzE3MmFmZTc3MjA2ZWVjMGU2MjRkN2EzYmUxZjUyNWUzNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5
IEBACisyMDE1LTAxLTIwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBUZWFjaCBydW4td2Via2l0LWFwcCAtLXNpbXVsYXRvciBob3cgdG8gaW5zdGFsbCBjdXN0
b20gYnVpbHQgYXBwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDA2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZSBzaG91bGQgdGVhY2ggcnVuLXdlYmtpdC1hcHAgLS1zaW11bGF0b3IgaG93IHRvIGlu
c3RhbGwgYSBjdXN0b20gYnVpbHQgYXBwLgorCisgICAgICAgIEN1cnJlbnRseSBydW4td2Via2l0
LWFwcCAtLXNpbXVsYXRvciBjYW4gb25seSBydW4gYSBzeXN0ZW0gYXBwIG9yIGFuIGFwcCB0aGF0
CisgICAgICAgIHdhcyBpbnN0YWxsZWQgdXNpbmcgdGhlIHNpbWN0bCBjb21tYW5kIGxpbmUgdG9v
bC4gRm9yIGNvbnZlbmllbmNlIHdlIHNob3VsZAorICAgICAgICB0ZWFjaCBydW4td2Via2l0LWFw
cCAtLXNpbXVsYXRvciBob3cgdG8gaW5zdGFsbCBhIGN1c3RvbSBidWlsdCBhcHAuCisKKyAgICAg
ICAgQXMgYSBzaWRlIGVmZmVjdCBvZiB0aGlzIGNoYW5nZSBydW4tc2FmYXJpIC0tc2ltdWxhdG9y
IHdpbGwgaW5zdGFsbCBhbmQgcnVuCisgICAgICAgIGEgY3VzdG9tIGJ1aWx0IG9mIE1vYmlsZVNh
ZmFyaSAoaWYgaXQgZXhpc3RzKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0ZGlycy5wbToK
KyAgICAgICAgKGlPU1NpbXVsYXRvckRldmljZXMpOiBBZGRlZCBGSVhNRSBjb21tZW50IHRvIGRl
Y291cGxlIGRldmljZSByZXByZXNlbnRhdGlvbiBpbgorICAgICAgICBQZXJsIGZyb20gdGhlIHN0
cnVjdHVyZSBvZiB0aGUgZGV2aWNlLnBsaXN0IGZpbGUuCisgICAgICAgIChwbGlzdFBhdGhGcm9t
QnVuZGxlKTogRml4IGlmLXN0YXRlbWVudCBjb25kaXRpb24gc28gdGhhdCB3ZSBhY3R1YWxseSBw
ZXJmb3JtIGEKKyAgICAgICAgZmlsZSBzeXN0ZW0gY2hlY2sgdG8gZGV0ZXJtaW5lIHRoZSBwbGlz
dCBwYXRoIGZvciBhIE1hYyBhcHAgYnVuZGxlLgorICAgICAgICAoYXBwSWRlbnRpZmllckZyb21C
dW5kbGUpOiBQYXNzIGFic29sdXRlIGZpbGVzIHN5c3RlbSBwYXRoIHRvIGRlZmF1bHRzKDEpLiBP
dGhlcndpc2UsCisgICAgICAgIGl0IHdpbGwgY29tcGxhaW4gdGhhdCBpdCBjYW5ub3QgZmluZCB0
aGUgZmlsZTogIkRvbWFpbiAuLi4gZG9lcyBub3QgZXhpc3QiLgorICAgICAgICAoYXBwRGlzcGxh
eU5hbWVGcm9tQnVuZGxlKTogRGl0dG8uCisgICAgICAgIChvcGVuSU9TU2ltdWxhdG9yKTogUXVp
dCBpT1MgU2ltdWxhdG9yIChpZiBpdCdzIG9wZW4pIGJlZm9yZSBvcGVuaW5nIGl0IGFnYWluIHNv
IGFzCisgICAgICAgIHRvIGVuc3VyZSB0aGF0IHRoZSBpT1MgU2ltdWxhdG9yIGJvb3RzIHRoZSBz
cGVjaWZpZWQgZGV2aWNlLgorICAgICAgICAocXVpdElPU1NpbXVsYXRvcik6IEFkZGVkIG9wdGlv
bmFsIHBhcmFtZXRlciwgJHdhaXRGb3JTaHV0ZG93bk9mU2ltdWxhdGVkRGV2aWNlVURJRC4KKyAg
ICAgICAgQXMgaW1wbGllZCBieSBpdHMgbmFtZSwgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCByZXR1
cm4gdW50aWwgdGhlIHNwZWNpZmllZCBzaW11bGF0b3IKKyAgICAgICAgZGV2aWNlIFVESUQgaXMg
aW4gdGhlIHNodXRkb3duIHN0YXRlLgorICAgICAgICAoaW9zU2ltdWxhdG9yRGV2aWNlQnlVRElE
KTogQWRkZWQuCisgICAgICAgIChpc0lPU1NpbXVsYXRvclN5c3RlbUluc3RhbGxlZEFwcCk6IFJl
c29sdmUgc3ltYm9saWMgbGlua3MgaW4gaW9zU2ltdWxhdG9yQXBwbGljYXRpb25zUGF0aCgpCisg
ICAgICAgIGJlZm9yZSB1c2luZyBpdCBhcyBwYXJ0IG9mIGEgcHJlZml4IG1hdGNoIHRvIGF2b2lk
IGEgbWlzbWF0Y2guIEluIHRoZSBwdWJsaWMgaU9TIDguMSBTREsgdGhlCisgICAgICAgIHJldHVy
biB2YWx1ZSBvZiBpb3NTaW11bGF0b3JBcHBsaWNhdGlvbnNQYXRoKCksIHdoaWNoIHJldHVybnMg
YSByZXN1bHQgYW5hbG9nb3VzIHRvIHRoZSBzaGVsbAorICAgICAgICBleHByZXNzaW9uIGVjaG8g
YHhjcnVuIC0tc2RrIGlwaG9uZXNpbXVsYXRvciAtLXNob3ctc2RrLXBhdGhgL0FwcGxpY2F0aW9u
cy8sIGNvbnRhaW5zIGEKKyAgICAgICAgc3ltYm9saWMgbGluay4gU3BlY2lmaWNhbGx5LCBlY2hv
IGB4Y3J1biAtLXNkayBpcGhvbmVzaW11bGF0b3IgLS1zaG93LXNkay1wYXRoYCByZXR1cm5zCisg
ICAgICAgIC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9y
bXMvaVBob25lU2ltdWxhdG9yLnBsYXRmb3JtL0RldmVsb3Blci9TREtzL2lQaG9uZVNpbXVsYXRv
cjguMS5zZGssCisgICAgICAgIHdoaWNoIGlzIGEgc3ltYm9saWMgbGluayB0byAvQXBwbGljYXRp
b25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZVNpbXVsYXRv
ci5wbGF0Zm9ybS9EZXZlbG9wZXIvU0RLcy9pUGhvbmVTaW11bGF0b3Iuc2RrLgorICAgICAgICAo
aGFzVXNlckluc3RhbGxlZEFwcEluU2ltdWxhdG9yRGV2aWNlKTogQWRkZWQuCisgICAgICAgIChp
c1NpbXVsYXRvckRldmljZUJvb3RlZCk6IEFkZGVkLgorICAgICAgICAocnVuSU9TV2ViS2l0QXBw
SW5TaW11bGF0b3IpOiBNb2RpZmllZCB0byBpbnN0YWxsIGEgY3VzdG9tIGJ1aWx0IGFwcCAoaWYg
bmVlZGVkKS4gRm9yIG5vdywKKyAgICAgICAgc3dpdGNoaW5nIGJldHdlZW4gYSBzeXN0ZW0gaW5z
dGFsbGVkIGFwcCBhbmQgYSBjdXN0b20gYnVpbHQgdmVyc2lvbiBvZiB0aGUgc2FtZSBhcHAgKGUu
Zy4KKyAgICAgICAgY3VzdG9tIGJ1aWxkIG9mIE1vYmlsZVNhZmFyaSkgd2lsbCBlcmFzZSBhbGwg
Y29udGVudHMgYW5kIHNldHRpbmdzIGluIHRoZSBzaW11bGF0b3IgZGV2aWNlLgorICAgICAgICAo
ZXJhc2VJT1NTaW11bGF0b3JEZXZpY2UpOiBEZWxldGVkOyBpbmxpbmUgaW1wbGVtZW50YXRpb24g
aW50byBydW5JT1NXZWJLaXRBcHBJblNpbXVsYXRvcigpCisgICAgICAgIGFzIHRoYXQgd2FzIHRo
ZSBvbmx5IGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAoYm9vdGVkSU9TU2ltdWxh
dG9yRGV2aWNlKTogRGVsZXRlZC4KKwogMjAxNS0wMS0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEFkZCBhIGJhc2ljIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBX
S1ZpZXcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0ZGlycy5wbQppbmRleCAwMmIyM2I0NmIyN2IzZmM1NThhZGMwY2JiMTUzYjJh
MWRmYjNiMWQzLi41ZDBmZDQxNmY4ZTJmNzNlYTA0ZWQxNTc3YzMwODc1NzgyZmVlZmJjIDEwMDc1
NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRkaXJzLnBtCkBAIC0zNyw2ICszNyw3IEBAIHVzZSBDd2QgcXcocmVhbHBhdGgpOwogdXNl
IERpZ2VzdDo6TUQ1IHF3KG1kNV9oZXgpOwogdXNlIEZpbmRCaW47CiB1c2UgRmlsZTo6QmFzZW5h
bWU7Cit1c2UgRmlsZTo6RmluZDsKIHVzZSBGaWxlOjpQYXRoIHF3KG1rcGF0aCBybXRyZWUpOwog
dXNlIEZpbGU6OlNwZWM7CiB1c2UgRmlsZTo6c3RhdDsKQEAgLTg2LDYgKzg3LDcgQEAgQkVHSU4g
ewogCiB1c2UgY29uc3RhbnQgVVNFX09QRU5fQ09NTUFORCA9PiAxOyAjIFVzZWQgaW4gcnVuTWFj
V2ViS2l0QXBwKCkuCiB1c2UgY29uc3RhbnQgSU5DTFVERV9PUFRJT05TX0ZPUl9ERUJVR0dJTkcg
PT4gMTsKK3VzZSBjb25zdGFudCBTSU1VTEFUT1JfREVWSUNFX1NUQVRFX1NIVVRET1dOID0+ICIx
IjsKIHVzZSBjb25zdGFudCBTSU1VTEFUT1JfREVWSUNFX1NUQVRFX0JPT1RFRCA9PiAiMyI7CiAK
IG91ciBARVhQT1JUX09LOwpAQCAtMTE0OSw2ICsxMTUxLDkgQEAgc3ViIGlPU1NpbXVsYXRvckRl
dmljZXMKICAgICB9IHJlYWRkaXIoREVWSUNFUyk7CiAgICAgY2xvc2UoREVWSUNFUyk7CiAKKyAg
ICAjIEZJWE1FOiBXZSBzaG91bGQgcGFyc2UgdGhlIGRldmljZS5wbGlzdCBmaWxlIG91cnNlbGYg
YW5kIG1hcCB0aGUgZGljdGlvbmFyeSBrZXlzIGluIGl0IHRvIGtub3duCisgICAgIyAgICAgICAg
ZGljdGlvbmFyeSBrZXlzIHNvIGFzIHRvIGRlY291cGxlIG91ciByZXByZXNlbnRhdGlvbiBvZiB0
aGUgcGxpc3QgZnJvbSB0aGUgYWN0dWFsIHN0cnVjdHVyZQorICAgICMgICAgICAgIG9mIHRoZSBw
bGlzdCwgd2hpY2ggbWF5IGNoYW5nZS4KICAgICBteSBAZGV2aWNlcyA9IG1hcCB7CiAgICAgICAg
IEZvdW5kYXRpb246OnBlcmxSZWZGcm9tT2JqZWN0UmVmKE5TRGljdGlvbmFyeS0+ZGljdGlvbmFy
eVdpdGhDb250ZW50c09mRmlsZV8oIiRkZXZpY2VzUGF0aC8kXy9kZXZpY2UucGxpc3QiKSk7CiAg
ICAgfSBAdWRpZHM7CkBAIC0xMTc5LDIzICsxMTg0LDYgQEAgc3ViIGNyZWF0ZWlPU1NpbXVsYXRv
ckRldmljZQogICAgIGRpZSAiRGV2aWNlICRuYW1lICRkZXZpY2VUeXBlSWQgJHJ1bnRpbWVJZCB3
YXNuJ3QgZm91bmQgaW4gIiAuIGlPU1NpbXVsYXRvckRldmljZXNQYXRoKCk7CiB9CiAKLXN1YiBl
cmFzZUlPU1NpbXVsYXRvckRldmljZSgkKQotewotICAgIG15ICR1ZGlkID0gc2hpZnQ7Ci0gICAg
cmV0dXJuIGV4aXRTdGF0dXMoc3lzdGVtKCJ4Y3J1biIsICItLXNkayIsICJpcGhvbmVzaW11bGF0
b3IiLCAic2ltY3RsIiwgImVyYXNlIiwgJHVkaWQpKSA9PSAwOwotfQotCi1zdWIgYm9vdGVkSU9T
U2ltdWxhdG9yRGV2aWNlKCkKLXsKLSAgICBteSBAZGV2aWNlcyA9IGlPU1NpbXVsYXRvckRldmlj
ZXMoKTsKLSAgICBmb3IgbXkgJGRldmljZSAoQGRldmljZXMpIHsKLSAgICAgICAgaWYgKCRkZXZp
Y2UtPntzdGF0ZX0gZXEgU0lNVUxBVE9SX0RFVklDRV9TVEFURV9CT09URUQpIHsKLSAgICAgICAg
ICAgIHJldHVybiAkZGV2aWNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB1bmRlZjsK
LX0KLQogc3ViIHdpbGxVc2VJT1NEZXZpY2VTREtXaGVuQnVpbGRpbmcoKQogewogICAgIHJldHVy
biB4Y29kZVNES1BsYXRmb3JtTmFtZSgpIGVxICJpcGhvbmVvcyI7CkBAIC0yMDYzLDE0ICsyMDUx
LDE0IEBAIHN1YiBwbGlzdFBhdGhGcm9tQnVuZGxlKCQpCiB7CiAgICAgbXkgKCRhcHBCdW5kbGUp
ID0gQF87CiAgICAgcmV0dXJuICIkYXBwQnVuZGxlL0luZm8ucGxpc3QiIGlmIC1mICIkYXBwQnVu
ZGxlL0luZm8ucGxpc3QiOyAjIGlPUyBhcHAgYnVuZGxlCi0gICAgcmV0dXJuICIkYXBwQnVuZGxl
L0NvbnRlbnRzL0luZm8ucGxpc3QiIGlmICIkYXBwQnVuZGxlL0NvbnRlbnRzL0luZm8ucGxpc3Qi
OyAjIE1hYyBhcHAgYnVuZGxlCisgICAgcmV0dXJuICIkYXBwQnVuZGxlL0NvbnRlbnRzL0luZm8u
cGxpc3QiIGlmIC1mICIkYXBwQnVuZGxlL0NvbnRlbnRzL0luZm8ucGxpc3QiOyAjIE1hYyBhcHAg
YnVuZGxlCiAgICAgcmV0dXJuICIiOwogfQogCiBzdWIgYXBwSWRlbnRpZmllckZyb21CdW5kbGUo
JCkKIHsKICAgICBteSAoJGFwcEJ1bmRsZSkgPSBAXzsKLSAgICBteSAkcGxpc3RQYXRoID0gcGxp
c3RQYXRoRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKTsKKyAgICBteSAkcGxpc3RQYXRoID0gRmlsZTo6
U3BlYy0+cmVsMmFicyhwbGlzdFBhdGhGcm9tQnVuZGxlKCRhcHBCdW5kbGUpKTsgIyBkZWZhdWx0
cygxKSB3aWxsIGNvbXBsYWluIGlmIHRoZSBzcGVjaWZpZWQgcGF0aCBpcyBub3QgYWJzb2x1dGUu
CiAgICAgY2hvbXAobXkgJGJ1bmRsZUlkZW50aWZpZXIgPSBgZGVmYXVsdHMgcmVhZCAnJHBsaXN0
UGF0aCcgQ0ZCdW5kbGVJZGVudGlmaWVyIDI+IC9kZXYvbnVsbGApOwogICAgIHJldHVybiAkYnVu
ZGxlSWRlbnRpZmllcjsKIH0KQEAgLTIwNzgsNyArMjA2Niw3IEBAIHN1YiBhcHBJZGVudGlmaWVy
RnJvbUJ1bmRsZSgkKQogc3ViIGFwcERpc3BsYXlOYW1lRnJvbUJ1bmRsZSgkKQogewogICAgIG15
ICgkYXBwQnVuZGxlKSA9IEBfOwotICAgIG15ICRwbGlzdFBhdGggPSBwbGlzdFBhdGhGcm9tQnVu
ZGxlKCRhcHBCdW5kbGUpOworICAgIG15ICRwbGlzdFBhdGggPSBGaWxlOjpTcGVjLT5yZWwyYWJz
KHBsaXN0UGF0aEZyb21CdW5kbGUoJGFwcEJ1bmRsZSkpOyAjIGRlZmF1bHRzKDEpIHdpbGwgY29t
cGxhaW4gaWYgdGhlIHNwZWNpZmllZCBwYXRoIGlzIG5vdCBhYnNvbHV0ZS4KICAgICBjaG9tcCht
eSAkYnVuZGxlRGlzcGxheU5hbWUgPSBgZGVmYXVsdHMgcmVhZCAnJHBsaXN0UGF0aCcgQ0ZCdW5k
bGVEaXNwbGF5TmFtZSAyPiAvZGV2L251bGxgKTsKICAgICByZXR1cm4gJGJ1bmRsZURpc3BsYXlO
YW1lOwogfQpAQCAtMjA4NiwyMCArMjA3NCwzMyBAQCBzdWIgYXBwRGlzcGxheU5hbWVGcm9tQnVu
ZGxlKCQpCiBzdWIgb3BlbklPU1NpbXVsYXRvcigkKQogewogICAgIG15ICgkc2ltdWxhdGVkRGV2
aWNlKSA9IEBfOworICAgIHF1aXRJT1NTaW11bGF0b3IoJHNpbXVsYXRlZERldmljZS0+e1VESUR9
KTsKKwogICAgIGNob21wKG15ICRkZXZlbG9wZXJEaXJlY3RvcnkgPSAkRU5We0RFVkVMT1BFUl9E
SVJ9IHx8IGB4Y29kZS1zZWxlY3QgLS1wcmludC1wYXRoYCk7CiAgICAgbXkgJGlvc1NpbXVsYXRv
clBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkZXZlbG9wZXJEaXJlY3RvcnksICJBcHBsaWNh
dGlvbnMiLCAiaU9TIFNpbXVsYXRvci5hcHAiKTsKIAogICAgIHN5c3RlbSgib3BlbiIsICItYSIs
ICRpb3NTaW11bGF0b3JQYXRoLCAiLS1hcmdzIiwgIi1DdXJyZW50RGV2aWNlVURJRCIsICRzaW11
bGF0ZWREZXZpY2UtPntVRElEfSkgPT0gMCBvciBkaWUgIkZhaWxlZCB0byBvcGVuICRpb3NTaW11
bGF0b3JQYXRoOiAkISI7CiAgICAgbXkgJGRldmljZTsKICAgICBkbyB7Ci0gICAgICAgICRkZXZp
Y2UgPSBpb3NTaW11bGF0b3JEZXZpY2VCeU5hbWUoJHNpbXVsYXRlZERldmljZS0+e25hbWV9KTsK
LSAgICAgICAgc2xlZXAoMik7CisgICAgICAgICRkZXZpY2UgPSBpb3NTaW11bGF0b3JEZXZpY2VC
eVVESUQoJHNpbXVsYXRlZERldmljZS0+e1VESUR9KTsKICAgICB9IHdoaWxlICgkZGV2aWNlLT57
c3RhdGV9IG5lIFNJTVVMQVRPUl9ERVZJQ0VfU1RBVEVfQk9PVEVEKTsKIH0KIAotc3ViIHF1aXRJ
T1NTaW11bGF0b3IoKQorc3ViIHF1aXRJT1NTaW11bGF0b3IoOyQpCiB7Ci0gICAgcmV0dXJuIHN5
c3RlbSB7Im9zYXNjcmlwdCJ9ICJvc2FzY3JpcHQiLCAiLWUiLCAndGVsbCBhcHBsaWNhdGlvbiAi
aU9TIFNpbXVsYXRvciIgdG8gcXVpdCc7CisgICAgbXkgKCR3YWl0Rm9yU2h1dGRvd25PZlNpbXVs
YXRlZERldmljZVVESUQpID0gQF87CisgICAgZXhpdFN0YXR1cyhzeXN0ZW0geyJvc2FzY3JpcHQi
fSAib3Nhc2NyaXB0IiwgIi1lIiwgJ3RlbGwgYXBwbGljYXRpb24gImlPUyBTaW11bGF0b3IiIHRv
IHF1aXQnKSA9PSAwIG9yIGRpZSAiRmFpbGVkIHRvIHF1aXQgaU9TIFNpbXVsYXRvcjogJCEiOwor
ICAgIGlmICghZGVmaW5lZCgkd2FpdEZvclNodXRkb3duT2ZTaW11bGF0ZWREZXZpY2VVRElEKSkg
eworICAgICAgICByZXR1cm47CisgICAgfQorICAgICMgRklYTUU6IFdlIGFzc3VtZSB0aGF0ICR3
YWl0Rm9yU2h1dGRvd25PZlNpbXVsYXRlZERldmljZVVESUQgd2FzIG5vdCBib290ZWQgdXNpbmcg
dGhlIHNpbWN0bCBjb21tYW5kIGxpbmUgdG9vbC4KKyAgICAjICAgICAgICBPdGhlcndpc2Ugd2Ug
d2lsbCBzcGluIGluZGVmaW5pdGVseSBzaW5jZSBxdWl0aW5nIHRoZSBpT1MgU2ltdWxhdG9yIHdp
bGwgbm90IHNodXRkb3duIHRoaXMgZGV2aWNlLiBXZQorICAgICMgICAgICAgIHNob3VsZCBhZGQg
YSBtYXhpbXVtIHRpbWUgbGltaXQgdG8gd2FpdCBmb3IgYSBkZXZpY2UgdG8gc2h1dGRvd24gYW5k
IGVpdGhlciByZXR1cm4gYW4gZXJyb3Igb3IgZGllKCkKKyAgICAjICAgICAgICBvbiBleHBpcmF0
aW9uIG9mIHRoZSB0aW1lIGxpbWl0LgorICAgIG15ICRkZXZpY2U7CisgICAgZG8geworICAgICAg
ICAkZGV2aWNlID0gaW9zU2ltdWxhdG9yRGV2aWNlQnlVRElEKCR3YWl0Rm9yU2h1dGRvd25PZlNp
bXVsYXRlZERldmljZVVESUQpOworICAgIH0gd2hpbGUgKCRkZXZpY2UtPntzdGF0ZX0gbmUgU0lN
VUxBVE9SX0RFVklDRV9TVEFURV9TSFVURE9XTik7CiB9CiAKIHN1YiBpb3NTaW11bGF0b3JEZXZp
Y2VCeU5hbWUoJCkKQEAgLTIxMTUsNiArMjExNiwyMCBAQCBzdWIgaW9zU2ltdWxhdG9yRGV2aWNl
QnlOYW1lKCQpCiAgICAgcmV0dXJuIHVuZGVmOwogfQogCitzdWIgaW9zU2ltdWxhdG9yRGV2aWNl
QnlVRElEKCQpCit7CisgICAgbXkgKCRzaW11bGF0ZWREZXZpY2VVRElEKSA9IEBfOworICAgIG15
ICRkZXZpY2VQbGlzdFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKGlPU1NpbXVsYXRvckRldmlj
ZXNQYXRoKCksICRzaW11bGF0ZWREZXZpY2VVRElELCAiZGV2aWNlLnBsaXN0Iik7CisgICAgaWYg
KCEtZiAkZGV2aWNlUGxpc3RQYXRoKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgIyBG
SVhNRTogV2Ugc2hvdWxkIHBhcnNlIHRoZSBkZXZpY2UucGxpc3QgZmlsZSBvdXJzZWxmIGFuZCBt
YXAgdGhlIGRpY3Rpb25hcnkga2V5cyBpbiBpdCB0byBrbm93bgorICAgICMgICAgICAgIGRpY3Rp
b25hcnkga2V5cyBzbyBhcyB0byBkZWNvdXBsZSBvdXIgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBs
aXN0IGZyb20gdGhlIGFjdHVhbCBzdHJ1Y3R1cmUKKyAgICAjICAgICAgICBvZiB0aGUgcGxpc3Qs
IHdoaWNoIG1heSBjaGFuZ2UuCisgICAgZXZhbCAicmVxdWlyZSBGb3VuZGF0aW9uIjsKKyAgICBy
ZXR1cm4gRm91bmRhdGlvbjo6cGVybFJlZkZyb21PYmplY3RSZWYoTlNEaWN0aW9uYXJ5LT5kaWN0
aW9uYXJ5V2l0aENvbnRlbnRzT2ZGaWxlXygkZGV2aWNlUGxpc3RQYXRoKSk7Cit9CisKIHN1YiBp
b3NTaW11bGF0b3JSdW50aW1lKCkKIHsKICAgICBteSAkeGNvZGVTREtWZXJzaW9uID0geGNvZGVT
REtWZXJzaW9uKCk7CkBAIC0yMTQyLDIxICsyMTU3LDg1IEBAIHN1YiBmaW5kT3JDcmVhdGVTaW11
bGF0b3JGb3JJT1NEZXZpY2UoJCkKIHN1YiBpc0lPU1NpbXVsYXRvclN5c3RlbUluc3RhbGxlZEFw
cCgkKQogewogICAgIG15ICgkYXBwQnVuZGxlKSA9IEBfOwotICAgIG15ICRzaW11bGF0b3JBcHBs
aWNhdGlvbnNQYXRoID0gaW9zU2ltdWxhdG9yQXBwbGljYXRpb25zUGF0aCgpOworICAgIG15ICRz
aW11bGF0b3JBcHBsaWNhdGlvbnNQYXRoID0gcmVhbHBhdGgoaW9zU2ltdWxhdG9yQXBwbGljYXRp
b25zUGF0aCgpKTsKICAgICByZXR1cm4gc3Vic3RyKHJlYWxwYXRoKCRhcHBCdW5kbGUpLCAwLCBs
ZW5ndGgoJHNpbXVsYXRvckFwcGxpY2F0aW9uc1BhdGgpKSBlcSAkc2ltdWxhdG9yQXBwbGljYXRp
b25zUGF0aDsKIH0KIAorc3ViIGhhc1VzZXJJbnN0YWxsZWRBcHBJblNpbXVsYXRvckRldmljZSgk
JCkKK3sKKyAgICBteSAoJGFwcElkZW50aWZpZXIsICRzaW11bGF0ZWREZXZpY2VVRElEKSA9IEBf
OworICAgIG15ICR1c2VySW5zdGFsbGVkQXBwUGF0aCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJEVO
VntIT01FfSwgIkxpYnJhcnkiLCAiRGV2ZWxvcGVyIiwgIkNvcmVTaW11bGF0b3IiLCAiRGV2aWNl
cyIsICRzaW11bGF0ZWREZXZpY2VVRElELCAiZGF0YSIsICJDb250YWluZXJzIiwgIkJ1bmRsZSIs
ICJBcHBsaWNhdGlvbiIpOworICAgIGlmICghJHVzZXJJbnN0YWxsZWRBcHBQYXRoKSB7CisgICAg
ICAgIHJldHVybiAwOyAjIE5vIHVzZXIgaW5zdGFsbGVkIGFwcHMuCisgICAgfQorICAgIGxvY2Fs
IEA6OnVzZXJJbnN0YWxsZWRBcHBCdW5kbGVzOworICAgIHN1YiB3YW50ZWQgeworICAgICAgICBt
eSAkZmlsZSA9ICRfOworCisgICAgICAgICMgSWdub3JlIGhpZGRlbiBmaWxlcyBhbmQgZGlyZWN0
b3JpZXMuCisgICAgICAgIGlmICgkZmlsZSA9fiAvXlwuLi8pIHsKKyAgICAgICAgICAgICRGaWxl
OjpGaW5kOjpwcnVuZSA9IDE7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gaWYgIS1kICRmaWxlIHx8ICRmaWxlICF+IC9cLmFwcCQvOworICAgICAgICBw
dXNoIEA6OnVzZXJJbnN0YWxsZWRBcHBCdW5kbGVzLCAkRmlsZTo6RmluZDo6bmFtZTsKKyAgICAg
ICAgJEZpbGU6OkZpbmQ6OnBydW5lID0gMTsgIyBEbyBub3QgdHJhdmVyc2UgY29udGVudHMgb2Yg
YXBwIGJ1bmRsZS4KKyAgICB9CisgICAgZmluZChcJndhbnRlZCwgJHVzZXJJbnN0YWxsZWRBcHBQ
YXRoKTsKKyAgICBmb3IgbXkgJHVzZXJJbnN0YWxsZWRBcHBCdW5kbGUgKEA6OnVzZXJJbnN0YWxs
ZWRBcHBCdW5kbGVzKSB7CisgICAgICAgIGlmIChhcHBJZGVudGlmaWVyRnJvbUJ1bmRsZSgkdXNl
ckluc3RhbGxlZEFwcEJ1bmRsZSkgZXEgJGFwcElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHJl
dHVybiAxOyAjIEhhcyB1c2VyIGluc3RhbGxlZCBhcHAuCisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIDA7ICMgRG9lcyBub3QgaGF2ZSB1c2VyIGluc3RhbGxlZCBhcHAuCit9CisKK3N1YiBp
c1NpbXVsYXRvckRldmljZUJvb3RlZCgkKQoreworICAgIG15ICgkc2ltdWxhdGVkRGV2aWNlVURJ
RCkgPSBAXzsKKyAgICBteSAkZGV2aWNlID0gaW9zU2ltdWxhdG9yRGV2aWNlQnlVRElEKCRzaW11
bGF0ZWREZXZpY2VVRElEKTsKKyAgICByZXR1cm4gJGRldmljZSAmJiAkZGV2aWNlLT57c3RhdGV9
IGVxIFNJTVVMQVRPUl9ERVZJQ0VfU1RBVEVfQk9PVEVEOworfQorCiBzdWIgcnVuSU9TV2ViS2l0
QXBwSW5TaW11bGF0b3IoJDskKQogewogICAgIG15ICgkYXBwQnVuZGxlLCAkc2ltdWxhdG9yT3B0
aW9ucykgPSBAXzsKICAgICBteSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKLSAgICBteSAk
YXBwRGlzcGxheU5hbWUgPSBhcHBEaXNwbGF5TmFtZUZyb21CdW5kbGUoJGFwcEJ1bmRsZSk7Owor
ICAgIG15ICRhcHBEaXNwbGF5TmFtZSA9IGFwcERpc3BsYXlOYW1lRnJvbUJ1bmRsZSgkYXBwQnVu
ZGxlKTsKKyAgICBteSAkYXBwSWRlbnRpZmllciA9IGFwcElkZW50aWZpZXJGcm9tQnVuZGxlKCRh
cHBCdW5kbGUpOwogICAgIG15ICRzaW11bGF0ZWREZXZpY2UgPSBmaW5kT3JDcmVhdGVTaW11bGF0
b3JGb3JJT1NEZXZpY2UoIkZvciBXZWJLaXQgRGV2ZWxvcG1lbnQiKTsKLQotICAgIG15ICRib290
ZWRTaW11bGF0b3JEZXZpY2UgPSBib290ZWRJT1NTaW11bGF0b3JEZXZpY2UoKTsKLSAgICBpZiAo
ISRib290ZWRTaW11bGF0b3JEZXZpY2UgfHwgJGJvb3RlZFNpbXVsYXRvckRldmljZS0+e1VESUR9
IG5lICRzaW11bGF0ZWREZXZpY2UtPntVRElEfSkgewotICAgICAgICBxdWl0SU9TU2ltdWxhdG9y
KCk7CisgICAgbXkgJHNpbXVsYXRlZERldmljZVVESUQgPSAkc2ltdWxhdGVkRGV2aWNlLT57VURJ
RH07CisKKyAgICBteSAkd2lsbFVzZVN5c3RlbUluc3RhbGxlZEFwcCA9IGlzSU9TU2ltdWxhdG9y
U3lzdGVtSW5zdGFsbGVkQXBwKCRhcHBCdW5kbGUpOworICAgIGlmICgkd2lsbFVzZVN5c3RlbUlu
c3RhbGxlZEFwcCkgeworICAgICAgICBpZiAoaGFzVXNlckluc3RhbGxlZEFwcEluU2ltdWxhdG9y
RGV2aWNlKCRhcHBJZGVudGlmaWVyLCAkc2ltdWxhdGVkRGV2aWNlVURJRCkpIHsKKyAgICAgICAg
ICAgICMgUmVzdG9yZSB0aGUgc3lzdGVtLWluc3RhbGxlZCBhcHAgaW4gdGhlIHNpbXVsYXRvciBk
ZXZpY2UgY29ycmVzcG9uZGluZyB0byAkYXBwQnVuZGxlIGFzIGl0CisgICAgICAgICAgICAjIHdh
cyBwcmV2aW91c2x5IG92ZXJ3cml0dGVuIHdpdGggYSBjdXN0b20gYnVpbHQgdmVyc2lvbiBvZiB0
aGUgYXBwLgorICAgICAgICAgICAgIyBGSVhNRTogT25seSByZXN0b3JlIHRoZSBzeXN0ZW0taW5z
dGFsbGVkIHZlcnNpb24gb2YgdGhlIGFwcCBpbnN0ZWFkIG9mIGVyYXNpbmcgYWxsIGNvbnRlbnRz
IGFuZCBzZXR0aW5ncy4KKyAgICAgICAgICAgIHByaW50ICJRdWl0dGluZyBpT1MgU2ltdWxhdG9y
Li4uXG4iOworICAgICAgICAgICAgcXVpdElPU1NpbXVsYXRvcigkc2ltdWxhdGVkRGV2aWNlVURJ
RCk7CisgICAgICAgICAgICBwcmludCAiRXJhc2luZyBjb250ZW50cyBhbmQgc2V0dGluZ3MgZm9y
IHNpbXVsYXRvciBkZXZpY2UgXCIkc2ltdWxhdGVkRGV2aWNlLT57bmFtZX1cIi5cbiI7CisgICAg
ICAgICAgICBleGl0U3RhdHVzKHN5c3RlbSgieGNydW4iLCAiLS1zZGsiLCAiaXBob25lc2ltdWxh
dG9yIiwgInNpbWN0bCIsICJlcmFzZSIsICRzaW11bGF0ZWREZXZpY2VVRElEKSkgPT0gMCBvciBk
aWU7CisgICAgICAgIH0KKyAgICAgICAgIyBGSVhNRTogV2UgYXNzdW1lIHRoYXQgaWYgJHNpbXVs
YXRlZERldmljZVVESUQgaXMgbm90IGJvb3RlZCB0aGVuIGlPUyBTaW11bGF0b3IgaXMgbm90IG9w
ZW4uIEhvd2V2ZXIKKyAgICAgICAgIyAgICAgICAgJHNpbXVsYXRlZERldmljZVVESUQgbWF5IGhh
dmUgYmVlbiBib290ZWQgdXNpbmcgdGhlIHNpbWN0bCBjb21tYW5kIGxpbmUgdG9vbC4gSWYgJHNp
bXVsYXRlZERldmljZVVESUQKKyAgICAgICAgIyAgICAgICAgd2FzIGJvb3RlZCB1c2luZyBzaW1j
dGwgdGhlbiB3ZSBzaG91bGQgc2h1dGRvd24gdGhlIGRldmljZSBhbmQgbGF1bmNoIGlPUyBTaW11
bGF0b3IgdG8gYm9vdCBpdCBhZ2Fpbi4KKyAgICAgICAgaWYgKCFpc1NpbXVsYXRvckRldmljZUJv
b3RlZCgkc2ltdWxhdGVkRGV2aWNlVURJRCkpIHsKKyAgICAgICAgICAgIHByaW50ICJMYXVuY2hp
bmcgaU9TIFNpbXVsYXRvci4uLlxuIjsKKyAgICAgICAgICAgIG9wZW5JT1NTaW11bGF0b3IoJHNp
bXVsYXRlZERldmljZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAjIEZJWE1F
OiBXZSBzaG91bGQga2lsbGFsbCgxKSBhbnkgcnVubmluZyBpbnN0YW5jZXMgb2YgJGFwcEJ1bmRs
ZSBiZWZvcmUgaW5zdGFsbGluZyBpdCB0byBlbnN1cmUKKyAgICAgICAgIyAgICAgICAgdGhhdCBz
aW1jdGwgbGF1bmNoIG9wZW5zIHRoZSBsYXRlc3QgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIGFw
cC4gRm9yIG5vdyB3ZSBxdWl0IGFuZAorICAgICAgICAjICAgICAgICBsYXVuY2ggdGhlIGlPUyBT
aW11bGF0b3IgYWdhaW4gdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBydW5uaW5nIGluc3RhbmNlcyBv
ZiAkYXBwQnVuZGxlLgorICAgICAgICBwcmludCAiUXVpdHRpbmcgYW5kIGxhdW5jaGluZyBpT1Mg
U2ltdWxhdG9yLi4uXG4iOwogICAgICAgICBvcGVuSU9TU2ltdWxhdG9yKCRzaW11bGF0ZWREZXZp
Y2UpOworCisgICAgICAgIHByaW50ICJJbnN0YWxsaW5nICRhcHBCdW5kbGUuXG4iOworICAgICAg
ICAjIEluc3RhbGwgY3VzdG9tIGJ1aWx0IGFwcCwgb3ZlcndyaXRpbmcgYW4gYXBwIHdpdGggdGhl
IHNhbWUgYXBwIGlkZW50aWZpZXIgaWYgb25lIGV4aXN0cy4KKyAgICAgICAgZXhpdFN0YXR1cyhz
eXN0ZW0oInhjcnVuIiwgIi0tc2RrIiwgImlwaG9uZXNpbXVsYXRvciIsICJzaW1jdGwiLCAiaW5z
dGFsbCIsICRzaW11bGF0ZWREZXZpY2VVRElELCAkYXBwQnVuZGxlKSkgPT0gMCBvciBkaWU7CisK
ICAgICB9CiAKICAgICAkc2ltdWxhdG9yT3B0aW9ucyA9IHt9IHVubGVzcyAkc2ltdWxhdG9yT3B0
aW9uczsKQEAgLTIxNzYsMTUgKzIyNTUsOCBAQCBzdWIgcnVuSU9TV2ViS2l0QXBwSW5TaW11bGF0
b3IoJDskKQogICAgICAgICAkRU5WeyJTSU1DVExfQ0hJTERfJGtleSJ9ID0gJHNpbXVsYXRvckVO
Vnska2V5fTsKICAgICB9CiAKLSAgICAjIEZJWE1FOiBXZSBzaG91bGQgYWxzbyBlcmFzZSB0aGUg
aU9TIFNpbXVsYXRvciBkZXZpY2Ugd2hlbiBhbHRlcm5hdGluZyBiZXR3ZWVuIHJ1bm5pbmcgYQot
ICAgICMgY3VzdG9tLWJ1aWx0IE1vYmlsZVNhZmFyaSBhbmQgdGhlIHN5c3RlbS1pbnN0YWxsZWQg
TW9iaWxlU2FmYXJpLgotICAgIGlmICghaXNJT1NTaW11bGF0b3JTeXN0ZW1JbnN0YWxsZWRBcHAo
JGFwcEJ1bmRsZSkpIHsKLSAgICAgICAgZXJhc2VJT1NTaW11bGF0b3JEZXZpY2UoJHNpbXVsYXRl
ZERldmljZS0+e1VESUR9KSBvciBkaWU7Ci0gICAgfQotCi0gICAgbXkgJGFwcElkZW50aWZpZXIg
PSBhcHBJZGVudGlmaWVyRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKTsKICAgICBwcmludCAiU3RhcnRp
bmcgJGFwcERpc3BsYXlOYW1lIHdpdGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQg
dG8gYnVpbHQgV2ViS2l0IGluICRwcm9kdWN0RGlyLlxuIjsKLSAgICByZXR1cm4gZXhpdFN0YXR1
cyhzeXN0ZW0oInhjcnVuIiwgIi0tc2RrIiwgImlwaG9uZXNpbXVsYXRvciIsICJzaW1jdGwiLCAi
bGF1bmNoIiwgJHNpbXVsYXRlZERldmljZS0+e1VESUR9LCAkYXBwSWRlbnRpZmllciwgQCRhcHBs
aWNhdGlvbkFyZ3VtZW50cykpOworICAgIHJldHVybiBleGl0U3RhdHVzKHN5c3RlbSgieGNydW4i
LCAiLS1zZGsiLCAiaXBob25lc2ltdWxhdG9yIiwgInNpbWN0bCIsICJsYXVuY2giLCAkc2ltdWxh
dGVkRGV2aWNlVURJRCwgJGFwcElkZW50aWZpZXIsIEAkYXBwbGljYXRpb25Bcmd1bWVudHMpKTsK
IH0KIAogc3ViIHJ1bklPU1dlYktpdEFwcCgkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245359</attachid>
            <date>2015-01-26 11:26:29 -0800</date>
            <delta_ts>2015-01-26 11:34:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140691-20150126112631.patch</filename>
            <type>text/plain</type>
            <size>15793</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3OTEyNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU1IEBACisyMDE1LTAxLTI2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBUZWFjaCBydW4td2Via2l0LWFwcCAtLXNpbXVsYXRvciBob3cgdG8gaW5zdGFs
bCBjdXN0b20gYnVpbHQgYXBwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDA2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBzaG91bGQgdGVhY2ggcnVuLXdlYmtpdC1hcHAgLS1zaW11bGF0b3IgaG93
IHRvIGluc3RhbGwgYSBjdXN0b20gYnVpbHQgYXBwLgorCisgICAgICAgIEN1cnJlbnRseSBydW4t
d2Via2l0LWFwcCAtLXNpbXVsYXRvciBjYW4gb25seSBydW4gYSBzeXN0ZW0gYXBwIG9yIGFuIGFw
cCB0aGF0CisgICAgICAgIHdhcyBpbnN0YWxsZWQgdXNpbmcgdGhlIHNpbWN0bCBjb21tYW5kIGxp
bmUgdG9vbC4gRm9yIGNvbnZlbmllbmNlIHdlIHNob3VsZAorICAgICAgICB0ZWFjaCBydW4td2Vi
a2l0LWFwcCAtLXNpbXVsYXRvciBob3cgdG8gaW5zdGFsbCBhIGN1c3RvbSBidWlsdCBhcHAuCisK
KyAgICAgICAgQXMgYSBzaWRlIGVmZmVjdCBvZiB0aGlzIGNoYW5nZSBydW4tc2FmYXJpIC0tc2lt
dWxhdG9yIHdpbGwgaW5zdGFsbCBhbmQgcnVuCisgICAgICAgIGEgY3VzdG9tIGJ1aWx0IG9mIE1v
YmlsZVNhZmFyaSAoaWYgaXQgZXhpc3RzKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0ZGly
cy5wbToKKyAgICAgICAgKGlPU1NpbXVsYXRvckRldmljZXMpOiBBZGRlZCBGSVhNRSBjb21tZW50
IHRvIGRlY291cGxlIGRldmljZSByZXByZXNlbnRhdGlvbiBpbgorICAgICAgICBQZXJsIGZyb20g
dGhlIHN0cnVjdHVyZSBvZiB0aGUgZGV2aWNlLnBsaXN0IGZpbGUuCisgICAgICAgIChwbGlzdFBh
dGhGcm9tQnVuZGxlKTogRml4IGlmLXN0YXRlbWVudCBjb25kaXRpb24gc28gdGhhdCB3ZSBhY3R1
YWxseSBwZXJmb3JtIGEKKyAgICAgICAgZmlsZSBzeXN0ZW0gY2hlY2sgdG8gZGV0ZXJtaW5lIHRo
ZSBwbGlzdCBwYXRoIGZvciBhIE1hYyBhcHAgYnVuZGxlLgorICAgICAgICAoYXBwSWRlbnRpZmll
ckZyb21CdW5kbGUpOiBQYXNzIGFic29sdXRlIGZpbGVzIHN5c3RlbSBwYXRoIHRvIGRlZmF1bHRz
KDEpLiBPdGhlcndpc2UsCisgICAgICAgIGl0IHdpbGwgY29tcGxhaW4gdGhhdCBpdCBjYW5ub3Qg
ZmluZCB0aGUgZmlsZTogIkRvbWFpbiAuLi4gZG9lcyBub3QgZXhpc3QiLgorICAgICAgICAoYXBw
RGlzcGxheU5hbWVGcm9tQnVuZGxlKTogRGl0dG8uCisgICAgICAgICh3YWl0VW50aWxJT1NTaW11
bGF0b3JEZXZpY2VJc0luU3RhdGUpOiBBZGRlZDsgaGVscGVyIGZ1bmN0aW9uIHRoYXQgZG9lcyBu
b3QgcmV0dXJuCisgICAgICAgIHVudGlsIGEgc2ltdWxhdG9yIGRldmljZSBpcyB0aGUgc3BlY2lm
aWVkIHN0YXRlLgorICAgICAgICAocmVsYXVuY2hJT1NTaW11bGF0b3IpOiBSZW5hbWVkOyBmb3Jt
ZXJseSBuYW1lZCBvcGVuSU9TU2ltdWxhdG9yLiBRdWl0cyBpT1MgU2ltdWxhdG9yCisgICAgICAg
IChpZiBpdCdzIG9wZW4pIGJlZm9yZSBvcGVuaW5nIGl0IGFnYWluIHNvIGFzIHRvIGVuc3VyZSB0
aGF0IHRoZSBpT1MgU2ltdWxhdG9yIGJvb3RzCisgICAgICAgIHRoZSBzcGVjaWZpZWQgZGV2aWNl
LgorICAgICAgICAocXVpdElPU1NpbXVsYXRvcik6IEFkZGVkIG9wdGlvbmFsIHBhcmFtZXRlciwg
JHdhaXRGb3JTaHV0ZG93bk9mU2ltdWxhdGVkRGV2aWNlVURJRC4KKyAgICAgICAgQXMgaW1wbGll
ZCBieSBpdHMgbmFtZSwgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCByZXR1cm4gdW50aWwgdGhlIHNw
ZWNpZmllZCBzaW11bGF0b3IKKyAgICAgICAgZGV2aWNlIFVESUQgaXMgaW4gdGhlIHNodXRkb3du
IHN0YXRlLgorICAgICAgICAoaW9zU2ltdWxhdG9yRGV2aWNlQnlVRElEKTogQWRkZWQ7IHJldHVy
bnMgdGhlIGRldmljZSBkaWN0aW9uYXJ5IG9iamVjdCBmb3IgdGhlIHNpbXVsYXRvcgorICAgICAg
ICBkZXZpY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIFVESUQuCisgICAgICAgIChpc0lPU1NpbXVsYXRv
clN5c3RlbUluc3RhbGxlZEFwcCk6IFJlc29sdmUgc3ltYm9saWMgbGlua3MgaW4gaW9zU2ltdWxh
dG9yQXBwbGljYXRpb25zUGF0aCgpCisgICAgICAgIGJlZm9yZSB1c2luZyBpdCBhcyBwYXJ0IG9m
IGEgcHJlZml4IG1hdGNoIHRvIGF2b2lkIGEgbWlzbWF0Y2guIEluIHRoZSBwdWJsaWMgaU9TIDgu
MSBTREsgdGhlCisgICAgICAgIHJldHVybiB2YWx1ZSBvZiBpb3NTaW11bGF0b3JBcHBsaWNhdGlv
bnNQYXRoKCksIHdoaWNoIHJldHVybnMgYSByZXN1bHQgYW5hbG9nb3VzIHRvIHRoZSBzaGVsbAor
ICAgICAgICBleHByZXNzaW9uIGVjaG8gYHhjcnVuIC0tc2RrIGlwaG9uZXNpbXVsYXRvciAtLXNo
b3ctc2RrLXBhdGhgL0FwcGxpY2F0aW9ucy8sIGNvbnRhaW5zIGEKKyAgICAgICAgc3ltYm9saWMg
bGluay4gU3BlY2lmaWNhbGx5LCBlY2hvIGB4Y3J1biAtLXNkayBpcGhvbmVzaW11bGF0b3IgLS1z
aG93LXNkay1wYXRoYCByZXR1cm5zCisgICAgICAgIC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0Nv
bnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lU2ltdWxhdG9yLnBsYXRmb3JtL0RldmVs
b3Blci9TREtzL2lQaG9uZVNpbXVsYXRvcjguMS5zZGssCisgICAgICAgIHdoaWNoIGlzIGEgc3lt
Ym9saWMgbGluayB0byAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIv
UGxhdGZvcm1zL2lQaG9uZVNpbXVsYXRvci5wbGF0Zm9ybS9EZXZlbG9wZXIvU0RLcy9pUGhvbmVT
aW11bGF0b3Iuc2RrLgorICAgICAgICAoaGFzVXNlckluc3RhbGxlZEFwcEluU2ltdWxhdG9yRGV2
aWNlKTogQWRkZWQuCisgICAgICAgIChpc1NpbXVsYXRvckRldmljZUJvb3RlZCk6IEFkZGVkOyBy
ZXR1cm5zIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBzaW11bGF0b3IgZGV2aWNlIGlzIGluIHRoZQor
ICAgICAgICAiQm9vdGVkIiBzdGF0ZS4KKyAgICAgICAgKHJ1bklPU1dlYktpdEFwcEluU2ltdWxh
dG9yKTogTW9kaWZpZWQgdG8gaW5zdGFsbCBhIGN1c3RvbSBidWlsdCBhcHAgKGlmIG5lZWRlZCku
IEZvciBub3csCisgICAgICAgIHN3aXRjaGluZyBiZXR3ZWVuIGEgc3lzdGVtIGluc3RhbGxlZCBh
cHAgYW5kIGEgY3VzdG9tIGJ1aWx0IHZlcnNpb24gb2YgdGhlIHNhbWUgYXBwIChlLmcuCisgICAg
ICAgIGN1c3RvbSBidWlsZCBvZiBNb2JpbGVTYWZhcmkpIHdpbGwgZXJhc2UgYWxsIGNvbnRlbnRz
IGFuZCBzZXR0aW5ncyBpbiB0aGUgc2ltdWxhdG9yIGRldmljZS4KKyAgICAgICAgKGVyYXNlSU9T
U2ltdWxhdG9yRGV2aWNlKTogRGVsZXRlZDsgaW5saW5lIGltcGxlbWVudGF0aW9uIGludG8gcnVu
SU9TV2ViS2l0QXBwSW5TaW11bGF0b3IoKQorICAgICAgICBhcyB0aGF0IHdhcyB0aGUgb25seSBj
YWxsZXIgb2YgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKGJvb3RlZElPU1NpbXVsYXRvckRldmlj
ZSk6IERlbGV0ZWQuCisgICAgICAgIChvcGVuSU9TU2ltdWxhdG9yKTogRGVsZXRlZC4KKwogMjAx
NS0wMS0yNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgYm90IGFzc2lnbm1lbnRzLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQkocmV2aXNpb24gMTc5
MTE1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0z
NywxMSArMzcsMTMgQEAgdXNlIEN3ZCBxdyhyZWFscGF0aCk7CiB1c2UgRGlnZXN0OjpNRDUgcXco
bWQ1X2hleCk7CiB1c2UgRmluZEJpbjsKIHVzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBGaWxlOjpG
aW5kOwogdXNlIEZpbGU6OlBhdGggcXcobWtwYXRoIHJtdHJlZSk7CiB1c2UgRmlsZTo6U3BlYzsK
IHVzZSBGaWxlOjpzdGF0OwogdXNlIExpc3Q6OlV0aWw7CiB1c2UgUE9TSVg7Cit1c2UgVGltZTo6
SGlSZXMgcXcodXNsZWVwKTsKIHVzZSBWQ1NVdGlsczsKIAogQkVHSU4gewpAQCAtNjYsMTEgKzY4
LDExIEBAIEJFR0lOIHsKICAgICAgICAmZmluZE9yQ3JlYXRlU2ltdWxhdG9yRm9ySU9TRGV2aWNl
CiAgICAgICAgJmlvc1NpbXVsYXRvckRldmljZUJ5TmFtZQogICAgICAgICZubVBhdGgKLSAgICAg
ICAmb3BlbklPU1NpbXVsYXRvcgogICAgICAgICZwYXNzZWRDb25maWd1cmF0aW9uCiAgICAgICAg
JnByaW50SGVscEFuZEV4aXRGb3JSdW5BbmREZWJ1Z1dlYktpdEFwcElmTmVlZGVkCiAgICAgICAg
JnByb2R1Y3REaXIKICAgICAgICAmcXVpdElPU1NpbXVsYXRvcgorICAgICAgICZyZWxhdW5jaElP
U1NpbXVsYXRvcgogICAgICAgICZydW5JT1NXZWJLaXRBcHAKICAgICAgICAmcnVuTWFjV2ViS2l0
QXBwCiAgICAgICAgJnNhZmFyaVBhdGgKQEAgLTg2LDYgKzg4LDcgQEAgQkVHSU4gewogCiB1c2Ug
Y29uc3RhbnQgVVNFX09QRU5fQ09NTUFORCA9PiAxOyAjIFVzZWQgaW4gcnVuTWFjV2ViS2l0QXBw
KCkuCiB1c2UgY29uc3RhbnQgSU5DTFVERV9PUFRJT05TX0ZPUl9ERUJVR0dJTkcgPT4gMTsKK3Vz
ZSBjb25zdGFudCBTSU1VTEFUT1JfREVWSUNFX1NUQVRFX1NIVVRET1dOID0+ICIxIjsKIHVzZSBj
b25zdGFudCBTSU1VTEFUT1JfREVWSUNFX1NUQVRFX0JPT1RFRCA9PiAiMyI7CiAKIG91ciBARVhQ
T1JUX09LOwpAQCAtMTE1MCw2ICsxMTUzLDkgQEAgc3ViIGlPU1NpbXVsYXRvckRldmljZXMKICAg
ICB9IHJlYWRkaXIoREVWSUNFUyk7CiAgICAgY2xvc2UoREVWSUNFUyk7CiAKKyAgICAjIEZJWE1F
OiBXZSBzaG91bGQgcGFyc2UgdGhlIGRldmljZS5wbGlzdCBmaWxlIG91cnNlbGYgYW5kIG1hcCB0
aGUgZGljdGlvbmFyeSBrZXlzIGluIGl0IHRvIGtub3duCisgICAgIyAgICAgICAgZGljdGlvbmFy
eSBrZXlzIHNvIGFzIHRvIGRlY291cGxlIG91ciByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGxpc3Qg
ZnJvbSB0aGUgYWN0dWFsIHN0cnVjdHVyZQorICAgICMgICAgICAgIG9mIHRoZSBwbGlzdCwgd2hp
Y2ggbWF5IGNoYW5nZS4KICAgICBteSBAZGV2aWNlcyA9IG1hcCB7CiAgICAgICAgIEZvdW5kYXRp
b246OnBlcmxSZWZGcm9tT2JqZWN0UmVmKE5TRGljdGlvbmFyeS0+ZGljdGlvbmFyeVdpdGhDb250
ZW50c09mRmlsZV8oIiRkZXZpY2VzUGF0aC8kXy9kZXZpY2UucGxpc3QiKSk7CiAgICAgfSBAdWRp
ZHM7CkBAIC0xMTgwLDIzICsxMTg2LDYgQEAgc3ViIGNyZWF0ZWlPU1NpbXVsYXRvckRldmljZQog
ICAgIGRpZSAiRGV2aWNlICRuYW1lICRkZXZpY2VUeXBlSWQgJHJ1bnRpbWVJZCB3YXNuJ3QgZm91
bmQgaW4gIiAuIGlPU1NpbXVsYXRvckRldmljZXNQYXRoKCk7CiB9CiAKLXN1YiBlcmFzZUlPU1Np
bXVsYXRvckRldmljZSgkKQotewotICAgIG15ICR1ZGlkID0gc2hpZnQ7Ci0gICAgcmV0dXJuIGV4
aXRTdGF0dXMoc3lzdGVtKCJ4Y3J1biIsICItLXNkayIsICJpcGhvbmVzaW11bGF0b3IiLCAic2lt
Y3RsIiwgImVyYXNlIiwgJHVkaWQpKSA9PSAwOwotfQotCi1zdWIgYm9vdGVkSU9TU2ltdWxhdG9y
RGV2aWNlKCkKLXsKLSAgICBteSBAZGV2aWNlcyA9IGlPU1NpbXVsYXRvckRldmljZXMoKTsKLSAg
ICBmb3IgbXkgJGRldmljZSAoQGRldmljZXMpIHsKLSAgICAgICAgaWYgKCRkZXZpY2UtPntzdGF0
ZX0gZXEgU0lNVUxBVE9SX0RFVklDRV9TVEFURV9CT09URUQpIHsKLSAgICAgICAgICAgIHJldHVy
biAkZGV2aWNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB1bmRlZjsKLX0KLQogc3Vi
IHdpbGxVc2VJT1NEZXZpY2VTREtXaGVuQnVpbGRpbmcoKQogewogICAgIHJldHVybiB4Y29kZVNE
S1BsYXRmb3JtTmFtZSgpIGVxICJpcGhvbmVvcyI7CkBAIC0yMDYzLDE0ICsyMDUyLDE0IEBAIHN1
YiBwbGlzdFBhdGhGcm9tQnVuZGxlKCQpCiB7CiAgICAgbXkgKCRhcHBCdW5kbGUpID0gQF87CiAg
ICAgcmV0dXJuICIkYXBwQnVuZGxlL0luZm8ucGxpc3QiIGlmIC1mICIkYXBwQnVuZGxlL0luZm8u
cGxpc3QiOyAjIGlPUyBhcHAgYnVuZGxlCi0gICAgcmV0dXJuICIkYXBwQnVuZGxlL0NvbnRlbnRz
L0luZm8ucGxpc3QiIGlmICIkYXBwQnVuZGxlL0NvbnRlbnRzL0luZm8ucGxpc3QiOyAjIE1hYyBh
cHAgYnVuZGxlCisgICAgcmV0dXJuICIkYXBwQnVuZGxlL0NvbnRlbnRzL0luZm8ucGxpc3QiIGlm
IC1mICIkYXBwQnVuZGxlL0NvbnRlbnRzL0luZm8ucGxpc3QiOyAjIE1hYyBhcHAgYnVuZGxlCiAg
ICAgcmV0dXJuICIiOwogfQogCiBzdWIgYXBwSWRlbnRpZmllckZyb21CdW5kbGUoJCkKIHsKICAg
ICBteSAoJGFwcEJ1bmRsZSkgPSBAXzsKLSAgICBteSAkcGxpc3RQYXRoID0gcGxpc3RQYXRoRnJv
bUJ1bmRsZSgkYXBwQnVuZGxlKTsKKyAgICBteSAkcGxpc3RQYXRoID0gRmlsZTo6U3BlYy0+cmVs
MmFicyhwbGlzdFBhdGhGcm9tQnVuZGxlKCRhcHBCdW5kbGUpKTsgIyBkZWZhdWx0cygxKSB3aWxs
IGNvbXBsYWluIGlmIHRoZSBzcGVjaWZpZWQgcGF0aCBpcyBub3QgYWJzb2x1dGUuCiAgICAgY2hv
bXAobXkgJGJ1bmRsZUlkZW50aWZpZXIgPSBgZGVmYXVsdHMgcmVhZCAnJHBsaXN0UGF0aCcgQ0ZC
dW5kbGVJZGVudGlmaWVyIDI+IC9kZXYvbnVsbGApOwogICAgIHJldHVybiAkYnVuZGxlSWRlbnRp
ZmllcjsKIH0KQEAgLTIwNzgsMjggKzIwNjcsNDUgQEAgc3ViIGFwcElkZW50aWZpZXJGcm9tQnVu
ZGxlKCQpCiBzdWIgYXBwRGlzcGxheU5hbWVGcm9tQnVuZGxlKCQpCiB7CiAgICAgbXkgKCRhcHBC
dW5kbGUpID0gQF87Ci0gICAgbXkgJHBsaXN0UGF0aCA9IHBsaXN0UGF0aEZyb21CdW5kbGUoJGFw
cEJ1bmRsZSk7CisgICAgbXkgJHBsaXN0UGF0aCA9IEZpbGU6OlNwZWMtPnJlbDJhYnMocGxpc3RQ
YXRoRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKSk7ICMgZGVmYXVsdHMoMSkgd2lsbCBjb21wbGFpbiBp
ZiB0aGUgc3BlY2lmaWVkIHBhdGggaXMgbm90IGFic29sdXRlLgogICAgIGNob21wKG15ICRidW5k
bGVEaXNwbGF5TmFtZSA9IGBkZWZhdWx0cyByZWFkICckcGxpc3RQYXRoJyBDRkJ1bmRsZURpc3Bs
YXlOYW1lIDI+IC9kZXYvbnVsbGApOwogICAgIHJldHVybiAkYnVuZGxlRGlzcGxheU5hbWU7CiB9
CiAKLXN1YiBvcGVuSU9TU2ltdWxhdG9yKCQpCitzdWIgd2FpdFVudGlsSU9TU2ltdWxhdG9yRGV2
aWNlSXNJblN0YXRlKCQkKQoreworICAgIG15ICgkZGV2aWNlVURJRCwgJHdhaXRVbnRpbFN0YXRl
KSA9IEBfOworICAgIG15ICRkZXZpY2UgPSBpb3NTaW11bGF0b3JEZXZpY2VCeVVESUQoJGRldmlj
ZVVESUQpOworICAgIHdoaWxlICgkZGV2aWNlLT57c3RhdGV9IG5lICR3YWl0VW50aWxTdGF0ZSkg
eworICAgICAgICB1c2xlZXAoNTAwICogMTAwMCk7ICMgV2FpdGluZyA1MDBtcyBiZXR3ZWVuIGZp
bGUgc3lzdGVtIHBvbGxzIGRvZXMgbm90IG1ha2Ugc2NyaXB0IHJ1bi1zYWZhcmkgZmVlbCBzbHVn
Z2lzaC4KKyAgICAgICAgJGRldmljZSA9IGlvc1NpbXVsYXRvckRldmljZUJ5VURJRCgkZGV2aWNl
VURJRCk7CisgICAgfQorfQorCitzdWIgcmVsYXVuY2hJT1NTaW11bGF0b3IoJCkKIHsKICAgICBt
eSAoJHNpbXVsYXRlZERldmljZSkgPSBAXzsKKyAgICBxdWl0SU9TU2ltdWxhdG9yKCRzaW11bGF0
ZWREZXZpY2UtPntVRElEfSk7CisKICAgICBjaG9tcChteSAkZGV2ZWxvcGVyRGlyZWN0b3J5ID0g
JEVOVntERVZFTE9QRVJfRElSfSB8fCBgeGNvZGUtc2VsZWN0IC0tcHJpbnQtcGF0aGApOwogICAg
IG15ICRpb3NTaW11bGF0b3JQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGV2ZWxvcGVyRGly
ZWN0b3J5LCAiQXBwbGljYXRpb25zIiwgImlPUyBTaW11bGF0b3IuYXBwIik7CiAKICAgICBzeXN0
ZW0oIm9wZW4iLCAiLWEiLCAkaW9zU2ltdWxhdG9yUGF0aCwgIi0tYXJncyIsICItQ3VycmVudERl
dmljZVVESUQiLCAkc2ltdWxhdGVkRGV2aWNlLT57VURJRH0pID09IDAgb3IgZGllICJGYWlsZWQg
dG8gb3BlbiAkaW9zU2ltdWxhdG9yUGF0aDogJCEiOwotICAgIG15ICRkZXZpY2U7Ci0gICAgZG8g
ewotICAgICAgICAkZGV2aWNlID0gaW9zU2ltdWxhdG9yRGV2aWNlQnlOYW1lKCRzaW11bGF0ZWRE
ZXZpY2UtPntuYW1lfSk7Ci0gICAgICAgIHNsZWVwKDIpOwotICAgIH0gd2hpbGUgKCRkZXZpY2Ut
PntzdGF0ZX0gbmUgU0lNVUxBVE9SX0RFVklDRV9TVEFURV9CT09URUQpOworICAgIHdhaXRVbnRp
bElPU1NpbXVsYXRvckRldmljZUlzSW5TdGF0ZSgkc2ltdWxhdGVkRGV2aWNlLT57VURJRH0sIFNJ
TVVMQVRPUl9ERVZJQ0VfU1RBVEVfQk9PVEVEKTsKIH0KIAotc3ViIHF1aXRJT1NTaW11bGF0b3Io
KQorc3ViIHF1aXRJT1NTaW11bGF0b3IoOyQpCiB7Ci0gICAgcmV0dXJuIHN5c3RlbSB7Im9zYXNj
cmlwdCJ9ICJvc2FzY3JpcHQiLCAiLWUiLCAndGVsbCBhcHBsaWNhdGlvbiAiaU9TIFNpbXVsYXRv
ciIgdG8gcXVpdCc7CisgICAgbXkgKCR3YWl0Rm9yU2h1dGRvd25PZlNpbXVsYXRlZERldmljZVVE
SUQpID0gQF87CisgICAgZXhpdFN0YXR1cyhzeXN0ZW0geyJvc2FzY3JpcHQifSAib3Nhc2NyaXB0
IiwgIi1lIiwgJ3RlbGwgYXBwbGljYXRpb24gImlPUyBTaW11bGF0b3IiIHRvIHF1aXQnKSA9PSAw
IG9yIGRpZSAiRmFpbGVkIHRvIHF1aXQgaU9TIFNpbXVsYXRvcjogJCEiOworICAgIGlmICghZGVm
aW5lZCgkd2FpdEZvclNodXRkb3duT2ZTaW11bGF0ZWREZXZpY2VVRElEKSkgeworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgICMgRklYTUU6IFdlIGFzc3VtZSB0aGF0ICR3YWl0Rm9yU2h1dGRv
d25PZlNpbXVsYXRlZERldmljZVVESUQgd2FzIG5vdCBib290ZWQgdXNpbmcgdGhlIHNpbWN0bCBj
b21tYW5kIGxpbmUgdG9vbC4KKyAgICAjICAgICAgICBPdGhlcndpc2Ugd2Ugd2lsbCBzcGluIGlu
ZGVmaW5pdGVseSBzaW5jZSBxdWl0aW5nIHRoZSBpT1MgU2ltdWxhdG9yIHdpbGwgbm90IHNodXRk
b3duIHRoaXMgZGV2aWNlLiBXZQorICAgICMgICAgICAgIHNob3VsZCBhZGQgYSBtYXhpbXVtIHRp
bWUgbGltaXQgdG8gd2FpdCBmb3IgYSBkZXZpY2UgdG8gc2h1dGRvd24gYW5kIGVpdGhlciByZXR1
cm4gYW4gZXJyb3Igb3IgZGllKCkKKyAgICAjICAgICAgICBvbiBleHBpcmF0aW9uIG9mIHRoZSB0
aW1lIGxpbWl0LgorICAgIHdhaXRVbnRpbElPU1NpbXVsYXRvckRldmljZUlzSW5TdGF0ZSgkd2Fp
dEZvclNodXRkb3duT2ZTaW11bGF0ZWREZXZpY2VVRElELCBTSU1VTEFUT1JfREVWSUNFX1NUQVRF
X1NIVVRET1dOKTsKIH0KIAogc3ViIGlvc1NpbXVsYXRvckRldmljZUJ5TmFtZSgkKQpAQCAtMjEx
NSw2ICsyMTIxLDIwIEBAIHN1YiBpb3NTaW11bGF0b3JEZXZpY2VCeU5hbWUoJCkKICAgICByZXR1
cm4gdW5kZWY7CiB9CiAKK3N1YiBpb3NTaW11bGF0b3JEZXZpY2VCeVVESUQoJCkKK3sKKyAgICBt
eSAoJHNpbXVsYXRlZERldmljZVVESUQpID0gQF87CisgICAgbXkgJGRldmljZVBsaXN0UGF0aCA9
IEZpbGU6OlNwZWMtPmNhdGZpbGUoaU9TU2ltdWxhdG9yRGV2aWNlc1BhdGgoKSwgJHNpbXVsYXRl
ZERldmljZVVESUQsICJkZXZpY2UucGxpc3QiKTsKKyAgICBpZiAoIS1mICRkZXZpY2VQbGlzdFBh
dGgpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgcGFy
c2UgdGhlIGRldmljZS5wbGlzdCBmaWxlIG91cnNlbGYgYW5kIG1hcCB0aGUgZGljdGlvbmFyeSBr
ZXlzIGluIGl0IHRvIGtub3duCisgICAgIyAgICAgICAgZGljdGlvbmFyeSBrZXlzIHNvIGFzIHRv
IGRlY291cGxlIG91ciByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGxpc3QgZnJvbSB0aGUgYWN0dWFs
IHN0cnVjdHVyZQorICAgICMgICAgICAgIG9mIHRoZSBwbGlzdCwgd2hpY2ggbWF5IGNoYW5nZS4K
KyAgICBldmFsICJyZXF1aXJlIEZvdW5kYXRpb24iOworICAgIHJldHVybiBGb3VuZGF0aW9uOjpw
ZXJsUmVmRnJvbU9iamVjdFJlZihOU0RpY3Rpb25hcnktPmRpY3Rpb25hcnlXaXRoQ29udGVudHNP
ZkZpbGVfKCRkZXZpY2VQbGlzdFBhdGgpKTsKK30KKwogc3ViIGlvc1NpbXVsYXRvclJ1bnRpbWUo
KQogewogICAgIG15ICR4Y29kZVNES1ZlcnNpb24gPSB4Y29kZVNES1ZlcnNpb24oKTsKQEAgLTIx
NDIsMjEgKzIxNjIsODUgQEAgc3ViIGZpbmRPckNyZWF0ZVNpbXVsYXRvckZvcklPU0RldmljZSgk
KQogc3ViIGlzSU9TU2ltdWxhdG9yU3lzdGVtSW5zdGFsbGVkQXBwKCQpCiB7CiAgICAgbXkgKCRh
cHBCdW5kbGUpID0gQF87Ci0gICAgbXkgJHNpbXVsYXRvckFwcGxpY2F0aW9uc1BhdGggPSBpb3NT
aW11bGF0b3JBcHBsaWNhdGlvbnNQYXRoKCk7CisgICAgbXkgJHNpbXVsYXRvckFwcGxpY2F0aW9u
c1BhdGggPSByZWFscGF0aChpb3NTaW11bGF0b3JBcHBsaWNhdGlvbnNQYXRoKCkpOwogICAgIHJl
dHVybiBzdWJzdHIocmVhbHBhdGgoJGFwcEJ1bmRsZSksIDAsIGxlbmd0aCgkc2ltdWxhdG9yQXBw
bGljYXRpb25zUGF0aCkpIGVxICRzaW11bGF0b3JBcHBsaWNhdGlvbnNQYXRoOwogfQogCitzdWIg
aGFzVXNlckluc3RhbGxlZEFwcEluU2ltdWxhdG9yRGV2aWNlKCQkKQoreworICAgIG15ICgkYXBw
SWRlbnRpZmllciwgJHNpbXVsYXRlZERldmljZVVESUQpID0gQF87CisgICAgbXkgJHVzZXJJbnN0
YWxsZWRBcHBQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkRU5We0hPTUV9LCAiTGlicmFyeSIs
ICJEZXZlbG9wZXIiLCAiQ29yZVNpbXVsYXRvciIsICJEZXZpY2VzIiwgJHNpbXVsYXRlZERldmlj
ZVVESUQsICJkYXRhIiwgIkNvbnRhaW5lcnMiLCAiQnVuZGxlIiwgIkFwcGxpY2F0aW9uIik7Cisg
ICAgaWYgKCEkdXNlckluc3RhbGxlZEFwcFBhdGgpIHsKKyAgICAgICAgcmV0dXJuIDA7ICMgTm8g
dXNlciBpbnN0YWxsZWQgYXBwcy4KKyAgICB9CisgICAgbG9jYWwgQDo6dXNlckluc3RhbGxlZEFw
cEJ1bmRsZXM7CisgICAgc3ViIHdhbnRlZCB7CisgICAgICAgIG15ICRmaWxlID0gJF87CisKKyAg
ICAgICAgIyBJZ25vcmUgaGlkZGVuIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KKyAgICAgICAgaWYg
KCRmaWxlID1+IC9eXC4uLykgeworICAgICAgICAgICAgJEZpbGU6OkZpbmQ6OnBydW5lID0gMTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBpZiAhLWQg
JGZpbGUgfHwgJGZpbGUgIX4gL1wuYXBwJC87CisgICAgICAgIHB1c2ggQDo6dXNlckluc3RhbGxl
ZEFwcEJ1bmRsZXMsICRGaWxlOjpGaW5kOjpuYW1lOworICAgICAgICAkRmlsZTo6RmluZDo6cHJ1
bmUgPSAxOyAjIERvIG5vdCB0cmF2ZXJzZSBjb250ZW50cyBvZiBhcHAgYnVuZGxlLgorICAgIH0K
KyAgICBmaW5kKFwmd2FudGVkLCAkdXNlckluc3RhbGxlZEFwcFBhdGgpOworICAgIGZvciBteSAk
dXNlckluc3RhbGxlZEFwcEJ1bmRsZSAoQDo6dXNlckluc3RhbGxlZEFwcEJ1bmRsZXMpIHsKKyAg
ICAgICAgaWYgKGFwcElkZW50aWZpZXJGcm9tQnVuZGxlKCR1c2VySW5zdGFsbGVkQXBwQnVuZGxl
KSBlcSAkYXBwSWRlbnRpZmllcikgeworICAgICAgICAgICAgcmV0dXJuIDE7ICMgSGFzIHVzZXIg
aW5zdGFsbGVkIGFwcC4KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsgIyBEb2VzIG5v
dCBoYXZlIHVzZXIgaW5zdGFsbGVkIGFwcC4KK30KKworc3ViIGlzU2ltdWxhdG9yRGV2aWNlQm9v
dGVkKCQpCit7CisgICAgbXkgKCRzaW11bGF0ZWREZXZpY2VVRElEKSA9IEBfOworICAgIG15ICRk
ZXZpY2UgPSBpb3NTaW11bGF0b3JEZXZpY2VCeVVESUQoJHNpbXVsYXRlZERldmljZVVESUQpOwor
ICAgIHJldHVybiAkZGV2aWNlICYmICRkZXZpY2UtPntzdGF0ZX0gZXEgU0lNVUxBVE9SX0RFVklD
RV9TVEFURV9CT09URUQ7Cit9CisKIHN1YiBydW5JT1NXZWJLaXRBcHBJblNpbXVsYXRvcigkOyQp
CiB7CiAgICAgbXkgKCRhcHBCdW5kbGUsICRzaW11bGF0b3JPcHRpb25zKSA9IEBfOwogICAgIG15
ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwotICAgIG15ICRhcHBEaXNwbGF5TmFtZSA9IGFw
cERpc3BsYXlOYW1lRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKTs7CisgICAgbXkgJGFwcERpc3BsYXlO
YW1lID0gYXBwRGlzcGxheU5hbWVGcm9tQnVuZGxlKCRhcHBCdW5kbGUpOworICAgIG15ICRhcHBJ
ZGVudGlmaWVyID0gYXBwSWRlbnRpZmllckZyb21CdW5kbGUoJGFwcEJ1bmRsZSk7CiAgICAgbXkg
JHNpbXVsYXRlZERldmljZSA9IGZpbmRPckNyZWF0ZVNpbXVsYXRvckZvcklPU0RldmljZSgiRm9y
IFdlYktpdCBEZXZlbG9wbWVudCIpOworICAgIG15ICRzaW11bGF0ZWREZXZpY2VVRElEID0gJHNp
bXVsYXRlZERldmljZS0+e1VESUR9OworCisgICAgbXkgJHdpbGxVc2VTeXN0ZW1JbnN0YWxsZWRB
cHAgPSBpc0lPU1NpbXVsYXRvclN5c3RlbUluc3RhbGxlZEFwcCgkYXBwQnVuZGxlKTsKKyAgICBp
ZiAoJHdpbGxVc2VTeXN0ZW1JbnN0YWxsZWRBcHApIHsKKyAgICAgICAgaWYgKGhhc1VzZXJJbnN0
YWxsZWRBcHBJblNpbXVsYXRvckRldmljZSgkYXBwSWRlbnRpZmllciwgJHNpbXVsYXRlZERldmlj
ZVVESUQpKSB7CisgICAgICAgICAgICAjIFJlc3RvcmUgdGhlIHN5c3RlbS1pbnN0YWxsZWQgYXBw
IGluIHRoZSBzaW11bGF0b3IgZGV2aWNlIGNvcnJlc3BvbmRpbmcgdG8gJGFwcEJ1bmRsZSBhcyBp
dAorICAgICAgICAgICAgIyB3YXMgcHJldmlvdXNseSBvdmVyd3JpdHRlbiB3aXRoIGEgY3VzdG9t
IGJ1aWx0IHZlcnNpb24gb2YgdGhlIGFwcC4KKyAgICAgICAgICAgICMgRklYTUU6IE9ubHkgcmVz
dG9yZSB0aGUgc3lzdGVtLWluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZSBhcHAgaW5zdGVhZCBvZiBl
cmFzaW5nIGFsbCBjb250ZW50cyBhbmQgc2V0dGluZ3MuCisgICAgICAgICAgICBwcmludCAiUXVp
dHRpbmcgaU9TIFNpbXVsYXRvci4uLlxuIjsKKyAgICAgICAgICAgIHF1aXRJT1NTaW11bGF0b3Io
JHNpbXVsYXRlZERldmljZVVESUQpOworICAgICAgICAgICAgcHJpbnQgIkVyYXNpbmcgY29udGVu
dHMgYW5kIHNldHRpbmdzIGZvciBzaW11bGF0b3IgZGV2aWNlIFwiJHNpbXVsYXRlZERldmljZS0+
e25hbWV9XCIuXG4iOworICAgICAgICAgICAgZXhpdFN0YXR1cyhzeXN0ZW0oInhjcnVuIiwgIi0t
c2RrIiwgImlwaG9uZXNpbXVsYXRvciIsICJzaW1jdGwiLCAiZXJhc2UiLCAkc2ltdWxhdGVkRGV2
aWNlVURJRCkpID09IDAgb3IgZGllOworICAgICAgICB9CisgICAgICAgICMgRklYTUU6IFdlIGFz
c3VtZSB0aGF0IGlmICRzaW11bGF0ZWREZXZpY2VVRElEIGlzIG5vdCBib290ZWQgdGhlbiBpT1Mg
U2ltdWxhdG9yIGlzIG5vdCBvcGVuLiBIb3dldmVyCisgICAgICAgICMgICAgICAgICRzaW11bGF0
ZWREZXZpY2VVRElEIG1heSBoYXZlIGJlZW4gYm9vdGVkIHVzaW5nIHRoZSBzaW1jdGwgY29tbWFu
ZCBsaW5lIHRvb2wuIElmICRzaW11bGF0ZWREZXZpY2VVRElECisgICAgICAgICMgICAgICAgIHdh
cyBib290ZWQgdXNpbmcgc2ltY3RsIHRoZW4gd2Ugc2hvdWxkIHNodXRkb3duIHRoZSBkZXZpY2Ug
YW5kIGxhdW5jaCBpT1MgU2ltdWxhdG9yIHRvIGJvb3QgaXQgYWdhaW4uCisgICAgICAgIGlmICgh
aXNTaW11bGF0b3JEZXZpY2VCb290ZWQoJHNpbXVsYXRlZERldmljZVVESUQpKSB7CisgICAgICAg
ICAgICBwcmludCAiTGF1bmNoaW5nIGlPUyBTaW11bGF0b3IuLi5cbiI7CisgICAgICAgICAgICBy
ZWxhdW5jaElPU1NpbXVsYXRvcigkc2ltdWxhdGVkRGV2aWNlKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBraWxsYWxsKDEpIGFueSBydW5uaW5n
IGluc3RhbmNlcyBvZiAkYXBwQnVuZGxlIGJlZm9yZSBpbnN0YWxsaW5nIGl0IHRvIGVuc3VyZQor
ICAgICAgICAjICAgICAgICB0aGF0IHNpbWN0bCBsYXVuY2ggb3BlbnMgdGhlIGxhdGVzdCBpbnN0
YWxsZWQgdmVyc2lvbiBvZiB0aGUgYXBwLiBGb3Igbm93IHdlIHF1aXQgYW5kCisgICAgICAgICMg
ICAgICAgIGxhdW5jaCB0aGUgaU9TIFNpbXVsYXRvciBhZ2FpbiB0byBlbnN1cmUgdGhlcmUgYXJl
IG5vIHJ1bm5pbmcgaW5zdGFuY2VzIG9mICRhcHBCdW5kbGUuCisgICAgICAgIHByaW50ICJRdWl0
dGluZyBhbmQgbGF1bmNoaW5nIGlPUyBTaW11bGF0b3IuLi5cbiI7CisgICAgICAgIHJlbGF1bmNo
SU9TU2ltdWxhdG9yKCRzaW11bGF0ZWREZXZpY2UpOworCisgICAgICAgIHByaW50ICJJbnN0YWxs
aW5nICRhcHBCdW5kbGUuXG4iOworICAgICAgICAjIEluc3RhbGwgY3VzdG9tIGJ1aWx0IGFwcCwg
b3ZlcndyaXRpbmcgYW4gYXBwIHdpdGggdGhlIHNhbWUgYXBwIGlkZW50aWZpZXIgaWYgb25lIGV4
aXN0cy4KKyAgICAgICAgZXhpdFN0YXR1cyhzeXN0ZW0oInhjcnVuIiwgIi0tc2RrIiwgImlwaG9u
ZXNpbXVsYXRvciIsICJzaW1jdGwiLCAiaW5zdGFsbCIsICRzaW11bGF0ZWREZXZpY2VVRElELCAk
YXBwQnVuZGxlKSkgPT0gMCBvciBkaWU7CiAKLSAgICBteSAkYm9vdGVkU2ltdWxhdG9yRGV2aWNl
ID0gYm9vdGVkSU9TU2ltdWxhdG9yRGV2aWNlKCk7Ci0gICAgaWYgKCEkYm9vdGVkU2ltdWxhdG9y
RGV2aWNlIHx8ICRib290ZWRTaW11bGF0b3JEZXZpY2UtPntVRElEfSBuZSAkc2ltdWxhdGVkRGV2
aWNlLT57VURJRH0pIHsKLSAgICAgICAgcXVpdElPU1NpbXVsYXRvcigpOwotICAgICAgICBvcGVu
SU9TU2ltdWxhdG9yKCRzaW11bGF0ZWREZXZpY2UpOwogICAgIH0KIAogICAgICRzaW11bGF0b3JP
cHRpb25zID0ge30gdW5sZXNzICRzaW11bGF0b3JPcHRpb25zOwpAQCAtMjE3NiwxNSArMjI2MCw4
IEBAIHN1YiBydW5JT1NXZWJLaXRBcHBJblNpbXVsYXRvcigkOyQpCiAgICAgICAgICRFTlZ7IlNJ
TUNUTF9DSElMRF8ka2V5In0gPSAkc2ltdWxhdG9yRU5WeyRrZXl9OwogICAgIH0KIAotICAgICMg
RklYTUU6IFdlIHNob3VsZCBhbHNvIGVyYXNlIHRoZSBpT1MgU2ltdWxhdG9yIGRldmljZSB3aGVu
IGFsdGVybmF0aW5nIGJldHdlZW4gcnVubmluZyBhCi0gICAgIyBjdXN0b20tYnVpbHQgTW9iaWxl
U2FmYXJpIGFuZCB0aGUgc3lzdGVtLWluc3RhbGxlZCBNb2JpbGVTYWZhcmkuCi0gICAgaWYgKCFp
c0lPU1NpbXVsYXRvclN5c3RlbUluc3RhbGxlZEFwcCgkYXBwQnVuZGxlKSkgewotICAgICAgICBl
cmFzZUlPU1NpbXVsYXRvckRldmljZSgkc2ltdWxhdGVkRGV2aWNlLT57VURJRH0pIG9yIGRpZTsK
LSAgICB9Ci0KLSAgICBteSAkYXBwSWRlbnRpZmllciA9IGFwcElkZW50aWZpZXJGcm9tQnVuZGxl
KCRhcHBCdW5kbGUpOwogICAgIHByaW50ICJTdGFydGluZyAkYXBwRGlzcGxheU5hbWUgd2l0aCBE
WUxEX0ZSQU1FV09SS19QQVRIIHNldCB0byBwb2ludCB0byBidWlsdCBXZWJLaXQgaW4gJHByb2R1
Y3REaXIuXG4iOwotICAgIHJldHVybiBleGl0U3RhdHVzKHN5c3RlbSgieGNydW4iLCAiLS1zZGsi
LCAiaXBob25lc2ltdWxhdG9yIiwgInNpbWN0bCIsICJsYXVuY2giLCAkc2ltdWxhdGVkRGV2aWNl
LT57VURJRH0sICRhcHBJZGVudGlmaWVyLCBAJGFwcGxpY2F0aW9uQXJndW1lbnRzKSk7CisgICAg
cmV0dXJuIGV4aXRTdGF0dXMoc3lzdGVtKCJ4Y3J1biIsICItLXNkayIsICJpcGhvbmVzaW11bGF0
b3IiLCAic2ltY3RsIiwgImxhdW5jaCIsICRzaW11bGF0ZWREZXZpY2VVRElELCAkYXBwSWRlbnRp
ZmllciwgQCRhcHBsaWNhdGlvbkFyZ3VtZW50cykpOwogfQogCiBzdWIgcnVuSU9TV2ViS2l0QXBw
KCQpCg==
</data>
<flag name="review"
          id="270302"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>