<?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>145398</bug_id>
          
          <creation_ts>2015-05-26 16:57:37 -0700</creation_ts>
          <short_desc>run-benchmark should print out the results</short_desc>
          <delta_ts>2015-05-29 16:04:02 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>144842</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>glenn</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1097540</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-05-26 16:57:37 -0700</bug_when>
    <thetext>run-benchmark should report the final results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097542</commentid>
    <comment_count>1</comment_count>
      <attachid>253760</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-05-26 17:04:59 -0700</bug_when>
    <thetext>Created attachment 253760
Adds the support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097543</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-05-26 17:05:47 -0700</bug_when>
    <thetext>Sample output:

SunSpider:Time:Total: 157ms stdev=23.4%
         3d-cube:Time: 6.8ms stdev=17.9%
         3d-morph:Time: 24ms stdev=148.9%
         3d-raytrace:Time: 7.0ms stdev=10.9%
         access-binary-trees:Time: 1.2ms stdev=35.5%
         access-fannkuch:Time: 6.2ms stdev=23.7%
         access-nbody:Time: 1.9ms stdev=16.2%
         access-nsieve:Time: 2.2ms stdev=18.7%
         bitops-3bit-bits-in-byte:Time: 1.1ms stdev=21.3%
         bitops-bits-in-byte:Time: 2.9ms stdev=12.9%
         bitops-bitwise-and:Time: 3.6ms stdev=36.9%
         bitops-nsieve-bits:Time: 3.0ms stdev=18.7%
         controlflow-recursive:Time: 1.7ms stdev=27.7%
         crypto-aes:Time: 3.8ms stdev=20.2%
         crypto-md5:Time: 2.8ms stdev=14.7%
         crypto-sha1:Time: 3.2ms stdev=16.3%
         date-format-tofte:Time: 6.0ms stdev=17.1%
         date-format-xparb:Time: 5.8ms stdev=14.8%
         math-cordic:Time: 2.6ms stdev=22.2%
         math-partial-sums:Time: 11ms stdev=46.6%
         math-spectral-norm:Time: 1.9ms stdev=23.5%
         regexp-dna:Time: 5.5ms stdev=17.0%
         string-base64:Time: 5.0ms stdev=13.0%
         string-fasta:Time: 11ms stdev=10.2%
         string-tagcloud:Time: 14ms stdev=15.5%
         string-unpack-code:Time: 15ms stdev=10.2%
         string-validate-input:Time: 8.1ms stdev=27.7%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097549</commentid>
    <comment_count>3</comment_count>
      <attachid>253762</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-05-26 17:14:24 -0700</bug_when>
    <thetext>Created attachment 253762
Rebased for ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098235</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-05-29 16:04:02 -0700</bug_when>
    <thetext>Committed r185014: &lt;http://trac.webkit.org/changeset/185014&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253760</attachid>
            <date>2015-05-26 17:04:59 -0700</date>
            <delta_ts>2015-05-26 17:14:18 -0700</delta_ts>
            <desc>Adds the support</desc>
            <filename>bug-145398-20150526170448.patch</filename>
            <type>text/plain</type>
            <size>36627</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NDI3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGM0OTZkNWUyMDJlMzk1MWYyMDgzY2Q4ZTNjZThhMmU4
YTQyZmZkZi4uMWY5MmJmMWY1OTkzNjhlMzU1MzRhNzM2OWUxOTNjOTYzZWQ4YjdiOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1
IEBACisyMDE1LTA1LTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAg
ICAgIHJ1bi1iZW5jaG1hcmsgc2hvdWxkIHByaW50IG91dCB0aGUgcmVzdWx0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mzk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQmVuY2htYXJrUmVz
dWx0cyB0byBjb21wdXRlIGFuZCBmb3JtYXQgdGhlIGFnZ3JlZ2F0ZWQgdmFsdWVzLiBJdCBhbHNv
IGRvZXMgdGhlIHN5bnRheC9zZW1hbnRpYyBjaGVjaworICAgICAgICBvZiB0aGUgb3V0cHV0IHRv
IGNhdGNoIGVhcmx5IGVycm9ycy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVuY2ht
YXJrX3J1bm5lci9iZW5jaG1hcmtfcmVzdWx0cy5weTogQWRkZWQuCisgICAgICAgIChCZW5jaG1h
cmtSZXN1bHRzKTogQWRkZWQuCisgICAgICAgIChCZW5jaG1hcmtSZXN1bHRzLl9faW5pdF9fKTog
QWRkZWQuCisgICAgICAgIChCZW5jaG1hcmtSZXN1bHRzLmZvcm1hdCk6IEFkZGVkLgorICAgICAg
ICAoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3Rlc3RzKTogQWRkZWQuIFVzZWQgYnkgQmVuY2ht
YXJrUmVzdWx0cy5mb3JtYXQuCisgICAgICAgIChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFs
dWVzKTogRm9ybWF0cyBhIGxpc3Qgb2YgdmFsdWVzIG1lYXN1cmVkIGZvciBhIGdpdmVuIG1ldHJp
YyBvbiBhIGdpdmVuIHRlc3QuCisgICAgICAgIFVzZXMgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZp
YXRpb24gdG8gY29tcHV0ZSB0aGUgc2lnbmlmaWNhbnQgZmlndXJlcyBmb3IgdGhlIHZhbHVlLgor
ICAgICAgICAoQmVuY2htYXJrUmVzdWx0cy5fdW5pdF9mcm9tX21ldHJpYyk6IEFkZGVkLgorICAg
ICAgICAoQmVuY2htYXJrUmVzdWx0cy5fYWdncmVnYXRlX3Jlc3VsdHMpOiBBZGRlZC4KKyAgICAg
ICAgKEJlbmNobWFya1Jlc3VsdHMuX2FnZ3JlZ2F0ZV9yZXN1bHRzX2Zvcl90ZXN0KTogQWRkZWQu
CisgICAgICAgIChCZW5jaG1hcmtSZXN1bHRzLl9mbGF0dGVuX2xpc3QpOiBBZGRlZC4KKyAgICAg
ICAgKEJlbmNobWFya1Jlc3VsdHMuX3N1YnRlc3RfdmFsdWVzX2J5X2NvbmZpZ19pdGVyYXRpb24p
OiBBZGRlZC4gT3JnYW5pemVzIHZhbHVlcyBtZWFzdXJlZCBmb3Igc3VidGVzdHMKKyAgICAgICAg
YnkgdGhlIGl0ZXJhdGlvbiBudW1iZXIgc28gdGhhdCBpLXRoIGFycmF5IGNvbnRhaW5zIHZhbHVl
cyBmb3IgYWxsIHN1YnRlc3RzIGF0IGktdGggaXRlcmF0aW9uLgorICAgICAgICAoQmVuY2htYXJr
UmVzdWx0cy5fYWdncmVnYXRlX3ZhbHVlcyk6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrUmVz
dWx0cy5fbGludF9yZXN1bHRzKTogQWRkZWQuCisgICAgICAgIChCZW5jaG1hcmtSZXN1bHRzLl9s
aW50X3N1YnRlc3RfcmVzdWx0cyk6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrUmVzdWx0cy5f
bGludF9hZ2dyZWdhdG9yX2xpc3QpOiBBZGRlZC4KKyAgICAgICAgKEJlbmNobWFya1Jlc3VsdHMu
X2xpbnRfY29uZmlndXJhdGlvbik6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrUmVzdWx0cy5f
bGludF92YWx1ZXMpOiBBZGRlZC4KKyAgICAgICAgKEJlbmNobWFya1Jlc3VsdHMuX2lzX251bWVy
aWMpOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIv
YmVuY2htYXJrX3Jlc3VsdHNfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJr
UmVzdWx0c1Rlc3QpOgorICAgICAgICAoQmVuY2htYXJrUmVzdWx0c1Rlc3QudGVzdF9pbml0KToK
KyAgICAgICAgKEJlbmNobWFya1Jlc3VsdHNUZXN0LnRlc3RfZm9ybWF0KToKKyAgICAgICAgKHRl
c3RfZm9ybWF0X3ZhbHVlc193aXRoX2xhcmdlX2Vycm9yKToKKyAgICAgICAgKHRlc3RfZm9ybWF0
X3ZhbHVlc193aXRoX3NtYWxsX2Vycm9yKToKKyAgICAgICAgKHRlc3RfZm9ybWF0X3ZhbHVlc193
aXRoX3RpbWUpOgorICAgICAgICAodGVzdF9mb3JtYXRfdmFsdWVzX3dpdGhfbm9fZXJyb3IpOgor
ICAgICAgICAodGVzdF9mb3JtYXRfdmFsdWVzX3dpdGhfc21hbGxfZGlmZmVyZW5jZSk6CisgICAg
ICAgICh0ZXN0X2FnZ3JlZ2F0ZV9yZXN1bHRzKToKKyAgICAgICAgKHRlc3RfYWdncmVnYXRlX3Jl
c3VsdHNfd2l0aF9ncm9wdXMpOgorICAgICAgICAodGVzdF9hZ2dyZWdhdGVfbmVzdGVkX3Jlc3Vs
dHMpOgorICAgICAgICAodGVzdF9saW50X3Jlc3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVubmVyLnB5OgorICAgICAgICAoQmVu
Y2htYXJrUnVubmVyLmV4ZWN1dGUpOiBBZGRlZCBhIGNhbGwgdG8gc2hvd19yZXN1bHRzCisgICAg
ICAgIChCZW5jaG1hcmtSdW5uZXIud3JhcCk6IE9ubHkgZHVtcCB0aGUgbWVyZ2VkIEpTT04gd2hl
biBkZWJ1Z2dpbmcuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIuc2hvd19yZXN1bHRzKTogQWRk
ZWQuCisKKzIwMTUtMDUtMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgcnVuX2JlbmNobWFyayBzaG91bGQgaGF2ZSBhbiBvcHRpb24gdG8gc3BlY2lmeSB0aGUg
bnVtYmVyIG9mIHJ1bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NTA5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIC0tY291bnQgb3B0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tYmVu
Y2htYXJrOgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5j
aG1hcmtfcnVubmVyL2JlbmNobWFya19ydW5uZXIucHk6CisgICAgICAgIChCZW5jaG1hcmtSdW5u
ZXIuX19pbml0X18pOgorCiAyMDE1LTA1LTE1ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUZW1wb3JhcmlseSBkaXNhYmxlIGZhaWxpbmcgQVBJ
IHRlc3QuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1iZW5jaG1hcmsgYi9Ub29scy9T
Y3JpcHRzL3J1bi1iZW5jaG1hcmsKaW5kZXggNzdmYzQ3MjQ0NTdhMWVhNjlhMGI1MWFiNTY5MTc0
YTMyZDMzNGFiOS4uMTYyNTVkYTY1MjZjMzcxYWE3Yzg1Yjk4ZjI3YWQ4ZDI1ZmI0YWY4MyAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tYmVuY2htYXJrCisrKyBiL1Rvb2xzL1NjcmlwdHMv
cnVuLWJlbmNobWFyawpAQCAtMjcsNiArMjcsNyBAQCBkZWYgbWFpbigpOgogICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoJy0tYnJvd3NlcicsIGRlc3Q9J2Jyb3dzZXInLCByZXF1aXJlZD1UcnVlLCBj
aG9pY2VzPUJyb3dzZXJEcml2ZXJGYWN0b3J5LmF2YWlsYWJsZV9icm93c2VycygpKQogICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoJy0tZGVidWcnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoJy0tbG9jYWwtY29weScsIGRlc3Q9J2xvY2FsQ29weScsIGhlbHA9
J1BhdGggdG8gYSBsb2NhbCBjb3B5IG9mIHRoZSBiZW5jaG1hcmsuIGUuZy4gUGVyZm9ybWFuY2VU
ZXN0cy9TdW5TcGlkZXIvJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvdW50JywgZGVz
dD0nY291bnRPdmVycmlkZScsIHR5cGU9aW50LCBoZWxwPSdOdW1iZXIgb2YgdGltZXMgdG8gcnVu
IHRoZSBiZW5jaG1hcmsuIGUuZy4gNScpCiAgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkK
IAogICAgIGlmIGFyZ3MuZGVidWc6CkBAIC0zNSw3ICszNiw3IEBAIGRlZiBtYWluKCk6CiAgICAg
X2xvZy5kZWJ1ZygnXHRvdXRwdXQgZmlsZSBuYW1lXHQ6ICVzJyAlIGFyZ3Mub3V0cHV0KQogICAg
IF9sb2cuZGVidWcoJ1x0YnVpbGQgZGlyZWN0b3J5XHQ6ICVzJyAlIGFyZ3MuYnVpbGREaXIpCiAg
ICAgX2xvZy5kZWJ1ZygnXHRwbGFuIG5hbWVcdDogJXMnLCBhcmdzLnBsYW4pCi0gICAgcnVubmVy
ID0gQmVuY2htYXJrUnVubmVyKGFyZ3MucGxhbiwgYXJncy5sb2NhbENvcHksIGFyZ3MuYnVpbGRE
aXIsIGFyZ3Mub3V0cHV0LCBhcmdzLnBsYXRmb3JtLCBhcmdzLmJyb3dzZXIpCisgICAgcnVubmVy
ID0gQmVuY2htYXJrUnVubmVyKGFyZ3MucGxhbiwgYXJncy5sb2NhbENvcHksIGFyZ3MuY291bnRP
dmVycmlkZSwgYXJncy5idWlsZERpciwgYXJncy5vdXRwdXQsIGFyZ3MucGxhdGZvcm0sIGFyZ3Mu
YnJvd3NlcikKICAgICByZXR1cm4gcnVubmVyLmV4ZWN1dGUoKQogCiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcmVzdWx0cy5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcmVz
dWx0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZmMwMTMxOGVjMWFhZDhkYjAxMzE1Mzc2ZGU1M2VhMjJiYzQ1
MmEyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtf
cnVubmVyL2JlbmNobWFya19yZXN1bHRzLnB5CkBAIC0wLDAgKzEsMjQ1IEBACisjIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBqc29uCitpbXBvcnQgbWF0aAor
aW1wb3J0IHJlCisKKworY2xhc3MgQmVuY2htYXJrUmVzdWx0cyhvYmplY3QpOgorCisgICAgYWdn
cmVnYXRvcnMgPSB7CisgICAgICAgICdUb3RhbCc6IChsYW1iZGEgdmFsdWVzOiBzdW0odmFsdWVz
KSksCisgICAgICAgICdBcml0aG1ldGljJzogKGxhbWJkYSB2YWx1ZXM6IHN1bSh2YWx1ZXMpIC8g
bGVuKHZhbHVlcykpLAorICAgICAgICAnR2VvbWV0cmljJzogKGxhbWJkYSB2YWx1ZXM6IG1hdGgu
ZXhwKHN1bShtYXAobWF0aC5sb2csIHZhbHVlcykpIC8gbGVuKHZhbHVlcykpKSwKKyAgICB9Cisg
ICAgbWV0cmljX3RvX3VuaXQgPSB7CisgICAgICAgICdGcmFtZVJhdGUnOiAnZnBzJywKKyAgICAg
ICAgJ1J1bnMnOiAnL3MnLAorICAgICAgICAnVGltZSc6ICdtcycsCisgICAgICAgICdEdXJhdGlv
bic6ICdtcycsCisgICAgICAgICdNYWxsb2MnOiAnQicsCisgICAgICAgICdIZWFwJzogJ0InLAor
ICAgICAgICAnQWxsb2NhdGlvbnMnOiAnQicsCisgICAgICAgICdTY29yZSc6ICdwdCcsCisgICAg
fQorICAgIFNJX3ByZWZpeGVzID0gWyduJywgJ3UnLCAnbScsICcnLCAnSycsICdNJywgJ0cnLCAn
VCcsICdQJywgJ0UnXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlc3VsdHMpOgorICAgICAg
ICBzZWxmLl9saW50X3Jlc3VsdHMocmVzdWx0cykKKyAgICAgICAgc2VsZi5fcmVzdWx0cyA9IHNl
bGYuX2FnZ3JlZ2F0ZV9yZXN1bHRzKHJlc3VsdHMpCisKKyAgICBkZWYgZm9ybWF0KHNlbGYpOgor
ICAgICAgICByZXR1cm4gc2VsZi5fZm9ybWF0X3Rlc3RzKHNlbGYuX3Jlc3VsdHMpCisKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgX2Zvcm1hdF90ZXN0cyhzZWxmLCB0ZXN0cywgaW5kZW50PScn
KToKKyAgICAgICAgb3V0cHV0ID0gJycKKyAgICAgICAgY29uZmlnX25hbWUgPSAnY3VycmVudCcK
KyAgICAgICAgZm9yIHRlc3RfbmFtZSBpbiBzb3J0ZWQodGVzdHMua2V5cygpKToKKyAgICAgICAg
ICAgIGlzX2ZpcnN0ID0gVHJ1ZQorICAgICAgICAgICAgdGVzdCA9IHRlc3RzW3Rlc3RfbmFtZV0K
KyAgICAgICAgICAgIG1ldHJpY3MgPSB0ZXN0LmdldCgnbWV0cmljcycsIHt9KQorICAgICAgICAg
ICAgZm9yIG1ldHJpY19uYW1lIGluIHNvcnRlZChtZXRyaWNzLmtleXMoKSk6CisgICAgICAgICAg
ICAgICAgbWV0cmljID0gbWV0cmljc1ttZXRyaWNfbmFtZV0KKyAgICAgICAgICAgICAgICBmb3Ig
YWdncmVnYXRvcl9uYW1lIGluIHNvcnRlZChtZXRyaWMua2V5cygpKToKKyAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0ICs9IGluZGVudAorICAgICAgICAgICAgICAgICAgICBpZiBpc19maXJzdDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSB0ZXN0X25hbWUKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlzX2ZpcnN0ID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSAnICcgKiBsZW4odGVzdF9uYW1lKQor
ICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJzonICsgbWV0cmljX25hbWUgKyAnOicKKyAg
ICAgICAgICAgICAgICAgICAgaWYgYWdncmVnYXRvcl9uYW1lOgorICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0ICs9IGFnZ3JlZ2F0b3JfbmFtZSArICc6JworICAgICAgICAgICAgICAgICAg
ICBvdXRwdXQgKz0gJyAnICsgc2VsZi5fZm9ybWF0X3ZhbHVlcyhtZXRyaWNfbmFtZSwgbWV0cmlj
W2FnZ3JlZ2F0b3JfbmFtZV1bY29uZmlnX25hbWVdKSArICdcbicKKyAgICAgICAgICAgIGlmICd0
ZXN0cycgaW4gdGVzdDoKKyAgICAgICAgICAgICAgICBvdXRwdXQgKz0gc2VsZi5fZm9ybWF0X3Rl
c3RzKHRlc3RbJ3Rlc3RzJ10sIGluZGVudD0oaW5kZW50ICsgJyAnICogbGVuKHRlc3RfbmFtZSkp
KQorICAgICAgICByZXR1cm4gb3V0cHV0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2Zv
cm1hdF92YWx1ZXMoY2xzLCBtZXRyaWNfbmFtZSwgdmFsdWVzKToKKyAgICAgICAgdmFsdWVzID0g
bWFwKGZsb2F0LCB2YWx1ZXMpCisgICAgICAgIHRvdGFsID0gc3VtKHZhbHVlcykKKyAgICAgICAg
bWVhbiA9IHRvdGFsIC8gbGVuKHZhbHVlcykKKyAgICAgICAgc3F1YXJlX3N1bSA9IHN1bShtYXAo
bGFtYmRhIHg6IHggKiB4LCB2YWx1ZXMpKQorICAgICAgICBzYW1wbGVfY291bnQgPSBsZW4odmFs
dWVzKQorCisgICAgICAgICMgV2l0aCBzdW0gYW5kIHN1bSBvZiBzcXVhcmVzLCB3ZSBjYW4gY29t
cHV0ZSB0aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbiBpbiBPKDEpLgorICAgICAgICAjIFNl
ZSBodHRwczovL3JuaXdhLmNvbS8yMDEyLTExLTEwL3NhbXBsZS1zdGFuZGFyZC1kZXZpYXRpb24t
aW4tdGVybXMtb2Ytc3VtLWFuZC1zcXVhcmUtc3VtLW9mLXNhbXBsZXMvCisgICAgICAgIGlmIHNh
bXBsZV9jb3VudCA8PSAxOgorICAgICAgICAgICAgc2FtcGxlX3N0ZGV2ID0gMAorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgc2FtcGxlX3N0ZGV2ID0gbWF0aC5zcXJ0KHNxdWFyZV9zdW0gLyAo
c2FtcGxlX2NvdW50IC0gMSkgLSB0b3RhbCAqIHRvdGFsIC8gKHNhbXBsZV9jb3VudCAtIDEpIC8g
c2FtcGxlX2NvdW50KQorCisgICAgICAgIHVuaXQgPSBjbHMuX3VuaXRfZnJvbV9tZXRyaWMobWV0
cmljX25hbWUpCisKKyAgICAgICAgaWYgdW5pdCA9PSAnbXMnOgorICAgICAgICAgICAgdW5pdCA9
ICdzJworICAgICAgICAgICAgbWVhbiA9IGZsb2F0KG1lYW4pIC8gMTAwMAorICAgICAgICAgICAg
c2FtcGxlX3N0ZGV2IC89IDEwMDAKKworICAgICAgICBiYXNlID0gMTAyNCBpZiB1bml0ID09ICdC
JyBlbHNlIDEwMDAKKyAgICAgICAgdmFsdWVfc2lnX2ZpZyA9IDEgLSBtYXRoLmZsb29yKG1hdGgu
bG9nMTAoc2FtcGxlX3N0ZGV2IC8gbWVhbikpIGlmIHNhbXBsZV9zdGRldiBlbHNlIDMKKyAgICAg
ICAgU0lfbWFnbml0dWRlID0gbWF0aC5mbG9vcihtYXRoLmxvZyhtZWFuLCBiYXNlKSkKKworICAg
ICAgICBzY2FsZWRfbWVhbiA9IG1lYW4gKiBtYXRoLnBvdyhiYXNlLCAtU0lfbWFnbml0dWRlKQor
ICAgICAgICBTSV9wcmVmaXggPSBjbHMuU0lfcHJlZml4ZXNbaW50KFNJX21hZ25pdHVkZSkgKyAz
XQorCisgICAgICAgIG5vbl9mbG9hdGluZ19kaWdpdHMgPSAxICsgbWF0aC5mbG9vcihtYXRoLmxv
ZzEwKHNjYWxlZF9tZWFuKSkKKyAgICAgICAgZmxvYXRpbmdfcG9pbnRzX2NvdW50ID0gbWF4KDAs
IHZhbHVlX3NpZ19maWcgLSBub25fZmxvYXRpbmdfZGlnaXRzKQorICAgICAgICByZXR1cm4gKCd7
bWVhbjouJyArIHN0cihpbnQoZmxvYXRpbmdfcG9pbnRzX2NvdW50KSkgKyAnZn17cHJlZml4fXt1
bml0fSBzdGRldj17ZGVsdGE6LjElfScpLmZvcm1hdCgKKyAgICAgICAgICAgIG1lYW49c2NhbGVk
X21lYW4sIGRlbHRhPXNhbXBsZV9zdGRldiAvIG1lYW4sIHByZWZpeD1TSV9wcmVmaXgsIHVuaXQ9
dW5pdCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdW5pdF9mcm9tX21ldHJpYyhjbHMs
IG1ldHJpY19uYW1lKToKKyAgICAgICAgIyBGSVhNRTogRGV0ZWN0IHVua25vd24gbWV0dHJpYyBu
YW1lcworICAgICAgICBzdWZmaXggPSByZS5tYXRjaChyJy4qPyhbQS16XVthLXpdK3xGcmFtZVJh
dGUpJCcsIG1ldHJpY19uYW1lKQorICAgICAgICByZXR1cm4gY2xzLm1ldHJpY190b191bml0W3N1
ZmZpeC5ncm91cCgxKV0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfYWdncmVnYXRlX3Jl
c3VsdHMoY2xzLCB0ZXN0cyk6CisgICAgICAgIHJlc3VsdHMgPSB7fQorICAgICAgICBmb3IgdGVz
dF9uYW1lLCB0ZXN0IGluIHRlc3RzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgcmVzdWx0c1t0
ZXN0X25hbWVdID0gY2xzLl9hZ2dyZWdhdGVfcmVzdWx0c19mb3JfdGVzdCh0ZXN0KQorICAgICAg
ICByZXR1cm4gcmVzdWx0cworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9hZ2dyZWdhdGVf
cmVzdWx0c19mb3JfdGVzdChjbHMsIHRlc3QpOgorICAgICAgICBzdWJ0ZXN0X3Jlc3VsdHMgPSBj
bHMuX2FnZ3JlZ2F0ZV9yZXN1bHRzKHRlc3RbJ3Rlc3RzJ10pIGlmICd0ZXN0cycgaW4gdGVzdCBl
bHNlIHt9CisgICAgICAgIHJlc3VsdHMgPSB7fQorICAgICAgICBmb3IgbWV0cmljX25hbWUsIG1l
dHJpYyBpbiB0ZXN0WydtZXRyaWNzJ10uaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZShtZXRyaWMsIGxpc3QpOgorICAgICAgICAgICAgICAgIHJlc3VsdHNbbWV0cmlj
X25hbWVdID0ge05vbmU6IHt9fQorICAgICAgICAgICAgICAgIGZvciBjb25maWdfbmFtZSwgdmFs
dWVzIGluIG1ldHJpYy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tt
ZXRyaWNfbmFtZV1bTm9uZV1bY29uZmlnX25hbWVdID0gY2xzLl9mbGF0dGVuX2xpc3QodmFsdWVz
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGFnZ3JlZ2F0b3JfbGlz
dCA9IG1ldHJpYworICAgICAgICAgICAgcmVzdWx0c1ttZXRyaWNfbmFtZV0gPSB7fQorICAgICAg
ICAgICAgZm9yIGFnZ3JlZ2F0b3IgaW4gYWdncmVnYXRvcl9saXN0OgorICAgICAgICAgICAgICAg
IHZhbHVlc19ieV9jb25maWdfaXRlcmF0aW9uID0gY2xzLl9zdWJ0ZXN0X3ZhbHVlc19ieV9jb25m
aWdfaXRlcmF0aW9uKHN1YnRlc3RfcmVzdWx0cywgbWV0cmljX25hbWUsIGFnZ3JlZ2F0b3IpCisg
ICAgICAgICAgICAgICAgZm9yIGNvbmZpZ19uYW1lLCB2YWx1ZXNfYnlfaXRlcmF0aW9uIGluIHZh
bHVlc19ieV9jb25maWdfaXRlcmF0aW9uLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgICAgICAg
ICByZXN1bHRzW21ldHJpY19uYW1lXS5zZXRkZWZhdWx0KGFnZ3JlZ2F0b3IsIHt9KQorICAgICAg
ICAgICAgICAgICAgICByZXN1bHRzW21ldHJpY19uYW1lXVthZ2dyZWdhdG9yXVtjb25maWdfbmFt
ZV0gPSBbY2xzLl9hZ2dyZWdhdGVfdmFsdWVzKGFnZ3JlZ2F0b3IsIHZhbHVlcykgZm9yIHZhbHVl
cyBpbiB2YWx1ZXNfYnlfaXRlcmF0aW9uXQorCisgICAgICAgIHJldHVybiB7J21ldHJpY3MnOiBy
ZXN1bHRzLCAndGVzdHMnOiBzdWJ0ZXN0X3Jlc3VsdHN9CisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgX2ZsYXR0ZW5fbGlzdChjbHMsIG5lc3RlZF9saXN0KToKKyAgICAgICAgZmxhdHRlbmVk
X2xpc3QgPSBbXQorICAgICAgICBmb3IgaXRlbSBpbiBuZXN0ZWRfbGlzdDoKKyAgICAgICAgICAg
IGlmIGlzaW5zdGFuY2UoaXRlbSwgbGlzdCk6CisgICAgICAgICAgICAgICAgZmxhdHRlbmVkX2xp
c3QgKz0gY2xzLl9mbGF0dGVuX2xpc3QoaXRlbSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgZmxhdHRlbmVkX2xpc3QuYXBwZW5kKGl0ZW0pCisgICAgICAgIHJldHVybiBmbGF0
dGVuZWRfbGlzdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9zdWJ0ZXN0X3ZhbHVlc19i
eV9jb25maWdfaXRlcmF0aW9uKGNscywgc3VidGVzdF9yZXN1bHRzLCBtZXRyaWNfbmFtZSwgYWdn
cmVnYXRvcik6CisgICAgICAgIHZhbHVlc19ieV9jb25maWdfaXRlcmF0aW9uID0ge30KKyAgICAg
ICAgZm9yIHN1YnRlc3RfbmFtZSwgc3VidGVzdCBpbiBzdWJ0ZXN0X3Jlc3VsdHMuaXRlcml0ZW1z
KCk6CisgICAgICAgICAgICByZXN1bHRzX2Zvcl9tZXRyaWMgPSBzdWJ0ZXN0WydtZXRyaWNzJ10u
Z2V0KG1ldHJpY19uYW1lLCB7fSkKKyAgICAgICAgICAgIHJlc3VsdHNfZm9yX2FnZ3JlZ2F0b3Ig
PSByZXN1bHRzX2Zvcl9tZXRyaWMuZ2V0KGFnZ3JlZ2F0b3IsIHJlc3VsdHNfZm9yX21ldHJpYy5n
ZXQoTm9uZSwge30pKQorICAgICAgICAgICAgZm9yIGNvbmZpZ19uYW1lLCB2YWx1ZXMgaW4gcmVz
dWx0c19mb3JfYWdncmVnYXRvci5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAgICB2YWx1ZXNf
YnlfY29uZmlnX2l0ZXJhdGlvbi5zZXRkZWZhdWx0KGNvbmZpZ19uYW1lLCBbW10gZm9yIF8gaW4g
dmFsdWVzXSkKKyAgICAgICAgICAgICAgICBmb3IgaXRlcmF0aW9uLCB2YWx1ZSBpbiBlbnVtZXJh
dGUodmFsdWVzKToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzX2J5X2NvbmZpZ19pdGVyYXRp
b25bY29uZmlnX25hbWVdW2l0ZXJhdGlvbl0uYXBwZW5kKHZhbHVlKQorICAgICAgICByZXR1cm4g
dmFsdWVzX2J5X2NvbmZpZ19pdGVyYXRpb24KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBf
YWdncmVnYXRlX3ZhbHVlcyhjbHMsIGFnZ3JlZ2F0b3IsIHZhbHVlcyk6CisgICAgICAgIHJldHVy
biBjbHMuYWdncmVnYXRvcnNbYWdncmVnYXRvcl0odmFsdWVzKQorCisgICAgQGNsYXNzbWV0aG9k
CisgICAgZGVmIF9saW50X3Jlc3VsdHMoY2xzLCB0ZXN0cyk6CisgICAgICAgIGNscy5fbGludF9z
dWJ0ZXN0X3Jlc3VsdHModGVzdHMsIE5vbmUpCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgX2xpbnRfc3VidGVzdF9yZXN1bHRzKGNscywgc3VidGVzdHMs
IHBhcmVudF9uZWVkaW5nX2FnZ3JlZ2F0aW9uKToKKyAgICAgICAgaXRlcmF0aW9uX2dyb3Vwc19i
eV9jb25maWcgPSB7fQorICAgICAgICBmb3IgdGVzdF9uYW1lLCB0ZXN0IGluIHN1YnRlc3RzLml0
ZXJpdGVtcygpOgorICAgICAgICAgICAgaWYgJ21ldHJpY3MnIG5vdCBpbiB0ZXN0OgorICAgICAg
ICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignIiVzIiBkb2VzIG5vdCBjb250YWluIG1ldHJpY3Mn
ICUgdGVzdF9uYW1lKQorCisgICAgICAgICAgICBtZXRyaWNzID0gdGVzdFsnbWV0cmljcyddCisg
ICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtZXRyaWNzLCBkaWN0KToKKyAgICAgICAgICAg
ICAgICByYWlzZSBUeXBlRXJyb3IoJ1RoZSBtZXRyaWNzIGluICIlcyIgaXMgbm90IGEgZGljdGlv
bmFyeScgJSB0ZXN0X25hbWUpCisKKyAgICAgICAgICAgIG5lZWRzX2FnZ3JlZ2F0aW9uID0gRmFs
c2UKKyAgICAgICAgICAgIGZvciBtZXRyaWNfbmFtZSwgbWV0cmljIGluIG1ldHJpY3MuaXRlcml0
ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtZXRyaWMsIGxpc3QpOgorICAg
ICAgICAgICAgICAgICAgICBjbHMuX2xpbnRfYWdncmVnYXRvcl9saXN0KHRlc3RfbmFtZSwgbWV0
cmljX25hbWUsIG1ldHJpYykKKyAgICAgICAgICAgICAgICAgICAgbmVlZHNfYWdncmVnYXRpb24g
PSBUcnVlCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG1ldHJpYywgZGljdCk6Cisg
ICAgICAgICAgICAgICAgICAgIGNscy5fbGludF9jb25maWd1cmF0aW9uKHRlc3RfbmFtZSwgbWV0
cmljX25hbWUsIG1ldHJpYywgcGFyZW50X25lZWRpbmdfYWdncmVnYXRpb24sIGl0ZXJhdGlvbl9n
cm91cHNfYnlfY29uZmlnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgIHJhaXNlIFR5cGVFcnJvcignIiVzIiBtZXRyaWMgb2YgIiVzIiB3YXMgbm90IGFuIGFnZ3Jl
Z2F0b3IgbGlzdCBvciBhIGRpY3Rpb25hcnkgb2YgY29uZmlndXJhdGlvbnM6ICVzJyAlIChtZXRy
aWNfbmFtZSwgdGVzdF9uYW1lLCBzdHIobWV0cmljKSkpCisKKyAgICAgICAgICAgIGlmICd0ZXN0
cycgaW4gdGVzdDoKKyAgICAgICAgICAgICAgICBjbHMuX2xpbnRfc3VidGVzdF9yZXN1bHRzKHRl
c3RbJ3Rlc3RzJ10sIHRlc3RfbmFtZSBpZiBuZWVkc19hZ2dyZWdhdGlvbiBlbHNlIE5vbmUpCisg
ICAgICAgICAgICBlbGlmIG5lZWRzX2FnZ3JlZ2F0aW9uOgorICAgICAgICAgICAgICAgIHJhaXNl
IFR5cGVFcnJvcignIiVzIiByZXF1aXJlcyBhZ2dyZWdhdGlvbiBidXQgIlNvbWVUZXN0IiBoYXMg
bm8gc3VidGVzdHMnICUgKHRlc3RfbmFtZSkpCisgICAgICAgIHJldHVybiBpdGVyYXRpb25fZ3Jv
dXBzX2J5X2NvbmZpZworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9saW50X2FnZ3JlZ2F0
b3JfbGlzdChjbHMsIHRlc3RfbmFtZSwgbWV0cmljX25hbWUsIGFnZ3JlZ2F0b3JfbGlzdCk6Cisg
ICAgICAgIGlmIGxlbihhZ2dyZWdhdG9yX2xpc3QpICE9IGxlbihzZXQoYWdncmVnYXRvcl9saXN0
KSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyIlcyIgbWV0cmljIG9mICIlcyIgaGFk
IGludmFsaWQgYWdncmVnYXRvciBsaXN0OiAlcycgJSAobWV0cmljX25hbWUsIHRlc3RfbmFtZSwg
anNvbi5kdW1wcyhhZ2dyZWdhdG9yX2xpc3QpKSkKKyAgICAgICAgaWYgbm90IGFnZ3JlZ2F0b3Jf
bGlzdDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignVGhlIGFnZ3JlZ2F0b3IgbGlzdCBp
cyBlbXB0eSBpbiAiJXMiIG1ldHJpYyBvZiAiJXMiJyAlIChtZXRyaWNfbmFtZSwgdGVzdF9uYW1l
KSkKKyAgICAgICAgZm9yIGFnZ3JlZ2F0b3JfbmFtZSBpbiBhZ2dyZWdhdG9yX2xpc3Q6CisgICAg
ICAgICAgICBpZiBjbHMuX2lzX251bWVyaWMoYWdncmVnYXRvcl9uYW1lKToKKyAgICAgICAgICAg
ICAgICByYWlzZSBUeXBlRXJyb3IoJyIlcyIgbWV0cmljIG9mICIlcyIgaXMgbm90IHdyYXBwZWQg
YnkgYSBjb25maWd1cmF0aW9uOyBlLmcuICJjdXJyZW50IicgJSAobWV0cmljX25hbWUsIHRlc3Rf
bmFtZSkpCisgICAgICAgICAgICBpZiBhZ2dyZWdhdG9yX25hbWUgbm90IGluIGNscy5hZ2dyZWdh
dG9yczoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyIlcyIgbWV0cmljIG9mICIl
cyIgdXNlcyB1bmtub3duIGFnZ3JlZ2F0b3I6ICVzJyAlIChtZXRyaWNfbmFtZSwgdGVzdF9uYW1l
LCBhZ2dyZWdhdG9yX25hbWUpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9saW50X2Nv
bmZpZ3VyYXRpb24oY2xzLCB0ZXN0X25hbWUsIG1ldHJpY19uYW1lLCBjb25maWd1cmF0aW9ucywg
cGFyZW50X25lZWRpbmdfYWdncmVnYXRpb24sIGl0ZXJhdGlvbl9ncm91cHNfYnlfY29uZmlnKToK
KyAgICAgICAgIyBGSVhNRTogQ2hlY2sgdGhhdCBjb25maWdfbmFtZSBpcyBhbHdheXMgImN1cnJl
bnQiLgorICAgICAgICBmb3IgY29uZmlnX25hbWUsIHZhbHVlcyBpbiBjb25maWd1cmF0aW9ucy5p
dGVyaXRlbXMoKToKKyAgICAgICAgICAgIG5lc3RlZF9saXN0X2NvdW50ID0gW2lzaW5zdGFuY2Uo
dmFsdWUsIGxpc3QpIGZvciB2YWx1ZSBpbiB2YWx1ZXNdLmNvdW50KFRydWUpCisgICAgICAgICAg
ICBpZiBuZXN0ZWRfbGlzdF9jb3VudCBub3QgaW4gWzAsIGxlbih2YWx1ZXMpXToKKyAgICAgICAg
ICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyIlcyIgbWV0cmljIG9mICIlcyIgaGFkIG1hbGZvcm1l
ZCB2YWx1ZXM6ICVzJyAlIChtZXRyaWNfbmFtZSwgdGVzdF9uYW1lLCBqc29uLmR1bXBzKHZhbHVl
cykpKQorCisgICAgICAgICAgICBpZiBuZXN0ZWRfbGlzdF9jb3VudDoKKyAgICAgICAgICAgICAg
ICB2YWx1ZV9zaGFwZSA9IFtdCisgICAgICAgICAgICAgICAgZm9yIHZhbHVlX2dyb3VwIGluIHZh
bHVlczoKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVfc2hhcGUuYXBwZW5kKGxlbih2YWx1ZV9n
cm91cCkpCisgICAgICAgICAgICAgICAgICAgIGNscy5fbGludF92YWx1ZXModGVzdF9uYW1lLCBt
ZXRyaWNfbmFtZSwgdmFsdWVfZ3JvdXApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHZhbHVlX3NoYXBlID0gbGVuKHZhbHVlcykKKyAgICAgICAgICAgICAgICBjbHMuX2xpbnRf
dmFsdWVzKHRlc3RfbmFtZSwgbWV0cmljX25hbWUsIHZhbHVlcykKKworICAgICAgICAgICAgaXRl
cmF0aW9uX2dyb3Vwc19ieV9jb25maWcuc2V0ZGVmYXVsdChtZXRyaWNfbmFtZSwge30pLnNldGRl
ZmF1bHQoY29uZmlnX25hbWUsIHZhbHVlX3NoYXBlKQorICAgICAgICAgICAgaWYgcGFyZW50X25l
ZWRpbmdfYWdncmVnYXRpb24gYW5kIHZhbHVlX3NoYXBlICE9IGl0ZXJhdGlvbl9ncm91cHNfYnlf
Y29uZmlnW21ldHJpY19uYW1lXVtjb25maWdfbmFtZV06CisgICAgICAgICAgICAgICAgcmFpc2Ug
VHlwZUVycm9yKCciJXMiIG1ldHJpYyBvZiAiJXMiIGhhZCBhIG1pc21hdGNoaW5nIHN1YnRlc3Qg
dmFsdWVzJyAlIChtZXRyaWNfbmFtZSwgcGFyZW50X25lZWRpbmdfYWdncmVnYXRpb24pKQorCisg
ICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9saW50X3ZhbHVlcyhjbHMsIHRlc3RfbmFtZSwgbWV0
cmljX25hbWUsIHZhbHVlcyk6CisgICAgICAgIGlmIGFueShbbm90IGNscy5faXNfbnVtZXJpYyh2
YWx1ZSkgZm9yIHZhbHVlIGluIHZhbHVlc10pOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9y
KCciJXMiIG1ldHJpYyBvZiAiJXMiIGNvbnRhaW5zIG5vbi1udW1lcmljIHZhbHVlOiAlcycgJSAo
bWV0cmljX25hbWUsIHRlc3RfbmFtZSwganNvbi5kdW1wcyh2YWx1ZXMpKSkKKworICAgIEBjbGFz
c21ldGhvZAorICAgIGRlZiBfaXNfbnVtZXJpYyhjbHMsIHZhbHVlKToKKyAgICAgICAgcmV0dXJu
IGlzaW5zdGFuY2UodmFsdWUsIGludCkgb3IgaXNpbnN0YW5jZSh2YWx1ZSwgZmxvYXQpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVuY2htYXJr
X3Jlc3VsdHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19y
dW5uZXIvYmVuY2htYXJrX3Jlc3VsdHNfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQxMWJlOTdl
N2RkNWFiYzFkNzFjNjI5NWFkYmI1NjljNzcxOTU3MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcmVzdWx0c191bml0
dGVzdC5weQpAQCAtMCwwICsxLDI1NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
IyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSBiZW5jaG1hcmtfcmVzdWx0cyBpbXBv
cnQgQmVuY2htYXJrUmVzdWx0cworCisKK2NsYXNzIEJlbmNobWFya1Jlc3VsdHNUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICByZXN1bHRz
ID0gQmVuY2htYXJrUmVzdWx0cyh7J1NvbWVUZXN0JzogeydtZXRyaWNzJzogeydUaW1lJzogeydj
dXJyZW50JzogWzEsIDIsIDNdfX19fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRz
Ll9yZXN1bHRzLCB7J1NvbWVUZXN0JzogeydtZXRyaWNzJzogeydUaW1lJzoge05vbmU6IHsnY3Vy
cmVudCc6IFsxLCAyLCAzXX19fSwgJ3Rlc3RzJzoge319fSkKKworICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzUmVnZXhwKFR5cGVFcnJvciwgciciVGltZSIgbWV0cmljIG9mICJTb21lVGVz
dCIgY29udGFpbnMgbm9uLW51bWVyaWMgdmFsdWU6IFxbMSwgMiwgImEiXF0nKToKKyAgICAgICAg
ICAgIEJlbmNobWFya1Jlc3VsdHMoeydTb21lVGVzdCc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsn
Y3VycmVudCc6IFsxLCAyLCAnYSddfX19fSkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmKToK
KyAgICAgICAgcmVzdWx0ID0gQmVuY2htYXJrUmVzdWx0cyh7J1NvbWVUZXN0JzogeydtZXRyaWNz
JzogeydUaW1lJzogeydjdXJyZW50JzogWzEsIDIsIDNdfX19fSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXN1bHQuZm9ybWF0KCksICdTb21lVGVzdDpUaW1lOiAyLjBtcyBzdGRldj01MC4w
JVxuJykKKworICAgICAgICByZXN1bHQgPSBCZW5jaG1hcmtSZXN1bHRzKHsnU29tZVRlc3QnOiB7
J21ldHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbMSwgMiwgM119LCAnU2NvcmUnOiB7J2N1
cnJlbnQnOiBbMiwgMywgNF19fX19KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5m
b3JtYXQoKSwgJycnCitTb21lVGVzdDpTY29yZTogMy4wcHQgc3RkZXY9MzMuMyUKKyAgICAgICAg
OlRpbWU6IDIuMG1zIHN0ZGV2PTUwLjAlCisnJydbMTpdKQorCisgICAgICAgIHJlc3VsdCA9IEJl
bmNobWFya1Jlc3VsdHMoeydTb21lVGVzdCc6IHsKKyAgICAgICAgICAgICdtZXRyaWNzJzogeydU
aW1lJzogWydUb3RhbCcsICdBcml0aG1ldGljJ119LAorICAgICAgICAgICAgJ3Rlc3RzJzogewor
ICAgICAgICAgICAgICAgICdTdWJUZXN0MSc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVu
dCc6IFsxLCAyLCAzXX19fSwKKyAgICAgICAgICAgICAgICAnU3ViVGVzdDInOiB7J21ldHJpY3Mn
OiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbNCwgNSwgNl19fX19fX0pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzdWx0LmZvcm1hdCgpLCAnJycKK1NvbWVUZXN0OlRpbWU6QXJpdGhtZXRpYzog
My4wbXMgc3RkZXY9MzMuMyUKKyAgICAgICAgOlRpbWU6VG90YWw6IDcuMG1zIHN0ZGV2PTI4LjYl
CisgICAgICAgIFN1YlRlc3QxOlRpbWU6IDIuMG1zIHN0ZGV2PTUwLjAlCisgICAgICAgIFN1YlRl
c3QyOlRpbWU6IDUuMG1zIHN0ZGV2PTIwLjAlCisnJydbMTpdKQorCisgICAgZGVmIHRlc3RfZm9y
bWF0X3ZhbHVlc193aXRoX2xhcmdlX2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMSwgMiwgM10pLCAn
Mi4wL3Mgc3RkZXY9NTAuMCUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jl
c3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMTAsIDIwLCAzMF0pLCAnMjAvcyBzdGRldj01
MC4wJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0
X3ZhbHVlcygnUnVucycsIFsxMDAsIDIwMCwgMzAwXSksICcyMDAvcyBzdGRldj01MC4wJScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygn
UnVucycsIFsxMDAwLCAyMDAwLCAzMDAwXSksICcyLjBLL3Mgc3RkZXY9NTAuMCUnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMn
LCBbMTAwMDAsIDIwMDAwLCAzMDAwMF0pLCAnMjBLL3Mgc3RkZXY9NTAuMCUnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBb
MTAwMDAwLCAyMDAwMDAsIDMwMDAwMF0pLCAnMjAwSy9zIHN0ZGV2PTUwLjAlJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdSdW5zJywg
WzEwMDAwMDAsIDIwMDAwMDAsIDMwMDAwMDBdKSwgJzIuME0vcyBzdGRldj01MC4wJScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygnUnVu
cycsIFswLjEsIDAuMiwgMC4zXSksICcyMDBtL3Mgc3RkZXY9NTAuMCUnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMC4w
MSwgMC4wMiwgMC4wM10pLCAnMjBtL3Mgc3RkZXY9NTAuMCUnKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMC4wMDEsIDAu
MDAyLCAwLjAwM10pLCAnMi4wbS9zIHN0ZGV2PTUwLjAlJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdSdW5zJywgWzAuMDAwMSwgMC4w
MDAyLCAwLjAwMDNdKSwgJzIwMHUvcyBzdGRldj01MC4wJScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygnUnVucycsIFswLjAwMDAxLCAw
LjAwMDAyLCAwLjAwMDAzXSksICcyMHUvcyBzdGRldj01MC4wJScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygnUnVucycsIFswLjAwMDAw
MSwgMC4wMDAwMDIsIDAuMDAwMDAzXSksICcyLjB1L3Mgc3RkZXY9NTAuMCUnKQorCisgICAgZGVm
IHRlc3RfZm9ybWF0X3ZhbHVlc193aXRoX3NtYWxsX2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMS4x
LCAxLjIsIDEuM10pLCAnMS4yMC9zIHN0ZGV2PTguMyUnKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMTEsIDEyLCAxM10p
LCAnMTIuMC9zIHN0ZGV2PTguMyUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJlbmNobWFy
a1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMTEwLCAxMjAsIDEzMF0pLCAnMTIwL3Mg
c3RkZXY9OC4zJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5f
Zm9ybWF0X3ZhbHVlcygnUnVucycsIFsxMTAwLCAxMjAwLCAxMzAwXSksICcxLjIwSy9zIHN0ZGV2
PTguMyUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1h
dF92YWx1ZXMoJ1J1bnMnLCBbMTEwMDAsIDEyMDAwLCAxMzAwMF0pLCAnMTIuMEsvcyBzdGRldj04
LjMlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRf
dmFsdWVzKCdSdW5zJywgWzExMDAwMCwgMTIwMDAwLCAxMzAwMDBdKSwgJzEyMEsvcyBzdGRldj04
LjMlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRf
dmFsdWVzKCdSdW5zJywgWzExMDAwMDAsIDEyMDAwMDAsIDEzMDAwMDBdKSwgJzEuMjBNL3Mgc3Rk
ZXY9OC4zJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9y
bWF0X3ZhbHVlcygnUnVucycsIFswLjExLCAwLjEyLCAwLjEzXSksICcxMjBtL3Mgc3RkZXY9OC4z
JScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3Zh
bHVlcygnUnVucycsIFswLjAxMSwgMC4wMTIsIDAuMDEzXSksICcxMi4wbS9zIHN0ZGV2PTguMyUn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1
ZXMoJ1J1bnMnLCBbMC4wMDExLCAwLjAwMTIsIDAuMDAxM10pLCAnMS4yMG0vcyBzdGRldj04LjMl
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFs
dWVzKCdSdW5zJywgWzAuMDAwMTEsIDAuMDAwMTIsIDAuMDAwMTNdKSwgJzEyMHUvcyBzdGRldj04
LjMlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRf
dmFsdWVzKCdSdW5zJywgWzAuMDAwMDExLCAwLjAwMDAxMiwgMC4wMDAwMTNdKSwgJzEyLjB1L3Mg
c3RkZXY9OC4zJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5f
Zm9ybWF0X3ZhbHVlcygnUnVucycsIFswLjAwMDAwMTEsIDAuMDAwMDAxMiwgMC4wMDAwMDEzXSks
ICcxLjIwdS9zIHN0ZGV2PTguMyUnKQorCisgICAgZGVmIHRlc3RfZm9ybWF0X3ZhbHVlc193aXRo
X3RpbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5f
Zm9ybWF0X3ZhbHVlcygnVGltZScsIFsxLCAyLCAzXSksICcyLjBtcyBzdGRldj01MC4wJScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygn
VGltZScsIFsxMCwgMjAsIDMwXSksICcyMG1zIHN0ZGV2PTUwLjAlJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdUaW1lJywgWzEwMCwg
MjAwLCAzMDBdKSwgJzIwMG1zIHN0ZGV2PTUwLjAlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdUaW1lJywgWzEwMDAsIDIwMDAsIDMw
MDBdKSwgJzIuMHMgc3RkZXY9NTAuMCUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJlbmNo
bWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1RpbWUnLCBbMTAwMDAsIDIwMDAwLCAzMDAwMF0p
LCAnMjBzIHN0ZGV2PTUwLjAlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtS
ZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdUaW1lJywgWzEwMDAwMCwgMjAwMDAwLCAzMDAwMDBdKSwg
JzIwMHMgc3RkZXY9NTAuMCUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jl
c3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1RpbWUnLCBbMC4xMSwgMC4xMiwgMC4xM10pLCAnMTIwdXMg
c3RkZXY9OC4zJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5f
Zm9ybWF0X3ZhbHVlcygnVGltZScsIFswLjAxMSwgMC4wMTIsIDAuMDEzXSksICcxMi4wdXMgc3Rk
ZXY9OC4zJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9y
bWF0X3ZhbHVlcygnVGltZScsIFswLjAwMTEsIDAuMDAxMiwgMC4wMDEzXSksICcxLjIwdXMgc3Rk
ZXY9OC4zJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9y
bWF0X3ZhbHVlcygnVGltZScsIFswLjAwMDExLCAwLjAwMDEyLCAwLjAwMDEzXSksICcxMjBucyBz
dGRldj04LjMlJykKKworICAgIGRlZiB0ZXN0X2Zvcm1hdF92YWx1ZXNfd2l0aF9ub19lcnJvcihz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRf
dmFsdWVzKCdUaW1lJywgWzEsIDEsIDFdKSwgJzEuMDBtcyBzdGRldj0wLjAlJykKKworICAgIGRl
ZiB0ZXN0X2Zvcm1hdF92YWx1ZXNfd2l0aF9zbWFsbF9kaWZmZXJlbmNlKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1RpbWUn
LCBbNSwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwg
NCwgNF0pLAorICAgICAgICAgICAgJzQuMDVtcyBzdGRldj01LjUlJykKKworICAgIGRlZiB0ZXN0
X2FnZ3JlZ2F0ZV9yZXN1bHRzKHNlbGYpOgorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fYWdncmVnYXRlX3Jlc3Vs
dHMoCisgICAgICAgICAgICB7J1NvbWVUZXN0JzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJy
ZW50JzogWzEsIDIsIDNdfX19fSksCisgICAgICAgICAgICB7J1NvbWVUZXN0JzogeydtZXRyaWNz
JzogeydUaW1lJzoge05vbmU6IHsnY3VycmVudCc6IFsxLCAyLCAzXX19fSwgJ3Rlc3RzJzoge319
fSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2FnZ3JlZ2F0
ZV9yZXN1bHRzKAorICAgICAgICAgICAgeydTb21lVGVzdCc6IHsKKyAgICAgICAgICAgICAgICAn
bWV0cmljcyc6IHsnVGltZSc6IFsnVG90YWwnXX0sCisgICAgICAgICAgICAgICAgJ3Rlc3RzJzog
eworICAgICAgICAgICAgICAgICAgICAnU3ViVGVzdDEnOiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7
J2N1cnJlbnQnOiBbMSwgMiwgM119fX0sCisgICAgICAgICAgICAgICAgICAgICdTdWJUZXN0Mic6
IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFs0LCA1LCA2XX19fX19fSksCisgICAg
ICAgICAgICB7J1NvbWVUZXN0JzogeworICAgICAgICAgICAgICAgICdtZXRyaWNzJzogeydUaW1l
JzogeydUb3RhbCc6IHsnY3VycmVudCc6IFs1LCA3LCA5XX19fSwKKyAgICAgICAgICAgICAgICAn
dGVzdHMnOiB7CisgICAgICAgICAgICAgICAgICAgICdTdWJUZXN0MSc6IHsnbWV0cmljcyc6IHsn
VGltZSc6IHtOb25lOiB7J2N1cnJlbnQnOiBbMSwgMiwgM119fX0sICd0ZXN0cyc6IHt9fSwKKyAg
ICAgICAgICAgICAgICAgICAgJ1N1YlRlc3QyJzogeydtZXRyaWNzJzogeydUaW1lJzoge05vbmU6
IHsnY3VycmVudCc6IFs0LCA1LCA2XX19fSwgJ3Rlc3RzJzoge319fX19KQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fYWdncmVnYXRlX3Jlc3VsdHMoCisgICAg
ICAgICAgICB7J1NvbWVUZXN0JzogeworICAgICAgICAgICAgICAgICdtZXRyaWNzJzogeydUaW1l
JzogWydUb3RhbCddLCAnUnVucyc6IFsnVG90YWwnXX0sCisgICAgICAgICAgICAgICAgJ3Rlc3Rz
JzogeworICAgICAgICAgICAgICAgICAgICAnU3ViVGVzdDEnOiB7J21ldHJpY3MnOiB7J1RpbWUn
OiB7J2N1cnJlbnQnOiBbMSwgMiwgM119fX0sCisgICAgICAgICAgICAgICAgICAgICdTdWJUZXN0
Mic6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFs0LCA1LCA2XX19fSwKKyAgICAg
ICAgICAgICAgICAgICAgJ1N1YlRlc3QzJzogeydtZXRyaWNzJzogeydSdW5zJzogeydjdXJyZW50
JzogWzcsIDgsIDldfX19fX19KSwKKyAgICAgICAgICAgIHsnU29tZVRlc3QnOiB7CisgICAgICAg
ICAgICAgICAgJ21ldHJpY3MnOiB7CisgICAgICAgICAgICAgICAgICAgICdUaW1lJzogeydUb3Rh
bCc6IHsnY3VycmVudCc6IFs1LCA3LCA5XX19LAorICAgICAgICAgICAgICAgICAgICAnUnVucyc6
IHsnVG90YWwnOiB7J2N1cnJlbnQnOiBbNywgOCwgOV19fX0sCisgICAgICAgICAgICAgICAgJ3Rl
c3RzJzogeworICAgICAgICAgICAgICAgICAgICAnU3ViVGVzdDEnOiB7J21ldHJpY3MnOiB7J1Rp
bWUnOiB7Tm9uZTogeydjdXJyZW50JzogWzEsIDIsIDNdfX19LCAndGVzdHMnOiB7fX0sCisgICAg
ICAgICAgICAgICAgICAgICdTdWJUZXN0Mic6IHsnbWV0cmljcyc6IHsnVGltZSc6IHtOb25lOiB7
J2N1cnJlbnQnOiBbNCwgNSwgNl19fX0sICd0ZXN0cyc6IHt9fSwKKyAgICAgICAgICAgICAgICAg
ICAgJ1N1YlRlc3QzJzogeydtZXRyaWNzJzogeydSdW5zJzoge05vbmU6IHsnY3VycmVudCc6IFs3
LCA4LCA5XX19fSwgJ3Rlc3RzJzoge319fX19KQorCisgICAgZGVmIHRlc3RfYWdncmVnYXRlX3Jl
c3VsdHNfd2l0aF9ncm9wdXMoc2VsZik6CisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9hZ2dyZWdhdGVfcmVzdWx0
cygKKyAgICAgICAgICAgIHsnU29tZVRlc3QnOiB7CisgICAgICAgICAgICAgICAgJ21ldHJpY3Mn
OiB7J1RpbWUnOiBbJ1RvdGFsJ119LAorICAgICAgICAgICAgICAgICd0ZXN0cyc6IHsKKyAgICAg
ICAgICAgICAgICAgICAgJ1N1YlRlc3QxJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50
JzogW1sxLCAyXSwgWzMsIDRdXX19fSwKKyAgICAgICAgICAgICAgICAgICAgJ1N1YlRlc3QyJzog
eydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50JzogW1s1LCA2XSwgWzcsIDhdXX19fX19fSks
CisgICAgICAgICAgICB7J1NvbWVUZXN0JzogeworICAgICAgICAgICAgICAgICdtZXRyaWNzJzog
eydUaW1lJzogeydUb3RhbCc6IHsnY3VycmVudCc6IFs2LCA4LCAxMCwgMTJdfX19LAorICAgICAg
ICAgICAgICAgICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ1N1YlRlc3QxJzogeydt
ZXRyaWNzJzogeydUaW1lJzoge05vbmU6IHsnY3VycmVudCc6IFsxLCAyLCAzLCA0XX19fSwgJ3Rl
c3RzJzoge319LAorICAgICAgICAgICAgICAgICAgICAnU3ViVGVzdDInOiB7J21ldHJpY3MnOiB7
J1RpbWUnOiB7Tm9uZTogeydjdXJyZW50JzogWzUsIDYsIDcsIDhdfX19LCAndGVzdHMnOiB7fX19
fX0pCisKKyAgICBkZWYgdGVzdF9hZ2dyZWdhdGVfbmVzdGVkX3Jlc3VsdHMoc2VsZik6CisgICAg
ICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1h
cmtSZXN1bHRzLl9hZ2dyZWdhdGVfcmVzdWx0cygKKyAgICAgICAgICAgIHsnU29tZVRlc3QnOiB7
CisgICAgICAgICAgICAgICAgJ21ldHJpY3MnOiB7J1RpbWUnOiBbJ1RvdGFsJ119LAorICAgICAg
ICAgICAgICAgICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ1N1YlRlc3QxJzogewor
ICAgICAgICAgICAgICAgICAgICAgICAgJ21ldHJpY3MnOiB7J1RpbWUnOiBbJ1RvdGFsJ119LAor
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzJzogeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdHcmFuZENoaWxkMSc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFsx
LCAyXX19fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3JhbmRDaGlsZDInOiB7J21l
dHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbMywgNF19fX19fSwKKyAgICAgICAgICAgICAg
ICAgICAgJ1N1YlRlc3QyJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50JzogWzUsIDZd
fX19fX19KSwKKyAgICAgICAgICAgIHsnU29tZVRlc3QnOiB7CisgICAgICAgICAgICAgICAgJ21l
dHJpY3MnOiB7J1RpbWUnOiB7J1RvdGFsJzogeydjdXJyZW50JzogWzksIDEyXX19fSwKKyAgICAg
ICAgICAgICAgICAndGVzdHMnOiB7CisgICAgICAgICAgICAgICAgICAgICdTdWJUZXN0MSc6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICdtZXRyaWNzJzogeydUaW1lJzogeydUb3RhbCc6IHsn
Y3VycmVudCc6IFs0LCA2XX19fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cyc6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3JhbmRDaGlsZDEnOiB7J21ldHJpY3MnOiB7
J1RpbWUnOiB7Tm9uZTogeydjdXJyZW50JzogWzEsIDJdfX19LCAndGVzdHMnOiB7fX0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0dyYW5kQ2hpbGQyJzogeydtZXRyaWNzJzogeydUaW1l
Jzoge05vbmU6IHsnY3VycmVudCc6IFszLCA0XX19fSwgJ3Rlc3RzJzoge319fX0sCisgICAgICAg
ICAgICAgICAgICAgICdTdWJUZXN0Mic6IHsnbWV0cmljcyc6IHsnVGltZSc6IHtOb25lOiB7J2N1
cnJlbnQnOiBbNSwgNl19fX0sICd0ZXN0cyc6IHt9fX19fSkKKworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2FnZ3JlZ2F0ZV9yZXN1bHRzKAorICAgICAgICAgICAg
eydTb21lVGVzdCc6IHsKKyAgICAgICAgICAgICAgICAnbWV0cmljcyc6IHsnVGltZSc6IFsnVG90
YWwnXX0sCisgICAgICAgICAgICAgICAgJ3Rlc3RzJzogeworICAgICAgICAgICAgICAgICAgICAn
U3ViVGVzdDEnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnbWV0cmljcyc6IHsnVGltZSc6
IFsnVG90YWwnLCAnQXJpdGhtZXRpYyddfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0
cyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3JhbmRDaGlsZDEnOiB7J21ldHJp
Y3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbMSwgMl19fX0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0dyYW5kQ2hpbGQyJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50Jzog
WzMsIDRdfX19fX0sCisgICAgICAgICAgICAgICAgICAgICdTdWJUZXN0Mic6IHsnbWV0cmljcyc6
IHsnVGltZSc6IHsnY3VycmVudCc6IFs1LCA2XX19fX19fSksCisgICAgICAgICAgICB7J1NvbWVU
ZXN0JzogeworICAgICAgICAgICAgICAgICdtZXRyaWNzJzogeydUaW1lJzogeydUb3RhbCc6IHsn
Y3VycmVudCc6IFs5LCAxMl19fX0sCisgICAgICAgICAgICAgICAgJ3Rlc3RzJzogeworICAgICAg
ICAgICAgICAgICAgICAnU3ViVGVzdDEnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnbWV0
cmljcyc6IHsnVGltZSc6IHsnVG90YWwnOiB7J2N1cnJlbnQnOiBbNCwgNl19LCAnQXJpdGhtZXRp
Yyc6IHsnY3VycmVudCc6IFsyLCAzXX19fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0
cyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3JhbmRDaGlsZDEnOiB7J21ldHJp
Y3MnOiB7J1RpbWUnOiB7Tm9uZTogeydjdXJyZW50JzogWzEsIDJdfX19LCAndGVzdHMnOiB7fX0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dyYW5kQ2hpbGQyJzogeydtZXRyaWNzJzog
eydUaW1lJzoge05vbmU6IHsnY3VycmVudCc6IFszLCA0XX19fSwgJ3Rlc3RzJzoge319fX0sCisg
ICAgICAgICAgICAgICAgICAgICdTdWJUZXN0Mic6IHsnbWV0cmljcyc6IHsnVGltZSc6IHtOb25l
OiB7J2N1cnJlbnQnOiBbNSwgNl19fX0sICd0ZXN0cyc6IHt9fX19fSkKKworICAgIGRlZiB0ZXN0
X2xpbnRfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4
cChUeXBlRXJyb3IsIHInIlNvbWVUZXN0IiBkb2VzIG5vdCBjb250YWluIG1ldHJpY3MnKToKKyAg
ICAgICAgICAgIEJlbmNobWFya1Jlc3VsdHMuX2xpbnRfcmVzdWx0cyh7J1NvbWVUZXN0Jzoge319
KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoVHlwZUVycm9yLCByJ1Ro
ZSBtZXRyaWNzIGluICJTb21lVGVzdCIgaXMgbm90IGEgZGljdGlvbmFyeScpOgorICAgICAgICAg
ICAgQmVuY2htYXJrUmVzdWx0cy5fbGludF9yZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJpY3Mn
OiBbXX19KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoVHlwZUVycm9y
LCByJ1RoZSBhZ2dyZWdhdG9yIGxpc3QgaXMgZW1wdHkgaW4gIlRpbWUiIG1ldHJpYyBvZiAiU29t
ZVRlc3QiJyk6CisgICAgICAgICAgICBCZW5jaG1hcmtSZXN1bHRzLl9saW50X3Jlc3VsdHMoeydT
b21lVGVzdCc6IHsnbWV0cmljcyc6IHsnVGltZSc6IFtdfX19KQorCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXNSZWdleHAoVHlwZUVycm9yLCByJyJUaW1lIiBtZXRyaWMgb2YgIlNvbWVU
ZXN0IiBpcyBub3Qgd3JhcHBlZCBieSBhIGNvbmZpZ3VyYXRpb247IGUuZy4gImN1cnJlbnQiJyk6
CisgICAgICAgICAgICBCZW5jaG1hcmtSZXN1bHRzLl9saW50X3Jlc3VsdHMoeydTb21lVGVzdCc6
IHsnbWV0cmljcyc6IHsnVGltZSc6IFsxLCAyXX19fSkKKworICAgICAgICBzZWxmLmFzc2VydFRy
dWUoQmVuY2htYXJrUmVzdWx0cy5fbGludF9yZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJpY3Mn
OiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbMSwgMl19fX19KSkKKworICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzUmVnZXhwKFR5cGVFcnJvciwgciciVGltZSIgbWV0cmljIG9mICJTb21lVGVz
dCIgd2FzIG5vdCBhbiBhZ2dyZWdhdG9yIGxpc3Qgb3IgYSBkaWN0aW9uYXJ5IG9mIGNvbmZpZ3Vy
YXRpb25zOiAxJyk6CisgICAgICAgICAgICBCZW5jaG1hcmtSZXN1bHRzLl9saW50X3Jlc3VsdHMo
eydTb21lVGVzdCc6IHsnbWV0cmljcyc6IHsnVGltZSc6IDF9fX0pCisKKyAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChUeXBlRXJyb3IsIHInIlRpbWUiIG1ldHJpYyBvZiAiU29t
ZVRlc3QiIGNvbnRhaW5zIG5vbi1udW1lcmljIHZhbHVlOiBcWyJUb3RhbCJcXScpOgorICAgICAg
ICAgICAgQmVuY2htYXJrUmVzdWx0cy5fbGludF9yZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJp
Y3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbJ1RvdGFsJ119fX19KQorCisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoVHlwZUVycm9yLCByJyJUaW1lIiBtZXRyaWMgb2YgIlNv
bWVUZXN0IiBjb250YWlucyBub24tbnVtZXJpYyB2YWx1ZTogXFsiVG90YWwiLCAiR2VvbWV0cmlj
IlxdJyk6CisgICAgICAgICAgICBCZW5jaG1hcmtSZXN1bHRzLl9saW50X3Jlc3VsdHMoeydTb21l
VGVzdCc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFtbJ1RvdGFsJywgJ0dlb21l
dHJpYyddXX19fX0pCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChUeXBl
RXJyb3IsIHInIlNvbWVUZXN0IiByZXF1aXJlcyBhZ2dyZWdhdGlvbiBidXQgIlNvbWVUZXN0IiBo
YXMgbm8gc3VidGVzdHMnKToKKyAgICAgICAgICAgIEJlbmNobWFya1Jlc3VsdHMuX2xpbnRfcmVz
dWx0cyh7J1NvbWVUZXN0JzogeydtZXRyaWNzJzogeydUaW1lJzogWydUb3RhbCddfX19KQorCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoVHlwZUVycm9yLCByJyJUaW1lIiBt
ZXRyaWMgb2YgIlNvbWVUZXN0IiBoYWQgaW52YWxpZCBhZ2dyZWdhdG9yIGxpc3Q6IFxbIlRvdGFs
IiwgIlRvdGFsIlxdJyk6CisgICAgICAgICAgICBCZW5jaG1hcmtSZXN1bHRzLl9saW50X3Jlc3Vs
dHMoeydTb21lVGVzdCc6IHsnbWV0cmljcyc6IHsnVGltZSc6IFsnVG90YWwnLCAnVG90YWwnXX0s
ICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAnU3ViVGVzdDEnOiB7J21ldHJpY3MnOiB7J1Rp
bWUnOiB7J2N1cnJlbnQnOiBbXX19fX19fSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzUmVnZXhwKFR5cGVFcnJvciwgciciVGltZSIgbWV0cmljIG9mICJTb21lVGVzdCIgdXNlcyB1
bmtub3duIGFnZ3JlZ2F0b3I6IEtpdHRlbk1lYW4nKToKKyAgICAgICAgICAgIEJlbmNobWFya1Jl
c3VsdHMuX2xpbnRfcmVzdWx0cyh7J1NvbWVUZXN0JzogeydtZXRyaWNzJzogeydUaW1lJzogWydL
aXR0ZW5NZWFuJ119LCAndGVzdHMnOiB7CisgICAgICAgICAgICAgICAgJ1N1YlRlc3QxJzogeydt
ZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50JzogW119fX19fX0pCisKKyAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChUeXBlRXJyb3IsIHInIlRpbWUiIG1ldHJpYyBvZiAiU29t
ZVRlc3QiIGhhZCBhIG1pc21hdGNoaW5nIHN1YnRlc3QgdmFsdWVzJyk6CisgICAgICAgICAgICBC
ZW5jaG1hcmtSZXN1bHRzLl9saW50X3Jlc3VsdHMoeydTb21lVGVzdCc6IHsnbWV0cmljcyc6IHsn
VGltZSc6IFsnVG90YWwnXX0sICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAnU3ViVGVzdDEn
OiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbMSwgMiwgM119fX0sCisgICAgICAg
ICAgICAgICAgJ1N1YlRlc3QyJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50JzogWzQs
IDUsIDYsIDddfX19fX19KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAo
VHlwZUVycm9yLCByJyJUaW1lIiBtZXRyaWMgb2YgIlNvbWVUZXN0IiBoYWQgYSBtaXNtYXRjaGlu
ZyBzdWJ0ZXN0IHZhbHVlcycpOgorICAgICAgICAgICAgQmVuY2htYXJrUmVzdWx0cy5fbGludF9y
ZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJpY3MnOiB7J1RpbWUnOiBbJ1RvdGFsJ119LCAndGVz
dHMnOiB7CisgICAgICAgICAgICAgICAgJ1N1YlRlc3QxJzogeydtZXRyaWNzJzogeydUaW1lJzog
eydjdXJyZW50JzogW1sxLCAyXSwgWzNdXX19fSwKKyAgICAgICAgICAgICAgICAnU3ViVGVzdDIn
OiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbWzQsIDVdLCBbNiwgN11dfX19fX19
KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoVHlwZUVycm9yLCByJyJU
aW1lIiBtZXRyaWMgb2YgIlNvbWVUZXN0IiBoYWQgbWFsZm9ybWVkIHZhbHVlczogXFsxLCBcWzJc
XSwgM1xdJyk6CisgICAgICAgICAgICBCZW5jaG1hcmtSZXN1bHRzLl9saW50X3Jlc3VsdHMoeydT
b21lVGVzdCc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFsxLCBbMl0sIDNdfX19
fSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoQmVuY2htYXJrUmVzdWx0cy5fbGludF9yZXN1
bHRzKHsnU29tZVRlc3QnOiB7J21ldHJpY3MnOiB7J1RpbWUnOiBbJ1RvdGFsJ119LCAndGVzdHMn
OiB7CisgICAgICAgICAgICAnU3ViVGVzdDEnOiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJl
bnQnOiBbMSwgMiwgM119fX0sCisgICAgICAgICAgICAnU3ViVGVzdDInOiB7J21ldHJpY3MnOiB7
J1RpbWUnOiB7J2N1cnJlbnQnOiBbNCwgNSwgNl0sICdiYXNlbGluZSc6IFs3XX19fX19fSkpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEJlbmNobWFya1Jlc3VsdHMuX2xpbnRfcmVzdWx0cyh7
J1NvbWVUZXN0JzogeydtZXRyaWNzJzogeydUaW1lJzogWydUb3RhbCddfSwgJ3Rlc3RzJzogewor
ICAgICAgICAgICAgJ1N1YlRlc3QxJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50Jzog
WzEsIDIsIDNdfX19LAorICAgICAgICAgICAgJ1N1YlRlc3QyJzogeydtZXRyaWNzJzogeydSdW5z
JzogeydjdXJyZW50JzogWzQsIDUsIDYsIDddfX19fX19KSkKKworICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoQmVuY2htYXJrUmVzdWx0cy5fbGludF9yZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJp
Y3MnOiB7J1RpbWUnOiBbJ1RvdGFsJ119LCAndGVzdHMnOiB7CisgICAgICAgICAgICAnU3ViVGVz
dDEnOiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbWzEsIDJdLCBbMywgNF1dfX19
LAorICAgICAgICAgICAgJ1N1YlRlc3QyJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50
JzogW1s1LCA2XSwgWzcsIDhdXX19fX19fSkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVuY2htYXJrX3J1bm5lci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVubmVyLnB5CmluZGV4IGU0
NTA5MTA2MWEyMTc1ODZiOGU5MGY3ZTgzZWY2OWVjNjNlODA4OWMuLjgxYTU2MzIxNTYzYTE5NTQ2
NzkwZDBmNGNmMDlkN2M2YTI3MTdkNTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVubmVyLnB5CkBAIC0xMiw2
ICsxMiw3IEBAIGltcG9ydCBvcwogaW1wb3J0IHVybHBhcnNlCiAKIGZyb20gYmVuY2htYXJrX2J1
aWxkZXIuYmVuY2htYXJrX2J1aWxkZXJfZmFjdG9yeSBpbXBvcnQgQmVuY2htYXJrQnVpbGRlckZh
Y3RvcnkKK2Zyb20gYmVuY2htYXJrX3Jlc3VsdHMgaW1wb3J0IEJlbmNobWFya1Jlc3VsdHMKIGZy
b20gYnJvd3Nlcl9kcml2ZXIuYnJvd3Nlcl9kcml2ZXJfZmFjdG9yeSBpbXBvcnQgQnJvd3NlckRy
aXZlckZhY3RvcnkKIGZyb20gaHR0cF9zZXJ2ZXJfZHJpdmVyLmh0dHBfc2VydmVyX2RyaXZlcl9m
YWN0b3J5IGltcG9ydCBIVFRQU2VydmVyRHJpdmVyRmFjdG9yeQogZnJvbSB1dGlscyBpbXBvcnQg
bG9hZE1vZHVsZSwgZ2V0UGF0aEZyb21Qcm9qZWN0Um9vdApAQCAtMjMsNyArMjQsNyBAQCBfbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIGNsYXNzIEJlbmNobWFya1J1bm5lcihv
YmplY3QpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYW5GaWxlLCBsb2NhbENvcHksIGJ1
aWxkRGlyLCBvdXRwdXRGaWxlLCBwbGF0Zm9ybSwgYnJvd3Nlcik6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBsYW5GaWxlLCBsb2NhbENvcHksIGNvdW50T3ZlcnJpZGUsIGJ1aWxkRGlyLCBvdXRw
dXRGaWxlLCBwbGF0Zm9ybSwgYnJvd3Nlcik6CiAgICAgICAgIF9sb2cuaW5mbygnSW5pdGlhbGl6
aW5nIGJlbmNobWFyayBydW5uaW5nJykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcGxhbkZp
bGUgPSBzZWxmLl9maW5kUGxhbkZpbGUocGxhbkZpbGUpCkBAIC0zMiw2ICszMyw4IEBAIGNsYXNz
IEJlbmNobWFya1J1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYucGxhbiA9IGpz
b24ubG9hZChmcCkKICAgICAgICAgICAgICAgICBpZiBsb2NhbENvcHk6CiAgICAgICAgICAgICAg
ICAgICAgIHNlbGYucGxhblsnbG9jYWxfY29weSddID0gbG9jYWxDb3B5CisgICAgICAgICAgICAg
ICAgaWYgY291bnRPdmVycmlkZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wbGFuWydjb3Vu
dCddID0gY291bnRPdmVycmlkZQogICAgICAgICAgICAgICAgIHNlbGYuYnJvd3NlckRyaXZlciA9
IEJyb3dzZXJEcml2ZXJGYWN0b3J5LmNyZWF0ZShbcGxhdGZvcm0sIGJyb3dzZXJdKQogICAgICAg
ICAgICAgICAgIHNlbGYuaHR0cFNlcnZlckRyaXZlciA9IEhUVFBTZXJ2ZXJEcml2ZXJGYWN0b3J5
LmNyZWF0ZShbc2VsZi5wbGFuWydodHRwX3NlcnZlcl9kcml2ZXInXV0pCiAgICAgICAgICAgICAg
ICAgc2VsZi5idWlsZERpciA9IG9zLnBhdGguYWJzcGF0aChidWlsZERpcikgaWYgYnVpbGREaXIg
ZWxzZSBOb25lCkBAIC04OSw2ICs5Miw3IEBAIGNsYXNzIEJlbmNobWFya1J1bm5lcihvYmplY3Qp
OgogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnRW5kIG9mICVkIGl0ZXJhdGlvbiBvZiBjdXJy
ZW50IGJlbmNobWFyaycgJSAoeCArIDEpKQogICAgICAgICByZXN1bHRzID0gc2VsZi53cmFwKHJl
c3VsdHMpCiAgICAgICAgIHNlbGYuZHVtcChyZXN1bHRzLCBzZWxmLm91dHB1dEZpbGUgaWYgc2Vs
Zi5vdXRwdXRGaWxlIGVsc2Ugc2VsZi5wbGFuWydvdXRwdXRfZmlsZSddKQorICAgICAgICBzZWxm
LnNob3dfcmVzdWx0cyhyZXN1bHRzKQogICAgICAgICBiZW5jaG1hcmtCdWlsZGVyLmNsZWFuKCkK
ICAgICAgICAgcmV0dXJuIDAKIApAQCAtMTA0LDEzICsxMDgsMTMgQEAgY2xhc3MgQmVuY2htYXJr
UnVubmVyKG9iamVjdCk6CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgd3JhcChjbHMsIGRp
Y3RzKToKLSAgICAgICAgX2xvZy5pbmZvKCdNZXJnaW5nIGZvbGxvd2luZyByZXN1bHRzOlxuJXMn
LCBqc29uLmR1bXBzKGRpY3RzKSkKKyAgICAgICAgX2xvZy5kZWJ1ZygnTWVyZ2luZyBmb2xsb3dp
bmcgcmVzdWx0czpcbiVzJywganNvbi5kdW1wcyhkaWN0cykpCiAgICAgICAgIGlmIG5vdCBkaWN0
czoKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldCA9IHt9CiAgICAgICAgIGZv
ciBkaWMgaW4gZGljdHM6CiAgICAgICAgICAgICByZXQgPSBjbHMubWVyZ2UocmV0LCBkaWMpCi0g
ICAgICAgIF9sb2cuaW5mbygnUmVzdWx0cyBhZnRlciBtZXJnaW5nOlxuJXMnLCBqc29uLmR1bXBz
KHJldCkpCisgICAgICAgIF9sb2cuZGVidWcoJ1Jlc3VsdHMgYWZ0ZXIgbWVyZ2luZzpcbiVzJywg
anNvbi5kdW1wcyhyZXQpKQogICAgICAgICByZXR1cm4gcmV0CiAKICAgICBAY2xhc3NtZXRob2QK
QEAgLTEzMywzICsxMzcsOCBAQCBjbGFzcyBCZW5jaG1hcmtSdW5uZXIob2JqZWN0KToKICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICAgIyBmb3Igb3RoZXIgdHlwZXMKICAgICAgICAg
cmV0dXJuIGEgKyBiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2hvd19yZXN1bHRzKGNs
cywgcmVzdWx0cyk6CisgICAgICAgIHJlc3VsdHMgPSBCZW5jaG1hcmtSZXN1bHRzKHJlc3VsdHMp
CisgICAgICAgIHByaW50IHJlc3VsdHMuZm9ybWF0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253762</attachid>
            <date>2015-05-26 17:14:24 -0700</date>
            <delta_ts>2015-05-26 22:03:39 -0700</delta_ts>
            <desc>Rebased for ToT</desc>
            <filename>bug-145398-20150526171412.patch</filename>
            <type>text/plain</type>
            <size>34463</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0ODg4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjhjZWJkZjNhNzM3MWJiZmJkNDJiOWZiYmIxOTMzY2Qx
NWJlNzEyOS4uODM4MzRjNTAxY2QwZDgwNzQ5NDJhOTkyZDA2ZmJiY2Q1MzdiOTM2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1
IEBACisyMDE1LTA1LTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAg
ICAgIHJ1bi1iZW5jaG1hcmsgc2hvdWxkIHByaW50IG91dCB0aGUgcmVzdWx0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mzk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQmVuY2htYXJrUmVz
dWx0cyB0byBjb21wdXRlIGFuZCBmb3JtYXQgdGhlIGFnZ3JlZ2F0ZWQgdmFsdWVzLiBJdCBhbHNv
IGRvZXMgdGhlIHN5bnRheC9zZW1hbnRpYyBjaGVjaworICAgICAgICBvZiB0aGUgb3V0cHV0IHRv
IGNhdGNoIGVhcmx5IGVycm9ycy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVuY2ht
YXJrX3J1bm5lci9iZW5jaG1hcmtfcmVzdWx0cy5weTogQWRkZWQuCisgICAgICAgIChCZW5jaG1h
cmtSZXN1bHRzKTogQWRkZWQuCisgICAgICAgIChCZW5jaG1hcmtSZXN1bHRzLl9faW5pdF9fKTog
QWRkZWQuCisgICAgICAgIChCZW5jaG1hcmtSZXN1bHRzLmZvcm1hdCk6IEFkZGVkLgorICAgICAg
ICAoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3Rlc3RzKTogQWRkZWQuIFVzZWQgYnkgQmVuY2ht
YXJrUmVzdWx0cy5mb3JtYXQuCisgICAgICAgIChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFs
dWVzKTogRm9ybWF0cyBhIGxpc3Qgb2YgdmFsdWVzIG1lYXN1cmVkIGZvciBhIGdpdmVuIG1ldHJp
YyBvbiBhIGdpdmVuIHRlc3QuCisgICAgICAgIFVzZXMgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZp
YXRpb24gdG8gY29tcHV0ZSB0aGUgc2lnbmlmaWNhbnQgZmlndXJlcyBmb3IgdGhlIHZhbHVlLgor
ICAgICAgICAoQmVuY2htYXJrUmVzdWx0cy5fdW5pdF9mcm9tX21ldHJpYyk6IEFkZGVkLgorICAg
ICAgICAoQmVuY2htYXJrUmVzdWx0cy5fYWdncmVnYXRlX3Jlc3VsdHMpOiBBZGRlZC4KKyAgICAg
ICAgKEJlbmNobWFya1Jlc3VsdHMuX2FnZ3JlZ2F0ZV9yZXN1bHRzX2Zvcl90ZXN0KTogQWRkZWQu
CisgICAgICAgIChCZW5jaG1hcmtSZXN1bHRzLl9mbGF0dGVuX2xpc3QpOiBBZGRlZC4KKyAgICAg
ICAgKEJlbmNobWFya1Jlc3VsdHMuX3N1YnRlc3RfdmFsdWVzX2J5X2NvbmZpZ19pdGVyYXRpb24p
OiBBZGRlZC4gT3JnYW5pemVzIHZhbHVlcyBtZWFzdXJlZCBmb3Igc3VidGVzdHMKKyAgICAgICAg
YnkgdGhlIGl0ZXJhdGlvbiBudW1iZXIgc28gdGhhdCBpLXRoIGFycmF5IGNvbnRhaW5zIHZhbHVl
cyBmb3IgYWxsIHN1YnRlc3RzIGF0IGktdGggaXRlcmF0aW9uLgorICAgICAgICAoQmVuY2htYXJr
UmVzdWx0cy5fYWdncmVnYXRlX3ZhbHVlcyk6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrUmVz
dWx0cy5fbGludF9yZXN1bHRzKTogQWRkZWQuCisgICAgICAgIChCZW5jaG1hcmtSZXN1bHRzLl9s
aW50X3N1YnRlc3RfcmVzdWx0cyk6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrUmVzdWx0cy5f
bGludF9hZ2dyZWdhdG9yX2xpc3QpOiBBZGRlZC4KKyAgICAgICAgKEJlbmNobWFya1Jlc3VsdHMu
X2xpbnRfY29uZmlndXJhdGlvbik6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrUmVzdWx0cy5f
bGludF92YWx1ZXMpOiBBZGRlZC4KKyAgICAgICAgKEJlbmNobWFya1Jlc3VsdHMuX2lzX251bWVy
aWMpOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIv
YmVuY2htYXJrX3Jlc3VsdHNfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJr
UmVzdWx0c1Rlc3QpOgorICAgICAgICAoQmVuY2htYXJrUmVzdWx0c1Rlc3QudGVzdF9pbml0KToK
KyAgICAgICAgKEJlbmNobWFya1Jlc3VsdHNUZXN0LnRlc3RfZm9ybWF0KToKKyAgICAgICAgKHRl
c3RfZm9ybWF0X3ZhbHVlc193aXRoX2xhcmdlX2Vycm9yKToKKyAgICAgICAgKHRlc3RfZm9ybWF0
X3ZhbHVlc193aXRoX3NtYWxsX2Vycm9yKToKKyAgICAgICAgKHRlc3RfZm9ybWF0X3ZhbHVlc193
aXRoX3RpbWUpOgorICAgICAgICAodGVzdF9mb3JtYXRfdmFsdWVzX3dpdGhfbm9fZXJyb3IpOgor
ICAgICAgICAodGVzdF9mb3JtYXRfdmFsdWVzX3dpdGhfc21hbGxfZGlmZmVyZW5jZSk6CisgICAg
ICAgICh0ZXN0X2FnZ3JlZ2F0ZV9yZXN1bHRzKToKKyAgICAgICAgKHRlc3RfYWdncmVnYXRlX3Jl
c3VsdHNfd2l0aF9ncm9wdXMpOgorICAgICAgICAodGVzdF9hZ2dyZWdhdGVfbmVzdGVkX3Jlc3Vs
dHMpOgorICAgICAgICAodGVzdF9saW50X3Jlc3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVubmVyLnB5OgorICAgICAgICAoQmVu
Y2htYXJrUnVubmVyLmV4ZWN1dGUpOiBBZGRlZCBhIGNhbGwgdG8gc2hvd19yZXN1bHRzCisgICAg
ICAgIChCZW5jaG1hcmtSdW5uZXIud3JhcCk6IE9ubHkgZHVtcCB0aGUgbWVyZ2VkIEpTT04gd2hl
biBkZWJ1Z2dpbmcuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIuc2hvd19yZXN1bHRzKTogQWRk
ZWQuCisKKzIwMTUtMDUtMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgcnVuX2JlbmNobWFyayBzaG91bGQgaGF2ZSBhbiBvcHRpb24gdG8gc3BlY2lmeSB0aGUg
bnVtYmVyIG9mIHJ1bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NTA5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIC0tY291bnQgb3B0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tYmVu
Y2htYXJrOgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5j
aG1hcmtfcnVubmVyL2JlbmNobWFya19ydW5uZXIucHk6CisgICAgICAgIChCZW5jaG1hcmtSdW5u
ZXIuX19pbml0X18pOgorCiAyMDE1LTA1LTI2ICBEYW5hIEJ1cmthcnQgIDxkYnVya2FydEBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4ZXMgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCByZWNlbnQg
ZGFzaGJvYXJkIGNsZWFudXAuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Jl
bmNobWFya19ydW5uZXIvYmVuY2htYXJrX3Jlc3VsdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2JlbmNobWFya19ydW5uZXIvYmVuY2htYXJrX3Jlc3VsdHMucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZj
MDEzMThlYzFhYWQ4ZGIwMTMxNTM3NmRlNTNlYTIyYmM0NTJhMgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcmVzdWx0
cy5weQpAQCAtMCwwICsxLDI0NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisj
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQganNvbgoraW1wb3J0IG1hdGgKK2ltcG9ydCByZQorCisKK2NsYXNzIEJl
bmNobWFya1Jlc3VsdHMob2JqZWN0KToKKworICAgIGFnZ3JlZ2F0b3JzID0geworICAgICAgICAn
VG90YWwnOiAobGFtYmRhIHZhbHVlczogc3VtKHZhbHVlcykpLAorICAgICAgICAnQXJpdGhtZXRp
Yyc6IChsYW1iZGEgdmFsdWVzOiBzdW0odmFsdWVzKSAvIGxlbih2YWx1ZXMpKSwKKyAgICAgICAg
J0dlb21ldHJpYyc6IChsYW1iZGEgdmFsdWVzOiBtYXRoLmV4cChzdW0obWFwKG1hdGgubG9nLCB2
YWx1ZXMpKSAvIGxlbih2YWx1ZXMpKSksCisgICAgfQorICAgIG1ldHJpY190b191bml0ID0gewor
ICAgICAgICAnRnJhbWVSYXRlJzogJ2ZwcycsCisgICAgICAgICdSdW5zJzogJy9zJywKKyAgICAg
ICAgJ1RpbWUnOiAnbXMnLAorICAgICAgICAnRHVyYXRpb24nOiAnbXMnLAorICAgICAgICAnTWFs
bG9jJzogJ0InLAorICAgICAgICAnSGVhcCc6ICdCJywKKyAgICAgICAgJ0FsbG9jYXRpb25zJzog
J0InLAorICAgICAgICAnU2NvcmUnOiAncHQnLAorICAgIH0KKyAgICBTSV9wcmVmaXhlcyA9IFsn
bicsICd1JywgJ20nLCAnJywgJ0snLCAnTScsICdHJywgJ1QnLCAnUCcsICdFJ10KKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXN1bHRzKToKKyAgICAgICAgc2VsZi5fbGludF9yZXN1bHRzKHJl
c3VsdHMpCisgICAgICAgIHNlbGYuX3Jlc3VsdHMgPSBzZWxmLl9hZ2dyZWdhdGVfcmVzdWx0cyhy
ZXN1bHRzKQorCisgICAgZGVmIGZvcm1hdChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Zv
cm1hdF90ZXN0cyhzZWxmLl9yZXN1bHRzKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9m
b3JtYXRfdGVzdHMoc2VsZiwgdGVzdHMsIGluZGVudD0nJyk6CisgICAgICAgIG91dHB1dCA9ICcn
CisgICAgICAgIGNvbmZpZ19uYW1lID0gJ2N1cnJlbnQnCisgICAgICAgIGZvciB0ZXN0X25hbWUg
aW4gc29ydGVkKHRlc3RzLmtleXMoKSk6CisgICAgICAgICAgICBpc19maXJzdCA9IFRydWUKKyAg
ICAgICAgICAgIHRlc3QgPSB0ZXN0c1t0ZXN0X25hbWVdCisgICAgICAgICAgICBtZXRyaWNzID0g
dGVzdC5nZXQoJ21ldHJpY3MnLCB7fSkKKyAgICAgICAgICAgIGZvciBtZXRyaWNfbmFtZSBpbiBz
b3J0ZWQobWV0cmljcy5rZXlzKCkpOgorICAgICAgICAgICAgICAgIG1ldHJpYyA9IG1ldHJpY3Nb
bWV0cmljX25hbWVdCisgICAgICAgICAgICAgICAgZm9yIGFnZ3JlZ2F0b3JfbmFtZSBpbiBzb3J0
ZWQobWV0cmljLmtleXMoKSk6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBpbmRlbnQK
KyAgICAgICAgICAgICAgICAgICAgaWYgaXNfZmlyc3Q6CisgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRwdXQgKz0gdGVzdF9uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBpc19maXJzdCA9
IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRwdXQgKz0gJyAnICogbGVuKHRlc3RfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgb3V0
cHV0ICs9ICc6JyArIG1ldHJpY19uYW1lICsgJzonCisgICAgICAgICAgICAgICAgICAgIGlmIGFn
Z3JlZ2F0b3JfbmFtZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBhZ2dyZWdh
dG9yX25hbWUgKyAnOicKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9ICcgJyArIHNlbGYu
X2Zvcm1hdF92YWx1ZXMobWV0cmljX25hbWUsIG1ldHJpY1thZ2dyZWdhdG9yX25hbWVdW2NvbmZp
Z19uYW1lXSkgKyAnXG4nCisgICAgICAgICAgICBpZiAndGVzdHMnIGluIHRlc3Q6CisgICAgICAg
ICAgICAgICAgb3V0cHV0ICs9IHNlbGYuX2Zvcm1hdF90ZXN0cyh0ZXN0Wyd0ZXN0cyddLCBpbmRl
bnQ9KGluZGVudCArICcgJyAqIGxlbih0ZXN0X25hbWUpKSkKKyAgICAgICAgcmV0dXJuIG91dHB1
dAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9mb3JtYXRfdmFsdWVzKGNscywgbWV0cmlj
X25hbWUsIHZhbHVlcyk6CisgICAgICAgIHZhbHVlcyA9IG1hcChmbG9hdCwgdmFsdWVzKQorICAg
ICAgICB0b3RhbCA9IHN1bSh2YWx1ZXMpCisgICAgICAgIG1lYW4gPSB0b3RhbCAvIGxlbih2YWx1
ZXMpCisgICAgICAgIHNxdWFyZV9zdW0gPSBzdW0obWFwKGxhbWJkYSB4OiB4ICogeCwgdmFsdWVz
KSkKKyAgICAgICAgc2FtcGxlX2NvdW50ID0gbGVuKHZhbHVlcykKKworICAgICAgICAjIFdpdGgg
c3VtIGFuZCBzdW0gb2Ygc3F1YXJlcywgd2UgY2FuIGNvbXB1dGUgdGhlIHNhbXBsZSBzdGFuZGFy
ZCBkZXZpYXRpb24gaW4gTygxKS4KKyAgICAgICAgIyBTZWUgaHR0cHM6Ly9ybml3YS5jb20vMjAx
Mi0xMS0xMC9zYW1wbGUtc3RhbmRhcmQtZGV2aWF0aW9uLWluLXRlcm1zLW9mLXN1bS1hbmQtc3F1
YXJlLXN1bS1vZi1zYW1wbGVzLworICAgICAgICBpZiBzYW1wbGVfY291bnQgPD0gMToKKyAgICAg
ICAgICAgIHNhbXBsZV9zdGRldiA9IDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNhbXBs
ZV9zdGRldiA9IG1hdGguc3FydChzcXVhcmVfc3VtIC8gKHNhbXBsZV9jb3VudCAtIDEpIC0gdG90
YWwgKiB0b3RhbCAvIChzYW1wbGVfY291bnQgLSAxKSAvIHNhbXBsZV9jb3VudCkKKworICAgICAg
ICB1bml0ID0gY2xzLl91bml0X2Zyb21fbWV0cmljKG1ldHJpY19uYW1lKQorCisgICAgICAgIGlm
IHVuaXQgPT0gJ21zJzoKKyAgICAgICAgICAgIHVuaXQgPSAncycKKyAgICAgICAgICAgIG1lYW4g
PSBmbG9hdChtZWFuKSAvIDEwMDAKKyAgICAgICAgICAgIHNhbXBsZV9zdGRldiAvPSAxMDAwCisK
KyAgICAgICAgYmFzZSA9IDEwMjQgaWYgdW5pdCA9PSAnQicgZWxzZSAxMDAwCisgICAgICAgIHZh
bHVlX3NpZ19maWcgPSAxIC0gbWF0aC5mbG9vcihtYXRoLmxvZzEwKHNhbXBsZV9zdGRldiAvIG1l
YW4pKSBpZiBzYW1wbGVfc3RkZXYgZWxzZSAzCisgICAgICAgIFNJX21hZ25pdHVkZSA9IG1hdGgu
Zmxvb3IobWF0aC5sb2cobWVhbiwgYmFzZSkpCisKKyAgICAgICAgc2NhbGVkX21lYW4gPSBtZWFu
ICogbWF0aC5wb3coYmFzZSwgLVNJX21hZ25pdHVkZSkKKyAgICAgICAgU0lfcHJlZml4ID0gY2xz
LlNJX3ByZWZpeGVzW2ludChTSV9tYWduaXR1ZGUpICsgM10KKworICAgICAgICBub25fZmxvYXRp
bmdfZGlnaXRzID0gMSArIG1hdGguZmxvb3IobWF0aC5sb2cxMChzY2FsZWRfbWVhbikpCisgICAg
ICAgIGZsb2F0aW5nX3BvaW50c19jb3VudCA9IG1heCgwLCB2YWx1ZV9zaWdfZmlnIC0gbm9uX2Zs
b2F0aW5nX2RpZ2l0cykKKyAgICAgICAgcmV0dXJuICgne21lYW46LicgKyBzdHIoaW50KGZsb2F0
aW5nX3BvaW50c19jb3VudCkpICsgJ2Z9e3ByZWZpeH17dW5pdH0gc3RkZXY9e2RlbHRhOi4xJX0n
KS5mb3JtYXQoCisgICAgICAgICAgICBtZWFuPXNjYWxlZF9tZWFuLCBkZWx0YT1zYW1wbGVfc3Rk
ZXYgLyBtZWFuLCBwcmVmaXg9U0lfcHJlZml4LCB1bml0PXVuaXQpCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgX3VuaXRfZnJvbV9tZXRyaWMoY2xzLCBtZXRyaWNfbmFtZSk6CisgICAgICAg
ICMgRklYTUU6IERldGVjdCB1bmtub3duIG1ldHRyaWMgbmFtZXMKKyAgICAgICAgc3VmZml4ID0g
cmUubWF0Y2gocicuKj8oW0Etel1bYS16XSt8RnJhbWVSYXRlKSQnLCBtZXRyaWNfbmFtZSkKKyAg
ICAgICAgcmV0dXJuIGNscy5tZXRyaWNfdG9fdW5pdFtzdWZmaXguZ3JvdXAoMSldCisKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgX2FnZ3JlZ2F0ZV9yZXN1bHRzKGNscywgdGVzdHMpOgorICAg
ICAgICByZXN1bHRzID0ge30KKyAgICAgICAgZm9yIHRlc3RfbmFtZSwgdGVzdCBpbiB0ZXN0cy5p
dGVyaXRlbXMoKToKKyAgICAgICAgICAgIHJlc3VsdHNbdGVzdF9uYW1lXSA9IGNscy5fYWdncmVn
YXRlX3Jlc3VsdHNfZm9yX3Rlc3QodGVzdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdHMKKworICAg
IEBjbGFzc21ldGhvZAorICAgIGRlZiBfYWdncmVnYXRlX3Jlc3VsdHNfZm9yX3Rlc3QoY2xzLCB0
ZXN0KToKKyAgICAgICAgc3VidGVzdF9yZXN1bHRzID0gY2xzLl9hZ2dyZWdhdGVfcmVzdWx0cyh0
ZXN0Wyd0ZXN0cyddKSBpZiAndGVzdHMnIGluIHRlc3QgZWxzZSB7fQorICAgICAgICByZXN1bHRz
ID0ge30KKyAgICAgICAgZm9yIG1ldHJpY19uYW1lLCBtZXRyaWMgaW4gdGVzdFsnbWV0cmljcydd
Lml0ZXJpdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobWV0cmljLCBsaXN0
KToKKyAgICAgICAgICAgICAgICByZXN1bHRzW21ldHJpY19uYW1lXSA9IHtOb25lOiB7fX0KKyAg
ICAgICAgICAgICAgICBmb3IgY29uZmlnX25hbWUsIHZhbHVlcyBpbiBtZXRyaWMuaXRlcml0ZW1z
KCk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbbWV0cmljX25hbWVdW05vbmVdW2NvbmZp
Z19uYW1lXSA9IGNscy5fZmxhdHRlbl9saXN0KHZhbHVlcykKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorCisgICAgICAgICAgICBhZ2dyZWdhdG9yX2xpc3QgPSBtZXRyaWMKKyAgICAgICAgICAg
IHJlc3VsdHNbbWV0cmljX25hbWVdID0ge30KKyAgICAgICAgICAgIGZvciBhZ2dyZWdhdG9yIGlu
IGFnZ3JlZ2F0b3JfbGlzdDoKKyAgICAgICAgICAgICAgICB2YWx1ZXNfYnlfY29uZmlnX2l0ZXJh
dGlvbiA9IGNscy5fc3VidGVzdF92YWx1ZXNfYnlfY29uZmlnX2l0ZXJhdGlvbihzdWJ0ZXN0X3Jl
c3VsdHMsIG1ldHJpY19uYW1lLCBhZ2dyZWdhdG9yKQorICAgICAgICAgICAgICAgIGZvciBjb25m
aWdfbmFtZSwgdmFsdWVzX2J5X2l0ZXJhdGlvbiBpbiB2YWx1ZXNfYnlfY29uZmlnX2l0ZXJhdGlv
bi5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1ttZXRyaWNfbmFtZV0u
c2V0ZGVmYXVsdChhZ2dyZWdhdG9yLCB7fSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tt
ZXRyaWNfbmFtZV1bYWdncmVnYXRvcl1bY29uZmlnX25hbWVdID0gW2Nscy5fYWdncmVnYXRlX3Zh
bHVlcyhhZ2dyZWdhdG9yLCB2YWx1ZXMpIGZvciB2YWx1ZXMgaW4gdmFsdWVzX2J5X2l0ZXJhdGlv
bl0KKworICAgICAgICByZXR1cm4geydtZXRyaWNzJzogcmVzdWx0cywgJ3Rlc3RzJzogc3VidGVz
dF9yZXN1bHRzfQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9mbGF0dGVuX2xpc3QoY2xz
LCBuZXN0ZWRfbGlzdCk6CisgICAgICAgIGZsYXR0ZW5lZF9saXN0ID0gW10KKyAgICAgICAgZm9y
IGl0ZW0gaW4gbmVzdGVkX2xpc3Q6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIGxp
c3QpOgorICAgICAgICAgICAgICAgIGZsYXR0ZW5lZF9saXN0ICs9IGNscy5fZmxhdHRlbl9saXN0
KGl0ZW0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYXR0ZW5lZF9saXN0
LmFwcGVuZChpdGVtKQorICAgICAgICByZXR1cm4gZmxhdHRlbmVkX2xpc3QKKworICAgIEBjbGFz
c21ldGhvZAorICAgIGRlZiBfc3VidGVzdF92YWx1ZXNfYnlfY29uZmlnX2l0ZXJhdGlvbihjbHMs
IHN1YnRlc3RfcmVzdWx0cywgbWV0cmljX25hbWUsIGFnZ3JlZ2F0b3IpOgorICAgICAgICB2YWx1
ZXNfYnlfY29uZmlnX2l0ZXJhdGlvbiA9IHt9CisgICAgICAgIGZvciBzdWJ0ZXN0X25hbWUsIHN1
YnRlc3QgaW4gc3VidGVzdF9yZXN1bHRzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgcmVzdWx0
c19mb3JfbWV0cmljID0gc3VidGVzdFsnbWV0cmljcyddLmdldChtZXRyaWNfbmFtZSwge30pCisg
ICAgICAgICAgICByZXN1bHRzX2Zvcl9hZ2dyZWdhdG9yID0gcmVzdWx0c19mb3JfbWV0cmljLmdl
dChhZ2dyZWdhdG9yLCByZXN1bHRzX2Zvcl9tZXRyaWMuZ2V0KE5vbmUsIHt9KSkKKyAgICAgICAg
ICAgIGZvciBjb25maWdfbmFtZSwgdmFsdWVzIGluIHJlc3VsdHNfZm9yX2FnZ3JlZ2F0b3IuaXRl
cml0ZW1zKCk6CisgICAgICAgICAgICAgICAgdmFsdWVzX2J5X2NvbmZpZ19pdGVyYXRpb24uc2V0
ZGVmYXVsdChjb25maWdfbmFtZSwgW1tdIGZvciBfIGluIHZhbHVlc10pCisgICAgICAgICAgICAg
ICAgZm9yIGl0ZXJhdGlvbiwgdmFsdWUgaW4gZW51bWVyYXRlKHZhbHVlcyk6CisgICAgICAgICAg
ICAgICAgICAgIHZhbHVlc19ieV9jb25maWdfaXRlcmF0aW9uW2NvbmZpZ19uYW1lXVtpdGVyYXRp
b25dLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHZhbHVlc19ieV9jb25maWdfaXRlcmF0
aW9uCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2FnZ3JlZ2F0ZV92YWx1ZXMoY2xzLCBh
Z2dyZWdhdG9yLCB2YWx1ZXMpOgorICAgICAgICByZXR1cm4gY2xzLmFnZ3JlZ2F0b3JzW2FnZ3Jl
Z2F0b3JdKHZhbHVlcykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbGludF9yZXN1bHRz
KGNscywgdGVzdHMpOgorICAgICAgICBjbHMuX2xpbnRfc3VidGVzdF9yZXN1bHRzKHRlc3RzLCBO
b25lKQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9s
aW50X3N1YnRlc3RfcmVzdWx0cyhjbHMsIHN1YnRlc3RzLCBwYXJlbnRfbmVlZGluZ19hZ2dyZWdh
dGlvbik6CisgICAgICAgIGl0ZXJhdGlvbl9ncm91cHNfYnlfY29uZmlnID0ge30KKyAgICAgICAg
Zm9yIHRlc3RfbmFtZSwgdGVzdCBpbiBzdWJ0ZXN0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAg
IGlmICdtZXRyaWNzJyBub3QgaW4gdGVzdDoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJy
b3IoJyIlcyIgZG9lcyBub3QgY29udGFpbiBtZXRyaWNzJyAlIHRlc3RfbmFtZSkKKworICAgICAg
ICAgICAgbWV0cmljcyA9IHRlc3RbJ21ldHJpY3MnXQorICAgICAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2UobWV0cmljcywgZGljdCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdU
aGUgbWV0cmljcyBpbiAiJXMiIGlzIG5vdCBhIGRpY3Rpb25hcnknICUgdGVzdF9uYW1lKQorCisg
ICAgICAgICAgICBuZWVkc19hZ2dyZWdhdGlvbiA9IEZhbHNlCisgICAgICAgICAgICBmb3IgbWV0
cmljX25hbWUsIG1ldHJpYyBpbiBtZXRyaWNzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgICAg
IGlmIGlzaW5zdGFuY2UobWV0cmljLCBsaXN0KToKKyAgICAgICAgICAgICAgICAgICAgY2xzLl9s
aW50X2FnZ3JlZ2F0b3JfbGlzdCh0ZXN0X25hbWUsIG1ldHJpY19uYW1lLCBtZXRyaWMpCisgICAg
ICAgICAgICAgICAgICAgIG5lZWRzX2FnZ3JlZ2F0aW9uID0gVHJ1ZQorICAgICAgICAgICAgICAg
IGVsaWYgaXNpbnN0YW5jZShtZXRyaWMsIGRpY3QpOgorICAgICAgICAgICAgICAgICAgICBjbHMu
X2xpbnRfY29uZmlndXJhdGlvbih0ZXN0X25hbWUsIG1ldHJpY19uYW1lLCBtZXRyaWMsIHBhcmVu
dF9uZWVkaW5nX2FnZ3JlZ2F0aW9uLCBpdGVyYXRpb25fZ3JvdXBzX2J5X2NvbmZpZykKKyAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyIl
cyIgbWV0cmljIG9mICIlcyIgd2FzIG5vdCBhbiBhZ2dyZWdhdG9yIGxpc3Qgb3IgYSBkaWN0aW9u
YXJ5IG9mIGNvbmZpZ3VyYXRpb25zOiAlcycgJSAobWV0cmljX25hbWUsIHRlc3RfbmFtZSwgc3Ry
KG1ldHJpYykpKQorCisgICAgICAgICAgICBpZiAndGVzdHMnIGluIHRlc3Q6CisgICAgICAgICAg
ICAgICAgY2xzLl9saW50X3N1YnRlc3RfcmVzdWx0cyh0ZXN0Wyd0ZXN0cyddLCB0ZXN0X25hbWUg
aWYgbmVlZHNfYWdncmVnYXRpb24gZWxzZSBOb25lKQorICAgICAgICAgICAgZWxpZiBuZWVkc19h
Z2dyZWdhdGlvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyIlcyIgcmVxdWly
ZXMgYWdncmVnYXRpb24gYnV0ICJTb21lVGVzdCIgaGFzIG5vIHN1YnRlc3RzJyAlICh0ZXN0X25h
bWUpKQorICAgICAgICByZXR1cm4gaXRlcmF0aW9uX2dyb3Vwc19ieV9jb25maWcKKworICAgIEBj
bGFzc21ldGhvZAorICAgIGRlZiBfbGludF9hZ2dyZWdhdG9yX2xpc3QoY2xzLCB0ZXN0X25hbWUs
IG1ldHJpY19uYW1lLCBhZ2dyZWdhdG9yX2xpc3QpOgorICAgICAgICBpZiBsZW4oYWdncmVnYXRv
cl9saXN0KSAhPSBsZW4oc2V0KGFnZ3JlZ2F0b3JfbGlzdCkpOgorICAgICAgICAgICAgcmFpc2Ug
VHlwZUVycm9yKCciJXMiIG1ldHJpYyBvZiAiJXMiIGhhZCBpbnZhbGlkIGFnZ3JlZ2F0b3IgbGlz
dDogJXMnICUgKG1ldHJpY19uYW1lLCB0ZXN0X25hbWUsIGpzb24uZHVtcHMoYWdncmVnYXRvcl9s
aXN0KSkpCisgICAgICAgIGlmIG5vdCBhZ2dyZWdhdG9yX2xpc3Q6CisgICAgICAgICAgICByYWlz
ZSBUeXBlRXJyb3IoJ1RoZSBhZ2dyZWdhdG9yIGxpc3QgaXMgZW1wdHkgaW4gIiVzIiBtZXRyaWMg
b2YgIiVzIicgJSAobWV0cmljX25hbWUsIHRlc3RfbmFtZSkpCisgICAgICAgIGZvciBhZ2dyZWdh
dG9yX25hbWUgaW4gYWdncmVnYXRvcl9saXN0OgorICAgICAgICAgICAgaWYgY2xzLl9pc19udW1l
cmljKGFnZ3JlZ2F0b3JfbmFtZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCci
JXMiIG1ldHJpYyBvZiAiJXMiIGlzIG5vdCB3cmFwcGVkIGJ5IGEgY29uZmlndXJhdGlvbjsgZS5n
LiAiY3VycmVudCInICUgKG1ldHJpY19uYW1lLCB0ZXN0X25hbWUpKQorICAgICAgICAgICAgaWYg
YWdncmVnYXRvcl9uYW1lIG5vdCBpbiBjbHMuYWdncmVnYXRvcnM6CisgICAgICAgICAgICAgICAg
cmFpc2UgVHlwZUVycm9yKCciJXMiIG1ldHJpYyBvZiAiJXMiIHVzZXMgdW5rbm93biBhZ2dyZWdh
dG9yOiAlcycgJSAobWV0cmljX25hbWUsIHRlc3RfbmFtZSwgYWdncmVnYXRvcl9uYW1lKSkKKwor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbGludF9jb25maWd1cmF0aW9uKGNscywgdGVzdF9u
YW1lLCBtZXRyaWNfbmFtZSwgY29uZmlndXJhdGlvbnMsIHBhcmVudF9uZWVkaW5nX2FnZ3JlZ2F0
aW9uLCBpdGVyYXRpb25fZ3JvdXBzX2J5X2NvbmZpZyk6CisgICAgICAgICMgRklYTUU6IENoZWNr
IHRoYXQgY29uZmlnX25hbWUgaXMgYWx3YXlzICJjdXJyZW50Ii4KKyAgICAgICAgZm9yIGNvbmZp
Z19uYW1lLCB2YWx1ZXMgaW4gY29uZmlndXJhdGlvbnMuaXRlcml0ZW1zKCk6CisgICAgICAgICAg
ICBuZXN0ZWRfbGlzdF9jb3VudCA9IFtpc2luc3RhbmNlKHZhbHVlLCBsaXN0KSBmb3IgdmFsdWUg
aW4gdmFsdWVzXS5jb3VudChUcnVlKQorICAgICAgICAgICAgaWYgbmVzdGVkX2xpc3RfY291bnQg
bm90IGluIFswLCBsZW4odmFsdWVzKV06CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9y
KCciJXMiIG1ldHJpYyBvZiAiJXMiIGhhZCBtYWxmb3JtZWQgdmFsdWVzOiAlcycgJSAobWV0cmlj
X25hbWUsIHRlc3RfbmFtZSwganNvbi5kdW1wcyh2YWx1ZXMpKSkKKworICAgICAgICAgICAgaWYg
bmVzdGVkX2xpc3RfY291bnQ6CisgICAgICAgICAgICAgICAgdmFsdWVfc2hhcGUgPSBbXQorICAg
ICAgICAgICAgICAgIGZvciB2YWx1ZV9ncm91cCBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlX3NoYXBlLmFwcGVuZChsZW4odmFsdWVfZ3JvdXApKQorICAgICAgICAgICAgICAg
ICAgICBjbHMuX2xpbnRfdmFsdWVzKHRlc3RfbmFtZSwgbWV0cmljX25hbWUsIHZhbHVlX2dyb3Vw
KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB2YWx1ZV9zaGFwZSA9IGxlbih2
YWx1ZXMpCisgICAgICAgICAgICAgICAgY2xzLl9saW50X3ZhbHVlcyh0ZXN0X25hbWUsIG1ldHJp
Y19uYW1lLCB2YWx1ZXMpCisKKyAgICAgICAgICAgIGl0ZXJhdGlvbl9ncm91cHNfYnlfY29uZmln
LnNldGRlZmF1bHQobWV0cmljX25hbWUsIHt9KS5zZXRkZWZhdWx0KGNvbmZpZ19uYW1lLCB2YWx1
ZV9zaGFwZSkKKyAgICAgICAgICAgIGlmIHBhcmVudF9uZWVkaW5nX2FnZ3JlZ2F0aW9uIGFuZCB2
YWx1ZV9zaGFwZSAhPSBpdGVyYXRpb25fZ3JvdXBzX2J5X2NvbmZpZ1ttZXRyaWNfbmFtZV1bY29u
ZmlnX25hbWVdOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignIiVzIiBtZXRyaWMg
b2YgIiVzIiBoYWQgYSBtaXNtYXRjaGluZyBzdWJ0ZXN0IHZhbHVlcycgJSAobWV0cmljX25hbWUs
IHBhcmVudF9uZWVkaW5nX2FnZ3JlZ2F0aW9uKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiBfbGludF92YWx1ZXMoY2xzLCB0ZXN0X25hbWUsIG1ldHJpY19uYW1lLCB2YWx1ZXMpOgorICAg
ICAgICBpZiBhbnkoW25vdCBjbHMuX2lzX251bWVyaWModmFsdWUpIGZvciB2YWx1ZSBpbiB2YWx1
ZXNdKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignIiVzIiBtZXRyaWMgb2YgIiVzIiBj
b250YWlucyBub24tbnVtZXJpYyB2YWx1ZTogJXMnICUgKG1ldHJpY19uYW1lLCB0ZXN0X25hbWUs
IGpzb24uZHVtcHModmFsdWVzKSkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2lzX251
bWVyaWMoY2xzLCB2YWx1ZSk6CisgICAgICAgIHJldHVybiBpc2luc3RhbmNlKHZhbHVlLCBpbnQp
IG9yIGlzaW5zdGFuY2UodmFsdWUsIGZsb2F0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFya19yZXN1bHRzX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFya19yZXN1bHRz
X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0MTFiZTk3ZTdkZDVhYmMxZDcxYzYyOTVhZGJiNTY5
Yzc3MTk1NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNo
bWFya19ydW5uZXIvYmVuY2htYXJrX3Jlc3VsdHNfdW5pdHRlc3QucHkKQEAgLTAsMCArMSwyNTUg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0
ZXN0CisKK2Zyb20gYmVuY2htYXJrX3Jlc3VsdHMgaW1wb3J0IEJlbmNobWFya1Jlc3VsdHMKKwor
CitjbGFzcyBCZW5jaG1hcmtSZXN1bHRzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVm
IHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgcmVzdWx0cyA9IEJlbmNobWFya1Jlc3VsdHMoeydT
b21lVGVzdCc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFsxLCAyLCAzXX19fX0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cy5fcmVzdWx0cywgeydTb21lVGVzdCc6
IHsnbWV0cmljcyc6IHsnVGltZSc6IHtOb25lOiB7J2N1cnJlbnQnOiBbMSwgMiwgM119fX0sICd0
ZXN0cyc6IHt9fX0pCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChUeXBl
RXJyb3IsIHInIlRpbWUiIG1ldHJpYyBvZiAiU29tZVRlc3QiIGNvbnRhaW5zIG5vbi1udW1lcmlj
IHZhbHVlOiBcWzEsIDIsICJhIlxdJyk6CisgICAgICAgICAgICBCZW5jaG1hcmtSZXN1bHRzKHsn
U29tZVRlc3QnOiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbMSwgMiwgJ2EnXX19
fX0pCisKKyAgICBkZWYgdGVzdF9mb3JtYXQoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IEJlbmNo
bWFya1Jlc3VsdHMoeydTb21lVGVzdCc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6
IFsxLCAyLCAzXX19fX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmZvcm1hdCgp
LCAnU29tZVRlc3Q6VGltZTogMi4wbXMgc3RkZXY9NTAuMCVcbicpCisKKyAgICAgICAgcmVzdWx0
ID0gQmVuY2htYXJrUmVzdWx0cyh7J1NvbWVUZXN0JzogeydtZXRyaWNzJzogeydUaW1lJzogeydj
dXJyZW50JzogWzEsIDIsIDNdfSwgJ1Njb3JlJzogeydjdXJyZW50JzogWzIsIDMsIDRdfX19fSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZm9ybWF0KCksICcnJworU29tZVRlc3Q6
U2NvcmU6IDMuMHB0IHN0ZGV2PTMzLjMlCisgICAgICAgIDpUaW1lOiAyLjBtcyBzdGRldj01MC4w
JQorJycnWzE6XSkKKworICAgICAgICByZXN1bHQgPSBCZW5jaG1hcmtSZXN1bHRzKHsnU29tZVRl
c3QnOiB7CisgICAgICAgICAgICAnbWV0cmljcyc6IHsnVGltZSc6IFsnVG90YWwnLCAnQXJpdGht
ZXRpYyddfSwKKyAgICAgICAgICAgICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAnU3ViVGVz
dDEnOiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbMSwgMiwgM119fX0sCisgICAg
ICAgICAgICAgICAgJ1N1YlRlc3QyJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50Jzog
WzQsIDUsIDZdfX19fX19KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5mb3JtYXQo
KSwgJycnCitTb21lVGVzdDpUaW1lOkFyaXRobWV0aWM6IDMuMG1zIHN0ZGV2PTMzLjMlCisgICAg
ICAgIDpUaW1lOlRvdGFsOiA3LjBtcyBzdGRldj0yOC42JQorICAgICAgICBTdWJUZXN0MTpUaW1l
OiAyLjBtcyBzdGRldj01MC4wJQorICAgICAgICBTdWJUZXN0MjpUaW1lOiA1LjBtcyBzdGRldj0y
MC4wJQorJycnWzE6XSkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdF92YWx1ZXNfd2l0aF9sYXJnZV9l
cnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9m
b3JtYXRfdmFsdWVzKCdSdW5zJywgWzEsIDIsIDNdKSwgJzIuMC9zIHN0ZGV2PTUwLjAlJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdS
dW5zJywgWzEwLCAyMCwgMzBdKSwgJzIwL3Mgc3RkZXY9NTAuMCUnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMTAwLCAy
MDAsIDMwMF0pLCAnMjAwL3Mgc3RkZXY9NTAuMCUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMTAwMCwgMjAwMCwgMzAw
MF0pLCAnMi4wSy9zIHN0ZGV2PTUwLjAlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5j
aG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdSdW5zJywgWzEwMDAwLCAyMDAwMCwgMzAwMDBd
KSwgJzIwSy9zIHN0ZGV2PTUwLjAlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1h
cmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdSdW5zJywgWzEwMDAwMCwgMjAwMDAwLCAzMDAwMDBd
KSwgJzIwMEsvcyBzdGRldj01MC4wJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2ht
YXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygnUnVucycsIFsxMDAwMDAwLCAyMDAwMDAwLCAzMDAw
MDAwXSksICcyLjBNL3Mgc3RkZXY9NTAuMCUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJl
bmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMC4xLCAwLjIsIDAuM10pLCAn
MjAwbS9zIHN0ZGV2PTUwLjAlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtS
ZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdSdW5zJywgWzAuMDEsIDAuMDIsIDAuMDNdKSwgJzIwbS9z
IHN0ZGV2PTUwLjAlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRz
Ll9mb3JtYXRfdmFsdWVzKCdSdW5zJywgWzAuMDAxLCAwLjAwMiwgMC4wMDNdKSwgJzIuMG0vcyBz
dGRldj01MC4wJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5f
Zm9ybWF0X3ZhbHVlcygnUnVucycsIFswLjAwMDEsIDAuMDAwMiwgMC4wMDAzXSksICcyMDB1L3Mg
c3RkZXY9NTAuMCUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMu
X2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMC4wMDAwMSwgMC4wMDAwMiwgMC4wMDAwM10pLCAnMjB1
L3Mgc3RkZXY9NTAuMCUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3Vs
dHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMC4wMDAwMDEsIDAuMDAwMDAyLCAwLjAwMDAwM10p
LCAnMi4wdS9zIHN0ZGV2PTUwLjAlJykKKworICAgIGRlZiB0ZXN0X2Zvcm1hdF92YWx1ZXNfd2l0
aF9zbWFsbF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtS
ZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdSdW5zJywgWzEuMSwgMS4yLCAxLjNdKSwgJzEuMjAvcyBz
dGRldj04LjMlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9m
b3JtYXRfdmFsdWVzKCdSdW5zJywgWzExLCAxMiwgMTNdKSwgJzEyLjAvcyBzdGRldj04LjMlJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVz
KCdSdW5zJywgWzExMCwgMTIwLCAxMzBdKSwgJzEyMC9zIHN0ZGV2PTguMyUnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBb
MTEwMCwgMTIwMCwgMTMwMF0pLCAnMS4yMEsvcyBzdGRldj04LjMlJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdSdW5zJywgWzExMDAw
LCAxMjAwMCwgMTMwMDBdKSwgJzEyLjBLL3Mgc3RkZXY9OC4zJScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygnUnVucycsIFsxMTAwMDAs
IDEyMDAwMCwgMTMwMDAwXSksICcxMjBLL3Mgc3RkZXY9OC4zJScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygnUnVucycsIFsxMTAwMDAw
LCAxMjAwMDAwLCAxMzAwMDAwXSksICcxLjIwTS9zIHN0ZGV2PTguMyUnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMC4x
MSwgMC4xMiwgMC4xM10pLCAnMTIwbS9zIHN0ZGV2PTguMyUnKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBbMC4wMTEsIDAu
MDEyLCAwLjAxM10pLCAnMTIuMG0vcyBzdGRldj04LjMlJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdSdW5zJywgWzAuMDAxMSwgMC4w
MDEyLCAwLjAwMTNdKSwgJzEuMjBtL3Mgc3RkZXY9OC4zJScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygnUnVucycsIFswLjAwMDExLCAw
LjAwMDEyLCAwLjAwMDEzXSksICcxMjB1L3Mgc3RkZXY9OC4zJScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygnUnVucycsIFswLjAwMDAx
MSwgMC4wMDAwMTIsIDAuMDAwMDEzXSksICcxMi4wdS9zIHN0ZGV2PTguMyUnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1J1bnMnLCBb
MC4wMDAwMDExLCAwLjAwMDAwMTIsIDAuMDAwMDAxM10pLCAnMS4yMHUvcyBzdGRldj04LjMlJykK
KworICAgIGRlZiB0ZXN0X2Zvcm1hdF92YWx1ZXNfd2l0aF90aW1lKHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1RpbWUnLCBb
MSwgMiwgM10pLCAnMi4wbXMgc3RkZXY9NTAuMCUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1RpbWUnLCBbMTAsIDIwLCAzMF0pLCAn
MjBtcyBzdGRldj01MC4wJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVz
dWx0cy5fZm9ybWF0X3ZhbHVlcygnVGltZScsIFsxMDAsIDIwMCwgMzAwXSksICcyMDBtcyBzdGRl
dj01MC4wJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9y
bWF0X3ZhbHVlcygnVGltZScsIFsxMDAwLCAyMDAwLCAzMDAwXSksICcyLjBzIHN0ZGV2PTUwLjAl
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFs
dWVzKCdUaW1lJywgWzEwMDAwLCAyMDAwMCwgMzAwMDBdKSwgJzIwcyBzdGRldj01MC4wJScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygn
VGltZScsIFsxMDAwMDAsIDIwMDAwMCwgMzAwMDAwXSksICcyMDBzIHN0ZGV2PTUwLjAlJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdU
aW1lJywgWzAuMTEsIDAuMTIsIDAuMTNdKSwgJzEyMHVzIHN0ZGV2PTguMyUnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1RpbWUnLCBb
MC4wMTEsIDAuMDEyLCAwLjAxM10pLCAnMTIuMHVzIHN0ZGV2PTguMyUnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1RpbWUnLCBbMC4w
MDExLCAwLjAwMTIsIDAuMDAxM10pLCAnMS4yMHVzIHN0ZGV2PTguMyUnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKEJlbmNobWFya1Jlc3VsdHMuX2Zvcm1hdF92YWx1ZXMoJ1RpbWUnLCBbMC4w
MDAxMSwgMC4wMDAxMiwgMC4wMDAxM10pLCAnMTIwbnMgc3RkZXY9OC4zJScpCisKKyAgICBkZWYg
dGVzdF9mb3JtYXRfdmFsdWVzX3dpdGhfbm9fZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fZm9ybWF0X3ZhbHVlcygnVGltZScsIFsxLCAxLCAx
XSksICcxLjAwbXMgc3RkZXY9MC4wJScpCisKKyAgICBkZWYgdGVzdF9mb3JtYXRfdmFsdWVzX3dp
dGhfc21hbGxfZGlmZmVyZW5jZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5j
aG1hcmtSZXN1bHRzLl9mb3JtYXRfdmFsdWVzKCdUaW1lJywgWzUsIDQsIDQsIDQsIDQsIDQsIDQs
IDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDRdKSwKKyAgICAgICAgICAgICc0
LjA1bXMgc3RkZXY9NS41JScpCisKKyAgICBkZWYgdGVzdF9hZ2dyZWdhdGVfcmVzdWx0cyhzZWxm
KToKKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KEJlbmNobWFya1Jlc3VsdHMuX2FnZ3JlZ2F0ZV9yZXN1bHRzKAorICAgICAgICAgICAgeydTb21l
VGVzdCc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFsxLCAyLCAzXX19fX0pLAor
ICAgICAgICAgICAgeydTb21lVGVzdCc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHtOb25lOiB7J2N1
cnJlbnQnOiBbMSwgMiwgM119fX0sICd0ZXN0cyc6IHt9fX0pCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChCZW5jaG1hcmtSZXN1bHRzLl9hZ2dyZWdhdGVfcmVzdWx0cygKKyAgICAgICAgICAg
IHsnU29tZVRlc3QnOiB7CisgICAgICAgICAgICAgICAgJ21ldHJpY3MnOiB7J1RpbWUnOiBbJ1Rv
dGFsJ119LAorICAgICAgICAgICAgICAgICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAgICAg
J1N1YlRlc3QxJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50JzogWzEsIDIsIDNdfX19
LAorICAgICAgICAgICAgICAgICAgICAnU3ViVGVzdDInOiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7
J2N1cnJlbnQnOiBbNCwgNSwgNl19fX19fX0pLAorICAgICAgICAgICAgeydTb21lVGVzdCc6IHsK
KyAgICAgICAgICAgICAgICAnbWV0cmljcyc6IHsnVGltZSc6IHsnVG90YWwnOiB7J2N1cnJlbnQn
OiBbNSwgNywgOV19fX0sCisgICAgICAgICAgICAgICAgJ3Rlc3RzJzogeworICAgICAgICAgICAg
ICAgICAgICAnU3ViVGVzdDEnOiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7Tm9uZTogeydjdXJyZW50
JzogWzEsIDIsIDNdfX19LCAndGVzdHMnOiB7fX0sCisgICAgICAgICAgICAgICAgICAgICdTdWJU
ZXN0Mic6IHsnbWV0cmljcyc6IHsnVGltZSc6IHtOb25lOiB7J2N1cnJlbnQnOiBbNCwgNSwgNl19
fX0sICd0ZXN0cyc6IHt9fX19fSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJlbmNobWFy
a1Jlc3VsdHMuX2FnZ3JlZ2F0ZV9yZXN1bHRzKAorICAgICAgICAgICAgeydTb21lVGVzdCc6IHsK
KyAgICAgICAgICAgICAgICAnbWV0cmljcyc6IHsnVGltZSc6IFsnVG90YWwnXSwgJ1J1bnMnOiBb
J1RvdGFsJ119LAorICAgICAgICAgICAgICAgICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAg
ICAgJ1N1YlRlc3QxJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50JzogWzEsIDIsIDNd
fX19LAorICAgICAgICAgICAgICAgICAgICAnU3ViVGVzdDInOiB7J21ldHJpY3MnOiB7J1RpbWUn
OiB7J2N1cnJlbnQnOiBbNCwgNSwgNl19fX0sCisgICAgICAgICAgICAgICAgICAgICdTdWJUZXN0
Myc6IHsnbWV0cmljcyc6IHsnUnVucyc6IHsnY3VycmVudCc6IFs3LCA4LCA5XX19fX19fSksCisg
ICAgICAgICAgICB7J1NvbWVUZXN0JzogeworICAgICAgICAgICAgICAgICdtZXRyaWNzJzogewor
ICAgICAgICAgICAgICAgICAgICAnVGltZSc6IHsnVG90YWwnOiB7J2N1cnJlbnQnOiBbNSwgNywg
OV19fSwKKyAgICAgICAgICAgICAgICAgICAgJ1J1bnMnOiB7J1RvdGFsJzogeydjdXJyZW50Jzog
WzcsIDgsIDldfX19LAorICAgICAgICAgICAgICAgICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAg
ICAgICAgJ1N1YlRlc3QxJzogeydtZXRyaWNzJzogeydUaW1lJzoge05vbmU6IHsnY3VycmVudCc6
IFsxLCAyLCAzXX19fSwgJ3Rlc3RzJzoge319LAorICAgICAgICAgICAgICAgICAgICAnU3ViVGVz
dDInOiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7Tm9uZTogeydjdXJyZW50JzogWzQsIDUsIDZdfX19
LCAndGVzdHMnOiB7fX0sCisgICAgICAgICAgICAgICAgICAgICdTdWJUZXN0Myc6IHsnbWV0cmlj
cyc6IHsnUnVucyc6IHtOb25lOiB7J2N1cnJlbnQnOiBbNywgOCwgOV19fX0sICd0ZXN0cyc6IHt9
fX19fSkKKworICAgIGRlZiB0ZXN0X2FnZ3JlZ2F0ZV9yZXN1bHRzX3dpdGhfZ3JvcHVzKHNlbGYp
OgorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
QmVuY2htYXJrUmVzdWx0cy5fYWdncmVnYXRlX3Jlc3VsdHMoCisgICAgICAgICAgICB7J1NvbWVU
ZXN0JzogeworICAgICAgICAgICAgICAgICdtZXRyaWNzJzogeydUaW1lJzogWydUb3RhbCddfSwK
KyAgICAgICAgICAgICAgICAndGVzdHMnOiB7CisgICAgICAgICAgICAgICAgICAgICdTdWJUZXN0
MSc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFtbMSwgMl0sIFszLCA0XV19fX0s
CisgICAgICAgICAgICAgICAgICAgICdTdWJUZXN0Mic6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsn
Y3VycmVudCc6IFtbNSwgNl0sIFs3LCA4XV19fX19fX0pLAorICAgICAgICAgICAgeydTb21lVGVz
dCc6IHsKKyAgICAgICAgICAgICAgICAnbWV0cmljcyc6IHsnVGltZSc6IHsnVG90YWwnOiB7J2N1
cnJlbnQnOiBbNiwgOCwgMTAsIDEyXX19fSwKKyAgICAgICAgICAgICAgICAndGVzdHMnOiB7Cisg
ICAgICAgICAgICAgICAgICAgICdTdWJUZXN0MSc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHtOb25l
OiB7J2N1cnJlbnQnOiBbMSwgMiwgMywgNF19fX0sICd0ZXN0cyc6IHt9fSwKKyAgICAgICAgICAg
ICAgICAgICAgJ1N1YlRlc3QyJzogeydtZXRyaWNzJzogeydUaW1lJzoge05vbmU6IHsnY3VycmVu
dCc6IFs1LCA2LCA3LCA4XX19fSwgJ3Rlc3RzJzoge319fX19KQorCisgICAgZGVmIHRlc3RfYWdn
cmVnYXRlX25lc3RlZF9yZXN1bHRzKHNlbGYpOgorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25l
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmVuY2htYXJrUmVzdWx0cy5fYWdncmVnYXRlX3Jl
c3VsdHMoCisgICAgICAgICAgICB7J1NvbWVUZXN0JzogeworICAgICAgICAgICAgICAgICdtZXRy
aWNzJzogeydUaW1lJzogWydUb3RhbCddfSwKKyAgICAgICAgICAgICAgICAndGVzdHMnOiB7Cisg
ICAgICAgICAgICAgICAgICAgICdTdWJUZXN0MSc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdtZXRyaWNzJzogeydUaW1lJzogWydUb3RhbCddfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3JhbmRDaGlsZDEnOiB7
J21ldHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbMSwgMl19fX0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0dyYW5kQ2hpbGQyJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJy
ZW50JzogWzMsIDRdfX19fX0sCisgICAgICAgICAgICAgICAgICAgICdTdWJUZXN0Mic6IHsnbWV0
cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFs1LCA2XX19fX19fSksCisgICAgICAgICAgICB7
J1NvbWVUZXN0JzogeworICAgICAgICAgICAgICAgICdtZXRyaWNzJzogeydUaW1lJzogeydUb3Rh
bCc6IHsnY3VycmVudCc6IFs5LCAxMl19fX0sCisgICAgICAgICAgICAgICAgJ3Rlc3RzJzogewor
ICAgICAgICAgICAgICAgICAgICAnU3ViVGVzdDEnOiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAnbWV0cmljcyc6IHsnVGltZSc6IHsnVG90YWwnOiB7J2N1cnJlbnQnOiBbNCwgNl19fX0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMnOiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0dyYW5kQ2hpbGQxJzogeydtZXRyaWNzJzogeydUaW1lJzoge05vbmU6IHsnY3VycmVu
dCc6IFsxLCAyXX19fSwgJ3Rlc3RzJzoge319LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdHcmFuZENoaWxkMic6IHsnbWV0cmljcyc6IHsnVGltZSc6IHtOb25lOiB7J2N1cnJlbnQnOiBb
MywgNF19fX0sICd0ZXN0cyc6IHt9fX19LAorICAgICAgICAgICAgICAgICAgICAnU3ViVGVzdDIn
OiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7Tm9uZTogeydjdXJyZW50JzogWzUsIDZdfX19LCAndGVz
dHMnOiB7fX19fX0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCZW5jaG1hcmtSZXN1bHRz
Ll9hZ2dyZWdhdGVfcmVzdWx0cygKKyAgICAgICAgICAgIHsnU29tZVRlc3QnOiB7CisgICAgICAg
ICAgICAgICAgJ21ldHJpY3MnOiB7J1RpbWUnOiBbJ1RvdGFsJ119LAorICAgICAgICAgICAgICAg
ICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ1N1YlRlc3QxJzogeworICAgICAgICAg
ICAgICAgICAgICAgICAgJ21ldHJpY3MnOiB7J1RpbWUnOiBbJ1RvdGFsJywgJ0FyaXRobWV0aWMn
XX0sCisgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMnOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0dyYW5kQ2hpbGQxJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50
JzogWzEsIDJdfX19LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHcmFuZENoaWxkMic6
IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFszLCA0XX19fX19LAorICAgICAgICAg
ICAgICAgICAgICAnU3ViVGVzdDInOiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBb
NSwgNl19fX19fX0pLAorICAgICAgICAgICAgeydTb21lVGVzdCc6IHsKKyAgICAgICAgICAgICAg
ICAnbWV0cmljcyc6IHsnVGltZSc6IHsnVG90YWwnOiB7J2N1cnJlbnQnOiBbOSwgMTJdfX19LAor
ICAgICAgICAgICAgICAgICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ1N1YlRlc3Qx
JzogeworICAgICAgICAgICAgICAgICAgICAgICAgJ21ldHJpY3MnOiB7J1RpbWUnOiB7J1RvdGFs
JzogeydjdXJyZW50JzogWzQsIDZdfSwgJ0FyaXRobWV0aWMnOiB7J2N1cnJlbnQnOiBbMiwgM119
fX0sCisgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMnOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0dyYW5kQ2hpbGQxJzogeydtZXRyaWNzJzogeydUaW1lJzoge05vbmU6IHsn
Y3VycmVudCc6IFsxLCAyXX19fSwgJ3Rlc3RzJzoge319LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdHcmFuZENoaWxkMic6IHsnbWV0cmljcyc6IHsnVGltZSc6IHtOb25lOiB7J2N1cnJl
bnQnOiBbMywgNF19fX0sICd0ZXN0cyc6IHt9fX19LAorICAgICAgICAgICAgICAgICAgICAnU3Vi
VGVzdDInOiB7J21ldHJpY3MnOiB7J1RpbWUnOiB7Tm9uZTogeydjdXJyZW50JzogWzUsIDZdfX19
LCAndGVzdHMnOiB7fX19fX0pCisKKyAgICBkZWYgdGVzdF9saW50X3Jlc3VsdHMoc2VsZik6Cisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoVHlwZUVycm9yLCByJyJTb21lVGVz
dCIgZG9lcyBub3QgY29udGFpbiBtZXRyaWNzJyk6CisgICAgICAgICAgICBCZW5jaG1hcmtSZXN1
bHRzLl9saW50X3Jlc3VsdHMoeydTb21lVGVzdCc6IHt9fSkKKworICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzUmVnZXhwKFR5cGVFcnJvciwgcidUaGUgbWV0cmljcyBpbiAiU29tZVRlc3Qi
IGlzIG5vdCBhIGRpY3Rpb25hcnknKToKKyAgICAgICAgICAgIEJlbmNobWFya1Jlc3VsdHMuX2xp
bnRfcmVzdWx0cyh7J1NvbWVUZXN0JzogeydtZXRyaWNzJzogW119fSkKKworICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKFR5cGVFcnJvciwgcidUaGUgYWdncmVnYXRvciBsaXN0
IGlzIGVtcHR5IGluICJUaW1lIiBtZXRyaWMgb2YgIlNvbWVUZXN0IicpOgorICAgICAgICAgICAg
QmVuY2htYXJrUmVzdWx0cy5fbGludF9yZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJpY3MnOiB7
J1RpbWUnOiBbXX19fSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKFR5
cGVFcnJvciwgciciVGltZSIgbWV0cmljIG9mICJTb21lVGVzdCIgaXMgbm90IHdyYXBwZWQgYnkg
YSBjb25maWd1cmF0aW9uOyBlLmcuICJjdXJyZW50IicpOgorICAgICAgICAgICAgQmVuY2htYXJr
UmVzdWx0cy5fbGludF9yZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJpY3MnOiB7J1RpbWUnOiBb
MSwgMl19fX0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEJlbmNobWFya1Jlc3VsdHMuX2xp
bnRfcmVzdWx0cyh7J1NvbWVUZXN0JzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50Jzog
WzEsIDJdfX19fSkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChUeXBl
RXJyb3IsIHInIlRpbWUiIG1ldHJpYyBvZiAiU29tZVRlc3QiIHdhcyBub3QgYW4gYWdncmVnYXRv
ciBsaXN0IG9yIGEgZGljdGlvbmFyeSBvZiBjb25maWd1cmF0aW9uczogMScpOgorICAgICAgICAg
ICAgQmVuY2htYXJrUmVzdWx0cy5fbGludF9yZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJpY3Mn
OiB7J1RpbWUnOiAxfX19KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAo
VHlwZUVycm9yLCByJyJUaW1lIiBtZXRyaWMgb2YgIlNvbWVUZXN0IiBjb250YWlucyBub24tbnVt
ZXJpYyB2YWx1ZTogXFsiVG90YWwiXF0nKToKKyAgICAgICAgICAgIEJlbmNobWFya1Jlc3VsdHMu
X2xpbnRfcmVzdWx0cyh7J1NvbWVUZXN0JzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50
JzogWydUb3RhbCddfX19fSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhw
KFR5cGVFcnJvciwgciciVGltZSIgbWV0cmljIG9mICJTb21lVGVzdCIgY29udGFpbnMgbm9uLW51
bWVyaWMgdmFsdWU6IFxbIlRvdGFsIiwgIkdlb21ldHJpYyJcXScpOgorICAgICAgICAgICAgQmVu
Y2htYXJrUmVzdWx0cy5fbGludF9yZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJpY3MnOiB7J1Rp
bWUnOiB7J2N1cnJlbnQnOiBbWydUb3RhbCcsICdHZW9tZXRyaWMnXV19fX19KQorCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoVHlwZUVycm9yLCByJyJTb21lVGVzdCIgcmVx
dWlyZXMgYWdncmVnYXRpb24gYnV0ICJTb21lVGVzdCIgaGFzIG5vIHN1YnRlc3RzJyk6CisgICAg
ICAgICAgICBCZW5jaG1hcmtSZXN1bHRzLl9saW50X3Jlc3VsdHMoeydTb21lVGVzdCc6IHsnbWV0
cmljcyc6IHsnVGltZSc6IFsnVG90YWwnXX19fSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzUmVnZXhwKFR5cGVFcnJvciwgciciVGltZSIgbWV0cmljIG9mICJTb21lVGVzdCIgaGFk
IGludmFsaWQgYWdncmVnYXRvciBsaXN0OiBcWyJUb3RhbCIsICJUb3RhbCJcXScpOgorICAgICAg
ICAgICAgQmVuY2htYXJrUmVzdWx0cy5fbGludF9yZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJp
Y3MnOiB7J1RpbWUnOiBbJ1RvdGFsJywgJ1RvdGFsJ119LCAndGVzdHMnOiB7CisgICAgICAgICAg
ICAgICAgJ1N1YlRlc3QxJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50JzogW119fX19
fX0pCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChUeXBlRXJyb3IsIHIn
IlRpbWUiIG1ldHJpYyBvZiAiU29tZVRlc3QiIHVzZXMgdW5rbm93biBhZ2dyZWdhdG9yOiBLaXR0
ZW5NZWFuJyk6CisgICAgICAgICAgICBCZW5jaG1hcmtSZXN1bHRzLl9saW50X3Jlc3VsdHMoeydT
b21lVGVzdCc6IHsnbWV0cmljcyc6IHsnVGltZSc6IFsnS2l0dGVuTWVhbiddfSwgJ3Rlc3RzJzog
eworICAgICAgICAgICAgICAgICdTdWJUZXN0MSc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3Vy
cmVudCc6IFtdfX19fX19KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAo
VHlwZUVycm9yLCByJyJUaW1lIiBtZXRyaWMgb2YgIlNvbWVUZXN0IiBoYWQgYSBtaXNtYXRjaGlu
ZyBzdWJ0ZXN0IHZhbHVlcycpOgorICAgICAgICAgICAgQmVuY2htYXJrUmVzdWx0cy5fbGludF9y
ZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJpY3MnOiB7J1RpbWUnOiBbJ1RvdGFsJ119LCAndGVz
dHMnOiB7CisgICAgICAgICAgICAgICAgJ1N1YlRlc3QxJzogeydtZXRyaWNzJzogeydUaW1lJzog
eydjdXJyZW50JzogWzEsIDIsIDNdfX19LAorICAgICAgICAgICAgICAgICdTdWJUZXN0Mic6IHsn
bWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFs0LCA1LCA2LCA3XX19fX19fSkKKworICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKFR5cGVFcnJvciwgciciVGltZSIgbWV0
cmljIG9mICJTb21lVGVzdCIgaGFkIGEgbWlzbWF0Y2hpbmcgc3VidGVzdCB2YWx1ZXMnKToKKyAg
ICAgICAgICAgIEJlbmNobWFya1Jlc3VsdHMuX2xpbnRfcmVzdWx0cyh7J1NvbWVUZXN0Jzogeydt
ZXRyaWNzJzogeydUaW1lJzogWydUb3RhbCddfSwgJ3Rlc3RzJzogeworICAgICAgICAgICAgICAg
ICdTdWJUZXN0MSc6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFtbMSwgMl0sIFsz
XV19fX0sCisgICAgICAgICAgICAgICAgJ1N1YlRlc3QyJzogeydtZXRyaWNzJzogeydUaW1lJzog
eydjdXJyZW50JzogW1s0LCA1XSwgWzYsIDddXX19fX19fSkKKworICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzUmVnZXhwKFR5cGVFcnJvciwgciciVGltZSIgbWV0cmljIG9mICJTb21lVGVz
dCIgaGFkIG1hbGZvcm1lZCB2YWx1ZXM6IFxbMSwgXFsyXF0sIDNcXScpOgorICAgICAgICAgICAg
QmVuY2htYXJrUmVzdWx0cy5fbGludF9yZXN1bHRzKHsnU29tZVRlc3QnOiB7J21ldHJpY3MnOiB7
J1RpbWUnOiB7J2N1cnJlbnQnOiBbMSwgWzJdLCAzXX19fX0pCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKEJlbmNobWFya1Jlc3VsdHMuX2xpbnRfcmVzdWx0cyh7J1NvbWVUZXN0JzogeydtZXRy
aWNzJzogeydUaW1lJzogWydUb3RhbCddfSwgJ3Rlc3RzJzogeworICAgICAgICAgICAgJ1N1YlRl
c3QxJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50JzogWzEsIDIsIDNdfX19LAorICAg
ICAgICAgICAgJ1N1YlRlc3QyJzogeydtZXRyaWNzJzogeydUaW1lJzogeydjdXJyZW50JzogWzQs
IDUsIDZdLCAnYmFzZWxpbmUnOiBbN119fX19fX0pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShCZW5jaG1hcmtSZXN1bHRzLl9saW50X3Jlc3VsdHMoeydTb21lVGVzdCc6IHsnbWV0cmljcyc6
IHsnVGltZSc6IFsnVG90YWwnXX0sICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICdTdWJUZXN0MSc6
IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFsxLCAyLCAzXX19fSwKKyAgICAgICAg
ICAgICdTdWJUZXN0Mic6IHsnbWV0cmljcyc6IHsnUnVucyc6IHsnY3VycmVudCc6IFs0LCA1LCA2
LCA3XX19fX19fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEJlbmNobWFya1Jlc3VsdHMu
X2xpbnRfcmVzdWx0cyh7J1NvbWVUZXN0JzogeydtZXRyaWNzJzogeydUaW1lJzogWydUb3RhbCdd
fSwgJ3Rlc3RzJzogeworICAgICAgICAgICAgJ1N1YlRlc3QxJzogeydtZXRyaWNzJzogeydUaW1l
JzogeydjdXJyZW50JzogW1sxLCAyXSwgWzMsIDRdXX19fSwKKyAgICAgICAgICAgICdTdWJUZXN0
Mic6IHsnbWV0cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFtbNSwgNl0sIFs3LCA4XV19fX19
fX0pKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVy
L2JlbmNobWFya19ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19y
dW5uZXIvYmVuY2htYXJrX3J1bm5lci5weQppbmRleCBmYWViODUyMjNjYTU1YTYzNjFmNDRjMGFi
MWUzMTEyMWE0YjUwN2QzLi44MWE1NjMyMTU2M2ExOTU0Njc5MGQwZjRjZjA5ZDdjNmEyNzE3ZDUw
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVu
Y2htYXJrX3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19y
dW5uZXIvYmVuY2htYXJrX3J1bm5lci5weQpAQCAtMTIsNiArMTIsNyBAQCBpbXBvcnQgb3MKIGlt
cG9ydCB1cmxwYXJzZQogCiBmcm9tIGJlbmNobWFya19idWlsZGVyLmJlbmNobWFya19idWlsZGVy
X2ZhY3RvcnkgaW1wb3J0IEJlbmNobWFya0J1aWxkZXJGYWN0b3J5Citmcm9tIGJlbmNobWFya19y
ZXN1bHRzIGltcG9ydCBCZW5jaG1hcmtSZXN1bHRzCiBmcm9tIGJyb3dzZXJfZHJpdmVyLmJyb3dz
ZXJfZHJpdmVyX2ZhY3RvcnkgaW1wb3J0IEJyb3dzZXJEcml2ZXJGYWN0b3J5CiBmcm9tIGh0dHBf
c2VydmVyX2RyaXZlci5odHRwX3NlcnZlcl9kcml2ZXJfZmFjdG9yeSBpbXBvcnQgSFRUUFNlcnZl
ckRyaXZlckZhY3RvcnkKIGZyb20gdXRpbHMgaW1wb3J0IGxvYWRNb2R1bGUsIGdldFBhdGhGcm9t
UHJvamVjdFJvb3QKQEAgLTkxLDYgKzkyLDcgQEAgY2xhc3MgQmVuY2htYXJrUnVubmVyKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdFbmQgb2YgJWQgaXRlcmF0aW9uIG9mIGN1
cnJlbnQgYmVuY2htYXJrJyAlICh4ICsgMSkpCiAgICAgICAgIHJlc3VsdHMgPSBzZWxmLndyYXAo
cmVzdWx0cykKICAgICAgICAgc2VsZi5kdW1wKHJlc3VsdHMsIHNlbGYub3V0cHV0RmlsZSBpZiBz
ZWxmLm91dHB1dEZpbGUgZWxzZSBzZWxmLnBsYW5bJ291dHB1dF9maWxlJ10pCisgICAgICAgIHNl
bGYuc2hvd19yZXN1bHRzKHJlc3VsdHMpCiAgICAgICAgIGJlbmNobWFya0J1aWxkZXIuY2xlYW4o
KQogICAgICAgICByZXR1cm4gMAogCkBAIC0xMDYsMTMgKzEwOCwxMyBAQCBjbGFzcyBCZW5jaG1h
cmtSdW5uZXIob2JqZWN0KToKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB3cmFwKGNscywg
ZGljdHMpOgotICAgICAgICBfbG9nLmluZm8oJ01lcmdpbmcgZm9sbG93aW5nIHJlc3VsdHM6XG4l
cycsIGpzb24uZHVtcHMoZGljdHMpKQorICAgICAgICBfbG9nLmRlYnVnKCdNZXJnaW5nIGZvbGxv
d2luZyByZXN1bHRzOlxuJXMnLCBqc29uLmR1bXBzKGRpY3RzKSkKICAgICAgICAgaWYgbm90IGRp
Y3RzOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgcmV0ID0ge30KICAgICAgICAg
Zm9yIGRpYyBpbiBkaWN0czoKICAgICAgICAgICAgIHJldCA9IGNscy5tZXJnZShyZXQsIGRpYykK
LSAgICAgICAgX2xvZy5pbmZvKCdSZXN1bHRzIGFmdGVyIG1lcmdpbmc6XG4lcycsIGpzb24uZHVt
cHMocmV0KSkKKyAgICAgICAgX2xvZy5kZWJ1ZygnUmVzdWx0cyBhZnRlciBtZXJnaW5nOlxuJXMn
LCBqc29uLmR1bXBzKHJldCkpCiAgICAgICAgIHJldHVybiByZXQKIAogICAgIEBjbGFzc21ldGhv
ZApAQCAtMTM1LDMgKzEzNyw4IEBAIGNsYXNzIEJlbmNobWFya1J1bm5lcihvYmplY3QpOgogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgICAjIGZvciBvdGhlciB0eXBlcwogICAgICAg
ICByZXR1cm4gYSArIGIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzaG93X3Jlc3VsdHMo
Y2xzLCByZXN1bHRzKToKKyAgICAgICAgcmVzdWx0cyA9IEJlbmNobWFya1Jlc3VsdHMocmVzdWx0
cykKKyAgICAgICAgcHJpbnQgcmVzdWx0cy5mb3JtYXQoKQo=
</data>
<flag name="review"
          id="278704"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>