<?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>78524</bug_id>
          
          <creation_ts>2012-02-13 13:41:20 -0800</creation_ts>
          <short_desc>webkitpy should support Android</short_desc>
          <delta_ts>2012-02-26 23:01:22 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78528</dependson>
    
    <dependson>78543</dependson>
    
    <dependson>78545</dependson>
    
    <dependson>78550</dependson>
    
    <dependson>78558</dependson>
    
    <dependson>78579</dependson>
    
    <dependson>78580</dependson>
    
    <dependson>78582</dependson>
    
    <dependson>78627</dependson>
    
    <dependson>79628</dependson>
          <blocked>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>jnd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>555532</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-13 13:41:20 -0800</bug_when>
    <thetext>webkitpy should support Android</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555533</commentid>
    <comment_count>1</comment_count>
      <attachid>126822</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-13 13:41:43 -0800</bug_when>
    <thetext>Created attachment 126822
snapshot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555543</commentid>
    <comment_count>2</comment_count>
      <attachid>126822</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-13 13:47:23 -0800</bug_when>
    <thetext>Comment on attachment 126822
snapshot

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

I would have probably broken this file out into smaller pieces, but I think that&apos;s also something we can do later after the android port is working.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:493
&gt; +class ChromiumAndroidDriver(chromium.ChromiumDriver):
&gt; +    &quot;&quot;&quot;Abstract interface for test_shell.&quot;&quot;&quot;

Really?  We have yet another driver...?

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:78
&gt; +        _set_gpu_options(self)

Odd function.

&gt; Tools/Scripts/webkitpy/layout_tests/port/factory.py:76
&gt; +            else:
&gt; +                return &apos;chromium-linux&apos;

No else after return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555544</commentid>
    <comment_count>3</comment_count>
      <attachid>126822</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-13 13:47:58 -0800</bug_when>
    <thetext>Comment on attachment 126822
snapshot

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:50
&gt; +_log = logging.getLogger(&apos;webkitpy.layout_tests.port.chromium_android&apos;)

I think we normally use getLogger(__file__)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556781</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-14 17:04:25 -0800</bug_when>
    <thetext>This is done.  I don&apos;t have a target device, so it&apos;s hard for me to test that everything is working.  I suspect there are some bugs, but we can handle them separately as we find them.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126822</attachid>
            <date>2012-02-13 13:41:43 -0800</date>
            <delta_ts>2012-02-13 13:47:58 -0800</delta_ts>
            <desc>snapshot</desc>
            <filename>bug-78524-20120213134148.patch</filename>
            <type>text/plain</type>
            <size>41843</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwNzYwMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDg0IEBACisyMDEyLTAyLTEzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgd2Via2l0cHkgc2hvdWxkIHN1cHBvcnQgQW5kcm9pZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1MjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQudG8uc3RhcnRfaHR0cF9zZXJ2ZXIp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0u
cHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQpOgorICAgICAgICAoQ2hyb21pdW1Ecml2ZXIucnVu
X3Rlc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fYW5kcm9pZC5weTogQWRkZWQuCisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0KToK
KyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX19pbml0X18pOgorICAgICAgICAoQ2hyb21p
dW1BbmRyb2lkUG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3Nlcyk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWRQb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKToKKyAgICAgICAgKENocm9taXVtQW5k
cm9pZFBvcnQuY2hlY2tfYnVpbGQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5jaGVj
a19zeXNfZGVwcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0LmRlZmF1bHRfd29ya2Vy
X21vZGVsKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQudGVzdF9wbGF0Zm9ybV9uYW1l
cyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0LnRlc3RfZXhwZWN0YXRpb25zKToKKyAg
ICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKToK
KyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIpOgorICAgICAg
ICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5zdG9wX2h0dHBfc2VydmVyKToKKyAgICAgICAgKENocm9t
aXVtQW5kcm9pZFBvcnQuc3RhcnRfaGVscGVyKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBv
cnQuc3RvcF9oZWxwZXIpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5wYXRoX2Zyb21f
YW5kcm9pZF9iYXNlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX2J1aWxkX3BhdGgp
OgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19hcGFjaGUpOgorICAgICAg
ICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUpOgorICAg
ICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19kcml2ZXIpOgorICAgICAgICAoQ2hy
b21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19oZWxwZXIpOgorICAgICAgICAoQ2hyb21pdW1BbmRy
b2lkUG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBv
cnQuX3BhdGhfdG9fbGlnaHR0cGQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcGF0
aF90b19saWdodHRwZF9tb2R1bGVzKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX3Bh
dGhfdG9fbGlnaHR0cGRfcGhwKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX3BhdGhf
dG9fd2RpZmYpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fc2h1dF9kb3duX2h0dHBf
c2VydmVyKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX2RyaXZlcl9jbGFzcyk6Cisg
ICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0Ll9wdXNoX2V4ZWN1dGFibGUpOgorICAgICAgICAo
Q2hyb21pdW1BbmRyb2lkUG9ydC5fcHVzaF9mb250cyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJv
aWRQb3J0Ll9zZXR1cF9zeXN0ZW1fZm9udF9mb3JfdGVzdCk6CisgICAgICAgIChDaHJvbWl1bUFu
ZHJvaWRQb3J0Ll9yZXN0b3JlX3N5c3RlbV9mb250KToKKyAgICAgICAgKENocm9taXVtQW5kcm9p
ZFBvcnQuX3B1c2hfdGVzdF9yZXNvdXJjZXMpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9y
dC5fc3luY2hyb25pemVfZGF0ZXRpbWUpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5f
Y2hlY2tfdmVyc2lvbik6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0Ll91cGRhdGVfdmVy
c2lvbik6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0Ll9ydW5fYWRiX2NvbW1hbmQpOgor
ICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fY29weV9kZXZpY2VfZmlsZSk6CisgICAgICAg
IChDaHJvbWl1bUFuZHJvaWRQb3J0Ll9wdXNoX3RvX2RldmljZSk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWRQb3J0Ll9wdWxsX2Zyb21fZGV2aWNlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9p
ZFBvcnQuX2tpbGxfZGV2aWNlX3Byb2Nlc3MpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9y
dC5fZ2V0X3N0ZGVycik6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0Ll9nZXRfbGFzdF9z
dGFja3RyYWNlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX3NldHVwX3BlcmZvcm1h
bmNlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX3RlYXJkb3duX3BlcmZvcm1hbmNl
KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlcik6CisgICAgICAgIChDaHJvbWl1bUFu
ZHJvaWREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9z
dGFydCk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIucnVuX3Rlc3QpOgorICAgICAg
ICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLnN0b3ApOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lk
RHJpdmVyLl90ZXN0X3NoZWxsX2NvbW1hbmQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJp
dmVyLl93cml0ZV9jb21tYW5kX2FuZF9yZWFkX2xpbmUpOgorICAgICAgICAoQ2hyb21pdW1BbmRy
b2lkRHJpdmVyLl9vdXRwdXRfaW1hZ2UpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVy
Ll9oYXNfY3Jhc2hfaGludCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV9ncHUucHk6CisgICAgICAgIChDaHJvbWl1bUdwdUFuZHJvaWRQb3J0
KToKKyAgICAgICAgKENocm9taXVtR3B1QW5kcm9pZFBvcnQuX19pbml0X18pOgorICAgICAgICAo
Q2hyb21pdW1HcHVBbmRyb2lkUG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCk6CisgICAgICAgIChD
aHJvbWl1bUdwdUFuZHJvaWRQb3J0LmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKToKKyAgICAgICAg
KENocm9taXVtR3B1QW5kcm9pZFBvcnQudGVzdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weTogQWRkZWQgcHJvcGVydHkgc3ZuOmV4ZWN1
dGFibGUuCisgICAgICAgIChQb3J0RmFjdG9yeSk6CisgICAgICAgIChQb3J0RmFjdG9yeS5fZGVm
YXVsdF9wb3J0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2
ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weToKKyAgICAgICAgKExheW91dFRlc3RBcGFjaGVIdHRw
ZC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2Vy
dmVycy9odHRwX3NlcnZlci5weToKKyAgICAgICAgKExpZ2h0dHBkLl9faW5pdF9fKToKKyAgICAg
ICAgKExpZ2h0dHBkLl9wcmVwYXJlX2NvbmZpZyk6CisKIDIwMTItMDItMTMgIEFtaSBGaXNjaG1h
biAgPGZpc2NobWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgZmlzY2htYW4gYXMgY29t
bWl0dGVyLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQkocmV2aXNpb24gMTA3NTg4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC03NTAsMTYgKzc1
MCwxNiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIG1ldGhvZC4iIiIKICAgICAgICAg
cGFzcwogCi0gICAgZGVmIHN0YXJ0X2h0dHBfc2VydmVyKHNlbGYpOgorICAgIGRlZiBzdGFydF9o
dHRwX3NlcnZlcihzZWxmLCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSk6CiAgICAgICAgICIiIlN0YXJ0
IGEgd2ViIHNlcnZlci4gUmFpc2UgYW4gZXJyb3IgaWYgaXQgY2FuJ3Qgc3RhcnQgb3IgaXMgYWxy
ZWFkeSBydW5uaW5nLgogCiAgICAgICAgIFBvcnRzIGNhbiBzdHViIHRoaXMgb3V0IGlmIHRoZXkg
ZG9uJ3QgbmVlZCBhIHdlYiBzZXJ2ZXIgdG8gYmUgcnVubmluZy4iIiIKICAgICAgICAgYXNzZXJ0
IG5vdCBzZWxmLl9odHRwX3NlcnZlciwgJ0FscmVhZHkgcnVubmluZyBhbiBodHRwIHNlcnZlci4n
CiAKICAgICAgICAgaWYgc2VsZi5fdXNlc19hcGFjaGUoKToKLSAgICAgICAgICAgIHNlcnZlciA9
IGFwYWNoZV9odHRwX3NlcnZlci5MYXlvdXRUZXN0QXBhY2hlSHR0cGQoc2VsZiwgc2VsZi5yZXN1
bHRzX2RpcmVjdG9yeSgpKQorICAgICAgICAgICAgc2VydmVyID0gYXBhY2hlX2h0dHBfc2VydmVy
LkxheW91dFRlc3RBcGFjaGVIdHRwZChzZWxmLCBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCksIGFk
ZGl0aW9uYWxfZGlycz1hZGRpdGlvbmFsX2RpcnMpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBzZXJ2ZXIgPSBodHRwX3NlcnZlci5MaWdodHRwZChzZWxmLCBzZWxmLnJlc3VsdHNfZGlyZWN0
b3J5KCkpCisgICAgICAgICAgICBzZXJ2ZXIgPSBodHRwX3NlcnZlci5MaWdodHRwZChzZWxmLCBz
ZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCksIGFkZGl0aW9uYWxfZGlycz1hZGRpdGlvbmFsX2RpcnMp
CiAKICAgICAgICAgc2VydmVyLnN0YXJ0KCkKICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXIgPSBz
ZXJ2ZXIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW0ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bS5weQkocmV2aXNpb24gMTA3NTg4KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQkod29ya2luZyBjb3B5KQpAQCAt
NjYsNyArNjYsOCBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAgICAgICAgICgndmlzdGEn
LCAneDg2JyksCiAgICAgICAgICgnd2luNycsICd4ODYnKSwKICAgICAgICAgKCdsdWNpZCcsICd4
ODYnKSwKLSAgICAgICAgKCdsdWNpZCcsICd4ODZfNjQnKSkKKyAgICAgICAgKCdsdWNpZCcsICd4
ODZfNjQnKSwKKyAgICAgICAgKCdpY2VjcmVhbXNhbmR3aWNoJywgJ2FybScpKQogCiAgICAgQUxM
X0dSQVBISUNTX1RZUEVTID0gKCdjcHUnLCAnZ3B1JykKIApAQCAtODEsNiArODIsNyBAQCBjbGFz
cyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAgICAgICAgICdtYWMnOiBbJ2xlb3BhcmQnLCAnc25vd2xl
b3BhcmQnLCAnbGlvbiddLAogICAgICAgICAnd2luJzogWyd4cCcsICd2aXN0YScsICd3aW43J10s
CiAgICAgICAgICdsaW51eCc6IFsnbHVjaWQnXSwKKyAgICAgICAgJ2FuZHJvaWQnOiBbJ2ljZWNy
ZWFtc2FuZHdpY2gnXSwKICAgICB9CiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTU2NSw2ICs1Njcs
OCBAQCBjbGFzcyBDaHJvbWl1bURyaXZlcihEcml2ZXIpOgogCiAgICAgICAgICAgICBsaW5lLCBj
cmFzaCA9IHNlbGYuX3dyaXRlX2NvbW1hbmRfYW5kX3JlYWRfbGluZShpbnB1dD1Ob25lKQogCisg
ICAgICAgIGlmIGNyYXNoOgorICAgICAgICAgICAgZXJyb3IuYXBwZW5kKGxpbmUpCiAgICAgICAg
IHJ1bl90aW1lID0gdGltZS50aW1lKCkgLSBzdGFydF90aW1lCiAgICAgICAgIG91dHB1dF9pbWFn
ZSA9IHNlbGYuX291dHB1dF9pbWFnZV93aXRoX3JldHJ5KCkKIApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
YW5kcm9pZC5weQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
MzUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIkNocm9t
aXVtIEFuZHJvaWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBvcnQgaW50ZXJmYWNlLiIiIgorCitp
bXBvcnQgY29kZWNzCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitp
bXBvcnQgc2hsZXgKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQor
aW1wb3J0IHJlCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0
IEV4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgY2hyb21p
dW0KK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNocm9taXVtX2xpbnV4
Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBjaHJvbWl1bV9tYWMKK2Zy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkKK2Zyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IGh0dHBfc2VydmVyCisKKworX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCd3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5jaHJvbWl1bV9hbmRy
b2lkJykKKworCisjIFRoZSByb290IGRpcmVjdG9yeSBmb3IgdGVzdCByZXNvdXJjZXMsIHdoaWNo
IGhhcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgdGhlCisjIHNvdXJjZSByb290IGRpcmVjdG9yeSBv
ZiBDaHJvbWl1bS4KKyMgVGhpcyBwYXRoIGlzIGRlZmluZWQgaW4gYmFzZS9iYXNlX3BhdGhzX2Fu
ZHJvaWQuY2MgYW5kCisjIHdlYmtpdC9zdXBwb3J0L3BsYXRmb3JtX3N1cHBvcnRfYW5kcm9pZC5j
Yy4KK0RFVklDRV9TT1VSQ0VfUk9PVF9ESVIgPSAnL2RhdGEvbG9jYWwvdG1wLycKKworREVWSUNF
X0RSVF9ESVIgPSAnL2RhdGEvZHJ0LycKK0RFVklDRV9EUlRfUEFUSCA9IERFVklDRV9EUlRfRElS
ICsgJ0R1bXBSZW5kZXJUcmVlJworREVWSUNFX0RSVF9TVERFUlIgPSBERVZJQ0VfRFJUX0RJUiAr
ICdEdW1wUmVuZGVyVHJlZS5zdGRlcnInCitERVZJQ0VfRk9SV0FSREVSX1BBVEggPSBERVZJQ0Vf
RFJUX0RJUiArICdmb3J3YXJkZXInCitERVZJQ0VfRFJUX1NUQU1QX1BBVEggPSBERVZJQ0VfRFJU
X0RJUiArICdEdW1wUmVuZGVyVHJlZS5zdGFtcCcKKworIyBUaGlzIG9ubHkgd29ya3MgZm9yIHNp
bmdsZSBjb3JlIGRldmljZXMgc28gZmFyLgorIyBUT0RPKGpuZCk6IGZpbmQgYSBzb2x1dGlvbiBm
b2UgbXVsdGktY29yZSBkZXZpY2VzLgorU0NBTElOR19HT1ZFUk5PUiA9ICIvc3lzL2RldmljZXMv
c3lzdGVtL2NwdS9jcHUwL2NwdWZyZXEvc2NhbGluZ19nb3Zlcm5vciIKKworIyBOb3cgYWxsIHRl
c3QgY2FzZXMgYXJlIHN0aWxsIHNlcnZlZCB0byBEdW1wUmVuZGVyVHJlZSB0aHJvdWdoIGZpbGUg
cHJvdG9jb2wsCisjIHRoZW4gd2UgdXNlIGZpbGUtdG8taHR0cCBmZWF0dXJlIHRvIGJyaWRnZSB0
aGUgZmlsZSByZXF1ZXN0IHRvIGhvc3QncyBodHRwCisjIHNlcnZlciB0byBnZXQgdGhlIHJlYWwg
dGVzdCBmaWxlcyBhbmQgY29ycmVzcG9uZGluZyByZXNvdXJjZXMgdmlhIGZvcndhcmQuCitURVNU
X1BBVEhfUFJFRklYID0gJy9hbGwtdGVzdHMnCisKKyMgQWxsIHBvcnRzIHRoZSBBbmRyb2lkIGZv
cndhcmRlciB0byBmb3J3YXJkLgorIyA4MDAwLCA4MDgwIGFuZCA4NDQzIGFyZSBmb3IgaHR0cC9o
dHRwcyB0ZXN0cy4KKyMgODg4MCBhbmQgOTMyMyBhcmUgZm9yIHdlYnNvY2tldCB0ZXN0cworIyAo
c2VlIGh0dHBfc2VydmVyLnB5LCBhcGFjaGVfaHR0cF9zZXJ2ZXIucHkgYW5kIHdlYnNvY2tldF9z
ZXJ2ZXIucHkpLgorRk9SV0FSRF9QT1JUUyA9ICc4MDAwIDgwODAgODQ0MyA4ODgwIDkzMjMnCisK
K01TX1RSVUVUWVBFX0ZPTlRTX0RJUiA9ICcvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRj
b3JlZm9udHMvJworCisjIExpc3Qgb2YgZm9udHMgdGhhdCBsYXlvdXQgdGVzdHMgZXhwZWN0LCBj
b3BpZWQgZnJvbSBEdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFNoZWxsR3RrLmNwcC4KK0hPU1RfRk9O
VF9GSUxFUyA9IFsKKyAgICBbTVNfVFJVRVRZUEVfRk9OVFNfRElSLCAnQXJpYWwudHRmJ10sCisg
ICAgW01TX1RSVUVUWVBFX0ZPTlRTX0RJUiwgJ0FyaWFsX0JvbGQudHRmJ10sCisgICAgW01TX1RS
VUVUWVBFX0ZPTlRTX0RJUiwgJ0FyaWFsX0JvbGRfSXRhbGljLnR0ZiddLAorICAgIFtNU19UUlVF
VFlQRV9GT05UU19ESVIsICdBcmlhbF9JdGFsaWMudHRmJ10sCisgICAgW01TX1RSVUVUWVBFX0ZP
TlRTX0RJUiwgJ0NvbWljX1NhbnNfTVMudHRmJ10sCisgICAgW01TX1RSVUVUWVBFX0ZPTlRTX0RJ
UiwgJ0NvbWljX1NhbnNfTVNfQm9sZC50dGYnXSwKKyAgICBbTVNfVFJVRVRZUEVfRk9OVFNfRElS
LCAnQ291cmllcl9OZXcudHRmJ10sCisgICAgW01TX1RSVUVUWVBFX0ZPTlRTX0RJUiwgJ0NvdXJp
ZXJfTmV3X0JvbGQudHRmJ10sCisgICAgW01TX1RSVUVUWVBFX0ZPTlRTX0RJUiwgJ0NvdXJpZXJf
TmV3X0JvbGRfSXRhbGljLnR0ZiddLAorICAgIFtNU19UUlVFVFlQRV9GT05UU19ESVIsICdDb3Vy
aWVyX05ld19JdGFsaWMudHRmJ10sCisgICAgW01TX1RSVUVUWVBFX0ZPTlRTX0RJUiwgJ0dlb3Jn
aWEudHRmJ10sCisgICAgW01TX1RSVUVUWVBFX0ZPTlRTX0RJUiwgJ0dlb3JnaWFfQm9sZC50dGYn
XSwKKyAgICBbTVNfVFJVRVRZUEVfRk9OVFNfRElSLCAnR2VvcmdpYV9Cb2xkX0l0YWxpYy50dGYn
XSwKKyAgICBbTVNfVFJVRVRZUEVfRk9OVFNfRElSLCAnR2VvcmdpYV9JdGFsaWMudHRmJ10sCisg
ICAgW01TX1RSVUVUWVBFX0ZPTlRTX0RJUiwgJ0ltcGFjdC50dGYnXSwKKyAgICBbTVNfVFJVRVRZ
UEVfRk9OVFNfRElSLCAnVHJlYnVjaGV0X01TLnR0ZiddLAorICAgIFtNU19UUlVFVFlQRV9GT05U
U19ESVIsICdUcmVidWNoZXRfTVNfQm9sZC50dGYnXSwKKyAgICBbTVNfVFJVRVRZUEVfRk9OVFNf
RElSLCAnVHJlYnVjaGV0X01TX0JvbGRfSXRhbGljLnR0ZiddLAorICAgIFtNU19UUlVFVFlQRV9G
T05UU19ESVIsICdUcmVidWNoZXRfTVNfSXRhbGljLnR0ZiddLAorICAgIFtNU19UUlVFVFlQRV9G
T05UU19ESVIsICdUaW1lc19OZXdfUm9tYW4udHRmJ10sCisgICAgW01TX1RSVUVUWVBFX0ZPTlRT
X0RJUiwgJ1RpbWVzX05ld19Sb21hbl9Cb2xkLnR0ZiddLAorICAgIFtNU19UUlVFVFlQRV9GT05U
U19ESVIsICdUaW1lc19OZXdfUm9tYW5fQm9sZF9JdGFsaWMudHRmJ10sCisgICAgW01TX1RSVUVU
WVBFX0ZPTlRTX0RJUiwgJ1RpbWVzX05ld19Sb21hbl9JdGFsaWMudHRmJ10sCisgICAgW01TX1RS
VUVUWVBFX0ZPTlRTX0RJUiwgJ1ZlcmRhbmEudHRmJ10sCisgICAgW01TX1RSVUVUWVBFX0ZPTlRT
X0RJUiwgJ1ZlcmRhbmFfQm9sZC50dGYnXSwKKyAgICBbTVNfVFJVRVRZUEVfRk9OVFNfRElSLCAn
VmVyZGFuYV9Cb2xkX0l0YWxpYy50dGYnXSwKKyAgICBbTVNfVFJVRVRZUEVfRk9OVFNfRElSLCAn
VmVyZGFuYV9JdGFsaWMudHRmJ10sCisgICAgIyBUaGUgTWljcm9zb2Z0IGZvbnQgRVVMQQorICAg
IFsnL3Vzci9zaGFyZS9kb2MvdHRmLW1zY29yZWZvbnRzLWluc3RhbGxlci8nLCAnUkVBRF9NRSEu
Z3onXSwKKyAgICBbJy91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLWRlamF2dS8nLCAnRGVq
YVZ1U2Fucy50dGYnXSwKK10KKyMgU2hvdWxkIGluY3JlYXNlIHRoaXMgdmVyc2lvbiBhZnRlciBj
aGFuZ2luZyBIT1NUX0ZPTlRfRklMRVMuCitGT05UX0ZJTEVTX1ZFUlNJT04gPSAxCisKK0RFVklD
RV9GT05UU19ESVIgPSBERVZJQ0VfRFJUX0RJUiArICdmb250cy8nCitERVZJQ0VfRklSU1RfRkFM
TEJBQ0tfRk9OVCA9ICcvc3lzdGVtL2ZvbnRzL0Ryb2lkTmFza2gtUmVndWxhci50dGYnCisKKyMg
VGhlIGxheW91dCB0ZXN0cyBkaXJlY3Rvcnkgb24gZGV2aWNlLCB3aGljaCBoYXMgdHdvIHVzYWdl
czoKKyMgMS4gYXMgYSB2aXJ0dWFsIHBhdGggaW4gZmlsZSB1cmxzIHRoYXQgd2lsbCBiZSBicmlk
Z2VkIHRvIEhUVFAuCisjIDIuIHBvaW50aW5nIHRvIHNvbWUgZmlsZXMgdGhhdCBhcmUgcHVzaGVk
IHRvIHRoZSBkZXZpY2UgZm9yIHRlc3RzIHRoYXQKKyMgZG9uJ3Qgd29yayBvbiBmaWxlLW92ZXIt
aHR0cCAoZS5nLiBibG9iIHByb3RvY29sIHRlc3RzKS4KK0RFVklDRV9MQVlPVVRfVEVTVFNfRElS
ID0gKERFVklDRV9TT1VSQ0VfUk9PVF9ESVIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy8nKQorRklMRV9URVNUX1VSSV9QUkVGSVgg
PSAnZmlsZTovLycgKyBERVZJQ0VfTEFZT1VUX1RFU1RTX0RJUgorCisjIFRlc3QgcmVzb3VyY2Vz
IHRoYXQgbmVlZCB0byBiZSBhY2Nlc3NlZCBhcyBmaWxlcyBkaXJlY3RseS4KKyMgRWFjaCBpdGVt
IGNhbiBiZSB0aGUgcmVsYXRpdmUgcGF0aCBvZiBhIGRpcmVjdG9yeSBvciBhIGZpbGUuCitURVNU
X1JFU09VUkNFU19UT19QVVNIID0gWworICAgICMgQmxvYiB0ZXN0cyBuZWVkIHRvIGFjY2VzcyBm
aWxlcyBkaXJlY3RseS4KKyAgICAnZWRpdGluZy9wYXN0ZWJvYXJkL3Jlc291cmNlcycsCisgICAg
J2Zhc3QvZmlsZXMvcmVzb3VyY2VzJywKKyAgICAnaHR0cC90ZXN0cy9sb2NhbC9yZXNvdXJjZXMn
LAorICAgICdodHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRhL3Jlc291cmNlcycsCisgICAgIyBVc2Vy
IHN0eWxlIFVSTHMgYXJlIGFjY2Vzc2VkIGFzIGxvY2FsIGZpbGVzIGluIHdlYmtpdF9zdXBwb3J0
LgorICAgICdodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jc3NTdHlsZS5jc3MnLAorICAg
ICMgTWVkaWEgdGVzdHMgbmVlZCB0byBhY2Nlc3MgYXVkaW8vdmlkZW8gYXMgZmlsZXMuCisgICAg
J21lZGlhL2NvbnRlbnQnLAorICAgICdjb21wb3NpdGluZy9yZXNvdXJjZXMvdmlkZW8ubXA0JywK
K10KKworCitjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6
CisgICAgIiIiQ2hyb21pdW0gQW5kcm9pZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBjbGFz
cy4iIiIKKworICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1hbmRyb2lkJworCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpOgorICAgICAgICBjaHJvbWl1
bS5DaHJvbWl1bVBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncykK
KworICAgICAgICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gJ2FuZHJvaWQnCisgICAgICAgIHNl
bGYuX3ZlcnNpb24gPSAnaWNlY3JlYW1zYW5kd2ljaCcKKyAgICAgICAgIyBUT0RPOiB3ZSBtYXkg
c3VwcG9ydCBvdGhlciBhcmNoaXRlY3R1cmVzIGluIHRoZSBmdXR1cmUuCisgICAgICAgIHNlbGYu
X2FyY2hpdGVjdHVyZSA9ICdhcm0nCisgICAgICAgIHNlbGYuX29yaWdpbmFsX2dvdmVybm9yID0g
Tm9uZQorICAgICAgICBzZWxmLl9hbmRyb2lkX2Jhc2VfZGlyID0gTm9uZQorCisgICAgICAgIGlm
IHN5cy5wbGF0Zm9ybSA9PSAnbGludXgyJzoKKyAgICAgICAgICAgIHNlbGYuX2hvc3RfcGxhdGZv
cm0gPSAnbGludXgnCisgICAgICAgICAgICBzZWxmLl9ob3N0X3BvcnQgPSBmYWN0b3J5LlBvcnRG
YWN0b3J5KGhvc3QpLmdldCgKKyAgICAgICAgICAgICAgICBjaHJvbWl1bV9saW51eC5DaHJvbWl1
bUxpbnV4UG9ydC5wb3J0X25hbWUsICoqa3dhcmdzKQorICAgICAgICBlbGlmIHN5cy5wbGF0Zm9y
bSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgICMgVE9ETyh3YW5neGlhbnpodSk6IFRlc3QgdGhp
cyBwbGF0Zm9ybS4KKyAgICAgICAgICAgIHNlbGYuX2hvc3RfcGxhdGZvcm0gPSAnbWFjJworICAg
ICAgICAgICAgc2VsZi5faG9zdF9wb3J0ID0gZmFjdG9yeS5Qb3J0RmFjdG9yeShob3N0KS5nZXQo
CisgICAgICAgICAgICAgICAgY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC5wb3J0X25hbWUs
ICoqa3dhcmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBUT0RPOiBTdXBwb3J0IG90
aGVyIGhvc3QgcGxhdGZvcm1zLgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ1Vu
c3VwcG9ydGVkIGhvc3QgcGxhdGZvcm0gJXMnICUgc3lzLnBsYXRmb3JtKQorCisgICAgICAgIHNl
bGYuX2FkYl9jb21tYW5kID0gWydhZGInXQorICAgICAgICBhZGJfYXJncyA9IHNlbGYuZ2V0X29w
dGlvbignYWRiX2FyZ3MnKQorICAgICAgICBpZiBhZGJfYXJnczoKKyAgICAgICAgICAgIHNlbGYu
X2FkYl9jb21tYW5kICs9IHNobGV4LnNwbGl0KGFkYl9hcmdzKQorCisgICAgZGVmIGRlZmF1bHRf
Y2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gMQorCisgICAgZGVmIGJhc2Vs
aW5lX3NlYXJjaF9wYXRoKHNlbGYpOgorICAgICAgICByZXR1cm4gKG1hcChzZWxmLl93ZWJraXRf
YmFzZWxpbmVfcGF0aCwgWydjaHJvbWl1bS1hbmRyb2lkJ10pICsKKyAgICAgICAgICAgICAgICBz
ZWxmLl9ob3N0X3BvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKSkKKworICAgIGRlZiBjaGVja19i
dWlsZChzZWxmLCBuZWVkc19odHRwKToKKyAgICAgICAgZm9yIChmb250X2RpciwgZm9udF9maWxl
KSBpbiBIT1NUX0ZPTlRfRklMRVM6CisgICAgICAgICAgICBmb250X3BhdGggPSBmb250X2RpciAr
IGZvbnRfZmlsZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NoZWNrX2ZpbGVfZXhpc3RzKGZv
bnRfcGF0aCwgJ2ZvbnQgZmlsZScpOgorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1lvdSBh
cmUgbWlzc2luZyAlcy4gVHJ5IGluc3RhbGxpbmcgbXN0dGNvcmVmb250cy4gJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ1NlZSBidWlsZCBpbnN0cnVjdGlvbnMuJyAlIGZvbnRfcGF0aCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3Rf
cG9ydC5jaGVja19idWlsZChuZWVkc19odHRwKQorCisgICAgZGVmIGNoZWNrX3N5c19kZXBzKHNl
bGYsIG5lZWRzX2h0dHApOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGRlZmF1bHRf
d29ya2VyX21vZGVsKHNlbGYpOgorICAgICAgICByZXR1cm4gJ2lubGluZScKKworICAgIGRlZiB0
ZXN0X3BsYXRmb3JtX25hbWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gY2hyb21pdW0uQ2hyb21p
dW1Qb3J0LnRlc3RfcGxhdGZvcm1fbmFtZXMoc2VsZikgKyAoJ2FuZHJvaWQnLCkKKworICAgIGRl
ZiB0ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKKyAgICAgICAgIyBBdXRvbWF0aWNhbGx5IGFwcGx5
IGFsbCBleHBlY3RhdGlvbiBydWxlcyBvZiBjaHJvbWl1bS1saW51eCB0bworICAgICAgICAjIGNo
cm9taXVtLWFuZHJvaWQuCisgICAgICAgICMgRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3JhcnkgbWVh
c3VyZSB0byByZWR1Y2UgdGhlIG1hbnVhbCB3b3JrIHdoZW4KKyAgICAgICAgIyB1cGRhdGluZyBX
ZWJLaXQuIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2UgbWVyZ2UKKyAgICAg
ICAgIyB0ZXN0X2V4cGVjdGF0aW9uc19hbmRyb2lkLnR4dCBpbnRvIHRlc3RfZXhwZWN0YXRpb25z
LnR4dC4KKyAgICAgICAgZXhwZWN0YXRpb25zID0gY2hyb21pdW0uQ2hyb21pdW1Qb3J0LnRlc3Rf
ZXhwZWN0YXRpb25zKHNlbGYpCisgICAgICAgIHJldHVybiBleHBlY3RhdGlvbnMucmVwbGFjZSgn
TElOVVggJywgJ0xJTlVYIEFORFJPSUQgJykKKworICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19v
dmVycmlkZXMoc2VsZik6CisgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQg
d2hlbiB3ZSB1cHN0cmVhbSB0aGUgY2hyb21lIGFuZHJvaWQKKyAgICAgICAgIyBwb3J0IHRvIHdl
YmtpdCBhbmQgbWVyZ2UgdGhlIGNocm9tZSBhbmRyb2lkIHBvcnQncyBzcGVjaWZpYyB0ZXN0Cisg
ICAgICAgICMgZXhwZWN0YXRpb25zIHRvIExheW91dFRlc3RzL3BsYXRmcm9tL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dC4KKyAgICAgICAgIyBXZSBkb24ndCBuZWVkIHRoZSBleHBlY3Rh
dGlvbi50eHQgdW5kZXIgd2Via2l0L3Rvb2xzL2xheW91dF90ZXN0cy4KKyAgICAgICAgYW5kcm9p
ZF9leHBlY3RhdGlvbnNfcGF0aCA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRU
ZXN0cycsCisgICAgICAgICAgICAncGxhdGZvcm0nLCAnY2hyb21pdW0nLCAndGVzdF9leHBlY3Rh
dGlvbnNfYW5kcm9pZC50eHQnKQorICAgICAgICBhbmRyb2lkX292ZXJyaWRlcyA9IHNlbGYuX2Zp
bGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoYW5kcm9pZF9leHBlY3RhdGlvbnNfcGF0aCkKKworICAg
ICAgICAjIEEgdHJpY2sgdGhhdCBhcHBlbmRzIGNocm9taXVtJ3Mgb3ZlcnJpZGVzIHRvIGFuZHJv
aWQncy4gTm90ZSB3ZSBtdXN0CisgICAgICAgICMgcmVtb3ZlIGFueSBkdXBsaWNhdGUgZXhwZWN0
YXRpb24gYmV0d2VlbiBjaHJvbWl1bSdzIGFuZCBhbmRyb2lkJ3MKKyAgICAgICAgIyBoZXJlLCBv
dGhlcndpc2UgdGhlcmUgd2lsbCBiZSBQYXJzZUVycm9yIHdoZW4gcGFyc2luZyBvdmVycmlkZXMu
CisgICAgICAgIGNocm9taXVtX292ZXJyaWRlcyA9IGNocm9taXVtLkNocm9taXVtUG9ydC50ZXN0
X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZikKKyAgICAgICAgaWYgY2hyb21pdW1fb3ZlcnJp
ZGVzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBjaHJvbWl1bSdz
IG92ZXJyaWRlcyB3aWxsIHN0YXJ0IG9uIG5ldyBsaW5lLgorICAgICAgICAgICAgYW5kcm9pZF9v
dmVycmlkZXMgKz0gJ1xuJworCisgICAgICAgICAgICAjIEFkZCBhbGwgcGF0aCBvZiBhbmRyb2lk
IG92ZXJyaWRlcyBpbnRvIGEgc2V0LgorICAgICAgICAgICAgdGVzdF9wYXR0ZXJuID0gcmUuY29t
cGlsZSgnOiAoLiopID0nKQorICAgICAgICAgICAgYW5kcm9pZF90ZXN0c19zZXQgPSBzZXQoKQor
ICAgICAgICAgICAgZm9yIG8gaW4gYW5kcm9pZF9vdmVycmlkZXMuc3BsaXQoJ1xuJyk6CisgICAg
ICAgICAgICAgICAgbSA9IHRlc3RfcGF0dGVybi5zZWFyY2gobykKKyAgICAgICAgICAgICAgICBp
ZiBtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkX3Rlc3RzX3NldC5h
ZGQobS5ncm91cCgxKSkKKworICAgICAgICAgICAgIyBBcHBlbmQgY2hyb21pdW0ncyBvdmVycmlk
ZXMgd2hpY2ggZG8gbm90IG1hdGNoIGFueSBhbmRyb2lkJ3MuCisgICAgICAgICAgICBmb3IgbyBp
biBjaHJvbWl1bV9vdmVycmlkZXMuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICAgICAgbSA9IHRl
c3RfcGF0dGVybi5zZWFyY2gobykKKyAgICAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgICAgICAgICBpZiBtLmdyb3VwKDEpIGluIGFuZHJvaWRfdGVzdHNfc2V0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdDb25mbGljdCBleHBlY3RhdGlv
biBbJXNdIGlzIHJlbW92ZWQnICUgbykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZHJvaWRfb3ZlcnJpZGVzICs9IG8ucmVwbGFjZSgnTElOVVgg
JywgJ0xJTlVYIEFORFJPSUQgJykgKyAnXG4nCisgICAgICAgIHJldHVybiBhbmRyb2lkX292ZXJy
aWRlcworCisgICAgZGVmIHN0YXJ0X2h0dHBfc2VydmVyKHNlbGYsIGFkZGl0aW9uYWxfZGlycz1O
b25lKToKKyAgICAgICAgIyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgZHVtcF9yZW5kZXJfdHJl
ZV90aHJlYWQucHkgYmVmb3JlIHRlc3RpbmcKKyAgICAgICAgIyBodHRwIGFuZCB3ZWJzb2NrZXQg
dGVzdHMuIEhvd2V2ZXIsIG91ciBodHRwIHNlcnZlciBydW5zIGR1cmluZyB0aGUKKyAgICAgICAg
IyB3aG9sZSB0ZXN0aW5nIHBlcmlvZCwgc28gaWdub3JlIHRoaXMgY2FsbC4KKyAgICAgICAgcGFz
cworCisgICAgZGVmIHN0b3BfaHR0cF9zZXJ2ZXIoc2VsZik6CisgICAgICAgICMgU2FtZSBhcyBz
dGFydF9odHRwX3NlcnZlcigpLgorICAgICAgICBwYXNzCisKKyAgICBkZWYgc3RhcnRfaGVscGVy
KHNlbGYpOgorICAgICAgICBzZWxmLl9zZXR1cF9wZXJmb3JtYW5jZSgpCisgICAgICAgICMgUmVx
dWlyZWQgYnkgd2Via2l0X3N1cHBvcnQ6OkdldFdlYktpdFJvb3REaXJGaWxlUGF0aCgpLgorICAg
ICAgICAjIE90aGVyIGRpcmVjdG9yaWVzIHdpbGwgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGJ5
IGFkYiBwdXNoLgorICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdta2Rp
cicsICctcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVWSUNFX1NPVVJDRV9S
T09UX0RJUiArICdjaHJvbWUnXSkKKworICAgICAgICBzZWxmLl9wdXNoX2V4ZWN1dGFibGUoKQor
ICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkKKyAgICAgICAgc2VsZi5fc2V0dXBfc3lzdGVtX2Zv
bnRfZm9yX3Rlc3QoKQorICAgICAgICBzZWxmLl9zeW5jaHJvbml6ZV9kYXRldGltZSgpCisKKyAg
ICAgICAgIyBTdGFydCB0aGUgSFRUUCBzZXJ2ZXIgZm9yIGRldmljZSB0byBhY2Nlc3MgdGVzdCBj
YXNlcy4KKyAgICAgICAgY2hyb21pdW0uQ2hyb21pdW1Qb3J0LnN0YXJ0X2h0dHBfc2VydmVyKAor
ICAgICAgICAgICAgc2VsZiwgYWRkaXRpb25hbF9kaXJzPXtURVNUX1BBVEhfUFJFRklYOiBzZWxm
LmxheW91dF90ZXN0c19kaXIoKX0pCisKKyAgICAgICAgIyBmb3J3YXJkZXIgd2lsbCBmb3JrIGEg
Y2hpbGQgcHJvY2VzcyBhbmQgbm90IGJsb2NrIHRoZSBjb21tYW5kLgorICAgICAgICBfbG9nLmRl
YnVnKCdTdGFydGluZyBmb3J3YXJkZXInKQorICAgICAgICBjbWQgPSBzZWxmLl9ydW5fYWRiX2Nv
bW1hbmQoWydzaGVsbCcsCisgICAgICAgICAgICAgICAgJyVzICVzJyAlIChERVZJQ0VfRk9SV0FS
REVSX1BBVEgsIEZPUldBUkRfUE9SVFMpXSkKKworICAgIGRlZiBzdG9wX2hlbHBlcihzZWxmKToK
KyAgICAgICAgc2VsZi5fcmVzdG9yZV9zeXN0ZW1fZm9udCgpCisgICAgICAgICMgTGVhdmUgdGhl
IGZvcndhcmRlciBhbmQgdGVzdHMgaHR0cGQgc2VydmVyIHRoZXJlIGJlY2F1c2UgdGhleSBhcmUK
KyAgICAgICAgIyB1c2VmdWwgZm9yIGRlYnVnZ2luZyBhbmQgZG8gbm8gaGFybSB0byBzdWJzZXF1
ZW50IHRlc3RzLgorICAgICAgICBzZWxmLl90ZWFyZG93bl9wZXJmb3JtYW5jZSgpCisKKyAgICBk
ZWYgcGF0aF9mcm9tX2FuZHJvaWRfYmFzZShzZWxmLCAqY29tcHMpOgorICAgICAgICAiIiJSZXR1
cm5zIHRoZSBmdWxsIHBhdGggdG8gcGF0aCBtYWRlIGJ5IGpvaW5pbmcgdGhlIHRvcCBvZiB0aGUK
KyAgICAgICAgQW5kcm9pZCBzb3VyY2UgdHJlZSBhbmQgdGhlIGxpc3Qgb2YgcGF0aCBjb21wb25l
bnRzIGluIHwqY29tcHN8LiIiIgorICAgICAgICBpZiBub3Qgc2VsZi5fYW5kcm9pZF9iYXNlX2Rp
cjoKKyAgICAgICAgICAgIGFic3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgoX19maWxl
X18pCisgICAgICAgICAgICBvZmZzZXQgPSBhYnNwYXRoLmZpbmQoJ2V4dGVybmFsJykKKyAgICAg
ICAgICAgIGlmIG9mZnNldCA9PSAtMToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAg
ICAgICAgICAgc2VsZi5fYW5kcm9pZF9iYXNlX2RpciA9IGFic3BhdGhbMDpvZmZzZXRdCisgICAg
ICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fYW5kcm9pZF9iYXNlX2Rpciwg
KmNvbXBzKQorCisgICAgIworICAgICMgUFJPVEVDVEVEIE1FVEhPRFMKKyAgICAjCisKKyAgICBk
ZWYgX2J1aWxkX3BhdGgoc2VsZiwgKmNvbXBzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3Rf
cG9ydC5fYnVpbGRfcGF0aCgqY29tcHMpCisKKyAgICBkZWYgX3BhdGhfdG9fYXBhY2hlKHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi5faG9zdF9wb3J0Ll9wYXRoX3RvX2FwYWNoZSgpCisKKyAg
ICBkZWYgX3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5faG9zdF9wb3J0Ll9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSgpCisKKyAgICBkZWYg
X3BhdGhfdG9fZHJpdmVyKHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSk6CisgICAgICAgICMgUmV0
dXJucyB0aGUgaG9zdCBwYXRoIHRvIGRyaXZlciB3aGljaCB3aWxsIGJlIHB1c2hlZCB0byB0aGUg
ZGV2aWNlLgorICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbjoKKyAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb24gPSBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKQorICAgICAgICByZXR1
cm4gc2VsZi5fYnVpbGRfcGF0aChjb25maWd1cmF0aW9uLCAnRHVtcFJlbmRlclRyZWUnKQorCisg
ICAgZGVmIF9wYXRoX3RvX2hlbHBlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxk
X3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdmb3J3YXJkZXInKQorCisg
ICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9o
b3N0X3BvcnQuX3BhdGhfdG9faW1hZ2VfZGlmZigpCisKKyAgICBkZWYgX3BhdGhfdG9fbGlnaHR0
cGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9ob3N0X3BvcnQuX3BhdGhfdG9fbGlnaHR0
cGQoKQorCisgICAgZGVmIF9wYXRoX3RvX2xpZ2h0dHBkX21vZHVsZXMoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLl9ob3N0X3BvcnQuX3BhdGhfdG9fbGlnaHR0cGRfbW9kdWxlcygpCisKKyAg
ICBkZWYgX3BhdGhfdG9fbGlnaHR0cGRfcGhwKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5f
aG9zdF9wb3J0Ll9wYXRoX3RvX2xpZ2h0dHBkX3BocCgpCisKKyAgICBkZWYgX3BhdGhfdG9fd2Rp
ZmYoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9ob3N0X3BvcnQuX3BhdGhfdG9fd2RpZmYo
KQorCisgICAgZGVmIF9zaHV0X2Rvd25faHR0cF9zZXJ2ZXIoc2VsZiwgcGlkKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5fc2h1dF9kb3duX2h0dHBfc2VydmVyKHBpZCkKKworICAg
IGRlZiBfZHJpdmVyX2NsYXNzKHNlbGYpOgorICAgICAgICByZXR1cm4gQ2hyb21pdW1BbmRyb2lk
RHJpdmVyCisKKyAgICBkZWYgX3B1c2hfZXhlY3V0YWJsZShzZWxmKToKKyAgICAgICAgZHJ0X2hv
c3RfcGF0aCA9IHNlbGYuX3BhdGhfdG9fZHJpdmVyKCkKKyAgICAgICAgZm9yd2FyZGVyX2hvc3Rf
cGF0aCA9IHNlbGYuX3BhdGhfdG9faGVscGVyKCkKKyAgICAgICAgZHJ0X2phcl9ob3N0X3BhdGgg
PSBkcnRfaG9zdF9wYXRoICsgJy5qYXInCisgICAgICAgIGhvc3Rfc3RhbXAgPSBpbnQoZmxvYXQo
bWF4KG9zLnN0YXQoZHJ0X2hvc3RfcGF0aCkuc3RfbXRpbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9zLnN0YXQoZm9yd2FyZGVyX2hvc3RfcGF0aCkuc3RfbXRpbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQoZHJ0X2phcl9ob3N0X3Bh
dGgpLnN0X210aW1lKSkpCisgICAgICAgIGRldmljZV9zdGFtcCA9IGludChmbG9hdChzZWxmLl9y
dW5fYWRiX2NvbW1hbmQoCisgICAgICAgICAgICBbJ3NoZWxsJywgJ2NhdCAlcyAyPi9kZXYvbnVs
bCB8fCBlY2hvIDAnICUgREVWSUNFX0RSVF9TVEFNUF9QQVRIXSkpKQorICAgICAgICBpZiBkZXZp
Y2Vfc3RhbXAgPCBob3N0X3N0YW1wOgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygnUHVzaGluZyBl
eGVjdXRhYmxlJykKKyAgICAgICAgICAgIHNlbGYuX2tpbGxfZGV2aWNlX3Byb2Nlc3MoREVWSUNF
X0ZPUldBUkRFUl9QQVRIKQorICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2UoZm9yd2Fy
ZGVyX2hvc3RfcGF0aCwgREVWSUNFX0ZPUldBUkRFUl9QQVRIKQorICAgICAgICAgICAgc2VsZi5f
cHVzaF90b19kZXZpY2UoZHJ0X2hvc3RfcGF0aCwgREVWSUNFX0RSVF9QQVRIKQorICAgICAgICAg
ICAgc2VsZi5fcHVzaF90b19kZXZpY2UoZHJ0X2hvc3RfcGF0aCArICcucGFrJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERFVklDRV9EUlRfUEFUSCArICcucGFrJykKKyAgICAg
ICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGRydF9ob3N0X3BhdGggKyAnX3Jlc291cmNlcycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZJQ0VfRFJUX1BBVEggKyAnX3Jl
c291cmNlcycpCisgICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShkcnRfamFyX2hvc3Rf
cGF0aCwgREVWSUNFX0RSVF9QQVRIICsgJy5qYXInKQorICAgICAgICAgICAgIyBWZXJzaW9uIGNv
bnRyb2wgb2YgdGVzdCByZXNvdXJjZXMgaXMgZGVwZW5kZW50IG9uIGV4ZWN1dGFibGVzLAorICAg
ICAgICAgICAgIyBiZWNhdXNlIHdlIHdpbGwgYWx3YXlzIHJlYnVpbGQgZXhlY3V0YWJsZXMgd2hl
biByZXNvdXJjZXMgYXJlCisgICAgICAgICAgICAjIHVwZGF0ZWQuCisgICAgICAgICAgICBzZWxm
Ll9wdXNoX3Rlc3RfcmVzb3VyY2VzKCkKKyAgICAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFu
ZCgKKyAgICAgICAgICAgICAgICBbJ3NoZWxsJywgJ2VjaG8gJWQgPiVzJyAlIChob3N0X3N0YW1w
LCBERVZJQ0VfRFJUX1NUQU1QX1BBVEgpXSkKKworICAgIGRlZiBfcHVzaF9mb250cyhzZWxmKToK
KyAgICAgICAgaWYgbm90IHNlbGYuX2NoZWNrX3ZlcnNpb24oREVWSUNFX0ZPTlRTX0RJUiwgRk9O
VF9GSUxFU19WRVJTSU9OKToKKyAgICAgICAgICAgIF9sb2cuZGVidWcoJ1B1c2hpbmcgZm9udHMn
KQorICAgICAgICAgICAgcGF0aF90b19haGVtX2ZvbnQgPSBzZWxmLl9idWlsZF9wYXRoKAorICAg
ICAgICAgICAgICAgIHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCAnQUhFTV9fX18u
VFRGJykKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHBhdGhfdG9fYWhlbV9mb250
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVWSUNFX0ZPTlRTX0RJUiArICdB
SEVNX19fXy5UVEYnKQorICAgICAgICAgICAgZm9yIChob3N0X2RpciwgZm9udF9maWxlKSBpbiBI
T1NUX0ZPTlRfRklMRVM6CisgICAgICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2UoaG9z
dF9kaXIgKyBmb250X2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
REVWSUNFX0ZPTlRTX0RJUiArIGZvbnRfZmlsZSkKKyAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV92
ZXJzaW9uKERFVklDRV9GT05UU19ESVIsIEZPTlRfRklMRVNfVkVSU0lPTikKKworICAgIGRlZiBf
c2V0dXBfc3lzdGVtX2ZvbnRfZm9yX3Rlc3Qoc2VsZik6CisgICAgICAgICMgVGhlIERlamFWdSBm
b250IGltcGxpY2l0bHkgdXNlZCBieSBzb21lIENTUyAyLjEgdGVzdHMgc2hvdWxkIGJlIGFkZGVk
CisgICAgICAgICMgaW50byB0aGUgZm9udCBmYWxsYmFjayBsaXN0IG9mIHRoZSBzeXN0ZW0uIERy
b2lkTmFza2gtUmVndWxhci50dGYgaXMKKyAgICAgICAgIyB0aGUgZmlyc3QgZm9udCBpbiBBbmRy
b2lkIFNraWEncyBmb250IGZhbGxiYWNrIGxpc3QuIEZvcnR1bmF0ZWx5IHRoZQorICAgICAgICAj
IERlamFWdSBmb250IGFsc28gY29udGFpbnMgTmFza2ggZ2x5cGhzLgorICAgICAgICAjIEZpcnN0
IHJlbW91bnQgL3N5c3RlbSBpbiByZWFkL3dyaXRlIG1vZGUuCisgICAgICAgIHNlbGYuX3J1bl9h
ZGJfY29tbWFuZChbJ3JlbW91bnQnXSkKKyAgICAgICAgc2VsZi5fY29weV9kZXZpY2VfZmlsZShE
RVZJQ0VfRk9OVFNfRElSICsgJ0RlamFWdVNhbnMudHRmJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBERVZJQ0VfRklSU1RfRkFMTEJBQ0tfRk9OVCkKKworICAgIGRlZiBfcmVzdG9y
ZV9zeXN0ZW1fZm9udChzZWxmKToKKyAgICAgICAgIyBGaXJzdCByZW1vdW50IC9zeXN0ZW0gaW4g
cmVhZC93cml0ZSBtb2RlLgorICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydyZW1vdW50
J10pCisgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKG9zLmVudmlyb25bJ09VVCddICsgREVW
SUNFX0ZJUlNUX0ZBTExCQUNLX0ZPTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERF
VklDRV9GSVJTVF9GQUxMQkFDS19GT05UKQorCisgICAgZGVmIF9wdXNoX3Rlc3RfcmVzb3VyY2Vz
KHNlbGYpOgorICAgICAgICBfbG9nLmRlYnVnKCdQdXNoaW5nIHRlc3QgcmVzb3VyY2VzJykKKyAg
ICAgICAgZm9yIHJlc291cmNlIGluIFRFU1RfUkVTT1VSQ0VTX1RPX1BVU0g6CisgICAgICAgICAg
ICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLmxheW91dF90ZXN0c19kaXIoKSArICcvJyArIHJl
c291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVWSUNFX0xBWU9VVF9U
RVNUU19ESVIgKyByZXNvdXJjZSkKKworICAgIGRlZiBfc3luY2hyb25pemVfZGF0ZXRpbWUoc2Vs
Zik6CisgICAgICAgICMgVGhlIGRhdGUvdGltZSBiZXR3ZWVuIGhvc3QgYW5kIGRldmljZSBtYXkg
bm90IGJlIHN5bmNocm9uaXplZC4KKyAgICAgICAgIyBXZSBuZWVkIHRvIG1ha2UgdGhlbSBzeW5j
aHJvbml6ZWQsIG90aGVyd2lzZSB0ZXN0IG1heSBmYWlsLgorICAgICAgICB0cnk6CisgICAgICAg
ICAgICAjIEdldCBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDLgorICAgICAg
ICAgICAgaG9zdF9kYXRldGltZSA9IG9zLnBvcGVuKCdkYXRlIC11ICslcycpLnJlYWQoKQorICAg
ICAgICBleGNlcHQ6CisgICAgICAgICAgICAjIFJlc2V0IHRvIDE5NzAtMDEtMDEgMDA6MDA6MDAg
VVRDLgorICAgICAgICAgICAgaG9zdF9kYXRldGltZSA9IDAKKyAgICAgICAgc2VsZi5fcnVuX2Fk
Yl9jb21tYW5kKFsnc2hlbGwnLCAnZGF0ZSAtdSAlcycgJSAoaG9zdF9kYXRldGltZSldKQorCisg
ICAgIyBkaXIgc2hvdWxkIGJlICcvJyBlbmRlZC4KKyAgICBkZWYgX2NoZWNrX3ZlcnNpb24oc2Vs
ZiwgZGlyLCB2ZXJzaW9uKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGV2aWNlX3ZlcnNp
b24gPSBpbnQoc2VsZi5fcnVuX2FkYl9jb21tYW5kKAorICAgICAgICAgICAgICAgIFsnc2hlbGwn
LCAnY2F0ICVzVkVSU0lPTiB8fCBlY2hvIDAnICUgZGlyXSkpCisgICAgICAgICAgICByZXR1cm4g
ZGV2aWNlX3ZlcnNpb24gPT0gdmVyc2lvbgorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKKworICAgIGRlZiBfdXBkYXRlX3ZlcnNpb24oc2VsZiwgZGlyLCB2ZXJzaW9u
KToKKyAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnZWNobyAlZCA+ICVz
VkVSU0lPTicgJSAodmVyc2lvbiwgZGlyKV0pCisKKyAgICBkZWYgX3J1bl9hZGJfY29tbWFuZChz
ZWxmLCBjbWQsIGlnbm9yZV9lcnJvcj1GYWxzZSk6CisgICAgICAgIGlmIGlnbm9yZV9lcnJvcjoK
KyAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBzZWxmLl9leGVjdXRpdmUuaWdub3JlX2Vycm9y
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gTm9uZQorICAgICAg
ICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHNlbGYuX2FkYl9jb21tYW5kICsg
Y21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2hh
bmRsZXI9ZXJyb3JfaGFuZGxlcikKKworICAgIGRlZiBfY29weV9kZXZpY2VfZmlsZShzZWxmLCBm
cm9tX2ZpbGUsIHRvX2ZpbGUsIGlnbm9yZV9lcnJvcj1GYWxzZSk6CisgICAgICAgICMgJ2NwJyBp
cyB1bmF2YWlsYWJsZSBvbiBBbmRyb2lkLCBzbyB1c2UgJ2RkJyBpbnN0ZWFkLgorICAgICAgICBy
ZXR1cm4gc2VsZi5fcnVuX2FkYl9jb21tYW5kKAorICAgICAgICAgICAgWydzaGVsbCcsICdkZCcs
ICdpZj0nICsgZnJvbV9maWxlLCAnb2Y9JyArIHRvX2ZpbGVdLAorICAgICAgICAgICAgaWdub3Jl
X2Vycm9yKQorCisgICAgZGVmIF9wdXNoX3RvX2RldmljZShzZWxmLCBob3N0X3BhdGgsIGRldmlj
ZV9wYXRoLCBpZ25vcmVfZXJyb3I9RmFsc2UpOgorICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2Fk
Yl9jb21tYW5kKFsncHVzaCcsIGhvc3RfcGF0aCwgZGV2aWNlX3BhdGhdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9lcnJvcikKKworICAgIGRlZiBfcHVsbF9m
cm9tX2RldmljZShzZWxmLCBkZXZpY2VfcGF0aCwgaG9zdF9wYXRoLCBpZ25vcmVfZXJyb3I9RmFs
c2UpOgorICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsncHVsbCcsIGRldmlj
ZV9wYXRoLCBob3N0X3BhdGhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlnbm9yZV9lcnJvcikKKworICAgIGRlZiBfa2lsbF9kZXZpY2VfcHJvY2VzcyhzZWxmLCBuYW1l
KToKKyAgICAgICAgcHNfcmVzdWx0ID0gc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAn
cHMnXSkuc3BsaXQoJ1xuJykKKyAgICAgICAgZm9yIGxpbmUgaW4gcHNfcmVzdWx0OgorICAgICAg
ICAgICAgaWYgbGluZS5maW5kKG5hbWUpID4gMDoKKyAgICAgICAgICAgICAgICBwaWQgPSBsaW5l
LnNwbGl0KClbMV0KKyAgICAgICAgICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVs
bCcsICdraWxsJywgcGlkXSkKKworICAgIGRlZiBfZ2V0X3N0ZGVycihzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2NhdCcsIERFVklDRV9EUlRf
U1RERVJSXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfZXJy
b3I9VHJ1ZSkKKworICAgIGRlZiBfZ2V0X2xhc3Rfc3RhY2t0cmFjZShzZWxmKToKKyAgICAgICAg
c3RhY2t0cmFjZSA9ICcnCisgICAgICAgIHRvbWJzdG9uZXMgPSBzZWxmLl9ydW5fYWRiX2NvbW1h
bmQoWydzaGVsbCcsICdscycsICctbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcvZGF0YS90b21ic3RvbmVzJ10pCisgICAgICAgIHRvbWJzdG9uZXMgPSB0
b21ic3RvbmVzLnJzdHJpcCgpLnNwbGl0KCdcbicpCisgICAgICAgIGlmIGxlbih0b21ic3RvbmVz
KSA+IDA6CisgICAgICAgICAgICBsYXN0X3RvbWJzdG9uZSA9IHRvbWJzdG9uZXNbMF0uc3BsaXQo
KQorICAgICAgICAgICAgZm9yIHRvbWJzdG9uZSBpbiB0b21ic3RvbmVzWzE6XToKKyAgICAgICAg
ICAgICAgICAjIEZvcm1hdCBvZiBmaWVsZHM6CisgICAgICAgICAgICAgICAgIyAwICAgICAgICAg
IDEgICAgICAyICAgICAgMyAgICAgNCAgICAgICAgICA1ICAgICA2CisgICAgICAgICAgICAgICAg
IyBwZXJtaXNzaW9uIHVpZCAgICBnaWQgICAgc2l6ZSAgZGF0ZSAgICAgICB0aW1lICBmaWxlbmFt
ZQorICAgICAgICAgICAgICAgICMgLXJ3LS0tLS0tLSAxMDAwICAgMTAwMCAgIDQ1ODU5IDIwMTEt
MDQtMTMgMDY6MDAgdG9tYnN0b25lXzAwCisgICAgICAgICAgICAgICAgZmllbGRzID0gdG9tYnN0
b25lLnNwbGl0KCkKKyAgICAgICAgICAgICAgICBpZiAoZmllbGRzWzRdICsgZmllbGRzWzVdID49
CisgICAgICAgICAgICAgICAgICAgIGxhc3RfdG9tYnN0b25lWzRdICsgbGFzdF90b21ic3RvbmVb
NV0pOgorICAgICAgICAgICAgICAgICAgICBsYXN0X3RvbWJzdG9uZSA9IGZpZWxkcworICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAg
ICMgVXNlIEFuZHJvaWQgdG9vbCB2ZW5kb3IvZ29vZ2xlL3Rvb2xzL3N0YWNrIHRvIGNvbnZlcnQg
dGhlIHJhdworICAgICAgICAgICAgIyBzdGFjayB0cmFjZSBpbnRvIGEgaHVtYW4gcmVhZGFibGUg
Zm9ybWF0LCBpZiBuZWVkZWQuCisgICAgICAgICAgICAjIEl0IHRha2VzIGEgbG9uZyB0aW1lLCBz
byBkb24ndCBkbyBpdCBoZXJlLgorICAgICAgICAgICAgc3RhY2t0cmFjZSA9IHNlbGYuX3J1bl9h
ZGJfY29tbWFuZCgKKyAgICAgICAgICAgICAgICBbJ3NoZWxsJywgJ2NhdCcsICcvZGF0YS90b21i
c3RvbmVzLycgKyBsYXN0X3RvbWJzdG9uZVs2XV0pCisgICAgICAgIHJldHVybiBzdGFja3RyYWNl
CisKKyAgICBkZWYgX3NldHVwX3BlcmZvcm1hbmNlKHNlbGYpOgorICAgICAgICAjIERpc2FibGUg
Q1BVIHNjYWxpbmcgYW5kIGRyb3AgcmFtIGNhY2hlIHRvIHJlZHVjZSBub2lzZSBpbiB0ZXN0cwor
ICAgICAgICBpZiBub3Qgc2VsZi5fb3JpZ2luYWxfZ292ZXJub3I6CisgICAgICAgICAgICBzZWxm
Ll9vcmlnaW5hbF9nb3Zlcm5vciA9IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2Nh
dCcsIFNDQUxJTkdfR09WRVJOT1JdKQorICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5k
KFsnc2hlbGwnLCAnZWNobycsICdwZXJmb3JtYW5jZScsICc+JywgU0NBTElOR19HT1ZFUk5PUl0p
CisKKyAgICBkZWYgX3RlYXJkb3duX3BlcmZvcm1hbmNlKHNlbGYpOgorICAgICAgICBpZiBzZWxm
Ll9vcmlnaW5hbF9nb3Zlcm5vcjoKKyAgICAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChb
J3NoZWxsJywgJ2VjaG8nLCBzZWxmLl9vcmlnaW5hbF9nb3Zlcm5vciwgU0NBTElOR19HT1ZFUk5P
Ul0pCisgICAgICAgIHNlbGYuX29yaWdpbmFsX2dvdmVybm9yID0gTm9uZQorCisKK2NsYXNzIENo
cm9taXVtQW5kcm9pZERyaXZlcihjaHJvbWl1bS5DaHJvbWl1bURyaXZlcik6CisgICAgIiIiQWJz
dHJhY3QgaW50ZXJmYWNlIGZvciB0ZXN0X3NoZWxsLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBvcnQsIHdvcmtlcl9udW1iZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0PUZhbHNlKToK
KyAgICAgICAgY2hyb21pdW0uQ2hyb21pdW1Ecml2ZXIuX19pbml0X18oc2VsZiwgcG9ydCwgd29y
a2VyX251bWJlciwgcGl4ZWxfdGVzdHMsIG5vX3RpbWVvdXQpCisgICAgICAgIGlmIHNlbGYuX2lt
YWdlX3BhdGg6CisgICAgICAgICAgICBzZWxmLl9kZXZpY2VfaW1hZ2VfcGF0aCA9IERFVklDRV9E
UlRfRElSICsgb3MucGF0aC5iYXNlbmFtZSgKKyAgICAgICAgICAgICAgICBzZWxmLl9pbWFnZV9w
YXRoKQorCisgICAgZGVmIF9zdGFydChzZWxmKToKKyAgICAgICAgIyBDb252ZXJ0IHRoZSBvcmln
aW5hbCBjb21tYW5kIGxpbmUgaW50byB0byB0d28gcGFydHM6CisgICAgICAgICMgLSB0aGUgJ2Fk
YiBzaGVsbCcgY29tbWFuZCBsaW5lIHRvIHN0YXJ0IGFuIGludGVyYWN0aXZlIGFkYiBzaGVsbDsK
KyAgICAgICAgIyAtIHRoZSBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUgdG8gc2VuZCB0byB0
aGUgYWRiIHNoZWxsLgorICAgICAgICBvcmlnaW5hbF9jbWQgPSBzZWxmLmNtZF9saW5lKCkKKyAg
ICAgICAgc2hlbGxfY21kID0gW10KKyAgICAgICAgZHJ0X2FyZ3MgPSBbXQorICAgICAgICBwYXRo
X3RvX2RyaXZlciA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCkKKyAgICAgICAgcGFydF9v
bmUgPSBUcnVlCisgICAgICAgIGZvciBwYXJhbSBpbiBvcmlnaW5hbF9jbWQ6CisgICAgICAgICAg
ICBpZiBwYXJ0X29uZToKKyAgICAgICAgICAgICAgICBpZiBwYXJhbSA9PSBwYXRoX3RvX2RyaXZl
cjoKKyAgICAgICAgICAgICAgICAgICAgcGFydF9vbmUgPSBGYWxzZQorICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNoZWxsX2NtZC5hcHBlbmQocGFyYW0pCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIHBhcmFtLnN0YXJ0c3dpdGgoJy0tcGl4
ZWwtdGVzdHM9Jyk6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gJy0tcGl4ZWwtdGVzdHM9
JyArIHNlbGYuX2RldmljZV9pbWFnZV9wYXRoCisgICAgICAgICAgICAgICAgZHJ0X2FyZ3MuYXBw
ZW5kKHBhcmFtKQorCisgICAgICAgIHNoZWxsX2NtZCArPSBzZWxmLl9wb3J0Ll9hZGJfY29tbWFu
ZAorICAgICAgICBzaGVsbF9jbWQuYXBwZW5kKCdzaGVsbCcpCisgICAgICAgIHJldHJpZXMgPSAw
CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCdTdGFydGluZyBh
ZGIgc2hlbGwgZm9yIER1bXBSZW5kZXJUcmVlOiAnICsKKyAgICAgICAgICAgICAgICAgICAgICAg
JyAnLmpvaW4oc2hlbGxfY21kKSkKKyAgICAgICAgICAgIHNlbGYuX3Byb2MgPSBzdWJwcm9jZXNz
LlBvcGVuKHNoZWxsX2NtZCwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNU
RE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zk
cz1UcnVlKQorICAgICAgICAgICAgIyBSZWFkIGJhY2sgdGhlIHNoZWxsIHByb21wdCAoJyMgJykg
dG8gZW5zdXJlIGFkYiBzaGVsbCByZWFkeS4KKyAgICAgICAgICAgIHNlbGYuX3Byb2Muc3Rkb3V0
LnJlYWQoMikKKyAgICAgICAgICAgICMgU29tZSB0ZXN0cyByZWx5IG9uIHRoaXMgdG8gcHJvZHVj
ZSBwcm9wZXIgbnVtYmVyIGZvcm1hdCBldGMuLAorICAgICAgICAgICAgIyBlLmcuIGZhc3Qvc3Bl
ZWNoL2lucHV0LWFwcGVhcmFuY2UtbnVtYmVyYW5kc3BlZWNoLmh0bWwuCisgICAgICAgICAgICBz
ZWxmLl93cml0ZV9jb21tYW5kX2FuZF9yZWFkX2xpbmUoImV4cG9ydCBMQ19DVFlQRT0nZW5fVVMn
XG4iKQorICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29tbWFuZF9hbmRfcmVhZF9saW5lKCJleHBv
cnQgQ0xBU1NQQVRIPScvZGF0YS9kcnQvRHVtcFJlbmRlclRyZWUuamFyJ1xuIikKKworICAgICAg
ICAgICAgIyBXaGVuIER1bXBSZW5kZXJUcmVlIGNyYXNoZXMsIHRoZSBBbmRyb2lkIGRlYnVnZ2Vy
ZCB3aWxsIHN0b3AgdGhlCisgICAgICAgICAgICAjIHByb2Nlc3MgYmVmb3JlIGR1bXBpbmcgc3Rh
Y2sgdG8gbG9nL3RvbWJzdG9uZSBmaWxlIGFuZCB0ZXJtaW5hdGluZworICAgICAgICAgICAgIyB0
aGUgcHJvY2Vzcy4gU2xlZXAgMSBzZWNvbmQgKGxvbmcgZW5vdWdoIGZvciBkZWJ1Z2dlcmQgdG8g
ZHVtcAorICAgICAgICAgICAgIyBzdGFjaykgYmVmb3JlIGV4aXRpbmcgdGhlIHNoZWxsIHRvIGVu
c3VyZSB0aGUgcHJvY2VzcyBoYXMgcXVpdCwKKyAgICAgICAgICAgICMgb3RoZXJ3aXNlIHRoZSBl
eGl0IHdpbGwgZmFpbCBiZWNhdXNlICJZb3UgaGF2ZSBzdG9wcGVkIGpvYnMiLgorICAgICAgICAg
ICAgZHJ0X2NtZCA9ICclcyAlcyAyPiVzO3NsZWVwIDE7ZXhpdFxuJyAlIChERVZJQ0VfRFJUX1BB
VEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcgJy5qb2luKGRydF9hcmdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgREVWSUNFX0RSVF9TVERFUlIpCisgICAgICAgICAgICBfbG9nLmRl
YnVnKCdTdGFydGluZyBEdW1wUmVuZGVyVHJlZTogJyArIGRydF9jbWQpCisKKyAgICAgICAgICAg
ICMgV2FpdCB1bnRpbCBEUlQgZWNob3MgJyNSRUFEWScuCisgICAgICAgICAgICBvdXRwdXQgPSAn
JworICAgICAgICAgICAgKGxpbmUsIGNyYXNoKSA9IHNlbGYuX3dyaXRlX2NvbW1hbmRfYW5kX3Jl
YWRfbGluZShkcnRfY21kKQorICAgICAgICAgICAgd2hpbGUgbm90IGNyYXNoIGFuZCBsaW5lLnJz
dHJpcCgpICE9ICcjUkVBRFknOgorICAgICAgICAgICAgICAgIGlmIGxpbmUgPT0gJyc6ICAjIEVP
RiBvciBjcmFzaGVkCisgICAgICAgICAgICAgICAgICAgIGNyYXNoID0gVHJ1ZQorICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBsaW5lCisgICAgICAg
ICAgICAgICAgICAgIChsaW5lLCBjcmFzaCkgPSBzZWxmLl93cml0ZV9jb21tYW5kX2FuZF9yZWFk
X2xpbmUoKQorCisgICAgICAgICAgICBpZiBjcmFzaDoKKyAgICAgICAgICAgICAgICAjIFNvbWV0
aW1lcyB0aGUgZGV2aWNlIGlzIGluIHVuc3RhYmxlIHN0YXRlIChtYXkgYmUgb3V0IG9mCisgICAg
ICAgICAgICAgICAgIyBtZW1vcnk/KSBhbmQga2lsbHMgRHVtcFJlbmRlclRyZWUganVzdCBhZnRl
ciBpdCBpcyBzdGFydGVkLgorICAgICAgICAgICAgICAgICMgVHJ5IHRvIHN0b3AgYW5kIHN0YXJ0
IGl0IGFnYWluLgorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBE
dW1wUmVuZGVyVHJlZTogXG4lc1xuJXNcbicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
KG91dHB1dCwgc2VsZi5fcG9ydC5fZ2V0X3N0ZGVycigpKSkKKyAgICAgICAgICAgICAgICBzZWxm
LnN0b3AoKQorICAgICAgICAgICAgICAgIHJldHJpZXMgKz0gMQorICAgICAgICAgICAgICAgIGlm
IHJldHJpZXMgPiAyOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigK
KyAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgbXVsdGlwbGUgdGltZXMgdG8gc3RhcnQg
RHVtcFJlbmRlclRyZWUnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1
cm4KKworICAgIGRlZiBydW5fdGVzdChzZWxmLCBkcml2ZXJfaW5wdXQpOgorICAgICAgICBkcml2
ZXJfb3V0cHV0ID0gY2hyb21pdW0uQ2hyb21pdW1Ecml2ZXIucnVuX3Rlc3Qoc2VsZiwgZHJpdmVy
X2lucHV0KQorICAgICAgICAjIEZJWE1FOiBhZGIgc2hlbGwgY2F0IHNvbWV0aW1lcyBnZXRzIHN0
dWNrLiBEaXNhYmxlIHN0ZGVyciBnYXRoZXJpbmcKKyAgICAgICAgIyBmb3Igbm93LiBTZWUgaHR0
cDovL2IvaXNzdWU/aWQ9NDY5MDcxNworICAgICAgICAjIGRyaXZlcl9vdXRwdXQuZXJyb3IgKz0g
c2VsZi5fcG9ydC5fZ2V0X3N0ZGVycigpCisgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQuY3Jhc2g6
CisgICAgICAgICAgICAjIEZldGNoIHRoZSBzdGFjayB0cmFjZSBmcm9tIHRoZSB0b21ic3RvbmUg
ZmlsZS4KKyAgICAgICAgICAgICMgRklYTUU6IHNvbWV0aW1lcyB0aGUgY3Jhc2ggZG9lc24ndCBy
ZWFsbHkgaGFwcGVuIHNvIHRoYXQgbm8KKyAgICAgICAgICAgICMgdG9tYnN0b25lIGlzIGdlbmVy
YXRlZC4gSW4gdGhhdCBjYXNlIHdlIGZldGNoIHRoZSB3cm9uZyBzdGFjaworICAgICAgICAgICAg
IyB0cmFjZS4gU2VlIGh0dHA6Ly9iL2lzc3VlP2lkPTUzODQ2NzYKKyAgICAgICAgICAgIGRyaXZl
cl9vdXRwdXQuZXJyb3IgKz0gc2VsZi5fcG9ydC5fZ2V0X2xhc3Rfc3RhY2t0cmFjZSgpCisgICAg
ICAgIHJldHVybiBkcml2ZXJfb3V0cHV0CisKKyAgICBkZWYgc3RvcChzZWxmKToKKyAgICAgICAg
X2xvZy5kZWJ1ZygnU3RvcHBpbmcgRHVtcFJlbmRlclRyZWUnKQorICAgICAgICBpZiBzZWxmLl9w
cm9jOgorICAgICAgICAgICAgIyBTZW5kIGFuIGV4cGxpY2l0IFFVSVQgY29tbWFuZCBiZWNhdXNl
IGNsb3NpbmcgdGhlIHBpcGUgY2FuJ3QgbGV0CisgICAgICAgICAgICAjIER1bXBSZW5kZXJUcmVl
IG9uIEFuZHJvaWQgcXVpdCBpbW1lZGlhdGVseS4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICBzZWxmLl9wcm9jLnN0ZGluLndyaXRlKCdRVUlUXG4nKQorICAgICAgICAgICAgZXhj
ZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICAgIyBUaGUgcGlwZSBoYXMgYWxyZWFkeSBiZWVu
IGNsb3NlZCwgaW5kaWNhdGluZyBhYm5vcm1hbAorICAgICAgICAgICAgICAgICMgc2l0dWF0aW9u
IG9jY3VycmVkLiBXYWl0IGEgd2hpbGUgdG8gYWxsb3cgdGhlIGRldmljZSB0bworICAgICAgICAg
ICAgICAgICMgcmVjb3Zlci4KKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAg
IGNocm9taXVtLkNocm9taXVtRHJpdmVyLnN0b3Aoc2VsZikKKworICAgIGRlZiBfdGVzdF9zaGVs
bF9jb21tYW5kKHNlbGYsIHVyaSwgdGltZW91dG1zLCBjaGVja3N1bSk6CisgICAgICAgIGlmIHVy
aS5zdGFydHN3aXRoKCdmaWxlOi8vLycpOgorICAgICAgICAgICAgIyBDb252ZXJ0IHRoZSBob3N0
IHVyaSB0byBhIGRldmljZSB1cmkuIFNlZSBjb21tZW50IG9mCisgICAgICAgICAgICAjIERFVklD
RV9MQVlPVVRfVEVTVFNfRElSIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgIyBOb3Qgb3ZlcnJp
ZGluZyBQb3J0LmZpbGVuYW1lX3RvX3VyaSgpIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0aGUKKyAg
ICAgICAgICAgICMgbGlua3MgaW4gdGhlIGh0bWwgcmVwb3J0IHBvaW50IHRvIGRldmljZSBwYXRo
cy4KKyAgICAgICAgICAgIHVyaSA9IChGSUxFX1RFU1RfVVJJX1BSRUZJWCArCisgICAgICAgICAg
ICAgICAgICAgdXJpWzggKyBsZW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpOl0pCisg
ICAgICAgIHJldHVybiBjaHJvbWl1bS5DaHJvbWl1bURyaXZlci5fdGVzdF9zaGVsbF9jb21tYW5k
KHNlbGYsIHVyaSwgdGltZW91dG1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja3N1bSkKKworICAgIGRlZiBfd3JpdGVfY29t
bWFuZF9hbmRfcmVhZF9saW5lKHNlbGYsIGlucHV0PU5vbmUpOgorICAgICAgICAobGluZSwgY3Jh
c2gpID0gY2hyb21pdW0uQ2hyb21pdW1Ecml2ZXIuX3dyaXRlX2NvbW1hbmRfYW5kX3JlYWRfbGlu
ZSgKKyAgICAgICAgICAgIHNlbGYsIGlucHV0KQorICAgICAgICBpZiAobm90IGNyYXNoIGFuZCBs
aW5lLnN0YXJ0c3dpdGgoJyNVUkw6JykgYW5kCisgICAgICAgICAgICBsaW5lLmZpbmQoRklMRV9U
RVNUX1VSSV9QUkVGSVgpID09IDUpOgorICAgICAgICAgICAgIyBDb252ZXJ0IHRoZSBkZXZpY2Ug
dGVzdCB1cmkgYmFjayB0byBob3N0IHVyaSBvdGhlcndpc2UKKyAgICAgICAgICAgICMgY2hyb21p
dW0uQ2hyb21pdW1Ecml2ZXIucnVuX3Rlc3QoKSB3aWxsIGNvbXBsYWluLgorICAgICAgICAgICAg
bGluZSA9ICcjVVJMOmZpbGU6Ly8lcy8lcycgJSAoCisgICAgICAgICAgICAgICAgc2VsZi5fcG9y
dC5sYXlvdXRfdGVzdHNfZGlyKCksCisgICAgICAgICAgICAgICAgbGluZVs1ICsgbGVuKEZJTEVf
VEVTVF9VUklfUFJFRklYKTpdKQorICAgICAgICBpZiAobm90IGNyYXNoIGFuZCBzZWxmLl9oYXNf
Y3Jhc2hfaGludChsaW5lKSk6CisgICAgICAgICAgICBjcmFzaCA9IFRydWUKKyAgICAgICAgcmV0
dXJuIChsaW5lLCBjcmFzaCkKKworICAgIGRlZiBfb3V0cHV0X2ltYWdlKHNlbGYpOgorICAgICAg
ICBpZiBzZWxmLl9pbWFnZV9wYXRoOgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygncHVsbGluZyBm
cm9tIGRldmljZTogJXMgdG8gJXMnICUgKHNlbGYuX2RldmljZV9pbWFnZV9wYXRoLCBzZWxmLl9p
bWFnZV9wYXRoKSk7CisgICAgICAgICAgICBzZWxmLl9wb3J0Ll9wdWxsX2Zyb21fZGV2aWNlKHNl
bGYuX2RldmljZV9pbWFnZV9wYXRoLCBzZWxmLl9pbWFnZV9wYXRoLCBpZ25vcmVfZXJyb3I9VHJ1
ZSkKKyAgICAgICAgcmV0dXJuIGNocm9taXVtLkNocm9taXVtRHJpdmVyLl9vdXRwdXRfaW1hZ2Uo
c2VsZikKKworICAgIGRlZiBfaGFzX2NyYXNoX2hpbnQoc2VsZiwgbGluZSk6CisgICAgICAgICMg
V2hlbiBEUlQgY3Jhc2hlcywgaXQgc2VuZHMgYSBzaWduYWwgdG8gQW5kcm9pZCBEZWJ1Z2dlcmQs
IGxpa2UKKyAgICAgICAgIyBTSUdTRUdWLCBTSUdGUEUsIGV0Yy4gV2hlbiBEZWJ1Z2dlcmQgcmVj
ZWl2ZXMgdGhlIHNpZ25hbCwgaXQgc3RvcHMgRFJUCisgICAgICAgICMgKHdoaWNoIGNhdXNlcyBT
aGVsbCB0byBvdXRwdXQgYSBtZXNzYWdlKSwgYW5kIGR1bXBzIHRoZSBzdGFjayBzdHJhY2UuCisg
ICAgICAgICMgV2UgdXNlIHRoZSBTaGVsbCBvdXRwdXQgYXMgYSBjcmFzaCBoaW50LgorICAgICAg
ICByZXR1cm4gbGluZSBpcyBub3QgTm9uZSBhbmQgbGluZS5maW5kKCdbMV0gKyBTdG9wcGVkIChz
aWduYWwpJykgPj0gMApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9ncHUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkJKHJldmlzaW9uIDEwNzU4OCkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9y
dCBzeXMKK2ltcG9ydCBvcwogCitpbXBvcnQgY2hyb21pdW1fYW5kcm9pZAogaW1wb3J0IGNocm9t
aXVtX2xpbnV4CiBpbXBvcnQgY2hyb21pdW1fbWFjCiBpbXBvcnQgY2hyb21pdW1fd2luCkBAIC03
MCw2ICs3MiwyNiBAQCBkZWYgX2RlZmF1bHRfdGVzdHNfcGF0aHMocG9ydCk6CiAgICAgcmV0dXJu
IHBhdGhzCiAKIAorY2xhc3MgQ2hyb21pdW1HcHVBbmRyb2lkUG9ydChjaHJvbWl1bV9hbmRyb2lk
LkNocm9taXVtQW5kcm9pZFBvcnQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9
J2Nocm9taXVtLWdwdS1hbmRyb2lkJywgKiprd2FyZ3MpOgorICAgICAgICBjaHJvbWl1bV9hbmRy
b2lkLkNocm9taXVtQW5kcm9pZFBvcnQuX19pbml0X18oc2VsZiwgcG9ydF9uYW1lPXBvcnRfbmFt
ZSwgKiprd2FyZ3MpCisgICAgICAgIF9zZXRfZ3B1X29wdGlvbnMoc2VsZikKKyAgICAgICAgIyBB
bHdheXMgZW5hYmxlIGhhcmR3YXJlIGdwdSwgYXMgd2UgZG9lc24ndCBzdXBwb3J0IE1lc2EuCisg
ICAgICAgIHNlbGYuX29wdGlvbnMuZW5hYmxlX2hhcmR3YXJlX2dwdSA9IFRydWUKKworICAgIGRl
ZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKKyAgICAgICAgIyBNaW1pYyB0aGUgTGludXgg
LT4gV2luIGV4cGVjdGF0aW9ucyBmYWxsYmFjayBpbiB0aGUgb3JkaW5hcnkgQ2hyb21pdW0gcG9y
dC4KKyAgICAgICAgcmV0dXJuIChtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIFsnY2hy
b21pdW0tZ3B1LWFuZHJvaWQnLCAnY2hyb21pdW0tZ3B1LWxpbnV4JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hyb21pdW0tZ3B1LXdpbicsICdj
aHJvbWl1bS1ncHUnXSkgKworICAgICAgICAgICAgICAgIGNocm9taXVtX2FuZHJvaWQuQ2hyb21p
dW1BbmRyb2lkUG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKSkKKworICAgIGRlZiBkZWZh
dWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIDEKKworICAgIGRlZiB0
ZXN0cyhzZWxmLCBwYXRocyk6CisgICAgICAgIHJldHVybiBfdGVzdHMoc2VsZiwgcGF0aHMpCisK
KwogY2xhc3MgQ2hyb21pdW1HcHVMaW51eFBvcnQoY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51
eFBvcnQpOgogICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1ncHUtbGludXgnCiAKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3Rvcnku
cHkJKHJldmlzaW9uIDEwNzU4OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZmFjdG9yeS5weQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogCiAi
IiJGYWN0b3J5IG1ldGhvZCB0byByZXRyaWV2ZSB0aGUgYXBwcm9wcmlhdGUgcG9ydCBpbXBsZW1l
bnRhdGlvbi4iIiIKIAorCitpbXBvcnQgb3MKIGltcG9ydCByZQogCiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0IGltcG9ydCBidWlsZGVycwpAQCAtNDIsNiArNDQsNyBAQCBjbGFzcyBC
dWlsZGVyT3B0aW9ucyhvYmplY3QpOgogCiBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgogICAg
IFBPUlRfQ0xBU1NFUyA9ICgKKyAgICAgICAgJ2Nocm9taXVtX2FuZHJvaWQuQ2hyb21pdW1BbmRy
b2lkUG9ydCcsCiAgICAgICAgICdjaHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVMaW51eFBvcnQnLAog
ICAgICAgICAnY2hyb21pdW1fZ3B1LkNocm9taXVtR3B1TWFjUG9ydCcsCiAgICAgICAgICdjaHJv
bWl1bV9ncHUuQ2hyb21pdW1HcHVXaW5Qb3J0JywKQEAgLTY3LDcgKzcwLDEwIEBAIGNsYXNzIFBv
cnRGYWN0b3J5KG9iamVjdCk6CiAgICAgZGVmIF9kZWZhdWx0X3BvcnQoc2VsZiwgb3B0aW9ucyk6
CiAgICAgICAgIHBsYXRmb3JtID0gc2VsZi5faG9zdC5wbGF0Zm9ybQogICAgICAgICBpZiBwbGF0
Zm9ybS5pc19saW51eCgpOgotICAgICAgICAgICAgcmV0dXJuICdjaHJvbWl1bS1saW51eCcKKyAg
ICAgICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCdHWVBfREVGSU5FUycsICcnKS5maW5kKCdPUz1h
bmRyb2lkJykgPj0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2Nocm9taXVtLWFuZHJvaWQn
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAnY2hyb21pdW0tbGlu
dXgnCiAgICAgICAgIGVsaWYgcGxhdGZvcm0uaXNfbWFjKCk6CiAgICAgICAgICAgICByZXR1cm4g
J21hYycKICAgICAgICAgZWxpZiBwbGF0Zm9ybS5pc193aW4oKToKClByb3BlcnR5IGNoYW5nZXMg
b246IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJz
L2FwYWNoZV9odHRwX3NlcnZlci5weQkocmV2aXNpb24gMTA3NTg4KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQogCiBjbGFzcyBMYXlvdXRUZXN0QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5I
dHRwU2VydmVyQmFzZSk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG91dHB1
dF9kaXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaiwgb3V0cHV0X2RpciwgYWRk
aXRpb25hbF9kaXJzPU5vbmUpOgogICAgICAgICAiIiJBcmdzOgogICAgICAgICAgIHBvcnRfb2Jq
OiBoYW5kbGUgdG8gdGhlIHBsYXRmb3JtLXNwZWNpZmljIHJvdXRpbmVzCiAgICAgICAgICAgb3V0
cHV0X2RpcjogdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGxheW91dCB0ZXN0IHJlc3VsdCBkaXJl
Y3RvcnkKQEAgLTg3LDYgKzg3LDE0IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRw
X3NlcnZlcl8KICAgICAgICAgICAgICctYycsICJcJ1BpZEZpbGUgJXMnIiAlIHNlbGYuX3BpZF9m
aWxlLAogICAgICAgICAgICAgJy1rJywgInN0YXJ0Il0KIAorICAgICAgICBpZiBhZGRpdGlvbmFs
X2RpcnM6CisgICAgICAgICAgICBmb3IgYWxpYXMsIHBhdGggaW4gYWRkaXRpb25hbF9kaXJzLml0
ZXJpdGVtcygpOgorICAgICAgICAgICAgICAgIHN0YXJ0X2NtZCArPSBbJy1jJywgIlwnQWxpYXMg
JXMgXCIlc1wiXCciICUgKGFsaWFzLCBwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICMg
RGlzYWJsZSBDR0kgaGFuZGxlciBmb3IgYWRkaXRpb25hbCBkaXJzLgorICAgICAgICAgICAgICAg
ICAgICAgICAgJy1jJywgIlwnPExvY2F0aW9uICVzPlwnIiAlIGFsaWFzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJy1jJywgIlwnUmVtb3ZlSGFuZGxlciAuY2dpIC5wbFwnIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICctYycsICJcJzwvTG9jYXRpb24+XCciXQorCiAgICAgICAgIHN0b3Bf
Y21kID0gW2V4ZWN1dGFibGUsCiAgICAgICAgICAgICAnLWYnLCAiXCIlc1wiIiAlIHNlbGYuX2dl
dF9hcGFjaGVfY29uZmlnX2ZpbGVfcGF0aCh0ZXN0X2Rpciwgb3V0cHV0X2RpciksCiAgICAgICAg
ICAgICAnLWMnLCAiXCdQaWRGaWxlICVzJyIgJSBzZWxmLl9waWRfZmlsZSwKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXIucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9o
dHRwX3NlcnZlci5weQkocmV2aXNpb24gMTA3NTg4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlci5weQkod29ya2luZyBjb3B5KQpAQCAt
NDMsNyArNDMsOCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiBjbGFzcyBM
aWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToKIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwb3J0X29iaiwgb3V0cHV0X2RpciwgYmFja2dyb3VuZD1GYWxzZSwgcG9ydD1O
b25lLAotICAgICAgICAgICAgICAgICByb290PU5vbmUsIHJ1bl9iYWNrZ3JvdW5kPU5vbmUsIGxh
eW91dF90ZXN0c19kaXI9Tm9uZSk6CisgICAgICAgICAgICAgICAgIHJvb3Q9Tm9uZSwgcnVuX2Jh
Y2tncm91bmQ9Tm9uZSwgYWRkaXRpb25hbF9kaXJzPU5vbmUsCisgICAgICAgICAgICAgICAgIGxh
eW91dF90ZXN0c19kaXI9Tm9uZSk6CiAgICAgICAgICIiIkFyZ3M6CiAgICAgICAgICAgb3V0cHV0
X2RpcjogdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGxheW91dCB0ZXN0IHJlc3VsdCBkaXJlY3Rv
cnkKICAgICAgICAgIiIiCkBAIC01NCw2ICs1NSw3IEBAIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2Vy
dmVyX2Jhc2UuSHR0cFNlcnYKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2Vs
Zi5fcm9vdCA9IHJvb3QKICAgICAgICAgc2VsZi5fcnVuX2JhY2tncm91bmQgPSBydW5fYmFja2dy
b3VuZAorICAgICAgICBzZWxmLl9hZGRpdGlvbmFsX2RpcnMgPSBhZGRpdGlvbmFsX2RpcnMKICAg
ICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciA9IGxheW91dF90ZXN0c19kaXIKIAogICAgICAg
ICBzZWxmLl9waWRfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9ydW50aW1lX3Bh
dGgsICclcy5waWQnICUgc2VsZi5fbmFtZSkKQEAgLTEyNCw2ICsxMjYsMTAgQEAgY2xhc3MgTGln
aHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydgogICAgICAgICBmLndyaXRlKCgnYWxpYXMu
dXJsID0gKCAiL2pzLXRlc3QtcmVzb3VyY2VzIiA9PiAiJXMiIClcblxuJykgJQogICAgICAgICAg
ICAgICAgICAgICAoc2VsZi5fanNfdGVzdF9yZXNvdXJjZSkpCiAKKyAgICAgICAgaWYgc2VsZi5f
YWRkaXRpb25hbF9kaXJzOgorICAgICAgICAgICAgZm9yIGFsaWFzLCBwYXRoIGluIHNlbGYuX2Fk
ZGl0aW9uYWxfZGlycy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAgICBmLndyaXRlKCgnYWxp
YXMudXJsICs9ICggIiVzIiA9PiAiJXMiIClcblxuJykgJSAoYWxpYXMsIHBhdGgpKQorCiAgICAg
ICAgICMgU2V0dXAgYSBsaW5rIHRvIHdoZXJlIHRoZSBtZWRpYSByZXNvdXJjZXMgYXJlIHN0b3Jl
ZC4KICAgICAgICAgZi53cml0ZSgoJ2FsaWFzLnVybCArPSAoICIvbWVkaWEtcmVzb3VyY2VzIiA9
PiAiJXMiIClcblxuJykgJQogICAgICAgICAgICAgICAgICAgICAoc2VsZi5fbWVkaWFfcmVzb3Vy
Y2UpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>