<?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>224329</bug_id>
          
          <creation_ts>2021-04-08 09:41:47 -0700</creation_ts>
          <short_desc>Make TestInput take a Test object, not a path</short_desc>
          <delta_ts>2021-04-09 12:51:16 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>220421</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Sneddon [:gsnedders]">gsnedders</reporter>
          <assigned_to name="Sam Sneddon [:gsnedders]">gsnedders</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1748324</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-08 09:41:47 -0700</bug_when>
    <thetext>Continue to refactor webkitpy.layout_tests to represent tests as objects, rather than as test names (i.e., paths). This is required so that we can attach data, like expectations, to the tests and pass them through the various components, rather than having to do multiple walks of the tree to find them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748331</commentid>
    <comment_count>1</comment_count>
      <attachid>425512</attachid>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-08 09:59:46 -0700</bug_when>
    <thetext>Created attachment 425512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748341</commentid>
    <comment_count>2</comment_count>
      <attachid>425516</attachid>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-08 10:26:34 -0700</bug_when>
    <thetext>Created attachment 425516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748387</commentid>
    <comment_count>3</comment_count>
      <attachid>425516</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-04-08 11:38:10 -0700</bug_when>
    <thetext>Comment on attachment 425516
Patch

Looks good, let&apos;s wait for iOS layout tests, since that&apos;s the configuration most likely to be broken by this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748702</commentid>
    <comment_count>4</comment_count>
      <attachid>425615</attachid>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-09 05:49:27 -0700</bug_when>
    <thetext>Created attachment 425615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748703</commentid>
    <comment_count>5</comment_count>
      <attachid>425615</attachid>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-09 05:50:33 -0700</bug_when>
    <thetext>Comment on attachment 425615
Patch

https://github.com/WebKit/WebKit/compare/main...gsnedders:test_obj_to_runner?expand=1 has the history from the first patch, in case that helps to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748758</commentid>
    <comment_count>6</comment_count>
      <attachid>425626</attachid>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-09 09:29:39 -0700</bug_when>
    <thetext>Created attachment 425626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748819</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-09 12:50:06 -0700</bug_when>
    <thetext>Committed r275773 (236348@main): &lt;https://commits.webkit.org/236348@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425626.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748820</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-09 12:51:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/76465565&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425512</attachid>
            <date>2021-04-08 09:59:46 -0700</date>
            <delta_ts>2021-04-08 10:26:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224329-20210408175945.patch</filename>
            <type>text/plain</type>
            <size>33462</size>
            <attacher name="Sam Sneddon [:gsnedders]">gsnedders</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjU3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTdkNGZjNjg1ODAwNTg2YjZmYTJkYjRhNWI5YWMzNTZj
MmZiMTA1Yi4uMjY3MmIxNzU3N2RkYTkyYjczMGQ3NDAwZmJlMjkxMWY1Mzc3YWFlMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDIxLTA0LTA4ICBTYW0gU25lZGRvbiAgPGdzbmVkZGVyc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFrZSBUZXN0SW5wdXQgdGFrZSBhIFRlc3Qgb2JqZWN0LCBub3QgYSBwYXRoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weToKKyAg
ICAgICAgKExheW91dFRlc3RSdW5uZXIuX19pbml0X18pOiBEb24ndCBwYXNzIHRlc3RzIHRvIHNr
aXAgaGVyZSwgYXMgdGhleSBhcm5lJ3QgcnVuLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lcl91bml0dGVzdC5weToK
KyAgICAgICAgKExheW91dFRlc3RSdW5uZXJUZXN0cy5fcnVuX3Rlc3RzKTogVGVzdElucHV0IGV4
cGVjdHMgYSBUZXN0LgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lclRlc3RzLnRlc3RfaW50ZXJy
dXB0X2lmX2F0X2ZhaWx1cmVfbGltaXRzKTogVGVzdElucHV0IGV4cGVjdHMgYSBUZXN0LgorICAg
ICAgICAoU2hhcmRlclRlc3RzLmdldF90ZXN0X2lucHV0KTogVGVzdElucHV0IGV4cGVjdHMgYSBU
ZXN0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLl9jb2xsZWN0X3Rlc3RzKToKKyAgICAgICAg
TW92ZSBkdXBsaWNhdGVkIGNvZGUgZnJvbSBNYW5hZ2VyLnJ1biBhbmQgTWFuYWdlci5wcmludF9l
eHBlY3RhdGlvbnMgaGVyZS4KKyAgICAgICAgKE1hbmFnZXIuX3Rlc3RzX3RvX3J1bik6CisgICAg
ICAgIFJlbmFtZWQgZnJvbSBNYW5hZ2VyLl9wcmVwYXJlX2xpc3RzOyBub3cganVzdCBnaXZlcyB0
ZXN0cyB0byBydW4uCisgICAgICAgIChNYW5hZ2VyLl90ZXN0X2lucHV0X2Zvcl9maWxlKTogTm93
IHRha2VzIGEgVGVzdCwgbm90IGEgc3RyLgorICAgICAgICAoTWFuYWdlci5ydW4pOgorICAgICAg
ICBMYXJnZWx5IGp1c3QgY2hhbmdlIGZvciBNYW5hZ2VyLl9jb2xsZWN0X3Rlc3RzLCBhbHNvIHJl
bmFtaW5nIHRoZSBzZXRzIHRvIG1hdGNoIHRoZWlyCisgICAgICAgIGNsZWFyZXIgbmFtZXMgaW4g
cHJpbnRfZXhwZWN0YXRpb25zLgorICAgICAgICBBZGRpdGlvbmFsbHksIG5vdyBnZW5lcmF0ZSBz
a2lwIHJlc3VsdHMgaGVyZSwgYXMgdGhleSBhcmVuJ3QgdG8gZG8gd2l0aCBhY3R1YWxseSBydW5u
aW5nCisgICAgICAgIHRlc3RzLCB0aGV5J3JlIGFib3V0IHRlc3Qgc2VsZWN0aW9uLgorICAgICAg
ICAoTWFuYWdlci5fcnVuX3Rlc3Rfc3Vic2V0KTogU3RvcCBwYXNzaW5nIHRlc3RzX3RvX3NraXAs
IHBlciBhYm92ZS4KKyAgICAgICAgKE1hbmFnZXIuX3J1bl90ZXN0cyk6IFN0b3AgcGFzc2luZyB0
ZXN0c190b19za2lwLCBwZXIgYWJvdmUuCisgICAgICAgIChNYW5hZ2VyLl9wcmludF9leHBlY3Rh
dGlvbl9saW5lX2Zvcl90ZXN0KTogVGFrZSBhIFRlc3QsIG5vdCBhIHN0ci4KKyAgICAgICAgKE1h
bmFnZXIucHJpbnRfZXhwZWN0YXRpb25zKTogTGFyZ2VseSBjaGFuZ2UgZm9yIE1hbmFnZXIuX2Nv
bGxlY3RfdGVzdHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9k
ZWxzL3Rlc3QucHk6CisgICAgICAgIChUZXN0KTogVXNlIGF0dHJzIHRvIGF2b2lkIGhhdmluZyB0
byBkZWZpbmUgY21wLCBoYXNoLCByZXByLCBldGMuCisgICAgICAgIChUZXN0Ll9faW5pdF9fKTog
RGVsZXRlZC4KKyAgICAgICAgKFRlc3QuX19yZXByX18pOiBEZWxldGVkLgorICAgICAgICAoVGVz
dC5fX2VxX18pOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X2lucHV0LnB5OgorICAgICAgICAoVGVzdElucHV0Ll9faW5pdF9fKTog
VGFrZSBhIFRlc3QsIG5vdCBhIHN0ci4KKyAgICAgICAgKFRlc3RJbnB1dC50ZXN0X25hbWUpOiBN
YWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggY29kZSByZWFkaW5nIFRlc3RJbnB1dC50ZXN0X25h
bWUgZm9yIG5vdy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2Rl
bHMvdGVzdF9ydW5fcmVzdWx0cy5weToKKyAgICAgICAgKFRlc3RSdW5SZXN1bHRzLm1lcmdlKTog
Rml4IG1lcmdpbmcgb2YgZGljdHMtb2Ytc2V0cywgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgdGhl
IHNldHMuCisgICAgICAgIChUZXN0UnVuUmVzdWx0cy5tZXJnZS5tZXJnZV9kaWN0X3NldHMpOiBJ
bXBsZW1lbnQgdGhlIG1lcmdpbmcuCisKIDIwMjEtMDQtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBTRnJhbWUgaW1wbGVtZW50YXRpb24gdG8g
bGF0ZXN0IHZlcnNpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weQpp
bmRleCBiYWRkNWNmMWViZTg0ZjAxYzlhODYyOTI0ZmNjMDdjMWQ2MTc4YWIwLi5kOGI0Y2IxODZk
OGJlNzkzOGQ0NDE1YjEwZWRiYzRiZTlmMmY3OTA0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5
b3V0X3Rlc3RfcnVubmVyLnB5CkBAIC0xMTAsMTAgKzExMCw3IEBAIGNsYXNzIExheW91dFRlc3RS
dW5uZXIob2JqZWN0KToKICAgICAgICAgaWYgbm90IHJldHJ5aW5nOgogICAgICAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF9leHBlY3RlZChydW5fcmVzdWx0cywgc2VsZi5fZXhwZWN0YXRpb25z
Lm1vZGVsKCkuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0X3R5cGUpCiAKLSAgICAgICAgZm9yIHRlc3Rf
bmFtZSBpbiBzZXQodGVzdHNfdG9fc2tpcCk6Ci0gICAgICAgICAgICByZXN1bHQgPSB0ZXN0X3Jl
c3VsdHMuVGVzdFJlc3VsdCh0ZXN0X25hbWUpCi0gICAgICAgICAgICByZXN1bHQudHlwZSA9IHRl
c3RfZXhwZWN0YXRpb25zLlNLSVAKLSAgICAgICAgICAgIHJ1bl9yZXN1bHRzLmFkZChyZXN1bHQs
IGV4cGVjdGVkPVRydWUsIHRlc3RfaXNfc2xvdz1zZWxmLl90ZXN0X2lzX3Nsb3codGVzdF9uYW1l
KSkKKyAgICAgICAgYXNzZXJ0IG5vdCB0ZXN0c190b19za2lwCiAKICAgICAgICAgc2VsZi5fcHJp
bnRlci53cml0ZV91cGRhdGUoJ1NoYXJkaW5nIHRlc3RzIC4uLicpCiAgICAgICAgIGFsbF9zaGFy
ZHMgPSBzZWxmLl9zaGFyZGVyLnNoYXJkX3Rlc3RzKHRlc3RfaW5wdXRzLCBpbnQoc2VsZi5fb3B0
aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCBzZWxmLl9vcHRpb25zLmZ1bGx5X3BhcmFsbGVsKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bGF5b3V0X3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5Cmlu
ZGV4IGI4MGNhNDU0ODVhMzI5NGQwMmUyNDU1ZTVlZjNkZmMxNzQzZDE4OWYuLjJlOTAxYTEzOWNl
MzYzMzEwMGU1MTlhNzJjYmQyYzA3NGNkZjRlNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lcl91bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy9sYXlvdXRfdGVzdF9ydW5uZXJfdW5pdHRlc3QucHkKQEAgLTM1LDkgKzM1LDEwIEBAIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBydW5fd2Via2l0X3Rlc3RzCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy5sYXlvdXRfdGVzdF9ydW5uZXIgaW1wb3J0
IExheW91dFRlc3RSdW5uZXIsIFNoYXJkZXIsIFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbgog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9u
cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVz
Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9ydW5fcmVzdWx0cyBpbXBv
cnQgVGVzdFJ1blJlc3VsdHMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0
IGltcG9ydCBUZXN0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9pbnB1
dCBpbXBvcnQgVGVzdElucHV0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVz
dF9yZXN1bHRzIGltcG9ydCBUZXN0UmVzdWx0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5t
b2RlbHMudGVzdF9ydW5fcmVzdWx0cyBpbXBvcnQgVGVzdFJ1blJlc3VsdHMKIGZyb20gd2Via2l0
cHkucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydAogCiAKQEAgLTgxLDcgKzgyLDcgQEAgY2xhc3Mg
TGF5b3V0VGVzdFJ1bm5lclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcmV0dXJu
IExheW91dFRlc3RSdW5uZXIob3B0aW9ucywgcG9ydCwgRmFrZVByaW50ZXIoKSwgcG9ydC5yZXN1
bHRzX2RpcmVjdG9yeSgpLCBsYW1iZGEgdGVzdF9uYW1lOiBGYWxzZSkKIAogICAgIGRlZiBfcnVu
X3Rlc3RzKHNlbGYsIHJ1bm5lciwgdGVzdHMpOgotICAgICAgICB0ZXN0X2lucHV0cyA9IFtUZXN0
SW5wdXQodGVzdCwgNjAwMCkgZm9yIHRlc3QgaW4gdGVzdHNdCisgICAgICAgIHRlc3RfaW5wdXRz
ID0gW1Rlc3RJbnB1dChUZXN0KHRlc3QpLCA2MDAwKSBmb3IgdGVzdCBpbiB0ZXN0c10KICAgICAg
ICAgZXhwZWN0YXRpb25zID0gVGVzdEV4cGVjdGF0aW9ucyhydW5uZXIuX3BvcnQsIHRlc3RzKQog
ICAgICAgICBleHBlY3RhdGlvbnMucGFyc2VfYWxsX2V4cGVjdGF0aW9ucygpCiAgICAgICAgIHJ1
bm5lci5ydW5fdGVzdHMoZXhwZWN0YXRpb25zLCB0ZXN0X2lucHV0cywgc2V0KCksCkBAIC05Miw3
ICs5Myw3IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIHJ1bm5lci5fb3B0aW9ucy5leGl0X2FmdGVyX25fZmFpbHVyZXMgPSBOb25lCiAg
ICAgICAgIHJ1bm5lci5fb3B0aW9ucy5leGl0X2FmdGVyX25fY3Jhc2hlc19vcl90aW1lcyA9IE5v
bmUKICAgICAgICAgdGVzdF9uYW1lcyA9IFsncGFzc2VzL3RleHQuaHRtbCcsICdwYXNzZXMvaW1h
Z2UuaHRtbCddCi0gICAgICAgIHJ1bm5lci5fdGVzdF9pbnB1dHMgPSBbVGVzdElucHV0KHRlc3Rf
bmFtZSwgNjAwMCkgZm9yIHRlc3RfbmFtZSBpbiB0ZXN0X25hbWVzXQorICAgICAgICBydW5uZXIu
X3Rlc3RfaW5wdXRzID0gW1Rlc3RJbnB1dChUZXN0KHRlc3RfbmFtZSksIDYwMDApIGZvciB0ZXN0
X25hbWUgaW4gdGVzdF9uYW1lc10KIAogICAgICAgICBleHBlY3RhdGlvbnMgPSBUZXN0RXhwZWN0
YXRpb25zKHJ1bm5lci5fcG9ydCwgdGVzdF9uYW1lcykKICAgICAgICAgZXhwZWN0YXRpb25zLnBh
cnNlX2FsbF9leHBlY3RhdGlvbnMoKQpAQCAtMjYxLDcgKzI2Miw3IEBAIGNsYXNzIFNoYXJkZXJU
ZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgXQogCiAgICAgZGVmIGdldF90ZXN0X2lucHV0
KHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJldHVybiBUZXN0SW5wdXQodGVzdF9maWxlLCBu
ZWVkc19zZXJ2ZXJzPSh0ZXN0X2ZpbGUuc3RhcnRzd2l0aCgnaHR0cCcpKSkKKyAgICAgICAgcmV0
dXJuIFRlc3RJbnB1dChUZXN0KHRlc3RfZmlsZSksIG5lZWRzX3NlcnZlcnM9KHRlc3RfZmlsZS5z
dGFydHN3aXRoKCdodHRwJykpKQogCiAgICAgZGVmIGdldF9zaGFyZHMoc2VsZiwgbnVtX3dvcmtl
cnMsIGZ1bGx5X3BhcmFsbGVsLCB0ZXN0X2xpc3Q9Tm9uZSk6CiAgICAgICAgIHBvcnQgPSBUZXN0
UG9ydChNb2NrU3lzdGVtSG9zdCgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKaW5kZXggMDgwZjQzNDAx
YmQ5YjgwZjIyOGNlZDFiZDI5MTMzZDhlNTVmZGY4MS4uMjcxYTE1NjdiNDUzZjUzMmQyMzllYTNm
ZTllYzkwMDdlOTQxMTEzOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CkBAIC05NCw4ICs5NCwzOCBA
QCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIHRlc3Rfb3B0aW9uc19qc29uX3BhdGgg
PSBzZWxmLl9wb3J0LnBhdGhfZnJvbV93ZWJraXRfYmFzZShzZWxmLkxBWU9VVF9URVNUU19ESVJF
Q1RPUlksICJ0ZXN0cy1vcHRpb25zLmpzb24iKQogICAgICAgICBzZWxmLl90ZXN0c19vcHRpb25z
ID0ganNvbi5sb2FkcyhzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHRlc3Rfb3B0aW9u
c19qc29uX3BhdGgpKSBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyh0ZXN0X29wdGlvbnNfanNv
bl9wYXRoKSBlbHNlIHt9CiAKLSAgICBkZWYgX2NvbGxlY3RfdGVzdHMoc2VsZiwgYXJncywgZGV2
aWNlX3R5cGU9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9maW5kZXIuZmluZF90ZXN0cyhz
ZWxmLl9vcHRpb25zLCBhcmdzLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKKyAgICBkZWYgX2Nv
bGxlY3RfdGVzdHMoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgYXJncywgICMgdHlwZTog
TGlzdFtzdHJdCisgICAgICAgICAgICAgICAgICAgICAgIGRldmljZV90eXBlX2xpc3Q9W05vbmVd
LCAgIyB0eXBlOiBMaXN0W09wdGlvbmFsW0RldmljZVR5cGVdXQorICAgICAgICAgICAgICAgICAg
ICAgICApOgorICAgICAgICBhZ2dyZWdhdGVfdGVzdHMgPSBzZXQoKSAgIyB0eXBlOiBTZXRbVGVz
dF0KKyAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1biA9IHNldCgpICAjIHR5cGU6IFNldFtU
ZXN0XQorICAgICAgICB0ZXN0c190b19ydW5fYnlfZGV2aWNlID0ge30gICMgdHlwZTogRGljdFtP
cHRpb25hbFtEZXZpY2VUeXBlXSwgTGlzdFtUZXN0XV0KKworICAgICAgICBkZXZpY2VfdHlwZV9s
aXN0ID0gc2VsZi5fcG9ydC5zdXBwb3J0ZWRfZGV2aWNlX3R5cGVzKCkKKyAgICAgICAgZm9yIGRl
dmljZV90eXBlIGluIGRldmljZV90eXBlX2xpc3Q6CisgICAgICAgICAgICBmb3JfZGV2aWNlX3R5
cGUgPSB1J2ZvciB7fSAnLmZvcm1hdChkZXZpY2VfdHlwZSkgaWYgZGV2aWNlX3R5cGUgZWxzZSAn
JworICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUodSdDb2xsZWN0aW5nIHRl
c3RzIHt9Li4uJy5mb3JtYXQoZm9yX2RldmljZV90eXBlKSkKKyAgICAgICAgICAgIHBhdGhzLCB0
ZXN0cyA9IHNlbGYuX2ZpbmRlci5maW5kX3Rlc3RzKHNlbGYuX29wdGlvbnMsIGFyZ3MsIGRldmlj
ZV90eXBlPWRldmljZV90eXBlKQorICAgICAgICAgICAgYWdncmVnYXRlX3Rlc3RzLnVwZGF0ZSh0
ZXN0cykKKworICAgICAgICAgICAgdGVzdHNfYnlfcGF0aCA9IGRlZmF1bHRkaWN0KHNldCkgICMg
dHlwZTogRGljdFtzdHIsIFNldFtUZXN0XV0KKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3Rz
OgorICAgICAgICAgICAgICAgIHRlc3RzX2J5X3BhdGhbdGVzdC50ZXN0X3BhdGhdLmFkZCh0ZXN0
KQorCisgICAgICAgICAgICB0ZXN0X25hbWVzID0gW3Rlc3QudGVzdF9wYXRoIGZvciB0ZXN0IGlu
IHRlc3RzXQorCisgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSh1J1BhcnNp
bmcgZXhwZWN0YXRpb25zIHt9Li4uJy5mb3JtYXQoZm9yX2RldmljZV90eXBlKSkKKyAgICAgICAg
ICAgIHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0gPSB0ZXN0X2V4cGVjdGF0aW9ucy5U
ZXN0RXhwZWN0YXRpb25zKHNlbGYuX3BvcnQsIHRlc3RfbmFtZXMsIGZvcmNlX2V4cGVjdGF0aW9u
c19wYXNzPXNlbGYuX29wdGlvbnMuZm9yY2UsIGRldmljZV90eXBlPWRldmljZV90eXBlKQorICAg
ICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zW2RldmljZV90eXBlXS5wYXJzZV9hbGxfZXhwZWN0
YXRpb25zKCkKKworICAgICAgICAgICAgdGVzdHNfdG9fcnVuID0gc2VsZi5fdGVzdHNfdG9fcnVu
KHRlc3RzLCB0ZXN0c19ieV9wYXRoLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKKyAgICAgICAg
ICAgIHRlc3RzX3RvX3J1bl9ieV9kZXZpY2VbZGV2aWNlX3R5cGVdID0gW3Rlc3QgZm9yIHRlc3Qg
aW4gdGVzdHNfdG9fcnVuIGlmIHRlc3Qgbm90IGluIGFnZ3JlZ2F0ZV90ZXN0c190b19ydW5dCisg
ICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuLnVwZGF0ZSh0ZXN0c190b19ydW5fYnlf
ZGV2aWNlW2RldmljZV90eXBlXSkKKworICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9fc2tpcCA9
IGFnZ3JlZ2F0ZV90ZXN0cyAtIGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4KKworICAgICAgICByZXR1
cm4gdGVzdHNfdG9fcnVuX2J5X2RldmljZSwgYWdncmVnYXRlX3Rlc3RzX3RvX3NraXAKIAogICAg
IGRlZiBfaXNfaHR0cF90ZXN0KHNlbGYsIHRlc3QpOgogICAgICAgICByZXR1cm4gc2VsZi5IVFRQ
X1NVQkRJUiBpbiB0ZXN0IG9yIHNlbGYuX2lzX3dlYnNvY2tldF90ZXN0KHRlc3QpIG9yIHNlbGYu
X25lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0KHRlc3QpCkBAIC0xODcsMjggKzIxNywzOCBAQCBjbGFz
cyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuICh0ZXN0c190b19ydW4sIHNldCh0
ZXN0X25hbWVzKSAtIHNldCh0ZXN0c190b19ydW4pKQogCi0gICAgZGVmIF9wcmVwYXJlX2xpc3Rz
KHNlbGYsIHBhdGhzLCB0ZXN0X25hbWVzLCBkZXZpY2VfdHlwZT1Ob25lKToKLSAgICAgICAgdGVz
dHNfdG9fc2tpcCA9IHNlbGYuX3NraXBfdGVzdHModGVzdF9uYW1lcywgc2VsZi5fZXhwZWN0YXRp
b25zW2RldmljZV90eXBlXSwgc2VsZi5faHR0cF90ZXN0cyh0ZXN0X25hbWVzKSkKLSAgICAgICAg
dGVzdHNfdG9fcnVuID0gW3Rlc3QgZm9yIHRlc3QgaW4gdGVzdF9uYW1lcyBpZiB0ZXN0IG5vdCBp
biB0ZXN0c190b19za2lwXQorICAgIGRlZiBfdGVzdHNfdG9fcnVuKHNlbGYsCisgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RzLCAgIyB0eXBlOiBMaXN0W1Rlc3RdCisgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RzX2J5X3BhdGgsICAjIHR5cGU6IERpY3Rbc3RyLCBTZXRbVGVzdF1dCisgICAg
ICAgICAgICAgICAgICAgICAgIGRldmljZV90eXBlPU5vbmUsICAjIHR5cGU6IE9wdGlvbmFsW0Rl
dmljZVR5cGVdCisgICAgICAgICAgICAgICAgICAgICAgICk6CisgICAgICAgIHRlc3RfbmFtZXMg
PSBsaXN0KHRlc3RzX2J5X3BhdGgua2V5cygpKQorCisgICAgICAgIHRlc3RfbmFtZXNfdG9fc2tp
cCA9IHNlbGYuX3NraXBfdGVzdHModGVzdF9uYW1lcywgc2VsZi5fZXhwZWN0YXRpb25zW2Rldmlj
ZV90eXBlXSwgc2VsZi5faHR0cF90ZXN0cyh0ZXN0X25hbWVzKSkKKworICAgICAgICB0ZXN0c190
b19za2lwID0gc2V0KCkgICMgdHlwZTogU2V0W1Rlc3RdCisgICAgICAgIGZvciB0ZXN0X25hbWVf
dG9fc2tpcCBpbiB0ZXN0X25hbWVzX3RvX3NraXA6CisgICAgICAgICAgICB0ZXN0c190b19za2lw
LnVwZGF0ZSh0ZXN0c19ieV9wYXRoW3Rlc3RfbmFtZV90b19za2lwXSkKKworICAgICAgICB0ZXN0
c190b19ydW4gPSBbdGVzdCBmb3IgdGVzdCBpbiB0ZXN0cyBpZiB0ZXN0IG5vdCBpbiB0ZXN0c190
b19za2lwXQogCiAgICAgICAgICMgQ3JlYXRlIGEgc29ydGVkIGxpc3Qgb2YgdGVzdCBmaWxlcyBz
byB0aGUgc3Vic2V0IGNodW5rLAogICAgICAgICAjIGlmIHVzZWQsIGNvbnRhaW5zIGFscGhhYmV0
aWNhbGx5IGNvbnNlY3V0aXZlIHRlc3RzLgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm9yZGVy
ID09ICduYXR1cmFsJzoKLSAgICAgICAgICAgIHRlc3RzX3RvX3J1bi5zb3J0KGtleT1zZWxmLl9w
b3J0LnRlc3Rfa2V5KQorICAgICAgICAgICAgdGVzdHNfdG9fcnVuLnNvcnQoa2V5PWxhbWJkYSB4
OiBzZWxmLl9wb3J0LnRlc3Rfa2V5KHgudGVzdF9wYXRoKSkKICAgICAgICAgZWxpZiBzZWxmLl9v
cHRpb25zLm9yZGVyID09ICdyYW5kb20nOgogICAgICAgICAgICAgcmFuZG9tLnNodWZmbGUodGVz
dHNfdG9fcnVuKQogCiAgICAgICAgIHRlc3RzX3RvX3J1biwgdGVzdHNfaW5fb3RoZXJfY2h1bmtz
ID0gc2VsZi5fc3BsaXRfaW50b19jaHVua3ModGVzdHNfdG9fcnVuKQotICAgICAgICBzZWxmLl9l
eHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLmFkZF9za2lwcGVkX3Rlc3RzKHRlc3RzX2luX290aGVy
X2NodW5rcykKLSAgICAgICAgdGVzdHNfdG9fc2tpcC51cGRhdGUodGVzdHNfaW5fb3RoZXJfY2h1
bmtzKQorICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLmFkZF9za2lwcGVk
X3Rlc3RzKHt0ZXN0LnRlc3RfcGF0aCBmb3IgdGVzdCBpbiB0ZXN0c19pbl9vdGhlcl9jaHVua3N9
KQogCi0gICAgICAgIHJldHVybiB0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAKKyAgICAgICAg
cmV0dXJuIHRlc3RzX3RvX3J1bgogCiAgICAgZGVmIF90ZXN0X2lucHV0X2Zvcl9maWxlKHNlbGYs
IHRlc3RfZmlsZSwgZGV2aWNlX3R5cGU9Tm9uZSk6CiAgICAgICAgIHJldHVybiBUZXN0SW5wdXQo
dGVzdF9maWxlLAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zIGlm
IHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2ZpbGUsIGRldmljZV90eXBlPWRldmljZV90eXBlKSBl
bHNlIHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMsCi0gICAgICAgICAgICBzZWxmLl9pc19odHRw
X3Rlc3QodGVzdF9maWxlKSwKLSAgICAgICAgICAgIHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19p
bl9zdGRlcnI9c2VsZi5fdGVzdF9zaG91bGRfZHVtcF9qc2NvbnNvbGVsb2dfaW5fc3RkZXJyKHRl
c3RfZmlsZSwgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpKQorICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zbG93X3RpbWVfb3V0X21zIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2ZpbGUudGVz
dF9wYXRoLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkgZWxzZSBzZWxmLl9vcHRpb25zLnRpbWVf
b3V0X21zLAorICAgICAgICAgICAgc2VsZi5faXNfaHR0cF90ZXN0KHRlc3RfZmlsZS50ZXN0X3Bh
dGgpLAorICAgICAgICAgICAgc2hvdWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVycj1zZWxm
Ll90ZXN0X3Nob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIodGVzdF9maWxlLnRlc3Rf
cGF0aCwgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpKQogCiAgICAgZGVmIF90ZXN0X2lzX3Nsb3co
c2VsZiwgdGVzdF9maWxlLCBkZXZpY2VfdHlwZT1Ob25lKToKICAgICAgICAgaWYgc2VsZi5fZXhw
ZWN0YXRpb25zW2RldmljZV90eXBlXS5tb2RlbCgpLmhhc19tb2RpZmllcih0ZXN0X2ZpbGUsIHRl
c3RfZXhwZWN0YXRpb25zLlNMT1cpOgpAQCAtMjU2LDU1ICsyOTYsNDcgQEAgY2xhc3MgTWFuYWdl
cihvYmplY3QpOgogCiAgICAgZGVmIHJ1bihzZWxmLCBhcmdzKToKICAgICAgICAgbnVtX2ZhaWxl
ZF91cGxvYWRzID0gMAotICAgICAgICB0b3RhbF90ZXN0cyA9IHNldCgpCi0gICAgICAgIGFnZ3Jl
Z2F0ZV90ZXN0X25hbWVzID0gc2V0KCkKLSAgICAgICAgYWdncmVnYXRlX3Rlc3RzID0gc2V0KCkK
LSAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZSA9IHt9CiAKICAgICAgICAgZGV2aWNlX3R5
cGVfbGlzdCA9IHNlbGYuX3BvcnQuc3VwcG9ydGVkX2RldmljZV90eXBlcygpCi0gICAgICAgIGZv
ciBkZXZpY2VfdHlwZSBpbiBkZXZpY2VfdHlwZV9saXN0OgotICAgICAgICAgICAgIiIiUnVuIHRo
ZSB0ZXN0cyBhbmQgcmV0dXJuIGEgUnVuRGV0YWlscyBvYmplY3Qgd2l0aCB0aGUgcmVzdWx0cy4i
IiIKLSAgICAgICAgICAgIGZvcl9kZXZpY2VfdHlwZSA9IHUnZm9yIHt9ICcuZm9ybWF0KGRldmlj
ZV90eXBlKSBpZiBkZXZpY2VfdHlwZSBlbHNlICcnCi0gICAgICAgICAgICBzZWxmLl9wcmludGVy
LndyaXRlX3VwZGF0ZSh1J0NvbGxlY3RpbmcgdGVzdHMge30uLi4nLmZvcm1hdChmb3JfZGV2aWNl
X3R5cGUpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBhdGhzLCB0ZXN0cyA9
IHNlbGYuX2NvbGxlY3RfdGVzdHMoYXJncywgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCi0gICAg
ICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgICAgICAjIFRoaXMgaXMgcmFpc2Vk
IGlmIC0tdGVzdC1saXN0IGRvZXNuJ3QgZXhpc3QKLSAgICAgICAgICAgICAgICByZXR1cm4gdGVz
dF9ydW5fcmVzdWx0cy5SdW5EZXRhaWxzKGV4aXRfY29kZT0tMSkKLQotICAgICAgICAgICAgdGVz
dF9uYW1lcyA9IFt0ZXN0LnRlc3RfcGF0aCBmb3IgdGVzdCBpbiB0ZXN0c10KLQotICAgICAgICAg
ICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUodSdQYXJzaW5nIGV4cGVjdGF0aW9ucyB7fS4u
LicuZm9ybWF0KGZvcl9kZXZpY2VfdHlwZSkpCi0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlv
bnNbZGV2aWNlX3R5cGVdID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyhzZWxm
Ll9wb3J0LCB0ZXN0X25hbWVzLCBmb3JjZV9leHBlY3RhdGlvbnNfcGFzcz1zZWxmLl9vcHRpb25z
LmZvcmNlLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKLSAgICAgICAgICAgIHNlbGYuX2V4cGVj
dGF0aW9uc1tkZXZpY2VfdHlwZV0ucGFyc2VfYWxsX2V4cGVjdGF0aW9ucygpCi0KLSAgICAgICAg
ICAgIGFnZ3JlZ2F0ZV90ZXN0X25hbWVzLnVwZGF0ZSh0ZXN0X25hbWVzKQotICAgICAgICAgICAg
dGVzdHNfdG9fcnVuLCB0ZXN0c190b19za2lwID0gc2VsZi5fcHJlcGFyZV9saXN0cyhwYXRocywg
dGVzdF9uYW1lcywgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHRlc3RzX3RvX3J1bl9ieV9kZXZpY2UsIGFnZ3JlZ2F0ZV90ZXN0c190b19za2lwID0g
c2VsZi5fY29sbGVjdF90ZXN0cyhhcmdzLCBkZXZpY2VfdHlwZV9saXN0KQorICAgICAgICBleGNl
cHQgSU9FcnJvcjoKKyAgICAgICAgICAgICMgVGhpcyBpcyByYWlzZWQgaWYgLS10ZXN0LWxpc3Qg
ZG9lc24ndCBleGlzdAorICAgICAgICAgICAgcmV0dXJuIHRlc3RfcnVuX3Jlc3VsdHMuUnVuRGV0
YWlscyhleGl0X2NvZGU9LTEpCiAKLSAgICAgICAgICAgIHRvdGFsX3Rlc3RzLnVwZGF0ZSh0ZXN0
c190b19ydW4pCi0gICAgICAgICAgICB0b3RhbF90ZXN0cy51cGRhdGUodGVzdHNfdG9fc2tpcCkK
KyAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1biA9IHNldCgpICAjIHR5cGU6IFNldFtUZXN0
XQorICAgICAgICBmb3IgdiBpbiB0ZXN0c190b19ydW5fYnlfZGV2aWNlLnZhbHVlcygpOgorICAg
ICAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1bi51cGRhdGUodikKIAotICAgICAgICAgICAg
dGVzdHNfdG9fcnVuX2J5X2RldmljZVtkZXZpY2VfdHlwZV0gPSBbdGVzdCBmb3IgdGVzdCBpbiB0
ZXN0c190b19ydW4gaWYgdGVzdCBub3QgaW4gYWdncmVnYXRlX3Rlc3RzXQotICAgICAgICAgICAg
YWdncmVnYXRlX3Rlc3RzLnVwZGF0ZSh0ZXN0c190b19ydW4pCisgICAgICAgIHNraXBwZWRfdGVz
dHNfYnlfcGF0aCA9IGRlZmF1bHRkaWN0KHNldCkKKyAgICAgICAgZm9yIHRlc3QgaW4gYWdncmVn
YXRlX3Rlc3RzX3RvX3NraXA6CisgICAgICAgICAgICBza2lwcGVkX3Rlc3RzX2J5X3BhdGhbdGVz
dC50ZXN0X3BhdGhdLmFkZCh0ZXN0KQogCiAgICAgICAgICMgSWYgYSB0ZXN0IGlzIG1hcmtlZCBz
a2lwcGVkLCBidXQgd2FzIGV4cGxpY2l0bHkgcmVxdWVzdGVkLCBydW4gaXQgYW55d2F5cwogICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLnNraXBwZWQgIT0gJ2Fsd2F5cyc6CiAgICAgICAgICAgICBm
b3IgYXJnIGluIGFyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgYXJnIGluIHRvdGFsX3Rlc3RzIGFu
ZCBhcmcgbm90IGluIGFnZ3JlZ2F0ZV90ZXN0czoKLSAgICAgICAgICAgICAgICAgICAgdGVzdHNf
dG9fcnVuX2J5X2RldmljZVtkZXZpY2VfdHlwZV9saXN0WzBdXS5hcHBlbmQoYXJnKQotICAgICAg
ICAgICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdHMuYWRkKGFyZykKLQotICAgICAgICB0ZXN0c190
b19za2lwID0gdG90YWxfdGVzdHMgLSBhZ2dyZWdhdGVfdGVzdHMKLSAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF9mb3VuZChsZW4oYWdncmVnYXRlX3Rlc3RfbmFtZXMpLCBsZW4oYWdncmVnYXRl
X3Rlc3RzKSwgc2VsZi5fb3B0aW9ucy5yZXBlYXRfZWFjaCwgc2VsZi5fb3B0aW9ucy5pdGVyYXRp
b25zKQorICAgICAgICAgICAgICAgIGlmIGFyZyBpbiBza2lwcGVkX3Rlc3RzX2J5X3BhdGg6Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RzID0gc2tpcHBlZF90ZXN0c19ieV9wYXRoW2FyZ10KKyAg
ICAgICAgICAgICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZVtkZXZpY2VfdHlwZV9saXN0
WzBdXS5leHRlbmQodGVzdHMpCisgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZV90ZXN0c190
b19ydW4gfD0gdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3Nr
aXAgLT0gdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgZGVsIHNraXBwZWRfdGVzdHNfYnlfcGF0
aFthcmddCisKKyAgICAgICAgYWdncmVnYXRlX3Rlc3RzID0gYWdncmVnYXRlX3Rlc3RzX3RvX3J1
biB8IGFnZ3JlZ2F0ZV90ZXN0c190b19za2lwCisKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmlu
dF9mb3VuZChsZW4oYWdncmVnYXRlX3Rlc3RzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsZW4oYWdncmVnYXRlX3Rlc3RzX3RvX3J1biksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXBlYXRfZWFjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMpCiAgICAgICAgIHN0
YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogCiAgICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIGFsbCB0
ZXN0cyB3ZSBhcmUgcnVubmluZyBhcmUgc2tpcHBlZC4KLSAgICAgICAgaWYgdGVzdHNfdG9fc2tp
cCA9PSB0b3RhbF90ZXN0czoKKyAgICAgICAgaWYgYWdncmVnYXRlX3Rlc3RzID09IGFnZ3JlZ2F0
ZV90ZXN0c190b19za2lwOgogICAgICAgICAgICAgX2xvZy5lcnJvcigiQWxsIHRlc3RzIHNraXBw
ZWQuIikKICAgICAgICAgICAgIHJldHVybiB0ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhp
dF9jb2RlPTAsIHNraXBwZWRfYWxsX3Rlc3RzPVRydWUpCiAKICAgICAgICAgIyBDaGVjayB0byBt
YWtlIHN1cmUgd2UgaGF2ZSBubyB0ZXN0cyB0byBydW4gdGhhdCBhcmUgbm90IHNraXBwZWQuCi0g
ICAgICAgIGlmIG5vdCBzdW0oW2xlbih0ZXN0cykgZm9yIHRlc3RzIGluIGl0ZXJ2YWx1ZXModGVz
dHNfdG9fcnVuX2J5X2RldmljZSldKToKKyAgICAgICAgaWYgbm90IGFnZ3JlZ2F0ZV90ZXN0c190
b19ydW46CiAgICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCdObyB0ZXN0cyB0byBydW4uJykKICAg
ICAgICAgICAgIHJldHVybiB0ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhpdF9jb2RlPS0x
KQogCkBAIC0zMTksOSArMzUxLDkgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAj
IENyZWF0ZSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3Qu
CiAgICAgICAgIHNlbGYuX3BvcnQuaG9zdC5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5
KHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5KQogCi0gICAgICAgIG5lZWRzX2h0dHAgPSBhbnkoKHNl
bGYuX2lzX2h0dHBfdGVzdCh0ZXN0KSBhbmQgbm90IHNlbGYuX25lZWRzX3dlYl9wbGF0Zm9ybV90
ZXN0KHRlc3QpKSBmb3IgdGVzdHMgaW4gaXRlcnZhbHVlcyh0ZXN0c190b19ydW5fYnlfZGV2aWNl
KSBmb3IgdGVzdCBpbiB0ZXN0cykKLSAgICAgICAgbmVlZHNfd2ViX3BsYXRmb3JtX3Rlc3Rfc2Vy
dmVyID0gYW55KHNlbGYuX25lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0KHRlc3QpIGZvciB0ZXN0cyBp
biBpdGVydmFsdWVzKHRlc3RzX3RvX3J1bl9ieV9kZXZpY2UpIGZvciB0ZXN0IGluIHRlc3RzKQot
ICAgICAgICBuZWVkc193ZWJzb2NrZXRzID0gYW55KHNlbGYuX2lzX3dlYnNvY2tldF90ZXN0KHRl
c3QpIGZvciB0ZXN0cyBpbiBpdGVydmFsdWVzKHRlc3RzX3RvX3J1bl9ieV9kZXZpY2UpIGZvciB0
ZXN0IGluIHRlc3RzKQorICAgICAgICBuZWVkc19odHRwID0gYW55KChzZWxmLl9pc19odHRwX3Rl
c3QodGVzdC50ZXN0X3BhdGgpIGFuZCBub3Qgc2VsZi5fbmVlZHNfd2ViX3BsYXRmb3JtX3Rlc3Qo
dGVzdC50ZXN0X3BhdGgpKSBmb3IgdGVzdHMgaW4gaXRlcnZhbHVlcyh0ZXN0c190b19ydW5fYnlf
ZGV2aWNlKSBmb3IgdGVzdCBpbiB0ZXN0cykKKyAgICAgICAgbmVlZHNfd2ViX3BsYXRmb3JtX3Rl
c3Rfc2VydmVyID0gYW55KHNlbGYuX25lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0KHRlc3QudGVzdF9w
YXRoKSBmb3IgdGVzdHMgaW4gaXRlcnZhbHVlcyh0ZXN0c190b19ydW5fYnlfZGV2aWNlKSBmb3Ig
dGVzdCBpbiB0ZXN0cykKKyAgICAgICAgbmVlZHNfd2Vic29ja2V0cyA9IGFueShzZWxmLl9pc193
ZWJzb2NrZXRfdGVzdCh0ZXN0LnRlc3RfcGF0aCkgZm9yIHRlc3RzIGluIGl0ZXJ2YWx1ZXModGVz
dHNfdG9fcnVuX2J5X2RldmljZSkgZm9yIHRlc3QgaW4gdGVzdHMpCiAgICAgICAgIHNlbGYuX3J1
bm5lciA9IExheW91dFRlc3RSdW5uZXIoc2VsZi5fb3B0aW9ucywgc2VsZi5fcG9ydCwgc2VsZi5f
cHJpbnRlciwgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksIHNlbGYuX3Rlc3RfaXNfc2xvdywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkc19odHRwPW5lZWRzX2h0
dHAsIG5lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0X3NlcnZlcj1uZWVkc193ZWJfcGxhdGZvcm1fdGVz
dF9zZXJ2ZXIsIG5lZWRzX3dlYnNvY2tldHM9bmVlZHNfd2Vic29ja2V0cykKIApAQCAtMzU4LDcg
KzM5MCwxNCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICBjb25maWd1cmF0
aW9uID0gc2VsZi5fcG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQoc2VsZi5fcG9ydC50YXJn
ZXRfaG9zdCgwKSkKICAgICAgICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uLmdldCgnZmxhdm9y
JywgTm9uZSk6ICAjIFRoZSAtLXJlc3VsdC1yZXBvcnQtZmxhdm9yIGFyZ3VtZW50IHNob3VsZCBv
dmVycmlkZSB3azEvd2syCiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvblsnZmxhdm9yJ10g
PSAnd2syJyBpZiBzZWxmLl9vcHRpb25zLndlYmtpdF90ZXN0X3J1bm5lciBlbHNlICd3azEnCi0g
ICAgICAgICAgICB0ZW1wX2luaXRpYWxfcmVzdWx0cywgdGVtcF9yZXRyeV9yZXN1bHRzLCB0ZW1w
X2VuYWJsZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkgPSBzZWxmLl9ydW5fdGVzdF9zdWJzZXQodGVz
dHNfdG9fcnVuX2J5X2RldmljZVtkZXZpY2VfdHlwZV0sIHRlc3RzX3RvX3NraXAsIGRldmljZV90
eXBlPWRldmljZV90eXBlKQorICAgICAgICAgICAgdGVtcF9pbml0aWFsX3Jlc3VsdHMsIHRlbXBf
cmV0cnlfcmVzdWx0cywgdGVtcF9lbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5ID0gc2VsZi5f
cnVuX3Rlc3Rfc3Vic2V0KHRlc3RzX3RvX3J1bl9ieV9kZXZpY2VbZGV2aWNlX3R5cGVdLCBkZXZp
Y2VfdHlwZT1kZXZpY2VfdHlwZSkKKworICAgICAgICAgICAgc2tpcHBlZF9yZXN1bHRzID0gVGVz
dFJ1blJlc3VsdHMoc2VsZi5fZXhwZWN0YXRpb25zW2RldmljZV90eXBlXSwgbGVuKGFnZ3JlZ2F0
ZV90ZXN0c190b19za2lwKSkKKyAgICAgICAgICAgIGZvciBza2lwcGVkX3Rlc3QgaW4gc2V0KGFn
Z3JlZ2F0ZV90ZXN0c190b19za2lwKToKKyAgICAgICAgICAgICAgICBza2lwcGVkX3Jlc3VsdCA9
IHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHNraXBwZWRfdGVzdC50ZXN0X3BhdGgpCisgICAgICAg
ICAgICAgICAgc2tpcHBlZF9yZXN1bHQudHlwZSA9IHRlc3RfZXhwZWN0YXRpb25zLlNLSVAKKyAg
ICAgICAgICAgICAgICBza2lwcGVkX3Jlc3VsdHMuYWRkKHNraXBwZWRfcmVzdWx0LCBleHBlY3Rl
ZD1UcnVlLCB0ZXN0X2lzX3Nsb3c9c2VsZi5fdGVzdF9pc19zbG93KHNraXBwZWRfdGVzdC50ZXN0
X3BhdGgpKQorICAgICAgICAgICAgdGVtcF9pbml0aWFsX3Jlc3VsdHMgPSB0ZW1wX2luaXRpYWxf
cmVzdWx0cy5tZXJnZShza2lwcGVkX3Jlc3VsdHMpCiAKICAgICAgICAgICAgIGlmIHNlbGYuX29w
dGlvbnMucmVwb3J0X3VybHM6CiAgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZWxu
KCdcbicpCkBAIC00MTksMTAgKzQ1OCwxMyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAg
ICAgICAgICByZXN1bHQuZXhpdF9jb2RlID0gLTEKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0g
ICAgZGVmIF9ydW5fdGVzdF9zdWJzZXQoc2VsZiwgdGVzdHNfdG9fcnVuLCB0ZXN0c190b19za2lw
LCBkZXZpY2VfdHlwZT1Ob25lKToKKyAgICBkZWYgX3J1bl90ZXN0X3N1YnNldChzZWxmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX3RvX3J1biwgICMgdHlwZTogTGlzdFtUZXN0XQor
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZV90eXBlPU5vbmUsICAjIHR5cGU6IE9wdGlv
bmFsW0RldmljZVR5cGVdCisgICAgICAgICAgICAgICAgICAgICAgICAgKToKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSA9IEZhbHNlCi0gICAg
ICAgICAgICBpbml0aWFsX3Jlc3VsdHMgPSBzZWxmLl9ydW5fdGVzdHModGVzdHNfdG9fcnVuLCB0
ZXN0c190b19za2lwLCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNoLCBzZWxmLl9vcHRpb25zLml0
ZXJhdGlvbnMsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHJldHJ5aW5nPUZh
bHNlLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKKyAgICAgICAgICAgIGluaXRpYWxfcmVzdWx0
cyA9IHNlbGYuX3J1bl90ZXN0cyh0ZXN0c190b19ydW4sIHNldCgpLCBzZWxmLl9vcHRpb25zLnJl
cGVhdF9lYWNoLCBzZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMsIGludChzZWxmLl9vcHRpb25zLmNo
aWxkX3Byb2Nlc3NlcyksIHJldHJ5aW5nPUZhbHNlLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkK
IAogICAgICAgICAgICAgdGVzdHNfdG9fcmV0cnkgPSBzZWxmLl90ZXN0c190b19yZXRyeShpbml0
aWFsX3Jlc3VsdHMsIGluY2x1ZGVfY3Jhc2hlcz1zZWxmLl9wb3J0LnNob3VsZF9yZXRyeV9jcmFz
aGVzKCkpCiAgICAgICAgICAgICAjIERvbid0IHJldHJ5IGZhaWx1cmVzIHdoZW4gaW50ZXJydXB0
ZWQgYnkgdXNlciBvciBmYWlsdXJlcyBsaW1pdCBleGNlcHRpb24uCkBAIC00MzMsNyArNDc1LDEz
IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJycp
CiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJSZXRyeWluZyAlcyAuLi4iICUgcGx1cmFsaXpl
KGxlbih0ZXN0c190b19yZXRyeSksICJ1bmV4cGVjdGVkIGZhaWx1cmUiKSkKICAgICAgICAgICAg
ICAgICBfbG9nLmluZm8oJycpCi0gICAgICAgICAgICAgICAgcmV0cnlfcmVzdWx0cyA9IHNlbGYu
X3J1bl90ZXN0cyh0ZXN0c190b19yZXRyeSwgdGVzdHNfdG9fc2tpcD1zZXQoKSwgcmVwZWF0X2Vh
Y2g9MSwgaXRlcmF0aW9ucz0xLCBudW1fd29ya2Vycz0xLCByZXRyeWluZz1UcnVlLCBkZXZpY2Vf
dHlwZT1kZXZpY2VfdHlwZSkKKyAgICAgICAgICAgICAgICByZXRyeV9yZXN1bHRzID0gc2VsZi5f
cnVuX3Rlc3RzKFt0ZXN0IGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1biBpZiB0ZXN0LnRlc3RfcGF0
aCBpbiB0ZXN0c190b19yZXRyeV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0c190b19za2lwPXNldCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0X2VhY2g9MSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdGlvbnM9MSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV93b3JrZXJzPTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyeWluZz1U
cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCiAKICAgICAgICAgICAgICAgICBpZiBlbmFibGVkX3BpeGVs
X3Rlc3RzX2luX3JldHJ5OgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnBpeGVs
X3Rlc3RzID0gRmFsc2UKQEAgLTQ3NywxMCArNTI1LDIwIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0
KToKICAgICAgICAgICAgICAgICBleGl0X2NvZGUgPSBzZWxmLl9wb3J0LmV4aXRfY29kZV9mcm9t
X3N1bW1hcml6ZWRfcmVzdWx0cyhzdW1tYXJpemVkX3Jlc3VsdHMpCiAgICAgICAgIHJldHVybiB0
ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhpdF9jb2RlLCBzdW1tYXJpemVkX3Jlc3VsdHMs
IGluaXRpYWxfcmVzdWx0cywgcmV0cnlfcmVzdWx0cywgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9y
ZXRyeSkKIAotICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIHRlc3RzX3RvX3J1biwgdGVzdHNfdG9f
c2tpcCwgcmVwZWF0X2VhY2gsIGl0ZXJhdGlvbnMsIG51bV93b3JrZXJzLCByZXRyeWluZywgZGV2
aWNlX3R5cGU9Tm9uZSk6CisgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwKKyAgICAgICAgICAgICAg
ICAgICB0ZXN0c190b19ydW4sICAjIHR5cGU6IExpc3RbVGVzdF0KKyAgICAgICAgICAgICAgICAg
ICB0ZXN0c190b19za2lwLCAgIyB0eXBlOiBTZXRbVGVzdF0KKyAgICAgICAgICAgICAgICAgICBy
ZXBlYXRfZWFjaCwgICMgdHlwZTogaW50CisgICAgICAgICAgICAgICAgICAgaXRlcmF0aW9ucywg
ICMgdHlwZTogaW50CisgICAgICAgICAgICAgICAgICAgbnVtX3dvcmtlcnMsICAjIHR5cGU6IGlu
dAorICAgICAgICAgICAgICAgICAgIHJldHJ5aW5nLCAgIyB0eXBlOiBib29sCisgICAgICAgICAg
ICAgICAgICAgZGV2aWNlX3R5cGU9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbRGV2aWNlVHlwZV0K
KyAgICAgICAgICAgICAgICAgICApOgogICAgICAgICB0ZXN0X2lucHV0cyA9IHNlbGYuX2dldF90
ZXN0X2lucHV0cyh0ZXN0c190b19ydW4sIHJlcGVhdF9lYWNoLCBpdGVyYXRpb25zLCBkZXZpY2Vf
dHlwZT1kZXZpY2VfdHlwZSkKIAotICAgICAgICByZXR1cm4gc2VsZi5fcnVubmVyLnJ1bl90ZXN0
cyhzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLCB0ZXN0X2lucHV0cywgdGVzdHNfdG9f
c2tpcCwgbnVtX3dvcmtlcnMsIHJldHJ5aW5nLCBkZXZpY2VfdHlwZSkKKyAgICAgICAgYXNzZXJ0
IHNlbGYuX3J1bm5lciBpcyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgbm90IHRlc3RzX3RvX3Nr
aXAKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bm5lci5ydW5fdGVzdHMoc2VsZi5fZXhwZWN0YXRp
b25zW2RldmljZV90eXBlXSwgdGVzdF9pbnB1dHMsIHNldCgpLCBudW1fd29ya2VycywgcmV0cnlp
bmcsIGRldmljZV90eXBlKQogCiAgICAgZGVmIF9jbGVhbl91cF9ydW4oc2VsZik6CiAgICAgICAg
IF9sb2cuZGVidWcoIkZsdXNoaW5nIHN0ZG91dCIpCkBAIC02NTMsMTAgKzcxMSwxNCBAQCBjbGFz
cyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzdGF0c190cmllCiAKICAgICBkZWYg
X3ByaW50X2V4cGVjdGF0aW9uX2xpbmVfZm9yX3Rlc3Qoc2VsZiwgZm9ybWF0X3N0cmluZywgdGVz
dCwgZGV2aWNlX3R5cGU9Tm9uZSk6Ci0gICAgICAgIGxpbmUgPSBzZWxmLl9leHBlY3RhdGlvbnNb
ZGV2aWNlX3R5cGVdLm1vZGVsKCkuZ2V0X2V4cGVjdGF0aW9uX2xpbmUodGVzdCkKLSAgICAgICAg
cHJpbnQoZm9ybWF0X3N0cmluZy5mb3JtYXQodGVzdCwgbGluZS5leHBlY3RlZF9iZWhhdmlvciwg
c2VsZi5fZXhwZWN0YXRpb25zW2RldmljZV90eXBlXS5yZWFkYWJsZV9maWxlbmFtZV9hbmRfbGlu
ZV9udW1iZXIobGluZSksIGxpbmUub3JpZ2luYWxfc3RyaW5nIG9yICcnKSkKLQotICAgIGRlZiBf
cHJpbnRfZXhwZWN0YXRpb25zX2Zvcl9zdWJzZXQoc2VsZiwgZGV2aWNlX3R5cGUsIHRlc3RfY29s
X3dpZHRoLCB0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXA9e30pOgorICAgICAgICB0ZXN0X3Bh
dGggPSB0ZXN0LnRlc3RfcGF0aAorICAgICAgICBsaW5lID0gc2VsZi5fZXhwZWN0YXRpb25zW2Rl
dmljZV90eXBlXS5tb2RlbCgpLmdldF9leHBlY3RhdGlvbl9saW5lKHRlc3RfcGF0aCkKKyAgICAg
ICAgcHJpbnQoZm9ybWF0X3N0cmluZy5mb3JtYXQodGVzdF9wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsaW5lLmV4cGVjdGVkX2JlaGF2aW9yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLnJl
YWRhYmxlX2ZpbGVuYW1lX2FuZF9saW5lX251bWJlcihsaW5lKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGluZS5vcmlnaW5hbF9zdHJpbmcgb3IgJycpKQorCisgICAgZGVm
IF9wcmludF9leHBlY3RhdGlvbnNfZm9yX3N1YnNldChzZWxmLCBkZXZpY2VfdHlwZSwgdGVzdF9j
b2xfd2lkdGgsIHRlc3RzX3RvX3J1biwgdGVzdHNfdG9fc2tpcD1Ob25lKToKICAgICAgICAgZm9y
bWF0X3N0cmluZyA9ICd7ezp7d2lkdGh9fX0ge3t9fSB7e319IHt7fX0nLmZvcm1hdCh3aWR0aD10
ZXN0X2NvbF93aWR0aCkKICAgICAgICAgaWYgdGVzdHNfdG9fc2tpcDoKICAgICAgICAgICAgIHBy
aW50KCcnKQpAQCAtNjcwLDM5ICs3MzIsMjEgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAg
ICAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0YXRpb25fbGluZV9mb3JfdGVzdChmb3JtYXRfc3Ry
aW5nLCB0ZXN0LCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKIAogICAgIGRlZiBwcmludF9leHBl
Y3RhdGlvbnMoc2VsZiwgYXJncyk6Ci0gICAgICAgIGFnZ3JlZ2F0ZV90ZXN0X25hbWVzID0gc2V0
KCkKLSAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1biA9IHNldCgpCi0gICAgICAgIGFnZ3Jl
Z2F0ZV90ZXN0c190b19za2lwID0gc2V0KCkKLSAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2Rldmlj
ZSA9IHt9Ci0KICAgICAgICAgZGV2aWNlX3R5cGVfbGlzdCA9IHNlbGYuX3BvcnQuREVGQVVMVF9E
RVZJQ0VfVFlQRVMgb3IgW3NlbGYuX3BvcnQuREVWSUNFX1RZUEVdCi0gICAgICAgIGZvciBkZXZp
Y2VfdHlwZSBpbiBkZXZpY2VfdHlwZV9saXN0OgotICAgICAgICAgICAgIiIiUnVuIHRoZSB0ZXN0
cyBhbmQgcmV0dXJuIGEgUnVuRGV0YWlscyBvYmplY3Qgd2l0aCB0aGUgcmVzdWx0cy4iIiIKLSAg
ICAgICAgICAgIGZvcl9kZXZpY2VfdHlwZSA9ICdmb3Ige30gJy5mb3JtYXQoZGV2aWNlX3R5cGUp
IGlmIGRldmljZV90eXBlIGVsc2UgJycKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVf
dXBkYXRlKCdDb2xsZWN0aW5nIHRlc3RzIHt9Li4uJy5mb3JtYXQoZm9yX2RldmljZV90eXBlKSkK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwYXRocywgdGVzdHMgPSBzZWxmLl9j
b2xsZWN0X3Rlc3RzKGFyZ3MsIGRldmljZV90eXBlPWRldmljZV90eXBlKQotICAgICAgICAgICAg
ZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBUaGlzIGlzIHJhaXNlZCBpZiAtLXRl
c3QtbGlzdCBkb2Vzbid0IGV4aXN0Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRlc3RfcnVuX3Jl
c3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEpCi0KLSAgICAgICAgICAgIHRlc3RfbmFtZXMg
PSBbdGVzdC50ZXN0X3BhdGggZm9yIHRlc3QgaW4gdGVzdHNdCi0KLSAgICAgICAgICAgIHNlbGYu
X3ByaW50ZXIud3JpdGVfdXBkYXRlKCdQYXJzaW5nIGV4cGVjdGF0aW9ucyB7fS4uLicuZm9ybWF0
KGZvcl9kZXZpY2VfdHlwZSkpCi0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNl
X3R5cGVdID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyhzZWxmLl9wb3J0LCB0
ZXN0X25hbWVzLCBmb3JjZV9leHBlY3RhdGlvbnNfcGFzcz1zZWxmLl9vcHRpb25zLmZvcmNlLCBk
ZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKLSAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9uc1tk
ZXZpY2VfdHlwZV0ucGFyc2VfYWxsX2V4cGVjdGF0aW9ucygpCi0KLSAgICAgICAgICAgIGFnZ3Jl
Z2F0ZV90ZXN0X25hbWVzLnVwZGF0ZSh0ZXN0X25hbWVzKQotICAgICAgICAgICAgdGVzdHNfdG9f
cnVuLCB0ZXN0c190b19za2lwID0gc2VsZi5fcHJlcGFyZV9saXN0cyhwYXRocywgdGVzdF9uYW1l
cywgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCi0gICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdHNf
dG9fc2tpcC51cGRhdGUodGVzdHNfdG9fc2tpcCkKIAotICAgICAgICAgICAgdGVzdHNfdG9fcnVu
X2J5X2RldmljZVtkZXZpY2VfdHlwZV0gPSBbdGVzdCBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4g
aWYgdGVzdCBub3QgaW4gYWdncmVnYXRlX3Rlc3RzX3RvX3J1bl0KLSAgICAgICAgICAgIGFnZ3Jl
Z2F0ZV90ZXN0c190b19ydW4udXBkYXRlKHRlc3RzX3RvX3J1bikKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZSwgYWdncmVnYXRlX3Rlc3RzX3RvX3NraXAg
PSBzZWxmLl9jb2xsZWN0X3Rlc3RzKGFyZ3MsIGRldmljZV90eXBlX2xpc3QpCisgICAgICAgIGV4
Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgIyBUaGlzIGlzIHJhaXNlZCBpZiAtLXRlc3QtbGlz
dCBkb2Vzbid0IGV4aXN0CisgICAgICAgICAgICByZXR1cm4gLTEKIAotICAgICAgICBhZ2dyZWdh
dGVfdGVzdHNfdG9fc2tpcCA9IGFnZ3JlZ2F0ZV90ZXN0c190b19za2lwIC0gYWdncmVnYXRlX3Rl
c3RzX3RvX3J1bgorICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuID0gc2V0KCkKKyAgICAg
ICAgZm9yIHYgaW4gdGVzdHNfdG9fcnVuX2J5X2RldmljZS52YWx1ZXMoKToKKyAgICAgICAgICAg
IGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4udXBkYXRlKHYpCisgICAgICAgIGFnZ3JlZ2F0ZV90ZXN0
cyA9IGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4gfCBhZ2dyZWdhdGVfdGVzdHNfdG9fc2tpcAogCi0g
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZm91bmQobGVuKGFnZ3JlZ2F0ZV90ZXN0X25hbWVz
KSwgbGVuKGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4pLCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNo
LCBzZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMpCi0gICAgICAgIHRlc3RfY29sX3dpZHRoID0gbGVu
KG1heChhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuLnVuaW9uKGFnZ3JlZ2F0ZV90ZXN0c190b19za2lw
KSwga2V5PWxlbikpICsgMQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2ZvdW5kKGxlbihh
Z2dyZWdhdGVfdGVzdHMpLCBsZW4oYWdncmVnYXRlX3Rlc3RzX3RvX3J1biksIHNlbGYuX29wdGlv
bnMucmVwZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucykKKyAgICAgICAgdGVzdF9j
b2xfd2lkdGggPSBtYXgobGVuKHRlc3QudGVzdF9wYXRoKSBmb3IgdGVzdCBpbiBhZ2dyZWdhdGVf
dGVzdHMpICsgMQogCiAgICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGF0aW9uc19mb3Jfc3Vic2V0
KGRldmljZV90eXBlX2xpc3RbMF0sIHRlc3RfY29sX3dpZHRoLCB0ZXN0c190b19ydW5fYnlfZGV2
aWNlW2RldmljZV90eXBlX2xpc3RbMF1dLCBhZ2dyZWdhdGVfdGVzdHNfdG9fc2tpcCkKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdC5weQpp
bmRleCA3ZmVkYTlmMTA0ZDdiZjYzMmYxNDI4MjlmYzUzN2NiMmJjZWQ4M2YyLi5kNTFhNWJmYzcy
ZDcxNjZlYmM4MzJkMzk0OGRkN2Y1ZGMyNmJlZmU3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdC5weQpAQCAtMjcsNTAgKzI3LDE3IEBA
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKIAoraW1wb3J0IGF0dHIKKworCitAYXR0ci5zKGZyb3plbj1UcnVl
KQogY2xhc3MgVGVzdChvYmplY3QpOgogICAgICIiIkRhdGEgYWJvdXQgYSB0ZXN0IGFuZCBpdHMg
ZXhwZWN0YXRpb25zLgogCiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgaW5oZXJlbnRseSBwbGF0Zm9y
bSBzcGVjaWZpYywgYXMgZXhwZWN0YXRpb25zIGFyZSBwbGF0Zm9ybSBzcGVjaWZpYy4iIiIKLQot
ICAgIGRlZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwKLSAgICAgICAgdGVzdF9wYXRoLAotICAg
ICAgICBleHBlY3RlZF90ZXh0X3BhdGg9Tm9uZSwKLSAgICAgICAgZXhwZWN0ZWRfaW1hZ2VfcGF0
aD1Ob25lLAotICAgICAgICBleHBlY3RlZF9jaGVja3N1bV9wYXRoPU5vbmUsCi0gICAgICAgIGV4
cGVjdGVkX2F1ZGlvX3BhdGg9Tm9uZSwKLSAgICAgICAgcmVmZXJlbmNlX2ZpbGVzPU5vbmUsCi0g
ICAgKToKLSAgICAgICAgc2VsZi50ZXN0X3BhdGggPSB0ZXN0X3BhdGgKLSAgICAgICAgc2VsZi5l
eHBlY3RlZF90ZXh0X3BhdGggPSBleHBlY3RlZF90ZXh0X3BhdGgKLSAgICAgICAgc2VsZi5leHBl
Y3RlZF9pbWFnZV9wYXRoID0gZXhwZWN0ZWRfaW1hZ2VfcGF0aAotICAgICAgICBzZWxmLmV4cGVj
dGVkX2NoZWNrc3VtX3BhdGggPSBleHBlY3RlZF9jaGVja3N1bV9wYXRoCi0gICAgICAgIHNlbGYu
ZXhwZWN0ZWRfYXVkaW9fcGF0aCA9IGV4cGVjdGVkX2F1ZGlvX3BhdGgKLSAgICAgICAgc2VsZi5y
ZWZlcmVuY2VfZmlsZXMgPSByZWZlcmVuY2VfZmlsZXMKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAgICJUZXN0KCVyLCAiCi0gICAgICAgICAg
ICAiZXhwZWN0ZWRfdGV4dF9wYXRoPSVyLCAiCi0gICAgICAgICAgICAiZXhwZWN0ZWRfaW1hZ2Vf
cGF0aD0lciwgIgotICAgICAgICAgICAgImV4cGVjdGVkX2NoZWNrc3VtX3BhdGg9JXIsICIKLSAg
ICAgICAgICAgICJleHBlY3RlZF9hdWRpb19wYXRoPSVyLCAiCi0gICAgICAgICAgICAicmVmZXJl
bmNlX2ZpbGVzPSVyKSIKLSAgICAgICAgKSAlICgKLSAgICAgICAgICAgIHNlbGYudGVzdF9wYXRo
LAotICAgICAgICAgICAgc2VsZi5leHBlY3RlZF90ZXh0X3BhdGgsCi0gICAgICAgICAgICBzZWxm
LmV4cGVjdGVkX2ltYWdlX3BhdGgsCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkX2NoZWNrc3Vt
X3BhdGgsCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkX2F1ZGlvX3BhdGgsCi0gICAgICAgICAg
ICBzZWxmLnJlZmVyZW5jZV9maWxlcywKLSAgICAgICAgKQotCi0gICAgZGVmIF9fZXFfXyhzZWxm
LCBvdGhlcik6Ci0gICAgICAgIHJldHVybiAoCi0gICAgICAgICAgICBzZWxmLnRlc3RfcGF0aCA9
PSBvdGhlci50ZXN0X3BhdGgKLSAgICAgICAgICAgIGFuZCBzZWxmLmV4cGVjdGVkX3RleHRfcGF0
aCA9PSBvdGhlci5leHBlY3RlZF90ZXh0X3BhdGgKLSAgICAgICAgICAgIGFuZCBzZWxmLmV4cGVj
dGVkX2ltYWdlX3BhdGggPT0gb3RoZXIuZXhwZWN0ZWRfaW1hZ2VfcGF0aAotICAgICAgICAgICAg
YW5kIHNlbGYuZXhwZWN0ZWRfY2hlY2tzdW1fcGF0aCA9PSBvdGhlci5leHBlY3RlZF9jaGVja3N1
bV9wYXRoCi0gICAgICAgICAgICBhbmQgc2VsZi5leHBlY3RlZF9hdWRpb19wYXRoID09IG90aGVy
LmV4cGVjdGVkX2F1ZGlvX3BhdGgKLSAgICAgICAgICAgIGFuZCBzZWxmLnJlZmVyZW5jZV9maWxl
cyA9PSBvdGhlci5yZWZlcmVuY2VfZmlsZXMKLSAgICAgICAgKQorICAgIHRlc3RfcGF0aCA9IGF0
dHIuaWIodHlwZT1zdHIpCisgICAgZXhwZWN0ZWRfdGV4dF9wYXRoID0gYXR0ci5pYihkZWZhdWx0
PU5vbmUsIHR5cGU9c3RyKQorICAgIGV4cGVjdGVkX2ltYWdlX3BhdGggPSBhdHRyLmliKGRlZmF1
bHQ9Tm9uZSwgdHlwZT1zdHIpCisgICAgZXhwZWN0ZWRfY2hlY2tzdW1fcGF0aCA9IGF0dHIuaWIo
ZGVmYXVsdD1Ob25lLCB0eXBlPXN0cikKKyAgICBleHBlY3RlZF9hdWRpb19wYXRoID0gYXR0ci5p
YihkZWZhdWx0PU5vbmUsIHR5cGU9c3RyKQorICAgIHJlZmVyZW5jZV9maWxlcyA9IGF0dHIuaWIo
ZGVmYXVsdD1Ob25lLCB0eXBlPWxpc3QpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lucHV0LnB5CmluZGV4IDYyZWM4ZTA5OTQ4
MjA0OWYwZDM2MDViZTcwYmMzNmY2MDQ3OTEwNWQuLjlhYjljMGRlNWI4YTFkZTAyZmFlZWQ0ODUy
YzAwOTMzNTc4ZjRhMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL21vZGVscy90ZXN0X2lucHV0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lucHV0LnB5CkBAIC0yOCw2ICsyOCw4IEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIAorZnJvbSAudGVzdCBpbXBvcnQgVGVzdAorCiBjbGFzcyBUZXN0SW5wdXQo
b2JqZWN0KToKICAgICAiIiJJbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QgbmVlZGVkIHRvIHJ1biBp
dC4KIApAQCAtMzUsMTUgKzM3LDI1IEBAIGNsYXNzIFRlc3RJbnB1dChvYmplY3QpOgogICAgIGRl
cml2ZWQgZnJvbSBUZXN0RXhwZWN0YXRpb25zL3Rlc3QgZXhlY3V0aW9uIG9wdGlvbnMgKGUuZy4s
IHRpbWVvdXQpLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfbmFtZSwg
dGltZW91dD1Ob25lLCBuZWVkc19zZXJ2ZXJzPU5vbmUsIHNob3VsZF9kdW1wX2pzY29uc29sZWxv
Z19pbl9zdGRlcnI9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAg
ICAgIHRlc3QsICAjIHR5cGU6IFRlc3QKKyAgICAgICAgICAgICAgICAgdGltZW91dD1Ob25lLCAg
IyB0eXBlOiBVbmlvbltOb25lLCBpbnQsIHN0cl0KKyAgICAgICAgICAgICAgICAgbmVlZHNfc2Vy
dmVycz1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtib29sXQorICAgICAgICAgICAgICAgICBzaG91
bGRfZHVtcF9qc2NvbnNvbGVsb2dfaW5fc3RkZXJyPU5vbmUsICAjIHR5cGU6IE9wdGlvbmFsW2Jv
b2xdCisgICAgICAgICAgICAgICAgICk6CiAgICAgICAgICMgVGVzdElucHV0IG9iamVjdHMgYXJl
IG5vcm1hbGx5IGNvbnN0cnVjdGVkIGJ5IHRoZSBtYW5hZ2VyIGFuZCBwYXNzZWQKICAgICAgICAg
IyB0byB0aGUgd29ya2VycywgYnV0IHRoZXNlIHNvbWUgZmllbGRzIGFyZSBzZXQgbGF6aWx5IGlu
IHRoZSB3b3JrZXJzIHdoZXJlIHBvc3NpYmxlCiAgICAgICAgICMgYmVjYXVzZSB0aGV5IHJlcXVp
cmUgdXMgdG8gbG9vayBhdCB0aGUgZmlsZXN5c3RlbSBhbmQgd2Ugd2FudCB0byBiZSBhYmxlIHRv
IGRvIHRoYXQgaW4gcGFyYWxsZWwuCi0gICAgICAgIHNlbGYudGVzdF9uYW1lID0gdGVzdF9uYW1l
CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHRlc3QsIFRlc3QpCisgICAgICAgIHNlbGYudGVz
dCA9IHRlc3QKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dCAgIyBpbiBtc2Vjczsgc2hv
dWxkIHJlbmFtZSB0aGlzIGZvciBjb25zaXN0ZW5jeQogICAgICAgICBzZWxmLm5lZWRzX3NlcnZl
cnMgPSBuZWVkc19zZXJ2ZXJzCiAgICAgICAgIHNlbGYuc2hvdWxkX2R1bXBfanNjb25zb2xlbG9n
X2luX3N0ZGVyciA9IHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIKICAgICAgICAg
c2VsZi5yZWZlcmVuY2VfZmlsZXMgPSBOb25lCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdGVz
dF9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50ZXN0LnRlc3RfcGF0aAorCiAgICAg
ZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gIlRlc3RJbnB1dCgnJXMnLCB0aW1l
b3V0PSVzLCBuZWVkc19zZXJ2ZXJzPSVzLCByZWZlcmVuY2VfZmlsZXM9JXMsIHNob3VsZF9kdW1w
X2pzY29uc29sZWxvZ19pbl9zdGRlcnI9JXMpIiAlIChzZWxmLnRlc3RfbmFtZSwgc2VsZi50aW1l
b3V0LCBzZWxmLm5lZWRzX3NlcnZlcnMsIHNlbGYucmVmZXJlbmNlX2ZpbGVzLCBzZWxmLnNob3Vs
ZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0cy5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5
CmluZGV4IDJjMjNjMDRlZGYwZWJjMmIzY2FhMWIzNjNjYjkzNTIzMmNlNGRmYmQuLjQ1ZTE4MmZj
ZmZiOTlhZWU4YzRjNTU3M2FkOWE2ODkyOGMwOTNkYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1
bHRzLnB5CkBAIC0xMzEsNyArMTMxLDIyIEBAIGNsYXNzIFRlc3RSdW5SZXN1bHRzKG9iamVjdCk6
CiAgICAgZGVmIG1lcmdlKHNlbGYsIHRlc3RfcnVuX3Jlc3VsdHMpOgogICAgICAgICBpZiBub3Qg
dGVzdF9ydW5fcmVzdWx0czoKICAgICAgICAgICAgIHJldHVybiBzZWxmCisKICAgICAgICAgIyBz
ZWxmLmV4cGVjdGF0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGJvdGgKKyAgICAgICAgaWYg
c2VsZi5leHBlY3RhdGlvbnMgIT0gdGVzdF9ydW5fcmVzdWx0cy5leHBlY3RhdGlvbnM6CisgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkaWZmZXJlbnQgVGVzdEV4cGVjdGF0aW9ucyIpCisK
KyAgICAgICAgZGVmIG1lcmdlX2RpY3Rfc2V0cyhhLCBiKToKKyAgICAgICAgICAgIG1lcmdlZCA9
IHt9CisgICAgICAgICAgICBrZXlzID0gc2V0KGEua2V5cygpKSB8IHNldChiLmtleXMoKSkKKyAg
ICAgICAgICAgIGZvciBrIGluIGtleXM6CisgICAgICAgICAgICAgICAgdl9hID0gYS5nZXQoaywg
c2V0KCkpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uodl9hLCBzZXQpCisgICAg
ICAgICAgICAgICAgdl9iID0gYi5nZXQoaywgc2V0KCkpCisgICAgICAgICAgICAgICAgYXNzZXJ0
IGlzaW5zdGFuY2Uodl9iLCBzZXQpCisgICAgICAgICAgICAgICAgbWVyZ2VkW2tdID0gdl9hIHwg
dl9iCisgICAgICAgICAgICByZXR1cm4gbWVyZ2VkCisKICAgICAgICAgc2VsZi50b3RhbCArPSB0
ZXN0X3J1bl9yZXN1bHRzLnRvdGFsCiAgICAgICAgIHNlbGYucmVtYWluaW5nICs9IHRlc3RfcnVu
X3Jlc3VsdHMucmVtYWluaW5nCiAgICAgICAgIHNlbGYuZXhwZWN0ZWQgKz0gdGVzdF9ydW5fcmVz
dWx0cy5leHBlY3RlZApAQCAtMTM5LDE2ICsxNTQsMTQgQEAgY2xhc3MgVGVzdFJ1blJlc3VsdHMo
b2JqZWN0KToKICAgICAgICAgc2VsZi51bmV4cGVjdGVkX2ZhaWx1cmVzICs9IHRlc3RfcnVuX3Jl
c3VsdHMudW5leHBlY3RlZF9mYWlsdXJlcwogICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfY3Jhc2hl
cyArPSB0ZXN0X3J1bl9yZXN1bHRzLnVuZXhwZWN0ZWRfY3Jhc2hlcwogICAgICAgICBzZWxmLnVu
ZXhwZWN0ZWRfdGltZW91dHMgKz0gdGVzdF9ydW5fcmVzdWx0cy51bmV4cGVjdGVkX3RpbWVvdXRz
Ci0gICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb24udXBkYXRlKHRlc3RfcnVuX3Jlc3Vs
dHMudGVzdHNfYnlfZXhwZWN0YXRpb24pCi0gICAgICAgIHNlbGYudGVzdHNfYnlfdGltZWxpbmUu
dXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlfdGltZWxpbmUpCisgICAgICAgIHNlbGYu
dGVzdHNfYnlfZXhwZWN0YXRpb24gPSBtZXJnZV9kaWN0X3NldHMoc2VsZi50ZXN0c19ieV9leHBl
Y3RhdGlvbiwgdGVzdF9ydW5fcmVzdWx0cy50ZXN0c19ieV9leHBlY3RhdGlvbikKKyAgICAgICAg
c2VsZi50ZXN0c19ieV90aW1lbGluZSA9IG1lcmdlX2RpY3Rfc2V0cyhzZWxmLnRlc3RzX2J5X3Rp
bWVsaW5lLCB0ZXN0X3J1bl9yZXN1bHRzLnRlc3RzX2J5X3RpbWVsaW5lKQogICAgICAgICBzZWxm
LnJlc3VsdHNfYnlfbmFtZS51cGRhdGUodGVzdF9ydW5fcmVzdWx0cy5yZXN1bHRzX2J5X25hbWUp
CiAgICAgICAgIHNlbGYuYWxsX3Jlc3VsdHMgKz0gdGVzdF9ydW5fcmVzdWx0cy5hbGxfcmVzdWx0
cwogICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1lLnVwZGF0ZSh0ZXN0X3J1
bl9yZXN1bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1lKQogICAgICAgICBzZWxmLmZhaWx1
cmVzX2J5X25hbWUudXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMuZmFpbHVyZXNfYnlfbmFtZSkKICAg
ICAgICAgc2VsZi50b3RhbF9mYWlsdXJlcyArPSB0ZXN0X3J1bl9yZXN1bHRzLnRvdGFsX2ZhaWx1
cmVzCiAgICAgICAgIHNlbGYuZXhwZWN0ZWRfc2tpcHMgKz0gdGVzdF9ydW5fcmVzdWx0cy5leHBl
Y3RlZF9za2lwcwotICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVjdGF0aW9uLnVwZGF0ZSh0ZXN0
X3J1bl9yZXN1bHRzLnRlc3RzX2J5X2V4cGVjdGF0aW9uKQotICAgICAgICBzZWxmLnRlc3RzX2J5
X3RpbWVsaW5lLnVwZGF0ZSh0ZXN0X3J1bl9yZXN1bHRzLnRlc3RzX2J5X3RpbWVsaW5lKQogICAg
ICAgICBzZWxmLnNsb3dfdGVzdHMudXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMuc2xvd190ZXN0cykK
IAogICAgICAgICBzZWxmLmludGVycnVwdGVkIHw9IHRlc3RfcnVuX3Jlc3VsdHMuaW50ZXJydXB0
ZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425516</attachid>
            <date>2021-04-08 10:26:34 -0700</date>
            <delta_ts>2021-04-09 05:49:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224329-20210408182633.patch</filename>
            <type>text/plain</type>
            <size>35194</size>
            <attacher name="Sam Sneddon [:gsnedders]">gsnedders</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjU3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTdkNGZjNjg1ODAwNTg2YjZmYTJkYjRhNWI5YWMzNTZj
MmZiMTA1Yi4uMjY3MmIxNzU3N2RkYTkyYjczMGQ3NDAwZmJlMjkxMWY1Mzc3YWFlMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDIxLTA0LTA4ICBTYW0gU25lZGRvbiAgPGdzbmVkZGVyc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFrZSBUZXN0SW5wdXQgdGFrZSBhIFRlc3Qgb2JqZWN0LCBub3QgYSBwYXRoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weToKKyAg
ICAgICAgKExheW91dFRlc3RSdW5uZXIuX19pbml0X18pOiBEb24ndCBwYXNzIHRlc3RzIHRvIHNr
aXAgaGVyZSwgYXMgdGhleSBhcm5lJ3QgcnVuLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lcl91bml0dGVzdC5weToK
KyAgICAgICAgKExheW91dFRlc3RSdW5uZXJUZXN0cy5fcnVuX3Rlc3RzKTogVGVzdElucHV0IGV4
cGVjdHMgYSBUZXN0LgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lclRlc3RzLnRlc3RfaW50ZXJy
dXB0X2lmX2F0X2ZhaWx1cmVfbGltaXRzKTogVGVzdElucHV0IGV4cGVjdHMgYSBUZXN0LgorICAg
ICAgICAoU2hhcmRlclRlc3RzLmdldF90ZXN0X2lucHV0KTogVGVzdElucHV0IGV4cGVjdHMgYSBU
ZXN0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLl9jb2xsZWN0X3Rlc3RzKToKKyAgICAgICAg
TW92ZSBkdXBsaWNhdGVkIGNvZGUgZnJvbSBNYW5hZ2VyLnJ1biBhbmQgTWFuYWdlci5wcmludF9l
eHBlY3RhdGlvbnMgaGVyZS4KKyAgICAgICAgKE1hbmFnZXIuX3Rlc3RzX3RvX3J1bik6CisgICAg
ICAgIFJlbmFtZWQgZnJvbSBNYW5hZ2VyLl9wcmVwYXJlX2xpc3RzOyBub3cganVzdCBnaXZlcyB0
ZXN0cyB0byBydW4uCisgICAgICAgIChNYW5hZ2VyLl90ZXN0X2lucHV0X2Zvcl9maWxlKTogTm93
IHRha2VzIGEgVGVzdCwgbm90IGEgc3RyLgorICAgICAgICAoTWFuYWdlci5ydW4pOgorICAgICAg
ICBMYXJnZWx5IGp1c3QgY2hhbmdlIGZvciBNYW5hZ2VyLl9jb2xsZWN0X3Rlc3RzLCBhbHNvIHJl
bmFtaW5nIHRoZSBzZXRzIHRvIG1hdGNoIHRoZWlyCisgICAgICAgIGNsZWFyZXIgbmFtZXMgaW4g
cHJpbnRfZXhwZWN0YXRpb25zLgorICAgICAgICBBZGRpdGlvbmFsbHksIG5vdyBnZW5lcmF0ZSBz
a2lwIHJlc3VsdHMgaGVyZSwgYXMgdGhleSBhcmVuJ3QgdG8gZG8gd2l0aCBhY3R1YWxseSBydW5u
aW5nCisgICAgICAgIHRlc3RzLCB0aGV5J3JlIGFib3V0IHRlc3Qgc2VsZWN0aW9uLgorICAgICAg
ICAoTWFuYWdlci5fcnVuX3Rlc3Rfc3Vic2V0KTogU3RvcCBwYXNzaW5nIHRlc3RzX3RvX3NraXAs
IHBlciBhYm92ZS4KKyAgICAgICAgKE1hbmFnZXIuX3J1bl90ZXN0cyk6IFN0b3AgcGFzc2luZyB0
ZXN0c190b19za2lwLCBwZXIgYWJvdmUuCisgICAgICAgIChNYW5hZ2VyLl9wcmludF9leHBlY3Rh
dGlvbl9saW5lX2Zvcl90ZXN0KTogVGFrZSBhIFRlc3QsIG5vdCBhIHN0ci4KKyAgICAgICAgKE1h
bmFnZXIucHJpbnRfZXhwZWN0YXRpb25zKTogTGFyZ2VseSBjaGFuZ2UgZm9yIE1hbmFnZXIuX2Nv
bGxlY3RfdGVzdHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9k
ZWxzL3Rlc3QucHk6CisgICAgICAgIChUZXN0KTogVXNlIGF0dHJzIHRvIGF2b2lkIGhhdmluZyB0
byBkZWZpbmUgY21wLCBoYXNoLCByZXByLCBldGMuCisgICAgICAgIChUZXN0Ll9faW5pdF9fKTog
RGVsZXRlZC4KKyAgICAgICAgKFRlc3QuX19yZXByX18pOiBEZWxldGVkLgorICAgICAgICAoVGVz
dC5fX2VxX18pOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X2lucHV0LnB5OgorICAgICAgICAoVGVzdElucHV0Ll9faW5pdF9fKTog
VGFrZSBhIFRlc3QsIG5vdCBhIHN0ci4KKyAgICAgICAgKFRlc3RJbnB1dC50ZXN0X25hbWUpOiBN
YWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggY29kZSByZWFkaW5nIFRlc3RJbnB1dC50ZXN0X25h
bWUgZm9yIG5vdy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2Rl
bHMvdGVzdF9ydW5fcmVzdWx0cy5weToKKyAgICAgICAgKFRlc3RSdW5SZXN1bHRzLm1lcmdlKTog
Rml4IG1lcmdpbmcgb2YgZGljdHMtb2Ytc2V0cywgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgdGhl
IHNldHMuCisgICAgICAgIChUZXN0UnVuUmVzdWx0cy5tZXJnZS5tZXJnZV9kaWN0X3NldHMpOiBJ
bXBsZW1lbnQgdGhlIG1lcmdpbmcuCisKIDIwMjEtMDQtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBTRnJhbWUgaW1wbGVtZW50YXRpb24gdG8g
bGF0ZXN0IHZlcnNpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weQpp
bmRleCBiYWRkNWNmMWViZTg0ZjAxYzlhODYyOTI0ZmNjMDdjMWQ2MTc4YWIwLi4yZTYwYjMxMmRl
NmVjOGIyM2I3MzcyYTdjNzI1ZjY3MTU4Y2Q2NmVjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5
b3V0X3Rlc3RfcnVubmVyLnB5CkBAIC05Miw3ICs5Miw3IEBAIGNsYXNzIExheW91dFRlc3RSdW5u
ZXIob2JqZWN0KToKICAgICAgICAgYWxsX3NoYXJkcyA9IHNlbGYuX3NoYXJkZXIuc2hhcmRfdGVz
dHModGVzdF9pbnB1dHMsIGNoaWxkX3Byb2Nlc3NfY291bnQsIHNlbGYuX29wdGlvbnMuZnVsbHlf
cGFyYWxsZWwpCiAgICAgICAgIHJldHVybiBtaW4oY2hpbGRfcHJvY2Vzc19jb3VudCwgbGVuKGFs
bF9zaGFyZHMpKQogCi0gICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBleHBlY3RhdGlvbnMsIHRlc3Rf
aW5wdXRzLCB0ZXN0c190b19za2lwLCBudW1fd29ya2VycywgcmV0cnlpbmcsIGRldmljZV90eXBl
PU5vbmUpOgorICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgZXhwZWN0YXRpb25zLCB0ZXN0X2lucHV0
cywgbnVtX3dvcmtlcnMsIHJldHJ5aW5nLCBkZXZpY2VfdHlwZT1Ob25lKToKICAgICAgICAgc2Vs
Zi5fZXhwZWN0YXRpb25zID0gZXhwZWN0YXRpb25zCiAgICAgICAgIHNlbGYuX3Rlc3RfaW5wdXRz
ID0gW10KICAgICAgICAgZm9yIHRlc3RfaW5wdXQgaW4gdGVzdF9pbnB1dHM6CkBAIC0xMDIsNyAr
MTAyLDcgQEAgY2xhc3MgTGF5b3V0VGVzdFJ1bm5lcihvYmplY3QpOgogICAgICAgICBzZWxmLl9y
ZXRyeWluZyA9IHJldHJ5aW5nCiAKICAgICAgICAgIyBGSVhNRTogcmVuYW1lIGFsbCB2YXJpYWJs
ZXMgdG8gdGVzdF9ydW5fcmVzdWx0cyBvciBzb21lIHN1Y2ggLi4uCi0gICAgICAgIHJ1bl9yZXN1
bHRzID0gVGVzdFJ1blJlc3VsdHMoc2VsZi5fZXhwZWN0YXRpb25zLCBsZW4odGVzdF9pbnB1dHMp
ICsgbGVuKHRlc3RzX3RvX3NraXApKQorICAgICAgICBydW5fcmVzdWx0cyA9IFRlc3RSdW5SZXN1
bHRzKHNlbGYuX2V4cGVjdGF0aW9ucywgbGVuKHRlc3RfaW5wdXRzKSkKICAgICAgICAgc2VsZi5f
Y3VycmVudF9ydW5fcmVzdWx0cyA9IHJ1bl9yZXN1bHRzCiAgICAgICAgIHNlbGYuX3ByaW50ZXIu
bnVtX3Rlc3RzID0gbGVuKHRlc3RfaW5wdXRzKQogICAgICAgICBzZWxmLl9wcmludGVyLm51bV9z
dGFydGVkID0gMApAQCAtMTEwLDExICsxMTAsNiBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9i
amVjdCk6CiAgICAgICAgIGlmIG5vdCByZXRyeWluZzoKICAgICAgICAgICAgIHNlbGYuX3ByaW50
ZXIucHJpbnRfZXhwZWN0ZWQocnVuX3Jlc3VsdHMsIHNlbGYuX2V4cGVjdGF0aW9ucy5tb2RlbCgp
LmdldF90ZXN0c193aXRoX3Jlc3VsdF90eXBlKQogCi0gICAgICAgIGZvciB0ZXN0X25hbWUgaW4g
c2V0KHRlc3RzX3RvX3NraXApOgotICAgICAgICAgICAgcmVzdWx0ID0gdGVzdF9yZXN1bHRzLlRl
c3RSZXN1bHQodGVzdF9uYW1lKQotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSB0ZXN0X2V4cGVj
dGF0aW9ucy5TS0lQCi0gICAgICAgICAgICBydW5fcmVzdWx0cy5hZGQocmVzdWx0LCBleHBlY3Rl
ZD1UcnVlLCB0ZXN0X2lzX3Nsb3c9c2VsZi5fdGVzdF9pc19zbG93KHRlc3RfbmFtZSkpCi0KICAg
ICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoJ1NoYXJkaW5nIHRlc3RzIC4uLicpCiAg
ICAgICAgIGFsbF9zaGFyZHMgPSBzZWxmLl9zaGFyZGVyLnNoYXJkX3Rlc3RzKHRlc3RfaW5wdXRz
LCBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCBzZWxmLl9vcHRpb25zLmZ1bGx5
X3BhcmFsbGVsKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXJfdW5pdHRlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5u
ZXJfdW5pdHRlc3QucHkKaW5kZXggYjgwY2E0NTQ4NWEzMjk0ZDAyZTI0NTVlNWVmM2RmYzE3NDNk
MTg5Zi4uMGYyNzIxYzkyZTk0ZGFhNTQ3OTE3YzU1OGE2M2QyNDdhOWRlZWQ3MCAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0
X3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lcl91bml0dGVzdC5weQpAQCAt
MzUsOSArMzUsMTAgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJr
aXRfdGVzdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLmxheW91dF90
ZXN0X3J1bm5lciBpbXBvcnQgTGF5b3V0VGVzdFJ1bm5lciwgU2hhcmRlciwgVGVzdFJ1bkludGVy
cnVwdGVkRXhjZXB0aW9uCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0
IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1w
b3J0IHRlc3RfZmFpbHVyZXMKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0
X3J1bl9yZXN1bHRzIGltcG9ydCBUZXN0UnVuUmVzdWx0cworZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubW9kZWxzLnRlc3QgaW1wb3J0IFRlc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
Lm1vZGVscy50ZXN0X2lucHV0IGltcG9ydCBUZXN0SW5wdXQKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLm1vZGVscy50ZXN0X3Jlc3VsdHMgaW1wb3J0IFRlc3RSZXN1bHQKK2Zyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X3J1bl9yZXN1bHRzIGltcG9ydCBUZXN0UnVuUmVz
dWx0cwogZnJvbSB3ZWJraXRweS5wb3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0CiAKIApAQCAtODEs
MTAgKzgyLDEwIEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIHJldHVybiBMYXlvdXRUZXN0UnVubmVyKG9wdGlvbnMsIHBvcnQsIEZha2VQ
cmludGVyKCksIHBvcnQucmVzdWx0c19kaXJlY3RvcnkoKSwgbGFtYmRhIHRlc3RfbmFtZTogRmFs
c2UpCiAKICAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCBydW5uZXIsIHRlc3RzKToKLSAgICAgICAg
dGVzdF9pbnB1dHMgPSBbVGVzdElucHV0KHRlc3QsIDYwMDApIGZvciB0ZXN0IGluIHRlc3RzXQor
ICAgICAgICB0ZXN0X2lucHV0cyA9IFtUZXN0SW5wdXQoVGVzdCh0ZXN0KSwgNjAwMCkgZm9yIHRl
c3QgaW4gdGVzdHNdCiAgICAgICAgIGV4cGVjdGF0aW9ucyA9IFRlc3RFeHBlY3RhdGlvbnMocnVu
bmVyLl9wb3J0LCB0ZXN0cykKICAgICAgICAgZXhwZWN0YXRpb25zLnBhcnNlX2FsbF9leHBlY3Rh
dGlvbnMoKQotICAgICAgICBydW5uZXIucnVuX3Rlc3RzKGV4cGVjdGF0aW9ucywgdGVzdF9pbnB1
dHMsIHNldCgpLAorICAgICAgICBydW5uZXIucnVuX3Rlc3RzKGV4cGVjdGF0aW9ucywgdGVzdF9p
bnB1dHMsCiAgICAgICAgICAgICBudW1fd29ya2Vycz0xLCBuZWVkc19odHRwPWFueSgnaHR0cCcg
aW4gdGVzdCBmb3IgdGVzdCBpbiB0ZXN0cyksIG5lZWRzX3dlYnNvY2tldHM9YW55KFsnd2Vic29j
a2V0JyBpbiB0ZXN0IGZvciB0ZXN0IGluIHRlc3RzXSksIG5lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0
X3NlcnZlcj1hbnkoWydpbXBvcnRlZC93M2MnIGluIHRlc3QgZm9yIHRlc3QgaW4gdGVzdHNdKSwg
cmV0cnlpbmc9RmFsc2UpCiAKICAgICBkZWYgdGVzdF9pbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9s
aW1pdHMoc2VsZik6CkBAIC05Miw3ICs5Myw3IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXJUZXN0
cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHJ1bm5lci5fb3B0aW9ucy5leGl0X2FmdGVy
X25fZmFpbHVyZXMgPSBOb25lCiAgICAgICAgIHJ1bm5lci5fb3B0aW9ucy5leGl0X2FmdGVyX25f
Y3Jhc2hlc19vcl90aW1lcyA9IE5vbmUKICAgICAgICAgdGVzdF9uYW1lcyA9IFsncGFzc2VzL3Rl
eHQuaHRtbCcsICdwYXNzZXMvaW1hZ2UuaHRtbCddCi0gICAgICAgIHJ1bm5lci5fdGVzdF9pbnB1
dHMgPSBbVGVzdElucHV0KHRlc3RfbmFtZSwgNjAwMCkgZm9yIHRlc3RfbmFtZSBpbiB0ZXN0X25h
bWVzXQorICAgICAgICBydW5uZXIuX3Rlc3RfaW5wdXRzID0gW1Rlc3RJbnB1dChUZXN0KHRlc3Rf
bmFtZSksIDYwMDApIGZvciB0ZXN0X25hbWUgaW4gdGVzdF9uYW1lc10KIAogICAgICAgICBleHBl
Y3RhdGlvbnMgPSBUZXN0RXhwZWN0YXRpb25zKHJ1bm5lci5fcG9ydCwgdGVzdF9uYW1lcykKICAg
ICAgICAgZXhwZWN0YXRpb25zLnBhcnNlX2FsbF9leHBlY3RhdGlvbnMoKQpAQCAtMjYxLDcgKzI2
Miw3IEBAIGNsYXNzIFNoYXJkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgXQogCiAg
ICAgZGVmIGdldF90ZXN0X2lucHV0KHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJldHVybiBU
ZXN0SW5wdXQodGVzdF9maWxlLCBuZWVkc19zZXJ2ZXJzPSh0ZXN0X2ZpbGUuc3RhcnRzd2l0aCgn
aHR0cCcpKSkKKyAgICAgICAgcmV0dXJuIFRlc3RJbnB1dChUZXN0KHRlc3RfZmlsZSksIG5lZWRz
X3NlcnZlcnM9KHRlc3RfZmlsZS5zdGFydHN3aXRoKCdodHRwJykpKQogCiAgICAgZGVmIGdldF9z
aGFyZHMoc2VsZiwgbnVtX3dvcmtlcnMsIGZ1bGx5X3BhcmFsbGVsLCB0ZXN0X2xpc3Q9Tm9uZSk6
CiAgICAgICAgIHBvcnQgPSBUZXN0UG9ydChNb2NrU3lzdGVtSG9zdCgpKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFn
ZXIucHkKaW5kZXggMDgwZjQzNDAxYmQ5YjgwZjIyOGNlZDFiZDI5MTMzZDhlNTVmZGY4MS4uZTBj
N2RjYmNiMGU3OTE4YTFmMTA1ODRjNmY4OTczZTViYmQyNjkyMCAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
LnB5CkBAIC01NSw3ICs1NSw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBp
bXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGlt
cG9ydCB0ZXN0X3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBv
cnQgdGVzdF9ydW5fcmVzdWx0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRl
c3RfaW5wdXQgaW1wb3J0IFRlc3RJbnB1dAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9k
ZWxzLnRlc3RfcnVuX3Jlc3VsdHMgaW1wb3J0IElOVEVSUlVQVEVEX0VYSVRfU1RBVFVTCitmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9ydW5fcmVzdWx0cyBpbXBvcnQgSU5U
RVJSVVBURURfRVhJVF9TVEFUVVMsIFRlc3RSdW5SZXN1bHRzCiBmcm9tIHdlYmtpdHB5LnRvb2wu
Z3JhbW1hciBpbXBvcnQgcGx1cmFsaXplCiBmcm9tIHdlYmtpdHB5LnJlc3VsdHMudXBsb2FkIGlt
cG9ydCBVcGxvYWQKIGZyb20gd2Via2l0cHkueGNvZGUuZGV2aWNlX3R5cGUgaW1wb3J0IERldmlj
ZVR5cGUKQEAgLTk0LDggKzk0LDM4IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAg
dGVzdF9vcHRpb25zX2pzb25fcGF0aCA9IHNlbGYuX3BvcnQucGF0aF9mcm9tX3dlYmtpdF9iYXNl
KHNlbGYuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwgInRlc3RzLW9wdGlvbnMuanNvbiIpCiAgICAg
ICAgIHNlbGYuX3Rlc3RzX29wdGlvbnMgPSBqc29uLmxvYWRzKHNlbGYuX2ZpbGVzeXN0ZW0ucmVh
ZF90ZXh0X2ZpbGUodGVzdF9vcHRpb25zX2pzb25fcGF0aCkpIGlmIHNlbGYuX2ZpbGVzeXN0ZW0u
ZXhpc3RzKHRlc3Rfb3B0aW9uc19qc29uX3BhdGgpIGVsc2Uge30KIAotICAgIGRlZiBfY29sbGVj
dF90ZXN0cyhzZWxmLCBhcmdzLCBkZXZpY2VfdHlwZT1Ob25lKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX2ZpbmRlci5maW5kX3Rlc3RzKHNlbGYuX29wdGlvbnMsIGFyZ3MsIGRldmljZV90eXBlPWRl
dmljZV90eXBlKQorICAgIGRlZiBfY29sbGVjdF90ZXN0cyhzZWxmLAorICAgICAgICAgICAgICAg
ICAgICAgICBhcmdzLCAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICAgICAgICAgICAgICAgICAgICAg
ZGV2aWNlX3R5cGVfbGlzdD1bTm9uZV0sICAjIHR5cGU6IExpc3RbT3B0aW9uYWxbRGV2aWNlVHlw
ZV1dCisgICAgICAgICAgICAgICAgICAgICAgICk6CisgICAgICAgIGFnZ3JlZ2F0ZV90ZXN0cyA9
IHNldCgpICAjIHR5cGU6IFNldFtUZXN0XQorICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVu
ID0gc2V0KCkgICMgdHlwZTogU2V0W1Rlc3RdCisgICAgICAgIHRlc3RzX3RvX3J1bl9ieV9kZXZp
Y2UgPSB7fSAgIyB0eXBlOiBEaWN0W09wdGlvbmFsW0RldmljZVR5cGVdLCBMaXN0W1Rlc3RdXQor
CisgICAgICAgIGRldmljZV90eXBlX2xpc3QgPSBzZWxmLl9wb3J0LnN1cHBvcnRlZF9kZXZpY2Vf
dHlwZXMoKQorICAgICAgICBmb3IgZGV2aWNlX3R5cGUgaW4gZGV2aWNlX3R5cGVfbGlzdDoKKyAg
ICAgICAgICAgIGZvcl9kZXZpY2VfdHlwZSA9IHUnZm9yIHt9ICcuZm9ybWF0KGRldmljZV90eXBl
KSBpZiBkZXZpY2VfdHlwZSBlbHNlICcnCisgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRl
X3VwZGF0ZSh1J0NvbGxlY3RpbmcgdGVzdHMge30uLi4nLmZvcm1hdChmb3JfZGV2aWNlX3R5cGUp
KQorICAgICAgICAgICAgcGF0aHMsIHRlc3RzID0gc2VsZi5fZmluZGVyLmZpbmRfdGVzdHMoc2Vs
Zi5fb3B0aW9ucywgYXJncywgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCisgICAgICAgICAgICBh
Z2dyZWdhdGVfdGVzdHMudXBkYXRlKHRlc3RzKQorCisgICAgICAgICAgICB0ZXN0c19ieV9wYXRo
ID0gZGVmYXVsdGRpY3Qoc2V0KSAgIyB0eXBlOiBEaWN0W3N0ciwgU2V0W1Rlc3RdXQorICAgICAg
ICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6CisgICAgICAgICAgICAgICAgdGVzdHNfYnlfcGF0aFt0
ZXN0LnRlc3RfcGF0aF0uYWRkKHRlc3QpCisKKyAgICAgICAgICAgIHRlc3RfbmFtZXMgPSBbdGVz
dC50ZXN0X3BhdGggZm9yIHRlc3QgaW4gdGVzdHNdCisKKyAgICAgICAgICAgIHNlbGYuX3ByaW50
ZXIud3JpdGVfdXBkYXRlKHUnUGFyc2luZyBleHBlY3RhdGlvbnMge30uLi4nLmZvcm1hdChmb3Jf
ZGV2aWNlX3R5cGUpKQorICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zW2RldmljZV90eXBl
XSA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoc2VsZi5fcG9ydCwgdGVzdF9u
YW1lcywgZm9yY2VfZXhwZWN0YXRpb25zX3Bhc3M9c2VsZi5fb3B0aW9ucy5mb3JjZSwgZGV2aWNl
X3R5cGU9ZGV2aWNlX3R5cGUpCisgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNl
X3R5cGVdLnBhcnNlX2FsbF9leHBlY3RhdGlvbnMoKQorCisgICAgICAgICAgICB0ZXN0c190b19y
dW4gPSBzZWxmLl90ZXN0c190b19ydW4odGVzdHMsIHRlc3RzX2J5X3BhdGgsIGRldmljZV90eXBl
PWRldmljZV90eXBlKQorICAgICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZVtkZXZpY2Vf
dHlwZV0gPSBbdGVzdCBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4gaWYgdGVzdCBub3QgaW4gYWdn
cmVnYXRlX3Rlc3RzX3RvX3J1bl0KKyAgICAgICAgICAgIGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4u
dXBkYXRlKHRlc3RzX3RvX3J1bl9ieV9kZXZpY2VbZGV2aWNlX3R5cGVdKQorCisgICAgICAgIGFn
Z3JlZ2F0ZV90ZXN0c190b19za2lwID0gYWdncmVnYXRlX3Rlc3RzIC0gYWdncmVnYXRlX3Rlc3Rz
X3RvX3J1bgorCisgICAgICAgIHJldHVybiB0ZXN0c190b19ydW5fYnlfZGV2aWNlLCBhZ2dyZWdh
dGVfdGVzdHNfdG9fc2tpcAogCiAgICAgZGVmIF9pc19odHRwX3Rlc3Qoc2VsZiwgdGVzdCk6CiAg
ICAgICAgIHJldHVybiBzZWxmLkhUVFBfU1VCRElSIGluIHRlc3Qgb3Igc2VsZi5faXNfd2Vic29j
a2V0X3Rlc3QodGVzdCkgb3Igc2VsZi5fbmVlZHNfd2ViX3BsYXRmb3JtX3Rlc3QodGVzdCkKQEAg
LTE4NywyOCArMjE3LDM4IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKIAogICAgICAgICByZXR1
cm4gKHRlc3RzX3RvX3J1biwgc2V0KHRlc3RfbmFtZXMpIC0gc2V0KHRlc3RzX3RvX3J1bikpCiAK
LSAgICBkZWYgX3ByZXBhcmVfbGlzdHMoc2VsZiwgcGF0aHMsIHRlc3RfbmFtZXMsIGRldmljZV90
eXBlPU5vbmUpOgotICAgICAgICB0ZXN0c190b19za2lwID0gc2VsZi5fc2tpcF90ZXN0cyh0ZXN0
X25hbWVzLCBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLCBzZWxmLl9odHRwX3Rlc3Rz
KHRlc3RfbmFtZXMpKQotICAgICAgICB0ZXN0c190b19ydW4gPSBbdGVzdCBmb3IgdGVzdCBpbiB0
ZXN0X25hbWVzIGlmIHRlc3Qgbm90IGluIHRlc3RzX3RvX3NraXBdCisgICAgZGVmIF90ZXN0c190
b19ydW4oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMsICAjIHR5cGU6IExpc3Rb
VGVzdF0KKyAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfYnlfcGF0aCwgICMgdHlwZTogRGlj
dFtzdHIsIFNldFtUZXN0XV0KKyAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX3R5cGU9Tm9u
ZSwgICMgdHlwZTogT3B0aW9uYWxbRGV2aWNlVHlwZV0KKyAgICAgICAgICAgICAgICAgICAgICAg
KToKKyAgICAgICAgdGVzdF9uYW1lcyA9IGxpc3QodGVzdHNfYnlfcGF0aC5rZXlzKCkpCisKKyAg
ICAgICAgdGVzdF9uYW1lc190b19za2lwID0gc2VsZi5fc2tpcF90ZXN0cyh0ZXN0X25hbWVzLCBz
ZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLCBzZWxmLl9odHRwX3Rlc3RzKHRlc3RfbmFt
ZXMpKQorCisgICAgICAgIHRlc3RzX3RvX3NraXAgPSBzZXQoKSAgIyB0eXBlOiBTZXRbVGVzdF0K
KyAgICAgICAgZm9yIHRlc3RfbmFtZV90b19za2lwIGluIHRlc3RfbmFtZXNfdG9fc2tpcDoKKyAg
ICAgICAgICAgIHRlc3RzX3RvX3NraXAudXBkYXRlKHRlc3RzX2J5X3BhdGhbdGVzdF9uYW1lX3Rv
X3NraXBdKQorCisgICAgICAgIHRlc3RzX3RvX3J1biA9IFt0ZXN0IGZvciB0ZXN0IGluIHRlc3Rz
IGlmIHRlc3Qgbm90IGluIHRlc3RzX3RvX3NraXBdCiAKICAgICAgICAgIyBDcmVhdGUgYSBzb3J0
ZWQgbGlzdCBvZiB0ZXN0IGZpbGVzIHNvIHRoZSBzdWJzZXQgY2h1bmssCiAgICAgICAgICMgaWYg
dXNlZCwgY29udGFpbnMgYWxwaGFiZXRpY2FsbHkgY29uc2VjdXRpdmUgdGVzdHMuCiAgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMub3JkZXIgPT0gJ25hdHVyYWwnOgotICAgICAgICAgICAgdGVzdHNf
dG9fcnVuLnNvcnQoa2V5PXNlbGYuX3BvcnQudGVzdF9rZXkpCisgICAgICAgICAgICB0ZXN0c190
b19ydW4uc29ydChrZXk9bGFtYmRhIHg6IHNlbGYuX3BvcnQudGVzdF9rZXkoeC50ZXN0X3BhdGgp
KQogICAgICAgICBlbGlmIHNlbGYuX29wdGlvbnMub3JkZXIgPT0gJ3JhbmRvbSc6CiAgICAgICAg
ICAgICByYW5kb20uc2h1ZmZsZSh0ZXN0c190b19ydW4pCiAKICAgICAgICAgdGVzdHNfdG9fcnVu
LCB0ZXN0c19pbl9vdGhlcl9jaHVua3MgPSBzZWxmLl9zcGxpdF9pbnRvX2NodW5rcyh0ZXN0c190
b19ydW4pCi0gICAgICAgIHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0uYWRkX3NraXBw
ZWRfdGVzdHModGVzdHNfaW5fb3RoZXJfY2h1bmtzKQotICAgICAgICB0ZXN0c190b19za2lwLnVw
ZGF0ZSh0ZXN0c19pbl9vdGhlcl9jaHVua3MpCisgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9uc1tk
ZXZpY2VfdHlwZV0uYWRkX3NraXBwZWRfdGVzdHMoe3Rlc3QudGVzdF9wYXRoIGZvciB0ZXN0IGlu
IHRlc3RzX2luX290aGVyX2NodW5rc30pCiAKLSAgICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1biwg
dGVzdHNfdG9fc2tpcAorICAgICAgICByZXR1cm4gdGVzdHNfdG9fcnVuCiAKICAgICBkZWYgX3Rl
c3RfaW5wdXRfZm9yX2ZpbGUoc2VsZiwgdGVzdF9maWxlLCBkZXZpY2VfdHlwZT1Ob25lKToKICAg
ICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsCi0gICAgICAgICAgICBzZWxmLl9vcHRp
b25zLnNsb3dfdGltZV9vdXRfbXMgaWYgc2VsZi5fdGVzdF9pc19zbG93KHRlc3RfZmlsZSwgZGV2
aWNlX3R5cGU9ZGV2aWNlX3R5cGUpIGVsc2Ugc2VsZi5fb3B0aW9ucy50aW1lX291dF9tcywKLSAg
ICAgICAgICAgIHNlbGYuX2lzX2h0dHBfdGVzdCh0ZXN0X2ZpbGUpLAotICAgICAgICAgICAgc2hv
dWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVycj1zZWxmLl90ZXN0X3Nob3VsZF9kdW1wX2pz
Y29uc29sZWxvZ19pbl9zdGRlcnIodGVzdF9maWxlLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkp
CisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNsb3dfdGltZV9vdXRfbXMgaWYgc2VsZi5fdGVz
dF9pc19zbG93KHRlc3RfZmlsZS50ZXN0X3BhdGgsIGRldmljZV90eXBlPWRldmljZV90eXBlKSBl
bHNlIHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMsCisgICAgICAgICAgICBzZWxmLl9pc19odHRw
X3Rlc3QodGVzdF9maWxlLnRlc3RfcGF0aCksCisgICAgICAgICAgICBzaG91bGRfZHVtcF9qc2Nv
bnNvbGVsb2dfaW5fc3RkZXJyPXNlbGYuX3Rlc3Rfc2hvdWxkX2R1bXBfanNjb25zb2xlbG9nX2lu
X3N0ZGVycih0ZXN0X2ZpbGUudGVzdF9wYXRoLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkpCiAK
ICAgICBkZWYgX3Rlc3RfaXNfc2xvdyhzZWxmLCB0ZXN0X2ZpbGUsIGRldmljZV90eXBlPU5vbmUp
OgogICAgICAgICBpZiBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLm1vZGVsKCkuaGFz
X21vZGlmaWVyKHRlc3RfZmlsZSwgdGVzdF9leHBlY3RhdGlvbnMuU0xPVyk6CkBAIC0yNTYsNTUg
KzI5Niw0NyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICBkZWYgcnVuKHNlbGYsIGFy
Z3MpOgogICAgICAgICBudW1fZmFpbGVkX3VwbG9hZHMgPSAwCi0gICAgICAgIHRvdGFsX3Rlc3Rz
ID0gc2V0KCkKLSAgICAgICAgYWdncmVnYXRlX3Rlc3RfbmFtZXMgPSBzZXQoKQotICAgICAgICBh
Z2dyZWdhdGVfdGVzdHMgPSBzZXQoKQotICAgICAgICB0ZXN0c190b19ydW5fYnlfZGV2aWNlID0g
e30KIAogICAgICAgICBkZXZpY2VfdHlwZV9saXN0ID0gc2VsZi5fcG9ydC5zdXBwb3J0ZWRfZGV2
aWNlX3R5cGVzKCkKLSAgICAgICAgZm9yIGRldmljZV90eXBlIGluIGRldmljZV90eXBlX2xpc3Q6
Ci0gICAgICAgICAgICAiIiJSdW4gdGhlIHRlc3RzIGFuZCByZXR1cm4gYSBSdW5EZXRhaWxzIG9i
amVjdCB3aXRoIHRoZSByZXN1bHRzLiIiIgotICAgICAgICAgICAgZm9yX2RldmljZV90eXBlID0g
dSdmb3Ige30gJy5mb3JtYXQoZGV2aWNlX3R5cGUpIGlmIGRldmljZV90eXBlIGVsc2UgJycKLSAg
ICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKHUnQ29sbGVjdGluZyB0ZXN0cyB7
fS4uLicuZm9ybWF0KGZvcl9kZXZpY2VfdHlwZSkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgcGF0aHMsIHRlc3RzID0gc2VsZi5fY29sbGVjdF90ZXN0cyhhcmdzLCBkZXZpY2Vf
dHlwZT1kZXZpY2VfdHlwZSkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAg
ICAgICAgICMgVGhpcyBpcyByYWlzZWQgaWYgLS10ZXN0LWxpc3QgZG9lc24ndCBleGlzdAotICAg
ICAgICAgICAgICAgIHJldHVybiB0ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhpdF9jb2Rl
PS0xKQotCi0gICAgICAgICAgICB0ZXN0X25hbWVzID0gW3Rlc3QudGVzdF9wYXRoIGZvciB0ZXN0
IGluIHRlc3RzXQotCi0gICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSh1J1Bh
cnNpbmcgZXhwZWN0YXRpb25zIHt9Li4uJy5mb3JtYXQoZm9yX2RldmljZV90eXBlKSkKLSAgICAg
ICAgICAgIHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0gPSB0ZXN0X2V4cGVjdGF0aW9u
cy5UZXN0RXhwZWN0YXRpb25zKHNlbGYuX3BvcnQsIHRlc3RfbmFtZXMsIGZvcmNlX2V4cGVjdGF0
aW9uc19wYXNzPXNlbGYuX29wdGlvbnMuZm9yY2UsIGRldmljZV90eXBlPWRldmljZV90eXBlKQot
ICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zW2RldmljZV90eXBlXS5wYXJzZV9hbGxfZXhw
ZWN0YXRpb25zKCkKLQotICAgICAgICAgICAgYWdncmVnYXRlX3Rlc3RfbmFtZXMudXBkYXRlKHRl
c3RfbmFtZXMpCi0gICAgICAgICAgICB0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAgPSBzZWxm
Ll9wcmVwYXJlX2xpc3RzKHBhdGhzLCB0ZXN0X25hbWVzLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlw
ZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZSwgYWdn
cmVnYXRlX3Rlc3RzX3RvX3NraXAgPSBzZWxmLl9jb2xsZWN0X3Rlc3RzKGFyZ3MsIGRldmljZV90
eXBlX2xpc3QpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgIyBUaGlzIGlz
IHJhaXNlZCBpZiAtLXRlc3QtbGlzdCBkb2Vzbid0IGV4aXN0CisgICAgICAgICAgICByZXR1cm4g
dGVzdF9ydW5fcmVzdWx0cy5SdW5EZXRhaWxzKGV4aXRfY29kZT0tMSkKIAotICAgICAgICAgICAg
dG90YWxfdGVzdHMudXBkYXRlKHRlc3RzX3RvX3J1bikKLSAgICAgICAgICAgIHRvdGFsX3Rlc3Rz
LnVwZGF0ZSh0ZXN0c190b19za2lwKQorICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuID0g
c2V0KCkgICMgdHlwZTogU2V0W1Rlc3RdCisgICAgICAgIGZvciB2IGluIHRlc3RzX3RvX3J1bl9i
eV9kZXZpY2UudmFsdWVzKCk6CisgICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuLnVw
ZGF0ZSh2KQogCi0gICAgICAgICAgICB0ZXN0c190b19ydW5fYnlfZGV2aWNlW2RldmljZV90eXBl
XSA9IFt0ZXN0IGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1biBpZiB0ZXN0IG5vdCBpbiBhZ2dyZWdh
dGVfdGVzdHNdCi0gICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdHMudXBkYXRlKHRlc3RzX3RvX3J1
bikKKyAgICAgICAgc2tpcHBlZF90ZXN0c19ieV9wYXRoID0gZGVmYXVsdGRpY3Qoc2V0KQorICAg
ICAgICBmb3IgdGVzdCBpbiBhZ2dyZWdhdGVfdGVzdHNfdG9fc2tpcDoKKyAgICAgICAgICAgIHNr
aXBwZWRfdGVzdHNfYnlfcGF0aFt0ZXN0LnRlc3RfcGF0aF0uYWRkKHRlc3QpCiAKICAgICAgICAg
IyBJZiBhIHRlc3QgaXMgbWFya2VkIHNraXBwZWQsIGJ1dCB3YXMgZXhwbGljaXRseSByZXF1ZXN0
ZWQsIHJ1biBpdCBhbnl3YXlzCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuc2tpcHBlZCAhPSAn
YWx3YXlzJzoKICAgICAgICAgICAgIGZvciBhcmcgaW4gYXJnczoKLSAgICAgICAgICAgICAgICBp
ZiBhcmcgaW4gdG90YWxfdGVzdHMgYW5kIGFyZyBub3QgaW4gYWdncmVnYXRlX3Rlc3RzOgotICAg
ICAgICAgICAgICAgICAgICB0ZXN0c190b19ydW5fYnlfZGV2aWNlW2RldmljZV90eXBlX2xpc3Rb
MF1dLmFwcGVuZChhcmcpCi0gICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZV90ZXN0cy5hZGQo
YXJnKQotCi0gICAgICAgIHRlc3RzX3RvX3NraXAgPSB0b3RhbF90ZXN0cyAtIGFnZ3JlZ2F0ZV90
ZXN0cwotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2ZvdW5kKGxlbihhZ2dyZWdhdGVfdGVz
dF9uYW1lcyksIGxlbihhZ2dyZWdhdGVfdGVzdHMpLCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNo
LCBzZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMpCisgICAgICAgICAgICAgICAgaWYgYXJnIGluIHNr
aXBwZWRfdGVzdHNfYnlfcGF0aDoKKyAgICAgICAgICAgICAgICAgICAgdGVzdHMgPSBza2lwcGVk
X3Rlc3RzX2J5X3BhdGhbYXJnXQorICAgICAgICAgICAgICAgICAgICB0ZXN0c190b19ydW5fYnlf
ZGV2aWNlW2RldmljZV90eXBlX2xpc3RbMF1dLmV4dGVuZCh0ZXN0cykKKyAgICAgICAgICAgICAg
ICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1biB8PSB0ZXN0cworICAgICAgICAgICAgICAgICAg
ICBhZ2dyZWdhdGVfdGVzdHNfdG9fc2tpcCAtPSB0ZXN0cworICAgICAgICAgICAgICAgICAgICBk
ZWwgc2tpcHBlZF90ZXN0c19ieV9wYXRoW2FyZ10KKworICAgICAgICBhZ2dyZWdhdGVfdGVzdHMg
PSBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuIHwgYWdncmVnYXRlX3Rlc3RzX3RvX3NraXAKKworICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X2ZvdW5kKGxlbihhZ2dyZWdhdGVfdGVzdHMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihhZ2dyZWdhdGVfdGVzdHNfdG9fcnVu
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlcGVh
dF9lYWNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
aXRlcmF0aW9ucykKICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAKICAgICAgICAg
IyBDaGVjayB0byBzZWUgaWYgYWxsIHRlc3RzIHdlIGFyZSBydW5uaW5nIGFyZSBza2lwcGVkLgot
ICAgICAgICBpZiB0ZXN0c190b19za2lwID09IHRvdGFsX3Rlc3RzOgorICAgICAgICBpZiBhZ2dy
ZWdhdGVfdGVzdHMgPT0gYWdncmVnYXRlX3Rlc3RzX3RvX3NraXA6CiAgICAgICAgICAgICBfbG9n
LmVycm9yKCJBbGwgdGVzdHMgc2tpcHBlZC4iKQogICAgICAgICAgICAgcmV0dXJuIHRlc3RfcnVu
X3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9MCwgc2tpcHBlZF9hbGxfdGVzdHM9VHJ1ZSkK
IAogICAgICAgICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIG5vIHRlc3RzIHRvIHJ1biB0
aGF0IGFyZSBub3Qgc2tpcHBlZC4KLSAgICAgICAgaWYgbm90IHN1bShbbGVuKHRlc3RzKSBmb3Ig
dGVzdHMgaW4gaXRlcnZhbHVlcyh0ZXN0c190b19ydW5fYnlfZGV2aWNlKV0pOgorICAgICAgICBp
ZiBub3QgYWdncmVnYXRlX3Rlc3RzX3RvX3J1bjoKICAgICAgICAgICAgIF9sb2cuY3JpdGljYWwo
J05vIHRlc3RzIHRvIHJ1bi4nKQogICAgICAgICAgICAgcmV0dXJuIHRlc3RfcnVuX3Jlc3VsdHMu
UnVuRGV0YWlscyhleGl0X2NvZGU9LTEpCiAKQEAgLTMxOSw5ICszNTEsOSBAQCBjbGFzcyBNYW5h
Z2VyKG9iamVjdCk6CiAgICAgICAgICMgQ3JlYXRlIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGlmIGl0
IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KICAgICAgICAgc2VsZi5fcG9ydC5ob3N0LmZpbGVzeXN0
ZW0ubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkpCiAKLSAgICAg
ICAgbmVlZHNfaHR0cCA9IGFueSgoc2VsZi5faXNfaHR0cF90ZXN0KHRlc3QpIGFuZCBub3Qgc2Vs
Zi5fbmVlZHNfd2ViX3BsYXRmb3JtX3Rlc3QodGVzdCkpIGZvciB0ZXN0cyBpbiBpdGVydmFsdWVz
KHRlc3RzX3RvX3J1bl9ieV9kZXZpY2UpIGZvciB0ZXN0IGluIHRlc3RzKQotICAgICAgICBuZWVk
c193ZWJfcGxhdGZvcm1fdGVzdF9zZXJ2ZXIgPSBhbnkoc2VsZi5fbmVlZHNfd2ViX3BsYXRmb3Jt
X3Rlc3QodGVzdCkgZm9yIHRlc3RzIGluIGl0ZXJ2YWx1ZXModGVzdHNfdG9fcnVuX2J5X2Rldmlj
ZSkgZm9yIHRlc3QgaW4gdGVzdHMpCi0gICAgICAgIG5lZWRzX3dlYnNvY2tldHMgPSBhbnkoc2Vs
Zi5faXNfd2Vic29ja2V0X3Rlc3QodGVzdCkgZm9yIHRlc3RzIGluIGl0ZXJ2YWx1ZXModGVzdHNf
dG9fcnVuX2J5X2RldmljZSkgZm9yIHRlc3QgaW4gdGVzdHMpCisgICAgICAgIG5lZWRzX2h0dHAg
PSBhbnkoKHNlbGYuX2lzX2h0dHBfdGVzdCh0ZXN0LnRlc3RfcGF0aCkgYW5kIG5vdCBzZWxmLl9u
ZWVkc193ZWJfcGxhdGZvcm1fdGVzdCh0ZXN0LnRlc3RfcGF0aCkpIGZvciB0ZXN0cyBpbiBpdGVy
dmFsdWVzKHRlc3RzX3RvX3J1bl9ieV9kZXZpY2UpIGZvciB0ZXN0IGluIHRlc3RzKQorICAgICAg
ICBuZWVkc193ZWJfcGxhdGZvcm1fdGVzdF9zZXJ2ZXIgPSBhbnkoc2VsZi5fbmVlZHNfd2ViX3Bs
YXRmb3JtX3Rlc3QodGVzdC50ZXN0X3BhdGgpIGZvciB0ZXN0cyBpbiBpdGVydmFsdWVzKHRlc3Rz
X3RvX3J1bl9ieV9kZXZpY2UpIGZvciB0ZXN0IGluIHRlc3RzKQorICAgICAgICBuZWVkc193ZWJz
b2NrZXRzID0gYW55KHNlbGYuX2lzX3dlYnNvY2tldF90ZXN0KHRlc3QudGVzdF9wYXRoKSBmb3Ig
dGVzdHMgaW4gaXRlcnZhbHVlcyh0ZXN0c190b19ydW5fYnlfZGV2aWNlKSBmb3IgdGVzdCBpbiB0
ZXN0cykKICAgICAgICAgc2VsZi5fcnVubmVyID0gTGF5b3V0VGVzdFJ1bm5lcihzZWxmLl9vcHRp
b25zLCBzZWxmLl9wb3J0LCBzZWxmLl9wcmludGVyLCBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwg
c2VsZi5fdGVzdF9pc19zbG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5lZWRzX2h0dHA9bmVlZHNfaHR0cCwgbmVlZHNfd2ViX3BsYXRmb3JtX3Rlc3Rfc2VydmVy
PW5lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0X3NlcnZlciwgbmVlZHNfd2Vic29ja2V0cz1uZWVkc193
ZWJzb2NrZXRzKQogCkBAIC0zNTgsNyArMzkwLDE0IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToK
ICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLl9wb3J0LmNvbmZpZ3VyYXRpb25fZm9y
X3VwbG9hZChzZWxmLl9wb3J0LnRhcmdldF9ob3N0KDApKQogICAgICAgICAgICAgaWYgbm90IGNv
bmZpZ3VyYXRpb24uZ2V0KCdmbGF2b3InLCBOb25lKTogICMgVGhlIC0tcmVzdWx0LXJlcG9ydC1m
bGF2b3IgYXJndW1lbnQgc2hvdWxkIG92ZXJyaWRlIHdrMS93azIKICAgICAgICAgICAgICAgICBj
b25maWd1cmF0aW9uWydmbGF2b3InXSA9ICd3azInIGlmIHNlbGYuX29wdGlvbnMud2Via2l0X3Rl
c3RfcnVubmVyIGVsc2UgJ3drMScKLSAgICAgICAgICAgIHRlbXBfaW5pdGlhbF9yZXN1bHRzLCB0
ZW1wX3JldHJ5X3Jlc3VsdHMsIHRlbXBfZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSA9IHNl
bGYuX3J1bl90ZXN0X3N1YnNldCh0ZXN0c190b19ydW5fYnlfZGV2aWNlW2RldmljZV90eXBlXSwg
dGVzdHNfdG9fc2tpcCwgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCisgICAgICAgICAgICB0ZW1w
X2luaXRpYWxfcmVzdWx0cywgdGVtcF9yZXRyeV9yZXN1bHRzLCB0ZW1wX2VuYWJsZWRfcGl4ZWxf
dGVzdHNfaW5fcmV0cnkgPSBzZWxmLl9ydW5fdGVzdF9zdWJzZXQodGVzdHNfdG9fcnVuX2J5X2Rl
dmljZVtkZXZpY2VfdHlwZV0sIGRldmljZV90eXBlPWRldmljZV90eXBlKQorCisgICAgICAgICAg
ICBza2lwcGVkX3Jlc3VsdHMgPSBUZXN0UnVuUmVzdWx0cyhzZWxmLl9leHBlY3RhdGlvbnNbZGV2
aWNlX3R5cGVdLCBsZW4oYWdncmVnYXRlX3Rlc3RzX3RvX3NraXApKQorICAgICAgICAgICAgZm9y
IHNraXBwZWRfdGVzdCBpbiBzZXQoYWdncmVnYXRlX3Rlc3RzX3RvX3NraXApOgorICAgICAgICAg
ICAgICAgIHNraXBwZWRfcmVzdWx0ID0gdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQoc2tpcHBlZF90
ZXN0LnRlc3RfcGF0aCkKKyAgICAgICAgICAgICAgICBza2lwcGVkX3Jlc3VsdC50eXBlID0gdGVz
dF9leHBlY3RhdGlvbnMuU0tJUAorICAgICAgICAgICAgICAgIHNraXBwZWRfcmVzdWx0cy5hZGQo
c2tpcHBlZF9yZXN1bHQsIGV4cGVjdGVkPVRydWUsIHRlc3RfaXNfc2xvdz1zZWxmLl90ZXN0X2lz
X3Nsb3coc2tpcHBlZF90ZXN0LnRlc3RfcGF0aCkpCisgICAgICAgICAgICB0ZW1wX2luaXRpYWxf
cmVzdWx0cyA9IHRlbXBfaW5pdGlhbF9yZXN1bHRzLm1lcmdlKHNraXBwZWRfcmVzdWx0cykKIAog
ICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5yZXBvcnRfdXJsczoKICAgICAgICAgICAgICAg
ICBzZWxmLl9wcmludGVyLndyaXRlbG4oJ1xuJykKQEAgLTQxOSwxMCArNDU4LDEzIEBAIGNsYXNz
IE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgIHJlc3VsdC5leGl0X2NvZGUgPSAtMQogICAg
ICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICBkZWYgX3J1bl90ZXN0X3N1YnNldChzZWxmLCB0ZXN0
c190b19ydW4sIHRlc3RzX3RvX3NraXAsIGRldmljZV90eXBlPU5vbmUpOgorICAgIGRlZiBfcnVu
X3Rlc3Rfc3Vic2V0KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfdG9fcnVu
LCAgIyB0eXBlOiBMaXN0W1Rlc3RdCisgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX3R5
cGU9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbRGV2aWNlVHlwZV0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICApOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBlbmFibGVkX3BpeGVsX3Rlc3Rz
X2luX3JldHJ5ID0gRmFsc2UKLSAgICAgICAgICAgIGluaXRpYWxfcmVzdWx0cyA9IHNlbGYuX3J1
bl90ZXN0cyh0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAsIHNlbGYuX29wdGlvbnMucmVwZWF0
X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucywgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRf
cHJvY2Vzc2VzKSwgcmV0cnlpbmc9RmFsc2UsIGRldmljZV90eXBlPWRldmljZV90eXBlKQorICAg
ICAgICAgICAgaW5pdGlhbF9yZXN1bHRzID0gc2VsZi5fcnVuX3Rlc3RzKHRlc3RzX3RvX3J1biwg
c2VsZi5fb3B0aW9ucy5yZXBlYXRfZWFjaCwgc2VsZi5fb3B0aW9ucy5pdGVyYXRpb25zLCBpbnQo
c2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCByZXRyeWluZz1GYWxzZSwgZGV2aWNlX3R5
cGU9ZGV2aWNlX3R5cGUpCiAKICAgICAgICAgICAgIHRlc3RzX3RvX3JldHJ5ID0gc2VsZi5fdGVz
dHNfdG9fcmV0cnkoaW5pdGlhbF9yZXN1bHRzLCBpbmNsdWRlX2NyYXNoZXM9c2VsZi5fcG9ydC5z
aG91bGRfcmV0cnlfY3Jhc2hlcygpKQogICAgICAgICAgICAgIyBEb24ndCByZXRyeSBmYWlsdXJl
cyB3aGVuIGludGVycnVwdGVkIGJ5IHVzZXIgb3IgZmFpbHVyZXMgbGltaXQgZXhjZXB0aW9uLgpA
QCAtNDMzLDcgKzQ3NSwxMiBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgX2xvZy5pbmZvKCcnKQogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiUmV0cnlpbmcgJXMg
Li4uIiAlIHBsdXJhbGl6ZShsZW4odGVzdHNfdG9fcmV0cnkpLCAidW5leHBlY3RlZCBmYWlsdXJl
IikpCiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcnKQotICAgICAgICAgICAgICAgIHJldHJ5
X3Jlc3VsdHMgPSBzZWxmLl9ydW5fdGVzdHModGVzdHNfdG9fcmV0cnksIHRlc3RzX3RvX3NraXA9
c2V0KCksIHJlcGVhdF9lYWNoPTEsIGl0ZXJhdGlvbnM9MSwgbnVtX3dvcmtlcnM9MSwgcmV0cnlp
bmc9VHJ1ZSwgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCisgICAgICAgICAgICAgICAgcmV0cnlf
cmVzdWx0cyA9IHNlbGYuX3J1bl90ZXN0cyhbdGVzdCBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4g
aWYgdGVzdC50ZXN0X3BhdGggaW4gdGVzdHNfdG9fcmV0cnldLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0X2VhY2g9MSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdGlvbnM9MSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV93b3JrZXJzPTEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyeWlu
Zz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCiAKICAgICAgICAgICAgICAgICBpZiBlbmFibGVkX3Bp
eGVsX3Rlc3RzX2luX3JldHJ5OgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnBp
eGVsX3Rlc3RzID0gRmFsc2UKQEAgLTQ3NywxMCArNTI0LDE4IEBAIGNsYXNzIE1hbmFnZXIob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICBleGl0X2NvZGUgPSBzZWxmLl9wb3J0LmV4aXRfY29kZV9m
cm9tX3N1bW1hcml6ZWRfcmVzdWx0cyhzdW1tYXJpemVkX3Jlc3VsdHMpCiAgICAgICAgIHJldHVy
biB0ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhpdF9jb2RlLCBzdW1tYXJpemVkX3Jlc3Vs
dHMsIGluaXRpYWxfcmVzdWx0cywgcmV0cnlfcmVzdWx0cywgZW5hYmxlZF9waXhlbF90ZXN0c19p
bl9yZXRyeSkKIAotICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIHRlc3RzX3RvX3J1biwgdGVzdHNf
dG9fc2tpcCwgcmVwZWF0X2VhY2gsIGl0ZXJhdGlvbnMsIG51bV93b3JrZXJzLCByZXRyeWluZywg
ZGV2aWNlX3R5cGU9Tm9uZSk6CisgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwKKyAgICAgICAgICAg
ICAgICAgICB0ZXN0c190b19ydW4sICAjIHR5cGU6IExpc3RbVGVzdF0KKyAgICAgICAgICAgICAg
ICAgICByZXBlYXRfZWFjaCwgICMgdHlwZTogaW50CisgICAgICAgICAgICAgICAgICAgaXRlcmF0
aW9ucywgICMgdHlwZTogaW50CisgICAgICAgICAgICAgICAgICAgbnVtX3dvcmtlcnMsICAjIHR5
cGU6IGludAorICAgICAgICAgICAgICAgICAgIHJldHJ5aW5nLCAgIyB0eXBlOiBib29sCisgICAg
ICAgICAgICAgICAgICAgZGV2aWNlX3R5cGU9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbRGV2aWNl
VHlwZV0KKyAgICAgICAgICAgICAgICAgICApOgogICAgICAgICB0ZXN0X2lucHV0cyA9IHNlbGYu
X2dldF90ZXN0X2lucHV0cyh0ZXN0c190b19ydW4sIHJlcGVhdF9lYWNoLCBpdGVyYXRpb25zLCBk
ZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKIAotICAgICAgICByZXR1cm4gc2VsZi5fcnVubmVyLnJ1
bl90ZXN0cyhzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLCB0ZXN0X2lucHV0cywgdGVz
dHNfdG9fc2tpcCwgbnVtX3dvcmtlcnMsIHJldHJ5aW5nLCBkZXZpY2VfdHlwZSkKKyAgICAgICAg
YXNzZXJ0IHNlbGYuX3J1bm5lciBpcyBub3QgTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5fcnVu
bmVyLnJ1bl90ZXN0cyhzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLCB0ZXN0X2lucHV0
cywgbnVtX3dvcmtlcnMsIHJldHJ5aW5nLCBkZXZpY2VfdHlwZSkKIAogICAgIGRlZiBfY2xlYW5f
dXBfcnVuKHNlbGYpOgogICAgICAgICBfbG9nLmRlYnVnKCJGbHVzaGluZyBzdGRvdXQiKQpAQCAt
NjUzLDEwICs3MDgsMTQgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICByZXR1cm4g
c3RhdHNfdHJpZQogCiAgICAgZGVmIF9wcmludF9leHBlY3RhdGlvbl9saW5lX2Zvcl90ZXN0KHNl
bGYsIGZvcm1hdF9zdHJpbmcsIHRlc3QsIGRldmljZV90eXBlPU5vbmUpOgotICAgICAgICBsaW5l
ID0gc2VsZi5fZXhwZWN0YXRpb25zW2RldmljZV90eXBlXS5tb2RlbCgpLmdldF9leHBlY3RhdGlv
bl9saW5lKHRlc3QpCi0gICAgICAgIHByaW50KGZvcm1hdF9zdHJpbmcuZm9ybWF0KHRlc3QsIGxp
bmUuZXhwZWN0ZWRfYmVoYXZpb3IsIHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0ucmVh
ZGFibGVfZmlsZW5hbWVfYW5kX2xpbmVfbnVtYmVyKGxpbmUpLCBsaW5lLm9yaWdpbmFsX3N0cmlu
ZyBvciAnJykpCi0KLSAgICBkZWYgX3ByaW50X2V4cGVjdGF0aW9uc19mb3Jfc3Vic2V0KHNlbGYs
IGRldmljZV90eXBlLCB0ZXN0X2NvbF93aWR0aCwgdGVzdHNfdG9fcnVuLCB0ZXN0c190b19za2lw
PXt9KToKKyAgICAgICAgdGVzdF9wYXRoID0gdGVzdC50ZXN0X3BhdGgKKyAgICAgICAgbGluZSA9
IHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0ubW9kZWwoKS5nZXRfZXhwZWN0YXRpb25f
bGluZSh0ZXN0X3BhdGgpCisgICAgICAgIHByaW50KGZvcm1hdF9zdHJpbmcuZm9ybWF0KHRlc3Rf
cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5leHBlY3RlZF9i
ZWhhdmlvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwZWN0
YXRpb25zW2RldmljZV90eXBlXS5yZWFkYWJsZV9maWxlbmFtZV9hbmRfbGluZV9udW1iZXIobGlu
ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUub3JpZ2luYWxfc3Ry
aW5nIG9yICcnKSkKKworICAgIGRlZiBfcHJpbnRfZXhwZWN0YXRpb25zX2Zvcl9zdWJzZXQoc2Vs
ZiwgZGV2aWNlX3R5cGUsIHRlc3RfY29sX3dpZHRoLCB0ZXN0c190b19ydW4sIHRlc3RzX3RvX3Nr
aXA9Tm9uZSk6CiAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSAne3s6e3dpZHRofX19IHt7fX0ge3t9
fSB7e319Jy5mb3JtYXQod2lkdGg9dGVzdF9jb2xfd2lkdGgpCiAgICAgICAgIGlmIHRlc3RzX3Rv
X3NraXA6CiAgICAgICAgICAgICBwcmludCgnJykKQEAgLTY3MCwzOSArNzI5LDIxIEBAIGNsYXNz
IE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGF0aW9uX2xp
bmVfZm9yX3Rlc3QoZm9ybWF0X3N0cmluZywgdGVzdCwgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUp
CiAKICAgICBkZWYgcHJpbnRfZXhwZWN0YXRpb25zKHNlbGYsIGFyZ3MpOgotICAgICAgICBhZ2dy
ZWdhdGVfdGVzdF9uYW1lcyA9IHNldCgpCi0gICAgICAgIGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4g
PSBzZXQoKQotICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9fc2tpcCA9IHNldCgpCi0gICAgICAg
IHRlc3RzX3RvX3J1bl9ieV9kZXZpY2UgPSB7fQotCiAgICAgICAgIGRldmljZV90eXBlX2xpc3Qg
PSBzZWxmLl9wb3J0LkRFRkFVTFRfREVWSUNFX1RZUEVTIG9yIFtzZWxmLl9wb3J0LkRFVklDRV9U
WVBFXQotICAgICAgICBmb3IgZGV2aWNlX3R5cGUgaW4gZGV2aWNlX3R5cGVfbGlzdDoKLSAgICAg
ICAgICAgICIiIlJ1biB0aGUgdGVzdHMgYW5kIHJldHVybiBhIFJ1bkRldGFpbHMgb2JqZWN0IHdp
dGggdGhlIHJlc3VsdHMuIiIiCi0gICAgICAgICAgICBmb3JfZGV2aWNlX3R5cGUgPSAnZm9yIHt9
ICcuZm9ybWF0KGRldmljZV90eXBlKSBpZiBkZXZpY2VfdHlwZSBlbHNlICcnCi0gICAgICAgICAg
ICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSgnQ29sbGVjdGluZyB0ZXN0cyB7fS4uLicuZm9y
bWF0KGZvcl9kZXZpY2VfdHlwZSkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
cGF0aHMsIHRlc3RzID0gc2VsZi5fY29sbGVjdF90ZXN0cyhhcmdzLCBkZXZpY2VfdHlwZT1kZXZp
Y2VfdHlwZSkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgICMg
VGhpcyBpcyByYWlzZWQgaWYgLS10ZXN0LWxpc3QgZG9lc24ndCBleGlzdAotICAgICAgICAgICAg
ICAgIHJldHVybiB0ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhpdF9jb2RlPS0xKQotCi0g
ICAgICAgICAgICB0ZXN0X25hbWVzID0gW3Rlc3QudGVzdF9wYXRoIGZvciB0ZXN0IGluIHRlc3Rz
XQotCi0gICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSgnUGFyc2luZyBleHBl
Y3RhdGlvbnMge30uLi4nLmZvcm1hdChmb3JfZGV2aWNlX3R5cGUpKQotICAgICAgICAgICAgc2Vs
Zi5fZXhwZWN0YXRpb25zW2RldmljZV90eXBlXSA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBl
Y3RhdGlvbnMoc2VsZi5fcG9ydCwgdGVzdF9uYW1lcywgZm9yY2VfZXhwZWN0YXRpb25zX3Bhc3M9
c2VsZi5fb3B0aW9ucy5mb3JjZSwgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCi0gICAgICAgICAg
ICBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLnBhcnNlX2FsbF9leHBlY3RhdGlvbnMo
KQotCi0gICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdF9uYW1lcy51cGRhdGUodGVzdF9uYW1lcykK
LSAgICAgICAgICAgIHRlc3RzX3RvX3J1biwgdGVzdHNfdG9fc2tpcCA9IHNlbGYuX3ByZXBhcmVf
bGlzdHMocGF0aHMsIHRlc3RfbmFtZXMsIGRldmljZV90eXBlPWRldmljZV90eXBlKQotICAgICAg
ICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3NraXAudXBkYXRlKHRlc3RzX3RvX3NraXApCiAKLSAg
ICAgICAgICAgIHRlc3RzX3RvX3J1bl9ieV9kZXZpY2VbZGV2aWNlX3R5cGVdID0gW3Rlc3QgZm9y
IHRlc3QgaW4gdGVzdHNfdG9fcnVuIGlmIHRlc3Qgbm90IGluIGFnZ3JlZ2F0ZV90ZXN0c190b19y
dW5dCi0gICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuLnVwZGF0ZSh0ZXN0c190b19y
dW4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3RzX3RvX3J1bl9ieV9kZXZpY2UsIGFn
Z3JlZ2F0ZV90ZXN0c190b19za2lwID0gc2VsZi5fY29sbGVjdF90ZXN0cyhhcmdzLCBkZXZpY2Vf
dHlwZV9saXN0KQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICMgVGhpcyBp
cyByYWlzZWQgaWYgLS10ZXN0LWxpc3QgZG9lc24ndCBleGlzdAorICAgICAgICAgICAgcmV0dXJu
IC0xCiAKLSAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3NraXAgPSBhZ2dyZWdhdGVfdGVzdHNf
dG9fc2tpcCAtIGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4KKyAgICAgICAgYWdncmVnYXRlX3Rlc3Rz
X3RvX3J1biA9IHNldCgpCisgICAgICAgIGZvciB2IGluIHRlc3RzX3RvX3J1bl9ieV9kZXZpY2Uu
dmFsdWVzKCk6CisgICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuLnVwZGF0ZSh2KQor
ICAgICAgICBhZ2dyZWdhdGVfdGVzdHMgPSBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuIHwgYWdncmVn
YXRlX3Rlc3RzX3RvX3NraXAKIAotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2ZvdW5kKGxl
bihhZ2dyZWdhdGVfdGVzdF9uYW1lcyksIGxlbihhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuKSwgc2Vs
Zi5fb3B0aW9ucy5yZXBlYXRfZWFjaCwgc2VsZi5fb3B0aW9ucy5pdGVyYXRpb25zKQotICAgICAg
ICB0ZXN0X2NvbF93aWR0aCA9IGxlbihtYXgoYWdncmVnYXRlX3Rlc3RzX3RvX3J1bi51bmlvbihh
Z2dyZWdhdGVfdGVzdHNfdG9fc2tpcCksIGtleT1sZW4pKSArIDEKKyAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF9mb3VuZChsZW4oYWdncmVnYXRlX3Rlc3RzKSwgbGVuKGFnZ3JlZ2F0ZV90ZXN0
c190b19ydW4pLCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNoLCBzZWxmLl9vcHRpb25zLml0ZXJh
dGlvbnMpCisgICAgICAgIHRlc3RfY29sX3dpZHRoID0gbWF4KGxlbih0ZXN0LnRlc3RfcGF0aCkg
Zm9yIHRlc3QgaW4gYWdncmVnYXRlX3Rlc3RzKSArIDEKIAogICAgICAgICBzZWxmLl9wcmludF9l
eHBlY3RhdGlvbnNfZm9yX3N1YnNldChkZXZpY2VfdHlwZV9saXN0WzBdLCB0ZXN0X2NvbF93aWR0
aCwgdGVzdHNfdG9fcnVuX2J5X2RldmljZVtkZXZpY2VfdHlwZV9saXN0WzBdXSwgYWdncmVnYXRl
X3Rlc3RzX3RvX3NraXApCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL21vZGVscy90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbW9kZWxzL3Rlc3QucHkKaW5kZXggN2ZlZGE5ZjEwNGQ3YmY2MzJmMTQyODI5ZmM1Mzdj
YjJiY2VkODNmMi4uZDUxYTViZmM3MmQ3MTY2ZWJjODMyZDM5NDhkZDdmNWRjMjZiZWZlNyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Qu
cHkKQEAgLTI3LDUwICsyNywxNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAKK2ltcG9ydCBhdHRyCisK
KworQGF0dHIucyhmcm96ZW49VHJ1ZSkKIGNsYXNzIFRlc3Qob2JqZWN0KToKICAgICAiIiJEYXRh
IGFib3V0IGEgdGVzdCBhbmQgaXRzIGV4cGVjdGF0aW9ucy4KIAogICAgIE5vdGUgdGhhdCB0aGlz
IGlzIGluaGVyZW50bHkgcGxhdGZvcm0gc3BlY2lmaWMsIGFzIGV4cGVjdGF0aW9ucyBhcmUgcGxh
dGZvcm0gc3BlY2lmaWMuIiIiCi0KLSAgICBkZWYgX19pbml0X18oCi0gICAgICAgIHNlbGYsCi0g
ICAgICAgIHRlc3RfcGF0aCwKLSAgICAgICAgZXhwZWN0ZWRfdGV4dF9wYXRoPU5vbmUsCi0gICAg
ICAgIGV4cGVjdGVkX2ltYWdlX3BhdGg9Tm9uZSwKLSAgICAgICAgZXhwZWN0ZWRfY2hlY2tzdW1f
cGF0aD1Ob25lLAotICAgICAgICBleHBlY3RlZF9hdWRpb19wYXRoPU5vbmUsCi0gICAgICAgIHJl
ZmVyZW5jZV9maWxlcz1Ob25lLAotICAgICk6Ci0gICAgICAgIHNlbGYudGVzdF9wYXRoID0gdGVz
dF9wYXRoCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRfdGV4dF9wYXRoID0gZXhwZWN0ZWRfdGV4dF9w
YXRoCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRfaW1hZ2VfcGF0aCA9IGV4cGVjdGVkX2ltYWdlX3Bh
dGgKLSAgICAgICAgc2VsZi5leHBlY3RlZF9jaGVja3N1bV9wYXRoID0gZXhwZWN0ZWRfY2hlY2tz
dW1fcGF0aAotICAgICAgICBzZWxmLmV4cGVjdGVkX2F1ZGlvX3BhdGggPSBleHBlY3RlZF9hdWRp
b19wYXRoCi0gICAgICAgIHNlbGYucmVmZXJlbmNlX2ZpbGVzID0gcmVmZXJlbmNlX2ZpbGVzCi0K
LSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoCi0gICAgICAgICAgICAi
VGVzdCglciwgIgotICAgICAgICAgICAgImV4cGVjdGVkX3RleHRfcGF0aD0lciwgIgotICAgICAg
ICAgICAgImV4cGVjdGVkX2ltYWdlX3BhdGg9JXIsICIKLSAgICAgICAgICAgICJleHBlY3RlZF9j
aGVja3N1bV9wYXRoPSVyLCAiCi0gICAgICAgICAgICAiZXhwZWN0ZWRfYXVkaW9fcGF0aD0lciwg
IgotICAgICAgICAgICAgInJlZmVyZW5jZV9maWxlcz0lcikiCi0gICAgICAgICkgJSAoCi0gICAg
ICAgICAgICBzZWxmLnRlc3RfcGF0aCwKLSAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRfdGV4dF9w
YXRoLAotICAgICAgICAgICAgc2VsZi5leHBlY3RlZF9pbWFnZV9wYXRoLAotICAgICAgICAgICAg
c2VsZi5leHBlY3RlZF9jaGVja3N1bV9wYXRoLAotICAgICAgICAgICAgc2VsZi5leHBlY3RlZF9h
dWRpb19wYXRoLAotICAgICAgICAgICAgc2VsZi5yZWZlcmVuY2VfZmlsZXMsCi0gICAgICAgICkK
LQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gKAotICAgICAg
ICAgICAgc2VsZi50ZXN0X3BhdGggPT0gb3RoZXIudGVzdF9wYXRoCi0gICAgICAgICAgICBhbmQg
c2VsZi5leHBlY3RlZF90ZXh0X3BhdGggPT0gb3RoZXIuZXhwZWN0ZWRfdGV4dF9wYXRoCi0gICAg
ICAgICAgICBhbmQgc2VsZi5leHBlY3RlZF9pbWFnZV9wYXRoID09IG90aGVyLmV4cGVjdGVkX2lt
YWdlX3BhdGgKLSAgICAgICAgICAgIGFuZCBzZWxmLmV4cGVjdGVkX2NoZWNrc3VtX3BhdGggPT0g
b3RoZXIuZXhwZWN0ZWRfY2hlY2tzdW1fcGF0aAotICAgICAgICAgICAgYW5kIHNlbGYuZXhwZWN0
ZWRfYXVkaW9fcGF0aCA9PSBvdGhlci5leHBlY3RlZF9hdWRpb19wYXRoCi0gICAgICAgICAgICBh
bmQgc2VsZi5yZWZlcmVuY2VfZmlsZXMgPT0gb3RoZXIucmVmZXJlbmNlX2ZpbGVzCi0gICAgICAg
ICkKKyAgICB0ZXN0X3BhdGggPSBhdHRyLmliKHR5cGU9c3RyKQorICAgIGV4cGVjdGVkX3RleHRf
cGF0aCA9IGF0dHIuaWIoZGVmYXVsdD1Ob25lLCB0eXBlPXN0cikKKyAgICBleHBlY3RlZF9pbWFn
ZV9wYXRoID0gYXR0ci5pYihkZWZhdWx0PU5vbmUsIHR5cGU9c3RyKQorICAgIGV4cGVjdGVkX2No
ZWNrc3VtX3BhdGggPSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSwgdHlwZT1zdHIpCisgICAgZXhwZWN0
ZWRfYXVkaW9fcGF0aCA9IGF0dHIuaWIoZGVmYXVsdD1Ob25lLCB0eXBlPXN0cikKKyAgICByZWZl
cmVuY2VfZmlsZXMgPSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSwgdHlwZT1saXN0KQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1
dC5weQppbmRleCA2MmVjOGUwOTk0ODIwNDlmMGQzNjA1YmU3MGJjMzZmNjA0NzkxMDVkLi45YWI5
YzBkZTViOGExZGUwMmZhZWVkNDg1MmMwMDkzMzU3OGY0YTE2IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weQpA
QCAtMjgsNiArMjgsOCBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAKK2Zyb20gLnRlc3QgaW1wb3J0IFRl
c3QKKwogY2xhc3MgVGVzdElucHV0KG9iamVjdCk6CiAgICAgIiIiSW5mb3JtYXRpb24gYWJvdXQg
YSB0ZXN0IG5lZWRlZCB0byBydW4gaXQuCiAKQEAgLTM1LDE1ICszNywyNSBAQCBjbGFzcyBUZXN0
SW5wdXQob2JqZWN0KToKICAgICBkZXJpdmVkIGZyb20gVGVzdEV4cGVjdGF0aW9ucy90ZXN0IGV4
ZWN1dGlvbiBvcHRpb25zIChlLmcuLCB0aW1lb3V0KS4KICAgICAiIiIKIAotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB0ZXN0X25hbWUsIHRpbWVvdXQ9Tm9uZSwgbmVlZHNfc2VydmVycz1Ob25lLCBz
aG91bGRfZHVtcF9qc2NvbnNvbGVsb2dfaW5fc3RkZXJyPU5vbmUpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLAorICAgICAgICAgICAgICAgICB0ZXN0LCAgIyB0eXBlOiBUZXN0CisgICAgICAgICAg
ICAgICAgIHRpbWVvdXQ9Tm9uZSwgICMgdHlwZTogVW5pb25bTm9uZSwgaW50LCBzdHJdCisgICAg
ICAgICAgICAgICAgIG5lZWRzX3NlcnZlcnM9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbYm9vbF0K
KyAgICAgICAgICAgICAgICAgc2hvdWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVycj1Ob25l
LCAgIyB0eXBlOiBPcHRpb25hbFtib29sXQorICAgICAgICAgICAgICAgICApOgogICAgICAgICAj
IFRlc3RJbnB1dCBvYmplY3RzIGFyZSBub3JtYWxseSBjb25zdHJ1Y3RlZCBieSB0aGUgbWFuYWdl
ciBhbmQgcGFzc2VkCiAgICAgICAgICMgdG8gdGhlIHdvcmtlcnMsIGJ1dCB0aGVzZSBzb21lIGZp
ZWxkcyBhcmUgc2V0IGxhemlseSBpbiB0aGUgd29ya2VycyB3aGVyZSBwb3NzaWJsZQogICAgICAg
ICAjIGJlY2F1c2UgdGhleSByZXF1aXJlIHVzIHRvIGxvb2sgYXQgdGhlIGZpbGVzeXN0ZW0gYW5k
IHdlIHdhbnQgdG8gYmUgYWJsZSB0byBkbyB0aGF0IGluIHBhcmFsbGVsLgotICAgICAgICBzZWxm
LnRlc3RfbmFtZSA9IHRlc3RfbmFtZQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0ZXN0LCBU
ZXN0KQorICAgICAgICBzZWxmLnRlc3QgPSB0ZXN0CiAgICAgICAgIHNlbGYudGltZW91dCA9IHRp
bWVvdXQgICMgaW4gbXNlY3M7IHNob3VsZCByZW5hbWUgdGhpcyBmb3IgY29uc2lzdGVuY3kKICAg
ICAgICAgc2VsZi5uZWVkc19zZXJ2ZXJzID0gbmVlZHNfc2VydmVycwogICAgICAgICBzZWxmLnNo
b3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIgPSBzaG91bGRfZHVtcF9qc2NvbnNvbGVs
b2dfaW5fc3RkZXJyCiAgICAgICAgIHNlbGYucmVmZXJlbmNlX2ZpbGVzID0gTm9uZQogCisgICAg
QHByb3BlcnR5CisgICAgZGVmIHRlc3RfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
dGVzdC50ZXN0X3BhdGgKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJu
ICJUZXN0SW5wdXQoJyVzJywgdGltZW91dD0lcywgbmVlZHNfc2VydmVycz0lcywgcmVmZXJlbmNl
X2ZpbGVzPSVzLCBzaG91bGRfZHVtcF9qc2NvbnNvbGVsb2dfaW5fc3RkZXJyPSVzKSIgJSAoc2Vs
Zi50ZXN0X25hbWUsIHNlbGYudGltZW91dCwgc2VsZi5uZWVkc19zZXJ2ZXJzLCBzZWxmLnJlZmVy
ZW5jZV9maWxlcywgc2VsZi5zaG91bGRfZHVtcF9qc2NvbnNvbGVsb2dfaW5fc3RkZXJyKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Rf
cnVuX3Jlc3VsdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2Rl
bHMvdGVzdF9ydW5fcmVzdWx0cy5weQppbmRleCAyYzIzYzA0ZWRmMGViYzJiM2NhYTFiMzYzY2I5
MzUyMzJjZTRkZmJkLi40NWUxODJmY2ZmYjk5YWVlOGM0YzU1NzNhZDlhNjg5MjhjMDkzZGM0IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVz
dF9ydW5fcmVzdWx0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0cy5weQpAQCAtMTMxLDcgKzEzMSwyMiBAQCBjbGFzcyBU
ZXN0UnVuUmVzdWx0cyhvYmplY3QpOgogICAgIGRlZiBtZXJnZShzZWxmLCB0ZXN0X3J1bl9yZXN1
bHRzKToKICAgICAgICAgaWYgbm90IHRlc3RfcnVuX3Jlc3VsdHM6CiAgICAgICAgICAgICByZXR1
cm4gc2VsZgorCiAgICAgICAgICMgc2VsZi5leHBlY3RhdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1l
IGZvciBib3RoCisgICAgICAgIGlmIHNlbGYuZXhwZWN0YXRpb25zICE9IHRlc3RfcnVuX3Jlc3Vs
dHMuZXhwZWN0YXRpb25zOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGlmZmVyZW50
IFRlc3RFeHBlY3RhdGlvbnMiKQorCisgICAgICAgIGRlZiBtZXJnZV9kaWN0X3NldHMoYSwgYik6
CisgICAgICAgICAgICBtZXJnZWQgPSB7fQorICAgICAgICAgICAga2V5cyA9IHNldChhLmtleXMo
KSkgfCBzZXQoYi5rZXlzKCkpCisgICAgICAgICAgICBmb3IgayBpbiBrZXlzOgorICAgICAgICAg
ICAgICAgIHZfYSA9IGEuZ2V0KGssIHNldCgpKQorICAgICAgICAgICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHZfYSwgc2V0KQorICAgICAgICAgICAgICAgIHZfYiA9IGIuZ2V0KGssIHNldCgpKQor
ICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHZfYiwgc2V0KQorICAgICAgICAgICAg
ICAgIG1lcmdlZFtrXSA9IHZfYSB8IHZfYgorICAgICAgICAgICAgcmV0dXJuIG1lcmdlZAorCiAg
ICAgICAgIHNlbGYudG90YWwgKz0gdGVzdF9ydW5fcmVzdWx0cy50b3RhbAogICAgICAgICBzZWxm
LnJlbWFpbmluZyArPSB0ZXN0X3J1bl9yZXN1bHRzLnJlbWFpbmluZwogICAgICAgICBzZWxmLmV4
cGVjdGVkICs9IHRlc3RfcnVuX3Jlc3VsdHMuZXhwZWN0ZWQKQEAgLTEzOSwxNiArMTU0LDE0IEBA
IGNsYXNzIFRlc3RSdW5SZXN1bHRzKG9iamVjdCk6CiAgICAgICAgIHNlbGYudW5leHBlY3RlZF9m
YWlsdXJlcyArPSB0ZXN0X3J1bl9yZXN1bHRzLnVuZXhwZWN0ZWRfZmFpbHVyZXMKICAgICAgICAg
c2VsZi51bmV4cGVjdGVkX2NyYXNoZXMgKz0gdGVzdF9ydW5fcmVzdWx0cy51bmV4cGVjdGVkX2Ny
YXNoZXMKICAgICAgICAgc2VsZi51bmV4cGVjdGVkX3RpbWVvdXRzICs9IHRlc3RfcnVuX3Jlc3Vs
dHMudW5leHBlY3RlZF90aW1lb3V0cwotICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVjdGF0aW9u
LnVwZGF0ZSh0ZXN0X3J1bl9yZXN1bHRzLnRlc3RzX2J5X2V4cGVjdGF0aW9uKQotICAgICAgICBz
ZWxmLnRlc3RzX2J5X3RpbWVsaW5lLnVwZGF0ZSh0ZXN0X3J1bl9yZXN1bHRzLnRlc3RzX2J5X3Rp
bWVsaW5lKQorICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVjdGF0aW9uID0gbWVyZ2VfZGljdF9z
ZXRzKHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb24sIHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlf
ZXhwZWN0YXRpb24pCisgICAgICAgIHNlbGYudGVzdHNfYnlfdGltZWxpbmUgPSBtZXJnZV9kaWN0
X3NldHMoc2VsZi50ZXN0c19ieV90aW1lbGluZSwgdGVzdF9ydW5fcmVzdWx0cy50ZXN0c19ieV90
aW1lbGluZSkKICAgICAgICAgc2VsZi5yZXN1bHRzX2J5X25hbWUudXBkYXRlKHRlc3RfcnVuX3Jl
c3VsdHMucmVzdWx0c19ieV9uYW1lKQogICAgICAgICBzZWxmLmFsbF9yZXN1bHRzICs9IHRlc3Rf
cnVuX3Jlc3VsdHMuYWxsX3Jlc3VsdHMKICAgICAgICAgc2VsZi51bmV4cGVjdGVkX3Jlc3VsdHNf
YnlfbmFtZS51cGRhdGUodGVzdF9ydW5fcmVzdWx0cy51bmV4cGVjdGVkX3Jlc3VsdHNfYnlfbmFt
ZSkKICAgICAgICAgc2VsZi5mYWlsdXJlc19ieV9uYW1lLnVwZGF0ZSh0ZXN0X3J1bl9yZXN1bHRz
LmZhaWx1cmVzX2J5X25hbWUpCiAgICAgICAgIHNlbGYudG90YWxfZmFpbHVyZXMgKz0gdGVzdF9y
dW5fcmVzdWx0cy50b3RhbF9mYWlsdXJlcwogICAgICAgICBzZWxmLmV4cGVjdGVkX3NraXBzICs9
IHRlc3RfcnVuX3Jlc3VsdHMuZXhwZWN0ZWRfc2tpcHMKLSAgICAgICAgc2VsZi50ZXN0c19ieV9l
eHBlY3RhdGlvbi51cGRhdGUodGVzdF9ydW5fcmVzdWx0cy50ZXN0c19ieV9leHBlY3RhdGlvbikK
LSAgICAgICAgc2VsZi50ZXN0c19ieV90aW1lbGluZS51cGRhdGUodGVzdF9ydW5fcmVzdWx0cy50
ZXN0c19ieV90aW1lbGluZSkKICAgICAgICAgc2VsZi5zbG93X3Rlc3RzLnVwZGF0ZSh0ZXN0X3J1
bl9yZXN1bHRzLnNsb3dfdGVzdHMpCiAKICAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCB8PSB0ZXN0
X3J1bl9yZXN1bHRzLmludGVycnVwdGVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425615</attachid>
            <date>2021-04-09 05:49:27 -0700</date>
            <delta_ts>2021-04-09 09:29:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224329-20210409134926.patch</filename>
            <type>text/plain</type>
            <size>37410</size>
            <attacher name="Sam Sneddon [:gsnedders]">gsnedders</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NzU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWI4MmQ0OTNiNzRmZjcxY2RmZjJjMzI2NDA3YjkxZjZi
MTM2ZGY3Ny4uM2M3NWRkYWRmZTAwZTQ1NzVhYjUzODc3NjE0OTg3MjQxMDFhNzIzOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDIxLTA0LTA5ICBTYW0gU25lZGRvbiAgPGdzbmVkZGVyc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFrZSBUZXN0SW5wdXQgdGFrZSBhIFRlc3Qgb2JqZWN0LCBub3QgYSBwYXRoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weToKKyAg
ICAgICAgKExheW91dFRlc3RSdW5uZXIucnVuX3Rlc3RzKTogUmVtb3ZlIHRlc3RfdG9fc2tpcCBh
cmd1bWVudDsgc2tpcHBlZCB0ZXN0cyBhcmVuJ3QgZm9yIHRoZSBydW5uZXIuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVu
bmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lclRlc3RzLl9ydW5fdGVz
dHMpOiBUZXN0SW5wdXQgZXhwZWN0cyBhIFRlc3QuCisgICAgICAgIChMYXlvdXRUZXN0UnVubmVy
VGVzdHMudGVzdF9pbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdHMpOiBUZXN0SW5wdXQgZXhw
ZWN0cyBhIFRlc3QuCisgICAgICAgIChTaGFyZGVyVGVzdHMuZ2V0X3Rlc3RfaW5wdXQpOiBUZXN0
SW5wdXQgZXhwZWN0cyBhIFRlc3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKE1hbmFnZXIuX2NvbGxlY3Rf
dGVzdHMpOgorICAgICAgICBNb3ZlIGR1cGxpY2F0ZWQgY29kZSBmcm9tIE1hbmFnZXIucnVuIGFu
ZCBNYW5hZ2VyLnByaW50X2V4cGVjdGF0aW9ucyBoZXJlLgorICAgICAgICAoTWFuYWdlci5fdGVz
dHNfdG9fcnVuKToKKyAgICAgICAgUmVuYW1lZCBmcm9tIE1hbmFnZXIuX3ByZXBhcmVfbGlzdHM7
IG5vdyBqdXN0IGdpdmVzIHRlc3RzIHRvIHJ1bi4KKyAgICAgICAgKE1hbmFnZXIuX3Rlc3RfaW5w
dXRfZm9yX2ZpbGUpOiBOb3cgdGFrZXMgYSBUZXN0LCBub3QgYSBzdHI7IGRldmljZV90eXBlIGNo
YW5nZXMgYmVoYXZpb3VyIGFuZCBzaG91bGRuJ3QgaGF2ZSBhbnkgZGVmYXVsdC4KKyAgICAgICAg
KE1hbmFnZXIuX3Rlc3RfaXNfc2xvdyk6IGRldmljZV90eXBlIGNoYW5nZXMgYmVoYXZpb3VyIGFu
ZCBzaG91bGRuJ3QgaGF2ZSBhbnkgZGVmYXVsdC4KKyAgICAgICAgKE1hbmFnZXIuX3Rlc3Rfc2hv
dWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVycik6IGRldmljZV90eXBlIGNoYW5nZXMgYmVo
YXZpb3VyIGFuZCBzaG91bGRuJ3QgaGF2ZSBhbnkgZGVmYXVsdC4KKyAgICAgICAgKE1hbmFnZXIu
X2dldF90ZXN0X2lucHV0cyk6IGRldmljZV90eXBlIGNoYW5nZXMgYmVoYXZpb3VyIGFuZCBzaG91
bGRuJ3QgaGF2ZSBhbnkgZGVmYXVsdC4KKyAgICAgICAgKE1hbmFnZXIuX3VwZGF0ZV93b3JrZXJf
Y291bnQpOiBkZXZpY2VfdHlwZSBjaGFuZ2VzIGJlaGF2aW91ciBhbmQgc2hvdWxkbid0IGhhdmUg
YW55IGRlZmF1bHQuCisgICAgICAgIChNYW5hZ2VyLl9zZXRfdXBfcnVuKTogZGV2aWNlX3R5cGUg
Y2hhbmdlcyBiZWhhdmlvdXIgYW5kIHNob3VsZG4ndCBoYXZlIGFueSBkZWZhdWx0LgorICAgICAg
ICAoTWFuYWdlci5ydW4pOgorICAgICAgICBMYXJnZWx5IGp1c3QgY2hhbmdlIGZvciBNYW5hZ2Vy
Ll9jb2xsZWN0X3Rlc3RzLCBhbHNvIHJlbmFtaW5nIHRoZSBzZXRzIHRvIG1hdGNoIHRoZWlyCisg
ICAgICAgIGNsZWFyZXIgbmFtZXMgaW4gcHJpbnRfZXhwZWN0YXRpb25zLgorICAgICAgICBBZGRp
dGlvbmFsbHksIG5vdyBnZW5lcmF0ZSBza2lwIHJlc3VsdHMgaGVyZSwgYXMgdGhleSBhcmVuJ3Qg
dG8gZG8gd2l0aCBhY3R1YWxseSBydW5uaW5nCisgICAgICAgIHRlc3RzLCB0aGV5J3JlIGFib3V0
IHRlc3Qgc2VsZWN0aW9uLgorICAgICAgICAoTWFuYWdlci5fcnVuX3Rlc3Rfc3Vic2V0KTogUmVt
b3ZlIHRlc3RzX3RvX3NraXAgYXJndW1lbnQsIGRldmllX3R5cGUgaXMgcmVxdWlyZWQuCisgICAg
ICAgIChNYW5hZ2VyLl9ydW5fdGVzdHMpOiBSZW1vdmUgdGVzdHNfdG9fc2tpcCBhcmd1bWVudCwg
ZGV2aWVfdHlwZSBpcyByZXF1aXJlZC4KKyAgICAgICAgKE1hbmFnZXIuX3ByaW50X2V4cGVjdGF0
aW9uX2xpbmVfZm9yX3Rlc3QpOiBOb3cgdGFrZXMgYSBUZXN0LCBub3QgYSBzdHI7IGRldmljZV90
eXBlIGNoYW5nZXMgYmVoYXZpb3VyIGFuZCBzaG91bGRuJ3QgaGF2ZSBhbnkgZGVmYXVsdC4KKyAg
ICAgICAgKE1hbmFnZXIuX3ByaW50X2V4cGVjdGF0aW9uc19mb3Jfc3Vic2V0KTogQ2hhbmdlIGRl
ZmF1bHQgb2YgdGVzdHNfdG9fc2tpcCB0byBhdm9pZCBzZXQvZGljdCBvZGRuZXNzLgorICAgICAg
ICAoTWFuYWdlci5wcmludF9leHBlY3RhdGlvbnMpOiBMYXJnZWx5IGNoYW5nZSBmb3IgTWFuYWdl
ci5fY29sbGVjdF90ZXN0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdC5weToKKyAgICAgICAgKFRlc3QpOiBVc2UgYXR0cnMgdG8gYXZvaWQgaGF2
aW5nIHRvIGRlZmluZSBjbXAsIGhhc2gsIHJlcHIsIGV0Yy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weToKKyAgICAgICAgKFRlc3RJ
bnB1dC5fX2luaXRfXyk6IFRha2UgYSBUZXN0LCBub3QgYSBzdHIuCisgICAgICAgIChUZXN0SW5w
dXQudGVzdF9uYW1lKTogTWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIGNvZGUgcmVhZGluZyBU
ZXN0SW5wdXQudGVzdF9uYW1lIGZvciBub3cuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHk6CisgICAgICAgIChUZXN0UnVu
UmVzdWx0cy5tZXJnZSk6IEZpeCBtZXJnaW5nIG9mIGRpY3RzLW9mLXNldHMsIHJhdGhlciB0aGFu
IG92ZXJ3cml0aW5nIHRoZSBzZXRzLgorICAgICAgICAoVGVzdFJ1blJlc3VsdHMubWVyZ2UubWVy
Z2VfZGljdF9zZXRzKTogSW1wbGVtZW50IHRoZSBtZXJnaW5nLgorCiAyMDIxLTA0LTA4ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUENNOiBXcml0ZSBtb3Jl
IGJsaW5kZWQgc2VjcmV0IHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5u
ZXIucHkKaW5kZXggYmFkZDVjZjFlYmU4NGYwMWM5YTg2MjkyNGZjYzA3YzFkNjE3OGFiMC4uMmU2
MGIzMTJkZTZlYzhiMjNiNzM3MmE3YzcyNWY2NzE1OGNkNjZlYyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVu
bmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL2xheW91dF90ZXN0X3J1bm5lci5weQpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBMYXlvdXRU
ZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgIGFsbF9zaGFyZHMgPSBzZWxmLl9zaGFyZGVyLnNo
YXJkX3Rlc3RzKHRlc3RfaW5wdXRzLCBjaGlsZF9wcm9jZXNzX2NvdW50LCBzZWxmLl9vcHRpb25z
LmZ1bGx5X3BhcmFsbGVsKQogICAgICAgICByZXR1cm4gbWluKGNoaWxkX3Byb2Nlc3NfY291bnQs
IGxlbihhbGxfc2hhcmRzKSkKIAotICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgZXhwZWN0YXRpb25z
LCB0ZXN0X2lucHV0cywgdGVzdHNfdG9fc2tpcCwgbnVtX3dvcmtlcnMsIHJldHJ5aW5nLCBkZXZp
Y2VfdHlwZT1Ob25lKToKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsIGV4cGVjdGF0aW9ucywgdGVz
dF9pbnB1dHMsIG51bV93b3JrZXJzLCByZXRyeWluZywgZGV2aWNlX3R5cGU9Tm9uZSk6CiAgICAg
ICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IGV4cGVjdGF0aW9ucwogICAgICAgICBzZWxmLl90ZXN0
X2lucHV0cyA9IFtdCiAgICAgICAgIGZvciB0ZXN0X2lucHV0IGluIHRlc3RfaW5wdXRzOgpAQCAt
MTAyLDcgKzEwMiw3IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAg
c2VsZi5fcmV0cnlpbmcgPSByZXRyeWluZwogCiAgICAgICAgICMgRklYTUU6IHJlbmFtZSBhbGwg
dmFyaWFibGVzIHRvIHRlc3RfcnVuX3Jlc3VsdHMgb3Igc29tZSBzdWNoIC4uLgotICAgICAgICBy
dW5fcmVzdWx0cyA9IFRlc3RSdW5SZXN1bHRzKHNlbGYuX2V4cGVjdGF0aW9ucywgbGVuKHRlc3Rf
aW5wdXRzKSArIGxlbih0ZXN0c190b19za2lwKSkKKyAgICAgICAgcnVuX3Jlc3VsdHMgPSBUZXN0
UnVuUmVzdWx0cyhzZWxmLl9leHBlY3RhdGlvbnMsIGxlbih0ZXN0X2lucHV0cykpCiAgICAgICAg
IHNlbGYuX2N1cnJlbnRfcnVuX3Jlc3VsdHMgPSBydW5fcmVzdWx0cwogICAgICAgICBzZWxmLl9w
cmludGVyLm51bV90ZXN0cyA9IGxlbih0ZXN0X2lucHV0cykKICAgICAgICAgc2VsZi5fcHJpbnRl
ci5udW1fc3RhcnRlZCA9IDAKQEAgLTExMCwxMSArMTEwLDYgQEAgY2xhc3MgTGF5b3V0VGVzdFJ1
bm5lcihvYmplY3QpOgogICAgICAgICBpZiBub3QgcmV0cnlpbmc6CiAgICAgICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X2V4cGVjdGVkKHJ1bl9yZXN1bHRzLCBzZWxmLl9leHBlY3RhdGlvbnMu
bW9kZWwoKS5nZXRfdGVzdHNfd2l0aF9yZXN1bHRfdHlwZSkKIAotICAgICAgICBmb3IgdGVzdF9u
YW1lIGluIHNldCh0ZXN0c190b19za2lwKToKLSAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RfcmVz
dWx0cy5UZXN0UmVzdWx0KHRlc3RfbmFtZSkKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gdGVz
dF9leHBlY3RhdGlvbnMuU0tJUAotICAgICAgICAgICAgcnVuX3Jlc3VsdHMuYWRkKHJlc3VsdCwg
ZXhwZWN0ZWQ9VHJ1ZSwgdGVzdF9pc19zbG93PXNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X25hbWUp
KQotCiAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCdTaGFyZGluZyB0ZXN0cyAu
Li4nKQogICAgICAgICBhbGxfc2hhcmRzID0gc2VsZi5fc2hhcmRlci5zaGFyZF90ZXN0cyh0ZXN0
X2lucHV0cywgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgc2VsZi5fb3B0aW9u
cy5mdWxseV9wYXJhbGxlbCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rl
c3RfcnVubmVyX3VuaXR0ZXN0LnB5CmluZGV4IGI4MGNhNDU0ODVhMzI5NGQwMmUyNDU1ZTVlZjNk
ZmMxNzQzZDE4OWYuLjBmMjcyMWM5MmU5NGRhYTU0NzkxN2M1NThhNjNkMjQ3YTlkZWVkNzAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L2xheW91dF90ZXN0X3J1bm5lcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXJfdW5pdHRlc3Qu
cHkKQEAgLTM1LDkgKzM1LDEwIEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBy
dW5fd2Via2l0X3Rlc3RzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy5s
YXlvdXRfdGVzdF9ydW5uZXIgaW1wb3J0IExheW91dFRlc3RSdW5uZXIsIFNoYXJkZXIsIFRlc3RS
dW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxz
IGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9k
ZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMudGVzdF9ydW5fcmVzdWx0cyBpbXBvcnQgVGVzdFJ1blJlc3VsdHMKK2Zyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0IGltcG9ydCBUZXN0CiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMudGVzdF9pbnB1dCBpbXBvcnQgVGVzdElucHV0CiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9yZXN1bHRzIGltcG9ydCBUZXN0UmVzdWx0Citmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9ydW5fcmVzdWx0cyBpbXBvcnQgVGVz
dFJ1blJlc3VsdHMKIGZyb20gd2Via2l0cHkucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydAogCiAK
QEAgLTgxLDEwICs4MiwxMCBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyVGVzdHModW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICByZXR1cm4gTGF5b3V0VGVzdFJ1bm5lcihvcHRpb25zLCBwb3J0
LCBGYWtlUHJpbnRlcigpLCBwb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCksIGxhbWJkYSB0ZXN0X25h
bWU6IEZhbHNlKQogCiAgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgcnVubmVyLCB0ZXN0cyk6Ci0g
ICAgICAgIHRlc3RfaW5wdXRzID0gW1Rlc3RJbnB1dCh0ZXN0LCA2MDAwKSBmb3IgdGVzdCBpbiB0
ZXN0c10KKyAgICAgICAgdGVzdF9pbnB1dHMgPSBbVGVzdElucHV0KFRlc3QodGVzdCksIDYwMDAp
IGZvciB0ZXN0IGluIHRlc3RzXQogICAgICAgICBleHBlY3RhdGlvbnMgPSBUZXN0RXhwZWN0YXRp
b25zKHJ1bm5lci5fcG9ydCwgdGVzdHMpCiAgICAgICAgIGV4cGVjdGF0aW9ucy5wYXJzZV9hbGxf
ZXhwZWN0YXRpb25zKCkKLSAgICAgICAgcnVubmVyLnJ1bl90ZXN0cyhleHBlY3RhdGlvbnMsIHRl
c3RfaW5wdXRzLCBzZXQoKSwKKyAgICAgICAgcnVubmVyLnJ1bl90ZXN0cyhleHBlY3RhdGlvbnMs
IHRlc3RfaW5wdXRzLAogICAgICAgICAgICAgbnVtX3dvcmtlcnM9MSwgbmVlZHNfaHR0cD1hbnko
J2h0dHAnIGluIHRlc3QgZm9yIHRlc3QgaW4gdGVzdHMpLCBuZWVkc193ZWJzb2NrZXRzPWFueShb
J3dlYnNvY2tldCcgaW4gdGVzdCBmb3IgdGVzdCBpbiB0ZXN0c10pLCBuZWVkc193ZWJfcGxhdGZv
cm1fdGVzdF9zZXJ2ZXI9YW55KFsnaW1wb3J0ZWQvdzNjJyBpbiB0ZXN0IGZvciB0ZXN0IGluIHRl
c3RzXSksIHJldHJ5aW5nPUZhbHNlKQogCiAgICAgZGVmIHRlc3RfaW50ZXJydXB0X2lmX2F0X2Zh
aWx1cmVfbGltaXRzKHNlbGYpOgpAQCAtOTIsNyArOTMsNyBAQCBjbGFzcyBMYXlvdXRUZXN0UnVu
bmVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBydW5uZXIuX29wdGlvbnMuZXhp
dF9hZnRlcl9uX2ZhaWx1cmVzID0gTm9uZQogICAgICAgICBydW5uZXIuX29wdGlvbnMuZXhpdF9h
ZnRlcl9uX2NyYXNoZXNfb3JfdGltZXMgPSBOb25lCiAgICAgICAgIHRlc3RfbmFtZXMgPSBbJ3Bh
c3Nlcy90ZXh0Lmh0bWwnLCAncGFzc2VzL2ltYWdlLmh0bWwnXQotICAgICAgICBydW5uZXIuX3Rl
c3RfaW5wdXRzID0gW1Rlc3RJbnB1dCh0ZXN0X25hbWUsIDYwMDApIGZvciB0ZXN0X25hbWUgaW4g
dGVzdF9uYW1lc10KKyAgICAgICAgcnVubmVyLl90ZXN0X2lucHV0cyA9IFtUZXN0SW5wdXQoVGVz
dCh0ZXN0X25hbWUpLCA2MDAwKSBmb3IgdGVzdF9uYW1lIGluIHRlc3RfbmFtZXNdCiAKICAgICAg
ICAgZXhwZWN0YXRpb25zID0gVGVzdEV4cGVjdGF0aW9ucyhydW5uZXIuX3BvcnQsIHRlc3RfbmFt
ZXMpCiAgICAgICAgIGV4cGVjdGF0aW9ucy5wYXJzZV9hbGxfZXhwZWN0YXRpb25zKCkKQEAgLTI2
MSw3ICsyNjIsNyBAQCBjbGFzcyBTaGFyZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAg
IF0KIAogICAgIGRlZiBnZXRfdGVzdF9pbnB1dChzZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAgICBy
ZXR1cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgbmVlZHNfc2VydmVycz0odGVzdF9maWxlLnN0YXJ0
c3dpdGgoJ2h0dHAnKSkpCisgICAgICAgIHJldHVybiBUZXN0SW5wdXQoVGVzdCh0ZXN0X2ZpbGUp
LCBuZWVkc19zZXJ2ZXJzPSh0ZXN0X2ZpbGUuc3RhcnRzd2l0aCgnaHR0cCcpKSkKIAogICAgIGRl
ZiBnZXRfc2hhcmRzKHNlbGYsIG51bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCwgdGVzdF9saXN0
PU5vbmUpOgogICAgICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja1N5c3RlbUhvc3QoKSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyLnB5CmluZGV4IDA4MGY0MzQwMWJkOWI4MGYyMjhjZWQxYmQyOTEzM2Q4ZTU1ZmRm
ODEuLjZiNDhiODBkODYyYzY3Mzk1MTM5Y2RkZWUzMzE5ODY0YmUzMTQ0NjQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weQpAQCAtNTUsNyArNTUsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5t
b2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscyBpbXBvcnQgdGVzdF9yZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMgaW1wb3J0IHRlc3RfcnVuX3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscy50ZXN0X2lucHV0IGltcG9ydCBUZXN0SW5wdXQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLm1vZGVscy50ZXN0X3J1bl9yZXN1bHRzIGltcG9ydCBJTlRFUlJVUFRFRF9FWElUX1NUQVRV
UworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfcnVuX3Jlc3VsdHMgaW1w
b3J0IElOVEVSUlVQVEVEX0VYSVRfU1RBVFVTLCBUZXN0UnVuUmVzdWx0cwogZnJvbSB3ZWJraXRw
eS50b29sLmdyYW1tYXIgaW1wb3J0IHBsdXJhbGl6ZQogZnJvbSB3ZWJraXRweS5yZXN1bHRzLnVw
bG9hZCBpbXBvcnQgVXBsb2FkCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLmRldmljZV90eXBlIGltcG9y
dCBEZXZpY2VUeXBlCkBAIC05NCw4ICs5NCwzNCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAg
ICAgICAgIHRlc3Rfb3B0aW9uc19qc29uX3BhdGggPSBzZWxmLl9wb3J0LnBhdGhfZnJvbV93ZWJr
aXRfYmFzZShzZWxmLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksICJ0ZXN0cy1vcHRpb25zLmpzb24i
KQogICAgICAgICBzZWxmLl90ZXN0c19vcHRpb25zID0ganNvbi5sb2FkcyhzZWxmLl9maWxlc3lz
dGVtLnJlYWRfdGV4dF9maWxlKHRlc3Rfb3B0aW9uc19qc29uX3BhdGgpKSBpZiBzZWxmLl9maWxl
c3lzdGVtLmV4aXN0cyh0ZXN0X29wdGlvbnNfanNvbl9wYXRoKSBlbHNlIHt9CiAKLSAgICBkZWYg
X2NvbGxlY3RfdGVzdHMoc2VsZiwgYXJncywgZGV2aWNlX3R5cGU9Tm9uZSk6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9maW5kZXIuZmluZF90ZXN0cyhzZWxmLl9vcHRpb25zLCBhcmdzLCBkZXZpY2Vf
dHlwZT1kZXZpY2VfdHlwZSkKKyAgICBkZWYgX2NvbGxlY3RfdGVzdHMoc2VsZiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgcGF0aHMsICAjIHR5cGU6IExpc3Rbc3RyXQorICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VfdHlwZV9saXN0LCAgIyB0eXBlOiBMaXN0W09wdGlvbmFsW0RldmljZVR5
cGVdXQorICAgICAgICAgICAgICAgICAgICAgICApOgorICAgICAgICBhZ2dyZWdhdGVfdGVzdHMg
PSBzZXQoKSAgIyB0eXBlOiBTZXRbVGVzdF0KKyAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1
biA9IHNldCgpICAjIHR5cGU6IFNldFtUZXN0XQorICAgICAgICB0ZXN0c190b19ydW5fYnlfZGV2
aWNlID0ge30gICMgdHlwZTogRGljdFtPcHRpb25hbFtEZXZpY2VUeXBlXSwgTGlzdFtUZXN0XV0K
KworICAgICAgICBkZXZpY2VfdHlwZV9saXN0ID0gc2VsZi5fcG9ydC5zdXBwb3J0ZWRfZGV2aWNl
X3R5cGVzKCkKKyAgICAgICAgZm9yIGRldmljZV90eXBlIGluIGRldmljZV90eXBlX2xpc3Q6Cisg
ICAgICAgICAgICBmb3JfZGV2aWNlX3R5cGUgPSB1J2ZvciB7fSAnLmZvcm1hdChkZXZpY2VfdHlw
ZSkgaWYgZGV2aWNlX3R5cGUgZWxzZSAnJworICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0
ZV91cGRhdGUodSdDb2xsZWN0aW5nIHRlc3RzIHt9Li4uJy5mb3JtYXQoZm9yX2RldmljZV90eXBl
KSkKKyAgICAgICAgICAgIHBhdGhzLCB0ZXN0cyA9IHNlbGYuX2ZpbmRlci5maW5kX3Rlc3RzKHNl
bGYuX29wdGlvbnMsIHBhdGhzLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKKyAgICAgICAgICAg
IGFnZ3JlZ2F0ZV90ZXN0cy51cGRhdGUodGVzdHMpCisKKyAgICAgICAgICAgIHRlc3RfbmFtZXMg
PSBbdGVzdC50ZXN0X3BhdGggZm9yIHRlc3QgaW4gdGVzdHNdCisKKyAgICAgICAgICAgIHNlbGYu
X3ByaW50ZXIud3JpdGVfdXBkYXRlKHUnUGFyc2luZyBleHBlY3RhdGlvbnMge30uLi4nLmZvcm1h
dChmb3JfZGV2aWNlX3R5cGUpKQorICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zW2Rldmlj
ZV90eXBlXSA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoc2VsZi5fcG9ydCwg
dGVzdF9uYW1lcywgZm9yY2VfZXhwZWN0YXRpb25zX3Bhc3M9c2VsZi5fb3B0aW9ucy5mb3JjZSwg
ZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCisgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNb
ZGV2aWNlX3R5cGVdLnBhcnNlX2FsbF9leHBlY3RhdGlvbnMoKQorCisgICAgICAgICAgICB0ZXN0
c190b19ydW4gPSBzZWxmLl90ZXN0c190b19ydW4odGVzdHMsIGRldmljZV90eXBlPWRldmljZV90
eXBlKQorICAgICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZVtkZXZpY2VfdHlwZV0gPSBb
dGVzdCBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4gaWYgdGVzdCBub3QgaW4gYWdncmVnYXRlX3Rl
c3RzX3RvX3J1bl0KKyAgICAgICAgICAgIGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4udXBkYXRlKHRl
c3RzX3RvX3J1bl9ieV9kZXZpY2VbZGV2aWNlX3R5cGVdKQorCisgICAgICAgIGFnZ3JlZ2F0ZV90
ZXN0c190b19za2lwID0gYWdncmVnYXRlX3Rlc3RzIC0gYWdncmVnYXRlX3Rlc3RzX3RvX3J1bgor
CisgICAgICAgIHJldHVybiB0ZXN0c190b19ydW5fYnlfZGV2aWNlLCBhZ2dyZWdhdGVfdGVzdHNf
dG9fc2tpcAogCiAgICAgZGVmIF9pc19odHRwX3Rlc3Qoc2VsZiwgdGVzdCk6CiAgICAgICAgIHJl
dHVybiBzZWxmLkhUVFBfU1VCRElSIGluIHRlc3Qgb3Igc2VsZi5faXNfd2Vic29ja2V0X3Rlc3Qo
dGVzdCkgb3Igc2VsZi5fbmVlZHNfd2ViX3BsYXRmb3JtX3Rlc3QodGVzdCkKQEAgLTE4Nyw0MSAr
MjEzLDQwIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gKHRlc3Rz
X3RvX3J1biwgc2V0KHRlc3RfbmFtZXMpIC0gc2V0KHRlc3RzX3RvX3J1bikpCiAKLSAgICBkZWYg
X3ByZXBhcmVfbGlzdHMoc2VsZiwgcGF0aHMsIHRlc3RfbmFtZXMsIGRldmljZV90eXBlPU5vbmUp
OgotICAgICAgICB0ZXN0c190b19za2lwID0gc2VsZi5fc2tpcF90ZXN0cyh0ZXN0X25hbWVzLCBz
ZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLCBzZWxmLl9odHRwX3Rlc3RzKHRlc3RfbmFt
ZXMpKQotICAgICAgICB0ZXN0c190b19ydW4gPSBbdGVzdCBmb3IgdGVzdCBpbiB0ZXN0X25hbWVz
IGlmIHRlc3Qgbm90IGluIHRlc3RzX3RvX3NraXBdCisgICAgZGVmIF90ZXN0c190b19ydW4oc2Vs
ZiwgdGVzdHMsIGRldmljZV90eXBlKToKKyAgICAgICAgdGVzdF9uYW1lcyA9IHt0ZXN0LnRlc3Rf
cGF0aCBmb3IgdGVzdCBpbiB0ZXN0c30KKyAgICAgICAgdGVzdF9uYW1lc190b19za2lwID0gc2Vs
Zi5fc2tpcF90ZXN0cyh0ZXN0X25hbWVzLCBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVd
LCBzZWxmLl9odHRwX3Rlc3RzKHRlc3RfbmFtZXMpKQorICAgICAgICB0ZXN0c190b19ydW4gPSBb
dGVzdCBmb3IgdGVzdCBpbiB0ZXN0cyBpZiB0ZXN0LnRlc3RfcGF0aCBub3QgaW4gdGVzdF9uYW1l
c190b19za2lwXQogCiAgICAgICAgICMgQ3JlYXRlIGEgc29ydGVkIGxpc3Qgb2YgdGVzdCBmaWxl
cyBzbyB0aGUgc3Vic2V0IGNodW5rLAogICAgICAgICAjIGlmIHVzZWQsIGNvbnRhaW5zIGFscGhh
YmV0aWNhbGx5IGNvbnNlY3V0aXZlIHRlc3RzLgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm9y
ZGVyID09ICduYXR1cmFsJzoKLSAgICAgICAgICAgIHRlc3RzX3RvX3J1bi5zb3J0KGtleT1zZWxm
Ll9wb3J0LnRlc3Rfa2V5KQorICAgICAgICAgICAgdGVzdHNfdG9fcnVuLnNvcnQoa2V5PWxhbWJk
YSB4OiBzZWxmLl9wb3J0LnRlc3Rfa2V5KHgudGVzdF9wYXRoKSkKICAgICAgICAgZWxpZiBzZWxm
Ll9vcHRpb25zLm9yZGVyID09ICdyYW5kb20nOgogICAgICAgICAgICAgcmFuZG9tLnNodWZmbGUo
dGVzdHNfdG9fcnVuKQogCi0gICAgICAgIHRlc3RzX3RvX3J1biwgdGVzdHNfaW5fb3RoZXJfY2h1
bmtzID0gc2VsZi5fc3BsaXRfaW50b19jaHVua3ModGVzdHNfdG9fcnVuKQotICAgICAgICBzZWxm
Ll9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLmFkZF9za2lwcGVkX3Rlc3RzKHRlc3RzX2luX290
aGVyX2NodW5rcykKLSAgICAgICAgdGVzdHNfdG9fc2tpcC51cGRhdGUodGVzdHNfaW5fb3RoZXJf
Y2h1bmtzKQotCi0gICAgICAgIHJldHVybiB0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAKKyAg
ICAgICAgdGVzdHNfdG9fcnVuLCBfID0gc2VsZi5fc3BsaXRfaW50b19jaHVua3ModGVzdHNfdG9f
cnVuKQorICAgICAgICByZXR1cm4gdGVzdHNfdG9fcnVuCiAKLSAgICBkZWYgX3Rlc3RfaW5wdXRf
Zm9yX2ZpbGUoc2VsZiwgdGVzdF9maWxlLCBkZXZpY2VfdHlwZT1Ob25lKToKLSAgICAgICAgcmV0
dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNsb3df
dGltZV9vdXRfbXMgaWYgc2VsZi5fdGVzdF9pc19zbG93KHRlc3RfZmlsZSwgZGV2aWNlX3R5cGU9
ZGV2aWNlX3R5cGUpIGVsc2Ugc2VsZi5fb3B0aW9ucy50aW1lX291dF9tcywKLSAgICAgICAgICAg
IHNlbGYuX2lzX2h0dHBfdGVzdCh0ZXN0X2ZpbGUpLAotICAgICAgICAgICAgc2hvdWxkX2R1bXBf
anNjb25zb2xlbG9nX2luX3N0ZGVycj1zZWxmLl90ZXN0X3Nob3VsZF9kdW1wX2pzY29uc29sZWxv
Z19pbl9zdGRlcnIodGVzdF9maWxlLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkpCisgICAgZGVm
IF90ZXN0X2lucHV0X2Zvcl9maWxlKHNlbGYsIHRlc3RfZmlsZSwgZGV2aWNlX3R5cGUpOgorICAg
ICAgICByZXR1cm4gVGVzdElucHV0KAorICAgICAgICAgICAgdGVzdF9maWxlLAorICAgICAgICAg
ICAgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0
ZXN0X2ZpbGUudGVzdF9wYXRoLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkgZWxzZSBzZWxmLl9v
cHRpb25zLnRpbWVfb3V0X21zLAorICAgICAgICAgICAgc2VsZi5faXNfaHR0cF90ZXN0KHRlc3Rf
ZmlsZS50ZXN0X3BhdGgpLAorICAgICAgICAgICAgc2hvdWxkX2R1bXBfanNjb25zb2xlbG9nX2lu
X3N0ZGVycj1zZWxmLl90ZXN0X3Nob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIodGVz
dF9maWxlLnRlc3RfcGF0aCwgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpKQogCi0gICAgZGVmIF90
ZXN0X2lzX3Nsb3coc2VsZiwgdGVzdF9maWxlLCBkZXZpY2VfdHlwZT1Ob25lKToKKyAgICBkZWYg
X3Rlc3RfaXNfc2xvdyhzZWxmLCB0ZXN0X2ZpbGUsIGRldmljZV90eXBlKToKICAgICAgICAgaWYg
c2VsZi5fZXhwZWN0YXRpb25zW2RldmljZV90eXBlXS5tb2RlbCgpLmhhc19tb2RpZmllcih0ZXN0
X2ZpbGUsIHRlc3RfZXhwZWN0YXRpb25zLlNMT1cpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUK
ICAgICAgICAgcmV0dXJuICJzbG93IiBpbiBzZWxmLl90ZXN0c19vcHRpb25zLmdldCh0ZXN0X2Zp
bGUsIFtdKQogCi0gICAgZGVmIF90ZXN0X3Nob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRl
cnIoc2VsZiwgdGVzdF9maWxlLCBkZXZpY2VfdHlwZT1Ob25lKToKKyAgICBkZWYgX3Rlc3Rfc2hv
dWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVycihzZWxmLCB0ZXN0X2ZpbGUsIGRldmljZV90
eXBlKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0ubW9k
ZWwoKS5oYXNfbW9kaWZpZXIodGVzdF9maWxlLCB0ZXN0X2V4cGVjdGF0aW9ucy5EVU1QSlNDT05T
T0xFTE9HSU5TVERFUlIpCiAKICAgICBkZWYgbmVlZHNfc2VydmVycyhzZWxmLCB0ZXN0X25hbWVz
KToKICAgICAgICAgcmV0dXJuIGFueShzZWxmLl9pc19odHRwX3Rlc3QodGVzdF9uYW1lKSBmb3Ig
dGVzdF9uYW1lIGluIHRlc3RfbmFtZXMpIGFuZCBzZWxmLl9vcHRpb25zLmh0dHAKIAotICAgIGRl
ZiBfZ2V0X3Rlc3RfaW5wdXRzKHNlbGYsIHRlc3RzX3RvX3J1biwgcmVwZWF0X2VhY2gsIGl0ZXJh
dGlvbnMsIGRldmljZV90eXBlPU5vbmUpOgorICAgIGRlZiBfZ2V0X3Rlc3RfaW5wdXRzKHNlbGYs
IHRlc3RzX3RvX3J1biwgcmVwZWF0X2VhY2gsIGl0ZXJhdGlvbnMsIGRldmljZV90eXBlKToKICAg
ICAgICAgdGVzdF9pbnB1dHMgPSBbXQogICAgICAgICBmb3IgXyBpbiByYW5nZShpdGVyYXRpb25z
KToKICAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1bjoKQEAgLTIyOSwxMiArMjU0
LDEyIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgdGVzdF9p
bnB1dHMuYXBwZW5kKHNlbGYuX3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdCwgZGV2aWNlX3R5cGU9
ZGV2aWNlX3R5cGUpKQogICAgICAgICByZXR1cm4gdGVzdF9pbnB1dHMKIAotICAgIGRlZiBfdXBk
YXRlX3dvcmtlcl9jb3VudChzZWxmLCB0ZXN0X25hbWVzLCBkZXZpY2VfdHlwZT1Ob25lKToKKyAg
ICBkZWYgX3VwZGF0ZV93b3JrZXJfY291bnQoc2VsZiwgdGVzdF9uYW1lcywgZGV2aWNlX3R5cGUp
OgogICAgICAgICB0ZXN0X2lucHV0cyA9IHNlbGYuX2dldF90ZXN0X2lucHV0cyh0ZXN0X25hbWVz
LCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNoLCBzZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMsIGRl
dmljZV90eXBlPWRldmljZV90eXBlKQogICAgICAgICB3b3JrZXJfY291bnQgPSBzZWxmLl9ydW5u
ZXIuZ2V0X3dvcmtlcl9jb3VudCh0ZXN0X2lucHV0cywgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRf
cHJvY2Vzc2VzKSkKICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgPSB3b3Jr
ZXJfY291bnQKIAotICAgIGRlZiBfc2V0X3VwX3J1bihzZWxmLCB0ZXN0X25hbWVzLCBkZXZpY2Vf
dHlwZT1Ob25lKToKKyAgICBkZWYgX3NldF91cF9ydW4oc2VsZiwgdGVzdF9uYW1lcywgZGV2aWNl
X3R5cGUpOgogICAgICAgICAjIFRoaXMgbXVzdCBiZSBzdGFydGVkIGJlZm9yZSB3ZSBjaGVjayB0
aGUgc3lzdGVtIGRlcGVuZGVuY2llcywKICAgICAgICAgIyBzaW5jZSB0aGUgaGVscGVyIG1heSBk
byB0aGluZ3MgdG8gbWFrZSB0aGUgc2V0dXAgY29ycmVjdC4KICAgICAgICAgc2VsZi5fcHJpbnRl
ci53cml0ZV91cGRhdGUoIlN0YXJ0aW5nIGhlbHBlciAuLi4iKQpAQCAtMjU2LDU1ICsyODEsNDgg
QEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogCiAgICAgZGVmIHJ1bihzZWxmLCBhcmdzKToKICAg
ICAgICAgbnVtX2ZhaWxlZF91cGxvYWRzID0gMAotICAgICAgICB0b3RhbF90ZXN0cyA9IHNldCgp
Ci0gICAgICAgIGFnZ3JlZ2F0ZV90ZXN0X25hbWVzID0gc2V0KCkKLSAgICAgICAgYWdncmVnYXRl
X3Rlc3RzID0gc2V0KCkKLSAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZSA9IHt9CiAKICAg
ICAgICAgZGV2aWNlX3R5cGVfbGlzdCA9IHNlbGYuX3BvcnQuc3VwcG9ydGVkX2RldmljZV90eXBl
cygpCi0gICAgICAgIGZvciBkZXZpY2VfdHlwZSBpbiBkZXZpY2VfdHlwZV9saXN0OgotICAgICAg
ICAgICAgIiIiUnVuIHRoZSB0ZXN0cyBhbmQgcmV0dXJuIGEgUnVuRGV0YWlscyBvYmplY3Qgd2l0
aCB0aGUgcmVzdWx0cy4iIiIKLSAgICAgICAgICAgIGZvcl9kZXZpY2VfdHlwZSA9IHUnZm9yIHt9
ICcuZm9ybWF0KGRldmljZV90eXBlKSBpZiBkZXZpY2VfdHlwZSBlbHNlICcnCi0gICAgICAgICAg
ICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSh1J0NvbGxlY3RpbmcgdGVzdHMge30uLi4nLmZv
cm1hdChmb3JfZGV2aWNlX3R5cGUpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IHBhdGhzLCB0ZXN0cyA9IHNlbGYuX2NvbGxlY3RfdGVzdHMoYXJncywgZGV2aWNlX3R5cGU9ZGV2
aWNlX3R5cGUpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgICAgICAj
IFRoaXMgaXMgcmFpc2VkIGlmIC0tdGVzdC1saXN0IGRvZXNuJ3QgZXhpc3QKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5SdW5EZXRhaWxzKGV4aXRfY29kZT0tMSkKLQot
ICAgICAgICAgICAgdGVzdF9uYW1lcyA9IFt0ZXN0LnRlc3RfcGF0aCBmb3IgdGVzdCBpbiB0ZXN0
c10KLQotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUodSdQYXJzaW5nIGV4
cGVjdGF0aW9ucyB7fS4uLicuZm9ybWF0KGZvcl9kZXZpY2VfdHlwZSkpCi0gICAgICAgICAgICBz
ZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4
cGVjdGF0aW9ucyhzZWxmLl9wb3J0LCB0ZXN0X25hbWVzLCBmb3JjZV9leHBlY3RhdGlvbnNfcGFz
cz1zZWxmLl9vcHRpb25zLmZvcmNlLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKLSAgICAgICAg
ICAgIHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0ucGFyc2VfYWxsX2V4cGVjdGF0aW9u
cygpCi0KLSAgICAgICAgICAgIGFnZ3JlZ2F0ZV90ZXN0X25hbWVzLnVwZGF0ZSh0ZXN0X25hbWVz
KQotICAgICAgICAgICAgdGVzdHNfdG9fcnVuLCB0ZXN0c190b19za2lwID0gc2VsZi5fcHJlcGFy
ZV9saXN0cyhwYXRocywgdGVzdF9uYW1lcywgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIHRlc3RzX3RvX3J1bl9ieV9kZXZpY2UsIGFnZ3JlZ2F0ZV90
ZXN0c190b19za2lwID0gc2VsZi5fY29sbGVjdF90ZXN0cyhhcmdzLCBkZXZpY2VfdHlwZV9saXN0
KQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICMgVGhpcyBpcyByYWlzZWQg
aWYgLS10ZXN0LWxpc3QgZG9lc24ndCBleGlzdAorICAgICAgICAgICAgcmV0dXJuIHRlc3RfcnVu
X3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEpCiAKLSAgICAgICAgICAgIHRvdGFsX3Rl
c3RzLnVwZGF0ZSh0ZXN0c190b19ydW4pCi0gICAgICAgICAgICB0b3RhbF90ZXN0cy51cGRhdGUo
dGVzdHNfdG9fc2tpcCkKKyAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1biA9IHNldCgpICAj
IHR5cGU6IFNldFtUZXN0XQorICAgICAgICBmb3IgdiBpbiB0ZXN0c190b19ydW5fYnlfZGV2aWNl
LnZhbHVlcygpOgorICAgICAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1bi51cGRhdGUodikK
IAotICAgICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZVtkZXZpY2VfdHlwZV0gPSBbdGVz
dCBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4gaWYgdGVzdCBub3QgaW4gYWdncmVnYXRlX3Rlc3Rz
XQotICAgICAgICAgICAgYWdncmVnYXRlX3Rlc3RzLnVwZGF0ZSh0ZXN0c190b19ydW4pCisgICAg
ICAgIHNraXBwZWRfdGVzdHNfYnlfcGF0aCA9IGRlZmF1bHRkaWN0KHNldCkKKyAgICAgICAgZm9y
IHRlc3QgaW4gYWdncmVnYXRlX3Rlc3RzX3RvX3NraXA6CisgICAgICAgICAgICBza2lwcGVkX3Rl
c3RzX2J5X3BhdGhbdGVzdC50ZXN0X3BhdGhdLmFkZCh0ZXN0KQogCiAgICAgICAgICMgSWYgYSB0
ZXN0IGlzIG1hcmtlZCBza2lwcGVkLCBidXQgd2FzIGV4cGxpY2l0bHkgcmVxdWVzdGVkLCBydW4g
aXQgYW55d2F5cwogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnNraXBwZWQgIT0gJ2Fsd2F5cyc6
CiAgICAgICAgICAgICBmb3IgYXJnIGluIGFyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgYXJnIGlu
IHRvdGFsX3Rlc3RzIGFuZCBhcmcgbm90IGluIGFnZ3JlZ2F0ZV90ZXN0czoKLSAgICAgICAgICAg
ICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZVtkZXZpY2VfdHlwZV9saXN0WzBdXS5hcHBl
bmQoYXJnKQotICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdHMuYWRkKGFyZykKLQot
ICAgICAgICB0ZXN0c190b19za2lwID0gdG90YWxfdGVzdHMgLSBhZ2dyZWdhdGVfdGVzdHMKLSAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9mb3VuZChsZW4oYWdncmVnYXRlX3Rlc3RfbmFtZXMp
LCBsZW4oYWdncmVnYXRlX3Rlc3RzKSwgc2VsZi5fb3B0aW9ucy5yZXBlYXRfZWFjaCwgc2VsZi5f
b3B0aW9ucy5pdGVyYXRpb25zKQorICAgICAgICAgICAgICAgIGlmIGFyZyBpbiBza2lwcGVkX3Rl
c3RzX2J5X3BhdGg6CisgICAgICAgICAgICAgICAgICAgIHRlc3RzID0gc2tpcHBlZF90ZXN0c19i
eV9wYXRoW2FyZ10KKyAgICAgICAgICAgICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZVtk
ZXZpY2VfdHlwZV9saXN0WzBdXS5leHRlbmQodGVzdHMpCisgICAgICAgICAgICAgICAgICAgIGFn
Z3JlZ2F0ZV90ZXN0c190b19ydW4gfD0gdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgYWdncmVn
YXRlX3Rlc3RzX3RvX3NraXAgLT0gdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgZGVsIHNraXBw
ZWRfdGVzdHNfYnlfcGF0aFthcmddCisKKyAgICAgICAgYWdncmVnYXRlX3Rlc3RzID0gYWdncmVn
YXRlX3Rlc3RzX3RvX3J1biB8IGFnZ3JlZ2F0ZV90ZXN0c190b19za2lwCisKKyAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF9mb3VuZChsZW4oYWdncmVnYXRlX3Rlc3RzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZW4oYWdncmVnYXRlX3Rlc3RzX3RvX3J1biksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXBlYXRfZWFjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLml0ZXJhdGlv
bnMpCiAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogCiAgICAgICAgICMgQ2hlY2sg
dG8gc2VlIGlmIGFsbCB0ZXN0cyB3ZSBhcmUgcnVubmluZyBhcmUgc2tpcHBlZC4KLSAgICAgICAg
aWYgdGVzdHNfdG9fc2tpcCA9PSB0b3RhbF90ZXN0czoKKyAgICAgICAgaWYgYWdncmVnYXRlX3Rl
c3RzID09IGFnZ3JlZ2F0ZV90ZXN0c190b19za2lwOgorICAgICAgICAgICAgIyBYWFg6IHRoaXMg
aXMgY3VycmVudGx5IGlkZW50aWNhbCB0byB0aGUgZm9sbG93IGlmLCB3aGljaCBsaWtlbHkgaXNu
J3QgaW50ZW5kZWQKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkFsbCB0ZXN0cyBza2lwcGVkLiIp
CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5SdW5EZXRhaWxzKGV4aXRfY29k
ZT0wLCBza2lwcGVkX2FsbF90ZXN0cz1UcnVlKQogCiAgICAgICAgICMgQ2hlY2sgdG8gbWFrZSBz
dXJlIHdlIGhhdmUgbm8gdGVzdHMgdG8gcnVuIHRoYXQgYXJlIG5vdCBza2lwcGVkLgotICAgICAg
ICBpZiBub3Qgc3VtKFtsZW4odGVzdHMpIGZvciB0ZXN0cyBpbiBpdGVydmFsdWVzKHRlc3RzX3Rv
X3J1bl9ieV9kZXZpY2UpXSk6CisgICAgICAgIGlmIG5vdCBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVu
OgogICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnTm8gdGVzdHMgdG8gcnVuLicpCiAgICAgICAg
ICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5SdW5EZXRhaWxzKGV4aXRfY29kZT0tMSkKIApA
QCAtMzE5LDkgKzMzNyw5IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgIyBDcmVh
dGUgdGhlIG91dHB1dCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LgogICAg
ICAgICBzZWxmLl9wb3J0Lmhvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxm
Ll9yZXN1bHRzX2RpcmVjdG9yeSkKIAotICAgICAgICBuZWVkc19odHRwID0gYW55KChzZWxmLl9p
c19odHRwX3Rlc3QodGVzdCkgYW5kIG5vdCBzZWxmLl9uZWVkc193ZWJfcGxhdGZvcm1fdGVzdCh0
ZXN0KSkgZm9yIHRlc3RzIGluIGl0ZXJ2YWx1ZXModGVzdHNfdG9fcnVuX2J5X2RldmljZSkgZm9y
IHRlc3QgaW4gdGVzdHMpCi0gICAgICAgIG5lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0X3NlcnZlciA9
IGFueShzZWxmLl9uZWVkc193ZWJfcGxhdGZvcm1fdGVzdCh0ZXN0KSBmb3IgdGVzdHMgaW4gaXRl
cnZhbHVlcyh0ZXN0c190b19ydW5fYnlfZGV2aWNlKSBmb3IgdGVzdCBpbiB0ZXN0cykKLSAgICAg
ICAgbmVlZHNfd2Vic29ja2V0cyA9IGFueShzZWxmLl9pc193ZWJzb2NrZXRfdGVzdCh0ZXN0KSBm
b3IgdGVzdHMgaW4gaXRlcnZhbHVlcyh0ZXN0c190b19ydW5fYnlfZGV2aWNlKSBmb3IgdGVzdCBp
biB0ZXN0cykKKyAgICAgICAgbmVlZHNfaHR0cCA9IGFueSgoc2VsZi5faXNfaHR0cF90ZXN0KHRl
c3QudGVzdF9wYXRoKSBhbmQgbm90IHNlbGYuX25lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0KHRlc3Qu
dGVzdF9wYXRoKSkgZm9yIHRlc3RzIGluIGl0ZXJ2YWx1ZXModGVzdHNfdG9fcnVuX2J5X2Rldmlj
ZSkgZm9yIHRlc3QgaW4gdGVzdHMpCisgICAgICAgIG5lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0X3Nl
cnZlciA9IGFueShzZWxmLl9uZWVkc193ZWJfcGxhdGZvcm1fdGVzdCh0ZXN0LnRlc3RfcGF0aCkg
Zm9yIHRlc3RzIGluIGl0ZXJ2YWx1ZXModGVzdHNfdG9fcnVuX2J5X2RldmljZSkgZm9yIHRlc3Qg
aW4gdGVzdHMpCisgICAgICAgIG5lZWRzX3dlYnNvY2tldHMgPSBhbnkoc2VsZi5faXNfd2Vic29j
a2V0X3Rlc3QodGVzdC50ZXN0X3BhdGgpIGZvciB0ZXN0cyBpbiBpdGVydmFsdWVzKHRlc3RzX3Rv
X3J1bl9ieV9kZXZpY2UpIGZvciB0ZXN0IGluIHRlc3RzKQogICAgICAgICBzZWxmLl9ydW5uZXIg
PSBMYXlvdXRUZXN0UnVubmVyKHNlbGYuX29wdGlvbnMsIHNlbGYuX3BvcnQsIHNlbGYuX3ByaW50
ZXIsIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCBzZWxmLl90ZXN0X2lzX3Nsb3csCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHNfaHR0cD1uZWVkc19odHRwLCBu
ZWVkc193ZWJfcGxhdGZvcm1fdGVzdF9zZXJ2ZXI9bmVlZHNfd2ViX3BsYXRmb3JtX3Rlc3Rfc2Vy
dmVyLCBuZWVkc193ZWJzb2NrZXRzPW5lZWRzX3dlYnNvY2tldHMpCiAKQEAgLTM1OCw3ICszNzYs
MTQgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9
IHNlbGYuX3BvcnQuY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNlbGYuX3BvcnQudGFyZ2V0X2hv
c3QoMCkpCiAgICAgICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbi5nZXQoJ2ZsYXZvcicsIE5v
bmUpOiAgIyBUaGUgLS1yZXN1bHQtcmVwb3J0LWZsYXZvciBhcmd1bWVudCBzaG91bGQgb3ZlcnJp
ZGUgd2sxL3drMgogICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25bJ2ZsYXZvciddID0gJ3dr
MicgaWYgc2VsZi5fb3B0aW9ucy53ZWJraXRfdGVzdF9ydW5uZXIgZWxzZSAnd2sxJwotICAgICAg
ICAgICAgdGVtcF9pbml0aWFsX3Jlc3VsdHMsIHRlbXBfcmV0cnlfcmVzdWx0cywgdGVtcF9lbmFi
bGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5ID0gc2VsZi5fcnVuX3Rlc3Rfc3Vic2V0KHRlc3RzX3Rv
X3J1bl9ieV9kZXZpY2VbZGV2aWNlX3R5cGVdLCB0ZXN0c190b19za2lwLCBkZXZpY2VfdHlwZT1k
ZXZpY2VfdHlwZSkKKyAgICAgICAgICAgIHRlbXBfaW5pdGlhbF9yZXN1bHRzLCB0ZW1wX3JldHJ5
X3Jlc3VsdHMsIHRlbXBfZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSA9IHNlbGYuX3J1bl90
ZXN0X3N1YnNldCh0ZXN0c190b19ydW5fYnlfZGV2aWNlW2RldmljZV90eXBlXSwgZGV2aWNlX3R5
cGU9ZGV2aWNlX3R5cGUpCisKKyAgICAgICAgICAgIHNraXBwZWRfcmVzdWx0cyA9IFRlc3RSdW5S
ZXN1bHRzKHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0sIGxlbihhZ2dyZWdhdGVfdGVz
dHNfdG9fc2tpcCkpCisgICAgICAgICAgICBmb3Igc2tpcHBlZF90ZXN0IGluIHNldChhZ2dyZWdh
dGVfdGVzdHNfdG9fc2tpcCk6CisgICAgICAgICAgICAgICAgc2tpcHBlZF9yZXN1bHQgPSB0ZXN0
X3Jlc3VsdHMuVGVzdFJlc3VsdChza2lwcGVkX3Rlc3QudGVzdF9wYXRoKQorICAgICAgICAgICAg
ICAgIHNraXBwZWRfcmVzdWx0LnR5cGUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQCisgICAgICAg
ICAgICAgICAgc2tpcHBlZF9yZXN1bHRzLmFkZChza2lwcGVkX3Jlc3VsdCwgZXhwZWN0ZWQ9VHJ1
ZSwgdGVzdF9pc19zbG93PXNlbGYuX3Rlc3RfaXNfc2xvdyhza2lwcGVkX3Rlc3QudGVzdF9wYXRo
LCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkpCisgICAgICAgICAgICB0ZW1wX2luaXRpYWxfcmVz
dWx0cyA9IHRlbXBfaW5pdGlhbF9yZXN1bHRzLm1lcmdlKHNraXBwZWRfcmVzdWx0cykKIAogICAg
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5yZXBvcnRfdXJsczoKICAgICAgICAgICAgICAgICBz
ZWxmLl9wcmludGVyLndyaXRlbG4oJ1xuJykKQEAgLTQxOSwxMCArNDQ0LDEzIEBAIGNsYXNzIE1h
bmFnZXIob2JqZWN0KToKICAgICAgICAgICAgIHJlc3VsdC5leGl0X2NvZGUgPSAtMQogICAgICAg
ICByZXR1cm4gcmVzdWx0CiAKLSAgICBkZWYgX3J1bl90ZXN0X3N1YnNldChzZWxmLCB0ZXN0c190
b19ydW4sIHRlc3RzX3RvX3NraXAsIGRldmljZV90eXBlPU5vbmUpOgorICAgIGRlZiBfcnVuX3Rl
c3Rfc3Vic2V0KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfdG9fcnVuLCAg
IyB0eXBlOiBMaXN0W1Rlc3RdCisgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX3R5cGUs
ICAjIHR5cGU6IE9wdGlvbmFsW0RldmljZVR5cGVdCisgICAgICAgICAgICAgICAgICAgICAgICAg
KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRy
eSA9IEZhbHNlCi0gICAgICAgICAgICBpbml0aWFsX3Jlc3VsdHMgPSBzZWxmLl9ydW5fdGVzdHMo
dGVzdHNfdG9fcnVuLCB0ZXN0c190b19za2lwLCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNoLCBz
ZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3Nl
cyksIHJldHJ5aW5nPUZhbHNlLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKKyAgICAgICAgICAg
IGluaXRpYWxfcmVzdWx0cyA9IHNlbGYuX3J1bl90ZXN0cyh0ZXN0c190b19ydW4sIHNlbGYuX29w
dGlvbnMucmVwZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucywgaW50KHNlbGYuX29w
dGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgcmV0cnlpbmc9RmFsc2UsIGRldmljZV90eXBlPWRldmlj
ZV90eXBlKQogCiAgICAgICAgICAgICB0ZXN0c190b19yZXRyeSA9IHNlbGYuX3Rlc3RzX3RvX3Jl
dHJ5KGluaXRpYWxfcmVzdWx0cywgaW5jbHVkZV9jcmFzaGVzPXNlbGYuX3BvcnQuc2hvdWxkX3Jl
dHJ5X2NyYXNoZXMoKSkKICAgICAgICAgICAgICMgRG9uJ3QgcmV0cnkgZmFpbHVyZXMgd2hlbiBp
bnRlcnJ1cHRlZCBieSB1c2VyIG9yIGZhaWx1cmVzIGxpbWl0IGV4Y2VwdGlvbi4KQEAgLTQzMyw3
ICs0NjEsMTIgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIF9sb2cu
aW5mbygnJykKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oIlJldHJ5aW5nICVzIC4uLiIgJSBw
bHVyYWxpemUobGVuKHRlc3RzX3RvX3JldHJ5KSwgInVuZXhwZWN0ZWQgZmFpbHVyZSIpKQogICAg
ICAgICAgICAgICAgIF9sb2cuaW5mbygnJykKLSAgICAgICAgICAgICAgICByZXRyeV9yZXN1bHRz
ID0gc2VsZi5fcnVuX3Rlc3RzKHRlc3RzX3RvX3JldHJ5LCB0ZXN0c190b19za2lwPXNldCgpLCBy
ZXBlYXRfZWFjaD0xLCBpdGVyYXRpb25zPTEsIG51bV93b3JrZXJzPTEsIHJldHJ5aW5nPVRydWUs
IGRldmljZV90eXBlPWRldmljZV90eXBlKQorICAgICAgICAgICAgICAgIHJldHJ5X3Jlc3VsdHMg
PSBzZWxmLl9ydW5fdGVzdHMoW3Rlc3QgZm9yIHRlc3QgaW4gdGVzdHNfdG9fcnVuIGlmIHRlc3Qu
dGVzdF9wYXRoIGluIHRlc3RzX3RvX3JldHJ5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdF9lYWNoPTEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRpb25zPTEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fd29ya2Vycz0xLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlpbmc9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZV90
eXBlPWRldmljZV90eXBlKQogCiAgICAgICAgICAgICAgICAgaWYgZW5hYmxlZF9waXhlbF90ZXN0
c19pbl9yZXRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0
cyA9IEZhbHNlCkBAIC00NzcsMTAgKzUxMCwxOCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgZXhpdF9jb2RlID0gc2VsZi5fcG9ydC5leGl0X2NvZGVfZnJvbV9zdW1t
YXJpemVkX3Jlc3VsdHMoc3VtbWFyaXplZF9yZXN1bHRzKQogICAgICAgICByZXR1cm4gdGVzdF9y
dW5fcmVzdWx0cy5SdW5EZXRhaWxzKGV4aXRfY29kZSwgc3VtbWFyaXplZF9yZXN1bHRzLCBpbml0
aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMsIGVuYWJsZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkp
CiAKLSAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCB0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAs
IHJlcGVhdF9lYWNoLCBpdGVyYXRpb25zLCBudW1fd29ya2VycywgcmV0cnlpbmcsIGRldmljZV90
eXBlPU5vbmUpOgorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsCisgICAgICAgICAgICAgICAgICAg
dGVzdHNfdG9fcnVuLCAgIyB0eXBlOiBMaXN0W1Rlc3RdCisgICAgICAgICAgICAgICAgICAgcmVw
ZWF0X2VhY2gsICAjIHR5cGU6IGludAorICAgICAgICAgICAgICAgICAgIGl0ZXJhdGlvbnMsICAj
IHR5cGU6IGludAorICAgICAgICAgICAgICAgICAgIG51bV93b3JrZXJzLCAgIyB0eXBlOiBpbnQK
KyAgICAgICAgICAgICAgICAgICByZXRyeWluZywgICMgdHlwZTogYm9vbAorICAgICAgICAgICAg
ICAgICAgIGRldmljZV90eXBlLCAgIyB0eXBlOiBPcHRpb25hbFtEZXZpY2VUeXBlXQorICAgICAg
ICAgICAgICAgICAgICk6CiAgICAgICAgIHRlc3RfaW5wdXRzID0gc2VsZi5fZ2V0X3Rlc3RfaW5w
dXRzKHRlc3RzX3RvX3J1biwgcmVwZWF0X2VhY2gsIGl0ZXJhdGlvbnMsIGRldmljZV90eXBlPWRl
dmljZV90eXBlKQogCi0gICAgICAgIHJldHVybiBzZWxmLl9ydW5uZXIucnVuX3Rlc3RzKHNlbGYu
X2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0sIHRlc3RfaW5wdXRzLCB0ZXN0c190b19za2lwLCBu
dW1fd29ya2VycywgcmV0cnlpbmcsIGRldmljZV90eXBlKQorICAgICAgICBhc3NlcnQgc2VsZi5f
cnVubmVyIGlzIG5vdCBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5uZXIucnVuX3Rlc3Rz
KHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0sIHRlc3RfaW5wdXRzLCBudW1fd29ya2Vy
cywgcmV0cnlpbmcsIGRldmljZV90eXBlKQogCiAgICAgZGVmIF9jbGVhbl91cF9ydW4oc2VsZik6
CiAgICAgICAgIF9sb2cuZGVidWcoIkZsdXNoaW5nIHN0ZG91dCIpCkBAIC02NTIsMTEgKzY5Mywx
NSBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICBqc29uX3Jlc3VsdHNfZ2Vu
ZXJhdG9yLmFkZF9wYXRoX3RvX3RyaWUobmFtZSwgdmFsdWUsIHN0YXRzX3RyaWUpCiAgICAgICAg
IHJldHVybiBzdGF0c190cmllCiAKLSAgICBkZWYgX3ByaW50X2V4cGVjdGF0aW9uX2xpbmVfZm9y
X3Rlc3Qoc2VsZiwgZm9ybWF0X3N0cmluZywgdGVzdCwgZGV2aWNlX3R5cGU9Tm9uZSk6Ci0gICAg
ICAgIGxpbmUgPSBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLm1vZGVsKCkuZ2V0X2V4
cGVjdGF0aW9uX2xpbmUodGVzdCkKLSAgICAgICAgcHJpbnQoZm9ybWF0X3N0cmluZy5mb3JtYXQo
dGVzdCwgbGluZS5leHBlY3RlZF9iZWhhdmlvciwgc2VsZi5fZXhwZWN0YXRpb25zW2RldmljZV90
eXBlXS5yZWFkYWJsZV9maWxlbmFtZV9hbmRfbGluZV9udW1iZXIobGluZSksIGxpbmUub3JpZ2lu
YWxfc3RyaW5nIG9yICcnKSkKKyAgICBkZWYgX3ByaW50X2V4cGVjdGF0aW9uX2xpbmVfZm9yX3Rl
c3Qoc2VsZiwgZm9ybWF0X3N0cmluZywgdGVzdCwgZGV2aWNlX3R5cGUpOgorICAgICAgICB0ZXN0
X3BhdGggPSB0ZXN0LnRlc3RfcGF0aAorICAgICAgICBsaW5lID0gc2VsZi5fZXhwZWN0YXRpb25z
W2RldmljZV90eXBlXS5tb2RlbCgpLmdldF9leHBlY3RhdGlvbl9saW5lKHRlc3RfcGF0aCkKKyAg
ICAgICAgcHJpbnQoZm9ybWF0X3N0cmluZy5mb3JtYXQodGVzdF9wYXRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5lLmV4cGVjdGVkX2JlaGF2aW9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVd
LnJlYWRhYmxlX2ZpbGVuYW1lX2FuZF9saW5lX251bWJlcihsaW5lKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGluZS5vcmlnaW5hbF9zdHJpbmcgb3IgJycpKQogCi0gICAg
ZGVmIF9wcmludF9leHBlY3RhdGlvbnNfZm9yX3N1YnNldChzZWxmLCBkZXZpY2VfdHlwZSwgdGVz
dF9jb2xfd2lkdGgsIHRlc3RzX3RvX3J1biwgdGVzdHNfdG9fc2tpcD17fSk6CisgICAgZGVmIF9w
cmludF9leHBlY3RhdGlvbnNfZm9yX3N1YnNldChzZWxmLCBkZXZpY2VfdHlwZSwgdGVzdF9jb2xf
d2lkdGgsIHRlc3RzX3RvX3J1biwgdGVzdHNfdG9fc2tpcD1Ob25lKToKICAgICAgICAgZm9ybWF0
X3N0cmluZyA9ICd7ezp7d2lkdGh9fX0ge3t9fSB7e319IHt7fX0nLmZvcm1hdCh3aWR0aD10ZXN0
X2NvbF93aWR0aCkKICAgICAgICAgaWYgdGVzdHNfdG9fc2tpcDoKICAgICAgICAgICAgIHByaW50
KCcnKQpAQCAtNjcwLDM5ICs3MTUsMjEgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAg
ICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0YXRpb25fbGluZV9mb3JfdGVzdChmb3JtYXRfc3RyaW5n
LCB0ZXN0LCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKIAogICAgIGRlZiBwcmludF9leHBlY3Rh
dGlvbnMoc2VsZiwgYXJncyk6Ci0gICAgICAgIGFnZ3JlZ2F0ZV90ZXN0X25hbWVzID0gc2V0KCkK
LSAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1biA9IHNldCgpCi0gICAgICAgIGFnZ3JlZ2F0
ZV90ZXN0c190b19za2lwID0gc2V0KCkKLSAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZSA9
IHt9Ci0KICAgICAgICAgZGV2aWNlX3R5cGVfbGlzdCA9IHNlbGYuX3BvcnQuREVGQVVMVF9ERVZJ
Q0VfVFlQRVMgb3IgW3NlbGYuX3BvcnQuREVWSUNFX1RZUEVdCi0gICAgICAgIGZvciBkZXZpY2Vf
dHlwZSBpbiBkZXZpY2VfdHlwZV9saXN0OgotICAgICAgICAgICAgIiIiUnVuIHRoZSB0ZXN0cyBh
bmQgcmV0dXJuIGEgUnVuRGV0YWlscyBvYmplY3Qgd2l0aCB0aGUgcmVzdWx0cy4iIiIKLSAgICAg
ICAgICAgIGZvcl9kZXZpY2VfdHlwZSA9ICdmb3Ige30gJy5mb3JtYXQoZGV2aWNlX3R5cGUpIGlm
IGRldmljZV90eXBlIGVsc2UgJycKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBk
YXRlKCdDb2xsZWN0aW5nIHRlc3RzIHt9Li4uJy5mb3JtYXQoZm9yX2RldmljZV90eXBlKSkKLSAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwYXRocywgdGVzdHMgPSBzZWxmLl9jb2xs
ZWN0X3Rlc3RzKGFyZ3MsIGRldmljZV90eXBlPWRldmljZV90eXBlKQotICAgICAgICAgICAgZXhj
ZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBUaGlzIGlzIHJhaXNlZCBpZiAtLXRlc3Qt
bGlzdCBkb2Vzbid0IGV4aXN0Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRlc3RfcnVuX3Jlc3Vs
dHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEpCi0KLSAgICAgICAgICAgIHRlc3RfbmFtZXMgPSBb
dGVzdC50ZXN0X3BhdGggZm9yIHRlc3QgaW4gdGVzdHNdCiAKLSAgICAgICAgICAgIHNlbGYuX3By
aW50ZXIud3JpdGVfdXBkYXRlKCdQYXJzaW5nIGV4cGVjdGF0aW9ucyB7fS4uLicuZm9ybWF0KGZv
cl9kZXZpY2VfdHlwZSkpCi0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5
cGVdID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyhzZWxmLl9wb3J0LCB0ZXN0
X25hbWVzLCBmb3JjZV9leHBlY3RhdGlvbnNfcGFzcz1zZWxmLl9vcHRpb25zLmZvcmNlLCBkZXZp
Y2VfdHlwZT1kZXZpY2VfdHlwZSkKLSAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZp
Y2VfdHlwZV0ucGFyc2VfYWxsX2V4cGVjdGF0aW9ucygpCi0KLSAgICAgICAgICAgIGFnZ3JlZ2F0
ZV90ZXN0X25hbWVzLnVwZGF0ZSh0ZXN0X25hbWVzKQotICAgICAgICAgICAgdGVzdHNfdG9fcnVu
LCB0ZXN0c190b19za2lwID0gc2VsZi5fcHJlcGFyZV9saXN0cyhwYXRocywgdGVzdF9uYW1lcywg
ZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCi0gICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9f
c2tpcC51cGRhdGUodGVzdHNfdG9fc2tpcCkKLQotICAgICAgICAgICAgdGVzdHNfdG9fcnVuX2J5
X2RldmljZVtkZXZpY2VfdHlwZV0gPSBbdGVzdCBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4gaWYg
dGVzdCBub3QgaW4gYWdncmVnYXRlX3Rlc3RzX3RvX3J1bl0KLSAgICAgICAgICAgIGFnZ3JlZ2F0
ZV90ZXN0c190b19ydW4udXBkYXRlKHRlc3RzX3RvX3J1bikKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZSwgYWdncmVnYXRlX3Rlc3RzX3RvX3NraXAgPSBz
ZWxmLl9jb2xsZWN0X3Rlc3RzKGFyZ3MsIGRldmljZV90eXBlX2xpc3QpCisgICAgICAgIGV4Y2Vw
dCBJT0Vycm9yOgorICAgICAgICAgICAgIyBUaGlzIGlzIHJhaXNlZCBpZiAtLXRlc3QtbGlzdCBk
b2Vzbid0IGV4aXN0CisgICAgICAgICAgICByZXR1cm4gLTEKIAotICAgICAgICBhZ2dyZWdhdGVf
dGVzdHNfdG9fc2tpcCA9IGFnZ3JlZ2F0ZV90ZXN0c190b19za2lwIC0gYWdncmVnYXRlX3Rlc3Rz
X3RvX3J1bgorICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuID0gc2V0KCkKKyAgICAgICAg
Zm9yIHYgaW4gdGVzdHNfdG9fcnVuX2J5X2RldmljZS52YWx1ZXMoKToKKyAgICAgICAgICAgIGFn
Z3JlZ2F0ZV90ZXN0c190b19ydW4udXBkYXRlKHYpCisgICAgICAgIGFnZ3JlZ2F0ZV90ZXN0cyA9
IGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4gfCBhZ2dyZWdhdGVfdGVzdHNfdG9fc2tpcAogCi0gICAg
ICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZm91bmQobGVuKGFnZ3JlZ2F0ZV90ZXN0X25hbWVzKSwg
bGVuKGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4pLCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNoLCBz
ZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMpCi0gICAgICAgIHRlc3RfY29sX3dpZHRoID0gbGVuKG1h
eChhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuLnVuaW9uKGFnZ3JlZ2F0ZV90ZXN0c190b19za2lwKSwg
a2V5PWxlbikpICsgMQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2ZvdW5kKGxlbihhZ2dy
ZWdhdGVfdGVzdHMpLCBsZW4oYWdncmVnYXRlX3Rlc3RzX3RvX3J1biksIHNlbGYuX29wdGlvbnMu
cmVwZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucykKKyAgICAgICAgdGVzdF9jb2xf
d2lkdGggPSBtYXgobGVuKHRlc3QudGVzdF9wYXRoKSBmb3IgdGVzdCBpbiBhZ2dyZWdhdGVfdGVz
dHMpICsgMQogCiAgICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGF0aW9uc19mb3Jfc3Vic2V0KGRl
dmljZV90eXBlX2xpc3RbMF0sIHRlc3RfY29sX3dpZHRoLCB0ZXN0c190b19ydW5fYnlfZGV2aWNl
W2RldmljZV90eXBlX2xpc3RbMF1dLCBhZ2dyZWdhdGVfdGVzdHNfdG9fc2tpcCkKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdC5weQppbmRl
eCA3ZmVkYTlmMTA0ZDdiZjYzMmYxNDI4MjlmYzUzN2NiMmJjZWQ4M2YyLi5kNTFhNWJmYzcyZDcx
NjZlYmM4MzJkMzk0OGRkN2Y1ZGMyNmJlZmU3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdC5weQpAQCAtMjcsNTAgKzI3LDE3IEBACiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIAoraW1wb3J0IGF0dHIKKworCitAYXR0ci5zKGZyb3plbj1UcnVlKQog
Y2xhc3MgVGVzdChvYmplY3QpOgogICAgICIiIkRhdGEgYWJvdXQgYSB0ZXN0IGFuZCBpdHMgZXhw
ZWN0YXRpb25zLgogCiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgaW5oZXJlbnRseSBwbGF0Zm9ybSBz
cGVjaWZpYywgYXMgZXhwZWN0YXRpb25zIGFyZSBwbGF0Zm9ybSBzcGVjaWZpYy4iIiIKLQotICAg
IGRlZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwKLSAgICAgICAgdGVzdF9wYXRoLAotICAgICAg
ICBleHBlY3RlZF90ZXh0X3BhdGg9Tm9uZSwKLSAgICAgICAgZXhwZWN0ZWRfaW1hZ2VfcGF0aD1O
b25lLAotICAgICAgICBleHBlY3RlZF9jaGVja3N1bV9wYXRoPU5vbmUsCi0gICAgICAgIGV4cGVj
dGVkX2F1ZGlvX3BhdGg9Tm9uZSwKLSAgICAgICAgcmVmZXJlbmNlX2ZpbGVzPU5vbmUsCi0gICAg
KToKLSAgICAgICAgc2VsZi50ZXN0X3BhdGggPSB0ZXN0X3BhdGgKLSAgICAgICAgc2VsZi5leHBl
Y3RlZF90ZXh0X3BhdGggPSBleHBlY3RlZF90ZXh0X3BhdGgKLSAgICAgICAgc2VsZi5leHBlY3Rl
ZF9pbWFnZV9wYXRoID0gZXhwZWN0ZWRfaW1hZ2VfcGF0aAotICAgICAgICBzZWxmLmV4cGVjdGVk
X2NoZWNrc3VtX3BhdGggPSBleHBlY3RlZF9jaGVja3N1bV9wYXRoCi0gICAgICAgIHNlbGYuZXhw
ZWN0ZWRfYXVkaW9fcGF0aCA9IGV4cGVjdGVkX2F1ZGlvX3BhdGgKLSAgICAgICAgc2VsZi5yZWZl
cmVuY2VfZmlsZXMgPSByZWZlcmVuY2VfZmlsZXMKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToK
LSAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAgICJUZXN0KCVyLCAiCi0gICAgICAgICAgICAi
ZXhwZWN0ZWRfdGV4dF9wYXRoPSVyLCAiCi0gICAgICAgICAgICAiZXhwZWN0ZWRfaW1hZ2VfcGF0
aD0lciwgIgotICAgICAgICAgICAgImV4cGVjdGVkX2NoZWNrc3VtX3BhdGg9JXIsICIKLSAgICAg
ICAgICAgICJleHBlY3RlZF9hdWRpb19wYXRoPSVyLCAiCi0gICAgICAgICAgICAicmVmZXJlbmNl
X2ZpbGVzPSVyKSIKLSAgICAgICAgKSAlICgKLSAgICAgICAgICAgIHNlbGYudGVzdF9wYXRoLAot
ICAgICAgICAgICAgc2VsZi5leHBlY3RlZF90ZXh0X3BhdGgsCi0gICAgICAgICAgICBzZWxmLmV4
cGVjdGVkX2ltYWdlX3BhdGgsCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkX2NoZWNrc3VtX3Bh
dGgsCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkX2F1ZGlvX3BhdGgsCi0gICAgICAgICAgICBz
ZWxmLnJlZmVyZW5jZV9maWxlcywKLSAgICAgICAgKQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBv
dGhlcik6Ci0gICAgICAgIHJldHVybiAoCi0gICAgICAgICAgICBzZWxmLnRlc3RfcGF0aCA9PSBv
dGhlci50ZXN0X3BhdGgKLSAgICAgICAgICAgIGFuZCBzZWxmLmV4cGVjdGVkX3RleHRfcGF0aCA9
PSBvdGhlci5leHBlY3RlZF90ZXh0X3BhdGgKLSAgICAgICAgICAgIGFuZCBzZWxmLmV4cGVjdGVk
X2ltYWdlX3BhdGggPT0gb3RoZXIuZXhwZWN0ZWRfaW1hZ2VfcGF0aAotICAgICAgICAgICAgYW5k
IHNlbGYuZXhwZWN0ZWRfY2hlY2tzdW1fcGF0aCA9PSBvdGhlci5leHBlY3RlZF9jaGVja3N1bV9w
YXRoCi0gICAgICAgICAgICBhbmQgc2VsZi5leHBlY3RlZF9hdWRpb19wYXRoID09IG90aGVyLmV4
cGVjdGVkX2F1ZGlvX3BhdGgKLSAgICAgICAgICAgIGFuZCBzZWxmLnJlZmVyZW5jZV9maWxlcyA9
PSBvdGhlci5yZWZlcmVuY2VfZmlsZXMKLSAgICAgICAgKQorICAgIHRlc3RfcGF0aCA9IGF0dHIu
aWIodHlwZT1zdHIpCisgICAgZXhwZWN0ZWRfdGV4dF9wYXRoID0gYXR0ci5pYihkZWZhdWx0PU5v
bmUsIHR5cGU9c3RyKQorICAgIGV4cGVjdGVkX2ltYWdlX3BhdGggPSBhdHRyLmliKGRlZmF1bHQ9
Tm9uZSwgdHlwZT1zdHIpCisgICAgZXhwZWN0ZWRfY2hlY2tzdW1fcGF0aCA9IGF0dHIuaWIoZGVm
YXVsdD1Ob25lLCB0eXBlPXN0cikKKyAgICBleHBlY3RlZF9hdWRpb19wYXRoID0gYXR0ci5pYihk
ZWZhdWx0PU5vbmUsIHR5cGU9c3RyKQorICAgIHJlZmVyZW5jZV9maWxlcyA9IGF0dHIuaWIoZGVm
YXVsdD1Ob25lLCB0eXBlPWxpc3QpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lucHV0LnB5CmluZGV4IDYyZWM4ZTA5OTQ4MjA0
OWYwZDM2MDViZTcwYmMzNmY2MDQ3OTEwNWQuLjNkYmM1Y2NmMDQyMDE0Mjc5NTA5M2E5OTAwNDNh
M2Q4NzQwODQ0ZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X2lucHV0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lucHV0LnB5CkBAIC0yOCw2ICsyOCw4IEBACiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKIAorZnJvbSAudGVzdCBpbXBvcnQgVGVzdAorCiBjbGFzcyBUZXN0SW5wdXQob2Jq
ZWN0KToKICAgICAiIiJJbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QgbmVlZGVkIHRvIHJ1biBpdC4K
IApAQCAtMzUsMTUgKzM3LDI0IEBAIGNsYXNzIFRlc3RJbnB1dChvYmplY3QpOgogICAgIGRlcml2
ZWQgZnJvbSBUZXN0RXhwZWN0YXRpb25zL3Rlc3QgZXhlY3V0aW9uIG9wdGlvbnMgKGUuZy4sIHRp
bWVvdXQpLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfbmFtZSwgdGlt
ZW91dD1Ob25lLCBuZWVkc19zZXJ2ZXJzPU5vbmUsIHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19p
bl9zdGRlcnI9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAg
IHRlc3QsICAjIHR5cGU6IFRlc3QKKyAgICAgICAgICAgICAgICAgdGltZW91dD1Ob25lLCAgIyB0
eXBlOiBVbmlvbltOb25lLCBpbnQsIHN0cl0KKyAgICAgICAgICAgICAgICAgbmVlZHNfc2VydmVy
cz1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtib29sXQorICAgICAgICAgICAgICAgICBzaG91bGRf
ZHVtcF9qc2NvbnNvbGVsb2dfaW5fc3RkZXJyPU5vbmUsICAjIHR5cGU6IE9wdGlvbmFsW2Jvb2xd
CisgICAgICAgICAgICAgICAgICk6CiAgICAgICAgICMgVGVzdElucHV0IG9iamVjdHMgYXJlIG5v
cm1hbGx5IGNvbnN0cnVjdGVkIGJ5IHRoZSBtYW5hZ2VyIGFuZCBwYXNzZWQKICAgICAgICAgIyB0
byB0aGUgd29ya2VycywgYnV0IHRoZXNlIHNvbWUgZmllbGRzIGFyZSBzZXQgbGF6aWx5IGluIHRo
ZSB3b3JrZXJzIHdoZXJlIHBvc3NpYmxlCiAgICAgICAgICMgYmVjYXVzZSB0aGV5IHJlcXVpcmUg
dXMgdG8gbG9vayBhdCB0aGUgZmlsZXN5c3RlbSBhbmQgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGRv
IHRoYXQgaW4gcGFyYWxsZWwuCi0gICAgICAgIHNlbGYudGVzdF9uYW1lID0gdGVzdF9uYW1lCisg
ICAgICAgIHNlbGYudGVzdCA9IHRlc3QKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dCAg
IyBpbiBtc2Vjczsgc2hvdWxkIHJlbmFtZSB0aGlzIGZvciBjb25zaXN0ZW5jeQogICAgICAgICBz
ZWxmLm5lZWRzX3NlcnZlcnMgPSBuZWVkc19zZXJ2ZXJzCiAgICAgICAgIHNlbGYuc2hvdWxkX2R1
bXBfanNjb25zb2xlbG9nX2luX3N0ZGVyciA9IHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9z
dGRlcnIKICAgICAgICAgc2VsZi5yZWZlcmVuY2VfZmlsZXMgPSBOb25lCiAKKyAgICBAcHJvcGVy
dHkKKyAgICBkZWYgdGVzdF9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50ZXN0LnRl
c3RfcGF0aAorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gIlRlc3RJ
bnB1dCgnJXMnLCB0aW1lb3V0PSVzLCBuZWVkc19zZXJ2ZXJzPSVzLCByZWZlcmVuY2VfZmlsZXM9
JXMsIHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnI9JXMpIiAlIChzZWxmLnRlc3Rf
bmFtZSwgc2VsZi50aW1lb3V0LCBzZWxmLm5lZWRzX3NlcnZlcnMsIHNlbGYucmVmZXJlbmNlX2Zp
bGVzLCBzZWxmLnNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVz
dWx0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0
X3J1bl9yZXN1bHRzLnB5CmluZGV4IDJjMjNjMDRlZGYwZWJjMmIzY2FhMWIzNjNjYjkzNTIzMmNl
NGRmYmQuLjQ1ZTE4MmZjZmZiOTlhZWU4YzRjNTU3M2FkOWE2ODkyOGMwOTNkYzQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9y
ZXN1bHRzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVs
cy90ZXN0X3J1bl9yZXN1bHRzLnB5CkBAIC0xMzEsNyArMTMxLDIyIEBAIGNsYXNzIFRlc3RSdW5S
ZXN1bHRzKG9iamVjdCk6CiAgICAgZGVmIG1lcmdlKHNlbGYsIHRlc3RfcnVuX3Jlc3VsdHMpOgog
ICAgICAgICBpZiBub3QgdGVzdF9ydW5fcmVzdWx0czoKICAgICAgICAgICAgIHJldHVybiBzZWxm
CisKICAgICAgICAgIyBzZWxmLmV4cGVjdGF0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGJv
dGgKKyAgICAgICAgaWYgc2VsZi5leHBlY3RhdGlvbnMgIT0gdGVzdF9ydW5fcmVzdWx0cy5leHBl
Y3RhdGlvbnM6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkaWZmZXJlbnQgVGVzdEV4
cGVjdGF0aW9ucyIpCisKKyAgICAgICAgZGVmIG1lcmdlX2RpY3Rfc2V0cyhhLCBiKToKKyAgICAg
ICAgICAgIG1lcmdlZCA9IHt9CisgICAgICAgICAgICBrZXlzID0gc2V0KGEua2V5cygpKSB8IHNl
dChiLmtleXMoKSkKKyAgICAgICAgICAgIGZvciBrIGluIGtleXM6CisgICAgICAgICAgICAgICAg
dl9hID0gYS5nZXQoaywgc2V0KCkpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
dl9hLCBzZXQpCisgICAgICAgICAgICAgICAgdl9iID0gYi5nZXQoaywgc2V0KCkpCisgICAgICAg
ICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uodl9iLCBzZXQpCisgICAgICAgICAgICAgICAgbWVy
Z2VkW2tdID0gdl9hIHwgdl9iCisgICAgICAgICAgICByZXR1cm4gbWVyZ2VkCisKICAgICAgICAg
c2VsZi50b3RhbCArPSB0ZXN0X3J1bl9yZXN1bHRzLnRvdGFsCiAgICAgICAgIHNlbGYucmVtYWlu
aW5nICs9IHRlc3RfcnVuX3Jlc3VsdHMucmVtYWluaW5nCiAgICAgICAgIHNlbGYuZXhwZWN0ZWQg
Kz0gdGVzdF9ydW5fcmVzdWx0cy5leHBlY3RlZApAQCAtMTM5LDE2ICsxNTQsMTQgQEAgY2xhc3Mg
VGVzdFJ1blJlc3VsdHMob2JqZWN0KToKICAgICAgICAgc2VsZi51bmV4cGVjdGVkX2ZhaWx1cmVz
ICs9IHRlc3RfcnVuX3Jlc3VsdHMudW5leHBlY3RlZF9mYWlsdXJlcwogICAgICAgICBzZWxmLnVu
ZXhwZWN0ZWRfY3Jhc2hlcyArPSB0ZXN0X3J1bl9yZXN1bHRzLnVuZXhwZWN0ZWRfY3Jhc2hlcwog
ICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfdGltZW91dHMgKz0gdGVzdF9ydW5fcmVzdWx0cy51bmV4
cGVjdGVkX3RpbWVvdXRzCi0gICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb24udXBkYXRl
KHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlfZXhwZWN0YXRpb24pCi0gICAgICAgIHNlbGYudGVz
dHNfYnlfdGltZWxpbmUudXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlfdGltZWxpbmUp
CisgICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb24gPSBtZXJnZV9kaWN0X3NldHMoc2Vs
Zi50ZXN0c19ieV9leHBlY3RhdGlvbiwgdGVzdF9ydW5fcmVzdWx0cy50ZXN0c19ieV9leHBlY3Rh
dGlvbikKKyAgICAgICAgc2VsZi50ZXN0c19ieV90aW1lbGluZSA9IG1lcmdlX2RpY3Rfc2V0cyhz
ZWxmLnRlc3RzX2J5X3RpbWVsaW5lLCB0ZXN0X3J1bl9yZXN1bHRzLnRlc3RzX2J5X3RpbWVsaW5l
KQogICAgICAgICBzZWxmLnJlc3VsdHNfYnlfbmFtZS51cGRhdGUodGVzdF9ydW5fcmVzdWx0cy5y
ZXN1bHRzX2J5X25hbWUpCiAgICAgICAgIHNlbGYuYWxsX3Jlc3VsdHMgKz0gdGVzdF9ydW5fcmVz
dWx0cy5hbGxfcmVzdWx0cwogICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1l
LnVwZGF0ZSh0ZXN0X3J1bl9yZXN1bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1lKQogICAg
ICAgICBzZWxmLmZhaWx1cmVzX2J5X25hbWUudXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMuZmFpbHVy
ZXNfYnlfbmFtZSkKICAgICAgICAgc2VsZi50b3RhbF9mYWlsdXJlcyArPSB0ZXN0X3J1bl9yZXN1
bHRzLnRvdGFsX2ZhaWx1cmVzCiAgICAgICAgIHNlbGYuZXhwZWN0ZWRfc2tpcHMgKz0gdGVzdF9y
dW5fcmVzdWx0cy5leHBlY3RlZF9za2lwcwotICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVjdGF0
aW9uLnVwZGF0ZSh0ZXN0X3J1bl9yZXN1bHRzLnRlc3RzX2J5X2V4cGVjdGF0aW9uKQotICAgICAg
ICBzZWxmLnRlc3RzX2J5X3RpbWVsaW5lLnVwZGF0ZSh0ZXN0X3J1bl9yZXN1bHRzLnRlc3RzX2J5
X3RpbWVsaW5lKQogICAgICAgICBzZWxmLnNsb3dfdGVzdHMudXBkYXRlKHRlc3RfcnVuX3Jlc3Vs
dHMuc2xvd190ZXN0cykKIAogICAgICAgICBzZWxmLmludGVycnVwdGVkIHw9IHRlc3RfcnVuX3Jl
c3VsdHMuaW50ZXJydXB0ZWQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425626</attachid>
            <date>2021-04-09 09:29:39 -0700</date>
            <delta_ts>2021-04-09 12:50:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224329-20210409172937.patch</filename>
            <type>text/plain</type>
            <size>37494</size>
            <attacher name="Sam Sneddon [:gsnedders]">gsnedders</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NzU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWI4MmQ0OTNiNzRmZjcxY2RmZjJjMzI2NDA3YjkxZjZi
MTM2ZGY3Ny4uM2M3NWRkYWRmZTAwZTQ1NzVhYjUzODc3NjE0OTg3MjQxMDFhNzIzOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDIxLTA0LTA5ICBTYW0gU25lZGRvbiAgPGdzbmVkZGVyc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFrZSBUZXN0SW5wdXQgdGFrZSBhIFRlc3Qgb2JqZWN0LCBub3QgYSBwYXRoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weToKKyAg
ICAgICAgKExheW91dFRlc3RSdW5uZXIucnVuX3Rlc3RzKTogUmVtb3ZlIHRlc3RfdG9fc2tpcCBh
cmd1bWVudDsgc2tpcHBlZCB0ZXN0cyBhcmVuJ3QgZm9yIHRoZSBydW5uZXIuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVu
bmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lclRlc3RzLl9ydW5fdGVz
dHMpOiBUZXN0SW5wdXQgZXhwZWN0cyBhIFRlc3QuCisgICAgICAgIChMYXlvdXRUZXN0UnVubmVy
VGVzdHMudGVzdF9pbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdHMpOiBUZXN0SW5wdXQgZXhw
ZWN0cyBhIFRlc3QuCisgICAgICAgIChTaGFyZGVyVGVzdHMuZ2V0X3Rlc3RfaW5wdXQpOiBUZXN0
SW5wdXQgZXhwZWN0cyBhIFRlc3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKE1hbmFnZXIuX2NvbGxlY3Rf
dGVzdHMpOgorICAgICAgICBNb3ZlIGR1cGxpY2F0ZWQgY29kZSBmcm9tIE1hbmFnZXIucnVuIGFu
ZCBNYW5hZ2VyLnByaW50X2V4cGVjdGF0aW9ucyBoZXJlLgorICAgICAgICAoTWFuYWdlci5fdGVz
dHNfdG9fcnVuKToKKyAgICAgICAgUmVuYW1lZCBmcm9tIE1hbmFnZXIuX3ByZXBhcmVfbGlzdHM7
IG5vdyBqdXN0IGdpdmVzIHRlc3RzIHRvIHJ1bi4KKyAgICAgICAgKE1hbmFnZXIuX3Rlc3RfaW5w
dXRfZm9yX2ZpbGUpOiBOb3cgdGFrZXMgYSBUZXN0LCBub3QgYSBzdHI7IGRldmljZV90eXBlIGNo
YW5nZXMgYmVoYXZpb3VyIGFuZCBzaG91bGRuJ3QgaGF2ZSBhbnkgZGVmYXVsdC4KKyAgICAgICAg
KE1hbmFnZXIuX3Rlc3RfaXNfc2xvdyk6IGRldmljZV90eXBlIGNoYW5nZXMgYmVoYXZpb3VyIGFu
ZCBzaG91bGRuJ3QgaGF2ZSBhbnkgZGVmYXVsdC4KKyAgICAgICAgKE1hbmFnZXIuX3Rlc3Rfc2hv
dWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVycik6IGRldmljZV90eXBlIGNoYW5nZXMgYmVo
YXZpb3VyIGFuZCBzaG91bGRuJ3QgaGF2ZSBhbnkgZGVmYXVsdC4KKyAgICAgICAgKE1hbmFnZXIu
X2dldF90ZXN0X2lucHV0cyk6IGRldmljZV90eXBlIGNoYW5nZXMgYmVoYXZpb3VyIGFuZCBzaG91
bGRuJ3QgaGF2ZSBhbnkgZGVmYXVsdC4KKyAgICAgICAgKE1hbmFnZXIuX3VwZGF0ZV93b3JrZXJf
Y291bnQpOiBkZXZpY2VfdHlwZSBjaGFuZ2VzIGJlaGF2aW91ciBhbmQgc2hvdWxkbid0IGhhdmUg
YW55IGRlZmF1bHQuCisgICAgICAgIChNYW5hZ2VyLl9zZXRfdXBfcnVuKTogZGV2aWNlX3R5cGUg
Y2hhbmdlcyBiZWhhdmlvdXIgYW5kIHNob3VsZG4ndCBoYXZlIGFueSBkZWZhdWx0LgorICAgICAg
ICAoTWFuYWdlci5ydW4pOgorICAgICAgICBMYXJnZWx5IGp1c3QgY2hhbmdlIGZvciBNYW5hZ2Vy
Ll9jb2xsZWN0X3Rlc3RzLCBhbHNvIHJlbmFtaW5nIHRoZSBzZXRzIHRvIG1hdGNoIHRoZWlyCisg
ICAgICAgIGNsZWFyZXIgbmFtZXMgaW4gcHJpbnRfZXhwZWN0YXRpb25zLgorICAgICAgICBBZGRp
dGlvbmFsbHksIG5vdyBnZW5lcmF0ZSBza2lwIHJlc3VsdHMgaGVyZSwgYXMgdGhleSBhcmVuJ3Qg
dG8gZG8gd2l0aCBhY3R1YWxseSBydW5uaW5nCisgICAgICAgIHRlc3RzLCB0aGV5J3JlIGFib3V0
IHRlc3Qgc2VsZWN0aW9uLgorICAgICAgICAoTWFuYWdlci5fcnVuX3Rlc3Rfc3Vic2V0KTogUmVt
b3ZlIHRlc3RzX3RvX3NraXAgYXJndW1lbnQsIGRldmllX3R5cGUgaXMgcmVxdWlyZWQuCisgICAg
ICAgIChNYW5hZ2VyLl9ydW5fdGVzdHMpOiBSZW1vdmUgdGVzdHNfdG9fc2tpcCBhcmd1bWVudCwg
ZGV2aWVfdHlwZSBpcyByZXF1aXJlZC4KKyAgICAgICAgKE1hbmFnZXIuX3ByaW50X2V4cGVjdGF0
aW9uX2xpbmVfZm9yX3Rlc3QpOiBOb3cgdGFrZXMgYSBUZXN0LCBub3QgYSBzdHI7IGRldmljZV90
eXBlIGNoYW5nZXMgYmVoYXZpb3VyIGFuZCBzaG91bGRuJ3QgaGF2ZSBhbnkgZGVmYXVsdC4KKyAg
ICAgICAgKE1hbmFnZXIuX3ByaW50X2V4cGVjdGF0aW9uc19mb3Jfc3Vic2V0KTogQ2hhbmdlIGRl
ZmF1bHQgb2YgdGVzdHNfdG9fc2tpcCB0byBhdm9pZCBzZXQvZGljdCBvZGRuZXNzLgorICAgICAg
ICAoTWFuYWdlci5wcmludF9leHBlY3RhdGlvbnMpOiBMYXJnZWx5IGNoYW5nZSBmb3IgTWFuYWdl
ci5fY29sbGVjdF90ZXN0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdC5weToKKyAgICAgICAgKFRlc3QpOiBVc2UgYXR0cnMgdG8gYXZvaWQgaGF2
aW5nIHRvIGRlZmluZSBjbXAsIGhhc2gsIHJlcHIsIGV0Yy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weToKKyAgICAgICAgKFRlc3RJ
bnB1dC5fX2luaXRfXyk6IFRha2UgYSBUZXN0LCBub3QgYSBzdHIuCisgICAgICAgIChUZXN0SW5w
dXQudGVzdF9uYW1lKTogTWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIGNvZGUgcmVhZGluZyBU
ZXN0SW5wdXQudGVzdF9uYW1lIGZvciBub3cuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHk6CisgICAgICAgIChUZXN0UnVu
UmVzdWx0cy5tZXJnZSk6IEZpeCBtZXJnaW5nIG9mIGRpY3RzLW9mLXNldHMsIHJhdGhlciB0aGFu
IG92ZXJ3cml0aW5nIHRoZSBzZXRzLgorICAgICAgICAoVGVzdFJ1blJlc3VsdHMubWVyZ2UubWVy
Z2VfZGljdF9zZXRzKTogSW1wbGVtZW50IHRoZSBtZXJnaW5nLgorCiAyMDIxLTA0LTA4ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUENNOiBXcml0ZSBtb3Jl
IGJsaW5kZWQgc2VjcmV0IHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5u
ZXIucHkKaW5kZXggYmFkZDVjZjFlYmU4NGYwMWM5YTg2MjkyNGZjYzA3YzFkNjE3OGFiMC4uMmU2
MGIzMTJkZTZlYzhiMjNiNzM3MmE3YzcyNWY2NzE1OGNkNjZlYyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVu
bmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL2xheW91dF90ZXN0X3J1bm5lci5weQpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBMYXlvdXRU
ZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgIGFsbF9zaGFyZHMgPSBzZWxmLl9zaGFyZGVyLnNo
YXJkX3Rlc3RzKHRlc3RfaW5wdXRzLCBjaGlsZF9wcm9jZXNzX2NvdW50LCBzZWxmLl9vcHRpb25z
LmZ1bGx5X3BhcmFsbGVsKQogICAgICAgICByZXR1cm4gbWluKGNoaWxkX3Byb2Nlc3NfY291bnQs
IGxlbihhbGxfc2hhcmRzKSkKIAotICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgZXhwZWN0YXRpb25z
LCB0ZXN0X2lucHV0cywgdGVzdHNfdG9fc2tpcCwgbnVtX3dvcmtlcnMsIHJldHJ5aW5nLCBkZXZp
Y2VfdHlwZT1Ob25lKToKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsIGV4cGVjdGF0aW9ucywgdGVz
dF9pbnB1dHMsIG51bV93b3JrZXJzLCByZXRyeWluZywgZGV2aWNlX3R5cGU9Tm9uZSk6CiAgICAg
ICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IGV4cGVjdGF0aW9ucwogICAgICAgICBzZWxmLl90ZXN0
X2lucHV0cyA9IFtdCiAgICAgICAgIGZvciB0ZXN0X2lucHV0IGluIHRlc3RfaW5wdXRzOgpAQCAt
MTAyLDcgKzEwMiw3IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAg
c2VsZi5fcmV0cnlpbmcgPSByZXRyeWluZwogCiAgICAgICAgICMgRklYTUU6IHJlbmFtZSBhbGwg
dmFyaWFibGVzIHRvIHRlc3RfcnVuX3Jlc3VsdHMgb3Igc29tZSBzdWNoIC4uLgotICAgICAgICBy
dW5fcmVzdWx0cyA9IFRlc3RSdW5SZXN1bHRzKHNlbGYuX2V4cGVjdGF0aW9ucywgbGVuKHRlc3Rf
aW5wdXRzKSArIGxlbih0ZXN0c190b19za2lwKSkKKyAgICAgICAgcnVuX3Jlc3VsdHMgPSBUZXN0
UnVuUmVzdWx0cyhzZWxmLl9leHBlY3RhdGlvbnMsIGxlbih0ZXN0X2lucHV0cykpCiAgICAgICAg
IHNlbGYuX2N1cnJlbnRfcnVuX3Jlc3VsdHMgPSBydW5fcmVzdWx0cwogICAgICAgICBzZWxmLl9w
cmludGVyLm51bV90ZXN0cyA9IGxlbih0ZXN0X2lucHV0cykKICAgICAgICAgc2VsZi5fcHJpbnRl
ci5udW1fc3RhcnRlZCA9IDAKQEAgLTExMCwxMSArMTEwLDYgQEAgY2xhc3MgTGF5b3V0VGVzdFJ1
bm5lcihvYmplY3QpOgogICAgICAgICBpZiBub3QgcmV0cnlpbmc6CiAgICAgICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X2V4cGVjdGVkKHJ1bl9yZXN1bHRzLCBzZWxmLl9leHBlY3RhdGlvbnMu
bW9kZWwoKS5nZXRfdGVzdHNfd2l0aF9yZXN1bHRfdHlwZSkKIAotICAgICAgICBmb3IgdGVzdF9u
YW1lIGluIHNldCh0ZXN0c190b19za2lwKToKLSAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RfcmVz
dWx0cy5UZXN0UmVzdWx0KHRlc3RfbmFtZSkKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gdGVz
dF9leHBlY3RhdGlvbnMuU0tJUAotICAgICAgICAgICAgcnVuX3Jlc3VsdHMuYWRkKHJlc3VsdCwg
ZXhwZWN0ZWQ9VHJ1ZSwgdGVzdF9pc19zbG93PXNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X25hbWUp
KQotCiAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCdTaGFyZGluZyB0ZXN0cyAu
Li4nKQogICAgICAgICBhbGxfc2hhcmRzID0gc2VsZi5fc2hhcmRlci5zaGFyZF90ZXN0cyh0ZXN0
X2lucHV0cywgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgc2VsZi5fb3B0aW9u
cy5mdWxseV9wYXJhbGxlbCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rl
c3RfcnVubmVyX3VuaXR0ZXN0LnB5CmluZGV4IGI4MGNhNDU0ODVhMzI5NGQwMmUyNDU1ZTVlZjNk
ZmMxNzQzZDE4OWYuLjBmMjcyMWM5MmU5NGRhYTU0NzkxN2M1NThhNjNkMjQ3YTlkZWVkNzAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L2xheW91dF90ZXN0X3J1bm5lcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXJfdW5pdHRlc3Qu
cHkKQEAgLTM1LDkgKzM1LDEwIEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBy
dW5fd2Via2l0X3Rlc3RzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy5s
YXlvdXRfdGVzdF9ydW5uZXIgaW1wb3J0IExheW91dFRlc3RSdW5uZXIsIFNoYXJkZXIsIFRlc3RS
dW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxz
IGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9k
ZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMudGVzdF9ydW5fcmVzdWx0cyBpbXBvcnQgVGVzdFJ1blJlc3VsdHMKK2Zyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0IGltcG9ydCBUZXN0CiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMudGVzdF9pbnB1dCBpbXBvcnQgVGVzdElucHV0CiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9yZXN1bHRzIGltcG9ydCBUZXN0UmVzdWx0Citmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9ydW5fcmVzdWx0cyBpbXBvcnQgVGVz
dFJ1blJlc3VsdHMKIGZyb20gd2Via2l0cHkucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydAogCiAK
QEAgLTgxLDEwICs4MiwxMCBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyVGVzdHModW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICByZXR1cm4gTGF5b3V0VGVzdFJ1bm5lcihvcHRpb25zLCBwb3J0
LCBGYWtlUHJpbnRlcigpLCBwb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCksIGxhbWJkYSB0ZXN0X25h
bWU6IEZhbHNlKQogCiAgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgcnVubmVyLCB0ZXN0cyk6Ci0g
ICAgICAgIHRlc3RfaW5wdXRzID0gW1Rlc3RJbnB1dCh0ZXN0LCA2MDAwKSBmb3IgdGVzdCBpbiB0
ZXN0c10KKyAgICAgICAgdGVzdF9pbnB1dHMgPSBbVGVzdElucHV0KFRlc3QodGVzdCksIDYwMDAp
IGZvciB0ZXN0IGluIHRlc3RzXQogICAgICAgICBleHBlY3RhdGlvbnMgPSBUZXN0RXhwZWN0YXRp
b25zKHJ1bm5lci5fcG9ydCwgdGVzdHMpCiAgICAgICAgIGV4cGVjdGF0aW9ucy5wYXJzZV9hbGxf
ZXhwZWN0YXRpb25zKCkKLSAgICAgICAgcnVubmVyLnJ1bl90ZXN0cyhleHBlY3RhdGlvbnMsIHRl
c3RfaW5wdXRzLCBzZXQoKSwKKyAgICAgICAgcnVubmVyLnJ1bl90ZXN0cyhleHBlY3RhdGlvbnMs
IHRlc3RfaW5wdXRzLAogICAgICAgICAgICAgbnVtX3dvcmtlcnM9MSwgbmVlZHNfaHR0cD1hbnko
J2h0dHAnIGluIHRlc3QgZm9yIHRlc3QgaW4gdGVzdHMpLCBuZWVkc193ZWJzb2NrZXRzPWFueShb
J3dlYnNvY2tldCcgaW4gdGVzdCBmb3IgdGVzdCBpbiB0ZXN0c10pLCBuZWVkc193ZWJfcGxhdGZv
cm1fdGVzdF9zZXJ2ZXI9YW55KFsnaW1wb3J0ZWQvdzNjJyBpbiB0ZXN0IGZvciB0ZXN0IGluIHRl
c3RzXSksIHJldHJ5aW5nPUZhbHNlKQogCiAgICAgZGVmIHRlc3RfaW50ZXJydXB0X2lmX2F0X2Zh
aWx1cmVfbGltaXRzKHNlbGYpOgpAQCAtOTIsNyArOTMsNyBAQCBjbGFzcyBMYXlvdXRUZXN0UnVu
bmVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBydW5uZXIuX29wdGlvbnMuZXhp
dF9hZnRlcl9uX2ZhaWx1cmVzID0gTm9uZQogICAgICAgICBydW5uZXIuX29wdGlvbnMuZXhpdF9h
ZnRlcl9uX2NyYXNoZXNfb3JfdGltZXMgPSBOb25lCiAgICAgICAgIHRlc3RfbmFtZXMgPSBbJ3Bh
c3Nlcy90ZXh0Lmh0bWwnLCAncGFzc2VzL2ltYWdlLmh0bWwnXQotICAgICAgICBydW5uZXIuX3Rl
c3RfaW5wdXRzID0gW1Rlc3RJbnB1dCh0ZXN0X25hbWUsIDYwMDApIGZvciB0ZXN0X25hbWUgaW4g
dGVzdF9uYW1lc10KKyAgICAgICAgcnVubmVyLl90ZXN0X2lucHV0cyA9IFtUZXN0SW5wdXQoVGVz
dCh0ZXN0X25hbWUpLCA2MDAwKSBmb3IgdGVzdF9uYW1lIGluIHRlc3RfbmFtZXNdCiAKICAgICAg
ICAgZXhwZWN0YXRpb25zID0gVGVzdEV4cGVjdGF0aW9ucyhydW5uZXIuX3BvcnQsIHRlc3RfbmFt
ZXMpCiAgICAgICAgIGV4cGVjdGF0aW9ucy5wYXJzZV9hbGxfZXhwZWN0YXRpb25zKCkKQEAgLTI2
MSw3ICsyNjIsNyBAQCBjbGFzcyBTaGFyZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAg
IF0KIAogICAgIGRlZiBnZXRfdGVzdF9pbnB1dChzZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAgICBy
ZXR1cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgbmVlZHNfc2VydmVycz0odGVzdF9maWxlLnN0YXJ0
c3dpdGgoJ2h0dHAnKSkpCisgICAgICAgIHJldHVybiBUZXN0SW5wdXQoVGVzdCh0ZXN0X2ZpbGUp
LCBuZWVkc19zZXJ2ZXJzPSh0ZXN0X2ZpbGUuc3RhcnRzd2l0aCgnaHR0cCcpKSkKIAogICAgIGRl
ZiBnZXRfc2hhcmRzKHNlbGYsIG51bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCwgdGVzdF9saXN0
PU5vbmUpOgogICAgICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja1N5c3RlbUhvc3QoKSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyLnB5CmluZGV4IDA4MGY0MzQwMWJkOWI4MGYyMjhjZWQxYmQyOTEzM2Q4ZTU1ZmRm
ODEuLjZiNDhiODBkODYyYzY3Mzk1MTM5Y2RkZWUzMzE5ODY0YmUzMTQ0NjQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weQpAQCAtNTUsNyArNTUsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5t
b2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscyBpbXBvcnQgdGVzdF9yZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMgaW1wb3J0IHRlc3RfcnVuX3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscy50ZXN0X2lucHV0IGltcG9ydCBUZXN0SW5wdXQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLm1vZGVscy50ZXN0X3J1bl9yZXN1bHRzIGltcG9ydCBJTlRFUlJVUFRFRF9FWElUX1NUQVRV
UworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfcnVuX3Jlc3VsdHMgaW1w
b3J0IElOVEVSUlVQVEVEX0VYSVRfU1RBVFVTLCBUZXN0UnVuUmVzdWx0cwogZnJvbSB3ZWJraXRw
eS50b29sLmdyYW1tYXIgaW1wb3J0IHBsdXJhbGl6ZQogZnJvbSB3ZWJraXRweS5yZXN1bHRzLnVw
bG9hZCBpbXBvcnQgVXBsb2FkCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLmRldmljZV90eXBlIGltcG9y
dCBEZXZpY2VUeXBlCkBAIC05NCw4ICs5NCwzNCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAg
ICAgICAgIHRlc3Rfb3B0aW9uc19qc29uX3BhdGggPSBzZWxmLl9wb3J0LnBhdGhfZnJvbV93ZWJr
aXRfYmFzZShzZWxmLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksICJ0ZXN0cy1vcHRpb25zLmpzb24i
KQogICAgICAgICBzZWxmLl90ZXN0c19vcHRpb25zID0ganNvbi5sb2FkcyhzZWxmLl9maWxlc3lz
dGVtLnJlYWRfdGV4dF9maWxlKHRlc3Rfb3B0aW9uc19qc29uX3BhdGgpKSBpZiBzZWxmLl9maWxl
c3lzdGVtLmV4aXN0cyh0ZXN0X29wdGlvbnNfanNvbl9wYXRoKSBlbHNlIHt9CiAKLSAgICBkZWYg
X2NvbGxlY3RfdGVzdHMoc2VsZiwgYXJncywgZGV2aWNlX3R5cGU9Tm9uZSk6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9maW5kZXIuZmluZF90ZXN0cyhzZWxmLl9vcHRpb25zLCBhcmdzLCBkZXZpY2Vf
dHlwZT1kZXZpY2VfdHlwZSkKKyAgICBkZWYgX2NvbGxlY3RfdGVzdHMoc2VsZiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgcGF0aHMsICAjIHR5cGU6IExpc3Rbc3RyXQorICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VfdHlwZV9saXN0LCAgIyB0eXBlOiBMaXN0W09wdGlvbmFsW0RldmljZVR5
cGVdXQorICAgICAgICAgICAgICAgICAgICAgICApOgorICAgICAgICBhZ2dyZWdhdGVfdGVzdHMg
PSBzZXQoKSAgIyB0eXBlOiBTZXRbVGVzdF0KKyAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1
biA9IHNldCgpICAjIHR5cGU6IFNldFtUZXN0XQorICAgICAgICB0ZXN0c190b19ydW5fYnlfZGV2
aWNlID0ge30gICMgdHlwZTogRGljdFtPcHRpb25hbFtEZXZpY2VUeXBlXSwgTGlzdFtUZXN0XV0K
KworICAgICAgICBkZXZpY2VfdHlwZV9saXN0ID0gc2VsZi5fcG9ydC5zdXBwb3J0ZWRfZGV2aWNl
X3R5cGVzKCkKKyAgICAgICAgZm9yIGRldmljZV90eXBlIGluIGRldmljZV90eXBlX2xpc3Q6Cisg
ICAgICAgICAgICBmb3JfZGV2aWNlX3R5cGUgPSB1J2ZvciB7fSAnLmZvcm1hdChkZXZpY2VfdHlw
ZSkgaWYgZGV2aWNlX3R5cGUgZWxzZSAnJworICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0
ZV91cGRhdGUodSdDb2xsZWN0aW5nIHRlc3RzIHt9Li4uJy5mb3JtYXQoZm9yX2RldmljZV90eXBl
KSkKKyAgICAgICAgICAgIHBhdGhzLCB0ZXN0cyA9IHNlbGYuX2ZpbmRlci5maW5kX3Rlc3RzKHNl
bGYuX29wdGlvbnMsIHBhdGhzLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKKyAgICAgICAgICAg
IGFnZ3JlZ2F0ZV90ZXN0cy51cGRhdGUodGVzdHMpCisKKyAgICAgICAgICAgIHRlc3RfbmFtZXMg
PSBbdGVzdC50ZXN0X3BhdGggZm9yIHRlc3QgaW4gdGVzdHNdCisKKyAgICAgICAgICAgIHNlbGYu
X3ByaW50ZXIud3JpdGVfdXBkYXRlKHUnUGFyc2luZyBleHBlY3RhdGlvbnMge30uLi4nLmZvcm1h
dChmb3JfZGV2aWNlX3R5cGUpKQorICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zW2Rldmlj
ZV90eXBlXSA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoc2VsZi5fcG9ydCwg
dGVzdF9uYW1lcywgZm9yY2VfZXhwZWN0YXRpb25zX3Bhc3M9c2VsZi5fb3B0aW9ucy5mb3JjZSwg
ZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCisgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNb
ZGV2aWNlX3R5cGVdLnBhcnNlX2FsbF9leHBlY3RhdGlvbnMoKQorCisgICAgICAgICAgICB0ZXN0
c190b19ydW4gPSBzZWxmLl90ZXN0c190b19ydW4odGVzdHMsIGRldmljZV90eXBlPWRldmljZV90
eXBlKQorICAgICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZVtkZXZpY2VfdHlwZV0gPSBb
dGVzdCBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4gaWYgdGVzdCBub3QgaW4gYWdncmVnYXRlX3Rl
c3RzX3RvX3J1bl0KKyAgICAgICAgICAgIGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4udXBkYXRlKHRl
c3RzX3RvX3J1bl9ieV9kZXZpY2VbZGV2aWNlX3R5cGVdKQorCisgICAgICAgIGFnZ3JlZ2F0ZV90
ZXN0c190b19za2lwID0gYWdncmVnYXRlX3Rlc3RzIC0gYWdncmVnYXRlX3Rlc3RzX3RvX3J1bgor
CisgICAgICAgIHJldHVybiB0ZXN0c190b19ydW5fYnlfZGV2aWNlLCBhZ2dyZWdhdGVfdGVzdHNf
dG9fc2tpcAogCiAgICAgZGVmIF9pc19odHRwX3Rlc3Qoc2VsZiwgdGVzdCk6CiAgICAgICAgIHJl
dHVybiBzZWxmLkhUVFBfU1VCRElSIGluIHRlc3Qgb3Igc2VsZi5faXNfd2Vic29ja2V0X3Rlc3Qo
dGVzdCkgb3Igc2VsZi5fbmVlZHNfd2ViX3BsYXRmb3JtX3Rlc3QodGVzdCkKQEAgLTE4Nyw0MSAr
MjEzLDQwIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gKHRlc3Rz
X3RvX3J1biwgc2V0KHRlc3RfbmFtZXMpIC0gc2V0KHRlc3RzX3RvX3J1bikpCiAKLSAgICBkZWYg
X3ByZXBhcmVfbGlzdHMoc2VsZiwgcGF0aHMsIHRlc3RfbmFtZXMsIGRldmljZV90eXBlPU5vbmUp
OgotICAgICAgICB0ZXN0c190b19za2lwID0gc2VsZi5fc2tpcF90ZXN0cyh0ZXN0X25hbWVzLCBz
ZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLCBzZWxmLl9odHRwX3Rlc3RzKHRlc3RfbmFt
ZXMpKQotICAgICAgICB0ZXN0c190b19ydW4gPSBbdGVzdCBmb3IgdGVzdCBpbiB0ZXN0X25hbWVz
IGlmIHRlc3Qgbm90IGluIHRlc3RzX3RvX3NraXBdCisgICAgZGVmIF90ZXN0c190b19ydW4oc2Vs
ZiwgdGVzdHMsIGRldmljZV90eXBlKToKKyAgICAgICAgdGVzdF9uYW1lcyA9IHt0ZXN0LnRlc3Rf
cGF0aCBmb3IgdGVzdCBpbiB0ZXN0c30KKyAgICAgICAgdGVzdF9uYW1lc190b19za2lwID0gc2Vs
Zi5fc2tpcF90ZXN0cyh0ZXN0X25hbWVzLCBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVd
LCBzZWxmLl9odHRwX3Rlc3RzKHRlc3RfbmFtZXMpKQorICAgICAgICB0ZXN0c190b19ydW4gPSBb
dGVzdCBmb3IgdGVzdCBpbiB0ZXN0cyBpZiB0ZXN0LnRlc3RfcGF0aCBub3QgaW4gdGVzdF9uYW1l
c190b19za2lwXQogCiAgICAgICAgICMgQ3JlYXRlIGEgc29ydGVkIGxpc3Qgb2YgdGVzdCBmaWxl
cyBzbyB0aGUgc3Vic2V0IGNodW5rLAogICAgICAgICAjIGlmIHVzZWQsIGNvbnRhaW5zIGFscGhh
YmV0aWNhbGx5IGNvbnNlY3V0aXZlIHRlc3RzLgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm9y
ZGVyID09ICduYXR1cmFsJzoKLSAgICAgICAgICAgIHRlc3RzX3RvX3J1bi5zb3J0KGtleT1zZWxm
Ll9wb3J0LnRlc3Rfa2V5KQorICAgICAgICAgICAgdGVzdHNfdG9fcnVuLnNvcnQoa2V5PWxhbWJk
YSB4OiBzZWxmLl9wb3J0LnRlc3Rfa2V5KHgudGVzdF9wYXRoKSkKICAgICAgICAgZWxpZiBzZWxm
Ll9vcHRpb25zLm9yZGVyID09ICdyYW5kb20nOgogICAgICAgICAgICAgcmFuZG9tLnNodWZmbGUo
dGVzdHNfdG9fcnVuKQogCi0gICAgICAgIHRlc3RzX3RvX3J1biwgdGVzdHNfaW5fb3RoZXJfY2h1
bmtzID0gc2VsZi5fc3BsaXRfaW50b19jaHVua3ModGVzdHNfdG9fcnVuKQotICAgICAgICBzZWxm
Ll9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLmFkZF9za2lwcGVkX3Rlc3RzKHRlc3RzX2luX290
aGVyX2NodW5rcykKLSAgICAgICAgdGVzdHNfdG9fc2tpcC51cGRhdGUodGVzdHNfaW5fb3RoZXJf
Y2h1bmtzKQotCi0gICAgICAgIHJldHVybiB0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAKKyAg
ICAgICAgdGVzdHNfdG9fcnVuLCBfID0gc2VsZi5fc3BsaXRfaW50b19jaHVua3ModGVzdHNfdG9f
cnVuKQorICAgICAgICByZXR1cm4gdGVzdHNfdG9fcnVuCiAKLSAgICBkZWYgX3Rlc3RfaW5wdXRf
Zm9yX2ZpbGUoc2VsZiwgdGVzdF9maWxlLCBkZXZpY2VfdHlwZT1Ob25lKToKLSAgICAgICAgcmV0
dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNsb3df
dGltZV9vdXRfbXMgaWYgc2VsZi5fdGVzdF9pc19zbG93KHRlc3RfZmlsZSwgZGV2aWNlX3R5cGU9
ZGV2aWNlX3R5cGUpIGVsc2Ugc2VsZi5fb3B0aW9ucy50aW1lX291dF9tcywKLSAgICAgICAgICAg
IHNlbGYuX2lzX2h0dHBfdGVzdCh0ZXN0X2ZpbGUpLAotICAgICAgICAgICAgc2hvdWxkX2R1bXBf
anNjb25zb2xlbG9nX2luX3N0ZGVycj1zZWxmLl90ZXN0X3Nob3VsZF9kdW1wX2pzY29uc29sZWxv
Z19pbl9zdGRlcnIodGVzdF9maWxlLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkpCisgICAgZGVm
IF90ZXN0X2lucHV0X2Zvcl9maWxlKHNlbGYsIHRlc3RfZmlsZSwgZGV2aWNlX3R5cGUpOgorICAg
ICAgICByZXR1cm4gVGVzdElucHV0KAorICAgICAgICAgICAgdGVzdF9maWxlLAorICAgICAgICAg
ICAgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0
ZXN0X2ZpbGUudGVzdF9wYXRoLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkgZWxzZSBzZWxmLl9v
cHRpb25zLnRpbWVfb3V0X21zLAorICAgICAgICAgICAgc2VsZi5faXNfaHR0cF90ZXN0KHRlc3Rf
ZmlsZS50ZXN0X3BhdGgpLAorICAgICAgICAgICAgc2hvdWxkX2R1bXBfanNjb25zb2xlbG9nX2lu
X3N0ZGVycj1zZWxmLl90ZXN0X3Nob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIodGVz
dF9maWxlLnRlc3RfcGF0aCwgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpKQogCi0gICAgZGVmIF90
ZXN0X2lzX3Nsb3coc2VsZiwgdGVzdF9maWxlLCBkZXZpY2VfdHlwZT1Ob25lKToKKyAgICBkZWYg
X3Rlc3RfaXNfc2xvdyhzZWxmLCB0ZXN0X2ZpbGUsIGRldmljZV90eXBlKToKICAgICAgICAgaWYg
c2VsZi5fZXhwZWN0YXRpb25zW2RldmljZV90eXBlXS5tb2RlbCgpLmhhc19tb2RpZmllcih0ZXN0
X2ZpbGUsIHRlc3RfZXhwZWN0YXRpb25zLlNMT1cpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUK
ICAgICAgICAgcmV0dXJuICJzbG93IiBpbiBzZWxmLl90ZXN0c19vcHRpb25zLmdldCh0ZXN0X2Zp
bGUsIFtdKQogCi0gICAgZGVmIF90ZXN0X3Nob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRl
cnIoc2VsZiwgdGVzdF9maWxlLCBkZXZpY2VfdHlwZT1Ob25lKToKKyAgICBkZWYgX3Rlc3Rfc2hv
dWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVycihzZWxmLCB0ZXN0X2ZpbGUsIGRldmljZV90
eXBlKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0ubW9k
ZWwoKS5oYXNfbW9kaWZpZXIodGVzdF9maWxlLCB0ZXN0X2V4cGVjdGF0aW9ucy5EVU1QSlNDT05T
T0xFTE9HSU5TVERFUlIpCiAKICAgICBkZWYgbmVlZHNfc2VydmVycyhzZWxmLCB0ZXN0X25hbWVz
KToKICAgICAgICAgcmV0dXJuIGFueShzZWxmLl9pc19odHRwX3Rlc3QodGVzdF9uYW1lKSBmb3Ig
dGVzdF9uYW1lIGluIHRlc3RfbmFtZXMpIGFuZCBzZWxmLl9vcHRpb25zLmh0dHAKIAotICAgIGRl
ZiBfZ2V0X3Rlc3RfaW5wdXRzKHNlbGYsIHRlc3RzX3RvX3J1biwgcmVwZWF0X2VhY2gsIGl0ZXJh
dGlvbnMsIGRldmljZV90eXBlPU5vbmUpOgorICAgIGRlZiBfZ2V0X3Rlc3RfaW5wdXRzKHNlbGYs
IHRlc3RzX3RvX3J1biwgcmVwZWF0X2VhY2gsIGl0ZXJhdGlvbnMsIGRldmljZV90eXBlKToKICAg
ICAgICAgdGVzdF9pbnB1dHMgPSBbXQogICAgICAgICBmb3IgXyBpbiByYW5nZShpdGVyYXRpb25z
KToKICAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1bjoKQEAgLTIyOSwxMiArMjU0
LDEyIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgdGVzdF9p
bnB1dHMuYXBwZW5kKHNlbGYuX3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdCwgZGV2aWNlX3R5cGU9
ZGV2aWNlX3R5cGUpKQogICAgICAgICByZXR1cm4gdGVzdF9pbnB1dHMKIAotICAgIGRlZiBfdXBk
YXRlX3dvcmtlcl9jb3VudChzZWxmLCB0ZXN0X25hbWVzLCBkZXZpY2VfdHlwZT1Ob25lKToKKyAg
ICBkZWYgX3VwZGF0ZV93b3JrZXJfY291bnQoc2VsZiwgdGVzdF9uYW1lcywgZGV2aWNlX3R5cGUp
OgogICAgICAgICB0ZXN0X2lucHV0cyA9IHNlbGYuX2dldF90ZXN0X2lucHV0cyh0ZXN0X25hbWVz
LCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNoLCBzZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMsIGRl
dmljZV90eXBlPWRldmljZV90eXBlKQogICAgICAgICB3b3JrZXJfY291bnQgPSBzZWxmLl9ydW5u
ZXIuZ2V0X3dvcmtlcl9jb3VudCh0ZXN0X2lucHV0cywgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRf
cHJvY2Vzc2VzKSkKICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgPSB3b3Jr
ZXJfY291bnQKIAotICAgIGRlZiBfc2V0X3VwX3J1bihzZWxmLCB0ZXN0X25hbWVzLCBkZXZpY2Vf
dHlwZT1Ob25lKToKKyAgICBkZWYgX3NldF91cF9ydW4oc2VsZiwgdGVzdF9uYW1lcywgZGV2aWNl
X3R5cGUpOgogICAgICAgICAjIFRoaXMgbXVzdCBiZSBzdGFydGVkIGJlZm9yZSB3ZSBjaGVjayB0
aGUgc3lzdGVtIGRlcGVuZGVuY2llcywKICAgICAgICAgIyBzaW5jZSB0aGUgaGVscGVyIG1heSBk
byB0aGluZ3MgdG8gbWFrZSB0aGUgc2V0dXAgY29ycmVjdC4KICAgICAgICAgc2VsZi5fcHJpbnRl
ci53cml0ZV91cGRhdGUoIlN0YXJ0aW5nIGhlbHBlciAuLi4iKQpAQCAtMjU2LDU1ICsyODEsNDgg
QEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogCiAgICAgZGVmIHJ1bihzZWxmLCBhcmdzKToKICAg
ICAgICAgbnVtX2ZhaWxlZF91cGxvYWRzID0gMAotICAgICAgICB0b3RhbF90ZXN0cyA9IHNldCgp
Ci0gICAgICAgIGFnZ3JlZ2F0ZV90ZXN0X25hbWVzID0gc2V0KCkKLSAgICAgICAgYWdncmVnYXRl
X3Rlc3RzID0gc2V0KCkKLSAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZSA9IHt9CiAKICAg
ICAgICAgZGV2aWNlX3R5cGVfbGlzdCA9IHNlbGYuX3BvcnQuc3VwcG9ydGVkX2RldmljZV90eXBl
cygpCi0gICAgICAgIGZvciBkZXZpY2VfdHlwZSBpbiBkZXZpY2VfdHlwZV9saXN0OgotICAgICAg
ICAgICAgIiIiUnVuIHRoZSB0ZXN0cyBhbmQgcmV0dXJuIGEgUnVuRGV0YWlscyBvYmplY3Qgd2l0
aCB0aGUgcmVzdWx0cy4iIiIKLSAgICAgICAgICAgIGZvcl9kZXZpY2VfdHlwZSA9IHUnZm9yIHt9
ICcuZm9ybWF0KGRldmljZV90eXBlKSBpZiBkZXZpY2VfdHlwZSBlbHNlICcnCi0gICAgICAgICAg
ICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSh1J0NvbGxlY3RpbmcgdGVzdHMge30uLi4nLmZv
cm1hdChmb3JfZGV2aWNlX3R5cGUpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IHBhdGhzLCB0ZXN0cyA9IHNlbGYuX2NvbGxlY3RfdGVzdHMoYXJncywgZGV2aWNlX3R5cGU9ZGV2
aWNlX3R5cGUpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgICAgICAj
IFRoaXMgaXMgcmFpc2VkIGlmIC0tdGVzdC1saXN0IGRvZXNuJ3QgZXhpc3QKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5SdW5EZXRhaWxzKGV4aXRfY29kZT0tMSkKLQot
ICAgICAgICAgICAgdGVzdF9uYW1lcyA9IFt0ZXN0LnRlc3RfcGF0aCBmb3IgdGVzdCBpbiB0ZXN0
c10KLQotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUodSdQYXJzaW5nIGV4
cGVjdGF0aW9ucyB7fS4uLicuZm9ybWF0KGZvcl9kZXZpY2VfdHlwZSkpCi0gICAgICAgICAgICBz
ZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4
cGVjdGF0aW9ucyhzZWxmLl9wb3J0LCB0ZXN0X25hbWVzLCBmb3JjZV9leHBlY3RhdGlvbnNfcGFz
cz1zZWxmLl9vcHRpb25zLmZvcmNlLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKLSAgICAgICAg
ICAgIHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0ucGFyc2VfYWxsX2V4cGVjdGF0aW9u
cygpCi0KLSAgICAgICAgICAgIGFnZ3JlZ2F0ZV90ZXN0X25hbWVzLnVwZGF0ZSh0ZXN0X25hbWVz
KQotICAgICAgICAgICAgdGVzdHNfdG9fcnVuLCB0ZXN0c190b19za2lwID0gc2VsZi5fcHJlcGFy
ZV9saXN0cyhwYXRocywgdGVzdF9uYW1lcywgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIHRlc3RzX3RvX3J1bl9ieV9kZXZpY2UsIGFnZ3JlZ2F0ZV90
ZXN0c190b19za2lwID0gc2VsZi5fY29sbGVjdF90ZXN0cyhhcmdzLCBkZXZpY2VfdHlwZV9saXN0
KQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICMgVGhpcyBpcyByYWlzZWQg
aWYgLS10ZXN0LWxpc3QgZG9lc24ndCBleGlzdAorICAgICAgICAgICAgcmV0dXJuIHRlc3RfcnVu
X3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEpCiAKLSAgICAgICAgICAgIHRvdGFsX3Rl
c3RzLnVwZGF0ZSh0ZXN0c190b19ydW4pCi0gICAgICAgICAgICB0b3RhbF90ZXN0cy51cGRhdGUo
dGVzdHNfdG9fc2tpcCkKKyAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1biA9IHNldCgpICAj
IHR5cGU6IFNldFtUZXN0XQorICAgICAgICBmb3IgdiBpbiB0ZXN0c190b19ydW5fYnlfZGV2aWNl
LnZhbHVlcygpOgorICAgICAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1bi51cGRhdGUodikK
IAotICAgICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZVtkZXZpY2VfdHlwZV0gPSBbdGVz
dCBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4gaWYgdGVzdCBub3QgaW4gYWdncmVnYXRlX3Rlc3Rz
XQotICAgICAgICAgICAgYWdncmVnYXRlX3Rlc3RzLnVwZGF0ZSh0ZXN0c190b19ydW4pCisgICAg
ICAgIHNraXBwZWRfdGVzdHNfYnlfcGF0aCA9IGRlZmF1bHRkaWN0KHNldCkKKyAgICAgICAgZm9y
IHRlc3QgaW4gYWdncmVnYXRlX3Rlc3RzX3RvX3NraXA6CisgICAgICAgICAgICBza2lwcGVkX3Rl
c3RzX2J5X3BhdGhbdGVzdC50ZXN0X3BhdGhdLmFkZCh0ZXN0KQogCiAgICAgICAgICMgSWYgYSB0
ZXN0IGlzIG1hcmtlZCBza2lwcGVkLCBidXQgd2FzIGV4cGxpY2l0bHkgcmVxdWVzdGVkLCBydW4g
aXQgYW55d2F5cwogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnNraXBwZWQgIT0gJ2Fsd2F5cyc6
CiAgICAgICAgICAgICBmb3IgYXJnIGluIGFyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgYXJnIGlu
IHRvdGFsX3Rlc3RzIGFuZCBhcmcgbm90IGluIGFnZ3JlZ2F0ZV90ZXN0czoKLSAgICAgICAgICAg
ICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZVtkZXZpY2VfdHlwZV9saXN0WzBdXS5hcHBl
bmQoYXJnKQotICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdHMuYWRkKGFyZykKLQot
ICAgICAgICB0ZXN0c190b19za2lwID0gdG90YWxfdGVzdHMgLSBhZ2dyZWdhdGVfdGVzdHMKLSAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9mb3VuZChsZW4oYWdncmVnYXRlX3Rlc3RfbmFtZXMp
LCBsZW4oYWdncmVnYXRlX3Rlc3RzKSwgc2VsZi5fb3B0aW9ucy5yZXBlYXRfZWFjaCwgc2VsZi5f
b3B0aW9ucy5pdGVyYXRpb25zKQorICAgICAgICAgICAgICAgIGlmIGFyZyBpbiBza2lwcGVkX3Rl
c3RzX2J5X3BhdGg6CisgICAgICAgICAgICAgICAgICAgIHRlc3RzID0gc2tpcHBlZF90ZXN0c19i
eV9wYXRoW2FyZ10KKyAgICAgICAgICAgICAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZVtk
ZXZpY2VfdHlwZV9saXN0WzBdXS5leHRlbmQodGVzdHMpCisgICAgICAgICAgICAgICAgICAgIGFn
Z3JlZ2F0ZV90ZXN0c190b19ydW4gfD0gdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgYWdncmVn
YXRlX3Rlc3RzX3RvX3NraXAgLT0gdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgZGVsIHNraXBw
ZWRfdGVzdHNfYnlfcGF0aFthcmddCisKKyAgICAgICAgYWdncmVnYXRlX3Rlc3RzID0gYWdncmVn
YXRlX3Rlc3RzX3RvX3J1biB8IGFnZ3JlZ2F0ZV90ZXN0c190b19za2lwCisKKyAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF9mb3VuZChsZW4oYWdncmVnYXRlX3Rlc3RzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZW4oYWdncmVnYXRlX3Rlc3RzX3RvX3J1biksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXBlYXRfZWFjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLml0ZXJhdGlv
bnMpCiAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogCiAgICAgICAgICMgQ2hlY2sg
dG8gc2VlIGlmIGFsbCB0ZXN0cyB3ZSBhcmUgcnVubmluZyBhcmUgc2tpcHBlZC4KLSAgICAgICAg
aWYgdGVzdHNfdG9fc2tpcCA9PSB0b3RhbF90ZXN0czoKKyAgICAgICAgaWYgYWdncmVnYXRlX3Rl
c3RzID09IGFnZ3JlZ2F0ZV90ZXN0c190b19za2lwOgorICAgICAgICAgICAgIyBYWFg6IHRoaXMg
aXMgY3VycmVudGx5IGlkZW50aWNhbCB0byB0aGUgZm9sbG93IGlmLCB3aGljaCBsaWtlbHkgaXNu
J3QgaW50ZW5kZWQKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkFsbCB0ZXN0cyBza2lwcGVkLiIp
CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5SdW5EZXRhaWxzKGV4aXRfY29k
ZT0wLCBza2lwcGVkX2FsbF90ZXN0cz1UcnVlKQogCiAgICAgICAgICMgQ2hlY2sgdG8gbWFrZSBz
dXJlIHdlIGhhdmUgbm8gdGVzdHMgdG8gcnVuIHRoYXQgYXJlIG5vdCBza2lwcGVkLgotICAgICAg
ICBpZiBub3Qgc3VtKFtsZW4odGVzdHMpIGZvciB0ZXN0cyBpbiBpdGVydmFsdWVzKHRlc3RzX3Rv
X3J1bl9ieV9kZXZpY2UpXSk6CisgICAgICAgIGlmIG5vdCBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVu
OgogICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnTm8gdGVzdHMgdG8gcnVuLicpCiAgICAgICAg
ICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5SdW5EZXRhaWxzKGV4aXRfY29kZT0tMSkKIApA
QCAtMzE5LDkgKzMzNyw5IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgIyBDcmVh
dGUgdGhlIG91dHB1dCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LgogICAg
ICAgICBzZWxmLl9wb3J0Lmhvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxm
Ll9yZXN1bHRzX2RpcmVjdG9yeSkKIAotICAgICAgICBuZWVkc19odHRwID0gYW55KChzZWxmLl9p
c19odHRwX3Rlc3QodGVzdCkgYW5kIG5vdCBzZWxmLl9uZWVkc193ZWJfcGxhdGZvcm1fdGVzdCh0
ZXN0KSkgZm9yIHRlc3RzIGluIGl0ZXJ2YWx1ZXModGVzdHNfdG9fcnVuX2J5X2RldmljZSkgZm9y
IHRlc3QgaW4gdGVzdHMpCi0gICAgICAgIG5lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0X3NlcnZlciA9
IGFueShzZWxmLl9uZWVkc193ZWJfcGxhdGZvcm1fdGVzdCh0ZXN0KSBmb3IgdGVzdHMgaW4gaXRl
cnZhbHVlcyh0ZXN0c190b19ydW5fYnlfZGV2aWNlKSBmb3IgdGVzdCBpbiB0ZXN0cykKLSAgICAg
ICAgbmVlZHNfd2Vic29ja2V0cyA9IGFueShzZWxmLl9pc193ZWJzb2NrZXRfdGVzdCh0ZXN0KSBm
b3IgdGVzdHMgaW4gaXRlcnZhbHVlcyh0ZXN0c190b19ydW5fYnlfZGV2aWNlKSBmb3IgdGVzdCBp
biB0ZXN0cykKKyAgICAgICAgbmVlZHNfaHR0cCA9IGFueSgoc2VsZi5faXNfaHR0cF90ZXN0KHRl
c3QudGVzdF9wYXRoKSBhbmQgbm90IHNlbGYuX25lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0KHRlc3Qu
dGVzdF9wYXRoKSkgZm9yIHRlc3RzIGluIGl0ZXJ2YWx1ZXModGVzdHNfdG9fcnVuX2J5X2Rldmlj
ZSkgZm9yIHRlc3QgaW4gdGVzdHMpCisgICAgICAgIG5lZWRzX3dlYl9wbGF0Zm9ybV90ZXN0X3Nl
cnZlciA9IGFueShzZWxmLl9uZWVkc193ZWJfcGxhdGZvcm1fdGVzdCh0ZXN0LnRlc3RfcGF0aCkg
Zm9yIHRlc3RzIGluIGl0ZXJ2YWx1ZXModGVzdHNfdG9fcnVuX2J5X2RldmljZSkgZm9yIHRlc3Qg
aW4gdGVzdHMpCisgICAgICAgIG5lZWRzX3dlYnNvY2tldHMgPSBhbnkoc2VsZi5faXNfd2Vic29j
a2V0X3Rlc3QodGVzdC50ZXN0X3BhdGgpIGZvciB0ZXN0cyBpbiBpdGVydmFsdWVzKHRlc3RzX3Rv
X3J1bl9ieV9kZXZpY2UpIGZvciB0ZXN0IGluIHRlc3RzKQogICAgICAgICBzZWxmLl9ydW5uZXIg
PSBMYXlvdXRUZXN0UnVubmVyKHNlbGYuX29wdGlvbnMsIHNlbGYuX3BvcnQsIHNlbGYuX3ByaW50
ZXIsIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCBzZWxmLl90ZXN0X2lzX3Nsb3csCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHNfaHR0cD1uZWVkc19odHRwLCBu
ZWVkc193ZWJfcGxhdGZvcm1fdGVzdF9zZXJ2ZXI9bmVlZHNfd2ViX3BsYXRmb3JtX3Rlc3Rfc2Vy
dmVyLCBuZWVkc193ZWJzb2NrZXRzPW5lZWRzX3dlYnNvY2tldHMpCiAKQEAgLTM1OCw3ICszNzYs
MTQgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9
IHNlbGYuX3BvcnQuY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNlbGYuX3BvcnQudGFyZ2V0X2hv
c3QoMCkpCiAgICAgICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbi5nZXQoJ2ZsYXZvcicsIE5v
bmUpOiAgIyBUaGUgLS1yZXN1bHQtcmVwb3J0LWZsYXZvciBhcmd1bWVudCBzaG91bGQgb3ZlcnJp
ZGUgd2sxL3drMgogICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25bJ2ZsYXZvciddID0gJ3dr
MicgaWYgc2VsZi5fb3B0aW9ucy53ZWJraXRfdGVzdF9ydW5uZXIgZWxzZSAnd2sxJwotICAgICAg
ICAgICAgdGVtcF9pbml0aWFsX3Jlc3VsdHMsIHRlbXBfcmV0cnlfcmVzdWx0cywgdGVtcF9lbmFi
bGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5ID0gc2VsZi5fcnVuX3Rlc3Rfc3Vic2V0KHRlc3RzX3Rv
X3J1bl9ieV9kZXZpY2VbZGV2aWNlX3R5cGVdLCB0ZXN0c190b19za2lwLCBkZXZpY2VfdHlwZT1k
ZXZpY2VfdHlwZSkKKyAgICAgICAgICAgIHRlbXBfaW5pdGlhbF9yZXN1bHRzLCB0ZW1wX3JldHJ5
X3Jlc3VsdHMsIHRlbXBfZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSA9IHNlbGYuX3J1bl90
ZXN0X3N1YnNldCh0ZXN0c190b19ydW5fYnlfZGV2aWNlW2RldmljZV90eXBlXSwgZGV2aWNlX3R5
cGU9ZGV2aWNlX3R5cGUpCisKKyAgICAgICAgICAgIHNraXBwZWRfcmVzdWx0cyA9IFRlc3RSdW5S
ZXN1bHRzKHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0sIGxlbihhZ2dyZWdhdGVfdGVz
dHNfdG9fc2tpcCkpCisgICAgICAgICAgICBmb3Igc2tpcHBlZF90ZXN0IGluIHNldChhZ2dyZWdh
dGVfdGVzdHNfdG9fc2tpcCk6CisgICAgICAgICAgICAgICAgc2tpcHBlZF9yZXN1bHQgPSB0ZXN0
X3Jlc3VsdHMuVGVzdFJlc3VsdChza2lwcGVkX3Rlc3QudGVzdF9wYXRoKQorICAgICAgICAgICAg
ICAgIHNraXBwZWRfcmVzdWx0LnR5cGUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQCisgICAgICAg
ICAgICAgICAgc2tpcHBlZF9yZXN1bHRzLmFkZChza2lwcGVkX3Jlc3VsdCwgZXhwZWN0ZWQ9VHJ1
ZSwgdGVzdF9pc19zbG93PXNlbGYuX3Rlc3RfaXNfc2xvdyhza2lwcGVkX3Rlc3QudGVzdF9wYXRo
LCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkpCisgICAgICAgICAgICB0ZW1wX2luaXRpYWxfcmVz
dWx0cyA9IHRlbXBfaW5pdGlhbF9yZXN1bHRzLm1lcmdlKHNraXBwZWRfcmVzdWx0cykKIAogICAg
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5yZXBvcnRfdXJsczoKICAgICAgICAgICAgICAgICBz
ZWxmLl9wcmludGVyLndyaXRlbG4oJ1xuJykKQEAgLTQxOSwxMCArNDQ0LDEzIEBAIGNsYXNzIE1h
bmFnZXIob2JqZWN0KToKICAgICAgICAgICAgIHJlc3VsdC5leGl0X2NvZGUgPSAtMQogICAgICAg
ICByZXR1cm4gcmVzdWx0CiAKLSAgICBkZWYgX3J1bl90ZXN0X3N1YnNldChzZWxmLCB0ZXN0c190
b19ydW4sIHRlc3RzX3RvX3NraXAsIGRldmljZV90eXBlPU5vbmUpOgorICAgIGRlZiBfcnVuX3Rl
c3Rfc3Vic2V0KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfdG9fcnVuLCAg
IyB0eXBlOiBMaXN0W1Rlc3RdCisgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX3R5cGUs
ICAjIHR5cGU6IE9wdGlvbmFsW0RldmljZVR5cGVdCisgICAgICAgICAgICAgICAgICAgICAgICAg
KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRy
eSA9IEZhbHNlCi0gICAgICAgICAgICBpbml0aWFsX3Jlc3VsdHMgPSBzZWxmLl9ydW5fdGVzdHMo
dGVzdHNfdG9fcnVuLCB0ZXN0c190b19za2lwLCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNoLCBz
ZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3Nl
cyksIHJldHJ5aW5nPUZhbHNlLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKKyAgICAgICAgICAg
IGluaXRpYWxfcmVzdWx0cyA9IHNlbGYuX3J1bl90ZXN0cyh0ZXN0c190b19ydW4sIHNlbGYuX29w
dGlvbnMucmVwZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucywgaW50KHNlbGYuX29w
dGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgcmV0cnlpbmc9RmFsc2UsIGRldmljZV90eXBlPWRldmlj
ZV90eXBlKQogCiAgICAgICAgICAgICB0ZXN0c190b19yZXRyeSA9IHNlbGYuX3Rlc3RzX3RvX3Jl
dHJ5KGluaXRpYWxfcmVzdWx0cywgaW5jbHVkZV9jcmFzaGVzPXNlbGYuX3BvcnQuc2hvdWxkX3Jl
dHJ5X2NyYXNoZXMoKSkKICAgICAgICAgICAgICMgRG9uJ3QgcmV0cnkgZmFpbHVyZXMgd2hlbiBp
bnRlcnJ1cHRlZCBieSB1c2VyIG9yIGZhaWx1cmVzIGxpbWl0IGV4Y2VwdGlvbi4KQEAgLTQzMyw3
ICs0NjEsMTIgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIF9sb2cu
aW5mbygnJykKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oIlJldHJ5aW5nICVzIC4uLiIgJSBw
bHVyYWxpemUobGVuKHRlc3RzX3RvX3JldHJ5KSwgInVuZXhwZWN0ZWQgZmFpbHVyZSIpKQogICAg
ICAgICAgICAgICAgIF9sb2cuaW5mbygnJykKLSAgICAgICAgICAgICAgICByZXRyeV9yZXN1bHRz
ID0gc2VsZi5fcnVuX3Rlc3RzKHRlc3RzX3RvX3JldHJ5LCB0ZXN0c190b19za2lwPXNldCgpLCBy
ZXBlYXRfZWFjaD0xLCBpdGVyYXRpb25zPTEsIG51bV93b3JrZXJzPTEsIHJldHJ5aW5nPVRydWUs
IGRldmljZV90eXBlPWRldmljZV90eXBlKQorICAgICAgICAgICAgICAgIHJldHJ5X3Jlc3VsdHMg
PSBzZWxmLl9ydW5fdGVzdHMoW3Rlc3QgZm9yIHRlc3QgaW4gdGVzdHNfdG9fcnVuIGlmIHRlc3Qu
dGVzdF9wYXRoIGluIHRlc3RzX3RvX3JldHJ5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdF9lYWNoPTEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRpb25zPTEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fd29ya2Vycz0xLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlpbmc9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZV90
eXBlPWRldmljZV90eXBlKQogCiAgICAgICAgICAgICAgICAgaWYgZW5hYmxlZF9waXhlbF90ZXN0
c19pbl9yZXRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0
cyA9IEZhbHNlCkBAIC00NzcsMTAgKzUxMCwxOCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgZXhpdF9jb2RlID0gc2VsZi5fcG9ydC5leGl0X2NvZGVfZnJvbV9zdW1t
YXJpemVkX3Jlc3VsdHMoc3VtbWFyaXplZF9yZXN1bHRzKQogICAgICAgICByZXR1cm4gdGVzdF9y
dW5fcmVzdWx0cy5SdW5EZXRhaWxzKGV4aXRfY29kZSwgc3VtbWFyaXplZF9yZXN1bHRzLCBpbml0
aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMsIGVuYWJsZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkp
CiAKLSAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCB0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAs
IHJlcGVhdF9lYWNoLCBpdGVyYXRpb25zLCBudW1fd29ya2VycywgcmV0cnlpbmcsIGRldmljZV90
eXBlPU5vbmUpOgorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsCisgICAgICAgICAgICAgICAgICAg
dGVzdHNfdG9fcnVuLCAgIyB0eXBlOiBMaXN0W1Rlc3RdCisgICAgICAgICAgICAgICAgICAgcmVw
ZWF0X2VhY2gsICAjIHR5cGU6IGludAorICAgICAgICAgICAgICAgICAgIGl0ZXJhdGlvbnMsICAj
IHR5cGU6IGludAorICAgICAgICAgICAgICAgICAgIG51bV93b3JrZXJzLCAgIyB0eXBlOiBpbnQK
KyAgICAgICAgICAgICAgICAgICByZXRyeWluZywgICMgdHlwZTogYm9vbAorICAgICAgICAgICAg
ICAgICAgIGRldmljZV90eXBlLCAgIyB0eXBlOiBPcHRpb25hbFtEZXZpY2VUeXBlXQorICAgICAg
ICAgICAgICAgICAgICk6CiAgICAgICAgIHRlc3RfaW5wdXRzID0gc2VsZi5fZ2V0X3Rlc3RfaW5w
dXRzKHRlc3RzX3RvX3J1biwgcmVwZWF0X2VhY2gsIGl0ZXJhdGlvbnMsIGRldmljZV90eXBlPWRl
dmljZV90eXBlKQogCi0gICAgICAgIHJldHVybiBzZWxmLl9ydW5uZXIucnVuX3Rlc3RzKHNlbGYu
X2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0sIHRlc3RfaW5wdXRzLCB0ZXN0c190b19za2lwLCBu
dW1fd29ya2VycywgcmV0cnlpbmcsIGRldmljZV90eXBlKQorICAgICAgICBhc3NlcnQgc2VsZi5f
cnVubmVyIGlzIG5vdCBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5uZXIucnVuX3Rlc3Rz
KHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0sIHRlc3RfaW5wdXRzLCBudW1fd29ya2Vy
cywgcmV0cnlpbmcsIGRldmljZV90eXBlKQogCiAgICAgZGVmIF9jbGVhbl91cF9ydW4oc2VsZik6
CiAgICAgICAgIF9sb2cuZGVidWcoIkZsdXNoaW5nIHN0ZG91dCIpCkBAIC02NTIsMTEgKzY5Mywx
NSBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICBqc29uX3Jlc3VsdHNfZ2Vu
ZXJhdG9yLmFkZF9wYXRoX3RvX3RyaWUobmFtZSwgdmFsdWUsIHN0YXRzX3RyaWUpCiAgICAgICAg
IHJldHVybiBzdGF0c190cmllCiAKLSAgICBkZWYgX3ByaW50X2V4cGVjdGF0aW9uX2xpbmVfZm9y
X3Rlc3Qoc2VsZiwgZm9ybWF0X3N0cmluZywgdGVzdCwgZGV2aWNlX3R5cGU9Tm9uZSk6Ci0gICAg
ICAgIGxpbmUgPSBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLm1vZGVsKCkuZ2V0X2V4
cGVjdGF0aW9uX2xpbmUodGVzdCkKLSAgICAgICAgcHJpbnQoZm9ybWF0X3N0cmluZy5mb3JtYXQo
dGVzdCwgbGluZS5leHBlY3RlZF9iZWhhdmlvciwgc2VsZi5fZXhwZWN0YXRpb25zW2RldmljZV90
eXBlXS5yZWFkYWJsZV9maWxlbmFtZV9hbmRfbGluZV9udW1iZXIobGluZSksIGxpbmUub3JpZ2lu
YWxfc3RyaW5nIG9yICcnKSkKKyAgICBkZWYgX3ByaW50X2V4cGVjdGF0aW9uX2xpbmVfZm9yX3Rl
c3Qoc2VsZiwgZm9ybWF0X3N0cmluZywgdGVzdCwgZGV2aWNlX3R5cGUpOgorICAgICAgICB0ZXN0
X3BhdGggPSB0ZXN0LnRlc3RfcGF0aAorICAgICAgICBsaW5lID0gc2VsZi5fZXhwZWN0YXRpb25z
W2RldmljZV90eXBlXS5tb2RlbCgpLmdldF9leHBlY3RhdGlvbl9saW5lKHRlc3RfcGF0aCkKKyAg
ICAgICAgcHJpbnQoZm9ybWF0X3N0cmluZy5mb3JtYXQodGVzdF9wYXRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5lLmV4cGVjdGVkX2JlaGF2aW9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVd
LnJlYWRhYmxlX2ZpbGVuYW1lX2FuZF9saW5lX251bWJlcihsaW5lKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGluZS5vcmlnaW5hbF9zdHJpbmcgb3IgJycpKQogCi0gICAg
ZGVmIF9wcmludF9leHBlY3RhdGlvbnNfZm9yX3N1YnNldChzZWxmLCBkZXZpY2VfdHlwZSwgdGVz
dF9jb2xfd2lkdGgsIHRlc3RzX3RvX3J1biwgdGVzdHNfdG9fc2tpcD17fSk6CisgICAgZGVmIF9w
cmludF9leHBlY3RhdGlvbnNfZm9yX3N1YnNldChzZWxmLCBkZXZpY2VfdHlwZSwgdGVzdF9jb2xf
d2lkdGgsIHRlc3RzX3RvX3J1biwgdGVzdHNfdG9fc2tpcD1Ob25lKToKICAgICAgICAgZm9ybWF0
X3N0cmluZyA9ICd7ezp7d2lkdGh9fX0ge3t9fSB7e319IHt7fX0nLmZvcm1hdCh3aWR0aD10ZXN0
X2NvbF93aWR0aCkKICAgICAgICAgaWYgdGVzdHNfdG9fc2tpcDoKICAgICAgICAgICAgIHByaW50
KCcnKQpAQCAtNjcwLDM5ICs3MTUsMjEgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAg
ICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0YXRpb25fbGluZV9mb3JfdGVzdChmb3JtYXRfc3RyaW5n
LCB0ZXN0LCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKIAogICAgIGRlZiBwcmludF9leHBlY3Rh
dGlvbnMoc2VsZiwgYXJncyk6Ci0gICAgICAgIGFnZ3JlZ2F0ZV90ZXN0X25hbWVzID0gc2V0KCkK
LSAgICAgICAgYWdncmVnYXRlX3Rlc3RzX3RvX3J1biA9IHNldCgpCi0gICAgICAgIGFnZ3JlZ2F0
ZV90ZXN0c190b19za2lwID0gc2V0KCkKLSAgICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZSA9
IHt9Ci0KICAgICAgICAgZGV2aWNlX3R5cGVfbGlzdCA9IHNlbGYuX3BvcnQuREVGQVVMVF9ERVZJ
Q0VfVFlQRVMgb3IgW3NlbGYuX3BvcnQuREVWSUNFX1RZUEVdCi0gICAgICAgIGZvciBkZXZpY2Vf
dHlwZSBpbiBkZXZpY2VfdHlwZV9saXN0OgotICAgICAgICAgICAgIiIiUnVuIHRoZSB0ZXN0cyBh
bmQgcmV0dXJuIGEgUnVuRGV0YWlscyBvYmplY3Qgd2l0aCB0aGUgcmVzdWx0cy4iIiIKLSAgICAg
ICAgICAgIGZvcl9kZXZpY2VfdHlwZSA9ICdmb3Ige30gJy5mb3JtYXQoZGV2aWNlX3R5cGUpIGlm
IGRldmljZV90eXBlIGVsc2UgJycKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBk
YXRlKCdDb2xsZWN0aW5nIHRlc3RzIHt9Li4uJy5mb3JtYXQoZm9yX2RldmljZV90eXBlKSkKLSAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwYXRocywgdGVzdHMgPSBzZWxmLl9jb2xs
ZWN0X3Rlc3RzKGFyZ3MsIGRldmljZV90eXBlPWRldmljZV90eXBlKQotICAgICAgICAgICAgZXhj
ZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBUaGlzIGlzIHJhaXNlZCBpZiAtLXRlc3Qt
bGlzdCBkb2Vzbid0IGV4aXN0Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRlc3RfcnVuX3Jlc3Vs
dHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEpCi0KLSAgICAgICAgICAgIHRlc3RfbmFtZXMgPSBb
dGVzdC50ZXN0X3BhdGggZm9yIHRlc3QgaW4gdGVzdHNdCiAKLSAgICAgICAgICAgIHNlbGYuX3By
aW50ZXIud3JpdGVfdXBkYXRlKCdQYXJzaW5nIGV4cGVjdGF0aW9ucyB7fS4uLicuZm9ybWF0KGZv
cl9kZXZpY2VfdHlwZSkpCi0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5
cGVdID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyhzZWxmLl9wb3J0LCB0ZXN0
X25hbWVzLCBmb3JjZV9leHBlY3RhdGlvbnNfcGFzcz1zZWxmLl9vcHRpb25zLmZvcmNlLCBkZXZp
Y2VfdHlwZT1kZXZpY2VfdHlwZSkKLSAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZp
Y2VfdHlwZV0ucGFyc2VfYWxsX2V4cGVjdGF0aW9ucygpCi0KLSAgICAgICAgICAgIGFnZ3JlZ2F0
ZV90ZXN0X25hbWVzLnVwZGF0ZSh0ZXN0X25hbWVzKQotICAgICAgICAgICAgdGVzdHNfdG9fcnVu
LCB0ZXN0c190b19za2lwID0gc2VsZi5fcHJlcGFyZV9saXN0cyhwYXRocywgdGVzdF9uYW1lcywg
ZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCi0gICAgICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9f
c2tpcC51cGRhdGUodGVzdHNfdG9fc2tpcCkKLQotICAgICAgICAgICAgdGVzdHNfdG9fcnVuX2J5
X2RldmljZVtkZXZpY2VfdHlwZV0gPSBbdGVzdCBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4gaWYg
dGVzdCBub3QgaW4gYWdncmVnYXRlX3Rlc3RzX3RvX3J1bl0KLSAgICAgICAgICAgIGFnZ3JlZ2F0
ZV90ZXN0c190b19ydW4udXBkYXRlKHRlc3RzX3RvX3J1bikKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgdGVzdHNfdG9fcnVuX2J5X2RldmljZSwgYWdncmVnYXRlX3Rlc3RzX3RvX3NraXAgPSBz
ZWxmLl9jb2xsZWN0X3Rlc3RzKGFyZ3MsIGRldmljZV90eXBlX2xpc3QpCisgICAgICAgIGV4Y2Vw
dCBJT0Vycm9yOgorICAgICAgICAgICAgIyBUaGlzIGlzIHJhaXNlZCBpZiAtLXRlc3QtbGlzdCBk
b2Vzbid0IGV4aXN0CisgICAgICAgICAgICByZXR1cm4gLTEKIAotICAgICAgICBhZ2dyZWdhdGVf
dGVzdHNfdG9fc2tpcCA9IGFnZ3JlZ2F0ZV90ZXN0c190b19za2lwIC0gYWdncmVnYXRlX3Rlc3Rz
X3RvX3J1bgorICAgICAgICBhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuID0gc2V0KCkKKyAgICAgICAg
Zm9yIHYgaW4gdGVzdHNfdG9fcnVuX2J5X2RldmljZS52YWx1ZXMoKToKKyAgICAgICAgICAgIGFn
Z3JlZ2F0ZV90ZXN0c190b19ydW4udXBkYXRlKHYpCisgICAgICAgIGFnZ3JlZ2F0ZV90ZXN0cyA9
IGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4gfCBhZ2dyZWdhdGVfdGVzdHNfdG9fc2tpcAogCi0gICAg
ICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZm91bmQobGVuKGFnZ3JlZ2F0ZV90ZXN0X25hbWVzKSwg
bGVuKGFnZ3JlZ2F0ZV90ZXN0c190b19ydW4pLCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNoLCBz
ZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMpCi0gICAgICAgIHRlc3RfY29sX3dpZHRoID0gbGVuKG1h
eChhZ2dyZWdhdGVfdGVzdHNfdG9fcnVuLnVuaW9uKGFnZ3JlZ2F0ZV90ZXN0c190b19za2lwKSwg
a2V5PWxlbikpICsgMQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2ZvdW5kKGxlbihhZ2dy
ZWdhdGVfdGVzdHMpLCBsZW4oYWdncmVnYXRlX3Rlc3RzX3RvX3J1biksIHNlbGYuX29wdGlvbnMu
cmVwZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucykKKyAgICAgICAgdGVzdF9jb2xf
d2lkdGggPSBtYXgobGVuKHRlc3QudGVzdF9wYXRoKSBmb3IgdGVzdCBpbiBhZ2dyZWdhdGVfdGVz
dHMpICsgMQogCiAgICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGF0aW9uc19mb3Jfc3Vic2V0KGRl
dmljZV90eXBlX2xpc3RbMF0sIHRlc3RfY29sX3dpZHRoLCB0ZXN0c190b19ydW5fYnlfZGV2aWNl
W2RldmljZV90eXBlX2xpc3RbMF1dLCBhZ2dyZWdhdGVfdGVzdHNfdG9fc2tpcCkKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdC5weQppbmRl
eCA3ZmVkYTlmMTA0ZDdiZjYzMmYxNDI4MjlmYzUzN2NiMmJjZWQ4M2YyLi5kNTFhNWJmYzcyZDcx
NjZlYmM4MzJkMzk0OGRkN2Y1ZGMyNmJlZmU3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdC5weQpAQCAtMjcsNTAgKzI3LDE3IEBACiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIAoraW1wb3J0IGF0dHIKKworCitAYXR0ci5zKGZyb3plbj1UcnVlKQog
Y2xhc3MgVGVzdChvYmplY3QpOgogICAgICIiIkRhdGEgYWJvdXQgYSB0ZXN0IGFuZCBpdHMgZXhw
ZWN0YXRpb25zLgogCiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgaW5oZXJlbnRseSBwbGF0Zm9ybSBz
cGVjaWZpYywgYXMgZXhwZWN0YXRpb25zIGFyZSBwbGF0Zm9ybSBzcGVjaWZpYy4iIiIKLQotICAg
IGRlZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwKLSAgICAgICAgdGVzdF9wYXRoLAotICAgICAg
ICBleHBlY3RlZF90ZXh0X3BhdGg9Tm9uZSwKLSAgICAgICAgZXhwZWN0ZWRfaW1hZ2VfcGF0aD1O
b25lLAotICAgICAgICBleHBlY3RlZF9jaGVja3N1bV9wYXRoPU5vbmUsCi0gICAgICAgIGV4cGVj
dGVkX2F1ZGlvX3BhdGg9Tm9uZSwKLSAgICAgICAgcmVmZXJlbmNlX2ZpbGVzPU5vbmUsCi0gICAg
KToKLSAgICAgICAgc2VsZi50ZXN0X3BhdGggPSB0ZXN0X3BhdGgKLSAgICAgICAgc2VsZi5leHBl
Y3RlZF90ZXh0X3BhdGggPSBleHBlY3RlZF90ZXh0X3BhdGgKLSAgICAgICAgc2VsZi5leHBlY3Rl
ZF9pbWFnZV9wYXRoID0gZXhwZWN0ZWRfaW1hZ2VfcGF0aAotICAgICAgICBzZWxmLmV4cGVjdGVk
X2NoZWNrc3VtX3BhdGggPSBleHBlY3RlZF9jaGVja3N1bV9wYXRoCi0gICAgICAgIHNlbGYuZXhw
ZWN0ZWRfYXVkaW9fcGF0aCA9IGV4cGVjdGVkX2F1ZGlvX3BhdGgKLSAgICAgICAgc2VsZi5yZWZl
cmVuY2VfZmlsZXMgPSByZWZlcmVuY2VfZmlsZXMKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToK
LSAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAgICJUZXN0KCVyLCAiCi0gICAgICAgICAgICAi
ZXhwZWN0ZWRfdGV4dF9wYXRoPSVyLCAiCi0gICAgICAgICAgICAiZXhwZWN0ZWRfaW1hZ2VfcGF0
aD0lciwgIgotICAgICAgICAgICAgImV4cGVjdGVkX2NoZWNrc3VtX3BhdGg9JXIsICIKLSAgICAg
ICAgICAgICJleHBlY3RlZF9hdWRpb19wYXRoPSVyLCAiCi0gICAgICAgICAgICAicmVmZXJlbmNl
X2ZpbGVzPSVyKSIKLSAgICAgICAgKSAlICgKLSAgICAgICAgICAgIHNlbGYudGVzdF9wYXRoLAot
ICAgICAgICAgICAgc2VsZi5leHBlY3RlZF90ZXh0X3BhdGgsCi0gICAgICAgICAgICBzZWxmLmV4
cGVjdGVkX2ltYWdlX3BhdGgsCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkX2NoZWNrc3VtX3Bh
dGgsCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkX2F1ZGlvX3BhdGgsCi0gICAgICAgICAgICBz
ZWxmLnJlZmVyZW5jZV9maWxlcywKLSAgICAgICAgKQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBv
dGhlcik6Ci0gICAgICAgIHJldHVybiAoCi0gICAgICAgICAgICBzZWxmLnRlc3RfcGF0aCA9PSBv
dGhlci50ZXN0X3BhdGgKLSAgICAgICAgICAgIGFuZCBzZWxmLmV4cGVjdGVkX3RleHRfcGF0aCA9
PSBvdGhlci5leHBlY3RlZF90ZXh0X3BhdGgKLSAgICAgICAgICAgIGFuZCBzZWxmLmV4cGVjdGVk
X2ltYWdlX3BhdGggPT0gb3RoZXIuZXhwZWN0ZWRfaW1hZ2VfcGF0aAotICAgICAgICAgICAgYW5k
IHNlbGYuZXhwZWN0ZWRfY2hlY2tzdW1fcGF0aCA9PSBvdGhlci5leHBlY3RlZF9jaGVja3N1bV9w
YXRoCi0gICAgICAgICAgICBhbmQgc2VsZi5leHBlY3RlZF9hdWRpb19wYXRoID09IG90aGVyLmV4
cGVjdGVkX2F1ZGlvX3BhdGgKLSAgICAgICAgICAgIGFuZCBzZWxmLnJlZmVyZW5jZV9maWxlcyA9
PSBvdGhlci5yZWZlcmVuY2VfZmlsZXMKLSAgICAgICAgKQorICAgIHRlc3RfcGF0aCA9IGF0dHIu
aWIodHlwZT1zdHIpCisgICAgZXhwZWN0ZWRfdGV4dF9wYXRoID0gYXR0ci5pYihkZWZhdWx0PU5v
bmUsIHR5cGU9c3RyKQorICAgIGV4cGVjdGVkX2ltYWdlX3BhdGggPSBhdHRyLmliKGRlZmF1bHQ9
Tm9uZSwgdHlwZT1zdHIpCisgICAgZXhwZWN0ZWRfY2hlY2tzdW1fcGF0aCA9IGF0dHIuaWIoZGVm
YXVsdD1Ob25lLCB0eXBlPXN0cikKKyAgICBleHBlY3RlZF9hdWRpb19wYXRoID0gYXR0ci5pYihk
ZWZhdWx0PU5vbmUsIHR5cGU9c3RyKQorICAgIHJlZmVyZW5jZV9maWxlcyA9IGF0dHIuaWIoZGVm
YXVsdD1Ob25lLCB0eXBlPWxpc3QpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lucHV0LnB5CmluZGV4IDYyZWM4ZTA5OTQ4MjA0
OWYwZDM2MDViZTcwYmMzNmY2MDQ3OTEwNWQuLjNkYmM1Y2NmMDQyMDE0Mjc5NTA5M2E5OTAwNDNh
M2Q4NzQwODQ0ZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X2lucHV0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lucHV0LnB5CkBAIC0yOCw2ICsyOCw4IEBACiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKIAorZnJvbSAudGVzdCBpbXBvcnQgVGVzdAorCiBjbGFzcyBUZXN0SW5wdXQob2Jq
ZWN0KToKICAgICAiIiJJbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QgbmVlZGVkIHRvIHJ1biBpdC4K
IApAQCAtMzUsMTUgKzM3LDI0IEBAIGNsYXNzIFRlc3RJbnB1dChvYmplY3QpOgogICAgIGRlcml2
ZWQgZnJvbSBUZXN0RXhwZWN0YXRpb25zL3Rlc3QgZXhlY3V0aW9uIG9wdGlvbnMgKGUuZy4sIHRp
bWVvdXQpLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfbmFtZSwgdGlt
ZW91dD1Ob25lLCBuZWVkc19zZXJ2ZXJzPU5vbmUsIHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19p
bl9zdGRlcnI9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAg
IHRlc3QsICAjIHR5cGU6IFRlc3QKKyAgICAgICAgICAgICAgICAgdGltZW91dD1Ob25lLCAgIyB0
eXBlOiBVbmlvbltOb25lLCBpbnQsIHN0cl0KKyAgICAgICAgICAgICAgICAgbmVlZHNfc2VydmVy
cz1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtib29sXQorICAgICAgICAgICAgICAgICBzaG91bGRf
ZHVtcF9qc2NvbnNvbGVsb2dfaW5fc3RkZXJyPU5vbmUsICAjIHR5cGU6IE9wdGlvbmFsW2Jvb2xd
CisgICAgICAgICAgICAgICAgICk6CiAgICAgICAgICMgVGVzdElucHV0IG9iamVjdHMgYXJlIG5v
cm1hbGx5IGNvbnN0cnVjdGVkIGJ5IHRoZSBtYW5hZ2VyIGFuZCBwYXNzZWQKICAgICAgICAgIyB0
byB0aGUgd29ya2VycywgYnV0IHRoZXNlIHNvbWUgZmllbGRzIGFyZSBzZXQgbGF6aWx5IGluIHRo
ZSB3b3JrZXJzIHdoZXJlIHBvc3NpYmxlCiAgICAgICAgICMgYmVjYXVzZSB0aGV5IHJlcXVpcmUg
dXMgdG8gbG9vayBhdCB0aGUgZmlsZXN5c3RlbSBhbmQgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGRv
IHRoYXQgaW4gcGFyYWxsZWwuCi0gICAgICAgIHNlbGYudGVzdF9uYW1lID0gdGVzdF9uYW1lCisg
ICAgICAgIHNlbGYudGVzdCA9IHRlc3QKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dCAg
IyBpbiBtc2Vjczsgc2hvdWxkIHJlbmFtZSB0aGlzIGZvciBjb25zaXN0ZW5jeQogICAgICAgICBz
ZWxmLm5lZWRzX3NlcnZlcnMgPSBuZWVkc19zZXJ2ZXJzCiAgICAgICAgIHNlbGYuc2hvdWxkX2R1
bXBfanNjb25zb2xlbG9nX2luX3N0ZGVyciA9IHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9z
dGRlcnIKICAgICAgICAgc2VsZi5yZWZlcmVuY2VfZmlsZXMgPSBOb25lCiAKKyAgICBAcHJvcGVy
dHkKKyAgICBkZWYgdGVzdF9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50ZXN0LnRl
c3RfcGF0aAorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gIlRlc3RJ
bnB1dCgnJXMnLCB0aW1lb3V0PSVzLCBuZWVkc19zZXJ2ZXJzPSVzLCByZWZlcmVuY2VfZmlsZXM9
JXMsIHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnI9JXMpIiAlIChzZWxmLnRlc3Rf
bmFtZSwgc2VsZi50aW1lb3V0LCBzZWxmLm5lZWRzX3NlcnZlcnMsIHNlbGYucmVmZXJlbmNlX2Zp
bGVzLCBzZWxmLnNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVz
dWx0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0
X3J1bl9yZXN1bHRzLnB5CmluZGV4IDJjMjNjMDRlZGYwZWJjMmIzY2FhMWIzNjNjYjkzNTIzMmNl
NGRmYmQuLjhmOTE2ZDhhN2M3MDk0MjMwOTgwNjBiMWMzODhlODBhYWRhMGM1OTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9y
ZXN1bHRzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVs
cy90ZXN0X3J1bl9yZXN1bHRzLnB5CkBAIC0xMzEsNyArMTMxLDIzIEBAIGNsYXNzIFRlc3RSdW5S
ZXN1bHRzKG9iamVjdCk6CiAgICAgZGVmIG1lcmdlKHNlbGYsIHRlc3RfcnVuX3Jlc3VsdHMpOgog
ICAgICAgICBpZiBub3QgdGVzdF9ydW5fcmVzdWx0czoKICAgICAgICAgICAgIHJldHVybiBzZWxm
CisKICAgICAgICAgIyBzZWxmLmV4cGVjdGF0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGJv
dGgKKyAgICAgICAgIyBGSVhNRTogdGhpcyBpc24ndCBhY3R1YWxseSB0cnVlIHdoZW4gd2UgcnVu
IG9uIG11bHRpcGxlIGRldmljZV90eXBlcworICAgICAgICAjIGlmIHNlbGYuZXhwZWN0YXRpb25z
ICE9IHRlc3RfcnVuX3Jlc3VsdHMuZXhwZWN0YXRpb25zOgorICAgICAgICAjICAgICByYWlzZSBW
YWx1ZUVycm9yKCJkaWZmZXJlbnQgVGVzdEV4cGVjdGF0aW9ucyIpCisKKyAgICAgICAgZGVmIG1l
cmdlX2RpY3Rfc2V0cyhhLCBiKToKKyAgICAgICAgICAgIG1lcmdlZCA9IHt9CisgICAgICAgICAg
ICBrZXlzID0gc2V0KGEua2V5cygpKSB8IHNldChiLmtleXMoKSkKKyAgICAgICAgICAgIGZvciBr
IGluIGtleXM6CisgICAgICAgICAgICAgICAgdl9hID0gYS5nZXQoaywgc2V0KCkpCisgICAgICAg
ICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uodl9hLCBzZXQpCisgICAgICAgICAgICAgICAgdl9i
ID0gYi5nZXQoaywgc2V0KCkpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uodl9i
LCBzZXQpCisgICAgICAgICAgICAgICAgbWVyZ2VkW2tdID0gdl9hIHwgdl9iCisgICAgICAgICAg
ICByZXR1cm4gbWVyZ2VkCisKICAgICAgICAgc2VsZi50b3RhbCArPSB0ZXN0X3J1bl9yZXN1bHRz
LnRvdGFsCiAgICAgICAgIHNlbGYucmVtYWluaW5nICs9IHRlc3RfcnVuX3Jlc3VsdHMucmVtYWlu
aW5nCiAgICAgICAgIHNlbGYuZXhwZWN0ZWQgKz0gdGVzdF9ydW5fcmVzdWx0cy5leHBlY3RlZApA
QCAtMTM5LDE2ICsxNTUsMTQgQEAgY2xhc3MgVGVzdFJ1blJlc3VsdHMob2JqZWN0KToKICAgICAg
ICAgc2VsZi51bmV4cGVjdGVkX2ZhaWx1cmVzICs9IHRlc3RfcnVuX3Jlc3VsdHMudW5leHBlY3Rl
ZF9mYWlsdXJlcwogICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfY3Jhc2hlcyArPSB0ZXN0X3J1bl9y
ZXN1bHRzLnVuZXhwZWN0ZWRfY3Jhc2hlcwogICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfdGltZW91
dHMgKz0gdGVzdF9ydW5fcmVzdWx0cy51bmV4cGVjdGVkX3RpbWVvdXRzCi0gICAgICAgIHNlbGYu
dGVzdHNfYnlfZXhwZWN0YXRpb24udXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMudGVzdHNfYnlfZXhw
ZWN0YXRpb24pCi0gICAgICAgIHNlbGYudGVzdHNfYnlfdGltZWxpbmUudXBkYXRlKHRlc3RfcnVu
X3Jlc3VsdHMudGVzdHNfYnlfdGltZWxpbmUpCisgICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0
YXRpb24gPSBtZXJnZV9kaWN0X3NldHMoc2VsZi50ZXN0c19ieV9leHBlY3RhdGlvbiwgdGVzdF9y
dW5fcmVzdWx0cy50ZXN0c19ieV9leHBlY3RhdGlvbikKKyAgICAgICAgc2VsZi50ZXN0c19ieV90
aW1lbGluZSA9IG1lcmdlX2RpY3Rfc2V0cyhzZWxmLnRlc3RzX2J5X3RpbWVsaW5lLCB0ZXN0X3J1
bl9yZXN1bHRzLnRlc3RzX2J5X3RpbWVsaW5lKQogICAgICAgICBzZWxmLnJlc3VsdHNfYnlfbmFt
ZS51cGRhdGUodGVzdF9ydW5fcmVzdWx0cy5yZXN1bHRzX2J5X25hbWUpCiAgICAgICAgIHNlbGYu
YWxsX3Jlc3VsdHMgKz0gdGVzdF9ydW5fcmVzdWx0cy5hbGxfcmVzdWx0cwogICAgICAgICBzZWxm
LnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1lLnVwZGF0ZSh0ZXN0X3J1bl9yZXN1bHRzLnVuZXhw
ZWN0ZWRfcmVzdWx0c19ieV9uYW1lKQogICAgICAgICBzZWxmLmZhaWx1cmVzX2J5X25hbWUudXBk
YXRlKHRlc3RfcnVuX3Jlc3VsdHMuZmFpbHVyZXNfYnlfbmFtZSkKICAgICAgICAgc2VsZi50b3Rh
bF9mYWlsdXJlcyArPSB0ZXN0X3J1bl9yZXN1bHRzLnRvdGFsX2ZhaWx1cmVzCiAgICAgICAgIHNl
bGYuZXhwZWN0ZWRfc2tpcHMgKz0gdGVzdF9ydW5fcmVzdWx0cy5leHBlY3RlZF9za2lwcwotICAg
ICAgICBzZWxmLnRlc3RzX2J5X2V4cGVjdGF0aW9uLnVwZGF0ZSh0ZXN0X3J1bl9yZXN1bHRzLnRl
c3RzX2J5X2V4cGVjdGF0aW9uKQotICAgICAgICBzZWxmLnRlc3RzX2J5X3RpbWVsaW5lLnVwZGF0
ZSh0ZXN0X3J1bl9yZXN1bHRzLnRlc3RzX2J5X3RpbWVsaW5lKQogICAgICAgICBzZWxmLnNsb3df
dGVzdHMudXBkYXRlKHRlc3RfcnVuX3Jlc3VsdHMuc2xvd190ZXN0cykKIAogICAgICAgICBzZWxm
LmludGVycnVwdGVkIHw9IHRlc3RfcnVuX3Jlc3VsdHMuaW50ZXJydXB0ZWQK
</data>

          </attachment>
      

    </bug>

</bugzilla>