<?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>231032</bug_id>
          
          <creation_ts>2021-09-30 11:30:32 -0700</creation_ts>
          <short_desc>Remove most deprecated webkit-patch commands</short_desc>
          <delta_ts>2021-10-01 06:13:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>221991</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Sneddon [:gsnedders]">gsnedders</reporter>
          <assigned_to name="Sam Sneddon [:gsnedders]">gsnedders</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1798957</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-09-30 11:30:32 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798958</commentid>
    <comment_count>1</comment_count>
      <attachid>439762</attachid>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-09-30 11:38:11 -0700</bug_when>
    <thetext>Created attachment 439762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799253</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-01 06:12:51 -0700</bug_when>
    <thetext>Committed r283363 (242372@main): &lt;https://commits.webkit.org/242372@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439762.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799254</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-01 06:13:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/83763174&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439762</attachid>
            <date>2021-09-30 11:38:11 -0700</date>
            <delta_ts>2021-10-01 06:12:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231032-20210930193810.patch</filename>
            <type>text/plain</type>
            <size>184898</size>
            <attacher name="Sam Sneddon [:gsnedders]">gsnedders</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzA3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDBiZDI5OGU5ODkxODg3NzExNDgzYzk1Nzg0MGZmMDY0
ZWU3YzdjYS4uYzg0NTJkMjgwNzUxZjJmOTZiMzJjNWJhYzczNmU1NzUzMTZlNDAwNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
MSBAQAorMjAyMS0wOS0zMCAgU2FtIFNuZWRkb24gIDxnc25lZGRlcnNAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbW92ZSBtb3N0IGRlcHJlY2F0ZWQgd2Via2l0LXBhdGNoIGNvbW1hbmRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHJlbW92ZXMg
YWxsIGN1cnJlbnRseSBkZXByZWNhdGVkIGNvbW1hbmRzIGV4Y2VwdCBmb3IKKyAgICAgICAgcmVi
YXNlbGluZS1zZXJ2ZXIgKHRvIGJlIGRlY2lkZWQgYWJvdXQpIGFuZCBsYW5kLWNvd2hhbmQgKHNl
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3OTgw
KS4KKworICAgICAgICBUaGlzIHVuZG91YnRlZGx5IGxlYXZlcyBkZWFkIGNvZGUgZWxzZXdoZXJl
IGluIHdlYmtpdHB5LCBidXQgdGlkeWluZyB0aGF0IGlzIGEgdGFzayBmb3IgdGhlCisgICAgICAg
IGZ1dHVyZSAoZHVlIHRvIGR5bmFtaWMgdHlwaW5nLCBkZXRlcm1pbmluZyB3aGF0IGlzIG9yIGlz
IG5vdCBkZWFkIGlzIG5vbi10cml2aWFsKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9ib3QvcmV0cnlsb2dpY191bml0dGVzdC5weToKKyAgICAgICAgKE1vY2tKU0NFYXJseVdh
cm5pbmdTeXN0ZW0pOgorICAgICAgICBSZXdyaXRlIHRvIGRpcmVjdGx5IGJlIGEgRWFybHlXYXJu
aW5nU3lzdGVtVGFza0RlbGVnYXRlIHN1YmNsYXNzLgorICAgICAgICAoTW9ja0pTQ0Vhcmx5V2Fy
bmluZ1N5c3RlbS5fX2luaXRfXyk6CisgICAgICAgIChNb2NrSlNDRWFybHlXYXJuaW5nU3lzdGVt
Lmdyb3VwKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0
X18ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2FkZHVzZXJz
dG9ncm91cHMucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL2FuYWx5emVjaGFuZ2Vsb2cucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2FuYWx5emVjaGFuZ2Vsb2dfdW5pdHRlc3QucHk6IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2FwcGx5d2F0Y2hs
aXN0bG9jYWwucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2J1
Z2ZvcnRlc3QucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL2J1Z3NlYXJjaC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHk6CisgICAgICAgIChVcGRhdGUpOiBEZWxldGVkLgor
ICAgICAgICAoQnVpbGQpOiBEZWxldGVkLgorICAgICAgICAoQnVpbGQuX3ByZXBhcmVfc3RhdGUp
OiBEZWxldGVkLgorICAgICAgICAoQ2hlY2tQYXRjaFJlbGV2YW5jZSk6IERlbGV0ZWQuCisgICAg
ICAgIChMYW5kQ293Ym95KTogRGVsZXRlZC4KKyAgICAgICAgKExhbmRDb3dib3kuX3ByZXBhcmVf
c3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoQnVpbGRBdHRhY2htZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKEFwcGx5V2F0Y2hMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKExhbmRGcm9tVVJMKTog
RGVsZXRlZC4KKyAgICAgICAgKFByZXBhcmVSb2xsb3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFBy
ZXBhcmVSb2xsb3V0Ll9wcmVwYXJlX3N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKENyZWF0ZVJv
bGxvdXQpOiBEZWxldGVkLgorICAgICAgICAoQ3JlYXRlUm9sbG91dC5fcHJlcGFyZV9zdGF0ZSk6
IERlbGV0ZWQuCisgICAgICAgIChSb2xsb3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFJvbGxvdXQu
X3ByZXBhcmVfc3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weToKKyAgICAgICAgKERvd25sb2FkQ29tbWFu
ZHNUZXN0LnRlc3RfYnVpbGQpOiBEZWxldGVkLgorICAgICAgICAoRG93bmxvYWRDb21tYW5kc1Rl
c3QudGVzdF9hcHBseV93YXRjaF9saXN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RfbGFuZCk6
IERlbGV0ZWQuCisgICAgICAgICh0ZXN0X2J1aWxkX2F0dGFjaG1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAodGVzdF9sYW5kX2Zyb21fdXJsKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RfcHJlcGFy
ZV9yZXZlcnQpOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weTogUmVt
b3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZmluZHVzZXJz
LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9n
YXJkZW5vbWF0aWMucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL29wZW5idWdzLnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9vcGVuYnVnc191bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllcy5weToKKyAgICAgICAgKEJ1
Z3NUb0NvbW1pdCk6IERlbGV0ZWQuCisgICAgICAgIChCdWdzVG9Db21taXQuZXhlY3V0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChQYXRjaGVzSW5Db21taXRRdWV1ZSk6IERlbGV0ZWQuCisgICAgICAg
IChQYXRjaGVzSW5Db21taXRRdWV1ZS5leGVjdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFBhdGNo
ZXNUb0NvbW1pdFF1ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFBhdGNoZXNUb0NvbW1pdFF1ZXVl
Ll9faW5pdF9fKTogRGVsZXRlZC4KKyAgICAgICAgKFBhdGNoZXNUb0NvbW1pdFF1ZXVlLl9uZWVk
c19jb21taXRfcXVldWUpOiBEZWxldGVkLgorICAgICAgICAoUGF0Y2hlc1RvQ29tbWl0UXVldWUu
ZXhlY3V0ZSk6IERlbGV0ZWQuCisgICAgICAgIChQYXRjaGVzVG9SZXZpZXcpOiBEZWxldGVkLgor
ICAgICAgICAoUGF0Y2hlc1RvUmV2aWV3Ll9faW5pdF9fKTogRGVsZXRlZC4KKyAgICAgICAgKFBh
dGNoZXNUb1Jldmlldy5fcHJpbnRfcmVwb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFBhdGNoZXNU
b1Jldmlldy5fZ2VuZXJhdGVfcmVwb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFBhdGNoZXNUb1Jl
dmlldy5leGVjdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdoYXRCcm9rZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXaGF0QnJva2UuX3ByaW50X2J1aWxkZXJfbGluZSk6IERlbGV0ZWQuCisgICAgICAg
IChXaGF0QnJva2UuX3ByaW50X2JsYW1lX2luZm9ybWF0aW9uX2Zvcl9idWlsZGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdoYXRCcm9rZS5leGVjdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFJlc3Vs
dHNGb3IpOiBEZWxldGVkLgorICAgICAgICAoUmVzdWx0c0Zvci5fcHJpbnRfbGF5b3V0X3Rlc3Rf
cmVzdWx0cyk6IERlbGV0ZWQuCisgICAgICAgIChSZXN1bHRzRm9yLmV4ZWN1dGUpOiBEZWxldGVk
LgorICAgICAgICAoRmFpbHVyZVJlYXNvbik6IERlbGV0ZWQuCisgICAgICAgIChGYWlsdXJlUmVh
c29uLl9ibGFtZV9saW5lX2Zvcl9yZXZpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChGYWlsdXJl
UmVhc29uLl9wcmludF9ibGFtZV9pbmZvcm1hdGlvbl9mb3JfdHJhbnNpdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChGYWlsdXJlUmVhc29uLl9leHBsYWluX2ZhaWx1cmVzX2Zvcl9idWlsZGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKEZhaWx1cmVSZWFzb24uX2J1aWxkZXJfdG9fZXhwbGFpbik6IERl
bGV0ZWQuCisgICAgICAgIChGYWlsdXJlUmVhc29uLl9kb25lX2V4cGxhaW5pbmcpOiBEZWxldGVk
LgorICAgICAgICAoRmFpbHVyZVJlYXNvbi5leGVjdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEZp
bmRGbGFreVRlc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKEZpbmRGbGFreVRlc3RzLl9maW5kX2Zh
aWx1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKEZpbmRGbGFreVRlc3RzLl9pbmNyZW1lbnRfc3Rh
dGlzdGljcyk6IERlbGV0ZWQuCisgICAgICAgIChGaW5kRmxha3lUZXN0cy5fcHJpbnRfc3RhdGlz
dGljcyk6IERlbGV0ZWQuCisgICAgICAgIChGaW5kRmxha3lUZXN0cy5fd2Fsa19iYWNrd2FyZHNf
ZnJvbSk6IERlbGV0ZWQuCisgICAgICAgIChGaW5kRmxha3lUZXN0cy5fYnVpbGRlcl90b19hbmFs
eXplKTogRGVsZXRlZC4KKyAgICAgICAgKEZpbmRGbGFreVRlc3RzLmV4ZWN1dGUpOiBEZWxldGVk
LgorICAgICAgICAoVHJlZVN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChleGVjdXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKENyYXNoTG9nKTogRGVsZXRlZC4KKyAgICAgICAgKFByaW50RXhwZWN0
YXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFByaW50RXhwZWN0YXRpb25zLl9faW5pdF9fKTog
RGVsZXRlZC4KKyAgICAgICAgKFByaW50RXhwZWN0YXRpb25zLmV4ZWN1dGUpOiBEZWxldGVkLgor
ICAgICAgICAoUHJpbnRFeHBlY3RhdGlvbnMuX2ZpbHRlcl90ZXN0cyk6IERlbGV0ZWQuCisgICAg
ICAgIChQcmludEV4cGVjdGF0aW9ucy5fZm9ybWF0X2xpbmVzKTogRGVsZXRlZC4KKyAgICAgICAg
KFByaW50RXhwZWN0YXRpb25zLl9tb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChQcmludEJhc2Vs
aW5lcyk6IERlbGV0ZWQuCisgICAgICAgIChQcmludEJhc2VsaW5lcy5fX2luaXRfXyk6IERlbGV0
ZWQuCisgICAgICAgIChQcmludEJhc2VsaW5lcy5leGVjdXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFByaW50QmFzZWxpbmVzLl9wcmludF9iYXNlbGluZXMpOiBEZWxldGVkLgorICAgICAgICAoUHJp
bnRCYXNlbGluZXMuX3BsYXRmb3JtX2Zvcl9wYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKEZpbmRS
ZXNvbHZlZEJ1Z3MpOiBEZWxldGVkLgorICAgICAgICAoRmluZFJlc29sdmVkQnVncy5leGVjdXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVl
cmllc191bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcmViYXNlbGluZS5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5OgorICAgICAg
ICAoQ29tbWl0TWVzc2FnZUZvckN1cnJlbnREaWZmKTogRGVsZXRlZC4KKyAgICAgICAgKENvbW1p
dE1lc3NhZ2VGb3JDdXJyZW50RGlmZi5fX2luaXRfXyk6IERlbGV0ZWQuCisgICAgICAgIChDb21t
aXRNZXNzYWdlRm9yQ3VycmVudERpZmYuZXhlY3V0ZSk6IERlbGV0ZWQuCisgICAgICAgIChDbGVh
blBlbmRpbmdDb21taXQpOiBEZWxldGVkLgorICAgICAgICAoQ2xlYW5QZW5kaW5nQ29tbWl0Ll9m
bGFnc190b19jbGVhcl9vbl9wYXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChDbGVhblBlbmRpbmdD
b21taXQuZXhlY3V0ZSk6IERlbGV0ZWQuCisgICAgICAgIChDbGVhblJldmlld1F1ZXVlKTogRGVs
ZXRlZC4KKyAgICAgICAgKENsZWFuUmV2aWV3UXVldWUuZXhlY3V0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChBc3NpZ25Ub0NvbW1pdHRlcik6IERlbGV0ZWQuCisgICAgICAgIChBc3NpZ25Ub0NvbW1p
dHRlci5fcGF0Y2hlc19oYXZlX2NvbW1pdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChBc3NpZ25U
b0NvbW1pdHRlci5fYXNzaWduX2J1Z190b19sYXN0X3BhdGNoX2F0dGFjaGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKEFzc2lnblRvQ29tbWl0dGVyLmV4ZWN1dGUpOiBEZWxldGVkLgorICAgICAgICAo
T2Jzb2xldGVBdHRhY2htZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChPYnNvbGV0ZUF0dGFjaG1l
bnRzLl9wcmVwYXJlX3N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEF0dGFjaFRvQnVnKTogRGVs
ZXRlZC4KKyAgICAgICAgKEF0dGFjaFRvQnVnLl9wcmVwYXJlX3N0YXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEhhc0xhbmRlZCk6IERlbGV0ZWQuCisgICAgICAgIChQb3N0Q29tbWl0cyk6IERlbGV0
ZWQuCisgICAgICAgIChQb3N0Q29tbWl0cy5fX2luaXRfXyk6IERlbGV0ZWQuCisgICAgICAgIChQ
b3N0Q29tbWl0cy5fY29tbWVudF90ZXh0X2Zvcl9jb21taXQpOiBEZWxldGVkLgorICAgICAgICAo
UG9zdENvbW1pdHMuZXhlY3V0ZSk6IERlbGV0ZWQuCisgICAgICAgIChDcmVhdGVCdWcpOiBEZWxl
dGVkLgorICAgICAgICAoQ3JlYXRlQnVnLl9faW5pdF9fKTogRGVsZXRlZC4KKyAgICAgICAgKENy
ZWF0ZUJ1Zy5jcmVhdGVfYnVnX2Zyb21fY29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAgKENyZWF0
ZUJ1Zy5jcmVhdGVfYnVnX2Zyb21fcGF0Y2gpOiBEZWxldGVkLgorICAgICAgICAoQ3JlYXRlQnVn
LnByb21wdF9mb3JfYnVnX3RpdGxlX2FuZF9jb21tZW50KTogRGVsZXRlZC4KKyAgICAgICAgKENy
ZWF0ZUJ1Zy5leGVjdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydCk6IERl
bGV0ZWQuCisgICAgICAgIChXUFRDaGFuZ2VFeHBvcnQuX3ByZXBhcmVfc3RhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWRfdW5pdHRl
c3QucHk6CisgICAgICAgIChVcGxvYWRDb21tYW5kc1Rlc3QudGVzdF9jb21taXRfbWVzc2FnZV9m
b3JfY3VycmVudF9kaWZmKTogRGVsZXRlZC4KKyAgICAgICAgKFVwbG9hZENvbW1hbmRzVGVzdC50
ZXN0X2NsZWFuX3BlbmRpbmdfY29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAgKFVwbG9hZENvbW1h
bmRzVGVzdC50ZXN0X2Fzc2lnbl90b19jb21taXR0ZXIpOiBEZWxldGVkLgorICAgICAgICAodGVz
dF9vYnNvbGV0ZV9hdHRhY2htZW50cyk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0X3Bvc3QpOiBE
ZWxldGVkLgorICAgICAgICAodGVzdF9hdHRhY2hfdG9fYnVnKTogRGVsZXRlZC4KKyAgICAgICAg
KHRlc3RfYXR0YWNoX3RvX2J1Z19ub19kZXNjcmlwdGlvbl9vcl9jb21tZW50KTogRGVsZXRlZC4K
KwogMjAyMS0wOS0yOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFRlcm1pbmF0ZSBQQ00gZGFlbW9uIGJlZm9yZSBhbmQgYWZ0ZXIgdW5pdCB0
ZXN0IHRoYXQgdXNlcyBpdApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9yZXRyeWxvZ2ljX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9yZXRyeWxvZ2ljX3VuaXR0ZXN0LnB5CmluZGV4IDVlNmU1Yzk2NmExNTgxNDdmYzFjYTI1
NDJkNzk4NGE4NTRhYTJlMWMuLmQwMzFkY2Y0OTM0ZDQ3ZDkxOTczYjNkOTcyYmVlOTZiNjZkNmIw
M2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcmV0cnlsb2dp
Y191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3JldHJ5
bG9naWNfdW5pdHRlc3QucHkKQEAgLTI0LDcgKzI0LDcgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9y
dCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LnBhdGNoYW5hbHlzaXN0YXNrIGlt
cG9ydCAqCi1mcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuZWFybHl3YXJuaW5nc3lzdGVtIGlt
cG9ydCBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbQorZnJvbSB3ZWJraXRweS50b29sLmJvdC5l
YXJseXdhcm5pbmdzeXN0ZW10YXNrIGltcG9ydCBFYXJseVdhcm5pbmdTeXN0ZW1UYXNrRGVsZWdh
dGUKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wKIAogX2xvZyA9
IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNjIsMTIgKzYyLDE1IEBAIGNsYXNzIE1v
Y2tQYXRjaEFuYWx5c2lzVGFzayhQYXRjaEFuYWx5c2lzVGFzayk6CiAKIAogIyBUaGlzIGlzIHRo
ZSBkZWxlZ2F0ZSB0byBiZSB1c2VkIHdpdGggTW9ja1BhdGNoQW5hbHlzaXNUYXNrLCBhYm92ZS4K
LWNsYXNzIE1vY2tKU0NFYXJseVdhcm5pbmdTeXN0ZW0oQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0
ZW0pOgorY2xhc3MgTW9ja0pTQ0Vhcmx5V2FybmluZ1N5c3RlbShFYXJseVdhcm5pbmdTeXN0ZW1U
YXNrRGVsZWdhdGUpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaXJzdF90ZXN0X3Jlc3VsdHMs
IHNlY29uZF90ZXN0X3Jlc3VsdHMsIGNsZWFuX3Rlc3RfcmVzdWx0cyk6Ci0gICAgICAgIEFic3Ry
YWN0RWFybHlXYXJuaW5nU3lzdGVtLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHN1cGVyKE1vY2tK
U0NFYXJseVdhcm5pbmdTeXN0ZW0sIHNlbGYpLl9faW5pdF9fKCkKICAgICAgICAgc2VsZi5fZ3Jv
dXAgPSAnanNjJwogICAgICAgICBzZWxmLl9yZXN1bHRzX2luX29yZGVyID0gW2NsZWFuX3Rlc3Rf
cmVzdWx0cywgc2Vjb25kX3Rlc3RfcmVzdWx0cywgZmlyc3RfdGVzdF9yZXN1bHRzXQogCisgICAg
ZGVmIGdyb3VwKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZ3JvdXAKKwogICAgIGRlZiB0
ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHRzX2luX29yZGVy
LnBvcCgpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2lu
aXRfXy5weQppbmRleCA5MWZiMmI5MGY0MmU2ZTg0Nzk5ZDJjY2MxNTZjZGYyZmRlYTBjYTVmLi5m
OWEyMGQzZTU4NTYyY2IwYzMyOTc4MDY0NjJlYzM5ZTNmMTc1ZmEwIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19faW5pdF9fLnB5CkBAIC0xLDIyICsxLDEx
IEBACiAjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBt
b2R1bGUgZmlsZXMKIAotZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmFkZHVzZXJzdG9ncm91
cHMgaW1wb3J0IEFkZFVzZXJzVG9Hcm91cHMKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5h
bmFseXplY2hhbmdlbG9nIGltcG9ydCBBbmFseXplQ2hhbmdlTG9nCiBmcm9tIHdlYmtpdHB5LnRv
b2wuY29tbWFuZHMuYXBwbHl3YXRjaGxpc3Rsb2NhbCBpbXBvcnQgQXBwbHlXYXRjaExpc3RMb2Nh
bAotZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmJ1Z2ZvcnRlc3QgaW1wb3J0IEJ1Z0ZvclRl
c3QKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5idWdzZWFyY2ggaW1wb3J0IEJ1Z1NlYXJj
aAogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmRvd25sb2FkIGltcG9ydCAqCi1mcm9tIHdl
YmtpdHB5LnRvb2wuY29tbWFuZHMuZWFybHl3YXJuaW5nc3lzdGVtIGltcG9ydCBBYnN0cmFjdEVh
cmx5V2FybmluZ1N5c3RlbQotZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmZpbmR1c2VycyBp
bXBvcnQgRmluZFVzZXJzCi1mcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuZ2FyZGVub21hdGlj
IGltcG9ydCBHYXJkZW5PTWF0aWMKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5vcGVuYnVn
cyBpbXBvcnQgT3BlbkJ1Z3MKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5wcmV0dHlkaWZm
IGltcG9ydCBQcmV0dHlEaWZmCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucXVlcmllcyBp
bXBvcnQgKgogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXVlcyBpbXBvcnQgKgotZnJv
bSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnJlYmFzZWxpbmUgaW1wb3J0IFJlYmFzZWxpbmUKIGZy
b20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5yZWJhc2VsaW5lc2VydmVyIGltcG9ydCBSZWJhc2Vs
aW5lU2VydmVyCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc2V0dXBnaXRjbG9uZSBpbXBv
cnQgU2V0dXBHaXRDbG9uZQogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnVwbG9hZCBpbXBv
cnQgKgogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnN1Z2dlc3Rub21pbmF0aW9ucyBpbXBv
cnQgKgotCi1jbGFzc2VzID0gQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0ubG9hZF9ld3NfY2xh
c3NlcygpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
YWRkdXNlcnN0b2dyb3Vwcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9hZGR1c2Vyc3RvZ3JvdXBzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWFh
ZjE0YTQxN2RhNTMwNTVmZjhkY2VlYmY4Mjc2YmYwOGJjOGFlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9hZGR1c2Vyc3RvZ3JvdXBzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBA
QAotIyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5kZXByZWNh
dGVkY29tbWFuZCBpbXBvcnQgRGVwcmVjYXRlZENvbW1hbmQKLWZyb20gd2Via2l0cHkudG9vbC5t
dWx0aWNvbW1hbmR0b29sIGltcG9ydCBDb21tYW5kCi0KLQotQERlcHJlY2F0ZWRDb21tYW5kCi1j
bGFzcyBBZGRVc2Vyc1RvR3JvdXBzKENvbW1hbmQpOgotICAgIG5hbWUgPSAiYWRkLXVzZXJzLXRv
LWdyb3VwcyIKLSAgICBoZWxwX3RleHQgPSAiQWRkIHVzZXJzIG1hdGNoaW5nIHN1YnRyaW5nIHRv
IHNwZWNpZmllZCBncm91cHMiCi0KLSAgICAjIFRoaXMgcHJvYmFibHkgYmVsb25ncyBpbiBidWd6
aWxsYS5weQotICAgIGtub3duX2dyb3VwcyA9IFsnY2FuY29uZmlybScsICdlZGl0YnVncyddCi0K
LSAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgc2Vh
cmNoX3N0cmluZyA9IGFyZ3NbMF0KLSAgICAgICAgIyBGSVhNRTogV2UgY291bGQgYWxsb3cgdXNl
cnMgdG8gc3BlY2lmeSBncm91cHMgb24gdGhlIGNvbW1hbmQgbGluZS4KLSAgICAgICAgbGlzdF90
aXRsZSA9ICdBZGQgdXNlcnMgbWF0Y2hpbmcgIiVzIiB3aGljaCBncm91cHM/JyAlIHNlYXJjaF9z
dHJpbmcKLSAgICAgICAgIyBGSVhNRTogTmVlZCBhIHdheSB0byBzcGVjaWZ5IHRoYXQgIm5vbmUi
IGlzIG5vdCBhbGxvd2VkLgotICAgICAgICAjIEZJWE1FOiBXZSBjb3VsZCBsb29rdXAgd2hhdCBn
cm91cHMgdGhlIGN1cnJlbnQgdXNlciBpcyBhYmxlIHRvIGdyYW50IGZyb20gYnVnemlsbGEuCi0g
ICAgICAgIGdyb3VwcyA9IHRvb2wudXNlci5wcm9tcHRfd2l0aF9saXN0KGxpc3RfdGl0bGUsIHNl
bGYua25vd25fZ3JvdXBzLCBjYW5fY2hvb3NlX211bHRpcGxlPVRydWUpCi0gICAgICAgIGlmIG5v
dCBncm91cHM6Ci0gICAgICAgICAgICBwcmludCgiTm8gZ3JvdXBzIHNwZWNpZmllZC4iKQotICAg
ICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgbG9naW5fdXNlcmlkX3BhaXJzID0gdG9vbC5idWdz
LnF1ZXJpZXMuZmV0Y2hfbG9naW5fdXNlcmlkX3BhaXJzX21hdGNoaW5nX3N1YnN0cmluZyhzZWFy
Y2hfc3RyaW5nKQotICAgICAgICBpZiBub3QgbG9naW5fdXNlcmlkX3BhaXJzOgotICAgICAgICAg
ICAgcHJpbnQoIk5vIHVzZXJzIGZvdW5kIG1hdGNoaW5nICclcyciICUgc2VhcmNoX3N0cmluZykK
LSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHByaW50KCJGb3VuZCAlcyB1c2VycyBtYXRj
aGluZyAlczoiICUgKGxlbihsb2dpbl91c2VyaWRfcGFpcnMpLCBzZWFyY2hfc3RyaW5nKSkKLSAg
ICAgICAgZm9yIChsb2dpbiwgdXNlcl9pZCkgaW4gbG9naW5fdXNlcmlkX3BhaXJzOgotICAgICAg
ICAgICAgcHJpbnQoIiVzICglcykiICUgKGxvZ2luLCB1c2VyX2lkKSkKLQotICAgICAgICBjb25m
aXJtX21lc3NhZ2UgPSAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IGFkZCAlcyB1c2VycyB0byBncm91
cHMgJXM/ICAoVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSB1c2luZyB3ZWJraXQtcGF0Y2gu
KSIgJSAobGVuKGxvZ2luX3VzZXJpZF9wYWlycyksIGdyb3VwcykKLSAgICAgICAgaWYgbm90IHRv
b2wudXNlci5jb25maXJtKGNvbmZpcm1fbWVzc2FnZSk6Ci0gICAgICAgICAgICByZXR1cm4KLQot
ICAgICAgICBmb3IgKGxvZ2luLCB1c2VyX2lkKSBpbiBsb2dpbl91c2VyaWRfcGFpcnM6Ci0gICAg
ICAgICAgICBwcmludCgiQWRkaW5nICVzIHRvICVzIiAlIChsb2dpbiwgZ3JvdXBzKSkKLSAgICAg
ICAgICAgIHRvb2wuYnVncy5hZGRfdXNlcl90b19ncm91cHModXNlcl9pZCwgZ3JvdXBzKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2FuYWx5emVjaGFu
Z2Vsb2cucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYW5hbHl6ZWNo
YW5nZWxvZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUyNTI5Y2UwMmYxMzJk
NmVkNmQwNjM0ZjE4N2E2NDk3Njg1ZjYxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYW5h
bHl6ZWNoYW5nZWxvZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi0jIENvcHly
aWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotaW1wb3J0
IGpzb24KLWltcG9ydCByZQotaW1wb3J0IHRpbWUKLQotZnJvbSB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2cKLWZyb20gd2Via2l0cHkuY29tbW9uLmNo
ZWNrb3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0IFNDTURldGVjdG9yCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5jb25maWcuY29udHJpYnV0aW9uYXJlYXMgaW1wb3J0IENvbnRyaWJ1dGlvbkFyZWFzCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQot
ZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBzdGVwcwotZnJvbSB3ZWJraXRweS50b29sLmNvbW1h
bmRzLmRlcHJlY2F0ZWRjb21tYW5kIGltcG9ydCBEZXByZWNhdGVkQ29tbWFuZAotZnJvbSB3ZWJr
aXRweS50b29sLm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IENvbW1hbmQKLQotCi1ARGVwcmVjYXRl
ZENvbW1hbmQKLWNsYXNzIEFuYWx5emVDaGFuZ2VMb2coQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICJh
bmFseXplLWNoYW5nZWxvZyIKLSAgICBoZWxwX3RleHQgPSAiRXhwZXJpbWVudGFsIGNvbW1hbmQg
Zm9yIGFuYWx5emluZyBjaGFuZ2UgbG9ncy4iCi0gICAgbG9uZ19oZWxwID0gIlRoaXMgY29tbWFu
ZCBwYXJzZXMgY2hhbmdlbG9ncyBpbiBhIHNwZWNpZmllZCBkaXJlY3RvcnkgYW5kIHN1bW1hcml6
ZXMgdGhlIHJlc3VsdCBhcyBKU09OIGZpbGVzLiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
LSAgICAgICAgb3B0aW9ucyA9IFsKLSAgICAgICAgICAgIHN0ZXBzLk9wdGlvbnMuY2hhbmdlbG9n
X2NvdW50LAotICAgICAgICBdCi0gICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgb3B0aW9u
cz1vcHRpb25zKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfZW51bWVyYXRlX2NoYW5n
ZWxvZ3MoZmlsZXN5c3RlbSwgZGlybmFtZSwgY2hhbmdlbG9nX2NvdW50KToKLSAgICAgICAgY2hh
bmdlbG9ncyA9IFtmaWxlc3lzdGVtLmpvaW4oZGlybmFtZSwgZmlsZW5hbWUpIGZvciBmaWxlbmFt
ZSBpbiBmaWxlc3lzdGVtLmxpc3RkaXIoZGlybmFtZSkgaWYgcmUubWF0Y2gocideQ2hhbmdlTG9n
KC0oXGR7NH0tXGR7Mn0tXGR7Mn0pKT8kJywgZmlsZW5hbWUpXQotICAgICAgICAjIE1ha2Ugc3Vy
ZSBDaGFuZ2VMb2cgc2hvd3MgdXAgYmVmb3JlIENoYW5nZUxvZy0yMDExLTAxLTAxCi0gICAgICAg
IGNoYW5nZWxvZ3MgPSBzb3J0ZWQoY2hhbmdlbG9ncywga2V5PWxhbWJkYSBmaWxlbmFtZTogZmls
ZW5hbWUgKyAnWCcsIHJldmVyc2U9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGNoYW5nZWxvZ3NbOmNo
YW5nZWxvZ19jb3VudF0KLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX2dlbmVyYXRlX2pz
b25zKGZpbGVzeXN0ZW0sIGpzb25zLCBvdXRwdXRfZGlyKToKLSAgICAgICAgZm9yIGZpbGVuYW1l
IGluIGpzb25zOgotICAgICAgICAgICAgcHJpbnQoJyAgICBHZW5lcmF0aW5nJywgZmlsZW5hbWUp
Ci0gICAgICAgICAgICBmaWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShmaWxlc3lzdGVtLmpvaW4o
b3V0cHV0X2RpciwgZmlsZW5hbWUpLCBqc29uLmR1bXBzKGpzb25zW2ZpbGVuYW1lXSwgaW5kZW50
PTIpKQotCi0gICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAg
ICAgIGZpbGVzeXN0ZW0gPSBzZWxmLl90b29sLmZpbGVzeXN0ZW0KLSAgICAgICAgaWYgbGVuKGFy
Z3MpIDwgMSBvciBub3QgZmlsZXN5c3RlbS5leGlzdHMoYXJnc1swXSk6Ci0gICAgICAgICAgICBw
cmludCgiTmVlZCB0aGUgZGlyZWN0b3J5IG5hbWUgdG8gbG9vayBmb3IgY2hhbmdlbG9nIGFzIHRo
ZSBmaXJzdCBhcmd1bWVudCIpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgY2hhbmdlbG9n
X2RpciA9IGZpbGVzeXN0ZW0uYWJzcGF0aChhcmdzWzBdKQotCi0gICAgICAgIGlmIGxlbihhcmdz
KSA8IDIgb3Igbm90IGZpbGVzeXN0ZW0uZXhpc3RzKGFyZ3NbMV0pOgotICAgICAgICAgICAgcHJp
bnQoIk5lZWQgdGhlIG91dHB1dCBkaXJlY3RvcnkgbmFtZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50
IikKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBvdXRwdXRfZGlyID0gYXJnc1sxXQotCi0g
ICAgICAgIHN0YXJ0VGltZSA9IHRpbWUudGltZSgpCi0KLSAgICAgICAgcHJpbnQoJ0VudW1lcmF0
aW5nIENoYW5nZUxvZyBmaWxlcy4uLicpCi0gICAgICAgIGNoYW5nZWxvZ3MgPSBBbmFseXplQ2hh
bmdlTG9nLl9lbnVtZXJhdGVfY2hhbmdlbG9ncyhmaWxlc3lzdGVtLCBjaGFuZ2Vsb2dfZGlyLCBv
cHRpb25zLmNoYW5nZWxvZ19jb3VudCkKLQotICAgICAgICBhbmFseXplciA9IENoYW5nZUxvZ0Fu
YWx5emVyKHRvb2wsIGNoYW5nZWxvZ3MpCi0gICAgICAgIGFuYWx5emVyLmFuYWx5emUoKQotCi0g
ICAgICAgIHByaW50KCdHZW5lcmF0aW5nIGpzb24gZmlsZXMuLi4nKQotICAgICAgICBqc29uX2Zp
bGVzID0gewotICAgICAgICAgICAgJ3N1bW1hcnkuanNvbic6IGFuYWx5emVyLnN1bW1hcnkoKSwK
LSAgICAgICAgICAgICdjb250cmlidXRvcnMuanNvbic6IGFuYWx5emVyLmNvbnRyaWJ1dG9yc19z
dGF0aXN0aWNzKCksCi0gICAgICAgICAgICAnYXJlYXMuanNvbic6IGFuYWx5emVyLmFyZWFzX3N0
YXRpc3RpY3MoKSwKLSAgICAgICAgfQotICAgICAgICBBbmFseXplQ2hhbmdlTG9nLl9nZW5lcmF0
ZV9qc29ucyhmaWxlc3lzdGVtLCBqc29uX2ZpbGVzLCBvdXRwdXRfZGlyKQotICAgICAgICBjb21t
YW5kc19kaXIgPSBmaWxlc3lzdGVtLmRpcm5hbWUoZmlsZXN5c3RlbS5wYXRoX3RvX21vZHVsZShz
ZWxmLl9fbW9kdWxlX18pKQotICAgICAgICBwcmludChjb21tYW5kc19kaXIpCi0gICAgICAgIGZp
bGVzeXN0ZW0uY29weWZpbGUoZmlsZXN5c3RlbS5qb2luKGNvbW1hbmRzX2RpciwgJ2RhdGEvc3Vt
bWFyeS5odG1sJyksIGZpbGVzeXN0ZW0uam9pbihvdXRwdXRfZGlyLCAnc3VtbWFyeS5odG1sJykp
Ci0KLSAgICAgICAgdGljayA9IHRpbWUudGltZSgpIC0gc3RhcnRUaW1lCi0gICAgICAgIHByaW50
KCdGaW5pc2hlZCBpbiAlMDJkbTolMDJkcycgJSAoaW50KHRpY2sgLyA2MCksIGludCh0aWNrICUg
NjApKSkKLQotCi1jbGFzcyBDaGFuZ2VMb2dBbmFseXplcihvYmplY3QpOgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBob3N0LCBjaGFuZ2Vsb2dfcGF0aHMpOgotICAgICAgICBzZWxmLl9jaGFuZ2Vs
b2dfcGF0aHMgPSBjaGFuZ2Vsb2dfcGF0aHMKLSAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGhv
c3QuZmlsZXN5c3RlbQotICAgICAgICBzZWxmLl9jb250cmlidXRpb25fYXJlYXMgPSBDb250cmli
dXRpb25BcmVhcyhob3N0LmZpbGVzeXN0ZW0pCi0gICAgICAgIHNlbGYuX3NjbSA9IGhvc3Quc2Nt
KCkKLSAgICAgICAgc2VsZi5fcGFyc2VkX3JldmlzaW9ucyA9IHt9Ci0KLSAgICAgICAgc2VsZi5f
Y29udHJpYnV0b3JzX3N0YXRpc3RpY3MgPSB7fQotICAgICAgICBzZWxmLl9hcmVhc19zdGF0aXN0
aWNzID0gZGljdChbKGFyZWEsIHsncmV2aWV3ZWQnOiAwLCAndW5yZXZpZXdlZCc6IDAsICdjb250
cmlidXRvcnMnOiB7fX0pIGZvciBhcmVhIGluIHNlbGYuX2NvbnRyaWJ1dGlvbl9hcmVhcy5uYW1l
cygpXSkKLSAgICAgICAgc2VsZi5fc3VtbWFyeSA9IHsncmV2aWV3ZWQnOiAwLCAndW5yZXZpZXdl
ZCc6IDB9Ci0KLSAgICAgICAgc2VsZi5fbG9uZ2VzdF9maWxlbmFtZSA9IG1heChbbGVuKHBhdGgp
IC0gbGVuKHNlbGYuX3NjbS5jaGVja291dF9yb290KSBmb3IgcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0
aHNdKQotICAgICAgICBzZWxmLl9maWxlbmFtZSA9ICcnCi0gICAgICAgIHNlbGYuX2xlbmd0aF9v
Zl9wcmV2aW91c19vdXRwdXQgPSAwCi0KLSAgICBkZWYgY29udHJpYnV0b3JzX3N0YXRpc3RpY3Mo
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jb250cmlidXRvcnNfc3RhdGlzdGljcwotCi0g
ICAgZGVmIGFyZWFzX3N0YXRpc3RpY3Moc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9hcmVh
c19zdGF0aXN0aWNzCi0KLSAgICBkZWYgc3VtbWFyeShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3N1bW1hcnkKLQotICAgIGRlZiBfcHJpbnRfc3RhdHVzKHNlbGYsIHN0YXR1cyk6Ci0gICAg
ICAgIGlmIHNlbGYuX2xlbmd0aF9vZl9wcmV2aW91c19vdXRwdXQ6Ci0gICAgICAgICAgICBwcmlu
dCgiXHIiICsgIiAiICogc2VsZi5fbGVuZ3RoX29mX3ByZXZpb3VzX291dHB1dCwgZW5kPScgJykK
LSAgICAgICAgbmV3X291dHB1dCA9ICgnJScgKyBzdHIoc2VsZi5fbG9uZ2VzdF9maWxlbmFtZSkg
KyAnczogJXMnKSAlIChzZWxmLl9maWxlbmFtZSwgc3RhdHVzKQotICAgICAgICBwcmludCgiXHIi
ICsgbmV3X291dHB1dCwgZW5kPScgJykKLSAgICAgICAgc2VsZi5fbGVuZ3RoX29mX3ByZXZpb3Vz
X291dHB1dCA9IGxlbihuZXdfb3V0cHV0KQotCi0gICAgZGVmIF9zZXRfZmlsZW5hbWUoc2VsZiwg
ZmlsZW5hbWUpOgotICAgICAgICBpZiBzZWxmLl9maWxlbmFtZToKLSAgICAgICAgICAgIHByaW50
KCkKLSAgICAgICAgc2VsZi5fZmlsZW5hbWUgPSBmaWxlbmFtZQotCi0gICAgZGVmIGFuYWx5emUo
c2VsZik6Ci0gICAgICAgIGZvciBwYXRoIGluIHNlbGYuX2NoYW5nZWxvZ19wYXRoczoKLSAgICAg
ICAgICAgIHNlbGYuX3NldF9maWxlbmFtZShzZWxmLl9maWxlc3lzdGVtLnJlbHBhdGgocGF0aCwg
c2VsZi5fc2NtLmNoZWNrb3V0X3Jvb3QpKQotICAgICAgICAgICAgd2l0aCBzZWxmLl9maWxlc3lz
dGVtLm9wZW5fdGV4dF9maWxlX2Zvcl9yZWFkaW5nKHBhdGgpIGFzIGNoYW5nZWxvZzoKLSAgICAg
ICAgICAgICAgICBzZWxmLl9wcmludF9zdGF0dXMoJ1BhcnNpbmcgZW50cmllcy4uLicpCi0gICAg
ICAgICAgICAgICAgbnVtYmVyX29mX3BhcnNlZF9lbnRyaWVzID0gc2VsZi5fYW5hbHl6ZV9lbnRy
aWVzKENoYW5nZUxvZy5wYXJzZV9lbnRyaWVzX2Zyb21fZmlsZShjaGFuZ2Vsb2cpLCBwYXRoKQot
ICAgICAgICAgICAgc2VsZi5fcHJpbnRfc3RhdHVzKCdEb25lICglZCBlbnRyaWVzKScgJSBudW1i
ZXJfb2ZfcGFyc2VkX2VudHJpZXMpCi0gICAgICAgIHByaW50KCkKLSAgICAgICAgc2VsZi5fc3Vt
bWFyeVsnY29udHJpYnV0b3JzJ10gPSBsZW4oc2VsZi5fY29udHJpYnV0b3JzX3N0YXRpc3RpY3Mp
Ci0gICAgICAgIHNlbGYuX3N1bW1hcnlbJ2NvbnRyaWJ1dG9yc193aXRoX3Jldmlld3MnXSA9IHN1
bShbMSBmb3IgY29udHJpYnV0b3IgaW4gc2VsZi5fY29udHJpYnV0b3JzX3N0YXRpc3RpY3MudmFs
dWVzKCkgaWYgY29udHJpYnV0b3JbJ3Jldmlld3MnXVsndG90YWwnXV0pCi0gICAgICAgIHNlbGYu
X3N1bW1hcnlbJ2NvbnRyaWJ1dG9yc193aXRob3V0X3Jldmlld3MnXSA9IHNlbGYuX3N1bW1hcnlb
J2NvbnRyaWJ1dG9ycyddIC0gc2VsZi5fc3VtbWFyeVsnY29udHJpYnV0b3JzX3dpdGhfcmV2aWV3
cyddCi0KLSAgICBkZWYgX2NvbGxlY3Rfc3RhdGlzdGljc19mb3JfY29udHJpYnV0b3JfYXJlYShz
ZWxmLCBhcmVhLCBjb250cmlidXRvciwgY29udHJpYnV0aW9uX3R5cGUsIHJldmlld2VkKToKLSAg
ICAgICAgYXJlYV9jb250cmlidXRvcnMgPSBzZWxmLl9hcmVhc19zdGF0aXN0aWNzW2FyZWFdWydj
b250cmlidXRvcnMnXQotICAgICAgICBpZiBjb250cmlidXRvciBub3QgaW4gYXJlYV9jb250cmli
dXRvcnM6Ci0gICAgICAgICAgICBhcmVhX2NvbnRyaWJ1dG9yc1tjb250cmlidXRvcl0gPSB7J3Jl
dmlld3MnOiAwLCAncmV2aWV3ZWQnOiAwLCAndW5yZXZpZXdlZCc6IDB9Ci0gICAgICAgIGlmIGNv
bnRyaWJ1dGlvbl90eXBlID09ICdwYXRjaGVzJzoKLSAgICAgICAgICAgIGNvbnRyaWJ1dGlvbl90
eXBlID0gJ3Jldmlld2VkJyBpZiByZXZpZXdlZCBlbHNlICd1bnJldmlld2VkJwotICAgICAgICBh
cmVhX2NvbnRyaWJ1dG9yc1tjb250cmlidXRvcl1bY29udHJpYnV0aW9uX3R5cGVdICs9IDEKLQot
ICAgIGRlZiBfY29sbGVjdF9zdGF0aXN0aWNzX2Zvcl9jb250cmlidXRvcihzZWxmLCBjb250cmli
dXRvciwgY29udHJpYnV0aW9uX3R5cGUsIGFyZWFzLCB0b3VjaGVkX2ZpbGVzLCByZXZpZXdlZCk6
Ci0gICAgICAgIGlmIGNvbnRyaWJ1dG9yIG5vdCBpbiBzZWxmLl9jb250cmlidXRvcnNfc3RhdGlz
dGljczoKLSAgICAgICAgICAgIHNlbGYuX2NvbnRyaWJ1dG9yc19zdGF0aXN0aWNzW2NvbnRyaWJ1
dG9yXSA9IHsKLSAgICAgICAgICAgICAgICAncmV2aWV3cyc6IHsndG90YWwnOiAwLCAnYXJlYXMn
OiB7fSwgJ2ZpbGVzJzoge319LAotICAgICAgICAgICAgICAgICdwYXRjaGVzJzogeydyZXZpZXdl
ZCc6IDAsICd1bnJldmlld2VkJzogMCwgJ2FyZWFzJzoge30sICdmaWxlcyc6IHt9fX0KLSAgICAg
ICAgc3RhdGlzdGljcyA9IHNlbGYuX2NvbnRyaWJ1dG9yc19zdGF0aXN0aWNzW2NvbnRyaWJ1dG9y
XVtjb250cmlidXRpb25fdHlwZV0KLQotICAgICAgICBpZiBjb250cmlidXRpb25fdHlwZSA9PSAn
cmV2aWV3cyc6Ci0gICAgICAgICAgICBzdGF0aXN0aWNzWyd0b3RhbCddICs9IDEKLSAgICAgICAg
ZWxpZiByZXZpZXdlZDoKLSAgICAgICAgICAgIHN0YXRpc3RpY3NbJ3Jldmlld2VkJ10gKz0gMQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3RhdGlzdGljc1sndW5yZXZpZXdlZCddICs9IDEK
LQotICAgICAgICBmb3IgYXJlYSBpbiBhcmVhczoKLSAgICAgICAgICAgIHNlbGYuX2luY3JlbWVu
dF9kaWN0aW9uYXJ5X3ZhbHVlKHN0YXRpc3RpY3NbJ2FyZWFzJ10sIGFyZWEpCi0gICAgICAgICAg
ICBzZWxmLl9jb2xsZWN0X3N0YXRpc3RpY3NfZm9yX2NvbnRyaWJ1dG9yX2FyZWEoYXJlYSwgY29u
dHJpYnV0b3IsIGNvbnRyaWJ1dGlvbl90eXBlLCByZXZpZXdlZCkKLSAgICAgICAgZm9yIHRvdWNo
ZWRmaWxlIGluIHRvdWNoZWRfZmlsZXM6Ci0gICAgICAgICAgICBzZWxmLl9pbmNyZW1lbnRfZGlj
dGlvbmFyeV92YWx1ZShzdGF0aXN0aWNzWydmaWxlcyddLCB0b3VjaGVkZmlsZSkKLQotICAgIGRl
ZiBfaW5jcmVtZW50X2RpY3Rpb25hcnlfdmFsdWUoc2VsZiwgZGljdGlvbmFyeSwga2V5KToKLSAg
ICAgICAgZGljdGlvbmFyeVtrZXldID0gZGljdGlvbmFyeS5nZXQoa2V5LCAwKSArIDEKLQotICAg
IGRlZiBfYW5hbHl6ZV9lbnRyaWVzKHNlbGYsIGVudHJpZXMsIGNoYW5nZWxvZ19wYXRoKToKLSAg
ICAgICAgZGlybmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uZGlybmFtZShjaGFuZ2Vsb2dfcGF0aCkK
LSAgICAgICAgaSA9IDAKLSAgICAgICAgZm9yIGksIGVudHJ5IGluIGVudW1lcmF0ZShlbnRyaWVz
KToKLSAgICAgICAgICAgIHNlbGYuX3ByaW50X3N0YXR1cygnKCVzKSBlbnRyaWVzJyAlIGkpCi0g
ICAgICAgICAgICBhc3NlcnQoZW50cnkuYXV0aG9ycygpKQotCi0gICAgICAgICAgICB0b3VjaGVk
ZmlsZXNfZm9yX2VudHJ5ID0gW3NlbGYuX2ZpbGVzeXN0ZW0ucmVscGF0aChzZWxmLl9maWxlc3lz
dGVtLmpvaW4oZGlybmFtZSwgbmFtZSksIHNlbGYuX3NjbS5jaGVja291dF9yb290KSBmb3IgbmFt
ZSBpbiBlbnRyeS50b3VjaGVkX2ZpbGVzKCldCi0gICAgICAgICAgICBhcmVhc19mb3JfZW50cnkg
PSBzZWxmLl9jb250cmlidXRpb25fYXJlYXMuYXJlYXNfZm9yX3RvdWNoZWRfZmlsZXModG91Y2hl
ZGZpbGVzX2Zvcl9lbnRyeSkKLSAgICAgICAgICAgIGF1dGhvcnNfZm9yX2VudHJ5ID0gZW50cnku
YXV0aG9ycygpCi0gICAgICAgICAgICByZXZpZXdlcnNfZm9yX2VudHJ5ID0gZW50cnkucmV2aWV3
ZXJzKCkKLQotICAgICAgICAgICAgZm9yIHJldmlld2VyIGluIHJldmlld2Vyc19mb3JfZW50cnk6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fY29sbGVjdF9zdGF0aXN0aWNzX2Zvcl9jb250cmlidXRv
cihyZXZpZXdlci5mdWxsX25hbWUsICdyZXZpZXdzJywgYXJlYXNfZm9yX2VudHJ5LCB0b3VjaGVk
ZmlsZXNfZm9yX2VudHJ5LCByZXZpZXdlZD1UcnVlKQotCi0gICAgICAgICAgICBmb3IgYXV0aG9y
IGluIGF1dGhvcnNfZm9yX2VudHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2NvbGxlY3Rfc3Rh
dGlzdGljc19mb3JfY29udHJpYnV0b3IoYXV0aG9yWyduYW1lJ10sICdwYXRjaGVzJywgYXJlYXNf
Zm9yX2VudHJ5LCB0b3VjaGVkZmlsZXNfZm9yX2VudHJ5LAotICAgICAgICAgICAgICAgICAgICBy
ZXZpZXdlZD1ib29sKHJldmlld2Vyc19mb3JfZW50cnkpKQotCi0gICAgICAgICAgICBmb3IgYXJl
YSBpbiBhcmVhc19mb3JfZW50cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYXJlYXNfc3RhdGlz
dGljc1thcmVhXVsncmV2aWV3ZWQnIGlmIHJldmlld2Vyc19mb3JfZW50cnkgZWxzZSAndW5yZXZp
ZXdlZCddICs9IDEKLQotICAgICAgICAgICAgc2VsZi5fc3VtbWFyeVsncmV2aWV3ZWQnIGlmIHJl
dmlld2Vyc19mb3JfZW50cnkgZWxzZSAndW5yZXZpZXdlZCddICs9IDEKLQotICAgICAgICBzZWxm
Ll9wcmludF9zdGF0dXMoJyglcykgZW50cmllcycgJSBpKQotICAgICAgICByZXR1cm4gaQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2FuYWx5emVjaGFu
Z2Vsb2dfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
YW5hbHl6ZWNoYW5nZWxvZ191bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzA1NjBjZTA5ZjYxZDQ0MTNjNmZmOGMyMzBmZDAzYjEyZjMzYTcwZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvYW5hbHl6ZWNoYW5nZWxvZ191bml0dGVzdC5weQorKysgL2Rldi9udWxs
CkBAIC0xLDE4MCArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGpzb24KLWltcG9ydCBz
eXMKLWZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb250cmlidXRpb25hcmVhcyBpbXBvcnQg
Q29udHJpYnV0aW9uQXJlYXMKLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQg
TW9ja0hvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1w
b3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuYW5hbHl6ZWNo
YW5nZWxvZyBpbXBvcnQgQW5hbHl6ZUNoYW5nZUxvZwotZnJvbSB3ZWJraXRweS50b29sLmNvbW1h
bmRzLmFuYWx5emVjaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZ0FuYWx5emVyCi1mcm9tIHdlYmtp
dHB5LnRvb2wuY29tbWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAotZnJvbSB3
ZWJraXRweS50b29sLm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IENvbW1hbmQKLQotZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKLQotCi1jbGFzcyBBbmFseXplQ2hhbmdlTG9n
VGVzdChDb21tYW5kc1Rlc3QpOgotICAgIGRlZiB0ZXN0X2VudW1lcmF0ZV9lbnVtZXJhdGVfY2hh
bmdlbG9ncyhzZWxmKToKLSAgICAgICAgZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsKLSAg
ICAgICAgICAgICdmb28vQ2hhbmdlTG9nJzogJycsCi0gICAgICAgICAgICAnZm9vL0NoYW5nZUxv
Zy0yMDEwLTA2LTIzJzogJycsCi0gICAgICAgICAgICAnZm9vL0NoYW5nZUxvZy0yMDEwLTEyLTMx
JzogJycsCi0gICAgICAgICAgICAnZm9vL0NoYW5nZUxvZy14JzogJycsCi0gICAgICAgICAgICAn
Zm9vL0NoYW5nZUxvZy0yMDExLTAxLTAxJzogJycsCi0gICAgICAgIH0pCi0gICAgICAgIGNoYW5n
ZWxvZ3MgPSBBbmFseXplQ2hhbmdlTG9nLl9lbnVtZXJhdGVfY2hhbmdlbG9ncyhmaWxlc3lzdGVt
LCAnZm9vLycsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlbG9ncywgWydm
b28vQ2hhbmdlTG9nJywgJ2Zvby9DaGFuZ2VMb2ctMjAxMS0wMS0wMScsICdmb28vQ2hhbmdlTG9n
LTIwMTAtMTItMzEnLCAnZm9vL0NoYW5nZUxvZy0yMDEwLTA2LTIzJ10pCi0KLSAgICAgICAgY2hh
bmdlbG9ncyA9IEFuYWx5emVDaGFuZ2VMb2cuX2VudW1lcmF0ZV9jaGFuZ2Vsb2dzKGZpbGVzeXN0
ZW0sICdmb28vJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFuZ2Vsb2dzLCBbJ2Zv
by9DaGFuZ2VMb2cnLCAnZm9vL0NoYW5nZUxvZy0yMDExLTAxLTAxJ10pCi0KLSAgICBkZWYgdGVz
dF9nZW5lcmF0ZV9qc29ucyhzZWxmKToKLSAgICAgICAgZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lz
dGVtKCkKLSAgICAgICAgdGVzdF9qc29uID0geydhcnJheS5qc29uJzogWzEsIDIsIDMsIHsna2V5
JzogJ3ZhbHVlJ31dLCAnZGljdGlvbmFyeS5qc29uJzogeydzb21la2V5JzogJ3NvbWV2YWx1ZScs
ICdhcnJheSc6IFs0LCA1XX19Ci0KLSAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCk6Ci0gICAg
ICAgICAgICBBbmFseXplQ2hhbmdlTG9nLl9nZW5lcmF0ZV9qc29ucyhmaWxlc3lzdGVtLCB0ZXN0
X2pzb24sICdiYXInKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZmlsZXN5c3Rl
bS5maWxlcy5rZXlzKCkpLCB7J2Jhci9hcnJheS5qc29uJywgJ2Jhci9kaWN0aW9uYXJ5Lmpzb24n
fSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpzb24ubG9hZHMoZmlsZXN5c3RlbS5maWxl
c1snYmFyL2FycmF5Lmpzb24nXSksIHRlc3RfanNvblsnYXJyYXkuanNvbiddKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGpzb24ubG9hZHMoZmlsZXN5c3RlbS5maWxlc1snYmFyL2RpY3Rpb25h
cnkuanNvbiddKSwgdGVzdF9qc29uWydkaWN0aW9uYXJ5Lmpzb24nXSkKLQotCi1jbGFzcyBDaGFu
Z2VMb2dBbmFseXplclRlc3QoQ29tbWFuZHNUZXN0KToKLSAgICBkZWYgdGVzdF9hbmFseXplX29u
ZV9jaGFuZ2Vsb2coc2VsZik6Ci0gICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIGhv
c3QuZmlsZXN5c3RlbS5maWxlc1snbW9jay1jaGVja291dC9mb28vQ2hhbmdlTG9nJ10gPSB1IiIi
MjAxMS0xMS0xNyAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgotCi0gICAgPGh0dHA6Ly93
ZWJraXQub3JnL2IvNzI2NDY+IERpc2FibGUgZGVwcmVjYXRpb24gd2FybmluZ3MgYXJvdW5kIGNv
ZGUgd2hlcmUgd2UgY2Fubm90IGVhc2lseQotICAgIHN3aXRjaCBhd2F5IGZyb20gdGhlIGRlcHJl
Y2F0ZWQgQVBJcy4KLQotICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAqIHBsYXRm
b3JtL21hYy9XZWJDb3JlTlNTdHJpbmdFeHRyYXMubW06Ci0gICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDoKLSAgICAoV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlOjpyZXBvcnRFcnJvclRvQ2xpZW50KToKLQotMjAxMS0xMS0xOSAgS2V2aW4gT2xs
aXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgIFt3eF0gQysrIGJpbmRpbmdz
IGJ1aWxkIGZpeCBmb3IgbW92ZSBvZiBhcnJheSBjbGFzc2VzIHRvIFdURi4KLQotICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtOgotICAgIChHZXRDUFBUeXBlR2V0dGVy
KToKLSAgICAoR2V0TmFtZXNwYWNlRm9yQ2xhc3MpOgotICAgIChHZW5lcmF0ZUhlYWRlcik6Ci0g
ICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgotCi0yMDExLTEwLTI3ICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2Vr
QGdtYWlsLmNvbT4KLQotICAgICAgICBbR1N0cmVhbWVyXSBXZWJBdWRpbyBBdWRpb0ZpbGVSZWFk
ZXIgaW1wbGVtZW50YXRpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY5ODM0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgot
Ci0gICAgICAgIEJhc2ljIEZpbGVSZWFkZXIgaW1wbGVtZW50YXRpb24sIHN1cHBvcnRpbmcgb25l
IG9yIDIgYXVkaW8KLSAgICAgICAgY2hhbm5lbHMuIEFuIGVtcHR5IEF1ZGlvRGVzdGluYXRpb24g
aXMgYWxzbyBwcm92aWRlZCwgaXRzIGNvbXBsZXRlCi0gICAgICAgIGltcGxlbWVudGF0aW9uIGlz
IGhhbmRsZWQgaW4gYnVnIDY5ODM1LgotCi0gICAgICAgICogR05VbWFrZWZpbGUuYW06Ci0gICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKLSAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6IEFkZGVkLgotICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKLSAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKLSAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyKToKLSAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OnN0YXJ0KToKLSAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnN0
b3ApOgotICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmg6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lcjo6aXNQbGF5aW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXI6OnNhbXBsZVJhdGUpOgotICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lcjo6c291cmNlUHJvdmlkZXIpOgotICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwOiBBZGRlZC4KLSAgICAgICAgKFdl
YkNvcmU6OmdldEdTdHJlYW1lckF1ZGlvQ2Fwcyk6Ci0gICAgICAgIChXZWJDb3JlOjpnZXRGbG9h
dEZyb21CeXRlUmVhZGVyKToKLSAgICAgICAgKFdlYkNvcmU6OmNvcHlHc3RyZWFtZXJCdWZmZXJz
VG9BdWRpb0NoYW5uZWwpOgotICAgICAgICAoV2ViQ29yZTo6b25BcHBzaW5rTmV3QnVmZmVyQ2Fs
bGJhY2spOgotICAgICAgICAoV2ViQ29yZTo6bWVzc2FnZUNhbGxiYWNrKToKLSAgICAgICAgKFdl
YkNvcmU6Om9uR1N0cmVhbWVyRGVpbnRlcmxlYXZlUGFkQWRkZWRDYWxsYmFjayk6Ci0gICAgICAg
IChXZWJDb3JlOjpvbkdTdHJlYW1lckRlaW50ZXJsZWF2ZVJlYWR5Q2FsbGJhY2spOgotICAgICAg
ICAoV2ViQ29yZTo6b25HU3RyZWFtZXJEZWNvZGViaW5QYWRBZGRlZENhbGxiYWNrKToKLSAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6QXVkaW9GaWxlUmVhZGVyKToKLSAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6fkF1ZGlvRmlsZVJlYWRlcik6Ci0gICAgICAgIChX
ZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZUJ1ZmZlcik6Ci0gICAgICAgIChXZWJDb3Jl
OjpBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1lc3NhZ2UpOgotICAgICAgICAoV2ViQ29yZTo6QXVk
aW9GaWxlUmVhZGVyOjpoYW5kbGVOZXdEZWludGVybGVhdmVQYWQpOgotICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9GaWxlUmVhZGVyOjpkZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCk6Ci0gICAgICAg
IChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OnBsdWdEZWludGVybGVhdmUpOgotICAgICAgICAo
V2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMpOgotICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQnVzRnJvbUF1ZGlvRmlsZSk6Ci0gICAgICAgIChXZWJDb3JlOjpjcmVhdGVCdXNGcm9t
SW5NZW1vcnlBdWRpb0ZpbGUpOgotICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1
c0d0ay5jcHA6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKToKLSIiIgotCi0gICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpOgotICAgICAg
ICAgICAgYW5hbHl6ZXIgPSBDaGFuZ2VMb2dBbmFseXplcihob3N0LCBbJ21vY2stY2hlY2tvdXQv
Zm9vL0NoYW5nZUxvZyddKQotICAgICAgICAgICAgYW5hbHl6ZXIuYW5hbHl6ZSgpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChhbmFseXplci5zdW1tYXJ5KCksCi0gICAgICAgICAgICB7J3Jl
dmlld2VkJzogMiwgJ3VucmV2aWV3ZWQnOiAxLCAnY29udHJpYnV0b3JzJzogNiwgJ2NvbnRyaWJ1
dG9yc193aXRoX3Jldmlld3MnOiAyLCAnY29udHJpYnV0b3JzX3dpdGhvdXRfcmV2aWV3cyc6IDR9
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzZXQoYW5hbHl6ZXIu
Y29udHJpYnV0b3JzX3N0YXRpc3RpY3MoKS5rZXlzKCkpLAotICAgICAgICAgICAgeydTYW0gV2Vp
bmlnJywgdSdNYXJrIFJvd2UnLCB1J0tldmluIE9sbGl2aWVyJywgJ01hcnRpbiBSb2JpbnNvbics
IHUnUGhpbGlwcGUgTm9ybWFuZCcsIHUnWmFuIERvYmVyc2VrJ30sCi0gICAgICAgICkKLQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGFuYWx5emVyLmNvbnRyaWJ1dG9yc19zdGF0aXN0aWNzKClb
J1NhbSBXZWluaWcnXSwKLSAgICAgICAgICAgIHsncmV2aWV3cyc6IHsnZmlsZXMnOiB7dSdmb28v
cGxhdGZvcm0vbWFjL1dlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSc6IDEsIHUnZm9vL3BsYXRmb3Jt
L25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwJzogMX0sCi0gICAgICAgICAg
ICAndG90YWwnOiAxLCAnYXJlYXMnOiB7J05ldHdvcmsnOiAxfX0sICdwYXRjaGVzJzogeydmaWxl
cyc6IHt9LCAnYXJlYXMnOiB7fSwgJ3VucmV2aWV3ZWQnOiAwLCAncmV2aWV3ZWQnOiAwfX0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5hbHl6ZXIuY29udHJpYnV0b3JzX3N0YXRpc3RpY3Mo
KVt1J01hcmsgUm93ZSddLAotICAgICAgICAgICAgeydyZXZpZXdzJzogeydmaWxlcyc6IHt9LCAn
dG90YWwnOiAwLCAnYXJlYXMnOiB7fX0sICdwYXRjaGVzJzogeydmaWxlcyc6IHt1J2Zvby9wbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tJzogMSwKLSAgICAgICAgICAgIHUnZm9v
L3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwJzogMX0sICdh
cmVhcyc6IHsnTmV0d29yayc6IDF9LCAndW5yZXZpZXdlZCc6IDAsICdyZXZpZXdlZCc6IDF9fSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmFseXplci5jb250cmlidXRvcnNfc3RhdGlzdGlj
cygpW3UnS2V2aW4gT2xsaXZpZXInXSwKLSAgICAgICAgICAgIHsncmV2aWV3cyc6IHsnZmlsZXMn
OiB7fSwgJ3RvdGFsJzogMCwgJ2FyZWFzJzoge319LCAncGF0Y2hlcyc6IHsnZmlsZXMnOiB7dSdm
b28vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtJzogMX0sCi0gICAgICAgICAg
ICAgICAgJ2FyZWFzJzogeydCaW5kaW5ncyc6IDF9LCAndW5yZXZpZXdlZCc6IDEsICdyZXZpZXdl
ZCc6IDB9fSkKLQotICAgICAgICBmaWxlc19mb3JfYXVkaW9fcGF0Y2ggPSB7dSdmb28vR05VbWFr
ZWZpbGUuYW0nOiAxLCB1J2Zvby9HTlVtYWtlZmlsZS5saXN0LmFtJzogMSwgJ2Zvby9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAnOiAxLAotICAg
ICAgICAgICAgJ2Zvby9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lci5oJzogMSwgJ2Zvby9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVh
ZGVyR1N0cmVhbWVyLmNwcCc6IDEsCi0gICAgICAgICAgICAnZm9vL3BsYXRmb3JtL2F1ZGlvL2d0
ay9BdWRpb0J1c0d0ay5jcHAnOiAxfQotICAgICAgICBhdXRob3JfZXhwZWN0YXRpb25fZm9yX2F1
ZGlvX3BhdGNoID0geydyZXZpZXdzJzogeydmaWxlcyc6IHt9LCAndG90YWwnOiAwLCAnYXJlYXMn
OiB7fX0sCi0gICAgICAgICAgICAncGF0Y2hlcyc6IHsnZmlsZXMnOiBmaWxlc19mb3JfYXVkaW9f
cGF0Y2gsICdhcmVhcyc6IHsnVGhlIFdlYktpdEdUSyBQb3J0JzogMX0sICd1bnJldmlld2VkJzog
MCwgJ3Jldmlld2VkJzogMX19Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5hbHl6ZXIuY29u
dHJpYnV0b3JzX3N0YXRpc3RpY3MoKVt1J01hcnRpbiBSb2JpbnNvbiddLAotICAgICAgICAgICAg
eydyZXZpZXdzJzogeydmaWxlcyc6IGZpbGVzX2Zvcl9hdWRpb19wYXRjaCwgJ3RvdGFsJzogMSwg
J2FyZWFzJzogeydUaGUgV2ViS2l0R1RLIFBvcnQnOiAxfX0sCi0gICAgICAgICAgICAgICAgJ3Bh
dGNoZXMnOiB7J2ZpbGVzJzoge30sICdhcmVhcyc6IHt9LCAndW5yZXZpZXdlZCc6IDAsICdyZXZp
ZXdlZCc6IDB9fSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmFseXplci5jb250cmlidXRv
cnNfc3RhdGlzdGljcygpW3UnUGhpbGlwcGUgTm9ybWFuZCddLCBhdXRob3JfZXhwZWN0YXRpb25f
Zm9yX2F1ZGlvX3BhdGNoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuYWx5emVyLmNvbnRy
aWJ1dG9yc19zdGF0aXN0aWNzKClbdSdaYW4gRG9iZXJzZWsnXSwgYXV0aG9yX2V4cGVjdGF0aW9u
X2Zvcl9hdWRpb19wYXRjaCkKLQotICAgICAgICBhcmVhc19zdGF0aXN0aWNzID0gYW5hbHl6ZXIu
YXJlYXNfc3RhdGlzdGljcygpCi0gICAgICAgIGFyZWFzX3dpdGhfcGF0Y2hlcyA9IFthcmVhIGZv
ciBhcmVhIGluIGFyZWFzX3N0YXRpc3RpY3MgaWYgYXJlYXNfc3RhdGlzdGljc1thcmVhXVsncmV2
aWV3ZWQnXSBvciBhcmVhc19zdGF0aXN0aWNzW2FyZWFdWyd1bnJldmlld2VkJ11dCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGFyZWFzX3dpdGhfcGF0Y2hlcyksIHNldChbJ0JpbmRpbmdz
JywgJ05ldHdvcmsnLCAnVGhlIFdlYktpdEdUSyBQb3J0J10pKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGFyZWFzX3N0YXRpc3RpY3NbJ0JpbmRpbmdzJ10sIHsndW5yZXZpZXdlZCc6IDEsICdy
ZXZpZXdlZCc6IDAsICdjb250cmlidXRvcnMnOgotICAgICAgICAgICAge3UnS2V2aW4gT2xsaXZp
ZXInOiB7J3Jldmlld3MnOiAwLCAndW5yZXZpZXdlZCc6IDEsICdyZXZpZXdlZCc6IDB9fX0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJlYXNfc3RhdGlzdGljc1snTmV0d29yayddLCB7J3Vu
cmV2aWV3ZWQnOiAwLCAncmV2aWV3ZWQnOiAxLCAnY29udHJpYnV0b3JzJzoKLSAgICAgICAgICAg
IHsnU2FtIFdlaW5pZyc6IHsncmV2aWV3cyc6IDEsICd1bnJldmlld2VkJzogMCwgJ3Jldmlld2Vk
JzogMH0sIHUnTWFyayBSb3dlJzogeydyZXZpZXdzJzogMCwgJ3VucmV2aWV3ZWQnOiAwLCAncmV2
aWV3ZWQnOiAxfX19KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL2FwcGx5d2F0Y2hsaXN0bG9jYWwucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvYXBwbHl3YXRjaGxpc3Rsb2NhbC5weQppbmRleCBjOGJkOTM3ZWUyNTI3ZWNk
ZDBiMmY5NDU3ODc2ZjAxOTFiOWNkMjYzLi45NmEwMmRjY2Q0MDdlNjkwMGUxYjk2NzIyYzY0NGNi
MDIyOGNjNGQ1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvYXBwbHl3YXRjaGxpc3Rsb2NhbC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvYXBwbHl3YXRjaGxpc3Rsb2NhbC5weQpAQCAtMjgsNyArMjgsNiBAQAogCiBm
cm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IHN0ZXBzCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFu
ZHMuYWJzdHJhY3RzZXF1ZW5jZWRjb21tYW5kIGltcG9ydCBBYnN0cmFjdFNlcXVlbmNlZENvbW1h
bmQKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5kZXByZWNhdGVkY29tbWFuZCBpbXBvcnQg
RGVwcmVjYXRlZENvbW1hbmQKIAogCiBjbGFzcyBBcHBseVdhdGNoTGlzdExvY2FsKEFic3RyYWN0
U2VxdWVuY2VkQ29tbWFuZCk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvYnVnZm9ydGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9idWdmb3J0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2My
ODkzYWYxZWFlZTI5NzJjOWU2MDMwYWViMTlhOGRkZTk0OGU2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9idWdmb3J0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotIyBD
b3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLWZyb20gd2Via2l0cHkudG9vbC5ib3QuZmxha3l0ZXN0cmVwb3J0ZXIg
aW1wb3J0IEZsYWt5VGVzdFJlcG9ydGVyCi1mcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuZGVw
cmVjYXRlZGNvbW1hbmQgaW1wb3J0IERlcHJlY2F0ZWRDb21tYW5kCi1mcm9tIHdlYmtpdHB5LnRv
b2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQ29tbWFuZAotCi0KLSMgVGhpcyBpcyBtb3N0bHkg
YSBjb21tYW5kIGZvciB0ZXN0aW5nIEZsYWt5VGVzdFJlcG9ydGVyLCBob3dldmVyCi0jIGl0IGNv
dWxkIGJlIGVhc2lseSBleHBhbmRlZCB0byBhdXRvLWNyZWF0ZSBidWdzLCBldGMuIGlmIGFub3Ro
ZXIKLSMgY29tbWFuZCBvdXRzaWRlIG9mIHdlYmtpdHB5IHdhbnRlZCB0byB1c2UgaXQuCi1ARGVw
cmVjYXRlZENvbW1hbmQKLWNsYXNzIEJ1Z0ZvclRlc3QoQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICJi
dWctZm9yLXRlc3QiCi0gICAgaGVscF90ZXh0ID0gIkZpbmRzIHRoZSBidWd6aWxsYSBidWcgZm9y
IGEgZ2l2ZW4gdGVzdCIKLQotICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRv
b2wpOgotICAgICAgICByZXBvcnRlciA9IEZsYWt5VGVzdFJlcG9ydGVyKHRvb2wsICJ3ZWJraXRw
eSIpCi0gICAgICAgIHNlYXJjaF9zdHJpbmcgPSBhcmdzWzBdCi0gICAgICAgIGJ1ZyA9IHJlcG9y
dGVyLl9sb29rdXBfYnVnX2Zvcl9mbGFreV90ZXN0KHNlYXJjaF9zdHJpbmcpCi0gICAgICAgIGlm
IGJ1ZzoKLSAgICAgICAgICAgIGJ1ZyA9IHJlcG9ydGVyLl9mb2xsb3dfZHVwbGljYXRlX2NoYWlu
KGJ1ZykKLSAgICAgICAgICAgIHByaW50KCIlNXMgJXMiICUgKGJ1Zy5pZCgpLCBidWcudGl0bGUo
KSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiTm8gYnVncyBmb3VuZCBtYXRj
aGluZyAnJXMnIiAlIHNlYXJjaF9zdHJpbmcpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvYnVnc2VhcmNoLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL2J1Z3NlYXJjaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMWUyNjY5NDE5OTg3ZDQwYjYwYTA2YjVlYjFlMmM5MGY4ZmRhZWViNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvYnVnc2VhcmNoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBA
QAotIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5kZXByZWNh
dGVkY29tbWFuZCBpbXBvcnQgRGVwcmVjYXRlZENvbW1hbmQKLWZyb20gd2Via2l0cHkudG9vbC5t
dWx0aWNvbW1hbmR0b29sIGltcG9ydCBDb21tYW5kCi0KLQotQERlcHJlY2F0ZWRDb21tYW5kCi1j
bGFzcyBCdWdTZWFyY2goQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICJidWctc2VhcmNoIgotICAgIGhl
bHBfdGV4dCA9ICJMaXN0IGJ1Z3MgbWF0Y2hpbmcgYSBxdWVyeSIKLSAgICBhcmd1bWVudF9uYW1l
cyA9ICJRVUVSWSIKLSAgICBsb25nX2hlbHAgPSBcCi0iIiJSdW5zIHRoZSBidWd6aWxsYSBxdWlj
a3NlYXJjaCBRVUVSWSBvbiBidWdzLndlYmtpdC5vcmcsIGFuZCBsaXN0cyBhbGwgYnVncwotcmV0
dXJuZWQuIFFVRVJZIGNhbiBiZSBhcyBzaW1wbGUgYXMgYSBidWcgbnVtYmVyIG9yIGEgY29tbWEg
ZGVsaW1pdGVkIGxpc3Qgb2YKLWJ1ZyBudW1iZXJzLgotU2VlIGh0dHBzOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvcGFnZS5jZ2k/aWQ9cXVpY2tzZWFyY2guaHRtbCBmb3IgZnVsbAotZG9jdW1lbnRh
dGlvbiBvbiB0aGUgcXVlcnkgZm9ybWF0LiIiIgotCi0gICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0
aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHNlYXJjaF9zdHJpbmcgPSBhcmdzWzBdCi0gICAg
ICAgIGJ1Z3MgPSB0b29sLmJ1Z3MucXVlcmllcy5mZXRjaF9idWdzX21hdGNoaW5nX3F1aWNrc2Vh
cmNoKHNlYXJjaF9zdHJpbmcpCi0gICAgICAgIGZvciBidWcgaW4gYnVnczoKLSAgICAgICAgICAg
IHByaW50KCIlNXMgJXMiICUgKGJ1Zy5pZCgpLCBidWcudGl0bGUoKSkpCi0gICAgICAgIGlmIG5v
dCBidWdzOgotICAgICAgICAgICAgcHJpbnQoIk5vIGJ1Z3MgZm91bmQgbWF0Y2hpbmcgJyVzJyIg
JSBzZWFyY2hfc3RyaW5nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2Rvd25sb2FkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL2Rvd25sb2FkLnB5CmluZGV4IDQ4MTBkOTZlOWRmZGJlMGM1Y2U1MGI2ZTM0MzNkMDkxMjQ2
MGMwMDcuLjI1ZTgwYTEwZmFmOWRiNmU0YmMwZGVkY2E4MzFlOGJmYjNmMzgzZDEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKQEAgLTU3
LDM5ICs1Nyw2IEBAIGNsYXNzIENsZWFuKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAg
ICAgIG9wdGlvbnMuZm9yY2VfY2xlYW4gPSBUcnVlCiAKIAotQERlcHJlY2F0ZWRDb21tYW5kCi1j
bGFzcyBVcGRhdGUoQWJzdHJhY3RTZXF1ZW5jZWRDb21tYW5kKToKLSAgICBuYW1lID0gInVwZGF0
ZSIKLSAgICBoZWxwX3RleHQgPSAiVXBkYXRlIHdvcmtpbmcgY29weSAodXNlZCBpbnRlcm5hbGx5
KSIKLSAgICBzdGVwcyA9IFsKLSAgICAgICAgc3RlcHMuRGlzY2FyZExvY2FsQ2hhbmdlcywKLSAg
ICAgICAgc3RlcHMuVXBkYXRlLAotICAgIF0KLQotCi1ARGVwcmVjYXRlZENvbW1hbmQKLWNsYXNz
IEJ1aWxkKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICJidWlsZCIKLSAg
ICBoZWxwX3RleHQgPSAiVXBkYXRlIHdvcmtpbmcgY29weSBhbmQgYnVpbGQiCi0gICAgc3RlcHMg
PSBbCi0gICAgICAgIHN0ZXBzLkRpc2NhcmRMb2NhbENoYW5nZXMsCi0gICAgICAgIHN0ZXBzLlVw
ZGF0ZSwKLSAgICAgICAgc3RlcHMuQnVpbGQsCi0gICAgXQotCi0gICAgZGVmIF9wcmVwYXJlX3N0
YXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBvcHRpb25zLmJ1aWxkID0g
VHJ1ZQotCi0KLUBEZXByZWNhdGVkQ29tbWFuZAotY2xhc3MgQ2hlY2tQYXRjaFJlbGV2YW5jZShB
YnN0cmFjdFNlcXVlbmNlZENvbW1hbmQpOgotICAgIG5hbWUgPSAiY2hlY2stcGF0Y2gtcmVsZXZh
bmNlIgotICAgIGhlbHBfdGV4dCA9ICJDaGVjayBpZiB0aGlzIHBhdGNoIG5lZWRzIHRvIGJlIHRl
c3RlZCIKLSAgICBzdGVwcyA9IFsKLSAgICAgICAgc3RlcHMuQ2hlY2tQYXRjaFJlbGV2YW5jZSwK
LSAgICBdCi0KLQogY2xhc3MgTGFuZChBYnN0cmFjdFNlcXVlbmNlZENvbW1hbmQpOgogICAgIG5h
bWUgPSAibGFuZCIKICAgICBoZWxwX3RleHQgPSAiTGFuZCB0aGUgY3VycmVudCB3b3JraW5nIGRp
cmVjdG9yeSBkaWZmIGFuZCB1cGRhdGVzIHRoZSBhc3NvY2lhdGVkIGJ1ZyBpZiBhbnkiCkBAIC0x
MzYsMTUgKzEwMyw2IEBAIGNsYXNzIExhbmRDb3doYW5kKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFu
ZCk6CiAgICAgICAgIG9wdGlvbnMuY2hlY2tfc3R5bGVfZmlsdGVyID0gIi1jaGFuZ2Vsb2ciCiAK
IAotQERlcHJlY2F0ZWRDb21tYW5kCi1jbGFzcyBMYW5kQ293Ym95KExhbmRDb3doYW5kKToKLSAg
ICBuYW1lID0gImxhbmQtY293Ym95IgotCi0gICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9w
dGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBfbG9nLndhcm5pbmcoImxhbmQtY293Ym95IGlz
IGRlcHJlY2F0ZWQsIHVzZSBsYW5kLWNvd2hhbmQgaW5zdGVhZC4iKQotICAgICAgICBMYW5kQ293
aGFuZC5fcHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKQotCi0KIGNsYXNz
IENoZWNrU3R5bGVMb2NhbChBYnN0cmFjdFNlcXVlbmNlZENvbW1hbmQpOgogICAgIG5hbWUgPSAi
Y2hlY2stc3R5bGUtbG9jYWwiCiAgICAgaGVscF90ZXh0ID0gIlJ1biBjaGVjay13ZWJraXQtc3R5
bGUgb24gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgZGlmZiIKQEAgLTI1OSwxOSArMjE3
LDYgQEAgY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFjdFBhdGNoU2VxdWVuY2luZ0NvbW1hbmQsIFBy
b2Nlc3NBdHRhY2htZW50c01peGluKToKICAgICBdCiAKIAotQERlcHJlY2F0ZWRDb21tYW5kCi1j
bGFzcyBCdWlsZEF0dGFjaG1lbnQoQWJzdHJhY3RQYXRjaFNlcXVlbmNpbmdDb21tYW5kLCBQcm9j
ZXNzQXR0YWNobWVudHNNaXhpbik6Ci0gICAgbmFtZSA9ICJidWlsZC1hdHRhY2htZW50IgotICAg
IGhlbHBfdGV4dCA9ICJBcHBseSBhbmQgYnVpbGQgcGF0Y2hlcyBmcm9tIGJ1Z3ppbGxhIgotICAg
IGFyZ3VtZW50X25hbWVzID0gIkFUVEFDSE1FTlRfSUQgW0FUVEFDSE1FTlRfSURTXSIKLSAgICBt
YWluX3N0ZXBzID0gWwotICAgICAgICBzdGVwcy5EaXNjYXJkTG9jYWxDaGFuZ2VzLAotICAgICAg
ICBzdGVwcy5VcGRhdGUsCi0gICAgICAgIHN0ZXBzLkFwcGx5UGF0Y2gsCi0gICAgICAgIHN0ZXBz
LkJ1aWxkLAotICAgIF0KLQotCiBjbGFzcyBBYnN0cmFjdFBhdGNoQXBwbHlpbmdDb21tYW5kKEFi
c3RyYWN0UGF0Y2hTZXF1ZW5jaW5nQ29tbWFuZCk6CiAgICAgcHJlcGFyZV9zdGVwcyA9IFsKICAg
ICAgICAgc3RlcHMuRW5zdXJlTG9jYWxDb21taXRJZk5lZWRlZCwKQEAgLTI5OSwyMSArMjQ0LDYg
QEAgY2xhc3MgQXBwbHlGcm9tQnVnKEFic3RyYWN0UGF0Y2hBcHBseWluZ0NvbW1hbmQsIFByb2Nl
c3NCdWdzTWl4aW4pOgogICAgIHNob3dfaW5fbWFpbl9oZWxwID0gVHJ1ZQogCiAKLUBEZXByZWNh
dGVkQ29tbWFuZAotY2xhc3MgQXBwbHlXYXRjaExpc3QoQWJzdHJhY3RQYXRjaFNlcXVlbmNpbmdD
b21tYW5kLCBQcm9jZXNzQXR0YWNobWVudHNNaXhpbik6Ci0gICAgbmFtZSA9ICJhcHBseS13YXRj
aGxpc3QiCi0gICAgaGVscF90ZXh0ID0gIkFwcGxpZXMgdGhlIHdhdGNobGlzdCB0byB0aGUgc3Bl
Y2lmaWVkIGF0dGFjaG1lbnRzIgotICAgIGFyZ3VtZW50X25hbWVzID0gIkFUVEFDSE1FTlRfSUQg
W0FUVEFDSE1FTlRfSURTXSIKLSAgICBtYWluX3N0ZXBzID0gWwotICAgICAgICBzdGVwcy5EaXNj
YXJkTG9jYWxDaGFuZ2VzLAotICAgICAgICBzdGVwcy5VcGRhdGUsCi0gICAgICAgIHN0ZXBzLkFw
cGx5UGF0Y2gsCi0gICAgICAgIHN0ZXBzLkFwcGx5V2F0Y2hMaXN0LAotICAgIF0KLSAgICBsb25n
X2hlbHAgPSAiIiIiQXBwbGllcyB0aGUgd2F0Y2hsaXN0IHRvIHRoZSBzcGVjaWZpZWQgYXR0YWNo
bWVudHMuCi1Eb3dubG9hZHMgdGhlIGF0dGFjaG1lbnQsIGFwcGxpZXMgaXQgbG9jYWxseSwgcnVu
cyB0aGUgd2F0Y2hsaXN0IGFnYWluc3QgaXQsIGFuZCB1cGRhdGVzIHRoZSBidWcgd2l0aCB0aGUg
cmVzdWx0LiIiIgotCi0KIGNsYXNzIEFic3RyYWN0UGF0Y2hMYW5kaW5nQ29tbWFuZChBYnN0cmFj
dFBhdGNoU2VxdWVuY2luZ0NvbW1hbmQpOgogICAgIG1haW5fc3RlcHMgPSBbCiAgICAgICAgIHN0
ZXBzLkRpc2NhcmRMb2NhbENoYW5nZXMsCkBAIC0zNTAsMTMgKzI4MCw2IEBAIGNsYXNzIExhbmRG
cm9tQnVnKEFic3RyYWN0UGF0Y2hMYW5kaW5nQ29tbWFuZCwgUHJvY2Vzc0J1Z3NNaXhpbik6CiAg
ICAgc2hvd19pbl9tYWluX2hlbHAgPSBUcnVlCiAKIAotQERlcHJlY2F0ZWRDb21tYW5kCi1jbGFz
cyBMYW5kRnJvbVVSTChBYnN0cmFjdFBhdGNoTGFuZGluZ0NvbW1hbmQsIFByb2Nlc3NVUkxzTWl4
aW4pOgotICAgIG5hbWUgPSAibGFuZC1mcm9tLXVybCIKLSAgICBoZWxwX3RleHQgPSAiTGFuZCBh
bGwgcGF0Y2hlcyBvbiB0aGUgZ2l2ZW4gVVJMcywgb3B0aW9uYWxseSBidWlsZGluZyBhbmQgdGVz
dGluZyB0aGVtIGZpcnN0IgotICAgIGFyZ3VtZW50X25hbWVzID0gIlVSTCBbVVJMU10iCi0KLQog
Y2xhc3MgVmFsaWRhdGVDaGFuZ2Vsb2coQWJzdHJhY3RTZXF1ZW5jZWRDb21tYW5kKToKICAgICBu
YW1lID0gInZhbGlkYXRlLWNoYW5nZWxvZyIKICAgICBoZWxwX3RleHQgPSAiVmFsaWRhdGUgdGhh
dCB0aGUgQ2hhbmdlTG9ncyBhbmQgcmV2aWV3ZXJzIGxvb2sgcmVhc29uYWJsZSIKQEAgLTQzOCwx
NSArMzYxLDYgQEAgQ3JlYXRlcyBhbiBhcHByb3ByaWF0ZSByZXZlcnQgQ2hhbmdlTG9nLCBpbmNs
dWRpbmcgYSB0cmFjIGxpbmsgYW5kIGJ1ZyBsaW5rLgogICAgIF0KIAogCi1ARGVwcmVjYXRlZENv
bW1hbmQKLWNsYXNzIFByZXBhcmVSb2xsb3V0KFByZXBhcmVSZXZlcnQpOgotICAgIG5hbWUgPSAi
cHJlcGFyZS1yb2xsb3V0IgotCi0gICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9wdGlvbnMs
IGFyZ3MsIHRvb2wpOgotICAgICAgICBfbG9nLndhcm5pbmcoInByZXBhcmUtcm9sbG91dCBpcyBk
ZXByZWNhdGVkLCB1c2UgcHJlcGFyZS1yZXZlcnQgaW5zdGVhZC4iKQotICAgICAgICByZXR1cm4g
UHJlcGFyZVJldmVydC5fcHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKQot
Ci0KIGNsYXNzIENyZWF0ZVJldmVydChBYnN0cmFjdFJldmVydFByZXBDb21tYW5kKToKICAgICBu
YW1lID0gImNyZWF0ZS1yZXZlcnQiCiAgICAgaGVscF90ZXh0ID0gIkNyZWF0ZXMgYSBidWcgdG8g
dHJhY2sgdGhlIGJyb2tlbiBTVk4gcmV2aXNpb24ocykgYW5kIHVwbG9hZHMgYSByZXZlcnQgcGF0
Y2guIgpAQCAtNDc2LDE1ICszOTAsNiBAQCBzbyB0aGF0IHdlIGNhbiB0cmFjayBob3cgb2Z0ZW4g
dGhlc2UgZmxha3kgdGVzdHMgZmFpbC4KICAgICAgICAgcmV0dXJuIHN0YXRlCiAKIAotQERlcHJl
Y2F0ZWRDb21tYW5kCi1jbGFzcyBDcmVhdGVSb2xsb3V0KENyZWF0ZVJldmVydCk6Ci0gICAgbmFt
ZSA9ICJjcmVhdGUtcm9sbG91dCIKLQotICAgIGRlZiBfcHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRp
b25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgX2xvZy53YXJuaW5nKCJjcmVhdGUtcm9sbG91dCBp
cyBkZXByZWNhdGVkLCB1c2UgY3JlYXRlLXJldmVydCBpbnN0ZWFkLiIpCi0gICAgICAgIHJldHVy
biBDcmVhdGVSZXZlcnQuX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCkK
LQotCiBjbGFzcyBSZXZlcnQoQWJzdHJhY3RSZXZlcnRQcmVwQ29tbWFuZCk6CiAgICAgbmFtZSA9
ICJyZXZlcnQiCiAgICAgc2hvd19pbl9tYWluX2hlbHAgPSBUcnVlCkBAIC01MDYsMTMgKzQxMSwz
IEBAIENvbW1pdHMgdGhlIHJldmVydCBhbmQgdXBkYXRlcyB0aGUgYnVnIChpbmNsdWRpbmcgcmUt
b3BlbmluZyB0aGUgYnVnIGlmIG5lY2Vzc2FyCiAgICAgICAgIHN0ZXBzLkNvbW1pdCwKICAgICAg
ICAgc3RlcHMuUmVvcGVuQnVnQWZ0ZXJSZXZlcnQsCiAgICAgXQotCi0KLUBEZXByZWNhdGVkQ29t
bWFuZAotY2xhc3MgUm9sbG91dChSZXZlcnQpOgotICAgIG5hbWUgPSAicm9sbG91dCIKLSAgICBz
aG93X2luX21haW5faGVscCA9IEZhbHNlCi0KLSAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwg
b3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIF9sb2cud2FybmluZygicm9sbG91dCBpcyBk
ZXByZWNhdGVkLCB1c2UgcmV2ZXJ0IGluc3RlYWQuIikKLSAgICAgICAgcmV0dXJuIFJldmVydC5f
cHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5
CmluZGV4IDg5YWFkMmVmYWZjODYzZDk0NmY2YmQ1MTY4NjAwZGRiODE2YWQ1YTkuLjgxNGEzNWUw
M2YzZjQwMTA0ODUyMDNhMzZhZjMyMGI3NjFkMGE3MTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHkKQEAg
LTEwNiwxMCArMTA2LDYgQEAgY2xhc3MgRG93bmxvYWRDb21tYW5kc1Rlc3QoQ29tbWFuZHNUZXN0
KToKICAgICAgICAgICAgICkpLAogICAgICAgICB9KQogCi0gICAgZGVmIHRlc3RfYnVpbGQoc2Vs
Zik6Ci0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiVXBkYXRpbmcgd29ya2luZyBkaXJlY3Rvcnlc
bkJ1aWxkaW5nIFdlYktpdFxuIgotICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMo
QnVpbGQoKSwgW10sIG9wdGlvbnM9c2VsZi5fZGVmYXVsdF9vcHRpb25zKCksIGV4cGVjdGVkX2xv
Z3M9ZXhwZWN0ZWRfbG9ncykKLQogICAgIGRlZiB0ZXN0X2FwcGx5X2F0dGFjaG1lbnQoc2VsZik6
CiAgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9kZWZhdWx0X29wdGlvbnMoKQogICAgICAgICBvcHRp
b25zLnVwZGF0ZSA9IFRydWUKQEAgLTEyOCwxOSArMTI0LDYgQEAgY2xhc3MgRG93bmxvYWRDb21t
YW5kc1Rlc3QoQ29tbWFuZHNUZXN0KToKICAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJVcGRhdGlu
ZyB3b3JraW5nIGRpcmVjdG9yeVxuMiByZXZpZXdlZCBwYXRjaGVzIGZvdW5kIG9uIGJ1ZyA1MDAw
MC5cblByb2Nlc3NpbmcgMiBwYXRjaGVzIGZyb20gMSBidWcuXG5Qcm9jZXNzaW5nIHBhdGNoIDEw
MDAwIGZyb20gYnVnIDUwMDAwLlxuUHJvY2Vzc2luZyBwYXRjaCAxMDAwMSBmcm9tIGJ1ZyA1MDAw
MC5cbiIKICAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKEFwcGx5RnJvbUJ1Zygp
LCBbNTAwMDBdLCBvcHRpb25zPW9wdGlvbnMsIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykK
IAotICAgIGRlZiB0ZXN0X2FwcGx5X3dhdGNoX2xpc3Qoc2VsZik6Ci0gICAgICAgIGV4cGVjdGVk
X2xvZ3MgPSAiIiJQcm9jZXNzaW5nIDEgcGF0Y2ggZnJvbSAxIGJ1Zy4KLVVwZGF0aW5nIHdvcmtp
bmcgZGlyZWN0b3J5Ci1NT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydtb2NrLXVwZGF0ZS13
ZWJraXQnXSwgY3dkPS9tb2NrLWNoZWNrb3V0Ci1Qcm9jZXNzaW5nIHBhdGNoIDEwMDAwIGZyb20g
YnVnIDUwMDAwLgotTW9ja1dhdGNoTGlzdDogZGV0ZXJtaW5lX2NjX2FuZF9tZXNzYWdlcwotTm8g
YnVnIHdhcyB1cGRhdGVkIGJlY2F1c2Ugbm8gaWQgd2FzIGdpdmVuLgotUmVzdWx0IG9mIHdhdGNo
bGlzdDogY2MgImFiYXJ0aEB3ZWJraXQub3JnLCBlcmljQHdlYmtpdC5vcmcsIGxldmluQGNocm9t
aXVtLm9yZyIgbWVzc2FnZXMgIk1lc3NhZ2UxLgotCi1NZXNzYWdlMi4iCi0iIiIKLSAgICAgICAg
c2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKEFwcGx5V2F0Y2hMaXN0KCksIFsxMDAwMF0sIG9w
dGlvbnM9c2VsZi5fZGVmYXVsdF9vcHRpb25zKCksIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9n
cywgdG9vbD1Nb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpKQotCiAgICAgZGVmIHRlc3RfbGFu
ZChzZWxmKToKICAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIiIkJ1aWxkaW5nIFdlYktpdAogQ29t
bWl0dGVkIHI0OTgyNDogPGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnL3I0OTgyND4KQEAgLTE3
MSw5ICsxNTQsNiBAQCBObyBidWcgaWQgcHJvdmlkZWQuCiAgICAgICAgICAgICBtb2NrX3Rvb2wg
PSBNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydF9l
eGVjdXRlX291dHB1dHMoTGFuZENvd2hhbmQoKSwgWzUwMDAwXSwgb3B0aW9ucz1zZWxmLl9kZWZh
dWx0X29wdGlvbnMoKSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzLCB0b29sPW1vY2tfdG9v
bCkKIAotICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJsYW5kLWNvd2JveSBpcyBkZXByZWNh
dGVkLCB1c2UgbGFuZC1jb3doYW5kIGluc3RlYWQuXG4iICsgZXhwZWN0ZWRfbG9ncwotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKExhbmRDb3dib3koKSwgWzUwMDAwXSwg
b3B0aW9ucz1zZWxmLl9kZWZhdWx0X29wdGlvbnMoKSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9s
b2dzLCB0b29sPW1vY2tfdG9vbCkKLQogICAgIGRlZiB0ZXN0X2xhbmRfcmVkX2J1aWxkZXJzKHNl
bGYpOgogICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiQnVpbGRpbmcgV2ViS2l0CiBDb21taXR0
ZWQgcjQ5ODI0OiA8aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvcjQ5ODI0PgpAQCAtMTkzLDEw
ICsxNzMsNiBAQCBNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydtb2NrLWNoZWNrLXdlYmtp
dC1zdHlsZScsICctLWdpdC1jb21taXQnLCAnTU9DSyBnaQogIiIiCiAgICAgICAgIHNlbGYuYXNz
ZXJ0X2V4ZWN1dGVfb3V0cHV0cyhDaGVja1N0eWxlKCksIFsxMDAwMF0sIG9wdGlvbnM9c2VsZi5f
ZGVmYXVsdF9vcHRpb25zKCksIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncywgdG9vbD1Nb2Nr
VG9vbChsb2dfZXhlY3V0aXZlPVRydWUpKQogCi0gICAgZGVmIHRlc3RfYnVpbGRfYXR0YWNobWVu
dChzZWxmKToKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJQcm9jZXNzaW5nIDEgcGF0Y2ggZnJv
bSAxIGJ1Zy5cblVwZGF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5XG5Qcm9jZXNzaW5nIHBhdGNoIDEw
MDAwIGZyb20gYnVnIDUwMDAwLlxuQnVpbGRpbmcgV2ViS2l0XG4iCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2V4ZWN1dGVfb3V0cHV0cyhCdWlsZEF0dGFjaG1lbnQoKSwgWzEwMDAwXSwgb3B0aW9ucz1z
ZWxmLl9kZWZhdWx0X29wdGlvbnMoKSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQotCiAg
ICAgZGVmIHRlc3RfbGFuZF9hdHRhY2htZW50KHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBUaGlz
IGV4cGVjdGVkIHJlc3VsdCBpcyBpbXBlcmZlY3QsIG5vdGljZSBob3cgaXQncyBzZWVpbmcgdGhl
IHNhbWUgcGF0Y2ggYXMgc3RpbGwgdGhlcmUgYWZ0ZXIgaXQgdGhvdWdodCBpdCB3b3VsZCBoYXZl
IGNsZWFyZWQgdGhlIGZsYWdzLgogICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiUHJvY2Vzc2lu
ZyAxIHBhdGNoIGZyb20gMSBidWcuCkBAIC0yMjcsMjQgKzIwMyw2IEBAIE5vdCBjbG9zaW5nIGJ1
ZyA1MDAwMCBhcyBhdHRhY2htZW50IDEwMDAwIGhhcyByZXZpZXc9Ky4gIEFzc3VtaW5nIHRoZXJl
IGFyZSBtb3JlCiAgICAgICAgIHdpdGggc2VsZi5tb2NrX3N2bl9yZW1vdGUoKToKICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhMYW5kRnJvbUJ1ZygpLCBbNTAwMDBdLCBv
cHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0aW9ucygpLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xv
Z3MpCiAKLSAgICBkZWYgdGVzdF9sYW5kX2Zyb21fdXJsKHNlbGYpOgotICAgICAgICAjIEZJWE1F
OiBUaGlzIGV4cGVjdGVkIHJlc3VsdCBpcyBpbXBlcmZlY3QsIG5vdGljZSBob3cgaXQncyBzZWVp
bmcgdGhlIHNhbWUgcGF0Y2ggYXMgc3RpbGwgdGhlcmUgYWZ0ZXIgaXQgdGhvdWdodCBpdCB3b3Vs
ZCBoYXZlIGNsZWFyZWQgdGhlIGZsYWdzLgotICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiMiBw
YXRjaGVzIGZvdW5kIG9uIGJ1ZyA1MDAwMC4KLVByb2Nlc3NpbmcgMiBwYXRjaGVzIGZyb20gMSBi
dWcuCi1VcGRhdGluZyB3b3JraW5nIGRpcmVjdG9yeQotUHJvY2Vzc2luZyBwYXRjaCAxMDAwMCBm
cm9tIGJ1ZyA1MDAwMC4KLUJ1aWxkaW5nIFdlYktpdAotQ29tbWl0dGVkIHI0OTgyNDogPGh0dHBz
Oi8vY29tbWl0cy53ZWJraXQub3JnL3I0OTgyND4KLU5vdCBjbG9zaW5nIGJ1ZyA1MDAwMCBhcyBh
dHRhY2htZW50IDEwMDAwIGhhcyByZXZpZXc9Ky4gIEFzc3VtaW5nIHRoZXJlIGFyZSBtb3JlIHBh
dGNoZXMgdG8gbGFuZCBmcm9tIHRoaXMgYnVnLgotVXBkYXRpbmcgd29ya2luZyBkaXJlY3RvcnkK
LVByb2Nlc3NpbmcgcGF0Y2ggMTAwMDEgZnJvbSBidWcgNTAwMDAuCi1CdWlsZGluZyBXZWJLaXQK
LUNvbW1pdHRlZCByNDk4MjQ6IDxodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy9yNDk4MjQ+Ci1O
b3QgY2xvc2luZyBidWcgNTAwMDAgYXMgYXR0YWNobWVudCAxMDAwMCBoYXMgcmV2aWV3PSsuICBB
c3N1bWluZyB0aGVyZSBhcmUgbW9yZSBwYXRjaGVzIHRvIGxhbmQgZnJvbSB0aGlzIGJ1Zy4KLSIi
IgotICAgICAgICB3aXRoIHNlbGYubW9ja19zdm5fcmVtb3RlKCk6Ci0gICAgICAgICAgICBzZWxm
LmFzc2VydF9leGVjdXRlX291dHB1dHMoTGFuZEZyb21VUkwoKSwgWyJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwMDAiXSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29w
dGlvbnMoKSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQotCiAgICAgZGVmIHRlc3RfbGFu
ZF9ub19jb21tZW50KHNlbGYpOgogICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiQnVpbGRpbmcg
V2ViS2l0CiBDb21taXR0ZWQgcjQ5ODI0OiA8aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvcjQ5
ODI0PgpAQCAtMjgxLDEzICsyMzksNiBAQCBOb3QgdXBkYXRpbmcgYnVnIDUwMDAwCiAgICAgICAg
ICAgICBvcHRpb25zLmNsb3NlX2J1ZyA9IEZhbHNlCiAgICAgICAgICAgICBzZWxmLmFzc2VydF9l
eGVjdXRlX291dHB1dHMoTGFuZCgpLCBbNTAwMDBdLCBvcHRpb25zPW9wdGlvbnMsIGV4cGVjdGVk
X2xvZ3M9ZXhwZWN0ZWRfbG9ncykKIAotICAgIGRlZiB0ZXN0X3ByZXBhcmVfcmV2ZXJ0KHNlbGYp
OgotICAgICAgICBleHBlY3RlZF9sb2dzID0gIlByZXBhcmluZyByZXZlcnQgZm9yIGJ1ZyA1MDAw
MC5cblVwZGF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5XG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4
ZWN1dGVfb3V0cHV0cyhQcmVwYXJlUmV2ZXJ0KCksIFs4NTIsICJSZWFzb24iXSwgb3B0aW9ucz1z
ZWxmLl9kZWZhdWx0X29wdGlvbnMoKSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQotCi0g
ICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAicHJlcGFyZS1yb2xsb3V0IGlzIGRlcHJlY2F0ZWQsIHVz
ZSBwcmVwYXJlLXJldmVydCBpbnN0ZWFkLlxuIiArIGV4cGVjdGVkX2xvZ3MKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKFByZXBhcmVSb2xsb3V0KCksIFs4NTIsICJSZWFzb24i
XSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29wdGlvbnMoKSwgZXhwZWN0ZWRfbG9ncz1leHBlY3Rl
ZF9sb2dzKQotCiAgICAgZGVmIHRlc3RfY3JlYXRlX3JldmVydChzZWxmKToKICAgICAgICAgZXhw
ZWN0ZWRfbG9ncyA9ICIiIlByZXBhcmluZyByZXZlcnQgZm9yIGJ1ZyA1MDAwMC4KIFVwZGF0aW5n
IHdvcmtpbmcgZGlyZWN0b3J5CkBAIC0zMTEsOSArMjYyLDYgQEAgd2hlcmUgQVRUQUNITUVOVF9J
RCBpcyB0aGUgSUQgb2YgdGhpcyBhdHRhY2htZW50LgogIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0
X2V4ZWN1dGVfb3V0cHV0cyhDcmVhdGVSZXZlcnQoKSwgWzg1MiwgIlJlYXNvbiJdLCBvcHRpb25z
PXNlbGYuX2RlZmF1bHRfb3B0aW9ucygpLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCiAK
LSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJjcmVhdGUtcm9sbG91dCBpcyBkZXByZWNhdGVkLCB1
c2UgY3JlYXRlLXJldmVydCBpbnN0ZWFkLlxuIiArIGV4cGVjdGVkX2xvZ3MKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKENyZWF0ZVJvbGxvdXQoKSwgWzg1MiwgIlJlYXNvbiJd
LCBvcHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0aW9ucygpLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVk
X2xvZ3MpCi0KICAgICBkZWYgdGVzdF9jcmVhdGVfcmV2ZXJ0X211bHRpcGxlX3JldmlzaW9uKHNl
bGYpOgogICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiUHJlcGFyaW5nIHJldmVydCBmb3IgYnVn
IDUwMDAwLgogUHJlcGFyaW5nIHJldmVydCBmb3IgYnVnIDUwMDAwLgpAQCAtNDMzLDkgKzM4MSw2
IEBAIENvbW1pdHRlZCByNDk4MjQgKDVAbWFpbik6IDxodHRwczovL2NvbW1pdHMud2Via2l0Lm9y
Zy81QG1haW4+JwogICAgICAgICB3aXRoIHNlbGYubW9ja19zdm5fcmVtb3RlKCk6CiAgICAgICAg
ICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoUmV2ZXJ0KCksIFs4NTIsICJSZWFzb24i
LCAiRGVzY3JpcHRpb24iXSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29wdGlvbnMoKSwgZXhwZWN0
ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQogCi0gICAgICAgICAgICBleHBlY3RlZF9sb2dzID0gInJv
bGxvdXQgaXMgZGVwcmVjYXRlZCwgdXNlIHJldmVydCBpbnN0ZWFkLlxuIiArIGV4cGVjdGVkX2xv
Z3MKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhSb2xsb3V0KCksIFs4
NTIsICJSZWFzb24iLCAiRGVzY3JpcHRpb24iXSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29wdGlv
bnMoKSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQotCiAgICAgZGVmIHRlc3RfcmV2ZXJ0
X3R3b19yZXZpc2lvbnMoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJQcmVwYXJp
bmcgcmV2ZXJ0IGZvciBidWcgNTAwMDAuCiBQcmVwYXJpbmcgcmV2ZXJ0IGZvciBidWcgNTAwMDUu
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3
YXJuaW5nc3lzdGVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vh
cmx5d2FybmluZ3N5c3RlbS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU5NDU4
ODA2ZjU5NDgxYmQ2NDIxMjgyZmI1NWI1YjViMjc4YTNhYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAg
QEAKLSMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jIENvcHlyaWdodCAoYykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24u
Ci0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQganNvbgotaW1wb3J0IGxvZ2dpbmcKLWZyb20gb3B0
cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCi1pbXBvcnQgc3lzCi0KLWZyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBzdHJpbmdfdXRpbHMKLQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxl
c3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LmVhcmx5d2Fy
bmluZ3N5c3RlbXRhc2sgaW1wb3J0IEVhcmx5V2FybmluZ1N5c3RlbVRhc2ssIEVhcmx5V2Fybmlu
Z1N5c3RlbVRhc2tEZWxlZ2F0ZQotZnJvbSB3ZWJraXRweS50b29sLmJvdC5qc2N0ZXN0cmVzdWx0
c3JlYWRlciBpbXBvcnQgSlNDVGVzdFJlc3VsdHNSZWFkZXIKLWZyb20gd2Via2l0cHkudG9vbC5i
b3QubGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzUmVhZGVy
Ci1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LnBhdGNoYW5hbHlzaXN0YXNrIGltcG9ydCBVbmFibGVU
b0FwcGx5UGF0Y2gsIFBhdGNoSXNOb3RWYWxpZCwgUGF0Y2hJc05vdEFwcGxpY2FibGUKLWZyb20g
d2Via2l0cHkudG9vbC5jb21tYW5kcy5kZXByZWNhdGVkY29tbWFuZCBpbXBvcnQgRGVwcmVjYXRl
ZENvbW1hbmQKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5xdWV1ZXMgaW1wb3J0IEFic3Ry
YWN0UmV2aWV3UXVldWUKLQotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0K
LUBEZXByZWNhdGVkQ29tbWFuZAotY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0oQWJz
dHJhY3RSZXZpZXdRdWV1ZSwgRWFybHlXYXJuaW5nU3lzdGVtVGFza0RlbGVnYXRlKToKLSAgICAj
IEZJWE1FOiBTd2l0Y2ggX2RlZmF1bHRfcnVuX3Rlc3RzIGZyb20gb3B0LWluIHRvIG9wdC1vdXQg
b25jZSBtb3JlIGJvdHMgYXJlIHJlYWR5IHRvIHJ1biB0ZXN0cy4KLSAgICBydW5fdGVzdHMgPSBG
YWxzZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBvcHRpb25zID0gW21ha2Vf
b3B0aW9uKCItLXJ1bi10ZXN0cyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJ1bl90ZXN0
cyIsIGRlZmF1bHQ9c2VsZi5ydW5fdGVzdHMsIGhlbHA9IlJ1biB0aGUgTGF5b3V0IHRlc3RzIGZv
ciBlYWNoIHBhdGNoIildCi0gICAgICAgIEFic3RyYWN0UmV2aWV3UXVldWUuX19pbml0X18oc2Vs
Ziwgb3B0aW9ucz1vcHRpb25zKQotCi0gICAgZGVmIGJlZ2luX3dvcmtfcXVldWUoc2VsZik6Ci0g
ICAgICAgIEFic3RyYWN0UmV2aWV3UXVldWUuYmVnaW5fd29ya19xdWV1ZShzZWxmKQotCi0gICAg
ICAgIGlmIHNlbGYuZ3JvdXAoKSA9PSAianNjIjoKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfcmVz
dWx0c19yZWFkZXIgPSBKU0NUZXN0UmVzdWx0c1JlYWRlcihzZWxmLl90b29sLCBzZWxmLl9wb3J0
LmpzY19yZXN1bHRzX2RpcmVjdG9yeSgpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2Vs
Zi5fdGVzdF9yZXN1bHRzX3JlYWRlciA9IExheW91dFRlc3RSZXN1bHRzUmVhZGVyKHNlbGYuX3Rv
b2wsIHNlbGYuX3BvcnQucmVzdWx0c19kaXJlY3RvcnkoKSwgc2VsZi5fbG9nX2RpcmVjdG9yeSgp
KQotCi0gICAgZGVmIF9mYWlsaW5nX3Rlc3RzX21lc3NhZ2Uoc2VsZiwgdGFzaywgcGF0Y2gpOgot
ICAgICAgICByZXN1bHRzID0gdGFzay5yZXN1bHRzX2Zyb21fcGF0Y2hfdGVzdF9ydW4ocGF0Y2gp
Ci0KLSAgICAgICAgaWYgbm90IHJlc3VsdHM6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0g
ICAgICAgIGlmIHJlc3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQoKToKLSAgICAg
ICAgICAgIHJldHVybiAiTnVtYmVyIG9mIHRlc3QgZmFpbHVyZXMgZXhjZWVkZWQgdGhlIGZhaWx1
cmUgbGltaXQuIgotICAgICAgICByZXR1cm4gIk5ldyBmYWlsaW5nIHRlc3RzOlxuJXMiICUgIlxu
Ii5qb2luKHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKQotCi0gICAgZGVmIF9wb3N0X3JlamVjdF9t
ZXNzYWdlX29uX2J1ZyhzZWxmLCB0b29sLCBwYXRjaCwgc3RhdHVzX2lkLCBleHRyYV9tZXNzYWdl
X3RleHQ9Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBleHRyYV9tZXNzYWdlX3RleHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gICMgRG9uJ3QgY29tbWVudCBvbiBCdWd6aWxsYSBpZiB3ZSBkb24ndCBoYXZl
IGZhaWxpbmcgdGVzdHMuCi0KLSAgICAgICAgbWVzc2FnZSA9ICJBdHRhY2htZW50ICVzIGRpZCBu
b3QgcGFzcyAlcyAoJXMpIiAlIChwYXRjaC5pZCgpLCBzZWxmLm5hbWUsIHNlbGYucG9ydF9uYW1l
KQotICAgICAgICBpZiBleHRyYV9tZXNzYWdlX3RleHQ6Ci0gICAgICAgICAgICBtZXNzYWdlICs9
ICJcblxuJXMiICUgZXh0cmFfbWVzc2FnZV90ZXh0Ci0gICAgICAgICMgRklYTUU6IFdlIG1pZ2h0
IHdhbnQgdG8gYWRkIHNvbWUgdGV4dCBhYm91dCByZWplY3RpbmcgZnJvbSB0aGUgY29tbWl0LXF1
ZXVlIGluCi0gICAgICAgICMgdGhlIGNhc2Ugd2hlcmUgcGF0Y2guY29tbWl0X3F1ZXVlKCkgaXNu
J3QgYWxyZWFkeSBzZXQgdG8gJy0nLgotICAgICAgICBpZiBub3Qgc2VsZi5fY2FuX2FjY2Vzc19i
dWcocGF0Y2guYnVnX2lkKCkpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNlbGYu
d2F0Y2hlcnM6Ci0gICAgICAgICAgICB0b29sLmJ1Z3MuYWRkX2NjX3RvX2J1ZyhwYXRjaC5idWdf
aWQoKSwgc2VsZi53YXRjaGVycykKLSAgICAgICAgdG9vbC5idWdzLnNldF9mbGFnX29uX2F0dGFj
aG1lbnQocGF0Y2guaWQoKSwgImNvbW1pdC1xdWV1ZSIsICItIiwgbWVzc2FnZSkKLQotICAgICMg
VGhpcyBleGlzdHMgZm9yIG1vY2tpbmcKLSAgICBkZWYgX2NyZWF0ZV90YXNrKHNlbGYsIHBhdGNo
KToKLSAgICAgICAgcmV0dXJuIEVhcmx5V2FybmluZ1N5c3RlbVRhc2soc2VsZiwgcGF0Y2gsIHNo
b3VsZF9ydW5fdGVzdHM9c2VsZi5fb3B0aW9ucy5ydW5fdGVzdHMsIHNob3VsZF9idWlsZD1zZWxm
LnNob3VsZF9idWlsZCkKLQotICAgIGRlZiByZXZpZXdfcGF0Y2goc2VsZiwgcGF0Y2gpOgotICAg
ICAgICB0YXNrID0gc2VsZi5fY3JlYXRlX3Rhc2socGF0Y2gpCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHN1Y2NlZWRlZCA9IHRhc2sucnVuKCkKLSAgICAgICAgICAgIHJldHVybiBzdWNjZWVk
ZWQKLSAgICAgICAgZXhjZXB0IFBhdGNoSXNOb3RWYWxpZDoKLSAgICAgICAgICAgIHJldHVybiBG
YWxzZQotICAgICAgICBleGNlcHQgVW5hYmxlVG9BcHBseVBhdGNoOgotICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0gICAgICAgIGV4Y2VwdCBQYXRjaElzTm90QXBwbGljYWJsZToKLSAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMgZToKLSAgICAg
ICAgICAgIHNlbGYuX3Bvc3RfcmVqZWN0X21lc3NhZ2Vfb25fYnVnKHNlbGYuX3Rvb2wsIHBhdGNo
LCB0YXNrLmZhaWx1cmVfc3RhdHVzX2lkLCBzZWxmLl9mYWlsaW5nX3Rlc3RzX21lc3NhZ2UodGFz
aywgcGF0Y2gpKQotICAgICAgICAgICAgcmVzdWx0c19hcmNoaXZlID0gdGFzay5yZXN1bHRzX2Fy
Y2hpdmVfZnJvbV9wYXRjaF90ZXN0X3J1bihwYXRjaCkKLSAgICAgICAgICAgIGlmIHJlc3VsdHNf
YXJjaGl2ZToKLSAgICAgICAgICAgICAgICBzZWxmLl91cGxvYWRfcmVzdWx0c19hcmNoaXZlX2Zv
cl9wYXRjaChwYXRjaCwgcmVzdWx0c19hcmNoaXZlKQotICAgICAgICAgICAgcmFpc2UgZQotCi0g
ICAgIyBFYXJseVdhcm5pbmdTeXN0ZW1EZWxlZ2F0ZSBtZXRob2RzCi0KLSAgICBkZWYgcGFyZW50
X2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLm5hbWUKLQotICAgIGRlZiBydW5f
Y29tbWFuZChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgc2VsZi5ydW5fd2Via2l0X3BhdGNoKGNv
bW1hbmQgKyBbc2VsZi5fZGVwcmVjYXRlZF9wb3J0LmZsYWcoKV0gKyAoWyctLWFyY2hpdGVjdHVy
ZT0lcycgJSBzZWxmLl9wb3J0LmFyY2hpdGVjdHVyZSgpXSBpZiBzZWxmLl9wb3J0LmFyY2hpdGVj
dHVyZSgpICE9IHNlbGYuX3BvcnQuREVGQVVMVF9BUkNISVRFQ1RVUkUgZWxzZSBbXSkpCi0KLSAg
ICBkZWYgdGVzdF9yZXN1bHRzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF9yZXN1
bHRzX3JlYWRlci5yZXN1bHRzKCkKLQotICAgIGRlZiBhcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRz
KHNlbGYsIHBhdGNoKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfcmVzdWx0c19yZWFkZXIu
YXJjaGl2ZShwYXRjaCkKLQotICAgIGRlZiBidWlsZF9zdHlsZShzZWxmKToKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2J1aWxkX3N0eWxlCi0KLSAgICBkZWYgZ3JvdXAoc2VsZik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9ncm91cAotCi0gICAgZGVmIHJlZmV0Y2hfcGF0Y2goc2VsZiwgcGF0Y2gpOgot
ICAgICAgICByZXR1cm4gc2VsZi5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQocGF0Y2guaWQo
KSkKLQotICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3Rf
cmVzdWx0cywgcmVzdWx0c19hcmNoaXZlKToKLSAgICAgICAgcGFzcwotCi0gICAgIyBTdGVwU2Vx
dWVuY2VFcnJvckhhbmRsZXIgbWV0aG9kcwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGhh
bmRsZV9zY3JpcHRfZXJyb3IoY2xzLCB0b29sLCBzdGF0ZSwgc2NyaXB0X2Vycm9yKToKLSAgICAg
ICAgIyBGSVhNRTogV2h5IGRvZXMgdGhpcyBub3QgZXhpdCgxKSBsaWtlIHRoZSBzdXBlcmNsYXNz
IGRvZXM/Ci0gICAgICAgIF9sb2cuZXJyb3Ioc2NyaXB0X2Vycm9yLm1lc3NhZ2Vfd2l0aF9vdXRw
dXQob3V0cHV0X2xpbWl0PTUwMDApKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGxvYWRf
ZXdzX2NsYXNzZXMoY2xzKToKLSAgICAgICAgZmlsZXN5c3RlbSA9IEZpbGVTeXN0ZW0oKQotICAg
ICAgICBqc29uX3BhdGggPSBmaWxlc3lzdGVtLmpvaW4oZmlsZXN5c3RlbS5kaXJuYW1lKGZpbGVz
eXN0ZW0ucGF0aF90b19tb2R1bGUoJ3dlYmtpdHB5LmNvbW1vbi5jb25maWcnKSksICdld3MuanNv
bicpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGV3c2VzID0ganNvbi5sb2FkcyhmaWxlc3lz
dGVtLnJlYWRfdGV4dF9maWxlKGpzb25fcGF0aCkpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y
OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBjbGFzc2VzID0gW10KLSAgICAg
ICAgZm9yIG5hbWUsIGNvbmZpZyBpbiBld3Nlcy5pdGVtcygpOgotICAgICAgICAgICAgaWYgc3lz
LnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gc3Ry
aW5nX3V0aWxzLmVuY29kZShuYW1lLCB0YXJnZXRfdHlwZT1zdHIpLnRyYW5zbGF0ZSgnIC0nKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gc3RyaW5nX3V0
aWxzLmVuY29kZShuYW1lLCB0YXJnZXRfdHlwZT1zdHIpLnRyYW5zbGF0ZShOb25lLCAnIC0nKQot
Ci0gICAgICAgICAgICBjbGFzc2VzLmFwcGVuZCh0eXBlKHRyYW5zbGF0ZWQsIChjbHMsKSwgewot
ICAgICAgICAgICAgICAgICduYW1lJzogY29uZmlnLmdldCgnbmFtZScsIGNvbmZpZ1sncG9ydCdd
ICsgJy1ld3MnKSwKLSAgICAgICAgICAgICAgICAncG9ydF9uYW1lJzogY29uZmlnWydwb3J0J10s
Ci0gICAgICAgICAgICAgICAgJ2FyY2hpdGVjdHVyZSc6IGNvbmZpZy5nZXQoJ2FyY2hpdGVjdHVy
ZScsIE5vbmUpLAotICAgICAgICAgICAgICAgICdfYnVpbGRfc3R5bGUnOiBjb25maWcuZ2V0KCdz
dHlsZScsICJyZWxlYXNlIiksCi0gICAgICAgICAgICAgICAgJ3dhdGNoZXJzJzogY29uZmlnLmdl
dCgnd2F0Y2hlcnMnLCBbXSksCi0gICAgICAgICAgICAgICAgJ3J1bl90ZXN0cyc6IGNvbmZpZy5n
ZXQoJ3J1blRlc3RzJywgY2xzLnJ1bl90ZXN0cyksCi0gICAgICAgICAgICAgICAgJ19ncm91cCc6
IGNvbmZpZy5nZXQoJ2dyb3VwJywgTm9uZSksCi0gICAgICAgICAgICAgICAgJ3Nob3VsZF9idWls
ZCc6IGNvbmZpZy5nZXQoJ3Nob3VsZEJ1aWxkJywgVHJ1ZSksCi0gICAgICAgICAgICB9KSkKLSAg
ICAgICAgcmV0dXJuIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTYzZjQ2MzkyNDJmNDYyNDJiM2FlNzll
MjgyNTUzNTQyOTNjNzJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdz
eXN0ZW1fdW5pdHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODYgKzAsMCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJp
Z2h0IChDKSAyMDE3LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1v
bi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuanNj
dGVzdHJlc3VsdHMgaW1wb3J0IEpTQ1Rlc3RSZXN1bHRzCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5u
ZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzCi1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfcmVzdWx0cwotZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCi1mcm9tIHdlYmtpdHB5
LnBvcnQuZmFjdG9yeSBpbXBvcnQgUG9ydEZhY3RvcnkKLWZyb20gd2Via2l0cHkudG9vbC5ib3Qu
cXVldWVlbmdpbmUgaW1wb3J0IFF1ZXVlRW5naW5lCi1mcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFu
ZHMuZWFybHl3YXJuaW5nc3lzdGVtIGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFu
ZHMucXVldWVzIGltcG9ydCBQYXRjaFByb2Nlc3NpbmdRdWV1ZQotZnJvbSB3ZWJraXRweS50b29s
LmNvbW1hbmRzLnF1ZXVlc3Rlc3QgaW1wb3J0IFF1ZXVlc1Rlc3QKLWZyb20gd2Via2l0cHkudG9v
bC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wsIE1vY2tPcHRpb25zCi0KLWZyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCi0KLQotIyBOZWVkZWQgdG8gZGVmaW5lIHBvcnRfbmFt
ZSwgdXNlZCBpbiBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbS5fX2luaXRfXwotY2xhc3MgVGVz
dEVXUyhBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbSk6Ci0gICAgcG9ydF9uYW1lID0gIndpbiIg
ICMgTmVlZHMgdG8gYmUgYSBwb3J0IHdoaWNoIHBvcnQvZmFjdG9yeSB1bmRlcnN0YW5kcy4KLSAg
ICBfYnVpbGRfc3R5bGUgPSBOb25lCi0gICAgX2dyb3VwID0gTm9uZQotCi0KLWNsYXNzIFRlc3RK
U0NFV1MoQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0pOgotICAgIHBvcnRfbmFtZSA9ICJtYWMi
ICAjIE5lZWRzIHRvIGJlIGEgcG9ydCB3aGljaCBwb3J0L2ZhY3RvcnkgdW5kZXJzdGFuZHMuCi0g
ICAgX2J1aWxkX3N0eWxlID0gTm9uZQotICAgIF9ncm91cCA9ICJqc2MiCi0KLQotY2xhc3MgQWJz
dHJhY3RFYXJseVdhcm5pbmdTeXN0ZW1UZXN0KFF1ZXVlc1Rlc3QpOgotICAgIGRlZiBfdGVzdF9t
ZXNzYWdlKHNlbGYsIGV3cywgcmVzdWx0cywgbWVzc2FnZSk6Ci0gICAgICAgIGV3cy5iaW5kX3Rv
X3Rvb2woTW9ja1Rvb2woKSkKLSAgICAgICAgZXdzLmhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAg
IGV3cy5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHBvcnQ9Tm9uZSwgY29uZmlybT1GYWxzZSkKLQot
ICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJl
ZDoKLSAgICAgICAgICAgIGV3cy5iZWdpbl93b3JrX3F1ZXVlKCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCBzZWxmLl9kZWZhdWx0X2JlZ2lu
X3dvcmtfcXVldWVfbG9ncyhld3MubmFtZSkpCi0KLSAgICAgICAgdGFzayA9IE1vY2soKQotICAg
ICAgICB0YXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1biA9IHJlc3VsdHMKLSAgICAgICAg
cGF0Y2ggPSBld3MuX3Rvb2wuYnVncy5mZXRjaF9hdHRhY2htZW50KDEwMDAwKQotICAgICAgICBz
ZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGV3cy5fZmFpbGluZ190ZXN0c19tZXNzYWdlKHRhc2ss
IHBhdGNoKSwgbWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2ZhaWxpbmdfdGVzdHNfbWVzc2FnZShz
ZWxmKToKLSAgICAgICAgZXdzID0gVGVzdEVXUygpCi0gICAgICAgIHJlc3VsdHMgPSBsYW1iZGEg
YTogTGF5b3V0VGVzdFJlc3VsdHMoW3Rlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KCJmb28uaHRtbCIs
IGZhaWx1cmVzPVt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUZXh0TWlzbWF0Y2goKV0pLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzLlRl
c3RSZXN1bHQoImJhci5odG1sIiwgZmFpbHVyZXM9W3Rlc3RfZmFpbHVyZXMuRmFpbHVyZVRleHRN
aXNtYXRjaCgpXSldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQ9RmFsc2UpCi0gICAgICAgIG1lc3Nh
Z2UgPSAiTmV3IGZhaWxpbmcgdGVzdHM6XG5mb28uaHRtbFxuYmFyLmh0bWwiCi0gICAgICAgIHNl
bGYuX3Rlc3RfbWVzc2FnZShld3MsIHJlc3VsdHMsIG1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9m
YWlsaW5nX2pzY190ZXN0c19tZXNzYWdlKHNlbGYpOgotICAgICAgICBld3MgPSBUZXN0SlNDRVdT
KCkKLSAgICAgICAgcmVzdWx0cyA9IGxhbWJkYSBhOiBKU0NUZXN0UmVzdWx0cyhGYWxzZSwgWyJl
czYueWFtbC9lczYvdHlwZWRfYXJyYXlzX0ludDhBcnJheS5qcy5kZWZhdWx0IiwgImVzNi55YW1s
L2VzNi90eXBlZF9hcnJheXNfVWludDhBcnJheS5qcy5kZWZhdWx0Il0pCi0gICAgICAgIG1lc3Nh
Z2UgPSAiTmV3IGZhaWxpbmcgdGVzdHM6XG5lczYueWFtbC9lczYvdHlwZWRfYXJyYXlzX0ludDhB
cnJheS5qcy5kZWZhdWx0XG5lczYueWFtbC9lczYvdHlwZWRfYXJyYXlzX1VpbnQ4QXJyYXkuanMu
ZGVmYXVsdFxuYXBpVGVzdHMiCi0gICAgICAgIHNlbGYuX3Rlc3RfbWVzc2FnZShld3MsIHJlc3Vs
dHMsIG1lc3NhZ2UpCi0KLQotY2xhc3MgTW9ja0Vhcmx5V2FybmluZ1N5c3RlbVRhc2tGb3JJbmNv
bmNsdXNpdmVKU0NSZXN1bHRzKEVhcmx5V2FybmluZ1N5c3RlbVRhc2spOgotICAgIGRlZiBfdGVz
dF9wYXRjaChzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdCgpCi0gICAgICAgIHJlc3VsdHMgPSBz
ZWxmLl9kZWxlZ2F0ZS50ZXN0X3Jlc3VsdHMoKQotICAgICAgICByZXR1cm4gYm9vbChyZXN1bHRz
KQotCi0KLWNsYXNzIE1vY2tBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbUZvckluY29uY2x1c2l2
ZUpTQ1Jlc3VsdHMoQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0pOgotICAgIGRlZiBfY3JlYXRl
X3Rhc2soc2VsZiwgcGF0Y2gpOgotICAgICAgICB0YXNrID0gTW9ja0Vhcmx5V2FybmluZ1N5c3Rl
bVRhc2tGb3JJbmNvbmNsdXNpdmVKU0NSZXN1bHRzKHNlbGYsIHBhdGNoLCBzZWxmLl9vcHRpb25z
LnJ1bl90ZXN0cykKLSAgICAgICAgcmV0dXJuIHRhc2sKLQotCi1jbGFzcyBFYXJseVdhcm5pbmdT
eXN0ZW1UZXN0KFF1ZXVlc1Rlc3QpOgotICAgIGRlZiBfZGVmYXVsdF9leHBlY3RlZF9sb2dzKHNl
bGYsIGV3cywgY29uY2x1c2l2ZSk6Ci0gICAgICAgIHN0cmluZ19yZXBsYWNlbWVudHMgPSB7Ci0g
ICAgICAgICAgICAibmFtZSI6IGV3cy5uYW1lLAotICAgICAgICAgICAgInBvcnQiOiBld3MucG9y
dF9uYW1lLAotICAgICAgICAgICAgImFyY2hpdGVjdHVyZSI6ICIgLS1hcmNoaXRlY3R1cmU9JXMi
ICUgZXdzLmFyY2hpdGVjdHVyZSBpZiBld3MuYXJjaGl0ZWN0dXJlIGVsc2UgIiIsCi0gICAgICAg
ICAgICAiYnVpbGRfc3R5bGUiOiBld3MuYnVpbGRfc3R5bGUoKSwKLSAgICAgICAgICAgICJncm91
cCI6IGV3cy5ncm91cCgpLAotICAgICAgICB9Ci0KLSAgICAgICAgaWYgZXdzLnNob3VsZF9idWls
ZDoKLSAgICAgICAgICAgIGJ1aWxkX2xpbmUgPSAiUnVubmluZzogd2Via2l0LXBhdGNoIGJ1aWxk
IC0tbm8tY2xlYW4gLS1uby11cGRhdGUgLS1idWlsZC1zdHlsZT0lKGJ1aWxkX3N0eWxlKXMgLS1n
cm91cD0lKGdyb3VwKXMgLS1wb3J0PSUocG9ydClzJShhcmNoaXRlY3R1cmUpc1xuIiAlIHN0cmlu
Z19yZXBsYWNlbWVudHMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJ1aWxkX2xpbmUgPSAi
IgotICAgICAgICBzdHJpbmdfcmVwbGFjZW1lbnRzWydidWlsZF9saW5lJ10gPSBidWlsZF9saW5l
Ci0KLSAgICAgICAgaWYgZXdzLnJ1bl90ZXN0czoKLSAgICAgICAgICAgIHJ1bl90ZXN0c19saW5l
ID0gIlJ1bm5pbmc6IHdlYmtpdC1wYXRjaCBidWlsZC1hbmQtdGVzdCAtLW5vLWNsZWFuIC0tbm8t
dXBkYXRlIC0tdGVzdCAtLW5vbi1pbnRlcmFjdGl2ZSAtLWJ1aWxkLXN0eWxlPSUoYnVpbGRfc3R5
bGUpcyAtLWdyb3VwPSUoZ3JvdXApcyAtLXBvcnQ9JShwb3J0KXMlKGFyY2hpdGVjdHVyZSlzXG4i
ICUgc3RyaW5nX3JlcGxhY2VtZW50cwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcnVuX3Rl
c3RzX2xpbmUgPSAiIgotICAgICAgICBzdHJpbmdfcmVwbGFjZW1lbnRzWydydW5fdGVzdHNfbGlu
ZSddID0gcnVuX3Rlc3RzX2xpbmUKLQotICAgICAgICBzdHJpbmdfcmVwbGFjZW1lbnRzWydyZXN1
bHRfbGluZXMnXSA9ICIiCi0KLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9IHsKLSAgICAgICAgICAg
ICJiZWdpbl93b3JrX3F1ZXVlIjogc2VsZi5fZGVmYXVsdF9iZWdpbl93b3JrX3F1ZXVlX2xvZ3Mo
ZXdzLm5hbWUpLAotICAgICAgICAgICAgInByb2Nlc3Nfd29ya19pdGVtIjogIiIiUnVubmluZzog
d2Via2l0LXBhdGNoIGNsZWFuIC0tcG9ydD0lKHBvcnQpcyUoYXJjaGl0ZWN0dXJlKXMKLVJ1bm5p
bmc6IHdlYmtpdC1wYXRjaCB1cGRhdGUgLS1wb3J0PSUocG9ydClzJShhcmNoaXRlY3R1cmUpcwot
UnVubmluZzogd2Via2l0LXBhdGNoIGFwcGx5LWF0dGFjaG1lbnQgLS1uby11cGRhdGUgLS1ub24t
aW50ZXJhY3RpdmUgMTAwMDAgLS1wb3J0PSUocG9ydClzJShhcmNoaXRlY3R1cmUpcwotUnVubmlu
Zzogd2Via2l0LXBhdGNoIGNoZWNrLXBhdGNoLXJlbGV2YW5jZSAtLXF1aWV0IC0tZ3JvdXA9JShn
cm91cClzIC0tcG9ydD0lKHBvcnQpcyUoYXJjaGl0ZWN0dXJlKXMKLSUoYnVpbGRfbGluZSlzJShy
dW5fdGVzdHNfbGluZSlzJShyZXN1bHRfbGluZXMpcyIiIiAlIHN0cmluZ19yZXBsYWNlbWVudHMs
Ci0gICAgICAgICAgICAiaGFuZGxlX3VuZXhwZWN0ZWRfZXJyb3IiOiAiTW9jayBlcnJvciBtZXNz
YWdlXG4iLAotICAgICAgICAgICAgImhhbmRsZV9zY3JpcHRfZXJyb3IiOiAiU2NyaXB0RXJyb3Ig
ZXJyb3IgbWVzc2FnZVxuXG5NT0NLIG91dHB1dFxuIiwKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gZXhwZWN0ZWRfbG9ncwotCi0gICAgZGVmIF90ZXN0X2V3cyhzZWxmLCBld3MsIHJlc3VsdHNf
YXJlX2NvbmNsdXNpdmU9VHJ1ZSk6Ci0gICAgICAgIGV3cy5iaW5kX3RvX3Rvb2woTW9ja1Rvb2wo
KSkKLSAgICAgICAgZXdzLmhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIG9wdGlvbnMgPSBNb2Nr
KCkKLSAgICAgICAgb3B0aW9ucy5wb3J0ID0gTm9uZQotICAgICAgICBvcHRpb25zLnJ1bl90ZXN0
cyA9IGV3cy5ydW5fdGVzdHMKLSAgICAgICAgc2VsZi5hc3NlcnRfcXVldWVfb3V0cHV0cyhld3Ms
IGV4cGVjdGVkX2xvZ3M9c2VsZi5fZGVmYXVsdF9leHBlY3RlZF9sb2dzKGV3cywgcmVzdWx0c19h
cmVfY29uY2x1c2l2ZSksIG9wdGlvbnM9b3B0aW9ucykKLQotICAgIGRlZiB0ZXN0X2V3c2VzKHNl
bGYpOgotICAgICAgICBjbGFzc2VzID0gQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0ubG9hZF9l
d3NfY2xhc3NlcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGFzc2VzKQotICAgICAgICBz
ZWxmLm1heERpZmYgPSBOb25lCi0gICAgICAgIGZvciBld3NfY2xhc3MgaW4gY2xhc3NlczoKLSAg
ICAgICAgICAgIHNlbGYuX3Rlc3RfZXdzKGV3c19jbGFzcygpKQotCi0gICAgZGVmIHRlc3RfaW5j
b25jbHVzaXZlX2pzY190ZXN0X3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgIGNsYXNzZXMgPSBNb2Nr
QWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW1Gb3JJbmNvbmNsdXNpdmVKU0NSZXN1bHRzLmxvYWRf
ZXdzX2NsYXNzZXMoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xhc3NlcykKLSAgICAgICAg
c2VsZi5tYXhEaWZmID0gTm9uZQotICAgICAgICB0ZXN0X2NsYXNzZXMgPSBmaWx0ZXIobGFtYmRh
IHg6IHgucnVuX3Rlc3RzIGFuZCB4Lmdyb3VwID09ICJqc2MiLCBjbGFzc2VzKQotICAgICAgICBm
b3IgZXdzX2NsYXNzIGluIHRlc3RfY2xhc3NlczoKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfZXdz
KGV3c19jbGFzcygpLCBGYWxzZSkKLQotICAgIGRlZiB0ZXN0X2V3c19uYW1lKHNlbGYpOgotICAg
ICAgICAjIFRoZXNlIGFyZSB0aGUgbmFtZXMgRVdTJ3MgaW5mcmFzdHJ1Y3R1cmUgZXhwZWN0cywg
Y2hlY2sgdGhhdCB0aGV5IHdvcmsKLSAgICAgICAgZXhwZWN0ZWRfbmFtZXMgPSB7Ci0gICAgICAg
ICAgICAnZ3RrLXdrMi1ld3MnLAotICAgICAgICAgICAgJ2lvcy1ld3MnLAotICAgICAgICAgICAg
J2lvcy1zaW0tZXdzJywKLSAgICAgICAgICAgICdqc2MtZXdzJywKLSAgICAgICAgICAgICdqc2Mt
aTM4Ni1ld3MnLAotICAgICAgICAgICAgJ2pzYy1taXBzLWV3cycsCi0gICAgICAgICAgICAnanNj
LWFybXY3LWV3cycsCi0gICAgICAgICAgICAnbWFjLWRlYnVnLWV3cycsCi0gICAgICAgICAgICAn
bWFjLWV3cycsCi0gICAgICAgICAgICAnbWFjLXdrMi1ld3MnLAotICAgICAgICAgICAgJ3dpbi1l
d3MnLAotICAgICAgICAgICAgJ3dwZS1ld3MnLAotICAgICAgICAgICAgJ3dpbmNhaXJvLWV3cycs
Ci0gICAgICAgIH0KLSAgICAgICAgY2xhc3NlcyA9IEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVt
LmxvYWRfZXdzX2NsYXNzZXMoKQotICAgICAgICBuYW1lcyA9IHtjbHMubmFtZSBmb3IgY2xzIGlu
IGNsYXNzZXN9Ci0gICAgICAgIG1pc3NpbmdfbmFtZXMgPSBleHBlY3RlZF9uYW1lcyAtIG5hbWVz
Ci0gICAgICAgIHVuZXhwZWN0ZWRfbmFtZXMgPSBuYW1lcyAtIGV4cGVjdGVkX25hbWVzCi0gICAg
ICAgIGlmIG1pc3NpbmdfbmFtZXM6Ci0gICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigi
J3t9JyBpcyBub3QgYSB2YWxpZCBFV1MgY29tbWFuZCBidXQgaXMgdXNlZCBieSBFV1MncyBpbmZy
YXN0cnVjdHVyZSIuZm9ybWF0KG1pc3NpbmdfbmFtZXMucG9wKCkpKQotICAgICAgICBpZiB1bmV4
cGVjdGVkX25hbWVzOgotICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIid7fScgaXMg
YSB2YWxpZCBFV1MgY29tbWFuZCBidXQgaXMgbm90IHVzZWQgYnkgRVdTJ3MgaW5mcmFzdHJ1Y3R1
cmUiLmZvcm1hdCh1bmV4cGVjdGVkX25hbWVzLnBvcCgpKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9maW5kdXNlcnMucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZmluZHVzZXJzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjYjYyMTMzNzdmYmY3NGZkNDNhMWQ1ZjQyODczZWRiODgxNjY5YjJmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9maW5kdXNlcnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0
NCArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIyBDb3B5cmlnaHQgKGMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNv
bW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5k
cy5kZXByZWNhdGVkY29tbWFuZCBpbXBvcnQgRGVwcmVjYXRlZENvbW1hbmQKLWZyb20gd2Via2l0
cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBDb21tYW5kCi0KLQotQERlcHJlY2F0ZWRD
b21tYW5kCi1jbGFzcyBGaW5kVXNlcnMoQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICJmaW5kLXVzZXJz
IgotICAgIGhlbHBfdGV4dCA9ICJGaW5kIHVzZXJzIG1hdGNoaW5nIHN1YnN0cmluZyIKLQotICAg
IGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBzZWFyY2hf
c3RyaW5nID0gYXJnc1swXQotICAgICAgICB1c2VycyA9IENvbW1pdHRlckxpc3QoKS5jb250cmli
dXRvcnNfYnlfc2VhcmNoX3N0cmluZyhzZWFyY2hfc3RyaW5nKQotICAgICAgICBmb3IgdXNlciBp
biB1c2VyczoKLSAgICAgICAgICAgIHByaW50KHVzZXIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZ2FyZGVub21hdGljLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2dhcmRlbm9tYXRpYy5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZmY3ZjVjYjI3NTljYjRkYzFjOWEzNzUzODk1ZWY3M2U4ZDA2OTRlZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZ2FyZGVub21hdGljLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsNjYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgYnVpbGRlcnMKLWZy
b20gd2Via2l0cHkucG9ydCBpbXBvcnQgZmFjdG9yeQotZnJvbSB3ZWJraXRweS50b29sLmNvbW1h
bmRzLmRlcHJlY2F0ZWRjb21tYW5kIGltcG9ydCBEZXByZWNhdGVkQ29tbWFuZAotZnJvbSB3ZWJr
aXRweS50b29sLmNvbW1hbmRzLnJlYmFzZWxpbmUgaW1wb3J0IEFic3RyYWN0UmViYXNlbGluaW5n
Q29tbWFuZAotZnJvbSB3ZWJraXRweS50b29sLnNlcnZlcnMuZ2FyZGVuaW5nc2VydmVyIGltcG9y
dCBHYXJkZW5pbmdIVFRQU2VydmVyCi0KLQotQERlcHJlY2F0ZWRDb21tYW5kCi1jbGFzcyBHYXJk
ZW5PTWF0aWMoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKLSAgICBuYW1lID0gImdhcmRl
bi1vLW1hdGljIgotICAgIGhlbHBfdGV4dCA9ICJDb21tYW5kIGZvciBnYXJkZW5pbmcgdGhlIFdl
YktpdCB0cmVlLiIKLQotICAgICMgUkVWSUVXOiBSZXNldCB0aGUgb3B0aW9uIGhlcmUgYmVjYXVz
ZSBnbG9iYmluZyBpc24ndCB1c2VmdWwgZm9yIHVzLCBidXQgYXBwYXJlbnRseQotICAgICMgaXQn
cyB1c2VmdWwgZm9yIG90aGVyIHJlYmFzZWxpbmluZyBjb21tYW5kcyBiZWNhdXNlIHVzZV9nbG9i
cz1UcnVlIGlzIHNldCBpbiBwYXJlbnQuCi0gICAgcGxhdGZvcm1fb3B0aW9ucyA9IGZhY3Rvcnku
cGxhdGZvcm1fb3B0aW9ucygpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHN1
cGVyKEdhcmRlbk9NYXRpYywgc2VsZikuX19pbml0X18ob3B0aW9ucz0oc2VsZi5wbGF0Zm9ybV9v
cHRpb25zICsgWwotICAgICAgICAgICAgc2VsZi5tb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc19v
cHRpb24sCi0gICAgICAgICAgICBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5X29wdGlvbiwKLSAgICAg
ICAgICAgIHNlbGYubm9fb3B0aW1pemVfb3B0aW9uLAotICAgICAgICAgICAgXSkpCi0KLSAgICBk
ZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgcHJpbnQoIlRo
aXMgY29tbWFuZCBydW5zIGEgbG9jYWwgSFRUUCBzZXJ2ZXIgdGhhdCBjaGFuZ2VzIHlvdXIgd29y
a2luZyBjb3B5IikKLSAgICAgICAgcHJpbnQoImJhc2VkIG9uIHRoZSBhY3Rpb25zIHlvdSB0YWtl
IGluIHRoZSB3ZWItYmFzZWQgVUkuIikKLQotICAgICAgICBhcmdzID0ge30KLSAgICAgICAgaWYg
b3B0aW9ucy5wbGF0Zm9ybToKLSAgICAgICAgICAgICMgRklYTUU6IFRoaXMgYXNzdW1lcyB0aGF0
IHRoZSBwb3J0IGltcGxlbWVudGF0aW9uIChjaHJvbWl1bS0sIGd0ay0sIGV0Yy4pIGlzIHRoZSBm
aXJzdCBwYXJ0IG9mIG9wdGlvbnMucGxhdGZvcm0uCi0gICAgICAgICAgICBhcmdzWydwbGF0Zm9y
bSddID0gb3B0aW9ucy5wbGF0Zm9ybS5zcGxpdCgnLScpWzBdCi0gICAgICAgICAgICBidWlsZGVy
ID0gYnVpbGRlcnMuYnVpbGRlcl9uYW1lX2Zvcl9wb3J0X25hbWUob3B0aW9ucy5wbGF0Zm9ybSkK
LSAgICAgICAgICAgIGlmIGJ1aWxkZXI6Ci0gICAgICAgICAgICAgICAgYXJnc1snYnVpbGRlcidd
ID0gYnVpbGRlcgotICAgICAgICBpZiBvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5OgotICAgICAg
ICAgICAgYXJnc1sndXNlTG9jYWxSZXN1bHRzJ10gPSAidHJ1ZSIKLQotICAgICAgICBodHRwZCA9
IEdhcmRlbmluZ0hUVFBTZXJ2ZXIoaHR0cGRfcG9ydD04MTI3LCBjb25maWc9eyd0b29sJzogdG9v
bCwgJ29wdGlvbnMnOiBvcHRpb25zfSkKLSAgICAgICAgc2VsZi5fdG9vbC51c2VyLm9wZW5fdXJs
KGh0dHBkLnVybChhcmdzKSkKLQotICAgICAgICBwcmludCgiTG9jYWwgSFRUUCBzZXJ2ZXIgc3Rh
cnRlZC4iKQotICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9vcGVuYnVncy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9vcGVuYnVncy5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDJlNDZiNDI4ZGMzYTY4MmNhOTBlMDRhNmFjMjY4OWMwYTI1NTQwMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvb3BlbmJ1Z3MucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2
NyArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCByZQot
aW1wb3J0IHN5cwotCi1mcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQg
Q29tbWFuZAotZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmRlcHJlY2F0ZWRjb21tYW5kIGlt
cG9ydCBEZXByZWNhdGVkQ29tbWFuZAotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCi0KLQotQERlcHJlY2F0ZWRDb21tYW5kCi1jbGFzcyBPcGVuQnVncyhDb21tYW5kKToKLSAg
ICBuYW1lID0gIm9wZW4tYnVncyIKLSAgICBoZWxwX3RleHQgPSAiRmluZHMgYWxsIGJ1ZyBudW1i
ZXJzIHBhc3NlZCBpbiBhcmd1bWVudHMgKG9yIHN0ZGluIGlmIG5vIGFyZ3MgcHJvdmlkZWQpIGFu
ZCBvcGVucyB0aGVtIGluIGEgd2ViIGJyb3dzZXIiCi0KLSAgICBidWdfbnVtYmVyX3JlZ2V4cCA9
IHJlLmNvbXBpbGUociJcYlxkezQsNn1cYiIpCi0KLSAgICBkZWYgX29wZW5fYnVncyhzZWxmLCBi
dWdfaWRzKToKLSAgICAgICAgZm9yIGJ1Z19pZCBpbiBidWdfaWRzOgotICAgICAgICAgICAgYnVn
X3VybCA9IHNlbGYuX3Rvb2wuYnVncy5idWdfdXJsX2Zvcl9idWdfaWQoYnVnX2lkKQotICAgICAg
ICAgICAgc2VsZi5fdG9vbC51c2VyLm9wZW5fdXJsKGJ1Z191cmwpCi0KLSAgICAjIF9maW5kX2J1
Z3NfaW5fc3RyaW5nIG1vc3RseSBleGlzdHMgZm9yIGVhc3kgdW5pdCB0ZXN0aW5nLgotICAgIGRl
ZiBfZmluZF9idWdzX2luX3N0cmluZyhzZWxmLCBzdHJpbmcpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5idWdfbnVtYmVyX3JlZ2V4cC5maW5kYWxsKHN0cmluZykKLQotICAgIGRlZiBfZmluZF9idWdz
X2luX2l0ZXJhYmxlKHNlbGYsIGl0ZXJhYmxlKToKLSAgICAgICAgcmV0dXJuIHN1bShbc2VsZi5f
ZmluZF9idWdzX2luX3N0cmluZyhzdHJpbmcpIGZvciBzdHJpbmcgaW4gaXRlcmFibGVdLCBbXSkK
LQotICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBp
ZiBhcmdzOgotICAgICAgICAgICAgYnVnX2lkcyA9IHNlbGYuX2ZpbmRfYnVnc19pbl9pdGVyYWJs
ZShhcmdzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBUaGlzIHdvbid0IG9wZW4gYnVn
cyB1bnRpbCBzdGRpbiBpcyBjbG9zZWQgYnV0IGNvdWxkIGJlIG1hZGUgdG8gZWFzaWx5LiAgVGhh
dCB3b3VsZCBqdXN0IG1ha2UgdW5pdCB0ZXN0aW5nIHNsaWdodGx5IGhhcmRlci4KLSAgICAgICAg
ICAgIGJ1Z19pZHMgPSBzZWxmLl9maW5kX2J1Z3NfaW5faXRlcmFibGUoc3lzLnN0ZGluKQotCi0g
ICAgICAgIF9sb2cuaW5mbygiJXMgYnVncyBmb3VuZCBpbiBpbnB1dC4iICUgbGVuKGJ1Z19pZHMp
KQotCi0gICAgICAgIHNlbGYuX29wZW5fYnVncyhidWdfaWRzKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL29wZW5idWdzX3VuaXR0ZXN0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL29wZW5idWdzX3VuaXR0ZXN0LnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YThlODZlZTc2ZjI1Y2M2NGI0MzcxM2JiNDQ4
ZTY4Mjk3Yjk0Y2VlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9vcGVuYnVnc191bml0dGVz
dC5weQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9t
IHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAot
ZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLm9wZW5idWdzIGltcG9ydCBPcGVuQnVncwotCi0K
LWNsYXNzIE9wZW5CdWdzVGVzdChDb21tYW5kc1Rlc3QpOgotCi0gICAgZmluZF9idWdzX2luX3N0
cmluZ19leHBlY3RhdGlvbnMgPSBbCi0gICAgICAgIFsiMTIzIiwgW11dLAotICAgICAgICBbIjEy
MzQiLCBbIjEyMzQiXV0sCi0gICAgICAgIFsiMTIzNDUiLCBbIjEyMzQ1Il1dLAotICAgICAgICBb
IjEyMzQ1NiIsIFsiMTIzNDU2Il1dLAotICAgICAgICBbIjEyMzQ1NjciLCBbXV0sCi0gICAgICAg
IFsiIDEyMzQ1NiAyMzQ1NjciLCBbIjEyMzQ1NiIsICIyMzQ1NjciXV0sCi0gICAgXQotCi0gICAg
ZGVmIHRlc3RfZmluZF9idWdzX2luX3N0cmluZyhzZWxmKToKLSAgICAgICAgb3BlbmJ1Z3MgPSBP
cGVuQnVncygpCi0gICAgICAgIGZvciBleHBlY3RhdGlvbiBpbiBzZWxmLmZpbmRfYnVnc19pbl9z
dHJpbmdfZXhwZWN0YXRpb25zOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVuYnVn
cy5fZmluZF9idWdzX2luX3N0cmluZyhleHBlY3RhdGlvblswXSksIGV4cGVjdGF0aW9uWzFdKQot
Ci0gICAgZGVmIHRlc3RfYXJnc19wYXJzaW5nKHNlbGYpOgotICAgICAgICBleHBlY3RlZF9sb2dz
ID0gIjIgYnVncyBmb3VuZCBpbiBpbnB1dC5cbk1PQ0s6IHVzZXIub3Blbl91cmw6IGh0dHA6Ly9l
eGFtcGxlLmNvbS8xMjM0NVxuTU9DSzogdXNlci5vcGVuX3VybDogaHR0cDovL2V4YW1wbGUuY29t
LzIzNDU2XG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhPcGVuQnVncygp
LCBbIjEyMzQ1XG4yMzQ1NiJdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllcy5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzLnB5CmluZGV4IDI2YmMz
OWIwZTA4NTBkMmIyZjc4ZGUxZjY1NmFmODVmOTJhM2MyMTcuLjYxYjNmYjRhZTRjNzhjMGVkODI3
MjdmMWZiNGMyZDljYTllZTYzZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWVyaWVzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9xdWVyaWVzLnB5CkBAIC01Myw3ICs1Myw2IEBAIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLmxheW91dF90ZXN0X2ZpbmRlciBpbXBvcnQgTGF5b3V0VGVz
dEZpbmRlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9leHBlY3RhdGlv
bnMgaW1wb3J0IFRlc3RFeHBlY3RhdGlvbnMKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgcGxh
dGZvcm1fb3B0aW9ucywgY29uZmlndXJhdGlvbl9vcHRpb25zCiBmcm9tIHdlYmtpdHB5LnRvb2wu
Y29tbWFuZHMuYWJzdHJhY3RzZXF1ZW5jZWRjb21tYW5kIGltcG9ydCBBYnN0cmFjdFNlcXVlbmNl
ZENvbW1hbmQKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5kZXByZWNhdGVkY29tbWFuZCBp
bXBvcnQgRGVwcmVjYXRlZENvbW1hbmQKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0
b29sIGltcG9ydCBDb21tYW5kCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
QEAgLTY4LDU2MSArNjcsMyBAQCBjbGFzcyBTdWdnZXN0UmV2aWV3ZXJzKEFic3RyYWN0U2VxdWVu
Y2VkQ29tbWFuZCk6CiAKICAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJn
cywgdG9vbCk6CiAgICAgICAgIG9wdGlvbnMuc3VnZ2VzdF9yZXZpZXdlcnMgPSBUcnVlCi0KLQot
QERlcHJlY2F0ZWRDb21tYW5kCi1jbGFzcyBCdWdzVG9Db21taXQoQ29tbWFuZCk6Ci0gICAgbmFt
ZSA9ICJidWdzLXRvLWNvbW1pdCIKLSAgICBoZWxwX3RleHQgPSAiTGlzdCBidWdzIGluIHRoZSBj
b21taXQtcXVldWUiCi0KLSAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29s
KToKLSAgICAgICAgIyBGSVhNRTogVGhpcyBjb21tYW5kIGlzIHBvb3JseSBuYW1lZC4gIEl0J3Mg
ZmV0Y2hpbmcgdGhlIGNvbW1pdC1xdWV1ZSBsaXN0IGhlcmUuICBUaGUgbmFtZSBpbXBsaWVzIGl0
J3MgZmV0Y2hpbmcgcGVuZGluZy1jb21taXQgKGFsbCByKydkIHBhdGNoZXMpLgotICAgICAgICBi
dWdfaWRzID0gdG9vbC5idWdzLnF1ZXJpZXMuZmV0Y2hfYnVnX2lkc19mcm9tX2NvbW1pdF9xdWV1
ZSgpCi0gICAgICAgIGZvciBidWdfaWQgaW4gYnVnX2lkczoKLSAgICAgICAgICAgIHByaW50KCIl
cyIgJSBidWdfaWQpCi0KLQotQERlcHJlY2F0ZWRDb21tYW5kCi1jbGFzcyBQYXRjaGVzSW5Db21t
aXRRdWV1ZShDb21tYW5kKToKLSAgICBuYW1lID0gInBhdGNoZXMtaW4tY29tbWl0LXF1ZXVlIgot
ICAgIGhlbHBfdGV4dCA9ICJMaXN0IHBhdGNoZXMgaW4gdGhlIGNvbW1pdC1xdWV1ZSIKLQotICAg
IGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBwYXRjaGVz
ID0gdG9vbC5idWdzLnF1ZXJpZXMuZmV0Y2hfcGF0Y2hlc19mcm9tX2NvbW1pdF9xdWV1ZSgpCi0g
ICAgICAgIF9sb2cuaW5mbygiUGF0Y2hlcyBpbiBjb21taXQgcXVldWU6IikKLSAgICAgICAgZm9y
IHBhdGNoIGluIHBhdGNoZXM6Ci0gICAgICAgICAgICBwcmludChwYXRjaC51cmwoKSkKLQotCi1A
RGVwcmVjYXRlZENvbW1hbmQKLWNsYXNzIFBhdGNoZXNUb0NvbW1pdFF1ZXVlKENvbW1hbmQpOgot
ICAgIG5hbWUgPSAicGF0Y2hlcy10by1jb21taXQtcXVldWUiCi0gICAgaGVscF90ZXh0ID0gIlBh
dGNoZXMgd2hpY2ggc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBjb21taXQgcXVldWUiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIG9wdGlvbnMgPSBbCi0gICAgICAgICAgICBtYWtl
X29wdGlvbigiLS1idWdzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0iYnVncyIsIGhlbHA9
Ik91dHB1dCBidWcgbGlua3MgaW5zdGVhZCBvZiBwYXRjaCBsaW5rcyIpLAotICAgICAgICBdCi0g
ICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgb3B0aW9ucz1vcHRpb25zKQotCi0gICAgQHN0
YXRpY21ldGhvZAotICAgIGRlZiBfbmVlZHNfY29tbWl0X3F1ZXVlKHBhdGNoKToKLSAgICAgICAg
aWYgcGF0Y2guY29tbWl0X3F1ZXVlKCkgPT0gIisiOiAgIyBJZiBpdCdzIGFscmVhZHkgY3ErLCBp
Z25vcmUgdGhlIHBhdGNoLgotICAgICAgICAgICAgX2xvZy5pbmZvKCIlcyBhbHJlYWR5IGhhcyBj
cT0lcyIgJSAocGF0Y2guaWQoKSwgcGF0Y2guY29tbWl0X3F1ZXVlKCkpKQotICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCi0KLSAgICAgICAgIyBXZSBvbmx5IG5lZWQgdG8gd29ycnkgYWJvdXQgcGF0
Y2hlcyBmcm9tIGNvbnRyaWJ1dGVycyB3aG8gYXJlIG5vdCB5ZXQgY29tbWl0dGVycy4KLSAgICAg
ICAgY29tbWl0dGVyX3JlY29yZCA9IENvbW1pdHRlckxpc3QoKS5jb21taXR0ZXJfYnlfZW1haWwo
cGF0Y2guYXR0YWNoZXJfZW1haWwoKSkKLSAgICAgICAgaWYgY29tbWl0dGVyX3JlY29yZDoKLSAg
ICAgICAgICAgIF9sb2cuaW5mbygiJXMgY29tbWl0dGVyID0gJXMiICUgKHBhdGNoLmlkKCksIGNv
bW1pdHRlcl9yZWNvcmQpKQotICAgICAgICByZXR1cm4gbm90IGNvbW1pdHRlcl9yZWNvcmQKLQot
ICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBwYXRj
aGVzID0gdG9vbC5idWdzLnF1ZXJpZXMuZmV0Y2hfcGF0Y2hlc19mcm9tX3BlbmRpbmdfY29tbWl0
X2xpc3QoKQotICAgICAgICBwYXRjaGVzX25lZWRpbmdfY3EgPSBmaWx0ZXIoc2VsZi5fbmVlZHNf
Y29tbWl0X3F1ZXVlLCBwYXRjaGVzKQotICAgICAgICBpZiBvcHRpb25zLmJ1Z3M6Ci0gICAgICAg
ICAgICBidWdzX25lZWRpbmdfY3EgPSBtYXAobGFtYmRhIHBhdGNoOiBwYXRjaC5idWdfaWQoKSwg
cGF0Y2hlc19uZWVkaW5nX2NxKQotICAgICAgICAgICAgYnVnc19uZWVkaW5nX2NxID0gc29ydGVk
KHNldChidWdzX25lZWRpbmdfY3EpKQotICAgICAgICAgICAgZm9yIGJ1Z19pZCBpbiBidWdzX25l
ZWRpbmdfY3E6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIiVzIiAlIHRvb2wuYnVncy5idWdfdXJs
X2Zvcl9idWdfaWQoYnVnX2lkKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZvciBwYXRj
aCBpbiBwYXRjaGVzX25lZWRpbmdfY3E6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIiVzIiAlIHRv
b2wuYnVncy5hdHRhY2htZW50X3VybF9mb3JfaWQocGF0Y2guaWQoKSwgYWN0aW9uPSJlZGl0Iikp
Ci0KLQotQERlcHJlY2F0ZWRDb21tYW5kCi1jbGFzcyBQYXRjaGVzVG9SZXZpZXcoQ29tbWFuZCk6
Ci0gICAgbmFtZSA9ICJwYXRjaGVzLXRvLXJldmlldyIKLSAgICBoZWxwX3RleHQgPSAiTGlzdCBi
dWdzIHdoaWNoIGhhdmUgYXR0YWNobWVudHMgcGVuZGluZyByZXZpZXciCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZik6Ci0gICAgICAgIG9wdGlvbnMgPSBbCi0gICAgICAgICAgICBtYWtlX29wdGlv
bigiLS1hbGwiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0iU2hvdyBhbGwgYnVncyByZWdhcmRsZXNzIG9mIHdobyBpcyBvbiBDQyAoaXQgbWlnaHQg
dGFrZSBhIHdoaWxlKSIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0taW5jbHVkZS1jcS1k
ZW5pZWQiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0iQnkgZGVmYXVsdCwgcj8gcGF0Y2hlcyB3aXRoIGNxLSBhcmUgb21pdHRlZCB1bmxlc3MgdGhp
cyBvcHRpb24gaXMgc2V0IiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1jYy1lbWFpbCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTcGVjaWZpZXMgdGhlIGVtYWlsIG9uIHRo
ZSBDQyBmaWVsZCAoZGVmYXVsdHMgdG8geW91ciBidWd6aWxsYSBsb2dpbiBlbWFpbCkiKSwKLSAg
ICAgICAgXQotICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsIG9wdGlvbnM9b3B0aW9ucykK
LQotICAgIGRlZiBfcHJpbnRfcmVwb3J0KHNlbGYsIHJlcG9ydCwgY2NfZW1haWwsIHByaW50X2Fs
bCk6Ci0gICAgICAgIGlmIHByaW50X2FsbDoKLSAgICAgICAgICAgIHByaW50KCJCdWdzIHdpdGgg
YXR0YWNobWVudHMgcGVuZGluZyByZXZpZXc6IikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHByaW50KCJCdWdzIHdpdGggYXR0YWNobWVudHMgcGVuZGluZyByZXZpZXcgdGhhdCBoYXMgJXMg
aW4gdGhlIENDIGxpc3Q6IiAlIGNjX2VtYWlsKQotCi0gICAgICAgIHByaW50KCJodHRwOi8vd2Vi
a2l0Lm9yZy9iL2J1Z2lkICAgRGVzY3JpcHRpb24gKGFnZSBpbiBkYXlzKSIpCi0gICAgICAgIGZv
ciByb3cgaW4gcmVwb3J0OgotICAgICAgICAgICAgcHJpbnQoIiVzICglZCkiICUgKHJvd1sxXSwg
cm93WzBdKSkKLQotICAgICAgICBwcmludCgiVG90YWw6ICVkIiAlIGxlbihyZXBvcnQpKQotCi0g
ICAgZGVmIF9nZW5lcmF0ZV9yZXBvcnQoc2VsZiwgYnVncywgaW5jbHVkZV9jcV9kZW5pZWQpOgot
ICAgICAgICByZXBvcnQgPSBbXQotCi0gICAgICAgIGZvciBidWcgaW4gYnVnczoKLSAgICAgICAg
ICAgIHBhdGNoID0gYnVnLnVucmV2aWV3ZWRfcGF0Y2hlcygpWy0xXQotCi0gICAgICAgICAgICBp
ZiBub3QgaW5jbHVkZV9jcV9kZW5pZWQgYW5kIHBhdGNoLmNvbW1pdF9xdWV1ZSgpID09ICItIjoK
LSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBhZ2VfaW5fZGF5cyA9IChk
YXRldGltZS50b2RheSgpIC0gcGF0Y2guYXR0YWNoX2RhdGUoKSkuZGF5cwotICAgICAgICAgICAg
cmVwb3J0LmFwcGVuZCgoYWdlX2luX2RheXMsICJodHRwOi8vd2Via2l0Lm9yZy9iLyUtN3MgJXMi
ICUgKGJ1Zy5pZCgpLCBidWcudGl0bGUoKSkpKQotCi0gICAgICAgIHJlcG9ydC5zb3J0KCkKLSAg
ICAgICAgcmV0dXJuIHJlcG9ydAotCi0gICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJn
cywgdG9vbCk6Ci0gICAgICAgIHRvb2wuYnVncy5hdXRoZW50aWNhdGUoKQotCi0gICAgICAgIGNj
X2VtYWlsID0gb3B0aW9ucy5jY19lbWFpbAotICAgICAgICBpZiBub3QgY2NfZW1haWwgYW5kIG5v
dCBvcHRpb25zLmFsbDoKLSAgICAgICAgICAgIGNjX2VtYWlsID0gdG9vbC5idWdzLnVzZXJuYW1l
Ci0KLSAgICAgICAgYnVncyA9IHRvb2wuYnVncy5xdWVyaWVzLmZldGNoX2J1Z3NfZnJvbV9yZXZp
ZXdfcXVldWUoY2NfZW1haWw9Y2NfZW1haWwpCi0gICAgICAgIHJlcG9ydCA9IHNlbGYuX2dlbmVy
YXRlX3JlcG9ydChidWdzLCBvcHRpb25zLmluY2x1ZGVfY3FfZGVuaWVkKQotICAgICAgICBzZWxm
Ll9wcmludF9yZXBvcnQocmVwb3J0LCBjY19lbWFpbCwgb3B0aW9ucy5hbGwpCi0KLQotQERlcHJl
Y2F0ZWRDb21tYW5kCi1jbGFzcyBXaGF0QnJva2UoQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICJ3aGF0
LWJyb2tlIgotICAgIGhlbHBfdGV4dCA9ICJQcmludCBmYWlsaW5nIGJ1aWxkYm90cyAoJXMpIGFu
ZCB3aGF0IHJldmlzaW9ucyBicm9rZSB0aGVtIiAlIGNvbmZpZ191cmxzLmJ1aWxkYm90X3VybAot
Ci0gICAgZGVmIF9wcmludF9idWlsZGVyX2xpbmUoc2VsZiwgYnVpbGRlcl9uYW1lLCBtYXhfbmFt
ZV93aWR0aCwgc3RhdHVzX21lc3NhZ2UpOgotICAgICAgICBwcmludCgiJXMgOiAlcyIgJSAoYnVp
bGRlcl9uYW1lLmxqdXN0KG1heF9uYW1lX3dpZHRoKSwgc3RhdHVzX21lc3NhZ2UpKQotCi0gICAg
ZGVmIF9wcmludF9ibGFtZV9pbmZvcm1hdGlvbl9mb3JfYnVpbGRlcihzZWxmLCBidWlsZGVyX3N0
YXR1cywgbmFtZV93aWR0aCwgYXZvaWRfZmxha2V5X3Rlc3RzPVRydWUpOgotICAgICAgICBidWls
ZGVyID0gc2VsZi5fdG9vbC5idWlsZGJvdC5idWlsZGVyX3dpdGhfbmFtZShidWlsZGVyX3N0YXR1
c1sibmFtZSJdKQotICAgICAgICByZWRfYnVpbGQgPSBidWlsZGVyLmJ1aWxkKGJ1aWxkZXJfc3Rh
dHVzWyJidWlsZF9udW1iZXIiXSkKLSAgICAgICAgcmVncmVzc2lvbl93aW5kb3cgPSBidWlsZGVy
LmZpbmRfcmVncmVzc2lvbl93aW5kb3cocmVkX2J1aWxkKQotICAgICAgICBpZiBub3QgcmVncmVz
c2lvbl93aW5kb3cuZmFpbGluZ19idWlsZCgpOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRfYnVp
bGRlcl9saW5lKGJ1aWxkZXIubmFtZSgpLCBuYW1lX3dpZHRoLCAiRkFJTCAoZXJyb3IgbG9hZGlu
ZyBidWlsZCBpbmZvcm1hdGlvbikiKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG5v
dCByZWdyZXNzaW9uX3dpbmRvdy5idWlsZF9iZWZvcmVfZmFpbHVyZSgpOgotICAgICAgICAgICAg
c2VsZi5fcHJpbnRfYnVpbGRlcl9saW5lKGJ1aWxkZXIubmFtZSgpLCBuYW1lX3dpZHRoLCAiRkFJ
TCAoYmxhbWUtbGlzdDogc29tZXRpbWUgYmVmb3JlICVzPykiICUgcmVncmVzc2lvbl93aW5kb3cu
ZmFpbGluZ19idWlsZCgpLnJldmlzaW9uKCkpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAg
ICByZXZpc2lvbnMgPSByZWdyZXNzaW9uX3dpbmRvdy5yZXZpc2lvbnMoKQotICAgICAgICBmaXJz
dF9mYWlsdXJlX21lc3NhZ2UgPSAiIgotICAgICAgICBpZiAocmVncmVzc2lvbl93aW5kb3cuZmFp
bGluZ19idWlsZCgpID09IGJ1aWxkZXIuYnVpbGQoYnVpbGRlcl9zdGF0dXNbImJ1aWxkX251bWJl
ciJdKSk6Ci0gICAgICAgICAgICBmaXJzdF9mYWlsdXJlX21lc3NhZ2UgPSAiIEZJUlNUIEZBSUxV
UkUsIHBvc3NpYmx5IGEgZmxha3kgdGVzdCIKLSAgICAgICAgc2VsZi5fcHJpbnRfYnVpbGRlcl9s
aW5lKGJ1aWxkZXIubmFtZSgpLCBuYW1lX3dpZHRoLCAiRkFJTCAoYmxhbWUtbGlzdDogJXMlcyki
ICUgKHJldmlzaW9ucywgZmlyc3RfZmFpbHVyZV9tZXNzYWdlKSkKLSAgICAgICAgZm9yIHJldmlz
aW9uIGluIHJldmlzaW9uczoKLSAgICAgICAgICAgIGNvbW1pdF9pbmZvID0gc2VsZi5fdG9vbC5j
aGVja291dCgpLmNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lvbihyZXZpc2lvbikKLSAgICAgICAgICAg
IGlmIGNvbW1pdF9pbmZvOgotICAgICAgICAgICAgICAgIHByaW50KGNvbW1pdF9pbmZvLmJsYW1l
X3N0cmluZyhzZWxmLl90b29sLmJ1Z3MpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBwcmludCgiRkFJTEVEIHRvIGZldGNoIENvbW1pdEluZm8gZm9yIHIlcywgbGlrZWx5IG1p
c3NpbmcgQ2hhbmdlTG9nIiAlIHJldmlzaW9uKQotCi0gICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0
aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIGJ1aWxkZXJfc3RhdHVzZXMgPSB0b29sLmJ1aWxk
Ym90LmJ1aWxkZXJfc3RhdHVzZXMoKQotICAgICAgICBsb25nZXN0X2J1aWxkZXJfbmFtZSA9IG1h
eChtYXAobGVuLCBtYXAobGFtYmRhIGJ1aWxkZXI6IGJ1aWxkZXJbIm5hbWUiXSwgYnVpbGRlcl9z
dGF0dXNlcykpKQotICAgICAgICBmYWlsaW5nX2J1aWxkZXJzID0gMAotICAgICAgICBmb3IgYnVp
bGRlcl9zdGF0dXMgaW4gYnVpbGRlcl9zdGF0dXNlczoKLSAgICAgICAgICAgICMgSWYgdGhlIGJ1
aWxkZXIgaXMgZ3JlZW4sIHByaW50IE9LLCBleGl0LgotICAgICAgICAgICAgaWYgYnVpbGRlcl9z
dGF0dXNbImlzX2dyZWVuIl06Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
IHNlbGYuX3ByaW50X2JsYW1lX2luZm9ybWF0aW9uX2Zvcl9idWlsZGVyKGJ1aWxkZXJfc3RhdHVz
LCBuYW1lX3dpZHRoPWxvbmdlc3RfYnVpbGRlcl9uYW1lKQotICAgICAgICAgICAgZmFpbGluZ19i
dWlsZGVycyArPSAxCi0gICAgICAgIGlmIGZhaWxpbmdfYnVpbGRlcnM6Ci0gICAgICAgICAgICBw
cmludCgiJXMgb2YgJXMgYXJlIGZhaWxpbmciICUgKGZhaWxpbmdfYnVpbGRlcnMsIHBsdXJhbGl6
ZShsZW4oYnVpbGRlcl9zdGF0dXNlcyksICJidWlsZGVyIikpKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgcHJpbnQoIkFsbCBidWlsZGVycyBhcmUgcGFzc2luZyEiKQotCi0KLUBEZXByZWNh
dGVkQ29tbWFuZAotY2xhc3MgUmVzdWx0c0ZvcihDb21tYW5kKToKLSAgICBuYW1lID0gInJlc3Vs
dHMtZm9yIgotICAgIGhlbHBfdGV4dCA9ICJQcmludCBhIGxpc3Qgb2YgZmFpbHVyZXMgZm9yIHRo
ZSBwYXNzZWQgcmV2aXNpb24gZnJvbSBib3RzIG9uICVzIiAlIGNvbmZpZ191cmxzLmJ1aWxkYm90
X3VybAotICAgIGFyZ3VtZW50X25hbWVzID0gIlJFVklTSU9OIgotCi0gICAgZGVmIF9wcmludF9s
YXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgotICAgICAgICBpZiBub3QgcmVzdWx0
czoKLSAgICAgICAgICAgIHByaW50KCIgTm8gcmVzdWx0cy4iKQotICAgICAgICAgICAgcmV0dXJu
Ci0gICAgICAgIGZvciB0aXRsZSwgZmlsZXMgaW4gcmVzdWx0cy5wYXJzZWRfcmVzdWx0cygpLml0
ZW1zKCk6Ci0gICAgICAgICAgICBwcmludCgiICVzIiAlIHRpdGxlKQotICAgICAgICAgICAgZm9y
IGZpbGVuYW1lIGluIGZpbGVzOgotICAgICAgICAgICAgICAgIHByaW50KCIgICVzIiAlIGZpbGVu
YW1lKQotCi0gICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAg
ICAgIGJ1aWxkZXJzID0gc2VsZi5fdG9vbC5idWlsZGJvdC5idWlsZGVycygpCi0gICAgICAgIGZv
ciBidWlsZGVyIGluIGJ1aWxkZXJzOgotICAgICAgICAgICAgcHJpbnQoIiVzOiIgJSBidWlsZGVy
Lm5hbWUoKSkKLSAgICAgICAgICAgIGJ1aWxkID0gYnVpbGRlci5idWlsZF9mb3JfcmV2aXNpb24o
YXJnc1swXSwgYWxsb3dfZmFpbGVkX2xvb2t1cHM9VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuX3By
aW50X2xheW91dF90ZXN0X3Jlc3VsdHMoYnVpbGQubGF5b3V0X3Rlc3RfcmVzdWx0cygpKQotCi0K
LUBEZXByZWNhdGVkQ29tbWFuZAotY2xhc3MgRmFpbHVyZVJlYXNvbihDb21tYW5kKToKLSAgICBu
YW1lID0gImZhaWx1cmUtcmVhc29uIgotICAgIGhlbHBfdGV4dCA9ICJMaXN0cyByZXZpc2lvbnMg
d2hlcmUgaW5kaXZpZHVhbCB0ZXN0IGZhaWx1cmVzIHN0YXJ0ZWQgYXQgJXMiICUgY29uZmlnX3Vy
bHMuYnVpbGRib3RfdXJsCi0gICAgYXJndW1lbnRzX25hbWVzID0gIltMQVlPVVRfVEVTVFNdIgot
Ci0gICAgZGVmIF9ibGFtZV9saW5lX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6Ci0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGNvbW1pdF9pbmZvID0gc2VsZi5fdG9vbC5jaGVja291dCgp
LmNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lvbihyZXZpc2lvbikKLSAgICAgICAgZXhjZXB0IEV4Y2Vw
dGlvbiBhcyBlOgotICAgICAgICAgICAgcmV0dXJuICJGQUlMRUQgdG8gZmV0Y2ggQ29tbWl0SW5m
byBmb3IgciVzLCBleGNlcHRpb246ICVzIiAlIChyZXZpc2lvbiwgZSkKLSAgICAgICAgaWYgbm90
IGNvbW1pdF9pbmZvOgotICAgICAgICAgICAgcmV0dXJuICJGQUlMRUQgdG8gZmV0Y2ggQ29tbWl0
SW5mbyBmb3IgciVzLCBsaWtlbHkgbWlzc2luZyBDaGFuZ2VMb2ciICUgcmV2aXNpb24KLSAgICAg
ICAgcmV0dXJuIGNvbW1pdF9pbmZvLmJsYW1lX3N0cmluZyhzZWxmLl90b29sLmJ1Z3MpCi0KLSAg
ICBkZWYgX3ByaW50X2JsYW1lX2luZm9ybWF0aW9uX2Zvcl90cmFuc2l0aW9uKHNlbGYsIHJlZ3Jl
c3Npb25fd2luZG93LCBmYWlsaW5nX3Rlc3RzKToKLSAgICAgICAgcmVkX2J1aWxkID0gcmVncmVz
c2lvbl93aW5kb3cuZmFpbGluZ19idWlsZCgpCi0gICAgICAgIHByaW50KCJTVUNDRVNTOiBCdWls
ZCAlcyAociVzKSB3YXMgdGhlIGZpcnN0IHRvIHNob3cgZmFpbHVyZXM6ICVzIiAlIChyZWRfYnVp
bGQuX251bWJlciwgcmVkX2J1aWxkLnJldmlzaW9uKCksIGZhaWxpbmdfdGVzdHMpKQotICAgICAg
ICBwcmludCgiU3VzcGVjdCByZXZpc2lvbnM6IikKLSAgICAgICAgZm9yIHJldmlzaW9uIGluIHJl
Z3Jlc3Npb25fd2luZG93LnJldmlzaW9ucygpOgotICAgICAgICAgICAgcHJpbnQoc2VsZi5fYmxh
bWVfbGluZV9mb3JfcmV2aXNpb24ocmV2aXNpb24pKQotCi0gICAgZGVmIF9leHBsYWluX2ZhaWx1
cmVzX2Zvcl9idWlsZGVyKHNlbGYsIGJ1aWxkZXIsIHN0YXJ0X3JldmlzaW9uKToKLSAgICAgICAg
cHJpbnQoIkV4YW1pbmluZyBmYWlsdXJlcyBmb3IgXCIlc1wiLCBzdGFydGluZyBhdCByJXMiICUg
KGJ1aWxkZXIubmFtZSgpLCBzdGFydF9yZXZpc2lvbikpCi0gICAgICAgIHJldmlzaW9uX3RvX3Rl
c3QgPSBzdGFydF9yZXZpc2lvbgotICAgICAgICBidWlsZCA9IGJ1aWxkZXIuYnVpbGRfZm9yX3Jl
dmlzaW9uKHJldmlzaW9uX3RvX3Rlc3QsIGFsbG93X2ZhaWxlZF9sb29rdXBzPVRydWUpCi0gICAg
ICAgIGxheW91dF90ZXN0X3Jlc3VsdHMgPSBidWlsZC5sYXlvdXRfdGVzdF9yZXN1bHRzKCkKLSAg
ICAgICAgaWYgbm90IGxheW91dF90ZXN0X3Jlc3VsdHM6Ci0gICAgICAgICAgICAjIEZJWE1FOiBU
aGlzIGNvdWxkIGJlIG1hZGUgbW9yZSB1c2VyIGZyaWVuZGx5LgotICAgICAgICAgICAgcHJpbnQo
IkZhaWxlZCB0byBsb2FkIGxheW91dCB0ZXN0IHJlc3VsdHMgZnJvbSAlczsgY2FuJ3QgY29udGlu
dWUuIChzdGFydCByZXZpc2lvbiA9IHIlcykiICUgKGJ1aWxkLnJlc3VsdHNfdXJsKCksIHN0YXJ0
X3JldmlzaW9uKSkKLSAgICAgICAgICAgIHJldHVybiAxCi0KLSAgICAgICAgcmVzdWx0c190b19l
eHBsYWluID0gc2V0KGxheW91dF90ZXN0X3Jlc3VsdHMuZmFpbGluZ190ZXN0cygpKQotICAgICAg
ICBsYXN0X2J1aWxkX3dpdGhfcmVzdWx0cyA9IGJ1aWxkCi0gICAgICAgIHByaW50KCJTdGFydGlu
ZyBhdCAlcyIgJSByZXZpc2lvbl90b190ZXN0KQotICAgICAgICB3aGlsZSByZXN1bHRzX3RvX2V4
cGxhaW4gYW5kIG5vdCBzZWxmLl9kb25lX2V4cGxhaW5pbmcoKToKLSAgICAgICAgICAgIHJldmlz
aW9uX3RvX3Rlc3QgLT0gMQotICAgICAgICAgICAgbmV3X2J1aWxkID0gYnVpbGRlci5idWlsZF9m
b3JfcmV2aXNpb24ocmV2aXNpb25fdG9fdGVzdCwgYWxsb3dfZmFpbGVkX2xvb2t1cHM9VHJ1ZSkK
LSAgICAgICAgICAgIGlmIG5vdCBuZXdfYnVpbGQ6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIk5v
IGJ1aWxkIGZvciAlcyIgJSByZXZpc2lvbl90b190ZXN0KQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICAgICBidWlsZCA9IG5ld19idWlsZAotICAgICAgICAgICAgbGF0ZXN0X3Jl
c3VsdHMgPSBidWlsZC5sYXlvdXRfdGVzdF9yZXN1bHRzKCkKLSAgICAgICAgICAgIGlmIG5vdCBs
YXRlc3RfcmVzdWx0czoKLSAgICAgICAgICAgICAgICBwcmludCgiTm8gcmVzdWx0cyBidWlsZCAl
cyAociVzKSIgJSAoYnVpbGQuX251bWJlciwgYnVpbGQucmV2aXNpb24oKSkpCi0gICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZhaWx1cmVzID0gc2V0KGxhdGVzdF9yZXN1bHRz
LmZhaWxpbmdfdGVzdHMoKSkKLSAgICAgICAgICAgIGlmIGxlbihmYWlsdXJlcykgPj0gNTAwOgot
ICAgICAgICAgICAgICAgICMgRklYTUU6IFdlIG1heSBuZWVkIHRvIG1vdmUgdGhpcyBsb2dpYyBp
bnRvIHRoZSBMYXlvdXRUZXN0UmVzdWx0cyBjbGFzcy4KLSAgICAgICAgICAgICAgICAjIFRoZSBi
dWlsZGJvdCBzdG9wcyBydW5zIGFmdGVyIDUwMCBmYWlsdXJlcyBzbyB3ZSBkb24ndCBoYXZlIGZ1
bGwgcmVzdWx0cyB0byB3b3JrIHdpdGggaGVyZS4KLSAgICAgICAgICAgICAgICBwcmludCgiVG9v
IG1hbnkgZmFpbHVyZXMgaW4gYnVpbGQgJXMgKHIlcyksIGlnbm9yaW5nLiIgJSAoYnVpbGQuX251
bWJlciwgYnVpbGQucmV2aXNpb24oKSkpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAg
ICAgICAgIGZpeGVkX3Jlc3VsdHMgPSByZXN1bHRzX3RvX2V4cGxhaW4gLSBmYWlsdXJlcwotICAg
ICAgICAgICAgaWYgbm90IGZpeGVkX3Jlc3VsdHM6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIk5v
IGNoYW5nZSBpbiBidWlsZCAlcyAociVzKSwgJXMgdW5leHBsYWluZWQgZmFpbHVyZXMgKCVzIGlu
IHRoaXMgYnVpbGQpIiAlIChidWlsZC5fbnVtYmVyLCBidWlsZC5yZXZpc2lvbigpLCBsZW4ocmVz
dWx0c190b19leHBsYWluKSwgbGVuKGZhaWx1cmVzKSkpCi0gICAgICAgICAgICAgICAgbGFzdF9i
dWlsZF93aXRoX3Jlc3VsdHMgPSBidWlsZAotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAg
ICAgICAgICBzZWxmLmV4cGxhaW5lZF9mYWlsdXJlcy51cGRhdGUoZml4ZWRfcmVzdWx0cykKLSAg
ICAgICAgICAgIHJlZ3Jlc3Npb25fd2luZG93ID0gUmVncmVzc2lvbldpbmRvdyhidWlsZCwgbGFz
dF9idWlsZF93aXRoX3Jlc3VsdHMpCi0gICAgICAgICAgICBzZWxmLl9wcmludF9ibGFtZV9pbmZv
cm1hdGlvbl9mb3JfdHJhbnNpdGlvbihyZWdyZXNzaW9uX3dpbmRvdywgZml4ZWRfcmVzdWx0cykK
LSAgICAgICAgICAgIGxhc3RfYnVpbGRfd2l0aF9yZXN1bHRzID0gYnVpbGQKLSAgICAgICAgICAg
IHJlc3VsdHNfdG9fZXhwbGFpbiAtPSBmaXhlZF9yZXN1bHRzCi0gICAgICAgIGlmIHJlc3VsdHNf
dG9fZXhwbGFpbjoKLSAgICAgICAgICAgIHByaW50KCJGYWlsZWQgdG8gZXhwbGFpbiBmYWlsdXJl
czogJXMiICUgcmVzdWx0c190b19leHBsYWluKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAg
ICAgcHJpbnQoIkV4cGxhaW5lZCBhbGwgcmVzdWx0cyBmb3IgJXMiICUgYnVpbGRlci5uYW1lKCkp
Ci0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX2J1aWxkZXJfdG9fZXhwbGFpbihzZWxmKToK
LSAgICAgICAgYnVpbGRlcl9zdGF0dXNlcyA9IHNlbGYuX3Rvb2wuYnVpbGRib3QuYnVpbGRlcl9z
dGF0dXNlcygpCi0gICAgICAgIHJlZF9zdGF0dXNlcyA9IFtzdGF0dXMgZm9yIHN0YXR1cyBpbiBi
dWlsZGVyX3N0YXR1c2VzIGlmIG5vdCBzdGF0dXNbImlzX2dyZWVuIl1dCi0gICAgICAgIHByaW50
KCIlcyBmYWlsaW5nIiAlIChwbHVyYWxpemUobGVuKHJlZF9zdGF0dXNlcyksICJidWlsZGVyIikp
KQotICAgICAgICBidWlsZGVyX2Nob2ljZXMgPSBbc3RhdHVzWyJuYW1lIl0gZm9yIHN0YXR1cyBp
biByZWRfc3RhdHVzZXNdCi0gICAgICAgICMgV2UgY291bGQgb2ZmZXIgYW4gIkFsbCIgY2hvaWNl
IGhlcmUuCi0gICAgICAgIGNob3Nlbl9uYW1lID0gc2VsZi5fdG9vbC51c2VyLnByb21wdF93aXRo
X2xpc3QoIldoaWNoIGJ1aWxkZXIgdG8gZGlhZ25vc2U6IiwgYnVpbGRlcl9jaG9pY2VzKQotICAg
ICAgICAjIEZJWE1FOiBwcm9tcHRfd2l0aF9saXN0IHNob3VsZCByZWFsbHkgdGFrZSBhIHNldCBv
ZiBvYmplY3RzIGFuZCBhIHNldCBvZiBuYW1lcyBhbmQgdGhlbiByZXR1cm4gdGhlIG9iamVjdC4K
LSAgICAgICAgZm9yIHN0YXR1cyBpbiByZWRfc3RhdHVzZXM6Ci0gICAgICAgICAgICBpZiBzdGF0
dXNbIm5hbWUiXSA9PSBjaG9zZW5fbmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gKHNlbGYu
X3Rvb2wuYnVpbGRib3QuYnVpbGRlcl93aXRoX25hbWUoY2hvc2VuX25hbWUpLCBzdGF0dXNbImJ1
aWx0X3JldmlzaW9uIl0pCi0KLSAgICBkZWYgX2RvbmVfZXhwbGFpbmluZyhzZWxmKToKLSAgICAg
ICAgaWYgbm90IHNlbGYuZmFpbHVyZXNfdG9fZXhwbGFpbjoKLSAgICAgICAgICAgIHJldHVybiBG
YWxzZQotCi0gICAgICAgIHJldHVybiBzZWxmLmV4cGxhaW5lZF9mYWlsdXJlcy5pc3N1cGVyc2V0
KHNlbGYuZmFpbHVyZXNfdG9fZXhwbGFpbikKLQotICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlv
bnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICAoYnVpbGRlciwgbGF0ZXN0X3JldmlzaW9uKSA9IHNl
bGYuX2J1aWxkZXJfdG9fZXhwbGFpbigpCi0gICAgICAgIHN0YXJ0X3JldmlzaW9uID0gc2VsZi5f
dG9vbC51c2VyLnByb21wdCgiUmV2aXNpb24gdG8gd2FsayBiYWNrd2FyZHMgZnJvbT8gWyVzXSAi
ICUgbGF0ZXN0X3JldmlzaW9uKSBvciBsYXRlc3RfcmV2aXNpb24KLSAgICAgICAgc2VsZi5mYWls
dXJlc190b19leHBsYWluID0gYXJncwotICAgICAgICBzZWxmLmV4cGxhaW5lZF9mYWlsdXJlcyA9
IHNldCgpCi0gICAgICAgIGlmIG5vdCBzdGFydF9yZXZpc2lvbjoKLSAgICAgICAgICAgIHByaW50
KCJSZXZpc2lvbiByZXF1aXJlZC4iKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2V4cGxhaW5fZmFpbHVyZXNfZm9yX2J1aWxkZXIoYnVpbGRlciwgc3RhcnRfcmV2
aXNpb249aW50KHN0YXJ0X3JldmlzaW9uKSkKLQotCi1ARGVwcmVjYXRlZENvbW1hbmQKLWNsYXNz
IEZpbmRGbGFreVRlc3RzKENvbW1hbmQpOgotICAgIG5hbWUgPSAiZmluZC1mbGFreS10ZXN0cyIK
LSAgICBoZWxwX3RleHQgPSAiTGlzdHMgdGVzdHMgdGhhdCBvZnRlbiBmYWlsIGZvciBhIHNpbmds
ZSBidWlsZCBhdCAlcyIgJSBjb25maWdfdXJscy5idWlsZGJvdF91cmwKLQotICAgIGRlZiBfZmlu
ZF9mYWlsdXJlcyhzZWxmLCBidWlsZGVyLCByZXZpc2lvbik6Ci0gICAgICAgIGJ1aWxkID0gYnVp
bGRlci5idWlsZF9mb3JfcmV2aXNpb24ocmV2aXNpb24sIGFsbG93X2ZhaWxlZF9sb29rdXBzPVRy
dWUpCi0gICAgICAgIGlmIG5vdCBidWlsZDoKLSAgICAgICAgICAgIHByaW50KCJObyBidWlsZCBm
b3IgJXMiICUgcmV2aXNpb24pCi0gICAgICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUpCi0gICAg
ICAgIHJlc3VsdHMgPSBidWlsZC5sYXlvdXRfdGVzdF9yZXN1bHRzKCkKLSAgICAgICAgaWYgbm90
IHJlc3VsdHM6Ci0gICAgICAgICAgICBwcmludCgiTm8gcmVzdWx0cyBidWlsZCAlcyAociVzKSIg
JSAoYnVpbGQuX251bWJlciwgYnVpbGQucmV2aXNpb24oKSkpCi0gICAgICAgICAgICByZXR1cm4g
KE5vbmUsIE5vbmUpCi0gICAgICAgIGZhaWx1cmVzID0gc2V0KHJlc3VsdHMuZmFpbGluZ190ZXN0
cygpKQotICAgICAgICBpZiBsZW4oZmFpbHVyZXMpID49IDIwOgotICAgICAgICAgICAgIyBGSVhN
RTogV2UgbWF5IG5lZWQgdG8gbW92ZSB0aGlzIGxvZ2ljIGludG8gdGhlIExheW91dFRlc3RSZXN1
bHRzIGNsYXNzLgotICAgICAgICAgICAgIyBUaGUgYnVpbGRib3Qgc3RvcHMgcnVucyBhZnRlciAy
MCBmYWlsdXJlcyBzbyB3ZSBkb24ndCBoYXZlIGZ1bGwgcmVzdWx0cyB0byB3b3JrIHdpdGggaGVy
ZS4KLSAgICAgICAgICAgIHByaW50KCJUb28gbWFueSBmYWlsdXJlcyBpbiBidWlsZCAlcyAociVz
KSwgaWdub3JpbmcuIiAlIChidWlsZC5fbnVtYmVyLCBidWlsZC5yZXZpc2lvbigpKSkKLSAgICAg
ICAgICAgIHJldHVybiAoTm9uZSwgTm9uZSkKLSAgICAgICAgcmV0dXJuIChidWlsZCwgZmFpbHVy
ZXMpCi0KLSAgICBkZWYgX2luY3JlbWVudF9zdGF0aXN0aWNzKHNlbGYsIGZsYWt5X3Rlc3RzLCBm
bGFreV90ZXN0X3N0YXRpc3RpY3MpOgotICAgICAgICBmb3IgdGVzdCBpbiBmbGFreV90ZXN0czoK
LSAgICAgICAgICAgIGNvdW50ID0gZmxha3lfdGVzdF9zdGF0aXN0aWNzLmdldCh0ZXN0LCAwKQot
ICAgICAgICAgICAgZmxha3lfdGVzdF9zdGF0aXN0aWNzW3Rlc3RdID0gY291bnQgKyAxCi0KLSAg
ICBkZWYgX3ByaW50X3N0YXRpc3RpY3Moc2VsZiwgc3RhdGlzdGljcyk6Ci0gICAgICAgIHByaW50
KCI9PT0gUmVzdWx0cyA9PT0iKQotICAgICAgICBwcmludCgiT2NjdXJyZW5jZXMgVGVzdCBuYW1l
IikKLSAgICAgICAgZm9yIHZhbHVlLCBrZXkgaW4gc29ydGVkKFsodmFsdWUsIGtleSkgZm9yIGtl
eSwgdmFsdWUgaW4gc3RhdGlzdGljcy5pdGVtcygpXSk6Ci0gICAgICAgICAgICBwcmludCgiJTEw
ZCAlcyIgJSAodmFsdWUsIGtleSkpCi0KLSAgICBkZWYgX3dhbGtfYmFja3dhcmRzX2Zyb20oc2Vs
ZiwgYnVpbGRlciwgc3RhcnRfcmV2aXNpb24sIGxpbWl0KToKLSAgICAgICAgZmxha3lfdGVzdF9z
dGF0aXN0aWNzID0ge30KLSAgICAgICAgYWxsX3ByZXZpb3VzX2ZhaWx1cmVzID0gc2V0KFtdKQot
ICAgICAgICBvbmVfdGltZV9wcmV2aW91c19mYWlsdXJlcyA9IHNldChbXSkKLSAgICAgICAgcHJl
dmlvdXNfYnVpbGQgPSBOb25lCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxpbWl0KToKLSAgICAg
ICAgICAgIHJldmlzaW9uID0gc3RhcnRfcmV2aXNpb24gLSBpCi0gICAgICAgICAgICBwcmludCgi
QW5hbHl6aW5nICVzIC4uLiAiICUgcmV2aXNpb24sIGVuZD0nICcpCi0gICAgICAgICAgICAoYnVp
bGQsIGZhaWx1cmVzKSA9IHNlbGYuX2ZpbmRfZmFpbHVyZXMoYnVpbGRlciwgcmV2aXNpb24pCi0g
ICAgICAgICAgICBpZiBmYWlsdXJlcyA9PSBOb25lOgotICAgICAgICAgICAgICAgICMgTm90aWNl
IHRoYXQgd2UgZG9uJ3QgbG9vcCBvbiB0aGUgZW1wdHkgc2V0IQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0gICAgICAgICAgICBwcmludCgiaGFzICVzIGZhaWx1cmVzIiAlIGxlbihmYWlsdXJl
cykpCi0gICAgICAgICAgICBmbGFreV90ZXN0cyA9IG9uZV90aW1lX3ByZXZpb3VzX2ZhaWx1cmVz
IC0gZmFpbHVyZXMKLSAgICAgICAgICAgIGlmIGZsYWt5X3Rlc3RzOgotICAgICAgICAgICAgICAg
IHByaW50KCJGbGFreSB0ZXN0czogJXMgJXMiICUgKHNvcnRlZChmbGFreV90ZXN0cyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNfYnVpbGQu
cmVzdWx0c191cmwoKSkpCi0gICAgICAgICAgICBzZWxmLl9pbmNyZW1lbnRfc3RhdGlzdGljcyhm
bGFreV90ZXN0cywgZmxha3lfdGVzdF9zdGF0aXN0aWNzKQotICAgICAgICAgICAgb25lX3RpbWVf
cHJldmlvdXNfZmFpbHVyZXMgPSBmYWlsdXJlcyAtIGFsbF9wcmV2aW91c19mYWlsdXJlcwotICAg
ICAgICAgICAgYWxsX3ByZXZpb3VzX2ZhaWx1cmVzID0gZmFpbHVyZXMKLSAgICAgICAgICAgIHBy
ZXZpb3VzX2J1aWxkID0gYnVpbGQKLSAgICAgICAgc2VsZi5fcHJpbnRfc3RhdGlzdGljcyhmbGFr
eV90ZXN0X3N0YXRpc3RpY3MpCi0KLSAgICBkZWYgX2J1aWxkZXJfdG9fYW5hbHl6ZShzZWxmKToK
LSAgICAgICAgc3RhdHVzZXMgPSBzZWxmLl90b29sLmJ1aWxkYm90LmJ1aWxkZXJfc3RhdHVzZXMo
KQotICAgICAgICBjaG9pY2VzID0gW3N0YXR1c1sibmFtZSJdIGZvciBzdGF0dXMgaW4gc3RhdHVz
ZXNdCi0gICAgICAgIGNob3Nlbl9uYW1lID0gc2VsZi5fdG9vbC51c2VyLnByb21wdF93aXRoX2xp
c3QoIldoaWNoIGJ1aWxkZXIgdG8gYW5hbHl6ZToiLCBjaG9pY2VzKQotICAgICAgICBmb3Igc3Rh
dHVzIGluIHN0YXR1c2VzOgotICAgICAgICAgICAgaWYgc3RhdHVzWyJuYW1lIl0gPT0gY2hvc2Vu
X25hbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChzZWxmLl90b29sLmJ1aWxkYm90LmJ1aWxk
ZXJfd2l0aF9uYW1lKGNob3Nlbl9uYW1lKSwgc3RhdHVzWyJidWlsdF9yZXZpc2lvbiJdKQotCi0g
ICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIChidWls
ZGVyLCBsYXRlc3RfcmV2aXNpb24pID0gc2VsZi5fYnVpbGRlcl90b19hbmFseXplKCkKLSAgICAg
ICAgbGltaXQgPSBzZWxmLl90b29sLnVzZXIucHJvbXB0KCJIb3cgbWFueSByZXZpc2lvbnMgdG8g
bG9vayB0aHJvdWdoPyBbMTAwMDBdICIpIG9yIDEwMDAwCi0gICAgICAgIHJldHVybiBzZWxmLl93
YWxrX2JhY2t3YXJkc19mcm9tKGJ1aWxkZXIsIGxhdGVzdF9yZXZpc2lvbiwgbGltaXQ9aW50KGxp
bWl0KSkKLQotCi1ARGVwcmVjYXRlZENvbW1hbmQKLWNsYXNzIFRyZWVTdGF0dXMoQ29tbWFuZCk6
Ci0gICAgbmFtZSA9ICJ0cmVlLXN0YXR1cyIKLSAgICBoZWxwX3RleHQgPSAiUHJpbnQgdGhlIHN0
YXR1cyBvZiB0aGUgJXMgYnVpbGRib3RzIiAlIGNvbmZpZ191cmxzLmJ1aWxkYm90X3VybAotICAg
IGxvbmdfaGVscCA9ICIiIkZldGNoZXMgYnVpbGQgc3RhdHVzIGZyb20gaHR0cHM6Ly9idWlsZC53
ZWJraXQub3JnL29uZV9ib3hfcGVyX2J1aWxkZXIKLWFuZCBkaXNwbGF5ZXMgdGhlIHN0YXR1cyBv
ZiBlYWNoIGJ1aWxkZXIuIiIiCi0KLSAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdz
LCB0b29sKToKLSAgICAgICAgZm9yIGJ1aWxkZXIgaW4gdG9vbC5idWlsZGJvdC5idWlsZGVyX3N0
YXR1c2VzKCk6Ci0gICAgICAgICAgICBzdGF0dXNfc3RyaW5nID0gIm9rIiBpZiBidWlsZGVyWyJp
c19ncmVlbiJdIGVsc2UgIkZBSUwiCi0gICAgICAgICAgICBwcmludCgiJXMgOiAlcyIgJSAoc3Rh
dHVzX3N0cmluZy5sanVzdCg0KSwgYnVpbGRlclsibmFtZSJdKSkKLQotCi1ARGVwcmVjYXRlZENv
bW1hbmQKLWNsYXNzIENyYXNoTG9nKENvbW1hbmQpOgotICAgIG5hbWUgPSAiY3Jhc2gtbG9nIgot
ICAgIGhlbHBfdGV4dCA9ICJQcmludCB0aGUgbmV3ZXN0IGNyYXNoIGxvZyBmb3IgdGhlIGdpdmVu
IHByb2Nlc3MiCi0gICAgbG9uZ19oZWxwID0gIiIiRmluZHMgdGhlIG5ld2VzdCBjcmFzaCBsb2cg
bWF0Y2hpbmcgdGhlIGdpdmVuIHByb2Nlc3MgbmFtZQotYW5kIFBJRCBhbmQgcHJpbnRzIGl0IHRv
IHN0ZG91dC4iIiIKLSAgICBhcmd1bWVudF9uYW1lcyA9ICJQUk9DRVNTX05BTUUgW1BJRF0iCi0K
LSAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgZGVm
YXVsdF9wb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCkKLSAgICAgICAgY3Jhc2hfbG9ncyA9
IENyYXNoTG9ncyh0b29sLCBkZWZhdWx0X3BvcnQucGF0aF90b19jcmFzaF9sb2dzKCkpCi0gICAg
ICAgIHBpZCA9IE5vbmUKLSAgICAgICAgaWYgbGVuKGFyZ3MpID4gMToKLSAgICAgICAgICAgIHBp
ZCA9IGludChhcmdzWzFdKQotICAgICAgICBwcmludChjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xv
ZyhhcmdzWzBdLCBwaWQpKQotCi0KLUBEZXByZWNhdGVkQ29tbWFuZAotY2xhc3MgUHJpbnRFeHBl
Y3RhdGlvbnMoQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICdwcmludC1leHBlY3RhdGlvbnMnCi0gICAg
aGVscF90ZXh0ID0gJ1ByaW50IHRoZSBleHBlY3RlZCByZXN1bHQgZm9yIHRoZSBnaXZlbiB0ZXN0
KHMpIG9uIHRoZSBnaXZlbiBwb3J0KHMpJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAg
ICAgICBvcHRpb25zID0gWwotICAgICAgICAgICAgbWFrZV9vcHRpb24oJy0tYWxsJywgYWN0aW9u
PSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J2Rpc3BsYXkgdGhlIGV4cGVjdGF0aW9ucyBmb3IgKmFsbCogdGVzdHMnKSwKLSAgICAgICAg
ICAgIG1ha2Vfb3B0aW9uKCcteCcsICctLWV4Y2x1ZGUta2V5d29yZCcsIGFjdGlvbj0nYXBwZW5k
JywgZGVmYXVsdD1bXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2xpbWl0IHRvIHRl
c3RzIG5vdCBtYXRjaGluZyB0aGUgZ2l2ZW4ga2V5d29yZCAoZm9yIGV4YW1wbGUsICJza2lwIiwg
InNsb3ciLCBvciAiY3Jhc2giLiBNYXkgc3BlY2lmeSBtdWx0aXBsZSB0aW1lcycpLAotICAgICAg
ICAgICAgbWFrZV9vcHRpb24oJy1pJywgJy0taW5jbHVkZS1rZXl3b3JkJywgYWN0aW9uPSdhcHBl
bmQnLCBkZWZhdWx0PVtdLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbGltaXQgdG8g
dGVzdHMgd2l0aCB0aGUgZ2l2ZW4ga2V5d29yZCAoZm9yIGV4YW1wbGUsICJza2lwIiwgInNsb3ci
LCBvciAiY3Jhc2giLiBNYXkgc3BlY2lmeSBtdWx0aXBsZSB0aW1lcycpLAotICAgICAgICAgICAg
bWFrZV9vcHRpb24oJy1mJywgJy0tZnVsbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcmludCBhIGZ1bGwgVGVzdEV4
cGVjdGF0aW9ucy1zdHlsZSBsaW5lIGZvciBldmVyeSBtYXRjaCcpLAotICAgICAgICAgICAgbWFr
ZV9vcHRpb24oJy0tcGF0aHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzcGxheSB0aGUgcGF0aHMgZm9yIGFsbCBh
cHBsaWNhYmxlIGV4cGVjdGF0aW9uIGZpbGVzJyksCi0gICAgICAgIF0gKyBwbGF0Zm9ybV9vcHRp
b25zKHVzZV9nbG9icz1UcnVlKQotCi0gICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgb3B0
aW9ucz1vcHRpb25zKQotICAgICAgICBzZWxmLl9leHBlY3RhdGlvbl9tb2RlbHMgPSB7fQotCi0g
ICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIGlmIG5v
dCBvcHRpb25zLnBhdGhzIGFuZCBub3QgYXJncyBhbmQgbm90IG9wdGlvbnMuYWxsOgotICAgICAg
ICAgICAgcHJpbnQoIllvdSBtdXN0IGVpdGhlciBzcGVjaWZ5IG9uZSBvciBtb3JlIHRlc3QgcGF0
aHMgb3IgLS1hbGwuIikKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIG9wdGlvbnMu
cGxhdGZvcm06Ci0gICAgICAgICAgICBwb3J0X25hbWVzID0gZm5tYXRjaC5maWx0ZXIodG9vbC5w
b3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMoKSwgb3B0aW9ucy5wbGF0Zm9ybSkKLSAgICAgICAg
ICAgIGlmIG5vdCBwb3J0X25hbWVzOgotICAgICAgICAgICAgICAgIGRlZmF1bHRfcG9ydCA9IHRv
b2wucG9ydF9mYWN0b3J5LmdldChvcHRpb25zLnBsYXRmb3JtKQotICAgICAgICAgICAgICAgIGlm
IGRlZmF1bHRfcG9ydDoKLSAgICAgICAgICAgICAgICAgICAgcG9ydF9uYW1lcyA9IFtkZWZhdWx0
X3BvcnQubmFtZSgpXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
IHByaW50KCJObyBwb3J0IG5hbWVzIG1hdGNoICclcyciICUgb3B0aW9ucy5wbGF0Zm9ybSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIGRlZmF1bHRfcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWVzWzBdKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGVmYXVsdF9wb3J0ID0gdG9vbC5wb3J0X2ZhY3Rv
cnkuZ2V0KG9wdGlvbnM9b3B0aW9ucykKLSAgICAgICAgICAgIHBvcnRfbmFtZXMgPSBbZGVmYXVs
dF9wb3J0Lm5hbWUoKV0KLQotICAgICAgICBpZiBvcHRpb25zLnBhdGhzOgotICAgICAgICAgICAg
ZmlsZXMgPSBkZWZhdWx0X3BvcnQuZXhwZWN0YXRpb25zX2ZpbGVzKCkKLSAgICAgICAgICAgIGxh
eW91dF90ZXN0c19kaXIgPSBkZWZhdWx0X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpCi0gICAgICAg
ICAgICBmb3IgZmlsZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBpZiBmaWxlLnN0YXJ0c3dp
dGgobGF5b3V0X3Rlc3RzX2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIGZpbGUgPSBmaWxlLnJl
cGxhY2UobGF5b3V0X3Rlc3RzX2RpciwgJ0xheW91dFRlc3RzJykKLSAgICAgICAgICAgICAgICBw
cmludChmaWxlKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZmluZGVyID0gTGF5b3V0
VGVzdEZpbmRlcihkZWZhdWx0X3BvcnQsIE5vbmUpCi0gICAgICAgIHRlc3RzID0gZmluZGVyLmZp
bmRfdGVzdHNfYnlfcGF0aChhcmdzKQotICAgICAgICB0ZXN0X2ZpbGVzID0ge3Rlc3QudGVzdF9w
YXRoIGZvciB0ZXN0IGluIHRlc3RzfQotICAgICAgICBmb3IgcG9ydF9uYW1lIGluIHBvcnRfbmFt
ZXM6Ci0gICAgICAgICAgICBtb2RlbCA9IHNlbGYuX21vZGVsKG9wdGlvbnMsIHBvcnRfbmFtZSwg
dGVzdF9maWxlcykKLSAgICAgICAgICAgIHRlc3RzX3RvX3ByaW50ID0gc2VsZi5fZmlsdGVyX3Rl
c3RzKG9wdGlvbnMsIG1vZGVsLCB0ZXN0X2ZpbGVzKQotICAgICAgICAgICAgbGluZXMgPSBbbW9k
ZWwuZ2V0X2V4cGVjdGF0aW9uX2xpbmUodGVzdCkgZm9yIHRlc3QgaW4gc29ydGVkKHRlc3RzX3Rv
X3ByaW50KV0KLSAgICAgICAgICAgIGlmIHBvcnRfbmFtZSAhPSBwb3J0X25hbWVzWzBdOgotICAg
ICAgICAgICAgICAgIHByaW50KCkKLSAgICAgICAgICAgIHByaW50KCdcbicuam9pbihzZWxmLl9m
b3JtYXRfbGluZXMob3B0aW9ucywgcG9ydF9uYW1lLCBsaW5lcykpKQotCi0gICAgZGVmIF9maWx0
ZXJfdGVzdHMoc2VsZiwgb3B0aW9ucywgbW9kZWwsIHRlc3RzKToKLSAgICAgICAgZmlsdGVyZWRf
dGVzdHMgPSBzZXQoKQotICAgICAgICBpZiBvcHRpb25zLmluY2x1ZGVfa2V5d29yZDoKLSAgICAg
ICAgICAgIGZvciBrZXl3b3JkIGluIG9wdGlvbnMuaW5jbHVkZV9rZXl3b3JkOgotICAgICAgICAg
ICAgICAgIGZpbHRlcmVkX3Rlc3RzLnVwZGF0ZShtb2RlbC5nZXRfdGVzdF9zZXRfZm9yX2tleXdv
cmQoa2V5d29yZCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWx0ZXJlZF90ZXN0cyA9
IHRlc3RzCi0KLSAgICAgICAgZm9yIGtleXdvcmQgaW4gb3B0aW9ucy5leGNsdWRlX2tleXdvcmQ6
Ci0gICAgICAgICAgICBmaWx0ZXJlZF90ZXN0cy5kaWZmZXJlbmNlX3VwZGF0ZShtb2RlbC5nZXRf
dGVzdF9zZXRfZm9yX2tleXdvcmQoa2V5d29yZCkpCi0gICAgICAgIHJldHVybiBmaWx0ZXJlZF90
ZXN0cwotCi0gICAgZGVmIF9mb3JtYXRfbGluZXMoc2VsZiwgb3B0aW9ucywgcG9ydF9uYW1lLCBs
aW5lcyk6Ci0gICAgICAgIG91dHB1dCA9IFtdCi0gICAgICAgIGlmIGxpbmVzOgotICAgICAgICAg
ICAgaW5jbHVkZV9tb2RpZmllcnMgPSBvcHRpb25zLmZ1bGwKLSAgICAgICAgICAgIGluY2x1ZGVf
ZXhwZWN0YXRpb25zID0gb3B0aW9ucy5mdWxsIG9yIGxlbihvcHRpb25zLmluY2x1ZGVfa2V5d29y
ZCkgIT0gMSBvciBsZW4ob3B0aW9ucy5leGNsdWRlX2tleXdvcmQpCi0gICAgICAgICAgICBvdXRw
dXQuYXBwZW5kKCIvLyBGb3IgJXMiICUgcG9ydF9uYW1lKQotICAgICAgICAgICAgZm9yIGxpbmUg
aW4gbGluZXM6Ci0gICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiJXMiICUgbGluZS50b19z
dHJpbmcoTm9uZSwgaW5jbHVkZV9tb2RpZmllcnMsIGluY2x1ZGVfZXhwZWN0YXRpb25zLCBpbmNs
dWRlX2NvbW1lbnQ9RmFsc2UpKQotICAgICAgICByZXR1cm4gb3V0cHV0Ci0KLSAgICBkZWYgX21v
ZGVsKHNlbGYsIG9wdGlvbnMsIHBvcnRfbmFtZSwgdGVzdHMpOgotICAgICAgICBwb3J0ID0gc2Vs
Zi5fdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZSwgb3B0aW9ucykKLSAgICAgICAgZXhw
ZWN0YXRpb25zID0gVGVzdEV4cGVjdGF0aW9ucyhwb3J0LCB0ZXN0cykKLSAgICAgICAgZXhwZWN0
YXRpb25zLnBhcnNlX2FsbF9leHBlY3RhdGlvbnMoKQotICAgICAgICByZXR1cm4gZXhwZWN0YXRp
b25zLm1vZGVsKCkKLQotCi1ARGVwcmVjYXRlZENvbW1hbmQKLWNsYXNzIFByaW50QmFzZWxpbmVz
KENvbW1hbmQpOgotICAgIG5hbWUgPSAncHJpbnQtYmFzZWxpbmVzJwotICAgIGhlbHBfdGV4dCA9
ICdQcmludHMgdGhlIGJhc2VsaW5lIGxvY2F0aW9ucyBmb3IgZ2l2ZW4gdGVzdChzKSBvbiB0aGUg
Z2l2ZW4gcG9ydChzKScKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgb3B0aW9u
cyA9IFsKLSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCctLWFsbCcsIGFjdGlvbj0nc3RvcmVfdHJ1
ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNwbGF5
IHRoZSBiYXNlbGluZXMgZm9yICphbGwqIHRlc3RzJyksCi0gICAgICAgIF0gKyBwbGF0Zm9ybV9v
cHRpb25zKHVzZV9nbG9icz1UcnVlKQotICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsIG9w
dGlvbnM9b3B0aW9ucykKLSAgICAgICAgc2VsZi5fcGxhdGZvcm1fcmVnZXhwID0gcmUuY29tcGls
ZShyJ3BsYXRmb3JtLyhbXlwvXSspLyguKyknKQotCi0gICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0
aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIGlmIG5vdCBhcmdzIGFuZCBub3Qgb3B0aW9ucy5h
bGw6Ci0gICAgICAgICAgICBwcmludCgiWW91IG11c3QgZWl0aGVyIHNwZWNpZnkgb25lIG9yIG1v
cmUgdGVzdCBwYXRocyBvciAtLWFsbC4iKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAg
ZGVmYXVsdF9wb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCkKLSAgICAgICAgaWYgb3B0aW9u
cy5wbGF0Zm9ybToKLSAgICAgICAgICAgIHBvcnRfbmFtZXMgPSBmbm1hdGNoLmZpbHRlcih0b29s
LnBvcnRfZmFjdG9yeS5hbGxfcG9ydF9uYW1lcygpLCBvcHRpb25zLnBsYXRmb3JtKQotICAgICAg
ICAgICAgaWYgbm90IHBvcnRfbmFtZXM6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIk5vIHBvcnQg
bmFtZXMgbWF0Y2ggJyVzJyIgJSBvcHRpb25zLnBsYXRmb3JtKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgcG9ydF9uYW1lcyA9IFtkZWZhdWx0X3BvcnQubmFtZSgpXQotCi0gICAgICAgICMg
RklYTUU6IG1ha2UgcmVhbF90ZXN0cygpIGEgcHVibGljIG1ldGhvZC4KLSAgICAgICAgZmluZGVy
ID0gTGF5b3V0VGVzdEZpbmRlcihkZWZhdWx0X3BvcnQsIE5vbmUpCi0gICAgICAgIHRlc3RzID0g
c29ydGVkKGZpbmRlci5fcmVhbF90ZXN0cyhhcmdzKSkKLQotICAgICAgICBmb3IgcG9ydF9uYW1l
IGluIHBvcnRfbmFtZXM6Ci0gICAgICAgICAgICBpZiBwb3J0X25hbWUgIT0gcG9ydF9uYW1lc1sw
XToKLSAgICAgICAgICAgICAgICBwcmludCgpCi0gICAgICAgICAgICBwcmludCgiLy8gRm9yICVz
IiAlIHBvcnRfbmFtZSkKLSAgICAgICAgICAgIHBvcnQgPSB0b29sLnBvcnRfZmFjdG9yeS5nZXQo
cG9ydF9uYW1lKQotICAgICAgICAgICAgZm9yIHRlc3RfbmFtZSBpbiB0ZXN0czoKLSAgICAgICAg
ICAgICAgICBzZWxmLl9wcmludF9iYXNlbGluZXMob3B0aW9ucywgcG9ydF9uYW1lLCB0ZXN0X25h
bWUsIHBvcnQuZXhwZWN0ZWRfYmFzZWxpbmVzX2J5X2V4dGVuc2lvbih0ZXN0X25hbWUpKQotCi0g
ICAgZGVmIF9wcmludF9iYXNlbGluZXMoc2VsZiwgb3B0aW9ucywgcG9ydF9uYW1lLCB0ZXN0X25h
bWUsIGJhc2VsaW5lcyk6Ci0gICAgICAgIGZvciBleHRlbnNpb24gaW4gc29ydGVkKGJhc2VsaW5l
cy5rZXlzKCkpOgotICAgICAgICAgICAgYmFzZWxpbmVfbG9jYXRpb24gPSBiYXNlbGluZXNbZXh0
ZW5zaW9uXQotICAgICAgICAgICAgaWYgYmFzZWxpbmVfbG9jYXRpb246Ci0gICAgICAgICAgICAg
ICAgcHJpbnQoYmFzZWxpbmVfbG9jYXRpb24pCi0KLSAgICBkZWYgX3BsYXRmb3JtX2Zvcl9wYXRo
KHNlbGYsIHJlbHBhdGgpOgotICAgICAgICBwbGF0Zm9ybV9tYXRjaG9iaiA9IHNlbGYuX3BsYXRm
b3JtX3JlZ2V4cC5tYXRjaChyZWxwYXRoKQotICAgICAgICBpZiBwbGF0Zm9ybV9tYXRjaG9iajoK
LSAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybV9tYXRjaG9iai5ncm91cCgxKQotICAgICAgICBy
ZXR1cm4gTm9uZQotCi0KLUBEZXByZWNhdGVkQ29tbWFuZAotY2xhc3MgRmluZFJlc29sdmVkQnVn
cyhDb21tYW5kKToKLSAgICBuYW1lID0gImZpbmQtcmVzb2x2ZWQtYnVncyIKLSAgICBoZWxwX3Rl
eHQgPSAiQ29sbGVjdCB0aGUgUkVTT0xWRUQgYnVncyBpbiB0aGUgZ2l2ZW4gVGVzdEV4cGVjdGF0
aW9ucyBmaWxlIgotICAgIGFyZ3VtZW50X25hbWVzID0gIlRFU1RfRVhQRUNUQVRJT05TX0ZJTEUi
Ci0KLSAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAg
ZmlsZW5hbWUgPSBhcmdzWzBdCi0gICAgICAgIGlmIG5vdCB0b29sLmZpbGVzeXN0ZW0uaXNmaWxl
KGZpbGVuYW1lKToKLSAgICAgICAgICAgIHByaW50KCJUaGUgZ2l2ZW4gcGF0aCBpcyBub3QgYSBm
aWxlLCBwbGVhc2UgcGFzcyBhIHZhbGlkIHBhdGguIikKLSAgICAgICAgICAgIHJldHVybgotCi0g
ICAgICAgIGlkcyA9IHNldCgpCi0gICAgICAgIGlucHV0ZmlsZSA9IHRvb2wuZmlsZXN5c3RlbS5v
cGVuX3RleHRfZmlsZV9mb3JfcmVhZGluZyhmaWxlbmFtZSkKLSAgICAgICAgZm9yIGxpbmUgaW4g
aW5wdXRmaWxlOgotICAgICAgICAgICAgcmVzdWx0ID0gcmUuc2VhcmNoKHIiKGh0dHBzOi8vYnVn
c1wud2Via2l0XC5vcmcvc2hvd19idWdcLmNnaVw/aWQ9fHdlYmtpdFwub3JnL2IvKShbMC05XSsp
IiwgbGluZSkKLSAgICAgICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgICAgICBpZHMuYWRk
KHJlc3VsdC5ncm91cCgyKSkKLSAgICAgICAgaW5wdXRmaWxlLmNsb3NlKCkKLQotICAgICAgICBy
ZXNvbHZlZF9pZHMgPSBzZXQoKQotICAgICAgICBudW1fb2ZfYnVncyA9IGxlbihpZHMpCi0gICAg
ICAgIGJ1Z3ppbGxhID0gQnVnemlsbGEoKQotICAgICAgICBmb3IgaSwgYnVnaWQgaW4gZW51bWVy
YXRlKGlkcywgc3RhcnQ9MSk6Ci0gICAgICAgICAgICBidWcgPSBidWd6aWxsYS5mZXRjaF9idWco
YnVnaWQpCi0gICAgICAgICAgICBwcmludCgiQ2hlY2tpbmcgYnVnICVzIFx0IFslZC8lZF0iICUg
KGJ1Z2lkLCBpLCBudW1fb2ZfYnVncykpCi0gICAgICAgICAgICBpZiBub3QgYnVnLmlzX29wZW4o
KToKLSAgICAgICAgICAgICAgICByZXNvbHZlZF9pZHMuYWRkKGJ1Z2lkKQotCi0gICAgICAgIHBy
aW50KCJSZXNvbHZlZCBidWdzIGluICVzIDoiICUgKGZpbGVuYW1lKSkKLSAgICAgICAgZm9yIGJ1
Z2lkIGluIHJlc29sdmVkX2lkczoKLSAgICAgICAgICAgIHByaW50KCJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9JXMiICUgKGJ1Z2lkKSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXNfdW5pdHRlc3QucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MWJlZjNhNDczZDZjOTVmYzExODQ5MWVhNzU4
YjA2OTNlYmY5NTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXNfdW5pdHRlc3Qu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNjUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
aW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBv
cnQgQnVnemlsbGEKLWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCi1m
cm9tIHdlYmtpdHB5LnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQKLWZyb20gd2Via2l0cHkudG9v
bC5jb21tYW5kcy5jb21tYW5kdGVzdCBpbXBvcnQgQ29tbWFuZHNUZXN0Ci1mcm9tIHdlYmtpdHB5
LnRvb2wuY29tbWFuZHMucXVlcmllcyBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0
b29sIGltcG9ydCBNb2NrVG9vbCwgTW9ja09wdGlvbnMKLQotZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IE91dHB1dENhcHR1cmUKLQotCi1jbGFzcyBNb2NrVGVzdFBvcnQxKG9iamVjdCk6Ci0gICAg
ZGVmIHNraXBzX2xheW91dF90ZXN0KHNlbGYsIHRlc3RfbmFtZSk6Ci0gICAgICAgIHJldHVybiB0
ZXN0X25hbWUgaW4gWyJtZWRpYS9mb28vYmFyLmh0bWwiLCAiZm9vIl0KLQotCi1jbGFzcyBNb2Nr
VGVzdFBvcnQyKG9iamVjdCk6Ci0gICAgZGVmIHNraXBzX2xheW91dF90ZXN0KHNlbGYsIHRlc3Rf
bmFtZSk6Ci0gICAgICAgIHJldHVybiB0ZXN0X25hbWUgPT0gIm1lZGlhL2Zvby9iYXIuaHRtbCIK
LQotCi1jbGFzcyBNb2NrUG9ydEZhY3Rvcnkob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2Vs
Zik6Ci0gICAgICAgIHNlbGYuX2FsbF9wb3J0cyA9IHsKLSAgICAgICAgICAgICJ0ZXN0X3BvcnQx
IjogTW9ja1Rlc3RQb3J0MSgpLAotICAgICAgICAgICAgInRlc3RfcG9ydDIiOiBNb2NrVGVzdFBv
cnQyKCksCi0gICAgICAgIH0KLQotICAgIGRlZiBhbGxfcG9ydF9uYW1lcyhzZWxmLCBvcHRpb25z
PU5vbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5fYWxsX3BvcnRzLmtleXMoKQotCi0gICAgZGVm
IGdldChzZWxmLCBwb3J0X25hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fYWxsX3BvcnRzLmdl
dChwb3J0X25hbWUpCi0KLQotY2xhc3MgUXVlcnlDb21tYW5kc1Rlc3QoQ29tbWFuZHNUZXN0KToK
LSAgICBkZWYgdGVzdF9idWdzX3RvX2NvbW1pdChzZWxmKToKLSAgICAgICAgZXhwZWN0ZWRfbG9n
cyA9ICJXYXJuaW5nLCBhdHRhY2htZW50IDEwMDAxIG9uIGJ1ZyA1MDAwMCBoYXMgaW52YWxpZCBj
b21taXR0ZXIgKG5vbi1jb21taXR0ZXJAZXhhbXBsZS5jb20pXG4iCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2V4ZWN1dGVfb3V0cHV0cyhCdWdzVG9Db21taXQoKSwgTm9uZSwgIjUwMDAwXG41MDAwM1xu
IiwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQotCi0gICAgZGVmIHRlc3RfcGF0Y2hlc19p
bl9jb21taXRfcXVldWUoc2VsZik6Ci0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJodHRwOi8v
ZXhhbXBsZS5jb20vMTAwMDBcbmh0dHA6Ly9leGFtcGxlLmNvbS8xMDAwMlxuIgotICAgICAgICBl
eHBlY3RlZF9sb2dzID0gIldhcm5pbmcsIGF0dGFjaG1lbnQgMTAwMDEgb24gYnVnIDUwMDAwIGhh
cyBpbnZhbGlkIGNvbW1pdHRlciAobm9uLWNvbW1pdHRlckBleGFtcGxlLmNvbSlcblBhdGNoZXMg
aW4gY29tbWl0IHF1ZXVlOlxuIgotICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMo
UGF0Y2hlc0luQ29tbWl0UXVldWUoKSwgTm9uZSwgZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9s
b2dzPWV4cGVjdGVkX2xvZ3MpCi0KLSAgICBkZWYgdGVzdF9wYXRjaGVzX3RvX2NvbW1pdF9xdWV1
ZShzZWxmKToKLSAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gImh0dHA6Ly9leGFtcGxlLmNvbS8x
MDAwMyZhY3Rpb249ZWRpdFxuIgotICAgICAgICBleHBlY3RlZF9sb2dzID0gIjEwMDAwIGFscmVh
ZHkgaGFzIGNxPStcbjEwMDAxIGFscmVhZHkgaGFzIGNxPStcbjEwMDA0IGNvbW1pdHRlciA9IFwi
QWxleGV5IFByb3NrdXJ5YWtvdlwiIDxhcEB3ZWJraXQub3JnPlxuIgotICAgICAgICBvcHRpb25z
ID0gTW9jaygpCi0gICAgICAgIG9wdGlvbnMuYnVncyA9IEZhbHNlCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2V4ZWN1dGVfb3V0cHV0cyhQYXRjaGVzVG9Db21taXRRdWV1ZSgpLCBOb25lLCBleHBlY3Rl
ZF9zdGRvdXQsIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncywgb3B0aW9ucz1vcHRpb25zKQot
Ci0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJodHRwOi8vZXhhbXBsZS5jb20vNTAwMDNcbiIK
LSAgICAgICAgb3B0aW9ucy5idWdzID0gVHJ1ZQotICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRl
X291dHB1dHMoUGF0Y2hlc1RvQ29tbWl0UXVldWUoKSwgTm9uZSwgZXhwZWN0ZWRfc3Rkb3V0LCBl
eHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MsIG9wdGlvbnM9b3B0aW9ucykKLQotICAgIGRlZiB0
ZXN0X3BhdGNoZXNfdG9fcmV2aWV3KHNlbGYpOgotICAgICAgICBvcHRpb25zID0gTW9jaygpCi0K
LSAgICAgICAgIyBXaGVuIG5vIGNjX2VtYWlsIGlzIHByb3ZpZGVkLCB3ZSB1c2UgdGhlIEJ1Z3pp
bGxhIHVzZXJuYW1lIGJ5IGRlZmF1bHQuCi0gICAgICAgICMgVGhlIE1vY2tCdWd6aWxsYSB3aWxs
IGZha2UgdGhlIGF1dGhlbnRpY2F0aW9uIHVzaW5nIHVzZXJuYW1lQHdlYmtpdC5vcmcKLSAgICAg
ICAgIyBhcyBsb2dpbiBhbmQgaXQgc2hvdWxkIG1hdGNoIHRoZSB1c2VybmFtZSBhdCB0aGUgcmVw
b3J0IGhlYWRlci4KLSAgICAgICAgb3B0aW9ucy5jY19lbWFpbCA9IE5vbmUKLSAgICAgICAgb3B0
aW9ucy5pbmNsdWRlX2NxX2RlbmllZCA9IEZhbHNlCi0gICAgICAgIG9wdGlvbnMuYWxsID0gRmFs
c2UKLSAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gXAotICAgICAgICAgICAgIkJ1Z3Mgd2l0aCBh
dHRhY2htZW50cyBwZW5kaW5nIHJldmlldyB0aGF0IGhhcyB1c2VybmFtZUB3ZWJraXQub3JnIGlu
IHRoZSBDQyBsaXN0OlxuIiBcCi0gICAgICAgICAgICAiaHR0cDovL3dlYmtpdC5vcmcvYi9idWdp
ZCAgIERlc2NyaXB0aW9uIChhZ2UgaW4gZGF5cylcbiIgXAotICAgICAgICAgICAgIlRvdGFsOiAw
XG4iCi0gICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4
ZWN1dGVfb3V0cHV0cyhQYXRjaGVzVG9SZXZpZXcoKSwgTm9uZSwgZXhwZWN0ZWRfc3Rkb3V0LCBl
eHBlY3RlZF9zdGRlcnIsIG9wdGlvbnM9b3B0aW9ucykKLQotICAgICAgICBvcHRpb25zLmNjX2Vt
YWlsID0gImFiYXJ0aEB3ZWJraXQub3JnIgotICAgICAgICBvcHRpb25zLmluY2x1ZGVfY3FfZGVu
aWVkID0gVHJ1ZQotICAgICAgICBvcHRpb25zLmFsbCA9IEZhbHNlCi0gICAgICAgIGV4cGVjdGVk
X3N0ZG91dCA9IFwKLSAgICAgICAgICAgICJCdWdzIHdpdGggYXR0YWNobWVudHMgcGVuZGluZyBy
ZXZpZXcgdGhhdCBoYXMgYWJhcnRoQHdlYmtpdC5vcmcgaW4gdGhlIENDIGxpc3Q6XG4iIFwKLSAg
ICAgICAgICAgICJodHRwOi8vd2Via2l0Lm9yZy9iL2J1Z2lkICAgRGVzY3JpcHRpb24gKGFnZSBp
biBkYXlzKVxuIiBcCi0gICAgICAgICAgICAiaHR0cDovL3dlYmtpdC5vcmcvYi81MDAwMSAgIEJ1
ZyB3aXRoIGEgcGF0Y2ggbmVlZGluZyByZXZpZXcuICgwKVxuIiBcCi0gICAgICAgICAgICAiVG90
YWw6IDFcbiIKLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIiIKLSAgICAgICAgc2VsZi5hc3Nl
cnRfZXhlY3V0ZV9vdXRwdXRzKFBhdGNoZXNUb1JldmlldygpLCBOb25lLCBleHBlY3RlZF9zdGRv
dXQsIGV4cGVjdGVkX3N0ZGVyciwgb3B0aW9ucz1vcHRpb25zKQotCi0gICAgICAgIG9wdGlvbnMu
Y2NfZW1haWwgPSBOb25lCi0gICAgICAgIG9wdGlvbnMuaW5jbHVkZV9jcV9kZW5pZWQgPSBUcnVl
Ci0gICAgICAgIG9wdGlvbnMuYWxsID0gVHJ1ZQotICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSBc
Ci0gICAgICAgICAgICAiQnVncyB3aXRoIGF0dGFjaG1lbnRzIHBlbmRpbmcgcmV2aWV3OlxuIiBc
Ci0gICAgICAgICAgICAiaHR0cDovL3dlYmtpdC5vcmcvYi9idWdpZCAgIERlc2NyaXB0aW9uIChh
Z2UgaW4gZGF5cylcbiIgXAotICAgICAgICAgICAgImh0dHA6Ly93ZWJraXQub3JnL2IvNTAwMDEg
ICBCdWcgd2l0aCBhIHBhdGNoIG5lZWRpbmcgcmV2aWV3LiAoMClcbiIgXAotICAgICAgICAgICAg
IlRvdGFsOiAxXG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhQYXRjaGVz
VG9SZXZpZXcoKSwgTm9uZSwgZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnIsIG9wdGlv
bnM9b3B0aW9ucykKLQotICAgICAgICBvcHRpb25zLmNjX2VtYWlsID0gTm9uZQotICAgICAgICBv
cHRpb25zLmluY2x1ZGVfY3FfZGVuaWVkID0gRmFsc2UKLSAgICAgICAgb3B0aW9ucy5hbGwgPSBU
cnVlCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9IFwKLSAgICAgICAgICAgICJCdWdzIHdpdGgg
YXR0YWNobWVudHMgcGVuZGluZyByZXZpZXc6XG4iIFwKLSAgICAgICAgICAgICJodHRwOi8vd2Vi
a2l0Lm9yZy9iL2J1Z2lkICAgRGVzY3JpcHRpb24gKGFnZSBpbiBkYXlzKVxuIiBcCi0gICAgICAg
ICAgICAiVG90YWw6IDBcbiIKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKFBh
dGNoZXNUb1JldmlldygpLCBOb25lLCBleHBlY3RlZF9zdGRvdXQsIGV4cGVjdGVkX3N0ZGVyciwg
b3B0aW9ucz1vcHRpb25zKQotCi0gICAgICAgIG9wdGlvbnMuY2NfZW1haWwgPSAiaW52YWxpZF9l
bWFpbEBleGFtcGxlLmNvbSIKLSAgICAgICAgb3B0aW9ucy5hbGwgPSBGYWxzZQotICAgICAgICBv
cHRpb25zLmluY2x1ZGVfY3FfZGVuaWVkID0gVHJ1ZQotICAgICAgICBleHBlY3RlZF9zdGRvdXQg
PSBcCi0gICAgICAgICAgICAiQnVncyB3aXRoIGF0dGFjaG1lbnRzIHBlbmRpbmcgcmV2aWV3IHRo
YXQgaGFzIGludmFsaWRfZW1haWxAZXhhbXBsZS5jb20gaW4gdGhlIENDIGxpc3Q6XG4iIFwKLSAg
ICAgICAgICAgICJodHRwOi8vd2Via2l0Lm9yZy9iL2J1Z2lkICAgRGVzY3JpcHRpb24gKGFnZSBp
biBkYXlzKVxuIiBcCi0gICAgICAgICAgICAiVG90YWw6IDBcbiIKLSAgICAgICAgc2VsZi5hc3Nl
cnRfZXhlY3V0ZV9vdXRwdXRzKFBhdGNoZXNUb1JldmlldygpLCBOb25lLCBleHBlY3RlZF9zdGRv
dXQsIGV4cGVjdGVkX3N0ZGVyciwgb3B0aW9ucz1vcHRpb25zKQotCi0gICAgZGVmIHRlc3RfdHJl
ZV9zdGF0dXMoc2VsZik6Ci0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJvayAgIDogQnVpbGRl
cjFcbm9rICAgOiBCdWlsZGVyMlxuIgotICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1
dHMoVHJlZVN0YXR1cygpLCBOb25lLCBleHBlY3RlZF9zdGRvdXQpCi0KLQotY2xhc3MgRmFpbHVy
ZVJlYXNvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2JsYW1lX2xpbmVf
Zm9yX3JldmlzaW9uKHNlbGYpOgotICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBj
b21tYW5kID0gRmFpbHVyZVJlYXNvbigpCi0gICAgICAgIGNvbW1hbmQuYmluZF90b190b29sKHRv
b2wpCi0gICAgICAgICMgVGhpcyBpcyBhbiBhcnRpZmljaWFsIGV4YW1wbGUsIG1vc3RseSB0byB0
ZXN0IHRoZSBDb21taXRJbmZvIGxvb2t1cCBmYWlsdXJlIGNhc2UuCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tbWFuZC5fYmxhbWVfbGluZV9mb3JfcmV2aXNpb24oMCksICJGQUlMRUQgdG8g
ZmV0Y2ggQ29tbWl0SW5mbyBmb3IgcjAsIGxpa2VseSBtaXNzaW5nIENoYW5nZUxvZyIpCi0KLSAg
ICAgICAgZGVmIHJhaXNpbmdfbW9jayhzZWxmKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bigiTUVTU0FHRSIpCi0gICAgICAgIHRvb2wuY2hlY2tvdXQoKS5jb21taXRfaW5mb19mb3JfcmV2
aXNpb24gPSByYWlzaW5nX21vY2sKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tYW5kLl9i
bGFtZV9saW5lX2Zvcl9yZXZpc2lvbigwKSwgIkZBSUxFRCB0byBmZXRjaCBDb21taXRJbmZvIGZv
ciByMCwgZXhjZXB0aW9uOiBNRVNTQUdFIikKLQotCi1jbGFzcyBQcmludEV4cGVjdGF0aW9uc1Rl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBydW5fdGVzdChzZWxmLCB0ZXN0cywgZXhw
ZWN0ZWRfc3Rkb3V0LCBwbGF0Zm9ybT0ndGVzdC13aW4teHAnLCAqKmFyZ3MpOgotICAgICAgICBv
cHRpb25zID0gTW9ja09wdGlvbnMoYWxsPUZhbHNlLCBmdWxsPUZhbHNlLCBwbGF0Zm9ybT1wbGF0
Zm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfa2V5d29yZD1bXSwg
ZXhjbHVkZV9rZXl3b3JkPVtdLCBwYXRocz1GYWxzZSkudXBkYXRlKCoqYXJncykKLSAgICAgICAg
dG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgdG9vbC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFt
ZXMgPSBsYW1iZGE6IFRlc3RQb3J0LkFMTF9CQVNFTElORV9WQVJJQU5UUwotICAgICAgICBjb21t
YW5kID0gUHJpbnRFeHBlY3RhdGlvbnMoKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0
b29sKQotCi0gICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgotICAgICAg
ICAgICAgY29tbWFuZC5leGVjdXRlKG9wdGlvbnMsIHRlc3RzLCB0b29sKQotICAgICAgICBzZWxm
LmFzc2VydE11bHRpTGluZUVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCBleHBlY3Rl
ZF9zdGRvdXQpCi0KLSAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5f
dGVzdChbJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC9p
bWFnZS5odG1sJ10sCi0gICAgICAgICAgICAgICAgICAgICAgKCcvLyBGb3IgdGVzdC13aW4teHBc
bicKLSAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF1cbicKLSAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCBbIEZhaWx1cmUgXVxuJykpCi0KLSAgICBkZWYgdGVzdF9tdWx0
aXBsZShzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdChbJ2ZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sJ10sCi0gICAgICAgICAgICAg
ICAgICAgICAgKCcvLyBGb3IgdGVzdC13aW4tdmlzdGFcbicKLSAgICAgICAgICAgICAgICAgICAg
ICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbicK
LSAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCBbIEZh
aWx1cmUgXVxuJwotICAgICAgICAgICAgICAgICAgICAgICAnXG4nCi0gICAgICAgICAgICAgICAg
ICAgICAgICcvLyBGb3IgdGVzdC13aW4tN3NwMFxuJwotICAgICAgICAgICAgICAgICAgICAgICAn
ZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXVxuJwotICAg
ICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sIFsgRmFpbHVy
ZSBdXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICdcbicKLSAgICAgICAgICAgICAgICAgICAg
ICAgJy8vIEZvciB0ZXN0LXdpbi14cFxuJwotICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVy
ZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXVxuJwotICAgICAgICAg
ICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sIFsgRmFpbHVyZSBdXG4n
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J3Rlc3Qtd2luLSonKQotCi0gICAg
ZGVmIHRlc3RfZnVsbChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdChbJ2ZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sJ10sCi0gICAg
ICAgICAgICAgICAgICAgICAgKCcvLyBGb3IgdGVzdC13aW4teHBcbicKLSAgICAgICAgICAgICAg
ICAgICAgICAgJ0J1Zyh0ZXN0KSBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICdCdWcodGVzdCkgZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sIFsgRmFpbHVyZSBdXG4nKSwKLSAgICAgICAgICAgICAgICAg
ICAgICBmdWxsPVRydWUpCi0KLSAgICBkZWYgdGVzdF9leGNsdWRlKHNlbGYpOgotICAgICAgICBz
ZWxmLnJ1bl90ZXN0KFsnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgJ2ZhaWx1cmVzL2V4
cGVjdGVkL2ltYWdlLmh0bWwnXSwKLSAgICAgICAgICAgICAgICAgICAgICAoJy8vIEZvciB0ZXN0
LXdpbi14cFxuJwotICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sIFsgRmFpbHVyZSBdXG4nKSwKLSAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlX2tl
eXdvcmQ9WydpbWFnZSddKQotCi0gICAgZGVmIHRlc3RfaW5jbHVkZShzZWxmKToKLSAgICAgICAg
c2VsZi5ydW5fdGVzdChbJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsICdmYWlsdXJlcy9l
eHBlY3RlZC9pbWFnZS5odG1sJ10sCi0gICAgICAgICAgICAgICAgICAgICAgKCcvLyBGb3IgdGVz
dC13aW4teHBcbicKLSAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL2lt
YWdlLmh0bWxcbicpLAotICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfa2V5d29yZD1bJ2lt
YWdlJ10pCi0KLSAgICBkZWYgdGVzdF9wYXRocyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVz
dChbXSwKLSAgICAgICAgICAgICAgICAgICAgICAoJ0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnNcbicKLSAgICAgICAgICAgICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3Qv
VGVzdEV4cGVjdGF0aW9uc1xuJwotICAgICAgICAgICAgICAgICAgICAgICAnTGF5b3V0VGVzdHMv
cGxhdGZvcm0vdGVzdC13aW4teHAvVGVzdEV4cGVjdGF0aW9uc1xuJyksCi0gICAgICAgICAgICAg
ICAgICAgICAgcGF0aHM9VHJ1ZSkKLQotICAgIGRlZiB0ZXN0X3BsYXRmb3JtKHNlbGYpOgotICAg
ICAgICBzZWxmLnJ1bl90ZXN0KFsncGxhdGZvcm0vdGVzdC1tYWMtbGVvcGFyZC9odHRwL3Rlc3Qu
aHRtbCddLAotICAgICAgICAgICAgICAgICAgICAgICgnLy8gRm9yIHRlc3QtbWFjLXNub3dsZW9w
YXJkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXN0LW1hYy1sZW9wYXJk
IFsgUGFzcyBTa2lwIFdvbnRGaXggXVxuJyAgIyBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgZXhwZWN0
YXRpb24gKGZyb20gYmVpbmcgc2tpcHBlZCBpbnRlcm5hbGx5KSwgbm90IHRoZSB0ZXN0IG5hbWUK
LSAgICAgICAgICAgICAgICAgICAgICAgJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAnLy8g
Rm9yIHRlc3QtbWFjLWxlb3BhcmRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3Jt
L3Rlc3QtbWFjLWxlb3BhcmQvaHR0cC90ZXN0Lmh0bWwgWyBQYXNzIF1cbicpLAotICAgICAgICAg
ICAgICAgICAgICAgIHBsYXRmb3JtPSd0ZXN0LW1hYy0qJykKLQotCi1jbGFzcyBQcmludEJhc2Vs
aW5lc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAg
ICAgc2VsZi5vYyA9IE5vbmUKLSAgICAgICAgc2VsZi50b29sID0gTW9ja1Rvb2woKQotICAgICAg
ICBzZWxmLnRlc3RfcG9ydCA9IHNlbGYudG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LXdpbi14
cCcpCi0gICAgICAgIHNlbGYudG9vbC5wb3J0X2ZhY3RvcnkuZ2V0ID0gbGFtYmRhIHBvcnRfbmFt
ZT1Ob25lOiBzZWxmLnRlc3RfcG9ydAotICAgICAgICBzZWxmLnRvb2wucG9ydF9mYWN0b3J5LmFs
bF9wb3J0X25hbWVzID0gbGFtYmRhOiBUZXN0UG9ydC5BTExfQkFTRUxJTkVfVkFSSUFOVFMKLQot
ICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUHJpbnRCYXNlbGlu
ZXMoKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbChzZWxmLnRvb2wpCi0gICAgICAgIHdp
dGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgotICAgICAgICAgICAgY29tbWFuZC5leGVj
dXRlKE1vY2tPcHRpb25zKGFsbD1GYWxzZSwgcGxhdGZvcm09Tm9uZSksIFsncGFzc2VzL3RleHQu
aHRtbCddLCBzZWxmLnRvb2wpCi0gICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoY2Fw
dHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICgnLy8g
Rm9yIHRlc3Qtd2luLXhwXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL3Rl
eHQtZXhwZWN0ZWQucG5nXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL3Rl
eHQtZXhwZWN0ZWQudHh0XG4nKSkKLQotICAgIGRlZiB0ZXN0X211bHRpcGxlKHNlbGYpOgotICAg
ICAgICBjb21tYW5kID0gUHJpbnRCYXNlbGluZXMoKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9f
dG9vbChzZWxmLnRvb2wpCi0gICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVk
OgotICAgICAgICAgICAgY29tbWFuZC5leGVjdXRlKE1vY2tPcHRpb25zKGFsbD1GYWxzZSwgcGxh
dGZvcm09J3Rlc3Qtd2luLSonKSwgWydwYXNzZXMvdGV4dC5odG1sJ10sIHNlbGYudG9vbCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKCcvLyBGb3IgdGVzdC13aW4tdmlzdGFcbicK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzZXMvdGV4dC1leHBlY3RlZC5wbmdcbicK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzZXMvdGV4dC1leHBlY3RlZC50eHRcbicK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcvLyBGb3IgdGVzdC13aW4tN3NwMFxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3Bhc3Nlcy90ZXh0LWV4cGVjdGVkLnBuZ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3Bhc3Nlcy90ZXh0LWV4cGVjdGVkLnR4dFxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8vIEZvciB0ZXN0LXdpbi14cFxuJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy90ZXh0LWV4cGVjdGVkLnBuZ1xuJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy90ZXh0LWV4cGVjdGVkLnR4dFxuJykp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNl
bGluZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5l
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjJmYTc0YzQ0NDcwZDM4NDU4NGZl
NTE1OTNmYjIxN2EwYjQ3N2I5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5l
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDMyICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1m
cm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi1pbXBvcnQganNvbgotaW1wb3J0
IGxvZ2dpbmcKLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IHN5cwotCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMuY29udHJvbGxlcnMudGVzdF9yZXN1bHRfd3JpdGVyIGltcG9ydCBUZXN0UmVz
dWx0V3JpdGVyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3Rf
ZmFpbHVyZXMKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2V4cGVjdGF0
aW9ucyBpbXBvcnQgVGVzdEV4cGVjdGF0aW9ucywgQkFTRUxJTkVfU1VGRklYX0xJU1QKLWZyb20g
d2Via2l0cHkucG9ydCBpbXBvcnQgYnVpbGRlcnMKLWZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQg
ZmFjdG9yeQotZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmRlcHJlY2F0ZWRjb21tYW5kIGlt
cG9ydCBEZXByZWNhdGVkQ29tbWFuZAotZnJvbSB3ZWJraXRweS50b29sLm11bHRpY29tbWFuZHRv
b2wgaW1wb3J0IENvbW1hbmQKLQotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18p
Ci0KLQotIyBGSVhNRTogU2hvdWxkIFRlc3RSZXN1bHRXcml0ZXIga25vdyBob3cgdG8gY29tcHV0
ZSB0aGlzIHN0cmluZz8KLWRlZiBfYmFzZWxpbmVfbmFtZShmcywgdGVzdF9uYW1lLCBzdWZmaXgp
OgotICAgIHJldHVybiBmcy5zcGxpdGV4dCh0ZXN0X25hbWUpWzBdICsgVGVzdFJlc3VsdFdyaXRl
ci5GSUxFTkFNRV9TVUZGSVhfRVhQRUNURUQgKyAiLiIgKyBzdWZmaXgKLQotCi1jbGFzcyBBYnN0
cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQoQ29tbWFuZCk6Ci0gICAgIyBub3Qgb3ZlcnJpZGluZyBl
eGVjdXRlKCkgLSBweWxpbnQ6IGRpc2FibGU9VzAyMjMKLQotICAgIG1vdmVfb3ZlcndyaXR0ZW5f
YmFzZWxpbmVzX29wdGlvbiA9IG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLW1vdmUtb3ZlcndyaXR0
ZW4tYmFzZWxpbmVzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAg
ICAgaGVscD0iTW92ZSBvdmVyd3JpdHRlbiBiYXNlbGluZXMgZWxzZXdoZXJlIGluIHRoZSBiYXNl
bGluZSBwYXRoLiBUaGlzIGlzIGZvciBicmluZ2luZyB1cCBuZXcgcG9ydHMuIikKLQotICAgIG5v
X29wdGltaXplX29wdGlvbiA9IG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCctLW5vLW9wdGltaXplJywg
ZGVzdD0nb3B0aW1pemUnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVmYXVsdD1UcnVlLAotICAg
ICAgICBoZWxwPSgnRG8gbm90IG9wdGltaXplL2RlLWR1cCB0aGUgZXhwZWN0YXRpb25zIGFmdGVy
IHJlYmFzZWxpbmluZyAoZGVmYXVsdCBpcyB0byBkZS1kdXAgYXV0b21hdGljYWxseSkuICcKLSAg
ICAgICAgICAgICAgJ1lvdSBjYW4gdXNlICJ3ZWJraXQtcGF0Y2ggb3B0aW1pemUtYmFzZWxpbmVz
IiB0byBvcHRpbWl6ZSBzZXBhcmF0ZWx5LicpKQotCi0gICAgdXBkYXRlX2V4cGVjdGF0aW9uc19v
cHRpb24gPSBvcHRwYXJzZS5tYWtlX29wdGlvbignLS11cGRhdGUtZXhwZWN0YXRpb25zJywgZGVz
dD0ndXBkYXRlX2V4cGVjdGF0aW9ucycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNl
LCBoZWxwPSgnVXBkYXRlIHRlc3QgZXhwZWN0YXRpb25zLicpKQotCi0gICAgcGxhdGZvcm1fb3B0
aW9ucyA9IGZhY3RvcnkucGxhdGZvcm1fb3B0aW9ucyh1c2VfZ2xvYnM9VHJ1ZSkKLQotICAgIHJl
c3VsdHNfZGlyZWN0b3J5X29wdGlvbiA9IG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXJlc3VsdHMt
ZGlyZWN0b3J5IiwgaGVscD0iTG9jYWwgcmVzdWx0cyBkaXJlY3RvcnkgdG8gdXNlIikKLQotICAg
IHN1ZmZpeGVzX29wdGlvbiA9IG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXN1ZmZpeGVzIiwgZGVm
YXVsdD0nLCcuam9pbihCQVNFTElORV9TVUZGSVhfTElTVCksIGFjdGlvbj0ic3RvcmUiLAotICAg
ICAgICBoZWxwPSJDb21tYS1zZXBhcmF0ZWQtbGlzdCBvZiBmaWxlIHR5cGVzIHRvIHJlYmFzZWxp
bmUiKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnM9Tm9uZSk6Ci0gICAgICAgIHN1
cGVyKEFic3RyYWN0UmViYXNlbGluaW5nQ29tbWFuZCwgc2VsZikuX19pbml0X18ob3B0aW9ucz1v
cHRpb25zKQotICAgICAgICBzZWxmLl9iYXNlbGluZV9zdWZmaXhfbGlzdCA9IEJBU0VMSU5FX1NV
RkZJWF9MSVNUCi0KLQotQERlcHJlY2F0ZWRDb21tYW5kCi1jbGFzcyBSZWJhc2VsaW5lVGVzdChB
YnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQpOgotICAgIG5hbWUgPSAicmViYXNlbGluZS10ZXN0
LWludGVybmFsIgotICAgIGhlbHBfdGV4dCA9ICJSZWJhc2VsaW5lIGEgc2luZ2xlIHRlc3QgZnJv
bSBhIGJ1aWxkYm90LiBPbmx5IGludGVuZGVkIGZvciB1c2UgYnkgb3RoZXIgd2Via2l0LXBhdGNo
IGNvbW1hbmRzLiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoUmVi
YXNlbGluZVRlc3QsIHNlbGYpLl9faW5pdF9fKG9wdGlvbnM9WwotICAgICAgICAgICAgc2VsZi5u
b19vcHRpbWl6ZV9vcHRpb24sCi0gICAgICAgICAgICBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5X29w
dGlvbiwKLSAgICAgICAgICAgIHNlbGYuc3VmZml4ZXNfb3B0aW9uLAotICAgICAgICAgICAgc2Vs
Zi51cGRhdGVfZXhwZWN0YXRpb25zX29wdGlvbiwKLSAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vf
b3B0aW9uKCItLWJ1aWxkZXIiLCBoZWxwPSJCdWlsZGVyIHRvIHB1bGwgbmV3IGJhc2VsaW5lcyBm
cm9tIiksCi0gICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1tb3ZlLW92ZXJ3cml0
dGVuLWJhc2VsaW5lcy10byIsIGFjdGlvbj0iYXBwZW5kIiwgZGVmYXVsdD1bXSwKLSAgICAgICAg
ICAgICAgICBoZWxwPSJQbGF0Zm9ybSB0byBtb3ZlIGV4aXN0aW5nIGJhc2VsaW5lcyB0byBiZWZv
cmUgcmViYXNlbGluaW5nLiBUaGlzIGlzIGZvciBicmluZ2luZyB1cCBuZXcgcG9ydHMuIiksCi0g
ICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS10ZXN0IiwgaGVscD0iVGVzdCB0byBy
ZWJhc2VsaW5lIiksCi0gICAgICAgICAgICBdKQotICAgICAgICBzZWxmLl9zY21fY2hhbmdlcyA9
IHsnYWRkJzogW119Ci0KLSAgICBkZWYgX3Jlc3VsdHNfdXJsKHNlbGYsIGJ1aWxkZXJfbmFtZSk6
Ci0gICAgICAgIHJldHVybiBzZWxmLl90b29sLmJ1aWxkYm90LmJ1aWxkZXJfd2l0aF9uYW1lKGJ1
aWxkZXJfbmFtZSkubGF0ZXN0X2xheW91dF90ZXN0X3Jlc3VsdHNfdXJsKCkKLQotICAgIGRlZiBf
YmFzZWxpbmVfZGlyZWN0b3J5KHNlbGYsIGJ1aWxkZXJfbmFtZSk6Ci0gICAgICAgIHBvcnQgPSBz
ZWxmLl90b29sLnBvcnRfZmFjdG9yeS5nZXRfZnJvbV9idWlsZGVyX25hbWUoYnVpbGRlcl9uYW1l
KQotICAgICAgICBvdmVycmlkZV9kaXIgPSBidWlsZGVycy5yZWJhc2VsaW5lX292ZXJyaWRlX2Rp
cihidWlsZGVyX25hbWUpCi0gICAgICAgIGlmIG92ZXJyaWRlX2RpcjoKLSAgICAgICAgICAgIHJl
dHVybiBzZWxmLl90b29sLmZpbGVzeXN0ZW0uam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwg
J3BsYXRmb3JtJywgb3ZlcnJpZGVfZGlyKQotICAgICAgICByZXR1cm4gcG9ydC5iYXNlbGluZV92
ZXJzaW9uX2RpcigpCi0KLSAgICBkZWYgX2NvcHlfZXhpc3RpbmdfYmFzZWxpbmUoc2VsZiwgbW92
ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG8sIHRlc3RfbmFtZSwgc3VmZml4KToKLSAgICAgICAg
b2xkX2Jhc2VsaW5lcyA9IFtdCi0gICAgICAgIG5ld19iYXNlbGluZXMgPSBbXQotCi0gICAgICAg
ICMgTmVlZCB0byBnYXRoZXIgYWxsIHRoZSBiYXNlbGluZSBwYXRocyBiZWZvcmUgbW9kaWZ5aW5n
IHRoZSBmaWxlc3lzdGVtIHNpbmNlCi0gICAgICAgICMgdGhlIG1vZGlmaWNhdGlvbnMgY2FuIGFm
ZmVjdCB0aGUgcmVzdWx0cyBvZiBwb3J0LmV4cGVjdGVkX2ZpbGVuYW1lLgotICAgICAgICBmb3Ig
cGxhdGZvcm0gaW4gbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG86Ci0gICAgICAgICAgICBw
b3J0ID0gc2VsZi5fdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KHBsYXRmb3JtKQotICAgICAgICAgICAg
b2xkX2Jhc2VsaW5lID0gcG9ydC5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsICIuIiArIHN1
ZmZpeCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90b29sLmZpbGVzeXN0ZW0uZXhpc3RzKG9s
ZF9iYXNlbGluZSk6Ci0gICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiTm8gZXhpc3RpbmcgYmFz
ZWxpbmUgZm9yICVzLiIgJSB0ZXN0X25hbWUpCi0gICAgICAgICAgICAgICAgY29udGludWUKLQot
ICAgICAgICAgICAgbmV3X2Jhc2VsaW5lID0gc2VsZi5fdG9vbC5maWxlc3lzdGVtLmpvaW4ocG9y
dC5iYXNlbGluZV9wYXRoKCksIHNlbGYuX2ZpbGVfbmFtZV9mb3JfZXhwZWN0ZWRfcmVzdWx0KHRl
c3RfbmFtZSwgc3VmZml4KSkKLSAgICAgICAgICAgIGlmIHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS5l
eGlzdHMobmV3X2Jhc2VsaW5lKToKLSAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCJFeGlzdGlu
ZyBiYXNlbGluZSBhdCAlcywgbm90IGNvcHlpbmcgb3ZlciBpdC4iICUgbmV3X2Jhc2VsaW5lKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIG9sZF9iYXNlbGluZXMuYXBw
ZW5kKG9sZF9iYXNlbGluZSkKLSAgICAgICAgICAgIG5ld19iYXNlbGluZXMuYXBwZW5kKG5ld19i
YXNlbGluZSkKLQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ob2xkX2Jhc2VsaW5lcykpOgot
ICAgICAgICAgICAgb2xkX2Jhc2VsaW5lID0gb2xkX2Jhc2VsaW5lc1tpXQotICAgICAgICAgICAg
bmV3X2Jhc2VsaW5lID0gbmV3X2Jhc2VsaW5lc1tpXQotCi0gICAgICAgICAgICBfbG9nLmRlYnVn
KCJDb3B5aW5nIGJhc2VsaW5lIGZyb20gJXMgdG8gJXMuIiAlIChvbGRfYmFzZWxpbmUsIG5ld19i
YXNlbGluZSkpCi0gICAgICAgICAgICBzZWxmLl90b29sLmZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9k
aXJlY3Rvcnkoc2VsZi5fdG9vbC5maWxlc3lzdGVtLmRpcm5hbWUobmV3X2Jhc2VsaW5lKSkKLSAg
ICAgICAgICAgIHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS5jb3B5ZmlsZShvbGRfYmFzZWxpbmUsIG5l
d19iYXNlbGluZSkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90b29sLnNjbSgpLmV4aXN0cyhu
ZXdfYmFzZWxpbmUpOgotICAgICAgICAgICAgICAgIHNlbGYuX2FkZF90b19zY20obmV3X2Jhc2Vs
aW5lKQotCi0gICAgZGVmIF9zYXZlX2Jhc2VsaW5lKHNlbGYsIGRhdGEsIHRhcmdldF9iYXNlbGlu
ZSk6Ci0gICAgICAgIGlmIG5vdCBkYXRhOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZp
bGVzeXN0ZW0gPSBzZWxmLl90b29sLmZpbGVzeXN0ZW0KLSAgICAgICAgZmlsZXN5c3RlbS5tYXli
ZV9tYWtlX2RpcmVjdG9yeShmaWxlc3lzdGVtLmRpcm5hbWUodGFyZ2V0X2Jhc2VsaW5lKSkKLSAg
ICAgICAgZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZSh0YXJnZXRfYmFzZWxpbmUsIGRhdGEp
Ci0gICAgICAgIGlmIG5vdCBzZWxmLl90b29sLnNjbSgpLmV4aXN0cyh0YXJnZXRfYmFzZWxpbmUp
OgotICAgICAgICAgICAgc2VsZi5fYWRkX3RvX3NjbSh0YXJnZXRfYmFzZWxpbmUpCi0KLSAgICBk
ZWYgX2FkZF90b19zY20oc2VsZiwgcGF0aCk6Ci0gICAgICAgIHNlbGYuX3NjbV9jaGFuZ2VzWydh
ZGQnXS5hcHBlbmQocGF0aCkKLQotICAgIGRlZiBfdXBkYXRlX2V4cGVjdGF0aW9uc19maWxlKHNl
bGYsIGJ1aWxkZXJfbmFtZSwgdGVzdF9uYW1lKToKLSAgICAgICAgcG9ydCA9IHNlbGYuX3Rvb2wu
cG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFtZShidWlsZGVyX25hbWUpCi0KLSAgICAg
ICAgIyBTaW5jZSByZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwgY2FuIGJlIGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcyBpbiBwYXJhbGxlbCwKLSAgICAgICAgIyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdl
J3JlIG5vdCB0cnlpbmcgdG8gdXBkYXRlIHRoZSBleHBlY3RhdGlvbnMgZmlsZQotICAgICAgICAj
IGNvbmN1cnJlbnRseSBhcyB3ZWxsLgotICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgcmV3b3Jr
IHRoZSBjb2RlIHRvIG5vdCBuZWVkIHRoaXM7IG1heWJlIGp1c3QgZG93bmxvYWQKLSAgICAgICAg
IyB0aGUgZmlsZXMgaW4gcGFyYWxsZWwgYW5kIHJlYmFzZWxpbmUgbG9jYWwgZmlsZXMgc2VyaWFs
bHk/Ci0gICAgICAgIHBhdGggPSBwb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgp
Ci0gICAgICAgIHdpdGggc2VsZi5fdG9vbC5tYWtlX2ZpbGVfbG9jayhwYXRoICsgJy5sb2NrJykg
YXMgbG9jazoKLSAgICAgICAgICAgIGlmIG5vdCBsb2NrLmFjcXVpcmVkOgotICAgICAgICAgICAg
ICAgIHJhaXNlIE9TRXJyb3IoJ0ZhaWxlZCB0byBhcXVpcmUgcmViYXNlbGluZSBsb2NrIGZvciB7
fScuZm9ybWF0KHBhdGgpKQotCi0gICAgICAgICAgICBleHBlY3RhdGlvbnMgPSBUZXN0RXhwZWN0
YXRpb25zKHBvcnQsIGluY2x1ZGVfZ2VuZXJpYz1GYWxzZSwgaW5jbHVkZV9vdmVycmlkZXM9RmFs
c2UpCi0gICAgICAgICAgICBleHBlY3RhdGlvbnMucGFyc2VfYWxsX2V4cGVjdGF0aW9ucygpCi0g
ICAgICAgICAgICBmb3IgdGVzdF9jb25maWd1cmF0aW9uIGluIHBvcnQuYWxsX3Rlc3RfY29uZmln
dXJhdGlvbnMoKToKLSAgICAgICAgICAgICAgICBpZiB0ZXN0X2NvbmZpZ3VyYXRpb24udmVyc2lv
biA9PSBwb3J0LnRlc3RfY29uZmlndXJhdGlvbigpLnZlcnNpb246Ci0gICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGF0aW9uc1N0cmluZyA9IGV4cGVjdGF0aW9ucy5yZW1vdmVfY29uZmlndXJhdGlv
bl9mcm9tX3Rlc3QodGVzdF9uYW1lLCB0ZXN0X2NvbmZpZ3VyYXRpb24pCi0KLSAgICAgICAgICAg
IHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0aCwgZXhwZWN0YXRpb25z
U3RyaW5nKQotCi0gICAgZGVmIF90ZXN0X3Jvb3Qoc2VsZiwgdGVzdF9uYW1lKToKLSAgICAgICAg
cmV0dXJuIHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS5zcGxpdGV4dCh0ZXN0X25hbWUpWzBdCi0KLSAg
ICBkZWYgX2ZpbGVfbmFtZV9mb3JfYWN0dWFsX3Jlc3VsdChzZWxmLCB0ZXN0X25hbWUsIHN1ZmZp
eCk6Ci0gICAgICAgIHJldHVybiAiJXMtYWN0dWFsLiVzIiAlIChzZWxmLl90ZXN0X3Jvb3QodGVz
dF9uYW1lKSwgc3VmZml4KQotCi0gICAgZGVmIF9maWxlX25hbWVfZm9yX2V4cGVjdGVkX3Jlc3Vs
dChzZWxmLCB0ZXN0X25hbWUsIHN1ZmZpeCk6Ci0gICAgICAgIHJldHVybiAiJXMtZXhwZWN0ZWQu
JXMiICUgKHNlbGYuX3Rlc3Rfcm9vdCh0ZXN0X25hbWUpLCBzdWZmaXgpCi0KLSAgICBkZWYgX3Jl
YmFzZWxpbmVfdGVzdChzZWxmLCBidWlsZGVyX25hbWUsIHRlc3RfbmFtZSwgbW92ZV9vdmVyd3Jp
dHRlbl9iYXNlbGluZXNfdG8sIHN1ZmZpeCwgcmVzdWx0c191cmwpOgotICAgICAgICBiYXNlbGlu
ZV9kaXJlY3RvcnkgPSBzZWxmLl9iYXNlbGluZV9kaXJlY3RvcnkoYnVpbGRlcl9uYW1lKQotCi0g
ICAgICAgIHNvdXJjZV9iYXNlbGluZSA9ICIlcy8lcyIgJSAocmVzdWx0c191cmwsIHNlbGYuX2Zp
bGVfbmFtZV9mb3JfYWN0dWFsX3Jlc3VsdCh0ZXN0X25hbWUsIHN1ZmZpeCkpCi0gICAgICAgIHRh
cmdldF9iYXNlbGluZSA9IHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS5qb2luKGJhc2VsaW5lX2RpcmVj
dG9yeSwgc2VsZi5fZmlsZV9uYW1lX2Zvcl9leHBlY3RlZF9yZXN1bHQodGVzdF9uYW1lLCBzdWZm
aXgpKQotCi0gICAgICAgIGlmIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvOgotICAgICAg
ICAgICAgc2VsZi5fY29weV9leGlzdGluZ19iYXNlbGluZShtb3ZlX292ZXJ3cml0dGVuX2Jhc2Vs
aW5lc190bywgdGVzdF9uYW1lLCBzdWZmaXgpCi0KLSAgICAgICAgX2xvZy5kZWJ1ZygiUmV0cmll
dmluZyAlcy4iICUgc291cmNlX2Jhc2VsaW5lKQotICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5l
KHNlbGYuX3Rvb2wud2ViLmdldF9iaW5hcnkoc291cmNlX2Jhc2VsaW5lLCBjb252ZXJ0XzQwNF90
b19Ob25lPVRydWUpLCB0YXJnZXRfYmFzZWxpbmUpCi0KLSAgICBkZWYgX3JlYmFzZWxpbmVfdGVz
dHMoc2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgIGlmIG9wdGlvbnMucmVzdWx0c19kaXJlY3Rvcnk6
Ci0gICAgICAgICAgICByZXN1bHRzX3VybCA9ICdmaWxlOi8vJyArIG9wdGlvbnMucmVzdWx0c19k
aXJlY3RvcnkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3VsdHNfdXJsID0gc2VsZi5f
cmVzdWx0c191cmwob3B0aW9ucy5idWlsZGVyKQotICAgICAgICBzZWxmLl9iYXNlbGluZV9zdWZm
aXhfbGlzdCA9IG9wdGlvbnMuc3VmZml4ZXMuc3BsaXQoJywnKQotICAgICAgICBmb3Igc3VmZml4
IGluIHNlbGYuX2Jhc2VsaW5lX3N1ZmZpeF9saXN0OgotICAgICAgICAgICAgc2VsZi5fcmViYXNl
bGluZV90ZXN0KG9wdGlvbnMuYnVpbGRlciwgb3B0aW9ucy50ZXN0LCBvcHRpb25zLm1vdmVfb3Zl
cndyaXR0ZW5fYmFzZWxpbmVzX3RvLCBzdWZmaXgsIHJlc3VsdHNfdXJsKQotCi0gICAgZGVmIGV4
ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHNlbGYuX3JlYmFzZWxp
bmVfdGVzdHMob3B0aW9ucykKLSAgICAgICAgaWYgb3B0aW9ucy51cGRhdGVfZXhwZWN0YXRpb25z
OgotICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2V4cGVjdGF0aW9uc19maWxlKG9wdGlvbnMuYnVp
bGRlciwgb3B0aW9ucy50ZXN0KQotICAgICAgICBwcmludChqc29uLmR1bXBzKHNlbGYuX3NjbV9j
aGFuZ2VzKSkKLQotCi1jbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1hbmQoQWJz
dHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKLSAgICAjIG5vdCBvdmVycmlkaW5nIGV4ZWN1dGUo
KSAtIHB5bGludDogZGlzYWJsZT1XMDIyMwotCi0gICAgZGVmIF9ydW5fd2Via2l0X3BhdGNoKHNl
bGYsIGFyZ3MsIHZlcmJvc2UpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB2ZXJib3NlX2Fy
Z3MgPSBbJy0tdmVyYm9zZSddIGlmIHZlcmJvc2UgZWxzZSBbXQotICAgICAgICAgICAgc3RkZXJy
ID0gc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2NvbW1hbmQoW3NlbGYuX3Rvb2wucGF0aCgpXSAr
IHZlcmJvc2VfYXJncyArIGFyZ3MsIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3Qs
IHJldHVybl9zdGRlcnI9VHJ1ZSkKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHN0ZGVyci5zcGxp
dGxpbmVzKCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQobGluZSwgZmlsZT1zeXMuc3RkZXJyKQot
ICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMgZToKLSAgICAgICAgICAgIF9sb2cuZXJyb3Io
ZSkKLQotICAgIGRlZiBfYnVpbGRlcnNfdG9fZmV0Y2hfZnJvbShzZWxmLCBidWlsZGVyc190b19j
aGVjayk6Ci0gICAgICAgICMgVGhpcyByb3V0aW5lIHJldHVybnMgdGhlIHN1YnNldCBvZiBidWls
ZGVycyB0aGF0IHdpbGwgY292ZXIgYWxsIG9mIHRoZSBiYXNlbGluZSBzZWFyY2ggcGF0aHMKLSAg
ICAgICAgIyB1c2VkIGluIHRoZSBpbnB1dCBsaXN0LiBJbiBwYXJ0aWN1bGFyLCBpZiB0aGUgaW5w
dXQgbGlzdCBjb250YWlucyBib3RoIFJlbGVhc2UgYW5kIERlYnVnCi0gICAgICAgICMgdmVyc2lv
bnMgb2YgYSBjb25maWd1cmF0aW9uLCB3ZSAqb25seSogcmV0dXJuIHRoZSBSZWxlYXNlIHZlcnNp
b24gKHNpbmNlIHdlIGRvbid0IHNhdmUKLSAgICAgICAgIyBkZWJ1ZyB2ZXJzaW9ucyBvZiBiYXNl
bGluZXMpLgotICAgICAgICByZWxlYXNlX2J1aWxkZXJzID0gc2V0KCkKLSAgICAgICAgZGVidWdf
YnVpbGRlcnMgPSBzZXQoKQotICAgICAgICBidWlsZGVyc190b19mYWxsYmFja19wYXRocyA9IHt9
Ci0gICAgICAgIGZvciBidWlsZGVyIGluIGJ1aWxkZXJzX3RvX2NoZWNrOgotICAgICAgICAgICAg
cG9ydCA9IHNlbGYuX3Rvb2wucG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFtZShidWls
ZGVyKQotICAgICAgICAgICAgaWYgcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKS5idWlsZF90eXBl
ID09ICdSZWxlYXNlJzoKLSAgICAgICAgICAgICAgICByZWxlYXNlX2J1aWxkZXJzLmFkZChidWls
ZGVyKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkZWJ1Z19idWlsZGVycy5h
ZGQoYnVpbGRlcikKLSAgICAgICAgZm9yIGJ1aWxkZXIgaW4gbGlzdChyZWxlYXNlX2J1aWxkZXJz
KSArIGxpc3QoZGVidWdfYnVpbGRlcnMpOgotICAgICAgICAgICAgcG9ydCA9IHNlbGYuX3Rvb2wu
cG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFtZShidWlsZGVyKQotICAgICAgICAgICAg
ZmFsbGJhY2tfcGF0aCA9IHBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKQotICAgICAgICAgICAg
aWYgZmFsbGJhY2tfcGF0aCBub3QgaW4gYnVpbGRlcnNfdG9fZmFsbGJhY2tfcGF0aHMudmFsdWVz
KCk6Ci0gICAgICAgICAgICAgICAgYnVpbGRlcnNfdG9fZmFsbGJhY2tfcGF0aHNbYnVpbGRlcl0g
PSBmYWxsYmFja19wYXRoCi0gICAgICAgIHJldHVybiBidWlsZGVyc190b19mYWxsYmFja19wYXRo
cy5rZXlzKCkKLQotICAgIGRlZiBfcmViYXNlbGluZV9jb21tYW5kcyhzZWxmLCB0ZXN0X2xpc3Qs
IG9wdGlvbnMpOgotCi0gICAgICAgIHBhdGhfdG9fd2Via2l0X3BhdGNoID0gc2VsZi5fdG9vbC5w
YXRoKCkKLSAgICAgICAgY3dkID0gc2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290Ci0gICAg
ICAgIGNvbW1hbmRzID0gW10KLSAgICAgICAgZm9yIHRlc3QgaW4gdGVzdF9saXN0OgotICAgICAg
ICAgICAgZm9yIGJ1aWxkZXIgaW4gc2VsZi5fYnVpbGRlcnNfdG9fZmV0Y2hfZnJvbSh0ZXN0X2xp
c3RbdGVzdF0pOgotICAgICAgICAgICAgICAgIHN1ZmZpeGVzID0gJywnLmpvaW4odGVzdF9saXN0
W3Rlc3RdW2J1aWxkZXJdKQotICAgICAgICAgICAgICAgIGNtZF9saW5lID0gW3BhdGhfdG9fd2Vi
a2l0X3BhdGNoLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCBzdWZm
aXhlcywgJy0tYnVpbGRlcicsIGJ1aWxkZXIsICctLXRlc3QnLCB0ZXN0XQotICAgICAgICAgICAg
ICAgIGlmIG9wdGlvbnMubW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM6Ci0gICAgICAgICAgICAg
ICAgICAgIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvID0gYnVpbGRlcnMubW92ZV9vdmVy
d3JpdHRlbl9iYXNlbGluZXNfdG8oYnVpbGRlcikKLSAgICAgICAgICAgICAgICAgICAgZm9yIHBs
YXRmb3JtIGluIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvOgotICAgICAgICAgICAgICAg
ICAgICAgICAgY21kX2xpbmUuZXh0ZW5kKFsnLS1tb3ZlLW92ZXJ3cml0dGVuLWJhc2VsaW5lcy10
bycsIHBsYXRmb3JtXSkKLSAgICAgICAgICAgICAgICBpZiBvcHRpb25zLnJlc3VsdHNfZGlyZWN0
b3J5OgotICAgICAgICAgICAgICAgICAgICBjbWRfbGluZS5leHRlbmQoWyctLXJlc3VsdHMtZGly
ZWN0b3J5Jywgb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeV0pCi0gICAgICAgICAgICAgICAgaWYg
b3B0aW9ucy51cGRhdGVfZXhwZWN0YXRpb25zOgotICAgICAgICAgICAgICAgICAgICBjbWRfbGlu
ZS5leHRlbmQoWyctLXVwZGF0ZS1leHBlY3RhdGlvbnMnLCBvcHRpb25zLnVwZGF0ZV9leHBlY3Rh
dGlvbnMgYW5kICdUcnVlJyBvciAnRmFsc2UnXSkKLSAgICAgICAgICAgICAgICBpZiBvcHRpb25z
LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgIGNtZF9saW5lLmFwcGVuZCgnLS12ZXJib3Nl
JykKLSAgICAgICAgICAgICAgICBjb21tYW5kcy5hcHBlbmQodHVwbGUoW2NtZF9saW5lLCBjd2Rd
KSkKLSAgICAgICAgcmV0dXJuIGNvbW1hbmRzCi0KLSAgICBkZWYgX2ZpbGVzX3RvX2FkZChzZWxm
LCBjb21tYW5kX3Jlc3VsdHMpOgotICAgICAgICBmaWxlc190b19hZGQgPSBzZXQoKQotICAgICAg
ICBmb3Igb3V0cHV0IGluIFtyZXN1bHRbMV0uc3BsaXQoJ1xuJykgZm9yIHJlc3VsdCBpbiBjb21t
YW5kX3Jlc3VsdHNdOgotICAgICAgICAgICAgZmlsZV9hZGRlZCA9IEZhbHNlCi0gICAgICAgICAg
ICBmb3IgbGluZSBpbiBvdXRwdXQ6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ICAgICAgICBpZiBsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNfdG9fYWRkLnVw
ZGF0ZShqc29uLmxvYWRzKGxpbmUpWydhZGQnXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZp
bGVfYWRkZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAg
ICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJyIlcyIgaXMgbm90IGEgSlNPTiBvYmplY3QsIGln
bm9yaW5nJyAlIGxpbmUpCi0KLSAgICAgICAgICAgIGlmIG5vdCBmaWxlX2FkZGVkOgotICAgICAg
ICAgICAgICAgIF9sb2cuZGVidWcoJ0NvdWxkIG5vdCBhZGQgZmlsZSBiYXNlZCBvZmYgb3V0cHV0
ICIlcyInICUgb3V0cHV0KQotCi0gICAgICAgIHJldHVybiBsaXN0KGZpbGVzX3RvX2FkZCkKLQot
ICAgIGRlZiBfcmViYXNlbGluZShzZWxmLCBvcHRpb25zLCB0ZXN0X2xpc3QpOgotICAgICAgICBm
b3IgdGVzdCwgYnVpbGRlcnNfdG9fY2hlY2sgaW4gc29ydGVkKHRlc3RfbGlzdC5pdGVtcygpKToK
LSAgICAgICAgICAgIF9sb2cuaW5mbygiUmViYXNlbGluaW5nICVzIiAlIHRlc3QpCi0gICAgICAg
ICAgICBmb3IgYnVpbGRlciwgc3VmZml4ZXMgaW4gc29ydGVkKGJ1aWxkZXJzX3RvX2NoZWNrLml0
ZW1zKCkpOgotICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIiAgJXM6ICVzIiAlIChidWlsZGVy
LCAiLCIuam9pbihzdWZmaXhlcykpKQotCi0gICAgICAgIGNvbW1hbmRzID0gc2VsZi5fcmViYXNl
bGluZV9jb21tYW5kcyh0ZXN0X2xpc3QsIG9wdGlvbnMpCi0gICAgICAgIGNvbW1hbmRfcmVzdWx0
cyA9IHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9pbl9wYXJhbGxlbChjb21tYW5kcykKLQotICAg
ICAgICBsb2dfb3V0cHV0ID0gJ1xuJy5qb2luKHJlc3VsdFsyXSBmb3IgcmVzdWx0IGluIGNvbW1h
bmRfcmVzdWx0cykucmVwbGFjZSgnXG5cbicsICdcbicpCi0gICAgICAgIGZvciBsaW5lIGluIGxv
Z19vdXRwdXQuc3BsaXQoJ1xuJyk6Ci0gICAgICAgICAgICBpZiBsaW5lOgotICAgICAgICAgICAg
ICAgIHByaW50KGxpbmUsIGZpbGU9c3lzLnN0ZGVycikgICMgRklYTUU6IEZpZ3VyZSBvdXQgaG93
IHRvIGxvZyBwcm9wZXJseS4KLQotICAgICAgICBmaWxlc190b19hZGQgPSBzZWxmLl9maWxlc190
b19hZGQoY29tbWFuZF9yZXN1bHRzKQotICAgICAgICBpZiBmaWxlc190b19hZGQ6Ci0gICAgICAg
ICAgICBzZWxmLl90b29sLnNjbSgpLmFkZF9saXN0KGxpc3QoZmlsZXNfdG9fYWRkKSkKLQotCi1A
RGVwcmVjYXRlZENvbW1hbmQKLWNsYXNzIFJlYmFzZWxpbmVKc29uKEFic3RyYWN0UGFyYWxsZWxS
ZWJhc2VsaW5lQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICJyZWJhc2VsaW5lLWpzb24iCi0gICAgaGVs
cF90ZXh0ID0gIlJlYmFzZWxpbmUgYmFzZWQgb2ZmIEpTT04gcGFzc2VkIHRvIHN0ZGluLiBJbnRl
bmRlZCB0byBvbmx5IGJlIGNhbGxlZCBmcm9tIG90aGVyIHNjcmlwdHMuIgotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsKToKLSAgICAgICAgc3VwZXIoUmViYXNlbGluZUpzb24sIHNlbGYpLl9faW5p
dF9fKG9wdGlvbnM9WwotICAgICAgICAgICAgc2VsZi5tb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5l
c19vcHRpb24sCi0gICAgICAgICAgICBzZWxmLm5vX29wdGltaXplX29wdGlvbiwKLSAgICAgICAg
ICAgIHNlbGYucmVzdWx0c19kaXJlY3Rvcnlfb3B0aW9uLAotICAgICAgICAgICAgXSkKLQotICAg
IGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBzZWxmLl9y
ZWJhc2VsaW5lKG9wdGlvbnMsIGpzb24ubG9hZHMoc3lzLnN0ZGluLnJlYWQoKSkpCi0KLQotQERl
cHJlY2F0ZWRDb21tYW5kCi1jbGFzcyBSZWJhc2VsaW5lRXhwZWN0YXRpb25zKEFic3RyYWN0UGFy
YWxsZWxSZWJhc2VsaW5lQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICJyZWJhc2VsaW5lLWV4cGVjdGF0
aW9ucyIKLSAgICBoZWxwX3RleHQgPSAiUmViYXNlbGluZXMgdGhlIHRlc3RzIGluZGljYXRlZCBp
biBUZXN0RXhwZWN0YXRpb25zLiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAg
c3VwZXIoUmViYXNlbGluZUV4cGVjdGF0aW9ucywgc2VsZikuX19pbml0X18ob3B0aW9ucz1bCi0g
ICAgICAgICAgICBzZWxmLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX29wdGlvbiwKLSAgICAg
ICAgICAgIHNlbGYubm9fb3B0aW1pemVfb3B0aW9uLAotICAgICAgICAgICAgc2VsZi51cGRhdGVf
ZXhwZWN0YXRpb25zX29wdGlvbiwKLSAgICAgICAgICAgIF0gKyBzZWxmLnBsYXRmb3JtX29wdGlv
bnMpCi0gICAgICAgIHNlbGYuX3Rlc3RfbGlzdCA9IE5vbmUKLQotICAgIGRlZiBfdXBkYXRlX2V4
cGVjdGF0aW9uc19maWxlcyhzZWxmLCBwb3J0X25hbWUpOgotICAgICAgICBwb3J0ID0gc2VsZi5f
dG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZSkKLQotICAgICAgICBleHBlY3RhdGlvbnMg
PSBUZXN0RXhwZWN0YXRpb25zKHBvcnQpCi0gICAgICAgIGV4cGVjdGF0aW9ucy5wYXJzZV9hbGxf
ZXhwZWN0YXRpb25zKCkKLSAgICAgICAgZm9yIHBhdGggaW4gcG9ydC5leHBlY3RhdGlvbnNfZGlj
dCgpOgotICAgICAgICAgICAgaWYgc2VsZi5fdG9vbC5maWxlc3lzdGVtLmV4aXN0cyhwYXRoKToK
LSAgICAgICAgICAgICAgICBzZWxmLl90b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBh
dGgsIGV4cGVjdGF0aW9ucy5yZW1vdmVfcmViYXNlbGluZWRfdGVzdHMoZXhwZWN0YXRpb25zLmdl
dF9yZWJhc2VsaW5pbmdfZmFpbHVyZXMoKSwgcGF0aCkpCi0KLSAgICBkZWYgX3Rlc3RzX3RvX3Jl
YmFzZWxpbmUoc2VsZiwgcG9ydCk6Ci0gICAgICAgIHRlc3RzX3RvX3JlYmFzZWxpbmUgPSB7fQot
ICAgICAgICBleHBlY3RhdGlvbnMgPSBUZXN0RXhwZWN0YXRpb25zKHBvcnQsIGluY2x1ZGVfb3Zl
cnJpZGVzPVRydWUpCi0gICAgICAgIGV4cGVjdGF0aW9ucy5wYXJzZV9hbGxfZXhwZWN0YXRpb25z
KCkKLSAgICAgICAgZm9yIHRlc3QgaW4gZXhwZWN0YXRpb25zLmdldF9yZWJhc2VsaW5pbmdfZmFp
bHVyZXMoKToKLSAgICAgICAgICAgIHRlc3RzX3RvX3JlYmFzZWxpbmVbdGVzdF0gPSBUZXN0RXhw
ZWN0YXRpb25zLnN1ZmZpeGVzX2Zvcl9leHBlY3RhdGlvbnMoZXhwZWN0YXRpb25zLm1vZGVsKCku
Z2V0X2V4cGVjdGF0aW9ucyh0ZXN0KSkKLSAgICAgICAgcmV0dXJuIHRlc3RzX3RvX3JlYmFzZWxp
bmUKLQotICAgIGRlZiBfYWRkX3Rlc3RzX3RvX3JlYmFzZWxpbmVfZm9yX3BvcnQoc2VsZiwgcG9y
dF9uYW1lKToKLSAgICAgICAgYnVpbGRlcl9uYW1lID0gYnVpbGRlcnMuYnVpbGRlcl9uYW1lX2Zv
cl9wb3J0X25hbWUocG9ydF9uYW1lKQotICAgICAgICBpZiBub3QgYnVpbGRlcl9uYW1lOgotICAg
ICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRlc3RzID0gc2VsZi5fdGVzdHNfdG9fcmViYXNlbGlu
ZShzZWxmLl90b29sLnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lKSkuaXRlbXMoKQotCi0gICAg
ICAgIGlmIHRlc3RzOgotICAgICAgICAgICAgX2xvZy5pbmZvKCJSZXRyaWV2aW5nIHJlc3VsdHMg
Zm9yICVzIGZyb20gJXMuIiAlIChwb3J0X25hbWUsIGJ1aWxkZXJfbmFtZSkpCi0KLSAgICAgICAg
Zm9yIHRlc3RfbmFtZSwgc3VmZml4ZXMgaW4gdGVzdHM6Ci0gICAgICAgICAgICBfbG9nLmluZm8o
IiAgICAlcyAoJXMpIiAlICh0ZXN0X25hbWUsICcsJy5qb2luKHN1ZmZpeGVzKSkpCi0gICAgICAg
ICAgICBpZiB0ZXN0X25hbWUgbm90IGluIHNlbGYuX3Rlc3RfbGlzdDoKLSAgICAgICAgICAgICAg
ICBzZWxmLl90ZXN0X2xpc3RbdGVzdF9uYW1lXSA9IHt9Ci0gICAgICAgICAgICBzZWxmLl90ZXN0
X2xpc3RbdGVzdF9uYW1lXVtidWlsZGVyX25hbWVdID0gc3VmZml4ZXMKLQotICAgIGRlZiBleGVj
dXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBvcHRpb25zLnJlc3VsdHNf
ZGlyZWN0b3J5ID0gTm9uZQotICAgICAgICBzZWxmLl90ZXN0X2xpc3QgPSB7fQotICAgICAgICBw
b3J0X25hbWVzID0gdG9vbC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMob3B0aW9ucy5wbGF0
Zm9ybSkKLSAgICAgICAgZm9yIHBvcnRfbmFtZSBpbiBwb3J0X25hbWVzOgotICAgICAgICAgICAg
c2VsZi5fYWRkX3Rlc3RzX3RvX3JlYmFzZWxpbmVfZm9yX3BvcnQocG9ydF9uYW1lKQotICAgICAg
ICBpZiBub3Qgc2VsZi5fdGVzdF9saXN0OgotICAgICAgICAgICAgX2xvZy53YXJuaW5nKCJEaWQg
bm90IGZpbmQgYW55IHRlc3RzIG1hcmtlZCBSZWJhc2VsaW5lLiIpCi0gICAgICAgICAgICByZXR1
cm4KLQotICAgICAgICBzZWxmLl9yZWJhc2VsaW5lKG9wdGlvbnMsIHNlbGYuX3Rlc3RfbGlzdCkK
LQotICAgICAgICBpZiBvcHRpb25zLnVwZGF0ZV9leHBlY3RhdGlvbnM6Ci0gICAgICAgICAgICBm
b3IgcG9ydF9uYW1lIGluIHBvcnRfbmFtZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fdXBkYXRl
X2V4cGVjdGF0aW9uc19maWxlcyhwb3J0X25hbWUpCi0KLQotQERlcHJlY2F0ZWRDb21tYW5kCi1j
bGFzcyBSZWJhc2VsaW5lKEFic3RyYWN0UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZCk6Ci0gICAg
bmFtZSA9ICJyZWJhc2VsaW5lIgotICAgIGhlbHBfdGV4dCA9ICJSZWJhc2VsaW5lIHRlc3RzIHdp
dGggcmVzdWx0cyBmcm9tIHRoZSBidWlsZCBib3RzLiBTaG93cyB0aGUgbGlzdCBvZiBmYWlsaW5n
IHRlc3RzIG9uIHRoZSBidWlsZGVycyBpZiBubyB0ZXN0IG5hbWVzIGFyZSBwcm92aWRlZC4iCi0g
ICAgYXJndW1lbnRfbmFtZXMgPSAiW1RFU1RfTkFNRVNdIgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYpOgotICAgICAgICBzdXBlcihSZWJhc2VsaW5lLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zPVsK
LSAgICAgICAgICAgIHNlbGYubW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfb3B0aW9uLAotICAg
ICAgICAgICAgc2VsZi5ub19vcHRpbWl6ZV9vcHRpb24sCi0gICAgICAgICAgICBzZWxmLnVwZGF0
ZV9leHBlY3RhdGlvbnNfb3B0aW9uLAotICAgICAgICAgICAgIyBGSVhNRTogc2hvdWxkIHdlIHN1
cHBvcnQgdGhlIHBsYXRmb3JtIG9wdGlvbnMgaW4gYWRkaXRpb24gdG8gKG9yIGluc3RlYWQgb2Yp
IC0tYnVpbGRlcnM/Ci0gICAgICAgICAgICBzZWxmLnN1ZmZpeGVzX29wdGlvbiwKLSAgICAgICAg
ICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWJ1aWxkZXJzIiwgZGVmYXVsdD1Ob25lLCBhY3Rp
b249ImFwcGVuZCIsIGhlbHA9IkNvbW1hLXNlcGFyYXRlZC1saXN0IG9mIGJ1aWxkZXJzIHRvIHB1
bGwgbmV3IGJhc2VsaW5lcyBmcm9tIChjYW4gYWxzbyBiZSBwcm92aWRlZCBtdWx0aXBsZSB0aW1l
cykiKSwKLSAgICAgICAgICAgIF0pCi0KLSAgICBkZWYgX2J1aWxkZXJzX3RvX3B1bGxfZnJvbShz
ZWxmKToKLSAgICAgICAgd2Via2l0X2J1aWxkYm90X2J1aWxkZXJfbmFtZXMgPSBbXQotICAgICAg
ICBmb3IgbmFtZSBpbiBidWlsZGVycy5hbGxfYnVpbGRlcl9uYW1lcygpOgotICAgICAgICAgICAg
d2Via2l0X2J1aWxkYm90X2J1aWxkZXJfbmFtZXMuYXBwZW5kKG5hbWUpCi0KLSAgICAgICAgdGl0
bGVzID0gWyJidWlsZC53ZWJraXQub3JnIGJvdHMiXQotICAgICAgICBsaXN0cyA9IFt3ZWJraXRf
YnVpbGRib3RfYnVpbGRlcl9uYW1lc10KLQotICAgICAgICBjaG9zZW5fbmFtZXMgPSBzZWxmLl90
b29sLnVzZXIucHJvbXB0X3dpdGhfbXVsdGlwbGVfbGlzdHMoIldoaWNoIGJ1aWxkZXIgdG8gcHVs
bCByZXN1bHRzIGZyb206IiwgdGl0bGVzLCBsaXN0cywgY2FuX2Nob29zZV9tdWx0aXBsZT1UcnVl
KQotICAgICAgICByZXR1cm4gW3NlbGYuX2J1aWxkZXJfd2l0aF9uYW1lKG5hbWUpIGZvciBuYW1l
IGluIGNob3Nlbl9uYW1lc10KLQotICAgIGRlZiBfYnVpbGRlcl93aXRoX25hbWUoc2VsZiwgbmFt
ZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl90b29sLmJ1aWxkYm90LmJ1aWxkZXJfd2l0aF9uYW1l
KG5hbWUpCi0KLSAgICBkZWYgX3Rlc3RzX3RvX3VwZGF0ZShzZWxmLCBidWlsZGVyKToKLSAgICAg
ICAgZmFpbGluZ190ZXN0cyA9IGJ1aWxkZXIubGF0ZXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoKS50
ZXN0c19tYXRjaGluZ19mYWlsdXJlX3R5cGVzKFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUZXh0TWlz
bWF0Y2hdKQotICAgICAgICByZXR1cm4gc2VsZi5fdG9vbC51c2VyLnByb21wdF93aXRoX2xpc3Qo
IldoaWNoIHRlc3QocykgdG8gcmViYXNlbGluZSBmb3IgJXM6IiAlIGJ1aWxkZXIubmFtZSgpLCBm
YWlsaW5nX3Rlc3RzLCBjYW5fY2hvb3NlX211bHRpcGxlPVRydWUpCi0KLSAgICBkZWYgZXhlY3V0
ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgb3B0aW9ucy5yZXN1bHRzX2Rp
cmVjdG9yeSA9IE5vbmUKLSAgICAgICAgaWYgb3B0aW9ucy5idWlsZGVyczoKLSAgICAgICAgICAg
IGJ1aWxkZXJzX3RvX2NoZWNrID0gW10KLSAgICAgICAgICAgIGZvciBidWlsZGVyX25hbWVzIGlu
IG9wdGlvbnMuYnVpbGRlcnM6Ci0gICAgICAgICAgICAgICAgYnVpbGRlcnNfdG9fY2hlY2sgKz0g
W3NlbGYuX2J1aWxkZXJfd2l0aF9uYW1lKG5hbWUpIGZvciBuYW1lIGluIGJ1aWxkZXJfbmFtZXMu
c3BsaXQoIiwiKV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJ1aWxkZXJzX3RvX2NoZWNr
ID0gc2VsZi5fYnVpbGRlcnNfdG9fcHVsbF9mcm9tKCkKLQotICAgICAgICB0ZXN0X2xpc3QgPSB7
fQotICAgICAgICBzdWZmaXhlc190b191cGRhdGUgPSBvcHRpb25zLnN1ZmZpeGVzLnNwbGl0KCIs
IikKLQotICAgICAgICBmb3IgYnVpbGRlciBpbiBidWlsZGVyc190b19jaGVjazoKLSAgICAgICAg
ICAgIHRlc3RzID0gYXJncyBvciBzZWxmLl90ZXN0c190b191cGRhdGUoYnVpbGRlcikKLSAgICAg
ICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgICAgICAgICAgIGlmIHRlc3Qgbm90IGlu
IHRlc3RfbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0W3Rlc3RdID0ge30KLSAg
ICAgICAgICAgICAgICB0ZXN0X2xpc3RbdGVzdF1bYnVpbGRlci5uYW1lKCldID0gc3VmZml4ZXNf
dG9fdXBkYXRlCi0KLSAgICAgICAgaWYgb3B0aW9ucy52ZXJib3NlOgotICAgICAgICAgICAgX2xv
Zy5kZWJ1ZygicmViYXNlbGluZS1qc29uOiAiICsgc3RyKHRlc3RfbGlzdCkpCi0KLSAgICAgICAg
c2VsZi5fcmViYXNlbGluZShvcHRpb25zLCB0ZXN0X2xpc3QpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzE2MDE3ZWQ3YTgyNmRhNjUyM2QzZTdk
OTQzZmRkMDI2YWMwNWUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3Vu
aXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzQ3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1p
bXBvcnQgdW5pdHRlc3QKLQotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90LmJ1aWxk
Ym90X21vY2sgaW1wb3J0IE1vY2tCdWlsZGVyCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCi1mcm9tIHdlYmtpdHB5LnRoaXJk
cGFydHkubW9jayBpbXBvcnQgTW9jawotZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnJlYmFz
ZWxpbmUgaW1wb3J0ICoKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rv
b2wsIE1vY2tPcHRpb25zCi0KLWZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJl
Ci0KLQotY2xhc3MgX0Jhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgTU9DS19X
RUJfUkVTVUxUID0gJ01PQ0sgV2ViIHJlc3VsdCwgY29udmVydCA0MDQgdG8gTm9uZT1UcnVlJwot
ICAgIFdFQl9QUkVGSVggPSAnaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvQXBwbGUgTGlv
biBSZWxlYXNlIFdLMSAoVGVzdHMpL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cycKLQotICAg
IGNvbW1hbmRfY29uc3RydWN0b3IgPSBOb25lCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAg
ICAgIHNlbGYudG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgc2VsZi5jb21tYW5kID0gc2VsZi5j
b21tYW5kX2NvbnN0cnVjdG9yKCkgICMgbGludCB3YXJucyB0aGF0IGNvbW1hbmRfY29uc3RydWN0
b3IgbWlnaHQgbm90IGJlIHNldCwgYnV0IHRoaXMgaXMgaW50ZW50aW9uYWw7IHB5bGludDogZGlz
YWJsZT1FMTEwMgotICAgICAgICBzZWxmLmNvbW1hbmQuYmluZF90b190b29sKHNlbGYudG9vbCkK
LSAgICAgICAgc2VsZi5saW9uX3BvcnQgPSBzZWxmLnRvb2wucG9ydF9mYWN0b3J5LmdldF9mcm9t
X2J1aWxkZXJfbmFtZSgiQXBwbGUgTGlvbiBSZWxlYXNlIFdLMSAoVGVzdHMpIikKLSAgICAgICAg
c2VsZi5saW9uX2V4cGVjdGF0aW9uc19wYXRoID0gc2VsZi5saW9uX3BvcnQucGF0aF90b190ZXN0
X2V4cGVjdGF0aW9uc19maWxlKCkKLQotICAgICAgICAjIEZJWE1FOiB3ZSBzaG91bGQgb3ZlcnJp
ZGUgYnVpbGRlcnMuX2V4YWN0X21hdGNoZXMgaGVyZSB0byBwb2ludCB0byBhIHNldAotICAgICAg
ICAjIG9mIHRlc3QgcG9ydHMgYW5kIHJlc3RvcmUgdGhlIHZhbHVlIGluIHRlYXJEb3duKCksIGFu
ZCB0aGF0IHdheSB0aGUKLSAgICAgICAgIyBpbmRpdmlkdWFsIHRlc3RzIHdvdWxkbid0IGhhdmUg
dG8gd29ycnkgYWJvdXQgaXQuCi0KLSAgICBkZWYgX2V4cGFuZChzZWxmLCBwYXRoKToKLSAgICAg
ICAgaWYgc2VsZi50b29sLmZpbGVzeXN0ZW0uaXNhYnMocGF0aCk6Ci0gICAgICAgICAgICByZXR1
cm4gcGF0aAotICAgICAgICByZXR1cm4gc2VsZi50b29sLmZpbGVzeXN0ZW0uam9pbihzZWxmLmxp
b25fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHBhdGgpCi0KLSAgICBkZWYgX3JlYWQoc2VsZiwg
cGF0aCk6Ci0gICAgICAgIHJldHVybiBzZWxmLnRvb2wuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShzZWxmLl9leHBhbmQocGF0aCkpCi0KLSAgICBkZWYgX3dyaXRlKHNlbGYsIHBhdGgsIGNvbnRl
bnRzKToKLSAgICAgICAgc2VsZi50b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHNlbGYu
X2V4cGFuZChwYXRoKSwgY29udGVudHMpCi0KLSAgICBkZWYgX3plcm9fb3V0X3Rlc3RfZXhwZWN0
YXRpb25zKHNlbGYpOgotICAgICAgICBmb3IgcG9ydF9uYW1lIGluIHNlbGYudG9vbC5wb3J0X2Zh
Y3RvcnkuYWxsX3BvcnRfbmFtZXMoKToKLSAgICAgICAgICAgIHBvcnQgPSBzZWxmLnRvb2wucG9y
dF9mYWN0b3J5LmdldChwb3J0X25hbWUpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBwb3J0LmV4
cGVjdGF0aW9uc19maWxlcygpOgotICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlKHBhdGgsICcn
KQotICAgICAgICBzZWxmLnRvb2wuZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzID0ge30KLQotCi1j
bGFzcyBUZXN0UmViYXNlbGluZVRlc3QoX0Jhc2VUZXN0Q2FzZSk6Ci0gICAgY29tbWFuZF9jb25z
dHJ1Y3RvciA9IFJlYmFzZWxpbmVUZXN0ICAjIEFLQSB3ZWJraXQtcGF0Y2ggcmViYXNlbGluZS10
ZXN0LWludGVybmFsCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHN1cGVyKFRlc3RS
ZWJhc2VsaW5lVGVzdCwgc2VsZikuc2V0VXAoKQotICAgICAgICBzZWxmLm9wdGlvbnMgPSBNb2Nr
T3B0aW9ucyhidWlsZGVyPSJBcHBsZSBMaW9uIFJlbGVhc2UgV0sxIChUZXN0cykiLCB0ZXN0PSJ1
c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIHN1ZmZpeGVzPSJ0eHQiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190bz1O
b25lLCByZXN1bHRzX2RpcmVjdG9yeT1Ob25lLCB1cGRhdGVfZXhwZWN0YXRpb25zPVRydWUpCi0K
LSAgICBkZWYgdGVzdF9iYXNlbGluZV9kaXJlY3Rvcnkoc2VsZik6Ci0gICAgICAgIGNvbW1hbmQg
PSBzZWxmLmNvbW1hbmQKLSAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChjb21tYW5k
Ll9iYXNlbGluZV9kaXJlY3RvcnkoIkFwcGxlIFdpbiBYUCBEZWJ1ZyAoVGVzdHMpIiksICIvbW9j
ay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4teHAiKQotICAgICAgICBzZWxmLmFz
c2VydE11bHRpTGluZUVxdWFsKGNvbW1hbmQuX2Jhc2VsaW5lX2RpcmVjdG9yeSgiQXBwbGUgV2lu
IDcgUmVsZWFzZSAoVGVzdHMpIiksICIvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4iKQotICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGNvbW1hbmQuX2Jhc2Vs
aW5lX2RpcmVjdG9yeSgiQXBwbGUgTGlvbiBSZWxlYXNlIFdLMSAoVGVzdHMpIiksICIvbW9jay1j
aGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi13azEiKQotICAgICAgICBzZWxm
LmFzc2VydE11bHRpTGluZUVxdWFsKGNvbW1hbmQuX2Jhc2VsaW5lX2RpcmVjdG9yeSgiQXBwbGUg
TGlvbiBSZWxlYXNlIFdLMiAoVGVzdHMpIiksICIvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtbGlvbi13azIiKQotICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFs
KGNvbW1hbmQuX2Jhc2VsaW5lX2RpcmVjdG9yeSgiQXBwbGUgTW91bnRhaW5MaW9uIFJlbGVhc2Ug
V0sxIChUZXN0cykiKSwgIi9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1t
b3VudGFpbmxpb24td2sxIikKLSAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChjb21t
YW5kLl9iYXNlbGluZV9kaXJlY3RvcnkoIkFwcGxlIE1vdW50YWluTGlvbiBSZWxlYXNlIFdLMiAo
VGVzdHMpIiksICIvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbW91bnRh
aW5saW9uLXdrMiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoY29tbWFuZC5f
YmFzZWxpbmVfZGlyZWN0b3J5KCJBcHBsZSBNYXZlcmlja3MgUmVsZWFzZSBXSzEgKFRlc3RzKSIp
LCAiL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLW1hdmVyaWNrcy13azEi
KQotICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGNvbW1hbmQuX2Jhc2VsaW5lX2Rp
cmVjdG9yeSgiQXBwbGUgTWF2ZXJpY2tzIFJlbGVhc2UgV0syIChUZXN0cykiKSwgIi9tb2NrLWNo
ZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1tYXZlcmlja3Mtd2syIikKLSAgICAgICAg
c2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChjb21tYW5kLl9iYXNlbGluZV9kaXJlY3RvcnkoIkFw
cGxlIFlvc2VtaXRlIFJlbGVhc2UgV0sxIChUZXN0cykiKSwgIi9tb2NrLWNoZWNrb3V0L0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy15b3NlbWl0ZS13azEiKQotICAgICAgICBzZWxmLmFzc2VydE11
bHRpTGluZUVxdWFsKGNvbW1hbmQuX2Jhc2VsaW5lX2RpcmVjdG9yeSgiQXBwbGUgWW9zZW1pdGUg
UmVsZWFzZSBXSzIgKFRlc3RzKSIpLCAiL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXlvc2VtaXRlLXdrMiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwo
Y29tbWFuZC5fYmFzZWxpbmVfZGlyZWN0b3J5KCJHVEsgTGludXggNjQtYml0IERlYnVnIChUZXN0
cykiKSwgIi9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ayIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoY29tbWFuZC5fYmFzZWxpbmVfZGlyZWN0b3J5KCJH
VEsgTGludXggNjQtYml0IFJlbGVhc2UgKFRlc3RzKSIpLCAiL21vY2stY2hlY2tvdXQvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrIikKLQotICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfdXBkYXRlc19l
eHBlY3RhdGlvbnNfZmlsZV9ub29wKHNlbGYpOgotICAgICAgICBzZWxmLl96ZXJvX291dF90ZXN0
X2V4cGVjdGF0aW9ucygpCi0gICAgICAgIHNlbGYuX3dyaXRlKHNlbGYubGlvbl9leHBlY3RhdGlv
bnNfcGF0aCwgIiIiQnVnKEIpIFsgTWFjIExpbnV4IFhQIERlYnVnIF0gZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1yZWFsbHktZGVlcC1hcnJheS5odG1sIFsgUGFzcyBd
Ci1CdWcoQSkgWyBEZWJ1ZyBdIDogZmFzdC9jc3MvbGFyZ2UtbGlzdC1vZi1ydWxlcy1jcmFzaC5o
dG1sIFsgRmFpbHVyZSBdCi0iIiIpCi0gICAgICAgIHNlbGYuX3dyaXRlKCJmYXN0L2RvbS9XaW5k
b3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLXJlYWxseS1kZWVwLWFycmF5Lmh0bWwiLCAiRHVt
bXkgdGVzdCBjb250ZW50cyIpCi0gICAgICAgIHNlbGYuX3dyaXRlKCJmYXN0L2Nzcy9sYXJnZS1s
aXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwiLCAiRHVtbXkgdGVzdCBjb250ZW50cyIpCi0gICAgICAg
IHNlbGYuX3dyaXRlKCJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsICJEdW1teSB0ZXN0
IGNvbnRlbnRzIikKLQotICAgICAgICBzZWxmLm9wdGlvbnMuc3VmZml4ZXMgPSAicG5nLHdhdix0
eHQiCi0gICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0cyhzZWxmLm9wdGlvbnMp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAgICBzb3J0ZWQoc2VsZi50
b29sLndlYi51cmxzX2ZldGNoZWQpLCBbCi0gICAgICAgICAgICAgICAgc2VsZi5XRUJfUFJFRklY
ICsgJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnBuZycsCi0gICAgICAgICAgICAg
ICAgc2VsZi5XRUJfUFJFRklYICsgJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4
dCcsCi0gICAgICAgICAgICAgICAgc2VsZi5XRUJfUFJFRklYICsgJy91c2Vyc2NyaXB0cy9hbm90
aGVyLXRlc3QtYWN0dWFsLndhdicsCi0gICAgICAgICAgICBdKQotICAgICAgICBuZXdfZXhwZWN0
YXRpb25zID0gc2VsZi5fcmVhZChzZWxmLmxpb25fZXhwZWN0YXRpb25zX3BhdGgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwobmV3X2V4cGVjdGF0aW9ucywgIiIiQnVnKEIpIFsg
TWFjIExpbnV4IFhQIERlYnVnIF0gZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1j
bG9uZS1yZWFsbHktZGVlcC1hcnJheS5odG1sIFsgUGFzcyBdCi1CdWcoQSkgWyBEZWJ1ZyBdIDog
ZmFzdC9jc3MvbGFyZ2UtbGlzdC1vZi1ydWxlcy1jcmFzaC5odG1sIFsgRmFpbHVyZSBdCi0iIiIp
Ci0KLSAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX3VwZGF0ZXNfZXhwZWN0YXRpb25zX2ZpbGUoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuX3dyaXRlKHNlbGYubGlvbl9leHBlY3RhdGlvbnNfcGF0aCwgIkJ1
Zyh4KSBbIE1hYyBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdXG5idWcoeikgWyBMaW51eCBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdXG4iKQotICAgICAgICBzZWxmLl93cml0ZSgidXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0Lmh0bWwiLCAiRHVtbXkgdGVzdCBjb250ZW50cyIpCi0KLSAgICAgICAgc2Vs
Zi5vcHRpb25zLnN1ZmZpeGVzID0gJ3BuZyx3YXYsdHh0JwotICAgICAgICBzZWxmLmNvbW1hbmQu
X3JlYmFzZWxpbmVfdGVzdHMoc2VsZi5vcHRpb25zKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKAotICAgICAgICAgICAgc29ydGVkKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkKSwgWwot
ICAgICAgICAgICAgICAgIHNlbGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0LWFjdHVhbC5wbmcnLAotICAgICAgICAgICAgICAgIHNlbGYuV0VCX1BSRUZJWCArICcvdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnLAotICAgICAgICAgICAgICAgIHNlbGYu
V0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC53YXYnLAotICAg
ICAgICAgICAgXSkKLSAgICAgICAgbmV3X2V4cGVjdGF0aW9ucyA9IHNlbGYuX3JlYWQoc2VsZi5s
aW9uX2V4cGVjdGF0aW9uc19wYXRoKQotICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFs
KG5ld19leHBlY3RhdGlvbnMsICJCdWcoeCkgWyBNYWMgXSB1c2Vyc2NyaXB0cy9hbm90aGVyLXRl
c3QuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXVxuYnVnKHopIFsgTGludXggXSB1c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXVxuIikKLQotICAgIGRlZiB0
ZXN0X3JlYmFzZWxpbmVfZG9lc19ub3RfaW5jbHVkZV9vdmVycmlkZXMoc2VsZik6Ci0gICAgICAg
IHNlbGYuX3dyaXRlKHNlbGYubGlvbl9leHBlY3RhdGlvbnNfcGF0aCwgIkJ1Zyh4KSBbIE1hYyBd
IHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdXG5CdWco
eikgWyBMaW51eCBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdXG4iKQotICAgICAgICBzZWxmLl93cml0ZSgidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
Lmh0bWwiLCAiRHVtbXkgdGVzdCBjb250ZW50cyIpCi0KLSAgICAgICAgc2VsZi5vcHRpb25zLnN1
ZmZpeGVzID0gJ3BuZyx3YXYsdHh0JwotICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVf
dGVzdHMoc2VsZi5vcHRpb25zKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAg
ICAgICAgc29ydGVkKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkKSwgWwotICAgICAgICAgICAg
ICAgIHNlbGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC5w
bmcnLAotICAgICAgICAgICAgICAgIHNlbGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0LWFjdHVhbC50eHQnLAotICAgICAgICAgICAgICAgIHNlbGYuV0VCX1BSRUZJWCAr
ICcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC53YXYnLAotICAgICAgICAgICAgXSkK
LQotICAgICAgICBuZXdfZXhwZWN0YXRpb25zID0gc2VsZi5fcmVhZChzZWxmLmxpb25fZXhwZWN0
YXRpb25zX3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwobmV3X2V4cGVj
dGF0aW9ucywgIkJ1Zyh4KSBbIE1hYyBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdXG5CdWcoeikgWyBMaW51eCBdIHVzZXJzY3JpcHRzL2Fub3RoZXIt
dGVzdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdXG4iKQotCi0gICAgZGVmIHRlc3RfcmViYXNl
bGluZV90ZXN0KHNlbGYpOgotICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCgi
QXBwbGUgTGlvbiBSZWxlYXNlIFdLMSAoVGVzdHMpIiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVz
dC5odG1sIiwgTm9uZSwgInR4dCIsIHNlbGYuV0VCX1BSRUZJWCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc2VsZi50b29sLndlYi51cmxzX2ZldGNoZWQsIFtzZWxmLldFQl9QUkVGSVggKyAn
L3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0J10pCi0KLSAgICBkZWYgdGVzdF9y
ZWJhc2VsaW5lX3Rlc3Rfd2l0aF9yZXN1bHRzX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgc2Vs
Zi5fd3JpdGUoc2VsZi5saW9uX2V4cGVjdGF0aW9uc19wYXRoLCAiQnVnKHgpIFsgTWFjIF0gdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbmJ1Zyh6KSBb
IExpbnV4IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF1cbiIpCi0gICAgICAgIHNlbGYub3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSA9ICcvdG1wJwot
ICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdHMoc2VsZi5vcHRpb25zKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnRvb2wud2ViLnVybHNfZmV0Y2hlZCwgWydmaWxl
Oi8vL3RtcC91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dCddKQotCi0gICAgZGVm
IHRlc3RfcmViYXNlbGluZV90ZXN0X2FuZF9wcmludF9zY21fY2hhbmdlcyhzZWxmKToKLSAgICAg
ICAgc2VsZi5jb21tYW5kLl9wcmludF9zY21fY2hhbmdlcyA9IFRydWUKLSAgICAgICAgc2VsZi5j
b21tYW5kLl9zY21fY2hhbmdlcyA9IHsnYWRkJzogW10sICdkZWxldGUnOiBbXX0KLSAgICAgICAg
c2VsZi50b29sLl9zY20uZXhpc3RzID0gbGFtYmRhIHg6IEZhbHNlCi0KLSAgICAgICAgc2VsZi5j
b21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIkFwcGxlIExpb24gUmVsZWFzZSBXSzEgKFRlc3RzKSIs
ICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmUsICJ0eHQiLCBOb25lKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKHNlbGYuY29tbWFuZC5fc2NtX2NoYW5nZXMsIHsn
YWRkJzogWycvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi13azEv
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCddLCAnZGVsZXRlJzogW119KQot
Ci0gICAgZGVmIHRlc3RfcmViYXNlbGluZV9hbmRfY29weV90ZXN0KHNlbGYpOgotICAgICAgICBz
ZWxmLl93cml0ZSgidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCIsICJnZW5l
cmljIHJlc3VsdCIpCi0KLSAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIkFw
cGxlIExpb24gUmVsZWFzZSBXSzEgKFRlc3RzKSIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qu
aHRtbCIsIFsibWFjLWxpb24td2syIl0sICJ0eHQiLCBOb25lKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0TXVsdGlMaW5lRXF1YWwoc2VsZi5fcmVhZCgncGxhdGZvcm0vbWFjLWxpb24td2sxL3VzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQnKSwgc2VsZi5NT0NLX1dFQl9SRVNVTFQp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoc2VsZi5fcmVhZCgncGxhdGZvcm0v
bWFjLWxpb24td2syL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQnKSwgJ2dl
bmVyaWMgcmVzdWx0JykKLQotICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdF9u
b19leGlzdGluZ19yZXN1bHQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGlu
ZV90ZXN0KCJBcHBsZSBMaW9uIFJlbGVhc2UgV0sxIChUZXN0cykiLCAidXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0Lmh0bWwiLCBbIm1hYy1saW9uLXdrMiJdLCAidHh0IiwgTm9uZSkKLQotICAgICAg
ICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKHNlbGYuX3JlYWQoJ3BsYXRmb3JtL21hYy1saW9u
LXdrMS91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0JyksIHNlbGYuTU9DS19X
RUJfUkVTVUxUKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYudG9vbC5maWxlc3lzdGVt
LmV4aXN0cyhzZWxmLl9leHBhbmQoJ3BsYXRmb3JtL21hYy1saW9uLXdrMi91c2Vyc2NyaXB0cy9h
bm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0JykpKQotCi0gICAgZGVmIHRlc3RfcmViYXNlbGluZV9h
bmRfY29weV90ZXN0X3dpdGhfbGlvbl9yZXN1bHQoc2VsZik6Ci0gICAgICAgIHNlbGYuX3dyaXRl
KCJwbGF0Zm9ybS9tYWMtbGlvbi91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0
IiwgIm9yaWdpbmFsIGxpb24gcmVzdWx0IikKLQotICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFz
ZWxpbmVfdGVzdCgiQXBwbGUgTGlvbiBSZWxlYXNlIFdLMSAoVGVzdHMpIiwgInVzZXJzY3JpcHRz
L2Fub3RoZXItdGVzdC5odG1sIiwgWyJtYWMtbGlvbi13azIiXSwgInR4dCIsIHNlbGYuV0VCX1BS
RUZJWCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnRvb2wud2ViLnVybHNfZmV0
Y2hlZCwgW3NlbGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVh
bC50eHQnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChzZWxmLl9yZWFkKCJw
bGF0Zm9ybS9tYWMtbGlvbi13azIvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4
dCIpLCAib3JpZ2luYWwgbGlvbiByZXN1bHQiKQotICAgICAgICBzZWxmLmFzc2VydE11bHRpTGlu
ZUVxdWFsKHNlbGYuX3JlYWQoInBsYXRmb3JtL21hYy1saW9uLXdrMS91c2Vyc2NyaXB0cy9hbm90
aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiksIHNlbGYuTU9DS19XRUJfUkVTVUxUKQotCi0gICAgZGVm
IHRlc3RfcmViYXNlbGluZV9hbmRfY29weV9ub19vdmVyd3JpdGVfdGVzdChzZWxmKToKLSAgICAg
ICAgc2VsZi5fd3JpdGUoInBsYXRmb3JtL21hYy1saW9uL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVz
dC1leHBlY3RlZC50eHQiLCAib3JpZ2luYWwgbGlvbiByZXN1bHQiKQotICAgICAgICBzZWxmLl93
cml0ZSgicGxhdGZvcm0vbWFjLWxpb24td2syL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBl
Y3RlZC50eHQiLCAib3JpZ2luYWwgbGlvbiB3azIgcmVzdWx0IikKLQotICAgICAgICBzZWxmLmNv
bW1hbmQuX3JlYmFzZWxpbmVfdGVzdCgiQXBwbGUgTGlvbiBSZWxlYXNlIFdLMSAoVGVzdHMpIiwg
InVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgWyJtYWMtbGlvbi13azIiXSwgInR4dCIs
IE5vbmUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChzZWxmLl9yZWFkKCJw
bGF0Zm9ybS9tYWMtbGlvbi13azIvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4
dCIpLCAib3JpZ2luYWwgbGlvbiB3azIgcmVzdWx0IikKLSAgICAgICAgc2VsZi5hc3NlcnRNdWx0
aUxpbmVFcXVhbChzZWxmLl9yZWFkKCJwbGF0Zm9ybS9tYWMtbGlvbi13azEvdXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCIpLCBzZWxmLk1PQ0tfV0VCX1JFU1VMVCkKLQotICAg
IGRlZiB0ZXN0X3JlYmFzZWxpbmVfdGVzdF9pbnRlcm5hbF93aXRoX21vdmVfb3ZlcndyaXR0ZW5f
YmFzZWxpbmVzX3RvKHNlbGYpOgotICAgICAgICBzZWxmLnRvb2wuZXhlY3V0aXZlID0gTW9ja0V4
ZWN1dGl2ZTIoKQotCi0gICAgICAgICMgRklYTUU6IGl0J3MgY29uZnVzaW5nIHRoYXQgdGhpcyBp
cyB0aGUgdGVzdC0gcG9ydCwgYW5kIG5vdCB0aGUgcmVndWxhciBsaW9uIHBvcnQuIFJlYWxseSBh
bGwgb2YgdGhlIHRlc3RzIHNob3VsZCBiZSB1c2luZyB0aGUgdGVzdCBwb3J0cy4KLSAgICAgICAg
cG9ydCA9IHNlbGYudG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LW1hYy1zbm93bGVvcGFyZCcp
Ci0gICAgICAgIHNlbGYuX3dyaXRlKHBvcnQuX2ZpbGVzeXN0ZW0uam9pbihwb3J0LmxheW91dF90
ZXN0c19kaXIoKSwgJ3BsYXRmb3JtL3Rlc3QtbWFjLXNub3dsZW9wYXJkL2ZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlLWV4cGVjdGVkLnR4dCcpLCAnb3JpZ2luYWwgc25vd2xlb3BhcmQgcmVzdWx0JykK
LQotICAgICAgICBvbGRfZXhhY3RfbWF0Y2hlcyA9IGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzCi0g
ICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgotICAgICAgICAgICAgYnVp
bGRlcnMuX2V4YWN0X21hdGNoZXMgPSB7Ci0gICAgICAgICAgICAgICAgIk1PQ0sgTGVvcGFyZCI6
IHsicG9ydF9uYW1lIjogInRlc3QtbWFjLWxlb3BhcmQiLCAic3BlY2lmaWVycyI6IHsibW9jay1z
cGVjaWZpZXIifX0sCi0gICAgICAgICAgICAgICAgIk1PQ0sgU25vd0xlb3BhcmQiOiB7InBvcnRf
bmFtZSI6ICJ0ZXN0LW1hYy1zbm93bGVvcGFyZCIsICJzcGVjaWZpZXJzIjogeyJtb2NrLXNwZWNp
ZmllciJ9fSwKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRp
b25zKG9wdGltaXplPVRydWUsIGJ1aWxkZXI9Ik1PQ0sgU25vd0xlb3BhcmQiLCBzdWZmaXhlcz0i
dHh0IiwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG89WyJ0ZXN0LW1hYy1sZW9wYXJkIl0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLCB0ZXN0PSJm
YWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sIiwgcmVzdWx0c19kaXJlY3Rvcnk9Tm9uZSwgdXBk
YXRlX2V4cGVjdGF0aW9ucz1UcnVlKQotCi0gICAgICAgICAgICBzZWxmLmNvbW1hbmQuZXhlY3V0
ZShvcHRpb25zLCBbXSwgc2VsZi50b29sKQotCi0gICAgICAgIGJ1aWxkZXJzLl9leGFjdF9tYXRj
aGVzID0gb2xkX2V4YWN0X21hdGNoZXMKLQotICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVx
dWFsKHNlbGYuX3JlYWQoc2VsZi50b29sLmZpbGVzeXN0ZW0uam9pbihwb3J0LmxheW91dF90ZXN0
c19kaXIoKSwgJ3BsYXRmb3JtL3Rlc3QtbWFjLWxlb3BhcmQvZmFpbHVyZXMvZXhwZWN0ZWQvaW1h
Z2UtZXhwZWN0ZWQudHh0JykpLCAnb3JpZ2luYWwgc25vd2xlb3BhcmQgcmVzdWx0JykKLSAgICAg
ICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwg
J3siYWRkIjogW119XG4nKQotCi0KLWNsYXNzIFRlc3RSZWJhc2VsaW5lSnNvbihfQmFzZVRlc3RD
YXNlKToKLSAgICBjb21tYW5kX2NvbnN0cnVjdG9yID0gUmViYXNlbGluZUpzb24KLQotICAgIGRl
ZiBzZXRVcChzZWxmKToKLSAgICAgICAgc3VwZXIoVGVzdFJlYmFzZWxpbmVKc29uLCBzZWxmKS5z
ZXRVcCgpCi0gICAgICAgIHNlbGYudG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMigpCi0g
ICAgICAgIHNlbGYub2xkX2V4YWN0X21hdGNoZXMgPSBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcwot
ICAgICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9IHsKLSAgICAgICAgICAgICJNT0NLIGJ1
aWxkZXIiOiB7InBvcnRfbmFtZSI6ICJ0ZXN0LW1hYy1zbm93bGVvcGFyZCIsICJzcGVjaWZpZXJz
Ijogc2V0KFsibW9jay1zcGVjaWZpZXIiXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190byI6IFsidGVzdC1tYWMtbGVvcGFyZCJdfSwK
LSAgICAgICAgICAgICJNT0NLIGJ1aWxkZXIgKERlYnVnKSI6IHsicG9ydF9uYW1lIjogInRlc3Qt
bWFjLXNub3dsZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQoWyJtb2NrLXNwZWNpZmllciIsICJk
ZWJ1ZyJdKX0sCi0gICAgICAgIH0KLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAg
YnVpbGRlcnMuX2V4YWN0X21hdGNoZXMgPSBzZWxmLm9sZF9leGFjdF9tYXRjaGVzCi0gICAgICAg
IHN1cGVyKFRlc3RSZWJhc2VsaW5lSnNvbiwgc2VsZikudGVhckRvd24oKQotCi0gICAgZGVmIHRl
c3RfcmViYXNlbGluZV9hbGwoc2VsZik6Ci0gICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhv
cHRpbWl6ZT1UcnVlLCB2ZXJib3NlPVRydWUsIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzPUZh
bHNlLCByZXN1bHRzX2RpcmVjdG9yeT1Ob25lLCB1cGRhdGVfZXhwZWN0YXRpb25zPVRydWUpCi0g
ICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZShvcHRpb25zLCAgeyJ1c2VyLXNjcmlwdHMv
YW5vdGhlci10ZXN0Lmh0bWwiOiB7Ik1PQ0sgYnVpbGRlciI6IFsidHh0IiwgInBuZyJdfX0pCi0K
LSAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2RlYnVnKHNlbGYpOgotICAgICAgICBvcHRpb25zID0g
TW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgdmVyYm9zZT1UcnVlLCBtb3ZlX292ZXJ3cml0dGVu
X2Jhc2VsaW5lcz1GYWxzZSwgcmVzdWx0c19kaXJlY3Rvcnk9Tm9uZSwgdXBkYXRlX2V4cGVjdGF0
aW9ucz1UcnVlKQotICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmUob3B0aW9ucywgIHsi
dXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIjogeyJNT0NLIGJ1aWxkZXIgKERlYnVnKSI6
IFsidHh0IiwgInBuZyJdfX0pCi0KLSAgICBkZWYgdGVzdF9ub19vcHRpbWl6ZShzZWxmKToKLSAg
ICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGltaXplPUZhbHNlLCB2ZXJib3NlPVRydWUs
IG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzPUZhbHNlLCByZXN1bHRzX2RpcmVjdG9yeT1Ob25l
LCB1cGRhdGVfZXhwZWN0YXRpb25zPVRydWUpCi0gICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNl
bGluZShvcHRpb25zLCAgeyJ1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ik1PQ0sg
YnVpbGRlciAoRGVidWcpIjogWyJ0eHQiLCAicG5nIl19fSkKLQotICAgICAgICAjIE5vdGUgdGhh
dCB3ZSBoYXZlIG9ubHkgb25lIHJ1bl9pbl9wYXJhbGxlbCgpIGNhbGwKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWxmLnRvb2wuZXhlY3V0aXZlLmNhbGxzLCBbW1snZWNobycsICdyZWJhc2Vs
aW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICd0eHQscG5nJywgJy0tYnVpbGRlcics
ICdNT0NLIGJ1aWxkZXIgKERlYnVnKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVz
dCcsICd1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnLCAnLS11cGRhdGUtZXhwZWN0YXRp
b25zJywgJ1RydWUnLCAnLS12ZXJib3NlJ11dXSkKLQotICAgIGRlZiB0ZXN0X3Jlc3VsdHNfZGly
ZWN0b3J5KHNlbGYpOgotICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMob3B0aW1pemU9RmFs
c2UsIHZlcmJvc2U9VHJ1ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM9RmFsc2UsIHJlc3Vs
dHNfZGlyZWN0b3J5PScvdG1wJywgdXBkYXRlX2V4cGVjdGF0aW9ucz1UcnVlKQotICAgICAgICBz
ZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmUob3B0aW9ucywgIHsidXNlci1zY3JpcHRzL2Fub3RoZXIt
dGVzdC5odG1sIjogeyJNT0NLIGJ1aWxkZXIiOiBbInR4dCIsICJwbmciXX19KQotCi0gICAgICAg
ICMgTm90ZSB0aGF0IHdlIGhhdmUgb25seSBvbmUgcnVuX2luX3BhcmFsbGVsKCkgY2FsbAotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudG9vbC5leGVjdXRpdmUuY2FsbHMsIFtbWydlY2hv
JywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCxwbmcnLCAn
LS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJy0t
dGVzdCcsICd1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnLCAnLS1yZXN1bHRzLWRpcmVj
dG9yeScsICcvdG1wJywgJy0tdXBkYXRlLWV4cGVjdGF0aW9ucycsICdUcnVlJywgJy0tdmVyYm9z
ZSddXV0pCi0KLQotY2xhc3MgVGVzdFJlYmFzZWxpbmUoX0Jhc2VUZXN0Q2FzZSk6Ci0gICAgIyBU
aGlzIGNvbW1hbmQgc2hhcmVzIG1vc3Qgb2YgaXRzIGxvZ2ljIHdpdGggUmViYXNlbGluZUpzb24s
IHNvIHRoZXNlIHRlc3RzIGp1c3QgdGVzdCB3aGF0IGlzIGRpZmZlcmVudC4KLQotICAgIGNvbW1h
bmRfY29uc3RydWN0b3IgPSBSZWJhc2VsaW5lICAjIEFLQSB3ZWJraXQtcGF0Y2ggcmViYXNlbGlu
ZQotCi0gICAgZGVmIHRlc3RfdGVzdHNfdG9fdXBkYXRlKHNlbGYpOgotICAgICAgICBidWlsZCA9
IE1vY2soKQotICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKToKLSAgICAgICAgICAgIHNlbGYu
Y29tbWFuZC5fdGVzdHNfdG9fdXBkYXRlKGJ1aWxkKQotCi0gICAgZGVmIHRlc3RfcmViYXNlbGlu
ZShzZWxmKToKLSAgICAgICAgc2VsZi5jb21tYW5kLl9idWlsZGVyc190b19wdWxsX2Zyb20gPSBs
YW1iZGE6IFtNb2NrQnVpbGRlcignTU9DSyBidWlsZGVyJyldCi0gICAgICAgIHNlbGYuY29tbWFu
ZC5fdGVzdHNfdG9fdXBkYXRlID0gbGFtYmRhIGJ1aWxkZXI6IFsnbW9jay9wYXRoL3RvL3Rlc3Qu
aHRtbCddCi0KLSAgICAgICAgc2VsZi5femVyb19vdXRfdGVzdF9leHBlY3RhdGlvbnMoKQotCi0g
ICAgICAgIG9sZF9leGFjdF9tYXRjaGVzID0gYnVpbGRlcnMuX2V4YWN0X21hdGNoZXMKLSAgICAg
ICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6Ci0gICAgICAgICAgICBidWlsZGVy
cy5fZXhhY3RfbWF0Y2hlcyA9IHsKLSAgICAgICAgICAgICAgICAiTU9DSyBidWlsZGVyIjogeyJw
b3J0X25hbWUiOiAidGVzdC1tYWMtbGVvcGFyZCIsICJzcGVjaWZpZXJzIjogeyJtb2NrLXNwZWNp
ZmllciJ9fSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNlbGYuY29tbWFuZC5leGVjdXRl
KE1vY2tPcHRpb25zKG9wdGltaXplPUZhbHNlLCBidWlsZGVycz1Ob25lLCBzdWZmaXhlcz0idHh0
LHBuZyIsIHZlcmJvc2U9VHJ1ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM9RmFsc2UsIHVw
ZGF0ZV9leHBlY3RhdGlvbnM9VHJ1ZSksIFtdLCBzZWxmLnRvb2wpCi0KLSAgICAgICAgYnVpbGRl
cnMuX2V4YWN0X21hdGNoZXMgPSBvbGRfZXhhY3RfbWF0Y2hlcwotCi0gICAgICAgIGNhbGxzID0g
bGlzdChmaWx0ZXIobGFtYmRhIHg6IHhbMF0gbm90IGluIFsncGVybCcsICcvdXNyL2Jpbi94Y3J1
bicsICcvdXNyL2Jpbi91bGltaXQnXSwgc2VsZi50b29sLmV4ZWN1dGl2ZS5jYWxscykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbHMsIFtbWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1p
bnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCxwbmcnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVp
bGRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdCcsICdtb2NrL3BhdGgvdG8v
dGVzdC5odG1sJywgJy0tdXBkYXRlLWV4cGVjdGF0aW9ucycsICdUcnVlJywgJy0tdmVyYm9zZSdd
XV0pCi0KLQotY2xhc3MgVGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMoX0Jhc2VUZXN0Q2FzZSk6
Ci0gICAgY29tbWFuZF9jb25zdHJ1Y3RvciA9IFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMKLQotICAg
IGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc3VwZXIoVGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlv
bnMsIHNlbGYpLnNldFVwKCkKLSAgICAgICAgc2VsZi5vcHRpb25zID0gTW9ja09wdGlvbnMob3B0
aW1pemU9RmFsc2UsIGJ1aWxkZXJzPU5vbmUsIHN1ZmZpeGVzPVsndHh0J10sIHZlcmJvc2U9RmFs
c2UsIHBsYXRmb3JtPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
dmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzPUZhbHNlLCByZXN1bHRzX2RpcmVjdG9yeT1Ob25lLCB1
cGRhdGVfZXhwZWN0YXRpb25zPVRydWUpCi0KLSAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2V4cGVj
dGF0aW9ucyhzZWxmKToKLSAgICAgICAgc2VsZi5femVyb19vdXRfdGVzdF9leHBlY3RhdGlvbnMo
KQotCi0gICAgICAgIHNlbGYudG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMigpCi0KLSAg
ICAgICAgc2VsZi5jb21tYW5kLl90ZXN0c190b19yZWJhc2VsaW5lID0gbGFtYmRhIHBvcnQ6IHsn
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnOiBzZXQoWyd0eHQnXSksICd1c2Vyc2NyaXB0
cy9pbWFnZXMuc3ZnJzogc2V0KFsncG5nJ10pfQotICAgICAgICBzZWxmLmNvbW1hbmQuZXhlY3V0
ZShzZWxmLm9wdGlvbnMsIFtdLCBzZWxmLnRvb2wpCi0KLSAgICAgICAgIyBGSVhNRTogY2hhbmdl
IHRoaXMgdG8gdXNlIHRoZSB0ZXN0LSBwb3J0cy4KLSAgICAgICAgY2FsbHMgPSBsaXN0KGZpbHRl
cihsYW1iZGEgeDogeFswXSBub3QgaW4gWydwZXJsJywgJy91c3IvYmluL3hjcnVuJywgJy91c3Iv
YmluL3VsaW1pdCddLCBzZWxmLnRvb2wuZXhlY3V0aXZlLmNhbGxzKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4oY2FsbHMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihj
YWxsc1swXSksIDI0KQotCi0gICAgZGVmIHRlc3RfcmViYXNlbGluZV9leHBlY3RhdGlvbnNfbm9v
cChzZWxmKToKLSAgICAgICAgc2VsZi5femVyb19vdXRfdGVzdF9leHBlY3RhdGlvbnMoKQotCi0g
ICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgotICAgICAgICAgICAgc2Vs
Zi5jb21tYW5kLmV4ZWN1dGUoc2VsZi5vcHRpb25zLCBbXSwgc2VsZi50b29sKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50b29sLmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcywge30p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwg
IlRoZSAncmViYXNlbGluZS1leHBlY3RhdGlvbnMnIGNvbW1hbmQgaXMgY3VycmVudGx5IGRlcHJl
Y2F0ZWQgZHVlIHRvIGJlbGlldmVkIG5vbi11c2U7IGlmIGl0IGZvcm1zIHBhcnQgb2YgeW91ciB3
b3JrZmxvdywgcGxlYXNlIGNvbW1lbnQgb24gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTk5MSBhbmQgcGxlYXNlIGluY2x1ZGUgdGhlIGNvbW1hbmQgeW91IHJhbiwg
ZXZlbiBpZiBvdGhlcnMgaGF2ZSBhbHJlYWR5IG1lbnRpb25lZCBpdFxuRGlkIG5vdCBmaW5kIGFu
eSB0ZXN0cyBtYXJrZWQgUmViYXNlbGluZS5cbiIpCi0KLSAgICBkZWYgZGlzYWJsZWRfdGVzdF9v
dmVycmlkZXNfYXJlX2luY2x1ZGVkX2NvcnJlY3RseShzZWxmKToKLSAgICAgICAgIyBUaGlzIHRl
c3RzIHRoYXQgdGhlIGFueSB0ZXN0cyBtYXJrZWQgYXMgUkVCQVNFTElORSBpbiB0aGUgb3ZlcnJp
ZGVzIGFyZSBmb3VuZCwgYnV0Ci0gICAgICAgICMgdGhhdCB0aGUgb3ZlcnJpZGVzIGRvIG5vdCBn
ZXQgd3JpdHRlbiBpbnRvIHRoZSBtYWluIGZpbGUuCi0gICAgICAgIHNlbGYuX3plcm9fb3V0X3Rl
c3RfZXhwZWN0YXRpb25zKCkKLQotICAgICAgICBzZWxmLl93cml0ZShzZWxmLmxpb25fZXhwZWN0
YXRpb25zX3BhdGgsICcnKQotICAgICAgICBzZWxmLmxpb25fcG9ydC5leHBlY3RhdGlvbnNfZGlj
dCA9IGxhbWJkYTogewotICAgICAgICAgICAgc2VsZi5saW9uX2V4cGVjdGF0aW9uc19wYXRoOiAn
JywKLSAgICAgICAgICAgICdvdmVycmlkZXMnOiAoJ0J1Zyh4KSB1c2Vyc2NyaXB0cy9hbm90aGVy
LXRlc3QuaHRtbCBbIEZhaWx1cmUgUmViYXNlbGluZSBdXG4nCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICdCdWcoeSkgdXNlcnNjcmlwdHMvdGVzdC5odG1sIFsgQ3Jhc2ggXVxuJyl9Ci0gICAg
ICAgIHNlbGYuX3dyaXRlKCcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnLCAnJykKLQot
ICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbChzZWxmLmNvbW1hbmQuX3Rlc3RzX3RvX3JlYmFz
ZWxpbmUoc2VsZi5saW9uX3BvcnQpLCB7J3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJzog
c2V0KFsncG5nJywgJ3R4dCcsICd3YXYnXSl9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuX3JlYWQoc2VsZi5saW9uX2V4cGVjdGF0aW9uc19wYXRoKSwgJycpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQppbmRleCAwNWFhMjIwZGY2OWM0
ODY5OWFhODVkNzBlM2YzODdmMzc0ZjVlMjYwLi5iOTZiMzY0MTEzNmM4NmUyNjBkN2NiMTQ4OWYw
ZGYwODc5MGE4ODk1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy91cGxvYWQucHkKQEAgLTQyLDE1NyArNDIsMTIgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuY2hhbmdlbG9nIGltcG9ydCBwYXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2cKIGZyb20g
d2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0CiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgVXNlcgogZnJvbSB3ZWJraXRw
eS50b29sLmNvbW1hbmRzLmFic3RyYWN0c2VxdWVuY2VkY29tbWFuZCBpbXBvcnQgQWJzdHJhY3RT
ZXF1ZW5jZWRDb21tYW5kCi1mcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuZGVwcmVjYXRlZGNv
bW1hbmQgaW1wb3J0IERlcHJlY2F0ZWRDb21tYW5kCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWVu
dHMgaW1wb3J0IGJ1Z19jb21tZW50X2Zyb21fc3ZuX3JldmlzaW9uCiBmcm9tIHdlYmtpdHB5LnRv
b2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQ29tbWFuZAogCiBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCiAKIAotQERlcHJlY2F0ZWRDb21tYW5kCi1jbGFzcyBDb21taXRNZXNz
YWdlRm9yQ3VycmVudERpZmYoQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICJjb21taXQtbWVzc2FnZSIK
LSAgICBoZWxwX3RleHQgPSAiUHJpbnQgYSBjb21taXQgbWVzc2FnZSBzdWl0YWJsZSBmb3IgdGhl
IHVuY29tbWl0dGVkIGNoYW5nZXMiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAg
IG9wdGlvbnMgPSBbCi0gICAgICAgICAgICBzdGVwcy5PcHRpb25zLmdpdF9jb21taXQsCi0gICAg
ICAgIF0KLSAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMpCi0K
LSAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgIyBU
aGlzIGNvbW1hbmQgaXMgYSB1c2VmdWwgdGVzdCB0byBtYWtlIHN1cmUgY29tbWl0X21lc3NhZ2Vf
Zm9yX3RoaXNfY29tbWl0Ci0gICAgICAgICMgYWx3YXlzIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVl
IHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0gICAgICAgIHBy
aW50KCIlcyIgJSB0b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0
KG9wdGlvbnMuZ2l0X2NvbW1pdCkubWVzc2FnZSgpKQotCi0KLUBEZXByZWNhdGVkQ29tbWFuZAot
Y2xhc3MgQ2xlYW5QZW5kaW5nQ29tbWl0KENvbW1hbmQpOgotICAgIG5hbWUgPSAiY2xlYW4tcGVu
ZGluZy1jb21taXQiCi0gICAgaGVscF90ZXh0ID0gIkNsZWFyIHIrIG9uIG9ic29sZXRlIHBhdGNo
ZXMgc28gdGhleSBkbyBub3QgYXBwZWFyIGluIHRoZSBwZW5kaW5nLWNvbW1pdCBsaXN0LiIKLQot
ICAgICMgTk9URTogVGhpcyB3YXMgZGVzaWduZWQgdG8gYmUgZ2VuZXJpYywgYnV0IHJpZ2h0IG5v
dyB3ZSdyZSBvbmx5IHByb2Nlc3NpbmcgcGF0Y2hlcyBmcm9tIHRoZSBwZW5kaW5nLWNvbW1pdCBs
aXN0LCBzbyBvbmx5IHIrIG1hdHRlcnMuCi0gICAgZGVmIF9mbGFnc190b19jbGVhcl9vbl9wYXRj
aChzZWxmLCBwYXRjaCk6Ci0gICAgICAgIGlmIG5vdCBwYXRjaC5pc19vYnNvbGV0ZSgpOgotICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgd2hhdF93YXNfY2xlYXJlZCA9IFtdCi0gICAg
ICAgIGlmIHBhdGNoLnJldmlldygpID09ICIrIjoKLSAgICAgICAgICAgIGlmIHBhdGNoLnJldmll
d2VyKCk6Ci0gICAgICAgICAgICAgICAgd2hhdF93YXNfY2xlYXJlZC5hcHBlbmQodSIlcydzIHJl
dmlldysiICUgcGF0Y2gucmV2aWV3ZXIoKS5mdWxsX25hbWUpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHdoYXRfd2FzX2NsZWFyZWQuYXBwZW5kKCJyZXZpZXcrIikKLSAgICAg
ICAgcmV0dXJuIHN0cmluZ191dGlscy5qb2luKHdoYXRfd2FzX2NsZWFyZWQpCi0KLSAgICBkZWYg
ZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgZm9yIGJ1Z19pZCBp
biB0b29sLmJ1Z3MucXVlcmllcy5mZXRjaF9idWdfaWRzX2Zyb21fcGVuZGluZ19jb21taXRfbGlz
dCgpOgotICAgICAgICAgICAgYnVnID0gc2VsZi5fdG9vbC5idWdzLmZldGNoX2J1ZyhidWdfaWQp
Ci0gICAgICAgICAgICBwYXRjaGVzID0gYnVnLnBhdGNoZXMoaW5jbHVkZV9vYnNvbGV0ZT1UcnVl
KQotICAgICAgICAgICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6Ci0gICAgICAgICAgICAgICAgZmxh
Z3NfdG9fY2xlYXIgPSBzZWxmLl9mbGFnc190b19jbGVhcl9vbl9wYXRjaChwYXRjaCkKLSAgICAg
ICAgICAgICAgICBpZiBub3QgZmxhZ3NfdG9fY2xlYXI6Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHUiQ2xlYXJlZCAlcyBmcm9tIG9ic29s
ZXRlIGF0dGFjaG1lbnQgJXMgc28gdGhhdCB0aGlzIGJ1ZyBkb2VzIG5vdCBhcHBlYXIgaW4gaHR0
cDovL3dlYmtpdC5vcmcvcGVuZGluZy1jb21taXQuIiAlIChmbGFnc190b19jbGVhciwgcGF0Y2gu
aWQoKSkKLSAgICAgICAgICAgICAgICBzZWxmLl90b29sLmJ1Z3Mub2Jzb2xldGVfYXR0YWNobWVu
dChwYXRjaC5pZCgpLCBtZXNzYWdlKQotCi0KLSMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHNoYXJl
IG1vcmUgbG9naWMgd2l0aCBBc3NpZ25Ub0NvbW1pdHRlciBhbmQgQ2xlYW5QZW5kaW5nQ29tbWl0
Ci1ARGVwcmVjYXRlZENvbW1hbmQKLWNsYXNzIENsZWFuUmV2aWV3UXVldWUoQ29tbWFuZCk6Ci0g
ICAgbmFtZSA9ICJjbGVhbi1yZXZpZXctcXVldWUiCi0gICAgaGVscF90ZXh0ID0gIkNsZWFyIHI/
IG9uIG9ic29sZXRlIHBhdGNoZXMgc28gdGhleSBkbyBub3QgYXBwZWFyIGluIHRoZSBwZW5kaW5n
LXJldmlldyBsaXN0LiIKLQotICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRv
b2wpOgotICAgICAgICBxdWV1ZV91cmwgPSAiaHR0cDovL3dlYmtpdC5vcmcvcGVuZGluZy1yZXZp
ZXciCi0gICAgICAgICMgV2UgZG8gdGhpcyBpbmVmZmljaWVudCBkYW5jZSB0byBiZSBtb3JlIGxp
a2Ugd2Via2l0Lm9yZy9wZW5kaW5nLXJldmlldwotICAgICAgICAjIGJ1Z3MucXVlcmllcy5mZXRj
aF9idWdfaWRzX2Zyb21fcmV2aWV3X3F1ZXVlKCkgZG9lc24ndCByZXR1cm4KLSAgICAgICAgIyBj
bG9zZWQgYnVncywgYnV0IGZvbGtzIHVzaW5nIC9wZW5kaW5nLXJldmlldyB3aWxsIHNlZSB0aGVt
LiA6KAotICAgICAgICBmb3IgcGF0Y2hfaWQgaW4gdG9vbC5idWdzLnF1ZXJpZXMuZmV0Y2hfYXR0
YWNobWVudF9pZHNfZnJvbV9yZXZpZXdfcXVldWUoKToKLSAgICAgICAgICAgIHBhdGNoID0gc2Vs
Zi5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQocGF0Y2hfaWQpCi0gICAgICAgICAgICBpZiBu
b3QgcGF0Y2gucmV2aWV3KCkgPT0gIj8iOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAg
ICAgICAgICBhdHRhY2htZW50X29ic29sZXRlX21vZGlmaWVyID0gIiIKLSAgICAgICAgICAgIGlm
IHBhdGNoLmlzX29ic29sZXRlKCk6Ci0gICAgICAgICAgICAgICAgYXR0YWNobWVudF9vYnNvbGV0
ZV9tb2RpZmllciA9ICJvYnNvbGV0ZSAiCi0gICAgICAgICAgICBlbGlmIHBhdGNoLmJ1ZygpLmlz
X2Nsb3NlZCgpOgotICAgICAgICAgICAgICAgIGJ1Z19jbG9zZWRfZXhwbGFuYXRpb24gPSAiICBJ
ZiB5b3Ugd291bGQgbGlrZSB0aGlzIHBhdGNoIHJldmlld2VkLCBwbGVhc2UgYXR0YWNoIGl0IHRv
IGEgbmV3IGJ1ZyAob3IgcmUtb3BlbiB0aGlzIGJ1ZyBiZWZvcmUgbWFya2luZyBpdCBmb3IgcmV2
aWV3IGFnYWluKS4iCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgTmVpdGhl
ciB0aGUgcGF0Y2ggd2FzIG9ic29sZXRlIG9yIHRoZSBidWcgd2FzIGNsb3NlZCwgbmV4dCBwYXRj
aC4uLgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtZXNzYWdlID0gIkNs
ZWFyZWQgcmV2aWV3PyBmcm9tICVzYXR0YWNobWVudCAlcyBzbyB0aGF0IHRoaXMgYnVnIGRvZXMg
bm90IGFwcGVhciBpbiAlcy4lcyIgJSAoYXR0YWNobWVudF9vYnNvbGV0ZV9tb2RpZmllciwgcGF0
Y2guaWQoKSwgcXVldWVfdXJsLCBidWdfY2xvc2VkX2V4cGxhbmF0aW9uKQotICAgICAgICAgICAg
c2VsZi5fdG9vbC5idWdzLm9ic29sZXRlX2F0dGFjaG1lbnQocGF0Y2guaWQoKSwgbWVzc2FnZSkK
LQotCi1ARGVwcmVjYXRlZENvbW1hbmQKLWNsYXNzIEFzc2lnblRvQ29tbWl0dGVyKENvbW1hbmQp
OgotICAgIG5hbWUgPSAiYXNzaWduLXRvLWNvbW1pdHRlciIKLSAgICBoZWxwX3RleHQgPSAiQXNz
aWduIGJ1ZyB0byB3aG9ldmVyIGF0dGFjaGVkIHRoZSBtb3N0IHJlY2VudCByKydkIHBhdGNoIgot
Ci0gICAgZGVmIF9wYXRjaGVzX2hhdmVfY29tbWl0ZXJzKHNlbGYsIHJldmlld2VkX3BhdGNoZXMp
OgotICAgICAgICBmb3IgcGF0Y2ggaW4gcmV2aWV3ZWRfcGF0Y2hlczoKLSAgICAgICAgICAgIGlm
IG5vdCBwYXRjaC5jb21taXR0ZXIoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfYXNzaWduX2J1Z190b19sYXN0X3BhdGNoX2F0
dGFjaGVyKHNlbGYsIGJ1Z19pZCk6Ci0gICAgICAgIGNvbW1pdHRlcnMgPSBDb21taXR0ZXJMaXN0
KCkKLSAgICAgICAgYnVnID0gc2VsZi5fdG9vbC5idWdzLmZldGNoX2J1ZyhidWdfaWQpCi0gICAg
ICAgIGlmIG5vdCBidWcuaXNfdW5hc3NpZ25lZCgpOgotICAgICAgICAgICAgYXNzaWduZWRfdG9f
ZW1haWwgPSBidWcuYXNzaWduZWRfdG9fZW1haWwoKQotICAgICAgICAgICAgX2xvZy5pbmZvKHUi
QnVnICVzIGlzIGFscmVhZHkgYXNzaWduZWQgdG8gJXMgKCVzKS4iICUgKGJ1Z19pZCwgYXNzaWdu
ZWRfdG9fZW1haWwsIGNvbW1pdHRlcnMuY29tbWl0dGVyX2J5X2VtYWlsKGFzc2lnbmVkX3RvX2Vt
YWlsKSkpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICByZXZpZXdlZF9wYXRjaGVzID0g
YnVnLnJldmlld2VkX3BhdGNoZXMoKQotICAgICAgICBpZiBub3QgcmV2aWV3ZWRfcGF0Y2hlczoK
LSAgICAgICAgICAgIF9sb2cuaW5mbygiQnVnICVzIGhhcyBubyBub24tb2Jzb2xldGUgcGF0Y2hl
cywgaWdub3JpbmcuIiAlIGJ1Z19pZCkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMg
V2Ugb25seSBuZWVkIHRvIGRvIGFueXRoaW5nIHdpdGggdGhpcyBidWcgaWYgb25lIG9mIHRoZSBy
KydkIHBhdGNoZXMgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbW1pdHRlciAoY3ErIHNldCkuCi0g
ICAgICAgIGlmIHNlbGYuX3BhdGNoZXNfaGF2ZV9jb21taXRlcnMocmV2aWV3ZWRfcGF0Y2hlcyk6
Ci0gICAgICAgICAgICBfbG9nLmluZm8oIkFsbCByZXZpZXdlZCBwYXRjaGVzIG9uIGJ1ZyAlcyBh
bHJlYWR5IGhhdmUgY29tbWl0LXF1ZXVlKywgaWdub3JpbmcuIiAlIGJ1Z19pZCkKLSAgICAgICAg
ICAgIHJldHVybgotCi0gICAgICAgIGxhdGVzdF9wYXRjaCA9IHJldmlld2VkX3BhdGNoZXNbLTFd
Ci0gICAgICAgIGF0dGFjaGVyX2VtYWlsID0gbGF0ZXN0X3BhdGNoLmF0dGFjaGVyX2VtYWlsKCkK
LSAgICAgICAgY29tbWl0dGVyID0gY29tbWl0dGVycy5jb21taXR0ZXJfYnlfZW1haWwoYXR0YWNo
ZXJfZW1haWwpCi0gICAgICAgIGlmIG5vdCBjb21taXR0ZXI6Ci0gICAgICAgICAgICBfbG9nLmlu
Zm8oIkF0dGFjaGVyICVzIGlzIG5vdCBhIGNvbW1pdHRlci4gIEJ1ZyAlcyBsaWtlbHkgbmVlZHMg
Y29tbWl0LXF1ZXVlKy4iICUgKGF0dGFjaGVyX2VtYWlsLCBidWdfaWQpKQotICAgICAgICAgICAg
cmV0dXJuCi0KLSAgICAgICAgcmVhc3NpZ25fbWVzc2FnZSA9IHUiQXR0YWNobWVudCAlcyB3YXMg
cG9zdGVkIGJ5IGEgY29tbWl0dGVyIGFuZCBoYXMgcmV2aWV3KywgYXNzaWduaW5nIHRvICVzIGZv
ciBjb21taXQuIiAlIChsYXRlc3RfcGF0Y2guaWQoKSwgY29tbWl0dGVyLmZ1bGxfbmFtZSkKLSAg
ICAgICAgc2VsZi5fdG9vbC5idWdzLnJlYXNzaWduX2J1ZyhidWdfaWQsIGNvbW1pdHRlci5idWd6
aWxsYV9lbWFpbCgpLCByZWFzc2lnbl9tZXNzYWdlKQotCi0gICAgZGVmIGV4ZWN1dGUoc2VsZiwg
b3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIGZvciBidWdfaWQgaW4gdG9vbC5idWdzLnF1
ZXJpZXMuZmV0Y2hfYnVnX2lkc19mcm9tX3BlbmRpbmdfY29tbWl0X2xpc3QoKToKLSAgICAgICAg
ICAgIHNlbGYuX2Fzc2lnbl9idWdfdG9fbGFzdF9wYXRjaF9hdHRhY2hlcihidWdfaWQpCi0KLQot
QERlcHJlY2F0ZWRDb21tYW5kCi1jbGFzcyBPYnNvbGV0ZUF0dGFjaG1lbnRzKEFic3RyYWN0U2Vx
dWVuY2VkQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICJvYnNvbGV0ZS1hdHRhY2htZW50cyIKLSAgICBo
ZWxwX3RleHQgPSAiTWFyayBhbGwgYXR0YWNobWVudHMgb24gYSBidWcgYXMgb2Jzb2xldGUiCi0g
ICAgYXJndW1lbnRfbmFtZXMgPSAiQlVHSUQiCi0gICAgc3RlcHMgPSBbCi0gICAgICAgIHN0ZXBz
Lk9ic29sZXRlUGF0Y2hlcywKLSAgICBdCi0KLSAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwg
b3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHJldHVybiB7ICJidWdfaWQiIDogYXJnc1sw
XSB9Ci0KLQotQERlcHJlY2F0ZWRDb21tYW5kCi1jbGFzcyBBdHRhY2hUb0J1ZyhBYnN0cmFjdFNl
cXVlbmNlZENvbW1hbmQpOgotICAgIG5hbWUgPSAiYXR0YWNoLXRvLWJ1ZyIKLSAgICBoZWxwX3Rl
eHQgPSAiQXR0YWNoIHRoZSBmaWxlIHRvIHRoZSBidWciCi0gICAgYXJndW1lbnRfbmFtZXMgPSAi
QlVHSUQgRklMRVBBVEgiCi0gICAgc3RlcHMgPSBbCi0gICAgICAgIHN0ZXBzLkF0dGFjaFRvQnVn
LAotICAgIF0KLQotICAgIGRlZiBfcHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0
b29sKToKLSAgICAgICAgc3RhdGUgPSB7fQotICAgICAgICBzdGF0ZVsiYnVnX2lkIl0gPSBhcmdz
WzBdCi0gICAgICAgIHN0YXRlWyJmaWxlcGF0aCJdID0gYXJnc1sxXQotICAgICAgICByZXR1cm4g
c3RhdGUKIAogCiBjbGFzcyBBYnN0cmFjdFBhdGNoVXBsb2FkaW5nQ29tbWFuZChBYnN0cmFjdFNl
cXVlbmNlZENvbW1hbmQpOgpAQCAtMjQ4LDE2ICsxMDMsNiBAQCBjbGFzcyBMYW5kU2FmZWx5KEFi
c3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21tYW5kKToKICAgICBdCiAKIAotQERlcHJlY2F0ZWRDb21t
YW5kCi1jbGFzcyBIYXNMYW5kZWQoQWJzdHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgotICAg
IG5hbWUgPSAiaGFzLWxhbmRlZCIKLSAgICBoZWxwX3RleHQgPSAiQ2hlY2sgdGhhdCB0aGUgY3Vy
cmVudCBjb2RlIHdhcyBzdWNjZXNzZnVsbHkgbGFuZGVkIGFuZCBubyBjaGFuZ2VzIHJlbWFpbi4i
Ci0gICAgYXJndW1lbnRfbmFtZXMgPSAiW0JVR0lEXSIKLSAgICBzdGVwcyA9IFsKLSAgICAgICAg
c3RlcHMuSGFzTGFuZGVkLAotICAgIF0KLQotCiBjbGFzcyBQcmVwYXJlKEFic3RyYWN0U2VxdWVu
Y2VkQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJwcmVwYXJlIgogICAgIGhlbHBfdGV4dCA9ICJDcmVh
dGVzIGEgYnVnIChvciBwcm9tcHRzIGZvciBhbiBleGlzdGluZyBidWcpIGFuZCBwcmVwYXJlcyB0
aGUgQ2hhbmdlTG9ncyIKQEAgLTMxOSw2NCArMTY0LDYgQEAgY2xhc3MgRWRpdENoYW5nZUxvZ3Mo
QWJzdHJhY3RTZXF1ZW5jZWRDb21tYW5kKToKICAgICBdCiAKIAotQERlcHJlY2F0ZWRDb21tYW5k
Ci1jbGFzcyBQb3N0Q29tbWl0cyhDb21tYW5kKToKLSAgICBuYW1lID0gInBvc3QtY29tbWl0cyIK
LSAgICBoZWxwX3RleHQgPSAiQXR0YWNoIGEgcmFuZ2Ugb2YgbG9jYWwgY29tbWl0cyB0byBidWdz
IGFzIHBhdGNoIGZpbGVzIgotICAgIGFyZ3VtZW50X25hbWVzID0gIkNPTU1JVElTSCIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgb3B0aW9ucyA9IFsKLSAgICAgICAgICAgIG1h
a2Vfb3B0aW9uKCItYiIsICItLWJ1Zy1pZCIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmci
LCBkZXN0PSJidWdfaWQiLCBoZWxwPSJTcGVjaWZ5IGJ1ZyBpZCBpZiBubyBVUkwgaXMgcHJvdmlk
ZWQgaW4gdGhlIGNvbW1pdCBsb2cuIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1hZGQt
bG9nLWFzLWNvbW1lbnQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJhZGRfbG9nX2FzX2Nv
bW1lbnQiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJBZGQgY29tbWl0IGxvZyBtZXNzYWdlIGFzIGEg
Y29tbWVudCB3aGVuIHVwbG9hZGluZyB0aGUgcGF0Y2guIiksCi0gICAgICAgICAgICBtYWtlX29w
dGlvbigiLW0iLCAiLS1kZXNjcmlwdGlvbiIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmci
LCBkZXN0PSJkZXNjcmlwdGlvbiIsIGhlbHA9IkRlc2NyaXB0aW9uIHN0cmluZyBmb3IgdGhlIGF0
dGFjaG1lbnQgKGRlZmF1bHQ6IGRlc2NyaXB0aW9uIGZyb20gY29tbWl0IG1lc3NhZ2UpIiksCi0g
ICAgICAgICAgICBzdGVwcy5PcHRpb25zLm9ic29sZXRlX3BhdGNoZXMsCi0gICAgICAgICAgICBz
dGVwcy5PcHRpb25zLnJldmlldywKLSAgICAgICAgICAgIHN0ZXBzLk9wdGlvbnMucmVxdWVzdF9j
b21taXQsCi0gICAgICAgICAgICBzdGVwcy5PcHRpb25zLmV3cywKLSAgICAgICAgXQotICAgICAg
ICBDb21tYW5kLl9faW5pdF9fKHNlbGYsIG9wdGlvbnM9b3B0aW9ucywgcmVxdWlyZXNfbG9jYWxf
Y29tbWl0cz1UcnVlKQotCi0gICAgZGVmIF9jb21tZW50X3RleHRfZm9yX2NvbW1pdChzZWxmLCBv
cHRpb25zLCBjb21taXRfbWVzc2FnZSwgdG9vbCwgY29tbWl0X2lkKToKLSAgICAgICAgY29tbWVu
dF90ZXh0ID0gTm9uZQotICAgICAgICBpZiAob3B0aW9ucy5hZGRfbG9nX2FzX2NvbW1lbnQpOgot
ICAgICAgICAgICAgY29tbWVudF90ZXh0ID0gY29tbWl0X21lc3NhZ2UuYm9keShsc3RyaXA9VHJ1
ZSkKLSAgICAgICAgICAgIGNvbW1lbnRfdGV4dCArPSAiLS0tXG4iCi0gICAgICAgICAgICBjb21t
ZW50X3RleHQgKz0gdG9vbC5zY20oKS5maWxlc19jaGFuZ2VkX3N1bW1hcnlfZm9yX2NvbW1pdChj
b21taXRfaWQpCi0gICAgICAgIHJldHVybiBjb21tZW50X3RleHQKLQotICAgIGRlZiBleGVjdXRl
KHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBjb21taXRfaWRzID0gdG9vbC5z
Y20oKS5jb21taXRfaWRzX2Zyb21fY29tbWl0aXNoX2FyZ3VtZW50cyhhcmdzKQotICAgICAgICBp
ZiBsZW4oY29tbWl0X2lkcykgPiAxMDogICMgV2UgY291bGQgbG93ZXIgdGhpcyBsaW1pdCwgMTAg
aXMgdG9vIG1hbnkgZm9yIG9uZSBidWcgYXMtaXMuCi0gICAgICAgICAgICBfbG9nLmVycm9yKCJ3
ZWJraXQtcGF0Y2ggZG9lcyBub3Qgc3VwcG9ydCBhdHRhY2hpbmcgJXMgYXQgb25jZS4gIEFyZSB5
b3Ugc3VyZSB5b3UgcGFzc2VkIHRoZSByaWdodCBjb21taXQgcmFuZ2U/IiAlIChzdHJpbmdfdXRp
bHMucGx1cmFsaXplKGxlbihjb21taXRfaWRzKSwgJ3BhdGNoJywgcGx1cmFsPSdwYXRjaGVzJykp
KQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBoYXZlX29ic29sZXRlZF9wYXRj
aGVzID0gc2V0KCkKLSAgICAgICAgZm9yIGNvbW1pdF9pZCBpbiBjb21taXRfaWRzOgotICAgICAg
ICAgICAgY29tbWl0X21lc3NhZ2UgPSB0b29sLnNjbSgpLmNvbW1pdF9tZXNzYWdlX2Zvcl9sb2Nh
bF9jb21taXQoY29tbWl0X2lkKQotCi0gICAgICAgICAgICAjIFByZWZlciAtLWJ1Zy1pZD0sIHRo
ZW4gYSBidWcgdXJsIGluIHRoZSBjb21taXQgbWVzc2FnZSwgdGhlbiBhIGJ1ZyB1cmwgaW4gdGhl
IGVudGlyZSBjb21taXQgZGlmZiAoaS5lLiBDaGFuZ2VMb2dzKS4KLSAgICAgICAgICAgIGJ1Z19p
ZCA9IG9wdGlvbnMuYnVnX2lkIG9yIHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5nZWxvZyhjb21taXRf
bWVzc2FnZS5tZXNzYWdlKCkpIG9yIHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5nZWxvZyh0b29sLnNj
bSgpLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0PWNvbW1pdF9pZCkpCi0gICAgICAgICAgICBpZiBu
b3QgYnVnX2lkOgotICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiU2tpcHBpbmcgJXM6IE5vIGJ1
ZyBpZCBmb3VuZCBpbiBjb21taXQgb3Igc3BlY2lmaWVkIHdpdGggLS1idWctaWQuIiAlIGNvbW1p
dF9pZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBpZiBvcHRpb25z
Lm9ic29sZXRlX3BhdGNoZXMgYW5kIGJ1Z19pZCBub3QgaW4gaGF2ZV9vYnNvbGV0ZWRfcGF0Y2hl
czoKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IHsgImJ1Z19pZCI6IGJ1Z19pZCB9Ci0gICAgICAg
ICAgICAgICAgc3RlcHMuT2Jzb2xldGVQYXRjaGVzKHRvb2wsIG9wdGlvbnMpLnJ1bihzdGF0ZSkK
LSAgICAgICAgICAgICAgICBoYXZlX29ic29sZXRlZF9wYXRjaGVzLmFkZChidWdfaWQpCi0KLSAg
ICAgICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0PWNvbW1p
dF9pZCkKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gb3B0aW9ucy5kZXNjcmlwdGlvbiBvciBj
b21taXRfbWVzc2FnZS5kZXNjcmlwdGlvbihsc3RyaXA9VHJ1ZSwgc3RyaXBfdXJsPVRydWUpCi0g
ICAgICAgICAgICBjb21tZW50X3RleHQgPSBzZWxmLl9jb21tZW50X3RleHRfZm9yX2NvbW1pdChv
cHRpb25zLCBjb21taXRfbWVzc2FnZSwgdG9vbCwgY29tbWl0X2lkKQotICAgICAgICAgICAgYXR0
YWNobWVudF9pZCA9IHRvb2wuYnVncy5hZGRfcGF0Y2hfdG9fYnVnKGJ1Z19pZCwgZGlmZiwgZGVz
Y3JpcHRpb24sIGNvbW1lbnRfdGV4dCwgbWFya19mb3JfcmV2aWV3PW9wdGlvbnMucmV2aWV3LCBt
YXJrX2Zvcl9jb21taXRfcXVldWU9b3B0aW9ucy5yZXF1ZXN0X2NvbW1pdCkKLQotICAgICAgICAg
ICAgIyBXZSBvbmx5IG5lZWQgdG8gc3VibWl0IC0tbm8tcmV2aWV3IHBhdGNoZXMgdG8gRVdTIGFz
IHBhdGNoZXMgcG9zdGVkIGZvciByZXZpZXcgYXJlCi0gICAgICAgICAgICAjIGF1dG9tYXRpY2Fs
bHkgc3VibWl0dGVkIHRvIEVXUyBieSBFV1NGZWVkZXIuCi0gICAgICAgICAgICBpZiBub3Qgb3B0
aW9ucy5yZXZpZXcgYW5kIG9wdGlvbnMuZXdzOgotICAgICAgICAgICAgICAgIHN0YXRlID0geydh
dHRhY2htZW50X2lkcyc6IFthdHRhY2htZW50X2lkXX0KLSAgICAgICAgICAgICAgICBzdGVwcy5T
dWJtaXRUb0VXUyh0b29sLCBvcHRpb25zKS5ydW4oc3RhdGUpCi0KIAogIyBGSVhNRTogVGhpcyBj
b21tYW5kIG5lZWRzIHRvIGJlIGJyb3VnaHQgaW50byB0aGUgbW9kZXJuIGFnZSB3aXRoIHN0ZXBz
IGFuZCBDb21taXRJbmZvLgogY2xhc3MgTWFya0J1Z0ZpeGVkKENvbW1hbmQpOgpAQCAtNDU4LDEx
MiArMjQ1LDMgQEAgY2xhc3MgTWFya0J1Z0ZpeGVkKENvbW1hbmQpOgogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgX2xvZy5pbmZvKCJBZGRpbmcgY29tbWVudCB0byBCdWcgJXMgYW5kIG1hcmtp
bmcgYXMgUmVzb2x2ZWQvRml4ZWQuIiAlIGJ1Z19pZCkKICAgICAgICAgICAgIHRvb2wuYnVncy5j
bG9zZV9idWdfYXNfZml4ZWQoYnVnX2lkLCBidWdfY29tbWVudCkKLQotCi0jIEZJWE1FOiBSZXF1
aXJlcyB1bml0IHRlc3QuICBCbG9ja2luZyBpc3N1ZTogdG9vIGNvbXBsZXggZm9yIG5vdy4KLUBE
ZXByZWNhdGVkQ29tbWFuZAotY2xhc3MgQ3JlYXRlQnVnKENvbW1hbmQpOgotICAgIG5hbWUgPSAi
Y3JlYXRlLWJ1ZyIKLSAgICBoZWxwX3RleHQgPSAiQ3JlYXRlIGEgYnVnIGZyb20gbG9jYWwgY2hh
bmdlcyBvciBsb2NhbCBjb21taXRzIgotICAgIGFyZ3VtZW50X25hbWVzID0gIltDT01NSVRJU0hd
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBvcHRpb25zID0gWwotICAgICAg
ICAgICAgc3RlcHMuT3B0aW9ucy5jYywKLSAgICAgICAgICAgIHN0ZXBzLk9wdGlvbnMuY2NfcmFk
YXIsCi0gICAgICAgICAgICBzdGVwcy5PcHRpb25zLmNvbXBvbmVudCwKLSAgICAgICAgICAgIG1h
a2Vfb3B0aW9uKCItLW5vLXByb21wdCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJwcm9t
cHQiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBwcm9tcHQgZm9yIGJ1ZyB0aXRsZSBhbmQg
Y29tbWVudDsgdXNlIGNvbW1pdCBsb2cgaW5zdGVhZC4iKSwKLSAgICAgICAgICAgIG1ha2Vfb3B0
aW9uKCItLW5vLXJldmlldyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJyZXZpZXciLCBk
ZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBtYXJrIHRoZSBwYXRjaCBmb3IgcmV2aWV3LiIpLAot
ICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tcmVxdWVzdC1jb21taXQiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBkZXN0PSJyZXF1ZXN0X2NvbW1pdCIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik1hcmsg
dGhlIHBhdGNoIGFzIG5lZWRpbmcgYXV0by1jb21taXQgYWZ0ZXIgcmV2aWV3LiIpLAotICAgICAg
ICBdCi0gICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgb3B0aW9ucz1vcHRpb25zKQotCi0g
ICAgZGVmIGNyZWF0ZV9idWdfZnJvbV9jb21taXQoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6
Ci0gICAgICAgIGNvbW1pdF9pZHMgPSB0b29sLnNjbSgpLmNvbW1pdF9pZHNfZnJvbV9jb21taXRp
c2hfYXJndW1lbnRzKGFyZ3MpCi0gICAgICAgIGlmIGxlbihjb21taXRfaWRzKSA+IDM6Ci0gICAg
ICAgICAgICBfbG9nLmVycm9yKCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY3JlYXRlIG9uZSBi
dWcgd2l0aCAlcyBwYXRjaGVzPyIgJSBsZW4oY29tbWl0X2lkcykpCi0gICAgICAgICAgICBzeXMu
ZXhpdCgxKQotCi0gICAgICAgIGNvbW1pdF9pZCA9IGNvbW1pdF9pZHNbMF0KLQotICAgICAgICBp
ZiBvcHRpb25zLnByb21wdDoKLSAgICAgICAgICAgIChidWdfdGl0bGUsIGNvbW1lbnRfdGV4dCkg
PSBzZWxmLnByb21wdF9mb3JfYnVnX3RpdGxlX2FuZF9jb21tZW50KCkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gdG9vbC5zY20oKS5jb21taXRfbWVzc2FnZV9m
b3JfbG9jYWxfY29tbWl0KGNvbW1pdF9pZCkKLSAgICAgICAgICAgIGJ1Z190aXRsZSA9IGNvbW1p
dF9tZXNzYWdlLmRlc2NyaXB0aW9uKGxzdHJpcD1UcnVlLCBzdHJpcF91cmw9VHJ1ZSkKLSAgICAg
ICAgICAgIGNvbW1lbnRfdGV4dCA9IGNvbW1pdF9tZXNzYWdlLmJvZHkobHN0cmlwPVRydWUpCi0g
ICAgICAgICAgICBjb21tZW50X3RleHQgKz0gIi0tLVxuIgotICAgICAgICAgICAgY29tbWVudF90
ZXh0ICs9IHRvb2wuc2NtKCkuZmlsZXNfY2hhbmdlZF9zdW1tYXJ5X2Zvcl9jb21taXQoY29tbWl0
X2lkKQotCi0gICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0
PWNvbW1pdF9pZCkKLSAgICAgICAgYnVnX2lkID0gdG9vbC5idWdzLmNyZWF0ZV9idWcoYnVnX3Rp
dGxlLCBjb21tZW50X3RleHQsIG9wdGlvbnMuY29tcG9uZW50LCBkaWZmLCAiUGF0Y2giLCBjYz1v
cHRpb25zLmNjLCBtYXJrX2Zvcl9yZXZpZXc9b3B0aW9ucy5yZXZpZXcsIG1hcmtfZm9yX2NvbW1p
dF9xdWV1ZT1vcHRpb25zLnJlcXVlc3RfY29tbWl0KQotCi0gICAgICAgIGlmIGJ1Z19pZCBhbmQg
bGVuKGNvbW1pdF9pZHMpID4gMToKLSAgICAgICAgICAgIG9wdGlvbnMuYnVnX2lkID0gYnVnX2lk
Ci0gICAgICAgICAgICBvcHRpb25zLm9ic29sZXRlX3BhdGNoZXMgPSBGYWxzZQotICAgICAgICAg
ICAgIyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgdGhyb3VnaCAtLW5vLWNvbW1lbnQgc3dpdGNoIGFz
IHdlbGwuCi0gICAgICAgICAgICBQb3N0Q29tbWl0cy5leGVjdXRlKHNlbGYsIG9wdGlvbnMsIGNv
bW1pdF9pZHNbMTpdLCB0b29sKQotCi0gICAgZGVmIGNyZWF0ZV9idWdfZnJvbV9wYXRjaChzZWxm
LCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgaWYgb3B0aW9ucy5wcm9tcHQ6Ci0gICAg
ICAgICAgICAoYnVnX3RpdGxlLCBjb21tZW50X3RleHQpID0gc2VsZi5wcm9tcHRfZm9yX2J1Z190
aXRsZV9hbmRfY29tbWVudCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21taXRfbWVz
c2FnZSA9IHRvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQob3B0
aW9ucy5naXRfY29tbWl0KQotICAgICAgICAgICAgYnVnX3RpdGxlID0gY29tbWl0X21lc3NhZ2Uu
ZGVzY3JpcHRpb24obHN0cmlwPVRydWUsIHN0cmlwX3VybD1UcnVlKQotICAgICAgICAgICAgY29t
bWVudF90ZXh0ID0gY29tbWl0X21lc3NhZ2UuYm9keShsc3RyaXA9VHJ1ZSkKLQotICAgICAgICBk
aWZmID0gdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2gob3B0aW9ucy5naXRfY29tbWl0KQotICAgICAg
ICB0b29sLmJ1Z3MuY3JlYXRlX2J1ZyhidWdfdGl0bGUsIGNvbW1lbnRfdGV4dCwgb3B0aW9ucy5j
b21wb25lbnQsIGRpZmYsICJQYXRjaCIsIGNjPW9wdGlvbnMuY2MsIG1hcmtfZm9yX3Jldmlldz1v
cHRpb25zLnJldmlldywgbWFya19mb3JfY29tbWl0X3F1ZXVlPW9wdGlvbnMucmVxdWVzdF9jb21t
aXQpCi0KLSAgICBkZWYgcHJvbXB0X2Zvcl9idWdfdGl0bGVfYW5kX2NvbW1lbnQoc2VsZik6Ci0g
ICAgICAgIGJ1Z190aXRsZSA9IFVzZXIucHJvbXB0KCJCdWcgdGl0bGU6ICIpCi0gICAgICAgICMg
RklYTUU6IFVzZXIgc2hvdWxkIHByb3ZpZGUgYSBmdW5jdGlvbiBmb3IgZG9pbmcgdGhpcyBtdWx0
aS1saW5lIHByb21wdC4KLSAgICAgICAgcHJpbnQoIkJ1ZyBjb21tZW50IChoaXQgXkQgb24gYmxh
bmsgbGluZSB0byBlbmQpOiIpCi0gICAgICAgIGxpbmVzID0gc3lzLnN0ZGluLnJlYWRsaW5lcygp
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHN5cy5zdGRpbi5zZWVrKDAsIG9zLlNFRUtfRU5E
KQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgICMgQ3lnd2luIHJhaXNlcyBh
biBJbGxlZ2FsIFNlZWsgKGVycm5vIDI5KSBleGNlcHRpb24gd2hlbiB0aGUgYWJvdmUKLSAgICAg
ICAgICAgICMgc2VlaygpIGNhbGwgaXMgbWFkZS4gSWdub3JpbmcgaXQgc2VlbXMgdG8gY2F1c2Ug
bm8gaGFybS4KLSAgICAgICAgICAgICMgRklYTUU6IEZpZ3VyZSBvdXQgYSB3YXkgdG8gZ2V0IGF2
b2lkIHRoZSBleGNlcHRpb24gaW4gdGhlIGZpcnN0Ci0gICAgICAgICAgICAjIHBsYWNlLgotICAg
ICAgICAgICAgcGFzcwotICAgICAgICBjb21tZW50X3RleHQgPSAiIi5qb2luKGxpbmVzKQotICAg
ICAgICByZXR1cm4gKGJ1Z190aXRsZSwgY29tbWVudF90ZXh0KQotCi0gICAgZGVmIGV4ZWN1dGUo
c2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIGlmIG9wdGlvbnMuY2NfcmFkYXI6
Ci0gICAgICAgICAgICBpZiBvcHRpb25zLmNjOgotICAgICAgICAgICAgICAgIG9wdGlvbnMuY2Mg
PSAid2Via2l0LWJ1Zy1pbXBvcnRlckBncm91cC5hcHBsZS5jb20sJXMiICUgb3B0aW9ucy5jYwot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBvcHRpb25zLmNjID0gIndlYmtpdC1i
dWctaW1wb3J0ZXJAZ3JvdXAuYXBwbGUuY29tIgotICAgICAgICBpZiBsZW4oYXJncyk6Ci0gICAg
ICAgICAgICBpZiAobm90IHRvb2wuc2NtKCkuc3VwcG9ydHNfbG9jYWxfY29tbWl0cygpKToKLSAg
ICAgICAgICAgICAgICBfbG9nLmVycm9yKCJFeHRyYSBhcmd1bWVudHMgbm90IHN1cHBvcnRlZDsg
cGF0Y2ggaXMgdGFrZW4gZnJvbSB3b3JraW5nIGRpcmVjdG9yeS4iKQotICAgICAgICAgICAgICAg
IHN5cy5leGl0KDEpCi0gICAgICAgICAgICBzZWxmLmNyZWF0ZV9idWdfZnJvbV9jb21taXQob3B0
aW9ucywgYXJncywgdG9vbCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuY3JlYXRl
X2J1Z19mcm9tX3BhdGNoKG9wdGlvbnMsIGFyZ3MsIHRvb2wpCi0KLQotQERlcHJlY2F0ZWRDb21t
YW5kCi1jbGFzcyBXUFRDaGFuZ2VFeHBvcnQoQWJzdHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQp
OgotICAgIG5hbWUgPSAid3B0LWNoYW5nZS1leHBvcnQiCi0gICAgaGVscF90ZXh0ID0gIk9wZW5z
IGEgcHVsbCByZXF1ZXN0IHRvIHN5bmNocm9uaXplIGFueSBjaGFuZ2VzIGluIHRoZSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzIGRpcmVjdG9yeSIKLSAgICBhcmd1
bWVudF9uYW1lcyA9ICJbQlVHSURdIgotICAgIHN0ZXBzID0gWwotICAgICAgICBzdGVwcy5XUFRD
aGFuZ2VFeHBvcnQsCi0gICAgXQotCi0gICAgbG9uZ19oZWxwID0gIiIiT3BlbnMgYSBwdWxsIHJl
cXVlc3QgdG8gdGhlIHczYy93ZWItcGxhdGZvcm0tdGVzdHMKLSAgICBnaXRodWIgcmVwbyBmb3Ig
YW55IGNoYW5nZXMgaW4gdGhlCi0gICAgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cyBkaXJlY3RvcnkuIFRoaXMgc3RlcAotICAgIHdpbGwgbm9vcCBpZiB0aGVyZSBh
cmUgbm8gY2hhbmdlcyBpbiB0aGUgd2ViLXBsYXRmb3JtLXRlc3RzIGRpcmVjdG9yeS4KLSAgICBU
aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIHByb3ZpZGUgYSBnaXRodWIgdXNlcm5hbWUgYW5k
IE9BdXRoIHRva2VuCi0gICAgdGhlIGZpcnN0IHRpbWUgdGhpcyBpcyBydW4uCi0gICAgIiIiCi0K
LSAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAg
ICAgIHN0YXRlID0ge30KLSAgICAgICAgc3RhdGVbImJ1Z19pZCJdID0gc2VsZi5fYnVnX2lkKG9w
dGlvbnMsIGFyZ3MsIHRvb2wsIHN0YXRlKQotICAgICAgICByZXR1cm4gc3RhdGUKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWRfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkX3VuaXR0ZXN0
LnB5CmluZGV4IDQ3ZjMxYzRiYjNlNWU2NTJmZTZiZjJhNTQ2NzQ5NTI2OTkxNmMwZjguLjEwNTA4
NWVhZjEwZDAwYzllOGM4MjQyYmMzZTk4NjZlOWI5MGJlNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWRfdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZF91bml0dGVzdC5weQpAQCAt
MzYsMzAgKzM2LDYgQEAgZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IG1vY2tzCiAKIAogY2xhc3Mg
VXBsb2FkQ29tbWFuZHNUZXN0KENvbW1hbmRzVGVzdCk6Ci0gICAgZGVmIHRlc3RfY29tbWl0X21l
c3NhZ2VfZm9yX2N1cnJlbnRfZGlmZihzZWxmKToKLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkK
LSAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlRoaXMgaXMgYSBmYWtlIGNvbW1pdCBtZXNzYWdl
IHRoYXQgaXMgYXQgbGVhc3QgNTAgY2hhcmFjdGVycy5cbiIKLSAgICAgICAgc2VsZi5hc3NlcnRf
ZXhlY3V0ZV9vdXRwdXRzKENvbW1pdE1lc3NhZ2VGb3JDdXJyZW50RGlmZigpLCBbXSwgZXhwZWN0
ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCwgdG9vbD10b29sKQotCi0gICAgZGVmIHRlc3RfY2xl
YW5fcGVuZGluZ19jb21taXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0
cHV0cyhDbGVhblBlbmRpbmdDb21taXQoKSwgW10pCi0KLSAgICBkZWYgdGVzdF9hc3NpZ25fdG9f
Y29tbWl0dGVyKHNlbGYpOgotICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBleHBl
Y3RlZF9sb2dzID0gIiIiV2FybmluZywgYXR0YWNobWVudCAxMDAwMSBvbiBidWcgNTAwMDAgaGFz
IGludmFsaWQgY29tbWl0dGVyIChub24tY29tbWl0dGVyQGV4YW1wbGUuY29tKQotTU9DSyByZWFz
c2lnbl9idWc6IGJ1Z19pZD01MDAwMCwgYXNzaWduZWU9YXBAd2Via2l0Lm9yZwotLS0gQmVnaW4g
Y29tbWVudCAtLQotQXR0YWNobWVudCAxMDAwMSB3YXMgcG9zdGVkIGJ5IGEgY29tbWl0dGVyIGFu
ZCBoYXMgcmV2aWV3KywgYXNzaWduaW5nIHRvIEFsZXhleSBQcm9za3VyeWFrb3YgZm9yIGNvbW1p
dC4KLS0tIEVuZCBjb21tZW50IC0tCi1CdWcgNTAwMDMgaXMgYWxyZWFkeSBhc3NpZ25lZCB0byBm
b29AZm9vLmNvbSAoTm9uZSkuCi1CdWcgNTAwMDIgaGFzIG5vIG5vbi1vYnNvbGV0ZSBwYXRjaGVz
LCBpZ25vcmluZy4KLSIiIgotICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoQXNz
aWduVG9Db21taXR0ZXIoKSwgW10sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncywgdG9vbD10
b29sKQotCi0gICAgZGVmIHRlc3Rfb2Jzb2xldGVfYXR0YWNobWVudHMoc2VsZik6Ci0gICAgICAg
IGV4cGVjdGVkX2xvZ3MgPSAiT2Jzb2xldGluZyAyIG9sZCBwYXRjaGVzIG9uIGJ1ZyA1MDAwMFxu
IgotICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoT2Jzb2xldGVBdHRhY2htZW50
cygpLCBbNTAwMDBdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCi0KICAgICBkZWYgdGVz
dF9wb3N0KHNlbGYpOgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoKQogICAgICAgICBv
cHRpb25zLmNjID0gTm9uZQpAQCAtODEsMjQgKzU3LDYgQEAgTU9DSzogdXNlci5vcGVuX3VybDog
aHR0cDovL2V4YW1wbGUuY29tLzUwMDAwCiAiIiIKICAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0
ZV9vdXRwdXRzKFBvc3QoKSwgWzUwMDAwXSwgb3B0aW9ucz1vcHRpb25zLCBleHBlY3RlZF9sb2dz
PWV4cGVjdGVkX2xvZ3MpCiAKLSAgICBkZWYgdGVzdF9hdHRhY2hfdG9fYnVnKHNlbGYpOgotICAg
ICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoKQotICAgICAgICBvcHRpb25zLmNvbW1lbnQgPSAi
ZXh0cmEgY29tbWVudCIKLSAgICAgICAgb3B0aW9ucy5kZXNjcmlwdGlvbiA9ICJmaWxlIGRlc2Ny
aXB0aW9uIgotICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiTU9DSyBhZGRfYXR0YWNobWVudF90
b19idWc6IGJ1Z19pZD01MDAwMCwgZGVzY3JpcHRpb249ZmlsZSBkZXNjcmlwdGlvbiBmaWxlbmFt
ZT1Ob25lIG1pbWV0eXBlPU5vbmUKLS0tIEJlZ2luIGNvbW1lbnQgLS0KLWV4dHJhIGNvbW1lbnQK
LS0tIEVuZCBjb21tZW50IC0tCi0iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRw
dXRzKEF0dGFjaFRvQnVnKCksIFs1MDAwMCwgInBhdGgvdG8vZmlsZS50eHQiLCAiZmlsZSBkZXNj
cmlwdGlvbiJdLCBvcHRpb25zPW9wdGlvbnMsIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykK
LQotICAgIGRlZiB0ZXN0X2F0dGFjaF90b19idWdfbm9fZGVzY3JpcHRpb25fb3JfY29tbWVudChz
ZWxmKToKLSAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKLSAgICAgICAgb3B0aW9ucy5j
b21tZW50ID0gTm9uZQotICAgICAgICBvcHRpb25zLmRlc2NyaXB0aW9uID0gTm9uZQotICAgICAg
ICBleHBlY3RlZF9sb2dzID0gIk1PQ0sgYWRkX2F0dGFjaG1lbnRfdG9fYnVnOiBidWdfaWQ9NTAw
MDAsIGRlc2NyaXB0aW9uPWZpbGUudHh0IGZpbGVuYW1lPU5vbmUgbWltZXR5cGU9Tm9uZVxuIgot
ICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoQXR0YWNoVG9CdWcoKSwgWzUwMDAw
LCAicGF0aC90by9maWxlLnR4dCJdLCBvcHRpb25zPW9wdGlvbnMsIGV4cGVjdGVkX2xvZ3M9ZXhw
ZWN0ZWRfbG9ncykKLQogICAgIGRlZiB0ZXN0X2xhbmRfc2FmZWx5KHNlbGYpOgogICAgICAgICBl
eHBlY3RlZF9sb2dzID0gIiIiT2Jzb2xldGluZyAyIG9sZCBwYXRjaGVzIG9uIGJ1ZyA1MDAwMAog
TU9DSyByZWFzc2lnbl9idWc6IGJ1Z19pZD01MDAwMCwgYXNzaWduZWU9Tm9uZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>