<?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>91175</bug_id>
          
          <creation_ts>2012-07-12 17:43:54 -0700</creation_ts>
          <short_desc>test-webkitpy: rename test_finder to finder</short_desc>
          <delta_ts>2012-07-12 19:01:18 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>668452</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-12 17:43:54 -0700</bug_when>
    <thetext>test-webkitpy: rename test_finder to finder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668454</commentid>
    <comment_count>1</comment_count>
      <attachid>152112</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-12 17:44:48 -0700</bug_when>
    <thetext>Created attachment 152112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668504</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-12 19:01:18 -0700</bug_when>
    <thetext>Committed r122536: &lt;http://trac.webkit.org/changeset/122536&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152112</attachid>
            <date>2012-07-12 17:44:48 -0700</date>
            <delta_ts>2012-07-12 18:23:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91175-20120712174447.patch</filename>
            <type>text/plain</type>
            <size>30679</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNDkzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODgzMjJlNjFmNDRkNWQ5NzdjOWYxYzIwOWU4YjI1YzZm
ZmYwMzk3OC4uODJkNDA4NGYzNzViNjZlZmQ0OGI0MDE1ZGExZGRkMzk2NjFlYzQyMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDEyLTA3LTEyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHRlc3Qtd2Via2l0cHk6IHJlbmFtZSB0ZXN0X2ZpbmRlciB0byBmaW5kZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMTc1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIHRlc3RfZmlu
ZGVyIC0+IGZpbmRlciwgVGVzdEZpbmRlciAtPiBGaW5kZXIgdG8gcmVtb3ZlCisgICAgICAgIHNv
bWUgb2YgdGhlIHN0dXR0ZXIgaW4gdGhlIG5hbWVzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90ZXN0L2ZpbmRlci5weTogUmVuYW1lZCBmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGVzdC90ZXN0X2ZpbmRlci5weS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvZmlu
ZGVyX3VuaXR0ZXN0LnB5OiBSZW5hbWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0
L3Rlc3RfZmluZGVyX3VuaXR0ZXN0LnB5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVz
dC9tYWluLnB5OgorICAgICAgICAoVGVzdGVyLl9faW5pdF9fKToKKwogMjAxMi0wNy0xMiAgVG9u
eSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3Zl
IGRyYWcgYW5kIGRyb3AgQVBJIG1ldGhvZHMgdGhhdCBhcmUgbm8gbG9uZ2VyIHVzZWQKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9maW5kZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rlc3QvZmluZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwNzgxYzRhZGU3MDU2Yzgx
ZWNmNjdhM2JmYTMwMDZhNTIzNTQ2ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rlc3QvZmluZGVyLnB5CkBAIC0wLDAgKzEsMTgwIEBACisjIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUsIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVr
IChjamVyZG9uZWtAd2Via2l0Lm9yZykKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIiIidGhpcyBtb2R1bGUgaXMgcmVzcG9uc2libGUgZm9yIGZpbmRpbmcgcHl0
aG9uIHRlc3RzLiIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisK
KworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIFRlc3REaXJl
Y3RvcnlUcmVlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVzeXN0ZW0sIHRv
cF9kaXJlY3RvcnksIHN0YXJ0aW5nX3N1YmRpcmVjdG9yeSk6CisgICAgICAgIHNlbGYuZmlsZXN5
c3RlbSA9IGZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi50b3BfZGlyZWN0b3J5ID0gZmlsZXN5c3Rl
bS5yZWFscGF0aCh0b3BfZGlyZWN0b3J5KQorICAgICAgICBzZWxmLnNlYXJjaF9kaXJlY3Rvcnkg
PSBzZWxmLnRvcF9kaXJlY3RvcnkKKyAgICAgICAgc2VsZi50b3BfcGFja2FnZSA9ICcnCisgICAg
ICAgIGlmIHN0YXJ0aW5nX3N1YmRpcmVjdG9yeToKKyAgICAgICAgICAgIHNlbGYudG9wX3BhY2th
Z2UgPSBzdGFydGluZ19zdWJkaXJlY3RvcnkucmVwbGFjZShmaWxlc3lzdGVtLnNlcCwgJy4nKSAr
ICcuJworICAgICAgICAgICAgc2VsZi5zZWFyY2hfZGlyZWN0b3J5ID0gZmlsZXN5c3RlbS5qb2lu
KHNlbGYudG9wX2RpcmVjdG9yeSwgc3RhcnRpbmdfc3ViZGlyZWN0b3J5KQorCisgICAgZGVmIGZp
bmRfbW9kdWxlcyhzZWxmLCBzdWZmaXhlcywgc3ViX2RpcmVjdG9yeT1Ob25lKToKKyAgICAgICAg
aWYgc3ViX2RpcmVjdG9yeToKKyAgICAgICAgICAgIHNlYXJjaF9kaXJlY3RvcnkgPSBzZWxmLmZp
bGVzeXN0ZW0uam9pbihzZWxmLnRvcF9kaXJlY3RvcnksIHN1Yl9kaXJlY3RvcnkpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBzZWFyY2hfZGlyZWN0b3J5ID0gc2VsZi5zZWFyY2hfZGlyZWN0
b3J5CisKKyAgICAgICAgZGVmIGZpbGVfZmlsdGVyKGZpbGVzeXN0ZW0sIGRpcm5hbWUsIGJhc2Vu
YW1lKToKKyAgICAgICAgICAgIHJldHVybiBhbnkoYmFzZW5hbWUuZW5kc3dpdGgoc3VmZml4KSBm
b3Igc3VmZml4IGluIHN1ZmZpeGVzKQorCisgICAgICAgIGZpbGVuYW1lcyA9IHNlbGYuZmlsZXN5
c3RlbS5maWxlc191bmRlcihzZWFyY2hfZGlyZWN0b3J5LCBmaWxlX2ZpbHRlcj1maWxlX2ZpbHRl
cikKKyAgICAgICAgcmV0dXJuIFtzZWxmLnRvX21vZHVsZShmaWxlbmFtZSkgZm9yIGZpbGVuYW1l
IGluIGZpbGVuYW1lc10KKworICAgIGRlZiB0b19tb2R1bGUoc2VsZiwgcGF0aCk6CisgICAgICAg
IHJldHVybiBwYXRoLnJlcGxhY2Uoc2VsZi50b3BfZGlyZWN0b3J5ICsgc2VsZi5maWxlc3lzdGVt
LnNlcCwgJycpLnJlcGxhY2Uoc2VsZi5maWxlc3lzdGVtLnNlcCwgJy4nKVs6LTNdCisKKyAgICBk
ZWYgc3VicGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgcmVsYXRpdmUg
cGF0aCBmcm9tIHRoZSB0b3Agb2YgdGhlIHRyZWUgdG8gdGhlIHBhdGgsIG9yIE5vbmUgaWYgdGhl
IHBhdGggaXMgbm90IHVuZGVyIHRoZSB0b3Agb2YgdGhlIHRyZWUuIiIiCisgICAgICAgIHJlYWxw
YXRoID0gc2VsZi5maWxlc3lzdGVtLnJlYWxwYXRoKHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYu
dG9wX2RpcmVjdG9yeSwgcGF0aCkpCisgICAgICAgIGlmIHJlYWxwYXRoLnN0YXJ0c3dpdGgoc2Vs
Zi50b3BfZGlyZWN0b3J5ICsgc2VsZi5maWxlc3lzdGVtLnNlcCk6CisgICAgICAgICAgICByZXR1
cm4gcmVhbHBhdGgucmVwbGFjZShzZWxmLnRvcF9kaXJlY3RvcnkgKyBzZWxmLmZpbGVzeXN0ZW0u
c2VwLCAnJykKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBjbGVhbihzZWxmKToKKyAg
ICAgICAgIiIiRGVsZXRlIGFsbCAucHljIGZpbGVzIGluIHRoZSB0cmVlIHRoYXQgaGF2ZSBubyBt
YXRjaGluZyAucHkgZmlsZS4iIiIKKyAgICAgICAgX2xvZy5kZWJ1ZygiQ2xlYW5pbmcgb3JwaGFu
ZWQgKi5weWMgZmlsZXMgZnJvbTogJXMiICUgc2VsZi5zZWFyY2hfZGlyZWN0b3J5KQorICAgICAg
ICBmaWxlbmFtZXMgPSBzZWxmLmZpbGVzeXN0ZW0uZmlsZXNfdW5kZXIoc2VsZi5zZWFyY2hfZGly
ZWN0b3J5KQorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgorICAgICAgICAgICAg
aWYgZmlsZW5hbWUuZW5kc3dpdGgoIi5weWMiKSBhbmQgZmlsZW5hbWVbOi0xXSBub3QgaW4gZmls
ZW5hbWVzOgorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiRGVsZXRpbmcgb3JwaGFuICoucHlj
IGZpbGU6ICVzIiAlIGZpbGVuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuZmlsZXN5c3RlbS5y
ZW1vdmUoZmlsZW5hbWUpCisKKworY2xhc3MgRmluZGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGZpbGVzeXN0ZW0pOgorICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBmaWxlc3lz
dGVtCisgICAgICAgIHNlbGYudHJlZXMgPSBbXQorCisgICAgZGVmIGFkZF90cmVlKHNlbGYsIHRv
cF9kaXJlY3RvcnksIHN0YXJ0aW5nX3N1YmRpcmVjdG9yeT1Ob25lKToKKyAgICAgICAgc2VsZi50
cmVlcy5hcHBlbmQoVGVzdERpcmVjdG9yeVRyZWUoc2VsZi5maWxlc3lzdGVtLCB0b3BfZGlyZWN0
b3J5LCBzdGFydGluZ19zdWJkaXJlY3RvcnkpKQorCisgICAgZGVmIGFkZGl0aW9uYWxfcGF0aHMo
c2VsZiwgcGF0aHMpOgorICAgICAgICByZXR1cm4gW3RyZWUudG9wX2RpcmVjdG9yeSBmb3IgdHJl
ZSBpbiBzZWxmLnRyZWVzIGlmIHRyZWUudG9wX2RpcmVjdG9yeSBub3QgaW4gcGF0aHNdCisKKyAg
ICBkZWYgY2xlYW5fdHJlZXMoc2VsZik6CisgICAgICAgIGZvciB0cmVlIGluIHNlbGYudHJlZXM6
CisgICAgICAgICAgICB0cmVlLmNsZWFuKCkKKworICAgIGRlZiBpc19tb2R1bGUoc2VsZiwgbmFt
ZSk6CisgICAgICAgIHJlbHBhdGggPSBuYW1lLnJlcGxhY2UoJy4nLCBzZWxmLmZpbGVzeXN0ZW0u
c2VwKSArICcucHknCisgICAgICAgIHJldHVybiBhbnkoc2VsZi5maWxlc3lzdGVtLmV4aXN0cyhz
ZWxmLmZpbGVzeXN0ZW0uam9pbih0cmVlLnRvcF9kaXJlY3RvcnksIHJlbHBhdGgpKSBmb3IgdHJl
ZSBpbiBzZWxmLnRyZWVzKQorCisgICAgZGVmIGlzX2RvdHRlZF9uYW1lKHNlbGYsIG5hbWUpOgor
ICAgICAgICByZXR1cm4gcmUubWF0Y2gocidbYS16QS1aLl1bYS16QS1aMC05Xy5dKicsIG5hbWUp
CisKKyAgICBkZWYgdG9fbW9kdWxlKHNlbGYsIHBhdGgpOgorICAgICAgICBmb3IgdHJlZSBpbiBz
ZWxmLnRyZWVzOgorICAgICAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKHRyZWUudG9wX2RpcmVj
dG9yeSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRyZWUudG9fbW9kdWxlKHBhdGgpCisgICAg
ICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZmluZF9uYW1lcyhzZWxmLCBhcmdzLCBza2lwX2lu
dGVncmF0aW9udGVzdHMsIGZpbmRfYWxsKToKKyAgICAgICAgc3VmZml4ZXMgPSBbJ191bml0dGVz
dC5weSddCisgICAgICAgIGlmIG5vdCBza2lwX2ludGVncmF0aW9udGVzdHM6CisgICAgICAgICAg
ICBzdWZmaXhlcy5hcHBlbmQoJ19pbnRlZ3JhdGlvbnRlc3QucHknKQorCisgICAgICAgIGlmIGFy
Z3M6CisgICAgICAgICAgICBuYW1lcyA9IFtdCisgICAgICAgICAgICBmb3IgYXJnIGluIGFyZ3M6
CisgICAgICAgICAgICAgICAgbmFtZXMuZXh0ZW5kKHNlbGYuX2ZpbmRfbmFtZXNfZm9yX2FyZyhh
cmcsIHN1ZmZpeGVzKSkKKyAgICAgICAgICAgIHJldHVybiBuYW1lcworCisgICAgICAgIHJldHVy
biBzZWxmLl9kZWZhdWx0X25hbWVzKHN1ZmZpeGVzLCBmaW5kX2FsbCkKKworICAgIGRlZiBfZmlu
ZF9uYW1lc19mb3JfYXJnKHNlbGYsIGFyZywgc3VmZml4ZXMpOgorICAgICAgICByZWFscGF0aCA9
IHNlbGYuZmlsZXN5c3RlbS5yZWFscGF0aChhcmcpCisgICAgICAgIGlmIHNlbGYuZmlsZXN5c3Rl
bS5leGlzdHMocmVhbHBhdGgpOgorICAgICAgICAgICAgbmFtZXMgPSBzZWxmLl9maW5kX2luX3Ry
ZWVzKHJlYWxwYXRoLCBzdWZmaXhlcykKKyAgICAgICAgICAgIGlmIG5vdCBuYW1lczoKKyAgICAg
ICAgICAgICAgICBfbG9nLmVycm9yKCIlcyBpcyBub3QgaW4gb25lIG9mIHRoZSB0ZXN0IHRyZWVz
LiIgJSBhcmcpCisgICAgICAgICAgICByZXR1cm4gbmFtZXMKKworICAgICAgICAjIFNlZSBpZiBp
dCdzIGEgcHl0aG9uIHBhY2thZ2UgaW4gYSB0cmVlIChvciBhIHJlbGF0aXZlIHBhdGggZnJvbSB0
aGUgdG9wIG9mIGEgdHJlZSkuCisgICAgICAgIG5hbWVzID0gc2VsZi5fZmluZF9pbl90cmVlcyhh
cmcucmVwbGFjZSgnLicsIHNlbGYuZmlsZXN5c3RlbS5zZXApLCBzdWZmaXhlcykKKyAgICAgICAg
aWYgbmFtZXM6CisgICAgICAgICAgICByZXR1cm4gbmFtZXMKKworICAgICAgICBpZiBzZWxmLmlz
X2RvdHRlZF9uYW1lKGFyZyk6CisgICAgICAgICAgICAjIFRoZSBuYW1lIG1heSBub3QgZXhpc3Qs
IGJ1dCB0aGF0J3Mgb2theTsgd2UnbGwgZmluZCBvdXQgbGF0ZXIuCisgICAgICAgICAgICByZXR1
cm4gW2FyZ10KKworICAgICAgICBfbG9nLmVycm9yKCIlcyBpcyBub3QgYSBweXRob24gbmFtZSBv
ciBhbiBleGlzdGluZyBmaWxlIG9yIGRpcmVjdG9yeS4iICUgYXJnKQorICAgICAgICByZXR1cm4g
W10KKworICAgIGRlZiBfZmluZF9pbl90cmVlcyhzZWxmLCBwYXRoLCBzdWZmaXhlcyk6CisgICAg
ICAgIGZvciB0cmVlIGluIHNlbGYudHJlZXM6CisgICAgICAgICAgICByZWxwYXRoID0gdHJlZS5z
dWJwYXRoKHBhdGgpCisgICAgICAgICAgICBpZiBub3QgcmVscGF0aDoKKyAgICAgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICAgICAgaWYgc2VsZi5maWxlc3lzdGVtLmlzZmlsZShwYXRoKToK
KyAgICAgICAgICAgICAgICByZXR1cm4gW3RyZWUudG9fbW9kdWxlKHBhdGgpXQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJlZS5maW5kX21vZHVsZXMoc3VmZml4
ZXMsIHBhdGgpCisgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIF9kZWZhdWx0X25hbWVzKHNl
bGYsIHN1ZmZpeGVzLCBmaW5kX2FsbCk6CisgICAgICAgIG1vZHVsZXMgPSBbXQorICAgICAgICBm
b3IgdHJlZSBpbiBzZWxmLnRyZWVzOgorICAgICAgICAgICAgbW9kdWxlcy5leHRlbmQodHJlZS5m
aW5kX21vZHVsZXMoc3VmZml4ZXMpKQorICAgICAgICBtb2R1bGVzLnNvcnQoKQorCisgICAgICAg
IGZvciBtb2R1bGUgaW4gbW9kdWxlczoKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIkZvdW5kOiAl
cyIgJSBtb2R1bGUpCisKKyAgICAgICAgIyBGSVhNRTogRmlndXJlIG91dCBob3cgdG8gbW92ZSB0
aGlzIHRvIHRlc3Qtd2Via2l0cHkgaW4gb3JkZXIgdG8gdG8gbWFrZSB0aGlzIGZpbGUgbW9yZSBn
ZW5lcmljLgorICAgICAgICBpZiBub3QgZmluZF9hbGw6CisgICAgICAgICAgICBzbG93X3Rlc3Rz
ID0gKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKQorICAgICAg
ICAgICAgc2VsZi5fZXhjbHVkZShtb2R1bGVzLCBzbG93X3Rlc3RzLCAnYXJlIHJlYWxseSwgcmVh
bGx5IHNsb3cnLCAzMTgxOCkKKworICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4z
Mic6CisgICAgICAgICAgICAgICAgd2luMzJfYmxhY2tsaXN0ID0gKCd3ZWJraXRweS5jb21tb24u
Y2hlY2tvdXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2Via2l0cHku
Y29tbW9uLmNvbmZpZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3ZWJr
aXRweS50b29sJykKKyAgICAgICAgICAgICAgICBzZWxmLl9leGNsdWRlKG1vZHVsZXMsIHdpbjMy
X2JsYWNrbGlzdCwgJ2ZhaWwgaG9ycmlibHkgb24gd2luMzInLCA1NDUyNikKKworICAgICAgICBy
ZXR1cm4gbW9kdWxlcworCisgICAgZGVmIF9leGNsdWRlKHNlbGYsIG1vZHVsZXMsIG1vZHVsZV9w
cmVmaXhlcywgcmVhc29uLCBidWdpZCk6CisgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgdGVz
dHMgaW4gdGhlIGZvbGxvd2luZyBtb2R1bGVzIG9yIHBhY2thZ2VzIGJlY2F1c2UgdGhleSAlczon
ICUgcmVhc29uKQorICAgICAgICBmb3IgcHJlZml4IGluIG1vZHVsZV9wcmVmaXhlczoKKyAgICAg
ICAgICAgIF9sb2cuaW5mbygnICAgICVzJyAlIHByZWZpeCkKKyAgICAgICAgICAgIG1vZHVsZXNf
dG9fZXhjbHVkZSA9IGZpbHRlcihsYW1iZGEgbTogbS5zdGFydHN3aXRoKHByZWZpeCksIG1vZHVs
ZXMpCisgICAgICAgICAgICBmb3IgbSBpbiBtb2R1bGVzX3RvX2V4Y2x1ZGU6CisgICAgICAgICAg
ICAgICAgaWYgbGVuKG1vZHVsZXNfdG9fZXhjbHVkZSkgPiAxOgorICAgICAgICAgICAgICAgICAg
ICBfbG9nLmRlYnVnKCcgICAgICAgICVzJyAlIG0pCisgICAgICAgICAgICAgICAgbW9kdWxlcy5y
ZW1vdmUobSkKKyAgICAgICAgX2xvZy5pbmZvKCcgICAgKGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0lZDsgdXNlIC0tYWxsIHRvIGluY2x1ZGUpJyAlIGJ1Z2lkKQorICAg
ICAgICBfbG9nLmluZm8oJycpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rl
c3QvZmluZGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L2ZpbmRl
cl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzU4MzE1ODhmNGNkY2QzODQxYWVjMzM5MmFkZWE2
YTc2ZWEwYTBiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0
L2ZpbmRlcl91bml0dGVzdC5weQpAQCAtMCwwICsxLDEzNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlLCBJbmMuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCitm
cm9tIHdlYmtpdHB5LnRlc3QuZmluZGVyIGltcG9ydCBGaW5kZXIKKworCitjbGFzcyBGaW5kZXJU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGZp
bGVzID0geworICAgICAgICAgICcvZm9vL2Jhci9iYXoucHknOiAnJywKKyAgICAgICAgICAnL2Zv
by9iYXIvYmF6X3VuaXR0ZXN0LnB5JzogJycsCisgICAgICAgICAgJy9mb28yL2JhcjIvYmF6Mi5w
eSc6ICcnLAorICAgICAgICAgICcvZm9vMi9iYXIyL2JhejIucHljJzogJycsCisgICAgICAgICAg
Jy9mb28yL2JhcjIvYmF6Ml9pbnRlZ3JhdGlvbnRlc3QucHknOiAnJywKKyAgICAgICAgICAnL2Zv
bzIvYmFyMi9taXNzaW5nLnB5Yyc6ICcnLAorICAgICAgICAgICcvdG1wL2Fub3RoZXJfdW5pdHRl
c3QucHknOiAnJywKKyAgICAgICAgfQorICAgICAgICBzZWxmLmZzID0gTW9ja0ZpbGVTeXN0ZW0o
ZmlsZXMpCisgICAgICAgIHNlbGYuZmluZGVyID0gRmluZGVyKHNlbGYuZnMpCisgICAgICAgIHNl
bGYuZmluZGVyLmFkZF90cmVlKCcvZm9vJywgJ2JhcicpCisgICAgICAgIHNlbGYuZmluZGVyLmFk
ZF90cmVlKCcvZm9vMicpCisKKyAgICAgICAgIyBIZXJlIHdlIGhhdmUgdG8ganVtcCB0aHJvdWdo
IGEgaG9vcCB0byBtYWtlIHN1cmUgdGVzdC13ZWJraXRweSBkb2Vzbid0IGxvZworICAgICAgICAj
IGFueSBtZXNzYWdlcyBmcm9tIHRoZXNlIHRlc3RzIDooLgorICAgICAgICBzZWxmLnJvb3RfbG9n
Z2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorICAgICAgICBzZWxmLmxvZ19oYW5kbGVyID0gTm9u
ZQorICAgICAgICBmb3IgaCBpbiBzZWxmLnJvb3RfbG9nZ2VyLmhhbmRsZXJzOgorICAgICAgICAg
ICAgaWYgZ2V0YXR0cihoLCAnbmFtZScsIE5vbmUpID09ICd3ZWJraXRweS50ZXN0Lm1haW4nOgor
ICAgICAgICAgICAgICAgIHNlbGYubG9nX2hhbmRsZXIgPSBoCisgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgaWYgc2VsZi5sb2dfaGFuZGxlcjoKKyAgICAgICAgICAgIHNlbGYubG9nX2xl
dmVsID0gc2VsZi5sb2dfaGFuZGxlci5sZXZlbAorICAgICAgICAgICAgc2VsZi5sb2dfaGFuZGxl
ci5sZXZlbCA9IGxvZ2dpbmcuQ1JJVElDQUwKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAg
ICAgICAgaWYgc2VsZi5sb2dfaGFuZGxlcjoKKyAgICAgICAgICAgIHNlbGYubG9nX2hhbmRsZXIu
c2V0TGV2ZWwoc2VsZi5sb2dfbGV2ZWwpCisKKyAgICBkZWYgdGVzdF9hZGRpdGlvbmFsX3N5c3Rl
bV9wYXRocyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5maW5kZXIuYWRk
aXRpb25hbF9wYXRocyhbJy91c3InXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL2Zv
bycsICcvZm9vMiddKQorCisgICAgZGVmIHRlc3RfaXNfbW9kdWxlKHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoc2VsZi5maW5kZXIuaXNfbW9kdWxlKCdiYXIuYmF6JykpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRlci5pc19tb2R1bGUoJ2JhcjIuYmF6MicpKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5maW5kZXIuaXNfbW9kdWxlKCdiYXIyLmJhejJfaW50
ZWdyYXRpb250ZXN0JykpCisKKyAgICAgICAgIyBNaXNzaW5nIHRoZSBwcm9wZXIgbmFtZXNwYWNl
LgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZmluZGVyLmlzX21vZHVsZSgnYmF6Jykp
CisKKyAgICBkZWYgdGVzdF90b19tb2R1bGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHNlbGYuZmluZGVyLnRvX21vZHVsZSgnL2Zvby90ZXN0LnB5JyksICd0ZXN0JykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5maW5kZXIudG9fbW9kdWxlKCcvZm9vL2Jhci90ZXN0
LnB5JyksICdiYXIudGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuZmluZGVy
LnRvX21vZHVsZSgnL2Zvby9iYXIvcHl0ZXN0LnB5JyksICdiYXIucHl0ZXN0JykKKworICAgIGRl
ZiB0ZXN0X2NsZWFuKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5mcy5leGlz
dHMoJy9mb28yL2JhcjIvbWlzc2luZy5weWMnKSkKKyAgICAgICAgc2VsZi5maW5kZXIuY2xlYW5f
dHJlZXMoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZnMuZXhpc3RzKCcvZm9vMi9i
YXIyL21pc3NpbmcucHljJykpCisKKyAgICBkZWYgY2hlY2tfbmFtZXMoc2VsZiwgbmFtZXMsIGV4
cGVjdGVkX25hbWVzLCBza2lwX2ludGVncmF0aW9udGVzdHM9RmFsc2UsIGZpbmRfYWxsPUZhbHNl
KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5maW5kZXIuZmluZF9uYW1lcyhuYW1l
cywgc2tpcF9pbnRlZ3JhdGlvbnRlc3RzLCBmaW5kX2FsbCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX25hbWVzKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9uYW1lcyhzZWxm
KToKKyAgICAgICAgc2VsZi5jaGVja19uYW1lcyhbXSwgWydiYXIuYmF6X3VuaXR0ZXN0JywgJ2Jh
cjIuYmF6Ml9pbnRlZ3JhdGlvbnRlc3QnXSkKKyAgICAgICAgc2VsZi5jaGVja19uYW1lcyhbXSwg
WydiYXIuYmF6X3VuaXR0ZXN0J10sIHNraXBfaW50ZWdyYXRpb250ZXN0cz1UcnVlLCBmaW5kX2Fs
bD1UcnVlKQorICAgICAgICBzZWxmLmNoZWNrX25hbWVzKFtdLCBbJ2Jhci5iYXpfdW5pdHRlc3Qn
XSwgc2tpcF9pbnRlZ3JhdGlvbnRlc3RzPVRydWUsIGZpbmRfYWxsPUZhbHNlKQorCisgICAgICAg
ICMgU2hvdWxkIHJldHVybiB0aGUgbmFtZXMgZ2l2ZW4gaXQsIGV2ZW4gaWYgdGhleSBkb24ndCBl
eGlzdC4KKyAgICAgICAgc2VsZi5jaGVja19uYW1lcyhbJ2Zvb2JhciddLCBbJ2Zvb2JhciddLCBz
a2lwX2ludGVncmF0aW9udGVzdHM9VHJ1ZSwgZmluZF9hbGw9RmFsc2UpCisKKyAgICBkZWYgdGVz
dF9wYXRocyhzZWxmKToKKyAgICAgICAgc2VsZi5mcy5jaGRpcignL2Zvby9iYXInKQorICAgICAg
ICBzZWxmLmNoZWNrX25hbWVzKFsnYmF6X3VuaXR0ZXN0LnB5J10sIFsnYmFyLmJhel91bml0dGVz
dCddKQorICAgICAgICBzZWxmLmNoZWNrX25hbWVzKFsnLi9iYXpfdW5pdHRlc3QucHknXSwgWydi
YXIuYmF6X3VuaXR0ZXN0J10pCisgICAgICAgIHNlbGYuY2hlY2tfbmFtZXMoWycvZm9vL2Jhci9i
YXpfdW5pdHRlc3QucHknXSwgWydiYXIuYmF6X3VuaXR0ZXN0J10pCisgICAgICAgIHNlbGYuY2hl
Y2tfbmFtZXMoWycuJ10sIFsnYmFyLmJhel91bml0dGVzdCddKQorICAgICAgICBzZWxmLmNoZWNr
X25hbWVzKFsnLi4vLi4vZm9vMi9iYXIyJ10sIFsnYmFyMi5iYXoyX2ludGVncmF0aW9udGVzdCdd
KQorCisgICAgICAgIHNlbGYuZnMuY2hkaXIoJy8nKQorICAgICAgICBzZWxmLmNoZWNrX25hbWVz
KFsnYmFyJ10sIFsnYmFyLmJhel91bml0dGVzdCddKQorICAgICAgICBzZWxmLmNoZWNrX25hbWVz
KFsnL2Zvby9iYXIvJ10sIFsnYmFyLmJhel91bml0dGVzdCddKQorCisgICAgICAgICMgVGhpcyB3
b3JrcyAnYnkgYWNjaWRlbnQnIHNpbmNlIGl0IG1hcHMgb250byBhIHBhY2thZ2UuCisgICAgICAg
IHNlbGYuY2hlY2tfbmFtZXMoWydiYXIvJ10sIFsnYmFyLmJhel91bml0dGVzdCddKQorCisgICAg
ICAgICMgVGhpcyBzaG91bGQgbG9nIGFuIGVycm9yLCBzaW5jZSBpdCdzIG91dHNpZGUgdGhlIHRy
ZWVzLgorICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICBvYy5zZXRfbG9nX2xl
dmVsKGxvZ2dpbmcuRVJST1IpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgc2VsZi5jaGVja19uYW1lcyhbJy90bXAvYW5vdGhlcl91bml0dGVz
dC5weSddLCBbXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIF8sIF8sIGxvZ3MgPSBv
Yy5yZXN0b3JlX291dHB1dCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Fub3RoZXJf
dW5pdHRlc3QucHknIGluIGxvZ3MpCisKKyAgICAgICAgIyBQYXRocyB0aGF0IGRvbid0IGV4aXN0
IGFyZSBlcnJvcnMuCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgc2VsZi5jaGVja19uYW1lcyhbJy9mb28vYmFyL25vdGV4aXN0X3VuaXR0ZXN0
LnB5J10sIFtdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgXywgXywgbG9ncyA9IG9j
LnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbm90ZXhpc3Rf
dW5pdHRlc3QucHknIGluIGxvZ3MpCisKKyAgICAgICAgIyBOYW1lcyB0aGF0IGRvbid0IGV4aXN0
IGFyZSBjYXVnaHQgbGF0ZXIsIGF0IGxvYWQgdGltZS4KKyAgICAgICAgc2VsZi5jaGVja19uYW1l
cyhbJ2Jhci5ub3RleGlzdF91bml0dGVzdCddLCBbJ2Jhci5ub3RleGlzdF91bml0dGVzdCddKQor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rlc3QvbWFpbi5weQppbmRleCBjNWRjMzk0MzMyYjliMWFjOGM5YWQ3ZDFjOGQw
N2UyNmZhNGRkYTBiLi41ZjkxMTRiYmUyNjk4NDFmNTI2ZWEwOGYyNTVkYTllZDY1ZTU3MTRiIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQpAQCAtMzMsNyArMzMsNyBAQCBpbXBvcnQg
dW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0
IEZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0Y2Fw
dHVyZQotZnJvbSB3ZWJraXRweS50ZXN0LnRlc3RfZmluZGVyIGltcG9ydCBUZXN0RmluZGVyCitm
cm9tIHdlYmtpdHB5LnRlc3QuZmluZGVyIGltcG9ydCBGaW5kZXIKIGZyb20gd2Via2l0cHkudGVz
dC5ydW5uZXIgaW1wb3J0IFRlc3RSdW5uZXIKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQpAQCAtNDEsNyArNDEsNyBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCiAKIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxl
c3lzdGVtPU5vbmUpOgotICAgICAgICBzZWxmLmZpbmRlciA9IFRlc3RGaW5kZXIoZmlsZXN5c3Rl
bSBvciBGaWxlU3lzdGVtKCkpCisgICAgICAgIHNlbGYuZmluZGVyID0gRmluZGVyKGZpbGVzeXN0
ZW0gb3IgRmlsZVN5c3RlbSgpKQogICAgICAgICBzZWxmLnN0cmVhbSA9IHN5cy5zdGRlcnIKIAog
ICAgIGRlZiBhZGRfdHJlZShzZWxmLCB0b3BfZGlyZWN0b3J5LCBzdGFydGluZ19zdWJkaXJlY3Rv
cnk9Tm9uZSk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvdGVzdF9m
aW5kZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvdGVzdF9maW5kZXIucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhOTAxOTdlOWUyNzEyMGZhNDEyZjM5YmMxMmI0
MGQwNTBmOTkyYTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3Rlc3RfZmluZGVyLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMTgxICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSwgSW5jLgot
IyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3Jn
KQotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJ0aGlzIG1v
ZHVsZSBpcyByZXNwb25zaWJsZSBmb3IgZmluZGluZyBweXRob24gdGVzdHMuIiIiCi0KLWltcG9y
dCBsb2dnaW5nCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLQotCi1fbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCi0KLQotY2xhc3MgVGVzdERpcmVjdG9yeVRyZWUob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgZmlsZXN5c3RlbSwgdG9wX2RpcmVjdG9yeSwgc3RhcnRpbmdf
c3ViZGlyZWN0b3J5KToKLSAgICAgICAgc2VsZi5maWxlc3lzdGVtID0gZmlsZXN5c3RlbQotICAg
ICAgICBzZWxmLnRvcF9kaXJlY3RvcnkgPSBmaWxlc3lzdGVtLnJlYWxwYXRoKHRvcF9kaXJlY3Rv
cnkpCi0gICAgICAgIHNlbGYuc2VhcmNoX2RpcmVjdG9yeSA9IHNlbGYudG9wX2RpcmVjdG9yeQot
ICAgICAgICBzZWxmLnRvcF9wYWNrYWdlID0gJycKLSAgICAgICAgaWYgc3RhcnRpbmdfc3ViZGly
ZWN0b3J5OgotICAgICAgICAgICAgc2VsZi50b3BfcGFja2FnZSA9IHN0YXJ0aW5nX3N1YmRpcmVj
dG9yeS5yZXBsYWNlKGZpbGVzeXN0ZW0uc2VwLCAnLicpICsgJy4nCi0gICAgICAgICAgICBzZWxm
LnNlYXJjaF9kaXJlY3RvcnkgPSBmaWxlc3lzdGVtLmpvaW4oc2VsZi50b3BfZGlyZWN0b3J5LCBz
dGFydGluZ19zdWJkaXJlY3RvcnkpCi0KLSAgICBkZWYgZmluZF9tb2R1bGVzKHNlbGYsIHN1ZmZp
eGVzLCBzdWJfZGlyZWN0b3J5PU5vbmUpOgotICAgICAgICBpZiBzdWJfZGlyZWN0b3J5OgotICAg
ICAgICAgICAgc2VhcmNoX2RpcmVjdG9yeSA9IHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYudG9w
X2RpcmVjdG9yeSwgc3ViX2RpcmVjdG9yeSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNl
YXJjaF9kaXJlY3RvcnkgPSBzZWxmLnNlYXJjaF9kaXJlY3RvcnkKLQotICAgICAgICBkZWYgZmls
ZV9maWx0ZXIoZmlsZXN5c3RlbSwgZGlybmFtZSwgYmFzZW5hbWUpOgotICAgICAgICAgICAgcmV0
dXJuIGFueShiYXNlbmFtZS5lbmRzd2l0aChzdWZmaXgpIGZvciBzdWZmaXggaW4gc3VmZml4ZXMp
Ci0KLSAgICAgICAgZmlsZW5hbWVzID0gc2VsZi5maWxlc3lzdGVtLmZpbGVzX3VuZGVyKHNlYXJj
aF9kaXJlY3RvcnksIGZpbGVfZmlsdGVyPWZpbGVfZmlsdGVyKQotICAgICAgICByZXR1cm4gW3Nl
bGYudG9fbW9kdWxlKGZpbGVuYW1lKSBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzXQotCi0gICAg
ZGVmIHRvX21vZHVsZShzZWxmLCBwYXRoKToKLSAgICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZShz
ZWxmLnRvcF9kaXJlY3RvcnkgKyBzZWxmLmZpbGVzeXN0ZW0uc2VwLCAnJykucmVwbGFjZShzZWxm
LmZpbGVzeXN0ZW0uc2VwLCAnLicpWzotM10KLQotICAgIGRlZiBzdWJwYXRoKHNlbGYsIHBhdGgp
OgotICAgICAgICAiIiJSZXR1cm5zIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIHRvcCBvZiB0
aGUgdHJlZSB0byB0aGUgcGF0aCwgb3IgTm9uZSBpZiB0aGUgcGF0aCBpcyBub3QgdW5kZXIgdGhl
IHRvcCBvZiB0aGUgdHJlZS4iIiIKLSAgICAgICAgcmVhbHBhdGggPSBzZWxmLmZpbGVzeXN0ZW0u
cmVhbHBhdGgoc2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi50b3BfZGlyZWN0b3J5LCBwYXRoKSkK
LSAgICAgICAgaWYgcmVhbHBhdGguc3RhcnRzd2l0aChzZWxmLnRvcF9kaXJlY3RvcnkgKyBzZWxm
LmZpbGVzeXN0ZW0uc2VwKToKLSAgICAgICAgICAgIHJldHVybiByZWFscGF0aC5yZXBsYWNlKHNl
bGYudG9wX2RpcmVjdG9yeSArIHNlbGYuZmlsZXN5c3RlbS5zZXAsICcnKQotICAgICAgICByZXR1
cm4gTm9uZQotCi0KLSAgICBkZWYgY2xlYW4oc2VsZik6Ci0gICAgICAgICIiIkRlbGV0ZSBhbGwg
LnB5YyBmaWxlcyBpbiB0aGUgdHJlZSB0aGF0IGhhdmUgbm8gbWF0Y2hpbmcgLnB5IGZpbGUuIiIi
Ci0gICAgICAgIF9sb2cuZGVidWcoIkNsZWFuaW5nIG9ycGhhbmVkICoucHljIGZpbGVzIGZyb206
ICVzIiAlIHNlbGYuc2VhcmNoX2RpcmVjdG9yeSkKLSAgICAgICAgZmlsZW5hbWVzID0gc2VsZi5m
aWxlc3lzdGVtLmZpbGVzX3VuZGVyKHNlbGYuc2VhcmNoX2RpcmVjdG9yeSkKLSAgICAgICAgZm9y
IGZpbGVuYW1lIGluIGZpbGVuYW1lczoKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRo
KCIucHljIikgYW5kIGZpbGVuYW1lWzotMV0gbm90IGluIGZpbGVuYW1lczoKLSAgICAgICAgICAg
ICAgICBfbG9nLmluZm8oIkRlbGV0aW5nIG9ycGhhbiAqLnB5YyBmaWxlOiAlcyIgJSBmaWxlbmFt
ZSkKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGVzeXN0ZW0ucmVtb3ZlKGZpbGVuYW1lKQotCi0K
LWNsYXNzIFRlc3RGaW5kZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZXN5
c3RlbSk6Ci0gICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KLSAgICAgICAgc2Vs
Zi50cmVlcyA9IFtdCi0KLSAgICBkZWYgYWRkX3RyZWUoc2VsZiwgdG9wX2RpcmVjdG9yeSwgc3Rh
cnRpbmdfc3ViZGlyZWN0b3J5PU5vbmUpOgotICAgICAgICBzZWxmLnRyZWVzLmFwcGVuZChUZXN0
RGlyZWN0b3J5VHJlZShzZWxmLmZpbGVzeXN0ZW0sIHRvcF9kaXJlY3RvcnksIHN0YXJ0aW5nX3N1
YmRpcmVjdG9yeSkpCi0KLSAgICBkZWYgYWRkaXRpb25hbF9wYXRocyhzZWxmLCBwYXRocyk6Ci0g
ICAgICAgIHJldHVybiBbdHJlZS50b3BfZGlyZWN0b3J5IGZvciB0cmVlIGluIHNlbGYudHJlZXMg
aWYgdHJlZS50b3BfZGlyZWN0b3J5IG5vdCBpbiBwYXRoc10KLQotICAgIGRlZiBjbGVhbl90cmVl
cyhzZWxmKToKLSAgICAgICAgZm9yIHRyZWUgaW4gc2VsZi50cmVlczoKLSAgICAgICAgICAgIHRy
ZWUuY2xlYW4oKQotCi0gICAgZGVmIGlzX21vZHVsZShzZWxmLCBuYW1lKToKLSAgICAgICAgcmVs
cGF0aCA9IG5hbWUucmVwbGFjZSgnLicsIHNlbGYuZmlsZXN5c3RlbS5zZXApICsgJy5weScKLSAg
ICAgICAgcmV0dXJuIGFueShzZWxmLmZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYuZmlsZXN5c3RlbS5q
b2luKHRyZWUudG9wX2RpcmVjdG9yeSwgcmVscGF0aCkpIGZvciB0cmVlIGluIHNlbGYudHJlZXMp
Ci0KLSAgICBkZWYgaXNfZG90dGVkX25hbWUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBy
ZS5tYXRjaChyJ1thLXpBLVouXVthLXpBLVowLTlfLl0qJywgbmFtZSkKLQotICAgIGRlZiB0b19t
b2R1bGUoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGZvciB0cmVlIGluIHNlbGYudHJlZXM6Ci0gICAg
ICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgodHJlZS50b3BfZGlyZWN0b3J5KToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJlZS50b19tb2R1bGUocGF0aCkKLSAgICAgICAgcmV0dXJuIE5vbmUK
LQotICAgIGRlZiBmaW5kX25hbWVzKHNlbGYsIGFyZ3MsIHNraXBfaW50ZWdyYXRpb250ZXN0cywg
ZmluZF9hbGwpOgotICAgICAgICBzdWZmaXhlcyA9IFsnX3VuaXR0ZXN0LnB5J10KLSAgICAgICAg
aWYgbm90IHNraXBfaW50ZWdyYXRpb250ZXN0czoKLSAgICAgICAgICAgIHN1ZmZpeGVzLmFwcGVu
ZCgnX2ludGVncmF0aW9udGVzdC5weScpCi0KLSAgICAgICAgaWYgYXJnczoKLSAgICAgICAgICAg
IG5hbWVzID0gW10KLSAgICAgICAgICAgIGZvciBhcmcgaW4gYXJnczoKLSAgICAgICAgICAgICAg
ICBuYW1lcy5leHRlbmQoc2VsZi5fZmluZF9uYW1lc19mb3JfYXJnKGFyZywgc3VmZml4ZXMpKQot
ICAgICAgICAgICAgcmV0dXJuIG5hbWVzCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX2RlZmF1bHRf
bmFtZXMoc3VmZml4ZXMsIGZpbmRfYWxsKQotCi0gICAgZGVmIF9maW5kX25hbWVzX2Zvcl9hcmco
c2VsZiwgYXJnLCBzdWZmaXhlcyk6Ci0gICAgICAgIHJlYWxwYXRoID0gc2VsZi5maWxlc3lzdGVt
LnJlYWxwYXRoKGFyZykKLSAgICAgICAgaWYgc2VsZi5maWxlc3lzdGVtLmV4aXN0cyhyZWFscGF0
aCk6Ci0gICAgICAgICAgICBuYW1lcyA9IHNlbGYuX2ZpbmRfaW5fdHJlZXMocmVhbHBhdGgsIHN1
ZmZpeGVzKQotICAgICAgICAgICAgaWYgbm90IG5hbWVzOgotICAgICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoIiVzIGlzIG5vdCBpbiBvbmUgb2YgdGhlIHRlc3QgdHJlZXMuIiAlIGFyZykKLSAgICAg
ICAgICAgIHJldHVybiBuYW1lcwotCi0gICAgICAgICMgU2VlIGlmIGl0J3MgYSBweXRob24gcGFj
a2FnZSBpbiBhIHRyZWUgKG9yIGEgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSB0b3Agb2YgYSB0cmVl
KS4KLSAgICAgICAgbmFtZXMgPSBzZWxmLl9maW5kX2luX3RyZWVzKGFyZy5yZXBsYWNlKCcuJywg
c2VsZi5maWxlc3lzdGVtLnNlcCksIHN1ZmZpeGVzKQotICAgICAgICBpZiBuYW1lczoKLSAgICAg
ICAgICAgIHJldHVybiBuYW1lcwotCi0gICAgICAgIGlmIHNlbGYuaXNfZG90dGVkX25hbWUoYXJn
KToKLSAgICAgICAgICAgICMgVGhlIG5hbWUgbWF5IG5vdCBleGlzdCwgYnV0IHRoYXQncyBva2F5
OyB3ZSdsbCBmaW5kIG91dCBsYXRlci4KLSAgICAgICAgICAgIHJldHVybiBbYXJnXQotCi0gICAg
ICAgIF9sb2cuZXJyb3IoIiVzIGlzIG5vdCBhIHB5dGhvbiBuYW1lIG9yIGFuIGV4aXN0aW5nIGZp
bGUgb3IgZGlyZWN0b3J5LiIgJSBhcmcpCi0gICAgICAgIHJldHVybiBbXQotCi0gICAgZGVmIF9m
aW5kX2luX3RyZWVzKHNlbGYsIHBhdGgsIHN1ZmZpeGVzKToKLSAgICAgICAgZm9yIHRyZWUgaW4g
c2VsZi50cmVlczoKLSAgICAgICAgICAgIHJlbHBhdGggPSB0cmVlLnN1YnBhdGgocGF0aCkKLSAg
ICAgICAgICAgIGlmIG5vdCByZWxwYXRoOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAg
ICAgICAgICBpZiBzZWxmLmZpbGVzeXN0ZW0uaXNmaWxlKHBhdGgpOgotICAgICAgICAgICAgICAg
IHJldHVybiBbdHJlZS50b19tb2R1bGUocGF0aCldCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgIHJldHVybiB0cmVlLmZpbmRfbW9kdWxlcyhzdWZmaXhlcywgcGF0aCkKLSAgICAg
ICAgcmV0dXJuIFtdCi0KLSAgICBkZWYgX2RlZmF1bHRfbmFtZXMoc2VsZiwgc3VmZml4ZXMsIGZp
bmRfYWxsKToKLSAgICAgICAgbW9kdWxlcyA9IFtdCi0gICAgICAgIGZvciB0cmVlIGluIHNlbGYu
dHJlZXM6Ci0gICAgICAgICAgICBtb2R1bGVzLmV4dGVuZCh0cmVlLmZpbmRfbW9kdWxlcyhzdWZm
aXhlcykpCi0gICAgICAgIG1vZHVsZXMuc29ydCgpCi0KLSAgICAgICAgZm9yIG1vZHVsZSBpbiBt
b2R1bGVzOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiRm91bmQ6ICVzIiAlIG1vZHVsZSkKLQot
ICAgICAgICAjIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0byBtb3ZlIHRoaXMgdG8gdGVzdC13ZWJr
aXRweSBpbiBvcmRlciB0byB0byBtYWtlIHRoaXMgZmlsZSBtb3JlIGdlbmVyaWMuCi0gICAgICAg
IGlmIG5vdCBmaW5kX2FsbDoKLSAgICAgICAgICAgIHNsb3dfdGVzdHMgPSAoJ3dlYmtpdHB5LmNv
bW1vbi5jaGVja291dC5zY20uc2NtX3VuaXR0ZXN0JywpCi0gICAgICAgICAgICBzZWxmLl9leGNs
dWRlKG1vZHVsZXMsIHNsb3dfdGVzdHMsICdhcmUgcmVhbGx5LCByZWFsbHkgc2xvdycsIDMxODE4
KQotCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgICAg
ICAgICB3aW4zMl9ibGFja2xpc3QgPSAoJ3dlYmtpdHB5LmNvbW1vbi5jaGVja291dCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3ZWJraXRweS5jb21tb24uY29uZmlnJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dlYmtpdHB5LnRvb2wnKQotICAg
ICAgICAgICAgICAgIHNlbGYuX2V4Y2x1ZGUobW9kdWxlcywgd2luMzJfYmxhY2tsaXN0LCAnZmFp
bCBob3JyaWJseSBvbiB3aW4zMicsIDU0NTI2KQotCi0gICAgICAgIHJldHVybiBtb2R1bGVzCi0K
LSAgICBkZWYgX2V4Y2x1ZGUoc2VsZiwgbW9kdWxlcywgbW9kdWxlX3ByZWZpeGVzLCByZWFzb24s
IGJ1Z2lkKToKLSAgICAgICAgX2xvZy5pbmZvKCdTa2lwcGluZyB0ZXN0cyBpbiB0aGUgZm9sbG93
aW5nIG1vZHVsZXMgb3IgcGFja2FnZXMgYmVjYXVzZSB0aGV5ICVzOicgJSByZWFzb24pCi0gICAg
ICAgIGZvciBwcmVmaXggaW4gbW9kdWxlX3ByZWZpeGVzOgotICAgICAgICAgICAgX2xvZy5pbmZv
KCcgICAgJXMnICUgcHJlZml4KQotICAgICAgICAgICAgbW9kdWxlc190b19leGNsdWRlID0gZmls
dGVyKGxhbWJkYSBtOiBtLnN0YXJ0c3dpdGgocHJlZml4KSwgbW9kdWxlcykKLSAgICAgICAgICAg
IGZvciBtIGluIG1vZHVsZXNfdG9fZXhjbHVkZToKLSAgICAgICAgICAgICAgICBpZiBsZW4obW9k
dWxlc190b19leGNsdWRlKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJyAg
ICAgICAgJXMnICUgbSkKLSAgICAgICAgICAgICAgICBtb2R1bGVzLnJlbW92ZShtKQotICAgICAg
ICBfbG9nLmluZm8oJyAgICAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PSVkOyB1c2UgLS1hbGwgdG8gaW5jbHVkZSknICUgYnVnaWQpCi0gICAgICAgIF9sb2cuaW5mbygn
JykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC90ZXN0X2ZpbmRlcl91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC90ZXN0X2ZpbmRlcl91bml0
dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI2YjNiMDMwNjc3Nzg1MTFj
N2UwY2QzNThkMTM5ODYxYTMyNDMwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvdGVzdF9maW5kZXJfdW5p
dHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlLCBJbmMuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1l
dDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0j
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJl
Ci1mcm9tIHdlYmtpdHB5LnRlc3QudGVzdF9maW5kZXIgaW1wb3J0IFRlc3RGaW5kZXIKLQotCi1j
bGFzcyBUZXN0RmluZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNl
bGYpOgotICAgICAgICBmaWxlcyA9IHsKLSAgICAgICAgICAnL2Zvby9iYXIvYmF6LnB5JzogJycs
Ci0gICAgICAgICAgJy9mb28vYmFyL2Jhel91bml0dGVzdC5weSc6ICcnLAotICAgICAgICAgICcv
Zm9vMi9iYXIyL2JhejIucHknOiAnJywKLSAgICAgICAgICAnL2ZvbzIvYmFyMi9iYXoyLnB5Yyc6
ICcnLAotICAgICAgICAgICcvZm9vMi9iYXIyL2JhejJfaW50ZWdyYXRpb250ZXN0LnB5JzogJycs
Ci0gICAgICAgICAgJy9mb28yL2JhcjIvbWlzc2luZy5weWMnOiAnJywKLSAgICAgICAgICAnL3Rt
cC9hbm90aGVyX3VuaXR0ZXN0LnB5JzogJycsCi0gICAgICAgIH0KLSAgICAgICAgc2VsZi5mcyA9
IE1vY2tGaWxlU3lzdGVtKGZpbGVzKQotICAgICAgICBzZWxmLmZpbmRlciA9IFRlc3RGaW5kZXIo
c2VsZi5mcykKLSAgICAgICAgc2VsZi5maW5kZXIuYWRkX3RyZWUoJy9mb28nLCAnYmFyJykKLSAg
ICAgICAgc2VsZi5maW5kZXIuYWRkX3RyZWUoJy9mb28yJykKLQotICAgICAgICAjIEhlcmUgd2Ug
aGF2ZSB0byBqdW1wIHRocm91Z2ggYSBob29wIHRvIG1ha2Ugc3VyZSB0ZXN0LXdlYmtpdHB5IGRv
ZXNuJ3QgbG9nCi0gICAgICAgICMgYW55IG1lc3NhZ2VzIGZyb20gdGhlc2UgdGVzdHMgOiguCi0g
ICAgICAgIHNlbGYucm9vdF9sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCi0gICAgICAgIHNl
bGYubG9nX2hhbmRsZXIgPSBOb25lCi0gICAgICAgIGZvciBoIGluIHNlbGYucm9vdF9sb2dnZXIu
aGFuZGxlcnM6Ci0gICAgICAgICAgICBpZiBnZXRhdHRyKGgsICduYW1lJywgTm9uZSkgPT0gJ3dl
YmtpdHB5LnRlc3QubWFpbic6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dfaGFuZGxlciA9IGgK
LSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBzZWxmLmxvZ19oYW5kbGVyOgotICAg
ICAgICAgICAgc2VsZi5sb2dfbGV2ZWwgPSBzZWxmLmxvZ19oYW5kbGVyLmxldmVsCi0gICAgICAg
ICAgICBzZWxmLmxvZ19oYW5kbGVyLmxldmVsID0gbG9nZ2luZy5DUklUSUNBTAotCi0gICAgZGVm
IHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmxvZ19oYW5kbGVyOgotICAgICAgICAg
ICAgc2VsZi5sb2dfaGFuZGxlci5zZXRMZXZlbChzZWxmLmxvZ19sZXZlbCkKLQotICAgIGRlZiB0
ZXN0X2FkZGl0aW9uYWxfc3lzdGVtX3BhdGhzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzZWxmLmZpbmRlci5hZGRpdGlvbmFsX3BhdGhzKFsnL3VzciddKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgWycvZm9vJywgJy9mb28yJ10pCi0KLSAgICBkZWYgdGVzdF9pc19tb2R1
bGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRlci5pc19tb2R1bGUo
J2Jhci5iYXonKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZmluZGVyLmlzX21vZHVs
ZSgnYmFyMi5iYXoyJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRlci5pc19t
b2R1bGUoJ2JhcjIuYmF6Ml9pbnRlZ3JhdGlvbnRlc3QnKSkKLQotICAgICAgICAjIE1pc3Npbmcg
dGhlIHByb3BlciBuYW1lc3BhY2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5maW5k
ZXIuaXNfbW9kdWxlKCdiYXonKSkKLQotICAgIGRlZiB0ZXN0X3RvX21vZHVsZShzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5maW5kZXIudG9fbW9kdWxlKCcvZm9vL3Rlc3Qu
cHknKSwgJ3Rlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmZpbmRlci50b19t
b2R1bGUoJy9mb28vYmFyL3Rlc3QucHknKSwgJ2Jhci50ZXN0JykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc2VsZi5maW5kZXIudG9fbW9kdWxlKCcvZm9vL2Jhci9weXRlc3QucHknKSwgJ2Jh
ci5weXRlc3QnKQotCi0gICAgZGVmIHRlc3RfY2xlYW4oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShzZWxmLmZzLmV4aXN0cygnL2ZvbzIvYmFyMi9taXNzaW5nLnB5YycpKQotICAgICAg
ICBzZWxmLmZpbmRlci5jbGVhbl90cmVlcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2Vs
Zi5mcy5leGlzdHMoJy9mb28yL2JhcjIvbWlzc2luZy5weWMnKSkKLQotICAgIGRlZiBjaGVja19u
YW1lcyhzZWxmLCBuYW1lcywgZXhwZWN0ZWRfbmFtZXMsIHNraXBfaW50ZWdyYXRpb250ZXN0cz1G
YWxzZSwgZmluZF9hbGw9RmFsc2UpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmZp
bmRlci5maW5kX25hbWVzKG5hbWVzLCBza2lwX2ludGVncmF0aW9udGVzdHMsIGZpbmRfYWxsKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbmFtZXMpCi0KLSAgICBkZWYgdGVz
dF9kZWZhdWx0X25hbWVzKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX25hbWVzKFtdLCBbJ2Jh
ci5iYXpfdW5pdHRlc3QnLCAnYmFyMi5iYXoyX2ludGVncmF0aW9udGVzdCddKQotICAgICAgICBz
ZWxmLmNoZWNrX25hbWVzKFtdLCBbJ2Jhci5iYXpfdW5pdHRlc3QnXSwgc2tpcF9pbnRlZ3JhdGlv
bnRlc3RzPVRydWUsIGZpbmRfYWxsPVRydWUpCi0gICAgICAgIHNlbGYuY2hlY2tfbmFtZXMoW10s
IFsnYmFyLmJhel91bml0dGVzdCddLCBza2lwX2ludGVncmF0aW9udGVzdHM9VHJ1ZSwgZmluZF9h
bGw9RmFsc2UpCi0KLSAgICAgICAgIyBTaG91bGQgcmV0dXJuIHRoZSBuYW1lcyBnaXZlbiBpdCwg
ZXZlbiBpZiB0aGV5IGRvbid0IGV4aXN0LgotICAgICAgICBzZWxmLmNoZWNrX25hbWVzKFsnZm9v
YmFyJ10sIFsnZm9vYmFyJ10sIHNraXBfaW50ZWdyYXRpb250ZXN0cz1UcnVlLCBmaW5kX2FsbD1G
YWxzZSkKLQotICAgIGRlZiB0ZXN0X3BhdGhzKHNlbGYpOgotICAgICAgICBzZWxmLmZzLmNoZGly
KCcvZm9vL2JhcicpCi0gICAgICAgIHNlbGYuY2hlY2tfbmFtZXMoWydiYXpfdW5pdHRlc3QucHkn
XSwgWydiYXIuYmF6X3VuaXR0ZXN0J10pCi0gICAgICAgIHNlbGYuY2hlY2tfbmFtZXMoWycuL2Jh
el91bml0dGVzdC5weSddLCBbJ2Jhci5iYXpfdW5pdHRlc3QnXSkKLSAgICAgICAgc2VsZi5jaGVj
a19uYW1lcyhbJy9mb28vYmFyL2Jhel91bml0dGVzdC5weSddLCBbJ2Jhci5iYXpfdW5pdHRlc3Qn
XSkKLSAgICAgICAgc2VsZi5jaGVja19uYW1lcyhbJy4nXSwgWydiYXIuYmF6X3VuaXR0ZXN0J10p
Ci0gICAgICAgIHNlbGYuY2hlY2tfbmFtZXMoWycuLi8uLi9mb28yL2JhcjInXSwgWydiYXIyLmJh
ejJfaW50ZWdyYXRpb250ZXN0J10pCi0KLSAgICAgICAgc2VsZi5mcy5jaGRpcignLycpCi0gICAg
ICAgIHNlbGYuY2hlY2tfbmFtZXMoWydiYXInXSwgWydiYXIuYmF6X3VuaXR0ZXN0J10pCi0gICAg
ICAgIHNlbGYuY2hlY2tfbmFtZXMoWycvZm9vL2Jhci8nXSwgWydiYXIuYmF6X3VuaXR0ZXN0J10p
Ci0KLSAgICAgICAgIyBUaGlzIHdvcmtzICdieSBhY2NpZGVudCcgc2luY2UgaXQgbWFwcyBvbnRv
IGEgcGFja2FnZS4KLSAgICAgICAgc2VsZi5jaGVja19uYW1lcyhbJ2Jhci8nXSwgWydiYXIuYmF6
X3VuaXR0ZXN0J10pCi0KLSAgICAgICAgIyBUaGlzIHNob3VsZCBsb2cgYW4gZXJyb3IsIHNpbmNl
IGl0J3Mgb3V0c2lkZSB0aGUgdHJlZXMuCi0gICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCi0g
ICAgICAgIG9jLnNldF9sb2dfbGV2ZWwobG9nZ2luZy5FUlJPUikKLSAgICAgICAgb2MuY2FwdHVy
ZV9vdXRwdXQoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmNoZWNrX25hbWVzKFsn
L3RtcC9hbm90aGVyX3VuaXR0ZXN0LnB5J10sIFtdKQotICAgICAgICBmaW5hbGx5OgotICAgICAg
ICAgICAgXywgXywgbG9ncyA9IG9jLnJlc3RvcmVfb3V0cHV0KCkKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgnYW5vdGhlcl91bml0dGVzdC5weScgaW4gbG9ncykKLQotICAgICAgICAjIFBh
dGhzIHRoYXQgZG9uJ3QgZXhpc3QgYXJlIGVycm9ycy4KLSAgICAgICAgb2MuY2FwdHVyZV9vdXRw
dXQoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmNoZWNrX25hbWVzKFsnL2Zvby9i
YXIvbm90ZXhpc3RfdW5pdHRlc3QucHknXSwgW10pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAg
ICAgICBfLCBfLCBsb2dzID0gb2MucmVzdG9yZV9vdXRwdXQoKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKCdub3RleGlzdF91bml0dGVzdC5weScgaW4gbG9ncykKLQotICAgICAgICAjIE5h
bWVzIHRoYXQgZG9uJ3QgZXhpc3QgYXJlIGNhdWdodCBsYXRlciwgYXQgbG9hZCB0aW1lLgotICAg
ICAgICBzZWxmLmNoZWNrX25hbWVzKFsnYmFyLm5vdGV4aXN0X3VuaXR0ZXN0J10sIFsnYmFyLm5v
dGV4aXN0X3VuaXR0ZXN0J10pCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5p
dHRlc3QubWFpbigpCg==
</data>
<flag name="review"
          id="160720"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>