<?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>191568</bug_id>
          
          <creation_ts>2018-11-12 15:19:11 -0800</creation_ts>
          <short_desc>webkitpy: Refactor port code for devices</short_desc>
          <delta_ts>2018-11-14 08:25:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1477755</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-11-12 15:19:11 -0800</bug_when>
    <thetext>With the addition of WebKit on watchOS, some tooling which was historically unique to iOS should be shared with watchOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477757</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-12 15:19:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/46005821&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477758</commentid>
    <comment_count>2</comment_count>
      <attachid>354598</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-11-12 15:21:49 -0800</bug_when>
    <thetext>Created attachment 354598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477775</commentid>
    <comment_count>3</comment_count>
      <attachid>354603</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-11-12 15:50:28 -0800</bug_when>
    <thetext>Created attachment 354603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478172</commentid>
    <comment_count>4</comment_count>
      <attachid>354712</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-11-13 15:28:35 -0800</bug_when>
    <thetext>Created attachment 354712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478220</commentid>
    <comment_count>5</comment_count>
      <attachid>354712</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2018-11-13 16:51:32 -0800</bug_when>
    <thetext>Comment on attachment 354712
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478447</commentid>
    <comment_count>6</comment_count>
      <attachid>354712</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-14 08:25:07 -0800</bug_when>
    <thetext>Comment on attachment 354712
Patch

Clearing flags on attachment: 354712

Committed r238177: &lt;https://trac.webkit.org/changeset/238177&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478448</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-14 08:25:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354598</attachid>
            <date>2018-11-12 15:21:49 -0800</date>
            <delta_ts>2018-11-12 15:50:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191568-20181112152149.patch</filename>
            <type>text/plain</type>
            <size>19781</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzODEwNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUxIEBACisyMDE4LTExLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogUmVmYWN0b3IgcG9ydCBjb2RlIGZvciBkZXZpY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1NjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MDA1ODIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIHdhdGNoT1MgYW5kIGlPUyBkZXZpY2UgcG9ydHMgc2hh
cmUgbWFueSBjaGFyYWN0ZXJpc3RpY3MgaW4gdGVzdGluZywgbW9zdGx5IGR1ZQorICAgICAgICB0
byB0aGUgZmFjdCB0aGF0IGJvdGggYXJlIGRldmljZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHk6IEFkZGVkLgorICAgICAgICAoRGV2aWNlUG9ydCk6
IEFkZCBiYXNlIGNsYXNzIHRoYXQgYWxsIHNpbXVsYXRlZC9waHlzaWNhbCBkZXZpY2UgcG9ydHMg
c2hhcmUuCisgICAgICAgIChEZXZpY2VQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKERldmljZVBv
cnQuZHJpdmVyX2NtZF9saW5lX2Zvcl9sb2dnaW5nKTogTW92ZWQgZnJvbSBpT1MgcG9ydC4KKyAg
ICAgICAgKERldmljZVBvcnQuX2dlbmVyYXRlX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKTogRGl0
dG8uCisgICAgICAgIChEZXZpY2VQb3J0LmNoaWxkX3Byb2Nlc3Nlcyk6IERpdHRvLgorICAgICAg
ICAoRGV2aWNlUG9ydC5kcml2ZXJfbmFtZSk6IERpdHRvLgorICAgICAgICAoRGV2aWNlUG9ydC50
YXJnZXRfaG9zdCk6IEdlbmVyYWxpemUgd29ya2VyIGFjY2VzcyB0byBhdHRhY2hlZCBkZXZpY2Vz
IGFuZAorICAgICAgICBzaW11bGF0ZWQgZGV2aWNlcyBiYXNlZCBvbiB0aGUgZGV2aWNlIG1hbmFn
ZXIuCisgICAgICAgIChEZXZpY2VQb3J0LmRldmljZXMpOiBSZXR1cm4gYSBsaXN0IG9mIGFsbCBk
ZXZpY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvcnQuCisgICAgICAgIChEZXZpY2VQb3J0Ll9j
cmVhdGVfZGV2aWNlcyk6CisgICAgICAgIChEZXZpY2VQb3J0Ll9idWlsZF9kcml2ZXJfZmxhZ3Mp
OiBNb3ZlZCBmcm9tIGlPU1NpbXVsYXRvclBvcnQvaU9TRGV2aWNlUG9ydC4KKyAgICAgICAgKERl
dmljZVBvcnQuX2luc3RhbGwpOiBNb3ZlZCBmcm9tIGlPUyBwb3J0LgorICAgICAgICAoRGV2aWNl
UG9ydC5zZXR1cF90ZXN0X3J1bik6IERpdHRvLgorICAgICAgICAoRGV2aWNlUG9ydC5jbGVhbl91
cF90ZXN0X3J1bik6IERpdHRvLgorICAgICAgICAoRGV2aWNlUG9ydC5kaWRfc3Bhd25fd29ya2Vy
KTogRGl0dG8uCisgICAgICAgIChEZXZpY2VQb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcik6
IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAg
IChJT1NQb3J0KToKKyAgICAgICAgKElPU1BvcnQuZHJpdmVyX2NtZF9saW5lX2Zvcl9sb2dnaW5n
KTogTW92ZWQgdG8gRGV2aWNlUG9ydC4KKyAgICAgICAgKElPU1BvcnQuZHJpdmVyX25hbWUpOiBE
aXR0by4KKyAgICAgICAgKElPU1BvcnQuX2dlbmVyYXRlX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25z
KTogRGl0dG8uCisgICAgICAgIChJT1NQb3J0LmNoaWxkX3Byb2Nlc3Nlcyk6IERpdHRvLgorICAg
ICAgICAoSU9TUG9ydC5fdGVzdGluZ19kZXZpY2UpOiBEaXR0by4KKyAgICAgICAgKElPU1BvcnQu
dGFyZ2V0X2hvc3QpOiBEaXR0by4KKyAgICAgICAgKElPU1BvcnQuX2NyZWF0ZV9kZXZpY2VzKTog
RGl0dG8uCisgICAgICAgIChJT1NQb3J0LnNldHVwX3Rlc3RfcnVuKTogRGl0dG8uCisgICAgICAg
IChJT1NQb3J0LmNsZWFuX3VwX3Rlc3RfcnVuKTogRGl0dG8uCisgICAgICAgIChJT1NQb3J0LmRp
ZF9zcGF3bl93b3JrZXIpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQv
aW9zX2RldmljZS5weToKKyAgICAgICAgKElPU0RldmljZVBvcnQpOiBJT1NEZXZpY2VQb3J0IHVz
ZXMgYSBkZXZpY2UgbWFuYWdlciBmcm9tIGFwcGxlX2FkZGl0aW9ucy4KKyAgICAgICAgKElPU1Np
bXVsYXRvclBvcnQuX2J1aWxkX2RyaXZlcl9mbGFncyk6IE1vdmVkIHRvIERldmljZVBvcnQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3IucHk6CisgICAgICAg
IChJT1NTaW11bGF0b3JQb3J0KTogSU9TU2ltdWxhdG9yUG9ydCB1c2VzIHRoZSBTaW11bGF0ZWRE
ZXZpY2VNYW5hZ2VyLgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5fY3JlYXRlX2RldmljZXMp
OiBDbGVhbiB1cCBsb2dnaW5nIHN0YXRlbWVudC4KKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQu
X2J1aWxkX2RyaXZlcl9mbGFncyk6IE1vdmVkIHRvIERldmljZVBvcnQuCisKIDIwMTgtMTEtMTIg
IFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhU3Ry
ZWFtXSBTY3JlZW4gY2FwdHVyZSBzaG91bGQgYmUgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgb24g
T1NYIG9ubHkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZpY2VfcG9ydC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQu
cHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZV9w
b3J0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYyIEBACisjIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgdHJhY2ViYWNr
CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAorZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVz
dENvbmZpZ3VyYXRpb24KK2Zyb20gd2Via2l0cHkucG9ydC5kYXJ3aW4gaW1wb3J0IERhcndpblBv
cnQKK2Zyb20gd2Via2l0cHkucG9ydC5zaW11bGF0b3JfcHJvY2VzcyBpbXBvcnQgU2ltdWxhdG9y
UHJvY2VzcworCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitjbGFz
cyBEZXZpY2VQb3J0KERhcndpblBvcnQpOgorCisgICAgREVWSUNFX01BTkFHRVIgPSBOb25lCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIo
RGV2aWNlUG9ydCwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxm
Ll90ZXN0X3J1bm5lcl9wcm9jZXNzX2NvbnN0cnVjdG9yID0gU2ltdWxhdG9yUHJvY2VzcworICAg
ICAgICBzZWxmLl9wcmludGluZ19jbWRfbGluZSA9IEZhbHNlCisKKyAgICBkZWYgZHJpdmVyX2Nt
ZF9saW5lX2Zvcl9sb2dnaW5nKHNlbGYpOgorICAgICAgICAjIEF2b2lkIGNyZWF0aW5nL2Nvbm5l
Y3RpbmcgdG8gZGV2aWNlcyBqdXN0IGZvciBjb21tYW5kIGxpbmUgbG9nZ2luZy4KKyAgICAgICAg
c2VsZi5fcHJpbnRpbmdfY21kX2xpbmUgPSBUcnVlCisgICAgICAgIHJlc3VsdCA9IHN1cGVyKERl
dmljZVBvcnQsIHNlbGYpLmRyaXZlcl9jbWRfbGluZV9mb3JfbG9nZ2luZygpCisgICAgICAgIHNl
bGYuX3ByaW50aW5nX2NtZF9saW5lID0gRmFsc2UKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisg
ICAgZGVmIF9nZW5lcmF0ZV9hbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxmKToKKyAgICAgICAg
Y29uZmlndXJhdGlvbnMgPSBbXQorICAgICAgICBmb3IgYnVpbGRfdHlwZSBpbiBzZWxmLkFMTF9C
VUlMRF9UWVBFUzoKKyAgICAgICAgICAgIGZvciBhcmNoaXRlY3R1cmUgaW4gc2VsZi5BUkNISVRF
Q1RVUkVTOgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLmFwcGVuZChUZXN0Q29uZmln
dXJhdGlvbih2ZXJzaW9uPXNlbGYudmVyc2lvbl9uYW1lKCksIGFyY2hpdGVjdHVyZT1hcmNoaXRl
Y3R1cmUsIGJ1aWxkX3R5cGU9YnVpbGRfdHlwZSkpCisgICAgICAgIHJldHVybiBjb25maWd1cmF0
aW9ucworCisgICAgQG1lbW9pemVkCisgICAgZGVmIGNoaWxkX3Byb2Nlc3NlcyhzZWxmKToKKyAg
ICAgICAgcmV0dXJuIGludChzZWxmLmdldF9vcHRpb24oJ2NoaWxkX3Byb2Nlc3NlcycpKQorCisg
ICAgZGVmIGRyaXZlcl9uYW1lKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ2Ry
aXZlcl9uYW1lJyk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfb3B0aW9uKCdkcml2ZXJf
bmFtZScpCisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6
CisgICAgICAgICAgICByZXR1cm4gJ1dlYktpdFRlc3RSdW5uZXJBcHAuYXBwJworICAgICAgICBy
ZXR1cm4gJ0R1bXBSZW5kZXJUcmVlLmFwcCcKKworICAgICMgQSBkZXZpY2UgaXMgdGhlIHRhcmdl
dCBob3N0IGZvciBhIHNwZWNpZmljIHdvcmtlciBudW1iZXIuCisgICAgZGVmIHRhcmdldF9ob3N0
KHNlbGYsIHdvcmtlcl9udW1iZXI9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYuX3ByaW50aW5nX2Nt
ZF9saW5lIG9yIHdvcmtlcl9udW1iZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxm
Lmhvc3QKKyAgICAgICAgaWYgc2VsZi5ERVZJQ0VfTUFOQUdFUiBpcyBOb25lOgorICAgICAgICAg
ICAgcmFpc2UgUnVudGltZUVycm9yKCdObyBkZXZpY2UgbWFuYWdlciBmb3Igc3BlY2lmaWVkIHBv
cnQnKQorICAgICAgICBpZiBzZWxmLkRFVklDRV9NQU5BR0VSLklOSVRJQUxJWkVEX0RFVklDRVMg
aXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignTm8gaW5pdGlhbGl6ZWQg
ZGV2aWNlcyBmb3IgdGVzdGluZycpCisgICAgICAgIHJldHVybiBzZWxmLkRFVklDRV9NQU5BR0VS
LklOSVRJQUxJWkVEX0RFVklDRVNbd29ya2VyX251bWJlcl0KKworICAgIGRlZiBkZXZpY2VzKHNl
bGYpOgorICAgICAgICBpZiBzZWxmLkRFVklDRV9NQU5BR0VSIGlzIE5vbmU6CisgICAgICAgICAg
ICByZXR1cm4gW10KKyAgICAgICAgaWYgc2VsZi5ERVZJQ0VfTUFOQUdFUi5JTklUSUFMSVpFRF9E
RVZJQ0VTIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmV0dXJuIHNl
bGYuREVWSUNFX01BTkFHRVIuSU5JVElBTElaRURfREVWSUNFUworCisgICAgZGVmIF9jcmVhdGVf
ZGV2aWNlcyhzZWxmLCBkZXZpY2VfY2xhc3MpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yCisKKyAgICAjIERlc3BpdGUgdGhlaXIgbmFtZXMsIHRoZXNlIGZsYWdzIGRvIG5vdCBh
Y3R1YWxseSBnZXQgcGFzc2VkIGFsbCB0aGUgd2F5IGRvd24gdG8gd2Via2l0LWJ1aWxkLgorICAg
IGRlZiBfYnVpbGRfZHJpdmVyX2ZsYWdzKHNlbGYpOgorICAgICAgICByZXR1cm4gWyctLXNkaycs
IHNlbGYuU0RLXSArIChbJ0FSQ0hTPSVzJyAlIHNlbGYuYXJjaGl0ZWN0dXJlKCldIGlmIHNlbGYu
YXJjaGl0ZWN0dXJlKCkgZWxzZSBbXSkKKworICAgIGRlZiBfaW5zdGFsbChzZWxmKToKKyAgICAg
ICAgaWYgbm90IHNlbGYuZ2V0X29wdGlvbignaW5zdGFsbCcpOgorICAgICAgICAgICAgX2xvZy5k
ZWJ1ZygnU2tpcHBpbmcgaW5zdGFsbGF0aW9uJykKKyAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3Byb2Nlc3NlcygpKToKKyAgICAgICAgICAg
IGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoJ0lu
c3RhbGxpbmcgdG8ge30nLmZvcm1hdChkZXZpY2UpKQorICAgICAgICAgICAgIyBXaXRob3V0IHBh
c3NpbmcgRFlMRF9MSUJSQVJZX1BBVEgsIGxpYldlYkNvcmVUZXN0U3VwcG9ydCBjYW5ub3QgYmUg
bG9hZGVkIGFuZCBEUlQvV0tUUiB3aWxsIGNyYXNoIHByZS1sYXVuY2gsCisgICAgICAgICAgICAj
IGxlYXZpbmcgYSBjcmFzaCBsb2cgd2hpY2ggd2lsbCBiZSBwaWNrZWQgdXAgaW4gcmVzdWx0cy4g
RFlMRF9GUkFNRVdPUktfUEFUSCBpcyBuZWVkZWQgdG8gcHJldmVudCBhbiBlYXJseSBjcmFzaC4K
KyAgICAgICAgICAgIGlmIG5vdCBkZXZpY2UuaW5zdGFsbF9hcHAoc2VsZi5fcGF0aF90b19kcml2
ZXIoKSwgeydEWUxEX0xJQlJBUllfUEFUSCc6IHNlbGYuX2J1aWxkX3BhdGgoKSwgJ0RZTERfRlJB
TUVXT1JLX1BBVEgnOiBzZWxmLl9idWlsZF9wYXRoKCl9KToKKyAgICAgICAgICAgICAgICByYWlz
ZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byBpbnN0YWxsIGFwcCB7fSBvbiBkZXZpY2Uge30nLmZv
cm1hdChzZWxmLl9wYXRoX3RvX2RyaXZlcigpLCBkZXZpY2UudWRpZCkpCisgICAgICAgICAgICBp
ZiBub3QgZGV2aWNlLmluc3RhbGxfZHlsaWJzKHNlbGYuX2J1aWxkX3BhdGgoKSk6CisgICAgICAg
ICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCBkeWxpYnMgYXQg
e30gb24gZGV2aWNlIHt9Jy5mb3JtYXQoc2VsZi5fYnVpbGRfcGF0aCgpLCBkZXZpY2UudWRpZCkp
CisKKyAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZiwgZGV2aWNlX2NsYXNzPU5vbmUpOgorICAg
ICAgICBzZWxmLl9jcmVhdGVfZGV2aWNlcyhkZXZpY2VfY2xhc3MpCisgICAgICAgIHNlbGYuX2lu
c3RhbGwoKQorCisgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3Byb2Nlc3Nlcygp
KToKKyAgICAgICAgICAgIGhvc3QgPSBzZWxmLnRhcmdldF9ob3N0KGkpCisgICAgICAgICAgICBo
b3N0LnByZXBhcmVfZm9yX3Rlc3RpbmcoCisgICAgICAgICAgICAgICAgc2VsZi5wb3J0c190b19m
b3J3YXJkKCksCisgICAgICAgICAgICAgICAgc2VsZi5hcHBfaWRlbnRpZmllcl9mcm9tX2J1bmRs
ZShzZWxmLl9wYXRoX3RvX2RyaXZlcigpKSwKKyAgICAgICAgICAgICAgICBzZWxmLmxheW91dF90
ZXN0c19kaXIoKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX2NyYXNoX2xvZ3Nf
dG9fc2tpcF9mb3JfaG9zdFtob3N0XSA9IGhvc3QuZmlsZXN5c3RlbS5maWxlc191bmRlcihzZWxm
LnBhdGhfdG9fY3Jhc2hfbG9ncygpKQorCisgICAgZGVmIGNsZWFuX3VwX3Rlc3RfcnVuKHNlbGYp
OgorICAgICAgICBzdXBlcihEZXZpY2VQb3J0LCBzZWxmKS5jbGVhbl91cF90ZXN0X3J1bigpCisK
KyAgICAgICAgIyBCZXN0IGVmZm9ydCB0byBsZXQgZXZlcnkgZGV2aWNlIHRlYXJkb3duIGJlZm9y
ZSB0aHJvd2luZyBhbnkgZXhjZXB0aW9ucyBoZXJlLgorICAgICAgICAjIEZhaWx1cmUgdG8gdGVh
cmRvd24gZGV2aWNlcyBjYW4gbGVhdmUgdGhpbmdzIGluIGEgYmFkIHN0YXRlLgorICAgICAgICBl
eGNlcHRpb25fbGlzdCA9IFtdCisgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3By
b2Nlc3NlcygpKToKKyAgICAgICAgICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKKyAg
ICAgICAgICAgIGlmIG5vdCBkZXZpY2U6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkZXZpY2UuZmluaXNoZWRfdGVzdGluZygpCisg
ICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHRy
YWNlID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2UoZSwgRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX2xpc3QuYXBw
ZW5kKFtlLCB0cmFjZV0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uX2xpc3QuYXBwZW5kKFtFeGNlcHRpb24oJ0V4Y2VwdGlvbiB3aGlsZSB0ZWFy
aW5nIGRvd24ge30nLmZvcm1hdChkZXZpY2UpKSwgdHJhY2VdKQorCisgICAgICAgIGlmIGxlbihl
eGNlcHRpb25fbGlzdCkgPT0gMToKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGlmIGxlbihl
eGNlcHRpb25fbGlzdCkgPiAxOgorICAgICAgICAgICAgcHJpbnQoJ1xuJykKKyAgICAgICAgICAg
IGZvciBleGNlcHRpb24gaW4gZXhjZXB0aW9uX2xpc3Q6CisgICAgICAgICAgICAgICAgX2xvZy5l
cnJvcigne30gcmFpc2VkOiB7fScuZm9ybWF0KGV4Y2VwdGlvblswXS5fX2NsYXNzX18uX19uYW1l
X18sIGV4Y2VwdGlvblswXSkpCisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihleGNlcHRpb25b
MV0pCisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQorCisgICAgICAgICAgICByYWlzZSBSdW50aW1l
RXJyb3IoJ011bHRpcGxlIGZhaWx1cmVzIHdoZW4gdGVhcmRvd24gZGV2aWNlcycpCisKKyAgICBk
ZWYgZGlkX3NwYXduX3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyKToKKyAgICAgICAgc3VwZXIo
RGV2aWNlUG9ydCwgc2VsZikuZGlkX3NwYXduX3dvcmtlcih3b3JrZXJfbnVtYmVyKQorCisgICAg
ICAgIHNlbGYudGFyZ2V0X2hvc3Qod29ya2VyX251bWJlcikucmVsZWFzZV93b3JrZXJfcmVzb3Vy
Y2VzKCkKKworICAgIGRlZiBzZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2VydmVyX25h
bWU9Tm9uZSk6CisgICAgICAgIGVudiA9IHN1cGVyKERldmljZVBvcnQsIHNlbGYpLnNldHVwX2Vu
dmlyb25fZm9yX3NlcnZlcihzZXJ2ZXJfbmFtZSkKKyAgICAgICAgaWYgc2VydmVyX25hbWUgPT0g
c2VsZi5kcml2ZXJfbmFtZSgpIGFuZCBzZWxmLmdldF9vcHRpb24oJ2d1YXJkX21hbGxvYycpOgor
ICAgICAgICAgICAgc2VsZi5fYXBwZW5kX3ZhbHVlX2NvbG9uX3NlcGFyYXRlZChlbnYsICdEWUxE
X0lOU0VSVF9MSUJSQVJJRVMnLCAnL3Vzci9saWIvbGliZ21hbGxvYy5keWxpYicpCisgICAgICAg
ICAgICBzZWxmLl9hcHBlbmRfdmFsdWVfY29sb25fc2VwYXJhdGVkKGVudiwgJ19fWFBDX0RZTERf
SU5TRVJUX0xJQlJBUklFUycsICcvdXNyL2xpYi9saWJnbWFsbG9jLmR5bGliJykKKyAgICAgICAg
ZW52WydYTUxfQ0FUQUxPR19GSUxFUyddID0gJycgICMgd29yayBhcm91bmQgbWlzc2luZyAvZXRj
L2NhdGFsb2cgPHJkYXI6Ly9wcm9ibGVtLzQyOTI5OTU+CisgICAgICAgIHJldHVybiBlbnYKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQkocmV2aXNpb24gMjM4MTA1KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMg
KzI4LDEzIEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnMKIGZyb20g
d2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0IFZlcnNpb25OYW1lTWFwLCBJ
TlRFUk5BTF9UQUJMRQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29u
ZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkucG9ydC5j
b25maWcgaW1wb3J0IGFwcGxlX2FkZGl0aW9ucwotZnJvbSB3ZWJraXRweS5wb3J0LmRhcndpbiBp
bXBvcnQgRGFyd2luUG9ydAorZnJvbSB3ZWJraXRweS5wb3J0LmRldmljZV9wb3J0IGltcG9ydCBE
ZXZpY2VQb3J0CiBmcm9tIHdlYmtpdHB5LnBvcnQuc2ltdWxhdG9yX3Byb2Nlc3MgaW1wb3J0IFNp
bXVsYXRvclByb2Nlc3MKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAK
LWNsYXNzIElPU1BvcnQoRGFyd2luUG9ydCk6CitjbGFzcyBJT1NQb3J0KERldmljZVBvcnQpOgog
ICAgIHBvcnRfbmFtZSA9ICJpb3MiCiAKICAgICBDVVJSRU5UX1ZFUlNJT04gPSBWZXJzaW9uKDEy
KQpAQCAtNTIsNDIgKzUyLDYgQEAgY2xhc3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToKICAgICAgICAg
ICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBWZXJzaW9uTmFtZU1hcC5tYXAoc2VsZi5o
b3N0LnBsYXRmb3JtKS50b19uYW1lKHNlbGYuX29zX3ZlcnNpb24sIHBsYXRmb3JtPUlPU1BvcnQu
cG9ydF9uYW1lKQogCi0gICAgZGVmIGRyaXZlcl9jbWRfbGluZV9mb3JfbG9nZ2luZyhzZWxmKToK
LSAgICAgICAgIyBBdm9pZCBjcmVhdGluZy9jb25uZWN0aW5nIHRvIGRldmljZXMganVzdCBmb3Ig
bG9nZ2luZyB0aGUgY29tbWFuZGxpbmUuCi0gICAgICAgIHNlbGYuX3ByaW50aW5nX2NtZF9saW5l
ID0gVHJ1ZQotICAgICAgICByZXN1bHQgPSBzdXBlcihJT1NQb3J0LCBzZWxmKS5kcml2ZXJfY21k
X2xpbmVfZm9yX2xvZ2dpbmcoKQotICAgICAgICBzZWxmLl9wcmludGluZ19jbWRfbGluZSA9IEZh
bHNlCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBkcml2ZXJfbmFtZShzZWxmKToK
LSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdkcml2ZXJfbmFtZScpOgotICAgICAgICAgICAg
cmV0dXJuIHNlbGYuZ2V0X29wdGlvbignZHJpdmVyX25hbWUnKQotICAgICAgICBpZiBzZWxmLmdl
dF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgotICAgICAgICAgICAgcmV0dXJuICdXZWJL
aXRUZXN0UnVubmVyQXBwLmFwcCcKLSAgICAgICAgcmV0dXJuICdEdW1wUmVuZGVyVHJlZS5hcHAn
Ci0KLSAgICBkZWYgX2dlbmVyYXRlX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKHNlbGYpOgotICAg
ICAgICBjb25maWd1cmF0aW9ucyA9IFtdCi0gICAgICAgIGZvciBidWlsZF90eXBlIGluIHNlbGYu
QUxMX0JVSUxEX1RZUEVTOgotICAgICAgICAgICAgZm9yIGFyY2hpdGVjdHVyZSBpbiBzZWxmLkFS
Q0hJVEVDVFVSRVM6Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuYXBwZW5kKFRlc3RD
b25maWd1cmF0aW9uKHZlcnNpb249c2VsZi52ZXJzaW9uX25hbWUoKSwgYXJjaGl0ZWN0dXJlPWFy
Y2hpdGVjdHVyZSwgYnVpbGRfdHlwZT1idWlsZF90eXBlKSkKLSAgICAgICAgcmV0dXJuIGNvbmZp
Z3VyYXRpb25zCi0KLSAgICBkZWYgY2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgotICAgICAgICByZXR1
cm4gaW50KHNlbGYuZ2V0X29wdGlvbignY2hpbGRfcHJvY2Vzc2VzJykpCi0KLSAgICBkZWYgX3Rl
c3RpbmdfZGV2aWNlKHNlbGYsIG51bWJlcik6Ci0gICAgICAgIGRldmljZSA9IHNlbGYuX2Rldmlj
ZV9mb3Jfd29ya2VyX251bWJlcl9tYXAoKVtudW1iZXJdCi0gICAgICAgIGlmIG5vdCBkZXZpY2U6
Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0RldmljZSBhdCB7fSBjb3VsZCBub3Qg
YmUgZm91bmQnLmZvcm1hdChudW1iZXIpKQotICAgICAgICByZXR1cm4gZGV2aWNlCi0KLSAgICAj
IEEgZGV2aWNlIGlzIHRoZSB0YXJnZXQgaG9zdCBmb3IgYSBzcGVjaWZpYyB3b3JrZXIgbnVtYmVy
LgotICAgIGRlZiB0YXJnZXRfaG9zdChzZWxmLCB3b3JrZXJfbnVtYmVyPU5vbmUpOgotICAgICAg
ICBpZiBzZWxmLl9wcmludGluZ19jbWRfbGluZSBvciB3b3JrZXJfbnVtYmVyIGlzIE5vbmU6Ci0g
ICAgICAgICAgICByZXR1cm4gc2VsZi5ob3N0Ci0gICAgICAgIHJldHVybiBzZWxmLl90ZXN0aW5n
X2RldmljZSh3b3JrZXJfbnVtYmVyKQotCiAgICAgQG1lbW9pemVkCiAgICAgZGVmIGRlZmF1bHRf
YmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAgICAgIHdrX3N0cmluZyA9ICd3azEnCkBA
IC0xNTEsNjQgKzExNSwzIEBAIGNsYXNzIElPU1BvcnQoRGFyd2luUG9ydCk6CiAKICAgICBkZWYg
aW9zX3ZlcnNpb24oc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKLQot
ICAgIGRlZiBfY3JlYXRlX2RldmljZXMoc2VsZiwgZGV2aWNlX2NsYXNzKToKLSAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcgotCi0gICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYsIGRl
dmljZV9jbGFzcz1Ob25lKToKLSAgICAgICAgc2VsZi5fY3JlYXRlX2RldmljZXMoZGV2aWNlX2Ns
YXNzKQotCi0gICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignaW5zdGFsbCcpOgotICAgICAgICAg
ICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgotICAgICAgICAgICAg
ICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKLSAgICAgICAgICAgICAgICBfbG9nLmRl
YnVnKCdJbnN0YWxsaW5nIHRvIHt9Jy5mb3JtYXQoZGV2aWNlKSkKLSAgICAgICAgICAgICAgICAj
IFdpdGhvdXQgcGFzc2luZyBEWUxEX0xJQlJBUllfUEFUSCwgbGliV2ViQ29yZVRlc3RTdXBwb3J0
IGNhbm5vdCBiZSBsb2FkZWQgYW5kIERSVC9XS1RSIHdpbGwgY3Jhc2ggcHJlLWxhdW5jaCwKLSAg
ICAgICAgICAgICAgICAjIGxlYXZpbmcgYSBjcmFzaCBsb2cgd2hpY2ggd2lsbCBiZSBwaWNrZWQg
dXAgaW4gcmVzdWx0cy4gRFlMRF9GUkFNRVdPUktfUEFUSCBpcyBuZWVkZWQgdG8gcHJldmVudCBh
biBlYXJseSBjcmFzaC4KLSAgICAgICAgICAgICAgICBpZiBub3QgZGV2aWNlLmluc3RhbGxfYXBw
KHNlbGYuX3BhdGhfdG9fZHJpdmVyKCksIHsnRFlMRF9MSUJSQVJZX1BBVEgnOiBzZWxmLl9idWls
ZF9wYXRoKCksICdEWUxEX0ZSQU1FV09SS19QQVRIJzogc2VsZi5fYnVpbGRfcGF0aCgpfSk6Ci0g
ICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIGluc3RhbGwg
YXBwIHt9IG9uIGRldmljZSB7fScuZm9ybWF0KHNlbGYuX3BhdGhfdG9fZHJpdmVyKCksIGRldmlj
ZS51ZGlkKSkKLSAgICAgICAgICAgICAgICBpZiBub3QgZGV2aWNlLmluc3RhbGxfZHlsaWJzKHNl
bGYuX2J1aWxkX3BhdGgoKSk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJv
cignRmFpbGVkIHRvIGluc3RhbGwgZHlsaWJzIGF0IHt9IG9uIGRldmljZSB7fScuZm9ybWF0KHNl
bGYuX2J1aWxkX3BhdGgoKSwgZGV2aWNlLnVkaWQpKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgX2xvZy5kZWJ1ZygnU2tpcHBpbmcgaW5zdGFsbGF0aW9uJykKLQotICAgICAgICBmb3IgaSBp
biB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6Ci0gICAgICAgICAgICBob3N0ID0gc2Vs
Zi50YXJnZXRfaG9zdChpKQotICAgICAgICAgICAgaG9zdC5wcmVwYXJlX2Zvcl90ZXN0aW5nKAot
ICAgICAgICAgICAgICAgIHNlbGYucG9ydHNfdG9fZm9yd2FyZCgpLAotICAgICAgICAgICAgICAg
IHNlbGYuYXBwX2lkZW50aWZpZXJfZnJvbV9idW5kbGUoc2VsZi5fcGF0aF90b19kcml2ZXIoKSks
Ci0gICAgICAgICAgICAgICAgc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksCi0gICAgICAgICAgICAp
Ci0gICAgICAgICAgICBzZWxmLl9jcmFzaF9sb2dzX3RvX3NraXBfZm9yX2hvc3RbaG9zdF0gPSBo
b3N0LmZpbGVzeXN0ZW0uZmlsZXNfdW5kZXIoc2VsZi5wYXRoX3RvX2NyYXNoX2xvZ3MoKSkKLQot
ICAgIGRlZiBjbGVhbl91cF90ZXN0X3J1bihzZWxmKToKLSAgICAgICAgc3VwZXIoSU9TUG9ydCwg
c2VsZikuY2xlYW5fdXBfdGVzdF9ydW4oKQotCi0gICAgICAgICMgQmVzdCBlZmZvcnQgdG8gbGV0
IGV2ZXJ5IGRldmljZSB0ZWFyZG93biBiZWZvcmUgdGhyb3dpbmcgYW55IGV4Y2VwdGlvbnMgaGVy
ZS4KLSAgICAgICAgIyBGYWlsdXJlIHRvIHRlYXJkb3duIGRldmljZXMgY2FuIGxlYXZlIHRoaW5n
cyBpbiBhIGJhZCBzdGF0ZS4KLSAgICAgICAgZXhjZXB0aW9uX2xpc3QgPSBbXQotICAgICAgICBm
b3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6Ci0gICAgICAgICAgICBkZXZp
Y2UgPSBzZWxmLnRhcmdldF9ob3N0KGkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgaWYgZGV2aWNlOgotICAgICAgICAgICAgICAgICAgICBkZXZpY2UuZmluaXNoZWRfdGVzdGlu
ZygpCi0gICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAg
ICAgIHRyYWNlID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQotICAgICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UoZSwgRXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX2xp
c3QuYXBwZW5kKFtlLCB0cmFjZV0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uX2xpc3QuYXBwZW5kKFtFeGNlcHRpb24oJ0V4Y2VwdGlvbiB0ZWFy
aW5nIGRvd24ge30nLmZvcm1hdChkZXZpY2UpKSwgdHJhY2VdKQotICAgICAgICBpZiBsZW4oZXhj
ZXB0aW9uX2xpc3QpID09IDE6Ci0gICAgICAgICAgICByYWlzZQotICAgICAgICBlbGlmIGxlbihl
eGNlcHRpb25fbGlzdCkgPiAxOgotICAgICAgICAgICAgcHJpbnQoJ1xuJykKLSAgICAgICAgICAg
IGZvciBleGNlcHRpb24gaW4gZXhjZXB0aW9uX2xpc3Q6Ci0gICAgICAgICAgICAgICAgX2xvZy5l
cnJvcigne30gcmFpc2VkOiB7fScuZm9ybWF0KGV4Y2VwdGlvblswXS5fX2NsYXNzX18uX19uYW1l
X18sIGV4Y2VwdGlvblswXSkpCi0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcihleGNlcHRpb25b
MV0pCi0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcignLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQotCi0gICAgICAgICAgICByYWlzZSBSdW50aW1l
RXJyb3IoJ011bHRpcGxlIGZhaWx1cmVzIHdoZW4gdGVhcmRvd24gZGV2aWNlcycpCi0KLSAgICBk
ZWYgZGlkX3NwYXduX3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyKToKLSAgICAgICAgc3VwZXIo
SU9TUG9ydCwgc2VsZikuZGlkX3NwYXduX3dvcmtlcih3b3JrZXJfbnVtYmVyKQotCi0gICAgICAg
IHNlbGYudGFyZ2V0X2hvc3Qod29ya2VyX251bWJlcikucmVsZWFzZV93b3JrZXJfcmVzb3VyY2Vz
KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3NfZGV2aWNlLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3NfZGV2aWNlLnB5CShyZXZp
c2lvbiAyMzgxMDUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX2RldmljZS5w
eQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDcgKzI1LDYgQEAgaW1wb3J0IGxvZ2dpbmcKIGZyb20gd2Via2l0cHku
Y29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmNyYXNobG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJz
aW9uIGltcG9ydCBWZXJzaW9uCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFw
IGltcG9ydCBWZXJzaW9uTmFtZU1hcAogZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQg
YXBwbGVfYWRkaXRpb25zCiBmcm9tIHdlYmtpdHB5LnBvcnQuaW9zIGltcG9ydCBJT1NQb3J0CiAK
QEAgLTM4LDYgKzM3LDkgQEAgY2xhc3MgSU9TRGV2aWNlUG9ydChJT1NQb3J0KToKICAgICBBUkNI
SVRFQ1RVUkVTID0gWydhcm12NycsICdhcm12N3MnLCAnYXJtNjQnXQogICAgIERFRkFVTFRfQVJD
SElURUNUVVJFID0gJ2FybTY0JwogICAgIFZFUlNJT05fRkFMTEJBQ0tfT1JERVIgPSBbJ2lvcy03
JywgJ2lvcy04JywgJ2lvcy05JywgJ2lvcy0xMCddCisKKyAgICBERVZJQ0VfTUFOQUdFUiA9IGFw
cGxlX2FkZGl0aW9ucygpLmRldmljZV9tYW5hZ2VyKCkgaWYgYXBwbGVfYWRkaXRpb25zKCkgZWxz
ZSBOb25lCisKICAgICBTREsgPSBhcHBsZV9hZGRpdGlvbnMoKS5nZXRfc2RrKCdpcGhvbmVvcycp
IGlmIGFwcGxlX2FkZGl0aW9ucygpIGVsc2UgJ2lwaG9uZW9zJwogICAgIE5PX09OX0RFVklDRV9U
RVNUSU5HID0gJ09uLWRldmljZSB0ZXN0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBtYWNo
aW5lJwogCkBAIC0xMTIsMTAgKzExNCw2IEBAIGNsYXNzIElPU0RldmljZVBvcnQoSU9TUG9ydCk6
CiAgICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhzZWxmLCBwcm9jZXNzX25hbWUsIHByb2Nlc3NfcGlk
KToKICAgICAgICAgcGFzcwogCi0gICAgIyBEZXNwaXRlIHRoZWlyIG5hbWVzLCB0aGVzZSBmbGFn
cyBkbyBub3QgYWN0dWFsbHkgZ2V0IHBhc3NlZCBhbGwgdGhlIHdheSBkb3duIHRvIHdlYmtpdC1i
dWlsZC4KLSAgICBkZWYgX2J1aWxkX2RyaXZlcl9mbGFncyhzZWxmKToKLSAgICAgICAgcmV0dXJu
IFsnLS1zZGsnLCBzZWxmLlNES10gKyAoWydBUkNIUz0lcycgJSBzZWxmLmFyY2hpdGVjdHVyZSgp
XSBpZiBzZWxmLmFyY2hpdGVjdHVyZSgpIGVsc2UgW10pCi0KICAgICBkZWYgb3BlcmF0aW5nX3N5
c3RlbShzZWxmKToKICAgICAgICAgcmV0dXJuICdpb3MtZGV2aWNlJwogCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weQkocmV2aXNpb24gMjM4MTA1
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3IucHkJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIElPU1NpbXVsYXRvclBvcnQoSU9TUG9ydCk6CiAgICAg
QVJDSElURUNUVVJFUyA9IFsneDg2XzY0JywgJ3g4NiddCiAgICAgREVGQVVMVF9BUkNISVRFQ1RV
UkUgPSAneDg2XzY0JwogCisgICAgREVWSUNFX01BTkFHRVIgPSBTaW11bGF0ZWREZXZpY2VNYW5h
Z2VyCisKICAgICBERUZBVUxUX0RFVklDRV9DTEFTUyA9ICdpUGhvbmUgU0UnCiAgICAgQ1VTVE9N
X0RFVklDRV9DTEFTU0VTID0gWydpUGFkJywgJ2lQaG9uZSA3J10KICAgICBTREsgPSBhcHBsZV9h
ZGRpdGlvbnMoKS5nZXRfc2RrKCdpcGhvbmVzaW11bGF0b3InKSBpZiBhcHBsZV9hZGRpdGlvbnMo
KSBlbHNlICdpcGhvbmVzaW11bGF0b3InCkBAIC04MCwxMSArODIsNiBAQCBjbGFzcyBJT1NTaW11
bGF0b3JQb3J0KElPU1BvcnQpOgogICAgICAgICAgICAgICAgIHJldHVybiBudW1fYm9vdGVkX3Np
bXMKICAgICAgICAgcmV0dXJuIFNpbXVsYXRlZERldmljZU1hbmFnZXIubWF4X3N1cHBvcnRlZF9z
aW11bGF0b3JzKHNlbGYuaG9zdCkKIAotICAgIGRlZiBfYnVpbGRfZHJpdmVyX2ZsYWdzKHNlbGYp
OgotICAgICAgICBhcmNocyA9IFsnQVJDSFM9aTM4NiddIGlmIHNlbGYuYXJjaGl0ZWN0dXJlKCkg
PT0gJ3g4NicgZWxzZSBbXQotICAgICAgICBzZGsgPSBbJy0tc2RrJywgc2VsZi5TREtdCi0gICAg
ICAgIHJldHVybiBhcmNocyArIHNkawotCiAgICAgZGVmIF9zZXRfZGV2aWNlX2NsYXNzKHNlbGYs
IGRldmljZV9jbGFzcyk6CiAgICAgICAgIHNlbGYuX2RldmljZV9jbGFzcyA9IGRldmljZV9jbGFz
cyBpZiBkZXZpY2VfY2xhc3MgZWxzZSBzZWxmLkRFRkFVTFRfREVWSUNFX0NMQVNTCiAKQEAgLTky
LDggKzg5LDcgQEAgY2xhc3MgSU9TU2ltdWxhdG9yUG9ydChJT1NQb3J0KToKICAgICAgICAgc2Vs
Zi5fc2V0X2RldmljZV9jbGFzcyhkZXZpY2VfY2xhc3MpCiAgICAgICAgIGRldmljZV90eXBlID0g
RGV2aWNlVHlwZS5mcm9tX3N0cmluZyhzZWxmLl9kZXZpY2VfY2xhc3MsIHNlbGYuaW9zX3ZlcnNp
b24oKSkKIAotICAgICAgICBfbG9nLmRlYnVnKCcnKQotICAgICAgICBfbG9nLmRlYnVnKCdjcmVh
dGluZyBkZXZpY2VzIGZvciB7fScuZm9ybWF0KGRldmljZV90eXBlKSkKKyAgICAgICAgX2xvZy5k
ZWJ1ZygnXG5DcmVhdGluZyBkZXZpY2VzIGZvciB7fScuZm9ybWF0KGRldmljZV90eXBlKSkKIAog
ICAgICAgICByZXF1ZXN0ID0gRGV2aWNlUmVxdWVzdCgKICAgICAgICAgICAgIGRldmljZV90eXBl
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354603</attachid>
            <date>2018-11-12 15:50:28 -0800</date>
            <delta_ts>2018-11-13 15:28:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191568-20181112155027.patch</filename>
            <type>text/plain</type>
            <size>22094</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzODExMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU2IEBACisyMDE4LTExLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogUmVmYWN0b3IgcG9ydCBjb2RlIGZvciBkZXZpY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1NjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MDA1ODIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIHdhdGNoT1MgYW5kIGlPUyBkZXZpY2UgcG9ydHMgc2hh
cmUgbWFueSBjaGFyYWN0ZXJpc3RpY3MgaW4gdGVzdGluZywgbW9zdGx5IGR1ZQorICAgICAgICB0
byB0aGUgZmFjdCB0aGF0IGJvdGggYXJlIGRldmljZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHk6IEFkZGVkLgorICAgICAgICAoRGV2aWNlUG9ydCk6
IEFkZCBiYXNlIGNsYXNzIHRoYXQgYWxsIHNpbXVsYXRlZC9waHlzaWNhbCBkZXZpY2UgcG9ydHMg
c2hhcmUuCisgICAgICAgIChEZXZpY2VQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKERldmljZVBv
cnQuZHJpdmVyX2NtZF9saW5lX2Zvcl9sb2dnaW5nKTogTW92ZWQgZnJvbSBpT1MgcG9ydC4KKyAg
ICAgICAgKERldmljZVBvcnQuX2dlbmVyYXRlX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKTogRGl0
dG8uCisgICAgICAgIChEZXZpY2VQb3J0LmNoaWxkX3Byb2Nlc3Nlcyk6IERpdHRvLgorICAgICAg
ICAoRGV2aWNlUG9ydC5kcml2ZXJfbmFtZSk6IERpdHRvLgorICAgICAgICAoRGV2aWNlUG9ydC50
YXJnZXRfaG9zdCk6IEdlbmVyYWxpemUgd29ya2VyIGFjY2VzcyB0byBhdHRhY2hlZCBkZXZpY2Vz
IGFuZAorICAgICAgICBzaW11bGF0ZWQgZGV2aWNlcyBiYXNlZCBvbiB0aGUgZGV2aWNlIG1hbmFn
ZXIuCisgICAgICAgIChEZXZpY2VQb3J0LmRldmljZXMpOiBSZXR1cm4gYSBsaXN0IG9mIGFsbCBk
ZXZpY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvcnQuCisgICAgICAgIChEZXZpY2VQb3J0Ll9j
cmVhdGVfZGV2aWNlcyk6CisgICAgICAgIChEZXZpY2VQb3J0Ll9idWlsZF9kcml2ZXJfZmxhZ3Mp
OiBNb3ZlZCBmcm9tIGlPU1NpbXVsYXRvclBvcnQvaU9TRGV2aWNlUG9ydC4KKyAgICAgICAgKERl
dmljZVBvcnQuX2luc3RhbGwpOiBNb3ZlZCBmcm9tIGlPUyBwb3J0LgorICAgICAgICAoRGV2aWNl
UG9ydC5zZXR1cF90ZXN0X3J1bik6IERpdHRvLgorICAgICAgICAoRGV2aWNlUG9ydC5jbGVhbl91
cF90ZXN0X3J1bik6IERpdHRvLgorICAgICAgICAoRGV2aWNlUG9ydC5kaWRfc3Bhd25fd29ya2Vy
KTogRGl0dG8uCisgICAgICAgIChEZXZpY2VQb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcik6
IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAg
IChJT1NQb3J0KToKKyAgICAgICAgKElPU1BvcnQuZHJpdmVyX2NtZF9saW5lX2Zvcl9sb2dnaW5n
KTogTW92ZWQgdG8gRGV2aWNlUG9ydC4KKyAgICAgICAgKElPU1BvcnQuZHJpdmVyX25hbWUpOiBE
aXR0by4KKyAgICAgICAgKElPU1BvcnQuX2dlbmVyYXRlX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25z
KTogRGl0dG8uCisgICAgICAgIChJT1NQb3J0LmNoaWxkX3Byb2Nlc3Nlcyk6IERpdHRvLgorICAg
ICAgICAoSU9TUG9ydC5fdGVzdGluZ19kZXZpY2UpOiBEaXR0by4KKyAgICAgICAgKElPU1BvcnQu
dGFyZ2V0X2hvc3QpOiBEaXR0by4KKyAgICAgICAgKElPU1BvcnQuX2NyZWF0ZV9kZXZpY2VzKTog
RGl0dG8uCisgICAgICAgIChJT1NQb3J0LnNldHVwX3Rlc3RfcnVuKTogRGl0dG8uCisgICAgICAg
IChJT1NQb3J0LmNsZWFuX3VwX3Rlc3RfcnVuKTogRGl0dG8uCisgICAgICAgIChJT1NQb3J0LmRp
ZF9zcGF3bl93b3JrZXIpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQv
aW9zX2RldmljZS5weToKKyAgICAgICAgKElPU0RldmljZVBvcnQpOiBJT1NEZXZpY2VQb3J0IHVz
ZXMgYSBkZXZpY2UgbWFuYWdlciBmcm9tIGFwcGxlX2FkZGl0aW9ucy4KKyAgICAgICAgKElPU1Np
bXVsYXRvclBvcnQuX2J1aWxkX2RyaXZlcl9mbGFncyk6IE1vdmVkIHRvIERldmljZVBvcnQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3IucHk6CisgICAgICAg
IChJT1NTaW11bGF0b3JQb3J0KTogSU9TU2ltdWxhdG9yUG9ydCB1c2VzIHRoZSBTaW11bGF0ZWRE
ZXZpY2VNYW5hZ2VyLgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5fY3JlYXRlX2RldmljZXMp
OiBDbGVhbiB1cCBsb2dnaW5nIHN0YXRlbWVudC4KKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQu
c2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKTogU29tZSBvZiBlbnZpcm9ubWVudCBzZXQtdXAgaXMg
c2hhcmVkCisgICAgICAgIGFjcm9zcyBhbGwgZGV2aWNlcy4KKyAgICAgICAgKElPU1NpbXVsYXRv
clBvcnQuX2J1aWxkX2RyaXZlcl9mbGFncyk6IE1vdmVkIHRvIERldmljZVBvcnQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3JfdW5pdHRlc3QucHk6CisgICAg
ICAgIChJT1NTaW11bGF0b3JUZXN0LnRlc3RfMzJiaXQpOgorICAgICAgICAoSU9TU2ltdWxhdG9y
VGVzdC50ZXN0XzY0Yml0KToKKwogMjAxOC0xMS0xMiAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5z
dXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW0N1cmxdIEFkZCBBUEkgVGVzdCBmb3IgQ3VybCBj
b29raWUgYmFja2VuZC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZpY2Vf
cG9ydC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNl
X3BvcnQucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rl
dmljZV9wb3J0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYyIEBACisjIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgdHJh
Y2ViYWNrCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAor
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBv
cnQgVGVzdENvbmZpZ3VyYXRpb24KK2Zyb20gd2Via2l0cHkucG9ydC5kYXJ3aW4gaW1wb3J0IERh
cndpblBvcnQKK2Zyb20gd2Via2l0cHkucG9ydC5zaW11bGF0b3JfcHJvY2VzcyBpbXBvcnQgU2lt
dWxhdG9yUHJvY2VzcworCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKwor
CitjbGFzcyBEZXZpY2VQb3J0KERhcndpblBvcnQpOgorCisgICAgREVWSUNFX01BTkFHRVIgPSBO
b25lCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg
c3VwZXIoRGV2aWNlUG9ydCwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAg
ICBzZWxmLl90ZXN0X3J1bm5lcl9wcm9jZXNzX2NvbnN0cnVjdG9yID0gU2ltdWxhdG9yUHJvY2Vz
cworICAgICAgICBzZWxmLl9wcmludGluZ19jbWRfbGluZSA9IEZhbHNlCisKKyAgICBkZWYgZHJp
dmVyX2NtZF9saW5lX2Zvcl9sb2dnaW5nKHNlbGYpOgorICAgICAgICAjIEF2b2lkIGNyZWF0aW5n
L2Nvbm5lY3RpbmcgdG8gZGV2aWNlcyBqdXN0IGZvciBjb21tYW5kIGxpbmUgbG9nZ2luZy4KKyAg
ICAgICAgc2VsZi5fcHJpbnRpbmdfY21kX2xpbmUgPSBUcnVlCisgICAgICAgIHJlc3VsdCA9IHN1
cGVyKERldmljZVBvcnQsIHNlbGYpLmRyaXZlcl9jbWRfbGluZV9mb3JfbG9nZ2luZygpCisgICAg
ICAgIHNlbGYuX3ByaW50aW5nX2NtZF9saW5lID0gRmFsc2UKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dAorCisgICAgZGVmIF9nZW5lcmF0ZV9hbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxmKToKKyAg
ICAgICAgY29uZmlndXJhdGlvbnMgPSBbXQorICAgICAgICBmb3IgYnVpbGRfdHlwZSBpbiBzZWxm
LkFMTF9CVUlMRF9UWVBFUzoKKyAgICAgICAgICAgIGZvciBhcmNoaXRlY3R1cmUgaW4gc2VsZi5B
UkNISVRFQ1RVUkVTOgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLmFwcGVuZChUZXN0
Q29uZmlndXJhdGlvbih2ZXJzaW9uPXNlbGYudmVyc2lvbl9uYW1lKCksIGFyY2hpdGVjdHVyZT1h
cmNoaXRlY3R1cmUsIGJ1aWxkX3R5cGU9YnVpbGRfdHlwZSkpCisgICAgICAgIHJldHVybiBjb25m
aWd1cmF0aW9ucworCisgICAgQG1lbW9pemVkCisgICAgZGVmIGNoaWxkX3Byb2Nlc3NlcyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIGludChzZWxmLmdldF9vcHRpb24oJ2NoaWxkX3Byb2Nlc3Nlcycp
KQorCisgICAgZGVmIGRyaXZlcl9uYW1lKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmdldF9vcHRp
b24oJ2RyaXZlcl9uYW1lJyk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfb3B0aW9uKCdk
cml2ZXJfbmFtZScpCisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVu
bmVyJyk6CisgICAgICAgICAgICByZXR1cm4gJ1dlYktpdFRlc3RSdW5uZXJBcHAuYXBwJworICAg
ICAgICByZXR1cm4gJ0R1bXBSZW5kZXJUcmVlLmFwcCcKKworICAgICMgQSBkZXZpY2UgaXMgdGhl
IHRhcmdldCBob3N0IGZvciBhIHNwZWNpZmljIHdvcmtlciBudW1iZXIuCisgICAgZGVmIHRhcmdl
dF9ob3N0KHNlbGYsIHdvcmtlcl9udW1iZXI9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYuX3ByaW50
aW5nX2NtZF9saW5lIG9yIHdvcmtlcl9udW1iZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVy
biBzZWxmLmhvc3QKKyAgICAgICAgaWYgc2VsZi5ERVZJQ0VfTUFOQUdFUiBpcyBOb25lOgorICAg
ICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdObyBkZXZpY2UgbWFuYWdlciBmb3Igc3BlY2lm
aWVkIHBvcnQnKQorICAgICAgICBpZiBzZWxmLkRFVklDRV9NQU5BR0VSLklOSVRJQUxJWkVEX0RF
VklDRVMgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignTm8gaW5pdGlh
bGl6ZWQgZGV2aWNlcyBmb3IgdGVzdGluZycpCisgICAgICAgIHJldHVybiBzZWxmLkRFVklDRV9N
QU5BR0VSLklOSVRJQUxJWkVEX0RFVklDRVNbd29ya2VyX251bWJlcl0KKworICAgIGRlZiBkZXZp
Y2VzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLkRFVklDRV9NQU5BR0VSIGlzIE5vbmU6CisgICAg
ICAgICAgICByZXR1cm4gW10KKyAgICAgICAgaWYgc2VsZi5ERVZJQ0VfTUFOQUdFUi5JTklUSUFM
SVpFRF9ERVZJQ0VTIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmV0
dXJuIHNlbGYuREVWSUNFX01BTkFHRVIuSU5JVElBTElaRURfREVWSUNFUworCisgICAgZGVmIF9j
cmVhdGVfZGV2aWNlcyhzZWxmLCBkZXZpY2VfY2xhc3MpOgorICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCisKKyAgICAjIERlc3BpdGUgdGhlaXIgbmFtZXMsIHRoZXNlIGZsYWdzIGRv
IG5vdCBhY3R1YWxseSBnZXQgcGFzc2VkIGFsbCB0aGUgd2F5IGRvd24gdG8gd2Via2l0LWJ1aWxk
LgorICAgIGRlZiBfYnVpbGRfZHJpdmVyX2ZsYWdzKHNlbGYpOgorICAgICAgICByZXR1cm4gWyct
LXNkaycsIHNlbGYuU0RLXSArIChbJ0FSQ0hTPSVzJyAlIHNlbGYuYXJjaGl0ZWN0dXJlKCldIGlm
IHNlbGYuYXJjaGl0ZWN0dXJlKCkgZWxzZSBbXSkKKworICAgIGRlZiBfaW5zdGFsbChzZWxmKToK
KyAgICAgICAgaWYgbm90IHNlbGYuZ2V0X29wdGlvbignaW5zdGFsbCcpOgorICAgICAgICAgICAg
X2xvZy5kZWJ1ZygnU2tpcHBpbmcgaW5zdGFsbGF0aW9uJykKKyAgICAgICAgICAgIHJldHVybgor
CisgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3Byb2Nlc3NlcygpKToKKyAgICAg
ICAgICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKKyAgICAgICAgICAgIF9sb2cuZGVi
dWcoJ0luc3RhbGxpbmcgdG8ge30nLmZvcm1hdChkZXZpY2UpKQorICAgICAgICAgICAgIyBXaXRo
b3V0IHBhc3NpbmcgRFlMRF9MSUJSQVJZX1BBVEgsIGxpYldlYkNvcmVUZXN0U3VwcG9ydCBjYW5u
b3QgYmUgbG9hZGVkIGFuZCBEUlQvV0tUUiB3aWxsIGNyYXNoIHByZS1sYXVuY2gsCisgICAgICAg
ICAgICAjIGxlYXZpbmcgYSBjcmFzaCBsb2cgd2hpY2ggd2lsbCBiZSBwaWNrZWQgdXAgaW4gcmVz
dWx0cy4gRFlMRF9GUkFNRVdPUktfUEFUSCBpcyBuZWVkZWQgdG8gcHJldmVudCBhbiBlYXJseSBj
cmFzaC4KKyAgICAgICAgICAgIGlmIG5vdCBkZXZpY2UuaW5zdGFsbF9hcHAoc2VsZi5fcGF0aF90
b19kcml2ZXIoKSwgeydEWUxEX0xJQlJBUllfUEFUSCc6IHNlbGYuX2J1aWxkX3BhdGgoKSwgJ0RZ
TERfRlJBTUVXT1JLX1BBVEgnOiBzZWxmLl9idWlsZF9wYXRoKCl9KToKKyAgICAgICAgICAgICAg
ICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byBpbnN0YWxsIGFwcCB7fSBvbiBkZXZpY2Ug
e30nLmZvcm1hdChzZWxmLl9wYXRoX3RvX2RyaXZlcigpLCBkZXZpY2UudWRpZCkpCisgICAgICAg
ICAgICBpZiBub3QgZGV2aWNlLmluc3RhbGxfZHlsaWJzKHNlbGYuX2J1aWxkX3BhdGgoKSk6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCBkeWxp
YnMgYXQge30gb24gZGV2aWNlIHt9Jy5mb3JtYXQoc2VsZi5fYnVpbGRfcGF0aCgpLCBkZXZpY2Uu
dWRpZCkpCisKKyAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZiwgZGV2aWNlX2NsYXNzPU5vbmUp
OgorICAgICAgICBzZWxmLl9jcmVhdGVfZGV2aWNlcyhkZXZpY2VfY2xhc3MpCisgICAgICAgIHNl
bGYuX2luc3RhbGwoKQorCisgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3Byb2Nl
c3NlcygpKToKKyAgICAgICAgICAgIGhvc3QgPSBzZWxmLnRhcmdldF9ob3N0KGkpCisgICAgICAg
ICAgICBob3N0LnByZXBhcmVfZm9yX3Rlc3RpbmcoCisgICAgICAgICAgICAgICAgc2VsZi5wb3J0
c190b19mb3J3YXJkKCksCisgICAgICAgICAgICAgICAgc2VsZi5hcHBfaWRlbnRpZmllcl9mcm9t
X2J1bmRsZShzZWxmLl9wYXRoX3RvX2RyaXZlcigpKSwKKyAgICAgICAgICAgICAgICBzZWxmLmxh
eW91dF90ZXN0c19kaXIoKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX2NyYXNo
X2xvZ3NfdG9fc2tpcF9mb3JfaG9zdFtob3N0XSA9IGhvc3QuZmlsZXN5c3RlbS5maWxlc191bmRl
cihzZWxmLnBhdGhfdG9fY3Jhc2hfbG9ncygpKQorCisgICAgZGVmIGNsZWFuX3VwX3Rlc3RfcnVu
KHNlbGYpOgorICAgICAgICBzdXBlcihEZXZpY2VQb3J0LCBzZWxmKS5jbGVhbl91cF90ZXN0X3J1
bigpCisKKyAgICAgICAgIyBCZXN0IGVmZm9ydCB0byBsZXQgZXZlcnkgZGV2aWNlIHRlYXJkb3du
IGJlZm9yZSB0aHJvd2luZyBhbnkgZXhjZXB0aW9ucyBoZXJlLgorICAgICAgICAjIEZhaWx1cmUg
dG8gdGVhcmRvd24gZGV2aWNlcyBjYW4gbGVhdmUgdGhpbmdzIGluIGEgYmFkIHN0YXRlLgorICAg
ICAgICBleGNlcHRpb25fbGlzdCA9IFtdCisgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNo
aWxkX3Byb2Nlc3NlcygpKToKKyAgICAgICAgICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3Qo
aSkKKyAgICAgICAgICAgIGlmIG5vdCBkZXZpY2U6CisgICAgICAgICAgICAgICAgY29udGludWUK
KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkZXZpY2UuZmluaXNoZWRfdGVzdGlu
ZygpCisgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg
ICAgIHRyYWNlID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQorICAgICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UoZSwgRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX2xp
c3QuYXBwZW5kKFtlLCB0cmFjZV0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uX2xpc3QuYXBwZW5kKFtFeGNlcHRpb24oJ0V4Y2VwdGlvbiB3aGls
ZSB0ZWFyaW5nIGRvd24ge30nLmZvcm1hdChkZXZpY2UpKSwgdHJhY2VdKQorCisgICAgICAgIGlm
IGxlbihleGNlcHRpb25fbGlzdCkgPT0gMToKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGlm
IGxlbihleGNlcHRpb25fbGlzdCkgPiAxOgorICAgICAgICAgICAgcHJpbnQoJ1xuJykKKyAgICAg
ICAgICAgIGZvciBleGNlcHRpb24gaW4gZXhjZXB0aW9uX2xpc3Q6CisgICAgICAgICAgICAgICAg
X2xvZy5lcnJvcigne30gcmFpc2VkOiB7fScuZm9ybWF0KGV4Y2VwdGlvblswXS5fX2NsYXNzX18u
X19uYW1lX18sIGV4Y2VwdGlvblswXSkpCisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihleGNl
cHRpb25bMV0pCisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQorCisgICAgICAgICAgICByYWlzZSBS
dW50aW1lRXJyb3IoJ011bHRpcGxlIGZhaWx1cmVzIHdoZW4gdGVhcmRvd24gZGV2aWNlcycpCisK
KyAgICBkZWYgZGlkX3NwYXduX3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyKToKKyAgICAgICAg
c3VwZXIoRGV2aWNlUG9ydCwgc2VsZikuZGlkX3NwYXduX3dvcmtlcih3b3JrZXJfbnVtYmVyKQor
CisgICAgICAgIHNlbGYudGFyZ2V0X2hvc3Qod29ya2VyX251bWJlcikucmVsZWFzZV93b3JrZXJf
cmVzb3VyY2VzKCkKKworICAgIGRlZiBzZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2Vy
dmVyX25hbWU9Tm9uZSk6CisgICAgICAgIGVudiA9IHN1cGVyKERldmljZVBvcnQsIHNlbGYpLnNl
dHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZXJ2ZXJfbmFtZSkKKyAgICAgICAgaWYgc2VydmVyX25h
bWUgPT0gc2VsZi5kcml2ZXJfbmFtZSgpIGFuZCBzZWxmLmdldF9vcHRpb24oJ2d1YXJkX21hbGxv
YycpOgorICAgICAgICAgICAgc2VsZi5fYXBwZW5kX3ZhbHVlX2NvbG9uX3NlcGFyYXRlZChlbnYs
ICdEWUxEX0lOU0VSVF9MSUJSQVJJRVMnLCAnL3Vzci9saWIvbGliZ21hbGxvYy5keWxpYicpCisg
ICAgICAgICAgICBzZWxmLl9hcHBlbmRfdmFsdWVfY29sb25fc2VwYXJhdGVkKGVudiwgJ19fWFBD
X0RZTERfSU5TRVJUX0xJQlJBUklFUycsICcvdXNyL2xpYi9saWJnbWFsbG9jLmR5bGliJykKKyAg
ICAgICAgZW52WydYTUxfQ0FUQUxPR19GSUxFUyddID0gJycgICMgd29yayBhcm91bmQgbWlzc2lu
ZyAvZXRjL2NhdGFsb2cgPHJkYXI6Ly9wcm9ibGVtLzQyOTI5OTU+CisgICAgICAgIHJldHVybiBl
bnYKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQkocmV2aXNpb24gMjM4MTExKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQkod29ya2luZyBjb3B5KQpAQCAt
MjgsMTMgKzI4LDEzIEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnMK
IGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0IFZlcnNpb25OYW1l
TWFwLCBJTlRFUk5BTF9UQUJMRQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRl
c3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHku
cG9ydC5jb25maWcgaW1wb3J0IGFwcGxlX2FkZGl0aW9ucwotZnJvbSB3ZWJraXRweS5wb3J0LmRh
cndpbiBpbXBvcnQgRGFyd2luUG9ydAorZnJvbSB3ZWJraXRweS5wb3J0LmRldmljZV9wb3J0IGlt
cG9ydCBEZXZpY2VQb3J0CiBmcm9tIHdlYmtpdHB5LnBvcnQuc2ltdWxhdG9yX3Byb2Nlc3MgaW1w
b3J0IFNpbXVsYXRvclByb2Nlc3MKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQogCiAKLWNsYXNzIElPU1BvcnQoRGFyd2luUG9ydCk6CitjbGFzcyBJT1NQb3J0KERldmljZVBv
cnQpOgogICAgIHBvcnRfbmFtZSA9ICJpb3MiCiAKICAgICBDVVJSRU5UX1ZFUlNJT04gPSBWZXJz
aW9uKDEyKQpAQCAtNTIsNDIgKzUyLDYgQEAgY2xhc3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToKICAg
ICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBWZXJzaW9uTmFtZU1hcC5tYXAo
c2VsZi5ob3N0LnBsYXRmb3JtKS50b19uYW1lKHNlbGYuX29zX3ZlcnNpb24sIHBsYXRmb3JtPUlP
U1BvcnQucG9ydF9uYW1lKQogCi0gICAgZGVmIGRyaXZlcl9jbWRfbGluZV9mb3JfbG9nZ2luZyhz
ZWxmKToKLSAgICAgICAgIyBBdm9pZCBjcmVhdGluZy9jb25uZWN0aW5nIHRvIGRldmljZXMganVz
dCBmb3IgbG9nZ2luZyB0aGUgY29tbWFuZGxpbmUuCi0gICAgICAgIHNlbGYuX3ByaW50aW5nX2Nt
ZF9saW5lID0gVHJ1ZQotICAgICAgICByZXN1bHQgPSBzdXBlcihJT1NQb3J0LCBzZWxmKS5kcml2
ZXJfY21kX2xpbmVfZm9yX2xvZ2dpbmcoKQotICAgICAgICBzZWxmLl9wcmludGluZ19jbWRfbGlu
ZSA9IEZhbHNlCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBkcml2ZXJfbmFtZShz
ZWxmKToKLSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdkcml2ZXJfbmFtZScpOgotICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuZ2V0X29wdGlvbignZHJpdmVyX25hbWUnKQotICAgICAgICBpZiBz
ZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgotICAgICAgICAgICAgcmV0dXJu
ICdXZWJLaXRUZXN0UnVubmVyQXBwLmFwcCcKLSAgICAgICAgcmV0dXJuICdEdW1wUmVuZGVyVHJl
ZS5hcHAnCi0KLSAgICBkZWYgX2dlbmVyYXRlX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKHNlbGYp
OgotICAgICAgICBjb25maWd1cmF0aW9ucyA9IFtdCi0gICAgICAgIGZvciBidWlsZF90eXBlIGlu
IHNlbGYuQUxMX0JVSUxEX1RZUEVTOgotICAgICAgICAgICAgZm9yIGFyY2hpdGVjdHVyZSBpbiBz
ZWxmLkFSQ0hJVEVDVFVSRVM6Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuYXBwZW5k
KFRlc3RDb25maWd1cmF0aW9uKHZlcnNpb249c2VsZi52ZXJzaW9uX25hbWUoKSwgYXJjaGl0ZWN0
dXJlPWFyY2hpdGVjdHVyZSwgYnVpbGRfdHlwZT1idWlsZF90eXBlKSkKLSAgICAgICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb25zCi0KLSAgICBkZWYgY2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgotICAgICAg
ICByZXR1cm4gaW50KHNlbGYuZ2V0X29wdGlvbignY2hpbGRfcHJvY2Vzc2VzJykpCi0KLSAgICBk
ZWYgX3Rlc3RpbmdfZGV2aWNlKHNlbGYsIG51bWJlcik6Ci0gICAgICAgIGRldmljZSA9IHNlbGYu
X2RldmljZV9mb3Jfd29ya2VyX251bWJlcl9tYXAoKVtudW1iZXJdCi0gICAgICAgIGlmIG5vdCBk
ZXZpY2U6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0RldmljZSBhdCB7fSBjb3Vs
ZCBub3QgYmUgZm91bmQnLmZvcm1hdChudW1iZXIpKQotICAgICAgICByZXR1cm4gZGV2aWNlCi0K
LSAgICAjIEEgZGV2aWNlIGlzIHRoZSB0YXJnZXQgaG9zdCBmb3IgYSBzcGVjaWZpYyB3b3JrZXIg
bnVtYmVyLgotICAgIGRlZiB0YXJnZXRfaG9zdChzZWxmLCB3b3JrZXJfbnVtYmVyPU5vbmUpOgot
ICAgICAgICBpZiBzZWxmLl9wcmludGluZ19jbWRfbGluZSBvciB3b3JrZXJfbnVtYmVyIGlzIE5v
bmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5ob3N0Ci0gICAgICAgIHJldHVybiBzZWxmLl90
ZXN0aW5nX2RldmljZSh3b3JrZXJfbnVtYmVyKQotCiAgICAgQG1lbW9pemVkCiAgICAgZGVmIGRl
ZmF1bHRfYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAgICAgIHdrX3N0cmluZyA9ICd3
azEnCkBAIC0xNTEsNjQgKzExNSwzIEBAIGNsYXNzIElPU1BvcnQoRGFyd2luUG9ydCk6CiAKICAg
ICBkZWYgaW9zX3ZlcnNpb24oc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJy
b3IKLQotICAgIGRlZiBfY3JlYXRlX2RldmljZXMoc2VsZiwgZGV2aWNlX2NsYXNzKToKLSAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgotCi0gICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNl
bGYsIGRldmljZV9jbGFzcz1Ob25lKToKLSAgICAgICAgc2VsZi5fY3JlYXRlX2RldmljZXMoZGV2
aWNlX2NsYXNzKQotCi0gICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignaW5zdGFsbCcpOgotICAg
ICAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgotICAgICAg
ICAgICAgICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKLSAgICAgICAgICAgICAgICBf
bG9nLmRlYnVnKCdJbnN0YWxsaW5nIHRvIHt9Jy5mb3JtYXQoZGV2aWNlKSkKLSAgICAgICAgICAg
ICAgICAjIFdpdGhvdXQgcGFzc2luZyBEWUxEX0xJQlJBUllfUEFUSCwgbGliV2ViQ29yZVRlc3RT
dXBwb3J0IGNhbm5vdCBiZSBsb2FkZWQgYW5kIERSVC9XS1RSIHdpbGwgY3Jhc2ggcHJlLWxhdW5j
aCwKLSAgICAgICAgICAgICAgICAjIGxlYXZpbmcgYSBjcmFzaCBsb2cgd2hpY2ggd2lsbCBiZSBw
aWNrZWQgdXAgaW4gcmVzdWx0cy4gRFlMRF9GUkFNRVdPUktfUEFUSCBpcyBuZWVkZWQgdG8gcHJl
dmVudCBhbiBlYXJseSBjcmFzaC4KLSAgICAgICAgICAgICAgICBpZiBub3QgZGV2aWNlLmluc3Rh
bGxfYXBwKHNlbGYuX3BhdGhfdG9fZHJpdmVyKCksIHsnRFlMRF9MSUJSQVJZX1BBVEgnOiBzZWxm
Ll9idWlsZF9wYXRoKCksICdEWUxEX0ZSQU1FV09SS19QQVRIJzogc2VsZi5fYnVpbGRfcGF0aCgp
fSk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIGlu
c3RhbGwgYXBwIHt9IG9uIGRldmljZSB7fScuZm9ybWF0KHNlbGYuX3BhdGhfdG9fZHJpdmVyKCks
IGRldmljZS51ZGlkKSkKLSAgICAgICAgICAgICAgICBpZiBub3QgZGV2aWNlLmluc3RhbGxfZHls
aWJzKHNlbGYuX2J1aWxkX3BhdGgoKSk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRp
bWVFcnJvcignRmFpbGVkIHRvIGluc3RhbGwgZHlsaWJzIGF0IHt9IG9uIGRldmljZSB7fScuZm9y
bWF0KHNlbGYuX2J1aWxkX3BhdGgoKSwgZGV2aWNlLnVkaWQpKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgX2xvZy5kZWJ1ZygnU2tpcHBpbmcgaW5zdGFsbGF0aW9uJykKLQotICAgICAgICBm
b3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6Ci0gICAgICAgICAgICBob3N0
ID0gc2VsZi50YXJnZXRfaG9zdChpKQotICAgICAgICAgICAgaG9zdC5wcmVwYXJlX2Zvcl90ZXN0
aW5nKAotICAgICAgICAgICAgICAgIHNlbGYucG9ydHNfdG9fZm9yd2FyZCgpLAotICAgICAgICAg
ICAgICAgIHNlbGYuYXBwX2lkZW50aWZpZXJfZnJvbV9idW5kbGUoc2VsZi5fcGF0aF90b19kcml2
ZXIoKSksCi0gICAgICAgICAgICAgICAgc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksCi0gICAgICAg
ICAgICApCi0gICAgICAgICAgICBzZWxmLl9jcmFzaF9sb2dzX3RvX3NraXBfZm9yX2hvc3RbaG9z
dF0gPSBob3N0LmZpbGVzeXN0ZW0uZmlsZXNfdW5kZXIoc2VsZi5wYXRoX3RvX2NyYXNoX2xvZ3Mo
KSkKLQotICAgIGRlZiBjbGVhbl91cF90ZXN0X3J1bihzZWxmKToKLSAgICAgICAgc3VwZXIoSU9T
UG9ydCwgc2VsZikuY2xlYW5fdXBfdGVzdF9ydW4oKQotCi0gICAgICAgICMgQmVzdCBlZmZvcnQg
dG8gbGV0IGV2ZXJ5IGRldmljZSB0ZWFyZG93biBiZWZvcmUgdGhyb3dpbmcgYW55IGV4Y2VwdGlv
bnMgaGVyZS4KLSAgICAgICAgIyBGYWlsdXJlIHRvIHRlYXJkb3duIGRldmljZXMgY2FuIGxlYXZl
IHRoaW5ncyBpbiBhIGJhZCBzdGF0ZS4KLSAgICAgICAgZXhjZXB0aW9uX2xpc3QgPSBbXQotICAg
ICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6Ci0gICAgICAgICAg
ICBkZXZpY2UgPSBzZWxmLnRhcmdldF9ob3N0KGkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgaWYgZGV2aWNlOgotICAgICAgICAgICAgICAgICAgICBkZXZpY2UuZmluaXNoZWRf
dGVzdGluZygpCi0gICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgotICAgICAg
ICAgICAgICAgIHRyYWNlID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQotICAgICAgICAgICAgICAg
IGlmIGlzaW5zdGFuY2UoZSwgRXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uX2xpc3QuYXBwZW5kKFtlLCB0cmFjZV0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9uX2xpc3QuYXBwZW5kKFtFeGNlcHRpb24oJ0V4Y2VwdGlv
biB0ZWFyaW5nIGRvd24ge30nLmZvcm1hdChkZXZpY2UpKSwgdHJhY2VdKQotICAgICAgICBpZiBs
ZW4oZXhjZXB0aW9uX2xpc3QpID09IDE6Ci0gICAgICAgICAgICByYWlzZQotICAgICAgICBlbGlm
IGxlbihleGNlcHRpb25fbGlzdCkgPiAxOgotICAgICAgICAgICAgcHJpbnQoJ1xuJykKLSAgICAg
ICAgICAgIGZvciBleGNlcHRpb24gaW4gZXhjZXB0aW9uX2xpc3Q6Ci0gICAgICAgICAgICAgICAg
X2xvZy5lcnJvcigne30gcmFpc2VkOiB7fScuZm9ybWF0KGV4Y2VwdGlvblswXS5fX2NsYXNzX18u
X19uYW1lX18sIGV4Y2VwdGlvblswXSkpCi0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcihleGNl
cHRpb25bMV0pCi0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcignLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQotCi0gICAgICAgICAgICByYWlzZSBS
dW50aW1lRXJyb3IoJ011bHRpcGxlIGZhaWx1cmVzIHdoZW4gdGVhcmRvd24gZGV2aWNlcycpCi0K
LSAgICBkZWYgZGlkX3NwYXduX3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyKToKLSAgICAgICAg
c3VwZXIoSU9TUG9ydCwgc2VsZikuZGlkX3NwYXduX3dvcmtlcih3b3JrZXJfbnVtYmVyKQotCi0g
ICAgICAgIHNlbGYudGFyZ2V0X2hvc3Qod29ya2VyX251bWJlcikucmVsZWFzZV93b3JrZXJfcmVz
b3VyY2VzKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3NfZGV2aWNlLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3NfZGV2aWNlLnB5
CShyZXZpc2lvbiAyMzgxMTEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX2Rl
dmljZS5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDYgQEAgaW1wb3J0IGxvZ2dpbmcKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmNyYXNobG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25h
bWVfbWFwIGltcG9ydCBWZXJzaW9uTmFtZU1hcAogZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBp
bXBvcnQgYXBwbGVfYWRkaXRpb25zCiBmcm9tIHdlYmtpdHB5LnBvcnQuaW9zIGltcG9ydCBJT1NQ
b3J0CiAKQEAgLTM4LDYgKzM3LDkgQEAgY2xhc3MgSU9TRGV2aWNlUG9ydChJT1NQb3J0KToKICAg
ICBBUkNISVRFQ1RVUkVTID0gWydhcm12NycsICdhcm12N3MnLCAnYXJtNjQnXQogICAgIERFRkFV
TFRfQVJDSElURUNUVVJFID0gJ2FybTY0JwogICAgIFZFUlNJT05fRkFMTEJBQ0tfT1JERVIgPSBb
J2lvcy03JywgJ2lvcy04JywgJ2lvcy05JywgJ2lvcy0xMCddCisKKyAgICBERVZJQ0VfTUFOQUdF
UiA9IGFwcGxlX2FkZGl0aW9ucygpLmRldmljZV9tYW5hZ2VyKCkgaWYgYXBwbGVfYWRkaXRpb25z
KCkgZWxzZSBOb25lCisKICAgICBTREsgPSBhcHBsZV9hZGRpdGlvbnMoKS5nZXRfc2RrKCdpcGhv
bmVvcycpIGlmIGFwcGxlX2FkZGl0aW9ucygpIGVsc2UgJ2lwaG9uZW9zJwogICAgIE5PX09OX0RF
VklDRV9URVNUSU5HID0gJ09uLWRldmljZSB0ZXN0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhp
cyBtYWNoaW5lJwogCkBAIC0xMTIsMTAgKzExNCw2IEBAIGNsYXNzIElPU0RldmljZVBvcnQoSU9T
UG9ydCk6CiAgICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhzZWxmLCBwcm9jZXNzX25hbWUsIHByb2Nl
c3NfcGlkKToKICAgICAgICAgcGFzcwogCi0gICAgIyBEZXNwaXRlIHRoZWlyIG5hbWVzLCB0aGVz
ZSBmbGFncyBkbyBub3QgYWN0dWFsbHkgZ2V0IHBhc3NlZCBhbGwgdGhlIHdheSBkb3duIHRvIHdl
YmtpdC1idWlsZC4KLSAgICBkZWYgX2J1aWxkX2RyaXZlcl9mbGFncyhzZWxmKToKLSAgICAgICAg
cmV0dXJuIFsnLS1zZGsnLCBzZWxmLlNES10gKyAoWydBUkNIUz0lcycgJSBzZWxmLmFyY2hpdGVj
dHVyZSgpXSBpZiBzZWxmLmFyY2hpdGVjdHVyZSgpIGVsc2UgW10pCi0KICAgICBkZWYgb3BlcmF0
aW5nX3N5c3RlbShzZWxmKToKICAgICAgICAgcmV0dXJuICdpb3MtZGV2aWNlJwogCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weQkocmV2aXNpb24g
MjM4MTExKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3IucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxNC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIElPU1NpbXVsYXRvclBvcnQoSU9TUG9ydCk6
CiAgICAgQVJDSElURUNUVVJFUyA9IFsneDg2XzY0JywgJ3g4NiddCiAgICAgREVGQVVMVF9BUkNI
SVRFQ1RVUkUgPSAneDg2XzY0JwogCisgICAgREVWSUNFX01BTkFHRVIgPSBTaW11bGF0ZWREZXZp
Y2VNYW5hZ2VyCisKICAgICBERUZBVUxUX0RFVklDRV9DTEFTUyA9ICdpUGhvbmUgU0UnCiAgICAg
Q1VTVE9NX0RFVklDRV9DTEFTU0VTID0gWydpUGFkJywgJ2lQaG9uZSA3J10KICAgICBTREsgPSBh
cHBsZV9hZGRpdGlvbnMoKS5nZXRfc2RrKCdpcGhvbmVzaW11bGF0b3InKSBpZiBhcHBsZV9hZGRp
dGlvbnMoKSBlbHNlICdpcGhvbmVzaW11bGF0b3InCkBAIC04MCwxMSArODIsNiBAQCBjbGFzcyBJ
T1NTaW11bGF0b3JQb3J0KElPU1BvcnQpOgogICAgICAgICAgICAgICAgIHJldHVybiBudW1fYm9v
dGVkX3NpbXMKICAgICAgICAgcmV0dXJuIFNpbXVsYXRlZERldmljZU1hbmFnZXIubWF4X3N1cHBv
cnRlZF9zaW11bGF0b3JzKHNlbGYuaG9zdCkKIAotICAgIGRlZiBfYnVpbGRfZHJpdmVyX2ZsYWdz
KHNlbGYpOgotICAgICAgICBhcmNocyA9IFsnQVJDSFM9aTM4NiddIGlmIHNlbGYuYXJjaGl0ZWN0
dXJlKCkgPT0gJ3g4NicgZWxzZSBbXQotICAgICAgICBzZGsgPSBbJy0tc2RrJywgc2VsZi5TREtd
Ci0gICAgICAgIHJldHVybiBhcmNocyArIHNkawotCiAgICAgZGVmIF9zZXRfZGV2aWNlX2NsYXNz
KHNlbGYsIGRldmljZV9jbGFzcyk6CiAgICAgICAgIHNlbGYuX2RldmljZV9jbGFzcyA9IGRldmlj
ZV9jbGFzcyBpZiBkZXZpY2VfY2xhc3MgZWxzZSBzZWxmLkRFRkFVTFRfREVWSUNFX0NMQVNTCiAK
QEAgLTkyLDggKzg5LDcgQEAgY2xhc3MgSU9TU2ltdWxhdG9yUG9ydChJT1NQb3J0KToKICAgICAg
ICAgc2VsZi5fc2V0X2RldmljZV9jbGFzcyhkZXZpY2VfY2xhc3MpCiAgICAgICAgIGRldmljZV90
eXBlID0gRGV2aWNlVHlwZS5mcm9tX3N0cmluZyhzZWxmLl9kZXZpY2VfY2xhc3MsIHNlbGYuaW9z
X3ZlcnNpb24oKSkKIAotICAgICAgICBfbG9nLmRlYnVnKCcnKQotICAgICAgICBfbG9nLmRlYnVn
KCdjcmVhdGluZyBkZXZpY2VzIGZvciB7fScuZm9ybWF0KGRldmljZV90eXBlKSkKKyAgICAgICAg
X2xvZy5kZWJ1ZygnXG5DcmVhdGluZyBkZXZpY2VzIGZvciB7fScuZm9ybWF0KGRldmljZV90eXBl
KSkKIAogICAgICAgICByZXF1ZXN0ID0gRGV2aWNlUmVxdWVzdCgKICAgICAgICAgICAgIGRldmlj
ZV90eXBlLApAQCAtMTI5LDEwICsxMjUsNiBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0KElPU1Bv
cnQpOgogICAgICAgICAgICAgICAgIGVudlsnX19YUENfTWFsbG9jU3RhY2tMb2dnaW5nJ10gPSAn
MScKICAgICAgICAgICAgICAgICBlbnZbJ01hbGxvY1NjcmliYmxlJ10gPSAnMScKICAgICAgICAg
ICAgICAgICBlbnZbJ19fWFBDX01hbGxvY1NjcmliYmxlJ10gPSAnMScKLSAgICAgICAgICAgIGlm
IHNlbGYuZ2V0X29wdGlvbignZ3VhcmRfbWFsbG9jJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
YXBwZW5kX3ZhbHVlX2NvbG9uX3NlcGFyYXRlZChlbnYsICdEWUxEX0lOU0VSVF9MSUJSQVJJRVMn
LCAnL3Vzci9saWIvbGliZ21hbGxvYy5keWxpYicpCi0gICAgICAgICAgICAgICAgc2VsZi5fYXBw
ZW5kX3ZhbHVlX2NvbG9uX3NlcGFyYXRlZChlbnYsICdfX1hQQ19EWUxEX0lOU0VSVF9MSUJSQVJJ
RVMnLCAnL3Vzci9saWIvbGliZ21hbGxvYy5keWxpYicpCi0gICAgICAgIGVudlsnWE1MX0NBVEFM
T0dfRklMRVMnXSA9ICcnICAjIHdvcmsgYXJvdW5kIG1pc3NpbmcgL2V0Yy9jYXRhbG9nIDxyZGFy
Oi8vcHJvYmxlbS80MjkyOTk1PgogICAgICAgICByZXR1cm4gZW52CiAKICAgICBkZWYgb3BlcmF0
aW5nX3N5c3RlbShzZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nf
c2ltdWxhdG9yX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMzgxMTEpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtNTIsMTUgKzUyLDE1IEBAIGNsYXNzIElPU1NpbXVsYXRvclRlc3QoaW9z
X3Rlc3RjYXNlLklPU1QKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaW9zLXNpbXVsYXRvcics
IHNlbGYubWFrZV9wb3J0KCkub3BlcmF0aW5nX3N5c3RlbSgpKQogCiAgICAgZGVmIHRlc3RfMzJi
aXQoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChvcHRpb25zPU1vY2tPcHRp
b25zKGFyY2hpdGVjdHVyZT0neDg2JykpCisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChv
cHRpb25zPU1vY2tPcHRpb25zKGFyY2hpdGVjdHVyZT0naTM4NicpKQogCiAgICAgICAgIGRlZiBy
dW5fc2NyaXB0KHNjcmlwdCwgYXJncz1Ob25lLCBlbnY9Tm9uZSk6CiAgICAgICAgICAgICBzZWxm
LmFyZ3MgPSBhcmdzCiAKICAgICAgICAgcG9ydC5fcnVuX3NjcmlwdCA9IHJ1bl9zY3JpcHQKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmFyY2hpdGVjdHVyZSgpLCAneDg2JykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmFyY2hpdGVjdHVyZSgpLCAnaTM4NicpCiAgICAgICAg
IHBvcnQuX2J1aWxkX2RyaXZlcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5hcmdz
LCBbJ0FSQ0hTPWkzODYnLCAnLS1zZGsnLCAnaXBob25lc2ltdWxhdG9yJ10pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5hcmdzLCBbJy0tc2RrJywgJ2lwaG9uZXNpbXVsYXRvcicsICdB
UkNIUz1pMzg2J10pCiAKICAgICBkZWYgdGVzdF82NGJpdChzZWxmKToKICAgICAgICAgIyBBcHBs
ZSBNYWMgcG9ydCBpcyA2NC1iaXQgYnkgZGVmYXVsdApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBJ
T1NTaW11bGF0b3JUZXN0KGlvc190ZXN0Y2FzZS5JT1NUCiAKICAgICAgICAgcG9ydC5fcnVuX3Nj
cmlwdCA9IHJ1bl9zY3JpcHQKICAgICAgICAgcG9ydC5fYnVpbGRfZHJpdmVyKCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzZWxmLmFyZ3MsIFsnLS1zZGsnLCAnaXBob25lc2ltdWxhdG9yJ10p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5hcmdzLCBbJy0tc2RrJywgJ2lwaG9uZXNp
bXVsYXRvcicsICdBUkNIUz14ODZfNjQnXSkKIAogICAgIGRlZiB0ZXN0X3Nka19uYW1lKHNlbGYp
OgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354712</attachid>
            <date>2018-11-13 15:28:35 -0800</date>
            <delta_ts>2018-11-14 08:25:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191568-20181113152831.patch</filename>
            <type>text/plain</type>
            <size>26930</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzODE0OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY1IEBACisyMDE4LTExLTEzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogUmVmYWN0b3IgcG9ydCBjb2RlIGZvciBkZXZpY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1NjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MDA1ODIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIHdhdGNoT1MgYW5kIGlPUyBkZXZpY2UgcG9ydHMgc2hh
cmUgbWFueSBjaGFyYWN0ZXJpc3RpY3MgaW4gdGVzdGluZywgbW9zdGx5IGR1ZQorICAgICAgICB0
byB0aGUgZmFjdCB0aGF0IGJvdGggYXJlIGRldmljZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHk6IEFkZGVkLgorICAgICAgICAoRGV2aWNlUG9ydCk6
IEFkZCBiYXNlIGNsYXNzIHRoYXQgYWxsIHNpbXVsYXRlZC9waHlzaWNhbCBkZXZpY2UgcG9ydHMg
c2hhcmUuCisgICAgICAgIChEZXZpY2VQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKERldmljZVBv
cnQuZHJpdmVyX2NtZF9saW5lX2Zvcl9sb2dnaW5nKTogTW92ZWQgZnJvbSBpT1MgcG9ydC4KKyAg
ICAgICAgKERldmljZVBvcnQuX2dlbmVyYXRlX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKTogRGl0
dG8uCisgICAgICAgIChEZXZpY2VQb3J0LmNoaWxkX3Byb2Nlc3Nlcyk6IERpdHRvLgorICAgICAg
ICAoRGV2aWNlUG9ydC5kcml2ZXJfbmFtZSk6IERpdHRvLgorICAgICAgICAoRGV2aWNlUG9ydC50
YXJnZXRfaG9zdCk6IEdlbmVyYWxpemUgd29ya2VyIGFjY2VzcyB0byBhdHRhY2hlZCBkZXZpY2Vz
IGFuZAorICAgICAgICBzaW11bGF0ZWQgZGV2aWNlcyBiYXNlZCBvbiB0aGUgZGV2aWNlIG1hbmFn
ZXIuCisgICAgICAgIChEZXZpY2VQb3J0LmRldmljZXMpOiBSZXR1cm4gYSBsaXN0IG9mIGFsbCBk
ZXZpY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvcnQuCisgICAgICAgIChEZXZpY2VQb3J0Ll9j
cmVhdGVfZGV2aWNlcyk6CisgICAgICAgIChEZXZpY2VQb3J0Ll9idWlsZF9kcml2ZXJfZmxhZ3Mp
OiBNb3ZlZCBmcm9tIGlPU1NpbXVsYXRvclBvcnQvaU9TRGV2aWNlUG9ydC4KKyAgICAgICAgKERl
dmljZVBvcnQuX2luc3RhbGwpOiBNb3ZlZCBmcm9tIGlPUyBwb3J0LgorICAgICAgICAoRGV2aWNl
UG9ydC5zZXR1cF90ZXN0X3J1bik6IERpdHRvLgorICAgICAgICAoRGV2aWNlUG9ydC5jbGVhbl91
cF90ZXN0X3J1bik6IERpdHRvLgorICAgICAgICAoRGV2aWNlUG9ydC5kaWRfc3Bhd25fd29ya2Vy
KTogRGl0dG8uCisgICAgICAgIChEZXZpY2VQb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcik6
IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAg
IChJT1NQb3J0KToKKyAgICAgICAgKElPU1BvcnQuX2RldmljZV9mb3Jfd29ya2VyX251bWJlcl9t
YXApOiBSZXBsYWNlZCBieSBEZXZpY2VQb3J0LmRldmljZXMoKS4KKyAgICAgICAgKElPU1BvcnQu
ZHJpdmVyX2NtZF9saW5lX2Zvcl9sb2dnaW5nKTogTW92ZWQgdG8gRGV2aWNlUG9ydC4KKyAgICAg
ICAgKElPU1BvcnQuZHJpdmVyX25hbWUpOiBEaXR0by4KKyAgICAgICAgKElPU1BvcnQuX2dlbmVy
YXRlX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKTogRGl0dG8uCisgICAgICAgIChJT1NQb3J0LmNo
aWxkX3Byb2Nlc3Nlcyk6IERpdHRvLgorICAgICAgICAoSU9TUG9ydC5fdGVzdGluZ19kZXZpY2Up
OiBEaXR0by4KKyAgICAgICAgKElPU1BvcnQudGFyZ2V0X2hvc3QpOiBEaXR0by4KKyAgICAgICAg
KElPU1BvcnQuX2NyZWF0ZV9kZXZpY2VzKTogRGl0dG8uCisgICAgICAgIChJT1NQb3J0LnNldHVw
X3Rlc3RfcnVuKTogRGl0dG8uCisgICAgICAgIChJT1NQb3J0LmNsZWFuX3VwX3Rlc3RfcnVuKTog
RGl0dG8uCisgICAgICAgIChJT1NQb3J0LmRpZF9zcGF3bl93b3JrZXIpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX2RldmljZS5weToKKyAgICAgICAgKElPU0Rl
dmljZVBvcnQpOiBJT1NEZXZpY2VQb3J0IHVzZXMgYSBkZXZpY2UgbWFuYWdlciBmcm9tIGFwcGxl
X2FkZGl0aW9ucy4KKyAgICAgICAgKElPU0RldmljZVBvcnQuX2xvb2tfZm9yX2FsbF9jcmFzaF9s
b2dzX2luX2xvZ19kaXIpOiBVc2UgRGV2aWNlUG9ydC5kZXZpY2VzKCkuCisgICAgICAgIChJT1NE
ZXZpY2VQb3J0Ll9nZXRfY3Jhc2hfbG9nKTogRGl0dG8uCisgICAgICAgIChJT1NEZXZpY2VQb3J0
Lmlvc192ZXJzaW9uKTogRGl0dG8uCisgICAgICAgIChJT1NEZXZpY2VQb3J0Ll9jcmVhdGVfZGV2
aWNlcyk6IERpdHRvLgorICAgICAgICAoSU9TRGV2aWNlUG9ydC5fZGV2aWNlX2Zvcl93b3JrZXJf
bnVtYmVyX21hcCk6IFJlcGxhY2VkIGJ5IERldmljZVBvcnQuZGV2aWNlcygpLgorICAgICAgICAo
SU9TU2ltdWxhdG9yUG9ydC5fYnVpbGRfZHJpdmVyX2ZsYWdzKTogTW92ZWQgdG8gRGV2aWNlUG9y
dC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX2RldmljZV91bml0dGVzdC5w
eToKKyAgICAgICAgKElPU0RldmljZVRlc3QudGVzdF9nZXRfY3Jhc2hfbG9nKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weToKKyAgICAgICAgKElPU1Np
bXVsYXRvclBvcnQpOiBJT1NTaW11bGF0b3JQb3J0IHVzZXMgdGhlIFNpbXVsYXRlZERldmljZU1h
bmFnZXIuCisgICAgICAgIChJT1NTaW11bGF0b3JQb3J0Ll9jcmVhdGVfZGV2aWNlcyk6IENsZWFu
IHVwIGxvZ2dpbmcgc3RhdGVtZW50LgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5zZXR1cF9l
bnZpcm9uX2Zvcl9zZXJ2ZXIpOiBTb21lIG9mIGVudmlyb25tZW50IHNldC11cCBpcyBzaGFyZWQK
KyAgICAgICAgYWNyb3NzIGFsbCBkZXZpY2VzLgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5f
ZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyX21hcCk6IFJlcGxhY2VkIGJ5IERldmljZVBvcnQuZGV2
aWNlcygpLgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5fYnVpbGRfZHJpdmVyX2ZsYWdzKTog
TW92ZWQgdG8gRGV2aWNlUG9ydC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9z
X3NpbXVsYXRvcl91bml0dGVzdC5weToKKyAgICAgICAgKElPU1NpbXVsYXRvclRlc3QudGVzdF8z
MmJpdCk6CisgICAgICAgIChJT1NTaW11bGF0b3JUZXN0LnRlc3RfNjRiaXQpOgorCiAyMDE4LTEx
LTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIERvIG5vdCBzaG93IHNlbGVjdGlvbiBVSSBmb3IgZWRpdGFibGUgZWxlbWVudHMgd2l0aCBv
cGFjaXR5IG5lYXIgemVybwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rldmlj
ZV9wb3J0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZp
Y2VfcG9ydC5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZGV2aWNlX3BvcnQucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjIgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCB0
cmFjZWJhY2sKKworZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVk
Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGlt
cG9ydCBUZXN0Q29uZmlndXJhdGlvbgorZnJvbSB3ZWJraXRweS5wb3J0LmRhcndpbiBpbXBvcnQg
RGFyd2luUG9ydAorZnJvbSB3ZWJraXRweS5wb3J0LnNpbXVsYXRvcl9wcm9jZXNzIGltcG9ydCBT
aW11bGF0b3JQcm9jZXNzCisKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQor
CisKK2NsYXNzIERldmljZVBvcnQoRGFyd2luUG9ydCk6CisKKyAgICBERVZJQ0VfTUFOQUdFUiA9
IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAg
ICBzdXBlcihEZXZpY2VQb3J0LCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAg
ICAgIHNlbGYuX3Rlc3RfcnVubmVyX3Byb2Nlc3NfY29uc3RydWN0b3IgPSBTaW11bGF0b3JQcm9j
ZXNzCisgICAgICAgIHNlbGYuX3ByaW50aW5nX2NtZF9saW5lID0gRmFsc2UKKworICAgIGRlZiBk
cml2ZXJfY21kX2xpbmVfZm9yX2xvZ2dpbmcoc2VsZik6CisgICAgICAgICMgQXZvaWQgY3JlYXRp
bmcvY29ubmVjdGluZyB0byBkZXZpY2VzIGp1c3QgZm9yIGNvbW1hbmQgbGluZSBsb2dnaW5nLgor
ICAgICAgICBzZWxmLl9wcmludGluZ19jbWRfbGluZSA9IFRydWUKKyAgICAgICAgcmVzdWx0ID0g
c3VwZXIoRGV2aWNlUG9ydCwgc2VsZikuZHJpdmVyX2NtZF9saW5lX2Zvcl9sb2dnaW5nKCkKKyAg
ICAgICAgc2VsZi5fcHJpbnRpbmdfY21kX2xpbmUgPSBGYWxzZQorICAgICAgICByZXR1cm4gcmVz
dWx0CisKKyAgICBkZWYgX2dlbmVyYXRlX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKHNlbGYpOgor
ICAgICAgICBjb25maWd1cmF0aW9ucyA9IFtdCisgICAgICAgIGZvciBidWlsZF90eXBlIGluIHNl
bGYuQUxMX0JVSUxEX1RZUEVTOgorICAgICAgICAgICAgZm9yIGFyY2hpdGVjdHVyZSBpbiBzZWxm
LkFSQ0hJVEVDVFVSRVM6CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuYXBwZW5kKFRl
c3RDb25maWd1cmF0aW9uKHZlcnNpb249c2VsZi52ZXJzaW9uX25hbWUoKSwgYXJjaGl0ZWN0dXJl
PWFyY2hpdGVjdHVyZSwgYnVpbGRfdHlwZT1idWlsZF90eXBlKSkKKyAgICAgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb25zCisKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgY2hpbGRfcHJvY2Vzc2VzKHNl
bGYpOgorICAgICAgICByZXR1cm4gaW50KHNlbGYuZ2V0X29wdGlvbignY2hpbGRfcHJvY2Vzc2Vz
JykpCisKKyAgICBkZWYgZHJpdmVyX25hbWUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuZ2V0X29w
dGlvbignZHJpdmVyX25hbWUnKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9vcHRpb24o
J2RyaXZlcl9uYW1lJykKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9y
dW5uZXInKToKKyAgICAgICAgICAgIHJldHVybiAnV2ViS2l0VGVzdFJ1bm5lckFwcC5hcHAnCisg
ICAgICAgIHJldHVybiAnRHVtcFJlbmRlclRyZWUuYXBwJworCisgICAgIyBBIGRldmljZSBpcyB0
aGUgdGFyZ2V0IGhvc3QgZm9yIGEgc3BlY2lmaWMgd29ya2VyIG51bWJlci4KKyAgICBkZWYgdGFy
Z2V0X2hvc3Qoc2VsZiwgd29ya2VyX251bWJlcj1Ob25lKToKKyAgICAgICAgaWYgc2VsZi5fcHJp
bnRpbmdfY21kX2xpbmUgb3Igd29ya2VyX251bWJlciBpcyBOb25lOgorICAgICAgICAgICAgcmV0
dXJuIHNlbGYuaG9zdAorICAgICAgICBpZiBzZWxmLkRFVklDRV9NQU5BR0VSIGlzIE5vbmU6Cisg
ICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ05vIGRldmljZSBtYW5hZ2VyIGZvciBzcGVj
aWZpZWQgcG9ydCcpCisgICAgICAgIGlmIHNlbGYuREVWSUNFX01BTkFHRVIuSU5JVElBTElaRURf
REVWSUNFUyBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdObyBpbml0
aWFsaXplZCBkZXZpY2VzIGZvciB0ZXN0aW5nJykKKyAgICAgICAgcmV0dXJuIHNlbGYuREVWSUNF
X01BTkFHRVIuSU5JVElBTElaRURfREVWSUNFU1t3b3JrZXJfbnVtYmVyXQorCisgICAgZGVmIGRl
dmljZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuREVWSUNFX01BTkFHRVIgaXMgTm9uZToKKyAg
ICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBpZiBzZWxmLkRFVklDRV9NQU5BR0VSLklOSVRJ
QUxJWkVEX0RFVklDRVMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBy
ZXR1cm4gc2VsZi5ERVZJQ0VfTUFOQUdFUi5JTklUSUFMSVpFRF9ERVZJQ0VTCisKKyAgICBkZWYg
X2NyZWF0ZV9kZXZpY2VzKHNlbGYsIGRldmljZV9jbGFzcyk6CisgICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IKKworICAgICMgRGVzcGl0ZSB0aGVpciBuYW1lcywgdGhlc2UgZmxhZ3Mg
ZG8gbm90IGFjdHVhbGx5IGdldCBwYXNzZWQgYWxsIHRoZSB3YXkgZG93biB0byB3ZWJraXQtYnVp
bGQuCisgICAgZGVmIF9idWlsZF9kcml2ZXJfZmxhZ3Moc2VsZik6CisgICAgICAgIHJldHVybiBb
Jy0tc2RrJywgc2VsZi5TREtdICsgKFsnQVJDSFM9JXMnICUgc2VsZi5hcmNoaXRlY3R1cmUoKV0g
aWYgc2VsZi5hcmNoaXRlY3R1cmUoKSBlbHNlIFtdKQorCisgICAgZGVmIF9pbnN0YWxsKHNlbGYp
OgorICAgICAgICBpZiBub3Qgc2VsZi5nZXRfb3B0aW9uKCdpbnN0YWxsJyk6CisgICAgICAgICAg
ICBfbG9nLmRlYnVnKCdTa2lwcGluZyBpbnN0YWxsYXRpb24nKQorICAgICAgICAgICAgcmV0dXJu
CisKKyAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgorICAg
ICAgICAgICAgZGV2aWNlID0gc2VsZi50YXJnZXRfaG9zdChpKQorICAgICAgICAgICAgX2xvZy5k
ZWJ1ZygnSW5zdGFsbGluZyB0byB7fScuZm9ybWF0KGRldmljZSkpCisgICAgICAgICAgICAjIFdp
dGhvdXQgcGFzc2luZyBEWUxEX0xJQlJBUllfUEFUSCwgbGliV2ViQ29yZVRlc3RTdXBwb3J0IGNh
bm5vdCBiZSBsb2FkZWQgYW5kIERSVC9XS1RSIHdpbGwgY3Jhc2ggcHJlLWxhdW5jaCwKKyAgICAg
ICAgICAgICMgbGVhdmluZyBhIGNyYXNoIGxvZyB3aGljaCB3aWxsIGJlIHBpY2tlZCB1cCBpbiBy
ZXN1bHRzLiBEWUxEX0ZSQU1FV09SS19QQVRIIGlzIG5lZWRlZCB0byBwcmV2ZW50IGFuIGVhcmx5
IGNyYXNoLgorICAgICAgICAgICAgaWYgbm90IGRldmljZS5pbnN0YWxsX2FwcChzZWxmLl9wYXRo
X3RvX2RyaXZlcigpLCB7J0RZTERfTElCUkFSWV9QQVRIJzogc2VsZi5fYnVpbGRfcGF0aCgpLCAn
RFlMRF9GUkFNRVdPUktfUEFUSCc6IHNlbGYuX2J1aWxkX3BhdGgoKX0pOgorICAgICAgICAgICAg
ICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIGluc3RhbGwgYXBwIHt9IG9uIGRldmlj
ZSB7fScuZm9ybWF0KHNlbGYuX3BhdGhfdG9fZHJpdmVyKCksIGRldmljZS51ZGlkKSkKKyAgICAg
ICAgICAgIGlmIG5vdCBkZXZpY2UuaW5zdGFsbF9keWxpYnMoc2VsZi5fYnVpbGRfcGF0aCgpKToK
KyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byBpbnN0YWxsIGR5
bGlicyBhdCB7fSBvbiBkZXZpY2Uge30nLmZvcm1hdChzZWxmLl9idWlsZF9wYXRoKCksIGRldmlj
ZS51ZGlkKSkKKworICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmLCBkZXZpY2VfY2xhc3M9Tm9u
ZSk6CisgICAgICAgIHNlbGYuX2NyZWF0ZV9kZXZpY2VzKGRldmljZV9jbGFzcykKKyAgICAgICAg
c2VsZi5faW5zdGFsbCgpCisKKyAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRfcHJv
Y2Vzc2VzKCkpOgorICAgICAgICAgICAgaG9zdCA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKKyAgICAg
ICAgICAgIGhvc3QucHJlcGFyZV9mb3JfdGVzdGluZygKKyAgICAgICAgICAgICAgICBzZWxmLnBv
cnRzX3RvX2ZvcndhcmQoKSwKKyAgICAgICAgICAgICAgICBzZWxmLmFwcF9pZGVudGlmaWVyX2Zy
b21fYnVuZGxlKHNlbGYuX3BhdGhfdG9fZHJpdmVyKCkpLAorICAgICAgICAgICAgICAgIHNlbGYu
bGF5b3V0X3Rlc3RzX2RpcigpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fY3Jh
c2hfbG9nc190b19za2lwX2Zvcl9ob3N0W2hvc3RdID0gaG9zdC5maWxlc3lzdGVtLmZpbGVzX3Vu
ZGVyKHNlbGYucGF0aF90b19jcmFzaF9sb2dzKCkpCisKKyAgICBkZWYgY2xlYW5fdXBfdGVzdF9y
dW4oc2VsZik6CisgICAgICAgIHN1cGVyKERldmljZVBvcnQsIHNlbGYpLmNsZWFuX3VwX3Rlc3Rf
cnVuKCkKKworICAgICAgICAjIEJlc3QgZWZmb3J0IHRvIGxldCBldmVyeSBkZXZpY2UgdGVhcmRv
d24gYmVmb3JlIHRocm93aW5nIGFueSBleGNlcHRpb25zIGhlcmUuCisgICAgICAgICMgRmFpbHVy
ZSB0byB0ZWFyZG93biBkZXZpY2VzIGNhbiBsZWF2ZSB0aGluZ3MgaW4gYSBiYWQgc3RhdGUuCisg
ICAgICAgIGV4Y2VwdGlvbl9saXN0ID0gW10KKyAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYu
Y2hpbGRfcHJvY2Vzc2VzKCkpOgorICAgICAgICAgICAgZGV2aWNlID0gc2VsZi50YXJnZXRfaG9z
dChpKQorICAgICAgICAgICAgaWYgbm90IGRldmljZToKKyAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRldmljZS5maW5pc2hlZF90ZXN0
aW5nKCkKKyAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg
ICAgICAgdHJhY2UgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCisgICAgICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShlLCBFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25f
bGlzdC5hcHBlbmQoW2UsIHRyYWNlXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25fbGlzdC5hcHBlbmQoW0V4Y2VwdGlvbignRXhjZXB0aW9uIHdo
aWxlIHRlYXJpbmcgZG93biB7fScuZm9ybWF0KGRldmljZSkpLCB0cmFjZV0pCisKKyAgICAgICAg
aWYgbGVuKGV4Y2VwdGlvbl9saXN0KSA9PSAxOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAg
aWYgbGVuKGV4Y2VwdGlvbl9saXN0KSA+IDE6CisgICAgICAgICAgICBwcmludCgnXG4nKQorICAg
ICAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiBleGNlcHRpb25fbGlzdDoKKyAgICAgICAgICAgICAg
ICBfbG9nLmVycm9yKCd7fSByYWlzZWQ6IHt9Jy5mb3JtYXQoZXhjZXB0aW9uWzBdLl9fY2xhc3Nf
Xy5fX25hbWVfXywgZXhjZXB0aW9uWzBdKSkKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGV4
Y2VwdGlvblsxXSkKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCctLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpCisKKyAgICAgICAgICAgIHJhaXNl
IFJ1bnRpbWVFcnJvcignTXVsdGlwbGUgZmFpbHVyZXMgd2hlbiB0ZWFyZG93biBkZXZpY2VzJykK
KworICAgIGRlZiBkaWRfc3Bhd25fd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIpOgorICAgICAg
ICBzdXBlcihEZXZpY2VQb3J0LCBzZWxmKS5kaWRfc3Bhd25fd29ya2VyKHdvcmtlcl9udW1iZXIp
CisKKyAgICAgICAgc2VsZi50YXJnZXRfaG9zdCh3b3JrZXJfbnVtYmVyKS5yZWxlYXNlX3dvcmtl
cl9yZXNvdXJjZXMoKQorCisgICAgZGVmIHNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZWxmLCBz
ZXJ2ZXJfbmFtZT1Ob25lKToKKyAgICAgICAgZW52ID0gc3VwZXIoRGV2aWNlUG9ydCwgc2VsZiku
c2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlcnZlcl9uYW1lKQorICAgICAgICBpZiBzZXJ2ZXJf
bmFtZSA9PSBzZWxmLmRyaXZlcl9uYW1lKCkgYW5kIHNlbGYuZ2V0X29wdGlvbignZ3VhcmRfbWFs
bG9jJyk6CisgICAgICAgICAgICBzZWxmLl9hcHBlbmRfdmFsdWVfY29sb25fc2VwYXJhdGVkKGVu
diwgJ0RZTERfSU5TRVJUX0xJQlJBUklFUycsICcvdXNyL2xpYi9saWJnbWFsbG9jLmR5bGliJykK
KyAgICAgICAgICAgIHNlbGYuX2FwcGVuZF92YWx1ZV9jb2xvbl9zZXBhcmF0ZWQoZW52LCAnX19Y
UENfRFlMRF9JTlNFUlRfTElCUkFSSUVTJywgJy91c3IvbGliL2xpYmdtYWxsb2MuZHlsaWInKQor
ICAgICAgICBlbnZbJ1hNTF9DQVRBTE9HX0ZJTEVTJ10gPSAnJyAgIyB3b3JrIGFyb3VuZCBtaXNz
aW5nIC9ldGMvY2F0YWxvZyA8cmRhcjovL3Byb2JsZW0vNDI5Mjk5NT4KKyAgICAgICAgcmV0dXJu
IGVudgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CShyZXZpc2lvbiAyMzgxNDkp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yOCwxMyArMjgsMTMgQEAgZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbiBpbXBvcnQgVmVy
cwogZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgVmVyc2lvbk5h
bWVNYXAsIElOVEVSTkFMX1RBQkxFCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMu
dGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRw
eS5wb3J0LmNvbmZpZyBpbXBvcnQgYXBwbGVfYWRkaXRpb25zCi1mcm9tIHdlYmtpdHB5LnBvcnQu
ZGFyd2luIGltcG9ydCBEYXJ3aW5Qb3J0Citmcm9tIHdlYmtpdHB5LnBvcnQuZGV2aWNlX3BvcnQg
aW1wb3J0IERldmljZVBvcnQKIGZyb20gd2Via2l0cHkucG9ydC5zaW11bGF0b3JfcHJvY2VzcyBp
bXBvcnQgU2ltdWxhdG9yUHJvY2VzcwogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCiAKIAotY2xhc3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToKK2NsYXNzIElPU1BvcnQoRGV2aWNl
UG9ydCk6CiAgICAgcG9ydF9uYW1lID0gImlvcyIKIAogICAgIENVUlJFTlRfVkVSU0lPTiA9IFZl
cnNpb24oMTIpCkBAIC00NCw1MCArNDQsMTEgQEAgY2xhc3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToK
ICAgICAgICAgc2VsZi5fdGVzdF9ydW5uZXJfcHJvY2Vzc19jb25zdHJ1Y3RvciA9IFNpbXVsYXRv
clByb2Nlc3MKICAgICAgICAgc2VsZi5fcHJpbnRpbmdfY21kX2xpbmUgPSBGYWxzZQogCi0gICAg
ZGVmIF9kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXJfbWFwKHNlbGYpOgotICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yCi0KICAgICBkZWYgdmVyc2lvbl9uYW1lKHNlbGYpOgogICAgICAg
ICBpZiBzZWxmLl9vc192ZXJzaW9uIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQog
ICAgICAgICByZXR1cm4gVmVyc2lvbk5hbWVNYXAubWFwKHNlbGYuaG9zdC5wbGF0Zm9ybSkudG9f
bmFtZShzZWxmLl9vc192ZXJzaW9uLCBwbGF0Zm9ybT1JT1NQb3J0LnBvcnRfbmFtZSkKIAotICAg
IGRlZiBkcml2ZXJfY21kX2xpbmVfZm9yX2xvZ2dpbmcoc2VsZik6Ci0gICAgICAgICMgQXZvaWQg
Y3JlYXRpbmcvY29ubmVjdGluZyB0byBkZXZpY2VzIGp1c3QgZm9yIGxvZ2dpbmcgdGhlIGNvbW1h
bmRsaW5lLgotICAgICAgICBzZWxmLl9wcmludGluZ19jbWRfbGluZSA9IFRydWUKLSAgICAgICAg
cmVzdWx0ID0gc3VwZXIoSU9TUG9ydCwgc2VsZikuZHJpdmVyX2NtZF9saW5lX2Zvcl9sb2dnaW5n
KCkKLSAgICAgICAgc2VsZi5fcHJpbnRpbmdfY21kX2xpbmUgPSBGYWxzZQotICAgICAgICByZXR1
cm4gcmVzdWx0Ci0KLSAgICBkZWYgZHJpdmVyX25hbWUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYu
Z2V0X29wdGlvbignZHJpdmVyX25hbWUnKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9v
cHRpb24oJ2RyaXZlcl9uYW1lJykKLSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRf
dGVzdF9ydW5uZXInKToKLSAgICAgICAgICAgIHJldHVybiAnV2ViS2l0VGVzdFJ1bm5lckFwcC5h
cHAnCi0gICAgICAgIHJldHVybiAnRHVtcFJlbmRlclRyZWUuYXBwJwotCi0gICAgZGVmIF9nZW5l
cmF0ZV9hbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxmKToKLSAgICAgICAgY29uZmlndXJhdGlv
bnMgPSBbXQotICAgICAgICBmb3IgYnVpbGRfdHlwZSBpbiBzZWxmLkFMTF9CVUlMRF9UWVBFUzoK
LSAgICAgICAgICAgIGZvciBhcmNoaXRlY3R1cmUgaW4gc2VsZi5BUkNISVRFQ1RVUkVTOgotICAg
ICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLmFwcGVuZChUZXN0Q29uZmlndXJhdGlvbih2ZXJz
aW9uPXNlbGYudmVyc2lvbl9uYW1lKCksIGFyY2hpdGVjdHVyZT1hcmNoaXRlY3R1cmUsIGJ1aWxk
X3R5cGU9YnVpbGRfdHlwZSkpCi0gICAgICAgIHJldHVybiBjb25maWd1cmF0aW9ucwotCi0gICAg
ZGVmIGNoaWxkX3Byb2Nlc3NlcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGludChzZWxmLmdldF9v
cHRpb24oJ2NoaWxkX3Byb2Nlc3NlcycpKQotCi0gICAgZGVmIF90ZXN0aW5nX2RldmljZShzZWxm
LCBudW1iZXIpOgotICAgICAgICBkZXZpY2UgPSBzZWxmLl9kZXZpY2VfZm9yX3dvcmtlcl9udW1i
ZXJfbWFwKClbbnVtYmVyXQotICAgICAgICBpZiBub3QgZGV2aWNlOgotICAgICAgICAgICAgcmFp
c2UgUnVudGltZUVycm9yKCdEZXZpY2UgYXQge30gY291bGQgbm90IGJlIGZvdW5kJy5mb3JtYXQo
bnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIGRldmljZQotCi0gICAgIyBBIGRldmljZSBpcyB0aGUg
dGFyZ2V0IGhvc3QgZm9yIGEgc3BlY2lmaWMgd29ya2VyIG51bWJlci4KLSAgICBkZWYgdGFyZ2V0
X2hvc3Qoc2VsZiwgd29ya2VyX251bWJlcj1Ob25lKToKLSAgICAgICAgaWYgc2VsZi5fcHJpbnRp
bmdfY21kX2xpbmUgb3Igd29ya2VyX251bWJlciBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJu
IHNlbGYuaG9zdAotICAgICAgICByZXR1cm4gc2VsZi5fdGVzdGluZ19kZXZpY2Uod29ya2VyX251
bWJlcikKLQogICAgIEBtZW1vaXplZAogICAgIGRlZiBkZWZhdWx0X2Jhc2VsaW5lX3NlYXJjaF9w
YXRoKHNlbGYpOgogICAgICAgICB3a19zdHJpbmcgPSAnd2sxJwpAQCAtMTUxLDY0ICsxMTIsMyBA
QCBjbGFzcyBJT1NQb3J0KERhcndpblBvcnQpOgogCiAgICAgZGVmIGlvc192ZXJzaW9uKHNlbGYp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCi0KLSAgICBkZWYgX2NyZWF0ZV9k
ZXZpY2VzKHNlbGYsIGRldmljZV9jbGFzcyk6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IKLQotICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmLCBkZXZpY2VfY2xhc3M9Tm9uZSk6
Ci0gICAgICAgIHNlbGYuX2NyZWF0ZV9kZXZpY2VzKGRldmljZV9jbGFzcykKLQotICAgICAgICBp
ZiBzZWxmLmdldF9vcHRpb24oJ2luc3RhbGwnKToKLSAgICAgICAgICAgIGZvciBpIGluIHhyYW5n
ZShzZWxmLmNoaWxkX3Byb2Nlc3NlcygpKToKLSAgICAgICAgICAgICAgICBkZXZpY2UgPSBzZWxm
LnRhcmdldF9ob3N0KGkpCi0gICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnSW5zdGFsbGluZyB0
byB7fScuZm9ybWF0KGRldmljZSkpCi0gICAgICAgICAgICAgICAgIyBXaXRob3V0IHBhc3Npbmcg
RFlMRF9MSUJSQVJZX1BBVEgsIGxpYldlYkNvcmVUZXN0U3VwcG9ydCBjYW5ub3QgYmUgbG9hZGVk
IGFuZCBEUlQvV0tUUiB3aWxsIGNyYXNoIHByZS1sYXVuY2gsCi0gICAgICAgICAgICAgICAgIyBs
ZWF2aW5nIGEgY3Jhc2ggbG9nIHdoaWNoIHdpbGwgYmUgcGlja2VkIHVwIGluIHJlc3VsdHMuIERZ
TERfRlJBTUVXT1JLX1BBVEggaXMgbmVlZGVkIHRvIHByZXZlbnQgYW4gZWFybHkgY3Jhc2guCi0g
ICAgICAgICAgICAgICAgaWYgbm90IGRldmljZS5pbnN0YWxsX2FwcChzZWxmLl9wYXRoX3RvX2Ry
aXZlcigpLCB7J0RZTERfTElCUkFSWV9QQVRIJzogc2VsZi5fYnVpbGRfcGF0aCgpLCAnRFlMRF9G
UkFNRVdPUktfUEFUSCc6IHNlbGYuX2J1aWxkX3BhdGgoKX0pOgotICAgICAgICAgICAgICAgICAg
ICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byBpbnN0YWxsIGFwcCB7fSBvbiBkZXZpY2Ug
e30nLmZvcm1hdChzZWxmLl9wYXRoX3RvX2RyaXZlcigpLCBkZXZpY2UudWRpZCkpCi0gICAgICAg
ICAgICAgICAgaWYgbm90IGRldmljZS5pbnN0YWxsX2R5bGlicyhzZWxmLl9idWlsZF9wYXRoKCkp
OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byBpbnN0
YWxsIGR5bGlicyBhdCB7fSBvbiBkZXZpY2Uge30nLmZvcm1hdChzZWxmLl9idWlsZF9wYXRoKCks
IGRldmljZS51ZGlkKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoJ1Nr
aXBwaW5nIGluc3RhbGxhdGlvbicpCi0KLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hp
bGRfcHJvY2Vzc2VzKCkpOgotICAgICAgICAgICAgaG9zdCA9IHNlbGYudGFyZ2V0X2hvc3QoaSkK
LSAgICAgICAgICAgIGhvc3QucHJlcGFyZV9mb3JfdGVzdGluZygKLSAgICAgICAgICAgICAgICBz
ZWxmLnBvcnRzX3RvX2ZvcndhcmQoKSwKLSAgICAgICAgICAgICAgICBzZWxmLmFwcF9pZGVudGlm
aWVyX2Zyb21fYnVuZGxlKHNlbGYuX3BhdGhfdG9fZHJpdmVyKCkpLAotICAgICAgICAgICAgICAg
IHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgc2Vs
Zi5fY3Jhc2hfbG9nc190b19za2lwX2Zvcl9ob3N0W2hvc3RdID0gaG9zdC5maWxlc3lzdGVtLmZp
bGVzX3VuZGVyKHNlbGYucGF0aF90b19jcmFzaF9sb2dzKCkpCi0KLSAgICBkZWYgY2xlYW5fdXBf
dGVzdF9ydW4oc2VsZik6Ci0gICAgICAgIHN1cGVyKElPU1BvcnQsIHNlbGYpLmNsZWFuX3VwX3Rl
c3RfcnVuKCkKLQotICAgICAgICAjIEJlc3QgZWZmb3J0IHRvIGxldCBldmVyeSBkZXZpY2UgdGVh
cmRvd24gYmVmb3JlIHRocm93aW5nIGFueSBleGNlcHRpb25zIGhlcmUuCi0gICAgICAgICMgRmFp
bHVyZSB0byB0ZWFyZG93biBkZXZpY2VzIGNhbiBsZWF2ZSB0aGluZ3MgaW4gYSBiYWQgc3RhdGUu
Ci0gICAgICAgIGV4Y2VwdGlvbl9saXN0ID0gW10KLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNl
bGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgotICAgICAgICAgICAgZGV2aWNlID0gc2VsZi50YXJnZXRf
aG9zdChpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIGRldmljZToKLSAg
ICAgICAgICAgICAgICAgICAgZGV2aWNlLmZpbmlzaGVkX3Rlc3RpbmcoKQotICAgICAgICAgICAg
ZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICB0cmFjZSA9IHRyYWNl
YmFjay5mb3JtYXRfZXhjKCkKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGUsIEV4Y2Vw
dGlvbik6Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl9saXN0LmFwcGVuZChbZSwgdHJh
Y2VdKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bl9saXN0LmFwcGVuZChbRXhjZXB0aW9uKCdFeGNlcHRpb24gdGVhcmluZyBkb3duIHt9Jy5mb3Jt
YXQoZGV2aWNlKSksIHRyYWNlXSkKLSAgICAgICAgaWYgbGVuKGV4Y2VwdGlvbl9saXN0KSA9PSAx
OgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZWxpZiBsZW4oZXhjZXB0aW9uX2xpc3QpID4g
MToKLSAgICAgICAgICAgIHByaW50KCdcbicpCi0gICAgICAgICAgICBmb3IgZXhjZXB0aW9uIGlu
IGV4Y2VwdGlvbl9saXN0OgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ3t9IHJhaXNlZDog
e30nLmZvcm1hdChleGNlcHRpb25bMF0uX19jbGFzc19fLl9fbmFtZV9fLCBleGNlcHRpb25bMF0p
KQotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoZXhjZXB0aW9uWzFdKQotICAgICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tJykKLQotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdNdWx0aXBsZSBm
YWlsdXJlcyB3aGVuIHRlYXJkb3duIGRldmljZXMnKQotCi0gICAgZGVmIGRpZF9zcGF3bl93b3Jr
ZXIoc2VsZiwgd29ya2VyX251bWJlcik6Ci0gICAgICAgIHN1cGVyKElPU1BvcnQsIHNlbGYpLmRp
ZF9zcGF3bl93b3JrZXIod29ya2VyX251bWJlcikKLQotICAgICAgICBzZWxmLnRhcmdldF9ob3N0
KHdvcmtlcl9udW1iZXIpLnJlbGVhc2Vfd29ya2VyX3Jlc291cmNlcygpCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX2RldmljZS5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX2RldmljZS5weQkocmV2aXNpb24gMjM4MTQ5KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19kZXZpY2UucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3
ICsyNSw2IEBAIGltcG9ydCBsb2dnaW5nCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBp
bXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3MgaW1w
b3J0IENyYXNoTG9ncwogZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbiBpbXBvcnQgVmVyc2lv
bgotZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgVmVyc2lvbk5h
bWVNYXAKIGZyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0IGFwcGxlX2FkZGl0aW9ucwog
ZnJvbSB3ZWJraXRweS5wb3J0LmlvcyBpbXBvcnQgSU9TUG9ydAogCkBAIC0zOCw2ICszNyw5IEBA
IGNsYXNzIElPU0RldmljZVBvcnQoSU9TUG9ydCk6CiAgICAgQVJDSElURUNUVVJFUyA9IFsnYXJt
djcnLCAnYXJtdjdzJywgJ2FybTY0J10KICAgICBERUZBVUxUX0FSQ0hJVEVDVFVSRSA9ICdhcm02
NCcKICAgICBWRVJTSU9OX0ZBTExCQUNLX09SREVSID0gWydpb3MtNycsICdpb3MtOCcsICdpb3Mt
OScsICdpb3MtMTAnXQorCisgICAgREVWSUNFX01BTkFHRVIgPSBhcHBsZV9hZGRpdGlvbnMoKS5k
ZXZpY2VfbWFuYWdlcigpIGlmIGFwcGxlX2FkZGl0aW9ucygpIGVsc2UgTm9uZQorCiAgICAgU0RL
ID0gYXBwbGVfYWRkaXRpb25zKCkuZ2V0X3NkaygnaXBob25lb3MnKSBpZiBhcHBsZV9hZGRpdGlv
bnMoKSBlbHNlICdpcGhvbmVvcycKICAgICBOT19PTl9ERVZJQ0VfVEVTVElORyA9ICdPbi1kZXZp
Y2UgdGVzdGluZyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgbWFjaGluZScKIApAQCAtNDcsMTEg
KzQ5LDYgQEAgY2xhc3MgSU9TRGV2aWNlUG9ydChJT1NQb3J0KToKICAgICAgICAgICAgIHJldHVy
biBhcHBsZV9hZGRpdGlvbnMoKS5pb3NfZGV2aWNlX2RlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKHNl
bGYpCiAgICAgICAgIHJldHVybiAxCiAKLSAgICBkZWYgX2RldmljZV9mb3Jfd29ya2VyX251bWJl
cl9tYXAoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBhcHBsZV9hZGRpdGlvbnMoKToKLSAgICAgICAg
ICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihzZWxmLk5PX09OX0RFVklDRV9URVNUSU5HKQotICAgICAg
ICByZXR1cm4gYXBwbGVfYWRkaXRpb25zKCkuaW9zX2RldmljZV9mb3Jfd29ya2VyX251bWJlcl9t
YXAoc2VsZikKLQogICAgIGRlZiBfZHJpdmVyX2NsYXNzKHNlbGYpOgogICAgICAgICBpZiBhcHBs
ZV9hZGRpdGlvbnMoKToKICAgICAgICAgICAgIHJldHVybiBhcHBsZV9hZGRpdGlvbnMoKS5pb3Nf
ZGV2aWNlX2RyaXZlcigpCkBAIC03Myw3ICs3MCw3IEBAIGNsYXNzIElPU0RldmljZVBvcnQoSU9T
UG9ydCk6CiAKICAgICBkZWYgX2xvb2tfZm9yX2FsbF9jcmFzaF9sb2dzX2luX2xvZ19kaXIoc2Vs
ZiwgbmV3ZXJfdGhhbik6CiAgICAgICAgIGxvZ19saXN0ID0ge30KLSAgICAgICAgZm9yIGRldmlj
ZSBpbiBzZWxmLl9kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXJfbWFwKCk6CisgICAgICAgIGZvciBk
ZXZpY2UgaW4gc2VsZi5kZXZpY2VzKCk6CiAgICAgICAgICAgICBjcmFzaF9sb2cgPSBDcmFzaExv
Z3MoZGV2aWNlLCBzZWxmLnBhdGhfdG9fY3Jhc2hfbG9ncygpLCBjcmFzaF9sb2dzX3RvX3NraXA9
c2VsZi5fY3Jhc2hfbG9nc190b19za2lwX2Zvcl9ob3N0LmdldChkZXZpY2UsIFtdKSkKICAgICAg
ICAgICAgIGxvZ19saXN0LnVwZGF0ZShjcmFzaF9sb2cuZmluZF9hbGxfbG9ncyhpbmNsdWRlX2Vy
cm9ycz1UcnVlLCBuZXdlcl90aGFuPW5ld2VyX3RoYW4pKQogICAgICAgICByZXR1cm4gbG9nX2xp
c3QKQEAgLTgzLDcgKzgwLDcgQEAgY2xhc3MgSU9TRGV2aWNlUG9ydChJT1NQb3J0KToKICAgICAg
ICAgICAgIHJldHVybiBzdXBlcihJT1NEZXZpY2VQb3J0LCBzZWxmKS5fZ2V0X2NyYXNoX2xvZyhu
YW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyLCBuZXdlcl90aGFuLCB0aW1lX2ZuPXRpbWVfZm4sIHNs
ZWVwX2ZuPXNsZWVwX2ZuLCB3YWl0X2Zvcl9sb2c9d2FpdF9mb3JfbG9nLCB0YXJnZXRfaG9zdD10
YXJnZXRfaG9zdCkKIAogICAgICAgICAjIFdlIG5lZWQgdG8gc2VhcmNoIGV2ZXJ5IGRldmljZSBz
aW5jZSBvbmUgd2FzIG5vdCBzcGVjaWZpZWQuCi0gICAgICAgIGZvciBkZXZpY2UgaW4gc2VsZi5f
ZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyX21hcCgpOgorICAgICAgICBmb3IgZGV2aWNlIGluIHNl
bGYuZGV2aWNlcygpOgogICAgICAgICAgICAgc3RkZXJyX291dCwgY3Jhc2hsb2cgPSBzdXBlcihJ
T1NEZXZpY2VQb3J0LCBzZWxmKS5fZ2V0X2NyYXNoX2xvZyhuYW1lLCBwaWQsIHN0ZG91dCwgc3Rk
ZXJyLCBuZXdlcl90aGFuLCB0aW1lX2ZuPXRpbWVfZm4sIHNsZWVwX2ZuPXNsZWVwX2ZuLCB3YWl0
X2Zvcl9sb2c9RmFsc2UsIHRhcmdldF9ob3N0PWRldmljZSkKICAgICAgICAgICAgIGlmIGNyYXNo
bG9nOgogICAgICAgICAgICAgICAgIHJldHVybiAoc3RkZXJyLCBjcmFzaGxvZykKQEAgLTk3LDEw
ICs5NCwxMCBAQCBjbGFzcyBJT1NEZXZpY2VQb3J0KElPU1BvcnQpOgogICAgICAgICBpZiBub3Qg
YXBwbGVfYWRkaXRpb25zKCk6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Ioc2VsZi5O
T19PTl9ERVZJQ0VfVEVTVElORykKIAotICAgICAgICBpZiBub3Qgc2VsZi5fZGV2aWNlX2Zvcl93
b3JrZXJfbnVtYmVyX21hcCgpOgorICAgICAgICBpZiBub3Qgc2VsZi5kZXZpY2VzKCk6CiAgICAg
ICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ05vIGRldmljZXMgYXJlIGF2YWlsYWJsZScpCiAg
ICAgICAgIHZlcnNpb24gPSBOb25lCi0gICAgICAgIGZvciBkZXZpY2UgaW4gc2VsZi5fZGV2aWNl
X2Zvcl93b3JrZXJfbnVtYmVyX21hcCgpOgorICAgICAgICBmb3IgZGV2aWNlIGluIHNlbGYuZGV2
aWNlcygpOgogICAgICAgICAgICAgaWYgbm90IHZlcnNpb246CiAgICAgICAgICAgICAgICAgdmVy
c2lvbiA9IGRldmljZS5wbGF0Zm9ybS5vc192ZXJzaW9uCiAgICAgICAgICAgICBlbHNlOgpAQCAt
MTEyLDE3ICsxMDksMTMgQEAgY2xhc3MgSU9TRGV2aWNlUG9ydChJT1NQb3J0KToKICAgICBkZWYg
Y2hlY2tfZm9yX2xlYWtzKHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpOgogICAgICAg
ICBwYXNzCiAKLSAgICAjIERlc3BpdGUgdGhlaXIgbmFtZXMsIHRoZXNlIGZsYWdzIGRvIG5vdCBh
Y3R1YWxseSBnZXQgcGFzc2VkIGFsbCB0aGUgd2F5IGRvd24gdG8gd2Via2l0LWJ1aWxkLgotICAg
IGRlZiBfYnVpbGRfZHJpdmVyX2ZsYWdzKHNlbGYpOgotICAgICAgICByZXR1cm4gWyctLXNkaycs
IHNlbGYuU0RLXSArIChbJ0FSQ0hTPSVzJyAlIHNlbGYuYXJjaGl0ZWN0dXJlKCldIGlmIHNlbGYu
YXJjaGl0ZWN0dXJlKCkgZWxzZSBbXSkKLQogICAgIGRlZiBvcGVyYXRpbmdfc3lzdGVtKHNlbGYp
OgogICAgICAgICByZXR1cm4gJ2lvcy1kZXZpY2UnCiAKICAgICBkZWYgX2NyZWF0ZV9kZXZpY2Vz
KHNlbGYsIGRldmljZV9jbGFzcyk6CiAgICAgICAgIGlmIG5vdCBhcHBsZV9hZGRpdGlvbnMoKToK
ICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihzZWxmLk5PX09OX0RFVklDRV9URVNUSU5H
KQotICAgICAgICBpZiBub3Qgc2VsZi5fZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyX21hcCgpOgor
ICAgICAgICBpZiBub3Qgc2VsZi5kZXZpY2VzKCk6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1l
RXJyb3IoJ05vIGRldmljZXMgYXJlIGF2YWlsYWJsZSBmb3IgdGVzdGluZycpCiAKICAgICAgICAg
aWYgc2VsZi5kZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcygpIDwgc2VsZi5jaGlsZF9wcm9jZXNzZXMo
KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3NfZGV2aWNlX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3NfZGV2aWNl
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMzgxNDkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvaW9zX2RldmljZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtODMsOCArODMs
NyBAQCBjbGFzcyBJT1NEZXZpY2VUZXN0KGlvc190ZXN0Y2FzZS5JT1NUZXN0CiAKICAgICBkZWYg
dGVzdF9nZXRfY3Jhc2hfbG9nKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQo
cG9ydF9uYW1lPXNlbGYucG9ydF9uYW1lKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KFJ1bnRpbWVFcnJvcik6Ci0gICAgICAgICAgICBwb3J0Ll9nZXRfY3Jhc2hfbG9nKCdEdW1wUmVu
ZGVyVHJlZScsIDEyMzQsIE5vbmUsIE5vbmUsIHRpbWUudGltZSgpLCB3YWl0X2Zvcl9sb2c9RmFs
c2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKE5vbmUsIE5vbmUpLCBwb3J0Ll9nZXRfY3Jh
c2hfbG9nKCdEdW1wUmVuZGVyVHJlZScsIDEyMzQsIE5vbmUsIE5vbmUsIHRpbWUudGltZSgpLCB3
YWl0X2Zvcl9sb2c9RmFsc2UpKQogCiAgICAgZGVmIHRlc3RfbGF5b3V0X3Rlc3Rfc2VhcmNocGF0
aF93aXRoX2FwcGxlX2FkZGl0aW9ucyhzZWxmKToKICAgICAgICAgd2l0aCBwb3J0X3Rlc3RjYXNl
LmJpbmRfbW9ja19hcHBsZV9hZGRpdGlvbnMoKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9pb3Nfc2ltdWxhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yLnB5CShyZXZpc2lvbiAyMzgxNDkpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weQkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDkgKzM3
LDExIEBAIGNsYXNzIElPU1NpbXVsYXRvclBvcnQoSU9TUG9ydCk6CiAgICAgcG9ydF9uYW1lID0g
Imlvcy1zaW11bGF0b3IiCiAKICAgICBGVVRVUkVfVkVSU0lPTiA9ICdmdXR1cmUnCi0gICAgQVJD
SElURUNUVVJFUyA9IFsneDg2XzY0JywgJ3g4NiddCisgICAgQVJDSElURUNUVVJFUyA9IFsneDg2
XzY0JywgJ2kzODYnXQogICAgIERFRkFVTFRfQVJDSElURUNUVVJFID0gJ3g4Nl82NCcKIAorICAg
IERFVklDRV9NQU5BR0VSID0gU2ltdWxhdGVkRGV2aWNlTWFuYWdlcgorCiAgICAgREVGQVVMVF9E
RVZJQ0VfQ0xBU1MgPSAnaVBob25lIFNFJwogICAgIENVU1RPTV9ERVZJQ0VfQ0xBU1NFUyA9IFsn
aVBhZCcsICdpUGhvbmUgNyddCiAgICAgU0RLID0gYXBwbGVfYWRkaXRpb25zKCkuZ2V0X3Nkaygn
aXBob25lc2ltdWxhdG9yJykgaWYgYXBwbGVfYWRkaXRpb25zKCkgZWxzZSAnaXBob25lc2ltdWxh
dG9yJwpAQCAtNTEsOSArNTMsNiBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0KElPU1BvcnQpOgog
ICAgICAgICBzZWxmLl9kZXZpY2VfY2xhc3MgPSBvcHRpb25hbF9kZXZpY2VfY2xhc3MgaWYgb3B0
aW9uYWxfZGV2aWNlX2NsYXNzIGVsc2Ugc2VsZi5ERUZBVUxUX0RFVklDRV9DTEFTUwogICAgICAg
ICBfbG9nLmRlYnVnKCdJT1NTaW11bGF0b3JQb3J0IF9kZXZpY2VfY2xhc3MgaXMgJXMnLCBzZWxm
Ll9kZXZpY2VfY2xhc3MpCiAKLSAgICBkZWYgX2RldmljZV9mb3Jfd29ya2VyX251bWJlcl9tYXAo
c2VsZik6Ci0gICAgICAgIHJldHVybiBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLklOSVRJQUxJWkVE
X0RFVklDRVMKLQogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX3ZlcnNpb25fZnJvbV9uYW1l
KG5hbWUpOgogICAgICAgICBpZiBsZW4obmFtZS5zcGxpdCgnLScpKSA+IDIgYW5kIG5hbWUuc3Bs
aXQoJy0nKVsyXS5pc2RpZ2l0KCk6CkBAIC04MCwxMSArNzksNiBAQCBjbGFzcyBJT1NTaW11bGF0
b3JQb3J0KElPU1BvcnQpOgogICAgICAgICAgICAgICAgIHJldHVybiBudW1fYm9vdGVkX3NpbXMK
ICAgICAgICAgcmV0dXJuIFNpbXVsYXRlZERldmljZU1hbmFnZXIubWF4X3N1cHBvcnRlZF9zaW11
bGF0b3JzKHNlbGYuaG9zdCkKIAotICAgIGRlZiBfYnVpbGRfZHJpdmVyX2ZsYWdzKHNlbGYpOgot
ICAgICAgICBhcmNocyA9IFsnQVJDSFM9aTM4NiddIGlmIHNlbGYuYXJjaGl0ZWN0dXJlKCkgPT0g
J3g4NicgZWxzZSBbXQotICAgICAgICBzZGsgPSBbJy0tc2RrJywgc2VsZi5TREtdCi0gICAgICAg
IHJldHVybiBhcmNocyArIHNkawotCiAgICAgZGVmIF9zZXRfZGV2aWNlX2NsYXNzKHNlbGYsIGRl
dmljZV9jbGFzcyk6CiAgICAgICAgIHNlbGYuX2RldmljZV9jbGFzcyA9IGRldmljZV9jbGFzcyBp
ZiBkZXZpY2VfY2xhc3MgZWxzZSBzZWxmLkRFRkFVTFRfREVWSUNFX0NMQVNTCiAKQEAgLTkyLDgg
Kzg2LDcgQEAgY2xhc3MgSU9TU2ltdWxhdG9yUG9ydChJT1NQb3J0KToKICAgICAgICAgc2VsZi5f
c2V0X2RldmljZV9jbGFzcyhkZXZpY2VfY2xhc3MpCiAgICAgICAgIGRldmljZV90eXBlID0gRGV2
aWNlVHlwZS5mcm9tX3N0cmluZyhzZWxmLl9kZXZpY2VfY2xhc3MsIHNlbGYuaW9zX3ZlcnNpb24o
KSkKIAotICAgICAgICBfbG9nLmRlYnVnKCcnKQotICAgICAgICBfbG9nLmRlYnVnKCdjcmVhdGlu
ZyBkZXZpY2VzIGZvciB7fScuZm9ybWF0KGRldmljZV90eXBlKSkKKyAgICAgICAgX2xvZy5kZWJ1
ZygnXG5DcmVhdGluZyBkZXZpY2VzIGZvciB7fScuZm9ybWF0KGRldmljZV90eXBlKSkKIAogICAg
ICAgICByZXF1ZXN0ID0gRGV2aWNlUmVxdWVzdCgKICAgICAgICAgICAgIGRldmljZV90eXBlLApA
QCAtMTI5LDEwICsxMjIsNiBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0KElPU1BvcnQpOgogICAg
ICAgICAgICAgICAgIGVudlsnX19YUENfTWFsbG9jU3RhY2tMb2dnaW5nJ10gPSAnMScKICAgICAg
ICAgICAgICAgICBlbnZbJ01hbGxvY1NjcmliYmxlJ10gPSAnMScKICAgICAgICAgICAgICAgICBl
bnZbJ19fWFBDX01hbGxvY1NjcmliYmxlJ10gPSAnMScKLSAgICAgICAgICAgIGlmIHNlbGYuZ2V0
X29wdGlvbignZ3VhcmRfbWFsbG9jJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYXBwZW5kX3Zh
bHVlX2NvbG9uX3NlcGFyYXRlZChlbnYsICdEWUxEX0lOU0VSVF9MSUJSQVJJRVMnLCAnL3Vzci9s
aWIvbGliZ21hbGxvYy5keWxpYicpCi0gICAgICAgICAgICAgICAgc2VsZi5fYXBwZW5kX3ZhbHVl
X2NvbG9uX3NlcGFyYXRlZChlbnYsICdfX1hQQ19EWUxEX0lOU0VSVF9MSUJSQVJJRVMnLCAnL3Vz
ci9saWIvbGliZ21hbGxvYy5keWxpYicpCi0gICAgICAgIGVudlsnWE1MX0NBVEFMT0dfRklMRVMn
XSA9ICcnICAjIHdvcmsgYXJvdW5kIG1pc3NpbmcgL2V0Yy9jYXRhbG9nIDxyZGFyOi8vcHJvYmxl
bS80MjkyOTk1PgogICAgICAgICByZXR1cm4gZW52CiAKICAgICBkZWYgb3BlcmF0aW5nX3N5c3Rl
bShzZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9y
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9p
b3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMzgxNDkpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtNTIsMTUgKzUyLDE1IEBAIGNsYXNzIElPU1NpbXVsYXRvclRlc3QoaW9zX3Rlc3RjYXNl
LklPU1QKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaW9zLXNpbXVsYXRvcicsIHNlbGYubWFr
ZV9wb3J0KCkub3BlcmF0aW5nX3N5c3RlbSgpKQogCiAgICAgZGVmIHRlc3RfMzJiaXQoc2VsZik6
Ci0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChvcHRpb25zPU1vY2tPcHRpb25zKGFyY2hp
dGVjdHVyZT0neDg2JykpCisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChvcHRpb25zPU1v
Y2tPcHRpb25zKGFyY2hpdGVjdHVyZT0naTM4NicpKQogCiAgICAgICAgIGRlZiBydW5fc2NyaXB0
KHNjcmlwdCwgYXJncz1Ob25lLCBlbnY9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLmFyZ3MgPSBh
cmdzCiAKICAgICAgICAgcG9ydC5fcnVuX3NjcmlwdCA9IHJ1bl9zY3JpcHQKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0LmFyY2hpdGVjdHVyZSgpLCAneDg2JykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwb3J0LmFyY2hpdGVjdHVyZSgpLCAnaTM4NicpCiAgICAgICAgIHBvcnQuX2J1
aWxkX2RyaXZlcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5hcmdzLCBbJ0FSQ0hT
PWkzODYnLCAnLS1zZGsnLCAnaXBob25lc2ltdWxhdG9yJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5hcmdzLCBbJy0tc2RrJywgJ2lwaG9uZXNpbXVsYXRvcicsICdBUkNIUz1pMzg2
J10pCiAKICAgICBkZWYgdGVzdF82NGJpdChzZWxmKToKICAgICAgICAgIyBBcHBsZSBNYWMgcG9y
dCBpcyA2NC1iaXQgYnkgZGVmYXVsdApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBJT1NTaW11bGF0
b3JUZXN0KGlvc190ZXN0Y2FzZS5JT1NUCiAKICAgICAgICAgcG9ydC5fcnVuX3NjcmlwdCA9IHJ1
bl9zY3JpcHQKICAgICAgICAgcG9ydC5fYnVpbGRfZHJpdmVyKCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZWxmLmFyZ3MsIFsnLS1zZGsnLCAnaXBob25lc2ltdWxhdG9yJ10pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5hcmdzLCBbJy0tc2RrJywgJ2lwaG9uZXNpbXVsYXRvcics
ICdBUkNIUz14ODZfNjQnXSkKIAogICAgIGRlZiB0ZXN0X3Nka19uYW1lKHNlbGYpOgogICAgICAg
ICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>