<?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>75764</bug_id>
          
          <creation_ts>2012-01-06 18:11:26 -0800</creation_ts>
          <short_desc>webkitpy: clean up version handling logic in port constructors</short_desc>
          <delta_ts>2012-01-10 17:55:40 -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>WONTFIX</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>75931</dependson>
    
    <dependson>76016</dependson>
          <blocked>75037</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>ossy</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531560</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-06 18:11:26 -0800</bug_when>
    <thetext>webkitpy: clean up version handling logic in port constructors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531562</commentid>
    <comment_count>1</comment_count>
      <attachid>121529</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-06 18:14:31 -0800</bug_when>
    <thetext>Created attachment 121529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531566</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-06 18:30:08 -0800</bug_when>
    <thetext>just posting this to give a view of the stop on the way ... this patch pushes all of the os version parsing into platforminfo.py, and removes it from the Port constructors (which will now take fully-specified port names).

I need to break this large patch up into a bunch of smaller, more easily digestible ones.

The final shape of factory.py is still up in the air. My current thinking is that the factory only needs to know a list of classes and can run some sort of generic algorithm over the list of classes given a host and an options argument to figure out a unique port object to construct, but I haven&apos;t figured out what that algorithm will be yet. 

I think ideally adding a new Port implementation should be a matter of adding one entry to a list in factory.py, and should not need the big, hard-to-understand switch statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533542</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-10 17:55:40 -0800</bug_when>
    <thetext>closing .. this is geting addressed by individual patches tracked by bug 75037.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121529</attachid>
            <date>2012-01-06 18:14:31 -0800</date>
            <delta_ts>2012-01-10 17:55:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75764-20120106181429.patch</filename>
            <type>text/plain</type>
            <size>121987</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MzQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWJhZTE2YjA2ZjFjYjZmOWNiYzhkZmEzNTRjNjdkNmRl
M2MzNjkyNS4uNzk0NzljZDFlMmMwZTVhYTYwNjA4OTJmZDI3ZjMxMmVhMmZlNDM5ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
MiBAQAorMjAxMi0wMS0wNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICB3ZWJraXRweTogY2xlYW4gdXAgdmVyc2lvbiBoYW5kbGluZyBsb2dpYyBpbiBwb3J0
IGNvbnN0cnVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzU3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIGNoYW5nZSBjbGVhbnMgdXAgYSBsb3Qgb2YgdGhlIHZlcnNpb24gcGFyc2luZyBs
b2dpYyBpbiB0aGUKKyAgICAgICAgbGF5b3V0X3Rlc3RzLnBvcnQgY2xhc3Nlcy4KKworICAgICAg
ICBXZSBhZGQgdHdvIG5ldyAnb3NfbmFtZScgYW5kICdvc192ZXJzaW9uJyBwcm9wZXJ0aWVzIHRv
IHRoZQorICAgICAgICBwbGF0Zm9ybWluZm8gb2JqZWN0IHRoYXQgd2lsbCB1c2UgZ2VuZXJpYy9z
YW5pdGl6ZWQgbmFtZXMsIGFuZAorICAgICAgICB0aGVuIGFkZHMgYSBzdGF0aWMgZGV0ZXJtaW5l
X3BvcnRfbmFtZSgpIG1ldGhvZCB0byBlYWNoIHBvcnQKKyAgICAgICAgY2xhc3MgdGhhdCB3aWxs
IHRha2UgYSAocG9zc2libHkgcGFydGlhbGx5LXNwZWNpZmllZCkgcG9ydCBuYW1lLAorICAgICAg
ICBhIGhvc3Qgb2JqZWN0LCBhbmQgYW4gb3B0aW9ucyBvYmplY3QsIGFuZCByZXR1cm4gYQorICAg
ICAgICBmdWxseS1zcGVjaWZpZWQgcG9ydCBuYW1lLgorCisgICAgICAgIFRoZSBwb3J0IGNvbnN0
cnVjdG9ycyB0aGVtc2VsdmVzIGFyZSB0aGVuIGNoYW5nZWQgdG8gcmVxdWlyZQorICAgICAgICBm
dWxseSBzcGVjaWZpZWQgcG9ydCBuYW1lcy4KKworICAgICAgICBUaGVyZSdzIGEgbG90IG9mIG90
aGVyIGNsZWFuIHVwIGFuZCBtZXNzIGluIHRoZSBjdXJyZW50IHZlcnNpb24KKyAgICAgICAgb2Yg
dGhpcyBwYXRjaCwgYnV0IGFsbCB0aGUgdW5pdCB0ZXN0cyBwYXNzLiBOT1QgRk9SIExBTkRJTkch
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZv
LnB5OgorICAgICAgICAoUGxhdGZvcm1JbmZvLl9faW5pdF9fKToKKyAgICAgICAgKFBsYXRmb3Jt
SW5mbyk6CisgICAgICAgIChQbGF0Zm9ybUluZm8uX2RldGVybWluZV9vc19uYW1lKToKKyAgICAg
ICAgKFBsYXRmb3JtSW5mby5fZGV0ZXJtaW5lX21hY192ZXJzaW9uKToKKyAgICAgICAgKFBsYXRm
b3JtSW5mby5fZGV0ZXJtaW5lX2xpbnV4X3ZlcnNpb24pOgorICAgICAgICAoUGxhdGZvcm1JbmZv
Ll9kZXRlcm1pbmVfd2luX3ZlcnNpb24pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fbW9jay5weToKKyAgICAgICAgKE1vY2tQbGF0Zm9ybUlu
Zm8uX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9z
eXN0ZW1ob3N0LnB5OgorICAgICAgICAoU3lzdGVtSG9zdC5fX2luaXRfXyk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcHBsZS5weToKKyAgICAgICAgKEFw
cGxlUG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydCk6CisgICAgICAgIChQb3J0Ll9vcGVyYXRp
bmdfc3lzdGVtX2Zvcl9wbGF0Zm9ybSk6CisgICAgICAgIChQb3J0LmRldGVybWluZV9wb3J0X25h
bWUpOgorICAgICAgICAoUG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAoUG9ydFRlc3Qu
bWFrZV9wb3J0KToKKyAgICAgICAgKFBvcnRUZXN0KToKKyAgICAgICAgKFBvcnRUZXN0Lm1ha2Vf
dGVzdF9wb3J0KToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfcHJldHR5X3BhdGNoX29zX2Vycm9y
KToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfcHJldHR5X3BhdGNoX3NjcmlwdF9lcnJvcik6Cisg
ICAgICAgIChQb3J0VGVzdC50ZXN0X2dldF9vcHRpb25fX2RlZmF1bHQpOgorICAgICAgICAoUG9y
dFRlc3QudGVzdF9hZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVjdG9yeSk6CisgICAgICAgIChQb3J0
VGVzdC50ZXN0X3VzZXNfdGVzdF9leHBlY3RhdGlvbnNfZmlsZSk6CisgICAgICAgIChQb3J0VGVz
dC50ZXN0X2ZpbmRfbm9fcGF0aHNfc3BlY2lmaWVkKToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3Rf
ZmluZF9vbmVfdGVzdCk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfZ2xvYik6CisgICAg
ICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfd2l0aF9za2lwcGVkX2RpcmVjdG9yaWVzKToKKyAgICAg
ICAgKFBvcnRUZXN0LnRlc3RfZmluZF93aXRoX3NraXBwZWRfZGlyZWN0b3JpZXNfMik6CisgICAg
ICAgIChQb3J0VGVzdC50ZXN0X3BhcnNlX3JlZnRlc3RfbGlzdCk6CisgICAgICAgIChWaXJ0dWFs
VGVzdC50ZXN0X3ZpcnR1YWxfbWV0aG9kcyk6CisgICAgICAgIChWaXJ0dWFsVGVzdC50ZXN0X3Zp
cnR1YWxfZHJpdmVyX21ldGhvZHMpOgorICAgICAgICAoRHJpdmVyVGVzdC5fYXNzZXJ0X3dyYXBw
ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuZm9yKToKKyAgICAgICAgKENocm9taXVtUG9y
dC5fX2luaXRfXyk6CisgICAgICAgIChDaHJvbWl1bVBvcnQpOgorICAgICAgICAoQ2hyb21pdW1Q
b3J0Ll9jaHJvbWl1bV9iYXNlX2Rpcik6CisgICAgICAgIChDaHJvbWl1bVBvcnQucGF0aF9mcm9t
X2Nocm9taXVtX2Jhc2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ2hyb21pdW1HcHVUZXN0
LmFzc2VydF9wb3J0X3dvcmtzKToKKyAgICAgICAgKENocm9taXVtR3B1VGVzdC5fYXNzZXJ0X2Jh
c2VsaW5lX3BhdGgpOgorICAgICAgICAoQ2hyb21pdW1HcHVUZXN0LnRlc3RfZ3JhcGhpY3NfdHlw
ZSk6CisgICAgICAgIChDaHJvbWl1bUdwdVRlc3QudGVzdF9kZWZhdWx0X3Rlc3RzX3BhdGhzKToK
KyAgICAgICAgKENocm9taXVtR3B1VGVzdC50ZXN0X2RlZmF1bHRfdGVzdHNfcGF0aHMudGVzdF9w
YXRocyk6CisgICAgICAgIChDaHJvbWl1bUdwdVRlc3QudGVzdF90ZXN0X2ZpbGVzKToKKyAgICAg
ICAgKENocm9taXVtR3B1VGVzdC50ZXN0X3Rlc3RfZmlsZXMudGVzdF9wYXRocyk6CisgICAgICAg
IChDaHJvbWl1bUdwdVRlc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbGludXgucHk6CisgICAgICAgIChDaHJvbWl1bUxpbnV4UG9ydCk6
CisgICAgICAgIChDaHJvbWl1bUxpbnV4UG9ydC5kZXRlcm1pbmVfcG9ydF9uYW1lKToKKyAgICAg
ICAgKENocm9taXVtTGludXhQb3J0Ll9kZXRlcm1pbmVfZHJpdmVyX3BhdGhfc3RhdGljYWxseSk6
CisgICAgICAgIChDaHJvbWl1bUxpbnV4UG9ydC5fc3RhdGljX2J1aWxkX3BhdGgpOgorICAgICAg
ICAoQ2hyb21pdW1MaW51eFBvcnQuX2RldGVybWluZV9hcmNoaXRlY3R1cmUpOgorICAgICAgICAo
Q2hyb21pdW1MaW51eFBvcnQuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1MaW51eFBvcnQu
X2J1aWxkX3BhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fbGludXhfdW5pdHRlc3QucHk6CisgICAgICAgIChDaHJvbWl1bUxpbnV4UG9y
dFRlc3QpOgorICAgICAgICAoQ2hyb21pdW1MaW51eFBvcnRUZXN0LmFzc2VydF9hcmNoaXRlY3R1
cmUpOgorICAgICAgICAoQ2hyb21pdW1MaW51eFBvcnRUZXN0LnRlc3RfY2hlY2tfaWxsZWdhbF9w
b3J0X25hbWVzKToKKyAgICAgICAgKENocm9taXVtTGludXhQb3J0VGVzdC50ZXN0X2RldGVybWlu
ZV9hcmNoaXRlY3R1cmVfZmFpbHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5OgorICAgICAgICAoQ2hyb21pdW1NYWNQb3J0KToK
KyAgICAgICAgKENocm9taXVtTWFjUG9ydC5kZXRlcm1pbmVfcG9ydF9uYW1lKToKKyAgICAgICAg
KENocm9taXVtTWFjUG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWNfdW5pdHRlc3QucHk6CisgICAgICAgIChDaHJv
bWl1bU1hY1BvcnRUZXN0KToKKyAgICAgICAgKENocm9taXVtTWFjUG9ydFRlc3QuYXNzZXJ0X25h
bWUpOgorICAgICAgICAoQ2hyb21pdW1NYWNQb3J0VGVzdC50ZXN0X3ZlcnNpb25zKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0
LnB5OgorICAgICAgICAoQ2hyb21pdW1Qb3J0VGVzdC50ZXN0X2FsbF90ZXN0X2NvbmZpZ3VyYXRp
b25zKToKKyAgICAgICAgKENocm9taXVtUG9ydFRlc3QuVGVzdE1hY1BvcnQuX19pbml0X18pOgor
ICAgICAgICAoQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0Ll9faW5pdF9fKToKKyAgICAg
ICAgKENocm9taXVtUG9ydFRlc3QuVGVzdFdpblBvcnQuX19pbml0X18pOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5OgorICAgICAg
ICAob3NfdmVyc2lvbik6CisgICAgICAgIChDaHJvbWl1bVdpblBvcnQpOgorICAgICAgICAoQ2hy
b21pdW1XaW5Qb3J0LmRldGVybWluZV9wb3J0X25hbWUpOgorICAgICAgICAoQ2hyb21pdW1XaW5Q
b3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3dpbl91bml0dGVzdC5weToKKyAgICAgICAgKENocm9taXVtV2luVGVzdCk6
CisgICAgICAgIChDaHJvbWl1bVdpblRlc3QuYXNzZXJ0X25hbWUpOgorICAgICAgICAoQ2hyb21p
dW1XaW5UZXN0LnRlc3RfdmVyc2lvbnMpOgorICAgICAgICAoQ2hyb21pdW1XaW5UZXN0LnRlc3Rf
YmFzZWxpbmVfcGF0aCk6CisgICAgICAgIChDaHJvbWl1bVdpblRlc3QudGVzdF9idWlsZF9wYXRo
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlcl91
bml0dGVzdC5weToKKyAgICAgICAgKERyaXZlclRlc3QubWFrZV9wb3J0KToKKyAgICAgICAgKERy
aXZlclRlc3QuX2Fzc2VydF93cmFwcGVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAgKERyeVJ1blBvcnQpOgorICAgICAg
ICAoRHJ5UnVuUG9ydC5kZXRlcm1pbmVfcG9ydF9uYW1lKToKKyAgICAgICAgKERyeVJ1blBvcnQu
X19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
ZWZsLnB5OgorICAgICAgICAoRWZsUG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5OgorICAgICAgICAoUG9ydEZhY3RvcnkuX3BvcnRf
bmFtZV9mcm9tX2FyZ3VtZW50c19hbmRfb3B0aW9ucyk6CisgICAgICAgIChQb3J0RmFjdG9yeSk6
CisgICAgICAgIChQb3J0RmFjdG9yeS5nZXQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weToKKyAgICAgICAgKEZhY3RvcnlU
ZXN0KToKKyAgICAgICAgKEZhY3RvcnlUZXN0LmFzc2VydF9wb3J0KToKKyAgICAgICAgKEZhY3Rv
cnlUZXN0LmFzc2VydF9wbGF0Zm9ybV9wb3J0KToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnRlc3Rf
bWFjKToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnRlc3Rfd2luKToKKyAgICAgICAgKEZhY3RvcnlU
ZXN0LnRlc3RfY2hyb21pdW1fZ3B1KToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnRlc3RfY2hyb21p
dW1fZ3B1X2xpbnV4KToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnRlc3RfY2hyb21pdW1fZ3B1X21h
Yyk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X2Nocm9taXVtX2dwdV93aW4pOgorICAgICAg
ICAoRmFjdG9yeVRlc3QudGVzdF9jaHJvbWl1bV9tYWMpOgorICAgICAgICAoRmFjdG9yeVRlc3Qu
dGVzdF9jaHJvbWl1bV9saW51eCk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X2Nocm9taXVt
X3dpbik6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X3Vua25vd25fcG9ydF9uYW1lKToKKyAg
ICAgICAgKEZhY3RvcnlUZXN0LnRlc3RfdW5rbm93bl9vc19uYW1lKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUucHk6CisgICAgICAg
IChHb29nbGVDaHJvbWVMaW51eDMyUG9ydCk6CisgICAgICAgIChHb29nbGVDaHJvbWVMaW51eDMy
UG9ydC5kZXRlcm1pbmVfcG9ydF9uYW1lKToKKyAgICAgICAgKEdvb2dsZUNocm9tZUxpbnV4NjRQ
b3J0KToKKyAgICAgICAgKEdvb2dsZUNocm9tZUxpbnV4NjRQb3J0LmRldGVybWluZV9wb3J0X25h
bWUpOgorICAgICAgICAoR29vZ2xlQ2hyb21lTWFjUG9ydCk6CisgICAgICAgIChHb29nbGVDaHJv
bWVNYWNQb3J0LmRldGVybWluZV9wb3J0X25hbWUpOgorICAgICAgICAoR29vZ2xlQ2hyb21lV2lu
UG9ydCk6CisgICAgICAgIChHb29nbGVDaHJvbWVXaW5Qb3J0LmRldGVybWluZV9wb3J0X25hbWUp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2No
cm9tZV91bml0dGVzdC5weToKKyAgICAgICAgKEdldEdvb2dsZUNocm9tZVBvcnRUZXN0Ll92ZXJp
ZnlfYmFzZWxpbmVfcGF0aCk6CisgICAgICAgIChHZXRHb29nbGVDaHJvbWVQb3J0VGVzdC5fdmVy
aWZ5X2V4cGVjdGF0aW9uc19vdmVycmlkZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorICAgICAgICAoR3RrUG9ydCk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHk6CisgICAgICAgIChNYWNQ
b3J0KToKKyAgICAgICAgKE1hY1BvcnQuZGV0ZXJtaW5lX3BvcnRfbmFtZSk6CisgICAgICAgIChN
YWNQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L21hY191bml0dGVzdC5weToKKyAgICAgICAgKE1hY1Rlc3QpOgorICAgICAgICAoYXNz
ZXJ0X25hbWUpOgorICAgICAgICAodGVzdF90ZXN0c19mb3Jfb3RoZXJfcGxhdGZvcm1zKToKKyAg
ICAgICAgKHRlc3RfdmVyc2lvbik6CisgICAgICAgICh0ZXN0X3ZlcnNpb25zKToKKyAgICAgICAg
KHRlc3RfaXNfdmVyc2lvbl9tZXRob2RzKToKKyAgICAgICAgKHRlc3Rfc2V0dXBfZW52aXJvbl9m
b3Jfc2VydmVyKToKKyAgICAgICAgKF9hc3NlcnRfc2VhcmNoX3BhdGgpOgorICAgICAgICAodGVz
dF9zaG93X3Jlc3VsdHNfaHRtbF9maWxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5OgorICAgICAgICAoTW9ja0RSVFBvcnQpOgorICAg
ICAgICAoTW9ja0RSVFBvcnQuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2NrRFJU
UG9ydFRlc3QubWFrZV9wb3J0KToKKyAgICAgICAgKE1vY2tEUlRQb3J0VGVzdC50ZXN0X3BvcnRf
bmFtZV9pbl9jb25zdHJ1Y3Rvcik6CisgICAgICAgIChNb2NrRFJUVGVzdC5hc3NlcnRUZXN0KToK
KyAgICAgICAgKE1vY2tEUlRUZXN0LnRlc3RfbWFpbik6CisgICAgICAgIChNb2NrQ2hyb21pdW1E
UlRUZXN0LnRlc3RfcGl4ZWx0ZXN0X19mYWlscyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAoUG9ydFRlc3RD
YXNlKToKKyAgICAgICAgKFBvcnRUZXN0Q2FzZS5tYWtlX3BvcnQpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHk6CisgICAgICAgIChRdFBvcnQpOgor
ICAgICAgICAoUXRQb3J0LmRldGVybWluZV9wb3J0X25hbWUpOgorICAgICAgICAoUXRQb3J0Ll9f
aW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0
X3VuaXR0ZXN0LnB5OgorICAgICAgICAoUXRQb3J0VGVzdCk6CisgICAgICAgIChRdFBvcnRUZXN0
Ll9hc3NlcnRfc2VhcmNoX3BhdGgpOgorICAgICAgICAoUXRQb3J0VGVzdC50ZXN0X2Jhc2VsaW5l
X3NlYXJjaF9wYXRoKToKKyAgICAgICAgKFF0UG9ydFRlc3QudGVzdF9vcGVyYXRpbmdfc3lzdGVt
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6
CisgICAgICAgIChUZXN0UG9ydCk6CisgICAgICAgIChUZXN0UG9ydC5kZXRlcm1pbmVfcG9ydF9u
YW1lKToKKyAgICAgICAgKFRlc3RQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKFdlYktpdFBvcnQu
X19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2Via2l0X3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdFdlYktpdFBvcnQuX19pbml0X18pOgor
ICAgICAgICAoV2ViS2l0UG9ydFVuaXRUZXN0cy50ZXN0X2RlZmF1bHRfb3B0aW9ucyk6CisgICAg
ICAgIChXZWJLaXRQb3J0VGVzdCk6CisgICAgICAgICh0ZXN0X3J1bnRpbWVfZmVhdHVyZV9saXN0
KToKKyAgICAgICAgKHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMpOgorICAgICAgICAodGVzdF90
ZXN0X2V4cGVjdGF0aW9ucyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5Qb3J0KToKKyAgICAgICAgKFdpblBvcnQuZGV0
ZXJtaW5lX3BvcnRfbmFtZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93aW5fdW5pdHRlc3QucHk6CisgICAgICAgIChXaW5Pc1ZlcnNpb25UZXN0KToKKyAg
ICAgICAgKFdpbk9zVmVyc2lvblRlc3QuZGlzYWJsZWRfdGVzdF9zaG93X3Jlc3VsdHNfaHRtbF9m
aWxlKToKKyAgICAgICAgKFdpbk9zVmVyc2lvblRlc3QuZGlzYWJsZWRfdGVzdF9vc192ZXJzaW9u
KToKKyAgICAgICAgKFdpbk9zVmVyc2lvblRlc3QuZGlzYWJsZWRfdGVzdF9vc192ZXJzaW9uLm1v
Y2tfcnVuX2NvbW1hbmQpOgorICAgICAgICAoV2luUG9ydFRlc3QpOgorICAgICAgICAoV2luUG9y
dFRlc3QudGVzdF9zaG93X3Jlc3VsdHNfaHRtbF9maWxlKToKKyAgICAgICAgKFdpblBvcnRUZXN0
Ll9hc3NlcnRfc2VhcmNoX3BhdGgpOgorICAgICAgICAoV2luUG9ydFRlc3QudGVzdF9iYXNlbGlu
ZV9zZWFyY2hfcGF0aCk6CisgICAgICAgIChXaW5Qb3J0VGVzdC5fYXNzZXJ0X3ZlcnNpb24pOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIu
cHk6CisgICAgICAgIChnZXRfdGVzdF9iYXNlbGluZXMuQWxsUGxhdGZvcm1zUG9ydC5fX2luaXRf
Xyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNl
cnZlcl91bml0dGVzdC5weToKKyAgICAgICAgKGdldF90ZXN0X2NvbmZpZyk6CisKIDIwMTItMDEt
MDUgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgd2Via2l0
cHk6IGNsZWFuIHVwIHRlc3QvdXJpIGNvbnZlcnNpb24gcm91dGluZXMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm8ucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvLnB5CmluZGV4IDY0
ZTgwNWRmMjU5NDgzNjhlNWUxZmE4OGQ2NDcxNDA4YTZkZmRjZTAuLjJhMjFjODk5MTkzNzhiZjk4
ZGI2Y2UxNGM0MjYyZWJjZjVlZGVjMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm8ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mby5weQpAQCAtMjgsNiArMjgsNyBAQAogCiBp
bXBvcnQgcGxhdGZvcm0KIGltcG9ydCByZQoraW1wb3J0IHN5cwogCiAKICMgV2UgdXNlIHRoaXMg
aW5zdGVhZCBvZiBjYWxscyB0byBwbGF0Zm9ybSBkaXJlY3RseSB0byBhbGxvdyBtb2NraW5nLgpA
QCAtMzUsNiArMzYsNTcgQEAgY2xhc3MgUGxhdGZvcm1JbmZvKG9iamVjdCk6CiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGV4ZWN1dGl2ZSk6CiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1
dGl2ZQogCisgICAgICAgIHNlbGYub3NfbmFtZSA9IHNlbGYuX2RldGVybWluZV9vc19uYW1lKHN5
cy5wbGF0Zm9ybSkKKyAgICAgICAgaWYgc2VsZi5vc19uYW1lID09ICdsaW51eCc6CisgICAgICAg
ICAgICBzZWxmLm9zX3ZlcnNpb24gPSBzZWxmLl9kZXRlcm1pbmVfbGludXhfdmVyc2lvbigpCisg
ICAgICAgIGlmIHNlbGYub3NfbmFtZS5zdGFydHN3aXRoKCdtYWMnKToKKyAgICAgICAgICAgIHNl
bGYub3NfdmVyc2lvbiA9IHNlbGYuX2RldGVybWluZV9tYWNfdmVyc2lvbihwbGF0Zm9ybS5tYWNf
dmVyKClbMF0pCisgICAgICAgIGlmIHNlbGYub3NfdmVyc2lvbi5zdGFydHN3aXRoKCd3aW4nKToK
KyAgICAgICAgICAgIHNlbGYub3NfdmVyc2lvbiA9IHNlbGYuX2RldGVybWluZV93aW5fdmVyc2lv
bigpCisKKyAgICBkZWYgX2RldGVybWluZV9vc19uYW1lKHNlbGYsIHN5c19wbGF0Zm9ybSk6Cisg
ICAgICAgIGlmIHN5c19wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIHJldHVybiAn
bWFjJworICAgICAgICBpZiBzeXNfcGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKKyAgICAg
ICAgICAgIHJldHVybiAnbGludXgnCisgICAgICAgIGlmIHN5c19wbGF0Zm9ybSBpbiAoJ3dpbjMy
JywgJ2N5Z3dpbicpOgorICAgICAgICAgICAgcmV0dXJuICd3aW4nCisgICAgICAgIHJhaXNlIEFz
c2VydGlvbkVycm9yKCd1bnJlY29nbml6ZWQgcGxhdGZvcm0gc3RyaW5nICIlcyInICUgc3lzX3Bs
YXRmb3JtKQorCisgICAgZGVmIF9kZXRlcm1pbmVfbWFjX3ZlcnNpb24oc2VsZiwgbWFjX3ZlcnNp
b25fc3RyaW5nKToKKyAgICAgICAgcmVsZWFzZV92ZXJzaW9uID0gbWFjX3ZlcnNpb25fc3RyaW5n
LnNwbGl0KCcuJylbMV0KKyAgICAgICAgdmVyc2lvbl9zdHJpbmdzID0geworICAgICAgICAgICAg
NTogJ2xlb3BhcmQnLAorICAgICAgICAgICAgNjogJ3Nub3dsZW9wYXJkJywKKyAgICAgICAgICAg
IDc6ICdsaW9uJywKKyAgICAgICAgfQorICAgICAgICAjIEZJWE1FOiBTaG91bGQgdGhpcyByb3V0
aW5lIGVuZm9yY2UgbWluaW11bSB2ZXJzaW9ucyBhbmQgaGFuZGxlICdmdXR1cmUnLCBvciBsZXQg
Y2FsbGVycyBkbyB0aGF0PworICAgICAgICBhc3NlcnQgcmVsZWFzZV92ZXJzaW9uID49IG1pbih2
ZXJzaW9uX3N0cmluZ3Mua2V5cygpKQorICAgICAgICByZXR1cm4gdmVyc2lvbl9zdHJpbmdzLmdl
dChyZWxlYXNlX3ZlcnNpb24sICdmdXR1cmUnKQorCisgICAgZGVmIF9kZXRlcm1pbmVfbGludXhf
dmVyc2lvbihzZWxmKToKKyAgICAgICAgIyBGSVhNRTogd2UgaWdub3JlIHdoYXRldmVyIHRoZSBy
ZWFsIHZlcnNpb24gaXMgYW5kIHByZXRlbmQgaXQncyBsdWNpZCBmb3Igbm93LgorICAgICAgICBy
ZXR1cm4gJ2x1Y2lkJworCisgICAgZGVmIF9kZXRlcm1pbmVfd2luX3ZlcnNpb24oc2VsZik6Cisg
ICAgICAgIGlmIGhhc2F0dHIoc3lzLCAnZ2V0d2luZG93c3ZlcnNpb24nKToKKyAgICAgICAgICAg
IHdpbl92ZXJzaW9uX3R1cGxlID0gc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICMgTm90ZSB0aGF0IHRoaXMgc2hvdWxkIG9ubHkgZXZlciBiZSBjYWxs
ZWQgb24gd2luZG93cywgc28gdGhpcyBzaG91bGQgYWx3YXlzIHdvcmsuCisgICAgICAgICAgICB2
ZXJfb3V0cHV0ID0gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoWydjbWQnLCAnL2MnLCAndmVy
J10pCisgICAgICAgICAgICBtYXRjaF9vYmplY3QgPSByZS5zZWFyY2gocicoP1A8bWFqb3I+XGQp
XC4oP1A8bWlub3I+XGQpXC4oP1A8YnVpbGQ+XGQrKScsIHZlcl9vdXRwdXQpCisgICAgICAgICAg
ICBhc3NlcnQgbWF0Y2hfb2JqZWN0LCAnY21kIHJldHVybmVkIGFuIHVuZXhwZWN0ZWQgdmVyc2lv
biBzdHJpbmc6ICcgKyB2ZXJfb3V0cHV0CisgICAgICAgICAgICB3aW5fdmVyc2lvbl90dXBsZSA9
IHR1cGxlKG1hcChpbnQsIG1hdGNoX29iamVjdC5ncm91cHMoKSkpCisKKyAgICAgICAgaWYgd2lu
X3ZlcnNpb25fdHVwbGVbOjNdID09ICg2LCAxLCA3NjAwKToKKyAgICAgICAgICAgIHJldHVybiAn
N3NwMCcKKyAgICAgICAgaWYgd2luX3ZlcnNpb25fdHVwbGVbOjJdID09ICg2LCAwKToKKyAgICAg
ICAgICAgIHJldHVybiAndmlzdGEnCisgICAgICAgIGlmIHdpbl92ZXJzaW9uX3R1cGxlWzoyXSA9
PSAoNSwgMSk6CisgICAgICAgICAgICByZXR1cm4gJ3hwJworICAgICAgICBhc3NlcnQgd2luX3Zl
cnNpb25fdHVwbGVbMF0gPiA2IG9yIHdpbl92ZXJzaW9uX3R1cGxlWzFdID49IDEsICdVbnJlY29n
bml6ZWQgV2luZG93cyB2ZXJzaW9uIHR1cGxlOiAiJXMiJyAlIHdpbl92ZXJzaW9uX3R1cGxlCisg
ICAgICAgIHJldHVybiAnZnV0dXJlJworCiAgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKICAg
ICAgICAgIyBwbGF0Zm9ybS5wbGF0Zm9ybSgpIHJldHVybnMgRGFyd2luIGluZm9ybWF0aW9uIGZv
ciBNYWMsIHdoaWNoIGlzIGp1c3QgY29uZnVzaW5nLgogICAgICAgICBpZiBwbGF0Zm9ybS5zeXN0
ZW0oKSA9PSAiRGFyd2luIjoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fbW9jay5weQppbmRleCAxNGZlZGQwNjJiNTQzY2Zh
OTkwMjA0ZjBkMTUyY2I2ZDUwNmEyNjEyLi40ZjFjMmExZGMyNGJmYmIzYzAxNWE4YjU1N2NmM2M2
MThmNjdhOWUxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vcGxhdGZvcm1pbmZvX21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5CkBAIC0yOCw2ICsyOCwxMCBAQAogCiAKIGNs
YXNzIE1vY2tQbGF0Zm9ybUluZm8ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZik6Cisg
ICAgICAgIHNlbGYub3NfbmFtZSA9ICdtYWMnCisgICAgICAgIHNlbGYub3NfdmVyc2lvbiA9ICds
ZW9wYXJkJworCiAgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuICJN
b2NrUGxhdGZvcm0gMS4wIgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9zeXN0ZW1ob3N0LnB5CmluZGV4IDliODRiYmQ0M2JmYTI2NDk3NDQyNWM1MjI2YzBm
YTk2NTVkYjBmZDAuLmExNjg1YjliNjQ4Mjc3MjI3MmY2NDNkMTk0ZDhhNmRjMzgxZjBjNmEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0
LnB5CkBAIC0zMCwxNCArMzAsMTIgQEAgaW1wb3J0IG9zCiAKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbSBpbXBvcnQgZW52aXJvbm1lbnQsIGV4ZWN1dGl2ZSwgZmlsZXN5c3RlbSwgcGxhdGZv
cm1pbmZvLCB1c2VyLCB3b3Jrc3BhY2UKIAotCiBjbGFzcyBTeXN0ZW1Ib3N0KG9iamVjdCk6CiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmV4ZWN1dGl2ZSA9IGV4ZWN1dGl2
ZS5FeGVjdXRpdmUoKQogICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtLkZpbGVT
eXN0ZW0oKQogICAgICAgICBzZWxmLnVzZXIgPSB1c2VyLlVzZXIoKQogICAgICAgICBzZWxmLnBs
YXRmb3JtID0gcGxhdGZvcm1pbmZvLlBsYXRmb3JtSW5mbyhzZWxmLmV4ZWN1dGl2ZSkKLSAgICAg
ICAgc2VsZi53b3Jrc3BhY2UgPSB3b3Jrc3BhY2UuV29ya3NwYWNlKHNlbGYuZmlsZXN5c3RlbSwg
c2VsZi5leGVjdXRpdmUpCiAKICAgICBkZWYgY29weV9jdXJyZW50X2Vudmlyb25tZW50KHNlbGYp
OgogICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQuRW52aXJvbm1lbnQob3MuZW52aXJvbi5jb3B5
KCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2FwcGxlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcHBs
ZS5weQppbmRleCAyOWNhOTg3YjVjOGJiZjEzNDQxNGVkZWUzZTEzOGEwODhmNjA3YzI5Li5jNzJl
NmZkZWE3NTdhYTA1NTExODg5MTRhNzZmMGE5NzNmNThhOTE5IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBwbGUucHkKQEAgLTU2LDIzICs1Niwx
MiBAQCBjbGFzcyBBcHBsZVBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICMgaW5zdGVhZCBvZiB0
aGUgaW5kaXZpZHVhbCBwb3J0IGNvbnN0cnVjdG9ycy4KICAgICAgICAgcmV0dXJuIHBvcnRfbmFt
ZVtsZW4oc2VsZi5wb3J0X25hbWUgKyAnLScpOl0KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBo
b3N0LCBwb3J0X25hbWU9Tm9uZSwgb3NfdmVyc2lvbl9zdHJpbmc9Tm9uZSwgKiprd2FyZ3MpOgot
ICAgICAgICBwb3J0X25hbWUgPSBwb3J0X25hbWUgb3Igc2VsZi5wb3J0X25hbWUKLSAgICAgICAg
V2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9cG9ydF9uYW1lLCAqKmt3
YXJncykKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncyk6
CisgICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3
YXJncykKIAotICAgICAgICAjIEZJWE1FOiBUaGlzIHNvcnQgb2YgcGFyc2luZyBiZWxvbmdzIGlu
IGZhY3RvcnkucHkhCi0gICAgICAgIGlmIHBvcnRfbmFtZSA9PSAnJXMtd2syJyAlIHNlbGYucG9y
dF9uYW1lOgotICAgICAgICAgICAgcG9ydF9uYW1lID0gc2VsZi5wb3J0X25hbWUKLSAgICAgICAg
ICAgICMgRklYTUU6IFRoaXMgbWF5IGJlIHdyb25nLCBzaW5jZSBvcHRpb25zIGlzIGEgZ2xvYmFs
IHByb3BlcnR5LCBhbmQgdGhlIHBvcnRfbmFtZSBpcyBzcGVjaWZpYyB0byB0aGlzIG9iamVjdD8K
LSAgICAgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCd3ZWJraXRfdGVzdF9ydW5uZXIn
LCBUcnVlKQotCi0gICAgICAgIGlmIHBvcnRfbmFtZSA9PSBzZWxmLnBvcnRfbmFtZToKLSAgICAg
ICAgICAgIHNlbGYuX3ZlcnNpb24gPSBzZWxmLl9kZXRlY3RfdmVyc2lvbihvc192ZXJzaW9uX3N0
cmluZykgb3Igc2VsZi5GVVRVUkVfVkVSU0lPTgotICAgICAgICAgICAgc2VsZi5fbmFtZSA9IHNl
bGYucG9ydF9uYW1lICsgJy0nICsgc2VsZi5fdmVyc2lvbgotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgYWxsb3dlZF9wb3J0X25hbWVzID0gc2VsZi5WRVJTSU9OX0ZBTExCQUNLX09SREVSICsg
W3NlbGYub3BlcmF0aW5nX3N5c3RlbSgpICsgIi1mdXR1cmUiXQotICAgICAgICAgICAgYXNzZXJ0
IHBvcnRfbmFtZSBpbiBhbGxvd2VkX3BvcnRfbmFtZXMsICIlcyBpcyBub3QgaW4gJXMiICUgKHBv
cnRfbmFtZSwgYWxsb3dlZF9wb3J0X25hbWVzKQotICAgICAgICAgICAgc2VsZi5fdmVyc2lvbiA9
IHNlbGYuX3N0cmlwX3BvcnRfbmFtZV9wcmVmaXgocG9ydF9uYW1lKQorICAgICAgICBhbGxvd2Vk
X3BvcnRfbmFtZXMgPSBzZWxmLlZFUlNJT05fRkFMTEJBQ0tfT1JERVIgKyBbc2VsZi5vcGVyYXRp
bmdfc3lzdGVtKCkgKyAiLWZ1dHVyZSJdCisgICAgICAgIGFzc2VydCBwb3J0X25hbWUgaW4gYWxs
b3dlZF9wb3J0X25hbWVzLCAiJXMgaXMgbm90IGluICVzIiAlIChwb3J0X25hbWUsIGFsbG93ZWRf
cG9ydF9uYW1lcykKKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHNlbGYuX3N0cmlwX3BvcnRfbmFt
ZV9wcmVmaXgocG9ydF9uYW1lKQogCiAgICAgIyBGSVhNRTogQSBtb3JlIHNvcGhpc2l0Y2F0ZWQg
dmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBtb3ZlIHRvIFdlYktpdFBvcnQgYW5kIHJl
cGxhY2UgYWxsIGNhbGxzIHRvIG5hbWUoKS4KICAgICBkZWYgX3BvcnRfbmFtZV93aXRoX3ZlcnNp
b24oc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkKaW5kZXggOWJjZjA1NTNlODgzM2M3ODlkZjMzMmQ3YzAwNmUzZjJkZjQ3NTdiZC4u
NjYyMWQ4YzI3MGQzNzU1NjFkNDIwY2ViYWVjODYxMGQ0YTZjMTM5OCAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtODEsMTcgKzgx
LDQwIEBAIGNsYXNzIER1bW15T3B0aW9ucyhvYmplY3QpOgogY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgICIiIkFic3RyYWN0IGNsYXNzIGZvciBQb3J0LXNwZWNpZmljIGhvb2tzIGZvciB0aGUgbGF5
b3V0X3Rlc3QgcGFja2FnZS4iIiIKIAotICAgIHBvcnRfbmFtZSA9IE5vbmUgICMgU3ViY2xhc3Nl
cyBvdmVycmlkZSB0aGlzCisgICAgIyBTdWJjbGFzc2VzIG92ZXJyaWRlIHRoaXMuIFRoaXMgc2hv
dWxkIGluZGljYXRlIHRoZSBiYXNpYyBpbXBsZW1lbnRhdGlvbgorICAgICMgcGFydCBvZiB0aGUg
cG9ydCBuYW1lLCBlLmcuLCAnY2hyb21pdW0tbWFjJywgJ3dpbicsICdndGsnOyB0aGVyZSBpcyBw
cm9iYWJseSAoPykKKyAgICAjIG9uZSB1bmlxdWUgdmFsdWUgcGVyIGNsYXNzLgorICAgIHBvcnRf
bmFtZSA9IE5vbmUKIAogICAgICMgVGVzdCBuYW1lcyByZXNlbWJsZSB1bml4IHJlbGF0aXZlIHBh
dGhzLCBhbmQgdXNlICcvJyBhcyBhIGRpcmVjdG9yeSBzZXBhcmF0b3IuCiAgICAgVEVTVF9QQVRI
X1NFUEFSQVRPUiA9ICcvJwogCiAgICAgQUxMX0JVSUxEX1RZUEVTID0gKCdkZWJ1ZycsICdyZWxl
YXNlJykKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9Tm9uZSwgb3B0
aW9ucz1Ob25lLCBjb25maWc9Tm9uZSwgKiprd2FyZ3MpOgorICAgICMgRklYTUU6IFRoaXMgc2hv
dWxkIG1vdmUgaW50byB3ZWJraXRweS5jb21tb24uc3lzdGVtIHNvbWV3aGVyZSAoY29uZmlnPyku
CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfb3BlcmF0aW5nX3N5c3RlbV9mb3JfcGxhdGZv
cm0ocGxhdGZvcm0pOgorICAgICAgICBpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgor
ICAgICAgICAgICAgcmV0dXJuICJsaW51eCIKKyAgICAgICAgZWxpZiBwbGF0Zm9ybSBpbiAoJ3dp
bjMyJywgJ2N5Z3dpbicpOgorICAgICAgICAgICAgcmV0dXJuICJ3aW4iCisgICAgICAgIGVsaWYg
cGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICByZXR1cm4gIm1hYyIKKyAgICAgICAg
cmV0dXJuIE5vbmUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkZXRlcm1pbmVfcG9ydF9u
YW1lKGNscywgaG9zdCwgb3B0aW9ucywgcG9ydF9uYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIGEg
ZnVsbHktc3BlY2lmaWVkIHBvcnQgbmFtZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBv
YmplY3RzLiIiIgorICAgICAgICAjIFN1YmNsYXNzZXMgd2lsbCB1c3VhbGx5IG92ZXJyaWRlIHRo
aXMuCisgICAgICAgIHJldHVybiBjbHMucG9ydF9uYW1lCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgaG9zdCwgcG9ydF9uYW1lLCBvcHRpb25zPU5vbmUsIGNvbmZpZz1Ob25lLCAqKmt3YXJncyk6
CisKKyAgICAgICAgIyBUaGlzIHZhbHVlIG1heSBiZSBkaWZmZXJlbnQgZnJvbSBjbHMucG9ydF9u
YW1lIGJ5IGhhdmluZyB2ZXJzaW9uIG1vZGlmaWVycworICAgICAgICAjIGFuZCBvdGhlciBmaWVs
ZHMgYXBwZW5kZWQgdG8gaXQgKGZvciBleGFtcGxlLCAncXQtYXJtJyBvciAnbWFjLXdrMicpLgor
ICAgICAgICBzZWxmLl9uYW1lID0gcG9ydF9uYW1lCiAKICAgICAgICAgIyBUaGVzZSBhcmUgZGVm
YXVsdCB2YWx1ZXMgdGhhdCBzaG91bGQgYmUgb3ZlcnJpZGRlbiBpbiBhIHN1YmNsYXNzZXMuCi0g
ICAgICAgIHNlbGYuX25hbWUgPSBwb3J0X25hbWUgb3Igc2VsZi5wb3J0X25hbWUgICMgU3ViY2xh
c3NlcyBtYXkgYXBwZW5kIGEgLVZFUlNJT04gKGxpa2UgbWFjLWxlb3BhcmQpIG9yIG90aGVyIHF1
YWxpZmllcnMuCiAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSAnJwogICAgICAgICBzZWxmLl9hcmNo
aXRlY3R1cmUgPSAneDg2JwogICAgICAgICBzZWxmLl9ncmFwaGljc190eXBlID0gJ2NwdScKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFz
ZV91bml0dGVzdC5weQppbmRleCA0M2Y5YjBmNjQzY2Y1MjM3OGUwNjRlOGJiZjRhOGJhZjM1NWE2
NTQ5Li43NjAwMjg1MjVmMzM0NTdmNzdlMzMyMmYyMDEwMWRmZDA0NGEzZDViIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3Vu
aXR0ZXN0LnB5CkBAIC0yNywzMiArMjcsMzMgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IG9w
dHBhcnNlCi1pbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNj
cmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZV9t
b2NrCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1v
Y2tFeGVjdXRpdmUsIE1vY2tFeGVjdXRpdmUyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5wYXRoIGltcG9ydCBhYnNwYXRoX3RvX3VyaQotZnJvbSB3ZWJraXRw
eS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9v
bCBpbXBvcnQgTW9ja09wdGlvbnMKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQotZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9t
b2NrIGltcG9ydCBNb2NrSG9zdAotCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVt
aG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydCBpbXBvcnQgY29uZmlnCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGlt
cG9ydCBjb25maWdfbW9jawogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQg
UG9ydCwgRHJpdmVyLCBEcml2ZXJPdXRwdXQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBv
cnQudGVzdCBpbXBvcnQgVGVzdFBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQu
dGVzdCBpbXBvcnQgVGVzdFBvcnQsIGFkZF91bml0X3Rlc3RzX3RvX21vY2tfZmlsZXN5c3RlbQor
ZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogCi1pbXBvcnQg
Y29uZmlnCi1pbXBvcnQgY29uZmlnX21vY2sKIAogY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwgZXhlY3V0aXZlPU5vbmUsICoqa3dhcmdz
KToKLSAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1I
b3N0KCkKICAgICAgICAgaWYgZXhlY3V0aXZlOgogICAgICAgICAgICAgaG9zdC5leGVjdXRpdmUg
PSBleGVjdXRpdmUKLSAgICAgICAgcmV0dXJuIFBvcnQoaG9zdCwgKiprd2FyZ3MpCisgICAgICAg
IHJldHVybiBQb3J0KGhvc3QsICdQb3J0VGVzdCcsICoqa3dhcmdzKQorCisgICAgZGVmIG1ha2Vf
dGVzdF9wb3J0KHNlbGYsIGV4ZWN1dGl2ZT1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGhvc3Qg
PSBNb2NrU3lzdGVtSG9zdCgpCisgICAgICAgIGFkZF91bml0X3Rlc3RzX3RvX21vY2tfZmlsZXN5
c3RlbShob3N0LmZpbGVzeXN0ZW0pCisgICAgICAgIHJldHVybiBUZXN0UG9ydChob3N0LCAndGVz
dC1tYWMtbGVvcGFyZCcsICoqa3dhcmdzKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF9jaGlsZF9w
cm9jZXNzZXMoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCkBAIC0xMDAs
NyArMTAxLDcgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBy
ZXR1cm4gbmV3X2ZpbGUKIAogICAgIGRlZiB0ZXN0X3ByZXR0eV9wYXRjaF9vc19lcnJvcihzZWxm
KToKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KGV4ZWN1dGl2ZT1leGVjdXRpdmVfbW9j
ay5Nb2NrRXhlY3V0aXZlMihleGNlcHRpb249T1NFcnJvcikpCisgICAgICAgIHBvcnQgPSBzZWxm
Lm1ha2VfcG9ydChleGVjdXRpdmU9TW9ja0V4ZWN1dGl2ZTIoZXhjZXB0aW9uPU9TRXJyb3IpKQog
ICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQogICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wcmV0dHlfcGF0Y2hfdGV4dCgicGF0Y2gu
dHh0IiksCkBAIC0xMTMsNyArMTE0LDcgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogCiAgICAgZGVmIHRlc3RfcHJldHR5X3BhdGNoX3NjcmlwdF9lcnJvcihzZWxmKToKICAg
ICAgICAgIyBGSVhNRTogVGhpcyBpcyBzb21lIHVnbHkgd2hpdGUtYm94IHRlc3QgaGFja2luZyAu
Li4KLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KGV4ZWN1dGl2ZT1leGVjdXRpdmVfbW9j
ay5Nb2NrRXhlY3V0aXZlMihleGNlcHRpb249U2NyaXB0RXJyb3IpKQorICAgICAgICBwb3J0ID0g
c2VsZi5tYWtlX3BvcnQoZXhlY3V0aXZlPU1vY2tFeGVjdXRpdmUyKGV4Y2VwdGlvbj1TY3JpcHRF
cnJvcikpCiAgICAgICAgIHBvcnQuX3ByZXR0eV9wYXRjaF9hdmFpbGFibGUgPSBUcnVlCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wcmV0dHlfcGF0Y2hfdGV4dCgicGF0Y2gudHh0Iiks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5fcHJldHR5X3BhdGNoX2Vycm9yX2h0bWwp
CkBAIC0yNDAsMTYgKzI0MSw4IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwb3J0LmdldF9vcHRpb24oJ2ZvbycsICdiYXInKSwgJ2JhcicpCiAKLSAgICBkZWYgdGVzdF9u
YW1lX191bnNldChzZWxmKToKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Lm5hbWUoKSwgTm9uZSkKLQotICAgIGRlZiB0ZXN0X25h
bWVfX3NldChzZWxmKToKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0n
Zm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Lm5hbWUoKSwgJ2ZvbycpCi0KICAg
ICBkZWYgdGVzdF9hZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAg
cG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nZm9vJykKKyAgICAgICAgcG9ydCA9IHNl
bGYubWFrZV9wb3J0KCkKICAgICAgICAgcG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCA9IGxhbWJk
YTogWydMYXlvdXRUZXN0cy9wbGF0Zm9ybS9mb28nXQogICAgICAgICBsYXlvdXRfdGVzdF9kaXIg
PSBwb3J0LmxheW91dF90ZXN0c19kaXIoKQogICAgICAgICB0ZXN0X2ZpbGUgPSAnZmFzdC90ZXN0
Lmh0bWwnCkBAIC0yNzYsMzUgKzI2OSwzNSBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5iYXNlbGluZV9wYXRoKCksICcv
Zm9vJykKIAogICAgIGRlZiB0ZXN0X3VzZXNfdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToK
LSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nZm9vJykKKyAgICAgICAg
cG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAgICAgICAgcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0
YXRpb25zX2ZpbGUgPSBsYW1iZGE6ICcvbW9jay1yZXN1bHRzL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dCcKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0LnVzZXNfdGVzdF9leHBlY3RhdGlvbnNf
ZmlsZSgpKQogICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oeycvbW9j
ay1yZXN1bHRzL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCc6ICcnfSkKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHBvcnQudXNlc190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkpCiAKICAgICBkZWYgdGVz
dF9maW5kX25vX3BhdGhzX3NwZWNpZmllZChzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RQb3J0
KE1vY2tIb3N0KCkpCisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfdGVzdF9wb3J0KCkKICAgICAg
ICAgbGF5b3V0X3Rlc3RzX2RpciA9IHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpCiAgICAgICAgIHRl
c3RzID0gcG9ydC50ZXN0cyhbXSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4odGVz
dHMpLCAwKQogCiAgICAgZGVmIHRlc3RfZmluZF9vbmVfdGVzdChzZWxmKToKLSAgICAgICAgcG9y
dCA9IFRlc3RQb3J0KE1vY2tIb3N0KCkpCisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfdGVzdF9w
b3J0KCkKICAgICAgICAgdGVzdHMgPSBwb3J0LnRlc3RzKFsnZmFpbHVyZXMvZXhwZWN0ZWQvaW1h
Z2UuaHRtbCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXN0cyksIDEpCiAKICAg
ICBkZWYgdGVzdF9maW5kX2dsb2Ioc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0UG9ydChNb2Nr
SG9zdCgpKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3Rlc3RfcG9ydCgpCiAgICAgICAgIHRl
c3RzID0gcG9ydC50ZXN0cyhbJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltKiddKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbih0ZXN0cyksIDIpCiAKICAgICBkZWYgdGVzdF9maW5kX3dpdGhfc2tp
cHBlZF9kaXJlY3RvcmllcyhzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RQb3J0KE1vY2tIb3N0
KCkpCisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfdGVzdF9wb3J0KCkKICAgICAgICAgdGVzdHMg
PSBwb3J0LnRlc3RzKCd1c2Vyc2NyaXB0cycpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndXNl
cnNjcmlwdHMvcmVzb3VyY2VzL2lmcmFtZS5odG1sJyBub3QgaW4gdGVzdHMpCiAKICAgICBkZWYg
dGVzdF9maW5kX3dpdGhfc2tpcHBlZF9kaXJlY3Rvcmllc18yKHNlbGYpOgotICAgICAgICBwb3J0
ID0gVGVzdFBvcnQoTW9ja0hvc3QoKSkKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV90ZXN0X3Bv
cnQoKQogICAgICAgICB0ZXN0cyA9IHBvcnQudGVzdHMoWyd1c2Vyc2NyaXB0cy9yZXNvdXJjZXMn
XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0cywgc2V0KFtdKSkKIApAQCAtMzI0LDcg
KzMxNyw3IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShQb3J0Ll9pc190ZXN0X2ZpbGUoZmlsZXN5c3RlbSwgJycsICdub3RyZWYt
Zm9vLnhocicpKQogCiAgICAgZGVmIHRlc3RfcGFyc2VfcmVmdGVzdF9saXN0KHNlbGYpOgotICAg
ICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja0hvc3QoKSkKKyAgICAgICAgcG9ydCA9IHNlbGYubWFr
ZV9wb3J0KCkKICAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJ2Jhci9yZWZ0ZXN0
Lmxpc3QnXSA9ICJcbiIuam9pbihbIj09IHRlc3QuaHRtbCB0ZXN0LXJlZi5odG1sIiwKICAgICAg
ICAgIiIsCiAgICAgICAgICIjIHNvbWUgY29tbWVudCIsCkBAIC0zNDgsNyArMzQxLDcgQEAgY2xh
c3MgVmlydHVhbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtZXRob2QsICphcmdzLCAqKmt3YXJncykKIAogICAg
IGRlZiB0ZXN0X3ZpcnR1YWxfbWV0aG9kcyhzZWxmKToKLSAgICAgICAgcG9ydCA9IFBvcnQoTW9j
a0hvc3QoKSkKKyAgICAgICAgcG9ydCA9IFBvcnQoTW9ja1N5c3RlbUhvc3QoKSwgJ1Rlc3RQb3J0
JykKICAgICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFsKHBvcnQuYmFzZWxpbmVfcGF0aCkKICAgICAg
ICAgc2VsZi5hc3NlcnRWaXJ0dWFsKHBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgpCiAgICAgICAg
IHNlbGYuYXNzZXJ0VmlydHVhbChwb3J0LmNoZWNrX2J1aWxkLCBOb25lKQpAQCAtMzY5LDcgKzM2
Miw3IEBAIGNsYXNzIFZpcnR1YWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRWaXJ0dWFsKHBvcnQuX3BhdGhfdG9fd2RpZmYpCiAKICAgICBkZWYgdGVzdF92aXJ0
dWFsX2RyaXZlcl9tZXRob2RzKHNlbGYpOgotICAgICAgICBkcml2ZXIgPSBEcml2ZXIoUG9ydChN
b2NrSG9zdCgpKSwgTm9uZSwgcGl4ZWxfdGVzdHM9RmFsc2UpCisgICAgICAgIGRyaXZlciA9IERy
aXZlcihQb3J0KE1vY2tTeXN0ZW1Ib3N0KCksICdUZXN0UG9ydCcpLCBOb25lLCBwaXhlbF90ZXN0
cz1GYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFsKGRyaXZlci5ydW5fdGVzdCwgTm9u
ZSkKICAgICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFsKGRyaXZlci5zdG9wKQogICAgICAgICBzZWxm
LmFzc2VydFZpcnR1YWwoZHJpdmVyLmNtZF9saW5lKQpAQCAtMzc5LDcgKzM3Miw3IEBAIGNsYXNz
IFZpcnR1YWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIGNsYXNzIERyaXZlclRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogCiAgICAgZGVmIF9hc3NlcnRfd3JhcHBlcihzZWxmLCB3cmFwcGVyX3N0
cmluZywgZXhwZWN0ZWRfd3JhcHBlcik6Ci0gICAgICAgIHdyYXBwZXIgPSBEcml2ZXIoUG9ydChN
b2NrSG9zdCgpKSwgTm9uZSwgcGl4ZWxfdGVzdHM9RmFsc2UpLl9jb21tYW5kX3dyYXBwZXIod3Jh
cHBlcl9zdHJpbmcpCisgICAgICAgIHdyYXBwZXIgPSBEcml2ZXIoUG9ydChNb2NrU3lzdGVtSG9z
dCgpLCAnVGVzdFBvcnQnKSwgTm9uZSwgcGl4ZWxfdGVzdHM9RmFsc2UpLl9jb21tYW5kX3dyYXBw
ZXIod3JhcHBlcl9zdHJpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlciwgZXhw
ZWN0ZWRfd3JhcHBlcikKIAogICAgIGRlZiB0ZXN0X2NvbW1hbmRfd3JhcHBlcihzZWxmKToKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
LnB5CmluZGV4IDY0YjcwNDRmYzhhYzg2ZDU1NDg0N2RjYWQzMjA2OTU1ZDA5NmJkYTkuLjc5N2Vh
ZDJjMDk4NWEyNWNiNjRhYWY2ZjljYjk0NTM4NDE2MWRhZGYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNTgsOCAr
NTgsNiBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiBjbGFzcyBDaHJvbWl1
bVBvcnQoUG9ydCk6CiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgQ2hyb21pdW0gaW1w
bGVtZW50YXRpb25zIG9mIHRoZSBQb3J0IGNsYXNzLiIiIgogCi0gICAgcG9ydF9uYW1lID0gImNo
cm9taXVtIgotCiAgICAgQUxMX1NZU1RFTVMgPSAoCiAgICAgICAgICgnbGVvcGFyZCcsICd4ODYn
KSwKICAgICAgICAgKCdzbm93bGVvcGFyZCcsICd4ODYnKSwKQEAgLTg4LDExICs4Niw5IEBAIGNs
YXNzIENocm9taXVtUG9ydChQb3J0KToKICAgICAgICAgJ2xpbnV4JzogWydsdWNpZCddLAogICAg
IH0KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCAqKmt3YXJncyk6Ci0gICAgICAgIFBv
cnQuX19pbml0X18oc2VsZiwgaG9zdCwgKiprd2FyZ3MpCi0gICAgICAgICMgQWxsIHN1Yi1jbGFz
c2VzIG92ZXJyaWRlIHRoaXMsIGJ1dCB3ZSBuZWVkIGFuIGluaXRpYWwgdmFsdWUgZm9yIHRlc3Rp
bmcuCi0gICAgICAgIHNlbGYuX3ZlcnNpb24gPSAneHAnCi0gICAgICAgIHNlbGYuX2Nocm9taXVt
X2Jhc2VfZGlyID0gTm9uZQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUs
ICoqa3dhcmdzKToKKyAgICAgICAgUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUs
ICoqa3dhcmdzKQorICAgICAgICBzZWxmLl9jaHJvbWl1bV9iYXNlX2Rpcl9wYXRoID0gTm9uZQog
CiAgICAgZGVmIF9jaGVja19maWxlX2V4aXN0cyhzZWxmLCBwYXRoX3RvX2ZpbGUsIGZpbGVfZGVz
Y3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZV9zdGVwPU5vbmUs
IGxvZ2dpbmc9VHJ1ZSk6CkBAIC0yMjAsMTcgKzIxNiwyMiBAQCBjbGFzcyBDaHJvbWl1bVBvcnQo
UG9ydCk6CiAgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLnJtdHJlZShzdHIodGVtcGRpcikp
CiAgICAgICAgIHJldHVybiAocmVzdWx0LCAwKSAgIyBGSVhNRTogaG93IHRvIGdldCAlIGRpZmY/
CiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2Nocm9taXVtX2Jhc2VfZGlyKGNscywgZmls
ZXN5c3RlbSwgKmNvbXBzKToKKyAgICAgICAgbW9kdWxlX3BhdGggPSBmaWxlc3lzdGVtLnBhdGhf
dG9fbW9kdWxlKGNscy5fX21vZHVsZV9fKQorICAgICAgICBvZmZzZXQgPSBtb2R1bGVfcGF0aC5m
aW5kKCd0aGlyZF9wYXJ0eScpCisgICAgICAgIGlmIG9mZnNldCA9PSAtMToKKyAgICAgICAgICAg
IHJldHVybiBmaWxlc3lzdGVtLmpvaW4obW9kdWxlX3BhdGhbMDptb2R1bGVfcGF0aC5maW5kKCdU
b29scycpXSwgJ1NvdXJjZScsICdXZWJLaXQnLCAnY2hyb21pdW0nKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgcmV0dXJuIG1vZHVsZV9wYXRoWzA6b2Zmc2V0XQorCisKICAgICBkZWYgcGF0
aF9mcm9tX2Nocm9taXVtX2Jhc2Uoc2VsZiwgKmNvbXBzKToKICAgICAgICAgIiIiUmV0dXJucyB0
aGUgZnVsbCBwYXRoIHRvIHBhdGggbWFkZSBieSBqb2luaW5nIHRoZSB0b3Agb2YgdGhlCiAgICAg
ICAgIENocm9taXVtIHNvdXJjZSB0cmVlIGFuZCB0aGUgbGlzdCBvZiBwYXRoIGNvbXBvbmVudHMg
aW4gfCpjb21wc3wuIiIiCi0gICAgICAgIGlmIG5vdCBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpcjoK
LSAgICAgICAgICAgIGNocm9taXVtX21vZHVsZV9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5wYXRo
X3RvX21vZHVsZShzZWxmLl9fbW9kdWxlX18pCi0gICAgICAgICAgICBvZmZzZXQgPSBjaHJvbWl1
bV9tb2R1bGVfcGF0aC5maW5kKCd0aGlyZF9wYXJ0eScpCi0gICAgICAgICAgICBpZiBvZmZzZXQg
PT0gLTE6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY2hyb21pdW1fYmFzZV9kaXIgPSBzZWxmLl9m
aWxlc3lzdGVtLmpvaW4oY2hyb21pdW1fbW9kdWxlX3BhdGhbMDpjaHJvbWl1bV9tb2R1bGVfcGF0
aC5maW5kKCdUb29scycpXSwgJ1NvdXJjZScsICdXZWJLaXQnLCAnY2hyb21pdW0nKQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpciA9IGNo
cm9taXVtX21vZHVsZV9wYXRoWzA6b2Zmc2V0XQotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyLCAqY29tcHMpCisgICAgICAgIGlmIG5v
dCBzZWxmLl9jaHJvbWl1bV9iYXNlX2Rpcl9wYXRoOgorICAgICAgICAgICAgc2VsZi5fY2hyb21p
dW1fYmFzZV9kaXJfcGF0aCA9IHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyKHNlbGYuX2ZpbGVzeXN0
ZW0pCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fY2hyb21pdW1f
YmFzZV9kaXJfcGF0aCwgKmNvbXBzKQogCiAgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlv
bnNfZmlsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNl
KCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScsICdjaHJvbWl1bScsICd0ZXN0X2V4cGVjdGF0aW9u
cy50eHQnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQppbmRleCA5NjVmYjU4NmQ4
ZTU0M2E1N2UwNDFmODg3NTIwYzQ4MmI0YThmOGFkLi5lODBjZGUyYjk4MGU0NDIyODM3YWFkYjM3
MmJjOTI3NDExODAwOGM5IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQpAQCAt
MjcsNyArMjcsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0
cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgY2hyb21pdW1fZ3B1CiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCkBAIC01Myw3
ICs1Myw3IEBAIGNsYXNzIENocm9taXVtR3B1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIHNlbGYuYXNzZXJ0X3BvcnRfd29ya3MoJ2Nocm9taXVtLWdwdS13aW4nLCAnY2hyb21pdW0t
Z3B1JywgJ2N5Z3dpbicpCiAKICAgICBkZWYgYXNzZXJ0X3BvcnRfd29ya3Moc2VsZiwgcG9ydF9u
YW1lLCBpbnB1dF9uYW1lPU5vbmUsIHBsYXRmb3JtPU5vbmUpOgotICAgICAgICBob3N0ID0gTW9j
a0hvc3QoKQorICAgICAgICBob3N0ID0gTW9ja1N5c3RlbUhvc3QoKQogICAgICAgICBob3N0LmZp
bGVzeXN0ZW0gPSBGaWxlU3lzdGVtKCkgICMgRklYTUU6IFRoaXMgdGVzdCBzaG91bGQgbm90IHVz
ZSBhIHJlYWwgZmlsZXN5c3RlbSEKIAogICAgICAgICAjIHRlc3QgdGhhdCB3ZSBnb3QgdGhlIHJp
Z2h0IHBvcnQKQEAgLTk3LDggKzk3LDggQEAgY2xhc3MgQ2hyb21pdW1HcHVUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGF0aCBpbiBmaWxlcykK
IAogICAgIGRlZiBfYXNzZXJ0X2Jhc2VsaW5lX3BhdGgoc2VsZiwgcG9ydF9uYW1lLCBiYXNlbGlu
ZV9wYXRoKToKLSAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAgICAgcG9ydCA9IGhvc3Qu
cG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUpCisgICAgICAgIGhvc3QgPSBNb2NrU3lzdGVtSG9z
dCgpCisgICAgICAgIHBvcnQgPSBQb3J0RmFjdG9yeShob3N0KS5nZXQocG9ydF9uYW1lKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Lm5hbWUoKSwgcG9ydF9uYW1lKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhwb3J0LmJhc2VsaW5lX3BhdGgoKSwgcG9ydC5fd2Via2l0X2Jhc2Vs
aW5lX3BhdGgoYmFzZWxpbmVfcGF0aCkpCiAKQEAgLTExMCwyNCArMTEwLDI0IEBAIGNsYXNzIENo
cm9taXVtR3B1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuX2Fzc2VydF9i
YXNlbGluZV9wYXRoKCdjaHJvbWl1bS1ncHUtY2ctbWFjLXNub3dsZW9wYXJkJywgJ2Nocm9taXVt
LWdwdS1jZy1tYWMnKQogCiAgICAgZGVmIHRlc3RfZ3JhcGhpY3NfdHlwZShzZWxmKToKLSAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5Lmdl
dCgnY2hyb21pdW0tZ3B1LWNnLW1hYycpCisgICAgICAgIGhvc3QgPSBNb2NrU3lzdGVtSG9zdCgp
CisgICAgICAgIHBvcnQgPSBQb3J0RmFjdG9yeShob3N0KS5nZXQoJ2Nocm9taXVtLWdwdS1jZy1t
YWMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZ3B1LWNnJywgcG9ydC5ncmFwaGljc190
eXBlKCkpCi0gICAgICAgIHBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoJ2Nocm9taXVtLWdw
dS1tYWMnKQorICAgICAgICBwb3J0ID0gUG9ydEZhY3RvcnkoaG9zdCkuZ2V0KCdjaHJvbWl1bS1n
cHUtbWFjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2dwdScsIHBvcnQuZ3JhcGhpY3Nf
dHlwZSgpKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF90ZXN0c19wYXRocyhzZWxmKToKLSAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KCkKIAog
ICAgICAgICBkZWYgdGVzdF9wYXRocyhwb3J0X25hbWUpOgotICAgICAgICAgICAgcmV0dXJuIGNo
cm9taXVtX2dwdS5fZGVmYXVsdF90ZXN0c19wYXRocyhob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9y
dF9uYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBjaHJvbWl1bV9ncHUuX2RlZmF1bHRfdGVzdHNf
cGF0aHMoUG9ydEZhY3RvcnkoaG9zdCkuZ2V0KHBvcnRfbmFtZSkpCiAKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh0ZXN0X3BhdGhzKCdjaHJvbWl1bS1ncHUtbGludXgnKSwgWydtZWRpYScsICdm
YXN0L2NhbnZhcycsICdjYW52YXMvcGhpbGlwJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dGVzdF9wYXRocygnY2hyb21pdW0tZ3B1LW1hYy1sZW9wYXJkJyksIFsnZmFzdC9jYW52YXMnLCAn
Y2FudmFzL3BoaWxpcCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfcGF0aHMoJ2No
cm9taXVtLWdwdS1jZy1tYWMtbGVvcGFyZCcpLCBbJ2Zhc3QvaHRtbCddKQogCiAgICAgZGVmIHRl
c3RfdGVzdF9maWxlcyhzZWxmKToKLSAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAg
aG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KCkKICAgICAgICAgZmlsZXMgPSB7CiAgICAgICAgICAgICAn
L21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvY2FudmFzL3BoaWxpcC90ZXN0Lmh0bWwnOiAnJywK
ICAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy90ZXN0
Lmh0bWwnOiAnJywKQEAgLTEzOCw3ICsxMzgsNyBAQCBjbGFzcyBDaHJvbWl1bUdwdVRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBob3N0LmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3Rl
bShmaWxlcykKIAogICAgICAgICBkZWYgdGVzdF9wYXRocyhwb3J0X25hbWUpOgotICAgICAgICAg
ICAgcmV0dXJuIGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUpLnRlc3RzKFtdKQorICAg
ICAgICAgICAgcmV0dXJuIFBvcnRGYWN0b3J5KGhvc3QpLmdldChwb3J0X25hbWUpLnRlc3RzKFtd
KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9wYXRocygnY2hyb21pdW0tZ3B1LWxp
bnV4JyksIHNldChbJ2NhbnZhcy9waGlsaXAvdGVzdC5odG1sJywgJ2Zhc3QvY2FudmFzL3Rlc3Qu
aHRtbCcsICdtZWRpYS90ZXN0Lmh0bWwnXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVz
dF9wYXRocygnY2hyb21pdW0tZ3B1LW1hYy1sZW9wYXJkJyksIHNldChbJ2NhbnZhcy9waGlsaXAv
dGVzdC5odG1sJywgJ2Zhc3QvY2FudmFzL3Rlc3QuaHRtbCddKSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5
CmluZGV4IDZiNmU4ZWY0OTRiMDZmYTU3ZjQ3N2Y0NGMzNWE0NzE2MWQ4YTIxNzYuLmFhYzZhMzQ5
NThiOWY3NTU5NGM5N2ZkY2YyNzkwODVlYTMwMDI3ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQpA
QCAtMjgsMTMgKzI4LDE3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBv
cnQgY2hyb21pdW0KKworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgY2hy
b21pdW0KK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNvbmZpZwogCiAK
IF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCiBjbGFzcyBDaHJvbWl1bUxp
bnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgorICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1
bS1saW51eCcKKwogICAgIFNVUFBPUlRFRF9BUkNISVRFQ1RVUkVTID0gKCd4ODYnLCAneDg2XzY0
JykKIAogICAgIEZBTExCQUNLX1BBVEhTID0gewpAQCAtNTUsMzMgKzU5LDM5IEBAIGNsYXNzIENo
cm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIF0sCiAgICAg
fQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZT1Ob25lLCAqKmt3YXJn
cyk6Ci0gICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfbmFtZSBvciAnY2hyb21pdW0tbGludXgnCi0g
ICAgICAgIGNocm9taXVtLkNocm9taXVtUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25h
bWU9cG9ydF9uYW1lLCAqKmt3YXJncykKLSAgICAgICAgIyBXZSByZS1zZXQgdGhlIHBvcnQgbmFt
ZSBvbmNlIHRoZSBiYXNlIG9iamVjdCBpcyBmdWxseSBpbml0aWFsaXplZAotICAgICAgICAjIGlu
IG9yZGVyIHRvIGJlIGFibGUgdG8gZmluZCB0aGUgRFJUIGJpbmFyeSBwcm9wZXJseS4KKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgZGV0ZXJtaW5lX3BvcnRfbmFtZShjbHMsIGhvc3QsIG9wdGlv
bnMsIHBvcnRfbmFtZSk6CiAgICAgICAgIGlmIHBvcnRfbmFtZS5lbmRzd2l0aCgnLWxpbnV4Jyk6
Ci0gICAgICAgICAgICBzZWxmLl9hcmNoaXRlY3R1cmUgPSBzZWxmLl9kZXRlcm1pbmVfYXJjaGl0
ZWN0dXJlKCkKLSAgICAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgYW4gdWdseSBoYWNrIHRvIGF2
b2lkIHJlbmFtaW5nIHRoZSBHUFUgcG9ydC4KLSAgICAgICAgICAgIGlmIHBvcnRfbmFtZSA9PSAn
Y2hyb21pdW0tbGludXgnOgotICAgICAgICAgICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfbmFtZSAr
ICctJyArIHNlbGYuX2FyY2hpdGVjdHVyZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYmFz
ZSwgYXJjaCA9IHBvcnRfbmFtZS5yc3BsaXQoJy0nLCAxKQotICAgICAgICAgICAgYXNzZXJ0IGJh
c2UgaW4gKCdjaHJvbWl1bS1saW51eCcsICdjaHJvbWl1bS1ncHUtbGludXgnKQotICAgICAgICAg
ICAgc2VsZi5fYXJjaGl0ZWN0dXJlID0gYXJjaAotICAgICAgICBhc3NlcnQgc2VsZi5fYXJjaGl0
ZWN0dXJlIGluIHNlbGYuU1VQUE9SVEVEX0FSQ0hJVEVDVFVSRVMKLSAgICAgICAgYXNzZXJ0IHBv
cnRfbmFtZSBpbiAoJ2Nocm9taXVtLWxpbnV4JywgJ2Nocm9taXVtLWdwdS1saW51eCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdjaHJvbWl1bS1saW51eC14ODYnLCAnY2hyb21pdW0t
bGludXgteDg2XzY0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtLWdw
dS1saW51eC14ODZfNjQnKQotICAgICAgICBzZWxmLl9uYW1lID0gcG9ydF9uYW1lCi0gICAgICAg
IHNlbGYuX3ZlcnNpb24gPSAnbHVjaWQnICAjIFdlIG9ubHkgc3VwcG9ydCBsdWNpZCByaWdodCBu
b3cuCi0KLSAgICBkZWYgX2RldGVybWluZV9hcmNoaXRlY3R1cmUoc2VsZik6Ci0gICAgICAgIGRy
aXZlcl9wYXRoID0gc2VsZi5fcGF0aF90b19kcml2ZXIoKQorICAgICAgICAgICAgcmV0dXJuIHBv
cnRfbmFtZSArICctJyArIGNscy5fZGV0ZXJtaW5lX2FyY2hpdGVjdHVyZShob3N0LmZpbGVzeXN0
ZW0sIGhvc3QuZXhlY3V0aXZlLCBjbHMuX2RldGVybWluZV9kcml2ZXJfcGF0aF9zdGF0aWNhbGx5
KGhvc3QsIG9wdGlvbnMpKQorICAgICAgICByZXR1cm4gcG9ydF9uYW1lCisKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgX2RldGVybWluZV9kcml2ZXJfcGF0aF9zdGF0aWNhbGx5KGNscywgaG9z
dCwgb3B0aW9ucyk6CisgICAgICAgIGNvbmZpZ19vYmplY3QgPSBjb25maWcuQ29uZmlnKGhvc3Qu
ZXhlY3V0aXZlLCBob3N0LmZpbGVzeXN0ZW0pCisgICAgICAgIGJ1aWxkX2RpcmVjdG9yeSA9IGdl
dGF0dHIob3B0aW9ucywgJ2J1aWxkX2RpcmVjdG9yeScsIE5vbmUpCisgICAgICAgIHdlYmtpdF9i
YXNlID0gY29uZmlnX29iamVjdC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKQorICAgICAgICBjaHJv
bWl1bV9iYXNlID0gY2xzLl9jaHJvbWl1bV9iYXNlX2Rpcihob3N0LmZpbGVzeXN0ZW0pCisgICAg
ICAgIGNvbmZpZ3VyYXRpb24gPSBnZXRhdHRyKG9wdGlvbnMsICdjb25maWd1cmF0aW9uJywgY29u
ZmlnX29iamVjdC5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGNscy5f
c3RhdGljX2J1aWxkX3BhdGgoaG9zdC5maWxlc3lzdGVtLCBidWlsZF9kaXJlY3RvcnksIGNocm9t
aXVtX2Jhc2UsIHdlYmtpdF9iYXNlLCBjb25maWd1cmF0aW9uLCAnRHVtcFJlbmRlclRyZWUnKQor
CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfc3RhdGljX2J1aWxkX3BhdGgoZmlsZXN5c3Rl
bSwgYnVpbGRfZGlyZWN0b3J5LCBjaHJvbWl1bV9iYXNlLCB3ZWJraXRfYmFzZSwgKmNvbXBzKToK
KyAgICAgICAgaWYgYnVpbGRfZGlyZWN0b3J5OgorICAgICAgICAgICAgcmV0dXJuIGZpbGVzeXN0
ZW0uam9pbihidWlsZF9kaXJlY3RvcnksICpjb21wcykKKyAgICAgICAgaWYgZmlsZXN5c3RlbS5l
eGlzdHMoZmlsZXN5c3RlbS5qb2luKGNocm9taXVtX2Jhc2UsICdzY29uc2J1aWxkJykpOgorICAg
ICAgICAgICAgcmV0dXJuIGZpbGVzeXN0ZW0uam9pbihjaHJvbWl1bV9iYXNlLCAnc2NvbnNidWls
ZCcsICpjb21wcykKKyAgICAgICAgaWYgZmlsZXN5c3RlbS5leGlzdHMoZmlsZXN5c3RlbS5qb2lu
KGNocm9taXVtX2Jhc2UsICdvdXQnLCAqY29tcHMpKToKKyAgICAgICAgICAgIHJldHVybiBmaWxl
c3lzdGVtLmpvaW4oY2hyb21pdW1fYmFzZSwgJ291dCcsICpjb21wcykKKyAgICAgICAgaWYgZmls
ZXN5c3RlbS5leGlzdHMoZmlsZXN5c3RlbS5qb2luKHdlYmtpdF9iYXNlLCAnc2NvbnNidWlsZCcp
KToKKyAgICAgICAgICAgIHJldHVybiBmaWxlc3lzdGVtLmpvaW4od2Via2l0X2Jhc2UsICdzY29u
c2J1aWxkJywgKmNvbXBzKQorICAgICAgICByZXR1cm4gZmlsZXN5c3RlbS5qb2luKHdlYmtpdF9i
YXNlLCAnb3V0JywgKmNvbXBzKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZGV0ZXJt
aW5lX2FyY2hpdGVjdHVyZShmaWxlc3lzdGVtLCBleGVjdXRpdmUsIGRyaXZlcl9wYXRoKToKICAg
ICAgICAgZmlsZV9vdXRwdXQgPSAnJwotICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0
cyhkcml2ZXJfcGF0aCk6CisgICAgICAgIGlmIGZpbGVzeXN0ZW0uZXhpc3RzKGRyaXZlcl9wYXRo
KToKICAgICAgICAgICAgICMgVGhlIC0tZGVyZWZlcmVuY2UgZmxhZyB0ZWxscyBmaWxlIHRvIGZv
bGxvdyBzeW1saW5rcwotICAgICAgICAgICAgZmlsZV9vdXRwdXQgPSBzZWxmLl9leGVjdXRpdmUu
cnVuX2NvbW1hbmQoWydmaWxlJywgJy0tZGVyZWZlcmVuY2UnLCBkcml2ZXJfcGF0aF0sIHJldHVy
bl9zdGRlcnI9VHJ1ZSkKKyAgICAgICAgICAgIGZpbGVfb3V0cHV0ID0gZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKFsnZmlsZScsICctLWRlcmVmZXJlbmNlJywgZHJpdmVyX3BhdGhdLCByZXR1cm5fc3Rk
ZXJyPVRydWUpCiAKICAgICAgICAgaWYgJ0VMRiAzMi1iaXQgTFNCIGV4ZWN1dGFibGUnIGluIGZp
bGVfb3V0cHV0OgogICAgICAgICAgICAgcmV0dXJuICd4ODYnCkBAIC05Niw2ICsxMDYsMTggQEAg
Y2xhc3MgQ2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAg
IyBpZiB3ZSBhY3R1YWxseSB0cnkgdG8gdXNlIHRoZSBiaW5hcnksIGNoZWNrX2J1aWxkKCkgc2hv
dWxkIGZhaWwuCiAgICAgICAgIHJldHVybiAneDg2XzY0JwogCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpOgorICAgICAgICBjaHJvbWl1bS5DaHJvbWl1
bVBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncykKKyAgICAgICAg
KGJhc2UsIGFyY2gpID0gcG9ydF9uYW1lLnJzcGxpdCgnLScsIDEpCisgICAgICAgIGFzc2VydCBi
YXNlIGluICgnY2hyb21pdW0tbGludXgnLCAnY2hyb21pdW0tZ3B1LWxpbnV4JykKKyAgICAgICAg
YXNzZXJ0IGFyY2ggaW4gc2VsZi5TVVBQT1JURURfQVJDSElURUNUVVJFUworICAgICAgICBhc3Nl
cnQgcG9ydF9uYW1lIGluICgnY2hyb21pdW0tbGludXgnLCAnY2hyb21pdW0tZ3B1LWxpbnV4JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtLWxpbnV4LXg4NicsICdjaHJv
bWl1bS1saW51eC14ODZfNjQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hyb21p
dW0tZ3B1LWxpbnV4LXg4Nl82NCcpCisgICAgICAgIHNlbGYuX25hbWUgPSBwb3J0X25hbWUKKyAg
ICAgICAgc2VsZi5fdmVyc2lvbiA9ICdsdWNpZCcgICMgV2Ugb25seSBzdXBwb3J0IGx1Y2lkIHJp
Z2h0IG5vdy4KKyAgICAgICAgc2VsZi5fYXJjaGl0ZWN0dXJlID0gYXJjaAorCiAgICAgZGVmIGJh
c2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgogICAgICAgICBwb3J0X25hbWVzID0gc2VsZi5GQUxM
QkFDS19QQVRIU1tzZWxmLl9hcmNoaXRlY3R1cmVdCiAgICAgICAgIHJldHVybiBtYXAoc2VsZi5f
d2Via2l0X2Jhc2VsaW5lX3BhdGgsIHBvcnRfbmFtZXMpCkBAIC0xMTgsMTggKzE0MCw3IEBAIGNs
YXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgIwogCiAg
ICAgZGVmIF9idWlsZF9wYXRoKHNlbGYsICpjb21wcyk6Ci0gICAgICAgIGlmIHNlbGYuZ2V0X29w
dGlvbignYnVpbGRfZGlyZWN0b3J5Jyk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYuZ2V0X29wdGlvbignYnVpbGRfZGlyZWN0b3J5JyksICpjb21wcykKLQot
ICAgICAgICBiYXNlID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgpCi0gICAgICAgIGlm
IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihiYXNlLCAnc2Nv
bnNidWlsZCcpKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oYmFz
ZSwgJ3Njb25zYnVpbGQnLCAqY29tcHMpCi0gICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhp
c3RzKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihiYXNlLCAnb3V0JywgKmNvbXBzKSk6Ci0gICAgICAg
ICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKGJhc2UsICdvdXQnLCAqY29tcHMpCi0g
ICAgICAgIGJhc2UgPSBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgpCi0gICAgICAgIGlmIHNl
bGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihiYXNlLCAnc2NvbnNi
dWlsZCcpKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oYmFzZSwg
J3Njb25zYnVpbGQnLCAqY29tcHMpCi0gICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpv
aW4oYmFzZSwgJ291dCcsICpjb21wcykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRpY19idWls
ZF9wYXRoKHNlbGYuX2ZpbGVzeXN0ZW0sIHNlbGYuZ2V0X29wdGlvbignYnVpbGRfZGlyZWN0b3J5
JyksIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoKSwgc2VsZi5wYXRoX2Zyb21fd2Via2l0
X2Jhc2UoKSwgKmNvbXBzKQogCiAgICAgZGVmIF9jaGVja19hcGFjaGVfaW5zdGFsbChzZWxmKToK
ICAgICAgICAgcmVzdWx0ID0gc2VsZi5fY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5fcGF0aF90b19h
cGFjaGUoKSwgImFwYWNoZTIiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXhfdW5pdHRlc3QucHkK
aW5kZXggNzllNjVjZjdmY2JiZjk3NzdiOGU0ODEyYTA1MDVkNTNlN2ViOWQ0YS4uZWM0NGM5MDY5
NmM5ZmUyNDkzYjVmYWZmODRmMmU1MTNiODkxNjI5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xp
bnV4X3VuaXR0ZXN0LnB5CkBAIC0yOSwyMSArMjksMjMgQEAKIGltcG9ydCB1bml0dGVzdAogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZV9tb2NrCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Citmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAogCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBjaHJvbWl1bV9saW51eAogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogCiAKIGNsYXNz
IENocm9taXVtTGludXhQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CisgICAg
cG9ydF9uYW1lID0gJ2Nocm9taXVtLWxpbnV4LXg4NicKICAgICBwb3J0X21ha2VyID0gY2hyb21p
dW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQKIAogICAgIGRlZiBhc3NlcnRfYXJjaGl0ZWN0dXJl
KHNlbGYsIHBvcnRfbmFtZT1Ob25lLCBmaWxlX291dHB1dD1Ob25lLCBleHBlY3RlZF9hcmNoaXRl
Y3R1cmU9Tm9uZSk6Ci0gICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIGhvc3QgPSBN
b2NrU3lzdGVtSG9zdCgpCiAgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5leGlzdHMgPSBsYW1iZGEg
eDogJ0R1bXBSZW5kZXJUcmVlJyBpbiB4CiAgICAgICAgIGlmIGZpbGVfb3V0cHV0OgogICAgICAg
ICAgICAgaG9zdC5leGVjdXRpdmUgPSBleGVjdXRpdmVfbW9jay5Nb2NrRXhlY3V0aXZlMihmaWxl
X291dHB1dCkKIAorICAgICAgICBwb3J0X25hbWUgPSBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxp
bnV4UG9ydC5kZXRlcm1pbmVfcG9ydF9uYW1lKGhvc3QsIE5vbmUsIHBvcnRfbmFtZSBvciAnY2hy
b21pdW0tbGludXgnKQogICAgICAgICBwb3J0ID0gY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51
eFBvcnQoaG9zdCwgcG9ydF9uYW1lPXBvcnRfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMocG9ydC5hcmNoaXRlY3R1cmUoKSwgZXhwZWN0ZWRfYXJjaGl0ZWN0dXJlKQogICAgICAgICBp
ZiBleHBlY3RlZF9hcmNoaXRlY3R1cmUgPT0gJ3g4Nic6CkBAIC02NywyNCArNjksMjcgQEAgY2xh
c3MgQ2hyb21pdW1MaW51eFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAg
ICBkZWYgdGVzdF9jaGVja19pbGxlZ2FsX3BvcnRfbmFtZXMoc2VsZik6CiAgICAgICAgICMgRklY
TUU6IENoZWNrIHRoYXQsIGZvciBub3csIHRoZXNlIGFyZSBpbGxlZ2FsIHBvcnQgbmFtZXMuCiAg
ICAgICAgICMgRXZlbnR1YWxseSB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyB0aGUgcmlnaHQgdGhp
bmcgaGVyZS4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGNocm9t
aXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0LCBNb2NrSG9zdCgpLCBwb3J0X25hbWU9J2Nocm9t
aXVtLXg4Ni1saW51eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9y
LCBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydCwgTW9ja0hvc3QoKSwgcG9ydF9uYW1l
PSdjaHJvbWl1bS1saW51eC14ODYtZ3B1JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNz
ZXJ0aW9uRXJyb3IsIGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0LCBNb2NrU3lzdGVt
SG9zdCgpLCBwb3J0X25hbWU9J2Nocm9taXVtLXg4Ni1saW51eCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9y
dCwgTW9ja1N5c3RlbUhvc3QoKSwgcG9ydF9uYW1lPSdjaHJvbWl1bS1saW51eC14ODYtZ3B1JykK
IAogICAgIGRlZiB0ZXN0X2RldGVybWluZV9hcmNoaXRlY3R1cmVfZmFpbHMoc2VsZik6CiAgICAg
ICAgICMgVGVzdCB0aGF0IHdlIGRlZmF1bHQgdG8gJ3g4NicgaWYgdGhlIGRyaXZlciBkb2Vzbid0
IGV4aXN0LgotICAgICAgICBwb3J0ID0gY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQo
TW9ja0hvc3QoKSkKKyAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KCkKKyAgICAgICAgcG9y
dF9uYW1lID0gY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQuZGV0ZXJtaW5lX3BvcnRf
bmFtZShob3N0LCBOb25lLCAnY2hyb21pdW0tbGludXgnKQorICAgICAgICBwb3J0ID0gY2hyb21p
dW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQoaG9zdCwgcG9ydF9uYW1lKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhwb3J0LmFyY2hpdGVjdHVyZSgpLCAneDg2XzY0JykKIAogICAgICAgICAj
IFRlc3QgdGhhdCB3ZSBkZWZhdWx0IHRvICd4ODYnIG9uIGFuIHVua25vd24gYXJjaGl0ZWN0dXJl
LgotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBob3N0ID0gTW9ja1N5c3RlbUhv
c3QoKQogICAgICAgICBob3N0LmZpbGVzeXN0ZW0uZXhpc3RzID0gbGFtYmRhIHg6IFRydWUKICAg
ICAgICAgaG9zdC5leGVjdXRpdmUgPSBleGVjdXRpdmVfbW9jay5Nb2NrRXhlY3V0aXZlMignd2lu
MzInKQotICAgICAgICBwb3J0ID0gY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQoaG9z
dCkKKyAgICAgICAgcG9ydF9uYW1lID0gY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQu
ZGV0ZXJtaW5lX3BvcnRfbmFtZShob3N0LCBOb25lLCAnY2hyb21pdW0tbGludXgnKQorICAgICAg
ICBwb3J0ID0gY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQoaG9zdCwgcG9ydF9uYW1l
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0LmFyY2hpdGVjdHVyZSgpLCAneDg2XzY0
JykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSByYWlzZSBlcnJvcnMgaWYgc29tZXRoaW5nIHdl
aXJkIGhhcHBlbnMuCiAgICAgICAgIGhvc3QuZXhlY3V0aXZlID0gZXhlY3V0aXZlX21vY2suTW9j
a0V4ZWN1dGl2ZTIoZXhjZXB0aW9uPUFzc2VydGlvbkVycm9yKQotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhBc3NlcnRpb25FcnJvciwgY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQs
IGhvc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBjaHJvbWl1
bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydCwgaG9zdCwgJ2Nocm9taXVtLWxpbnV4JykKIAogICAg
IGRlZiB0ZXN0X29wZXJhdGluZ19zeXN0ZW0oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2xpbnV4Jywgc2VsZi5tYWtlX3BvcnQoKS5vcGVyYXRpbmdfc3lzdGVtKCkpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21h
Yy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
bWFjLnB5CmluZGV4IGVmMDM2Y2ZmNDdkYTg5MjQyZDU5YjU0Y2E5YzRkMzg2N2QwYjQ3OGUuLjUx
MmNlOTkzM2Q1YjliYWJkZmU5Nzg4ZWY2Y2FjZGU5MjNjODRlMmYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5
CkBAIC00Myw2ICs0Myw4IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAog
CiBjbGFzcyBDaHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKKyAgICBwb3J0
X25hbWUgPSAnY2hyb21pdW0tbWFjJworCiAgICAgU1VQUE9SVEVEX09TX1ZFUlNJT05TID0gKCds
ZW9wYXJkJywgJ3Nub3dsZW9wYXJkJywgJ2xpb24nLCAnZnV0dXJlJykKIAogICAgIEZBTExCQUNL
X1BBVEhTID0gewpAQCAtMTA5LDE3ICsxMTEsMjAgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNo
cm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIF0sCiAgICAgfQogCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZT1Ob25lLCBvc192ZXJzaW9uX3N0cmluZz1Ob25lLCAq
Kmt3YXJncyk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRldGVybWluZV9wb3J0X25hbWUo
Y2xzLCBob3N0LCBvcHRpb25zLCBwb3J0X25hbWUpOgorICAgICAgICBpZiBwb3J0X25hbWUuZW5k
c3dpdGgoJy1tYWMnKToKKyAgICAgICAgICAgIHJldHVybiBwb3J0X25hbWUgKyAnLScgKyBob3N0
LnBsYXRmb3JtLm9zX3ZlcnNpb24KKyAgICAgICAgcmV0dXJuIHBvcnRfbmFtZQorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpOgorICAgICAgICBjaHJv
bWl1bS5DaHJvbWl1bVBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJn
cykKKwogICAgICAgICAjIFdlJ3JlIGEgbGl0dGxlIGdlbmVyaWMgaGVyZSBiZWNhdXNlIHRoaXMg
Y29kZSBpcyByZXVzZWQgYnkgdGhlCiAgICAgICAgICMgJ2dvb2dsZS1jaHJvbWUnIHBvcnQgYXMg
d2VsbCBhcyB0aGUgJ21vY2stJyBhbmQgJ2RyeXJ1bi0nIHBvcnRzLgotICAgICAgICBwb3J0X25h
bWUgPSBwb3J0X25hbWUgb3IgJ2Nocm9taXVtLW1hYycKLSAgICAgICAgY2hyb21pdW0uQ2hyb21p
dW1Qb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUsICoqa3dhcmdz
KQotICAgICAgICBpZiBwb3J0X25hbWUuZW5kc3dpdGgoJy1tYWMnKToKLSAgICAgICAgICAgIHNl
bGYuX3ZlcnNpb24gPSBtYWMub3NfdmVyc2lvbihvc192ZXJzaW9uX3N0cmluZywgc2VsZi5TVVBQ
T1JURURfT1NfVkVSU0lPTlMpCi0gICAgICAgICAgICBzZWxmLl9uYW1lID0gcG9ydF9uYW1lICsg
Jy0nICsgc2VsZi5fdmVyc2lvbgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fdmVy
c2lvbiA9IHBvcnRfbmFtZVtwb3J0X25hbWUuaW5kZXgoJy1tYWMtJykgKyBsZW4oJy1tYWMtJyk6
XQotICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX3ZlcnNpb24gaW4gc2VsZi5TVVBQT1JURURfT1Nf
VkVSU0lPTlMKKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHBvcnRfbmFtZVtwb3J0X25hbWUuaW5k
ZXgoJy1tYWMtJykgKyBsZW4oJy1tYWMtJyk6XQorICAgICAgICBhc3NlcnQgc2VsZi5fdmVyc2lv
biBpbiBzZWxmLlNVUFBPUlRFRF9PU19WRVJTSU9OUworCiAgICAgICAgIHNlbGYuX3VzaW5nX2Nv
cmVfZ3JhcGhpY3MgPSBwb3J0X25hbWUuZmluZCgnLWNnLScpICE9IC0xCiAgICAgICAgIGlmIHNl
bGYuX3VzaW5nX2NvcmVfZ3JhcGhpY3M6CiAgICAgICAgICAgICBzZWxmLl9ncmFwaGljc190eXBl
ID0gJ2NwdS1jZycKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWNfdW5pdHRlc3QucHkKaW5kZXggYjIxMTQy
YzQyNjZkYmY5Y2U4ZTVmYWJlZDNjM2VhMzkzOTEzNDQ1Zi4uMTIwNjdlY2JmMWFmZDA2ZTk4ZGY5
ZjQzMTMwOGM1ODBlOWFhOGNiMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWNfdW5pdHRlc3QucHkK
QEAgLTI5LDQ1ICsyOSw0MyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkudGhp
cmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sg
aW1wb3J0IE1vY2tIb3N0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9t
b2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5w
b3J0IGltcG9ydCBjaHJvbWl1bV9tYWMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQg
aW1wb3J0IHBvcnRfdGVzdGNhc2UKIAogCiBjbGFzcyBDaHJvbWl1bU1hY1BvcnRUZXN0KHBvcnRf
dGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKKyAgICBwb3J0X25hbWUgPSAnY2hyb21pdW0tbWFjLWxl
b3BhcmQnCiAgICAgcG9ydF9tYWtlciA9IGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQKIAog
ICAgIGRlZiB0ZXN0X2NoZWNrX3dkaWZmKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUo
c2VsZi5tYWtlX3BvcnQoKS5jaGVja193ZGlmZigpKQogCi0gICAgZGVmIGFzc2VydF9uYW1lKHNl
bGYsIHBvcnRfbmFtZSwgb3NfdmVyc2lvbl9zdHJpbmcsIGV4cGVjdGVkKToKLSAgICAgICAgcG9y
dCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT1wb3J0X25hbWUsIG9zX3ZlcnNpb25fc3RyaW5n
PW9zX3ZlcnNpb25fc3RyaW5nKQorICAgIGRlZiBhc3NlcnRfbmFtZShzZWxmLCBwb3J0X25hbWUs
IG9zX3ZlcnNpb24sIGV4cGVjdGVkKToKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBv
cnRfbmFtZT1wb3J0X25hbWUsIG9zX3ZlcnNpb249b3NfdmVyc2lvbikKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoZXhwZWN0ZWQsIHBvcnQubmFtZSgpKQogCiAgICAgZGVmIHRlc3RfdmVyc2lv
bnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1ha2VfcG9ydCgpLm5hbWUo
KSBpbiAoJ2Nocm9taXVtLW1hYy1sZW9wYXJkJywgJ2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZCcs
ICdjaHJvbWl1bS1tYWMtbGlvbicsICdjaHJvbWl1bS1tYWMtZnV0dXJlJykpCiAKLSAgICAgICAg
c2VsZi5hc3NlcnRfbmFtZShOb25lLCAnMTAuNS4zJywgJ2Nocm9taXVtLW1hYy1sZW9wYXJkJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0tbWFjJywgJzEwLjUuMycsICdjaHJv
bWl1bS1tYWMtbGVvcGFyZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLW1h
Yy1sZW9wYXJkJywgJzEwLjUuMycsICdjaHJvbWl1bS1tYWMtbGVvcGFyZCcpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLW1hYy1sZW9wYXJkJywgJzEwLjYuMycsICdjaHJvbWl1
bS1tYWMtbGVvcGFyZCcpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25lLCAnMTAuNi4z
JywgJ2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUo
J2Nocm9taXVtLW1hYycsICcxMC42LjMnLCAnY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkJywgJzEwLjUu
MycsICdjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQnKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1l
KCdjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQnLCAnMTAuNi4zJywgJ2Nocm9taXVtLW1hYy1zbm93
bGVvcGFyZCcpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25lLCAnMTAuNycsICdjaHJv
bWl1bS1tYWMtbGlvbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoTm9uZSwgJzEwLjcuMycs
ICdjaHJvbWl1bS1tYWMtbGlvbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoTm9uZSwgJzEw
LjgnLCAnY2hyb21pdW0tbWFjLWZ1dHVyZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2No
cm9taXVtLW1hYycsICcxMC43LjMnLCAnY2hyb21pdW0tbWFjLWxpb24nKQotICAgICAgICBzZWxm
LmFzc2VydF9uYW1lKCdjaHJvbWl1bS1tYWMtZnV0dXJlJywgJzEwLjQuMycsICdjaHJvbWl1bS1t
YWMtZnV0dXJlJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0tbWFjLWZ1dHVy
ZScsICcxMC41LjMnLCAnY2hyb21pdW0tbWFjLWZ1dHVyZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X25hbWUoJ2Nocm9taXVtLW1hYy1mdXR1cmUnLCAnMTAuNi4zJywgJ2Nocm9taXVtLW1hYy1mdXR1
cmUnKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS1tYWMtZnV0dXJlJywgJzEw
LjcuMycsICdjaHJvbWl1bS1tYWMtZnV0dXJlJykKLQotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhBc3NlcnRpb25FcnJvciwgc2VsZi5hc3NlcnRfbmFtZSwgTm9uZSwgJzEwLjQuMScsICdzaG91
bGQtcmFpc2UtYXNzZXJ0aW9uLXNvLXRoaXMtdmFsdWUtZG9lcy1ub3QtbWF0dGVyJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0tbWFjJywgJ2xlb3BhcmQnLCAnY2hyb21pdW0t
bWFjLWxlb3BhcmQnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS1tYWMtbGVv
cGFyZCcsICdsZW9wYXJkJywgJ2Nocm9taXVtLW1hYy1sZW9wYXJkJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbmFtZSgnY2hyb21pdW0tbWFjLWxlb3BhcmQnLCAnc25vd2xlb3BhcmQnLCAnY2hyb21p
dW0tbWFjLWxlb3BhcmQnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLW1h
YycsICdzbm93bGVvcGFyZCcsICdjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQnKQorICAgICAgICBz
ZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQnLCAnbGVvcGFyZCcsICdj
aHJvbWl1bS1tYWMtc25vd2xlb3BhcmQnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJv
bWl1bS1tYWMtc25vd2xlb3BhcmQnLCAnc25vd2xlb3BhcmQnLCAnY2hyb21pdW0tbWFjLXNub3ds
ZW9wYXJkJykKKworICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS1tYWMnLCAnbGlv
bicsICdjaHJvbWl1bS1tYWMtbGlvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9t
aXVtLW1hYy1saW9uJywgJ3Nub3dsZW9wYXJkJywgJ2Nocm9taXVtLW1hYy1saW9uJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0tbWFjLWxpb24nLCAnbGlvbicsICdjaHJvbWl1
bS1tYWMtbGlvbicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0tbWFjJywg
J2Z1dHVyZScsICdjaHJvbWl1bS1tYWMtZnV0dXJlJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFt
ZSgnY2hyb21pdW0tbWFjLWZ1dHVyZScsICdsZW9wYXJkJywgJ2Nocm9taXVtLW1hYy1mdXR1cmUn
KQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS1tYWMtZnV0dXJlJywgJ2Z1dHVy
ZScsICdjaHJvbWl1bS1tYWMtZnV0dXJlJykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhB
c3NlcnRpb25FcnJvciwgc2VsZi5hc3NlcnRfbmFtZSwgJ2Nocm9taXVtLW1hYycsICd0aWdlcics
ICdzaG91bGQtcmFpc2UtYXNzZXJ0aW9uLXNvLXRoaXMtdmFsdWUtZG9lcy1ub3QtbWF0dGVyJykK
IAogICAgIGRlZiB0ZXN0X2Jhc2VsaW5lX3BhdGgoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxm
Lm1ha2VfcG9ydChwb3J0X25hbWU9J2Nocm9taXVtLW1hYy1sZW9wYXJkJykKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X3VuaXR0ZXN0LnB5CmluZGV4IDRhZTdlZDMwNDk1MDQxNTFhOTliOTAwNjYyMzg4MjQ0N2ZjMDI5
OWIuLjhiNjJhYzgzOTZkZDBjZDc5ZWQyYzNiMTE5ODFmODI0YmE0MmUzODkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV91bml0dGVzdC5weQpAQCAtMzQsNyArMzQsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndGVzdGluZwogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlLCBNb2NrRXhl
Y3V0aXZlMgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBv
cnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQg
TW9ja0hvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1w
b3J0IE1vY2tTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQg
TW9jawogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogCkBA
IC0xNTgsNyArMTU4LDcgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBv
cnRUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9hbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxm
KToKICAgICAgICAgIiIiVmFsaWRhdGUgdGhlIGNvbXBsZXRlIHNldCBvZiBjb25maWd1cmF0aW9u
cyB0aGlzIHBvcnQga25vd3MgYWJvdXQuIiIiCi0gICAgICAgIHBvcnQgPSBjaHJvbWl1bS5DaHJv
bWl1bVBvcnQoTW9ja0hvc3QoKSkKKyAgICAgICAgcG9ydCA9IGNocm9taXVtLkNocm9taXVtUG9y
dChNb2NrU3lzdGVtSG9zdCgpLCAnY2hyb21pdW1wb3J0JykKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoc2V0KHBvcnQuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoKSksIHNldChbCiAgICAgICAg
ICAgICBUZXN0Q29uZmlndXJhdGlvbignbGVvcGFyZCcsICd4ODYnLCAnZGVidWcnLCAnY3B1Jyks
CiAgICAgICAgICAgICBUZXN0Q29uZmlndXJhdGlvbignbGVvcGFyZCcsICd4ODYnLCAnZGVidWcn
LCAnZ3B1JyksCkBAIC0yMjEsNyArMjIxLDcgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0VGVzdChwb3J0
X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgY2xhc3MgVGVzdE1hY1BvcnQoY2hyb21pdW1f
bWFjLkNocm9taXVtTWFjUG9ydCk6CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25z
PU5vbmUpOgogICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgb3IgTW9ja09wdGlvbnMoKQot
ICAgICAgICAgICAgY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC5fX2luaXRfXyhzZWxmLCBN
b2NrSG9zdCgpLCBvcHRpb25zPW9wdGlvbnMpCisgICAgICAgICAgICBjaHJvbWl1bV9tYWMuQ2hy
b21pdW1NYWNQb3J0Ll9faW5pdF9fKHNlbGYsIE1vY2tTeXN0ZW1Ib3N0KCksICdjaHJvbWl1bS1t
YWMtbGVvcGFyZCcsIG9wdGlvbnM9b3B0aW9ucykKIAogICAgICAgICBkZWYgZGVmYXVsdF9jb25m
aWd1cmF0aW9uKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5kZWZhdWx0X2NvbmZpZ3VyYXRpb25f
Y2FsbGVkID0gVHJ1ZQpAQCAtMjMwLDcgKzIzMCw3IEBAIGNsYXNzIENocm9taXVtUG9ydFRlc3Qo
cG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgIGNsYXNzIFRlc3RMaW51eFBvcnQoY2hy
b21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQpOgogICAgICAgICBkZWYgX19pbml0X18oc2Vs
Ziwgb3B0aW9ucz1Ob25lKToKICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIG9yIE1vY2tP
cHRpb25zKCkKLSAgICAgICAgICAgIGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0Ll9f
aW5pdF9fKHNlbGYsIE1vY2tIb3N0KCksIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgICAgIGNo
cm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0Ll9faW5pdF9fKHNlbGYsIE1vY2tTeXN0ZW1I
b3N0KCksICdjaHJvbWl1bS1saW51eC14ODYnLCBvcHRpb25zPW9wdGlvbnMpCiAKICAgICAgICAg
ZGVmIGRlZmF1bHRfY29uZmlndXJhdGlvbihzZWxmKToKICAgICAgICAgICAgIHNlbGYuZGVmYXVs
dF9jb25maWd1cmF0aW9uX2NhbGxlZCA9IFRydWUKQEAgLTIzOSw3ICsyMzksNyBAQCBjbGFzcyBD
aHJvbWl1bVBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICBjbGFzcyBU
ZXN0V2luUG9ydChjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0KToKICAgICAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG9wdGlvbnM9Tm9uZSk6CiAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9u
cyBvciBNb2NrT3B0aW9ucygpCi0gICAgICAgICAgICBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Q
b3J0Ll9faW5pdF9fKHNlbGYsIE1vY2tIb3N0KCksIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAg
ICAgIGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQuX19pbml0X18oc2VsZiwgTW9ja1N5c3Rl
bUhvc3QoKSwgJ2Nocm9taXVtLXdpbi13aW43Jywgb3B0aW9ucz1vcHRpb25zKQogCiAgICAgICAg
IGRlZiBkZWZhdWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6CiAgICAgICAgICAgICBzZWxmLmRlZmF1
bHRfY29uZmlndXJhdGlvbl9jYWxsZWQgPSBUcnVlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CmluZGV4IGM3ZTE0
ODU5OTIxY2JiNDE4NjY0M2IxNzI3ODgyMDk4NjE4M2MzZjguLjZhMDVlN2Q5MTQzOWNkY2E4YWFm
MjZjODhmNmMyMDFkM2I4YzE3MjkgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CkBAIC0zNCwzMCArMzQsMjcg
QEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBzeXMKIAogaW1wb3J0IGNocm9taXVtCitpbXBvcnQg
d2luCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKLWRlZiBvc192
ZXJzaW9uKHdpbmRvd3NfdmVyc2lvbj1Ob25lKToKLSAgICBpZiBub3Qgd2luZG93c192ZXJzaW9u
OgotICAgICAgICBpZiBoYXNhdHRyKHN5cywgJ2dldHdpbmRvd3N2ZXJzaW9uJyk6Ci0gICAgICAg
ICAgICB3aW5kb3dzX3ZlcnNpb24gPSB0dXBsZShzeXMuZ2V0d2luZG93c3ZlcnNpb24oKVs6Ml0p
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE1ha2UgdXAgc29tZXRoaW5nIGZvciB0ZXN0
aW5nLgotICAgICAgICAgICAgd2luZG93c192ZXJzaW9uID0gKDUsIDEpCi0KK2RlZiBvc192ZXJz
aW9uKGhvc3QsIHdpbmRvd3NfdmVyc2lvbj1Ob25lKToKKyAgICB3aW5kb3dzX3ZlcnNpb24gPSB3
aW5kb3dzX3ZlcnNpb24gb3Igd2luLl93aW5kb3dzX3ZlcnNpb25fdHVwbGUoaG9zdCkKICAgICB2
ZXJzaW9uX3N0cmluZ3MgPSB7CiAgICAgICAgICg2LCAxKTogJ3dpbjcnLAogICAgICAgICAoNiwg
MCk6ICd2aXN0YScsCiAgICAgICAgICg1LCAxKTogJ3hwJywKICAgICB9Ci0gICAgcmV0dXJuIHZl
cnNpb25fc3RyaW5nc1t3aW5kb3dzX3ZlcnNpb25dCisgICAgcmV0dXJuIHZlcnNpb25fc3RyaW5n
c1t3aW5kb3dzX3ZlcnNpb25bOjJdXQogCiAKIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1
bS5DaHJvbWl1bVBvcnQpOgorICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS13aW4nCisKICAgICAj
IEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0byB1bmlmeSB0aGlzIHdpdGggYmFzZS5UZXN0Q29uZmln
dXJhdGlvbi5hbGxfc3lzdGVtcygpPwotICAgIFNVUFBPUlRFRF9WRVJTSU9OUyA9ICgneHAnLCAn
dmlzdGEnLCAnd2luNycpCisgICAgU1VQUE9SVEVEX1ZFUlNJT05TID0gKCd4cCcsICd2aXN0YScs
ICc3c3AwJykKIAogICAgICMgRklYTUU6IERvIHdlIG5lZWQgbWFjLXNub3dsZW9wYXJkIGhlcmUs
IGxpa2UgdGhlIGJhc2Ugd2luIHBvcnQ/CiAgICAgRkFMTEJBQ0tfUEFUSFMgPSB7CkBAIC04NCwx
OCArODEsMjIgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6
CiAgICAgICAgIF0sCiAgICAgfQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRf
bmFtZT1Ob25lLCB3aW5kb3dzX3ZlcnNpb249Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICAjIFdl
J3JlIGEgbGl0dGxlIGdlbmVyaWMgaGVyZSBiZWNhdXNlIHRoaXMgY29kZSBpcyByZXVzZWQgYnkg
dGhlCi0gICAgICAgICMgJ2dvb2dsZS1jaHJvbWUnIHBvcnQgYXMgd2VsbCBhcyB0aGUgJ21vY2st
JyBhbmQgJ2RyeXJ1bi0nIHBvcnRzLgotICAgICAgICBwb3J0X25hbWUgPSBwb3J0X25hbWUgb3Ig
J2Nocm9taXVtLXdpbicKLSAgICAgICAgY2hyb21pdW0uQ2hyb21pdW1Qb3J0Ll9faW5pdF9fKHNl
bGYsIGhvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUsICoqa3dhcmdzKQorICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiBkZXRlcm1pbmVfcG9ydF9uYW1lKGNscywgaG9zdCwgb3B0aW9ucywgcG9ydF9u
YW1lKToKICAgICAgICAgaWYgcG9ydF9uYW1lLmVuZHN3aXRoKCctd2luJyk6Ci0gICAgICAgICAg
ICBzZWxmLl92ZXJzaW9uID0gb3NfdmVyc2lvbih3aW5kb3dzX3ZlcnNpb24pCi0gICAgICAgICAg
ICBzZWxmLl9uYW1lID0gcG9ydF9uYW1lICsgJy0nICsgc2VsZi5fdmVyc2lvbgotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHBvcnRfbmFtZVtwb3J0X25hbWUuaW5k
ZXgoJy13aW4tJykgKyBsZW4oJy13aW4tJyk6XQotICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX3Zl
cnNpb24gaW4gc2VsZi5TVVBQT1JURURfVkVSU0lPTlMsICIlcyBpcyBub3QgaW4gJXMiICUgKHNl
bGYuX3ZlcnNpb24sIHNlbGYuU1VQUE9SVEVEX1ZFUlNJT05TKQorICAgICAgICAgICAgb3NfdmVy
c2lvbiA9IGhvc3QucGxhdGZvcm0ub3NfdmVyc2lvbgorICAgICAgICAgICAgYXNzZXJ0IG9zX3Zl
cnNpb24gaW4gY2xzLlNVUFBPUlRFRF9WRVJTSU9OUywgIiVzIGlzIG5vdCBhIHN1cHBvcnRlZCB2
ZXJzaW9uIChuZWVkcyB0byBiZSBvbmUgb2YgJXMiICUgKG9zX3ZlcnNpb24sIGNscy5TVVBQT1JU
RURfVkVSU0lPTlMpCisgICAgICAgICAgICBpZiBvc192ZXJzaW9uID09ICc3c3AwJzoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcG9ydF9uYW1lICsgJy13aW43JworICAgICAgICAgICAgcmV0dXJu
IHBvcnRfbmFtZSArICctJyArIG9zX3ZlcnNpb24KKyAgICAgICAgcmV0dXJuIHBvcnRfbmFtZQor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpOgorICAg
ICAgICBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1l
PXBvcnRfbmFtZSwgKiprd2FyZ3MpCiAKKyAgICAgICAgIyBXZSdyZSBhIGxpdHRsZSBnZW5lcmlj
IGhlcmUgYmVjYXVzZSB0aGlzIGNvZGUgaXMgcmV1c2VkIGJ5IHRoZQorICAgICAgICAjICdnb29n
bGUtY2hyb21lJyBwb3J0IGFzIHdlbGwgYXMgdGhlICdtb2NrLScgYW5kICdkcnlydW4tJyBwb3J0
cy4KKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHBvcnRfbmFtZVtwb3J0X25hbWUuaW5kZXgoJy13
aW4tJykgKyBsZW4oJy13aW4tJyk6XQogCiAgICAgZGVmIHNldHVwX2Vudmlyb25fZm9yX3NlcnZl
cihzZWxmLCBzZXJ2ZXJfbmFtZT1Ob25lKToKICAgICAgICAgZW52ID0gY2hyb21pdW0uQ2hyb21p
dW1Qb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZWxmLCBzZXJ2ZXJfbmFtZSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
d2luX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkKaW5kZXggNzE2ZWY5MDFlYjAyZjQzMjE5NGFhYzU3
NjJmN2M2YWVjZGQ1Y2RjZC4uNTA1MTFlNTY4NmNjZGExYmEwYmU1Y2U1ZmI4NzNkZTAxYjkxMTU0
NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV93aW5fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkKQEAgLTMxLDcgKzMxLDcgQEAg
aW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQotZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGlt
cG9ydCBNb2NrSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9j
ayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIApAQCAtNDUsNiArNDUs
NyBAQCBjbGFzcyBDaHJvbWl1bVdpblRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgog
ICAgICAgICAgICAgc2VsZi5yZWdpc3Rlcl9jeWd3aW4gPSBUcnVlCiAgICAgICAgICAgICBzZWxm
LnJlc3VsdHNfZGlyZWN0b3J5ID0gJy8nCiAKKyAgICBwb3J0X25hbWUgPSAnY2hyb21pdW0td2lu
LXhwJwogICAgIHBvcnRfbWFrZXIgPSBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0CiAKICAg
ICBkZWYgdGVzdF91c2VzX2FwYWNoZShzZWxmKToKQEAgLTcyLDU0ICs3Myw0NSBAQCBjbGFzcyBD
aHJvbWl1bVdpblRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICBvdXRw
dXQgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQogICAgICAgICBvdXRwdXQuYXNzZXJ0
X291dHB1dHMoc2VsZiwgcG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIsIGV4cGVjdGVkX3N0
ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKLSAgICBkZWYgYXNzZXJ0X25hbWUoc2VsZiwgcG9ydF9u
YW1lLCB3aW5kb3dzX3ZlcnNpb24sIGV4cGVjdGVkKToKLSAgICAgICAgcG9ydCA9IGNocm9taXVt
X3dpbi5DaHJvbWl1bVdpblBvcnQoTW9ja0hvc3QoKSwgcG9ydF9uYW1lPXBvcnRfbmFtZSwgd2lu
ZG93c192ZXJzaW9uPXdpbmRvd3NfdmVyc2lvbikKKyAgICBkZWYgYXNzZXJ0X25hbWUoc2VsZiwg
cG9ydF9uYW1lLCBvc192ZXJzaW9uLCBleHBlY3RlZCk6CisgICAgICAgIHBvcnQgPSBzZWxmLm1h
a2VfcG9ydChwb3J0X25hbWU9cG9ydF9uYW1lLCBvc192ZXJzaW9uPW9zX3ZlcnNpb24pCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLCBwb3J0Lm5hbWUoKSkKIAogICAgIGRlZiB0
ZXN0X3ZlcnNpb25zKHNlbGYpOgotICAgICAgICBwb3J0ID0gY2hyb21pdW1fd2luLkNocm9taXVt
V2luUG9ydChNb2NrSG9zdCgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5uYW1lKCkg
aW4gKCdjaHJvbWl1bS13aW4teHAnLCAnY2hyb21pdW0td2luLXZpc3RhJywgJ2Nocm9taXVtLXdp
bi13aW43JykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25lLCAoNSwgMSksICdjaHJv
bWl1bS13aW4teHAnKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13aW4nLCAo
NSwgMSksICdjaHJvbWl1bS13aW4teHAnKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJv
bWl1bS13aW4teHAnLCAoNSwgMSksICdjaHJvbWl1bS13aW4teHAnKQotICAgICAgICBzZWxmLmFz
c2VydF9uYW1lKCdjaHJvbWl1bS13aW4teHAnLCAoNiwgMCksICdjaHJvbWl1bS13aW4teHAnKQot
ICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13aW4teHAnLCAoNiwgMSksICdjaHJv
bWl1bS13aW4teHAnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoTm9uZSwgKDYsIDApLCAn
Y2hyb21pdW0td2luLXZpc3RhJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0t
d2luJywgKDYsIDApLCAnY2hyb21pdW0td2luLXZpc3RhJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bmFtZSgnY2hyb21pdW0td2luLXZpc3RhJywgKDUsIDEpLCAnY2hyb21pdW0td2luLXZpc3RhJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0td2luLXZpc3RhJywgKDYsIDApLCAn
Y2hyb21pdW0td2luLXZpc3RhJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0t
d2luLXZpc3RhJywgKDYsIDEpLCAnY2hyb21pdW0td2luLXZpc3RhJykKLQotICAgICAgICBzZWxm
LmFzc2VydF9uYW1lKE5vbmUsICg2LCAxKSwgJ2Nocm9taXVtLXdpbi13aW43JykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0td2luJywgKDYsIDEpLCAnY2hyb21pdW0td2luLXdp
bjcnKQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13aW4td2luNycsICg1LCAx
KSwgJ2Nocm9taXVtLXdpbi13aW43JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21p
dW0td2luLXdpbjcnLCAoNiwgMCksICdjaHJvbWl1bS13aW4td2luNycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X25hbWUoJ2Nocm9taXVtLXdpbi13aW43JywgKDYsIDEpLCAnY2hyb21pdW0td2luLXdp
bjcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZWxmLmFzc2VydF9u
YW1lLCBOb25lLCAoNCwgMCksICdjaHJvbWl1bS13aW4teHAnKQotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhLZXlFcnJvciwgc2VsZi5hc3NlcnRfbmFtZSwgTm9uZSwgKDUsIDApLCAnY2hyb21p
dW0td2luLXhwJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNlbGYuYXNz
ZXJ0X25hbWUsIE5vbmUsICg1LCAyKSwgJ2Nocm9taXVtLXdpbi14cCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZWxmLmFzc2VydF9uYW1lLCBOb25lLCAoNywgMSksICdj
aHJvbWl1bS13aW4teHAnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13aW4n
LCAneHAnLCAnY2hyb21pdW0td2luLXhwJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hy
b21pdW0td2luLXhwJywgJ3hwJywgJ2Nocm9taXVtLXdpbi14cCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X25hbWUoJ2Nocm9taXVtLXdpbi14cCcsICd2aXN0YScsICdjaHJvbWl1bS13aW4teHAnKQor
ICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13aW4teHAnLCAnN3NwMCcsICdjaHJv
bWl1bS13aW4teHAnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLXdpbics
ICd2aXN0YScsICdjaHJvbWl1bS13aW4tdmlzdGEnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1l
KCdjaHJvbWl1bS13aW4tdmlzdGEnLCAneHAnLCAnY2hyb21pdW0td2luLXZpc3RhJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbmFtZSgnY2hyb21pdW0td2luLXZpc3RhJywgJ3Zpc3RhJywgJ2Nocm9t
aXVtLXdpbi12aXN0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLXdpbi12
aXN0YScsICc3c3AwJywgJ2Nocm9taXVtLXdpbi12aXN0YScpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbmFtZSgnY2hyb21pdW0td2luJywgJzdzcDAnLCAnY2hyb21pdW0td2luLXdpbjcnKQorICAg
ICAgICBzZWxmLmFzc2VydF9uYW1lKCdjaHJvbWl1bS13aW4td2luNycsICd4cCcsICdjaHJvbWl1
bS13aW4td2luNycpCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ2Nocm9taXVtLXdpbi13aW43
JywgJ3Zpc3RhJywgJ2Nocm9taXVtLXdpbi13aW43JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFt
ZSgnY2hyb21pdW0td2luLXdpbjcnLCAnN3NwMCcsICdjaHJvbWl1bS13aW4td2luNycpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHNlbGYuYXNzZXJ0X25hbWUs
ICdjaHJvbWl1bS13aW4nLCAndzJrJywgJ2RvZXMtbm90LW1hdHRlcicpCiAKICAgICBkZWYgdGVz
dF9iYXNlbGluZV9wYXRoKHNlbGYpOgotICAgICAgICBwb3J0ID0gY2hyb21pdW1fd2luLkNocm9t
aXVtV2luUG9ydChNb2NrSG9zdCgpLCBwb3J0X25hbWU9J2Nocm9taXVtLXdpbi14cCcpCisgICAg
ICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J2Nocm9taXVtLXdpbi14cCcpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuYmFzZWxpbmVfcGF0aCgpLCBwb3J0Ll93ZWJr
aXRfYmFzZWxpbmVfcGF0aCgnY2hyb21pdW0td2luLXhwJykpCiAKLSAgICAgICAgcG9ydCA9IGNo
cm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQoTW9ja0hvc3QoKSwgcG9ydF9uYW1lPSdjaHJvbWl1
bS13aW4tdmlzdGEnKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdj
aHJvbWl1bS13aW4tdmlzdGEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0LmJhc2Vs
aW5lX3BhdGgoKSwgcG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtLXdpbi12aXN0
YScpKQogCi0gICAgICAgIHBvcnQgPSBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0KE1vY2tI
b3N0KCksIHBvcnRfbmFtZT0nY2hyb21pdW0td2luLXdpbjcnKQorICAgICAgICBwb3J0ID0gc2Vs
Zi5tYWtlX3BvcnQocG9ydF9uYW1lPSdjaHJvbWl1bS13aW4td2luNycpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKHBvcnQuYmFzZWxpbmVfcGF0aCgpLCBwb3J0Ll93ZWJraXRfYmFzZWxpbmVf
cGF0aCgnY2hyb21pdW0td2luJykpCiAKICAgICBkZWYgdGVzdF9idWlsZF9wYXRoKHNlbGYpOgot
ICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBob3N0ID0gTW9ja1N5c3RlbUhvc3Qo
KQogICAgICAgICBob3N0LmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShmaWxlcz17CiAgICAg
ICAgICAgICAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9idWlsZC9SZWxl
YXNlL0R1bXBSZW5kZXJUcmVlLmV4ZSc6ICdleGUnLAogICAgICAgICB9KQogCi0gICAgICAgIHBv
cnQgPSBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0KGhvc3QpCisgICAgICAgIHBvcnQgPSBj
aHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0KGhvc3QsIHNlbGYucG9ydF9uYW1lKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygKICAgICAgICAgICAgICcvbW9jay1jaGVja291dC9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL2J1aWxkL1JlbGVhc2UvRHVtcFJlbmRlclRyZWUuZXhlJywKICAgICAg
ICAgICAgIHBvcnQuX3BhdGhfdG9fZHJpdmVyKCdSZWxlYXNlJykpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlcl91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3VuaXR0ZXN0
LnB5CmluZGV4IGFkODM1OTY2OGMxZGMwZDQ3Y2VkMTczMjVmZWU4MmRlNjg4NWRjZWMuLjVlODQ3
ZWVlODY5ZGEwMzFhNzAyODhiYjZkNWM4MGZlNGYyNzFmNjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3VuaXR0ZXN0
LnB5CkBAIC0zMCwxNyArMzAsMTcgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGltcG9ydCBhYnNwYXRoX3RvX3VyaQotZnJv
bSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAorZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKIAog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgUG9ydCwgRHJpdmVyLCBEcml2
ZXJPdXRwdXQKIAogCiBjbGFzcyBEcml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBk
ZWYgbWFrZV9wb3J0KHNlbGYpOgotICAgICAgICByZXR1cm4gUG9ydChNb2NrSG9zdCgpKQorICAg
ICAgICByZXR1cm4gUG9ydChNb2NrU3lzdGVtSG9zdCgpLCAnZHVtbXknKQogCiAgICAgZGVmIF9h
c3NlcnRfd3JhcHBlcihzZWxmLCB3cmFwcGVyX3N0cmluZywgZXhwZWN0ZWRfd3JhcHBlcik6Ci0g
ICAgICAgIHdyYXBwZXIgPSBEcml2ZXIoUG9ydChNb2NrSG9zdCgpKSwgTm9uZSwgcGl4ZWxfdGVz
dHM9RmFsc2UpLl9jb21tYW5kX3dyYXBwZXIod3JhcHBlcl9zdHJpbmcpCisgICAgICAgIHdyYXBw
ZXIgPSBEcml2ZXIoUG9ydChNb2NrU3lzdGVtSG9zdCgpLCAnZHVtbXknKSwgTm9uZSwgcGl4ZWxf
dGVzdHM9RmFsc2UpLl9jb21tYW5kX3dyYXBwZXIod3JhcHBlcl9zdHJpbmcpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwod3JhcHBlciwgZXhwZWN0ZWRfd3JhcHBlcikKIAogICAgIGRlZiB0ZXN0
X2NvbW1hbmRfd3JhcHBlcihzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKaW5kZXggYWFhZmIwOTRjZjY4NzdmMGFlYTMwMGUy
M2U3NWVhMTU3MzI5MmMwYi4uMWUyY2MxOWE5ZGJlODAyNDIyNTRkZTcwOTg3Yjc5ZDRkNGUwOTFk
NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9k
cnlydW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9k
cnlydW4ucHkKQEAgLTU4LDE1ICs1OCwxNSBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5w
b3J0IGltcG9ydCBEcml2ZXIsIERyaXZlck91dHB1dCwgZmFjdG9yeQogIyBhbGwgb2YgdGhlIG1l
dGhvZHMgYXJlIHBhc3NlZCB0byB0aGUgX19kZWxlZ2F0ZSwgbm90IHRvIHRoZSBiYXNlIGNsYXNz
LgogY2xhc3MgRHJ5UnVuUG9ydChvYmplY3QpOgogICAgICIiIkRyeVJ1biBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCisgICAgcG9ydF9uYW1lID0gJ2RyeXJ1bicKIAot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCAqKmt3YXJncyk6Ci0gICAgICAgIHBmeCA9ICdk
cnlydW4tJwotICAgICAgICBpZiAncG9ydF9uYW1lJyBpbiBrd2FyZ3M6Ci0gICAgICAgICAgICBp
ZiBrd2FyZ3NbJ3BvcnRfbmFtZSddLnN0YXJ0c3dpdGgocGZ4KToKLSAgICAgICAgICAgICAgICBr
d2FyZ3NbJ3BvcnRfbmFtZSddID0ga3dhcmdzWydwb3J0X25hbWUnXVtsZW4ocGZ4KTpdCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGt3YXJnc1sncG9ydF9uYW1lJ10gPSBOb25l
Ci0gICAgICAgIHNlbGYuX19kZWxlZ2F0ZSA9IGZhY3RvcnkuUG9ydEZhY3RvcnkoaG9zdCkuZ2V0
KCoqa3dhcmdzKQorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkZXRlcm1pbmVfcG9ydF9uYW1l
KGNscywgaG9zdCwgb3B0aW9ucywgcG9ydF9uYW1lKToKKyAgICAgICAgcmV0dXJuIHBvcnRfbmFt
ZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpOgor
ICAgICAgICBwcmVmaXggPSAnZHJ5cnVuLScKKyAgICAgICAgc2VsZi5fX2RlbGVnYXRlID0gZmFj
dG9yeS5Qb3J0RmFjdG9yeShob3N0KS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZS5yZXBsYWNlKHBy
ZWZpeCwgJycpLCAqKmt3YXJncykKIAogICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToK
ICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5fX2RlbGVnYXRlLCBuYW1lKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2VmbC5weQppbmRleCAzYWM3MWQ1
NzE0NzhmMzg4M2ExZDBkZGNkNjcwZDdiZTMxYTVlOWQ4Li5hNGI3MGEzNzg5NjFlYjkxYjFhMWUz
ZjQxYjg1OWU2NDJmMTc5ODZhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2VmbC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2VmbC5weQpAQCAtMzgsMTEgKzM4LDcgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGNsYXNzIEVmbFBvcnQoV2ViS2l0UG9ydCk6Ci0gICAgcG9y
dF9uYW1lID0gImVmbCIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCAqKmt3YXJncyk6
Ci0gICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgKiprd2FyZ3MpCi0gICAg
ICAgIHNlbGYuX3ZlcnNpb24gPSBzZWxmLnBvcnRfbmFtZQorICAgIHBvcnRfbmFtZSA9ICdlZmwn
CiAKICAgICBkZWYgX3BvcnRfZmxhZ19mb3Jfc2NyaXB0cyhzZWxmKToKICAgICAgICAgcmV0dXJu
ICItLWVmbCIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZmFjdG9yeS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZmFjdG9yeS5weQppbmRleCBmODdhNDQ3YjBjNDcxNWE1YTNiYjdmOThiYTBjM2Q5MjFiMDc5
YzNiLi5hZjQwY2E3NGJhODU3NjU3YWVmYWY1MDVhMTkwZTU3ZDE1YTQ3Yzg0IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5CkBA
IC0zMCw3ICszMCw2IEBACiAiIiJGYWN0b3J5IG1ldGhvZCB0byByZXRyaWV2ZSB0aGUgYXBwcm9w
cmlhdGUgcG9ydCBpbXBsZW1lbnRhdGlvbi4iIiIKIAogaW1wb3J0IHJlCi1pbXBvcnQgc3lzCiAK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJzCiAKQEAgLTQ1
LDM4ICs0NCwzNCBAQCBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBob3N0KToKICAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKIAotICAgIGRlZiBfcG9y
dF9uYW1lX2Zyb21fYXJndW1lbnRzX2FuZF9vcHRpb25zKHNlbGYsIHBvcnRfbmFtZSwgb3B0aW9u
cywgcGxhdGZvcm0pOgotICAgICAgICBpZiBwb3J0X25hbWUgPT0gJ2Nocm9taXVtLWdwdSc6Ci0g
ICAgICAgICAgICBpZiBwbGF0Zm9ybSBpbiAoJ2N5Z3dpbicsICd3aW4zMicpOgotICAgICAgICAg
ICAgICAgIHJldHVybiAnY2hyb21pdW0tZ3B1LXdpbicKLSAgICAgICAgICAgIGlmIHBsYXRmb3Jt
LnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdjaHJvbWl1bS1n
cHUtbGludXgnCi0gICAgICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gJ2Nocm9taXVtLWdwdS1tYWMnCi0KKyAgICBkZWYgX3BvcnRfbmFtZV9m
cm9tX2FyZ3VtZW50c19hbmRfb3B0aW9ucyhzZWxmLCBwb3J0X25hbWUsIG9wdGlvbnMpOgorICAg
ICAgICBvc19uYW1lID0gc2VsZi5faG9zdC5wbGF0Zm9ybS5vc19uYW1lCiAgICAgICAgIGlmIHBv
cnRfbmFtZToKKyAgICAgICAgICAgIGlmIHBvcnRfbmFtZSA9PSAnY2hyb21pdW0tZ3B1JzoKKyAg
ICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICdsaW51eCc6ICdjaHJvbWl1
bS1ncHUtbGludXgnLAorICAgICAgICAgICAgICAgICdtYWMnOiAnY2hyb21pdW0tZ3B1LW1hYycs
CisgICAgICAgICAgICAgICAgJ3dpbic6ICdjaHJvbWl1bS1ncHUtd2luJywKKyAgICAgICAgICAg
ICAgICB9W29zX25hbWVdCiAgICAgICAgICAgICByZXR1cm4gcG9ydF9uYW1lCi0KLSAgICAgICAg
aWYgcGxhdGZvcm0gaW4gKCd3aW4zMicsICdjeWd3aW4nKToKLSAgICAgICAgICAgIGlmIG9wdGlv
bnMgYW5kIGhhc2F0dHIob3B0aW9ucywgJ2Nocm9taXVtJykgYW5kIG9wdGlvbnMuY2hyb21pdW06
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdjaHJvbWl1bS13aW4nCi0gICAgICAgICAgICByZXR1
cm4gJ3dpbicKLSAgICAgICAgaWYgcGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKLSAgICAg
ICAgICAgIHJldHVybiAnY2hyb21pdW0tbGludXgnCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdk
YXJ3aW4nOgotICAgICAgICAgICAgaWYgb3B0aW9ucyBhbmQgaGFzYXR0cihvcHRpb25zLCAnY2hy
b21pdW0nKSBhbmQgb3B0aW9ucy5jaHJvbWl1bToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2No
cm9taXVtLWNnLW1hYycKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBBZGQgYSB3YXkgdG8gc2Vs
ZWN0IHRoZSBjaHJvbWl1bS1tYWMgcG9ydC4KLSAgICAgICAgICAgIHJldHVybiAnbWFjJwotCi0g
ICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3Vua25vd24gcG9ydDsgcGxhdGZvcm0g
PSAiJXMiJyAlIHBsYXRmb3JtKQotCi0gICAgZGVmIGdldChzZWxmLCBwb3J0X25hbWU9Tm9uZSwg
b3B0aW9ucz1Ob25lLCBwbGF0Zm9ybT1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGlmIG9wdGlv
bnMgYW5kIGhhc2F0dHIob3B0aW9ucywgJ2Nocm9taXVtJykgYW5kIG9wdGlvbnMuY2hyb21pdW06
CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICdsaW51eCc6ICdjaHJvbWl1
bS1saW51eCcsCisgICAgICAgICAgICAgICAgJ21hYyc6ICdjaHJvbWl1bS1jZy1tYWMnLCAgIyBG
SVhNRTogY2hhbmdlIHRoaXMgYmFjayB0byBjaHJvbWl1bS1tYWMgc29vbi4KKyAgICAgICAgICAg
ICAgICAnd2luJzogJ2Nocm9taXVtLXdpbicsCisgICAgICAgICAgICAgICAgfVtvc19uYW1lXQor
ICAgICAgICByZXR1cm4geworICAgICAgICAgICAgJ2xpbnV4JzogJ2Nocm9taXVtLWxpbnV4JywK
KyAgICAgICAgICAgICdtYWMnOiAnbWFjJywKKyAgICAgICAgICAgICd3aW4nOiAnd2luJywKKyAg
ICAgICAgICAgIH1bb3NfbmFtZV0KKworICAgIGRlZiBnZXQoc2VsZiwgcG9ydF9uYW1lPU5vbmUs
IG9wdGlvbnM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJSZXR1cm5zIGFuIG9iamVjdCBp
bXBsZW1lbnRpbmcgdGhlIFBvcnQgaW50ZXJmYWNlLiBJZgogICAgICAgICBwb3J0X25hbWUgaXMg
Tm9uZSwgdGhpcyByb3V0aW5lIGF0dGVtcHRzIHRvIGd1ZXNzIGF0IHRoZSBtb3N0CiAgICAgICAg
IGFwcHJvcHJpYXRlIHBvcnQgb24gdGhpcyBwbGF0Zm9ybS4iIiIKLSAgICAgICAgcGxhdGZvcm0g
PSBwbGF0Zm9ybSBvciBzeXMucGxhdGZvcm0KLSAgICAgICAgcG9ydF90b191c2UgPSBzZWxmLl9w
b3J0X25hbWVfZnJvbV9hcmd1bWVudHNfYW5kX29wdGlvbnMocG9ydF9uYW1lLCBvcHRpb25zLCBw
bGF0Zm9ybSkKKyAgICAgICAgcG9ydF90b191c2UgPSBzZWxmLl9wb3J0X25hbWVfZnJvbV9hcmd1
bWVudHNfYW5kX29wdGlvbnMocG9ydF9uYW1lLCBvcHRpb25zKQorICAgICAgICBwb3J0X25hbWUg
PSBwb3J0X25hbWUgb3IgcG9ydF90b191c2UKICAgICAgICAgaWYgcG9ydF90b191c2Uuc3RhcnRz
d2l0aCgndGVzdCcpOgogICAgICAgICAgICAgaW1wb3J0IHRlc3QKICAgICAgICAgICAgIG1ha2Vy
ID0gdGVzdC5UZXN0UG9ydApAQCAtMTI2LDExICsxMjEsOSBAQCBjbGFzcyBQb3J0RmFjdG9yeShv
YmplY3QpOgogICAgICAgICAgICAgbWFrZXIgPSBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0
CiAgICAgICAgIGVsaWYgcG9ydF90b191c2UgPT0gJ2dvb2dsZS1jaHJvbWUtbGludXgzMic6CiAg
ICAgICAgICAgICBpbXBvcnQgZ29vZ2xlX2Nocm9tZQotICAgICAgICAgICAgcG9ydF9uYW1lID0g
J2Nocm9taXVtLWxpbnV4LXg4NicKICAgICAgICAgICAgIG1ha2VyID0gZ29vZ2xlX2Nocm9tZS5H
b29nbGVDaHJvbWVMaW51eDMyUG9ydAogICAgICAgICBlbGlmIHBvcnRfdG9fdXNlID09ICdnb29n
bGUtY2hyb21lLWxpbnV4NjQnOgogICAgICAgICAgICAgaW1wb3J0IGdvb2dsZV9jaHJvbWUKLSAg
ICAgICAgICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1saW51eC14ODZfNjQnCiAgICAgICAgICAg
ICBtYWtlciA9IGdvb2dsZV9jaHJvbWUuR29vZ2xlQ2hyb21lTGludXg2NFBvcnQKICAgICAgICAg
ZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRoKCdnb29nbGUtY2hyb21lLXdpbicpOgogICAgICAg
ICAgICAgaW1wb3J0IGdvb2dsZV9jaHJvbWUKQEAgLTE0NCw3ICsxMzcsOCBAQCBjbGFzcyBQb3J0
RmFjdG9yeShvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcigndW5zdXBwb3J0ZWQgcG9ydDogJXMnICUgcG9ydF90b191c2UpCiAKLSAg
ICAgICAgcmV0dXJuIG1ha2VyKHNlbGYuX2hvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUsIG9wdGlv
bnM9b3B0aW9ucywgKiprd2FyZ3MpCisgICAgICAgIHBvcnRfbmFtZSA9IG1ha2VyLmRldGVybWlu
ZV9wb3J0X25hbWUoc2VsZi5faG9zdCwgb3B0aW9ucywgcG9ydF9uYW1lKQorICAgICAgICByZXR1
cm4gbWFrZXIoc2VsZi5faG9zdCwgcG9ydF9uYW1lLCBvcHRpb25zPW9wdGlvbnMsICoqa3dhcmdz
KQogCiAgICAgZGVmIGFsbF9wb3J0X25hbWVzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBs
aXN0IG9mIGFsbCB2YWxpZCwgZnVsbHktc3BlY2lmaWVkLCAicmVhbCIgcG9ydCBuYW1lcy4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9y
eV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
ZmFjdG9yeV91bml0dGVzdC5weQppbmRleCAxNjg3NGUwYzZhNmNmOTExYjM3MzhiZTYxZDY1Mjhl
NjlkNGM2NzFhLi4yNDkyOTQzMDI0MDYwNjVmYzFlZGMyMzkwYTg4MGZlMDZiYTBmOWY5IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3Rvcnlf
dW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9mYWN0b3J5X3VuaXR0ZXN0LnB5CkBAIC0yNiw3ICsyNiw2IEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJr
aXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwpAQCAtNDksNTkgKzQ4LDM5IEBA
IGltcG9ydCB3aW4KIGNsYXNzIEZhY3RvcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAi
IiJUZXN0IGZhY3RvcnkgY3JlYXRlcyBwcm9wZXIgcG9ydCBvYmplY3QgZm9yIHRoZSB0YXJnZXQu
CiAKLSAgICBUYXJnZXQgaXMgc3BlY2lmaWVkIGJ5IHBvcnRfbmFtZSwgc3lzLnBsYXRmb3JtIGFu
ZCBvcHRpb25zLgorICAgIFRhcmdldCBpcyBzcGVjaWZpZWQgYnkgcG9ydF9uYW1lLCBvc19uYW1l
LCBvc192ZXJzaW9uLCBhbmQgb3B0aW9ucy4KIAogICAgICIiIgogICAgICMgRklYTUU6IFRoZSBw
b3J0cyB0aGVtc2VsdmVzIHNob3VsZCBleHBvc2Ugd2hhdCBvcHRpb25zIHRoZXkgcmVxdWlyZSwK
ICAgICAjIGluc3RlYWQgb2YgcGFzc2luZyBnZW5lcmljICJvcHRpb25zIi4KIAogICAgIGRlZiBz
ZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5yZWFsX3N5c19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9y
bQogICAgICAgICBzZWxmLndlYmtpdF9vcHRpb25zID0gTW9ja09wdGlvbnMocGl4ZWxfdGVzdHM9
RmFsc2UpCiAgICAgICAgIHNlbGYuY2hyb21pdW1fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHBpeGVs
X3Rlc3RzPUZhbHNlLCBjaHJvbWl1bT1UcnVlKQogICAgICAgICBzZWxmLmZhY3RvcnkgPSBmYWN0
b3J5LlBvcnRGYWN0b3J5KE1vY2tTeXN0ZW1Ib3N0KCkpCiAKLSAgICBkZWYgdGVhckRvd24oc2Vs
Zik6Ci0gICAgICAgIHN5cy5wbGF0Zm9ybSA9IHNlbGYucmVhbF9zeXNfcGxhdGZvcm0KLQotICAg
IGRlZiBhc3NlcnRfcG9ydChzZWxmLCBwb3J0X25hbWUsIGV4cGVjdGVkX3BvcnQsIHBvcnRfb2Jq
PU5vbmUsIHBsYXRmb3JtPU5vbmUpOgotICAgICAgICAiIiJIZWxwZXIgYXNzZXJ0IGZvciBwb3J0
X25hbWUuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBwb3J0X25hbWU6IHBvcnQgbmFtZSB0
byBnZXQgcG9ydCBvYmplY3QuCi0gICAgICAgICAgZXhwZWN0ZWRfcG9ydDogY2xhc3Mgb2YgZXhw
ZWN0ZWQgcG9ydCBvYmplY3QuCi0gICAgICAgICAgcG9ydF9vYmo6IG9wdGlvbmFsIHBvcnQgb2Jq
ZWN0Ci0gICAgICAgICIiIgotICAgICAgICBwb3J0X29iaiA9IHBvcnRfb2JqIG9yIHNlbGYuZmFj
dG9yeS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSwgcGxhdGZvcm09cGxhdGZvcm0pCisgICAgZGVm
IGFzc2VydF9wb3J0KHNlbGYsIHBvcnRfbmFtZSwgZXhwZWN0ZWRfcG9ydCwgcG9ydF9vYmo9Tm9u
ZSwgb3NfbmFtZT1Ob25lLCBvc192ZXJzaW9uPU5vbmUsIG9wdGlvbnM9Tm9uZSk6CisgICAgICAg
IGlmIG9zX25hbWU6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkuX2hvc3QucGxhdGZvcm0ub3Nf
bmFtZSA9IG9zX25hbWUKKyAgICAgICAgaWYgb3NfdmVyc2lvbjoKKyAgICAgICAgICAgIHNlbGYu
ZmFjdG9yeS5faG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uID0gb3NfdmVyc2lvbgorICAgICAgICBw
b3J0X29iaiA9IHBvcnRfb2JqIG9yIHNlbGYuZmFjdG9yeS5nZXQocG9ydF9uYW1lPXBvcnRfbmFt
ZSwgb3B0aW9ucz1vcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShw
b3J0X29iaiwgZXhwZWN0ZWRfcG9ydCkpCiAKLSAgICBkZWYgYXNzZXJ0X3BsYXRmb3JtX3BvcnQo
c2VsZiwgcGxhdGZvcm0sIG9wdGlvbnMsIGV4cGVjdGVkX3BvcnQpOgotICAgICAgICAiIiJIZWxw
ZXIgYXNzZXJ0IGZvciBwbGF0Zm9ybSBhbmQgb3B0aW9ucy4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgIHBsYXRmb3JtOiBzeXMucGxhdGZvcm0uCi0gICAgICAgICAgb3B0aW9uczogb3B0aW9u
cyB0byBnZXQgcG9ydCBvYmplY3QuCi0gICAgICAgICAgZXhwZWN0ZWRfcG9ydDogY2xhc3Mgb2Yg
ZXhwZWN0ZWQgcG9ydCBvYmplY3QuCi0KLSAgICAgICAgIiIiCi0gICAgICAgICMgRklYTUU6IEhh
Y2tpbmcgc3lzLnBsYXRmb3JtIGxpa2UgdGhpcyBpcyBXUk9ORy4KLSAgICAgICAgb3JpZ19wbGF0
Zm9ybSA9IHN5cy5wbGF0Zm9ybQotICAgICAgICBzeXMucGxhdGZvcm0gPSBwbGF0Zm9ybQotICAg
ICAgICAjIEZJWE1FOiBXZSBuZWVkIGEgYmV0dGVyIHdheSB0byBtb2NrIHRoaXMuCisgICAgZGVm
IGFzc2VydF9wbGF0Zm9ybV9wb3J0KHNlbGYsIG9zX25hbWUsIG9zX3ZlcnNpb24sIG9wdGlvbnMs
IGV4cGVjdGVkX3BvcnQpOgorICAgICAgICBzZWxmLmZhY3RvcnkuX2hvc3QucGxhdGZvcm0ub3Nf
bmFtZSA9IG9zX25hbWUKKyAgICAgICAgc2VsZi5mYWN0b3J5Ll9ob3N0LnBsYXRmb3JtLm9zX3Zl
cnNpb24gPSBvc192ZXJzaW9uCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHNl
bGYuZmFjdG9yeS5nZXQob3B0aW9ucz1vcHRpb25zKSwgZXhwZWN0ZWRfcG9ydCkpCi0gICAgICAg
IHN5cy5wbGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KIAogICAgIGRlZiB0ZXN0X21hYyhzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgibWFjIiwgbWFjLk1hY1BvcnQpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X3BsYXRmb3JtX3BvcnQoImRhcndpbiIsIE5vbmUsIG1hYy5NYWNQb3J0KQotICAg
ICAgICBzZWxmLmFzc2VydF9wbGF0Zm9ybV9wb3J0KCJkYXJ3aW4iLCBzZWxmLndlYmtpdF9vcHRp
b25zLCBtYWMuTWFjUG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgnbWFjLWxlb3BhcmQn
LCBtYWMuTWFjUG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcGxhdGZvcm1fcG9ydCgnbWFjJywg
J2xlb3BhcmQnLCBOb25lLCBtYWMuTWFjUG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcGxhdGZv
cm1fcG9ydCgnbWFjJywgJ2xlb3BhcmQnLCBzZWxmLndlYmtpdF9vcHRpb25zLCBtYWMuTWFjUG9y
dCkKIAogICAgIGRlZiB0ZXN0X3dpbihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgi
d2luIiwgd2luLldpblBvcnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X3BsYXRmb3JtX3BvcnQoIndp
bjMyIiwgTm9uZSwgd2luLldpblBvcnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X3BsYXRmb3JtX3Bv
cnQoIndpbjMyIiwgc2VsZi53ZWJraXRfb3B0aW9ucywgd2luLldpblBvcnQpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X3BsYXRmb3JtX3BvcnQoImN5Z3dpbiIsIE5vbmUsIHdpbi5XaW5Qb3J0KQotICAg
ICAgICBzZWxmLmFzc2VydF9wbGF0Zm9ybV9wb3J0KCJjeWd3aW4iLCBzZWxmLndlYmtpdF9vcHRp
b25zLCB3aW4uV2luUG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgnd2luLXhwJywgd2lu
LldpblBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0X3BsYXRmb3JtX3BvcnQoJ3dpbicsICd4cCcs
IE5vbmUsIHdpbi5XaW5Qb3J0KQorICAgICAgICBzZWxmLmFzc2VydF9wbGF0Zm9ybV9wb3J0KCd3
aW4nLCAneHAnLCBzZWxmLndlYmtpdF9vcHRpb25zLCB3aW4uV2luUG9ydCkKIAogICAgIGRlZiB0
ZXN0X2dvb2dsZV9jaHJvbWUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImdvb2ds
ZS1jaHJvbWUtbGludXgzMiIsIGdvb2dsZV9jaHJvbWUuR29vZ2xlQ2hyb21lTGludXgzMlBvcnQp
CkBAIC0xMTYsNTIgKzk1LDQzIEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgicXQiLCBxdC5RdFBvcnQpCiAKICAgICBkZWYg
dGVzdF9jaHJvbWl1bV9ncHUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoJ2Nocm9t
aXVtLWdwdScsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdU1hY1BvcnQsIHBsYXRmb3JtPSdkYXJ3
aW4nKQotICAgICAgICBzZWxmLmFzc2VydF9wb3J0KCdjaHJvbWl1bS1ncHUnLCBjaHJvbWl1bV9n
cHUuQ2hyb21pdW1HcHVXaW5Qb3J0LCBwbGF0Zm9ybT0nd2luMzInKQotICAgICAgICBzZWxmLmFz
c2VydF9wb3J0KCdjaHJvbWl1bS1ncHUnLCBjaHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVXaW5Qb3J0
LCBwbGF0Zm9ybT0nY3lnd2luJykKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgnY2hyb21pdW0t
Z3B1JywgY2hyb21pdW1fZ3B1LkNocm9taXVtR3B1TGludXhQb3J0LCBwbGF0Zm9ybT0nbGludXgy
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgnY2hyb21pdW0tZ3B1JywgY2hyb21pdW1fZ3B1
LkNocm9taXVtR3B1TGludXhQb3J0LCBwbGF0Zm9ybT0nbGludXgzJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfcG9ydCgnY2hyb21pdW0tZ3B1JywgY2hyb21pdW1fZ3B1LkNocm9taXVtR3B1TWFjUG9y
dCwgb3NfbmFtZT0nbWFjJywgb3NfdmVyc2lvbj0nbGVvcGFyZCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X3BvcnQoJ2Nocm9taXVtLWdwdScsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdVdpblBvcnQs
IG9zX25hbWU9J3dpbicsIG9zX3ZlcnNpb249J3hwJykKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9y
dCgnY2hyb21pdW0tZ3B1JywgY2hyb21pdW1fZ3B1LkNocm9taXVtR3B1TGludXhQb3J0LCBvc19u
YW1lPSdsaW51eCcsIG9zX3ZlcnNpb249J2x1Y2lkJykKIAogICAgIGRlZiB0ZXN0X2Nocm9taXVt
X2dwdV9saW51eChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21pdW0tZ3B1
LWxpbnV4IiwgY2hyb21pdW1fZ3B1LkNocm9taXVtR3B1TGludXhQb3J0KQorICAgICAgICBzZWxm
LmFzc2VydF9wb3J0KCJjaHJvbWl1bS1ncHUtbGludXgteDg2XzY0IiwgY2hyb21pdW1fZ3B1LkNo
cm9taXVtR3B1TGludXhQb3J0KQogCiAgICAgZGVmIHRlc3RfY2hyb21pdW1fZ3B1X21hYyhzZWxm
KToKICAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21pdW0tZ3B1LWNnLW1hYyIsIGNocm9t
aXVtX2dwdS5DaHJvbWl1bUdwdUNnTWFjUG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgi
Y2hyb21pdW0tZ3B1LW1hYyIsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdU1hY1BvcnQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNocm9taXVtLWdwdS1tYWMtbGVvcGFyZCIsIGNocm9taXVt
X2dwdS5DaHJvbWl1bUdwdU1hY1BvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNocm9t
aXVtLWdwdS1tYWMtc25vd2xlb3BhcmQiLCBjaHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVNYWNQb3J0
KQogCiAgICAgZGVmIHRlc3RfY2hyb21pdW1fZ3B1X3dpbihzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRfcG9ydCgiY2hyb21pdW0tZ3B1LXdpbiIsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdVdp
blBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoJ2Nocm9taXVtLWdwdS13aW4teHAnLCBj
aHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVXaW5Qb3J0KQogCiAgICAgZGVmIHRlc3RfY2hyb21pdW1f
bWFjKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9wb3J0KCJjaHJvbWl1bS1tYWMiLCBjaHJv
bWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0KQotICAgICAgICBzZWxmLmFzc2VydF9wb3J0KCJjaHJv
bWl1bS1jZy1tYWMiLCBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0KQotICAgICAgICBzZWxm
LmFzc2VydF9wbGF0Zm9ybV9wb3J0KCJkYXJ3aW4iLCBzZWxmLmNocm9taXVtX29wdGlvbnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hyb21pdW1fbWFjLkNocm9taXVtTWFj
UG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21pdW0tbWFjLWxlb3BhcmQiLCBj
aHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0KQorICAgICAgICBzZWxmLmFzc2VydF9wb3J0KCJj
aHJvbWl1bS1jZy1tYWMtbGVvcGFyZCIsIGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X3BsYXRmb3JtX3BvcnQoJ21hYycsICdsZW9wYXJkJywgc2VsZi5j
aHJvbWl1bV9vcHRpb25zLCBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0KQogCiAgICAgZGVm
IHRlc3RfY2hyb21pdW1fbGludXgoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNo
cm9taXVtLWxpbnV4IiwgY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X3BsYXRmb3JtX3BvcnQoImxpbnV4MiIsIHNlbGYuY2hyb21pdW1fb3B0aW9u
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHJvbWl1bV9saW51eC5DaHJv
bWl1bUxpbnV4UG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRfcGxhdGZvcm1fcG9ydCgibGludXgz
Iiwgc2VsZi5jaHJvbWl1bV9vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0KQorICAgICAgICBzZWxmLmFzc2Vy
dF9wb3J0KCJjaHJvbWl1bS1saW51eC14ODYiLCBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4
UG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcGxhdGZvcm1fcG9ydCgibGludXgiLCAnbHVjaWQn
LCBOb25lLCBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydCkKKyAgICAgICAgc2VsZi5h
c3NlcnRfcGxhdGZvcm1fcG9ydCgibGludXgiLCAnbHVjaWQnLCBzZWxmLmNocm9taXVtX29wdGlv
bnMsIGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0KQogCiAgICAgZGVmIHRlc3RfY2hy
b21pdW1fd2luKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9wb3J0KCJjaHJvbWl1bS13aW4i
LCBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0KQotICAgICAgICBzZWxmLmFzc2VydF9wbGF0
Zm9ybV9wb3J0KCJ3aW4zMiIsIHNlbGYuY2hyb21pdW1fb3B0aW9ucywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0KQotICAgICAg
ICBzZWxmLmFzc2VydF9wbGF0Zm9ybV9wb3J0KCJjeWd3aW4iLCBzZWxmLmNocm9taXVtX29wdGlv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hyb21pdW1fd2luLkNocm9t
aXVtV2luUG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21pdW0td2luLXhwIiwg
Y2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcGxhdGZv
cm1fcG9ydCgnd2luJywgJ3hwJywgc2VsZi5jaHJvbWl1bV9vcHRpb25zLCBjaHJvbWl1bV93aW4u
Q2hyb21pdW1XaW5Qb3J0KQogCi0gICAgZGVmIHRlc3RfdW5rbm93bl9zcGVjaWZpZWQoc2VsZik6
CisgICAgZGVmIHRlc3RfdW5rbm93bl9wb3J0X25hbWUoc2VsZik6CiAgICAgICAgICMgVGVzdCB3
aGF0IGhhcHBlbnMgd2hlbiB5b3Ugc3BlY2lmeSBhbiB1bmtub3duIHBvcnQuCiAgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHNlbGYuZmFjdG9yeS5nZXQsIHBv
cnRfbmFtZT0ndW5rbm93bicpCiAKLSAgICBkZWYgdGVzdF91bmtub3duX2RlZmF1bHQoc2VsZik6
CisgICAgZGVmIHRlc3RfdW5rbm93bl9vc19uYW1lKHNlbGYpOgogICAgICAgICAjIFRlc3Qgd2hh
dCBoYXBwZW5zIHdoZW4geW91J3JlIHJ1bm5pbmcgb24gYW4gdW5rbm93biBwbGF0Zm9ybS4KLSAg
ICAgICAgb3JpZ19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQotICAgICAgICBzeXMucGxhdGZvcm0g
PSAndW5rbm93bicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJv
ciwgc2VsZi5mYWN0b3J5LmdldCkKLSAgICAgICAgc3lzLnBsYXRmb3JtID0gb3JpZ19wbGF0Zm9y
bQorICAgICAgICBzZWxmLmZhY3RvcnkuX2hvc3QucGxhdGZvcm0ub3NfbmFtZSA9ICd1bmtub3du
JworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2VsZi5mYWN0b3J5LmdldCkK
IAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lLnB5CmluZGV4IDFk
Nzc4MzEyNjg0ZjlhNjI2MWI1MmE1YjMxYzMxYmU0Njc3NDBlY2YuLjc3MzQ2YWExMTIzZTI0MzUw
ODc1MDU3MTJjY2RkY2RiNWU3YjA3ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZS5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUucHkKQEAgLTQ3LDYgKzQ3
LDEwIEBAIGRlZiBfdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHBvcnQsIHN1cGVyKToKIAog
CiBjbGFzcyBHb29nbGVDaHJvbWVMaW51eDMyUG9ydChjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxp
bnV4UG9ydCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRldGVybWluZV9wb3J0X25hbWUo
Y2xzLCBob3N0LCBvcHRpb25zLCBwb3J0X25hbWUpOgorICAgICAgICByZXR1cm4gJ2Nocm9taXVt
LWxpbnV4LXg4NicKKwogICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKICAgICAg
ICAgcGF0aHMgPSBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydC5iYXNlbGluZV9zZWFy
Y2hfcGF0aChzZWxmKQogICAgICAgICBwYXRocy5pbnNlcnQoMCwgc2VsZi5fd2Via2l0X2Jhc2Vs
aW5lX3BhdGgoJ2dvb2dsZS1jaHJvbWUtbGludXgzMicpKQpAQCAtNjAsNiArNjQsMTAgQEAgY2xh
c3MgR29vZ2xlQ2hyb21lTGludXgzMlBvcnQoY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBv
cnQpOgogCiAKIGNsYXNzIEdvb2dsZUNocm9tZUxpbnV4NjRQb3J0KGNocm9taXVtX2xpbnV4LkNo
cm9taXVtTGludXhQb3J0KToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGV0ZXJtaW5lX3Bv
cnRfbmFtZShjbHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6CisgICAgICAgIHJldHVybiAn
Y2hyb21pdW0tbGludXgteDg2XzY0JworCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRoKHNl
bGYpOgogICAgICAgICBwYXRocyA9IGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0LmJh
c2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpCiAgICAgICAgIHBhdGhzLmluc2VydCgwLCBzZWxmLl93
ZWJraXRfYmFzZWxpbmVfcGF0aCgnZ29vZ2xlLWNocm9tZS1saW51eDY0JykpCkBAIC03Myw2ICs4
MSwxMCBAQCBjbGFzcyBHb29nbGVDaHJvbWVMaW51eDY0UG9ydChjaHJvbWl1bV9saW51eC5DaHJv
bWl1bUxpbnV4UG9ydCk6CiAKIAogY2xhc3MgR29vZ2xlQ2hyb21lTWFjUG9ydChjaHJvbWl1bV9t
YWMuQ2hyb21pdW1NYWNQb3J0KToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGV0ZXJtaW5l
X3BvcnRfbmFtZShjbHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6CisgICAgICAgIHJldHVy
biAnY2hyb21pdW0tbWFjLWxlb3BhcmQnCisKICAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgo
c2VsZik6CiAgICAgICAgIHBhdGhzID0gY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC5iYXNl
bGluZV9zZWFyY2hfcGF0aChzZWxmKQogICAgICAgICBwYXRocy5pbnNlcnQoMCwgc2VsZi5fd2Vi
a2l0X2Jhc2VsaW5lX3BhdGgoJ2dvb2dsZS1jaHJvbWUtbWFjJykpCkBAIC04Myw2ICs5NSwxMCBA
QCBjbGFzcyBHb29nbGVDaHJvbWVNYWNQb3J0KGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQp
OgogCiAKIGNsYXNzIEdvb2dsZUNocm9tZVdpblBvcnQoY2hyb21pdW1fd2luLkNocm9taXVtV2lu
UG9ydCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRldGVybWluZV9wb3J0X25hbWUoY2xz
LCBob3N0LCBvcHRpb25zLCBwb3J0X25hbWUpOgorICAgICAgICByZXR1cm4gJ2Nocm9taXVtLXdp
bi14cCcKKwogICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKICAgICAgICAgcGF0
aHMgPSBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKHNl
bGYpCiAgICAgICAgIHBhdGhzLmluc2VydCgwLCBzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgn
Z29vZ2xlLWNocm9tZS13aW4nKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weQpp
bmRleCBiMjAxM2UyYTdiZTU0MTVmMmUyZjE5ZmZkYTRhOTQ0Y2RlYmQ5MGVmLi4xMjlkNTg3NTU5
Nzk1ZWM3NWI5NmM0YmYzMGEyODUwZWZlZGI3MTBlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21l
X3VuaXR0ZXN0LnB5CkBAIC0yNiw3ICsyNiw4IEBACiAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Citmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAorZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmFjdG9yeQog
CiAKIGNsYXNzIEdldEdvb2dsZUNocm9tZVBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAg
LTQxLDcgKzQyLDcgQEAgY2xhc3MgR2V0R29vZ2xlQ2hyb21lUG9ydFRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLl92ZXJpZnlfYmFzZWxpbmVfcGF0aCgnZ29vZ2xlLWNocm9t
ZS13aW4nLCAnZ29vZ2xlLWNocm9tZS13aW4tdmlzdGEnKQogCiAgICAgZGVmIF92ZXJpZnlfYmFz
ZWxpbmVfcGF0aChzZWxmLCBleHBlY3RlZF9wYXRoLCBwb3J0X25hbWUpOgotICAgICAgICBwb3J0
ID0gTW9ja0hvc3QoKS5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1wb3J0X25hbWUpCisgICAg
ICAgIHBvcnQgPSBQb3J0RmFjdG9yeShNb2NrU3lzdGVtSG9zdCgpKS5nZXQocG9ydF9uYW1lPXBv
cnRfbmFtZSkKICAgICAgICAgcGF0aCA9IHBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKVswXQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3BhdGgsIHBvcnQuX2ZpbGVzeXN0ZW0u
YmFzZW5hbWUocGF0aCkpCiAKQEAgLTUxLDEwICs1MiwxMCBAQCBjbGFzcyBHZXRHb29nbGVDaHJv
bWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICMgYmUgYWJsZSB0byBjb250
cm9sIHRoZSBjb250ZW50cyBiZXR0ZXIuCiAgICAgICAgICMgRklYTUU6IFdoYXQgaXMgdGhlIFRy
ZWUoKSBhYnN0cmFjdGlvbj8KIAotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBj
aHJvbWl1bV9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCJjaHJvbWl1bS1jZy1tYWMiKQor
ICAgICAgICBob3N0ID0gTW9ja1N5c3RlbUhvc3QoKQorICAgICAgICBjaHJvbWl1bV9wb3J0ID0g
UG9ydEZhY3RvcnkoaG9zdCkuZ2V0KCJjaHJvbWl1bS1jZy1tYWMiKQogICAgICAgICBjaHJvbWl1
bV9iYXNlID0gY2hyb21pdW1fcG9ydC5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgpCi0gICAgICAg
IHBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSwgb3B0aW9u
cz1Ob25lKQorICAgICAgICBwb3J0ID0gUG9ydEZhY3RvcnkoaG9zdCkuZ2V0KHBvcnRfbmFtZT1w
b3J0X25hbWUsIG9wdGlvbnM9Tm9uZSkKIAogICAgICAgICBleHBlY3RlZF9jaHJvbWl1bV9vdmVy
cmlkZXMgPSAnLy8gY2hyb21pdW0gb3ZlcnJpZGVzXG4nCiAgICAgICAgIGV4cGVjdGVkX2Nocm9t
ZV9vdmVycmlkZXMgPSAnLy8gY2hyb21lIG92ZXJyaWRlc1xuJwpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weQppbmRleCBkMDVkZGE5ODU1YTU0MzI2
NWQ0MjlkNjM4ZGJlYTJmMjYyYzlkN2IyLi40ZDY2NzY1ZDA0NTVlNzAzODY1ODIxYjEzMjg3YWVi
MmY4ODE4MTRlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2d0ay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2d0ay5weQpAQCAtNzYsMTAgKzc2LDYgQEAgY2xhc3MgR3RrRHJpdmVyKFdlYktpdERyaXZl
cik6CiBjbGFzcyBHdGtQb3J0KFdlYktpdFBvcnQpOgogICAgIHBvcnRfbmFtZSA9ICJndGsiCiAK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgKiprd2FyZ3MpOgotICAgICAgICBXZWJLaXRQ
b3J0Ll9faW5pdF9fKHNlbGYsIGhvc3QsICoqa3dhcmdzKQotICAgICAgICBzZWxmLl92ZXJzaW9u
ID0gc2VsZi5wb3J0X25hbWUKLQogICAgIGRlZiBfcG9ydF9mbGFnX2Zvcl9zY3JpcHRzKHNlbGYp
OgogICAgICAgICByZXR1cm4gIi0tZ3RrIgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CmluZGV4IDkzODU1Yjg3NTlhY2E5Y2VmZDc1NDU2ZGIx
OGJmODhjN2UyNGM5ZmUuLjQ3NjQyOTNhMDRmYjI3YzIzZWZjMGQxYzAwOWI1YjRiZmRmZDk4OTMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFj
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5
CkBAIC0zNywyNiArMzcsNiBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmxlYWtk
ZXRlY3RvciBpbXBvcnQgTGVha0RldGVjdG9yCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCiAKIAotZGVmIG9zX3ZlcnNpb24ob3NfdmVyc2lvbl9zdHJpbmc9Tm9uZSwgc3VwcG9y
dGVkX3ZlcnNpb25zPU5vbmUpOgotICAgIGlmIG5vdCBvc192ZXJzaW9uX3N0cmluZzoKLSAgICAg
ICAgaWYgaGFzYXR0cihwbGF0Zm9ybSwgJ21hY192ZXInKSBhbmQgcGxhdGZvcm0ubWFjX3Zlcigp
WzBdOgotICAgICAgICAgICAgb3NfdmVyc2lvbl9zdHJpbmcgPSBwbGF0Zm9ybS5tYWNfdmVyKClb
MF0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTWFrZSB1cCBzb21ldGhpbmcgZm9yIHRl
c3RpbmcuCi0gICAgICAgICAgICBvc192ZXJzaW9uX3N0cmluZyA9ICIxMC41LjYiCi0gICAgcmVs
ZWFzZV92ZXJzaW9uID0gaW50KG9zX3ZlcnNpb25fc3RyaW5nLnNwbGl0KCcuJylbMV0pCi0gICAg
dmVyc2lvbl9zdHJpbmdzID0gewotICAgICAgICA1OiAnbGVvcGFyZCcsCi0gICAgICAgIDY6ICdz
bm93bGVvcGFyZCcsCi0gICAgICAgIDc6ICdsaW9uJywKLSAgICB9Ci0gICAgYXNzZXJ0IHJlbGVh
c2VfdmVyc2lvbiA+PSBtaW4odmVyc2lvbl9zdHJpbmdzLmtleXMoKSkKLSAgICB2ZXJzaW9uX3N0
cmluZyA9IHZlcnNpb25fc3RyaW5ncy5nZXQocmVsZWFzZV92ZXJzaW9uLCAnZnV0dXJlJykKLSAg
ICBpZiBzdXBwb3J0ZWRfdmVyc2lvbnM6Ci0gICAgICAgIGFzc2VydCB2ZXJzaW9uX3N0cmluZyBp
biBzdXBwb3J0ZWRfdmVyc2lvbnMKLSAgICByZXR1cm4gdmVyc2lvbl9zdHJpbmcKLQotCiBjbGFz
cyBNYWNQb3J0KEFwcGxlUG9ydCk6CiAgICAgcG9ydF9uYW1lID0gIm1hYyIKIApAQCAtNjQsMTgg
KzQ0LDE5IEBAIGNsYXNzIE1hY1BvcnQoQXBwbGVQb3J0KToKICAgICAjIGFuZCB0aGUgb3JkZXIg
b2YgZmFsbGJhY2sgYmV0d2VlbiB0aGVtLiAgTWF0Y2hlcyBPUldULgogICAgIFZFUlNJT05fRkFM
TEJBQ0tfT1JERVIgPSBbIm1hYy1sZW9wYXJkIiwgIm1hYy1zbm93bGVvcGFyZCIsICJtYWMtbGlv
biIsICJtYWMiXQogCi0gICAgZGVmIF9kZXRlY3RfdmVyc2lvbihzZWxmLCBvc192ZXJzaW9uX3N0
cmluZyk6Ci0gICAgICAgICMgRklYTUU6IE1hY1BvcnQgYW5kIFdpblBvcnQgaW1wbGVtZW50IF9k
ZXRlY3RfdmVyc2lvbiBkaWZmZXJlbnRseS4KLSAgICAgICAgIyBXaW5Qb3J0IHVzZXMgb3NfdmVy
c2lvbl9zdHJpbmcgYXMgYSByZXBsYWNlbWVudCBmb3Igc2VsZi52ZXJzaW9uLgotICAgICAgICAj
IFRodXMganVzdCByZXR1cm5zIG9zX3ZlcnNpb25fc3RyaW5nIGZyb20gdGhpcyBmdW5jdGlvbiBp
ZiBub3QgTm9uZS4KLSAgICAgICAgIyBNYWMgKGluY29ycmVjdGx5KSB1c2VzIG9zX3ZlcnNpb25f
c3RyaW5nIGFzIGEgd2F5IHRvIHVuaXQtdGVzdAotICAgICAgICAjIHRoZSBvc192ZXJzaW9uIHBh
cnNpbmcgbG9naWMuICBXZSBzaG91bGQgc3BsaXQgdGhlIG9zX3ZlcnNpb24gcGFyc2luZyB0ZXN0
cwotICAgICAgICAjIGludG8gc2VwYXJhdGUgdW5pdHRlc3RzIHNvIHRoYXQgdGhleSBkbyBub3Qg
bmVlZCB0byBjb25zdHJ1Y3QKLSAgICAgICAgIyBNYWNQb3J0IG9iamVjdHMganVzdCB0byB0ZXN0
IG91ciB2ZXJzaW9uIHBhcnNpbmcuCi0gICAgICAgIHJldHVybiBvc192ZXJzaW9uKG9zX3ZlcnNp
b25fc3RyaW5nKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsICoqa3dhcmdzKToKLSAg
ICAgICAgQXBwbGVQb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3QsICoqa3dhcmdzKQorICAgIEBjbGFz
c21ldGhvZAorICAgIGRlZiBkZXRlcm1pbmVfcG9ydF9uYW1lKGNscywgaG9zdCwgb3B0aW9ucywg
cG9ydF9uYW1lKToKKyAgICAgICAgaWYgcG9ydF9uYW1lLmVuZHN3aXRoKCctd2syJyk6CisgICAg
ICAgICAgICAjIEZJWE1FOiBUaGlzIG1heSBiZSB3cm9uZywgc2luY2Ugb3B0aW9ucyBpcyBhIGds
b2JhbCBwcm9wZXJ0eSwgYW5kIHRoZSBwb3J0X25hbWUgaXMgc3BlY2lmaWMgdG8gdGhpcyBvYmpl
Y3Q/CisgICAgICAgICAgICBpZiBvcHRpb25zIGFuZCBub3QgaGFzYXR0cihvcHRpb25zLCAnd2Vi
a2l0X3Rlc3RfcnVubmVyJyk6CisgICAgICAgICAgICAgICAgb3B0aW9ucy53ZWJraXRfdGVzdF9y
dW5uZXIgPSBUcnVlCisgICAgICAgICAgICBwb3J0X25hbWUgPSBwb3J0X25hbWUucmVwbGFjZSgn
LXdrMicsICcnKQorICAgICAgICBpZiBwb3J0X25hbWUuZW5kc3dpdGgoJ21hYycpOgorICAgICAg
ICAgICAgcmV0dXJuIHBvcnRfbmFtZSArICctJyArIGhvc3QucGxhdGZvcm0ub3NfdmVyc2lvbgor
ICAgICAgICByZXR1cm4gcG9ydF9uYW1lCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwg
cG9ydF9uYW1lLCAqKmt3YXJncyk6CisgICAgICAgIEFwcGxlUG9ydC5fX2luaXRfXyhzZWxmLCBo
b3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKQogICAgICAgICBzZWxmLl9sZWFrX2RldGVjdG9yID0g
TGVha0RldGVjdG9yKHNlbGYpCiAgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigibGVha3MiKToK
ICAgICAgICAgICAgICMgRHVtcFJlbmRlclRyZWUgc2xvd3MgZG93biBub3RpY2FibHkgaWYgd2Ug
cnVuIG1vcmUgdGhhbiBhYm91dCAxMDAwIHRlc3RzIGluIGEgYmF0Y2gKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkK
aW5kZXggMmFjZWE5N2NkNTg4ZGRlYzRlYzBmZGE0NTYxNDIwYzc4YTUyMzcxNy4uNjZiYjQ2MTRk
N2YwNGM1NGMzZjRmMGI3NWE2MGUyMjEwZTBjNWM4MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKQEAgLTMy
LDExICszMiwxMSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2Nr
IGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1
dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9v
bCBpbXBvcnQgTW9ja09wdGlvbnMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQotZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9t
b2NrIGltcG9ydCBNb2NrSG9zdAogCiAKIGNsYXNzIE1hY1Rlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0
VGVzdENhc2UpOgogICAgIHBvcnRfbWFrZXIgPSBNYWNQb3J0CisgICAgcG9ydF9uYW1lID0gJ21h
Yy1sZW9wYXJkJwogCiAgICAgZGVmIGFzc2VydF9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKHNl
bGYsIHBvcnRfbmFtZSwgZXhwZWN0ZWRfcGF0aHMpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtl
X3BvcnQocG9ydF9uYW1lPXBvcnRfbmFtZSkKQEAgLTczLDEzICs3MywxMyBAQCBqYXZhLwogICAg
ICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQuX3Rlc3RzX2Zyb21fc2tpcHBlZF9maWxlX2NvbnRlbnRzKHNlbGYuZXhhbXBsZV9za2lwcGVk
X2ZpbGUpLCBzZWxmLmV4YW1wbGVfc2tpcHBlZF90ZXN0cykKIAotICAgIGRlZiBhc3NlcnRfbmFt
ZShzZWxmLCBwb3J0X25hbWUsIG9zX3ZlcnNpb25fc3RyaW5nLCBleHBlY3RlZCk6Ci0gICAgICAg
IHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9cG9ydF9uYW1lLCBvc192ZXJzaW9uX3N0
cmluZz1vc192ZXJzaW9uX3N0cmluZykKKyAgICBkZWYgYXNzZXJ0X25hbWUoc2VsZiwgcG9ydF9u
YW1lLCBvc192ZXJzaW9uLCBleHBlY3RlZCk6CisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9y
dChwb3J0X25hbWU9cG9ydF9uYW1lLCBvc192ZXJzaW9uPW9zX3ZlcnNpb24pCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLCBwb3J0Lm5hbWUoKSkKIAogICAgIGRlZiB0ZXN0X3Rl
c3RzX2Zvcl9vdGhlcl9wbGF0Zm9ybXMoc2VsZik6CiAgICAgICAgIHBsYXRmb3JtcyA9IFsnbWFj
JywgJ2Nocm9taXVtLWxpbnV4JywgJ21hYy1zbm93bGVvcGFyZCddCi0gICAgICAgIHBvcnQgPSBN
YWNQb3J0KE1vY2tIb3N0KCksIHBvcnRfbmFtZT0nbWFjLXNub3dsZW9wYXJkJykKKyAgICAgICAg
cG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nbWFjLXNub3dsZW9wYXJkJykKICAgICAg
ICAgcGxhdGZvcm1fZGlyX3BhdGhzID0gbWFwKHBvcnQuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBw
bGF0Zm9ybXMpCiAgICAgICAgICMgUmVwbGFjZSBvdXIgZW1wdHkgbW9jayBmaWxlIHN5c3RlbSB3
aXRoIG9uZSB3aGljaCBoYXMgb3VyIGV4cGVjdGVkIHBsYXRmb3JtIGRpcmVjdG9yaWVzLgogICAg
ICAgICBwb3J0Ll9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oZGlycz1wbGF0Zm9ybV9kaXJf
cGF0aHMpCkBAIC05MCw1OSArOTAsNTIgQEAgamF2YS8KICAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSgncGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkJyBpbiBkaXJzX3RvX3NraXApCiAKICAgICBkZWYg
dGVzdF92ZXJzaW9uKHNlbGYpOgotICAgICAgICBwb3J0ID0gTWFjUG9ydChNb2NrSG9zdCgpKQor
ICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUo
cG9ydC52ZXJzaW9uKCkpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9ucyhzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRfbmFtZShOb25lLCAnMTAuNS4zJywgJ21hYy1sZW9wYXJkJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbmFtZSgnbWFjJywgJzEwLjUuMycsICdtYWMtbGVvcGFyZCcpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1sZW9wYXJkJywgJzEwLjQuOCcsICdtYWMtbGVvcGFyZCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1sZW9wYXJkJywgJzEwLjUuMycsICdtYWMt
bGVvcGFyZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1sZW9wYXJkJywgJzEwLjYu
MycsICdtYWMtbGVvcGFyZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYycsICdsZW9w
YXJkJywgJ21hYy1sZW9wYXJkJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjLWxlb3Bh
cmQnLCAndGlnZXInLCAnbWFjLWxlb3BhcmQnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdt
YWMtbGVvcGFyZCcsICdsZW9wYXJkJywgJ21hYy1sZW9wYXJkJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbmFtZSgnbWFjLWxlb3BhcmQnLCAnc25vd2xlb3BhcmQnLCAnbWFjLWxlb3BhcmQnKQogCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoTm9uZSwgJzEwLjYuMycsICdtYWMtc25vd2xlb3BhcmQn
KQotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMnLCAnMTAuNi4zJywgJ21hYy1zbm93bGVv
cGFyZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1zbm93bGVvcGFyZCcsICcxMC40
LjMnLCAnbWFjLXNub3dsZW9wYXJkJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjLXNu
b3dsZW9wYXJkJywgJzEwLjUuMycsICdtYWMtc25vd2xlb3BhcmQnKQotICAgICAgICBzZWxmLmFz
c2VydF9uYW1lKCdtYWMtc25vd2xlb3BhcmQnLCAnMTAuNi4zJywgJ21hYy1zbm93bGVvcGFyZCcp
CisgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYycsICdzbm93bGVvcGFyZCcsICdtYWMtc25v
d2xlb3BhcmQnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMtc25vd2xlb3BhcmQnLCAn
dGlnZXInLCAnbWFjLXNub3dsZW9wYXJkJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFj
LXNub3dsZW9wYXJkJywgJ2xlb3BhcmQnLCAnbWFjLXNub3dsZW9wYXJkJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbmFtZSgnbWFjLXNub3dsZW9wYXJkJywgJ3Nub3dsZW9wYXJkJywgJ21hYy1zbm93
bGVvcGFyZCcpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25lLCAnMTAuNycsICdtYWMt
bGlvbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoTm9uZSwgJzEwLjcuMycsICdtYWMtbGlv
bicpCi0gICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYycsICcxMC43LjMnLCAnbWFjLWxpb24n
KQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMnLCAnbGlvbicsICdtYWMtbGlvbicpCiAK
LSAgICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25lLCAnMTAuOScsICdtYWMtZnV0dXJlJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjJywgJzEwLjknLCAnbWFjLWZ1dHVyZScpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1mdXR1cmUnLCAnMTAuOScsICdtYWMtZnV0dXJlJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjJywgJ2Z1dHVyZScsICdtYWMtZnV0dXJlJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjLWZ1dHVyZScsICdsZW9wYXJkJywgJ21hYy1m
dXR1cmUnKQorICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMtZnV0dXJlJywgJ2Z1dHVyZScs
ICdtYWMtZnV0dXJlJykKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJv
ciwgc2VsZi5hc3NlcnRfbmFtZSwgTm9uZSwgJzEwLjMuMScsICdzaG91bGQtcmFpc2UtYXNzZXJ0
aW9uLXNvLXRoaXMtdmFsdWUtZG9lcy1ub3QtbWF0dGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHNlbGYuYXNzZXJ0X25hbWUsICdtYWMnLCAndGlnZXInLCAn
c2hvdWxkLXJhaXNlLWFzc2VydGlvbi1zby10aGlzLXZhbHVlLWRvZXMtbm90LW1hdHRlcicpCiAK
ICAgICBkZWYgdGVzdF9pc192ZXJzaW9uX21ldGhvZHMoc2VsZik6Ci0gICAgICAgIGxlb3BhcmRf
cG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nbWFjLWxlb3BhcmQnLCBvc192ZXJzaW9u
X3N0cmluZz0nMTAuNS4zJykKKyAgICAgICAgbGVvcGFyZF9wb3J0ID0gc2VsZi5tYWtlX3BvcnQo
cG9ydF9uYW1lPSdtYWMtbGVvcGFyZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW9wYXJk
X3BvcnQuaXNfbGVvcGFyZCgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxlb3BhcmRfcG9y
dC5pc19zbm93bGVvcGFyZCgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxlb3BhcmRfcG9y
dC5pc19saW9uKCkpCiAKLSAgICAgICAgc25vd2xlb3BhcmRfcG9ydCA9IHNlbGYubWFrZV9wb3J0
KHBvcnRfbmFtZT0nbWFjLXNub3dsZW9wYXJkJywgb3NfdmVyc2lvbl9zdHJpbmc9JzEwLjYuMycp
CisgICAgICAgIHNub3dsZW9wYXJkX3BvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J21h
Yy1zbm93bGVvcGFyZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc25vd2xlb3BhcmRfcG9y
dC5pc19sZW9wYXJkKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzbm93bGVvcGFyZF9wb3J0
LmlzX3Nub3dsZW9wYXJkKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc25vd2xlb3BhcmRf
cG9ydC5pc19saW9uKCkpCiAKLSAgICAgICAgbGlvbl9wb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9y
dF9uYW1lPSdtYWMtbGlvbicsIG9zX3ZlcnNpb25fc3RyaW5nPScxMC43LjInKQorICAgICAgICBs
aW9uX3BvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J21hYy1saW9uJykKICAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShsaW9uX3BvcnQuaXNfbGVvcGFyZCgpKQogICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKGxpb25fcG9ydC5pc19zbm93bGVvcGFyZCgpKQogICAgICAgICBzZWxmLmFzc2Vy
dFRydWUobGlvbl9wb3J0LmlzX2xpb24oKSkKIAogICAgIGRlZiB0ZXN0X3NldHVwX2Vudmlyb25f
Zm9yX3NlcnZlcihzZWxmKToKLSAgICAgICAgcG9ydCA9IE1hY1BvcnQoTW9ja0hvc3QoKSwgb3B0
aW9ucz1Nb2NrT3B0aW9ucyhsZWFrcz1UcnVlLCBndWFyZF9tYWxsb2M9VHJ1ZSkpCisgICAgICAg
IHBvcnQgPSBzZWxmLm1ha2VfcG9ydChvcHRpb25zPU1vY2tPcHRpb25zKGxlYWtzPVRydWUsIGd1
YXJkX21hbGxvYz1UcnVlKSkKICAgICAgICAgZW52ID0gcG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9z
ZXJ2ZXIocG9ydC5kcml2ZXJfbmFtZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlbnZb
J01hbGxvY1N0YWNrTG9nZ2luZyddLCAnMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGVu
dlsnRFlMRF9JTlNFUlRfTElCUkFSSUVTJ10sICcvdXNyL2xpYi9saWJnbWFsbG9jLmR5bGliJykK
IAogICAgIGRlZiBfYXNzZXJ0X3NlYXJjaF9wYXRoKHNlbGYsIHNlYXJjaF9wYXRocywgdmVyc2lv
biwgdXNlX3dlYmtpdDI9RmFsc2UpOgotICAgICAgICAjIEZJWE1FOiBQb3J0IGNvbnN0cnVjdG9y
cyBzaG91bGQgbm90ICJwYXJzZSIgdGhlIHBvcnQgbmFtZSwgYnV0Ci0gICAgICAgICMgcmF0aGVy
IGJlIHBhc3NlZCBjb21wb25lbnRzIChkaXJlY3RseSBvciB2aWEgc2V0dGVycykuICBPbmNlCi0g
ICAgICAgICMgd2UgZml4IHRoYXQsIHRoaXMgbWV0aG9kIHdpbGwgbmVlZCBhIHJlLXdyaXRlLgot
ICAgICAgICBwb3J0ID0gTWFjUG9ydChNb2NrSG9zdCgpLCBwb3J0X25hbWU9J21hYy0lcycgJSB2
ZXJzaW9uLCBvcHRpb25zPU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj11c2Vfd2Via2l0
MikpCisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J21hYycsIG9zX3Zl
cnNpb249dmVyc2lvbiwgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9dXNl
X3dlYmtpdDIpKQogICAgICAgICBhYnNvbHV0ZV9zZWFyY2hfcGF0aHMgPSBtYXAocG9ydC5fd2Vi
a2l0X2Jhc2VsaW5lX3BhdGgsIHNlYXJjaF9wYXRocykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMocG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCgpLCBhYnNvbHV0ZV9zZWFyY2hfcGF0aHMpCiAK
QEAgLTE1Nyw3ICsxNTAsNyBAQCBqYXZhLwogICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3Bh
dGgoWydtYWMtd2syJywgJ21hYy1saW9uJywgJ21hYyddLCAnbGlvbicsIHVzZV93ZWJraXQyPVRy
dWUpCiAKICAgICBkZWYgdGVzdF9zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYpOgotICAgICAg
ICBwb3J0ID0gTWFjUG9ydChNb2NrSG9zdCgpKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3Bv
cnQoKQogICAgICAgICAjIERlbGF5IHNldHRpbmcgYSBzaG91bGRfbG9nIGV4ZWN1dGl2ZSB0byBh
dm9pZCBsb2dnaW5nIGZyb20gTWFjUG9ydC5fX2luaXRfXy4KICAgICAgICAgcG9ydC5fZXhlY3V0
aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCiAgICAgICAgIGV4cGVjdGVkX3N0
ZGVyciA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvcnVuLXNhZmFyaScsICct
LXJlbGVhc2UnLCAnLU5TT3BlbicsICd0ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0XG4i
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21v
Y2tfZHJ0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2Nr
X2RydC5weQppbmRleCBkNTM1OWRlYzc5NTBjYTYxNDdiMzFmYzQ2YzRiYjg0MWY1NDNjNWZhLi41
ZTAyNDM5ZTQ5Y2IzMWZjNmY0MjFiYjBjOTEwYzk3MWY2YTNiNmY0IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHkKQEAgLTUw
LDE0ICs1MCwxMyBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIGNsYXNz
IE1vY2tEUlRQb3J0KG9iamVjdCk6CiAgICAgIiIiTW9ja1BvcnQgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIFBvcnQgaW50ZXJmYWNlLiIiIgorICAgIHBvcnRfbmFtZSA9ICdtb2NrJwogCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGhvc3QsICoqa3dhcmdzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
aG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncyk6CiAgICAgICAgIHByZWZpeCA9ICdtb2NrLScKLSAg
ICAgICAgaWYgJ3BvcnRfbmFtZScgaW4ga3dhcmdzOgotICAgICAgICAgICAga3dhcmdzWydwb3J0
X25hbWUnXSA9IGt3YXJnc1sncG9ydF9uYW1lJ11bbGVuKHByZWZpeCk6XQotICAgICAgICBzZWxm
Ll9ob3N0ID0gaG9zdAotICAgICAgICBzZWxmLl9fZGVsZWdhdGUgPSBQb3J0RmFjdG9yeShob3N0
KS5nZXQoKiprd2FyZ3MpCisgICAgICAgIHNlbGYuX19kZWxlZ2F0ZSA9IFBvcnRGYWN0b3J5KGhv
c3QpLmdldChwb3J0X25hbWU9cG9ydF9uYW1lLnJlcGxhY2UocHJlZml4LCAnJyksICoqa3dhcmdz
KQogICAgICAgICBzZWxmLl9fcmVhbF9uYW1lID0gcHJlZml4ICsgc2VsZi5fX2RlbGVnYXRlLm5h
bWUoKQorICAgICAgICBzZWxmLl9ob3N0ID0gaG9zdAogCiAgICAgZGVmIHJlYWxfbmFtZShzZWxm
KToKICAgICAgICAgcmV0dXJuIHNlbGYuX19yZWFsX25hbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0
LnB5CmluZGV4IDI0MjVkNThkZTVlNmQzZTJkNjZhM2FlMTlmYmNhY2I4NzcyMTBiMmMuLmFhYWQ5
ZGNkNjcwNjM2ZjU1YWNiMGZjNGJiODQ0NzEzODA4NzdiY2YgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydF91bml0
dGVzdC5weQpAQCAtMzMsMzEgKzMzLDMwIEBAIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAog
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgbmV3c3RyaW5naW8KLQorZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IG1vY2tfZHJ0Citmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LmZhY3RvcnkgaW1wb3J0IFBvcnRGYWN0b3J5CiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCi1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCB0ZXN0Ci0KLWZyb20gd2Via2l0cHkuY29tbW9u
Lmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKLQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydC50ZXN0IGltcG9ydCBhZGRfdW5pdF90ZXN0c190b19tb2NrX2ZpbGVzeXN0ZW0KIGZyb20g
d2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKIG1vY2tfb3B0aW9ucyA9IG1vY2t0b29sLk1v
Y2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnKQogCiAKIGNsYXNzIE1vY2tEUlRQb3J0
VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgZGVmIG1ha2VfcG9ydChzZWxm
LCBvcHRpb25zPW1vY2tfb3B0aW9ucyk6Ci0gICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAg
ICAgIGhvc3QgPSBNb2NrU3lzdGVtSG9zdCgpCisgICAgICAgIGFkZF91bml0X3Rlc3RzX3RvX21v
Y2tfZmlsZXN5c3RlbShob3N0LmZpbGVzeXN0ZW0pCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9
PSAnd2luMzInOgogICAgICAgICAgICAgIyBXZSB1c2UgdGhpcyBiZWNhdXNlIHRoZSAnd2luJyBw
b3J0IGRvZXNuJ3Qgd29yayB5ZXQuCi0gICAgICAgICAgICByZXR1cm4gbW9ja19kcnQuTW9ja0RS
VFBvcnQoaG9zdCwgcG9ydF9uYW1lPSdtb2NrLWNocm9taXVtLXdpbicsIG9wdGlvbnM9b3B0aW9u
cykKLSAgICAgICAgcmV0dXJuIG1vY2tfZHJ0Lk1vY2tEUlRQb3J0KGhvc3QsIG9wdGlvbnM9b3B0
aW9ucykKKyAgICAgICAgICAgIHJldHVybiBtb2NrX2RydC5Nb2NrRFJUUG9ydChob3N0LCAnbW9j
ay1jaHJvbWl1bS13aW4nLCBvcHRpb25zPW9wdGlvbnMpCisgICAgICAgIHJldHVybiBtb2NrX2Ry
dC5Nb2NrRFJUUG9ydChob3N0LCAnbW9jay1tYWMnLCBvcHRpb25zPW9wdGlvbnMpCiAKICAgICBk
ZWYgdGVzdF9kZWZhdWx0X3dvcmtlcl9tb2RlbChzZWxmKToKICAgICAgICAgIyBvbmx5IG92ZXJy
aWRkaW5nIHRoZSBkZWZhdWx0IHRlc3Q7IHdlIGRvbid0IGNhcmUgYWJvdXQgdGhpcyBvbmUuCiAg
ICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X3BvcnRfbmFtZV9pbl9jb25zdHJ1Y3RvcihzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2tfZHJ0Lk1vY2tEUlRQb3J0KE1vY2tIb3N0
KCksIHBvcnRfbmFtZT0nbW9jay10ZXN0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2Nr
X2RydC5Nb2NrRFJUUG9ydChNb2NrU3lzdGVtSG9zdCgpLCBwb3J0X25hbWU9J21vY2stdGVzdCcp
KQogCiAgICAgZGVmIHRlc3RfY2hlY2tfc3lzX2RlcHMoc2VsZik6CiAgICAgICAgIHBhc3MKQEAg
LTE0MCw4ICsxMzksOSBAQCBjbGFzcyBNb2NrRFJUVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAK
ICAgICBkZWYgYXNzZXJ0VGVzdChzZWxmLCB0ZXN0X25hbWUsIHBpeGVsX3Rlc3RzLCBleHBlY3Rl
ZF9jaGVja3N1bT1Ob25lLCBkcnRfb3V0cHV0PU5vbmUsIGhvc3Q9Tm9uZSk6CiAgICAgICAgIHBv
cnRfbmFtZSA9ICd0ZXN0JwotICAgICAgICBob3N0ID0gaG9zdCBvciBNb2NrSG9zdCgpCi0gICAg
ICAgIHBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lKQorICAgICAgICBob3N0
ID0gaG9zdCBvciBNb2NrU3lzdGVtSG9zdCgpCisgICAgICAgIGFkZF91bml0X3Rlc3RzX3RvX21v
Y2tfZmlsZXN5c3RlbShob3N0LmZpbGVzeXN0ZW0pCisgICAgICAgIHBvcnQgPSBQb3J0RmFjdG9y
eShob3N0KS5nZXQocG9ydF9uYW1lKQogICAgICAgICBkcnRfaW5wdXQsIGRydF9vdXRwdXQgPSBz
ZWxmLm1ha2VfaW5wdXRfb3V0cHV0KHBvcnQsIHRlc3RfbmFtZSwKICAgICAgICAgICAgIHBpeGVs
X3Rlc3RzLCBleHBlY3RlZF9jaGVja3N1bSwgZHJ0X291dHB1dCkKIApAQCAtMTYyLDcgKzE2Miw3
IEBAIGNsYXNzIE1vY2tEUlRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJycpCiAKICAgICBkZWYgdGVzdF9tYWluKHNl
bGYpOgotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBob3N0ID0gTW9ja1N5c3Rl
bUhvc3QoKQogICAgICAgICBzdGRpbiA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkKICAgICAgICAg
c3Rkb3V0ID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQogICAgICAgICBzdGRlcnIgPSBuZXdzdHJp
bmdpby5TdHJpbmdJTygpCkBAIC0yMzUsNyArMjM1LDcgQEAgY2xhc3MgTW9ja0Nocm9taXVtRFJU
VGVzdChNb2NrRFJUVGVzdCk6CiAgICAgICAgICAgICAgICAgICAgICcjRU9GXG4nXQogCiAgICAg
ZGVmIHRlc3RfcGl4ZWx0ZXN0X19mYWlscyhzZWxmKToKLSAgICAgICAgaG9zdCA9IE1vY2tIb3N0
KCkKKyAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KCkKICAgICAgICAgc2VsZi5hc3NlcnRU
ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9jaGVja3N1bS5odG1sJywgcGl4ZWxfdGVzdHM9VHJ1ZSwK
ICAgICAgICAgICAgIGV4cGVjdGVkX2NoZWNrc3VtPSd3cm9uZy1jaGVja3N1bScsCiAgICAgICAg
ICAgICBkcnRfb3V0cHV0PVsnI1VSTDpmaWxlOi8vL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMv
ZmFpbHVyZXMvZXhwZWN0ZWQvY2hlY2tzdW0uaHRtbFxuJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQppbmRl
eCBhNGQ5M2ZmMjViNDQ5YzQ5MmY4NTg5ODM3NjA0OTkyOTFjY2FmMjFiLi4zODlmMDdlZjVlZWZl
NTZiMmYwZjM5Njk2YTFjOGRkZjNjOGYxNzk5IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CkBAIC00Niw3
ICs0Niw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IGh0dHBf
c2VydmVyX2Jhc2UKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sg
aW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0
IE1vY2tPcHRpb25zCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sg
aW1wb3J0IE1vY2tFeGVjdXRpdmUKLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBv
cnQgTW9ja0hvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sg
aW1wb3J0IE1vY2tTeXN0ZW1Ib3N0CiAKIAogY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRl
c3RDYXNlKToKQEAgLTU0LDEzICs1NCwyMiBAQCBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgIEhUVFBfUE9SVFMgPSAoODAwMCwgODA4MCwgODQ0MykKICAgICBXRUJT
T0NLRVRfUE9SVFMgPSAoODg4MCwpCiAKLSAgICAjIFN1YmNsYXNzZXMgb3ZlcnJpZGUgdGhpcyB0
byBwb2ludCB0byB0aGVpciBQb3J0IHN1YmNsYXNzLgorICAgICMgU3ViY2xhc3NlcyBvdmVycmlk
ZSB0aGVzZSB0byBwb2ludCB0byB0aGVpciBQb3J0IHN1YmNsYXNzLgogICAgIHBvcnRfbWFrZXIg
PSBOb25lCisgICAgcG9ydF9uYW1lID0gTm9uZQorCisgICAgZGVmIG1ha2VfcG9ydChzZWxmLCBo
b3N0PU5vbmUsIG9wdGlvbnM9Tm9uZSwgcG9ydF9uYW1lPU5vbmUsIG9zX25hbWU9Tm9uZSwgb3Nf
dmVyc2lvbj1Ob25lLCBleGVjdXRpdmU9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBob3N0ID0g
aG9zdCBvciBNb2NrU3lzdGVtSG9zdCgpCisgICAgICAgIGlmIGV4ZWN1dGl2ZToKKyAgICAgICAg
ICAgIGhvc3QuZXhlY3V0aXZlID0gZXhlY3V0aXZlCisgICAgICAgIGlmIG9zX25hbWU6CisgICAg
ICAgICAgICBob3N0LnBsYXRmb3JtLm9zX25hbWUgPSBvc19uYW1lCisgICAgICAgIGlmIG9zX3Zl
cnNpb246CisgICAgICAgICAgICBob3N0LnBsYXRmb3JtLm9zX3ZlcnNpb24gPSBvc192ZXJzaW9u
CiAKLSAgICBkZWYgbWFrZV9wb3J0KHNlbGYsIGhvc3Q9Tm9uZSwgb3B0aW9ucz1Ob25lLCAqKmt3
YXJncyk6Ci0gICAgICAgIGhvc3QgPSBob3N0IG9yIE1vY2tIb3N0KCkKICAgICAgICAgb3B0aW9u
cyA9IG9wdGlvbnMgb3IgTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScpCi0gICAg
ICAgIHJldHVybiBzZWxmLnBvcnRfbWFrZXIoaG9zdCwgb3B0aW9ucz1vcHRpb25zLCAqKmt3YXJn
cykKKyAgICAgICAgcG9ydF9uYW1lID0gc2VsZi5wb3J0X21ha2VyLmRldGVybWluZV9wb3J0X25h
bWUoaG9zdCwgb3B0aW9ucywgcG9ydF9uYW1lIG9yIHNlbGYucG9ydF9uYW1lKQorICAgICAgICBy
ZXR1cm4gc2VsZi5wb3J0X21ha2VyKGhvc3QsIHBvcnRfbmFtZSwgb3B0aW9ucz1vcHRpb25zLCAq
Kmt3YXJncykKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfd29ya2VyX21vZGVsKHNlbGYpOgogICAg
ICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkKaW5kZXggNWYzYjlkNzMyZDkxMDRkYmZhYjRhMzVmMTA3
ZGQ0NGNlMTNiM2M2MC4uMzVlNDE4MjFkNTYyYmI3YWQwZTlmYzFiZTE1YmE0ZDdlZTAwOGI3ZiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5CkBA
IC00OSwzMiArNDksMjAgQEAgY2xhc3MgUXRQb3J0KFdlYktpdFBvcnQpOgogICAgIGRlZiBfcG9y
dF9mbGFnX2Zvcl9zY3JpcHRzKHNlbGYpOgogICAgICAgICByZXR1cm4gIi0tcXQiCiAKLSAgICBk
ZWYgX29wZXJhdGluZ19zeXN0ZW1fZm9yX3BsYXRmb3JtKHNlbGYsIHBsYXRmb3JtKToKLSAgICAg
ICAgaWYgcGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKLSAgICAgICAgICAgIHJldHVybiAi
bGludXgiCi0gICAgICAgIGVsaWYgcGxhdGZvcm0gaW4gKCd3aW4zMicsICdjeWd3aW4nKToKLSAg
ICAgICAgICAgIHJldHVybiAid2luIgotICAgICAgICBlbGlmIHBsYXRmb3JtID09ICdkYXJ3aW4n
OgotICAgICAgICAgICAgcmV0dXJuICJtYWMiCi0gICAgICAgIHJldHVybiBOb25lCisgICAgQGNs
YXNzbWV0aG9kCisgICAgZGVmIGRldGVybWluZV9wb3J0X25hbWUoY2xzLCBob3N0LCBvcHRpb25z
LCBwb3J0X25hbWUpOgorICAgICAgICBpZiBwb3J0X25hbWUgYW5kIHBvcnRfbmFtZSAhPSBjbHMu
cG9ydF9uYW1lOgorICAgICAgICAgICAgcmV0dXJuIHBvcnRfbmFtZQorICAgICAgICByZXR1cm4g
cG9ydF9uYW1lICsgJy0nICsgaG9zdC5wbGF0Zm9ybS5vc19uYW1lCiAKICAgICAjIHN5c19wbGF0
Zm9ybSBleGlzdHMgb25seSBmb3IgdW5pdCB0ZXN0aW5nLgotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBob3N0LCBwb3J0X25hbWU9Tm9uZSwgc3lzX3BsYXRmb3JtPU5vbmUsICoqa3dhcmdzKToKLSAg
ICAgICAgcG9ydF9uYW1lID0gcG9ydF9uYW1lIG9yIHNlbGYucG9ydF9uYW1lCi0gICAgICAgIFdl
YktpdFBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lPU5vbmUsICoqa3dhcmdzKQot
ICAgICAgICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gc2VsZi5fb3BlcmF0aW5nX3N5c3RlbV9m
b3JfcGxhdGZvcm0oc3lzX3BsYXRmb3JtIG9yIHN5cy5wbGF0Zm9ybSkKLSAgICAgICAgc2VsZi5f
dmVyc2lvbiA9IHNlbGYub3BlcmF0aW5nX3N5c3RlbSgpCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpOgorICAgICAgICBXZWJLaXRQb3J0Ll9faW5pdF9f
KHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpCiAKICAgICAgICAgIyBGSVhNRTogVGhp
cyB3aWxsIGFsbG93IFdlYktpdFBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGggYW5kIFdlYktpdFBv
cnQuX3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMKICAgICAgICAgIyB0byBkbyB0aGUgcmlnaHQg
dGhpbmcsIGJ1dCBkb2Vzbid0IGluY2x1ZGUgc3VwcG9ydCBmb3IgcXQtNC44IG9yIHF0LWFybSAo
c2VlbiBpbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybSkgeWV0LgotCi0gICAgICAgIGlmIHBvcnRfbmFt
ZSAhPSBzZWxmLnBvcnRfbmFtZToKLSAgICAgICAgICAgIHNlbGYuX25hbWUgPSBwb3J0X25hbWUK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5hbWVfY29tcG9uZW50cyA9IFtzZWxmLnBvcnRf
bmFtZV0KLSAgICAgICAgICAgIGlmIHNlbGYub3BlcmF0aW5nX3N5c3RlbSgpOgotICAgICAgICAg
ICAgICAgIG5hbWVfY29tcG9uZW50cy5hcHBlbmQoc2VsZi5vcGVyYXRpbmdfc3lzdGVtKCkpCi0g
ICAgICAgICAgICBzZWxmLl9uYW1lID0gIi0iLmpvaW4obmFtZV9jb21wb25lbnRzKQorICAgICAg
ICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gcG9ydF9uYW1lLnJlcGxhY2UoJ3F0LScsICcnKQor
ICAgICAgICBzZWxmLl92ZXJzaW9uID0gc2VsZi5vcGVyYXRpbmdfc3lzdGVtKCkKIAogICAgIGRl
ZiBfZ2VuZXJhdGVfYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoc2VsZik6CiAgICAgICAgIGNvbmZp
Z3VyYXRpb25zID0gW10KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5CmluZGV4IGY0NmE0NDBjZGU4NTFmZDY0YjUxMzRl
NGVjM2NmMmYwYjRjZWUxMDUuLjAwZmNhYjZjYzc0Yzc0YmY3ZDYyZDAwMGMxNWIwMzcxY2Y5ODll
NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
cXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9xdF91bml0dGVzdC5weQpAQCAtMjgsMjUgKzI4LDIyIEBACiAKIGltcG9ydCB1bml0dGVz
dAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1v
Y2tFeGVjdXRpdmUyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sg
aW1wb3J0IE1vY2tFeGVjdXRpdmUsIE1vY2tFeGVjdXRpdmUyCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQorZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQucXQgaW1wb3J0IFF0UG9ydAogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRw
eS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwotZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiAKIAogY2xhc3MgUXRQb3J0VGVzdChw
b3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CisgICAgcG9ydF9uYW1lID0gJ3F0LW1hYycKICAg
ICBwb3J0X21ha2VyID0gUXRQb3J0CiAKLSAgICBkZWYgX2Fzc2VydF9zZWFyY2hfcGF0aChzZWxm
LCBzZWFyY2hfcGF0aHMsIHN5c19wbGF0Zm9ybSwgdXNlX3dlYmtpdDI9RmFsc2UsIHF0X3ZlcnNp
b249JzQuOCcpOgotICAgICAgICAjIEZJWE1FOiBQb3J0IGNvbnN0cnVjdG9ycyBzaG91bGQgbm90
ICJwYXJzZSIgdGhlIHBvcnQgbmFtZSwgYnV0Ci0gICAgICAgICMgcmF0aGVyIGJlIHBhc3NlZCBj
b21wb25lbnRzIChkaXJlY3RseSBvciB2aWEgc2V0dGVycykuICBPbmNlCi0gICAgICAgICMgd2Ug
Zml4IHRoYXQsIHRoaXMgbWV0aG9kIHdpbGwgbmVlZCBhIHJlLXdyaXRlLgotICAgICAgICBob3N0
ID0gTW9ja0hvc3QoKQorICAgIGRlZiBfYXNzZXJ0X3NlYXJjaF9wYXRoKHNlbGYsIHNlYXJjaF9w
YXRocywgcG9ydF9uYW1lLCB1c2Vfd2Via2l0Mj1GYWxzZSwgcXRfdmVyc2lvbj0nNC44Jyk6Cisg
ICAgICAgIGhvc3QgPSBNb2NrU3lzdGVtSG9zdCgpCiAgICAgICAgIGhvc3QuZXhlY3V0aXZlID0g
TW9ja0V4ZWN1dGl2ZTIoc2VsZi5fcXRfdmVyc2lvbihxdF92ZXJzaW9uKSkKLSAgICAgICAgcG9y
dCA9IFF0UG9ydChob3N0LCBzeXNfcGxhdGZvcm09c3lzX3BsYXRmb3JtLCBvcHRpb25zPU1vY2tP
cHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj11c2Vfd2Via2l0MiwgcGxhdGZvcm09J3F0JykpCisg
ICAgICAgIHBvcnQgPSBRdFBvcnQoaG9zdCwgcG9ydF9uYW1lLCBvcHRpb25zPU1vY2tPcHRpb25z
KHdlYmtpdF90ZXN0X3J1bm5lcj11c2Vfd2Via2l0MiwgcGxhdGZvcm09J3F0JykpCiAgICAgICAg
IGFic29sdXRlX3NlYXJjaF9wYXRocyA9IG1hcChwb3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCwg
c2VhcmNoX3BhdGhzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0LmJhc2VsaW5lX3Nl
YXJjaF9wYXRoKCksIGFic29sdXRlX3NlYXJjaF9wYXRocykKIApAQCAtNTcsMjEgKzU0LDE4IEBA
IGNsYXNzIFF0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICAg
ICAgcmV0dXJuICdRTWFrZSB2ZXJzaW9uIDIuMDFhXG5Vc2luZyBRdCB2ZXJzaW9uIDUuMC4wIGlu
IC91c3IvbG9jYWwvVHJvbGx0ZWNoL1F0LTUuMC4wL2xpYicKIAogICAgIGRlZiB0ZXN0X2Jhc2Vs
aW5lX3NlYXJjaF9wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgo
WydxdC1tYWMnLCAncXQtNC44JywgJ3F0J10sICdkYXJ3aW4nLCBxdF92ZXJzaW9uPSc0LjgnKQot
ICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWydxdC13aW4nLCAncXQtNC44JywgJ3F0
J10sICd3aW4zMicsIHF0X3ZlcnNpb249JzQuOCcpCi0gICAgICAgIHNlbGYuX2Fzc2VydF9zZWFy
Y2hfcGF0aChbJ3F0LXdpbicsICdxdC00LjgnLCAncXQnXSwgJ2N5Z3dpbicsIHF0X3ZlcnNpb249
JzQuOCcpCi0gICAgICAgIHNlbGYuX2Fzc2VydF9zZWFyY2hfcGF0aChbJ3F0LWxpbnV4JywgJ3F0
LTQuOCcsICdxdCddLCAnbGludXgyJywgcXRfdmVyc2lvbj0nNC44JykKLSAgICAgICAgc2VsZi5f
YXNzZXJ0X3NlYXJjaF9wYXRoKFsncXQtbGludXgnLCAncXQtNC44JywgJ3F0J10sICdsaW51eDMn
LCBxdF92ZXJzaW9uPSc0LjgnKQorICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWydx
dC1tYWMnLCAncXQtNC44JywgJ3F0J10sICdxdC1tYWMnLCBxdF92ZXJzaW9uPSc0LjgnKQorICAg
ICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWydxdC13aW4nLCAncXQtNC44JywgJ3F0J10s
ICdxdC13aW4nLCBxdF92ZXJzaW9uPSc0LjgnKQorICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNo
X3BhdGgoWydxdC1saW51eCcsICdxdC00LjgnLCAncXQnXSwgJ3F0LWxpbnV4JywgcXRfdmVyc2lv
bj0nNC44JykKIAotICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWydxdC1tYWMnLCAn
cXQtNC44JywgJ3F0J10sICdkYXJ3aW4nKQotICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3Bh
dGgoWydxdC13aW4nLCAncXQtNC44JywgJ3F0J10sICd3aW4zMicpCi0gICAgICAgIHNlbGYuX2Fz
c2VydF9zZWFyY2hfcGF0aChbJ3F0LXdpbicsICdxdC00LjgnLCAncXQnXSwgJ2N5Z3dpbicpCi0g
ICAgICAgIHNlbGYuX2Fzc2VydF9zZWFyY2hfcGF0aChbJ3F0LWxpbnV4JywgJ3F0LTQuOCcsICdx
dCddLCAnbGludXgyJykKLSAgICAgICAgc2VsZi5fYXNzZXJ0X3NlYXJjaF9wYXRoKFsncXQtbGlu
dXgnLCAncXQtNC44JywgJ3F0J10sICdsaW51eDMnKQorICAgICAgICBzZWxmLl9hc3NlcnRfc2Vh
cmNoX3BhdGgoWydxdC1tYWMnLCAncXQtNC44JywgJ3F0J10sICdxdC1tYWMnKQorICAgICAgICBz
ZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWydxdC13aW4nLCAncXQtNC44JywgJ3F0J10sICdxdC13
aW4nKQorICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWydxdC13aW4nLCAncXQtNC44
JywgJ3F0J10sICdxdC13aW4nKQorICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWydx
dC1saW51eCcsICdxdC00LjgnLCAncXQnXSwgJ3F0LWxpbnV4JykKIAotICAgICAgICBzZWxmLl9h
c3NlcnRfc2VhcmNoX3BhdGgoWydxdC13azInLCAncXQtbWFjJywgJ3F0LTUuMCcsICdxdCddLCAn
ZGFyd2luJywgdXNlX3dlYmtpdDI9VHJ1ZSwgcXRfdmVyc2lvbj0nNS4wJykKLSAgICAgICAgc2Vs
Zi5fYXNzZXJ0X3NlYXJjaF9wYXRoKFsncXQtd2syJywgJ3F0LXdpbicsICdxdC01LjAnLCAncXQn
XSwgJ2N5Z3dpbicsIHVzZV93ZWJraXQyPVRydWUsIHF0X3ZlcnNpb249JzUuMCcpCi0gICAgICAg
IHNlbGYuX2Fzc2VydF9zZWFyY2hfcGF0aChbJ3F0LXdrMicsICdxdC1saW51eCcsICdxdC01LjAn
LCAncXQnXSwgJ2xpbnV4MicsIHVzZV93ZWJraXQyPVRydWUsIHF0X3ZlcnNpb249JzUuMCcpCisg
ICAgICAgIHNlbGYuX2Fzc2VydF9zZWFyY2hfcGF0aChbJ3F0LXdrMicsICdxdC1tYWMnLCAncXQt
NS4wJywgJ3F0J10sICdxdC1tYWMnLCB1c2Vfd2Via2l0Mj1UcnVlLCBxdF92ZXJzaW9uPSc1LjAn
KQorICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWydxdC13azInLCAncXQtd2luJywg
J3F0LTUuMCcsICdxdCddLCAncXQtd2luJywgdXNlX3dlYmtpdDI9VHJ1ZSwgcXRfdmVyc2lvbj0n
NS4wJykKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3NlYXJjaF9wYXRoKFsncXQtd2syJywgJ3F0LWxp
bnV4JywgJ3F0LTUuMCcsICdxdCddLCAncXQtbGludXgnLCB1c2Vfd2Via2l0Mj1UcnVlLCBxdF92
ZXJzaW9uPSc1LjAnKQogCiAgICAgZGVmIHRlc3Rfc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxm
KToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKQEAgLTg1LDcgKzc5LDYgQEAgY2xh
c3MgUXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGVudlsnUVRXRUJLSVRfUExVR0lOX1BBVEgnXSwgJ01PQ0sgb3V0cHV0IG9m
IGNoaWxkIHByb2Nlc3MvbGliL3BsdWdpbnMnKQogCiAgICAgZGVmIHRlc3Rfb3BlcmF0aW5nX3N5
c3RlbShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbGludXgnLCBzZWxmLm1ha2Vf
cG9ydChzeXNfcGxhdGZvcm09J2xpbnV4Jykub3BlcmF0aW5nX3N5c3RlbSgpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdtYWMnLCBzZWxmLm1ha2VfcG9ydChzeXNfcGxhdGZvcm09J2Rhcndp
bicpLm9wZXJhdGluZ19zeXN0ZW0oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnd2luJywg
c2VsZi5tYWtlX3BvcnQoc3lzX3BsYXRmb3JtPSdjeWd3aW4nKS5vcGVyYXRpbmdfc3lzdGVtKCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3dpbicsIHNlbGYubWFrZV9wb3J0KHN5c19wbGF0
Zm9ybT0nd2luMzInKS5vcGVyYXRpbmdfc3lzdGVtKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2xpbnV4Jywgc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdxdCcsIG9zX25hbWU9J2xpbnV4
Jykub3BlcmF0aW5nX3N5c3RlbSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdtYWMnLCBz
ZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J3F0Jywgb3NfbmFtZT0nbWFjJykub3BlcmF0aW5nX3N5
c3RlbSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd3aW4nLCBzZWxmLm1ha2VfcG9ydChw
b3J0X25hbWU9J3F0Jywgb3NfbmFtZT0nd2luJykub3BlcmF0aW5nX3N5c3RlbSgpKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IGEz
Y2M0NjNmODU1YjlhNTM3N2JkZGU0MTZlYjQzOTJlMjJmMmNhMzcuLjZiYjIwNmIwNDRlN2EwM2Mw
ZDg3ZGVkNWExOTM0YzJkMWNjMjg0Y2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTMwMCw2ICszMDAsOCBAQCBXT05URklYIFNL
SVAgOiBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCA9IENSQVNICiAKIAogY2xhc3Mg
VGVzdFBvcnQoUG9ydCk6CisgICAgcG9ydF9uYW1lID0gJ3Rlc3QnCisKICAgICAiIiJUZXN0IGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBQb3J0IGludGVyZmFjZS4iIiIKICAgICBBTExfQkFTRUxJTkVf
VkFSSUFOVFMgPSAoCiAgICAgICAgICd0ZXN0LW1hYy1zbm93bGVvcGFyZCcsICd0ZXN0LW1hYy1s
ZW9wYXJkJywKQEAgLTMwNywxNiArMzA5LDIxIEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAg
ICAgICAndGVzdC1saW51eC14ODZfNjQnLAogICAgICkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBob3N0LCBwb3J0X25hbWU9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBpZiBub3QgcG9ydF9u
YW1lIG9yIHBvcnRfbmFtZSA9PSAndGVzdCc6Ci0gICAgICAgICAgICBwb3J0X25hbWUgPSAndGVz
dC1tYWMtbGVvcGFyZCcKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGV0ZXJtaW5lX3BvcnRf
bmFtZShjbHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6CisgICAgICAgIGlmIHBvcnRfbmFt
ZSA9PSAndGVzdCc6CisgICAgICAgICAgICByZXR1cm4gJ3Rlc3QtbWFjLWxlb3BhcmQnCisgICAg
ICAgIHJldHVybiBwb3J0X25hbWUKIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0
X25hbWU9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAjIEZJWE1FOiBDb25zaWRlciB1cGRhdGlu
ZyBhbGwgb2YgdGhlIGNhbGxlcnMgdG8gcGFzcyBpbiBhIHBvcnRfbmFtZSBzbyBpdCBjYW4gYmUg
YQorICAgICAgICAjIHJlcXVpcmVkIHBhcmFtZXRlciBsaWtlIGFsbCBvZiB0aGUgb3RoZXIgUG9y
dCBvYmplY3RzLgorICAgICAgICBwb3J0X25hbWUgPSBwb3J0X25hbWUgb3IgJ3Rlc3QtbWFjLWxl
b3BhcmQnCisgICAgICAgIFBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3
YXJncykKICAgICAgICAgc2VsZi5fdGVzdHMgPSB1bml0X3Rlc3RfbGlzdCgpCiAgICAgICAgIHNl
bGYuX2V4cGVjdGF0aW9uc19wYXRoID0gTEFZT1VUX1RFU1RfRElSICsgJy9wbGF0Zm9ybS90ZXN0
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcKICAgICAgICAgc2VsZi5fcmVzdWx0c19kaXJlY3Rvcnkg
PSBOb25lCiAKLSAgICAgICAgUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9cG9y
dF9uYW1lLCAqKmt3YXJncykKLQogICAgICAgICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gJ21h
YycKICAgICAgICAgaWYgcG9ydF9uYW1lLnN0YXJ0c3dpdGgoJ3Rlc3Qtd2luJyk6CiAgICAgICAg
ICAgICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gJ3dpbicKQEAgLTMzMyw3ICszNDAsNiBAQCBj
bGFzcyBUZXN0UG9ydChQb3J0KToKICAgICAgICAgfQogICAgICAgICBzZWxmLl92ZXJzaW9uID0g
dmVyc2lvbl9tYXBbcG9ydF9uYW1lXQogCi0KICAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYp
OgogICAgICAgICAjIFRoaXMgcm91dGluZSBzaG91bGRuJ3Qgbm9ybWFsbHkgYmUgY2FsbGVkLCBi
dXQgaXQgaXMgY2FsbGVkIGJ5CiAgICAgICAgICMgdGhlIG1vY2tfZHJ0IERyaXZlci4gV2UgcmV0
dXJuIHNvbWV0aGluZywgYnV0IG1ha2Ugc3VyZSBpdCdzIHVzZWxlc3MuCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IGVhYWI5
YWVmNmNhMzFhM2U5YTdkYmExMTY3MDg2ZTY5YWIyNDY3YTQuLjFmZTA0ZDQ0NzBhZTU0ODcwMGMy
NTM3NjAxOThjNmEyYjRiMjZhNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC01MCw4ICs1MCw4IEBAIF9sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCiBjbGFzcyBXZWJLaXRQb3J0KFBvcnQpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCAqKmt3YXJncyk6Ci0gICAgICAgIFBvcnQuX19pbml0
X18oc2VsZiwgaG9zdCwgKiprd2FyZ3MpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBv
cnQsICoqa3dhcmdzKToKKyAgICAgICAgUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCAq
Kmt3YXJncykKIAogICAgICAgICAjIEZJWE1FOiBEaXNhYmxlIHBpeGVsIHRlc3RzIHVudGlsIHRo
ZXkgYXJlIHJ1biBieSBkZWZhdWx0IG9uIGJ1aWxkLndlYmtpdC5vcmcuCiAgICAgICAgIHNlbGYu
c2V0X29wdGlvbl9kZWZhdWx0KCJwaXhlbF90ZXN0cyIsIEZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVz
dC5weQppbmRleCA3OGI4ZTc1MWU4ODg2YTQ4MjUwN2YxNThlYWJiYjQ3MmU0ZjVkMmU5Li42NzQy
ZjE4YWVlNjdmNzYxMDkzNmRkMTYzYzlmYjQwODQ2NTEzNDU3IDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVz
dC5weQpAQCAtMjgsNyArMjgsNyBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAog
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Citmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9z
dAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2Nr
RXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGlt
cG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNh
cHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKQEAgLTQ2LDggKzQ2LDggQEAgY2xhc3MgVGVzdFdl
YktpdFBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKICAgICAg
ICAgc2VsZi5zeW1ib2xzX3N0cmluZyA9IHN5bWJvbHNfc3RyaW5nICAjIFBhc3NpbmcgIiIgZGlz
YWJsZXMgYWxsIHN0YXRpY2x5LWRldGVjdGFibGUgZmVhdHVyZXMuCiAgICAgICAgIHNlbGYuZmVh
dHVyZV9saXN0ID0gZmVhdHVyZV9saXN0ICAjIFBhc3NpbmcgW10gZGlzYWJsZXMgYWxsIHJ1bnRp
bWUtZGV0ZWN0YWJsZSBmZWF0dXJlcy4KLSAgICAgICAgaG9zdCA9IGhvc3Qgb3IgTW9ja0hvc3Qo
KQotICAgICAgICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3Q9aG9zdCwgKiprd2FyZ3Mp
CisgICAgICAgIGhvc3QgPSBob3N0IG9yIE1vY2tTeXN0ZW1Ib3N0KCkKKyAgICAgICAgV2ViS2l0
UG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBzZWxmLnBvcnRfbmFtZSwgKiprd2FyZ3MpCiAKICAg
ICBkZWYgYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoc2VsZik6CiAgICAgICAgIHJldHVybiBbc2Vs
Zi50ZXN0X2NvbmZpZ3VyYXRpb24oKV0KQEAgLTY5LDE4ICs2OSwxOSBAQCBjbGFzcyBXZWJLaXRQ
b3J0VW5pdFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kZWZhdWx0X29w
dGlvbnMoc2VsZik6CiAgICAgICAgICMgVGhlIFdlYktpdCBwb3J0cyBvdmVycmlkZSBuZXctcnVu
LXdlYmtpdC10ZXN0IGRlZmF1bHQgb3B0aW9ucy4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRp
b25zKHBpeGVsX3Rlc3RzPU5vbmUsIHRpbWVfb3V0X21zPU5vbmUpCi0gICAgICAgIHBvcnQgPSBX
ZWJLaXRQb3J0KE1vY2tIb3N0KCksIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgcG9ydCA9IFdl
YktpdFBvcnQoTW9ja1N5c3RlbUhvc3QoKSwgJ3Rlc3R3ZWJraXRwb3J0Jywgb3B0aW9ucz1vcHRp
b25zKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9vcHRpb25zLnBpeGVsX3Rlc3Rz
LCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fb3B0aW9ucy50aW1lX291
dF9tcywgMzUwMDApCiAKICAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG9uJ3Qgb3ZlcnJpZGUgb3B0
aW9ucyBpZiBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0
aW9ucyhwaXhlbF90ZXN0cz1UcnVlLCB0aW1lX291dF9tcz02MDAwKQotICAgICAgICBwb3J0ID0g
V2ViS2l0UG9ydChNb2NrSG9zdCgpLCBvcHRpb25zPW9wdGlvbnMpCisgICAgICAgIHBvcnQgPSBX
ZWJLaXRQb3J0KE1vY2tTeXN0ZW1Ib3N0KCksICd0ZXN0d2Via2l0cG9ydCcsIG9wdGlvbnM9b3B0
aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fb3B0aW9ucy5waXhlbF90ZXN0
cywgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fb3B0aW9ucy50aW1lX291
dF9tcywgNjAwMCkKIAogCiBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRU
ZXN0Q2FzZSk6CisgICAgcG9ydF9uYW1lID0gJ3Rlc3R3ZWJraXRwb3J0JwogICAgIHBvcnRfbWFr
ZXIgPSBUZXN0V2ViS2l0UG9ydAogCiAgICAgZGVmIHRlc3RfY2hlY2tfYnVpbGQoc2VsZik6CkBA
IC0xMjUsNyArMTI2LDcgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0
VGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJlY3Rvcmllcywg
ZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCiAKICAgICBkZWYgdGVzdF9ydW50aW1lX2ZlYXR1cmVfbGlz
dChzZWxmKToKLSAgICAgICAgcG9ydCA9IFdlYktpdFBvcnQoTW9ja0hvc3QoKSkKKyAgICAgICAg
cG9ydCA9IFdlYktpdFBvcnQoTW9ja1N5c3RlbUhvc3QoKSwgJ3Rlc3R3ZWJraXRwb3J0JykKICAg
ICAgICAgcG9ydC5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kID0gbGFtYmRhIGNvbW1hbmQsIGN3ZD1O
b25lLCBlcnJvcl9oYW5kbGVyPU5vbmU6ICJOb25zZW5zZSIKICAgICAgICAgIyBydW50aW1lX2Zl
YXR1cmVzX2xpc3QgcmV0dXJucyBOb25lIHdoZW4gaXRzIHJlc3VsdHMgYXJlIG1lYW5pbmdsZXNz
IChpdCBjb3VsZG4ndCBydW4gRFJUIG9yIHBhcnNlIHRoZSBvdXRwdXQsIGV0Yy4pCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuX3J1bnRpbWVfZmVhdHVyZV9saXN0KCksIE5vbmUpCkBA
IC0xMzksNyArMTQwLDcgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0
VGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJlY3Rvcmllcywg
ZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCiAKICAgICBkZWYgdGVzdF9za2lwcGVkX2xheW91dF90ZXN0
cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0V2ViS2l0UG9ydChOb25lLCBO
b25lKS5za2lwcGVkX2xheW91dF90ZXN0cygpLCBzZXQoWydtZWRpYSddKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChUZXN0V2ViS2l0UG9ydCgpLnNraXBwZWRfbGF5b3V0X3Rlc3RzKCksIHNl
dChbJ21lZGlhJ10pKQogCiAgICAgZGVmIHRlc3Rfc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocyhz
ZWxmKToKICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKQEAgLTE1Niw3ICsxNTcsNyBA
QCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAKICAg
ICBkZWYgdGVzdF90ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGF0
IHdlIHJlYWQgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCi0gICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
CisgICAgICAgIGhvc3QgPSBNb2NrU3lzdGVtSG9zdCgpCiAgICAgICAgIGhvc3QuZmlsZXN5c3Rl
bS53cml0ZV90ZXh0X2ZpbGUoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rl
c3R3ZWJraXRwb3J0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcsCiAgICAgICAgICAgICAnQlVHX1RF
U1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IEZB
SUxcbicpCiAgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChob3N0PWhvc3QpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2luLnB5CmluZGV4IGVkNzVh
NzlkZWI5NmFhNDgwMDIwZGI1MzA2ODRlYTNkYjM5YWViYWQuLmY3YzhjYzNhMDViMzkyNjU4Mjc1
MjZhOTdjMTk2ZWFkNWY1ZDM0MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2luLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2luLnB5CkBAIC0zOCw2ICszOCw3IEBAIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQuYXBwbGUgaW1wb3J0IEFwcGxlUG9ydAogX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQogCiAKKwogY2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogICAgIHBv
cnRfbmFtZSA9ICJ3aW4iCiAKQEAgLTQ1LDM1ICs0NiwxOSBAQCBjbGFzcyBXaW5Qb3J0KEFwcGxl
UG9ydCk6CiAgICAgIyBhbmQgdGhlIG9yZGVyIG9mIGZhbGxiYWNrIGJldHdlZW4gdGhlbS4gIE1h
dGNoZXMgT1JXVC4KICAgICBWRVJTSU9OX0ZBTExCQUNLX09SREVSID0gWyJ3aW4teHAiLCAid2lu
LXZpc3RhIiwgIndpbi03c3AwIiwgIndpbiJdCiAKLSAgICBkZWYgX3ZlcnNpb25fc3RyaW5nX2Zy
b21fd2luZG93c192ZXJzaW9uX3R1cGxlKHNlbGYsIHdpbmRvd3NfdmVyc2lvbl90dXBsZSk6Ci0g
ICAgICAgIGlmIHdpbmRvd3NfdmVyc2lvbl90dXBsZVs6M10gPT0gKDYsIDEsIDc2MDApOgotICAg
ICAgICAgICAgcmV0dXJuICc3c3AwJwotICAgICAgICBpZiB3aW5kb3dzX3ZlcnNpb25fdHVwbGVb
OjJdID09ICg2LCAwKToKLSAgICAgICAgICAgIHJldHVybiAndmlzdGEnCi0gICAgICAgIGlmIHdp
bmRvd3NfdmVyc2lvbl90dXBsZVs6Ml0gPT0gKDUsIDEpOgotICAgICAgICAgICAgcmV0dXJuICd4
cCcKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBfZGV0ZWN0X3ZlcnNpb24oc2VsZiwg
b3NfdmVyc2lvbl9zdHJpbmc9Tm9uZSwgcnVuX29uX25vbl93aW5kb3dzX3BsYXRmb3Jtcz1Ob25l
KToKLSAgICAgICAgIyBGSVhNRTogb3NfdmVyc2lvbl9zdHJpbmcgaXMgZm9yIHVuaXQgdGVzdGlu
ZywgYnV0IG1heSBldmVudHVhbGx5IGJlIHByb3ZpZGVkIGJ5IGZhY3RvcnkucHkgaW5zdGVhZC4K
LSAgICAgICAgaWYgb3NfdmVyc2lvbl9zdHJpbmcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBy
ZXR1cm4gb3NfdmVyc2lvbl9zdHJpbmcKLQotICAgICAgICAjIE5vIHNlbnNlIGluIHRyeWluZyB0
byBkZXRlY3Qgb3VyIHdpbmRvd3MgdmVyc2lvbiBvbiBub24td2luZG93cyBwbGF0Zm9ybXMsIHVu
bGVzcyB3ZSdyZSB1bml0dGVzdGluZy4KLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICdjeWd3
aW4nIGFuZCBub3QgcnVuX29uX25vbl93aW5kb3dzX3BsYXRmb3JtczoKLSAgICAgICAgICAgIHJl
dHVybiBOb25lCi0KLSAgICAgICAgIyBOb3RlLCB0aGlzIGludGVudGlvbmFsbHkgcmV0dXJucyBO
b25lIHRvIG1lYW4gdGhhdCBpdCBjYW4ndCBkZXRlY3Qgd2hhdCB0aGUgY3VycmVudCB2ZXJzaW9u
IGlzLgotICAgICAgICAjIENhbGxlcnMgY2FuIHRoZW4gZGVjaWRlIHdoYXQgdmVyc2lvbiB0aGV5
IHdhbnQgdG8gcHJldGVuZCB0byBiZS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdmVyX291
dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2NtZCcsICcvYycsICd2ZXInXSkK
LSAgICAgICAgZXhjZXB0IChTY3JpcHRFcnJvciwgT1NFcnJvciksIGU6Ci0gICAgICAgICAgICB2
ZXJfb3V0cHV0ID0gIiIKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0byBkZXRlY3Qg
V2luZG93cyB2ZXJzaW9uLCBhc3N1bWluZyBsYXRlc3QuXG4lcyIgJSBlKQotICAgICAgICBtYXRj
aF9vYmplY3QgPSByZS5zZWFyY2gocicoP1A8bWFqb3I+XGQpXC4oP1A8bWlub3I+XGQpXC4oP1A8
YnVpbGQ+XGQrKScsIHZlcl9vdXRwdXQpCi0gICAgICAgIGlmIG1hdGNoX29iamVjdDoKLSAgICAg
ICAgICAgIHZlcnNpb25fdHVwbGUgPSB0dXBsZShtYXAoaW50LCBtYXRjaF9vYmplY3QuZ3JvdXBz
KCkpKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb25fc3RyaW5nX2Zyb21fd2luZG93
c192ZXJzaW9uX3R1cGxlKHZlcnNpb25fdHVwbGUpCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IGRldGVybWluZV9wb3J0X25hbWUoY2xzLCBob3N0LCBvcHRpb25zLCBwb3J0X25hbWUpOgorICAg
ICAgICBpZiBwb3J0X25hbWUuZW5kc3dpdGgoJy13azInKToKKyAgICAgICAgICAgICMgRklYTUU6
IFRoaXMgbWF5IGJlIHdyb25nLCBzaW5jZSBvcHRpb25zIGlzIGEgZ2xvYmFsIHByb3BlcnR5LCBh
bmQgdGhlIHBvcnRfbmFtZSBpcyBzcGVjaWZpYyB0byB0aGlzIG9iamVjdD8KKyAgICAgICAgICAg
IGlmIG9wdGlvbnMgYW5kIG5vdCBoYXNhdHRyKG9wdGlvbnMsICd3ZWJraXRfdGVzdF9ydW5uZXIn
KToKKyAgICAgICAgICAgICAgICBvcHRpb25zLndlYmtpdF90ZXN0X3J1bm5lciA9IFRydWUKKyAg
ICAgICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfbmFtZS5yZXBsYWNlKCctd2syJywgJycpCisgICAg
ICAgIGlmIHBvcnRfbmFtZS5lbmRzd2l0aCgnd2luJyk6CisgICAgICAgICAgICBpZiBob3N0LnBs
YXRmb3JtLm9zX25hbWUgIT0gJ3dpbic6CisgICAgICAgICAgICAgICAgcmV0dXJuICd3aW4nCisg
ICAgICAgICAgICByZXR1cm4gcG9ydF9uYW1lICsgJy0nICsgaG9zdC5wbGF0Zm9ybS5vc192ZXJz
aW9uCisgICAgICAgIHJldHVybiBwb3J0X25hbWUKKwogCiAgICAgZGVmIGNvbXBhcmVfdGV4dChz
ZWxmLCBleHBlY3RlZF90ZXh0LCBhY3R1YWxfdGV4dCk6CiAgICAgICAgICMgU2FuaXR5IHdhcyBy
ZXN0b3JlZCBpbiBXSzIsIHNvIHdlIGRvbid0IG5lZWQgdGhpcyBoYWNrIHRoZXJlLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5fdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0
dGVzdC5weQppbmRleCA5NzI0MTU5OThmNDdiNWU2OTM5YmNkZWJhNmYxNGZiODQ2N2M2OWQzLi41
NDgxNGIzMTdmNjNlMDI4ZmRlNDFlNzBlNTBhZDA2ODlmYjM0MzY2IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5w
eQpAQCAtMjYsMjQgKzI2LDIyIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1p
bXBvcnQgU3RyaW5nSU8KIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlLCBN
b2NrRXhlY3V0aXZlMgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9j
ayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBp
bXBvcnQgTW9ja0hvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21v
Y2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0
cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQorIyBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0LndpbiBpbXBvcnQgb3NfdmVyc2lvbgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydC53aW4gaW1wb3J0IFdpblBvcnQKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBv
cnQgTW9ja09wdGlvbnMKIAogCi1jbGFzcyBXaW5Qb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRU
ZXN0Q2FzZSk6Ci0gICAgcG9ydF9tYWtlciA9IFdpblBvcnQKLQotICAgIGRlZiB0ZXN0X3Nob3df
cmVzdWx0c19odG1sX2ZpbGUoc2VsZik6CisjIEZJWE1FOiBtb3ZlIHRoaXMgdG8gcGxhdGZvcm1p
bmZvX3VuaXR0ZXN0LnB5CitjbGFzcyBXaW5Pc1ZlcnNpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICBkZWYgZGlzYWJsZWRfdGVzdF9zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYpOgog
ICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBwb3J0Ll9leGVjdXRpdmUg
PSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKICAgICAgICAgY2FwdHVyZSA9IE91dHB1
dENhcHR1cmUoKQpAQCAtNTUsNDMgKzUzLDY0IEBAIGNsYXNzIFdpblBvcnRUZXN0KHBvcnRfdGVz
dGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0ZGVyci5zdGFy
dHN3aXRoKCJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvcnVuLXNhZmFyaScsICct
LXJlbGVhc2UnLCAnIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGRlcnIuZW5kc3dpdGgo
InRlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXRcbiIpKQogCi0gICAgZGVmIHRlc3RfZGV0
ZWN0X3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAg
ZGVmIGRpc2FibGVkX3Rlc3Rfb3NfdmVyc2lvbihzZWxmKToKKyAgICAgICAgb3JpZ19nZXR3aW5k
b3dzdmVyc2lvbiA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgaGFzYXR0cihz
eXMsICdnZXR3aW5kb3dzdmVyc2lvbicpOgorICAgICAgICAgICAgICAgIG9yaWdfZ2V0d2luZG93
c3ZlcnNpb24gPSBnZXRhdHRyKHN5cywgJ2dldHdpbmRvd3N2ZXJzaW9uJykKIAotICAgICAgICBk
ZWYgbW9ja19ydW5fY29tbWFuZChjbWQpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
Y21kLCBbJ2NtZCcsICcvYycsICd2ZXInXSkKLSAgICAgICAgICAgIHJldHVybiAiNi4xLjc2MDAi
CisgICAgICAgICAgICBob3N0ID0gTW9ja1N5c3RlbUhvc3QoKQogCi0gICAgICAgIHBvcnQuX2V4
ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPW1vY2tfcnVuX2NvbW1hbmQp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuX2RldGVjdF92ZXJzaW9uKHJ1bl9vbl9u
b25fd2luZG93c19wbGF0Zm9ybXM9VHJ1ZSksICc3c3AwJykKKyAgICAgICAgICAgIGRlZiBtb2Nr
X3J1bl9jb21tYW5kKGNtZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21k
LCBbJ2NtZCcsICcvYycsICd2ZXInXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gIjYuMS43NjAw
IgogCi0gICAgICAgIGRlZiBtb2NrX3J1bl9jb21tYW5kKGNtZCk6Ci0gICAgICAgICAgICByYWlz
ZSBTY3JpcHRFcnJvcignRmFpbHVyZScpCisgICAgICAgICAgICBob3N0LmV4ZWN1dGl2ZSA9IE1v
Y2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPW1vY2tfcnVuX2NvbW1hbmQpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhvc192ZXJzaW9uKGhvc3QpLCAnN3NwMCcpCisKKyAgICAgICAg
ICAgIGRlZiBtb2NrX3J1bl9jb21tYW5kKGNtZCk6CisgICAgICAgICAgICAgICAgcmFpc2UgU2Ny
aXB0RXJyb3IoJ0ZhaWx1cmUnKQorCisgICAgICAgICAgICBob3N0LmV4ZWN1dGl2ZSA9IE1vY2tF
eGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPW1vY2tfcnVuX2NvbW1hbmQpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgb3NfdmVyc2lvbiwgaG9zdCwgTm9uZSkKKyAg
ICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAnZ2V0d2luZG93c3Zl
cnNpb24nKToKKyAgICAgICAgICAgICAgICBzeXMuZ2V0d2luZG93c3ZlcnNpb24gPSBvcmlnX2dl
dHdpbmRvd3N2ZXJzaW9uCisKKworY2xhc3MgV2luUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0
VGVzdENhc2UpOgorICAgIHBvcnRfbmFtZSA9ICd3aW4tZnV0dXJlJworICAgIHBvcnRfbWFrZXIg
PSBXaW5Qb3J0CiAKLSAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVu
X2NvbW1hbmRfZm49bW9ja19ydW5fY29tbWFuZCkKLSAgICAgICAgIyBGYWlsdXJlcyBsb2cgdG8g
dGhlIHB5dGhvbiBlcnJvciBsb2csIGJ1dCB3ZSBoYXZlIG5vIGVhc3kgd2F5IHRvIGNhcHR1cmUv
dGVzdCB0aGF0LgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9kZXRlY3RfdmVyc2lv
bihydW5fb25fbm9uX3dpbmRvd3NfcGxhdGZvcm1zPVRydWUpLCBOb25lKQorICAgIGRlZiB0ZXN0
X3Nob3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZik6CisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2Vf
cG9ydChleGVjdXRpdmU9TW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpKQorICAgICAgICBj
YXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIGNhcHR1cmUuY2FwdHVyZV9vdXRwdXQo
KQorICAgICAgICBwb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUoJ3Rlc3QuaHRtbCcpCisgICAg
ICAgIF8sIHN0ZGVyciwgXyA9IGNhcHR1cmUucmVzdG9yZV9vdXRwdXQoKQorICAgICAgICAjIFdl
IGNhbid0IGtub3cgZm9yIHN1cmUgd2hhdCBwYXRoIHdpbGwgYmUgcHJvZHVjZWQgYnkgY3lncGF0
aCwgYnV0IHdlIGNhbiBhc3NlcnQgYWJvdXQKKyAgICAgICAgIyBldmVyeXRoaW5nIGVsc2UuCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGRlcnIuc3RhcnRzd2l0aCgiTU9DSyBydW5fY29tbWFu
ZDogWydUb29scy9TY3JpcHRzL3J1bi1zYWZhcmknLCAnLS1yZWxlYXNlJywgJyIpKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoc3RkZXJyLmVuZHN3aXRoKCJ0ZXN0Lmh0bWwnXSwgY3dkPS9tb2Nr
LWNoZWNrb3V0XG4iKSkKIAotICAgIGRlZiBfYXNzZXJ0X3NlYXJjaF9wYXRoKHNlbGYsIGV4cGVj
dGVkX3NlYXJjaF9wYXRocywgdmVyc2lvbiwgdXNlX3dlYmtpdDI9RmFsc2UpOgotICAgICAgICBw
b3J0ID0gV2luUG9ydChvc192ZXJzaW9uX3N0cmluZz12ZXJzaW9uLAotICAgICAgICAgICAgb3B0
aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9dXNlX3dlYmtpdDIpLAotICAgICAg
ICAgICAgaG9zdD1Nb2NrSG9zdCgpKQorICAgIGRlZiBfYXNzZXJ0X3NlYXJjaF9wYXRoKHNlbGYs
IGV4cGVjdGVkX3NlYXJjaF9wYXRocywgcG9ydF9uYW1lLCB1c2Vfd2Via2l0Mj1GYWxzZSk6Cisg
ICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9cG9ydF9uYW1lLCBvcHRpb25z
PU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj11c2Vfd2Via2l0MikpCiAgICAgICAgIGFi
c29sdXRlX3NlYXJjaF9wYXRocyA9IG1hcChwb3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCwgZXhw
ZWN0ZWRfc2VhcmNoX3BhdGhzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0LmJhc2Vs
aW5lX3NlYXJjaF9wYXRoKCksIGFic29sdXRlX3NlYXJjaF9wYXRocykKIAogICAgIGRlZiB0ZXN0
X2Jhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNo
X3BhdGgoWyd3aW4teHAnLCAnd2luLXZpc3RhJywgJ3dpbi03c3AwJywgJ3dpbicsICdtYWMtbGlv
bicsICdtYWMnXSwgJ3hwJykKLSAgICAgICAgc2VsZi5fYXNzZXJ0X3NlYXJjaF9wYXRoKFsnd2lu
LXZpc3RhJywgJ3dpbi03c3AwJywgJ3dpbicsICdtYWMtbGlvbicsICdtYWMnXSwgJ3Zpc3RhJykK
LSAgICAgICAgc2VsZi5fYXNzZXJ0X3NlYXJjaF9wYXRoKFsnd2luLTdzcDAnLCAnd2luJywgJ21h
Yy1saW9uJywgJ21hYyddLCAnN3NwMCcpCi0gICAgICAgIHNlbGYuX2Fzc2VydF9zZWFyY2hfcGF0
aChbJ3dpbicsICdtYWMtbGlvbicsICdtYWMnXSwgJ2JvZ3VzJykKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X3NlYXJjaF9wYXRoKFsnd2luLXhwJywgJ3dpbi12aXN0YScsICd3aW4tN3NwMCcsICd3aW4n
LCAnbWFjLWxpb24nLCAnbWFjJ10sICd3aW4teHAnKQorICAgICAgICBzZWxmLl9hc3NlcnRfc2Vh
cmNoX3BhdGgoWyd3aW4tdmlzdGEnLCAnd2luLTdzcDAnLCAnd2luJywgJ21hYy1saW9uJywgJ21h
YyddLCAnd2luLXZpc3RhJykKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3NlYXJjaF9wYXRoKFsnd2lu
LTdzcDAnLCAnd2luJywgJ21hYy1saW9uJywgJ21hYyddLCAnd2luLTdzcDAnKQorICAgICAgICBz
ZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWyd3aW4nLCAnbWFjLWxpb24nLCAnbWFjJ10sICd3aW4t
ZnV0dXJlJykKIAotICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWyd3aW4td2syJywg
J3dpbi14cCcsICd3aW4tdmlzdGEnLCAnd2luLTdzcDAnLCAnd2luJywgJ21hYy13azInLCAnbWFj
LWxpb24nLCAnbWFjJ10sICd4cCcsIHVzZV93ZWJraXQyPVRydWUpCi0gICAgICAgIHNlbGYuX2Fz
c2VydF9zZWFyY2hfcGF0aChbJ3dpbi13azInLCAnd2luLXZpc3RhJywgJ3dpbi03c3AwJywgJ3dp
bicsICdtYWMtd2syJywgJ21hYy1saW9uJywgJ21hYyddLCAndmlzdGEnLCB1c2Vfd2Via2l0Mj1U
cnVlKQotICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWyd3aW4td2syJywgJ3dpbi03
c3AwJywgJ3dpbicsICdtYWMtd2syJywgJ21hYy1saW9uJywgJ21hYyddLCAnN3NwMCcsIHVzZV93
ZWJraXQyPVRydWUpCi0gICAgICAgIHNlbGYuX2Fzc2VydF9zZWFyY2hfcGF0aChbJ3dpbi13azIn
LCAnd2luJywgJ21hYy13azInLCAnbWFjLWxpb24nLCAnbWFjJ10sICdib2d1cycsIHVzZV93ZWJr
aXQyPVRydWUpCisgICAgICAgIHNlbGYuX2Fzc2VydF9zZWFyY2hfcGF0aChbJ3dpbi13azInLCAn
d2luLXhwJywgJ3dpbi12aXN0YScsICd3aW4tN3NwMCcsICd3aW4nLCAnbWFjLXdrMicsICdtYWMt
bGlvbicsICdtYWMnXSwgJ3dpbi14cCcsIHVzZV93ZWJraXQyPVRydWUpCisgICAgICAgIHNlbGYu
X2Fzc2VydF9zZWFyY2hfcGF0aChbJ3dpbi13azInLCAnd2luLXZpc3RhJywgJ3dpbi03c3AwJywg
J3dpbicsICdtYWMtd2syJywgJ21hYy1saW9uJywgJ21hYyddLCAnd2luLXZpc3RhJywgdXNlX3dl
YmtpdDI9VHJ1ZSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3NlYXJjaF9wYXRoKFsnd2luLXdrMics
ICd3aW4tN3NwMCcsICd3aW4nLCAnbWFjLXdrMicsICdtYWMtbGlvbicsICdtYWMnXSwgJ3dpbi03
c3AwJywgdXNlX3dlYmtpdDI9VHJ1ZSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3NlYXJjaF9wYXRo
KFsnd2luLXdrMicsICd3aW4nLCAnbWFjLXdrMicsICdtYWMtbGlvbicsICdtYWMnXSwgJ3dpbi1m
dXR1cmUnLCB1c2Vfd2Via2l0Mj1UcnVlKQogCiAgICAgZGVmIF9hc3NlcnRfdmVyc2lvbihzZWxm
LCBwb3J0X25hbWUsIGV4cGVjdGVkX3ZlcnNpb24pOgotICAgICAgICBwb3J0ID0gV2luUG9ydChw
b3J0X25hbWU9cG9ydF9uYW1lLCBob3N0PU1vY2tIb3N0KCkpCisgICAgICAgIHBvcnQgPSBzZWxm
Lm1ha2VfcG9ydChwb3J0X25hbWU9cG9ydF9uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhwb3J0LnZlcnNpb24oKSwgZXhwZWN0ZWRfdmVyc2lvbikKIAogICAgIGRlZiB0ZXN0X3ZlcnNp
b25zKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZl
cnMvcmViYXNlbGluZXNlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2
ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIucHkKaW5kZXggMzljNWI5ZTU1MWRhMWVmMGVhOTA2ODFjNDk0
Yzk1NTU5YWM4YTM1YS4uMTViY2Q2ZjU1OTQzMWI1ZTYxNmVkNzQ2NTA0MjhmOWU2NGViMTE2YSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGlu
ZXNlcnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJh
c2VsaW5lc2VydmVyLnB5CkBAIC0xNjUsNyArMTY1LDcgQEAgZGVmIGdldF90ZXN0X2Jhc2VsaW5l
cyh0ZXN0X2ZpbGUsIHRlc3RfY29uZmlnKToKICAgICAjIEZJWE1FOiBUaGlzIHNlZW1zIGxpa2Ug
YSBoYWNrLiBUaGlzIG9ubHkgc2VlbXMgdXNlZCB0byBhY2Nlc3MgdGhlIFBvcnQuZXhwZWN0ZWRf
YmFzZWxpbmVzIGxvZ2ljLgogICAgIGNsYXNzIEFsbFBsYXRmb3Jtc1BvcnQoV2ViS2l0UG9ydCk6
CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0KToKLSAgICAgICAgICAgIFdlYktpdFBv
cnQuX19pbml0X18oc2VsZiwgaG9zdCkKKyAgICAgICAgICAgIFdlYktpdFBvcnQuX19pbml0X18o
c2VsZiwgaG9zdCwgJ21hYycpCiAgICAgICAgICAgICBzZWxmLl9wbGF0Zm9ybXNfYnlfZGlyZWN0
b3J5ID0gZGljdChbKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHApLCBwKSBmb3IgcCBpbiB0
ZXN0X2NvbmZpZy5wbGF0Zm9ybXNdKQogCiAgICAgICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0
aChzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJz
L3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5CmluZGV4IGIwMmQxZDM1Nzk1
MDYzZDEwNTliMzI0ZmViY2IyN2UzNWFkNzkyNDMuLjBiOWJjNDNhZmQ0YmU0OTQ4ODQzNmVlMTJh
MmZkNDdjNDI0NGRlNmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
ZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weQpAQCAtMzEx
LDcgKzMxMSw3IEBAIGRlZiBnZXRfdGVzdF9jb25maWcodGVzdF9maWxlcz1bXSwgcmVzdWx0X2Zp
bGVzPVtdKToKICAgICAgICAgcG9ydF9uYW1lID0gIm1hYyIKIAogICAgIHJldHVybiBUZXN0Q29u
ZmlnKAotICAgICAgICBUZXN0TWFjUG9ydChob3N0KSwKKyAgICAgICAgVGVzdE1hY1BvcnQoaG9z
dCwgJ21hYycpLAogICAgICAgICBsYXlvdXRfdGVzdHNfZGlyZWN0b3J5LAogICAgICAgICByZXN1
bHRzX2RpcmVjdG9yeSwKICAgICAgICAgKCdtYWMnLCAnbWFjLWxlb3BhcmQnLCAnd2luJywgJ2xp
bnV4JyksCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>