<?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>160833</bug_id>
          
          <creation_ts>2016-08-12 16:59:51 -0700</creation_ts>
          <short_desc>Allow a port to run tests with a custom device setup</short_desc>
          <delta_ts>2016-08-15 13:54:24 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>glenn</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1219797</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-08-12 16:59:51 -0700</bug_when>
    <thetext>Allow a port to run tests with a custom device setup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219801</commentid>
    <comment_count>1</comment_count>
      <attachid>285982</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-08-12 17:10:05 -0700</bug_when>
    <thetext>Created attachment 285982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219814</commentid>
    <comment_count>2</comment_count>
      <attachid>285988</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-08-12 18:03:48 -0700</bug_when>
    <thetext>Created attachment 285988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220076</commentid>
    <comment_count>3</comment_count>
      <attachid>285988</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-08-15 11:00:02 -0700</bug_when>
    <thetext>Comment on attachment 285988
Patch

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

It would be good if we had more test coverage for the changes. The changes look sane.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:106
&gt; +    def _custom_device_for_test(self, test):
&gt; +        for device_class in self._port.CUSTOM_DEVICE_CLASSES:
&gt; +            directory_suffix = device_class + self._port.TEST_PATH_SEPARATOR
&gt; +            if directory_suffix in test:
&gt; +                return device_class
&gt; +        return None

We could add a test for this function in manager_unittest.py.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:220
&gt; +                _log.debug(&apos;%s tests use device %s&apos;, len(custom_device_tests[device_class]), device_class)

Nit: I know this is a debug logging. We could use pluralize() here to emit &quot;test&quot; or &quot;tests&quot;.

&gt; Tools/Scripts/webkitpy/port/driver.py:56
&gt; +        return &quot;DriverInput(test_name=&apos;%s&apos;, timeout=%s, image_hash=%s, should_run_pixel_test=%s&apos;&quot; % (self.test_name, self.timeout, self.image_hash, self.should_run_pixel_test)

Nit: I believe we prefer using String.format() instead of the % operator towards making this code compatible with Python 3. I&apos;m unclear of the status of our effort.

&gt; Tools/Scripts/webkitpy/port/ios.py:89
&gt; +            &apos;ipad&apos;: &apos;iPad Air&apos;},

For your consideration, I suggest we put the &quot;},&quot; on its on own line. This has the benefit that when appending a new device type to the end of this dictionary that we do not need to modify this line.

&gt; Tools/Scripts/webkitpy/port/ios.py:92
&gt; +            &apos;ipad&apos;: &apos;iPad Retina&apos;},

Ditto.

&gt; Tools/Scripts/webkitpy/port/port_testcase.py:254
&gt; +        print port

Did you intend to add this line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220142</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-08-15 13:54:19 -0700</bug_when>
    <thetext>https://trac.webkit.org/r204477</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285982</attachid>
            <date>2016-08-12 17:10:05 -0700</date>
            <delta_ts>2016-08-12 18:03:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160833-20160812170826.patch</filename>
            <type>text/plain</type>
            <size>26757</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0Mzg2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDk3YzNjYTFjM2ZhOWMwYTFkY2YyMDNiN2QwZGQ5MjJh
MDEwOThmYi4uN2JiOTJmZWU3NWI3MDJkNzZiMzI5YzJjZjYxNDFjY2Q5MTRlNDU4NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYx
IEBACisyMDE2LTA4LTEyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEFsbG93IGEgcG9ydCB0byBydW4gdGVzdHMgd2l0aCBhIGN1c3RvbSBkZXZpY2Ug
c2V0dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDgzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgYWxsb3cgdGhlIElPU1NpbXVsYXRvciBwb3J0IHRvIHJ1biB0ZXN0cyBpbiBp
UGFkIG1vZGUuCisKKyAgICAgICAgVGhpcyBpcyBtYWRlIHBvc3NpYmxlIGJ5IGFsbG93aW5nIGEg
cGxhdGZvcm0gdG8gZGVmaW5lIENVU1RPTV9ERVZJQ0VfQ0xBU1NFUywKKyAgICAgICAgaW4gdGhp
cyBjYXNlICdpcGFkJy4gV2hlbiBzcGVjaWZpZWQsIGFueSB0ZXN0IGluIGEgZGlyZWN0b3J5IHdp
dGggYSBzdWZmaXggdGhhdCBtYXRjaGVzCisgICAgICAgIGEgY3VzdG9tIGRldmljZSB3aWxsIGJl
IGNvbGxlY3RlZCBpbnRvIGEgc2V0LCBhbmQgcnVuIGluIHRoYXQgZGV2aWNlJ3MgZW52aXJvbm1l
bnQgYWZ0ZXIKKyAgICAgICAgdGhlIG90aGVyIHRlc3RzIGhhdmUgcnVuLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAg
ICAgICAgKE1hbmFnZXIuX2N1c3RvbV9kZXZpY2VfZm9yX3Rlc3QpOiBJZiB0aGUgdGVzdCBjb250
YWlucyBhIGRpcmVjdG9yeSBtYXRjaGluZyBhCisgICAgICAgIGN1c3RvbSBkZXZpY2Ugc3VmZml4
LCByZXR1cm4gdGhhdCBjdXN0b20gZGV2aWNlLgorICAgICAgICAoTWFuYWdlci5fc2V0X3VwX3J1
bik6IFB1c2ggdGhlIGN1c3RvbSBkZXZpY2UgY2xhc3MsIGlmIGFueSwgaW50byBvcHRpb25zIHNv
CisgICAgICAgIHRoYXQgdGhlIFdvcmtlciBjYW4gZ2V0IHRvIGl0LgorICAgICAgICAoTWFuYWdl
ci5ydW4pOiBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIHRlc3RzLCBhbmQgYnJlYWsgaXQgZG93biBp
bnRvIGRldmljZS1nZW5lcmljCisgICAgICAgIHRlc3RzLCBhbmQgdGVzdHMgZm9yIGVhY2ggZGV2
aWNlIGNsYXNzLiBfcnVuX3Rlc3Rfc3Vic2V0IGlzIHRoZW4gY2FsbGVkIGZvcgorICAgICAgICBl
YWNoIGNvbGxlY3Rpb24gb2YgdGVzdHMsIGFuZCB0aGUgcmVzdWx0cyBtZXJnZWQuCisgICAgICAg
IChNYW5hZ2VyLl9ydW5fdGVzdF9zdWJzZXQpOiBTb21lIGxpbmVzIHVud3JhcHBlZC4KKyAgICAg
ICAgKE1hbmFnZXIuX2VuZF90ZXN0X3J1bik6CisgICAgICAgIChNYW5hZ2VyLl9ydW5fdGVzdHMp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Np
bmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKFNpbmdsZVRlc3RSdW5uZXIuX19pbml0X18p
OiBVbndyYXBwZWQgYSBsaW5lLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5OgorICAgICAgICAoVGVzdFJ1blJlc3VsdHMu
bWVyZ2UpOiBBZGQgdGhpcyBmdW5jdGlvbiB0byBtZXJnZSBUZXN0UnVuUmVzdWx0cworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5OgorICAg
ICAgICAoUHJpbnRlci5wcmludF93b3JrZXJzX2FuZF9zaGFyZHMpOiBQcmludCB0aGUgY3VzdG9t
IGRldmljZSwgaWYgYW55LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5
OgorICAgICAgICAoUG9ydCk6IEJhc2UgcG9ydCBoYXMgZW1wdHkgYXJyYXkgb2YgY3VzdG9tIGRl
dmljZXMuCisgICAgICAgIChQb3J0LnNldHVwX3Rlc3RfcnVuKTogQWRkIGRldmljZV9jbGFzcyBh
cmd1bWVudC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5OgorICAg
ICAgICAoRHJpdmVySW5wdXQuX19yZXByX18pOgorICAgICAgICAoRHJpdmVyLmNoZWNrX2RyaXZl
ci5pbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2VmbC5w
eToKKyAgICAgICAgKEVmbFBvcnQuc2V0dXBfdGVzdF9ydW4pOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQb3J0LnNldHVwX3Rlc3RfcnVuKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5OgorICAgICAgICAoSU9TU2lt
dWxhdG9yUG9ydCk6IEFkZCBDVVNUT01fREVWSUNFX0NMQVNTRVMgZm9yIGlwYWQuCisgICAgICAg
IChJT1NTaW11bGF0b3JQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQu
c2ltdWxhdG9yX2RldmljZV90eXBlKTogVXNlIGEgZGV2aWNlIG5hbWUgZnJvbSB0aGUgREVWSUNF
X0NMQVNTX01BUAorICAgICAgICBiYXNlZCBvbiB0aGUgY3VzdG9tIGRldmljZSBjbGFzcy4KKyAg
ICAgICAgKElPU1NpbXVsYXRvclBvcnQuX3NldF9kZXZpY2VfY2xhc3MpOgorICAgICAgICAoSU9T
U2ltdWxhdG9yUG9ydC5fY3JlYXRlX3NpbXVsYXRvcnMpOiBGYWN0b3Igc29tZSBjb2RlIGludG8g
dGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQuc2V0dXBfdGVzdF9ydW4p
OgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC50ZXN0aW5nX2RldmljZSk6CisgICAgICAgIChJ
T1NTaW11bGF0b3JQb3J0LnJlc2V0X3ByZWZlcmVuY2VzKTogVGhpcyB1c2VkIHRvIGNyZWF0ZSB0
aGUgc2ltdWxhdG9yIGFwcHMsIGJ1dCB0aGF0CisgICAgICAgIHNlZW1lZCB3cm9uZyBmb3IgdGhp
cyBmdW5jdGlvbi4gVGhhdCB3YXMgbW92ZWQgdG8gc2V0dXBfdGVzdF9ydW4oKS4KKyAgICAgICAg
KElPU1NpbXVsYXRvclBvcnQuY2hlY2tfc3lzX2RlcHMpOiBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8g
Y3JlYXRlIHRlc3RpbmcgZGV2aWNlcywKKyAgICAgICAgYnV0IHRoaXMgaGFwcGVuZWQgdG9vIGVh
cmx5LCBiZWZvcmUgd2Uga25ldyB3aGljaCBraW5kIG9mIGRldmljZXMgdG8gY3JlYXRlLiBEZXZp
Y2VzCisgICAgICAgIGFyZSBub3cgY3JlYXRlZCBpbiBzZXR1cF90ZXN0X3J1bigpLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5Qb3J0LnNldHVw
X3Rlc3RfcnVuKToKKwogMjAxNi0wOC0xMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBpT1MgRFJUL1dUUiBwcm9qZWN0IGNsZWFudXAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFn
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyLnB5CmluZGV4IDAwMWNmZGZjZDhjOGJjMzY2MmJkNWJhYjgzZDliZjA3YmY2ZGJmZGEu
LmNkZDZmNzU4YjY4NjA5OTFhNmQyOGU3YWIxMDg4YTgyZDQyZWJjMzIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlci5weQpAQCAtMzksNiArMzksNyBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJhbmRvbQog
aW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRk
aWN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0
IFNDTURldGVjdG9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuZmlsZV91cGxvYWRlciBpbXBv
cnQgRmlsZVVwbG9hZGVyCkBAIC05Nyw2ICs5OCwxMyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6
CiAgICAgZGVmIF9pc193ZWJfcGxhdGZvcm1fdGVzdChzZWxmLCB0ZXN0KToKICAgICAgICAgcmV0
dXJuIHNlbGYud2ViX3BsYXRmb3JtX3Rlc3Rfc3ViZGlyIGluIHRlc3QKIAorICAgIGRlZiBfY3Vz
dG9tX2RldmljZV9mb3JfdGVzdChzZWxmLCB0ZXN0KToKKyAgICAgICAgZm9yIGRldmljZV9jbGFz
cyBpbiBzZWxmLl9wb3J0LkNVU1RPTV9ERVZJQ0VfQ0xBU1NFUzoKKyAgICAgICAgICAgIGRpcmVj
dG9yeV9zdWZmaXggPSBkZXZpY2VfY2xhc3MgKyBzZWxmLl9wb3J0LlRFU1RfUEFUSF9TRVBBUkFU
T1IKKyAgICAgICAgICAgIGlmIGRpcmVjdG9yeV9zdWZmaXggaW4gdGVzdDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZGV2aWNlX2NsYXNzCisgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYg
X2h0dHBfdGVzdHMoc2VsZiwgdGVzdF9uYW1lcyk6CiAgICAgICAgIHJldHVybiBzZXQodGVzdCBm
b3IgdGVzdCBpbiB0ZXN0X25hbWVzIGlmIHNlbGYuX2lzX2h0dHBfdGVzdCh0ZXN0KSkKIApAQCAt
MTQxLDEyICsxNDksMTQgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICB3b3JrZXJf
Y291bnQgPSBzZWxmLl9ydW5uZXIuZ2V0X3dvcmtlcl9jb3VudCh0ZXN0X2lucHV0cywgaW50KHNl
bGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSkKICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGls
ZF9wcm9jZXNzZXMgPSB3b3JrZXJfY291bnQKIAotICAgIGRlZiBfc2V0X3VwX3J1bihzZWxmLCB0
ZXN0X25hbWVzKToKKyAgICBkZWYgX3NldF91cF9ydW4oc2VsZiwgdGVzdF9uYW1lcywgZGV2aWNl
X2NsYXNzPU5vbmUpOgogICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSgiQ2hlY2tp
bmcgYnVpbGQgLi4uIikKICAgICAgICAgaWYgbm90IHNlbGYuX3BvcnQuY2hlY2tfYnVpbGQoc2Vs
Zi5uZWVkc19zZXJ2ZXJzKHRlc3RfbmFtZXMpKToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkJ1
aWxkIGNoZWNrIGZhaWxlZCIpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgICAgICBz
ZWxmLl9vcHRpb25zLmRldmljZV9jbGFzcyA9IGRldmljZV9jbGFzcworCiAgICAgICAgICMgVGhp
cyBtdXN0IGJlIHN0YXJ0ZWQgYmVmb3JlIHdlIGNoZWNrIHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVz
LAogICAgICAgICAjIHNpbmNlIHRoZSBoZWxwZXIgbWF5IGRvIHRoaW5ncyB0byBtYWtlIHRoZSBz
ZXR1cCBjb3JyZWN0LgogICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSgiU3RhcnRp
bmcgaGVscGVyIC4uLiIpCkBAIC0xNjksNyArMTc5LDcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3Qp
OgogICAgICAgICAjIENyZWF0ZSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGFs
cmVhZHkgZXhpc3QuCiAgICAgICAgIHNlbGYuX3BvcnQuaG9zdC5maWxlc3lzdGVtLm1heWJlX21h
a2VfZGlyZWN0b3J5KHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5KQogCi0gICAgICAgIHNlbGYuX3Bv
cnQuc2V0dXBfdGVzdF9ydW4oKQorICAgICAgICBzZWxmLl9wb3J0LnNldHVwX3Rlc3RfcnVuKHNl
bGYuX29wdGlvbnMuZGV2aWNlX2NsYXNzKQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVm
IHJ1bihzZWxmLCBhcmdzKToKQEAgLTE5NCwxMyArMjA0LDU2IEBAIGNsYXNzIE1hbmFnZXIob2Jq
ZWN0KToKICAgICAgICAgICAgIF9sb2cuY3JpdGljYWwoJ05vIHRlc3RzIHRvIHJ1bi4nKQogICAg
ICAgICAgICAgcmV0dXJuIHRlc3RfcnVuX3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEp
CiAKLSAgICAgICAgdHJ5OgorICAgICAgICBkZWZhdWx0X2RldmljZV90ZXN0cyA9IFtdCisKKyAg
ICAgICAgIyBMb29rIGZvciB0ZXN0cyB3aXRoIGN1c3RvbSBkZXZpY2UgcmVxdWlyZW1lbnRzLgor
ICAgICAgICBjdXN0b21fZGV2aWNlX3Rlc3RzID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICAgICAg
Zm9yIHRlc3RfZmlsZSBpbiB0ZXN0c190b19ydW46CisgICAgICAgICAgICBjdXN0b21fZGV2aWNl
ID0gc2VsZi5fY3VzdG9tX2RldmljZV9mb3JfdGVzdCh0ZXN0X2ZpbGUpCisgICAgICAgICAgICBp
ZiBjdXN0b21fZGV2aWNlOgorICAgICAgICAgICAgICAgIGN1c3RvbV9kZXZpY2VfdGVzdHNbY3Vz
dG9tX2RldmljZV0uYXBwZW5kKHRlc3RfZmlsZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgZGVmYXVsdF9kZXZpY2VfdGVzdHMuYXBwZW5kKHRlc3RfZmlsZSkKKworICAgICAg
ICBpZiBjdXN0b21fZGV2aWNlX3Rlc3RzOgorICAgICAgICAgICAgZm9yIGRldmljZV9jbGFzcyBp
biBjdXN0b21fZGV2aWNlX3Rlc3RzOgorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJyVzIHRl
c3RzIHVzZSBkZXZpY2UgJXMnLCBsZW4oY3VzdG9tX2RldmljZV90ZXN0c1tkZXZpY2VfY2xhc3Nd
KSwgZGV2aWNlX2NsYXNzKQorCisgICAgICAgIGluaXRpYWxfcmVzdWx0cyA9IE5vbmUKKyAgICAg
ICAgcmV0cnlfcmVzdWx0cyA9IE5vbmUKKyAgICAgICAgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9y
ZXRyeSA9IEZhbHNlCisKKyAgICAgICAgaWYgZGVmYXVsdF9kZXZpY2VfdGVzdHM6CisgICAgICAg
ICAgICBfbG9nLmluZm8oJycpCisgICAgICAgICAgICBfbG9nLmluZm8oIlJ1bm5pbmcgJXMiLCBw
bHVyYWxpemUobGVuKHRlc3RzX3RvX3J1biksICJ0ZXN0IikpCisgICAgICAgICAgICBfbG9nLmlu
Zm8oJycpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2V0X3VwX3J1bih0ZXN0c190b19ydW4p
OgogICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhp
dF9jb2RlPS0xKQogCisgICAgICAgICAgICBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMs
IGVuYWJsZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkgPSBzZWxmLl9ydW5fdGVzdF9zdWJzZXQoZGVm
YXVsdF9kZXZpY2VfdGVzdHMsIHRlc3RzX3RvX3NraXApCisKKyAgICAgICAgZm9yIGRldmljZV9j
bGFzcyBpbiBjdXN0b21fZGV2aWNlX3Rlc3RzOgorICAgICAgICAgICAgZGV2aWNlX3Rlc3RzID0g
Y3VzdG9tX2RldmljZV90ZXN0c1tkZXZpY2VfY2xhc3NdCisgICAgICAgICAgICBpZiBkZXZpY2Vf
dGVzdHM6CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcnKQorICAgICAgICAgICAgICAgIF9s
b2cuaW5mbygnUnVubmluZyAlcyBmb3IgJXMnLCBwbHVyYWxpemUobGVuKGRldmljZV90ZXN0cyks
ICJ0ZXN0IiksIGRldmljZV9jbGFzcykKKyAgICAgICAgICAgICAgICBfbG9nLmluZm8oJycpCisg
ICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3NldF91cF9ydW4oZGV2aWNlX3Rlc3RzLCBkZXZp
Y2VfY2xhc3MpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5S
dW5EZXRhaWxzKGV4aXRfY29kZT0tMSkKKworICAgICAgICAgICAgICAgIGRldmljZV9pbml0aWFs
X3Jlc3VsdHMsIGRldmljZV9yZXRyeV9yZXN1bHRzLCBkZXZpY2VfZW5hYmxlZF9waXhlbF90ZXN0
c19pbl9yZXRyeSA9IHNlbGYuX3J1bl90ZXN0X3N1YnNldChkZXZpY2VfdGVzdHMsIHRlc3RzX3Rv
X3NraXApCisKKyAgICAgICAgICAgICAgICBpbml0aWFsX3Jlc3VsdHMgPSBpbml0aWFsX3Jlc3Vs
dHMubWVyZ2UoZGV2aWNlX2luaXRpYWxfcmVzdWx0cykgaWYgaW5pdGlhbF9yZXN1bHRzIGVsc2Ug
ZGV2aWNlX2luaXRpYWxfcmVzdWx0cworICAgICAgICAgICAgICAgIHJldHJ5X3Jlc3VsdHMgPSBy
ZXRyeV9yZXN1bHRzLm1lcmdlKGRldmljZV9yZXRyeV9yZXN1bHRzKSBpZiByZXRyeV9yZXN1bHRz
IGVsc2UgZGV2aWNlX3JldHJ5X3Jlc3VsdHMKKyAgICAgICAgICAgICAgICBlbmFibGVkX3BpeGVs
X3Rlc3RzX2luX3JldHJ5IHw9IGRldmljZV9lbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5CisK
KyAgICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXR1cm4gc2VsZi5fZW5k
X3Rlc3RfcnVuKHN0YXJ0X3RpbWUsIGVuZF90aW1lLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jl
c3VsdHMsIGVuYWJsZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkpCisKKyAgICBkZWYgX3J1bl90ZXN0
X3N1YnNldChzZWxmLCB0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXApOgorICAgICAgICB0cnk6
CiAgICAgICAgICAgICBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5ID0gRmFsc2UKLSAgICAg
ICAgICAgIGluaXRpYWxfcmVzdWx0cyA9IHNlbGYuX3J1bl90ZXN0cyh0ZXN0c190b19ydW4sIHRl
c3RzX3RvX3NraXAsIHNlbGYuX29wdGlvbnMucmVwZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRl
cmF0aW9ucywKLSAgICAgICAgICAgICAgICBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNz
ZXMpLCByZXRyeWluZz1GYWxzZSkKKyAgICAgICAgICAgIGluaXRpYWxfcmVzdWx0cyA9IHNlbGYu
X3J1bl90ZXN0cyh0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAsIHNlbGYuX29wdGlvbnMucmVw
ZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucywgaW50KHNlbGYuX29wdGlvbnMuY2hp
bGRfcHJvY2Vzc2VzKSwgcmV0cnlpbmc9RmFsc2UpCiAKICAgICAgICAgICAgIHRlc3RzX3RvX3Jl
dHJ5ID0gc2VsZi5fdGVzdHNfdG9fcmV0cnkoaW5pdGlhbF9yZXN1bHRzLCBpbmNsdWRlX2NyYXNo
ZXM9c2VsZi5fcG9ydC5zaG91bGRfcmV0cnlfY3Jhc2hlcygpKQogICAgICAgICAgICAgIyBEb24n
dCByZXRyeSBmYWlsdXJlcyB3aGVuIGludGVycnVwdGVkIGJ5IHVzZXIgb3IgZmFpbHVyZXMgbGlt
aXQgZXhjZXB0aW9uLgpAQCAtMjExLDggKzI2NCw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToK
ICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJycpCiAgICAgICAgICAgICAgICAgX2xvZy5pbmZv
KCJSZXRyeWluZyAlcyAuLi4iICUgcGx1cmFsaXplKGxlbih0ZXN0c190b19yZXRyeSksICJ1bmV4
cGVjdGVkIGZhaWx1cmUiKSkKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJycpCi0gICAgICAg
ICAgICAgICAgcmV0cnlfcmVzdWx0cyA9IHNlbGYuX3J1bl90ZXN0cyh0ZXN0c190b19yZXRyeSwg
dGVzdHNfdG9fc2tpcD1zZXQoKSwgcmVwZWF0X2VhY2g9MSwgaXRlcmF0aW9ucz0xLAotICAgICAg
ICAgICAgICAgICAgICBudW1fd29ya2Vycz0xLCByZXRyeWluZz1UcnVlKQorICAgICAgICAgICAg
ICAgIHJldHJ5X3Jlc3VsdHMgPSBzZWxmLl9ydW5fdGVzdHModGVzdHNfdG9fcmV0cnksIHRlc3Rz
X3RvX3NraXA9c2V0KCksIHJlcGVhdF9lYWNoPTEsIGl0ZXJhdGlvbnM9MSwgbnVtX3dvcmtlcnM9
MSwgcmV0cnlpbmc9VHJ1ZSkKIAogICAgICAgICAgICAgICAgIGlmIGVuYWJsZWRfcGl4ZWxfdGVz
dHNfaW5fcmV0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVz
dHMgPSBGYWxzZQpAQCAtMjIxLDEwICsyNzMsMTIgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgog
ICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fY2xlYW5fdXBfcnVuKCkKIAotICAg
ICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIHJldHVybiAoaW5pdGlhbF9yZXN1
bHRzLCByZXRyeV9yZXN1bHRzLCBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5KQogCisgICAg
ZGVmIF9lbmRfdGVzdF9ydW4oc2VsZiwgc3RhcnRfdGltZSwgZW5kX3RpbWUsIGluaXRpYWxfcmVz
dWx0cywgcmV0cnlfcmVzdWx0cywgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSk6CiAgICAg
ICAgICMgU29tZSBjcmFzaCBsb2dzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIHRvIGJlIHdyaXR0ZW4g
b3V0IHNvIGxvb2sKICAgICAgICAgIyBmb3IgbmV3IGxvZ3MgYWZ0ZXIgdGhlIHRlc3QgcnVuIGZp
bmlzaGVzLgorCiAgICAgICAgIF9sb2cuZGVidWcoImxvb2tpbmcgZm9yIG5ldyBjcmFzaCBsb2dz
IikKICAgICAgICAgc2VsZi5fbG9va19mb3JfbmV3X2NyYXNoX2xvZ3MoaW5pdGlhbF9yZXN1bHRz
LCBzdGFydF90aW1lKQogICAgICAgICBpZiByZXRyeV9yZXN1bHRzOgpAQCAtMjU5LDYgKzMxMyw3
IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgbmVlZHNfd2Vic29ja2V0cyA9IGFu
eShzZWxmLl9pc193ZWJzb2NrZXRfdGVzdCh0ZXN0KSBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4p
CiAKICAgICAgICAgdGVzdF9pbnB1dHMgPSBzZWxmLl9nZXRfdGVzdF9pbnB1dHModGVzdHNfdG9f
cnVuLCByZXBlYXRfZWFjaCwgaXRlcmF0aW9ucykKKwogICAgICAgICByZXR1cm4gc2VsZi5fcnVu
bmVyLnJ1bl90ZXN0cyhzZWxmLl9leHBlY3RhdGlvbnMsIHRlc3RfaW5wdXRzLCB0ZXN0c190b19z
a2lwLCBudW1fd29ya2VycywgbmVlZHNfaHR0cCwgbmVlZHNfd2Vic29ja2V0cywgbmVlZHNfd2Vi
X3BsYXRmb3JtX3Rlc3Rfc2VydmVyLCByZXRyeWluZykKIAogICAgIGRlZiBfY2xlYW5fdXBfcnVu
KHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CmluZGV4IDc5
YzZmYzFiOTRiN2IxMTE3ZTljYjA1ZDkyNGI0NTU2NjY0NWE5YTEuLmU4NTgzNTI0NzAzZTJiZjM4
NmFlZDhkZmRmNjY2NTcwZGU4ZjhhMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVz
dF9ydW5uZXIucHkKQEAgLTcwLDggKzcwLDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcihvYmpl
Y3QpOgogICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiAoJy50eHQnLCAnLnBuZycsICcud2F2Jyk6
CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSBzZWxmLl9wb3J0LmV4cGVjdGVk
X2ZpbGVuYW1lKHNlbGYuX3Rlc3RfbmFtZSwgc3VmZml4KQogICAgICAgICAgICAgICAgIGlmIHNl
bGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGV4cGVjdGVkX2ZpbGVuYW1lKToKLSAgICAgICAgICAgICAg
ICAgICAgX2xvZy5lcnJvcignJXMgaXMgYSByZWZ0ZXN0LCBidXQgaGFzIGFuIHVudXNlZCBleHBl
Y3RhdGlvbiBmaWxlLiBQbGVhc2UgcmVtb3ZlICVzLicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl90ZXN0X25hbWUsIGV4cGVjdGVkX2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAg
ICBfbG9nLmVycm9yKCclcyBpcyBhIHJlZnRlc3QsIGJ1dCBoYXMgYW4gdW51c2VkIGV4cGVjdGF0
aW9uIGZpbGUuIFBsZWFzZSByZW1vdmUgJXMuJywgc2VsZi5fdGVzdF9uYW1lLCBleHBlY3RlZF9m
aWxlbmFtZSkKIAogICAgIGRlZiBfZXhwZWN0ZWRfZHJpdmVyX291dHB1dChzZWxmKToKICAgICAg
ICAgcmV0dXJuIERyaXZlck91dHB1dChzZWxmLl9wb3J0LmV4cGVjdGVkX3RleHQoc2VsZi5fdGVz
dF9uYW1lKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkKaW5kZXggZjEzOTY2MTk5MzQxNDJj
MDdlMDVhNDBjYmZkZGMwZDQ1ZTFlMDllNC4uOWU3MmVkMDNhYzVlODNlOWY5NmQzN2EyNjhmMWJk
ODMzMzkwNjAxYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkKQEAgLTkzLDYgKzkzLDMw
IEBAIGNsYXNzIFRlc3RSdW5SZXN1bHRzKG9iamVjdCk6CiAgICAgICAgIGlmIHRlc3RfaXNfc2xv
dzoKICAgICAgICAgICAgIHNlbGYuc2xvd190ZXN0cy5hZGQodGVzdF9yZXN1bHQudGVzdF9uYW1l
KQogCisgICAgZGVmIG1lcmdlKHNlbGYsIHRlc3RfcnVuX3Jlc3VsdHMpOgorICAgICAgICAjIHNl
bGYuZXhwZWN0YXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYm90aAorICAgICAgICBzZWxm
LnRvdGFsICs9IHRlc3RfcnVuX3Jlc3VsdHMudG90YWwKKyAgICAgICAgc2VsZi5yZW1haW5pbmcg
Kz0gdGVzdF9ydW5fcmVzdWx0cy5yZW1haW5pbmcKKyAgICAgICAgc2VsZi5leHBlY3RlZCArPSB0
ZXN0X3J1bl9yZXN1bHRzLmV4cGVjdGVkCisgICAgICAgIHNlbGYudW5leHBlY3RlZCArPSB0ZXN0
X3J1bl9yZXN1bHRzLnVuZXhwZWN0ZWQKKyAgICAgICAgc2VsZi51bmV4cGVjdGVkX2ZhaWx1cmVz
ICs9IHRlc3RfcnVuX3Jlc3VsdHMudW5leHBlY3RlZF9mYWlsdXJlcworICAgICAgICBzZWxmLnVu
ZXhwZWN0ZWRfY3Jhc2hlcyArPSB0ZXN0X3J1bl9yZXN1bHRzLnVuZXhwZWN0ZWRfY3Jhc2hlcwor
ICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfdGltZW91dHMgKz0gdGVzdF9ydW5fcmVzdWx0cy51bmV4
cGVjdGVkX3RpbWVvdXRzCisgICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb24udXBkYXRl
KHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlfZXhwZWN0YXRpb24pCisgICAgICAgIHNlbGYudGVz
dHNfYnlfdGltZWxpbmUudXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlfdGltZWxpbmUp
CisgICAgICAgIHNlbGYucmVzdWx0c19ieV9uYW1lLnVwZGF0ZSh0ZXN0X3J1bl9yZXN1bHRzLnJl
c3VsdHNfYnlfbmFtZSkKKyAgICAgICAgc2VsZi5hbGxfcmVzdWx0cyArPSB0ZXN0X3J1bl9yZXN1
bHRzLmFsbF9yZXN1bHRzCisgICAgICAgIHNlbGYudW5leHBlY3RlZF9yZXN1bHRzX2J5X25hbWUu
dXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMudW5leHBlY3RlZF9yZXN1bHRzX2J5X25hbWUpCisgICAg
ICAgIHNlbGYuZmFpbHVyZXNfYnlfbmFtZS51cGRhdGUodGVzdF9ydW5fcmVzdWx0cy5mYWlsdXJl
c19ieV9uYW1lKQorICAgICAgICBzZWxmLnRvdGFsX2ZhaWx1cmVzICs9IHRlc3RfcnVuX3Jlc3Vs
dHMudG90YWxfZmFpbHVyZXMKKyAgICAgICAgc2VsZi5leHBlY3RlZF9za2lwcyArPSB0ZXN0X3J1
bl9yZXN1bHRzLmV4cGVjdGVkX3NraXBzCisgICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRp
b24udXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlfZXhwZWN0YXRpb24pCisgICAgICAg
IHNlbGYudGVzdHNfYnlfdGltZWxpbmUudXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlf
dGltZWxpbmUpCisgICAgICAgIHNlbGYuc2xvd190ZXN0cy51cGRhdGUodGVzdF9ydW5fcmVzdWx0
cy5zbG93X3Rlc3RzKQorCisgICAgICAgIHNlbGYuaW50ZXJydXB0ZWQgfD0gdGVzdF9ydW5fcmVz
dWx0cy5pbnRlcnJ1cHRlZAorICAgICAgICBzZWxmLmtleWJvYXJkX2ludGVycnVwdGVkIHw9IHRl
c3RfcnVuX3Jlc3VsdHMua2V5Ym9hcmRfaW50ZXJydXB0ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYK
IAogY2xhc3MgUnVuRGV0YWlscyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGl0
X2NvZGUsIHN1bW1hcml6ZWRfcmVzdWx0cz1Ob25lLCBpbml0aWFsX3Jlc3VsdHM9Tm9uZSwgcmV0
cnlfcmVzdWx0cz1Ob25lLCBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5PUZhbHNlKToKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50
aW5nLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRp
bmcucHkKaW5kZXggNzAxY2VmZTgwNTkwZmYxYjhmNzczNTdhMTcyZmFmNDZlZDhlM2YxZi4uNjVj
Nzk1NzE4YmMwZjg1ZGJmZjhjYzU1N2FjNDUyYmRjMjE4ZWZkNyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmcucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmcucHkKQEAgLTEx
MiwxMiArMTEyLDE0IEBAIGNsYXNzIFByaW50ZXIob2JqZWN0KToKIAogICAgIGRlZiBwcmludF93
b3JrZXJzX2FuZF9zaGFyZHMoc2VsZiwgbnVtX3dvcmtlcnMsIG51bV9zaGFyZHMpOgogICAgICAg
ICBkcml2ZXJfbmFtZSA9IHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKQorCisgICAgICAgIGRldmlj
ZV9zdWZmaXggPSAnIGZvciBkZXZpY2UgInt9IicuZm9ybWF0KHNlbGYuX29wdGlvbnMuZGV2aWNl
X2NsYXNzKSBpZiBzZWxmLl9vcHRpb25zLmRldmljZV9jbGFzcyBlbHNlICcnCiAgICAgICAgIGlm
IG51bV93b3JrZXJzID09IDE6Ci0gICAgICAgICAgICBzZWxmLl9wcmludF9kZWZhdWx0KCJSdW5u
aW5nIDEgJXMuIiAlIGRyaXZlcl9uYW1lKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWco
IiglcykuIiAlIGdyYW1tYXIucGx1cmFsaXplKG51bV9zaGFyZHMsICJzaGFyZCIpKQorICAgICAg
ICAgICAgc2VsZi5fcHJpbnRfZGVmYXVsdCgnUnVubmluZyAxIHt9e30uJy5mb3JtYXQoZHJpdmVy
X25hbWUsIGRldmljZV9zdWZmaXgpKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJyh7
fSkuJy5mb3JtYXQoZ3JhbW1hci5wbHVyYWxpemUobnVtX3NoYXJkcywgInNoYXJkIikpKQogICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVmYXVsdCgiUnVubmluZyAlcyBp
biBwYXJhbGxlbC4iICUgKGdyYW1tYXIucGx1cmFsaXplKG51bV93b3JrZXJzLCBkcml2ZXJfbmFt
ZSkpKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoIiglZCBzaGFyZHMpLiIgJSBudW1f
c2hhcmRzKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVmYXVsdCgnUnVubmluZyB7fSBpbiBw
YXJhbGxlbHt9LicuZm9ybWF0KGdyYW1tYXIucGx1cmFsaXplKG51bV93b3JrZXJzLCBkcml2ZXJf
bmFtZSksIGRldmljZV9zdWZmaXgpKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJyh7
fSBzaGFyZHMpLicuZm9ybWF0KG51bV9zaGFyZHMpKQogICAgICAgICBzZWxmLl9wcmludF9kZWZh
dWx0KCcnKQogCiAgICAgZGVmIF9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUoc2VsZiwg
cnVuX3Jlc3VsdHMsIHJlc3VsdF90eXBlLCByZXN1bHRfdHlwZV9zdHIsIHRlc3RzX3dpdGhfcmVz
dWx0X3R5cGVfY2FsbGJhY2spOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCBh
MDQ4M2EwYTkxZWRlYmQ1ZDg5OTk1OWU3ZmVmYTkzMzJkNDE4OWVmLi5iNjQ1YTUzZTkxNzMwMDVi
ZDY0OWQwYjI5MGZmYjExMDMyMjEyY2IyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5w
eQpAQCAtODIsNiArODIsOCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAKICAgICBERUZBVUxUX0FS
Q0hJVEVDVFVSRSA9ICd4ODYnCiAKKyAgICBDVVNUT01fREVWSUNFX0NMQVNTRVMgPSBbXQorCiAg
ICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGRldGVybWluZV9mdWxsX3BvcnRfbmFtZShjbHMsIGhv
c3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6CiAgICAgICAgICIiIlJldHVybiBhIGZ1bGx5LXNwZWNp
ZmllZCBwb3J0IG5hbWUgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3Qgb2JqZWN0cy4iIiIK
QEAgLTgwMyw3ICs4MDUsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICMgdG8gaGF2
ZSBtdWx0aXBsZSBjb3BpZXMgb2Ygd2Via2l0IGNoZWNrZWQgb3V0IGFuZCBidWlsdC4KICAgICAg
ICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2xheW91dC10ZXN0LXJlc3VsdHMnKQogCi0gICAg
ZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgorICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmLCBk
ZXZpY2VfY2xhc3M9Tm9uZSk6CiAgICAgICAgICIiIlBlcmZvcm0gcG9ydC1zcGVjaWZpYyB3b3Jr
IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSB0ZXN0IHJ1bi4iIiIKICAgICAgICAgcGFzcwogCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQppbmRleCBkNjQ5NTA4YmZmOWE2MjFhODZkZDU4
M2QwY2ZkNTQwNjAzMjg3NTEyLi40NDdjOTk1ZTdkMjQyNWFmZjY2MzYxNmJhZDM2YjJhYTUyNDI4
YmExIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkKQEAgLTUyLDYgKzUyLDkg
QEAgY2xhc3MgRHJpdmVySW5wdXQob2JqZWN0KToKICAgICAgICAgc2VsZi5zaG91bGRfcnVuX3Bp
eGVsX3Rlc3QgPSBzaG91bGRfcnVuX3BpeGVsX3Rlc3QKICAgICAgICAgc2VsZi5hcmdzID0gYXJn
cyBvciBbXQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkRyaXZl
cklucHV0KHRlc3RfbmFtZT0nJXMnLCB0aW1lb3V0PSVzLCBpbWFnZV9oYXNoPSVzLCBzaG91bGRf
cnVuX3BpeGVsX3Rlc3Q9JXMnIiAlIChzZWxmLnRlc3RfbmFtZSwgc2VsZi50aW1lb3V0LCBzZWxm
LmltYWdlX2hhc2gsIHNlbGYuc2hvdWxkX3J1bl9waXhlbF90ZXN0KQorCiAKIGNsYXNzIERyaXZl
ck91dHB1dChvYmplY3QpOgogICAgICIiIkdyb3VwcyBpbmZvcm1hdGlvbiBhYm91dCBhIG91dHB1
dCBmcm9tIGRyaXZlciBmb3IgZWFzeSBwYXNzaW5nCkBAIC01ODcsNiArNTkwLDcgQEAgY2xhc3Mg
RHJpdmVyKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBUcnVlCiAKIAorIyBGSVhNRTogdGhpcyBz
aG91bGQgYmUgYWJzdHJhY3RlZCBvdXQgdmlhIHRoZSBQb3J0IHN1YmNsYXNzIHNvbWVob3cuCiBj
bGFzcyBJT1NTaW11bGF0b3JEcml2ZXIoRHJpdmVyKToKICAgICBkZWYgY21kX2xpbmUoc2VsZiwg
cGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpOgogICAgICAgICBjbWQgPSBzdXBlcihJT1NTaW11
bGF0b3JEcml2ZXIsIHNlbGYpLmNtZF9saW5lKHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2VmbC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9lZmwucHkKaW5kZXggYTkwMGIzYzczMjY0MmNjNGIwYjE4OTkw
Y2VhZGZhM2Q1ZGFlZWQzNC4uYzI4Njg0NjRiMjY5OGY4NjExNjhkZmZjMjlmNzllMDE3NzU2NGE4
NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2VmbC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZWZsLnB5CkBAIC01NCw4ICs1NCw4IEBAIGNsYXNz
IEVmbFBvcnQoUG9ydCk6CiAgICAgZGVmIF9wb3J0X2ZsYWdfZm9yX3NjcmlwdHMoc2VsZik6CiAg
ICAgICAgIHJldHVybiAiLS1lZmwiCiAKLSAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6Ci0g
ICAgICAgIHN1cGVyKEVmbFBvcnQsIHNlbGYpLnNldHVwX3Rlc3RfcnVuKCkKKyAgICBkZWYgc2V0
dXBfdGVzdF9ydW4oc2VsZiwgZGV2aWNlX2NsYXNzKToKKyAgICAgICAgc3VwZXIoRWZsUG9ydCwg
c2VsZikuc2V0dXBfdGVzdF9ydW4oZGV2aWNlX2NsYXNzKQogICAgICAgICBzZWxmLl9wdWxzZWF1
ZGlvX3Nhbml0aXplci51bmxvYWRfcHVsc2VhdWRpb19tb2R1bGUoKQogCiAgICAgZGVmIHNldHVw
X2Vudmlyb25fZm9yX3NlcnZlcihzZWxmLCBzZXJ2ZXJfbmFtZT1Ob25lKToKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvZ3RrLnB5CmluZGV4IGM2MzAyZjE4YWU5OTE3YmE2MGI0OTEzNDNhMTdhZjk0YTkx
NDEyYzUuLmM3MGI0OTE5ZDU1ODUyNDQ4Nzg4NWIxODZiMzgzODhmODQ2NzJiODIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2d0ay5weQpAQCAtMTAwLDggKzEwMCw4IEBAIGNsYXNzIEd0a1BvcnQo
UG9ydCk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0X3RpbWVvdXRfbXMoKQogICAg
ICAgICByZXR1cm4gc3VwZXIoR3RrUG9ydCwgc2VsZikuZHJpdmVyX3N0b3BfdGltZW91dCgpCiAK
LSAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6Ci0gICAgICAgIHN1cGVyKEd0a1BvcnQsIHNl
bGYpLnNldHVwX3Rlc3RfcnVuKCkKKyAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZiwgZGV2aWNl
X2NsYXNzKToKKyAgICAgICAgc3VwZXIoR3RrUG9ydCwgc2VsZikuc2V0dXBfdGVzdF9ydW4oZGV2
aWNlX2NsYXNzKQogICAgICAgICBzZWxmLl9wdWxzZWF1ZGlvX3Nhbml0aXplci51bmxvYWRfcHVs
c2VhdWRpb19tb2R1bGUoKQogCiAgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigibGVha3MiKToK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CmluZGV4IGI2YzRkODE5ZGQ3MmJjZjUyZTAwYmU1
OTU5ZTk5M2ZiZmQ1MDY5NTcuLmRkMmYzNDA2NDE3ZGMzYzBmYzU4YWQ2ODAwZWRjODA0NGViZmEy
ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQpAQCAtNzQsMTUgKzc0LDMxIEBAIGNs
YXNzIElPU1NpbXVsYXRvclBvcnQoQXBwbGVQb3J0KToKICAgICBBUkNISVRFQ1RVUkVTID0gWyd4
ODZfNjQnLCAneDg2J10KICAgICBERUZBVUxUX0FSQ0hJVEVDVFVSRSA9ICd4ODZfNjQnCiAKKyAg
ICBERUZBVUxUX0RFVklDRV9DTEFTUyA9ICdpcGhvbmUnCisgICAgQ1VTVE9NX0RFVklDRV9DTEFT
U0VTID0gWydpcGFkJ10KKwogICAgIFNJTVVMQVRPUl9CVU5ETEVfSUQgPSAnY29tLmFwcGxlLmlw
aG9uZXNpbXVsYXRvcicKICAgICByZWxheV9uYW1lID0gJ0xheW91dFRlc3RSZWxheScKICAgICBT
SU1VTEFUT1JfRElSRUNUT1JZID0gIi90bXAvV2ViS2l0VGVzdGluZ1NpbXVsYXRvcnMvIgogICAg
IExTUkVHSVNURVJfUEFUSCA9ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25z
L0N1cnJlbnQvU3VwcG9ydC9sc3JlZ2lzdGVyIgogICAgIFBST0NFU1NfQ09VTlRfRVNUSU1BVEVf
UEVSX1NJTVVMQVRPUl9JTlNUQU5DRSA9IDEwMAogCisgICAgREVWSUNFX0NMQVNTX01BUCA9IHsK
KyAgICAgICAgJ3g4Nl82NCc6IHsKKyAgICAgICAgICAgICdpcGhvbmUnOiAnaVBob25lIDVzJywK
KyAgICAgICAgICAgICdpcGFkJzogJ2lQYWQgQWlyJ30sCisgICAgICAgICd4ODYnOiB7CisgICAg
ICAgICAgICAnaXBob25lJzogJ2lQaG9uZSA1JywKKyAgICAgICAgICAgICdpcGFkJzogJ2lQYWQg
UmV0aW5hJ30sCisgICAgfQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFt
ZSwgKiprd2FyZ3MpOgogICAgICAgICBzdXBlcihJT1NTaW11bGF0b3JQb3J0LCBzZWxmKS5fX2lu
aXRfXyhob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKQogCisgICAgICAgIG9wdGlvbmFsX2Rldmlj
ZV9jbGFzcyA9IHNlbGYuZ2V0X29wdGlvbignZGV2aWNlX2NsYXNzJykKKyAgICAgICAgc2VsZi5f
ZGV2aWNlX2NsYXNzID0gb3B0aW9uYWxfZGV2aWNlX2NsYXNzIGlmIG9wdGlvbmFsX2RldmljZV9j
bGFzcyBlbHNlIHNlbGYuREVGQVVMVF9ERVZJQ0VfQ0xBU1MKKyAgICAgICAgX2xvZy5kZWJ1Zygn
SU9TU2ltdWxhdG9yUG9ydCBfZGV2aWNlX2NsYXNzIGlzICVzJywgc2VsZi5fZGV2aWNlX2NsYXNz
KQorCiAgICAgZGVmIGRyaXZlcl9uYW1lKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmdldF9vcHRp
b24oJ2RyaXZlcl9uYW1lJyk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfb3B0aW9uKCdk
cml2ZXJfbmFtZScpCkBAIC0xMDAsMTcgKzExNiwxNyBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0
KEFwcGxlUG9ydCk6CiAgICAgICAgICAgICBydW50aW1lID0gUnVudGltZS5mcm9tX3ZlcnNpb25f
c3RyaW5nKHNlbGYuaG9zdC5wbGF0Zm9ybS54Y29kZV9zZGtfdmVyc2lvbignaXBob25lc2ltdWxh
dG9yJykpCiAgICAgICAgIHJldHVybiBydW50aW1lCiAKLSAgICBAcHJvcGVydHkKLSAgICBAbWVt
b2l6ZWQKICAgICBkZWYgc2ltdWxhdG9yX2RldmljZV90eXBlKHNlbGYpOgogICAgICAgICBkZXZp
Y2VfdHlwZV9pZGVudGlmaWVyID0gc2VsZi5nZXRfb3B0aW9uKCdkZXZpY2VfdHlwZScpCiAgICAg
ICAgIGlmIGRldmljZV90eXBlX2lkZW50aWZpZXI6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCdz
aW11bGF0b3JfZGV2aWNlX3R5cGUgZm9yIGRldmljZSBpZGVudGlmaWVyICVzJywgZGV2aWNlX3R5
cGVfaWRlbnRpZmllcikKICAgICAgICAgICAgIGRldmljZV90eXBlID0gRGV2aWNlVHlwZS5mcm9t
X2lkZW50aWZpZXIoZGV2aWNlX3R5cGVfaWRlbnRpZmllcikKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGlmIHNlbGYuYXJjaGl0ZWN0dXJlKCkgPT0gJ3g4Nl82NCc6Ci0gICAgICAgICAgICAg
ICAgZGV2aWNlX3R5cGUgPSBEZXZpY2VUeXBlLmZyb21fbmFtZSgnaVBob25lIDVzJykKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGV2aWNlX3R5cGUgPSBEZXZpY2VUeXBlLmZy
b21fbmFtZSgnaVBob25lIDUnKQorICAgICAgICAgICAgX2xvZy5kZWJ1Zygnc2ltdWxhdG9yX2Rl
dmljZV90eXBlIGZvciBkZXZpY2UgJXMnLCBzZWxmLl9kZXZpY2VfY2xhc3MpCisgICAgICAgICAg
ICBkZXZpY2VfbmFtZSA9IHNlbGYuREVWSUNFX0NMQVNTX01BUFtzZWxmLmFyY2hpdGVjdHVyZSgp
XVtzZWxmLl9kZXZpY2VfY2xhc3NdCisgICAgICAgICAgICBpZiBub3QgZGV2aWNlX25hbWU6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gZmluZCBkZXZpY2UgZm9y
IGFyY2hpdGVjdHVyZSB7fSBhbmQgZGV2aWNlIGNsYXNzIHt9Jy5mb3JtYXQoc2VsZi5hcmNoaXRl
Y3R1cmUoKSksIHNlbGYuX2RldmljZV9jbGFzcykKKyAgICAgICAgICAgIGRldmljZV90eXBlID0g
RGV2aWNlVHlwZS5mcm9tX25hbWUoZGV2aWNlX25hbWUpCiAgICAgICAgIHJldHVybiBkZXZpY2Vf
dHlwZQogCiAgICAgQHByb3BlcnR5CkBAIC0yMDUsMTIgKzIyMSwzNyBAQCBjbGFzcyBJT1NTaW11
bGF0b3JQb3J0KEFwcGxlUG9ydCk6CiAgICAgZGVmIF9wb3J0X3NwZWNpZmljX2V4cGVjdGF0aW9u
c19maWxlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIGxpc3QocmV2ZXJzZWQoW3NlbGYuX2ZpbGVz
eXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aChwKSwgJ1Rlc3RFeHBlY3RhdGlv
bnMnKSBmb3IgcCBpbiBzZWxmLmJhc2VsaW5lX3NlYXJjaF9wYXRoKCldKSkKIAotICAgIGRlZiBz
ZXR1cF90ZXN0X3J1bihzZWxmKToKKyAgICBkZWYgX3NldF9kZXZpY2VfY2xhc3Moc2VsZiwgZGV2
aWNlX2NsYXNzKToKKyAgICAgICAgIyBJZGVhbGx5IHdlJ2QgZW5zdXJlIHRoYXQgbm8gc2ltdWxh
dG9ycyBhcmUgcnVubmluZyB3aGVuIHRoaXMgaXMgY2FsbGVkLgorICAgICAgICBzZWxmLl9kZXZp
Y2VfY2xhc3MgPSBkZXZpY2VfY2xhc3MgaWYgZGV2aWNlX2NsYXNzIGVsc2Ugc2VsZi5ERUZBVUxU
X0RFVklDRV9DTEFTUworCisgICAgZGVmIF9jcmVhdGVfc2ltdWxhdG9ycyhzZWxmKToKKyAgICAg
ICAgaWYgKHNlbGYuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoKSA8IHNlbGYuY2hpbGRfcHJvY2Vz
c2VzKCkpOgorICAgICAgICAgICAgICAgIF9sb2cud2FybigiWW91IGhhdmUgc3BlY2lmaWVkIHZl
cnkgaGlnaCB2YWx1ZSh7MH0pIGZvciAtLWNoaWxkLXByb2Nlc3NlcyIuZm9ybWF0KHNlbGYuY2hp
bGRfcHJvY2Vzc2VzKCkpKQorICAgICAgICAgICAgICAgIF9sb2cud2FybigibWF4aW11bSBjaGls
ZC1wcm9jZXNzZXMgd2hpY2ggY2FuIGJlIHN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbSBhcmU6IHsw
fSIuZm9ybWF0KHNlbGYuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoKSkpCisgICAgICAgICAgICAg
ICAgX2xvZy53YXJuKCJUaGlzIGlzIHZlcnkgbGlrZWx5IHRvIGZhaWwuIikKKworICAgICAgICBz
ZWxmLl9jcmVhdGVTaW11bGF0b3JBcHBzKCkKKworICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2Vs
Zi5jaGlsZF9wcm9jZXNzZXMoKSk6CisgICAgICAgICAgICBTaW11bGF0b3Iud2FpdF91bnRpbF9k
ZXZpY2VfaXNfaW5fc3RhdGUoc2VsZi50ZXN0aW5nX2RldmljZShpKS51ZGlkLCBTaW11bGF0b3Iu
RGV2aWNlU3RhdGUuU0hVVERPV04pCisgICAgICAgICAgICBTaW11bGF0b3IucmVzZXRfZGV2aWNl
KHNlbGYudGVzdGluZ19kZXZpY2UoaSkudWRpZCkKKworICAgIGRlZiBzZXR1cF90ZXN0X3J1bihz
ZWxmLCBkZXZpY2VfY2xhc3MpOgogICAgICAgICBtYWNfb3NfdmVyc2lvbiA9IHNlbGYuaG9zdC5w
bGF0Zm9ybS5vc192ZXJzaW9uCisKKyAgICAgICAgc2VsZi5fc2V0X2RldmljZV9jbGFzcyhkZXZp
Y2VfY2xhc3MpCisKKyAgICAgICAgX2xvZy5kZWJ1ZygnJykKKyAgICAgICAgX2xvZy5kZWJ1Zygn
c2V0dXBfdGVzdF9ydW4gZm9yICVzJywgc2VsZi5fZGV2aWNlX2NsYXNzKQorCisgICAgICAgIHNl
bGYuX2NyZWF0ZV9zaW11bGF0b3JzKCkKKwogICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5j
aGlsZF9wcm9jZXNzZXMoKSk6CiAgICAgICAgICAgICBkZXZpY2VfdWRpZCA9IHNlbGYudGVzdGlu
Z19kZXZpY2UoaSkudWRpZAotICAgICAgICAgICAgIyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzIw
OTE2MTQwPiBTd2l0Y2ggdG8gdXNpbmcgQ29yZVNpbXVsYXRvci5mcmFtZXdvcmsgZm9yIGxhdW5j
aGluZyBhbmQgcXVpdHRpbmcgaU9TIFNpbXVsYXRvcgorICAgICAgICAgICAgX2xvZy5kZWJ1Zygn
dGVzdGluZyBkZXZpY2UgJXMgaGFzIHVkaWQgJXMnLCBpLCBkZXZpY2VfdWRpZCkKIAorICAgICAg
ICAgICAgIyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzIwOTE2MTQwPiBTd2l0Y2ggdG8gdXNpbmcg
Q29yZVNpbXVsYXRvci5mcmFtZXdvcmsgZm9yIGxhdW5jaGluZyBhbmQgcXVpdHRpbmcgaU9TIFNp
bXVsYXRvcgogICAgICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsKICAgICAg
ICAgICAgICAgICAnb3BlbicsICctZycsICctYicsIHNlbGYuU0lNVUxBVE9SX0JVTkRMRV9JRCAr
IHN0cihpKSwKICAgICAgICAgICAgICAgICAnLS1hcmdzJywgJy1DdXJyZW50RGV2aWNlVURJRCcs
IGRldmljZV91ZGlkXSkKQEAgLTI4NCw5ICszMjUsNiBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0
KEFwcGxlUG9ydCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLnNpbXVsYXRvcl9ydW50aW1lLmF2YWls
YWJsZToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1RoZSBpT1MgU2ltdWxhdG9yIHJ1bnRpbWUg
d2l0aCBpZGVudGlmaWVyICJ7MH0iIGNhbm5vdCBiZSB1c2VkIGJlY2F1c2UgaXQgaXMgdW5hdmFp
bGFibGUuJy5mb3JtYXQoc2VsZi5zaW11bGF0b3JfcnVudGltZS5pZGVudGlmaWVyKSkKICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9w
cm9jZXNzZXMoKSk6Ci0gICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGNyZWF0ZXMgdGhlIGRldmlj
ZXMgc2VxdWVudGlhbGx5LCBkb2luZyB0aGlzIGluIHBhcmFsbGVsIGNhbiBpbXByb3ZlIHBlcmZv
cm1hbmNlLgotICAgICAgICAgICAgdGVzdGluZ19kZXZpY2UgPSBzZWxmLnRlc3RpbmdfZGV2aWNl
KGkpCiAgICAgICAgIHJldHVybiBzdXBlcihJT1NTaW11bGF0b3JQb3J0LCBzZWxmKS5jaGVja19z
eXNfZGVwcyhuZWVkc19odHRwKQogCiAgICAgU1VCUFJPQ0VTU19DUkFTSF9SRUdFWCA9IHJlLmNv
bXBpbGUoJyNDUkFTSEVEIC0gKD9QPHN1YnByb2Nlc3NfbmFtZT5cUyspIFwocGlkICg/UDxzdWJw
cm9jZXNzX3BpZD5cZCspXCknKQpAQCAtMzI5LDkgKzM2NywxMiBAQCBjbGFzcyBJT1NTaW11bGF0
b3JQb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgICAgICByZXR1cm4gc3RkZXJyLCBOb25lCiAgICAg
ICAgIHJldHVybiBzdGRlcnIsIGNyYXNoX2xvZwogCi0gICAgQG1lbW9pemVkCiAgICAgZGVmIHRl
c3RpbmdfZGV2aWNlKHNlbGYsIG51bWJlcik6Ci0gICAgICAgIHJldHVybiBTaW11bGF0b3IoKS5s
b29rdXBfb3JfY3JlYXRlX2RldmljZShzZWxmLnNpbXVsYXRvcl9kZXZpY2VfdHlwZS5uYW1lICsg
JyBXZWJLaXQgVGVzdGVyJyArIHN0cihudW1iZXIpLCBzZWxmLnNpbXVsYXRvcl9kZXZpY2VfdHlw
ZSwgc2VsZi5zaW11bGF0b3JfcnVudGltZSkKKyAgICAgICAgIyBGSVhNRTogcmF0aGVyIHRoYW4g
Y2FsbGluZyBsb29rdXBfb3JfY3JlYXRlX2RldmljZSBldmVyeSB0aW1lLCB3ZSBzaG91bGQganVz
dCBzdG9yZSBhIG1hcHBpbmcgb2YKKyAgICAgICAgIyBudW1iZXIgdG8gZGV2aWNlX3VkaWQuCisg
ICAgICAgIGRldmljZV90eXBlID0gc2VsZi5zaW11bGF0b3JfZGV2aWNlX3R5cGUoKQorICAgICAg
ICBfbG9nLmRlYnVnKCcgdGVzdGluZ19kZXZpY2UgJXMgdXNpbmcgZGV2aWNlX3R5cGUgJXMnLCBu
dW1iZXIsIGRldmljZV90eXBlKQorICAgICAgICByZXR1cm4gU2ltdWxhdG9yKCkubG9va3VwX29y
X2NyZWF0ZV9kZXZpY2UoZGV2aWNlX3R5cGUubmFtZSArICcgV2ViS2l0IFRlc3RlcicgKyBzdHIo
bnVtYmVyKSwgZGV2aWNlX3R5cGUsIHNlbGYuc2ltdWxhdG9yX3J1bnRpbWUpCiAKICAgICBkZWYg
Z2V0X3NpbXVsYXRvcl9wYXRoKHNlbGYsIHN1ZmZpeD0iIik6CiAgICAgICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oc2VsZi5TSU1VTEFUT1JfRElSRUNUT1JZLCAiU2ltdWxhdG9yIiArIHN0cihzdWZm
aXgpICsgIi5hcHAiKQpAQCAtMzUwLDE3ICszOTEsOCBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0
KEFwcGxlUG9ydCk6CiAKICAgICBkZWYgcmVzZXRfcHJlZmVyZW5jZXMoc2VsZik6CiAgICAgICAg
IF9sb2cuZGVidWcoInJlc2V0X3ByZWZlcmVuY2VzIikKLSAgICAgICAgaWYgKHNlbGYuZGVmYXVs
dF9jaGlsZF9wcm9jZXNzZXMoKSA8IHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgotICAgICAgICAg
ICAgICAgIF9sb2cud2FybigiWW91IGhhdmUgc3BlY2lmaWVkIHZlcnkgaGlnaCB2YWx1ZSh7MH0p
IGZvciAtLWNoaWxkLXByb2Nlc3NlcyIuZm9ybWF0KHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpKQot
ICAgICAgICAgICAgICAgIF9sb2cud2FybigibWF4aW11bSBjaGlsZC1wcm9jZXNzZXMgd2hpY2gg
Y2FuIGJlIHN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbSBhcmU6IHswfSIuZm9ybWF0KHNlbGYuZGVm
YXVsdF9jaGlsZF9wcm9jZXNzZXMoKSkpCi0gICAgICAgICAgICAgICAgX2xvZy53YXJuKCJUaGlz
IGlzIHZlcnkgbGlrZWx5IHRvIGZhaWwuIikKLQogICAgICAgICBzZWxmLl9xdWl0X2lvc19zaW11
bGF0b3IoKQotICAgICAgICBzZWxmLl9jcmVhdGVTaW11bGF0b3JBcHBzKCkKLQotICAgICAgICBm
b3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6Ci0gICAgICAgICAgICBTaW11
bGF0b3Iud2FpdF91bnRpbF9kZXZpY2VfaXNfaW5fc3RhdGUoc2VsZi50ZXN0aW5nX2RldmljZShp
KS51ZGlkLCBTaW11bGF0b3IuRGV2aWNlU3RhdGUuU0hVVERPV04pCi0gICAgICAgICAgICBTaW11
bGF0b3IucmVzZXRfZGV2aWNlKHNlbGYudGVzdGluZ19kZXZpY2UoaSkudWRpZCkKKyAgICAgICAg
IyBNYXliZSB0aGlzIHNob3VsZCBkZWxldGUgYWxsIGRldmljZXMgdGhhdCB3ZSd2ZSBjcmVhdGVk
PwogCiAgICAgZGVmIG5tX2NvbW1hbmQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnhjcnVu
X2ZpbmQoJ25tJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4u
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CmluZGV4IDcxMzQ0NmM3YmJk
NTY0NDNlYjg4ZjY2N2FkNWJmZTEzYjYyYzU2YjkuLjg4NGRmY2VlNGQ3YjgyMGY1ZTVkZWIwNDY3
ODY5YWUwNzE0YjlmZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93
aW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQpAQCAtMzQ1LDEy
ICszNDUsMTIgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogICAgIGRlZiBkZWxldGVfc2Vt
X2xvY2tzKHNlbGYpOgogICAgICAgICBvcy5zeXN0ZW0oInJtIC1yZiAvZGV2L3NobS9zZW0uKiIp
CiAKLSAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6CisgICAgZGVmIHNldHVwX3Rlc3RfcnVu
KHNlbGYsIGRldmljZV9jbGFzcyk6CiAgICAgICAgIGF0ZXhpdC5yZWdpc3RlcihzZWxmLnJlc3Rv
cmVfY3Jhc2hfbG9nX3NhdmluZykKICAgICAgICAgc2VsZi5zZXR1cF9jcmFzaF9sb2dfc2F2aW5n
KCkKICAgICAgICAgc2VsZi5wcmV2ZW50X2Vycm9yX2RpYWxvZ3MoKQogICAgICAgICBzZWxmLmRl
bGV0ZV9zZW1fbG9ja3MoKQotICAgICAgICBzdXBlcihXaW5Qb3J0LCBzZWxmKS5zZXR1cF90ZXN0
X3J1bigpCisgICAgICAgIHN1cGVyKFdpblBvcnQsIHNlbGYpLnNldHVwX3Rlc3RfcnVuKGRldmlj
ZV9jbGFzcykKIAogICAgIGRlZiBjbGVhbl91cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgc2Vs
Zi5hbGxvd19lcnJvcl9kaWFsb2dzKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285988</attachid>
            <date>2016-08-12 18:03:48 -0700</date>
            <delta_ts>2016-08-15 11:00:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160833-20160812180208.patch</filename>
            <type>text/plain</type>
            <size>27945</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0Mzg2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDk3YzNjYTFjM2ZhOWMwYTFkY2YyMDNiN2QwZGQ5MjJh
MDEwOThmYi4uN2JiOTJmZWU3NWI3MDJkNzZiMzI5YzJjZjYxNDFjY2Q5MTRlNDU4NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYx
IEBACisyMDE2LTA4LTEyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEFsbG93IGEgcG9ydCB0byBydW4gdGVzdHMgd2l0aCBhIGN1c3RvbSBkZXZpY2Ug
c2V0dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDgzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZXNlIGNoYW5nZXMgYWxsb3cgdGhlIElPU1NpbXVsYXRvciBwb3J0IHRvIHJ1biB0ZXN0cyBpbiBp
UGFkIG1vZGUuCisKKyAgICAgICAgVGhpcyBpcyBtYWRlIHBvc3NpYmxlIGJ5IGFsbG93aW5nIGEg
cGxhdGZvcm0gdG8gZGVmaW5lIENVU1RPTV9ERVZJQ0VfQ0xBU1NFUywKKyAgICAgICAgaW4gdGhp
cyBjYXNlICdpcGFkJy4gV2hlbiBzcGVjaWZpZWQsIGFueSB0ZXN0IGluIGEgZGlyZWN0b3J5IHdp
dGggYSBzdWZmaXggdGhhdCBtYXRjaGVzCisgICAgICAgIGEgY3VzdG9tIGRldmljZSB3aWxsIGJl
IGNvbGxlY3RlZCBpbnRvIGEgc2V0LCBhbmQgcnVuIGluIHRoYXQgZGV2aWNlJ3MgZW52aXJvbm1l
bnQgYWZ0ZXIKKyAgICAgICAgdGhlIG90aGVyIHRlc3RzIGhhdmUgcnVuLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAg
ICAgICAgKE1hbmFnZXIuX2N1c3RvbV9kZXZpY2VfZm9yX3Rlc3QpOiBJZiB0aGUgdGVzdCBjb250
YWlucyBhIGRpcmVjdG9yeSBtYXRjaGluZyBhCisgICAgICAgIGN1c3RvbSBkZXZpY2Ugc3VmZml4
LCByZXR1cm4gdGhhdCBjdXN0b20gZGV2aWNlLgorICAgICAgICAoTWFuYWdlci5fc2V0X3VwX3J1
bik6IFB1c2ggdGhlIGN1c3RvbSBkZXZpY2UgY2xhc3MsIGlmIGFueSwgaW50byBvcHRpb25zIHNv
CisgICAgICAgIHRoYXQgdGhlIFdvcmtlciBjYW4gZ2V0IHRvIGl0LgorICAgICAgICAoTWFuYWdl
ci5ydW4pOiBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIHRlc3RzLCBhbmQgYnJlYWsgaXQgZG93biBp
bnRvIGRldmljZS1nZW5lcmljCisgICAgICAgIHRlc3RzLCBhbmQgdGVzdHMgZm9yIGVhY2ggZGV2
aWNlIGNsYXNzLiBfcnVuX3Rlc3Rfc3Vic2V0IGlzIHRoZW4gY2FsbGVkIGZvcgorICAgICAgICBl
YWNoIGNvbGxlY3Rpb24gb2YgdGVzdHMsIGFuZCB0aGUgcmVzdWx0cyBtZXJnZWQuCisgICAgICAg
IChNYW5hZ2VyLl9ydW5fdGVzdF9zdWJzZXQpOiBTb21lIGxpbmVzIHVud3JhcHBlZC4KKyAgICAg
ICAgKE1hbmFnZXIuX2VuZF90ZXN0X3J1bik6CisgICAgICAgIChNYW5hZ2VyLl9ydW5fdGVzdHMp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Np
bmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKFNpbmdsZVRlc3RSdW5uZXIuX19pbml0X18p
OiBVbndyYXBwZWQgYSBsaW5lLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5OgorICAgICAgICAoVGVzdFJ1blJlc3VsdHMu
bWVyZ2UpOiBBZGQgdGhpcyBmdW5jdGlvbiB0byBtZXJnZSBUZXN0UnVuUmVzdWx0cworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5OgorICAg
ICAgICAoUHJpbnRlci5wcmludF93b3JrZXJzX2FuZF9zaGFyZHMpOiBQcmludCB0aGUgY3VzdG9t
IGRldmljZSwgaWYgYW55LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5
OgorICAgICAgICAoUG9ydCk6IEJhc2UgcG9ydCBoYXMgZW1wdHkgYXJyYXkgb2YgY3VzdG9tIGRl
dmljZXMuCisgICAgICAgIChQb3J0LnNldHVwX3Rlc3RfcnVuKTogQWRkIGRldmljZV9jbGFzcyBh
cmd1bWVudC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5OgorICAg
ICAgICAoRHJpdmVySW5wdXQuX19yZXByX18pOgorICAgICAgICAoRHJpdmVyLmNoZWNrX2RyaXZl
ci5pbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2VmbC5w
eToKKyAgICAgICAgKEVmbFBvcnQuc2V0dXBfdGVzdF9ydW4pOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQb3J0LnNldHVwX3Rlc3RfcnVuKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5OgorICAgICAgICAoSU9TU2lt
dWxhdG9yUG9ydCk6IEFkZCBDVVNUT01fREVWSUNFX0NMQVNTRVMgZm9yIGlwYWQuCisgICAgICAg
IChJT1NTaW11bGF0b3JQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQu
c2ltdWxhdG9yX2RldmljZV90eXBlKTogVXNlIGEgZGV2aWNlIG5hbWUgZnJvbSB0aGUgREVWSUNF
X0NMQVNTX01BUAorICAgICAgICBiYXNlZCBvbiB0aGUgY3VzdG9tIGRldmljZSBjbGFzcy4KKyAg
ICAgICAgKElPU1NpbXVsYXRvclBvcnQuX3NldF9kZXZpY2VfY2xhc3MpOgorICAgICAgICAoSU9T
U2ltdWxhdG9yUG9ydC5fY3JlYXRlX3NpbXVsYXRvcnMpOiBGYWN0b3Igc29tZSBjb2RlIGludG8g
dGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQuc2V0dXBfdGVzdF9ydW4p
OgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC50ZXN0aW5nX2RldmljZSk6CisgICAgICAgIChJ
T1NTaW11bGF0b3JQb3J0LnJlc2V0X3ByZWZlcmVuY2VzKTogVGhpcyB1c2VkIHRvIGNyZWF0ZSB0
aGUgc2ltdWxhdG9yIGFwcHMsIGJ1dCB0aGF0CisgICAgICAgIHNlZW1lZCB3cm9uZyBmb3IgdGhp
cyBmdW5jdGlvbi4gVGhhdCB3YXMgbW92ZWQgdG8gc2V0dXBfdGVzdF9ydW4oKS4KKyAgICAgICAg
KElPU1NpbXVsYXRvclBvcnQuY2hlY2tfc3lzX2RlcHMpOiBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8g
Y3JlYXRlIHRlc3RpbmcgZGV2aWNlcywKKyAgICAgICAgYnV0IHRoaXMgaGFwcGVuZWQgdG9vIGVh
cmx5LCBiZWZvcmUgd2Uga25ldyB3aGljaCBraW5kIG9mIGRldmljZXMgdG8gY3JlYXRlLiBEZXZp
Y2VzCisgICAgICAgIGFyZSBub3cgY3JlYXRlZCBpbiBzZXR1cF90ZXN0X3J1bigpLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5Qb3J0LnNldHVw
X3Rlc3RfcnVuKToKKwogMjAxNi0wOC0xMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBpT1MgRFJUL1dUUiBwcm9qZWN0IGNsZWFudXAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFn
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyLnB5CmluZGV4IDAwMWNmZGZjZDhjOGJjMzY2MmJkNWJhYjgzZDliZjA3YmY2ZGJmZGEu
LmNkZDZmNzU4YjY4NjA5OTFhNmQyOGU3YWIxMDg4YTgyZDQyZWJjMzIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlci5weQpAQCAtMzksNiArMzksNyBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJhbmRvbQog
aW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRk
aWN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0
IFNDTURldGVjdG9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuZmlsZV91cGxvYWRlciBpbXBv
cnQgRmlsZVVwbG9hZGVyCkBAIC05Nyw2ICs5OCwxMyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6
CiAgICAgZGVmIF9pc193ZWJfcGxhdGZvcm1fdGVzdChzZWxmLCB0ZXN0KToKICAgICAgICAgcmV0
dXJuIHNlbGYud2ViX3BsYXRmb3JtX3Rlc3Rfc3ViZGlyIGluIHRlc3QKIAorICAgIGRlZiBfY3Vz
dG9tX2RldmljZV9mb3JfdGVzdChzZWxmLCB0ZXN0KToKKyAgICAgICAgZm9yIGRldmljZV9jbGFz
cyBpbiBzZWxmLl9wb3J0LkNVU1RPTV9ERVZJQ0VfQ0xBU1NFUzoKKyAgICAgICAgICAgIGRpcmVj
dG9yeV9zdWZmaXggPSBkZXZpY2VfY2xhc3MgKyBzZWxmLl9wb3J0LlRFU1RfUEFUSF9TRVBBUkFU
T1IKKyAgICAgICAgICAgIGlmIGRpcmVjdG9yeV9zdWZmaXggaW4gdGVzdDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZGV2aWNlX2NsYXNzCisgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYg
X2h0dHBfdGVzdHMoc2VsZiwgdGVzdF9uYW1lcyk6CiAgICAgICAgIHJldHVybiBzZXQodGVzdCBm
b3IgdGVzdCBpbiB0ZXN0X25hbWVzIGlmIHNlbGYuX2lzX2h0dHBfdGVzdCh0ZXN0KSkKIApAQCAt
MTQxLDEyICsxNDksMTQgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICB3b3JrZXJf
Y291bnQgPSBzZWxmLl9ydW5uZXIuZ2V0X3dvcmtlcl9jb3VudCh0ZXN0X2lucHV0cywgaW50KHNl
bGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSkKICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGls
ZF9wcm9jZXNzZXMgPSB3b3JrZXJfY291bnQKIAotICAgIGRlZiBfc2V0X3VwX3J1bihzZWxmLCB0
ZXN0X25hbWVzKToKKyAgICBkZWYgX3NldF91cF9ydW4oc2VsZiwgdGVzdF9uYW1lcywgZGV2aWNl
X2NsYXNzPU5vbmUpOgogICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSgiQ2hlY2tp
bmcgYnVpbGQgLi4uIikKICAgICAgICAgaWYgbm90IHNlbGYuX3BvcnQuY2hlY2tfYnVpbGQoc2Vs
Zi5uZWVkc19zZXJ2ZXJzKHRlc3RfbmFtZXMpKToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkJ1
aWxkIGNoZWNrIGZhaWxlZCIpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgICAgICBz
ZWxmLl9vcHRpb25zLmRldmljZV9jbGFzcyA9IGRldmljZV9jbGFzcworCiAgICAgICAgICMgVGhp
cyBtdXN0IGJlIHN0YXJ0ZWQgYmVmb3JlIHdlIGNoZWNrIHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVz
LAogICAgICAgICAjIHNpbmNlIHRoZSBoZWxwZXIgbWF5IGRvIHRoaW5ncyB0byBtYWtlIHRoZSBz
ZXR1cCBjb3JyZWN0LgogICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSgiU3RhcnRp
bmcgaGVscGVyIC4uLiIpCkBAIC0xNjksNyArMTc5LDcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3Qp
OgogICAgICAgICAjIENyZWF0ZSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGFs
cmVhZHkgZXhpc3QuCiAgICAgICAgIHNlbGYuX3BvcnQuaG9zdC5maWxlc3lzdGVtLm1heWJlX21h
a2VfZGlyZWN0b3J5KHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5KQogCi0gICAgICAgIHNlbGYuX3Bv
cnQuc2V0dXBfdGVzdF9ydW4oKQorICAgICAgICBzZWxmLl9wb3J0LnNldHVwX3Rlc3RfcnVuKHNl
bGYuX29wdGlvbnMuZGV2aWNlX2NsYXNzKQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVm
IHJ1bihzZWxmLCBhcmdzKToKQEAgLTE5NCwxMyArMjA0LDU2IEBAIGNsYXNzIE1hbmFnZXIob2Jq
ZWN0KToKICAgICAgICAgICAgIF9sb2cuY3JpdGljYWwoJ05vIHRlc3RzIHRvIHJ1bi4nKQogICAg
ICAgICAgICAgcmV0dXJuIHRlc3RfcnVuX3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEp
CiAKLSAgICAgICAgdHJ5OgorICAgICAgICBkZWZhdWx0X2RldmljZV90ZXN0cyA9IFtdCisKKyAg
ICAgICAgIyBMb29rIGZvciB0ZXN0cyB3aXRoIGN1c3RvbSBkZXZpY2UgcmVxdWlyZW1lbnRzLgor
ICAgICAgICBjdXN0b21fZGV2aWNlX3Rlc3RzID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICAgICAg
Zm9yIHRlc3RfZmlsZSBpbiB0ZXN0c190b19ydW46CisgICAgICAgICAgICBjdXN0b21fZGV2aWNl
ID0gc2VsZi5fY3VzdG9tX2RldmljZV9mb3JfdGVzdCh0ZXN0X2ZpbGUpCisgICAgICAgICAgICBp
ZiBjdXN0b21fZGV2aWNlOgorICAgICAgICAgICAgICAgIGN1c3RvbV9kZXZpY2VfdGVzdHNbY3Vz
dG9tX2RldmljZV0uYXBwZW5kKHRlc3RfZmlsZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgZGVmYXVsdF9kZXZpY2VfdGVzdHMuYXBwZW5kKHRlc3RfZmlsZSkKKworICAgICAg
ICBpZiBjdXN0b21fZGV2aWNlX3Rlc3RzOgorICAgICAgICAgICAgZm9yIGRldmljZV9jbGFzcyBp
biBjdXN0b21fZGV2aWNlX3Rlc3RzOgorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJyVzIHRl
c3RzIHVzZSBkZXZpY2UgJXMnLCBsZW4oY3VzdG9tX2RldmljZV90ZXN0c1tkZXZpY2VfY2xhc3Nd
KSwgZGV2aWNlX2NsYXNzKQorCisgICAgICAgIGluaXRpYWxfcmVzdWx0cyA9IE5vbmUKKyAgICAg
ICAgcmV0cnlfcmVzdWx0cyA9IE5vbmUKKyAgICAgICAgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9y
ZXRyeSA9IEZhbHNlCisKKyAgICAgICAgaWYgZGVmYXVsdF9kZXZpY2VfdGVzdHM6CisgICAgICAg
ICAgICBfbG9nLmluZm8oJycpCisgICAgICAgICAgICBfbG9nLmluZm8oIlJ1bm5pbmcgJXMiLCBw
bHVyYWxpemUobGVuKHRlc3RzX3RvX3J1biksICJ0ZXN0IikpCisgICAgICAgICAgICBfbG9nLmlu
Zm8oJycpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2V0X3VwX3J1bih0ZXN0c190b19ydW4p
OgogICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhp
dF9jb2RlPS0xKQogCisgICAgICAgICAgICBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMs
IGVuYWJsZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkgPSBzZWxmLl9ydW5fdGVzdF9zdWJzZXQoZGVm
YXVsdF9kZXZpY2VfdGVzdHMsIHRlc3RzX3RvX3NraXApCisKKyAgICAgICAgZm9yIGRldmljZV9j
bGFzcyBpbiBjdXN0b21fZGV2aWNlX3Rlc3RzOgorICAgICAgICAgICAgZGV2aWNlX3Rlc3RzID0g
Y3VzdG9tX2RldmljZV90ZXN0c1tkZXZpY2VfY2xhc3NdCisgICAgICAgICAgICBpZiBkZXZpY2Vf
dGVzdHM6CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcnKQorICAgICAgICAgICAgICAgIF9s
b2cuaW5mbygnUnVubmluZyAlcyBmb3IgJXMnLCBwbHVyYWxpemUobGVuKGRldmljZV90ZXN0cyks
ICJ0ZXN0IiksIGRldmljZV9jbGFzcykKKyAgICAgICAgICAgICAgICBfbG9nLmluZm8oJycpCisg
ICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3NldF91cF9ydW4oZGV2aWNlX3Rlc3RzLCBkZXZp
Y2VfY2xhc3MpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5S
dW5EZXRhaWxzKGV4aXRfY29kZT0tMSkKKworICAgICAgICAgICAgICAgIGRldmljZV9pbml0aWFs
X3Jlc3VsdHMsIGRldmljZV9yZXRyeV9yZXN1bHRzLCBkZXZpY2VfZW5hYmxlZF9waXhlbF90ZXN0
c19pbl9yZXRyeSA9IHNlbGYuX3J1bl90ZXN0X3N1YnNldChkZXZpY2VfdGVzdHMsIHRlc3RzX3Rv
X3NraXApCisKKyAgICAgICAgICAgICAgICBpbml0aWFsX3Jlc3VsdHMgPSBpbml0aWFsX3Jlc3Vs
dHMubWVyZ2UoZGV2aWNlX2luaXRpYWxfcmVzdWx0cykgaWYgaW5pdGlhbF9yZXN1bHRzIGVsc2Ug
ZGV2aWNlX2luaXRpYWxfcmVzdWx0cworICAgICAgICAgICAgICAgIHJldHJ5X3Jlc3VsdHMgPSBy
ZXRyeV9yZXN1bHRzLm1lcmdlKGRldmljZV9yZXRyeV9yZXN1bHRzKSBpZiByZXRyeV9yZXN1bHRz
IGVsc2UgZGV2aWNlX3JldHJ5X3Jlc3VsdHMKKyAgICAgICAgICAgICAgICBlbmFibGVkX3BpeGVs
X3Rlc3RzX2luX3JldHJ5IHw9IGRldmljZV9lbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5CisK
KyAgICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXR1cm4gc2VsZi5fZW5k
X3Rlc3RfcnVuKHN0YXJ0X3RpbWUsIGVuZF90aW1lLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jl
c3VsdHMsIGVuYWJsZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkpCisKKyAgICBkZWYgX3J1bl90ZXN0
X3N1YnNldChzZWxmLCB0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXApOgorICAgICAgICB0cnk6
CiAgICAgICAgICAgICBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5ID0gRmFsc2UKLSAgICAg
ICAgICAgIGluaXRpYWxfcmVzdWx0cyA9IHNlbGYuX3J1bl90ZXN0cyh0ZXN0c190b19ydW4sIHRl
c3RzX3RvX3NraXAsIHNlbGYuX29wdGlvbnMucmVwZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRl
cmF0aW9ucywKLSAgICAgICAgICAgICAgICBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNz
ZXMpLCByZXRyeWluZz1GYWxzZSkKKyAgICAgICAgICAgIGluaXRpYWxfcmVzdWx0cyA9IHNlbGYu
X3J1bl90ZXN0cyh0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAsIHNlbGYuX29wdGlvbnMucmVw
ZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucywgaW50KHNlbGYuX29wdGlvbnMuY2hp
bGRfcHJvY2Vzc2VzKSwgcmV0cnlpbmc9RmFsc2UpCiAKICAgICAgICAgICAgIHRlc3RzX3RvX3Jl
dHJ5ID0gc2VsZi5fdGVzdHNfdG9fcmV0cnkoaW5pdGlhbF9yZXN1bHRzLCBpbmNsdWRlX2NyYXNo
ZXM9c2VsZi5fcG9ydC5zaG91bGRfcmV0cnlfY3Jhc2hlcygpKQogICAgICAgICAgICAgIyBEb24n
dCByZXRyeSBmYWlsdXJlcyB3aGVuIGludGVycnVwdGVkIGJ5IHVzZXIgb3IgZmFpbHVyZXMgbGlt
aXQgZXhjZXB0aW9uLgpAQCAtMjExLDggKzI2NCw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToK
ICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJycpCiAgICAgICAgICAgICAgICAgX2xvZy5pbmZv
KCJSZXRyeWluZyAlcyAuLi4iICUgcGx1cmFsaXplKGxlbih0ZXN0c190b19yZXRyeSksICJ1bmV4
cGVjdGVkIGZhaWx1cmUiKSkKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJycpCi0gICAgICAg
ICAgICAgICAgcmV0cnlfcmVzdWx0cyA9IHNlbGYuX3J1bl90ZXN0cyh0ZXN0c190b19yZXRyeSwg
dGVzdHNfdG9fc2tpcD1zZXQoKSwgcmVwZWF0X2VhY2g9MSwgaXRlcmF0aW9ucz0xLAotICAgICAg
ICAgICAgICAgICAgICBudW1fd29ya2Vycz0xLCByZXRyeWluZz1UcnVlKQorICAgICAgICAgICAg
ICAgIHJldHJ5X3Jlc3VsdHMgPSBzZWxmLl9ydW5fdGVzdHModGVzdHNfdG9fcmV0cnksIHRlc3Rz
X3RvX3NraXA9c2V0KCksIHJlcGVhdF9lYWNoPTEsIGl0ZXJhdGlvbnM9MSwgbnVtX3dvcmtlcnM9
MSwgcmV0cnlpbmc9VHJ1ZSkKIAogICAgICAgICAgICAgICAgIGlmIGVuYWJsZWRfcGl4ZWxfdGVz
dHNfaW5fcmV0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVz
dHMgPSBGYWxzZQpAQCAtMjIxLDEwICsyNzMsMTIgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgog
ICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fY2xlYW5fdXBfcnVuKCkKIAotICAg
ICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIHJldHVybiAoaW5pdGlhbF9yZXN1
bHRzLCByZXRyeV9yZXN1bHRzLCBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5KQogCisgICAg
ZGVmIF9lbmRfdGVzdF9ydW4oc2VsZiwgc3RhcnRfdGltZSwgZW5kX3RpbWUsIGluaXRpYWxfcmVz
dWx0cywgcmV0cnlfcmVzdWx0cywgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSk6CiAgICAg
ICAgICMgU29tZSBjcmFzaCBsb2dzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIHRvIGJlIHdyaXR0ZW4g
b3V0IHNvIGxvb2sKICAgICAgICAgIyBmb3IgbmV3IGxvZ3MgYWZ0ZXIgdGhlIHRlc3QgcnVuIGZp
bmlzaGVzLgorCiAgICAgICAgIF9sb2cuZGVidWcoImxvb2tpbmcgZm9yIG5ldyBjcmFzaCBsb2dz
IikKICAgICAgICAgc2VsZi5fbG9va19mb3JfbmV3X2NyYXNoX2xvZ3MoaW5pdGlhbF9yZXN1bHRz
LCBzdGFydF90aW1lKQogICAgICAgICBpZiByZXRyeV9yZXN1bHRzOgpAQCAtMjU5LDYgKzMxMyw3
IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgbmVlZHNfd2Vic29ja2V0cyA9IGFu
eShzZWxmLl9pc193ZWJzb2NrZXRfdGVzdCh0ZXN0KSBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4p
CiAKICAgICAgICAgdGVzdF9pbnB1dHMgPSBzZWxmLl9nZXRfdGVzdF9pbnB1dHModGVzdHNfdG9f
cnVuLCByZXBlYXRfZWFjaCwgaXRlcmF0aW9ucykKKwogICAgICAgICByZXR1cm4gc2VsZi5fcnVu
bmVyLnJ1bl90ZXN0cyhzZWxmLl9leHBlY3RhdGlvbnMsIHRlc3RfaW5wdXRzLCB0ZXN0c190b19z
a2lwLCBudW1fd29ya2VycywgbmVlZHNfaHR0cCwgbmVlZHNfd2Vic29ja2V0cywgbmVlZHNfd2Vi
X3BsYXRmb3JtX3Rlc3Rfc2VydmVyLCByZXRyeWluZykKIAogICAgIGRlZiBfY2xlYW5fdXBfcnVu
KHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CmluZGV4IDc5
YzZmYzFiOTRiN2IxMTE3ZTljYjA1ZDkyNGI0NTU2NjY0NWE5YTEuLmU4NTgzNTI0NzAzZTJiZjM4
NmFlZDhkZmRmNjY2NTcwZGU4ZjhhMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVz
dF9ydW5uZXIucHkKQEAgLTcwLDggKzcwLDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcihvYmpl
Y3QpOgogICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiAoJy50eHQnLCAnLnBuZycsICcud2F2Jyk6
CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSBzZWxmLl9wb3J0LmV4cGVjdGVk
X2ZpbGVuYW1lKHNlbGYuX3Rlc3RfbmFtZSwgc3VmZml4KQogICAgICAgICAgICAgICAgIGlmIHNl
bGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGV4cGVjdGVkX2ZpbGVuYW1lKToKLSAgICAgICAgICAgICAg
ICAgICAgX2xvZy5lcnJvcignJXMgaXMgYSByZWZ0ZXN0LCBidXQgaGFzIGFuIHVudXNlZCBleHBl
Y3RhdGlvbiBmaWxlLiBQbGVhc2UgcmVtb3ZlICVzLicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl90ZXN0X25hbWUsIGV4cGVjdGVkX2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAg
ICBfbG9nLmVycm9yKCclcyBpcyBhIHJlZnRlc3QsIGJ1dCBoYXMgYW4gdW51c2VkIGV4cGVjdGF0
aW9uIGZpbGUuIFBsZWFzZSByZW1vdmUgJXMuJywgc2VsZi5fdGVzdF9uYW1lLCBleHBlY3RlZF9m
aWxlbmFtZSkKIAogICAgIGRlZiBfZXhwZWN0ZWRfZHJpdmVyX291dHB1dChzZWxmKToKICAgICAg
ICAgcmV0dXJuIERyaXZlck91dHB1dChzZWxmLl9wb3J0LmV4cGVjdGVkX3RleHQoc2VsZi5fdGVz
dF9uYW1lKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkKaW5kZXggZjEzOTY2MTk5MzQxNDJj
MDdlMDVhNDBjYmZkZGMwZDQ1ZTFlMDllNC4uOWU3MmVkMDNhYzVlODNlOWY5NmQzN2EyNjhmMWJk
ODMzMzkwNjAxYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkKQEAgLTkzLDYgKzkzLDMw
IEBAIGNsYXNzIFRlc3RSdW5SZXN1bHRzKG9iamVjdCk6CiAgICAgICAgIGlmIHRlc3RfaXNfc2xv
dzoKICAgICAgICAgICAgIHNlbGYuc2xvd190ZXN0cy5hZGQodGVzdF9yZXN1bHQudGVzdF9uYW1l
KQogCisgICAgZGVmIG1lcmdlKHNlbGYsIHRlc3RfcnVuX3Jlc3VsdHMpOgorICAgICAgICAjIHNl
bGYuZXhwZWN0YXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYm90aAorICAgICAgICBzZWxm
LnRvdGFsICs9IHRlc3RfcnVuX3Jlc3VsdHMudG90YWwKKyAgICAgICAgc2VsZi5yZW1haW5pbmcg
Kz0gdGVzdF9ydW5fcmVzdWx0cy5yZW1haW5pbmcKKyAgICAgICAgc2VsZi5leHBlY3RlZCArPSB0
ZXN0X3J1bl9yZXN1bHRzLmV4cGVjdGVkCisgICAgICAgIHNlbGYudW5leHBlY3RlZCArPSB0ZXN0
X3J1bl9yZXN1bHRzLnVuZXhwZWN0ZWQKKyAgICAgICAgc2VsZi51bmV4cGVjdGVkX2ZhaWx1cmVz
ICs9IHRlc3RfcnVuX3Jlc3VsdHMudW5leHBlY3RlZF9mYWlsdXJlcworICAgICAgICBzZWxmLnVu
ZXhwZWN0ZWRfY3Jhc2hlcyArPSB0ZXN0X3J1bl9yZXN1bHRzLnVuZXhwZWN0ZWRfY3Jhc2hlcwor
ICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfdGltZW91dHMgKz0gdGVzdF9ydW5fcmVzdWx0cy51bmV4
cGVjdGVkX3RpbWVvdXRzCisgICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb24udXBkYXRl
KHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlfZXhwZWN0YXRpb24pCisgICAgICAgIHNlbGYudGVz
dHNfYnlfdGltZWxpbmUudXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlfdGltZWxpbmUp
CisgICAgICAgIHNlbGYucmVzdWx0c19ieV9uYW1lLnVwZGF0ZSh0ZXN0X3J1bl9yZXN1bHRzLnJl
c3VsdHNfYnlfbmFtZSkKKyAgICAgICAgc2VsZi5hbGxfcmVzdWx0cyArPSB0ZXN0X3J1bl9yZXN1
bHRzLmFsbF9yZXN1bHRzCisgICAgICAgIHNlbGYudW5leHBlY3RlZF9yZXN1bHRzX2J5X25hbWUu
dXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMudW5leHBlY3RlZF9yZXN1bHRzX2J5X25hbWUpCisgICAg
ICAgIHNlbGYuZmFpbHVyZXNfYnlfbmFtZS51cGRhdGUodGVzdF9ydW5fcmVzdWx0cy5mYWlsdXJl
c19ieV9uYW1lKQorICAgICAgICBzZWxmLnRvdGFsX2ZhaWx1cmVzICs9IHRlc3RfcnVuX3Jlc3Vs
dHMudG90YWxfZmFpbHVyZXMKKyAgICAgICAgc2VsZi5leHBlY3RlZF9za2lwcyArPSB0ZXN0X3J1
bl9yZXN1bHRzLmV4cGVjdGVkX3NraXBzCisgICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRp
b24udXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlfZXhwZWN0YXRpb24pCisgICAgICAg
IHNlbGYudGVzdHNfYnlfdGltZWxpbmUudXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlf
dGltZWxpbmUpCisgICAgICAgIHNlbGYuc2xvd190ZXN0cy51cGRhdGUodGVzdF9ydW5fcmVzdWx0
cy5zbG93X3Rlc3RzKQorCisgICAgICAgIHNlbGYuaW50ZXJydXB0ZWQgfD0gdGVzdF9ydW5fcmVz
dWx0cy5pbnRlcnJ1cHRlZAorICAgICAgICBzZWxmLmtleWJvYXJkX2ludGVycnVwdGVkIHw9IHRl
c3RfcnVuX3Jlc3VsdHMua2V5Ym9hcmRfaW50ZXJydXB0ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYK
IAogY2xhc3MgUnVuRGV0YWlscyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGl0
X2NvZGUsIHN1bW1hcml6ZWRfcmVzdWx0cz1Ob25lLCBpbml0aWFsX3Jlc3VsdHM9Tm9uZSwgcmV0
cnlfcmVzdWx0cz1Ob25lLCBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5PUZhbHNlKToKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50
aW5nLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRp
bmcucHkKaW5kZXggNzAxY2VmZTgwNTkwZmYxYjhmNzczNTdhMTcyZmFmNDZlZDhlM2YxZi4uNjVj
Nzk1NzE4YmMwZjg1ZGJmZjhjYzU1N2FjNDUyYmRjMjE4ZWZkNyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmcucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmcucHkKQEAgLTEx
MiwxMiArMTEyLDE0IEBAIGNsYXNzIFByaW50ZXIob2JqZWN0KToKIAogICAgIGRlZiBwcmludF93
b3JrZXJzX2FuZF9zaGFyZHMoc2VsZiwgbnVtX3dvcmtlcnMsIG51bV9zaGFyZHMpOgogICAgICAg
ICBkcml2ZXJfbmFtZSA9IHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKQorCisgICAgICAgIGRldmlj
ZV9zdWZmaXggPSAnIGZvciBkZXZpY2UgInt9IicuZm9ybWF0KHNlbGYuX29wdGlvbnMuZGV2aWNl
X2NsYXNzKSBpZiBzZWxmLl9vcHRpb25zLmRldmljZV9jbGFzcyBlbHNlICcnCiAgICAgICAgIGlm
IG51bV93b3JrZXJzID09IDE6Ci0gICAgICAgICAgICBzZWxmLl9wcmludF9kZWZhdWx0KCJSdW5u
aW5nIDEgJXMuIiAlIGRyaXZlcl9uYW1lKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWco
IiglcykuIiAlIGdyYW1tYXIucGx1cmFsaXplKG51bV9zaGFyZHMsICJzaGFyZCIpKQorICAgICAg
ICAgICAgc2VsZi5fcHJpbnRfZGVmYXVsdCgnUnVubmluZyAxIHt9e30uJy5mb3JtYXQoZHJpdmVy
X25hbWUsIGRldmljZV9zdWZmaXgpKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJyh7
fSkuJy5mb3JtYXQoZ3JhbW1hci5wbHVyYWxpemUobnVtX3NoYXJkcywgInNoYXJkIikpKQogICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVmYXVsdCgiUnVubmluZyAlcyBp
biBwYXJhbGxlbC4iICUgKGdyYW1tYXIucGx1cmFsaXplKG51bV93b3JrZXJzLCBkcml2ZXJfbmFt
ZSkpKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoIiglZCBzaGFyZHMpLiIgJSBudW1f
c2hhcmRzKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVmYXVsdCgnUnVubmluZyB7fSBpbiBw
YXJhbGxlbHt9LicuZm9ybWF0KGdyYW1tYXIucGx1cmFsaXplKG51bV93b3JrZXJzLCBkcml2ZXJf
bmFtZSksIGRldmljZV9zdWZmaXgpKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJyh7
fSBzaGFyZHMpLicuZm9ybWF0KG51bV9zaGFyZHMpKQogICAgICAgICBzZWxmLl9wcmludF9kZWZh
dWx0KCcnKQogCiAgICAgZGVmIF9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUoc2VsZiwg
cnVuX3Jlc3VsdHMsIHJlc3VsdF90eXBlLCByZXN1bHRfdHlwZV9zdHIsIHRlc3RzX3dpdGhfcmVz
dWx0X3R5cGVfY2FsbGJhY2spOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCBh
MDQ4M2EwYTkxZWRlYmQ1ZDg5OTk1OWU3ZmVmYTkzMzJkNDE4OWVmLi5iNjQ1YTUzZTkxNzMwMDVi
ZDY0OWQwYjI5MGZmYjExMDMyMjEyY2IyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5w
eQpAQCAtODIsNiArODIsOCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAKICAgICBERUZBVUxUX0FS
Q0hJVEVDVFVSRSA9ICd4ODYnCiAKKyAgICBDVVNUT01fREVWSUNFX0NMQVNTRVMgPSBbXQorCiAg
ICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGRldGVybWluZV9mdWxsX3BvcnRfbmFtZShjbHMsIGhv
c3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6CiAgICAgICAgICIiIlJldHVybiBhIGZ1bGx5LXNwZWNp
ZmllZCBwb3J0IG5hbWUgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3Qgb2JqZWN0cy4iIiIK
QEAgLTgwMyw3ICs4MDUsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICMgdG8gaGF2
ZSBtdWx0aXBsZSBjb3BpZXMgb2Ygd2Via2l0IGNoZWNrZWQgb3V0IGFuZCBidWlsdC4KICAgICAg
ICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2xheW91dC10ZXN0LXJlc3VsdHMnKQogCi0gICAg
ZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgorICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmLCBk
ZXZpY2VfY2xhc3M9Tm9uZSk6CiAgICAgICAgICIiIlBlcmZvcm0gcG9ydC1zcGVjaWZpYyB3b3Jr
IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSB0ZXN0IHJ1bi4iIiIKICAgICAgICAgcGFzcwogCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQppbmRleCBkNjQ5NTA4YmZmOWE2MjFhODZkZDU4
M2QwY2ZkNTQwNjAzMjg3NTEyLi40NDdjOTk1ZTdkMjQyNWFmZjY2MzYxNmJhZDM2YjJhYTUyNDI4
YmExIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkKQEAgLTUyLDYgKzUyLDkg
QEAgY2xhc3MgRHJpdmVySW5wdXQob2JqZWN0KToKICAgICAgICAgc2VsZi5zaG91bGRfcnVuX3Bp
eGVsX3Rlc3QgPSBzaG91bGRfcnVuX3BpeGVsX3Rlc3QKICAgICAgICAgc2VsZi5hcmdzID0gYXJn
cyBvciBbXQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkRyaXZl
cklucHV0KHRlc3RfbmFtZT0nJXMnLCB0aW1lb3V0PSVzLCBpbWFnZV9oYXNoPSVzLCBzaG91bGRf
cnVuX3BpeGVsX3Rlc3Q9JXMnIiAlIChzZWxmLnRlc3RfbmFtZSwgc2VsZi50aW1lb3V0LCBzZWxm
LmltYWdlX2hhc2gsIHNlbGYuc2hvdWxkX3J1bl9waXhlbF90ZXN0KQorCiAKIGNsYXNzIERyaXZl
ck91dHB1dChvYmplY3QpOgogICAgICIiIkdyb3VwcyBpbmZvcm1hdGlvbiBhYm91dCBhIG91dHB1
dCBmcm9tIGRyaXZlciBmb3IgZWFzeSBwYXNzaW5nCkBAIC01ODcsNiArNTkwLDcgQEAgY2xhc3Mg
RHJpdmVyKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBUcnVlCiAKIAorIyBGSVhNRTogdGhpcyBz
aG91bGQgYmUgYWJzdHJhY3RlZCBvdXQgdmlhIHRoZSBQb3J0IHN1YmNsYXNzIHNvbWVob3cuCiBj
bGFzcyBJT1NTaW11bGF0b3JEcml2ZXIoRHJpdmVyKToKICAgICBkZWYgY21kX2xpbmUoc2VsZiwg
cGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpOgogICAgICAgICBjbWQgPSBzdXBlcihJT1NTaW11
bGF0b3JEcml2ZXIsIHNlbGYpLmNtZF9saW5lKHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2VmbC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9lZmwucHkKaW5kZXggYTkwMGIzYzczMjY0MmNjNGIwYjE4OTkw
Y2VhZGZhM2Q1ZGFlZWQzNC4uNTU2ZTMyOTM1N2Y0YThhN2FhMDBhYTA5ZGVlNDg1MTUxYTg1OTg3
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2VmbC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZWZsLnB5CkBAIC01NCw4ICs1NCw4IEBAIGNsYXNz
IEVmbFBvcnQoUG9ydCk6CiAgICAgZGVmIF9wb3J0X2ZsYWdfZm9yX3NjcmlwdHMoc2VsZik6CiAg
ICAgICAgIHJldHVybiAiLS1lZmwiCiAKLSAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6Ci0g
ICAgICAgIHN1cGVyKEVmbFBvcnQsIHNlbGYpLnNldHVwX3Rlc3RfcnVuKCkKKyAgICBkZWYgc2V0
dXBfdGVzdF9ydW4oc2VsZiwgZGV2aWNlX2NsYXNzPU5vbmUpOgorICAgICAgICBzdXBlcihFZmxQ
b3J0LCBzZWxmKS5zZXR1cF90ZXN0X3J1bihkZXZpY2VfY2xhc3MpCiAgICAgICAgIHNlbGYuX3B1
bHNlYXVkaW9fc2FuaXRpemVyLnVubG9hZF9wdWxzZWF1ZGlvX21vZHVsZSgpCiAKICAgICBkZWYg
c2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlbGYsIHNlcnZlcl9uYW1lPU5vbmUpOgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9ndGsucHkKaW5kZXggYzYzMDJmMThhZTk5MTdiYTYwYjQ5MTM0M2ExN2Fm
OTRhOTE0MTJjNS4uMDMzMzI4MGQ2MmEwNTMxZWYwOWVhOTAzOWU4MTcwZjU4ZmI3NjQ3YyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5CkBAIC0xMDAsOCArMTAwLDggQEAgY2xhc3MgR3Rr
UG9ydChQb3J0KToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlZmF1bHRfdGltZW91dF9tcygp
CiAgICAgICAgIHJldHVybiBzdXBlcihHdGtQb3J0LCBzZWxmKS5kcml2ZXJfc3RvcF90aW1lb3V0
KCkKIAotICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmKToKLSAgICAgICAgc3VwZXIoR3RrUG9y
dCwgc2VsZikuc2V0dXBfdGVzdF9ydW4oKQorICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmLCBk
ZXZpY2VfY2xhc3M9Tm9uZSk6CisgICAgICAgIHN1cGVyKEd0a1BvcnQsIHNlbGYpLnNldHVwX3Rl
c3RfcnVuKGRldmljZV9jbGFzcykKICAgICAgICAgc2VsZi5fcHVsc2VhdWRpb19zYW5pdGl6ZXIu
dW5sb2FkX3B1bHNlYXVkaW9fbW9kdWxlKCkKIAogICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24o
ImxlYWtzIik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQppbmRleCBiNmM0ZDgxOWRkNzJi
Y2Y1MmUwMGJlNTk1OWU5OTNmYmZkNTA2OTU3Li5iZjM0MWRmNmFlMDgyYmJlY2QyYTBmYTM5Mjk5
MTJlN2YyYWMxNjNjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9z
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHkKQEAgLTc0LDE1ICs3
NCwzMSBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0KEFwcGxlUG9ydCk6CiAgICAgQVJDSElURUNU
VVJFUyA9IFsneDg2XzY0JywgJ3g4NiddCiAgICAgREVGQVVMVF9BUkNISVRFQ1RVUkUgPSAneDg2
XzY0JwogCisgICAgREVGQVVMVF9ERVZJQ0VfQ0xBU1MgPSAnaXBob25lJworICAgIENVU1RPTV9E
RVZJQ0VfQ0xBU1NFUyA9IFsnaXBhZCddCisKICAgICBTSU1VTEFUT1JfQlVORExFX0lEID0gJ2Nv
bS5hcHBsZS5pcGhvbmVzaW11bGF0b3InCiAgICAgcmVsYXlfbmFtZSA9ICdMYXlvdXRUZXN0UmVs
YXknCiAgICAgU0lNVUxBVE9SX0RJUkVDVE9SWSA9ICIvdG1wL1dlYktpdFRlc3RpbmdTaW11bGF0
b3JzLyIKICAgICBMU1JFR0lTVEVSX1BBVEggPSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29y
ay9WZXJzaW9ucy9DdXJyZW50L1N1cHBvcnQvbHNyZWdpc3RlciIKICAgICBQUk9DRVNTX0NPVU5U
X0VTVElNQVRFX1BFUl9TSU1VTEFUT1JfSU5TVEFOQ0UgPSAxMDAKIAorICAgIERFVklDRV9DTEFT
U19NQVAgPSB7CisgICAgICAgICd4ODZfNjQnOiB7CisgICAgICAgICAgICAnaXBob25lJzogJ2lQ
aG9uZSA1cycsCisgICAgICAgICAgICAnaXBhZCc6ICdpUGFkIEFpcid9LAorICAgICAgICAneDg2
JzogeworICAgICAgICAgICAgJ2lwaG9uZSc6ICdpUGhvbmUgNScsCisgICAgICAgICAgICAnaXBh
ZCc6ICdpUGFkIFJldGluYSd9LAorICAgIH0KKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0
LCBwb3J0X25hbWUsICoqa3dhcmdzKToKICAgICAgICAgc3VwZXIoSU9TU2ltdWxhdG9yUG9ydCwg
c2VsZikuX19pbml0X18oaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncykKIAorICAgICAgICBvcHRp
b25hbF9kZXZpY2VfY2xhc3MgPSBzZWxmLmdldF9vcHRpb24oJ2RldmljZV9jbGFzcycpCisgICAg
ICAgIHNlbGYuX2RldmljZV9jbGFzcyA9IG9wdGlvbmFsX2RldmljZV9jbGFzcyBpZiBvcHRpb25h
bF9kZXZpY2VfY2xhc3MgZWxzZSBzZWxmLkRFRkFVTFRfREVWSUNFX0NMQVNTCisgICAgICAgIF9s
b2cuZGVidWcoJ0lPU1NpbXVsYXRvclBvcnQgX2RldmljZV9jbGFzcyBpcyAlcycsIHNlbGYuX2Rl
dmljZV9jbGFzcykKKwogICAgIGRlZiBkcml2ZXJfbmFtZShzZWxmKToKICAgICAgICAgaWYgc2Vs
Zi5nZXRfb3B0aW9uKCdkcml2ZXJfbmFtZScpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0
X29wdGlvbignZHJpdmVyX25hbWUnKQpAQCAtMTAwLDE3ICsxMTYsMTcgQEAgY2xhc3MgSU9TU2lt
dWxhdG9yUG9ydChBcHBsZVBvcnQpOgogICAgICAgICAgICAgcnVudGltZSA9IFJ1bnRpbWUuZnJv
bV92ZXJzaW9uX3N0cmluZyhzZWxmLmhvc3QucGxhdGZvcm0ueGNvZGVfc2RrX3ZlcnNpb24oJ2lw
aG9uZXNpbXVsYXRvcicpKQogICAgICAgICByZXR1cm4gcnVudGltZQogCi0gICAgQHByb3BlcnR5
Ci0gICAgQG1lbW9pemVkCiAgICAgZGVmIHNpbXVsYXRvcl9kZXZpY2VfdHlwZShzZWxmKToKICAg
ICAgICAgZGV2aWNlX3R5cGVfaWRlbnRpZmllciA9IHNlbGYuZ2V0X29wdGlvbignZGV2aWNlX3R5
cGUnKQogICAgICAgICBpZiBkZXZpY2VfdHlwZV9pZGVudGlmaWVyOgorICAgICAgICAgICAgX2xv
Zy5kZWJ1Zygnc2ltdWxhdG9yX2RldmljZV90eXBlIGZvciBkZXZpY2UgaWRlbnRpZmllciAlcycs
IGRldmljZV90eXBlX2lkZW50aWZpZXIpCiAgICAgICAgICAgICBkZXZpY2VfdHlwZSA9IERldmlj
ZVR5cGUuZnJvbV9pZGVudGlmaWVyKGRldmljZV90eXBlX2lkZW50aWZpZXIpCiAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBpZiBzZWxmLmFyY2hpdGVjdHVyZSgpID09ICd4ODZfNjQnOgotICAg
ICAgICAgICAgICAgIGRldmljZV90eXBlID0gRGV2aWNlVHlwZS5mcm9tX25hbWUoJ2lQaG9uZSA1
cycpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRldmljZV90eXBlID0gRGV2
aWNlVHlwZS5mcm9tX25hbWUoJ2lQaG9uZSA1JykKKyAgICAgICAgICAgIF9sb2cuZGVidWcoJ3Np
bXVsYXRvcl9kZXZpY2VfdHlwZSBmb3IgZGV2aWNlICVzJywgc2VsZi5fZGV2aWNlX2NsYXNzKQor
ICAgICAgICAgICAgZGV2aWNlX25hbWUgPSBzZWxmLkRFVklDRV9DTEFTU19NQVBbc2VsZi5hcmNo
aXRlY3R1cmUoKV1bc2VsZi5fZGV2aWNlX2NsYXNzXQorICAgICAgICAgICAgaWYgbm90IGRldmlj
ZV9uYW1lOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIGZpbmQg
ZGV2aWNlIGZvciBhcmNoaXRlY3R1cmUge30gYW5kIGRldmljZSBjbGFzcyB7fScuZm9ybWF0KHNl
bGYuYXJjaGl0ZWN0dXJlKCkpLCBzZWxmLl9kZXZpY2VfY2xhc3MpCisgICAgICAgICAgICBkZXZp
Y2VfdHlwZSA9IERldmljZVR5cGUuZnJvbV9uYW1lKGRldmljZV9uYW1lKQogICAgICAgICByZXR1
cm4gZGV2aWNlX3R5cGUKIAogICAgIEBwcm9wZXJ0eQpAQCAtMjA1LDEyICsyMjEsMzcgQEAgY2xh
c3MgSU9TU2ltdWxhdG9yUG9ydChBcHBsZVBvcnQpOgogICAgIGRlZiBfcG9ydF9zcGVjaWZpY19l
eHBlY3RhdGlvbnNfZmlsZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBsaXN0KHJldmVyc2VkKFtz
ZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgocCksICdUZXN0
RXhwZWN0YXRpb25zJykgZm9yIHAgaW4gc2VsZi5iYXNlbGluZV9zZWFyY2hfcGF0aCgpXSkpCiAK
LSAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6CisgICAgZGVmIF9zZXRfZGV2aWNlX2NsYXNz
KHNlbGYsIGRldmljZV9jbGFzcyk6CisgICAgICAgICMgSWRlYWxseSB3ZSdkIGVuc3VyZSB0aGF0
IG5vIHNpbXVsYXRvcnMgYXJlIHJ1bm5pbmcgd2hlbiB0aGlzIGlzIGNhbGxlZC4KKyAgICAgICAg
c2VsZi5fZGV2aWNlX2NsYXNzID0gZGV2aWNlX2NsYXNzIGlmIGRldmljZV9jbGFzcyBlbHNlIHNl
bGYuREVGQVVMVF9ERVZJQ0VfQ0xBU1MKKworICAgIGRlZiBfY3JlYXRlX3NpbXVsYXRvcnMoc2Vs
Zik6CisgICAgICAgIGlmIChzZWxmLmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKCkgPCBzZWxmLmNo
aWxkX3Byb2Nlc3NlcygpKToKKyAgICAgICAgICAgICAgICBfbG9nLndhcm4oIllvdSBoYXZlIHNw
ZWNpZmllZCB2ZXJ5IGhpZ2ggdmFsdWUoezB9KSBmb3IgLS1jaGlsZC1wcm9jZXNzZXMiLmZvcm1h
dChzZWxmLmNoaWxkX3Byb2Nlc3NlcygpKSkKKyAgICAgICAgICAgICAgICBfbG9nLndhcm4oIm1h
eGltdW0gY2hpbGQtcHJvY2Vzc2VzIHdoaWNoIGNhbiBiZSBzdXBwb3J0ZWQgb24gdGhpcyBzeXN0
ZW0gYXJlOiB7MH0iLmZvcm1hdChzZWxmLmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKCkpKQorICAg
ICAgICAgICAgICAgIF9sb2cud2FybigiVGhpcyBpcyB2ZXJ5IGxpa2VseSB0byBmYWlsLiIpCisK
KyAgICAgICAgc2VsZi5fY3JlYXRlU2ltdWxhdG9yQXBwcygpCisKKyAgICAgICAgZm9yIGkgaW4g
eHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgorICAgICAgICAgICAgU2ltdWxhdG9yLndh
aXRfdW50aWxfZGV2aWNlX2lzX2luX3N0YXRlKHNlbGYudGVzdGluZ19kZXZpY2UoaSkudWRpZCwg
U2ltdWxhdG9yLkRldmljZVN0YXRlLlNIVVRET1dOKQorICAgICAgICAgICAgU2ltdWxhdG9yLnJl
c2V0X2RldmljZShzZWxmLnRlc3RpbmdfZGV2aWNlKGkpLnVkaWQpCisKKyAgICBkZWYgc2V0dXBf
dGVzdF9ydW4oc2VsZiwgZGV2aWNlX2NsYXNzPU5vbmUpOgogICAgICAgICBtYWNfb3NfdmVyc2lv
biA9IHNlbGYuaG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uCisKKyAgICAgICAgc2VsZi5fc2V0X2Rl
dmljZV9jbGFzcyhkZXZpY2VfY2xhc3MpCisKKyAgICAgICAgX2xvZy5kZWJ1ZygnJykKKyAgICAg
ICAgX2xvZy5kZWJ1Zygnc2V0dXBfdGVzdF9ydW4gZm9yICVzJywgc2VsZi5fZGV2aWNlX2NsYXNz
KQorCisgICAgICAgIHNlbGYuX2NyZWF0ZV9zaW11bGF0b3JzKCkKKwogICAgICAgICBmb3IgaSBp
biB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6CiAgICAgICAgICAgICBkZXZpY2VfdWRp
ZCA9IHNlbGYudGVzdGluZ19kZXZpY2UoaSkudWRpZAotICAgICAgICAgICAgIyBGSVhNRTogPHJk
YXI6Ly9wcm9ibGVtLzIwOTE2MTQwPiBTd2l0Y2ggdG8gdXNpbmcgQ29yZVNpbXVsYXRvci5mcmFt
ZXdvcmsgZm9yIGxhdW5jaGluZyBhbmQgcXVpdHRpbmcgaU9TIFNpbXVsYXRvcgorICAgICAgICAg
ICAgX2xvZy5kZWJ1ZygndGVzdGluZyBkZXZpY2UgJXMgaGFzIHVkaWQgJXMnLCBpLCBkZXZpY2Vf
dWRpZCkKIAorICAgICAgICAgICAgIyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzIwOTE2MTQwPiBT
d2l0Y2ggdG8gdXNpbmcgQ29yZVNpbXVsYXRvci5mcmFtZXdvcmsgZm9yIGxhdW5jaGluZyBhbmQg
cXVpdHRpbmcgaU9TIFNpbXVsYXRvcgogICAgICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKFsKICAgICAgICAgICAgICAgICAnb3BlbicsICctZycsICctYicsIHNlbGYuU0lNVUxB
VE9SX0JVTkRMRV9JRCArIHN0cihpKSwKICAgICAgICAgICAgICAgICAnLS1hcmdzJywgJy1DdXJy
ZW50RGV2aWNlVURJRCcsIGRldmljZV91ZGlkXSkKQEAgLTI4NCw5ICszMjUsNiBAQCBjbGFzcyBJ
T1NTaW11bGF0b3JQb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLnNpbXVsYXRv
cl9ydW50aW1lLmF2YWlsYWJsZToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1RoZSBpT1MgU2lt
dWxhdG9yIHJ1bnRpbWUgd2l0aCBpZGVudGlmaWVyICJ7MH0iIGNhbm5vdCBiZSB1c2VkIGJlY2F1
c2UgaXQgaXMgdW5hdmFpbGFibGUuJy5mb3JtYXQoc2VsZi5zaW11bGF0b3JfcnVudGltZS5pZGVu
dGlmaWVyKSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBmb3IgaSBpbiB4cmFu
Z2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6Ci0gICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGNy
ZWF0ZXMgdGhlIGRldmljZXMgc2VxdWVudGlhbGx5LCBkb2luZyB0aGlzIGluIHBhcmFsbGVsIGNh
biBpbXByb3ZlIHBlcmZvcm1hbmNlLgotICAgICAgICAgICAgdGVzdGluZ19kZXZpY2UgPSBzZWxm
LnRlc3RpbmdfZGV2aWNlKGkpCiAgICAgICAgIHJldHVybiBzdXBlcihJT1NTaW11bGF0b3JQb3J0
LCBzZWxmKS5jaGVja19zeXNfZGVwcyhuZWVkc19odHRwKQogCiAgICAgU1VCUFJPQ0VTU19DUkFT
SF9SRUdFWCA9IHJlLmNvbXBpbGUoJyNDUkFTSEVEIC0gKD9QPHN1YnByb2Nlc3NfbmFtZT5cUysp
IFwocGlkICg/UDxzdWJwcm9jZXNzX3BpZD5cZCspXCknKQpAQCAtMzI5LDkgKzM2NywxMiBAQCBj
bGFzcyBJT1NTaW11bGF0b3JQb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgICAgICByZXR1cm4gc3Rk
ZXJyLCBOb25lCiAgICAgICAgIHJldHVybiBzdGRlcnIsIGNyYXNoX2xvZwogCi0gICAgQG1lbW9p
emVkCiAgICAgZGVmIHRlc3RpbmdfZGV2aWNlKHNlbGYsIG51bWJlcik6Ci0gICAgICAgIHJldHVy
biBTaW11bGF0b3IoKS5sb29rdXBfb3JfY3JlYXRlX2RldmljZShzZWxmLnNpbXVsYXRvcl9kZXZp
Y2VfdHlwZS5uYW1lICsgJyBXZWJLaXQgVGVzdGVyJyArIHN0cihudW1iZXIpLCBzZWxmLnNpbXVs
YXRvcl9kZXZpY2VfdHlwZSwgc2VsZi5zaW11bGF0b3JfcnVudGltZSkKKyAgICAgICAgIyBGSVhN
RTogcmF0aGVyIHRoYW4gY2FsbGluZyBsb29rdXBfb3JfY3JlYXRlX2RldmljZSBldmVyeSB0aW1l
LCB3ZSBzaG91bGQganVzdCBzdG9yZSBhIG1hcHBpbmcgb2YKKyAgICAgICAgIyBudW1iZXIgdG8g
ZGV2aWNlX3VkaWQuCisgICAgICAgIGRldmljZV90eXBlID0gc2VsZi5zaW11bGF0b3JfZGV2aWNl
X3R5cGUoKQorICAgICAgICBfbG9nLmRlYnVnKCcgdGVzdGluZ19kZXZpY2UgJXMgdXNpbmcgZGV2
aWNlX3R5cGUgJXMnLCBudW1iZXIsIGRldmljZV90eXBlKQorICAgICAgICByZXR1cm4gU2ltdWxh
dG9yKCkubG9va3VwX29yX2NyZWF0ZV9kZXZpY2UoZGV2aWNlX3R5cGUubmFtZSArICcgV2ViS2l0
IFRlc3RlcicgKyBzdHIobnVtYmVyKSwgZGV2aWNlX3R5cGUsIHNlbGYuc2ltdWxhdG9yX3J1bnRp
bWUpCiAKICAgICBkZWYgZ2V0X3NpbXVsYXRvcl9wYXRoKHNlbGYsIHN1ZmZpeD0iIik6CiAgICAg
ICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5TSU1VTEFUT1JfRElSRUNUT1JZLCAiU2ltdWxh
dG9yIiArIHN0cihzdWZmaXgpICsgIi5hcHAiKQpAQCAtMzUwLDE3ICszOTEsOCBAQCBjbGFzcyBJ
T1NTaW11bGF0b3JQb3J0KEFwcGxlUG9ydCk6CiAKICAgICBkZWYgcmVzZXRfcHJlZmVyZW5jZXMo
c2VsZik6CiAgICAgICAgIF9sb2cuZGVidWcoInJlc2V0X3ByZWZlcmVuY2VzIikKLSAgICAgICAg
aWYgKHNlbGYuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoKSA8IHNlbGYuY2hpbGRfcHJvY2Vzc2Vz
KCkpOgotICAgICAgICAgICAgICAgIF9sb2cud2FybigiWW91IGhhdmUgc3BlY2lmaWVkIHZlcnkg
aGlnaCB2YWx1ZSh7MH0pIGZvciAtLWNoaWxkLXByb2Nlc3NlcyIuZm9ybWF0KHNlbGYuY2hpbGRf
cHJvY2Vzc2VzKCkpKQotICAgICAgICAgICAgICAgIF9sb2cud2FybigibWF4aW11bSBjaGlsZC1w
cm9jZXNzZXMgd2hpY2ggY2FuIGJlIHN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbSBhcmU6IHswfSIu
Zm9ybWF0KHNlbGYuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoKSkpCi0gICAgICAgICAgICAgICAg
X2xvZy53YXJuKCJUaGlzIGlzIHZlcnkgbGlrZWx5IHRvIGZhaWwuIikKLQogICAgICAgICBzZWxm
Ll9xdWl0X2lvc19zaW11bGF0b3IoKQotICAgICAgICBzZWxmLl9jcmVhdGVTaW11bGF0b3JBcHBz
KCkKLQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6Ci0g
ICAgICAgICAgICBTaW11bGF0b3Iud2FpdF91bnRpbF9kZXZpY2VfaXNfaW5fc3RhdGUoc2VsZi50
ZXN0aW5nX2RldmljZShpKS51ZGlkLCBTaW11bGF0b3IuRGV2aWNlU3RhdGUuU0hVVERPV04pCi0g
ICAgICAgICAgICBTaW11bGF0b3IucmVzZXRfZGV2aWNlKHNlbGYudGVzdGluZ19kZXZpY2UoaSku
dWRpZCkKKyAgICAgICAgIyBNYXliZSB0aGlzIHNob3VsZCBkZWxldGUgYWxsIGRldmljZXMgdGhh
dCB3ZSd2ZSBjcmVhdGVkPwogCiAgICAgZGVmIG5tX2NvbW1hbmQoc2VsZik6CiAgICAgICAgIHJl
dHVybiBzZWxmLnhjcnVuX2ZpbmQoJ25tJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L3BvcnRfdGVzdGNhc2UucHkKaW5kZXggNjgwZDgwOWZhMDljZTY5YTdmYmZkZDk3MjVjOGMwZTQw
ZDdiMDEwMi4uNTY0Y2QyOGIwOTdlZTQxNjM2YTI0YmNiN2ZlNjFjNWIyY2U4ODZjOSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkKQEAgLTI1MSw2ICsy
NTEsNyBAQCBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucHJvYwogCiAgICAgICAgIHBvcnQuX3NlcnZlcl9wcm9jZXNzX2NvbnN0
cnVjdG9yID0gbWFrZV9wcm9jCisgICAgICAgIHByaW50IHBvcnQKICAgICAgICAgcG9ydC5zZXR1
cF90ZXN0X3J1bigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kaWZmX2ltYWdlKCdm
b28nLCAnYmFyJyksICgnJywgMTAwLjAsIE5vbmUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlbGYucHJvYy5jbWRbMTozXSwgWyItLXRvbGVyYW5jZSIsICIwLjEiXSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L3Rlc3QucHkKaW5kZXggODNmODU4ZmVkZDIwMjRiMjYyNTQ2ZmY4MzdkZjZlYTg1
ODRmZjlmMy4uYWIzMWQ5MzIzZDA5YzI5YzBkNzI5NmM1MThmMTVjZDg4ODE3YTgxZiAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBjbGFzcyBUZXN0
UG9ydChQb3J0KToKICAgICBkZWYgZGVmYXVsdF9yZXN1bHRzX2RpcmVjdG9yeShzZWxmKToKICAg
ICAgICAgcmV0dXJuICcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMnCiAKLSAgICBkZWYgc2V0dXBf
dGVzdF9ydW4oc2VsZik6CisgICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYsIGRldmljZV9jbGFz
cz1Ob25lKToKICAgICAgICAgcGFzcwogCiAgICAgZGVmIF9kcml2ZXJfY2xhc3Moc2VsZik6CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQppbmRleCA3MTM0NDZjN2JiZDU2NDQzZWI4OGY2Njdh
ZDViZmUxM2I2MmM1NmI5Li5mYmNjMzM4OTNmMTcxNDZkOGZlNGM3MDZkNWE5YmMxYWFmZTY2OGFi
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkKQEAgLTM0NSwxMiArMzQ1LDEyIEBAIGNs
YXNzIFdpblBvcnQoQXBwbGVQb3J0KToKICAgICBkZWYgZGVsZXRlX3NlbV9sb2NrcyhzZWxmKToK
ICAgICAgICAgb3Muc3lzdGVtKCJybSAtcmYgL2Rldi9zaG0vc2VtLioiKQogCi0gICAgZGVmIHNl
dHVwX3Rlc3RfcnVuKHNlbGYpOgorICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmLCBkZXZpY2Vf
Y2xhc3M9Tm9uZSk6CiAgICAgICAgIGF0ZXhpdC5yZWdpc3RlcihzZWxmLnJlc3RvcmVfY3Jhc2hf
bG9nX3NhdmluZykKICAgICAgICAgc2VsZi5zZXR1cF9jcmFzaF9sb2dfc2F2aW5nKCkKICAgICAg
ICAgc2VsZi5wcmV2ZW50X2Vycm9yX2RpYWxvZ3MoKQogICAgICAgICBzZWxmLmRlbGV0ZV9zZW1f
bG9ja3MoKQotICAgICAgICBzdXBlcihXaW5Qb3J0LCBzZWxmKS5zZXR1cF90ZXN0X3J1bigpCisg
ICAgICAgIHN1cGVyKFdpblBvcnQsIHNlbGYpLnNldHVwX3Rlc3RfcnVuKGRldmljZV9jbGFzcykK
IAogICAgIGRlZiBjbGVhbl91cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgc2VsZi5hbGxvd19l
cnJvcl9kaWFsb2dzKCkK
</data>
<flag name="review"
          id="309558"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>