<?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>52691</bug_id>
          
          <creation_ts>2011-01-18 17:34:41 -0800</creation_ts>
          <short_desc>new-run-webkit-tests: remove use of os.walk, use mock filesystem for better unit testing</short_desc>
          <delta_ts>2011-01-19 14:41:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>koz</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>336246</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-18 17:34:41 -0800</bug_when>
    <thetext>new-run-webkit-tests: remove use of os.walk, use mock filesystem for better unit testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336251</commentid>
    <comment_count>1</comment_count>
      <attachid>79369</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-18 17:41:02 -0800</bug_when>
    <thetext>Created attachment 79369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336269</commentid>
    <comment_count>2</comment_count>
      <attachid>79375</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-18 18:18:50 -0800</bug_when>
    <thetext>Created attachment 79375
revise approach to files_under() so we can handle reftests properly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336522</commentid>
    <comment_count>3</comment_count>
      <attachid>79375</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-19 07:46:56 -0800</bug_when>
    <thetext>Comment on attachment 79375
revise approach to files_under() so we can handle reftests properly

View in context: https://bugs.webkit.org/attachment.cgi?id=79375&amp;action=review

&gt; Tools/Scripts/webkitpy/common/system/filesystem.py:76
&gt; +        dirs_to_skip = dirs_to_skip or []

You can use [] as the default argument value to the function, since you&apos;re not modifying the list.

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:75
&gt; +        dirs_to_skip = dirs_to_skip or []

Same here.

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:100
&gt; +                    continue

This &quot;continue&quot; will only apply to the loop over dirs_to_skip, but I think you want to continue the iteration in the self.files loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336689</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 12:12:08 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 79375 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79375&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem.py:76
&gt; &gt; +        dirs_to_skip = dirs_to_skip or []
&gt; 
&gt; You can use [] as the default argument value to the function, since you&apos;re not modifying the list.
&gt;

Fair enough. Done.
 
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:75
&gt; &gt; +        dirs_to_skip = dirs_to_skip or []
&gt; 
&gt; Same here.
&gt;

Ditto. 
 
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:100
&gt; &gt; +                    continue
&gt; 
&gt; This &quot;continue&quot; will only apply to the loop over dirs_to_skip, but I think you want to continue the iteration in the self.files loop.

Good catch. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336694</commentid>
    <comment_count>5</comment_count>
      <attachid>79462</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 12:18:59 -0800</bug_when>
    <thetext>Created attachment 79462
update w/ feedback from mihaip&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336728</commentid>
    <comment_count>6</comment_count>
      <attachid>79470</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 12:50:57 -0800</bug_when>
    <thetext>Created attachment 79470
pull strcats out of loop in MockFileSystem.files_under()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336742</commentid>
    <comment_count>7</comment_count>
      <attachid>79470</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 13:30:17 -0800</bug_when>
    <thetext>Comment on attachment 79470
pull strcats out of loop in MockFileSystem.files_under()

Clearing flags on attachment: 79470

Committed r76155: &lt;http://trac.webkit.org/changeset/76155&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336743</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 13:30:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336762</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-19 13:51:00 -0800</bug_when>
    <thetext>This broke tests.

======================================================================
ERROR: test_files_in_namelist (webkitpy.common.system.directoryfileset_unittest.DirectoryFileSetTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/Tools/Scripts/webkitpy/common/system/directoryfileset_unittest.py&quot;, line 42, in test_files_in_namelist
    self.assertTrue(&apos;some-file&apos; in self._fileset.namelist())
  File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/Tools/Scripts/webkitpy/common/system/directoryfileset.py&quot;, line 61, in namelist
    return map(self._drop_directory_prefix, self._files_in_directory())
  File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/Tools/Scripts/webkitpy/common/system/directoryfileset.py&quot;, line 52, in _files_in_directory
    return self._filesystem.files_under(self._path)
  File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/Tools/Scripts/webkitpy/common/system/filesystem_mock.py&quot;, line 85, in files_under
    if self.basename(path) in dirs_to_skip:
TypeError: basename() takes exactly 1 argument (2 given)

----------------------------------------------------------------------</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336779</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 14:08:58 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; This broke tests.
&gt; 
&gt; ======================================================================
&gt; ERROR: test_files_in_namelist (webkitpy.common.system.directoryfileset_unittest.DirectoryFileSetTest)
&gt; ----------------------------------------------------------------------
&gt; Traceback (most recent call last):
&gt;   File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/Tools/Scripts/webkitpy/common/system/directoryfileset_unittest.py&quot;, line 42, in test_files_in_namelist
&gt;     self.assertTrue(&apos;some-file&apos; in self._fileset.namelist())
&gt;   File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/Tools/Scripts/webkitpy/common/system/directoryfileset.py&quot;, line 61, in namelist
&gt;     return map(self._drop_directory_prefix, self._files_in_directory())
&gt;   File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/Tools/Scripts/webkitpy/common/system/directoryfileset.py&quot;, line 52, in _files_in_directory
&gt;     return self._filesystem.files_under(self._path)
&gt;   File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/Tools/Scripts/webkitpy/common/system/filesystem_mock.py&quot;, line 85, in files_under
&gt;     if self.basename(path) in dirs_to_skip:
&gt; TypeError: basename() takes exactly 1 argument (2 given)
&gt; 
&gt; ----------------------------------------------------------------------

Fixed in r76158.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336821</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-19 14:41:06 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76155 might have broken GTK Linux 32-bit Release
The following tests are not passing:
fast/forms/input-text-scroll-left-on-blur.html
fast/forms/plaintext-mode-2.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79369</attachid>
            <date>2011-01-18 17:41:02 -0800</date>
            <delta_ts>2011-01-18 18:18:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52691-20110118174101.patch</filename>
            <type>text/plain</type>
            <size>19050</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4Y2Jm
Y2MzZWIwYzA0NzljM2JkMGEzODgwNWJiYzY1YWYwNDJjYmQ1Li45ODhkMTI3ODkxYmRmZTA5OTAy
OTIwMWI0NGY4NDJjYmQzOTVhN2ZhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDEtMTggIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IHJlbW92ZSB1c2Ugb2Ygb3Mu
d2FsaywgdXNlIG1vY2sgZmlsZXN5c3RlbSBmb3IgYmV0dGVyCisgICAgICAgIHVuaXQgdGVzdGlu
Zy4gb3Mud2FsaygpIGlzIHRvbyBtdWNoIG9mIGEgaGFzc2xlIHRvIGltcGxlbWVudCBvbgorICAg
ICAgICB0b3Agb2YgdGhlIGluLW1lbW9yeSBtb2NrIGZpbGVzeXN0ZW0gYW5kIGFkZGluZyB0aGUg
bmVjZXNzYXJ5CisgICAgICAgIGludGVyZmFjZSB0byBmaWxlc191bmRlcigpIGdpdmVzIGNsaWVu
dHMgYSBjbGVhbmVyIEFQSSBhbnl3YXkKKyAgICAgICAgKGZvciB0aGlzIHBhcnRpY3VsYXIgdXNh
Z2UgbW9kZWwpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MjY5MQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW1fbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3RfZmlsZXMucHk6CisKKzIwMTEtMDEtMTggIERpcmsgUHJhbmtlICA8ZHByYW5r
ZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ2hhbmdlIG1vcmUgbW9kdWxlcyBpbiB0aGUgbGF5b3V0LXRlc3RzIGNvZGUgdG8g
dXNlIHRoZQorICAgICAgICBmaWxlc3lzdGVtIHdyYXBwZXIgZm9yIGNsZWFuZXIgdW5pdCB0ZXN0
aW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoZSBnbG9iKCkgd3JhcHBlciB0
byB0aGUgZmlsZXN5c3RlbQorICAgICAgICBhYnN0cmFjdGlvbi4KKyAgICAgICAgCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjYwNAorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5
cGVzL3Rlc3RfdHlwZV9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHk6CisK
IDIwMTEtMDEtMTggIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4IDUzZTk3OTZmMTVlMzU3ZmZm
MjE5MjUyOTg0NDQwNzdmZmRiMjU3OWEuLjYwZjg1ZDk4MjYwODFlZmRiNjJjNjAyZTBlYzcwMDM0
NzYzZmJmOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtLnB5CkBAIC0zMyw2ICszMyw3IEBAIGZyb20gX19mdXR1cmVfXyBpbXBvcnQg
d2l0aF9zdGF0ZW1lbnQKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwogaW1wb3J0IGV4Y2Vw
dGlvbnMKK2ltcG9ydCBnbG9iCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1w
ZmlsZQpAQCAtNDUsNiArNDYsNyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgb3Ig
cmVsYXRpdmUuIiIiCiAKICAgICBkZWYgYmFzZW5hbWUoc2VsZiwgcGF0aCk6CisgICAgICAgICIi
IldyYXBzIG9zLnBhdGguYmFzZW5hbWUoKS4iIiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguYmFz
ZW5hbWUocGF0aCkKIAogICAgIGRlZiBjb3B5ZmlsZShzZWxmLCBzb3VyY2UsIGRlc3RpbmF0aW9u
KToKQEAgLTUzLDE3ICs1NSw1MiBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAg
IHNodXRpbC5jb3B5ZmlsZShzb3VyY2UsIGRlc3RpbmF0aW9uKQogCiAgICAgZGVmIGRpcm5hbWUo
c2VsZiwgcGF0aCk6CisgICAgICAgICIiIldyYXBzIG9zLnBhdGguZGlybmFtZSgpLiIiIgogICAg
ICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKHBhdGgpCiAKICAgICBkZWYgZXhpc3RzKHNlbGYs
IHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgcGF0aCBleGlzdHMgaW4gdGhl
IGZpbGVzeXN0ZW0uIiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmV4aXN0cyhwYXRoKQogCi0g
ICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGxp
c3Qgb2YgYWxsIGZpbGVzIHVuZGVyIHRoZSBnaXZlbiBwYXRoLiIiIgotICAgICAgICByZXR1cm4g
W3NlbGYuam9pbihwYXRoX3RvX2ZpbGUsIGZpbGVuYW1lKQotICAgICAgICAgICAgZm9yIChwYXRo
X3RvX2ZpbGUsIF8sIGZpbGVuYW1lcykgaW4gb3Mud2FsayhwYXRoKQotICAgICAgICAgICAgZm9y
IGZpbGVuYW1lIGluIGZpbGVuYW1lc10KKyAgICBkZWYgZmlsZXNfdW5kZXIoc2VsZiwgcGF0aCwg
ZGlyc190b19za2lwPU5vbmUsIGV4dGVuc2lvbnNfdG9faW5jbHVkZT1Ob25lKToKKyAgICAgICAg
IiIiUmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBmaWxlcyB1bmRlciB0aGUgZ2l2ZW4gcGF0aCBpbiB0
b3Bkb3duIG9yZGVyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBkaXJzX3RvX3NraXA6
IGEgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBza2lwIG92ZXIgZHVyaW5nIHRoZQorICAgICAgICAg
ICAgICAgIHRyYXZlcnNhbCAoZS5nLiwgLnN2biwgcmVzb3VyY2VzLCBldGMuKQorICAgICAgICAg
ICAgZXh0ZW5zaW9uc190b19pbmNsdWRlOiBpZiBub24tbnVsbCwgb25seSBmaWxlcyBtYXRjaGlu
ZyB0aGUKKyAgICAgICAgICAgICAgICBzcGVjaWZpZWQgZXh0ZW5zaW9ucyB3aWxsIGJlIGluY2x1
ZGVkCisgICAgICAgICIiIgorICAgICAgICBkaXJzX3RvX3NraXAgPSBkaXJzX3RvX3NraXAgb3Ig
W10KKyAgICAgICAgZmlsZXMgPSBbXQorICAgICAgICBpZiBzZWxmLmlzZmlsZShwYXRoKToKKyAg
ICAgICAgICAgIGlmIGV4dGVuc2lvbnNfdG9faW5jbHVkZToKKyAgICAgICAgICAgICAgICBmb3Ig
ZXh0IGluIGV4dGVuc2lvbnNfdG9faW5jbHVkZToKKyAgICAgICAgICAgICAgICAgICAgaWYgcGF0
aC5lbmRzd2l0aChleHQpOgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kKHBh
dGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChwYXRo
KQorICAgICAgICAgICAgcmV0dXJuIGZpbGVzCisKKyAgICAgICAgaWYgc2VsZi5iYXNlbmFtZShw
YXRoKSBpbiBkaXJzX3RvX3NraXA6CisgICAgICAgICAgICByZXR1cm4gW10KKworICAgICAgICBm
b3IgKGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMpIGluIG9zLndhbGsocGF0aCk6CisgICAg
ICAgICAgICBmb3IgZCBpbiBkaXJzX3RvX3NraXA6CisgICAgICAgICAgICAgICAgaWYgZCBpbiBk
aXJuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgZGlybmFtZXMucmVtb3ZlKGQpCisgICAgICAg
ICAgICBpZiBleHRlbnNpb25zX3RvX2luY2x1ZGU6CisgICAgICAgICAgICAgICAgZm9yIGZpbGVu
YW1lIGluIGZpbGVuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGV4dCBpbiBleHRlbnNp
b25zX3RvX2luY2x1ZGU6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRz
d2l0aChleHQpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChzZWxm
LmpvaW4oZGlycGF0aCwgZmlsZW5hbWUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBmaWxlcy5leHRlbmQoW3NlbGYuam9pbihkaXJwYXRoLCBmaWxlbmFtZSkgZm9yIGZpbGVu
YW1lIGluIGZpbGVuYW1lc10pCisgICAgICAgIHJldHVybiBmaWxlcworCisgICAgZGVmIGdsb2Io
c2VsZiwgcGF0aCk6CisgICAgICAgICIiIldyYXBzIGdsb2IuZ2xvYigpLiIiIgorICAgICAgICBy
ZXR1cm4gZ2xvYi5nbG9iKHBhdGgpCiAKICAgICBkZWYgaXNmaWxlKHNlbGYsIHBhdGgpOgogICAg
ICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgcGF0aCByZWZlcnMgdG8gYSBmaWxlLiIiIgpAQCAt
MTI1LDYgKzE2Miw3IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgc2h1dGls
Lm1vdmUoc3JjLCBkZXN0KQogCiAgICAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgorICAgICAg
ICAiIiJXcmFwcyBvcy5wYXRoLm5vcm1wYXRoKCkuIiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRo
Lm5vcm1wYXRoKHBhdGgpCiAKICAgICBkZWYgb3Blbl9iaW5hcnlfdGVtcGZpbGUoc2VsZiwgc3Vm
Zml4KToKQEAgLTE4OCw3ICsyMjYsNyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAg
ICAgICAgICByZXR1cm4gZi5yZWFkKCkKIAogICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToK
LSAgICAgICAgIiIiUmV0dXJuIChkaXJuYW1lLCBiYXNlbmFtZSArIGV4dCkuIiIiCisgICAgICAg
ICIiIlJldHVybiAoZGlybmFtZSArIG9zLnNlcCArIGJhc2VuYW1lLCAnLicgKyBleHQpIiIiCiAg
ICAgICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpCiAKICAgICBkZWYgd3JpdGVfYmlu
YXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKaW5kZXggMTBhY2Mz
YjQyZGViNTBlNTQ5MzJjMWM2N2E0NzIzZGRmZTgzMjg0YS4uN2E4ZWMyMGM3YzdiYmJhMjg2MjVk
ZjE4ZTU1YjAzYTRlNzFkYTNkOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CkBAIC03MSwxMCArNzEsNDkgQEAg
Y2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICBkZWYgZXhpc3RzKHNlbGYsIHBhdGgp
OgogICAgICAgICByZXR1cm4gc2VsZi5pc2ZpbGUocGF0aCkgb3Igc2VsZi5pc2RpcihwYXRoKQog
Ci0gICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgorICAgIGRlZiBmaWxlc191bmRlcihz
ZWxmLCBwYXRoLCBkaXJzX3RvX3NraXA9Tm9uZSwgZXh0ZW5zaW9uc190b19pbmNsdWRlPU5vbmUp
OgorICAgICAgICBkaXJzX3RvX3NraXAgPSBkaXJzX3RvX3NraXAgb3IgW10KKyAgICAgICAgZmls
ZXMgPSBbXQorICAgICAgICBpZiBzZWxmLmlzZmlsZShwYXRoKToKKyAgICAgICAgICAgIGlmIGV4
dGVuc2lvbnNfdG9faW5jbHVkZToKKyAgICAgICAgICAgICAgICBmb3IgZXh0IGluIGV4dGVuc2lv
bnNfdG9faW5jbHVkZToKKyAgICAgICAgICAgICAgICAgICAgaWYgcGF0aC5lbmRzd2l0aChleHQp
OgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kKHBhdGgpCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChwYXRoKQorICAgICAgICAgICAg
cmV0dXJuIGZpbGVzCisKKyAgICAgICAgaWYgc2VsZi5iYXNlbmFtZShwYXRoKSBpbiBkaXJzX3Rv
X3NraXA6CisgICAgICAgICAgICByZXR1cm4gW10KKwogICAgICAgICBpZiBub3QgcGF0aC5lbmRz
d2l0aCgnLycpOgogICAgICAgICAgICAgcGF0aCArPSAnLycKLSAgICAgICAgcmV0dXJuIFtmaWxl
IGZvciBmaWxlIGluIHNlbGYuZmlsZXMgaWYgZmlsZS5zdGFydHN3aXRoKHBhdGgpXQorCisgICAg
ICAgIGZvciBmaWxlbmFtZSBpbiBzZWxmLmZpbGVzOgorICAgICAgICAgICAgaWYgbm90IGZpbGVu
YW1lLnN0YXJ0c3dpdGgocGF0aCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgaWYgZXh0ZW5zaW9uc190b19pbmNsdWRlOgorICAgICAgICAgICAgICAgIGV4dCA9IHNl
bGYuc3BsaXRleHQoZmlsZW5hbWUpWzFdCisgICAgICAgICAgICAgICAgaWYgbm90IGV4dCBpbiBl
eHRlbnNpb25zX3RvX2luY2x1ZGU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg
ICAgICAgICAgIHN1ZmZpeCA9IGZpbGVuYW1lW2xlbihwYXRoKSAtIDE6XQorICAgICAgICAgICAg
Zm9yIGQgaW4gZGlyc190b19za2lwOgorICAgICAgICAgICAgICAgIGlmICcvJyArIGQgKyAnLycg
aW4gc3VmZml4OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBm
aWxlcy5hcHBlbmQoc2VsZi5qb2luKHBhdGgsIHN1ZmZpeFsxOl0pKQorCisgICAgICAgIHJldHVy
biBmaWxlcworCisgICAgZGVmIGdsb2Ioc2VsZiwgcGF0aCk6CisgICAgICAgICMgRklYTUU6IFRo
aXMgb25seSBoYW5kbGVzIGEgd2lsZGNhcmQgJyonIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGguCisg
ICAgICAgICMgTWF5YmUgaXQgc2hvdWxkIGhhbmRsZSBtb3JlPworICAgICAgICBpZiBwYXRoWy0x
XSA9PSAnKic6CisgICAgICAgICAgICByZXR1cm4gW2YgZm9yIGYgaW4gc2VsZi5maWxlcyBpZiBm
LnN0YXJ0c3dpdGgocGF0aFs6LTFdKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVy
biBbZiBmb3IgZiBpbiBzZWxmLmZpbGVzIGlmIGYgPT0gcGF0aF0KIAogICAgIGRlZiBpc2ZpbGUo
c2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYuZmlsZXMgYW5kIHNlbGYu
ZmlsZXNbcGF0aF0gaXMgbm90IE5vbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVt
cF9yZW5kZXJfdHJlZV90aHJlYWQucHkKaW5kZXggMmJiMmQwMjcyZGI5OWJiNzBlYWZkODljM2Zk
MzFmNmVmZTI5ZmZmZC4uNGQ2YjVmNmQ1ZWNjZGIwNWNmMGY5OGEwMjEyMDdjMjg1OWM3Y2IyNSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQu
cHkKQEAgLTg2LDYgKzg2LDcgQEAgZGVmIF9wcm9jZXNzX291dHB1dChwb3J0LCBvcHRpb25zLCB0
ZXN0X2lucHV0LCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3MsCiAgICAgUmV0dXJuczogYSBUZXN0UmVz
dWx0IG9iamVjdAogICAgICIiIgogICAgIGZhaWx1cmVzID0gW10KKyAgICBmcyA9IHBvcnQuX2Zp
bGVzeXN0ZW0KIAogICAgIGlmIHRlc3Rfb3V0cHV0LmNyYXNoOgogICAgICAgICBmYWlsdXJlcy5h
cHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2goKSkKQEAgLTk2LDExICs5NywxMCBAQCBk
ZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5wdXQsIHRlc3RfdHlwZXMs
IHRlc3RfYXJncywKICAgICBpZiB0ZXN0X291dHB1dC5jcmFzaDoKICAgICAgICAgX2xvZy5kZWJ1
ZygiJXMgU3RhY2t0cmFjZSBmb3IgJXM6XG4lcyIgJSAod29ya2VyX25hbWUsIHRlc3RfbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9v
dXRwdXQuZXJyb3IpKQotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihvcHRpb25zLnJl
c3VsdHNfZGlyZWN0b3J5LCB0ZXN0X25hbWUpCi0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5z
cGxpdGV4dChmaWxlbmFtZSlbMF0gKyAiLXN0YWNrLnR4dCIKLSAgICAgICAgcG9ydC5tYXliZV9t
YWtlX2RpcmVjdG9yeShvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKVswXSkKLSAgICAgICAgd2l0aCBj
b2RlY3Mub3BlbihmaWxlbmFtZSwgIndiIiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAgICAgICAg
IGZpbGUud3JpdGUodGVzdF9vdXRwdXQuZXJyb3IpCisgICAgICAgIGZpbGVuYW1lID0gZnMuam9p
bihvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LCB0ZXN0X25hbWUpCisgICAgICAgIGZpbGVuYW1l
ID0gZnMuc3BsaXRleHQoZmlsZW5hbWUpWzBdICsgIi1zdGFjay50eHQiCisgICAgICAgIGZzLm1h
eWJlX21ha2VfZGlyZWN0b3J5KGZzLmRpcm5hbWUoZmlsZW5hbWUpKQorICAgICAgICBmcy53cml0
ZV90ZXh0X2ZpbGUoZmlsZW5hbWUsIHRlc3Rfb3V0cHV0LmVycm9yKQogICAgIGVsaWYgdGVzdF9v
dXRwdXQuZXJyb3I6CiAgICAgICAgIF9sb2cuZGVidWcoIiVzICVzIG91dHB1dCBzdGRlcnIgbGlu
ZXM6XG4lcyIgJSAod29ya2VyX25hbWUsIHRlc3RfbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X291dHB1dC5lcnJvcikpCkBA
IC0zODUsNyArMzg1LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6
CiAKICAgICAgICAgIyBBcHBlbmQgdGVzdHMgd2UncmUgcnVubmluZyB0byB0aGUgZXhpc3Rpbmcg
dGVzdHNfcnVuLnR4dCBmaWxlLgogICAgICAgICAjIFRoaXMgaXMgY3JlYXRlZCBpbiBydW5fd2Vi
a2l0X3Rlc3RzLnB5Ol9QcmVwYXJlTGlzdHNBbmRQcmludE91dHB1dC4KLSAgICAgICAgdGVzdHNf
cnVuX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3Rv
cnksCisgICAgICAgIHRlc3RzX3J1bl9maWxlbmFtZSA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0u
am9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RzX3J1bi50eHQiKQogICAgICAgICB0ZXN0c19y
dW5fZmlsZSA9IGNvZGVjcy5vcGVuKHRlc3RzX3J1bl9maWxlbmFtZSwgImEiLCAidXRmLTgiKQog
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rl
c3RfZmlsZXMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rl
c3RfZmlsZXMucHkKaW5kZXggMmMwYTdiNjNiZjY3MWFiYzFiZDgyNGE4MWRlZWQxMjZmNWZkOTgz
My4uN2Y2MTk1NjAxNDc5ZWFlNDZhMTYyZGIxYzNjMDhkZDJlMmExZGEzNyAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5w
eQpAQCAtMzQsOCArMzQsNiBAQCBsaXN0IG9mIHRlc3QgZmlsZXMgaXMgY29uc3RyYWluZWQgdG8g
dGhvc2UgZm91bmQgdW5kZXIgdGhlIHBhdGhzIHBhc3NlZCBpbiwKIGkuZS4gY2FsbGluZyBmaW5k
KFsiTGF5b3V0VGVzdHMvZmFzdCJdKSB3aWxsIG9ubHkgcmV0dXJuIGZpbGVzCiB1bmRlciB0aGF0
IGRpcmVjdG9yeS4iIiIKIAotaW1wb3J0IGdsb2IKLWltcG9ydCBvcwogaW1wb3J0IHRpbWUKIAog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1dGlscwpAQCAtNTgsMTYgKzU2
LDE4IEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICAgIHBhdGhzOiBhIGxpc3Qgb2YgY29t
bWFuZCBsaW5lIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBsYXlvdXRfdGVzdHNfZGlyKCkKICAgICAg
ICAgICB0byBsaW1pdCB0aGUgc2VhcmNoIHRvLiBnbG9iIHBhdHRlcm5zIGFyZSBvay4KICAgICAi
IiIKKyAgICBmcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KICAgICBnYXRoZXJfc3RhcnRfdGltZSA9IHRp
bWUudGltZSgpCiAgICAgcGF0aHNfdG9fd2FsayA9IHNldCgpCisKICAgICAjIGlmIHBhdGhzIGlz
IGVtcHR5LCBwcm92aWRlIGEgcHJlLWRlZmluZWQgbGlzdC4KICAgICBpZiBwYXRoczoKICAgICAg
ICAgX2xvZy5kZWJ1ZygiR2F0aGVyaW5nIHRlc3RzIGZyb206ICVzIHJlbGF0aXZlIHRvICVzIiAl
IChwYXRocywgcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpKQogICAgICAgICBmb3IgcGF0aCBpbiBw
YXRoczoKICAgICAgICAgICAgICMgSWYgdGhlcmUncyBhbiAqIGluIHRoZSBuYW1lLCBhc3N1bWUg
aXQncyBhIGdsb2IgcGF0dGVybi4KLSAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocG9y
dC5sYXlvdXRfdGVzdHNfZGlyKCksIHBhdGgpCisgICAgICAgICAgICBwYXRoID0gZnMuam9pbihw
b3J0LmxheW91dF90ZXN0c19kaXIoKSwgcGF0aCkKICAgICAgICAgICAgIGlmIHBhdGguZmluZCgn
KicpID4gLTE6Ci0gICAgICAgICAgICAgICAgZmlsZW5hbWVzID0gZ2xvYi5nbG9iKHBhdGgpCisg
ICAgICAgICAgICAgICAgZmlsZW5hbWVzID0gZnMuZ2xvYihwYXRoKQogICAgICAgICAgICAgICAg
IHBhdGhzX3RvX3dhbGsudXBkYXRlKGZpbGVuYW1lcykKICAgICAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAgICAgcGF0aHNfdG9fd2Fsay5hZGQocGF0aCkKQEAgLTc1LDMwICs3NSwxMyBAQCBk
ZWYgZmluZChwb3J0LCBwYXRocyk6CiAgICAgICAgIF9sb2cuZGVidWcoIkdhdGhlcmluZyB0ZXN0
cyBmcm9tOiAlcyIgJSBwb3J0LmxheW91dF90ZXN0c19kaXIoKSkKICAgICAgICAgcGF0aHNfdG9f
d2Fsay5hZGQocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpCiAKLSAgICAjIE5vdyB3YWxrIGFsbCB0
aGUgcGF0aHMgcGFzc2VkIGluIG9uIHRoZSBjb21tYW5kIGxpbmUgYW5kIGdldCBmaWxlbmFtZXMK
KyAgICAjIEZJWE1FOiBJJ20gbm90IHN1cmUgdGhlcmUncyBtdWNoIHBvaW50IGluIHRoaXMgYmVp
bmcgYSBzZXQuIEEgbGlzdCB3b3VsZAorICAgICMgcHJvYmFibHkgYmUgZmFzdGVyLgogICAgIHRl
c3RfZmlsZXMgPSBzZXQoKQogICAgIGZvciBwYXRoIGluIHBhdGhzX3RvX3dhbGs6Ci0gICAgICAg
IGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpIGFuZCBfaXNfdGVzdF9maWxlKHBhdGgpOgotICAgICAg
ICAgICAgdGVzdF9maWxlcy5hZGQob3MucGF0aC5ub3JtcGF0aChwYXRoKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlCi0KLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0
aCk6Ci0gICAgICAgICAgICAjIERvbid0IHdhbGsgc2tpcHBlZCBkaXJlY3RvcmllcyBvciB0aGVp
ciBzdWItZGlyZWN0b3JpZXMuCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHJvb3Qp
IGluIF9za2lwcGVkX2RpcmVjdG9yaWVzOgotICAgICAgICAgICAgICAgIGRlbCBkaXJzWzpdCi0g
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICMgVGhpcyBjb3B5IGFuZCBmb3It
aW4gaXMgc2xpZ2h0bHkgaW5lZmZpY2llbnQsIGJ1dAotICAgICAgICAgICAgIyB0aGUgZXh0cmEg
d2FsayBhdm9pZGFuY2UgY29uc2lzdGVudGx5IHNoYXZlcyAuNSBzZWNvbmRzCi0gICAgICAgICAg
ICAjIG9mZiBvZiB0b3RhbCB3YWxrKCkgdGltZSBvbiBteSBNYWNCb29rIFByby4KLSAgICAgICAg
ICAgIGZvciBkaXJlY3RvcnkgaW4gZGlyc1s6XToKLSAgICAgICAgICAgICAgICBpZiBkaXJlY3Rv
cnkgaW4gX3NraXBwZWRfZGlyZWN0b3JpZXM6Ci0gICAgICAgICAgICAgICAgICAgIGRpcnMucmVt
b3ZlKGRpcmVjdG9yeSkKLQotICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzOgotICAg
ICAgICAgICAgICAgIGlmIF9pc190ZXN0X2ZpbGUoZmlsZW5hbWUpOgotICAgICAgICAgICAgICAg
ICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihyb290LCBmaWxlbmFtZSkKLSAgICAgICAgICAg
ICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKGZpbGVuYW1lKQotICAgICAgICAg
ICAgICAgICAgICB0ZXN0X2ZpbGVzLmFkZChmaWxlbmFtZSkKKyAgICAgICAgZmlsZXMgPSBmcy5m
aWxlc191bmRlcihwYXRoLCBfc2tpcHBlZF9kaXJlY3RvcmllcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucykKKyAgICAgICAgdGVzdF9m
aWxlcy51cGRhdGUoc2V0KGZpbGVzKSkKIAogICAgIGdhdGhlcl90aW1lID0gdGltZS50aW1lKCkg
LSBnYXRoZXJfc3RhcnRfdGltZQogICAgIF9sb2cuZGVidWcoIlRlc3QgZ2F0aGVyaW5nIHRvb2sg
JWYgc2Vjb25kcyIgJSBnYXRoZXJfdGltZSkKQEAgLTEwNiwxMCArODksMTAgQEAgZGVmIGZpbmQo
cG9ydCwgcGF0aHMpOgogICAgIHJldHVybiB0ZXN0X2ZpbGVzCiAKIAotZGVmIF9oYXNfc3VwcG9y
dGVkX2V4dGVuc2lvbihmaWxlbmFtZSk6CitkZWYgX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZz
LCBmaWxlbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgZmlsZW5hbWUgaXMgb25lIG9mIHRo
ZSBmaWxlIGV4dGVuc2lvbnMgd2Ugd2FudCB0byBydW4gYQogICAgIHRlc3Qgb24uIiIiCi0gICAg
ZXh0ZW5zaW9uID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0KKyAgICBleHRlbnNpb24g
PSBmcy5zcGxpdGV4dChmaWxlbmFtZSlbMV0KICAgICByZXR1cm4gZXh0ZW5zaW9uIGluIF9zdXBw
b3J0ZWRfZmlsZV9leHRlbnNpb25zCiAKIApAQCAtMTIyLDcgKzEwNSw3IEBAIGRlZiBfaXNfcmVm
ZXJlbmNlX2h0bWxfZmlsZShmaWxlbmFtZSk6CiAgICAgcmV0dXJuIEZhbHNlCiAKIAotZGVmIF9p
c190ZXN0X2ZpbGUoZmlsZW5hbWUpOgorZGVmIF9pc190ZXN0X2ZpbGUoZnMsIGZpbGVuYW1lKToK
ICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZW5hbWUgcG9pbnRzIHRvIGEgdGVzdCBmaWxl
LiIiIgotICAgIHJldHVybiAoX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVuYW1lKSBhbmQK
KyAgICByZXR1cm4gKF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmcywgZmlsZW5hbWUpIGFuZAog
ICAgICAgICAgICAgbm90IF9pc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxl
c191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
dGVzdF9maWxlc191bml0dGVzdC5weQppbmRleCA4MzUyNWM4MjNmMzk0MmYzNzQzN2Y4MzQzNzVk
MTYwNzA0M2MzYTQxLi41Njk3MzkxMTkzNWEzNDA4MzllYWZmOGI0NzkzMDUwOTBkYjM0MTgzIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3Rf
ZmlsZXNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CkBAIC02NCwxMSArNjQsMTMgQEAgY2xhc3Mg
VGVzdEZpbGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodGVzdHMsIHNldChbXSkpCiAKICAgICBkZWYgdGVzdF9pc190ZXN0X2ZpbGUoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby5odG1s
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zv
by5zaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3Rf
ZmlsZSgnZm9vLnBuZycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lz
X3Rlc3RfZmlsZSgnZm9vLWV4cGVjdGVkLmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby1leHBlY3RlZC1taXNtYXRjaC5odG1sJykp
CisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoKQorICAgICAgICBmcyA9IHBvcnQuX2ZpbGVzeXN0
ZW0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywg
J2Zvby5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0
X2ZpbGUoZnMsICdmb28uc2h0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2Zp
bGVzLl9pc190ZXN0X2ZpbGUoZnMsICdmb28ucG5nJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnZm9vLWV4cGVjdGVkLmh0bWwnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICdmb28t
ZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5
cGVzL3Rlc3RfdHlwZV9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weQppbmRleCA0Yjk2YjNhYmZlMWI1OTUxMjI4
MTE1MGZkNmZlZWEwNjAzNTQ0YTkzLi5hZDY1MDE2ZWYyNTQ0MzVlNTRkY2ExOWEyNmNlZjE2MDkx
MjBmZTkwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90
ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKQEAgLTMyLDEzICszMiw5
IEBACiBBbHNvIGRlZmluZXMgdGhlIFRlc3RBcmd1bWVudHMgInN0cnVjdCIgdG8gcGFzcyB0aGVt
IGFkZGl0aW9uYWwgYXJndW1lbnRzLgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0
aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGNnaQogaW1wb3J0IGVycm5vCiBp
bXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zLnBhdGgKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMudGVzdF90eXBlcy50ZXN0X3R5cGVfYmFzZSIpCiAKQEAg
LTg2LDkgKzgyLDEwIEBAIGNsYXNzIFRlc3RUeXBlQmFzZShvYmplY3QpOgogICAgIGRlZiBfbWFr
ZV9vdXRwdXRfZGlyZWN0b3J5KHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIiIiQ3JlYXRlcyB0
aGUgb3V0cHV0IGRpcmVjdG9yeSAoaWYgbmVlZGVkKSBmb3IgYSBnaXZlbiB0ZXN0CiAgICAgICAg
IGZpbGVuYW1lLiIiIgotICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5fcm9vdF9vdXRwdXRfZGlyLAorICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0K
KyAgICAgICAgb3V0cHV0X2ZpbGVuYW1lID0gZnMuam9pbihzZWxmLl9yb290X291dHB1dF9kaXIs
CiAgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUp
KQotICAgICAgICBzZWxmLl9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KG9zLnBhdGguc3BsaXQo
b3V0cHV0X2ZpbGVuYW1lKVswXSkKKyAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMu
ZGlybmFtZShvdXRwdXRfZmlsZW5hbWUpKQogCiAgICAgZGVmIF9zYXZlX2Jhc2VsaW5lX2RhdGEo
c2VsZiwgZmlsZW5hbWUsIGRhdGEsIG1vZGlmaWVyLCBlbmNvZGluZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9VHJ1ZSk6CkBAIC0xMDYsMjEgKzEw
MywyMiBAQCBjbGFzcyBUZXN0VHlwZUJhc2Uob2JqZWN0KToKICAgICAgICAgICAgIGJhc2VsaW5l
LCBvciB1cGRhdGUgdGhlIGV4aXN0aW5nIG9uZQogICAgICAgICAiIiIKIAorICAgICAgICBwb3J0
ID0gc2VsZi5fcG9ydAorICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAg
ICAgaWYgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lOgotICAgICAgICAgICAgcmVsYXRpdmVfZGlyID0g
b3MucGF0aC5kaXJuYW1lKAotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVz
dF9maWxlbmFtZShmaWxlbmFtZSkpCi0gICAgICAgICAgICBiYXNlbGluZV9wYXRoID0gc2VsZi5f
cG9ydC5iYXNlbGluZV9wYXRoKCkKLSAgICAgICAgICAgIG91dHB1dF9kaXIgPSBvcy5wYXRoLmpv
aW4oYmFzZWxpbmVfcGF0aCwgcmVsYXRpdmVfZGlyKQotICAgICAgICAgICAgb3V0cHV0X2ZpbGUg
PSBvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKKyAgICAg
ICAgICAgIHJlbGF0aXZlX2RpciA9IGZzLmRpcm5hbWUocG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVu
YW1lKGZpbGVuYW1lKSkKKyAgICAgICAgICAgIGJhc2VsaW5lX3BhdGggPSBwb3J0LmJhc2VsaW5l
X3BhdGgoKQorICAgICAgICAgICAgb3V0cHV0X2RpciA9IGZzLmpvaW4oYmFzZWxpbmVfcGF0aCwg
cmVsYXRpdmVfZGlyKQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUgPSBmcy5iYXNlbmFtZShmcy5z
cGxpdGV4dChmaWxlbmFtZSlbMF0gKwogICAgICAgICAgICAgICAgIHNlbGYuRklMRU5BTUVfU1VG
RklYX0VYUEVDVEVEICsgbW9kaWZpZXIpCi0gICAgICAgICAgICBzZWxmLl9wb3J0Lm1heWJlX21h
a2VfZGlyZWN0b3J5KG91dHB1dF9kaXIpCi0gICAgICAgICAgICBvdXRwdXRfcGF0aCA9IG9zLnBh
dGguam9pbihvdXRwdXRfZGlyLCBvdXRwdXRfZmlsZSkKKyAgICAgICAgICAgIGZzLm1heWJlX21h
a2VfZGlyZWN0b3J5KG91dHB1dF9kaXIpCisgICAgICAgICAgICBvdXRwdXRfcGF0aCA9IGZzLmpv
aW4ob3V0cHV0X2Rpciwgb3V0cHV0X2ZpbGUpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCd3cml0
aW5nIG5ldyBiYXNlbGluZSByZXN1bHQgIiVzIicgJSAob3V0cHV0X3BhdGgpKQogICAgICAgICBl
bHNlOgotICAgICAgICAgICAgb3V0cHV0X3BhdGggPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2ZpbGVu
YW1lKGZpbGVuYW1lLCBtb2RpZmllcikKKyAgICAgICAgICAgIG91dHB1dF9wYXRoID0gcG9ydC5l
eHBlY3RlZF9maWxlbmFtZShmaWxlbmFtZSwgbW9kaWZpZXIpCiAgICAgICAgICAgICBfbG9nLmRl
YnVnKCdyZXNldHRpbmcgYmFzZWxpbmUgcmVzdWx0ICIlcyInICUgb3V0cHV0X3BhdGgpCiAKLSAg
ICAgICAgc2VsZi5fcG9ydC51cGRhdGVfYmFzZWxpbmUob3V0cHV0X3BhdGgsIGRhdGEsIGVuY29k
aW5nKQorICAgICAgICBwb3J0LnVwZGF0ZV9iYXNlbGluZShvdXRwdXRfcGF0aCwgZGF0YSwgZW5j
b2RpbmcpCiAKICAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYsIGZpbGVuYW1lLCBtb2RpZmll
cik6CiAgICAgICAgICIiIlJldHVybnMgYSBmaWxlbmFtZSBpbnNpZGUgdGhlIG91dHB1dCBkaXIg
dGhhdCBjb250YWlucyBtb2RpZmllci4KQEAgLTEzNiw5ICsxMzQsMTAgQEAgY2xhc3MgVGVzdFR5
cGVCYXNlKG9iamVjdCk6CiAgICAgICAgIFJldHVybjoKICAgICAgICAgICBUaGUgYWJzb2x1dGUg
d2luZG93cyBwYXRoIHRvIHRoZSBvdXRwdXQgZmlsZW5hbWUKICAgICAgICAgIiIiCi0gICAgICAg
IG91dHB1dF9maWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLl9yb290X291dHB1dF9kaXIsCisg
ICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBvdXRwdXRfZmlsZW5h
bWUgPSBmcy5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0X2RpciwKICAgICAgICAgICAgIHNlbGYuX3Bv
cnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkpCi0gICAgICAgIHJldHVybiBvcy5w
YXRoLnNwbGl0ZXh0KG91dHB1dF9maWxlbmFtZSlbMF0gKyBtb2RpZmllcgorICAgICAgICByZXR1
cm4gZnMuc3BsaXRleHQob3V0cHV0X2ZpbGVuYW1lKVswXSArIG1vZGlmaWVyCiAKICAgICBkZWYg
Y29tcGFyZV9vdXRwdXQoc2VsZiwgcG9ydCwgZmlsZW5hbWUsIHRlc3RfYXJncywgYWN0dWFsX3Rl
c3Rfb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQp
OgpAQCAtMTY1LDExICsxNjQsMTEgQEAgY2xhc3MgVGVzdFR5cGVCYXNlKG9iamVjdCk6CiAgICAg
ZGVmIF93cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aChzZWxmLCBmaWxlX3BhdGgsIGNvbnRlbnRzLCBl
bmNvZGluZyk6CiAgICAgICAgICIiIlRoaXMgbWV0aG9kIGFzc3VtZXMgdGhhdCBieXRlX2FycmF5
IGlzIGFscmVhZHkgZW5jb2RlZAogICAgICAgICBpbnRvIHRoZSByaWdodCBmb3JtYXQuIiIiCi0g
ICAgICAgIG9wZW5fbW9kZSA9ICd3JworICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0
ZW0KICAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIG9wZW5fbW9kZSA9
ICd3K2InCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4oZmlsZV9wYXRoLCBvcGVuX21vZGUsIGVu
Y29kaW5nPWVuY29kaW5nKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53cml0ZShjb250ZW50
cykKKyAgICAgICAgICAgIGZzLndyaXRlX2JpbmFyeV9maWxlKGZpbGVfcGF0aCwgY29udGVudHMp
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVfcGF0
aCwgY29udGVudHMpCiAKICAgICBkZWYgd3JpdGVfb3V0cHV0X2ZpbGVzKHNlbGYsIGZpbGVuYW1l
LCBmaWxlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQsIGV4cGVjdGVk
LCBlbmNvZGluZywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79375</attachid>
            <date>2011-01-18 18:18:50 -0800</date>
            <delta_ts>2011-01-19 12:18:52 -0800</delta_ts>
            <desc>revise approach to files_under() so we can handle reftests properly</desc>
            <filename>bug-52691-20110118181848.patch</filename>
            <type>text/plain</type>
            <size>19206</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4Y2Jm
Y2MzZWIwYzA0NzljM2JkMGEzODgwNWJiYzY1YWYwNDJjYmQ1Li5jYjhhMjZkNTg0ZDEwN2RlZGJj
YzczNWNhOGRmYjg0OWM1MTU0ODIzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDEtMTggIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IHJlbW92ZSB1c2Ugb2Ygb3Mu
d2FsaywgdXNlIG1vY2sgZmlsZXN5c3RlbSBmb3IgYmV0dGVyCisgICAgICAgIHVuaXQgdGVzdGlu
Zy4gb3Mud2FsaygpIGlzIHRvbyBtdWNoIG9mIGEgaGFzc2xlIHRvIGltcGxlbWVudCBvbgorICAg
ICAgICB0b3Agb2YgdGhlIGluLW1lbW9yeSBtb2NrIGZpbGVzeXN0ZW0gYW5kIGFkZGluZyB0aGUg
bmVjZXNzYXJ5CisgICAgICAgIGludGVyZmFjZSB0byBmaWxlc191bmRlcigpIGdpdmVzIGNsaWVu
dHMgYSBjbGVhbmVyIEFQSSBhbnl3YXkKKyAgICAgICAgKGZvciB0aGlzIHBhcnRpY3VsYXIgdXNh
Z2UgbW9kZWwpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MjY5MQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW1fbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3RfZmlsZXMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5OgorCisyMDExLTAxLTE4ICBEaXJrIFBy
YW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBtb3JlIG1vZHVsZXMgaW4gdGhlIGxheW91dC10
ZXN0cyBjb2RlIHRvIHVzZSB0aGUKKyAgICAgICAgZmlsZXN5c3RlbSB3cmFwcGVyIGZvciBjbGVh
bmVyIHVuaXQgdGVzdGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyB0aGUgZ2xv
YigpIHdyYXBwZXIgdG8gdGhlIGZpbGVzeXN0ZW0KKyAgICAgICAgYWJzdHJhY3Rpb24uCisgICAg
ICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2
MDQKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9m
aWxlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rl
c3RfZmlsZXNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVh
ZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3Rl
bS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3Rl
bV9tb2NrLnB5OgorCiAyMDExLTAxLTE4ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQppbmRleCA1M2U5
Nzk2ZjE1ZTM1N2ZmZjIxOTI1Mjk4NDQ0MDc3ZmZkYjI1NzlhLi5iYjk2MTVjNjZlMzdiOWM1Zjdk
ZDFmMWQ0OWJjYjI0NTY0MmRlZDhiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQpAQCAtMzMsNiArMzMsNyBAQCBmcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgZXJybm8K
IGltcG9ydCBleGNlcHRpb25zCitpbXBvcnQgZ2xvYgogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGls
CiBpbXBvcnQgdGVtcGZpbGUKQEAgLTQ1LDYgKzQ2LDcgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmpl
Y3QpOgogICAgIG9yIHJlbGF0aXZlLiIiIgogCiAgICAgZGVmIGJhc2VuYW1lKHNlbGYsIHBhdGgp
OgorICAgICAgICAiIiJXcmFwcyBvcy5wYXRoLmJhc2VuYW1lKCkuIiIiCiAgICAgICAgIHJldHVy
biBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCiAKICAgICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNl
LCBkZXN0aW5hdGlvbik6CkBAIC01MywxNyArNTUsNTIgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmpl
Y3QpOgogICAgICAgICBzaHV0aWwuY29weWZpbGUoc291cmNlLCBkZXN0aW5hdGlvbikKIAogICAg
IGRlZiBkaXJuYW1lKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJXcmFwcyBvcy5wYXRoLmRpcm5h
bWUoKS4iIiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQogCiAgICAgZGVm
IGV4aXN0cyhzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIHBhdGgg
ZXhpc3RzIGluIHRoZSBmaWxlc3lzdGVtLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0aC5leGlz
dHMocGF0aCkKIAotICAgIGRlZiBmaWxlc191bmRlcihzZWxmLCBwYXRoKToKLSAgICAgICAgIiIi
UmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBmaWxlcyB1bmRlciB0aGUgZ2l2ZW4gcGF0aC4iIiIKLSAg
ICAgICAgcmV0dXJuIFtzZWxmLmpvaW4ocGF0aF90b19maWxlLCBmaWxlbmFtZSkKLSAgICAgICAg
ICAgIGZvciAocGF0aF90b19maWxlLCBfLCBmaWxlbmFtZXMpIGluIG9zLndhbGsocGF0aCkKLSAg
ICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgZGVmIGZpbGVzX3VuZGVy
KHNlbGYsIHBhdGgsIGRpcnNfdG9fc2tpcD1Ob25lLCBmaWxlX2ZpbHRlcj1Ob25lKToKKyAgICAg
ICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBmaWxlcyB1bmRlciB0aGUgZ2l2ZW4gcGF0aCBp
biB0b3Bkb3duIG9yZGVyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBkaXJzX3RvX3Nr
aXA6IGEgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBza2lwIG92ZXIgZHVyaW5nIHRoZQorICAgICAg
ICAgICAgICAgIHRyYXZlcnNhbCAoZS5nLiwgLnN2biwgcmVzb3VyY2VzLCBldGMuKQorICAgICAg
ICAgICAgZmlsZV9maWx0ZXI6IGlmIG5vdCBOb25lLCB0aGUgZmlsdGVyIHdpbGwgYmUgaW52b2tl
ZAorICAgICAgICAgICAgICAgIHdpdGggdGhlIGZpbGVzeXN0ZW0gb2JqZWN0IGFuZCB0aGUgZGly
bmFtZSBhbmQgYmFzZW5hbWUgb2YKKyAgICAgICAgICAgICAgICBlYWNoIGZpbGUgZm91bmQuIFRo
ZSBmaWxlIGlzIGluY2x1ZGVkIGluIHRoZSByZXN1bHQgaWYgdGhlCisgICAgICAgICAgICAgICAg
Y2FsbGJhY2sgcmV0dXJucyBUcnVlLgorICAgICAgICAiIiIKKyAgICAgICAgZGlyc190b19za2lw
ID0gZGlyc190b19za2lwIG9yIFtdCisKKyAgICAgICAgZGVmIGZpbHRlcl9hbGwoZnMsIGRpcnBh
dGgsIGJhc2VuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgZmlsZV9m
aWx0ZXIgPSBmaWxlX2ZpbHRlciBvciBmaWx0ZXJfYWxsCisgICAgICAgIGZpbGVzID0gW10KKyAg
ICAgICAgaWYgc2VsZi5pc2ZpbGUocGF0aCk6CisgICAgICAgICAgICBpZiBmaWxlX2ZpbHRlcihz
ZWxmLCBzZWxmLmRpcm5hbWUocGF0aCksIHNlbGYuYmFzZW5hbWUocGF0aCkpOgorICAgICAgICAg
ICAgICAgIGZpbGVzLmFwcGVuZChwYXRoKQorICAgICAgICAgICAgcmV0dXJuIGZpbGVzCisKKyAg
ICAgICAgaWYgc2VsZi5iYXNlbmFtZShwYXRoKSBpbiBkaXJzX3RvX3NraXA6CisgICAgICAgICAg
ICByZXR1cm4gW10KKworICAgICAgICBmb3IgKGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMp
IGluIG9zLndhbGsocGF0aCk6CisgICAgICAgICAgICBmb3IgZCBpbiBkaXJzX3RvX3NraXA6Cisg
ICAgICAgICAgICAgICAgaWYgZCBpbiBkaXJuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgZGly
bmFtZXMucmVtb3ZlKGQpCisKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXM6
CisgICAgICAgICAgICAgICAgaWYgZmlsZV9maWx0ZXIoc2VsZiwgZGlycGF0aCwgZmlsZW5hbWUp
OgorICAgICAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoc2VsZi5qb2luKGRpcnBhdGgsIGZp
bGVuYW1lKSkKKyAgICAgICAgcmV0dXJuIGZpbGVzCisKKyAgICBkZWYgZ2xvYihzZWxmLCBwYXRo
KToKKyAgICAgICAgIiIiV3JhcHMgZ2xvYi5nbG9iKCkuIiIiCisgICAgICAgIHJldHVybiBnbG9i
Lmdsb2IocGF0aCkKIAogICAgIGRlZiBpc2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJl
dHVybiB3aGV0aGVyIHRoZSBwYXRoIHJlZmVycyB0byBhIGZpbGUuIiIiCkBAIC0xMjUsNiArMTYy
LDcgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICBzaHV0aWwubW92ZShzcmMs
IGRlc3QpCiAKICAgICBkZWYgbm9ybXBhdGgoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIldyYXBz
IG9zLnBhdGgubm9ybXBhdGgoKS4iIiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgo
cGF0aCkKIAogICAgIGRlZiBvcGVuX2JpbmFyeV90ZW1wZmlsZShzZWxmLCBzdWZmaXgpOgpAQCAt
MTg4LDcgKzIyNiw3IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgIHJl
dHVybiBmLnJlYWQoKQogCiAgICAgZGVmIHNwbGl0ZXh0KHNlbGYsIHBhdGgpOgotICAgICAgICAi
IiJSZXR1cm4gKGRpcm5hbWUsIGJhc2VuYW1lICsgZXh0KS4iIiIKKyAgICAgICAgIiIiUmV0dXJu
IChkaXJuYW1lICsgb3Muc2VwICsgYmFzZW5hbWUsICcuJyArIGV4dCkiIiIKICAgICAgICAgcmV0
dXJuIG9zLnBhdGguc3BsaXRleHQocGF0aCkKIAogICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShz
ZWxmLCBwYXRoLCBjb250ZW50cyk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQppbmRleCAxMGFjYzNiNDJkZWI1MGU1
NDkzMmMxYzY3YTQ3MjNkZGZlODMyODRhLi5lOWRjYjkyZjQzMWU4NjI1ZGEyN2RiNzM3ZTM3NTA5
YTFkNjI4OTkzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgTW9ja0Zp
bGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgaWR4ID0gcGF0aC5yZmluZCgnLycpCiAgICAgICAg
IHJldHVybiAocGF0aFswOmlkeF0sIHBhdGhbaWR4ICsgMTpdKQogCi0gICAgZGVmIGJhc2VuYW1l
KHNlbGYpOgorICAgIGRlZiBiYXNlbmFtZShzZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHNl
bGYuX3NwbGl0KHBhdGgpWzFdCiAKICAgICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBkZXN0
aW5hdGlvbik6CkBAIC03MSwxMCArNzEsNDcgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0
KToKICAgICBkZWYgZXhpc3RzKHNlbGYsIHBhdGgpOgogICAgICAgICByZXR1cm4gc2VsZi5pc2Zp
bGUocGF0aCkgb3Igc2VsZi5pc2RpcihwYXRoKQogCi0gICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYs
IHBhdGgpOgorICAgIGRlZiBmaWxlc191bmRlcihzZWxmLCBwYXRoLCBkaXJzX3RvX3NraXA9Tm9u
ZSwgZmlsZV9maWx0ZXI9Tm9uZSk6CisgICAgICAgIGRpcnNfdG9fc2tpcCA9IGRpcnNfdG9fc2tp
cCBvciBbXQorCisgICAgICAgIGRlZiBmaWx0ZXJfYWxsKGZzLCBkaXJwYXRoLCBiYXNlbmFtZSk6
CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGZpbGVfZmlsdGVyID0gZmlsZV9m
aWx0ZXIgb3IgZmlsdGVyX2FsbAorICAgICAgICBmaWxlcyA9IFtdCisgICAgICAgIGlmIHNlbGYu
aXNmaWxlKHBhdGgpOgorICAgICAgICAgICAgaWYgZmlsZV9maWx0ZXIoc2VsZiwgc2VsZi5kaXJu
YW1lKHBhdGgpLCBzZWxmLmJhc2VuYW1lKHBhdGgpKToKKyAgICAgICAgICAgICAgICBmaWxlcy5h
cHBlbmQocGF0aCkKKyAgICAgICAgICAgIHJldHVybiBmaWxlcworCisgICAgICAgIGlmIHNlbGYu
YmFzZW5hbWUocGF0aCkgaW4gZGlyc190b19za2lwOgorICAgICAgICAgICAgcmV0dXJuIFtdCisK
ICAgICAgICAgaWYgbm90IHBhdGguZW5kc3dpdGgoJy8nKToKICAgICAgICAgICAgIHBhdGggKz0g
Jy8nCi0gICAgICAgIHJldHVybiBbZmlsZSBmb3IgZmlsZSBpbiBzZWxmLmZpbGVzIGlmIGZpbGUu
c3RhcnRzd2l0aChwYXRoKV0KKworICAgICAgICBmb3IgZmlsZW5hbWUgaW4gc2VsZi5maWxlczoK
KyAgICAgICAgICAgIGlmIG5vdCBmaWxlbmFtZS5zdGFydHN3aXRoKHBhdGgpOgorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHN1ZmZpeCA9IGZpbGVuYW1lW2xlbihwYXRo
KSAtIDE6XQorICAgICAgICAgICAgZm9yIGQgaW4gZGlyc190b19za2lwOgorICAgICAgICAgICAg
ICAgIGlmICcvJyArIGQgKyAnLycgaW4gc3VmZml4OgorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQorCisgICAgICAgICAgICBkaXJwYXRoLCBiYXNlbmFtZSA9IHNlbGYuX3NwbGl0KGZpbGVu
YW1lKQorICAgICAgICAgICAgaWYgZmlsZV9maWx0ZXIoc2VsZiwgZGlycGF0aCwgYmFzZW5hbWUp
OgorICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChmaWxlbmFtZSkKKworICAgICAgICByZXR1
cm4gZmlsZXMKKworICAgIGRlZiBnbG9iKHNlbGYsIHBhdGgpOgorICAgICAgICAjIEZJWE1FOiBU
aGlzIG9ubHkgaGFuZGxlcyBhIHdpbGRjYXJkICcqJyBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoLgor
ICAgICAgICAjIE1heWJlIGl0IHNob3VsZCBoYW5kbGUgbW9yZT8KKyAgICAgICAgaWYgcGF0aFst
MV0gPT0gJyonOgorICAgICAgICAgICAgcmV0dXJuIFtmIGZvciBmIGluIHNlbGYuZmlsZXMgaWYg
Zi5zdGFydHN3aXRoKHBhdGhbOi0xXSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1
cm4gW2YgZm9yIGYgaW4gc2VsZi5maWxlcyBpZiBmID09IHBhdGhdCiAKICAgICBkZWYgaXNmaWxl
KHNlbGYsIHBhdGgpOgogICAgICAgICByZXR1cm4gcGF0aCBpbiBzZWxmLmZpbGVzIGFuZCBzZWxm
LmZpbGVzW3BhdGhdIGlzIG5vdCBOb25lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1
bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CmluZGV4IDJiYjJkMDI3MmRiOTliYjcwZWFmZDg5YzNm
ZDMxZjZlZmUyOWZmZmQuLjRkNmI1ZjZkNWVjY2RiMDVjZjBmOThhMDIxMjA3YzI4NTljN2NiMjUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFk
LnB5CkBAIC04Niw2ICs4Niw3IEBAIGRlZiBfcHJvY2Vzc19vdXRwdXQocG9ydCwgb3B0aW9ucywg
dGVzdF9pbnB1dCwgdGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgIFJldHVybnM6IGEgVGVzdFJl
c3VsdCBvYmplY3QKICAgICAiIiIKICAgICBmYWlsdXJlcyA9IFtdCisgICAgZnMgPSBwb3J0Ll9m
aWxlc3lzdGVtCiAKICAgICBpZiB0ZXN0X291dHB1dC5jcmFzaDoKICAgICAgICAgZmFpbHVyZXMu
YXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKCkpCkBAIC05NiwxMSArOTcsMTAgQEAg
ZGVmIF9wcm9jZXNzX291dHB1dChwb3J0LCBvcHRpb25zLCB0ZXN0X2lucHV0LCB0ZXN0X3R5cGVz
LCB0ZXN0X2FyZ3MsCiAgICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6CiAgICAgICAgIF9sb2cuZGVi
dWcoIiVzIFN0YWNrdHJhY2UgZm9yICVzOlxuJXMiICUgKHdvcmtlcl9uYW1lLCB0ZXN0X25hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
b3V0cHV0LmVycm9yKSkKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ob3B0aW9ucy5y
ZXN1bHRzX2RpcmVjdG9yeSwgdGVzdF9uYW1lKQotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGgu
c3BsaXRleHQoZmlsZW5hbWUpWzBdICsgIi1zdGFjay50eHQiCi0gICAgICAgIHBvcnQubWF5YmVf
bWFrZV9kaXJlY3Rvcnkob3MucGF0aC5zcGxpdChmaWxlbmFtZSlbMF0pCi0gICAgICAgIHdpdGgg
Y29kZWNzLm9wZW4oZmlsZW5hbWUsICJ3YiIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAgICAgICAg
ICBmaWxlLndyaXRlKHRlc3Rfb3V0cHV0LmVycm9yKQorICAgICAgICBmaWxlbmFtZSA9IGZzLmpv
aW4ob3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgdGVzdF9uYW1lKQorICAgICAgICBmaWxlbmFt
ZSA9IGZzLnNwbGl0ZXh0KGZpbGVuYW1lKVswXSArICItc3RhY2sudHh0IgorICAgICAgICBmcy5t
YXliZV9tYWtlX2RpcmVjdG9yeShmcy5kaXJuYW1lKGZpbGVuYW1lKSkKKyAgICAgICAgZnMud3Jp
dGVfdGV4dF9maWxlKGZpbGVuYW1lLCB0ZXN0X291dHB1dC5lcnJvcikKICAgICBlbGlmIHRlc3Rf
b3V0cHV0LmVycm9yOgogICAgICAgICBfbG9nLmRlYnVnKCIlcyAlcyBvdXRwdXQgc3RkZXJyIGxp
bmVzOlxuJXMiICUgKHdvcmtlcl9uYW1lLCB0ZXN0X25hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9vdXRwdXQuZXJyb3IpKQpA
QCAtMzg1LDcgKzM4NSw3IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQp
OgogCiAgICAgICAgICMgQXBwZW5kIHRlc3RzIHdlJ3JlIHJ1bm5pbmcgdG8gdGhlIGV4aXN0aW5n
IHRlc3RzX3J1bi50eHQgZmlsZS4KICAgICAgICAgIyBUaGlzIGlzIGNyZWF0ZWQgaW4gcnVuX3dl
YmtpdF90ZXN0cy5weTpfUHJlcGFyZUxpc3RzQW5kUHJpbnRPdXRwdXQuCi0gICAgICAgIHRlc3Rz
X3J1bl9maWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0
b3J5LAorICAgICAgICB0ZXN0c19ydW5fZmlsZW5hbWUgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVt
LmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0c19ydW4udHh0IikKICAgICAgICAgdGVzdHNf
cnVuX2ZpbGUgPSBjb2RlY3Mub3Blbih0ZXN0c19ydW5fZmlsZW5hbWUsICJhIiwgInV0Zi04IikK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90
ZXN0X2ZpbGVzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90
ZXN0X2ZpbGVzLnB5CmluZGV4IDJjMGE3YjYzYmY2NzFhYmMxYmQ4MjRhODFkZWVkMTI2ZjVmZDk4
MzMuLjQxZDkxOGZhNjAxZDEyMmY4YzM5ZWE3NjFhNzc0ZDY2NTg4Njk5OTUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMu
cHkKQEAgLTM0LDggKzM0LDYgQEAgbGlzdCBvZiB0ZXN0IGZpbGVzIGlzIGNvbnN0cmFpbmVkIHRv
IHRob3NlIGZvdW5kIHVuZGVyIHRoZSBwYXRocyBwYXNzZWQgaW4sCiBpLmUuIGNhbGxpbmcgZmlu
ZChbIkxheW91dFRlc3RzL2Zhc3QiXSkgd2lsbCBvbmx5IHJldHVybiBmaWxlcwogdW5kZXIgdGhh
dCBkaXJlY3RvcnkuIiIiCiAKLWltcG9ydCBnbG9iCi1pbXBvcnQgb3MKIGltcG9ydCB0aW1lCiAK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndXRpbHMKQEAgLTU4LDE2ICs1
NiwxOCBAQCBkZWYgZmluZChwb3J0LCBwYXRocyk6CiAgICAgICBwYXRoczogYSBsaXN0IG9mIGNv
bW1hbmQgbGluZSBwYXRocyByZWxhdGl2ZSB0byB0aGUgbGF5b3V0X3Rlc3RzX2RpcigpCiAgICAg
ICAgICAgdG8gbGltaXQgdGhlIHNlYXJjaCB0by4gZ2xvYiBwYXR0ZXJucyBhcmUgb2suCiAgICAg
IiIiCisgICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCiAgICAgZ2F0aGVyX3N0YXJ0X3RpbWUgPSB0
aW1lLnRpbWUoKQogICAgIHBhdGhzX3RvX3dhbGsgPSBzZXQoKQorCiAgICAgIyBpZiBwYXRocyBp
cyBlbXB0eSwgcHJvdmlkZSBhIHByZS1kZWZpbmVkIGxpc3QuCiAgICAgaWYgcGF0aHM6CiAgICAg
ICAgIF9sb2cuZGVidWcoIkdhdGhlcmluZyB0ZXN0cyBmcm9tOiAlcyByZWxhdGl2ZSB0byAlcyIg
JSAocGF0aHMsIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpKSkKICAgICAgICAgZm9yIHBhdGggaW4g
cGF0aHM6CiAgICAgICAgICAgICAjIElmIHRoZXJlJ3MgYW4gKiBpbiB0aGUgbmFtZSwgYXNzdW1l
IGl0J3MgYSBnbG9iIHBhdHRlcm4uCi0gICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHBv
cnQubGF5b3V0X3Rlc3RzX2RpcigpLCBwYXRoKQorICAgICAgICAgICAgcGF0aCA9IGZzLmpvaW4o
cG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHBhdGgpCiAgICAgICAgICAgICBpZiBwYXRoLmZpbmQo
JyonKSA+IC0xOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lcyA9IGdsb2IuZ2xvYihwYXRoKQor
ICAgICAgICAgICAgICAgIGZpbGVuYW1lcyA9IGZzLmdsb2IocGF0aCkKICAgICAgICAgICAgICAg
ICBwYXRoc190b193YWxrLnVwZGF0ZShmaWxlbmFtZXMpCiAgICAgICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgICAgIHBhdGhzX3RvX3dhbGsuYWRkKHBhdGgpCkBAIC03NSwzMCArNzUsMTIgQEAg
ZGVmIGZpbmQocG9ydCwgcGF0aHMpOgogICAgICAgICBfbG9nLmRlYnVnKCJHYXRoZXJpbmcgdGVz
dHMgZnJvbTogJXMiICUgcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpCiAgICAgICAgIHBhdGhzX3Rv
X3dhbGsuYWRkKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpKQogCi0gICAgIyBOb3cgd2FsayBhbGwg
dGhlIHBhdGhzIHBhc3NlZCBpbiBvbiB0aGUgY29tbWFuZCBsaW5lIGFuZCBnZXQgZmlsZW5hbWVz
CisgICAgIyBGSVhNRTogSSdtIG5vdCBzdXJlIHRoZXJlJ3MgbXVjaCBwb2ludCBpbiB0aGlzIGJl
aW5nIGEgc2V0LiBBIGxpc3Qgd291bGQKKyAgICAjIHByb2JhYmx5IGJlIGZhc3Rlci4KICAgICB0
ZXN0X2ZpbGVzID0gc2V0KCkKICAgICBmb3IgcGF0aCBpbiBwYXRoc190b193YWxrOgotICAgICAg
ICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKSBhbmQgX2lzX3Rlc3RfZmlsZShwYXRoKToKLSAgICAg
ICAgICAgIHRlc3RfZmlsZXMuYWRkKG9zLnBhdGgubm9ybXBhdGgocGF0aCkpCi0gICAgICAgICAg
ICBjb250aW51ZQotCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBh
dGgpOgotICAgICAgICAgICAgIyBEb24ndCB3YWxrIHNraXBwZWQgZGlyZWN0b3JpZXMgb3IgdGhl
aXIgc3ViLWRpcmVjdG9yaWVzLgotICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShyb290
KSBpbiBfc2tpcHBlZF9kaXJlY3RvcmllczoKLSAgICAgICAgICAgICAgICBkZWwgZGlyc1s6XQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAjIFRoaXMgY29weSBhbmQgZm9y
LWluIGlzIHNsaWdodGx5IGluZWZmaWNpZW50LCBidXQKLSAgICAgICAgICAgICMgdGhlIGV4dHJh
IHdhbGsgYXZvaWRhbmNlIGNvbnNpc3RlbnRseSBzaGF2ZXMgLjUgc2Vjb25kcwotICAgICAgICAg
ICAgIyBvZmYgb2YgdG90YWwgd2FsaygpIHRpbWUgb24gbXkgTWFjQm9vayBQcm8uCi0gICAgICAg
ICAgICBmb3IgZGlyZWN0b3J5IGluIGRpcnNbOl06Ci0gICAgICAgICAgICAgICAgaWYgZGlyZWN0
b3J5IGluIF9za2lwcGVkX2RpcmVjdG9yaWVzOgotICAgICAgICAgICAgICAgICAgICBkaXJzLnJl
bW92ZShkaXJlY3RvcnkpCi0KLSAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKLSAg
ICAgICAgICAgICAgICBpZiBfaXNfdGVzdF9maWxlKGZpbGVuYW1lKToKLSAgICAgICAgICAgICAg
ICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZW5hbWUpCi0gICAgICAgICAg
ICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtcGF0aChmaWxlbmFtZSkKLSAgICAgICAg
ICAgICAgICAgICAgdGVzdF9maWxlcy5hZGQoZmlsZW5hbWUpCisgICAgICAgIGZpbGVzID0gZnMu
ZmlsZXNfdW5kZXIocGF0aCwgX3NraXBwZWRfZGlyZWN0b3JpZXMsIF9pc190ZXN0X2ZpbGUpCisg
ICAgICAgIHRlc3RfZmlsZXMudXBkYXRlKHNldChmaWxlcykpCiAKICAgICBnYXRoZXJfdGltZSA9
IHRpbWUudGltZSgpIC0gZ2F0aGVyX3N0YXJ0X3RpbWUKICAgICBfbG9nLmRlYnVnKCJUZXN0IGdh
dGhlcmluZyB0b29rICVmIHNlY29uZHMiICUgZ2F0aGVyX3RpbWUpCkBAIC0xMDYsMTAgKzg4LDEw
IEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICByZXR1cm4gdGVzdF9maWxlcwogCiAKLWRl
ZiBfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZW5hbWUpOgorZGVmIF9oYXNfc3VwcG9ydGVk
X2V4dGVuc2lvbihmcywgZmlsZW5hbWUpOgogICAgICIiIlJldHVybiB0cnVlIGlmIGZpbGVuYW1l
IGlzIG9uZSBvZiB0aGUgZmlsZSBleHRlbnNpb25zIHdlIHdhbnQgdG8gcnVuIGEKICAgICB0ZXN0
IG9uLiIiIgotICAgIGV4dGVuc2lvbiA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzFdCisg
ICAgZXh0ZW5zaW9uID0gZnMuc3BsaXRleHQoZmlsZW5hbWUpWzFdCiAgICAgcmV0dXJuIGV4dGVu
c2lvbiBpbiBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucwogCiAKQEAgLTEyMiw3ICsxMDQsNyBA
QCBkZWYgX2lzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZW5hbWUpOgogICAgIHJldHVybiBGYWxz
ZQogCiAKLWRlZiBfaXNfdGVzdF9maWxlKGZpbGVuYW1lKToKK2RlZiBfaXNfdGVzdF9maWxlKGZz
LCBkaXJuYW1lLCBmaWxlbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIGZpbGVuYW1l
IHBvaW50cyB0byBhIHRlc3QgZmlsZS4iIiIKLSAgICByZXR1cm4gKF9oYXNfc3VwcG9ydGVkX2V4
dGVuc2lvbihmaWxlbmFtZSkgYW5kCisgICAgcmV0dXJuIChfaGFzX3N1cHBvcnRlZF9leHRlbnNp
b24oZnMsIGZpbGVuYW1lKSBhbmQKICAgICAgICAgICAgIG5vdCBfaXNfcmVmZXJlbmNlX2h0bWxf
ZmlsZShmaWxlbmFtZSkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkKaW5kZXggODM1MjVj
ODIzZjM5NDJmMzc0MzdmODM0Mzc1ZDE2MDcwNDNjM2E0MS4uZWFiZGZkOWMyYjBiZTAwOGRlNGI4
YmM3NjYxMmY3ZDc1ZmZlMzUwNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weQpAQCAt
NjQsMTEgKzY0LDEzIEBAIGNsYXNzIFRlc3RGaWxlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzLCBzZXQoW10pKQogCiAgICAgZGVmIHRlc3Rf
aXNfdGVzdF9maWxlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9maWxlcy5f
aXNfdGVzdF9maWxlKCdmb28uaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9m
aWxlcy5faXNfdGVzdF9maWxlKCdmb28uc2h0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby5wbmcnKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby1leHBlY3RlZC5odG1sJykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKCdmb28tZXhw
ZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKQorICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKKyAgICAg
ICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2Zp
bGVzLl9pc190ZXN0X2ZpbGUoZnMsICcnLCAnZm9vLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJycsICdmb28uc2h0bWwnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICcnLCAn
Zm9vLnBuZycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3Rf
ZmlsZShmcywgJycsICdmb28tZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJycsICdmb28tZXhwZWN0ZWQtbWlzbWF0
Y2guaHRtbCcpKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9i
YXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90
ZXN0X3R5cGVfYmFzZS5weQppbmRleCA0Yjk2YjNhYmZlMWI1OTUxMjI4MTE1MGZkNmZlZWEwNjAz
NTQ0YTkzLi5hZDY1MDE2ZWYyNTQ0MzVlNTRkY2ExOWEyNmNlZjE2MDkxMjBmZTkwIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3Rf
dHlwZV9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rl
c3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKQEAgLTMyLDEzICszMiw5IEBACiBBbHNvIGRlZmlu
ZXMgdGhlIFRlc3RBcmd1bWVudHMgInN0cnVjdCIgdG8gcGFzcyB0aGVtIGFkZGl0aW9uYWwgYXJn
dW1lbnRzLgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQot
aW1wb3J0IGNvZGVjcwogaW1wb3J0IGNnaQogaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwot
aW1wb3J0IG9zLnBhdGgKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlv
dXRfdGVzdHMudGVzdF90eXBlcy50ZXN0X3R5cGVfYmFzZSIpCiAKQEAgLTg2LDkgKzgyLDEwIEBA
IGNsYXNzIFRlc3RUeXBlQmFzZShvYmplY3QpOgogICAgIGRlZiBfbWFrZV9vdXRwdXRfZGlyZWN0
b3J5KHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIiIiQ3JlYXRlcyB0aGUgb3V0cHV0IGRpcmVj
dG9yeSAoaWYgbmVlZGVkKSBmb3IgYSBnaXZlbiB0ZXN0CiAgICAgICAgIGZpbGVuYW1lLiIiIgot
ICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fcm9vdF9vdXRwdXRf
ZGlyLAorICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgb3V0cHV0
X2ZpbGVuYW1lID0gZnMuam9pbihzZWxmLl9yb290X291dHB1dF9kaXIsCiAgICAgICAgICAgICBz
ZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpKQotICAgICAgICBzZWxm
Ll9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KG9zLnBhdGguc3BsaXQob3V0cHV0X2ZpbGVuYW1l
KVswXSkKKyAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMuZGlybmFtZShvdXRwdXRf
ZmlsZW5hbWUpKQogCiAgICAgZGVmIF9zYXZlX2Jhc2VsaW5lX2RhdGEoc2VsZiwgZmlsZW5hbWUs
IGRhdGEsIG1vZGlmaWVyLCBlbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0ZV9uZXdfYmFzZWxpbmU9VHJ1ZSk6CkBAIC0xMDYsMjEgKzEwMywyMiBAQCBjbGFzcyBU
ZXN0VHlwZUJhc2Uob2JqZWN0KToKICAgICAgICAgICAgIGJhc2VsaW5lLCBvciB1cGRhdGUgdGhl
IGV4aXN0aW5nIG9uZQogICAgICAgICAiIiIKIAorICAgICAgICBwb3J0ID0gc2VsZi5fcG9ydAor
ICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgaWYgZ2VuZXJhdGVf
bmV3X2Jhc2VsaW5lOgotICAgICAgICAgICAgcmVsYXRpdmVfZGlyID0gb3MucGF0aC5kaXJuYW1l
KAotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxl
bmFtZSkpCi0gICAgICAgICAgICBiYXNlbGluZV9wYXRoID0gc2VsZi5fcG9ydC5iYXNlbGluZV9w
YXRoKCkKLSAgICAgICAgICAgIG91dHB1dF9kaXIgPSBvcy5wYXRoLmpvaW4oYmFzZWxpbmVfcGF0
aCwgcmVsYXRpdmVfZGlyKQotICAgICAgICAgICAgb3V0cHV0X2ZpbGUgPSBvcy5wYXRoLmJhc2Vu
YW1lKG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKKyAgICAgICAgICAgIHJlbGF0aXZl
X2RpciA9IGZzLmRpcm5hbWUocG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKSkK
KyAgICAgICAgICAgIGJhc2VsaW5lX3BhdGggPSBwb3J0LmJhc2VsaW5lX3BhdGgoKQorICAgICAg
ICAgICAgb3V0cHV0X2RpciA9IGZzLmpvaW4oYmFzZWxpbmVfcGF0aCwgcmVsYXRpdmVfZGlyKQor
ICAgICAgICAgICAgb3V0cHV0X2ZpbGUgPSBmcy5iYXNlbmFtZShmcy5zcGxpdGV4dChmaWxlbmFt
ZSlbMF0gKwogICAgICAgICAgICAgICAgIHNlbGYuRklMRU5BTUVfU1VGRklYX0VYUEVDVEVEICsg
bW9kaWZpZXIpCi0gICAgICAgICAgICBzZWxmLl9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KG91
dHB1dF9kaXIpCi0gICAgICAgICAgICBvdXRwdXRfcGF0aCA9IG9zLnBhdGguam9pbihvdXRwdXRf
ZGlyLCBvdXRwdXRfZmlsZSkKKyAgICAgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KG91
dHB1dF9kaXIpCisgICAgICAgICAgICBvdXRwdXRfcGF0aCA9IGZzLmpvaW4ob3V0cHV0X2Rpciwg
b3V0cHV0X2ZpbGUpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCd3cml0aW5nIG5ldyBiYXNlbGlu
ZSByZXN1bHQgIiVzIicgJSAob3V0cHV0X3BhdGgpKQogICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgb3V0cHV0X3BhdGggPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2ZpbGVuYW1lKGZpbGVuYW1lLCBt
b2RpZmllcikKKyAgICAgICAgICAgIG91dHB1dF9wYXRoID0gcG9ydC5leHBlY3RlZF9maWxlbmFt
ZShmaWxlbmFtZSwgbW9kaWZpZXIpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCdyZXNldHRpbmcg
YmFzZWxpbmUgcmVzdWx0ICIlcyInICUgb3V0cHV0X3BhdGgpCiAKLSAgICAgICAgc2VsZi5fcG9y
dC51cGRhdGVfYmFzZWxpbmUob3V0cHV0X3BhdGgsIGRhdGEsIGVuY29kaW5nKQorICAgICAgICBw
b3J0LnVwZGF0ZV9iYXNlbGluZShvdXRwdXRfcGF0aCwgZGF0YSwgZW5jb2RpbmcpCiAKICAgICBk
ZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYsIGZpbGVuYW1lLCBtb2RpZmllcik6CiAgICAgICAgICIi
IlJldHVybnMgYSBmaWxlbmFtZSBpbnNpZGUgdGhlIG91dHB1dCBkaXIgdGhhdCBjb250YWlucyBt
b2RpZmllci4KQEAgLTEzNiw5ICsxMzQsMTAgQEAgY2xhc3MgVGVzdFR5cGVCYXNlKG9iamVjdCk6
CiAgICAgICAgIFJldHVybjoKICAgICAgICAgICBUaGUgYWJzb2x1dGUgd2luZG93cyBwYXRoIHRv
IHRoZSBvdXRwdXQgZmlsZW5hbWUKICAgICAgICAgIiIiCi0gICAgICAgIG91dHB1dF9maWxlbmFt
ZSA9IG9zLnBhdGguam9pbihzZWxmLl9yb290X291dHB1dF9kaXIsCisgICAgICAgIGZzID0gc2Vs
Zi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBmcy5qb2luKHNl
bGYuX3Jvb3Rfb3V0cHV0X2RpciwKICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVz
dF9maWxlbmFtZShmaWxlbmFtZSkpCi0gICAgICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KG91
dHB1dF9maWxlbmFtZSlbMF0gKyBtb2RpZmllcgorICAgICAgICByZXR1cm4gZnMuc3BsaXRleHQo
b3V0cHV0X2ZpbGVuYW1lKVswXSArIG1vZGlmaWVyCiAKICAgICBkZWYgY29tcGFyZV9vdXRwdXQo
c2VsZiwgcG9ydCwgZmlsZW5hbWUsIHRlc3RfYXJncywgYWN0dWFsX3Rlc3Rfb3V0cHV0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQpOgpAQCAtMTY1LDExICsx
NjQsMTEgQEAgY2xhc3MgVGVzdFR5cGVCYXNlKG9iamVjdCk6CiAgICAgZGVmIF93cml0ZV9pbnRv
X2ZpbGVfYXRfcGF0aChzZWxmLCBmaWxlX3BhdGgsIGNvbnRlbnRzLCBlbmNvZGluZyk6CiAgICAg
ICAgICIiIlRoaXMgbWV0aG9kIGFzc3VtZXMgdGhhdCBieXRlX2FycmF5IGlzIGFscmVhZHkgZW5j
b2RlZAogICAgICAgICBpbnRvIHRoZSByaWdodCBmb3JtYXQuIiIiCi0gICAgICAgIG9wZW5fbW9k
ZSA9ICd3JworICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgaWYg
ZW5jb2RpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIG9wZW5fbW9kZSA9ICd3K2InCi0gICAgICAg
IHdpdGggY29kZWNzLm9wZW4oZmlsZV9wYXRoLCBvcGVuX21vZGUsIGVuY29kaW5nPWVuY29kaW5n
KSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53cml0ZShjb250ZW50cykKKyAgICAgICAgICAg
IGZzLndyaXRlX2JpbmFyeV9maWxlKGZpbGVfcGF0aCwgY29udGVudHMpCisgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVfcGF0aCwgY29udGVudHMpCiAK
ICAgICBkZWYgd3JpdGVfb3V0cHV0X2ZpbGVzKHNlbGYsIGZpbGVuYW1lLCBmaWxlX3R5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQsIGV4cGVjdGVkLCBlbmNvZGluZywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79462</attachid>
            <date>2011-01-19 12:18:59 -0800</date>
            <delta_ts>2011-01-19 12:50:54 -0800</delta_ts>
            <desc>update w/ feedback from mihaip&apos;s review</desc>
            <filename>bug-52691-20110119121857.patch</filename>
            <type>text/plain</type>
            <size>9005</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ZTlm
NzFiYzZkYjlhNGQzZTllMmU2YzIwMDgzNzg2NWQ5MTYxZGFjLi5jYjhhMjZkNTg0ZDEwN2RlZGJj
YzczNWNhOGRmYjg0OWM1MTU0ODIzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjMgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0czogcmVtb3ZlIHVz
ZSBvZiBvcy53YWxrLCB1c2UgbW9jayBmaWxlc3lzdGVtIGZvciBiZXR0ZXIKKyAgICAgICAgdW5p
dCB0ZXN0aW5nLiBvcy53YWxrKCkgaXMgdG9vIG11Y2ggb2YgYSBoYXNzbGUgdG8gaW1wbGVtZW50
IG9uCisgICAgICAgIHRvcCBvZiB0aGUgaW4tbWVtb3J5IG1vY2sgZmlsZXN5c3RlbSBhbmQgYWRk
aW5nIHRoZSBuZWNlc3NhcnkKKyAgICAgICAgaW50ZXJmYWNlIHRvIGZpbGVzX3VuZGVyKCkgZ2l2
ZXMgY2xpZW50cyBhIGNsZWFuZXIgQVBJIGFueXdheQorICAgICAgICAoZm9yIHRoaXMgcGFydGlj
dWxhciB1c2FnZSBtb2RlbCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUyNjkxCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZmlsZXN5c3RlbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHk6CisKKzIwMTEtMDEtMTgg
IERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQ2hhbmdlIG1vcmUgbW9kdWxlcyBpbiB0aGUg
bGF5b3V0LXRlc3RzIGNvZGUgdG8gdXNlIHRoZQogICAgICAgICBmaWxlc3lzdGVtIHdyYXBwZXIg
Zm9yIGNsZWFuZXIgdW5pdCB0ZXN0aW5nLgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4IGQ0NWQ0YzFiMWY2OTZmNDJlMWUz
ZWUzNDhmNGUyMjFmYWNmOGQzODQuLjZkY2YyMDcyMDE2Y2MyN2IyMWI4YzNiMGQ0MzU1NjE5YzE4
MWM0OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9m
aWxlc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9m
aWxlc3lzdGVtLnB5CkBAIC02MiwxMSArNjIsMzkgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3Qp
OgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgcGF0aCBleGlzdHMgaW4gdGhlIGZpbGVz
eXN0ZW0uIiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmV4aXN0cyhwYXRoKQogCi0gICAgZGVm
IGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2Yg
YWxsIGZpbGVzIHVuZGVyIHRoZSBnaXZlbiBwYXRoLiIiIgotICAgICAgICByZXR1cm4gW3NlbGYu
am9pbihwYXRoX3RvX2ZpbGUsIGZpbGVuYW1lKQotICAgICAgICAgICAgZm9yIChwYXRoX3RvX2Zp
bGUsIF8sIGZpbGVuYW1lcykgaW4gb3Mud2FsayhwYXRoKQotICAgICAgICAgICAgZm9yIGZpbGVu
YW1lIGluIGZpbGVuYW1lc10KKyAgICBkZWYgZmlsZXNfdW5kZXIoc2VsZiwgcGF0aCwgZGlyc190
b19za2lwPVtdLCBmaWxlX2ZpbHRlcj1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBsaXN0
IG9mIGFsbCBmaWxlcyB1bmRlciB0aGUgZ2l2ZW4gcGF0aCBpbiB0b3Bkb3duIG9yZGVyLgorCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBkaXJzX3RvX3NraXA6IGEgbGlzdCBvZiBkaXJlY3Rv
cmllcyB0byBza2lwIG92ZXIgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgIHRyYXZlcnNhbCAo
ZS5nLiwgLnN2biwgcmVzb3VyY2VzLCBldGMuKQorICAgICAgICAgICAgZmlsZV9maWx0ZXI6IGlm
IG5vdCBOb25lLCB0aGUgZmlsdGVyIHdpbGwgYmUgaW52b2tlZAorICAgICAgICAgICAgICAgIHdp
dGggdGhlIGZpbGVzeXN0ZW0gb2JqZWN0IGFuZCB0aGUgZGlybmFtZSBhbmQgYmFzZW5hbWUgb2YK
KyAgICAgICAgICAgICAgICBlYWNoIGZpbGUgZm91bmQuIFRoZSBmaWxlIGlzIGluY2x1ZGVkIGlu
IHRoZSByZXN1bHQgaWYgdGhlCisgICAgICAgICAgICAgICAgY2FsbGJhY2sgcmV0dXJucyBUcnVl
LgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIGZpbHRlcl9hbGwoZnMsIGRpcnBhdGgsIGJhc2Vu
YW1lKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgZmlsZV9maWx0ZXIgPSBm
aWxlX2ZpbHRlciBvciBmaWx0ZXJfYWxsCisgICAgICAgIGZpbGVzID0gW10KKyAgICAgICAgaWYg
c2VsZi5pc2ZpbGUocGF0aCk6CisgICAgICAgICAgICBpZiBmaWxlX2ZpbHRlcihzZWxmLCBzZWxm
LmRpcm5hbWUocGF0aCksIHNlbGYuYmFzZW5hbWUocGF0aCkpOgorICAgICAgICAgICAgICAgIGZp
bGVzLmFwcGVuZChwYXRoKQorICAgICAgICAgICAgcmV0dXJuIGZpbGVzCisKKyAgICAgICAgaWYg
c2VsZi5iYXNlbmFtZShwYXRoKSBpbiBkaXJzX3RvX3NraXA6CisgICAgICAgICAgICByZXR1cm4g
W10KKworICAgICAgICBmb3IgKGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMpIGluIG9zLndh
bGsocGF0aCk6CisgICAgICAgICAgICBmb3IgZCBpbiBkaXJzX3RvX3NraXA6CisgICAgICAgICAg
ICAgICAgaWYgZCBpbiBkaXJuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgZGlybmFtZXMucmVt
b3ZlKGQpCisKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXM6CisgICAgICAg
ICAgICAgICAgaWYgZmlsZV9maWx0ZXIoc2VsZiwgZGlycGF0aCwgZmlsZW5hbWUpOgorICAgICAg
ICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoc2VsZi5qb2luKGRpcnBhdGgsIGZpbGVuYW1lKSkK
KyAgICAgICAgcmV0dXJuIGZpbGVzCiAKICAgICBkZWYgZ2xvYihzZWxmLCBwYXRoKToKICAgICAg
ICAgIiIiV3JhcHMgZ2xvYi5nbG9iKCkuIiIiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQppbmRleCA3YzZlYzU5MDkw
MmE1NTc4NzYyZWY2MTgyMmQ5ZDI5NmExMTI4Y2YzLi5lNzY4MWY1MTdjYTA3MjY5NjUzMmU1NDM2
Y2I4MTNkZTZjYjhiOTRiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKQEAgLTcxLDEwICs3MSwzNiBAQCBjbGFz
cyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAgIGRlZiBleGlzdHMoc2VsZiwgcGF0aCk6CiAg
ICAgICAgIHJldHVybiBzZWxmLmlzZmlsZShwYXRoKSBvciBzZWxmLmlzZGlyKHBhdGgpCiAKLSAg
ICBkZWYgZmlsZXNfdW5kZXIoc2VsZiwgcGF0aCk6CisgICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYs
IHBhdGgsIGRpcnNfdG9fc2tpcD1bXSwgZmlsZV9maWx0ZXI9Tm9uZSk6CisgICAgICAgIGRlZiBm
aWx0ZXJfYWxsKGZzLCBkaXJwYXRoLCBiYXNlbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gVHJ1
ZQorCisgICAgICAgIGZpbGVfZmlsdGVyID0gZmlsZV9maWx0ZXIgb3IgZmlsdGVyX2FsbAorICAg
ICAgICBmaWxlcyA9IFtdCisgICAgICAgIGlmIHNlbGYuaXNmaWxlKHBhdGgpOgorICAgICAgICAg
ICAgaWYgZmlsZV9maWx0ZXIoc2VsZiwgc2VsZi5kaXJuYW1lKHBhdGgpLCBzZWxmLmJhc2VuYW1l
KHBhdGgpKToKKyAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQocGF0aCkKKyAgICAgICAgICAg
IHJldHVybiBmaWxlcworCisgICAgICAgIGlmIHNlbGYuYmFzZW5hbWUocGF0aCkgaW4gZGlyc190
b19za2lwOgorICAgICAgICAgICAgcmV0dXJuIFtdCisKICAgICAgICAgaWYgbm90IHBhdGguZW5k
c3dpdGgoJy8nKToKICAgICAgICAgICAgIHBhdGggKz0gJy8nCi0gICAgICAgIHJldHVybiBbZmls
ZSBmb3IgZmlsZSBpbiBzZWxmLmZpbGVzIGlmIGZpbGUuc3RhcnRzd2l0aChwYXRoKV0KKworICAg
ICAgICBmb3IgZmlsZW5hbWUgaW4gc2VsZi5maWxlczoKKyAgICAgICAgICAgIGlmIG5vdCBmaWxl
bmFtZS5zdGFydHN3aXRoKHBhdGgpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgIHN1ZmZpeCA9IGZpbGVuYW1lW2xlbihwYXRoKSAtIDE6XQorICAgICAgICAgICAgaWYg
YW55KFsnLycgKyBkICsgJy8nIGluIHN1ZmZpeCBmb3IgZCBpbiBkaXJzX3RvX3NraXBdKToKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBkaXJwYXRoLCBiYXNlbmFtZSA9
IHNlbGYuX3NwbGl0KGZpbGVuYW1lKQorICAgICAgICAgICAgaWYgZmlsZV9maWx0ZXIoc2VsZiwg
ZGlycGF0aCwgYmFzZW5hbWUpOgorICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChmaWxlbmFt
ZSkKKworICAgICAgICByZXR1cm4gZmlsZXMKIAogICAgIGRlZiBnbG9iKHNlbGYsIHBhdGgpOgog
ICAgICAgICAjIEZJWE1FOiBUaGlzIG9ubHkgaGFuZGxlcyBhIHdpbGRjYXJkICcqJyBhdCB0aGUg
ZW5kIG9mIHRoZSBwYXRoLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5CmluZGV4IDI5MDFhOWZkMzMzMzk2NzY3MTkxNDY1
Yjk1YzNiMDk2ODRlN2FiMjguLjQxZDkxOGZhNjAxZDEyMmY4YzM5ZWE3NjFhNzc0ZDY2NTg4Njk5
OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
dGVzdF9maWxlcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3Rlc3RfZmlsZXMucHkKQEAgLTM0LDggKzM0LDYgQEAgbGlzdCBvZiB0ZXN0IGZpbGVzIGlz
IGNvbnN0cmFpbmVkIHRvIHRob3NlIGZvdW5kIHVuZGVyIHRoZSBwYXRocyBwYXNzZWQgaW4sCiBp
LmUuIGNhbGxpbmcgZmluZChbIkxheW91dFRlc3RzL2Zhc3QiXSkgd2lsbCBvbmx5IHJldHVybiBm
aWxlcwogdW5kZXIgdGhhdCBkaXJlY3RvcnkuIiIiCiAKLWltcG9ydCBnbG9iCi1pbXBvcnQgb3MK
IGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndXRp
bHMKQEAgLTYxLDYgKzU5LDcgQEAgZGVmIGZpbmQocG9ydCwgcGF0aHMpOgogICAgIGZzID0gcG9y
dC5fZmlsZXN5c3RlbQogICAgIGdhdGhlcl9zdGFydF90aW1lID0gdGltZS50aW1lKCkKICAgICBw
YXRoc190b193YWxrID0gc2V0KCkKKwogICAgICMgaWYgcGF0aHMgaXMgZW1wdHksIHByb3ZpZGUg
YSBwcmUtZGVmaW5lZCBsaXN0LgogICAgIGlmIHBhdGhzOgogICAgICAgICBfbG9nLmRlYnVnKCJH
YXRoZXJpbmcgdGVzdHMgZnJvbTogJXMgcmVsYXRpdmUgdG8gJXMiICUgKHBhdGhzLCBwb3J0Lmxh
eW91dF90ZXN0c19kaXIoKSkpCkBAIC03NiwzMCArNzUsMTIgQEAgZGVmIGZpbmQocG9ydCwgcGF0
aHMpOgogICAgICAgICBfbG9nLmRlYnVnKCJHYXRoZXJpbmcgdGVzdHMgZnJvbTogJXMiICUgcG9y
dC5sYXlvdXRfdGVzdHNfZGlyKCkpCiAgICAgICAgIHBhdGhzX3RvX3dhbGsuYWRkKHBvcnQubGF5
b3V0X3Rlc3RzX2RpcigpKQogCi0gICAgIyBOb3cgd2FsayBhbGwgdGhlIHBhdGhzIHBhc3NlZCBp
biBvbiB0aGUgY29tbWFuZCBsaW5lIGFuZCBnZXQgZmlsZW5hbWVzCisgICAgIyBGSVhNRTogSSdt
IG5vdCBzdXJlIHRoZXJlJ3MgbXVjaCBwb2ludCBpbiB0aGlzIGJlaW5nIGEgc2V0LiBBIGxpc3Qg
d291bGQKKyAgICAjIHByb2JhYmx5IGJlIGZhc3Rlci4KICAgICB0ZXN0X2ZpbGVzID0gc2V0KCkK
ICAgICBmb3IgcGF0aCBpbiBwYXRoc190b193YWxrOgotICAgICAgICBpZiBmcy5pc2ZpbGUocGF0
aCkgYW5kIF9pc190ZXN0X2ZpbGUoZnMsIHBhdGgpOgotICAgICAgICAgICAgdGVzdF9maWxlcy5h
ZGQoZnMubm9ybXBhdGgocGF0aCkpCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGZv
ciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgpOgotICAgICAgICAgICAgIyBEb24n
dCB3YWxrIHNraXBwZWQgZGlyZWN0b3JpZXMgb3IgdGhlaXIgc3ViLWRpcmVjdG9yaWVzLgotICAg
ICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShyb290KSBpbiBfc2tpcHBlZF9kaXJlY3Rvcmll
czoKLSAgICAgICAgICAgICAgICBkZWwgZGlyc1s6XQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgICAgICAjIFRoaXMgY29weSBhbmQgZm9yLWluIGlzIHNsaWdodGx5IGluZWZmaWNp
ZW50LCBidXQKLSAgICAgICAgICAgICMgdGhlIGV4dHJhIHdhbGsgYXZvaWRhbmNlIGNvbnNpc3Rl
bnRseSBzaGF2ZXMgLjUgc2Vjb25kcwotICAgICAgICAgICAgIyBvZmYgb2YgdG90YWwgd2Fsaygp
IHRpbWUgb24gbXkgTWFjQm9vayBQcm8uCi0gICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIGRp
cnNbOl06Ci0gICAgICAgICAgICAgICAgaWYgZGlyZWN0b3J5IGluIF9za2lwcGVkX2RpcmVjdG9y
aWVzOgotICAgICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZShkaXJlY3RvcnkpCi0KLSAgICAg
ICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBpZiBfaXNfdGVz
dF9maWxlKGZzLCBmaWxlbmFtZSk6Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZnMu
am9pbihyb290LCBmaWxlbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmcy5u
b3JtcGF0aChmaWxlbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9maWxlcy5hZGQoZmls
ZW5hbWUpCisgICAgICAgIGZpbGVzID0gZnMuZmlsZXNfdW5kZXIocGF0aCwgX3NraXBwZWRfZGly
ZWN0b3JpZXMsIF9pc190ZXN0X2ZpbGUpCisgICAgICAgIHRlc3RfZmlsZXMudXBkYXRlKHNldChm
aWxlcykpCiAKICAgICBnYXRoZXJfdGltZSA9IHRpbWUudGltZSgpIC0gZ2F0aGVyX3N0YXJ0X3Rp
bWUKICAgICBfbG9nLmRlYnVnKCJUZXN0IGdhdGhlcmluZyB0b29rICVmIHNlY29uZHMiICUgZ2F0
aGVyX3RpbWUpCkBAIC0xMjMsNyArMTA0LDcgQEAgZGVmIF9pc19yZWZlcmVuY2VfaHRtbF9maWxl
KGZpbGVuYW1lKToKICAgICByZXR1cm4gRmFsc2UKIAogCi1kZWYgX2lzX3Rlc3RfZmlsZShmcywg
ZmlsZW5hbWUpOgorZGVmIF9pc190ZXN0X2ZpbGUoZnMsIGRpcm5hbWUsIGZpbGVuYW1lKToKICAg
ICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZW5hbWUgcG9pbnRzIHRvIGEgdGVzdCBmaWxlLiIi
IgogICAgIHJldHVybiAoX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZzLCBmaWxlbmFtZSkgYW5k
CiAgICAgICAgICAgICBub3QgX2lzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZW5hbWUpKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2Zp
bGVzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CmluZGV4IDU2OTczOTExOTM1YTM0MDgzOWVhZmY4YjQ3
OTMwNTA5MGRiMzQxODMuLmVhYmRmZDljMmIwYmUwMDhkZTRiOGJjNzY2MTJmN2Q3NWZmZTM1MDUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVz
dF9maWxlc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkKQEAgLTY2LDExICs2NiwxMSBAQCBjbGFz
cyBUZXN0RmlsZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9pc190ZXN0
X2ZpbGUoc2VsZik6CiAgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoKQogICAgICAgICBmcyA9IHBv
cnQuX2ZpbGVzeXN0ZW0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfZmlsZXMuX2lzX3Rl
c3RfZmlsZShmcywgJ2Zvby5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2Zp
bGVzLl9pc190ZXN0X2ZpbGUoZnMsICdmb28uc2h0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICdmb28ucG5nJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnZm9vLWV4cGVjdGVk
Lmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2Zp
bGUoZnMsICdmb28tZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnJywgJ2Zvby5odG1sJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICcnLCAnZm9v
LnNodG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9m
aWxlKGZzLCAnJywgJ2Zvby5wbmcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2Zp
bGVzLl9pc190ZXN0X2ZpbGUoZnMsICcnLCAnZm9vLWV4cGVjdGVkLmh0bWwnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICcnLCAnZm9vLWV4
cGVjdGVkLW1pc21hdGNoLmh0bWwnKSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79470</attachid>
            <date>2011-01-19 12:50:57 -0800</date>
            <delta_ts>2011-01-19 13:30:17 -0800</delta_ts>
            <desc>pull strcats out of loop in MockFileSystem.files_under()</desc>
            <filename>bug-52691-20110119125056.patch</filename>
            <type>text/plain</type>
            <size>9075</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ZTlm
NzFiYzZkYjlhNGQzZTllMmU2YzIwMDgzNzg2NWQ5MTYxZGFjLi42ODgyNTBiNjQ2ZDE1MTE4NDU5
ZDAyYTBjMzhhMDFkOTgwNTExMzAyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTEtMDEtMTggIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWloYWkgUGFy
cGFyaXRhLgorCisgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzOiByZW1vdmUgdXNlIG9mIG9z
LndhbGssIHVzZSBtb2NrIGZpbGVzeXN0ZW0gZm9yIGJldHRlcgorICAgICAgICB1bml0IHRlc3Rp
bmcuIG9zLndhbGsoKSBpcyB0b28gbXVjaCBvZiBhIGhhc3NsZSB0byBpbXBsZW1lbnQgb24KKyAg
ICAgICAgdG9wIG9mIHRoZSBpbi1tZW1vcnkgbW9jayBmaWxlc3lzdGVtIGFuZCBhZGRpbmcgdGhl
IG5lY2Vzc2FyeQorICAgICAgICBpbnRlcmZhY2UgdG8gZmlsZXNfdW5kZXIoKSBnaXZlcyBjbGll
bnRzIGEgY2xlYW5lciBBUEkgYW55d2F5CisgICAgICAgIChmb3IgdGhpcyBwYXJ0aWN1bGFyIHVz
YWdlIG1vZGVsKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTI2OTEKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9m
aWxlc3lzdGVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9m
aWxlc3lzdGVtX21vY2sucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC90ZXN0X2ZpbGVzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weToKKworMjAxMS0wMS0xOCAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KIAogICAgICAgICBDaGFuZ2UgbW9yZSBtb2R1bGVzIGluIHRoZSBsYXlvdXQt
dGVzdHMgY29kZSB0byB1c2UgdGhlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4IGQ0NWQ0YzFiMWY2OTZmNDJlMWUzZWUzNDhm
NGUyMjFmYWNmOGQzODQuLjZkY2YyMDcyMDE2Y2MyN2IyMWI4YzNiMGQ0MzU1NjE5YzE4MWM0OGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lz
dGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lz
dGVtLnB5CkBAIC02MiwxMSArNjIsMzkgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAg
ICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgcGF0aCBleGlzdHMgaW4gdGhlIGZpbGVzeXN0ZW0u
IiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmV4aXN0cyhwYXRoKQogCi0gICAgZGVmIGZpbGVz
X3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIGZp
bGVzIHVuZGVyIHRoZSBnaXZlbiBwYXRoLiIiIgotICAgICAgICByZXR1cm4gW3NlbGYuam9pbihw
YXRoX3RvX2ZpbGUsIGZpbGVuYW1lKQotICAgICAgICAgICAgZm9yIChwYXRoX3RvX2ZpbGUsIF8s
IGZpbGVuYW1lcykgaW4gb3Mud2FsayhwYXRoKQotICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGlu
IGZpbGVuYW1lc10KKyAgICBkZWYgZmlsZXNfdW5kZXIoc2VsZiwgcGF0aCwgZGlyc190b19za2lw
PVtdLCBmaWxlX2ZpbHRlcj1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIGFs
bCBmaWxlcyB1bmRlciB0aGUgZ2l2ZW4gcGF0aCBpbiB0b3Bkb3duIG9yZGVyLgorCisgICAgICAg
IEFyZ3M6CisgICAgICAgICAgICBkaXJzX3RvX3NraXA6IGEgbGlzdCBvZiBkaXJlY3RvcmllcyB0
byBza2lwIG92ZXIgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgIHRyYXZlcnNhbCAoZS5nLiwg
LnN2biwgcmVzb3VyY2VzLCBldGMuKQorICAgICAgICAgICAgZmlsZV9maWx0ZXI6IGlmIG5vdCBO
b25lLCB0aGUgZmlsdGVyIHdpbGwgYmUgaW52b2tlZAorICAgICAgICAgICAgICAgIHdpdGggdGhl
IGZpbGVzeXN0ZW0gb2JqZWN0IGFuZCB0aGUgZGlybmFtZSBhbmQgYmFzZW5hbWUgb2YKKyAgICAg
ICAgICAgICAgICBlYWNoIGZpbGUgZm91bmQuIFRoZSBmaWxlIGlzIGluY2x1ZGVkIGluIHRoZSBy
ZXN1bHQgaWYgdGhlCisgICAgICAgICAgICAgICAgY2FsbGJhY2sgcmV0dXJucyBUcnVlLgorICAg
ICAgICAiIiIKKyAgICAgICAgZGVmIGZpbHRlcl9hbGwoZnMsIGRpcnBhdGgsIGJhc2VuYW1lKToK
KyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgZmlsZV9maWx0ZXIgPSBmaWxlX2Zp
bHRlciBvciBmaWx0ZXJfYWxsCisgICAgICAgIGZpbGVzID0gW10KKyAgICAgICAgaWYgc2VsZi5p
c2ZpbGUocGF0aCk6CisgICAgICAgICAgICBpZiBmaWxlX2ZpbHRlcihzZWxmLCBzZWxmLmRpcm5h
bWUocGF0aCksIHNlbGYuYmFzZW5hbWUocGF0aCkpOgorICAgICAgICAgICAgICAgIGZpbGVzLmFw
cGVuZChwYXRoKQorICAgICAgICAgICAgcmV0dXJuIGZpbGVzCisKKyAgICAgICAgaWYgc2VsZi5i
YXNlbmFtZShwYXRoKSBpbiBkaXJzX3RvX3NraXA6CisgICAgICAgICAgICByZXR1cm4gW10KKwor
ICAgICAgICBmb3IgKGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMpIGluIG9zLndhbGsocGF0
aCk6CisgICAgICAgICAgICBmb3IgZCBpbiBkaXJzX3RvX3NraXA6CisgICAgICAgICAgICAgICAg
aWYgZCBpbiBkaXJuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgZGlybmFtZXMucmVtb3ZlKGQp
CisKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXM6CisgICAgICAgICAgICAg
ICAgaWYgZmlsZV9maWx0ZXIoc2VsZiwgZGlycGF0aCwgZmlsZW5hbWUpOgorICAgICAgICAgICAg
ICAgICAgICBmaWxlcy5hcHBlbmQoc2VsZi5qb2luKGRpcnBhdGgsIGZpbGVuYW1lKSkKKyAgICAg
ICAgcmV0dXJuIGZpbGVzCiAKICAgICBkZWYgZ2xvYihzZWxmLCBwYXRoKToKICAgICAgICAgIiIi
V3JhcHMgZ2xvYi5nbG9iKCkuIiIiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQppbmRleCA3YzZlYzU5MDkwMmE1NTc4
NzYyZWY2MTgyMmQ5ZDI5NmExMTI4Y2YzLi44OGMxOGU4Y2E1ODY0M2MxNGRlYzA5MGFmY2JlOGE3
YWRmNjkzNmNhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKQEAgLTcxLDEwICs3MSwzNyBAQCBjbGFzcyBNb2Nr
RmlsZVN5c3RlbShvYmplY3QpOgogICAgIGRlZiBleGlzdHMoc2VsZiwgcGF0aCk6CiAgICAgICAg
IHJldHVybiBzZWxmLmlzZmlsZShwYXRoKSBvciBzZWxmLmlzZGlyKHBhdGgpCiAKLSAgICBkZWYg
ZmlsZXNfdW5kZXIoc2VsZiwgcGF0aCk6CisgICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgs
IGRpcnNfdG9fc2tpcD1bXSwgZmlsZV9maWx0ZXI9Tm9uZSk6CisgICAgICAgIGRlZiBmaWx0ZXJf
YWxsKGZzLCBkaXJwYXRoLCBiYXNlbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisg
ICAgICAgIGZpbGVfZmlsdGVyID0gZmlsZV9maWx0ZXIgb3IgZmlsdGVyX2FsbAorICAgICAgICBm
aWxlcyA9IFtdCisgICAgICAgIGlmIHNlbGYuaXNmaWxlKHBhdGgpOgorICAgICAgICAgICAgaWYg
ZmlsZV9maWx0ZXIoc2VsZiwgc2VsZi5kaXJuYW1lKHBhdGgpLCBzZWxmLmJhc2VuYW1lKHBhdGgp
KToKKyAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQocGF0aCkKKyAgICAgICAgICAgIHJldHVy
biBmaWxlcworCisgICAgICAgIGlmIHNlbGYuYmFzZW5hbWUocGF0aCkgaW4gZGlyc190b19za2lw
OgorICAgICAgICAgICAgcmV0dXJuIFtdCisKICAgICAgICAgaWYgbm90IHBhdGguZW5kc3dpdGgo
Jy8nKToKICAgICAgICAgICAgIHBhdGggKz0gJy8nCi0gICAgICAgIHJldHVybiBbZmlsZSBmb3Ig
ZmlsZSBpbiBzZWxmLmZpbGVzIGlmIGZpbGUuc3RhcnRzd2l0aChwYXRoKV0KKworICAgICAgICBk
aXJfc3Vic3RyaW5ncyA9IFsnLycgKyBkICsgJy8nIGZvciBkIGluIGRpcnNfdG9fc2tpcF0KKyAg
ICAgICAgZm9yIGZpbGVuYW1lIGluIHNlbGYuZmlsZXM6CisgICAgICAgICAgICBpZiBub3QgZmls
ZW5hbWUuc3RhcnRzd2l0aChwYXRoKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICBzdWZmaXggPSBmaWxlbmFtZVtsZW4ocGF0aCkgLSAxOl0KKyAgICAgICAgICAgIGlm
IGFueShkaXJfc3Vic3RyaW5nIGluIHN1ZmZpeCBmb3IgZGlyX3N1YnN0cmluZyBpbiBkaXJfc3Vi
c3RyaW5ncyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZGlycGF0
aCwgYmFzZW5hbWUgPSBzZWxmLl9zcGxpdChmaWxlbmFtZSkKKyAgICAgICAgICAgIGlmIGZpbGVf
ZmlsdGVyKHNlbGYsIGRpcnBhdGgsIGJhc2VuYW1lKToKKyAgICAgICAgICAgICAgICBmaWxlcy5h
cHBlbmQoZmlsZW5hbWUpCisKKyAgICAgICAgcmV0dXJuIGZpbGVzCiAKICAgICBkZWYgZ2xvYihz
ZWxmLCBwYXRoKToKICAgICAgICAgIyBGSVhNRTogVGhpcyBvbmx5IGhhbmRsZXMgYSB3aWxkY2Fy
ZCAnKicgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQppbmRleCAyOTAxYTlmZDMz
MzM5Njc2NzE5MTQ2NWI5NWMzYjA5Njg0ZTdhYjI4Li40MWQ5MThmYTYwMWQxMjJmOGMzOWVhNzYx
YTc3NGQ2NjU4ODY5OTk1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5CkBAIC0zNCw4ICszNCw2IEBAIGxpc3Qgb2Yg
dGVzdCBmaWxlcyBpcyBjb25zdHJhaW5lZCB0byB0aG9zZSBmb3VuZCB1bmRlciB0aGUgcGF0aHMg
cGFzc2VkIGluLAogaS5lLiBjYWxsaW5nIGZpbmQoWyJMYXlvdXRUZXN0cy9mYXN0Il0pIHdpbGwg
b25seSByZXR1cm4gZmlsZXMKIHVuZGVyIHRoYXQgZGlyZWN0b3J5LiIiIgogCi1pbXBvcnQgZ2xv
YgotaW1wb3J0IG9zCiBpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0g
aW1wb3J0IGxvZ3V0aWxzCkBAIC02MSw2ICs1OSw3IEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToK
ICAgICBmcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KICAgICBnYXRoZXJfc3RhcnRfdGltZSA9IHRpbWUu
dGltZSgpCiAgICAgcGF0aHNfdG9fd2FsayA9IHNldCgpCisKICAgICAjIGlmIHBhdGhzIGlzIGVt
cHR5LCBwcm92aWRlIGEgcHJlLWRlZmluZWQgbGlzdC4KICAgICBpZiBwYXRoczoKICAgICAgICAg
X2xvZy5kZWJ1ZygiR2F0aGVyaW5nIHRlc3RzIGZyb206ICVzIHJlbGF0aXZlIHRvICVzIiAlIChw
YXRocywgcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpKQpAQCAtNzYsMzAgKzc1LDEyIEBAIGRlZiBm
aW5kKHBvcnQsIHBhdGhzKToKICAgICAgICAgX2xvZy5kZWJ1ZygiR2F0aGVyaW5nIHRlc3RzIGZy
b206ICVzIiAlIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpKQogICAgICAgICBwYXRoc190b193YWxr
LmFkZChwb3J0LmxheW91dF90ZXN0c19kaXIoKSkKIAotICAgICMgTm93IHdhbGsgYWxsIHRoZSBw
YXRocyBwYXNzZWQgaW4gb24gdGhlIGNvbW1hbmQgbGluZSBhbmQgZ2V0IGZpbGVuYW1lcworICAg
ICMgRklYTUU6IEknbSBub3Qgc3VyZSB0aGVyZSdzIG11Y2ggcG9pbnQgaW4gdGhpcyBiZWluZyBh
IHNldC4gQSBsaXN0IHdvdWxkCisgICAgIyBwcm9iYWJseSBiZSBmYXN0ZXIuCiAgICAgdGVzdF9m
aWxlcyA9IHNldCgpCiAgICAgZm9yIHBhdGggaW4gcGF0aHNfdG9fd2FsazoKLSAgICAgICAgaWYg
ZnMuaXNmaWxlKHBhdGgpIGFuZCBfaXNfdGVzdF9maWxlKGZzLCBwYXRoKToKLSAgICAgICAgICAg
IHRlc3RfZmlsZXMuYWRkKGZzLm5vcm1wYXRoKHBhdGgpKQotICAgICAgICAgICAgY29udGludWUK
LQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoKToKLSAgICAg
ICAgICAgICMgRG9uJ3Qgd2FsayBza2lwcGVkIGRpcmVjdG9yaWVzIG9yIHRoZWlyIHN1Yi1kaXJl
Y3Rvcmllcy4KLSAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUocm9vdCkgaW4gX3NraXBw
ZWRfZGlyZWN0b3JpZXM6Ci0gICAgICAgICAgICAgICAgZGVsIGRpcnNbOl0KLSAgICAgICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICAgICAgIyBUaGlzIGNvcHkgYW5kIGZvci1pbiBpcyBzbGln
aHRseSBpbmVmZmljaWVudCwgYnV0Ci0gICAgICAgICAgICAjIHRoZSBleHRyYSB3YWxrIGF2b2lk
YW5jZSBjb25zaXN0ZW50bHkgc2hhdmVzIC41IHNlY29uZHMKLSAgICAgICAgICAgICMgb2ZmIG9m
IHRvdGFsIHdhbGsoKSB0aW1lIG9uIG15IE1hY0Jvb2sgUHJvLgotICAgICAgICAgICAgZm9yIGRp
cmVjdG9yeSBpbiBkaXJzWzpdOgotICAgICAgICAgICAgICAgIGlmIGRpcmVjdG9yeSBpbiBfc2tp
cHBlZF9kaXJlY3RvcmllczoKLSAgICAgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoZGlyZWN0
b3J5KQotCi0gICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAg
ICAgaWYgX2lzX3Rlc3RfZmlsZShmcywgZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgICAgICBm
aWxlbmFtZSA9IGZzLmpvaW4ocm9vdCwgZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZp
bGVuYW1lID0gZnMubm9ybXBhdGgoZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHRlc3Rf
ZmlsZXMuYWRkKGZpbGVuYW1lKQorICAgICAgICBmaWxlcyA9IGZzLmZpbGVzX3VuZGVyKHBhdGgs
IF9za2lwcGVkX2RpcmVjdG9yaWVzLCBfaXNfdGVzdF9maWxlKQorICAgICAgICB0ZXN0X2ZpbGVz
LnVwZGF0ZShzZXQoZmlsZXMpKQogCiAgICAgZ2F0aGVyX3RpbWUgPSB0aW1lLnRpbWUoKSAtIGdh
dGhlcl9zdGFydF90aW1lCiAgICAgX2xvZy5kZWJ1ZygiVGVzdCBnYXRoZXJpbmcgdG9vayAlZiBz
ZWNvbmRzIiAlIGdhdGhlcl90aW1lKQpAQCAtMTIzLDcgKzEwNCw3IEBAIGRlZiBfaXNfcmVmZXJl
bmNlX2h0bWxfZmlsZShmaWxlbmFtZSk6CiAgICAgcmV0dXJuIEZhbHNlCiAKIAotZGVmIF9pc190
ZXN0X2ZpbGUoZnMsIGZpbGVuYW1lKToKK2RlZiBfaXNfdGVzdF9maWxlKGZzLCBkaXJuYW1lLCBm
aWxlbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIGZpbGVuYW1lIHBvaW50cyB0byBh
IHRlc3QgZmlsZS4iIiIKICAgICByZXR1cm4gKF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmcywg
ZmlsZW5hbWUpIGFuZAogICAgICAgICAgICAgbm90IF9pc19yZWZlcmVuY2VfaHRtbF9maWxlKGZp
bGVuYW1lKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weQppbmRleCA1Njk3MzkxMTkzNWEz
NDA4MzllYWZmOGI0NzkzMDUwOTBkYjM0MTgzLi5lYWJkZmQ5YzJiMGJlMDA4ZGU0YjhiYzc2NjEy
ZjdkNzVmZmUzNTA1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CkBAIC02NiwxMSAr
NjYsMTEgQEAgY2xhc3MgVGVzdEZpbGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVm
IHRlc3RfaXNfdGVzdF9maWxlKHNlbGYpOgogICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKICAg
ICAgICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0
X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICdmb28uaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnZm9vLnNodG1sJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnZm9vLnBuZycp
KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywg
J2Zvby1leHBlY3RlZC5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxl
cy5faXNfdGVzdF9maWxlKGZzLCAnZm9vLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJycsICdmb28u
aHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9maWxlcy5faXNfdGVzdF9maWxl
KGZzLCAnJywgJ2Zvby5zaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmls
ZXMuX2lzX3Rlc3RfZmlsZShmcywgJycsICdmb28ucG5nJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnJywgJ2Zvby1leHBlY3RlZC5odG1s
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZz
LCAnJywgJ2Zvby1leHBlY3RlZC1taXNtYXRjaC5odG1sJykpCiAKIAogaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoK
</data>

          </attachment>
      

    </bug>

</bugzilla>