<?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>76016</bug_id>
          
          <creation_ts>2012-01-10 17:50:31 -0800</creation_ts>
          <short_desc>webkitpy: clean up version detection in webkitpy.layout_tests.port</short_desc>
          <delta_ts>2012-01-11 11:26:36 -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>
          
          <blocked>75037</blocked>
    
    <blocked>75764</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533535</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-10 17:50:31 -0800</bug_when>
    <thetext>webkitpy: clean up version detection in webkitpy.layout_tests.port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533538</commentid>
    <comment_count>1</comment_count>
      <attachid>121953</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-10 17:51:54 -0800</bug_when>
    <thetext>Created attachment 121953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533697</commentid>
    <comment_count>2</comment_count>
      <attachid>121953</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-11 00:10:28 -0800</bug_when>
    <thetext>Comment on attachment 121953
Patch

Great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534053</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-11 11:26:36 -0800</bug_when>
    <thetext>Committed r104725: &lt;http://trac.webkit.org/changeset/104725&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121953</attachid>
            <date>2012-01-10 17:51:54 -0800</date>
            <delta_ts>2012-01-11 00:10:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76016-20120110175153.patch</filename>
            <type>text/plain</type>
            <size>58287</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NjM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTc4MWRjY2I3MDczNWEzM2M4YTY5ZTBlOWEyNzNkYTZm
OTkzOTc3Yy4uYmViNzQ4ZTg0M2IwMGM2YzAxZTc2ZDg3OGZiNmIzZmQ5YTljNDMzNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4
IEBACisyMDEyLTAxLTEwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBjbGVhbiB1cCB2ZXJzaW9uIGRldGVjdGlvbiBpbiB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzYwMTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSB1cGRhdGVzIHRoZSBjb2RlIGluIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0IHRvCisgICAgICAgIHVzZSB0aGUgbmV3IG9zX25hbWUgYW5kIG9zX3ZlcnNpb24g
ZmllbGRzIG9uIGhvc3QucGxhdGZvcm0uIFRoaXMKKyAgICAgICAgZ2V0cyBsYXlvdXRfdGVzdHMu
cG9ydCBvdXQgb2YgdGhlIHZlcnNpb24gcGFyc2luZyBidXNpbmVzcy4gTW9zdAorICAgICAgICBv
ZiB0aGUgZGlmZnMgYXJlIGp1c3QgY2xlYW5pbmcgdXAgdGVzdCBjb2RlIHRvIGFjY29tb2RhdGUg
dGhlCisgICAgICAgIGNoYW5nZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHk6CisgICAgICAgIChNb2NrRXhlY3V0aXZlKToKKyAg
ICAgICAgKE1vY2tFeGVjdXRpdmUuaWdub3JlX2Vycm9yKToKKyAgICAgICAgKE1vY2tFeGVjdXRp
dmUyKToKKyAgICAgICAgKE1vY2tFeGVjdXRpdmUyLmlnbm9yZV9lcnJvcik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5OgorICAg
ICAgICAoTW9ja1BsYXRmb3JtSW5mby5pc19tYWMpOgorICAgICAgICAoTW9ja1BsYXRmb3JtSW5m
by5pc19saW51eCk6CisgICAgICAgIChNb2NrUGxhdGZvcm1JbmZvLmlzX3dpbik6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3RfbW9jay5weToKKyAg
ICAgICAgKE1vY2tTeXN0ZW1Ib3N0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5OgorICAgICAgICAoQXBwbGVQb3J0Ll9faW5p
dF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX21hYy5weToKKyAgICAgICAgKENocm9taXVtTWFjUG9ydC5fX2luaXRfXyk6CisgICAgICAg
IChDaHJvbWl1bU1hY1BvcnQuY2hlY2tfd2RpZmYpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
Q2hyb21pdW1NYWNQb3J0VGVzdCk6CisgICAgICAgIChDaHJvbWl1bU1hY1BvcnRUZXN0LmFzc2Vy
dF9uYW1lKToKKyAgICAgICAgKENocm9taXVtTWFjUG9ydFRlc3QudGVzdF92ZXJzaW9ucyk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0
dGVzdC5weToKKyAgICAgICAgKENocm9taXVtUG9ydFRlc3QudGVzdF9hbGxfdGVzdF9jb25maWd1
cmF0aW9ucyk6CisgICAgICAgIChDaHJvbWl1bVBvcnRUZXN0LlRlc3RNYWNQb3J0Ll9faW5pdF9f
KToKKyAgICAgICAgKENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydC5fX2luaXRfXyk6Cisg
ICAgICAgIChDaHJvbWl1bVBvcnRUZXN0LlRlc3RXaW5Qb3J0Ll9faW5pdF9fKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weToKKyAg
ICAgICAgKENocm9taXVtV2luUG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHk6CisgICAgICAg
IChDaHJvbWl1bVdpblRlc3QpOgorICAgICAgICAoQ2hyb21pdW1XaW5UZXN0LmFzc2VydF9uYW1l
KToKKyAgICAgICAgKENocm9taXVtV2luVGVzdC50ZXN0X3ZlcnNpb25zKToKKyAgICAgICAgKENo
cm9taXVtV2luVGVzdC50ZXN0X2Jhc2VsaW5lX3BhdGgpOgorICAgICAgICAoQ2hyb21pdW1XaW5U
ZXN0LnRlc3RfYnVpbGRfcGF0aCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9mYWN0b3J5LnB5OgorICAgICAgICAoUG9ydEZhY3RvcnkuX3BvcnRfbmFtZV9m
cm9tX2FyZ3VtZW50c19hbmRfb3B0aW9ucyk6CisgICAgICAgIChQb3J0RmFjdG9yeS5nZXQpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0
dGVzdC5weToKKyAgICAgICAgKEZhY3RvcnlUZXN0KToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnNl
dFVwKToKKyAgICAgICAgKEZhY3RvcnlUZXN0LmFzc2VydF9wb3J0KToKKyAgICAgICAgKEZhY3Rv
cnlUZXN0LnRlc3RfbWFjKToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnRlc3Rfd2luKToKKyAgICAg
ICAgKEZhY3RvcnlUZXN0LnRlc3RfZ29vZ2xlX2Nocm9tZSk6CisgICAgICAgIChGYWN0b3J5VGVz
dC50ZXN0X2d0ayk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X3F0KToKKyAgICAgICAgKEZh
Y3RvcnlUZXN0LnRlc3RfY2hyb21pdW1fZ3B1KToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnRlc3Rf
Y2hyb21pdW1fZ3B1X2xpbnV4KToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnRlc3RfY2hyb21pdW1f
Z3B1X21hYyk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X2Nocm9taXVtX2dwdV93aW4pOgor
ICAgICAgICAoRmFjdG9yeVRlc3QudGVzdF9jaHJvbWl1bV9tYWMpOgorICAgICAgICAoRmFjdG9y
eVRlc3QudGVzdF9jaHJvbWl1bV9saW51eCk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X2No
cm9taXVtX3dpbik6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X3Vua25vd25fc3BlY2lmaWVk
KToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnRlc3RfdW5rbm93bl9kZWZhdWx0KToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRl
c3QucHk6CisgICAgICAgIChUZXN0R29vZ2xlQ2hyb21lUG9ydCk6CisgICAgICAgIChUZXN0R29v
Z2xlQ2hyb21lUG9ydC5fdmVyaWZ5X2Jhc2VsaW5lX3BhdGgpOgorICAgICAgICAoVGVzdEdvb2ds
ZUNocm9tZVBvcnQuX3ZlcmlmeV9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKToKKyAgICAgICAgKFRl
c3RHb29nbGVDaHJvbWVQb3J0LnRlc3RfZ2V0X2dvb2dsZV9jaHJvbWVfcG9ydCk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHk6CisgICAgICAgIChN
YWNQb3J0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21h
Y191bml0dGVzdC5weToKKyAgICAgICAgKE1hY1Rlc3QpOgorICAgICAgICAoYXNzZXJ0X25hbWUp
OgorICAgICAgICAodGVzdF90ZXN0c19mb3Jfb3RoZXJfcGxhdGZvcm1zKToKKyAgICAgICAgKHRl
c3RfdmVyc2lvbik6CisgICAgICAgICh0ZXN0X3ZlcnNpb25zKToKKyAgICAgICAgKHRlc3RfaXNf
dmVyc2lvbl9tZXRob2RzKToKKyAgICAgICAgKHRlc3Rfc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVy
KToKKyAgICAgICAgKF9hc3NlcnRfc2VhcmNoX3BhdGgpOgorICAgICAgICAodGVzdF9zaG93X3Jl
c3VsdHNfaHRtbF9maWxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3BvcnRfdGVzdGNhc2UucHk6CisgICAgICAgIChQb3J0VGVzdENhc2UpOgorICAgICAg
ICAoUG9ydFRlc3RDYXNlLm1ha2VfcG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5Qb3J0KToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weToKKyAgICAg
ICAgKFdpblBvcnRUZXN0KToKKyAgICAgICAgKFdpblBvcnRUZXN0LnRlc3Rfc2hvd19yZXN1bHRz
X2h0bWxfZmlsZSk6CisgICAgICAgIChXaW5Qb3J0VGVzdC5fYXNzZXJ0X3NlYXJjaF9wYXRoKToK
KyAgICAgICAgKFdpblBvcnRUZXN0Ll9hc3NlcnRfdmVyc2lvbik6CisKIDIwMTItMDEtMDkgIERp
cmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgd2Via2l0cHk6IGFk
ZCBvc19uYW1lLCBvc192ZXJzaW9uIHRvIHBsYXRmb3JtaW5mbwpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CmluZGV4IGMz
YTRjNGQ1ZmE4NzdmZWFmMmJhYmRlZjg1MGEyYzFlY2RhOTA4MTQuLmY2OTgyMzVlOTVjYTFkZjUy
ZGVkOWNiYzkzM2U5MGYyZmE2OTQxNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkKQEAgLTM0LDYgKzM0LDEwIEBA
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9y
CiAKICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVuaWZpZWQgd2l0aCBNb2NrRXhlY3V0aXZlMgog
Y2xhc3MgTW9ja0V4ZWN1dGl2ZShvYmplY3QpOgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
aWdub3JlX2Vycm9yKGVycm9yKToKKyAgICAgICAgcGFzcworCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHNob3VsZF9sb2c9RmFsc2UsIHNob3VsZF90aHJvdz1GYWxzZSwgc2hvdWxkX3Rocm93X3do
ZW5fcnVuPU5vbmUpOgogICAgICAgICBzZWxmLl9zaG91bGRfbG9nID0gc2hvdWxkX2xvZwogICAg
ICAgICBzZWxmLl9zaG91bGRfdGhyb3cgPSBzaG91bGRfdGhyb3cKQEAgLTc5LDYgKzgzLDEwIEBA
IGNsYXNzIE1vY2tFeGVjdXRpdmUob2JqZWN0KToKIAogCiBjbGFzcyBNb2NrRXhlY3V0aXZlMihv
YmplY3QpOgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgaWdub3JlX2Vycm9yKGVycm9yKToK
KyAgICAgICAgcGFzcworCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dHB1dD0nJywgZXhpdF9j
b2RlPTAsIGV4Y2VwdGlvbj1Ob25lLAogICAgICAgICAgICAgICAgICBydW5fY29tbWFuZF9mbj1O
b25lLCBzdGRlcnI9JycpOgogICAgICAgICBzZWxmLl9vdXRwdXQgPSBvdXRwdXQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fbW9j
ay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9f
bW9jay5weQppbmRleCA3MWMzZThjZTdkMGZlYWRjMjg5NTEwOTRiMzllZmU0YjRmMjI0YjkxLi43
MzAyNzYxZGUwYmYyZjE5YTczM2UyNTlkNjFiZDNmMWZkMjJkYzM3IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvX21vY2sucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mb19tb2Nr
LnB5CkBAIC0zMiwxMyArMzIsMTMgQEAgY2xhc3MgTW9ja1BsYXRmb3JtSW5mbyhvYmplY3QpOgog
ICAgIG9zX3ZlcnNpb24gPSAnc25vd2xlb3BhcmQnCiAKICAgICBkZWYgaXNfbWFjKHNlbGYpOgot
ICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gc2VsZi5vc19uYW1lID09ICdtYWMn
CiAKICAgICBkZWYgaXNfbGludXgoc2VsZik6Ci0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAg
ICByZXR1cm4gc2VsZi5vc19uYW1lID09ICdsaW51eCcKIAotICAgIGRlZiBpc193aW5kb3dzKHNl
bGYpOgotICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBkZWYgaXNfd2luKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5vc19uYW1lID09ICd3aW4nCiAKICAgICBkZWYgZGlzcGxheV9uYW1lKHNl
bGYpOgogICAgICAgICByZXR1cm4gIk1vY2tQbGF0Zm9ybSAxLjAiCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdF9tb2NrLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3RfbW9jay5weQppbmRl
eCA2MWY4OTcyYmYyYzE2M2U5MWZkYjUwN2M2YTY1NWNhOTgwMTNhNWE4Li5mM2JjOTQxMzk0MjZj
MDZmODJmYTIwYTMyNTdkYTMyYzlkMzUyMTdiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdF9tb2NrLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0X21vY2sucHkKQEAgLTM1LDExICsz
NSwxNSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ud29ya3NwYWNlX21vY2sgaW1wb3J0
IE1vY2tXb3Jrc3BhY2UKIAogCiBjbGFzcyBNb2NrU3lzdGVtSG9zdChvYmplY3QpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBsb2dfZXhlY3V0aXZlPUZhbHNlLCBleGVjdXRpdmVfdGhyb3dzX3do
ZW5fcnVuPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dfZXhlY3V0aXZlPUZhbHNl
LCBleGVjdXRpdmVfdGhyb3dzX3doZW5fcnVuPU5vbmUsIG9zX25hbWU9Tm9uZSwgb3NfdmVyc2lv
bj1Ob25lKToKICAgICAgICAgc2VsZi5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9s
b2c9bG9nX2V4ZWN1dGl2ZSwgc2hvdWxkX3Rocm93X3doZW5fcnVuPWV4ZWN1dGl2ZV90aHJvd3Nf
d2hlbl9ydW4pCiAgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKCkKICAg
ICAgICAgc2VsZi51c2VyID0gTW9ja1VzZXIoKQogICAgICAgICBzZWxmLnBsYXRmb3JtID0gTW9j
a1BsYXRmb3JtSW5mbygpCisgICAgICAgIGlmIG9zX25hbWU6CisgICAgICAgICAgICBzZWxmLnBs
YXRmb3JtLm9zX25hbWUgPSBvc19uYW1lCisgICAgICAgIGlmIG9zX3ZlcnNpb246CisgICAgICAg
ICAgICBzZWxmLnBsYXRmb3JtLm9zX3ZlcnNpb24gPSBvc192ZXJzaW9uCiAKICAgICAgICAgIyBG
SVhNRTogU2hvdWxkIHRoaXMgdGFrZSBwb2ludGVycyB0byB0aGUgZmlsZXN5c3RlbSBhbmQgdGhl
IGV4ZWN1dGl2ZT8KICAgICAgICAgc2VsZi53b3Jrc3BhY2UgPSBNb2NrV29ya3NwYWNlKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBwbGUu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5Cmlu
ZGV4IDAyMjlmN2UyMWQ0OWZlYWQyNzIyYmY2NDMwMjdkNzQ3M2M3NjE1ZDYuLmMyMzhjYTNlNGZj
OGEzOWIzMTA5Y2Y5ZjY4ZjM0NGUxZjExNzY5YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBwbGUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcHBsZS5weQpAQCAtNTYsNyArNTYsNyBAQCBjbGFz
cyBBcHBsZVBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICMgaW5zdGVhZCBvZiB0aGUgaW5kaXZp
ZHVhbCBwb3J0IGNvbnN0cnVjdG9ycy4KICAgICAgICAgcmV0dXJuIHBvcnRfbmFtZVtsZW4oc2Vs
Zi5wb3J0X25hbWUgKyAnLScpOl0KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0
X25hbWU9Tm9uZSwgb3NfdmVyc2lvbl9zdHJpbmc9Tm9uZSwgKiprd2FyZ3MpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBw
b3J0X25hbWUgPSBwb3J0X25hbWUgb3Igc2VsZi5wb3J0X25hbWUKICAgICAgICAgV2ViS2l0UG9y
dC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9cG9ydF9uYW1lLCAqKmt3YXJncykKIApA
QCAtNjcsOCArNjcsNyBAQCBjbGFzcyBBcHBsZVBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICAg
ICBzZWxmLnNldF9vcHRpb25fZGVmYXVsdCgnd2Via2l0X3Rlc3RfcnVubmVyJywgVHJ1ZSkKIAog
ICAgICAgICBpZiBwb3J0X25hbWUgPT0gc2VsZi5wb3J0X25hbWU6Ci0gICAgICAgICAgICAjIEZJ
WE1FOiBVc2UgaG9zdC5wbGF0Zm9ybWluZm8ub3NfdmVyc2lvbiBpbnN0ZWFkLgotICAgICAgICAg
ICAgc2VsZi5fdmVyc2lvbiA9IHNlbGYuX2RldGVjdF92ZXJzaW9uKG9zX3ZlcnNpb25fc3RyaW5n
KSBvciBzZWxmLkZVVFVSRV9WRVJTSU9OCisgICAgICAgICAgICBzZWxmLl92ZXJzaW9uID0gaG9z
dC5wbGF0Zm9ybS5vc192ZXJzaW9uCiAgICAgICAgICAgICBzZWxmLl9uYW1lID0gc2VsZi5wb3J0
X25hbWUgKyAnLScgKyBzZWxmLl92ZXJzaW9uCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBh
bGxvd2VkX3BvcnRfbmFtZXMgPSBzZWxmLlZFUlNJT05fRkFMTEJBQ0tfT1JERVIgKyBbc2VsZi5v
cGVyYXRpbmdfc3lzdGVtKCkgKyAiLWZ1dHVyZSJdCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CmluZGV4IGMxN2Fi
M2UxMzUyM2I2ZjU5NmMxYzFiM2U0ZDg5YzE5ZDhiNjRiYTEuLjQxYTFhNTU1YWUyY2I1ZmU4ZTc0
YTBlMTliYWU5N2ZlNzkyZWZkNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CkBAIC0zMCwxNCArMzAsMTAg
QEAKICIiIkNocm9taXVtIE1hYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2Uu
IiIiCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKIGltcG9ydCBzaWduYWwKIAotZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgbWFjCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5wb3J0IGltcG9ydCBjaHJvbWl1bQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKLQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCiAKQEAgLTgzLDggKzc5LDggQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNo
cm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfbmFtZSBvciAn
Y2hyb21pdW0tbWFjJwogICAgICAgICBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuX19pbml0X18oc2Vs
ZiwgaG9zdCwgcG9ydF9uYW1lPXBvcnRfbmFtZSwgKiprd2FyZ3MpCiAgICAgICAgIGlmIHBvcnRf
bmFtZS5lbmRzd2l0aCgnLW1hYycpOgotICAgICAgICAgICAgIyBGSVhNRTogVXNlIGhvc3QucGxh
dGZvcm1pbmZvLm9zX3ZlcnNpb24gaW5zdGVhZC4KLSAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24g
PSBtYWMub3NfdmVyc2lvbihvc192ZXJzaW9uX3N0cmluZywgc2VsZi5TVVBQT1JURURfT1NfVkVS
U0lPTlMpCisgICAgICAgICAgICBhc3NlcnQgaG9zdC5wbGF0Zm9ybS5pc19tYWMoKQorICAgICAg
ICAgICAgc2VsZi5fdmVyc2lvbiA9IGhvc3QucGxhdGZvcm0ub3NfdmVyc2lvbgogICAgICAgICAg
ICAgc2VsZi5fbmFtZSA9IHBvcnRfbmFtZSArICctJyArIHNlbGYuX3ZlcnNpb24KICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBwb3J0X25hbWVbcG9ydF9uYW1lLmlu
ZGV4KCctbWFjLScpICsgbGVuKCctbWFjLScpOl0KQEAgLTE0MSw3ICsxMzcsNyBAQCBjbGFzcyBD
aHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBkZWYgY2hlY2tfd2Rp
ZmYoc2VsZiwgbG9nZ2luZz1UcnVlKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBXZSdy
ZSBpZ25vcmluZyB0aGUgcmV0dXJuIGFuZCBhbHdheXMgcmV0dXJuaW5nIFRydWUKLSAgICAgICAg
ICAgIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbc2VsZi5fcGF0aF90b193ZGlmZigpXSwg
ZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKQorICAgICAgICAgICAgc2VsZi5f
ZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFtzZWxmLl9wYXRoX3RvX3dkaWZmKCldLCBlcnJvcl9oYW5k
bGVyPXNlbGYuX2V4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9y
OgogICAgICAgICAgICAgaWYgbG9nZ2luZzoKICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmco
J3dkaWZmIG5vdCBmb3VuZC4gSW5zdGFsbCB1c2luZyBNYWNQb3J0cyBvciBzb21lIG90aGVyIG1l
YW5zJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWNfdW5pdHRlc3QucHkKaW5kZXggMDUyZGYxYmZhZGRh
MzRlYTkyZTgwMTRlNGQ1MGE4MGVmMTMxOGQ1Ni4uNGYzNTc2MmZkZjM3ZGI1YzNmYmUyOWJmOTBh
YjM0NjBiNDlkY2Y2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9tYWNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWNfdW5pdHRlc3QucHkKQEAgLTI4
LDQ2ICsyOCw0NCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS50aGlyZHBh
cnR5Lm1vY2sgaW1wb3J0IE1vY2sKLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBv
cnQgTW9ja0hvc3QKLQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgY2hy
b21pdW1fbWFjCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rl
c3RjYXNlCiAKIAogY2xhc3MgQ2hyb21pdW1NYWNQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRU
ZXN0Q2FzZSk6CisgICAgb3NfbmFtZSA9ICdtYWMnCisgICAgb3NfdmVyc2lvbiA9ICdsZW9wYXJk
JwogICAgIHBvcnRfbWFrZXIgPSBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0CiAKICAgICBk
ZWYgdGVzdF9jaGVja193ZGlmZihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYu
bWFrZV9wb3J0KCkuY2hlY2tfd2RpZmYoKSkKIAogICAgIGRlZiBhc3NlcnRfbmFtZShzZWxmLCBw
b3J0X25hbWUsIG9zX3ZlcnNpb25fc3RyaW5nLCBleHBlY3RlZCk6Ci0gICAgICAgIHBvcnQgPSBz
ZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9cG9ydF9uYW1lLCBvc192ZXJzaW9uX3N0cmluZz1vc192
ZXJzaW9uX3N0cmluZykKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KG9zX3ZlcnNpb249
b3NfdmVyc2lvbl9zdHJpbmcsIHBvcnRfbmFtZT1wb3J0X25hbWUpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKGV4cGVjdGVkLCBwb3J0Lm5hbWUoKSkKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb25z
KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5tYWtlX3BvcnQoKS5uYW1lKCkg
aW4gKCdjaHJvbWl1bS1tYWMtbGVvcGFyZCcsICdjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQnLCAn
Y2hyb21pdW0tbWFjLWxpb24nLCAnY2hyb21pdW0tbWFjLWZ1dHVyZScpKQogCi0gICAgICAgIHNl
bGYuYXNzZXJ0X25hbWUoTm9uZSwgJzEwLjUuMycsICdjaHJvbWl1bS1tYWMtbGVvcGFyZCcpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLW1hYycsICcxMC41LjMnLCAnY2hyb21p
dW0tbWFjLWxlb3BhcmQnKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS1tYWMt
bGVvcGFyZCcsICcxMC41LjMnLCAnY2hyb21pdW0tbWFjLWxlb3BhcmQnKQotICAgICAgICBzZWxm
LmFzc2VydF9uYW1lKCdjaHJvbWl1bS1tYWMtbGVvcGFyZCcsICcxMC42LjMnLCAnY2hyb21pdW0t
bWFjLWxlb3BhcmQnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoTm9uZSwgJzEwLjYuMycs
ICdjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQnKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdj
aHJvbWl1bS1tYWMnLCAnMTAuNi4zJywgJ2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZCcpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZCcsICcxMC41LjMn
LCAnY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgn
Y2hyb21pdW0tbWFjLXNub3dsZW9wYXJkJywgJzEwLjYuMycsICdjaHJvbWl1bS1tYWMtc25vd2xl
b3BhcmQnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoTm9uZSwgJzEwLjcnLCAnY2hyb21p
dW0tbWFjLWxpb24nKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKE5vbmUsICcxMC43LjMnLCAn
Y2hyb21pdW0tbWFjLWxpb24nKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKE5vbmUsICcxMC44
JywgJ2Nocm9taXVtLW1hYy1mdXR1cmUnKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJv
bWl1bS1tYWMnLCAnMTAuNy4zJywgJ2Nocm9taXVtLW1hYy1saW9uJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbmFtZSgnY2hyb21pdW0tbWFjLWZ1dHVyZScsICcxMC40LjMnLCAnY2hyb21pdW0tbWFj
LWZ1dHVyZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLW1hYy1mdXR1cmUn
LCAnMTAuNS4zJywgJ2Nocm9taXVtLW1hYy1mdXR1cmUnKQotICAgICAgICBzZWxmLmFzc2VydF9u
YW1lKCdjaHJvbWl1bS1tYWMtZnV0dXJlJywgJzEwLjYuMycsICdjaHJvbWl1bS1tYWMtZnV0dXJl
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0tbWFjLWZ1dHVyZScsICcxMC43
LjMnLCAnY2hyb21pdW0tbWFjLWZ1dHVyZScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
QXNzZXJ0aW9uRXJyb3IsIHNlbGYuYXNzZXJ0X25hbWUsIE5vbmUsICcxMC40LjEnLCAnc2hvdWxk
LXJhaXNlLWFzc2VydGlvbi1zby10aGlzLXZhbHVlLWRvZXMtbm90LW1hdHRlcicpCisgICAgICAg
IHNlbGYuYXNzZXJ0X25hbWUoTm9uZSwgJ2xlb3BhcmQnLCAnY2hyb21pdW0tbWFjLWxlb3BhcmQn
KQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS1tYWMnLCAnbGVvcGFyZCcsICdj
aHJvbWl1bS1tYWMtbGVvcGFyZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVt
LW1hYy1sZW9wYXJkJywgJ2xlb3BhcmQnLCAnY2hyb21pdW0tbWFjLWxlb3BhcmQnKQorICAgICAg
ICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS1tYWMtbGVvcGFyZCcsICdzbm93bGVvcGFyZCcs
ICdjaHJvbWl1bS1tYWMtbGVvcGFyZCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25l
LCAnc25vd2xlb3BhcmQnLCAnY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbmFtZSgnY2hyb21pdW0tbWFjJywgJ3Nub3dsZW9wYXJkJywgJ2Nocm9taXVtLW1h
Yy1zbm93bGVvcGFyZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLW1hYy1z
bm93bGVvcGFyZCcsICdsZW9wYXJkJywgJ2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZCcsICdzbm93bGVv
cGFyZCcsICdjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
X25hbWUoTm9uZSwgJ2xpb24nLCAnY2hyb21pdW0tbWFjLWxpb24nKQorICAgICAgICBzZWxmLmFz
c2VydF9uYW1lKE5vbmUsICdmdXR1cmUnLCAnY2hyb21pdW0tbWFjLWZ1dHVyZScpCisgICAgICAg
IHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLW1hYycsICdsaW9uJywgJ2Nocm9taXVtLW1hYy1s
aW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0tbWFjLWZ1dHVyZScsICd0
aWdlcicsICdjaHJvbWl1bS1tYWMtZnV0dXJlJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgn
Y2hyb21pdW0tbWFjLWZ1dHVyZScsICdsZW9wYXJkJywgJ2Nocm9taXVtLW1hYy1mdXR1cmUnKQor
ICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS1tYWMtZnV0dXJlJywgJ3Nub3dsZW9w
YXJkJywgJ2Nocm9taXVtLW1hYy1mdXR1cmUnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdj
aHJvbWl1bS1tYWMtZnV0dXJlJywgJ2xpb24nLCAnY2hyb21pdW0tbWFjLWZ1dHVyZScpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHNlbGYuYXNzZXJ0X25hbWUs
IE5vbmUsICd0aWdlcicsICdzaG91bGQtcmFpc2UtYXNzZXJ0aW9uLXNvLXRoaXMtdmFsdWUtZG9l
cy1ub3QtbWF0dGVyJykKIAogICAgIGRlZiB0ZXN0X2Jhc2VsaW5lX3BhdGgoc2VsZik6CiAgICAg
ICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J2Nocm9taXVtLW1hYy1sZW9wYXJk
JykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CmluZGV4IDg0MDYxYThlYmFhNzZiZjYwNTlhMWE0
NjgxZmZlNmEyZGExOTYwZjAuLmRlYzliNDUzMjRlMTJmNTVjYjgwNzljN2U4YjhlMWM3MWMzMzdh
ZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQpAQCAtMzQsNyArMzQsNyBAQCBpbXBvcnQg
dW5pdHRlc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndGVzdGluZwog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhl
Y3V0aXZlLCBNb2NrRXhlY3V0aXZlMgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVz
eXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLmhv
c3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0
ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkubW9jayBpbXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBN
b2NrT3B0aW9ucwogCkBAIC0xNTgsNyArMTU4LDcgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0VGVzdChw
b3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9hbGxfdGVzdF9jb25m
aWd1cmF0aW9ucyhzZWxmKToKICAgICAgICAgIiIiVmFsaWRhdGUgdGhlIGNvbXBsZXRlIHNldCBv
ZiBjb25maWd1cmF0aW9ucyB0aGlzIHBvcnQga25vd3MgYWJvdXQuIiIiCi0gICAgICAgIHBvcnQg
PSBjaHJvbWl1bS5DaHJvbWl1bVBvcnQoTW9ja0hvc3QoKSkKKyAgICAgICAgcG9ydCA9IGNocm9t
aXVtLkNocm9taXVtUG9ydChNb2NrU3lzdGVtSG9zdCgpKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzZXQocG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpKSwgc2V0KFsKICAgICAgICAg
ICAgIFRlc3RDb25maWd1cmF0aW9uKCdsZW9wYXJkJywgJ3g4NicsICdkZWJ1ZycsICdjcHUnKSwK
ICAgICAgICAgICAgIFRlc3RDb25maWd1cmF0aW9uKCdsZW9wYXJkJywgJ3g4NicsICdkZWJ1Zycs
ICdncHUnKSwKQEAgLTIwOSw3ICsyMDksNyBAQCBjbGFzcyBDaHJvbWl1bVBvcnRUZXN0KHBvcnRf
dGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICBjbGFzcyBUZXN0TWFjUG9ydChjaHJvbWl1bV9t
YWMuQ2hyb21pdW1NYWNQb3J0KToKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnM9
Tm9uZSk6CiAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyBvciBNb2NrT3B0aW9ucygpCi0g
ICAgICAgICAgICBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0Ll9faW5pdF9fKHNlbGYsIE1v
Y2tIb3N0KCksIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgICAgIGNocm9taXVtX21hYy5DaHJv
bWl1bU1hY1BvcnQuX19pbml0X18oc2VsZiwgTW9ja1N5c3RlbUhvc3Qob3NfbmFtZT0nbWFjJywg
b3NfdmVyc2lvbj0nbGVvcGFyZCcpLCBvcHRpb25zPW9wdGlvbnMpCiAKICAgICAgICAgZGVmIGRl
ZmF1bHRfY29uZmlndXJhdGlvbihzZWxmKToKICAgICAgICAgICAgIHNlbGYuZGVmYXVsdF9jb25m
aWd1cmF0aW9uX2NhbGxlZCA9IFRydWUKQEAgLTIxOCw3ICsyMTgsNyBAQCBjbGFzcyBDaHJvbWl1
bVBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICBjbGFzcyBUZXN0TGlu
dXhQb3J0KGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0KToKICAgICAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG9wdGlvbnM9Tm9uZSk6CiAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9u
cyBvciBNb2NrT3B0aW9ucygpCi0gICAgICAgICAgICBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxp
bnV4UG9ydC5fX2luaXRfXyhzZWxmLCBNb2NrSG9zdCgpLCBvcHRpb25zPW9wdGlvbnMpCisgICAg
ICAgICAgICBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydC5fX2luaXRfXyhzZWxmLCBN
b2NrU3lzdGVtSG9zdChvc19uYW1lPSdsaW51eCcsIG9zX3ZlcnNpb249J2x1Y2lkJyksIG9wdGlv
bnM9b3B0aW9ucykKIAogICAgICAgICBkZWYgZGVmYXVsdF9jb25maWd1cmF0aW9uKHNlbGYpOgog
ICAgICAgICAgICAgc2VsZi5kZWZhdWx0X2NvbmZpZ3VyYXRpb25fY2FsbGVkID0gVHJ1ZQpAQCAt
MjI3LDcgKzIyNyw3IEBAIGNsYXNzIENocm9taXVtUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0
VGVzdENhc2UpOgogICAgIGNsYXNzIFRlc3RXaW5Qb3J0KGNocm9taXVtX3dpbi5DaHJvbWl1bVdp
blBvcnQpOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucz1Ob25lKToKICAgICAg
ICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIG9yIE1vY2tPcHRpb25zKCkKLSAgICAgICAgICAgIGNo
cm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQuX19pbml0X18oc2VsZiwgTW9ja0hvc3QoKSwgb3B0
aW9ucz1vcHRpb25zKQorICAgICAgICAgICAgY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydC5f
X2luaXRfXyhzZWxmLCBNb2NrU3lzdGVtSG9zdChvc19uYW1lPSd3aW4nLCBvc192ZXJzaW9uPSd4
cCcpLCBvcHRpb25zPW9wdGlvbnMpCiAKICAgICAgICAgZGVmIGRlZmF1bHRfY29uZmlndXJhdGlv
bihzZWxmKToKICAgICAgICAgICAgIHNlbGYuZGVmYXVsdF9jb25maWd1cmF0aW9uX2NhbGxlZCA9
IFRydWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fd2luLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV93aW4ucHkKaW5kZXggYzdlMTQ4NTk5MjFjYmI0MTg2NjQzYjE3Mjc4ODIw
OTg2MTgzYzNmOC4uYTFiM2EyYTI4NGZjOTYxMmViMDU4YjI2OWM1YjVhNDJhNTQwNmJkYyAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV93aW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV93aW4ucHkKQEAgLTMxLDcgKzMxLDYgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgbG9n
Z2luZwotaW1wb3J0IHN5cwogCiBpbXBvcnQgY2hyb21pdW0KIApAQCAtMzksMjIgKzM4LDYgQEAg
aW1wb3J0IGNocm9taXVtCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAot
ZGVmIG9zX3ZlcnNpb24od2luZG93c192ZXJzaW9uPU5vbmUpOgotICAgIGlmIG5vdCB3aW5kb3dz
X3ZlcnNpb246Ci0gICAgICAgIGlmIGhhc2F0dHIoc3lzLCAnZ2V0d2luZG93c3ZlcnNpb24nKToK
LSAgICAgICAgICAgIHdpbmRvd3NfdmVyc2lvbiA9IHR1cGxlKHN5cy5nZXR3aW5kb3dzdmVyc2lv
bigpWzoyXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTWFrZSB1cCBzb21ldGhpbmcg
Zm9yIHRlc3RpbmcuCi0gICAgICAgICAgICB3aW5kb3dzX3ZlcnNpb24gPSAoNSwgMSkKLQotICAg
IHZlcnNpb25fc3RyaW5ncyA9IHsKLSAgICAgICAgKDYsIDEpOiAnd2luNycsCi0gICAgICAgICg2
LCAwKTogJ3Zpc3RhJywKLSAgICAgICAgKDUsIDEpOiAneHAnLAotICAgIH0KLSAgICByZXR1cm4g
dmVyc2lvbl9zdHJpbmdzW3dpbmRvd3NfdmVyc2lvbl0KLQotCiBjbGFzcyBDaHJvbWl1bVdpblBv
cnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAjIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0
byB1bmlmeSB0aGlzIHdpdGggYmFzZS5UZXN0Q29uZmlndXJhdGlvbi5hbGxfc3lzdGVtcygpPwog
ICAgIFNVUFBPUlRFRF9WRVJTSU9OUyA9ICgneHAnLCAndmlzdGEnLCAnd2luNycpCkBAIC05MCwx
MSArNzMsMTUgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6
CiAgICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfbmFtZSBvciAnY2hyb21pdW0td2luJwogICAgICAg
ICBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lPXBv
cnRfbmFtZSwgKiprd2FyZ3MpCiAgICAgICAgIGlmIHBvcnRfbmFtZS5lbmRzd2l0aCgnLXdpbicp
OgotICAgICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IG9zX3ZlcnNpb24od2luZG93c192ZXJzaW9u
KQorICAgICAgICAgICAgYXNzZXJ0IGhvc3QucGxhdGZvcm0uaXNfd2luKCkKKyAgICAgICAgICAg
IGlmIGhvc3QucGxhdGZvcm0ub3NfdmVyc2lvbiA9PSAnN3NwMCc6CisgICAgICAgICAgICAgICAg
c2VsZi5fdmVyc2lvbiA9ICd3aW43JworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBzZWxmLl92ZXJzaW9uID0gaG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uCiAgICAgICAgICAgICBz
ZWxmLl9uYW1lID0gcG9ydF9uYW1lICsgJy0nICsgc2VsZi5fdmVyc2lvbgogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHBvcnRfbmFtZVtwb3J0X25hbWUuaW5kZXgo
Jy13aW4tJykgKyBsZW4oJy13aW4tJyk6XQotICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX3ZlcnNp
b24gaW4gc2VsZi5TVVBQT1JURURfVkVSU0lPTlMsICIlcyBpcyBub3QgaW4gJXMiICUgKHNlbGYu
X3ZlcnNpb24sIHNlbGYuU1VQUE9SVEVEX1ZFUlNJT05TKQorICAgICAgICBhc3NlcnQgc2VsZi5f
dmVyc2lvbiBpbiBzZWxmLlNVUFBPUlRFRF9WRVJTSU9OUywgIiVzIGlzIG5vdCBpbiAlcyIgJSAo
c2VsZi5fdmVyc2lvbiwgc2VsZi5TVVBQT1JURURfVkVSU0lPTlMpCiAKIAogICAgIGRlZiBzZXR1
cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2VydmVyX25hbWU9Tm9uZSk6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbl91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fd2luX3VuaXR0ZXN0LnB5CmluZGV4IDcxNmVmOTAxZWIwMmY0MzIxOTRhYWM1NzYyZjdj
NmFlY2RkNWNkY2QuLjQwYTllOTI2MWUyOTViMjFhZjEzMzhjNWQwMjEwNDI3ZGY1NGY0MmUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fd2luX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fd2luX3VuaXR0ZXN0LnB5CkBAIC0yNywxNCArMjcsMTEgQEAKICMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVt
Ci0KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNocm9taXVtX3dpbgog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogCkBA
IC00Niw2ICs0Myw4IEBAIGNsYXNzIENocm9taXVtV2luVGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRU
ZXN0Q2FzZSk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5ID0gJy8nCiAKICAg
ICBwb3J0X21ha2VyID0gY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydAorICAgIG9zX25hbWUg
PSAnd2luJworICAgIG9zX3ZlcnNpb24gPSAneHAnCiAKICAgICBkZWYgdGVzdF91c2VzX2FwYWNo
ZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLm1ha2VfcG9ydCgpLl91c2Vz
X2FwYWNoZSgpKQpAQCAtNzIsNTQgKzcxLDQ5IEBAIGNsYXNzIENocm9taXVtV2luVGVzdChwb3J0
X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIG91dHB1dCA9IG91dHB1dGNhcHR1cmUu
T3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIG91dHB1dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0
LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlciwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVy
cikKIAotICAgIGRlZiBhc3NlcnRfbmFtZShzZWxmLCBwb3J0X25hbWUsIHdpbmRvd3NfdmVyc2lv
biwgZXhwZWN0ZWQpOgotICAgICAgICBwb3J0ID0gY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9y
dChNb2NrSG9zdCgpLCBwb3J0X25hbWU9cG9ydF9uYW1lLCB3aW5kb3dzX3ZlcnNpb249d2luZG93
c192ZXJzaW9uKQorICAgIGRlZiBhc3NlcnRfbmFtZShzZWxmLCBwb3J0X25hbWUsIG9zX3ZlcnNp
b25fc3RyaW5nLCBleHBlY3RlZCk6CisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0
X25hbWU9cG9ydF9uYW1lLCBvc192ZXJzaW9uPW9zX3ZlcnNpb25fc3RyaW5nKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZCwgcG9ydC5uYW1lKCkpCiAKICAgICBkZWYgdGVzdF92
ZXJzaW9ucyhzZWxmKToKLSAgICAgICAgcG9ydCA9IGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBv
cnQoTW9ja0hvc3QoKSkKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHBvcnQubmFtZSgpIGluICgnY2hyb21pdW0td2luLXhwJywgJ2Nocm9t
aXVtLXdpbi12aXN0YScsICdjaHJvbWl1bS13aW4td2luNycpKQogCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X25hbWUoTm9uZSwgKDUsIDEpLCAnY2hyb21pdW0td2luLXhwJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbmFtZSgnY2hyb21pdW0td2luJywgKDUsIDEpLCAnY2hyb21pdW0td2luLXhwJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0td2luLXhwJywgKDUsIDEpLCAnY2hyb21p
dW0td2luLXhwJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0td2luLXhwJywg
KDYsIDApLCAnY2hyb21pdW0td2luLXhwJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hy
b21pdW0td2luLXhwJywgKDYsIDEpLCAnY2hyb21pdW0td2luLXhwJykKLQotICAgICAgICBzZWxm
LmFzc2VydF9uYW1lKE5vbmUsICg2LCAwKSwgJ2Nocm9taXVtLXdpbi12aXN0YScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLXdpbicsICg2LCAwKSwgJ2Nocm9taXVtLXdpbi12
aXN0YScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLXdpbi12aXN0YScsICg1
LCAxKSwgJ2Nocm9taXVtLXdpbi12aXN0YScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2No
cm9taXVtLXdpbi12aXN0YScsICg2LCAwKSwgJ2Nocm9taXVtLXdpbi12aXN0YScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLXdpbi12aXN0YScsICg2LCAxKSwgJ2Nocm9taXVt
LXdpbi12aXN0YScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25lLCAoNiwgMSksICdj
aHJvbWl1bS13aW4td2luNycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLXdp
bicsICg2LCAxKSwgJ2Nocm9taXVtLXdpbi13aW43JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFt
ZSgnY2hyb21pdW0td2luLXdpbjcnLCAoNSwgMSksICdjaHJvbWl1bS13aW4td2luNycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLXdpbi13aW43JywgKDYsIDApLCAnY2hyb21p
dW0td2luLXdpbjcnKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13aW4td2lu
NycsICg2LCAxKSwgJ2Nocm9taXVtLXdpbi13aW43JykKLQotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhLZXlFcnJvciwgc2VsZi5hc3NlcnRfbmFtZSwgTm9uZSwgKDQsIDApLCAnY2hyb21pdW0t
d2luLXhwJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNlbGYuYXNzZXJ0
X25hbWUsIE5vbmUsICg1LCAwKSwgJ2Nocm9taXVtLXdpbi14cCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKEtleUVycm9yLCBzZWxmLmFzc2VydF9uYW1lLCBOb25lLCAoNSwgMiksICdjaHJv
bWl1bS13aW4teHAnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2VsZi5h
c3NlcnRfbmFtZSwgTm9uZSwgKDcsIDEpLCAnY2hyb21pdW0td2luLXhwJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbmFtZShOb25lLCAneHAnLCAnY2hyb21pdW0td2luLXhwJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbmFtZSgnY2hyb21pdW0td2luJywgJ3hwJywgJ2Nocm9taXVtLXdpbi14cCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLXdpbi14cCcsICd4cCcsICdjaHJvbWl1
bS13aW4teHAnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13aW4teHAnLCAn
dmlzdGEnLCAnY2hyb21pdW0td2luLXhwJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hy
b21pdW0td2luLXhwJywgJzdzcDAnLCAnY2hyb21pdW0td2luLXhwJykKKworICAgICAgICBzZWxm
LmFzc2VydF9uYW1lKE5vbmUsICd2aXN0YScsICdjaHJvbWl1bS13aW4tdmlzdGEnKQorICAgICAg
ICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13aW4nLCAndmlzdGEnLCAnY2hyb21pdW0td2lu
LXZpc3RhJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0td2luLXZpc3RhJywg
J3hwJywgJ2Nocm9taXVtLXdpbi12aXN0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2No
cm9taXVtLXdpbi12aXN0YScsICd2aXN0YScsICdjaHJvbWl1bS13aW4tdmlzdGEnKQorICAgICAg
ICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13aW4tdmlzdGEnLCAnN3NwMCcsICdjaHJvbWl1
bS13aW4tdmlzdGEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoTm9uZSwgJzdzcDAnLCAn
Y2hyb21pdW0td2luLXdpbjcnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13
aW4nLCAnN3NwMCcsICdjaHJvbWl1bS13aW4td2luNycpCisgICAgICAgIHNlbGYuYXNzZXJ0X25h
bWUoJ2Nocm9taXVtLXdpbi13aW43JywgJ3hwJywgJ2Nocm9taXVtLXdpbi13aW43JykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0td2luLXdpbjcnLCAndmlzdGEnLCAnY2hyb21p
dW0td2luLXdpbjcnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13aW4td2lu
NycsICc3c3AwJywgJ2Nocm9taXVtLXdpbi13aW43JykKKworICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhBc3NlcnRpb25FcnJvciwgc2VsZi5hc3NlcnRfbmFtZSwgTm9uZSwgJ3cyaycsICdjaHJv
bWl1bS13aW4teHAnKQogCiAgICAgZGVmIHRlc3RfYmFzZWxpbmVfcGF0aChzZWxmKToKLSAgICAg
ICAgcG9ydCA9IGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQoTW9ja0hvc3QoKSwgcG9ydF9u
YW1lPSdjaHJvbWl1bS13aW4teHAnKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9y
dF9uYW1lPSdjaHJvbWl1bS13aW4teHAnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0
LmJhc2VsaW5lX3BhdGgoKSwgcG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtLXdp
bi14cCcpKQogCi0gICAgICAgIHBvcnQgPSBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0KE1v
Y2tIb3N0KCksIHBvcnRfbmFtZT0nY2hyb21pdW0td2luLXZpc3RhJykKKyAgICAgICAgcG9ydCA9
IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nY2hyb21pdW0td2luLXZpc3RhJykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMocG9ydC5iYXNlbGluZV9wYXRoKCksIHBvcnQuX3dlYmtpdF9iYXNl
bGluZV9wYXRoKCdjaHJvbWl1bS13aW4tdmlzdGEnKSkKIAotICAgICAgICBwb3J0ID0gY2hyb21p
dW1fd2luLkNocm9taXVtV2luUG9ydChNb2NrSG9zdCgpLCBwb3J0X25hbWU9J2Nocm9taXVtLXdp
bi13aW43JykKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nY2hyb21p
dW0td2luLXdpbjcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0LmJhc2VsaW5lX3Bh
dGgoKSwgcG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtLXdpbicpKQogCiAgICAg
ZGVmIHRlc3RfYnVpbGRfcGF0aChzZWxmKToKLSAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAg
ICAgICAgaG9zdC5maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXM9eworICAgICAgICBw
b3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLmZpbGVzID0g
ewogICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnVp
bGQvUmVsZWFzZS9EdW1wUmVuZGVyVHJlZS5leGUnOiAnZXhlJywKLSAgICAgICAgfSkKLQotICAg
ICAgICBwb3J0ID0gY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydChob3N0KQorICAgICAgICB9
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAogICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnVpbGQvUmVsZWFzZS9EdW1wUmVuZGVyVHJlZS5leGUn
LAogICAgICAgICAgICAgcG9ydC5fcGF0aF90b19kcml2ZXIoJ1JlbGVhc2UnKSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQppbmRl
eCA4ZDYxYTk0NTdlMTBkMzJkNjYxMzFhZjUxODE1OWE0YzZkODJmOGQxLi43MDk1MDBkMzU1ZTcw
MjMwNmFkMzE4MWE1YmEyNDA5MTZlY2U3OGZlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5CkBAIC0zMCw3ICszMCw2IEBACiAi
IiJGYWN0b3J5IG1ldGhvZCB0byByZXRyaWV2ZSB0aGUgYXBwcm9wcmlhdGUgcG9ydCBpbXBsZW1l
bnRhdGlvbi4iIiIKIAogaW1wb3J0IHJlCi1pbXBvcnQgc3lzCiAKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJzCiAKQEAgLTQ3LDM1ICs0NiwzNCBAQCBjbGFz
cyBQb3J0RmFjdG9yeShvYmplY3QpOgogCiAgICAgZGVmIF9wb3J0X25hbWVfZnJvbV9hcmd1bWVu
dHNfYW5kX29wdGlvbnMoc2VsZiwgcG9ydF9uYW1lLCBvcHRpb25zLCBwbGF0Zm9ybSk6CiAgICAg
ICAgIGlmIHBvcnRfbmFtZSA9PSAnY2hyb21pdW0tZ3B1JzoKLSAgICAgICAgICAgIGlmIHBsYXRm
b3JtIGluICgnY3lnd2luJywgJ3dpbjMyJyk6CisgICAgICAgICAgICBpZiBwbGF0Zm9ybS5pc193
aW4oKToKICAgICAgICAgICAgICAgICByZXR1cm4gJ2Nocm9taXVtLWdwdS13aW4nCi0gICAgICAg
ICAgICBpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgorICAgICAgICAgICAgaWYgcGxh
dGZvcm0uaXNfbGludXgoKToKICAgICAgICAgICAgICAgICByZXR1cm4gJ2Nocm9taXVtLWdwdS1s
aW51eCcKLSAgICAgICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAg
aWYgcGxhdGZvcm0uaXNfbWFjKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdjaHJvbWl1bS1n
cHUtbWFjJwogCiAgICAgICAgIGlmIHBvcnRfbmFtZToKICAgICAgICAgICAgIHJldHVybiBwb3J0
X25hbWUKIAotICAgICAgICBpZiBwbGF0Zm9ybSBpbiAoJ3dpbjMyJywgJ2N5Z3dpbicpOgorICAg
ICAgICBpZiBwbGF0Zm9ybS5pc193aW4oKToKICAgICAgICAgICAgIGlmIG9wdGlvbnMgYW5kIGhh
c2F0dHIob3B0aW9ucywgJ2Nocm9taXVtJykgYW5kIG9wdGlvbnMuY2hyb21pdW06CiAgICAgICAg
ICAgICAgICAgcmV0dXJuICdjaHJvbWl1bS13aW4nCiAgICAgICAgICAgICByZXR1cm4gJ3dpbicK
LSAgICAgICAgaWYgcGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKKyAgICAgICAgaWYgcGxh
dGZvcm0uaXNfbGludXgoKToKICAgICAgICAgICAgIHJldHVybiAnY2hyb21pdW0tbGludXgnCi0g
ICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBwbGF0Zm9ybS5pc19t
YWMoKToKICAgICAgICAgICAgIGlmIG9wdGlvbnMgYW5kIGhhc2F0dHIob3B0aW9ucywgJ2Nocm9t
aXVtJykgYW5kIG9wdGlvbnMuY2hyb21pdW06CiAgICAgICAgICAgICAgICAgcmV0dXJuICdjaHJv
bWl1bS1tYWMnCiAgICAgICAgICAgICByZXR1cm4gJ21hYycKIAotICAgICAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yKCd1bmtub3duIHBvcnQ7IHBsYXRmb3JtID0gIiVzIicgJSBwbGF0Zm9y
bSkKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5rbm93biBwb3J0OyBvc19u
YW1lID0gIiVzIicgJSBwbGF0Zm9ybS5vc19uYW1lKQogCi0gICAgZGVmIGdldChzZWxmLCBwb3J0
X25hbWU9Tm9uZSwgb3B0aW9ucz1Ob25lLCBwbGF0Zm9ybT1Ob25lLCAqKmt3YXJncyk6CisgICAg
ZGVmIGdldChzZWxmLCBwb3J0X25hbWU9Tm9uZSwgb3B0aW9ucz1Ob25lLCAqKmt3YXJncyk6CiAg
ICAgICAgICIiIlJldHVybnMgYW4gb2JqZWN0IGltcGxlbWVudGluZyB0aGUgUG9ydCBpbnRlcmZh
Y2UuIElmCiAgICAgICAgIHBvcnRfbmFtZSBpcyBOb25lLCB0aGlzIHJvdXRpbmUgYXR0ZW1wdHMg
dG8gZ3Vlc3MgYXQgdGhlIG1vc3QKICAgICAgICAgYXBwcm9wcmlhdGUgcG9ydCBvbiB0aGlzIHBs
YXRmb3JtLiIiIgotICAgICAgICBwbGF0Zm9ybSA9IHBsYXRmb3JtIG9yIHN5cy5wbGF0Zm9ybQot
ICAgICAgICBwb3J0X3RvX3VzZSA9IHNlbGYuX3BvcnRfbmFtZV9mcm9tX2FyZ3VtZW50c19hbmRf
b3B0aW9ucyhwb3J0X25hbWUsIG9wdGlvbnMsIHBsYXRmb3JtKQorICAgICAgICBwb3J0X3RvX3Vz
ZSA9IHNlbGYuX3BvcnRfbmFtZV9mcm9tX2FyZ3VtZW50c19hbmRfb3B0aW9ucyhwb3J0X25hbWUs
IG9wdGlvbnMsIHNlbGYuX2hvc3QucGxhdGZvcm0pCiAgICAgICAgIGlmIHBvcnRfdG9fdXNlLnN0
YXJ0c3dpdGgoJ3Rlc3QnKToKICAgICAgICAgICAgIGltcG9ydCB0ZXN0CiAgICAgICAgICAgICBt
YWtlciA9IHRlc3QuVGVzdFBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQppbmRleCBiZTA1MDIy
ZTU1NTU2NjYwZDVlODBjMGZkNTM4Y2YzNmVkNWNlMTNiLi4xYjFmZjNmM2ZjYjkyZmJiNzdkODMx
ODlmNmY4ZmY4MzhlM2ZhNGNkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CkBAIC0yNiwxOCAr
MjYsMTcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBzeXMKIGlt
cG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tP
cHRpb25zCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9y
dCBNb2NrU3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5mYWN0b3J5
IGltcG9ydCBQb3J0RmFjdG9yeQogCiBpbXBvcnQgY2hyb21pdW1fZ3B1CiBpbXBvcnQgY2hyb21p
dW1fbGludXgKIGltcG9ydCBjaHJvbWl1bV9tYWMKIGltcG9ydCBjaHJvbWl1bV93aW4KIGltcG9y
dCBkcnlydW4KLWltcG9ydCBmYWN0b3J5CiBpbXBvcnQgZ29vZ2xlX2Nocm9tZQogaW1wb3J0IGd0
awogaW1wb3J0IG1hYwpAQCAtNDcsMTE5ICs0Niw5NSBAQCBpbXBvcnQgd2luCiAKIAogY2xhc3Mg
RmFjdG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3QgZmFjdG9yeSBjcmVh
dGVzIHByb3BlciBwb3J0IG9iamVjdCBmb3IgdGhlIHRhcmdldC4KLQotICAgIFRhcmdldCBpcyBz
cGVjaWZpZWQgYnkgcG9ydF9uYW1lLCBzeXMucGxhdGZvcm0gYW5kIG9wdGlvbnMuCi0KLSAgICAi
IiIKKyAgICAiIiJUZXN0IHRoYXQgdGhlIGZhY3RvcnkgY3JlYXRlcyB0aGUgcHJvcGVyIHBvcnQg
b2JqZWN0IGZvciBnaXZlbiBjb21iaW5hdGlvbiBvZiBwb3J0X25hbWUsIGhvc3QucGxhdGZvcm0s
IGFuZCBvcHRpb25zLiIiIgogICAgICMgRklYTUU6IFRoZSBwb3J0cyB0aGVtc2VsdmVzIHNob3Vs
ZCBleHBvc2Ugd2hhdCBvcHRpb25zIHRoZXkgcmVxdWlyZSwKICAgICAjIGluc3RlYWQgb2YgcGFz
c2luZyBnZW5lcmljICJvcHRpb25zIi4KIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAg
c2VsZi5yZWFsX3N5c19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQogICAgICAgICBzZWxmLndlYmtp
dF9vcHRpb25zID0gTW9ja09wdGlvbnMocGl4ZWxfdGVzdHM9RmFsc2UpCiAgICAgICAgIHNlbGYu
Y2hyb21pdW1fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHBpeGVsX3Rlc3RzPUZhbHNlLCBjaHJvbWl1
bT1UcnVlKQotICAgICAgICBzZWxmLmZhY3RvcnkgPSBmYWN0b3J5LlBvcnRGYWN0b3J5KE1vY2tT
eXN0ZW1Ib3N0KCkpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHN5cy5wbGF0
Zm9ybSA9IHNlbGYucmVhbF9zeXNfcGxhdGZvcm0KLQotICAgIGRlZiBhc3NlcnRfcG9ydChzZWxm
LCBwb3J0X25hbWUsIGV4cGVjdGVkX3BvcnQsIHBvcnRfb2JqPU5vbmUsIHBsYXRmb3JtPU5vbmUp
OgotICAgICAgICAiIiJIZWxwZXIgYXNzZXJ0IGZvciBwb3J0X25hbWUuCi0KLSAgICAgICAgQXJn
czoKLSAgICAgICAgICBwb3J0X25hbWU6IHBvcnQgbmFtZSB0byBnZXQgcG9ydCBvYmplY3QuCi0g
ICAgICAgICAgZXhwZWN0ZWRfcG9ydDogY2xhc3Mgb2YgZXhwZWN0ZWQgcG9ydCBvYmplY3QuCi0g
ICAgICAgICAgcG9ydF9vYmo6IG9wdGlvbmFsIHBvcnQgb2JqZWN0Ci0gICAgICAgICIiIgotICAg
ICAgICBwb3J0X29iaiA9IHBvcnRfb2JqIG9yIHNlbGYuZmFjdG9yeS5nZXQocG9ydF9uYW1lPXBv
cnRfbmFtZSwgcGxhdGZvcm09cGxhdGZvcm0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2lu
c3RhbmNlKHBvcnRfb2JqLCBleHBlY3RlZF9wb3J0KSkKLQotICAgIGRlZiBhc3NlcnRfcGxhdGZv
cm1fcG9ydChzZWxmLCBwbGF0Zm9ybSwgb3B0aW9ucywgZXhwZWN0ZWRfcG9ydCk6Ci0gICAgICAg
ICIiIkhlbHBlciBhc3NlcnQgZm9yIHBsYXRmb3JtIGFuZCBvcHRpb25zLgotCi0gICAgICAgIEFy
Z3M6Ci0gICAgICAgICAgcGxhdGZvcm06IHN5cy5wbGF0Zm9ybS4KLSAgICAgICAgICBvcHRpb25z
OiBvcHRpb25zIHRvIGdldCBwb3J0IG9iamVjdC4KLSAgICAgICAgICBleHBlY3RlZF9wb3J0OiBj
bGFzcyBvZiBleHBlY3RlZCBwb3J0IG9iamVjdC4KLQotICAgICAgICAiIiIKLSAgICAgICAgIyBG
SVhNRTogSGFja2luZyBzeXMucGxhdGZvcm0gbGlrZSB0aGlzIGlzIFdST05HLgotICAgICAgICBv
cmlnX3BsYXRmb3JtID0gc3lzLnBsYXRmb3JtCi0gICAgICAgIHN5cy5wbGF0Zm9ybSA9IHBsYXRm
b3JtCi0gICAgICAgICMgRklYTUU6IFdlIG5lZWQgYSBiZXR0ZXIgd2F5IHRvIG1vY2sgdGhpcy4K
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5mYWN0b3J5LmdldChvcHRp
b25zPW9wdGlvbnMpLCBleHBlY3RlZF9wb3J0KSkKLSAgICAgICAgc3lzLnBsYXRmb3JtID0gb3Jp
Z19wbGF0Zm9ybQorCisgICAgZGVmIGFzc2VydF9wb3J0KHNlbGYsIHBvcnRfbmFtZT1Ob25lLCBv
c19uYW1lPU5vbmUsIG9zX3ZlcnNpb249Tm9uZSwgb3B0aW9ucz1Ob25lLCBjbHM9Tm9uZSk6Cisg
ICAgICAgIGhvc3QgPSBNb2NrU3lzdGVtSG9zdChvc19uYW1lPW9zX25hbWUsIG9zX3ZlcnNpb249
b3NfdmVyc2lvbikKKyAgICAgICAgcG9ydCA9IFBvcnRGYWN0b3J5KGhvc3QpLmdldChwb3J0X25h
bWUsIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uo
cG9ydCwgY2xzKSkKIAogICAgIGRlZiB0ZXN0X21hYyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRfcG9ydCgibWFjIiwgbWFjLk1hY1BvcnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X3BsYXRmb3Jt
X3BvcnQoImRhcndpbiIsIE5vbmUsIG1hYy5NYWNQb3J0KQotICAgICAgICBzZWxmLmFzc2VydF9w
bGF0Zm9ybV9wb3J0KCJkYXJ3aW4iLCBzZWxmLndlYmtpdF9vcHRpb25zLCBtYWMuTWFjUG9ydCkK
KyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9J21hYycsIGNscz1tYWMuTWFjUG9y
dCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9Tm9uZSwgIG9zX25hbWU9J21h
YycsIG9zX3ZlcnNpb249J2xlb3BhcmQnLCBjbHM9bWFjLk1hY1BvcnQpCiAKICAgICBkZWYgdGVz
dF93aW4oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoIndpbiIsIHdpbi5XaW5Qb3J0
KQotICAgICAgICBzZWxmLmFzc2VydF9wbGF0Zm9ybV9wb3J0KCJ3aW4zMiIsIE5vbmUsIHdpbi5X
aW5Qb3J0KQotICAgICAgICBzZWxmLmFzc2VydF9wbGF0Zm9ybV9wb3J0KCJ3aW4zMiIsIHNlbGYu
d2Via2l0X29wdGlvbnMsIHdpbi5XaW5Qb3J0KQotICAgICAgICBzZWxmLmFzc2VydF9wbGF0Zm9y
bV9wb3J0KCJjeWd3aW4iLCBOb25lLCB3aW4uV2luUG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRf
cGxhdGZvcm1fcG9ydCgiY3lnd2luIiwgc2VsZi53ZWJraXRfb3B0aW9ucywgd2luLldpblBvcnQp
CisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQocG9ydF9uYW1lPSd3aW4nLCBjbHM9d2luLldpblBv
cnQpCisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQocG9ydF9uYW1lPU5vbmUsIG9zX25hbWU9J3dp
bicsIG9zX3ZlcnNpb249J3hwJywgY2xzPXdpbi5XaW5Qb3J0KQorICAgICAgICBzZWxmLmFzc2Vy
dF9wb3J0KHBvcnRfbmFtZT1Ob25lLCBvc19uYW1lPSd3aW4nLCBvc192ZXJzaW9uPSd4cCcsIG9w
dGlvbnM9c2VsZi53ZWJraXRfb3B0aW9ucywgY2xzPXdpbi5XaW5Qb3J0KQogCiAgICAgZGVmIHRl
c3RfZ29vZ2xlX2Nocm9tZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiZ29vZ2xl
LWNocm9tZS1saW51eDMyIiwgZ29vZ2xlX2Nocm9tZS5Hb29nbGVDaHJvbWVMaW51eDMyUG9ydCkK
LSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiZ29vZ2xlLWNocm9tZS1saW51eDY0IiwgZ29vZ2xl
X2Nocm9tZS5Hb29nbGVDaHJvbWVMaW51eDY0UG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9y
dCgiZ29vZ2xlLWNocm9tZS13aW4iLCBnb29nbGVfY2hyb21lLkdvb2dsZUNocm9tZVdpblBvcnQp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImdvb2dsZS1jaHJvbWUtbWFjIiwgZ29vZ2xlX2No
cm9tZS5Hb29nbGVDaHJvbWVNYWNQb3J0KQorICAgICAgICBzZWxmLmFzc2VydF9wb3J0KHBvcnRf
bmFtZT0nZ29vZ2xlLWNocm9tZS1saW51eDMyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBj
bHM9Z29vZ2xlX2Nocm9tZS5Hb29nbGVDaHJvbWVMaW51eDMyUG9ydCkKKyAgICAgICAgc2VsZi5h
c3NlcnRfcG9ydChwb3J0X25hbWU9J2dvb2dsZS1jaHJvbWUtbGludXg2NCcsIG9zX25hbWU9J2xp
bnV4Jywgb3NfdmVyc2lvbj0nbHVjaWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1n
b29nbGVfY2hyb21lLkdvb2dsZUNocm9tZUxpbnV4NjRQb3J0KQorICAgICAgICBzZWxmLmFzc2Vy
dF9wb3J0KHBvcnRfbmFtZT0nZ29vZ2xlLWNocm9tZS1saW51eDY0JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjbHM9Z29vZ2xlX2Nocm9tZS5Hb29nbGVDaHJvbWVMaW51eDY0UG9ydCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9J2dvb2dsZS1jaHJvbWUtd2luLXhwJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjbHM9Z29vZ2xlX2Nocm9tZS5Hb29nbGVDaHJvbWVX
aW5Qb3J0KQorICAgICAgICBzZWxmLmFzc2VydF9wb3J0KHBvcnRfbmFtZT0nZ29vZ2xlLWNocm9t
ZS13aW4nLCBvc19uYW1lPSd3aW4nLCBvc192ZXJzaW9uPSd4cCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xzPWdvb2dsZV9jaHJvbWUuR29vZ2xlQ2hyb21lV2luUG9ydCkKKyAgICAgICAg
c2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9J2dvb2dsZS1jaHJvbWUtd2luLXhwJywgb3NfbmFt
ZT0nd2luJywgb3NfdmVyc2lvbj0neHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1n
b29nbGVfY2hyb21lLkdvb2dsZUNocm9tZVdpblBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0X3Bv
cnQocG9ydF9uYW1lPSdnb29nbGUtY2hyb21lLW1hYycsIG9zX25hbWU9J21hYycsIG9zX3ZlcnNp
b249J2xlb3BhcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1nb29nbGVfY2hyb21l
Lkdvb2dsZUNocm9tZU1hY1BvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQocG9ydF9uYW1l
PSdnb29nbGUtY2hyb21lLW1hYy1sZW9wYXJkJywgb3NfbmFtZT0nbWFjJywgb3NfdmVyc2lvbj0n
bGVvcGFyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xzPWdvb2dsZV9jaHJvbWUuR29v
Z2xlQ2hyb21lTWFjUG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9J2dv
b2dsZS1jaHJvbWUtbWFjLWxlb3BhcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1n
b29nbGVfY2hyb21lLkdvb2dsZUNocm9tZU1hY1BvcnQpCiAKICAgICBkZWYgdGVzdF9ndGsoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImd0ayIsIGd0ay5HdGtQb3J0KQorICAgICAg
ICBzZWxmLmFzc2VydF9wb3J0KHBvcnRfbmFtZT0nZ3RrJywgY2xzPWd0ay5HdGtQb3J0KQogCiAg
ICAgZGVmIHRlc3RfcXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoInF0IiwgcXQu
UXRQb3J0KQorICAgICAgICBzZWxmLmFzc2VydF9wb3J0KHBvcnRfbmFtZT0ncXQnLCBjbHM9cXQu
UXRQb3J0KQogCiAgICAgZGVmIHRlc3RfY2hyb21pdW1fZ3B1KHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydF9wb3J0KCdjaHJvbWl1bS1ncHUnLCBjaHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVNYWNQ
b3J0LCBwbGF0Zm9ybT0nZGFyd2luJykKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgnY2hyb21p
dW0tZ3B1JywgY2hyb21pdW1fZ3B1LkNocm9taXVtR3B1V2luUG9ydCwgcGxhdGZvcm09J3dpbjMy
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgnY2hyb21pdW0tZ3B1JywgY2hyb21pdW1fZ3B1
LkNocm9taXVtR3B1V2luUG9ydCwgcGxhdGZvcm09J2N5Z3dpbicpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X3BvcnQoJ2Nocm9taXVtLWdwdScsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdUxpbnV4UG9y
dCwgcGxhdGZvcm09J2xpbnV4MicpCi0gICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoJ2Nocm9taXVt
LWdwdScsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdUxpbnV4UG9ydCwgcGxhdGZvcm09J2xpbnV4
MycpCisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQocG9ydF9uYW1lPSdjaHJvbWl1bS1ncHUnLCBv
c19uYW1lPSdtYWMnLCBvc192ZXJzaW9uPSdsZW9wYXJkJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjbHM9Y2hyb21pdW1fZ3B1LkNocm9taXVtR3B1TWFjUG9ydCkKKyAgICAgICAgc2VsZi5h
c3NlcnRfcG9ydChwb3J0X25hbWU9J2Nocm9taXVtLWdwdScsIG9zX25hbWU9J3dpbicsIG9zX3Zl
cnNpb249J3hwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbHM9Y2hyb21pdW1fZ3B1LkNo
cm9taXVtR3B1V2luUG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9J2No
cm9taXVtLWdwdScsIG9zX25hbWU9J2xpbnV4Jywgb3NfdmVyc2lvbj0nbHVjaWQnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGNscz1jaHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVMaW51eFBvcnQp
CiAKICAgICBkZWYgdGVzdF9jaHJvbWl1bV9ncHVfbGludXgoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0X3BvcnQoImNocm9taXVtLWdwdS1saW51eCIsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdw
dUxpbnV4UG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9J2Nocm9taXVt
LWdwdS1saW51eCcsIGNscz1jaHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVMaW51eFBvcnQpCiAKICAg
ICBkZWYgdGVzdF9jaHJvbWl1bV9ncHVfbWFjKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9w
b3J0KCJjaHJvbWl1bS1ncHUtbWFjIiwgY2hyb21pdW1fZ3B1LkNocm9taXVtR3B1TWFjUG9ydCkK
KyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9J2Nocm9taXVtLWdwdS1tYWMtbGVv
cGFyZCcsIGNscz1jaHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVNYWNQb3J0KQogCiAgICAgZGVmIHRl
c3RfY2hyb21pdW1fZ3B1X3dpbihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hy
b21pdW0tZ3B1LXdpbiIsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdVdpblBvcnQpCisgICAgICAg
IHNlbGYuYXNzZXJ0X3BvcnQocG9ydF9uYW1lPSdjaHJvbWl1bS1ncHUtd2luLXhwJywgY2xzPWNo
cm9taXVtX2dwdS5DaHJvbWl1bUdwdVdpblBvcnQpCiAKICAgICBkZWYgdGVzdF9jaHJvbWl1bV9t
YWMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNocm9taXVtLW1hYyIsIGNocm9t
aXVtX21hYy5DaHJvbWl1bU1hY1BvcnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X3BsYXRmb3JtX3Bv
cnQoImRhcndpbiIsIHNlbGYuY2hyb21pdW1fb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0KQorICAgICAgICBzZWxm
LmFzc2VydF9wb3J0KHBvcnRfbmFtZT0nY2hyb21pdW0tbWFjLWxlb3BhcmQnLCBjbHM9Y2hyb21p
dW1fbWFjLkNocm9taXVtTWFjUG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0X25h
bWU9J2Nocm9taXVtLW1hYycsIG9zX25hbWU9J21hYycsIG9zX3ZlcnNpb249J2xlb3BhcmQnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1jaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0
KQorICAgICAgICBzZWxmLmFzc2VydF9wb3J0KHBvcnRfbmFtZT1Ob25lLCBvc19uYW1lPSdtYWMn
LCBvc192ZXJzaW9uPSdsZW9wYXJkJywgb3B0aW9ucz1zZWxmLmNocm9taXVtX29wdGlvbnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgY2xzPWNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQp
CiAKICAgICBkZWYgdGVzdF9jaHJvbWl1bV9saW51eChzZWxmKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRfcG9ydCgiY2hyb21pdW0tbGludXgiLCBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9y
dCkKLSAgICAgICAgc2VsZi5hc3NlcnRfcGxhdGZvcm1fcG9ydCgibGludXgyIiwgc2VsZi5jaHJv
bWl1bV9vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNocm9taXVt
X2xpbnV4LkNocm9taXVtTGludXhQb3J0KQotICAgICAgICBzZWxmLmFzc2VydF9wbGF0Zm9ybV9w
b3J0KCJsaW51eDMiLCBzZWxmLmNocm9taXVtX29wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQpCisgICAgICAg
IHNlbGYuYXNzZXJ0X3BvcnQocG9ydF9uYW1lPSdjaHJvbWl1bS1saW51eCcsIGNscz1jaHJvbWl1
bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0
X25hbWU9Tm9uZSwgb3NfbmFtZT0nbGludXgnLCBvc192ZXJzaW9uPSdsdWNpZCcsIG9wdGlvbnM9
c2VsZi5jaHJvbWl1bV9vcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1jaHJv
bWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydCkKIAogICAgIGRlZiB0ZXN0X2Nocm9taXVtX3dp
bihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21pdW0td2luIiwgY2hyb21p
dW1fd2luLkNocm9taXVtV2luUG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRfcGxhdGZvcm1fcG9y
dCgid2luMzIiLCBzZWxmLmNocm9taXVtX29wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydCkKLSAgICAgICAgc2VsZi5h
c3NlcnRfcGxhdGZvcm1fcG9ydCgiY3lnd2luIiwgc2VsZi5jaHJvbWl1bV9vcHRpb25zLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBv
cnQpCisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQocG9ydF9uYW1lPSdjaHJvbWl1bS13aW4teHAn
LCBjbHM9Y2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRf
cG9ydChwb3J0X25hbWU9J2Nocm9taXVtLXdpbicsIG9zX25hbWU9J3dpbicsIG9zX3ZlcnNpb249
J3hwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbHM9Y2hyb21pdW1fd2luLkNocm9taXVt
V2luUG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9Tm9uZSwgb3NfbmFt
ZT0nd2luJywgb3NfdmVyc2lvbj0neHAnLCBvcHRpb25zPXNlbGYuY2hyb21pdW1fb3B0aW9ucywK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjbHM9Y2hyb21pdW1fd2luLkNocm9taXVtV2luUG9y
dCkKIAogICAgIGRlZiB0ZXN0X3Vua25vd25fc3BlY2lmaWVkKHNlbGYpOgotICAgICAgICAjIFRl
c3Qgd2hhdCBoYXBwZW5zIHdoZW4geW91IHNwZWNpZnkgYW4gdW5rbm93biBwb3J0LgotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzZWxmLmZhY3RvcnkuZ2V0
LCBwb3J0X25hbWU9J3Vua25vd24nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBs
ZW1lbnRlZEVycm9yLCBQb3J0RmFjdG9yeShNb2NrU3lzdGVtSG9zdCgpKS5nZXQsIHBvcnRfbmFt
ZT0ndW5rbm93bicpCiAKICAgICBkZWYgdGVzdF91bmtub3duX2RlZmF1bHQoc2VsZik6Ci0gICAg
ICAgICMgVGVzdCB3aGF0IGhhcHBlbnMgd2hlbiB5b3UncmUgcnVubmluZyBvbiBhbiB1bmtub3du
IHBsYXRmb3JtLgotICAgICAgICBvcmlnX3BsYXRmb3JtID0gc3lzLnBsYXRmb3JtCi0gICAgICAg
IHN5cy5wbGF0Zm9ybSA9ICd1bmtub3duJwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJ
bXBsZW1lbnRlZEVycm9yLCBzZWxmLmZhY3RvcnkuZ2V0KQotICAgICAgICBzeXMucGxhdGZvcm0g
PSBvcmlnX3BsYXRmb3JtCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVk
RXJyb3IsIFBvcnRGYWN0b3J5KE1vY2tTeXN0ZW1Ib3N0KG9zX25hbWU9J3ZtcycpKS5nZXQpCiAK
IAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0
dGVzdC5weQppbmRleCBhZWEyNDNmN2Y0OGMwM2VkZGJkYWU0NjM2MzBjOWY2YmZiYzY1ODQzLi4w
YzA0MGE5MzYxNDJjOWY4ODdhMGI3ZjBjY2EwYjBhNWY0NDlhOTQxIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29n
bGVfY2hyb21lX3VuaXR0ZXN0LnB5CkBAIC0yNiwzNSArMjYsMjEgQEAKIAogaW1wb3J0IHVuaXR0
ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0
ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmZhY3RvcnkgaW1wb3J0IFBv
cnRGYWN0b3J5CiAKIAotY2xhc3MgR2V0R29vZ2xlQ2hyb21lUG9ydFRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgotICAgIGRlZiB0ZXN0X2dldF9nb29nbGVfY2hyb21lX3BvcnQoc2VsZik6Ci0gICAg
ICAgIHRlc3RfcG9ydHMgPSAoJ2dvb2dsZS1jaHJvbWUtbGludXgzMicsICdnb29nbGUtY2hyb21l
LWxpbnV4NjQnLCAnZ29vZ2xlLWNocm9tZS1tYWMnLCAnZ29vZ2xlLWNocm9tZS13aW4nKQotICAg
ICAgICBmb3IgcG9ydCBpbiB0ZXN0X3BvcnRzOgotICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2Jh
c2VsaW5lX3BhdGgocG9ydCwgcG9ydCkKLSAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHBlY3Rh
dGlvbnNfb3ZlcnJpZGVzKHBvcnQpCi0KLSAgICAgICAgc2VsZi5fdmVyaWZ5X2Jhc2VsaW5lX3Bh
dGgoJ2dvb2dsZS1jaHJvbWUtbWFjJywgJ2dvb2dsZS1jaHJvbWUtbWFjLWxlb3BhcmQnKQotICAg
ICAgICBzZWxmLl92ZXJpZnlfYmFzZWxpbmVfcGF0aCgnZ29vZ2xlLWNocm9tZS13aW4nLCAnZ29v
Z2xlLWNocm9tZS13aW4teHAnKQotICAgICAgICBzZWxmLl92ZXJpZnlfYmFzZWxpbmVfcGF0aCgn
Z29vZ2xlLWNocm9tZS13aW4nLCAnZ29vZ2xlLWNocm9tZS13aW4tdmlzdGEnKQotCitjbGFzcyBU
ZXN0R29vZ2xlQ2hyb21lUG9ydCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF92ZXJpZnlf
YmFzZWxpbmVfcGF0aChzZWxmLCBleHBlY3RlZF9wYXRoLCBwb3J0X25hbWUpOgotICAgICAgICBw
b3J0ID0gTW9ja0hvc3QoKS5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1wb3J0X25hbWUpCisg
ICAgICAgIHBvcnQgPSBQb3J0RmFjdG9yeShNb2NrU3lzdGVtSG9zdCgpKS5nZXQocG9ydF9uYW1l
PXBvcnRfbmFtZSkKICAgICAgICAgcGF0aCA9IHBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKVsw
XQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3BhdGgsIHBvcnQuX2ZpbGVzeXN0
ZW0uYmFzZW5hbWUocGF0aCkpCiAKICAgICBkZWYgX3ZlcmlmeV9leHBlY3RhdGlvbnNfb3ZlcnJp
ZGVzKHNlbGYsIHBvcnRfbmFtZSk6Ci0gICAgICAgICMgRklYTUU6IE1ha2UgdGhpcyBtb3JlIHJv
YnVzdCB3aGVuIHdlIGhhdmUgdGhlIFRyZWUoKSBhYnN0cmFjdGlvbi4KLSAgICAgICAgIyB3ZSBz
aG91bGQgYmUgYWJsZSB0byB0ZXN0IGZvciB0aGUgZmlsZXMgZXhpc3Rpbmcgb3Igbm90LCBhbmQK
LSAgICAgICAgIyBiZSBhYmxlIHRvIGNvbnRyb2wgdGhlIGNvbnRlbnRzIGJldHRlci4KLSAgICAg
ICAgIyBGSVhNRTogV2hhdCBpcyB0aGUgVHJlZSgpIGFic3RyYWN0aW9uPwotCi0gICAgICAgIGhv
c3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIGNocm9taXVtX3BvcnQgPSBob3N0LnBvcnRfZmFjdG9y
eS5nZXQoImNocm9taXVtLW1hYyIpCisgICAgICAgIGhvc3QgPSBNb2NrU3lzdGVtSG9zdCgpCisg
ICAgICAgIGNocm9taXVtX3BvcnQgPSBQb3J0RmFjdG9yeShob3N0KS5nZXQoImNocm9taXVtLW1h
Yy1sZW9wYXJkIikKICAgICAgICAgY2hyb21pdW1fYmFzZSA9IGNocm9taXVtX3BvcnQucGF0aF9m
cm9tX2Nocm9taXVtX2Jhc2UoKQotICAgICAgICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0
KHBvcnRfbmFtZT1wb3J0X25hbWUsIG9wdGlvbnM9Tm9uZSkKKyAgICAgICAgcG9ydCA9IFBvcnRG
YWN0b3J5KGhvc3QpLmdldChwb3J0X25hbWU9cG9ydF9uYW1lLCBvcHRpb25zPU5vbmUpCiAKICAg
ICAgICAgZXhwZWN0ZWRfY2hyb21pdW1fb3ZlcnJpZGVzID0gJy8vIGNocm9taXVtIG92ZXJyaWRl
c1xuJwogICAgICAgICBleHBlY3RlZF9jaHJvbWVfb3ZlcnJpZGVzID0gJy8vIGNocm9tZSBvdmVy
cmlkZXNcbicKQEAgLTcwLDYgKzU2LDE3IEBAIGNsYXNzIEdldEdvb2dsZUNocm9tZVBvcnRUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgYWN0dWFsX2Nocm9tZV9vdmVycmlkZXMgPSBw
b3J0LnRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYWN0dWFsX2Nocm9tZV9vdmVycmlkZXMsIGV4cGVjdGVkX2Nocm9taXVtX292ZXJyaWRlcyAr
IGV4cGVjdGVkX2Nocm9tZV9vdmVycmlkZXMpCiAKKyAgICBkZWYgdGVzdF9nZXRfZ29vZ2xlX2No
cm9tZV9wb3J0KHNlbGYpOgorICAgICAgICBzZWxmLl92ZXJpZnlfYmFzZWxpbmVfcGF0aCgnZ29v
Z2xlLWNocm9tZS1saW51eDMyJywgJ2dvb2dsZS1jaHJvbWUtbGludXgzMicpCisgICAgICAgIHNl
bGYuX3ZlcmlmeV9iYXNlbGluZV9wYXRoKCdnb29nbGUtY2hyb21lLWxpbnV4NjQnLCAnZ29vZ2xl
LWNocm9tZS1saW51eDY0JykKKyAgICAgICAgc2VsZi5fdmVyaWZ5X2Jhc2VsaW5lX3BhdGgoJ2dv
b2dsZS1jaHJvbWUtbWFjJywgJ2dvb2dsZS1jaHJvbWUtbWFjLWxlb3BhcmQnKQorICAgICAgICBz
ZWxmLl92ZXJpZnlfYmFzZWxpbmVfcGF0aCgnZ29vZ2xlLWNocm9tZS13aW4nLCAnZ29vZ2xlLWNo
cm9tZS13aW4teHAnKQorCisgICAgICAgIHNlbGYuX3ZlcmlmeV9leHBlY3RhdGlvbnNfb3ZlcnJp
ZGVzKCdnb29nbGUtY2hyb21lLW1hYy1sZW9wYXJkJykKKyAgICAgICAgc2VsZi5fdmVyaWZ5X2V4
cGVjdGF0aW9uc19vdmVycmlkZXMoJ2dvb2dsZS1jaHJvbWUtd2luLXhwJykKKyAgICAgICAgc2Vs
Zi5fdmVyaWZ5X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoJ2dvb2dsZS1jaHJvbWUtbGludXgzMicp
CisgICAgICAgIHNlbGYuX3ZlcmlmeV9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCdnb29nbGUtY2hy
b21lLWxpbnV4NjQnKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRl
c3QubWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L21hYy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bWFjLnB5CmluZGV4IDQ2MWMyNTdmMmU5MDY0OWIyYmE0NjI0NGFiOTI2ODU5ODEzMTFiNTQuLmMx
MWMwYTBhM2EwMTc0OGE1ZjE4ZDEzNWE5MGY1YzQ2Y2NlMTM0NjcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CkBAIC0yNyw3ICsyNyw2IEBA
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcGxhdGZvcm0KIGltcG9y
dCByZQogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmFwcGxlIGltcG9ydCBBcHBs
ZVBvcnQKQEAgLTM2LDI3ICszNSw2IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQu
bGVha2RldGVjdG9yIGltcG9ydCBMZWFrRGV0ZWN0b3IKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQogCi0jIEZJWE1FOiBEZWxldGUgdGhpcyB3aGVuIHdlIHN3aXRjaCB0byB1
c2luZyBob3N0LnBsYXRmb3JtaW5mby5vc192ZXJzaW9uIGluc3RlYWQuCi1kZWYgb3NfdmVyc2lv
bihvc192ZXJzaW9uX3N0cmluZz1Ob25lLCBzdXBwb3J0ZWRfdmVyc2lvbnM9Tm9uZSk6Ci0gICAg
aWYgbm90IG9zX3ZlcnNpb25fc3RyaW5nOgotICAgICAgICBpZiBoYXNhdHRyKHBsYXRmb3JtLCAn
bWFjX3ZlcicpIGFuZCBwbGF0Zm9ybS5tYWNfdmVyKClbMF06Ci0gICAgICAgICAgICBvc192ZXJz
aW9uX3N0cmluZyA9IHBsYXRmb3JtLm1hY192ZXIoKVswXQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgIyBNYWtlIHVwIHNvbWV0aGluZyBmb3IgdGVzdGluZy4KLSAgICAgICAgICAgIG9zX3Zl
cnNpb25fc3RyaW5nID0gIjEwLjUuNiIKLSAgICByZWxlYXNlX3ZlcnNpb24gPSBpbnQob3NfdmVy
c2lvbl9zdHJpbmcuc3BsaXQoJy4nKVsxXSkKLSAgICB2ZXJzaW9uX3N0cmluZ3MgPSB7Ci0gICAg
ICAgIDU6ICdsZW9wYXJkJywKLSAgICAgICAgNjogJ3Nub3dsZW9wYXJkJywKLSAgICAgICAgNzog
J2xpb24nLAotICAgIH0KLSAgICBhc3NlcnQgcmVsZWFzZV92ZXJzaW9uID49IG1pbih2ZXJzaW9u
X3N0cmluZ3Mua2V5cygpKQotICAgIHZlcnNpb25fc3RyaW5nID0gdmVyc2lvbl9zdHJpbmdzLmdl
dChyZWxlYXNlX3ZlcnNpb24sICdmdXR1cmUnKQotICAgIGlmIHN1cHBvcnRlZF92ZXJzaW9uczoK
LSAgICAgICAgYXNzZXJ0IHZlcnNpb25fc3RyaW5nIGluIHN1cHBvcnRlZF92ZXJzaW9ucwotICAg
IHJldHVybiB2ZXJzaW9uX3N0cmluZwotCi0KIGNsYXNzIE1hY1BvcnQoQXBwbGVQb3J0KToKICAg
ICBwb3J0X25hbWUgPSAibWFjIgogCkBAIC02NCwxNyArNDIsNiBAQCBjbGFzcyBNYWNQb3J0KEFw
cGxlUG9ydCk6CiAgICAgIyBhbmQgdGhlIG9yZGVyIG9mIGZhbGxiYWNrIGJldHdlZW4gdGhlbS4g
IE1hdGNoZXMgT1JXVC4KICAgICBWRVJTSU9OX0ZBTExCQUNLX09SREVSID0gWyJtYWMtbGVvcGFy
ZCIsICJtYWMtc25vd2xlb3BhcmQiLCAibWFjLWxpb24iLCAibWFjIl0KIAotICAgICMgRklYTUU6
IERlbGV0ZSB0aGlzIHdoZW4gd2Ugc3dpdGNoIHRvIHVzaW5nIGhvc3QucGxhdGZvcm1pbmZvLm9z
X3ZlcnNpb24gaW5zdGVhZC4KLSAgICBkZWYgX2RldGVjdF92ZXJzaW9uKHNlbGYsIG9zX3ZlcnNp
b25fc3RyaW5nKToKLSAgICAgICAgIyBGSVhNRTogTWFjUG9ydCBhbmQgV2luUG9ydCBpbXBsZW1l
bnQgX2RldGVjdF92ZXJzaW9uIGRpZmZlcmVudGx5LgotICAgICAgICAjIFdpblBvcnQgdXNlcyBv
c192ZXJzaW9uX3N0cmluZyBhcyBhIHJlcGxhY2VtZW50IGZvciBzZWxmLnZlcnNpb24uCi0gICAg
ICAgICMgVGh1cyBqdXN0IHJldHVybnMgb3NfdmVyc2lvbl9zdHJpbmcgZnJvbSB0aGlzIGZ1bmN0
aW9uIGlmIG5vdCBOb25lLgotICAgICAgICAjIE1hYyAoaW5jb3JyZWN0bHkpIHVzZXMgb3NfdmVy
c2lvbl9zdHJpbmcgYXMgYSB3YXkgdG8gdW5pdC10ZXN0Ci0gICAgICAgICMgdGhlIG9zX3ZlcnNp
b24gcGFyc2luZyBsb2dpYy4gIFdlIHNob3VsZCBzcGxpdCB0aGUgb3NfdmVyc2lvbiBwYXJzaW5n
IHRlc3RzCi0gICAgICAgICMgaW50byBzZXBhcmF0ZSB1bml0dGVzdHMgc28gdGhhdCB0aGV5IGRv
IG5vdCBuZWVkIHRvIGNvbnN0cnVjdAotICAgICAgICAjIE1hY1BvcnQgb2JqZWN0cyBqdXN0IHRv
IHRlc3Qgb3VyIHZlcnNpb24gcGFyc2luZy4KLSAgICAgICAgcmV0dXJuIG9zX3ZlcnNpb24ob3Nf
dmVyc2lvbl9zdHJpbmcpCi0KICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgKiprd2FyZ3Mp
OgogICAgICAgICBBcHBsZVBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgKiprd2FyZ3MpCiAgICAg
ICAgIHNlbGYuX2xlYWtfZGV0ZWN0b3IgPSBMZWFrRGV0ZWN0b3Ioc2VsZikKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3Qu
cHkKaW5kZXggMmFjZWE5N2NkNTg4ZGRlYzRlYzBmZGE0NTYxNDIwYzc4YTUyMzcxNy4uOWEyM2U3
M2U1YWUzNTY1M2MxN2NiNTM3NWFmYjUxNjM4ZGM2MTEwZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKQEAg
LTMyLDEwICszMiwxMiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9t
b2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91
dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkudG9vbC5tb2Nr
dG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQotZnJvbSB3ZWJraXRweS5jb21tb24uaG9z
dF9tb2NrIGltcG9ydCBNb2NrSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3Rl
bWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKIAogCiBjbGFzcyBNYWNUZXN0KHBvcnRf
dGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKKyAgICBvc19uYW1lID0gJ21hYycKKyAgICBvc192ZXJz
aW9uID0gJ2xlb3BhcmQnCiAgICAgcG9ydF9tYWtlciA9IE1hY1BvcnQKIAogICAgIGRlZiBhc3Nl
cnRfc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocyhzZWxmLCBwb3J0X25hbWUsIGV4cGVjdGVkX3Bh
dGhzKToKQEAgLTc0LDEyICs3NiwxMyBAQCBqYXZhLwogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBvcnQuX3Rlc3RzX2Zyb21fc2tpcHBlZF9maWxlX2NvbnRlbnRzKHNlbGYuZXhhbXBsZV9za2lw
cGVkX2ZpbGUpLCBzZWxmLmV4YW1wbGVfc2tpcHBlZF90ZXN0cykKIAogICAgIGRlZiBhc3NlcnRf
bmFtZShzZWxmLCBwb3J0X25hbWUsIG9zX3ZlcnNpb25fc3RyaW5nLCBleHBlY3RlZCk6Ci0gICAg
ICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9cG9ydF9uYW1lLCBvc192ZXJzaW9u
X3N0cmluZz1vc192ZXJzaW9uX3N0cmluZykKKyAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0
KG9zX25hbWU9J21hYycsIG9zX3ZlcnNpb249b3NfdmVyc2lvbl9zdHJpbmcpCisgICAgICAgIHBv
cnQgPSBzZWxmLm1ha2VfcG9ydChob3N0PWhvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLCBwb3J0Lm5hbWUoKSkKIAogICAgIGRlZiB0
ZXN0X3Rlc3RzX2Zvcl9vdGhlcl9wbGF0Zm9ybXMoc2VsZik6CiAgICAgICAgIHBsYXRmb3JtcyA9
IFsnbWFjJywgJ2Nocm9taXVtLWxpbnV4JywgJ21hYy1zbm93bGVvcGFyZCddCi0gICAgICAgIHBv
cnQgPSBNYWNQb3J0KE1vY2tIb3N0KCksIHBvcnRfbmFtZT0nbWFjLXNub3dsZW9wYXJkJykKKyAg
ICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nbWFjLXNub3dsZW9wYXJkJykK
ICAgICAgICAgcGxhdGZvcm1fZGlyX3BhdGhzID0gbWFwKHBvcnQuX3dlYmtpdF9iYXNlbGluZV9w
YXRoLCBwbGF0Zm9ybXMpCiAgICAgICAgICMgUmVwbGFjZSBvdXIgZW1wdHkgbW9jayBmaWxlIHN5
c3RlbSB3aXRoIG9uZSB3aGljaCBoYXMgb3VyIGV4cGVjdGVkIHBsYXRmb3JtIGRpcmVjdG9yaWVz
LgogICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oZGlycz1wbGF0Zm9y
bV9kaXJfcGF0aHMpCkBAIC05MCw1MCArOTMsNDkgQEAgamF2YS8KICAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZSgncGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkJyBpbiBkaXJzX3RvX3NraXApCiAKICAg
ICBkZWYgdGVzdF92ZXJzaW9uKHNlbGYpOgotICAgICAgICBwb3J0ID0gTWFjUG9ydChNb2NrSG9z
dCgpKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBzZWxmLmFzc2Vy
dFRydWUocG9ydC52ZXJzaW9uKCkpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9ucyhzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25lLCAnMTAuNS4zJywgJ21hYy1sZW9wYXJkJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjJywgJzEwLjUuMycsICdtYWMtbGVvcGFyZCcpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1sZW9wYXJkJywgJzEwLjQuOCcsICdtYWMtbGVv
cGFyZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1sZW9wYXJkJywgJzEwLjUuMycs
ICdtYWMtbGVvcGFyZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1sZW9wYXJkJywg
JzEwLjYuMycsICdtYWMtbGVvcGFyZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoTm9uZSwg
J2xlb3BhcmQnLCAnbWFjLWxlb3BhcmQnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMn
LCAnbGVvcGFyZCcsICdtYWMtbGVvcGFyZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21h
Yy1sZW9wYXJkJywgJ3RpZ2VyJywgJ21hYy1sZW9wYXJkJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bmFtZSgnbWFjLWxlb3BhcmQnLCAnbGVvcGFyZCcsICdtYWMtbGVvcGFyZCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0X25hbWUoJ21hYy1sZW9wYXJkJywgJ3Nub3dsZW9wYXJkJywgJ21hYy1sZW9wYXJk
JykKIAotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKE5vbmUsICcxMC42LjMnLCAnbWFjLXNub3ds
ZW9wYXJkJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjJywgJzEwLjYuMycsICdtYWMt
c25vd2xlb3BhcmQnKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMtc25vd2xlb3BhcmQn
LCAnMTAuNC4zJywgJ21hYy1zbm93bGVvcGFyZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUo
J21hYy1zbm93bGVvcGFyZCcsICcxMC41LjMnLCAnbWFjLXNub3dsZW9wYXJkJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbmFtZSgnbWFjLXNub3dsZW9wYXJkJywgJzEwLjYuMycsICdtYWMtc25vd2xl
b3BhcmQnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKE5vbmUsICdzbm93bGVvcGFyZCcsICdt
YWMtc25vd2xlb3BhcmQnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMnLCAnc25vd2xl
b3BhcmQnLCAnbWFjLXNub3dsZW9wYXJkJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFj
LXNub3dsZW9wYXJkJywgJ3RpZ2VyJywgJ21hYy1zbm93bGVvcGFyZCcpCisgICAgICAgIHNlbGYu
YXNzZXJ0X25hbWUoJ21hYy1zbm93bGVvcGFyZCcsICdsZW9wYXJkJywgJ21hYy1zbm93bGVvcGFy
ZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1zbm93bGVvcGFyZCcsICdzbm93bGVv
cGFyZCcsICdtYWMtc25vd2xlb3BhcmQnKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoTm9u
ZSwgJzEwLjcnLCAnbWFjLWxpb24nKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKE5vbmUsICcx
MC43LjMnLCAnbWFjLWxpb24nKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMnLCAnMTAu
Ny4zJywgJ21hYy1saW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25lLCAnbGlvbics
ICdtYWMtbGlvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYycsICdsaW9uJywgJ21h
Yy1saW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjLWxpb24nLCAnbGlvbicsICdt
YWMtbGlvbicpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25lLCAnMTAuOScsICdtYWMt
ZnV0dXJlJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjJywgJzEwLjknLCAnbWFjLWZ1
dHVyZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1mdXR1cmUnLCAnMTAuOScsICdt
YWMtZnV0dXJlJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25lLCAnZnV0dXJlJywgJ21h
Yy1mdXR1cmUnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMnLCAnZnV0dXJlJywgJ21h
Yy1mdXR1cmUnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMtZnV0dXJlJywgJ2Z1dHVy
ZScsICdtYWMtZnV0dXJlJykKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25F
cnJvciwgc2VsZi5hc3NlcnRfbmFtZSwgTm9uZSwgJzEwLjMuMScsICdzaG91bGQtcmFpc2UtYXNz
ZXJ0aW9uLXNvLXRoaXMtdmFsdWUtZG9lcy1ub3QtbWF0dGVyJykKIAogICAgIGRlZiB0ZXN0X2lz
X3ZlcnNpb25fbWV0aG9kcyhzZWxmKToKLSAgICAgICAgbGVvcGFyZF9wb3J0ID0gc2VsZi5tYWtl
X3BvcnQocG9ydF9uYW1lPSdtYWMtbGVvcGFyZCcsIG9zX3ZlcnNpb25fc3RyaW5nPScxMC41LjMn
KQorICAgICAgICBsZW9wYXJkX3BvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J21hYy1s
ZW9wYXJkJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlb3BhcmRfcG9ydC5pc19sZW9wYXJk
KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGVvcGFyZF9wb3J0LmlzX3Nub3dsZW9wYXJk
KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGVvcGFyZF9wb3J0LmlzX2xpb24oKSkKIAot
ICAgICAgICBzbm93bGVvcGFyZF9wb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdtYWMt
c25vd2xlb3BhcmQnLCBvc192ZXJzaW9uX3N0cmluZz0nMTAuNi4zJykKKyAgICAgICAgc25vd2xl
b3BhcmRfcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nbWFjLXNub3dsZW9wYXJkJykK
ICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzbm93bGVvcGFyZF9wb3J0LmlzX2xlb3BhcmQoKSkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNub3dsZW9wYXJkX3BvcnQuaXNfc25vd2xlb3BhcmQo
KSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzbm93bGVvcGFyZF9wb3J0LmlzX2xpb24oKSkK
IAotICAgICAgICBsaW9uX3BvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J21hYy1saW9u
Jywgb3NfdmVyc2lvbl9zdHJpbmc9JzEwLjcuMicpCisgICAgICAgIGxpb25fcG9ydCA9IHNlbGYu
bWFrZV9wb3J0KHBvcnRfbmFtZT0nbWFjLWxpb24nKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGxpb25fcG9ydC5pc19sZW9wYXJkKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGlvbl9w
b3J0LmlzX3Nub3dsZW9wYXJkKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW9uX3BvcnQu
aXNfbGlvbigpKQogCiAgICAgZGVmIHRlc3Rfc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlbGYp
OgotICAgICAgICBwb3J0ID0gTWFjUG9ydChNb2NrSG9zdCgpLCBvcHRpb25zPU1vY2tPcHRpb25z
KGxlYWtzPVRydWUsIGd1YXJkX21hbGxvYz1UcnVlKSkKKyAgICAgICAgcG9ydCA9IHNlbGYubWFr
ZV9wb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMobGVha3M9VHJ1ZSwgZ3VhcmRfbWFsbG9jPVRydWUp
KQogICAgICAgICBlbnYgPSBwb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihwb3J0LmRyaXZl
cl9uYW1lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGVudlsnTWFsbG9jU3RhY2tMb2dn
aW5nJ10sICcxJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZW52WydEWUxEX0lOU0VSVF9M
SUJSQVJJRVMnXSwgJy91c3IvbGliL2xpYmdtYWxsb2MuZHlsaWInKQpAQCAtMTQyLDcgKzE0NCw3
IEBAIGphdmEvCiAgICAgICAgICMgRklYTUU6IFBvcnQgY29uc3RydWN0b3JzIHNob3VsZCBub3Qg
InBhcnNlIiB0aGUgcG9ydCBuYW1lLCBidXQKICAgICAgICAgIyByYXRoZXIgYmUgcGFzc2VkIGNv
bXBvbmVudHMgKGRpcmVjdGx5IG9yIHZpYSBzZXR0ZXJzKS4gIE9uY2UKICAgICAgICAgIyB3ZSBm
aXggdGhhdCwgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIGEgcmUtd3JpdGUuCi0gICAgICAgIHBvcnQg
PSBNYWNQb3J0KE1vY2tIb3N0KCksIHBvcnRfbmFtZT0nbWFjLSVzJyAlIHZlcnNpb24sIG9wdGlv
bnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPXVzZV93ZWJraXQyKSkKKyAgICAgICAg
cG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nbWFjLSVzJyAlIHZlcnNpb24sIG9wdGlv
bnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPXVzZV93ZWJraXQyKSkKICAgICAgICAg
YWJzb2x1dGVfc2VhcmNoX3BhdGhzID0gbWFwKHBvcnQuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBz
ZWFyY2hfcGF0aHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuYmFzZWxpbmVfc2Vh
cmNoX3BhdGgoKSwgYWJzb2x1dGVfc2VhcmNoX3BhdGhzKQogCkBAIC0xNTcsNyArMTU5LDcgQEAg
amF2YS8KICAgICAgICAgc2VsZi5fYXNzZXJ0X3NlYXJjaF9wYXRoKFsnbWFjLXdrMicsICdtYWMt
bGlvbicsICdtYWMnXSwgJ2xpb24nLCB1c2Vfd2Via2l0Mj1UcnVlKQogCiAgICAgZGVmIHRlc3Rf
c2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmKToKLSAgICAgICAgcG9ydCA9IE1hY1BvcnQoTW9j
a0hvc3QoKSkKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAgICAgICAgIyBEZWxh
eSBzZXR0aW5nIGEgc2hvdWxkX2xvZyBleGVjdXRpdmUgdG8gYXZvaWQgbG9nZ2luZyBmcm9tIE1h
Y1BvcnQuX19pbml0X18uCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUo
c2hvdWxkX2xvZz1UcnVlKQogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBydW5fY29t
bWFuZDogWydUb29scy9TY3JpcHRzL3J1bi1zYWZhcmknLCAnLS1yZWxlYXNlJywgJy1OU09wZW4n
LCAndGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dFxuIgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5Cmlu
ZGV4IGE0ZDkzZmYyNWI0NDljNDkyZjg1ODk4Mzc2MDQ5OTI5MWNjYWYyMWIuLmEwMjFjYmM5OGU2
MzcwODQ0MzNmNTlhNGI3OWU4YWJmZWM2NTllM2IgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKQEAgLTQ2
LDcgKzQ2LDcgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgaHR0
cF9zZXJ2ZXJfYmFzZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9j
ayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBv
cnQgTW9ja09wdGlvbnMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9j
ayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQotZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGlt
cG9ydCBNb2NrSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9j
ayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKIAogCiBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3Qu
VGVzdENhc2UpOgpAQCAtNTUsMTAgKzU1LDEyIEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgV0VCU09DS0VUX1BPUlRTID0gKDg4ODAsKQogCiAgICAgIyBTdWJj
bGFzc2VzIG92ZXJyaWRlIHRoaXMgdG8gcG9pbnQgdG8gdGhlaXIgUG9ydCBzdWJjbGFzcy4KKyAg
ICBvc19uYW1lID0gTm9uZQorICAgIG9zX3ZlcnNpb24gPSBOb25lCiAgICAgcG9ydF9tYWtlciA9
IE5vbmUKIAotICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwgaG9zdD1Ob25lLCBvcHRpb25zPU5vbmUs
ICoqa3dhcmdzKToKLSAgICAgICAgaG9zdCA9IGhvc3Qgb3IgTW9ja0hvc3QoKQorICAgIGRlZiBt
YWtlX3BvcnQoc2VsZiwgaG9zdD1Ob25lLCBvcHRpb25zPU5vbmUsIG9zX25hbWU9Tm9uZSwgb3Nf
dmVyc2lvbj1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGhvc3QgPSBob3N0IG9yIE1vY2tTeXN0
ZW1Ib3N0KG9zX25hbWU9KG9zX25hbWUgb3Igc2VsZi5vc19uYW1lKSwgb3NfdmVyc2lvbj0ob3Nf
dmVyc2lvbiBvciBzZWxmLm9zX3ZlcnNpb24pKQogICAgICAgICBvcHRpb25zID0gb3B0aW9ucyBv
ciBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJykKICAgICAgICAgcmV0dXJuIHNl
bGYucG9ydF9tYWtlcihob3N0LCBvcHRpb25zPW9wdGlvbnMsICoqa3dhcmdzKQogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2luLnB5CmluZGV4IDIyNzBk
ZGVmMzE5M2U4Yzg2Zjg3ZWRiNzkxNjhmZGVjMzQ3MmJjZmEuLjMyM2JjMWRiZjNjZWI5Y2RmOTNk
ZDc4MjY1NzE4Mjc4YzcwYjNkYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2luLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2luLnB5CkBAIC00NSwzNyArNDUsNiBAQCBjbGFzcyBXaW5Qb3J0KEFw
cGxlUG9ydCk6CiAgICAgIyBhbmQgdGhlIG9yZGVyIG9mIGZhbGxiYWNrIGJldHdlZW4gdGhlbS4g
IE1hdGNoZXMgT1JXVC4KICAgICBWRVJTSU9OX0ZBTExCQUNLX09SREVSID0gWyJ3aW4teHAiLCAi
d2luLXZpc3RhIiwgIndpbi03c3AwIiwgIndpbiJdCiAKLSAgICAjIEZJWE1FOiBVc2UgaG9zdC5w
bGF0Zm9ybWluZm8ub3NfdmVyc2lvbiBpbnN0ZWFkLgotICAgIGRlZiBfdmVyc2lvbl9zdHJpbmdf
ZnJvbV93aW5kb3dzX3ZlcnNpb25fdHVwbGUoc2VsZiwgd2luZG93c192ZXJzaW9uX3R1cGxlKToK
LSAgICAgICAgaWYgd2luZG93c192ZXJzaW9uX3R1cGxlWzozXSA9PSAoNiwgMSwgNzYwMCk6Ci0g
ICAgICAgICAgICByZXR1cm4gJzdzcDAnCi0gICAgICAgIGlmIHdpbmRvd3NfdmVyc2lvbl90dXBs
ZVs6Ml0gPT0gKDYsIDApOgotICAgICAgICAgICAgcmV0dXJuICd2aXN0YScKLSAgICAgICAgaWYg
d2luZG93c192ZXJzaW9uX3R1cGxlWzoyXSA9PSAoNSwgMSk6Ci0gICAgICAgICAgICByZXR1cm4g
J3hwJwotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9kZXRlY3RfdmVyc2lvbihzZWxm
LCBvc192ZXJzaW9uX3N0cmluZz1Ob25lLCBydW5fb25fbm9uX3dpbmRvd3NfcGxhdGZvcm1zPU5v
bmUpOgotICAgICAgICAjIEZJWE1FOiBvc192ZXJzaW9uX3N0cmluZyBpcyBmb3IgdW5pdCB0ZXN0
aW5nLCBidXQgbWF5IGV2ZW50dWFsbHkgYmUgcHJvdmlkZWQgYnkgZmFjdG9yeS5weSBpbnN0ZWFk
LgotICAgICAgICBpZiBvc192ZXJzaW9uX3N0cmluZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
IHJldHVybiBvc192ZXJzaW9uX3N0cmluZwotCi0gICAgICAgICMgTm8gc2Vuc2UgaW4gdHJ5aW5n
IHRvIGRldGVjdCBvdXIgd2luZG93cyB2ZXJzaW9uIG9uIG5vbi13aW5kb3dzIHBsYXRmb3Jtcywg
dW5sZXNzIHdlJ3JlIHVuaXR0ZXN0aW5nLgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2N5
Z3dpbicgYW5kIG5vdCBydW5fb25fbm9uX3dpbmRvd3NfcGxhdGZvcm1zOgotICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgICAgICAjIE5vdGUsIHRoaXMgaW50ZW50aW9uYWxseSByZXR1cm5z
IE5vbmUgdG8gbWVhbiB0aGF0IGl0IGNhbid0IGRldGVjdCB3aGF0IHRoZSBjdXJyZW50IHZlcnNp
b24gaXMuCi0gICAgICAgICMgQ2FsbGVycyBjYW4gdGhlbiBkZWNpZGUgd2hhdCB2ZXJzaW9uIHRo
ZXkgd2FudCB0byBwcmV0ZW5kIHRvIGJlLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB2ZXJf
b3V0cHV0ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnY21kJywgJy9jJywgJ3Zlcidd
KQotICAgICAgICBleGNlcHQgKFNjcmlwdEVycm9yLCBPU0Vycm9yKSwgZToKLSAgICAgICAgICAg
IHZlcl9vdXRwdXQgPSAiIgotICAgICAgICAgICAgX2xvZy5lcnJvcigiRmFpbGVkIHRvIGRldGVj
dCBXaW5kb3dzIHZlcnNpb24sIGFzc3VtaW5nIGxhdGVzdC5cbiVzIiAlIGUpCi0gICAgICAgIG1h
dGNoX29iamVjdCA9IHJlLnNlYXJjaChyJyg/UDxtYWpvcj5cZClcLig/UDxtaW5vcj5cZClcLig/
UDxidWlsZD5cZCspJywgdmVyX291dHB1dCkKLSAgICAgICAgaWYgbWF0Y2hfb2JqZWN0OgotICAg
ICAgICAgICAgdmVyc2lvbl90dXBsZSA9IHR1cGxlKG1hcChpbnQsIG1hdGNoX29iamVjdC5ncm91
cHMoKSkpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbl9zdHJpbmdfZnJvbV93aW5k
b3dzX3ZlcnNpb25fdHVwbGUodmVyc2lvbl90dXBsZSkKLQogICAgIGRlZiBjb21wYXJlX3RleHQo
c2VsZiwgZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQpOgogICAgICAgICAjIFNhbml0eSB3YXMg
cmVzdG9yZWQgaW4gV0syLCBzbyB3ZSBkb24ndCBuZWVkIHRoaXMgaGFjayB0aGVyZS4KICAgICAg
ICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKToKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2luX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5fdW5pdHRlc3Qu
cHkKaW5kZXggOTcyNDE1OTk4ZjQ3YjVlNjkzOWJjZGViYTZmMTRmYjg0NjdjNjlkMy4uMjVhNjk3
OGYxN2U3MzAzNTI4Mzg0NWFjMDhiNTU4NWZjMjU4MjI4YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5fdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5fdW5pdHRlc3QucHkKQEAg
LTI3LDIwICsyNywyMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgU3RyaW5nSU8KLWltcG9y
dCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlLCBNb2NrRXhlY3V0aXZlMgogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0
ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJl
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2Nr
U3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90
ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53aW4gaW1wb3J0IFdpblBv
cnQKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIAogCiBj
bGFzcyBXaW5Qb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CisgICAgb3NfbmFt
ZSA9ICd3aW4nCisgICAgb3NfdmVyc2lvbiA9ICd4cCcKICAgICBwb3J0X21ha2VyID0gV2luUG9y
dAogCiAgICAgZGVmIHRlc3Rfc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmKToKQEAgLTU1LDI3
ICs1Niw5IEBAIGNsYXNzIFdpblBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0ZGVyci5zdGFydHN3aXRoKCJNT0NLIHJ1bl9jb21t
YW5kOiBbJ1Rvb2xzL1NjcmlwdHMvcnVuLXNhZmFyaScsICctLXJlbGVhc2UnLCAnIikpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGRlcnIuZW5kc3dpdGgoInRlc3QuaHRtbCddLCBjd2Q9L21v
Y2stY2hlY2tvdXRcbiIpKQogCi0gICAgZGVmIHRlc3RfZGV0ZWN0X3ZlcnNpb24oc2VsZik6Ci0g
ICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0KLSAgICAgICAgZGVmIG1vY2tfcnVuX2Nv
bW1hbmQoY21kKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZCwgWydjbWQnLCAn
L2MnLCAndmVyJ10pCi0gICAgICAgICAgICByZXR1cm4gIjYuMS43NjAwIgotCi0gICAgICAgIHBv
cnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPW1vY2tfcnVuX2Nv
bW1hbmQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuX2RldGVjdF92ZXJzaW9uKHJ1
bl9vbl9ub25fd2luZG93c19wbGF0Zm9ybXM9VHJ1ZSksICc3c3AwJykKLQotICAgICAgICBkZWYg
bW9ja19ydW5fY29tbWFuZChjbWQpOgotICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoJ0Zh
aWx1cmUnKQotCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9j
b21tYW5kX2ZuPW1vY2tfcnVuX2NvbW1hbmQpCi0gICAgICAgICMgRmFpbHVyZXMgbG9nIHRvIHRo
ZSBweXRob24gZXJyb3IgbG9nLCBidXQgd2UgaGF2ZSBubyBlYXN5IHdheSB0byBjYXB0dXJlL3Rl
c3QgdGhhdC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fZGV0ZWN0X3ZlcnNpb24o
cnVuX29uX25vbl93aW5kb3dzX3BsYXRmb3Jtcz1UcnVlKSwgTm9uZSkKLQogICAgIGRlZiBfYXNz
ZXJ0X3NlYXJjaF9wYXRoKHNlbGYsIGV4cGVjdGVkX3NlYXJjaF9wYXRocywgdmVyc2lvbiwgdXNl
X3dlYmtpdDI9RmFsc2UpOgotICAgICAgICBwb3J0ID0gV2luUG9ydChvc192ZXJzaW9uX3N0cmlu
Zz12ZXJzaW9uLAotICAgICAgICAgICAgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9y
dW5uZXI9dXNlX3dlYmtpdDIpLAotICAgICAgICAgICAgaG9zdD1Nb2NrSG9zdCgpKQorICAgICAg
ICBob3N0ID0gTW9ja1N5c3RlbUhvc3Qob3NfbmFtZT0nd2luJywgb3NfdmVyc2lvbj12ZXJzaW9u
KQorICAgICAgICBwb3J0ID0gV2luUG9ydChob3N0LCBvcHRpb25zPU1vY2tPcHRpb25zKHdlYmtp
dF90ZXN0X3J1bm5lcj11c2Vfd2Via2l0MikpCiAgICAgICAgIGFic29sdXRlX3NlYXJjaF9wYXRo
cyA9IG1hcChwb3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCwgZXhwZWN0ZWRfc2VhcmNoX3BhdGhz
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKCks
IGFic29sdXRlX3NlYXJjaF9wYXRocykKIApAQCAtOTEsNyArNzQsOCBAQCBjbGFzcyBXaW5Qb3J0
VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuX2Fzc2VydF9z
ZWFyY2hfcGF0aChbJ3dpbi13azInLCAnd2luJywgJ21hYy13azInLCAnbWFjLWxpb24nLCAnbWFj
J10sICdib2d1cycsIHVzZV93ZWJraXQyPVRydWUpCiAKICAgICBkZWYgX2Fzc2VydF92ZXJzaW9u
KHNlbGYsIHBvcnRfbmFtZSwgZXhwZWN0ZWRfdmVyc2lvbik6Ci0gICAgICAgIHBvcnQgPSBXaW5Q
b3J0KHBvcnRfbmFtZT1wb3J0X25hbWUsIGhvc3Q9TW9ja0hvc3QoKSkKKyAgICAgICAgaG9zdCA9
IE1vY2tTeXN0ZW1Ib3N0KG9zX25hbWU9J3dpbicsIG9zX3ZlcnNpb249ZXhwZWN0ZWRfdmVyc2lv
bikKKyAgICAgICAgcG9ydCA9IFdpblBvcnQoaG9zdCwgcG9ydF9uYW1lPXBvcnRfbmFtZSkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC52ZXJzaW9uKCksIGV4cGVjdGVkX3ZlcnNpb24p
CiAKICAgICBkZWYgdGVzdF92ZXJzaW9ucyhzZWxmKToK
</data>
<flag name="review"
          id="122615"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>