<?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>52604</bug_id>
          
          <creation_ts>2011-01-17 17:42:39 -0800</creation_ts>
          <short_desc>new-run-webkit-tests: use filesystem wrapper in more places</short_desc>
          <delta_ts>2011-01-19 12:28:55 -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>
          
          <blocked>52605</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>335604</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-17 17:42:39 -0800</bug_when>
    <thetext>new-run-webkit-tests: use filesystem wrapper in more places</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335605</commentid>
    <comment_count>1</comment_count>
      <attachid>79231</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-17 17:44:01 -0800</bug_when>
    <thetext>Created attachment 79231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335939</commentid>
    <comment_count>2</comment_count>
      <attachid>79231</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-01-18 11:02:59 -0800</bug_when>
    <thetext>Comment on attachment 79231
Patch

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

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:51
&gt; +        if idx == -1:
&gt; +            idx = 0
&gt; +        return path[idx:]

If we find &apos;/&apos;, won&apos;t this include &apos;/&apos; in the returned value?  E.g., basename of &apos;/foo/bar&apos; would be &apos;/bar&apos; but it should be &apos;bar&apos;.

I think you can just remove the -1 check and use path[idx + 1:].

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:78
&gt; +    def glob(self, path):
&gt; +        if path[-1] == &apos;*&apos;:
&gt; +            return [f for f in self.files if f.startswith(path[:-1])]
&gt; +        else:
&gt; +            return [f for f in self.files if f == path]

This doesn&apos;t handle cases where * is in the middle of the string, but it&apos;s probably good enough for now.  Maybe mention that in a comment?

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:89
&gt; +        files = self.files.keys()[:]
&gt; +        return any(f.startswith(path) for f in files)

Why is this copy needed?

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:144
&gt; +    def splitext(self, path):
&gt; +        idx = path.rfind(&apos;.&apos;)
&gt; +        if idx == -1:
&gt; +            idx = 0
&gt; +        return (path[0:idx], path[idx:])

This looks like it produces the wrong output if idx == -1.  E.g., splitext(&quot;/foo/bar&quot;) should return (&quot;/foo/bar&quot;, &quot;&quot;), but this returns (&quot;&quot;, &quot;/foo/bar&quot;).

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:148
&gt; +        # Ripped from Python 2.6&apos;s os.walk.
&gt; +        # equivalent to walk(top, topdown=True, followlinks=False).

If we&apos;re going to create a derivative work (i.e., copy/paste + modification), we need to include the python license and copyright.  You could do it inline in the file or add the license in a separate file-- I&apos;m not sure how webkit normally does this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335996</commentid>
    <comment_count>3</comment_count>
      <attachid>79231</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-18 12:25:01 -0800</bug_when>
    <thetext>Comment on attachment 79231
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:51
&gt;&gt; +        return path[idx:]
&gt; 
&gt; If we find &apos;/&apos;, won&apos;t this include &apos;/&apos; in the returned value?  E.g., basename of &apos;/foo/bar&apos; would be &apos;/bar&apos; but it should be &apos;bar&apos;.
&gt; 
&gt; I think you can just remove the -1 check and use path[idx + 1:].

Hmm. You&apos;re right, and yet the code seems to be working as is. I&apos;ll figure out what&apos;s going on and update the patch.

&gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:78
&gt;&gt; +            return [f for f in self.files if f == path]
&gt; 
&gt; This doesn&apos;t handle cases where * is in the middle of the string, but it&apos;s probably good enough for now.  Maybe mention that in a comment?

Will do.

&gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:89
&gt;&gt; +        return any(f.startswith(path) for f in files)
&gt; 
&gt; Why is this copy needed?

That is a great question. I was testing this yesterday and getting some weird mutation errors in the unit tests as if different threads were accessing this simultaneously (as if the any() was doing a yield, which as far as I know, it doesn&apos;t, or a thread switch was happening during the walk, which as far as I know, can&apos;t happen because of the GIL). Adding the copy fixed things. I&apos;ll remove the copy and see if I can figure out what was going on.

&gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:144
&gt;&gt; +        return (path[0:idx], path[idx:])
&gt; 
&gt; This looks like it produces the wrong output if idx == -1.  E.g., splitext(&quot;/foo/bar&quot;) should return (&quot;/foo/bar&quot;, &quot;&quot;), but this returns (&quot;&quot;, &quot;/foo/bar&quot;).

Good catch. Will fix.

&gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:148
&gt;&gt; +        # equivalent to walk(top, topdown=True, followlinks=False).
&gt; 
&gt; If we&apos;re going to create a derivative work (i.e., copy/paste + modification), we need to include the python license and copyright.  You could do it inline in the file or add the license in a separate file-- I&apos;m not sure how webkit normally does this.

Good point. I&apos;ll split this into a separate file and add some sort of disclaimer and the license text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336022</commentid>
    <comment_count>4</comment_count>
      <attachid>79313</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-18 12:55:13 -0800</bug_when>
    <thetext>Created attachment 79313
update w/ review feedback from tony</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336026</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-18 12:57:03 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 79231 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79231&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:51
&gt; &gt;&gt; +        return path[idx:]
&gt; &gt; 
&gt; &gt; If we find &apos;/&apos;, won&apos;t this include &apos;/&apos; in the returned value?  E.g., basename of &apos;/foo/bar&apos; would be &apos;/bar&apos; but it should be &apos;bar&apos;.
&gt; &gt; 
&gt; &gt; I think you can just remove the -1 check and use path[idx + 1:].
&gt; 
&gt; Hmm. You&apos;re right, and yet the code seems to be working as is. I&apos;ll figure out what&apos;s going on and update the patch.
&gt; 

The code where this was being used wasn&apos;t firing. At some point, writing unit tests for this module might be a good idea.

&gt; &gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:78
&gt; &gt;&gt; +            return [f for f in self.files if f == path]
&gt; &gt; 
&gt; &gt; This doesn&apos;t handle cases where * is in the middle of the string, but it&apos;s probably good enough for now.  Maybe mention that in a comment?
&gt; 
&gt; Will do.
&gt;

Done.
 
&gt; &gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:89
&gt; &gt;&gt; +        return any(f.startswith(path) for f in files)
&gt; &gt; 
&gt; &gt; Why is this copy needed?
&gt; 
&gt; That is a great question. I was testing this yesterday and getting some weird mutation errors in the unit tests as if different threads were accessing this simultaneously (as if the any() was doing a yield, which as far as I know, it doesn&apos;t, or a thread switch was happening during the walk, which as far as I know, can&apos;t happen because of the GIL). Adding the copy fixed things. I&apos;ll remove the copy and see if I can figure out what was going on.

Of course, I can&apos;t reproduce this now. I&apos;m not sure if that makes me feel better or worse. I&apos;ve removed the copy, since it doesn&apos;t seem like it should be needed.

&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:144
&gt; &gt;&gt; +        return (path[0:idx], path[idx:])
&gt; &gt; 
&gt; &gt; This looks like it produces the wrong output if idx == -1.  E.g., splitext(&quot;/foo/bar&quot;) should return (&quot;/foo/bar&quot;, &quot;&quot;), but this returns (&quot;&quot;, &quot;/foo/bar&quot;).
&gt; 
&gt; Good catch. Will fix.
&gt;

Fixed.
 
&gt; &gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:148
&gt; &gt;&gt; +        # equivalent to walk(top, topdown=True, followlinks=False).
&gt; &gt; 
&gt; &gt; If we&apos;re going to create a derivative work (i.e., copy/paste + modification), we need to include the python license and copyright.  You could do it inline in the file or add the license in a separate file-- I&apos;m not sure how webkit normally does this.
&gt; 
&gt; Good point. I&apos;ll split this into a separate file and add some sort of disclaimer and the license text.

I&apos;ve included the relevant license. Hopefully that&apos;s good enough. Do you think we need to do anything more?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336238</commentid>
    <comment_count>6</comment_count>
      <attachid>79364</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-18 17:23:23 -0800</bug_when>
    <thetext>Created attachment 79364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336250</commentid>
    <comment_count>7</comment_count>
      <attachid>79368</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-18 17:39:44 -0800</bug_when>
    <thetext>Created attachment 79368
fix missed reference to os.path</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336253</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-18 17:43:10 -0800</bug_when>
    <thetext>Okay, I split the walk() usage out into a separate patch (bug 52691). Can you r+ the rest of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336690</commentid>
    <comment_count>9</comment_count>
      <attachid>79461</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 12:17:16 -0800</bug_when>
    <thetext>Created attachment 79461
fix missing parameter in MockFileSystem.basename()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336701</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 12:28:55 -0800</bug_when>
    <thetext>Committed r76150: &lt;http://trac.webkit.org/changeset/76150&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79231</attachid>
            <date>2011-01-17 17:44:01 -0800</date>
            <delta_ts>2011-01-18 12:55:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52604-20110117174400.patch</filename>
            <type>text/plain</type>
            <size>20668</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5Yzgx
YzQ3M2Y3MTRjOTU2ZGIwOTczNGRlY2UwN2MyNjlmOTA3ZjJkLi5jMmMyOWRmY2VkZDYzOWZkMWZk
MTg1MTM5Y2Q4NGUyMGM4YjEzZmQzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDEtMTcgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hhbmdlIG1vcmUgbW9kdWxlcyBpbiB0aGUgbGF5b3V0LXRlc3Rz
IGNvZGUgdG8gdXNlIHRoZQorICAgICAgICBmaWxlc3lzdGVtIHdyYXBwZXIgZm9yIGNsZWFuZXIg
dW5pdCB0ZXN0aW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoZSBmb2xsb3dp
bmcgd3JhcHBlcnMgdG8gdGhlIGZpbGVzeXN0ZW0KKyAgICAgICAgYWJzdHJhY3Rpb24sIGJhc2Vu
YW1lKCksIGRpcm5hbWUoKSwgZ2xvYigpLCBub3JtcGF0aCgpLCBzcGxpdCgpLAorICAgICAgICBz
cGxpdGV4dCgpLCB3YWxrKCkuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2MDQKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5OgorCiAyMDExLTAxLTE3ICBUb255IEdl
bnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxl
eGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2ZpbGVzeXN0ZW0ucHkKaW5kZXggNTI3YjZiZGVhNWFkNjhkYTI1MzBmMzA2OWZlN2Y4
N2JmMmViNmViMi4uMWUxZDc2YTc5OGFkMTYwMTM1MTAzNDgxZmZjZGE3OGQ2Yzc5YjY1NCAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0u
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0u
cHkKQEAgLTMzLDYgKzMzLDcgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVu
dAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCiBpbXBvcnQgZXhjZXB0aW9ucworaW1wb3J0
IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCkBAIC00NCwx
MCArNDUsMzMgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIFVubGVzcyBvdGhlcndp
c2Ugbm90ZWQsIGFsbCBwYXRocyBhcmUgYWxsb3dlZCB0byBiZSBlaXRoZXIgYWJzb2x1dGUKICAg
ICBvciByZWxhdGl2ZS4iIiIKIAorICAgIGRlZiBiYXNlbmFtZShzZWxmLCBwYXRoKToKKyAgICAg
ICAgIiIiV3JhcHMgb3MucGF0aC5iYXNlbmFtZSgpLiIiIgorICAgICAgICByZXR1cm4gb3MucGF0
aC5iYXNlbmFtZShwYXRoKQorCisgICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNvdXJjZSwgZGVzdGlu
YXRpb24pOgorICAgICAgICAiIiJDb3BpZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGF0IHRo
ZSBnaXZlbiBwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBwYXRoLiIiIgorICAgICAg
ICBzaHV0aWwuY29weWZpbGUoc291cmNlLCBkZXN0aW5hdGlvbikKKworICAgIGRlZiBkaXJuYW1l
KHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJXcmFwcyBvcy5wYXRoLmRpcm5hbWUoKS4iIiIKKyAg
ICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQorCiAgICAgZGVmIGV4aXN0cyhzZWxm
LCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIHBhdGggZXhpc3RzIGluIHRo
ZSBmaWxlc3lzdGVtLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0aC5leGlzdHMocGF0aCkKIAor
ICAgIGRlZiBmaWxlc191bmRlcihzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBs
aXN0IG9mIGFsbCBmaWxlcyB1bmRlciB0aGUgZ2l2ZW4gcGF0aC4iIiIKKyAgICAgICAgcmV0dXJu
IFtzZWxmLmpvaW4ocGF0aF90b19maWxlLCBmaWxlbmFtZSkKKyAgICAgICAgICAgIGZvciAocGF0
aF90b19maWxlLCBfLCBmaWxlbmFtZXMpIGluIG9zLndhbGsocGF0aCkKKyAgICAgICAgICAgIGZv
ciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNdCisKKyAgICBkZWYgZ2xvYihzZWxmLCBwYXRoKToKKyAg
ICAgICAgIiIiV3JhcHMgZ2xvYi5nbG9iKCkuIiIiCisgICAgICAgIHJldHVybiBnbG9iLmdsb2Io
cGF0aCkKKwogICAgIGRlZiBpc2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB3
aGV0aGVyIHRoZSBwYXRoIHJlZmVycyB0byBhIGZpbGUuIiIiCiAgICAgICAgIHJldHVybiBvcy5w
YXRoLmlzZmlsZShwYXRoKQpAQCAtOTgsNiArMTIyLDEwIEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2Jq
ZWN0KToKICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUVYSVNUOgogICAgICAgICAg
ICAgICAgIHJhaXNlCiAKKyAgICBkZWYgbm9ybXBhdGgoc2VsZiwgcGF0aCk6CisgICAgICAgICIi
IldyYXBzIG9zLnBhdGgubm9ybXBhdGgoKS4iIiIKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9y
bXBhdGgocGF0aCkKKwogICAgIGNsYXNzIF9XaW5kb3dzRXJyb3IoZXhjZXB0aW9ucy5PU0Vycm9y
KToKICAgICAgICAgIiIiRmFrZSBleGNlcHRpb24gZm9yIExpbnV4IGFuZCBNYWMuIiIiCiAgICAg
ICAgIHBhc3MKQEAgLTEzOSw2ICsxNjcsMTggQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgog
ICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICdyJywgJ3V0ZjgnKSBhcyBmOgogICAgICAg
ICAgICAgcmV0dXJuIGYucmVhZCgpCiAKKyAgICBkZWYgc3BsaXQoc2VsZiwgcGF0aCk6CisgICAg
ICAgICIiIlJldHVybiAoZGlybmFtZSwgYmFzZW5hbWUgKyBleHQpLiIiIgorICAgICAgICByZXR1
cm4gb3MucGF0aC5zcGxpdChwYXRoKQorCisgICAgZGVmIHNwbGl0ZXh0KHNlbGYsIHBhdGgpOgor
ICAgICAgICAiIiJSZXR1cm4gKGRpcm5hbWUgKyBvcy5zZXAgKyBiYXNlbmFtZSwgJy4nICsgZXh0
KSIiIgorICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChwYXRoKQorCisgICAgZGVmIHdh
bGsoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIldyYXBwZXIgYXJvdW5kIG9zLndhbGsoKS4iIiIK
KyAgICAgICAgcmV0dXJuIG9zLndhbGsocGF0aCkKKwogICAgIGRlZiB3cml0ZV9iaW5hcnlfZmls
ZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CiAgICAgICAgICIiIldyaXRlIHRoZSBjb250ZW50cyB0
byB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIiIiCiAgICAgICAgIHdpdGggZmlsZShw
YXRoLCAnd2InKSBhcyBmOgpAQCAtMTUwLDE0ICsxOTAsMyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9i
amVjdCk6CiAgICAgICAgIFRoZSBmaWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBhcyBVVEYtOCB3aXRo
IG5vIEJPTS4iIiIKICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAndycsICd1dGY4Jykg
YXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoY29udGVudHMpCi0KLSAgICBkZWYgY29weWZpbGUo
c2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6Ci0gICAgICAgICIiIkNvcGllcyB0aGUgY29udGVu
dHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uCi0gICAg
ICAgIHBhdGguIiIiCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShzb3VyY2UsIGRlc3RpbmF0aW9u
KQotCi0gICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4g
dGhlIGxpc3Qgb2YgYWxsIGZpbGVzIHVuZGVyIHRoZSBnaXZlbiBwYXRoLiIiIgotICAgICAgICBy
ZXR1cm4gW3NlbGYuam9pbihwYXRoX3RvX2ZpbGUsIGZpbGVuYW1lKQotICAgICAgICAgICAgZm9y
IChwYXRoX3RvX2ZpbGUsIF8sIGZpbGVuYW1lcykgaW4gb3Mud2FsayhwYXRoKQotICAgICAgICAg
ICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lc10KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CmluZGV4IDgwOWM0YzZm
YmFhYmFjMDU2NTY1YTdkNjNlNmNiYzkzNTNiOWIxZmMuLmZhZTJiOTIxMmQxY2ZkNzFjM2Q1NjZl
NjRiYWQ1NTcyOTVlZmMyNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQpAQCAtNDQsOSArNDQsMzkgQEAgY2xh
c3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuZmls
ZXMgPSBmaWxlcyBvciB7fQogCisgICAgZGVmIGJhc2VuYW1lKHNlbGYsIHBhdGgpOgorICAgICAg
ICBpZHggPSBwYXRoLnJmaW5kKCcvJykKKyAgICAgICAgaWYgaWR4ID09IC0xOgorICAgICAgICAg
ICAgaWR4ID0gMAorICAgICAgICByZXR1cm4gcGF0aFtpZHg6XQorCisgICAgZGVmIGNvcHlmaWxl
KHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAgICBpZiBub3Qgc2VsZi5leGlzdHMo
c291cmNlKToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBzb3VyY2Us
IG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCkpCisgICAgICAgIGlmIHNlbGYuaXNkaXIoc291cmNl
KToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUlTRElSLCBzb3VyY2UsIG9zLnN0
cmVycm9yKGVycm5vLklTRElSKSkKKyAgICAgICAgaWYgc2VsZi5pc2RpcihkZXN0aW5hdGlvbik6
CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVJU0RJUiwgZGVzdGluYXRpb24sIG9z
LnN0cmVycm9yKGVycm5vLklTRElSKSkKKworICAgICAgICBzZWxmLmZpbGVzW2Rlc3RpbmF0aW9u
XSA9IHNlbGYuZmlsZXNbc291cmNlXQorCisgICAgZGVmIGRpcm5hbWUoc2VsZiwgcGF0aCk6Cisg
ICAgICAgIHJldHVybiBzZWxmLnNwbGl0KHBhdGgpWzBdCisKICAgICBkZWYgZXhpc3RzKHNlbGYs
IHBhdGgpOgogICAgICAgICByZXR1cm4gc2VsZi5pc2ZpbGUocGF0aCkgb3Igc2VsZi5pc2Rpcihw
YXRoKQogCisgICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBub3Qg
cGF0aC5lbmRzd2l0aCgnLycpOgorICAgICAgICAgICAgcGF0aCArPSAnLycKKyAgICAgICAgcmV0
dXJuIFtmaWxlIGZvciBmaWxlIGluIHNlbGYuZmlsZXMgaWYgZmlsZS5zdGFydHN3aXRoKHBhdGgp
XQorCisgICAgZGVmIGdsb2Ioc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIHBhdGhbLTFdID09ICcq
JzoKKyAgICAgICAgICAgIHJldHVybiBbZiBmb3IgZiBpbiBzZWxmLmZpbGVzIGlmIGYuc3RhcnRz
d2l0aChwYXRoWzotMV0pXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIFtmIGZv
ciBmIGluIHNlbGYuZmlsZXMgaWYgZiA9PSBwYXRoXQorCiAgICAgZGVmIGlzZmlsZShzZWxmLCBw
YXRoKToKICAgICAgICAgcmV0dXJuIHBhdGggaW4gc2VsZi5maWxlcyBhbmQgc2VsZi5maWxlc1tw
YXRoXSBpcyBub3QgTm9uZQogCkBAIC01NSw3ICs4NSw4IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVt
KG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgbm90IHBhdGgu
ZW5kc3dpdGgoJy8nKToKICAgICAgICAgICAgIHBhdGggKz0gJy8nCi0gICAgICAgIHJldHVybiBh
bnkoZi5zdGFydHN3aXRoKHBhdGgpIGZvciBmIGluIHNlbGYuZmlsZXMpCisgICAgICAgIGZpbGVz
ID0gc2VsZi5maWxlcy5rZXlzKClbOl0KKyAgICAgICAgcmV0dXJuIGFueShmLnN0YXJ0c3dpdGgo
cGF0aCkgZm9yIGYgaW4gZmlsZXMpCiAKICAgICBkZWYgam9pbihzZWxmLCAqY29tcHMpOgogICAg
ICAgICByZXR1cm4gcmUuc3ViKHJlLmVzY2FwZShvcy5wYXRoLnNlcCksICcvJywgb3MucGF0aC5q
b2luKCpjb21wcykpCkBAIC04NCw2ICsxMTUsOSBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmpl
Y3QpOgogICAgICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgc3VjaCB0aGF0IHN1YnNlcXVlbnQgY2Fs
bHMgdG8gaXNkaXIoKSB3b3JrPwogICAgICAgICBwYXNzCiAKKyAgICBkZWYgbm9ybXBhdGgoc2Vs
ZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBwYXRoCisKICAgICBkZWYgcmVhZF90ZXh0X2ZpbGUo
c2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkK
IApAQCAtOTMsMjkgKzEyNyw0MSBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAg
ICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBwYXRoLCBvcy5zdHJlcnJv
cihlcnJuby5FTk9FTlQpKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXNbcGF0aF0KIAot
ICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgotICAgICAgICBy
ZXR1cm4gc2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBjb250ZW50cykKLQotICAgIGRlZiB3
cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6Ci0gICAgICAgIHNlbGYuZmls
ZXNbcGF0aF0gPSBjb250ZW50cwotCi0gICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNvdXJjZSwgZGVz
dGluYXRpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5leGlzdHMoc291cmNlKToKLSAgICAgICAg
ICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBzb3VyY2UsIG9zLnN0cmVycm9yKGVycm5v
LkVOT0VOVCkpCi0gICAgICAgIGlmIHNlbGYuaXNkaXIoc291cmNlKToKLSAgICAgICAgICAgIHJh
aXNlIElPRXJyb3IoZXJybm8uRUlTRElSLCBzb3VyY2UsIG9zLnN0cmVycm9yKGVycm5vLklTRElS
KSkKLSAgICAgICAgaWYgc2VsZi5pc2RpcihkZXN0aW5hdGlvbik6Ci0gICAgICAgICAgICByYWlz
ZSBJT0Vycm9yKGVycm5vLkVJU0RJUiwgZGVzdGluYXRpb24sIG9zLnN0cmVycm9yKGVycm5vLklT
RElSKSkKLQotICAgICAgICBzZWxmLmZpbGVzW2Rlc3RpbmF0aW9uXSA9IHNlbGYuZmlsZXNbc291
cmNlXQotCi0gICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3Qg
cGF0aC5lbmRzd2l0aCgnLycpOgotICAgICAgICAgICAgcGF0aCArPSAnLycKLSAgICAgICAgcmV0
dXJuIFtmaWxlIGZvciBmaWxlIGluIHNlbGYuZmlsZXMgaWYgZmlsZS5zdGFydHN3aXRoKHBhdGgp
XQotCiAgICAgZGVmIHJlbW92ZShzZWxmLCBwYXRoKToKICAgICAgICAgZGVsIHNlbGYuZmlsZXNb
cGF0aF0KIAogICAgIGRlZiByZW1vdmVfdHJlZShzZWxmLCBwYXRoLCBpZ25vcmVfZXJyb3JzPUZh
bHNlKToKICAgICAgICAgc2VsZi5maWxlcyA9IFtmaWxlIGZvciBmaWxlIGluIHNlbGYuZmlsZXMg
aWYgbm90IGZpbGUuc3RhcnRzd2l0aChwYXRoKV0KKworICAgIGRlZiBzcGxpdChzZWxmLCBwYXRo
KToKKyAgICAgICAgaWR4ID0gcGF0aC5yZmluZCgnLycpCisgICAgICAgIHJldHVybiAocGF0aFsw
OmlkeF0sIHBhdGhbaWR4ICsgMTpdKQorCisgICAgZGVmIHNwbGl0ZXh0KHNlbGYsIHBhdGgpOgor
ICAgICAgICBpZHggPSBwYXRoLnJmaW5kKCcuJykKKyAgICAgICAgaWYgaWR4ID09IC0xOgorICAg
ICAgICAgICAgaWR4ID0gMAorICAgICAgICByZXR1cm4gKHBhdGhbMDppZHhdLCBwYXRoW2lkeDpd
KQorCisgICAgZGVmIHdhbGsoc2VsZiwgdG9wKToKKyAgICAgICAgIyBSaXBwZWQgZnJvbSBQeXRo
b24gMi42J3Mgb3Mud2Fsay4KKyAgICAgICAgIyBlcXVpdmFsZW50IHRvIHdhbGsodG9wLCB0b3Bk
b3duPVRydWUsIGZvbGxvd2xpbmtzPUZhbHNlKS4KKyAgICAgICAgbmFtZXMgPSBzZWxmLmxpc3Rk
aXIodG9wKQorICAgICAgICBkaXJzLCBub25kaXJzID0gW10sIFtdCisgICAgICAgIGZvciBuYW1l
IGluIG5hbWVzOgorICAgICAgICAgICAgaWYgc2VsZi5pc2RpcihzZWxmLmpvaW4odG9wLCBuYW1l
KSk6CisgICAgICAgICAgICAgICAgZGlycy5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQobmFtZSkKKworICAgICAgICB5aWVsZCB0
b3AsIGRpcnMsIG5vbmRpcnMKKyAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKKyAgICAgICAgICAg
IHBhdGggPSBzZWxmLmpvaW4odG9wLCBuYW1lKQorICAgICAgICAgICAgZm9yIHggaW4gc2VsZi53
YWxrKHBhdGgpOgorICAgICAgICAgICAgICAgIHlpZWxkIHgKKworICAgIGRlZiB3cml0ZV90ZXh0
X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgorICAgICAgICByZXR1cm4gc2VsZi53cml0ZV9i
aW5hcnlfZmlsZShwYXRoLCBjb250ZW50cykKKworICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShz
ZWxmLCBwYXRoLCBjb250ZW50cyk6CisgICAgICAgIHNlbGYuZmlsZXNbcGF0aF0gPSBjb250ZW50
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5w
eQppbmRleCAyYmIyZDAyNzJkYjk5YmI3MGVhZmQ4OWMzZmQzMWY2ZWZlMjlmZmZkLi5mMGE1MjMy
NzNjZGFhNjQ4YjgyMDNmYjE1ODMyOTk1OTJmNTQxMTE4IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVl
X3RocmVhZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQpAQCAtODYsNiArODYsNyBAQCBk
ZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5wdXQsIHRlc3RfdHlwZXMs
IHRlc3RfYXJncywKICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2JqZWN0CiAgICAgIiIiCiAg
ICAgZmFpbHVyZXMgPSBbXQorICAgIGZzID0gcG9ydC5fZmlsZXN5c3RlbQogCiAgICAgaWYgdGVz
dF9vdXRwdXQuY3Jhc2g6CiAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVDcmFzaCgpKQpAQCAtOTYsMTEgKzk3LDEwIEBAIGRlZiBfcHJvY2Vzc19vdXRwdXQocG9y
dCwgb3B0aW9ucywgdGVzdF9pbnB1dCwgdGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgIGlmIHRl
c3Rfb3V0cHV0LmNyYXNoOgogICAgICAgICBfbG9nLmRlYnVnKCIlcyBTdGFja3RyYWNlIGZvciAl
czpcbiVzIiAlICh3b3JrZXJfbmFtZSwgdGVzdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X291dHB1dC5lcnJvcikpCi0gICAgICAg
IGZpbGVuYW1lID0gb3MucGF0aC5qb2luKG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksIHRlc3Rf
bmFtZSkKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVswXSAr
ICItc3RhY2sudHh0IgotICAgICAgICBwb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KG9zLnBhdGgu
c3BsaXQoZmlsZW5hbWUpWzBdKQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGZpbGVuYW1lLCAi
d2IiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53cml0ZSh0ZXN0X291dHB1
dC5lcnJvcikKKyAgICAgICAgZmlsZW5hbWUgPSBmcy5qb2luKG9wdGlvbnMucmVzdWx0c19kaXJl
Y3RvcnksIHRlc3RfbmFtZSkKKyAgICAgICAgZmlsZW5hbWUgPSBmcy5zcGxpdGV4dChmaWxlbmFt
ZSlbMF0gKyAiLXN0YWNrLnR4dCIKKyAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMu
c3BsaXQoZmlsZW5hbWUpWzBdKQorICAgICAgICBmcy53cml0ZV90ZXh0X2ZpbGUoZmlsZW5hbWUs
IHRlc3Rfb3V0cHV0LmVycm9yKQogICAgIGVsaWYgdGVzdF9vdXRwdXQuZXJyb3I6CiAgICAgICAg
IF9sb2cuZGVidWcoIiVzICVzIG91dHB1dCBzdGRlcnIgbGluZXM6XG4lcyIgJSAod29ya2VyX25h
bWUsIHRlc3RfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X291dHB1dC5lcnJvcikpCkBAIC0zODUsNyArMzg1LDcgQEAgY2xh
c3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAKICAgICAgICAgIyBBcHBlbmQg
dGVzdHMgd2UncmUgcnVubmluZyB0byB0aGUgZXhpc3RpbmcgdGVzdHNfcnVuLnR4dCBmaWxlLgog
ICAgICAgICAjIFRoaXMgaXMgY3JlYXRlZCBpbiBydW5fd2Via2l0X3Rlc3RzLnB5Ol9QcmVwYXJl
TGlzdHNBbmRQcmludE91dHB1dC4KLSAgICAgICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0gb3MucGF0
aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgIHRlc3RzX3J1
bl9maWxlbmFtZSA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9vcHRpb25zLnJl
c3VsdHNfZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRlc3RzX3J1bi50eHQiKQogICAgICAgICB0ZXN0c19ydW5fZmlsZSA9IGNvZGVjcy5vcGVu
KHRlc3RzX3J1bl9maWxlbmFtZSwgImEiLCAidXRmLTgiKQogCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkKaW5kZXggMmMw
YTdiNjNiZjY3MWFiYzFiZDgyNGE4MWRlZWQxMjZmNWZkOTgzMy4uZmYzNzYyYmVhNjJjMTRlMjVh
NTNlMGVhY2NkNzllMWJlZWZkMmVjZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQpAQCAtMzQsOCArMzQsNiBAQCBs
aXN0IG9mIHRlc3QgZmlsZXMgaXMgY29uc3RyYWluZWQgdG8gdGhvc2UgZm91bmQgdW5kZXIgdGhl
IHBhdGhzIHBhc3NlZCBpbiwKIGkuZS4gY2FsbGluZyBmaW5kKFsiTGF5b3V0VGVzdHMvZmFzdCJd
KSB3aWxsIG9ubHkgcmV0dXJuIGZpbGVzCiB1bmRlciB0aGF0IGRpcmVjdG9yeS4iIiIKIAotaW1w
b3J0IGdsb2IKLWltcG9ydCBvcwogaW1wb3J0IHRpbWUKIAogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtIGltcG9ydCBsb2d1dGlscwpAQCAtNDMsNyArNDEsNiBAQCBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3V0aWxzCiAKIF9sb2cgPSBsb2d1dGlscy5nZXRfbG9nZ2Vy
KF9fZmlsZV9fKQogCi0KICMgV2hlbiBjb2xsZWN0aW5nIHRlc3QgY2FzZXMsIHdlIGluY2x1ZGUg
YW55IGZpbGUgd2l0aCB0aGVzZSBleHRlbnNpb25zLgogX3N1cHBvcnRlZF9maWxlX2V4dGVuc2lv
bnMgPSBzZXQoWycuaHRtbCcsICcuc2h0bWwnLCAnLnhtbCcsICcueGh0bWwnLCAnLnhodG1sbXAn
LCAnLnBsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLnBocCcsICcuc3Zn
J10pCkBAIC01OSwxNSArNTYsMTcgQEAgZGVmIGZpbmQocG9ydCwgcGF0aHMpOgogICAgICAgICAg
IHRvIGxpbWl0IHRoZSBzZWFyY2ggdG8uIGdsb2IgcGF0dGVybnMgYXJlIG9rLgogICAgICIiIgog
ICAgIGdhdGhlcl9zdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICBmcyA9IHBvcnQuX2ZpbGVz
eXN0ZW0KICAgICBwYXRoc190b193YWxrID0gc2V0KCkKKwogICAgICMgaWYgcGF0aHMgaXMgZW1w
dHksIHByb3ZpZGUgYSBwcmUtZGVmaW5lZCBsaXN0LgogICAgIGlmIHBhdGhzOgogICAgICAgICBf
bG9nLmRlYnVnKCJHYXRoZXJpbmcgdGVzdHMgZnJvbTogJXMgcmVsYXRpdmUgdG8gJXMiICUgKHBh
dGhzLCBwb3J0LmxheW91dF90ZXN0c19kaXIoKSkpCiAgICAgICAgIGZvciBwYXRoIGluIHBhdGhz
OgogICAgICAgICAgICAgIyBJZiB0aGVyZSdzIGFuICogaW4gdGhlIG5hbWUsIGFzc3VtZSBpdCdz
IGEgZ2xvYiBwYXR0ZXJuLgotICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwb3J0Lmxh
eW91dF90ZXN0c19kaXIoKSwgcGF0aCkKKyAgICAgICAgICAgIHBhdGggPSBmcy5qb2luKHBvcnQu
bGF5b3V0X3Rlc3RzX2RpcigpLCBwYXRoKQogICAgICAgICAgICAgaWYgcGF0aC5maW5kKCcqJykg
PiAtMToKLSAgICAgICAgICAgICAgICBmaWxlbmFtZXMgPSBnbG9iLmdsb2IocGF0aCkKKyAgICAg
ICAgICAgICAgICBmaWxlbmFtZXMgPSBmcy5nbG9iKHBhdGgpCiAgICAgICAgICAgICAgICAgcGF0
aHNfdG9fd2Fsay51cGRhdGUoZmlsZW5hbWVzKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgICBwYXRoc190b193YWxrLmFkZChwYXRoKQpAQCAtNzgsMTMgKzc3LDE2IEBAIGRlZiBm
aW5kKHBvcnQsIHBhdGhzKToKICAgICAjIE5vdyB3YWxrIGFsbCB0aGUgcGF0aHMgcGFzc2VkIGlu
IG9uIHRoZSBjb21tYW5kIGxpbmUgYW5kIGdldCBmaWxlbmFtZXMKICAgICB0ZXN0X2ZpbGVzID0g
c2V0KCkKICAgICBmb3IgcGF0aCBpbiBwYXRoc190b193YWxrOgotICAgICAgICBpZiBvcy5wYXRo
LmlzZmlsZShwYXRoKSBhbmQgX2lzX3Rlc3RfZmlsZShwYXRoKToKLSAgICAgICAgICAgIHRlc3Rf
ZmlsZXMuYWRkKG9zLnBhdGgubm9ybXBhdGgocGF0aCkpCisgICAgICAgIGlmIGZzLmlzZmlsZShw
YXRoKSBhbmQgX2lzX3Rlc3RfZmlsZShmcywgcGF0aCk6CisgICAgICAgICAgICB0ZXN0X2ZpbGVz
LmFkZChmcy5ub3JtcGF0aChwYXRoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
aWYgbm90IGZzLmlzZGlyKHBhdGgpOgogICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICBm
b3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoKToKKyAgICAgICAgZm9yIHJvb3Qs
IGRpcnMsIGZpbGVzIGluIGZzLndhbGsocGF0aCk6CiAgICAgICAgICAgICAjIERvbid0IHdhbGsg
c2tpcHBlZCBkaXJlY3RvcmllcyBvciB0aGVpciBzdWItZGlyZWN0b3JpZXMuCi0gICAgICAgICAg
ICBpZiBvcy5wYXRoLmJhc2VuYW1lKHJvb3QpIGluIF9za2lwcGVkX2RpcmVjdG9yaWVzOgorICAg
ICAgICAgICAgaWYgZnMuYmFzZW5hbWUocm9vdCkgaW4gX3NraXBwZWRfZGlyZWN0b3JpZXM6CiAg
ICAgICAgICAgICAgICAgZGVsIGRpcnNbOl0KICAgICAgICAgICAgICAgICBjb250aW51ZQogICAg
ICAgICAgICAgIyBUaGlzIGNvcHkgYW5kIGZvci1pbiBpcyBzbGlnaHRseSBpbmVmZmljaWVudCwg
YnV0CkBAIC05NSw5ICs5Nyw5IEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICAgICAgICAg
ICAgICAgICAgZGlycy5yZW1vdmUoZGlyZWN0b3J5KQogCiAgICAgICAgICAgICBmb3IgZmlsZW5h
bWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgaWYgX2lzX3Rlc3RfZmlsZShmaWxlbmFtZSk6
Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHJvb3QsIGZpbGVu
YW1lKQotICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgoZmls
ZW5hbWUpCisgICAgICAgICAgICAgICAgaWYgX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZzLCBm
aWxlbmFtZSk6CisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZnMuam9pbihyb290LCBm
aWxlbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmcy5ub3JtcGF0aChmaWxl
bmFtZSkKICAgICAgICAgICAgICAgICAgICAgdGVzdF9maWxlcy5hZGQoZmlsZW5hbWUpCiAKICAg
ICBnYXRoZXJfdGltZSA9IHRpbWUudGltZSgpIC0gZ2F0aGVyX3N0YXJ0X3RpbWUKQEAgLTEwNiwx
MCArMTA4LDEwIEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICByZXR1cm4gdGVzdF9maWxl
cwogCiAKLWRlZiBfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZW5hbWUpOgorZGVmIF9oYXNf
c3VwcG9ydGVkX2V4dGVuc2lvbihmcywgZmlsZW5hbWUpOgogICAgICIiIlJldHVybiB0cnVlIGlm
IGZpbGVuYW1lIGlzIG9uZSBvZiB0aGUgZmlsZSBleHRlbnNpb25zIHdlIHdhbnQgdG8gcnVuIGEK
ICAgICB0ZXN0IG9uLiIiIgotICAgIGV4dGVuc2lvbiA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5h
bWUpWzFdCisgICAgZXh0ZW5zaW9uID0gZnMuc3BsaXRleHQoZmlsZW5hbWUpWzFdCiAgICAgcmV0
dXJuIGV4dGVuc2lvbiBpbiBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucwogCiAKQEAgLTEyMiw3
ICsxMjQsNyBAQCBkZWYgX2lzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZW5hbWUpOgogICAgIHJl
dHVybiBGYWxzZQogCiAKLWRlZiBfaXNfdGVzdF9maWxlKGZpbGVuYW1lKToKK2RlZiBfaXNfdGVz
dF9maWxlKGZzLCBmaWxlbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIGZpbGVuYW1l
IHBvaW50cyB0byBhIHRlc3QgZmlsZS4iIiIKLSAgICByZXR1cm4gKF9oYXNfc3VwcG9ydGVkX2V4
dGVuc2lvbihmaWxlbmFtZSkgYW5kCisgICAgcmV0dXJuIChfaGFzX3N1cHBvcnRlZF9leHRlbnNp
b24oZnMsIGZpbGVuYW1lKSBhbmQKICAgICAgICAgICAgIG5vdCBfaXNfcmVmZXJlbmNlX2h0bWxf
ZmlsZShmaWxlbmFtZSkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkKaW5kZXggODM1MjVj
ODIzZjM5NDJmMzc0MzdmODM0Mzc1ZDE2MDcwNDNjM2E0MS4uNTY5NzM5MTE5MzVhMzQwODM5ZWFm
ZjhiNDc5MzA1MDkwZGIzNDE4MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weQpAQCAt
NjQsMTEgKzY0LDEzIEBAIGNsYXNzIFRlc3RGaWxlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzLCBzZXQoW10pKQogCiAgICAgZGVmIHRlc3Rf
aXNfdGVzdF9maWxlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9maWxlcy5f
aXNfdGVzdF9maWxlKCdmb28uaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9m
aWxlcy5faXNfdGVzdF9maWxlKCdmb28uc2h0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby5wbmcnKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby1leHBlY3RlZC5odG1sJykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKCdmb28tZXhw
ZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKQorICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKKyAgICAg
ICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2Zp
bGVzLl9pc190ZXN0X2ZpbGUoZnMsICdmb28uaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnZm9vLnNodG1sJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnZm9vLnBuZycpKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJ2Zv
by1leHBlY3RlZC5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5f
aXNfdGVzdF9maWxlKGZzLCAnZm9vLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnKSkKIAogCiBpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKaW5k
ZXggNGI5NmIzYWJmZTFiNTk1MTIyODExNTBmZDZmZWVhMDYwMzU0NGE5My4uYWQ2NTAxNmVmMjU0
NDM1ZTU0ZGNhMTlhMjZjZWYxNjA5MTIwZmU5MCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9i
YXNlLnB5CkBAIC0zMiwxMyArMzIsOSBAQAogQWxzbyBkZWZpbmVzIHRoZSBUZXN0QXJndW1lbnRz
ICJzdHJ1Y3QiIHRvIHBhc3MgdGhlbSBhZGRpdGlvbmFsIGFyZ3VtZW50cy4KICIiIgogCi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9y
dCBjZ2kKIGltcG9ydCBlcnJubwogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcy5wYXRoCiAKIF9s
b2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLnRlc3RfdHlwZXMu
dGVzdF90eXBlX2Jhc2UiKQogCkBAIC04Niw5ICs4MiwxMCBAQCBjbGFzcyBUZXN0VHlwZUJhc2Uo
b2JqZWN0KToKICAgICBkZWYgX21ha2Vfb3V0cHV0X2RpcmVjdG9yeShzZWxmLCBmaWxlbmFtZSk6
CiAgICAgICAgICIiIkNyZWF0ZXMgdGhlIG91dHB1dCBkaXJlY3RvcnkgKGlmIG5lZWRlZCkgZm9y
IGEgZ2l2ZW4gdGVzdAogICAgICAgICBmaWxlbmFtZS4iIiIKLSAgICAgICAgb3V0cHV0X2ZpbGVu
YW1lID0gb3MucGF0aC5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0X2RpciwKKyAgICAgICAgZnMgPSBz
ZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIG91dHB1dF9maWxlbmFtZSA9IGZzLmpvaW4o
c2VsZi5fcm9vdF9vdXRwdXRfZGlyLAogICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90
ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKSkKLSAgICAgICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2Rp
cmVjdG9yeShvcy5wYXRoLnNwbGl0KG91dHB1dF9maWxlbmFtZSlbMF0pCisgICAgICAgIGZzLm1h
eWJlX21ha2VfZGlyZWN0b3J5KGZzLmRpcm5hbWUob3V0cHV0X2ZpbGVuYW1lKSkKIAogICAgIGRl
ZiBfc2F2ZV9iYXNlbGluZV9kYXRhKHNlbGYsIGZpbGVuYW1lLCBkYXRhLCBtb2RpZmllciwgZW5j
b2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5l
PVRydWUpOgpAQCAtMTA2LDIxICsxMDMsMjIgQEAgY2xhc3MgVGVzdFR5cGVCYXNlKG9iamVjdCk6
CiAgICAgICAgICAgICBiYXNlbGluZSwgb3IgdXBkYXRlIHRoZSBleGlzdGluZyBvbmUKICAgICAg
ICAgIiIiCiAKKyAgICAgICAgcG9ydCA9IHNlbGYuX3BvcnQKKyAgICAgICAgZnMgPSBzZWxmLl9w
b3J0Ll9maWxlc3lzdGVtCiAgICAgICAgIGlmIGdlbmVyYXRlX25ld19iYXNlbGluZToKLSAgICAg
ICAgICAgIHJlbGF0aXZlX2RpciA9IG9zLnBhdGguZGlybmFtZSgKLSAgICAgICAgICAgICAgICBz
ZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpKQotICAgICAgICAgICAg
YmFzZWxpbmVfcGF0aCA9IHNlbGYuX3BvcnQuYmFzZWxpbmVfcGF0aCgpCi0gICAgICAgICAgICBv
dXRwdXRfZGlyID0gb3MucGF0aC5qb2luKGJhc2VsaW5lX3BhdGgsIHJlbGF0aXZlX2RpcikKLSAg
ICAgICAgICAgIG91dHB1dF9maWxlID0gb3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLnNwbGl0ZXh0
KGZpbGVuYW1lKVswXSArCisgICAgICAgICAgICByZWxhdGl2ZV9kaXIgPSBmcy5kaXJuYW1lKHBv
cnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkpCisgICAgICAgICAgICBiYXNlbGlu
ZV9wYXRoID0gcG9ydC5iYXNlbGluZV9wYXRoKCkKKyAgICAgICAgICAgIG91dHB1dF9kaXIgPSBm
cy5qb2luKGJhc2VsaW5lX3BhdGgsIHJlbGF0aXZlX2RpcikKKyAgICAgICAgICAgIG91dHB1dF9m
aWxlID0gZnMuYmFzZW5hbWUoZnMuc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKICAgICAgICAgICAg
ICAgICBzZWxmLkZJTEVOQU1FX1NVRkZJWF9FWFBFQ1RFRCArIG1vZGlmaWVyKQotICAgICAgICAg
ICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeShvdXRwdXRfZGlyKQotICAgICAgICAg
ICAgb3V0cHV0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2Rpciwgb3V0cHV0X2ZpbGUpCisg
ICAgICAgICAgICBmcy5tYXliZV9tYWtlX2RpcmVjdG9yeShvdXRwdXRfZGlyKQorICAgICAgICAg
ICAgb3V0cHV0X3BhdGggPSBmcy5qb2luKG91dHB1dF9kaXIsIG91dHB1dF9maWxlKQogICAgICAg
ICAgICAgX2xvZy5kZWJ1Zygnd3JpdGluZyBuZXcgYmFzZWxpbmUgcmVzdWx0ICIlcyInICUgKG91
dHB1dF9wYXRoKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91dHB1dF9wYXRoID0gc2Vs
Zi5fcG9ydC5leHBlY3RlZF9maWxlbmFtZShmaWxlbmFtZSwgbW9kaWZpZXIpCisgICAgICAgICAg
ICBvdXRwdXRfcGF0aCA9IHBvcnQuZXhwZWN0ZWRfZmlsZW5hbWUoZmlsZW5hbWUsIG1vZGlmaWVy
KQogICAgICAgICAgICAgX2xvZy5kZWJ1ZygncmVzZXR0aW5nIGJhc2VsaW5lIHJlc3VsdCAiJXMi
JyAlIG91dHB1dF9wYXRoKQogCi0gICAgICAgIHNlbGYuX3BvcnQudXBkYXRlX2Jhc2VsaW5lKG91
dHB1dF9wYXRoLCBkYXRhLCBlbmNvZGluZykKKyAgICAgICAgcG9ydC51cGRhdGVfYmFzZWxpbmUo
b3V0cHV0X3BhdGgsIGRhdGEsIGVuY29kaW5nKQogCiAgICAgZGVmIG91dHB1dF9maWxlbmFtZShz
ZWxmLCBmaWxlbmFtZSwgbW9kaWZpZXIpOgogICAgICAgICAiIiJSZXR1cm5zIGEgZmlsZW5hbWUg
aW5zaWRlIHRoZSBvdXRwdXQgZGlyIHRoYXQgY29udGFpbnMgbW9kaWZpZXIuCkBAIC0xMzYsOSAr
MTM0LDEwIEBAIGNsYXNzIFRlc3RUeXBlQmFzZShvYmplY3QpOgogICAgICAgICBSZXR1cm46CiAg
ICAgICAgICAgVGhlIGFic29sdXRlIHdpbmRvd3MgcGF0aCB0byB0aGUgb3V0cHV0IGZpbGVuYW1l
CiAgICAgICAgICIiIgotICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5fcm9vdF9vdXRwdXRfZGlyLAorICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0K
KyAgICAgICAgb3V0cHV0X2ZpbGVuYW1lID0gZnMuam9pbihzZWxmLl9yb290X291dHB1dF9kaXIs
CiAgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUp
KQotICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChvdXRwdXRfZmlsZW5hbWUpWzBdICsg
bW9kaWZpZXIKKyAgICAgICAgcmV0dXJuIGZzLnNwbGl0ZXh0KG91dHB1dF9maWxlbmFtZSlbMF0g
KyBtb2RpZmllcgogCiAgICAgZGVmIGNvbXBhcmVfb3V0cHV0KHNlbGYsIHBvcnQsIGZpbGVuYW1l
LCB0ZXN0X2FyZ3MsIGFjdHVhbF90ZXN0X291dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkX3Rlc3Rfb3V0cHV0KToKQEAgLTE2NSwxMSArMTY0LDExIEBAIGNsYXNzIFRlc3RU
eXBlQmFzZShvYmplY3QpOgogICAgIGRlZiBfd3JpdGVfaW50b19maWxlX2F0X3BhdGgoc2VsZiwg
ZmlsZV9wYXRoLCBjb250ZW50cywgZW5jb2RpbmcpOgogICAgICAgICAiIiJUaGlzIG1ldGhvZCBh
c3N1bWVzIHRoYXQgYnl0ZV9hcnJheSBpcyBhbHJlYWR5IGVuY29kZWQKICAgICAgICAgaW50byB0
aGUgcmlnaHQgZm9ybWF0LiIiIgotICAgICAgICBvcGVuX21vZGUgPSAndycKKyAgICAgICAgZnMg
PSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCiAgICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6Ci0g
ICAgICAgICAgICBvcGVuX21vZGUgPSAndytiJwotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGZp
bGVfcGF0aCwgb3Blbl9tb2RlLCBlbmNvZGluZz1lbmNvZGluZykgYXMgZmlsZToKLSAgICAgICAg
ICAgIGZpbGUud3JpdGUoY29udGVudHMpCisgICAgICAgICAgICBmcy53cml0ZV9iaW5hcnlfZmls
ZShmaWxlX3BhdGgsIGNvbnRlbnRzKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGZzLndy
aXRlX3RleHRfZmlsZShmaWxlX3BhdGgsIGNvbnRlbnRzKQogCiAgICAgZGVmIHdyaXRlX291dHB1
dF9maWxlcyhzZWxmLCBmaWxlbmFtZSwgZmlsZV90eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0LCBleHBlY3RlZCwgZW5jb2RpbmcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79313</attachid>
            <date>2011-01-18 12:55:13 -0800</date>
            <delta_ts>2011-01-18 17:23:20 -0800</delta_ts>
            <desc>update w/ review feedback from tony</desc>
            <filename>bug-52604-20110118125511.patch</filename>
            <type>text/plain</type>
            <size>23271</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5Yzgx
YzQ3M2Y3MTRjOTU2ZGIwOTczNGRlY2UwN2MyNjlmOTA3ZjJkLi5iMDcwMGY0OGJlNTEzOWI5NDI3
MTlhMGQ2ZGY2YzhhYjI0MWI0ZDk1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDEtMTggIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hhbmdlIG1vcmUgbW9kdWxlcyBpbiB0aGUgbGF5b3V0LXRlc3Rz
IGNvZGUgdG8gdXNlIHRoZQorICAgICAgICBmaWxlc3lzdGVtIHdyYXBwZXIgZm9yIGNsZWFuZXIg
dW5pdCB0ZXN0aW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoZSBmb2xsb3dp
bmcgd3JhcHBlcnMgdG8gdGhlIGZpbGVzeXN0ZW0KKyAgICAgICAgYWJzdHJhY3Rpb24sIGJhc2Vu
YW1lKCksIGRpcm5hbWUoKSwgZ2xvYigpLCBub3JtcGF0aCgpLCBzcGxpdCgpLAorICAgICAgICBz
cGxpdGV4dCgpLCB3YWxrKCkuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2MDQKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5OgorCiAyMDExLTAxLTE3ICBUb255IEdl
bnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxl
eGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2ZpbGVzeXN0ZW0ucHkKaW5kZXggNTI3YjZiZGVhNWFkNjhkYTI1MzBmMzA2OWZlN2Y4
N2JmMmViNmViMi4uMWUxZDc2YTc5OGFkMTYwMTM1MTAzNDgxZmZjZGE3OGQ2Yzc5YjY1NCAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0u
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0u
cHkKQEAgLTMzLDYgKzMzLDcgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVu
dAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCiBpbXBvcnQgZXhjZXB0aW9ucworaW1wb3J0
IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCkBAIC00NCwx
MCArNDUsMzMgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIFVubGVzcyBvdGhlcndp
c2Ugbm90ZWQsIGFsbCBwYXRocyBhcmUgYWxsb3dlZCB0byBiZSBlaXRoZXIgYWJzb2x1dGUKICAg
ICBvciByZWxhdGl2ZS4iIiIKIAorICAgIGRlZiBiYXNlbmFtZShzZWxmLCBwYXRoKToKKyAgICAg
ICAgIiIiV3JhcHMgb3MucGF0aC5iYXNlbmFtZSgpLiIiIgorICAgICAgICByZXR1cm4gb3MucGF0
aC5iYXNlbmFtZShwYXRoKQorCisgICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNvdXJjZSwgZGVzdGlu
YXRpb24pOgorICAgICAgICAiIiJDb3BpZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGF0IHRo
ZSBnaXZlbiBwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBwYXRoLiIiIgorICAgICAg
ICBzaHV0aWwuY29weWZpbGUoc291cmNlLCBkZXN0aW5hdGlvbikKKworICAgIGRlZiBkaXJuYW1l
KHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJXcmFwcyBvcy5wYXRoLmRpcm5hbWUoKS4iIiIKKyAg
ICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQorCiAgICAgZGVmIGV4aXN0cyhzZWxm
LCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIHBhdGggZXhpc3RzIGluIHRo
ZSBmaWxlc3lzdGVtLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0aC5leGlzdHMocGF0aCkKIAor
ICAgIGRlZiBmaWxlc191bmRlcihzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBs
aXN0IG9mIGFsbCBmaWxlcyB1bmRlciB0aGUgZ2l2ZW4gcGF0aC4iIiIKKyAgICAgICAgcmV0dXJu
IFtzZWxmLmpvaW4ocGF0aF90b19maWxlLCBmaWxlbmFtZSkKKyAgICAgICAgICAgIGZvciAocGF0
aF90b19maWxlLCBfLCBmaWxlbmFtZXMpIGluIG9zLndhbGsocGF0aCkKKyAgICAgICAgICAgIGZv
ciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNdCisKKyAgICBkZWYgZ2xvYihzZWxmLCBwYXRoKToKKyAg
ICAgICAgIiIiV3JhcHMgZ2xvYi5nbG9iKCkuIiIiCisgICAgICAgIHJldHVybiBnbG9iLmdsb2Io
cGF0aCkKKwogICAgIGRlZiBpc2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB3
aGV0aGVyIHRoZSBwYXRoIHJlZmVycyB0byBhIGZpbGUuIiIiCiAgICAgICAgIHJldHVybiBvcy5w
YXRoLmlzZmlsZShwYXRoKQpAQCAtOTgsNiArMTIyLDEwIEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2Jq
ZWN0KToKICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUVYSVNUOgogICAgICAgICAg
ICAgICAgIHJhaXNlCiAKKyAgICBkZWYgbm9ybXBhdGgoc2VsZiwgcGF0aCk6CisgICAgICAgICIi
IldyYXBzIG9zLnBhdGgubm9ybXBhdGgoKS4iIiIKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9y
bXBhdGgocGF0aCkKKwogICAgIGNsYXNzIF9XaW5kb3dzRXJyb3IoZXhjZXB0aW9ucy5PU0Vycm9y
KToKICAgICAgICAgIiIiRmFrZSBleGNlcHRpb24gZm9yIExpbnV4IGFuZCBNYWMuIiIiCiAgICAg
ICAgIHBhc3MKQEAgLTEzOSw2ICsxNjcsMTggQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgog
ICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICdyJywgJ3V0ZjgnKSBhcyBmOgogICAgICAg
ICAgICAgcmV0dXJuIGYucmVhZCgpCiAKKyAgICBkZWYgc3BsaXQoc2VsZiwgcGF0aCk6CisgICAg
ICAgICIiIlJldHVybiAoZGlybmFtZSwgYmFzZW5hbWUgKyBleHQpLiIiIgorICAgICAgICByZXR1
cm4gb3MucGF0aC5zcGxpdChwYXRoKQorCisgICAgZGVmIHNwbGl0ZXh0KHNlbGYsIHBhdGgpOgor
ICAgICAgICAiIiJSZXR1cm4gKGRpcm5hbWUgKyBvcy5zZXAgKyBiYXNlbmFtZSwgJy4nICsgZXh0
KSIiIgorICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChwYXRoKQorCisgICAgZGVmIHdh
bGsoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIldyYXBwZXIgYXJvdW5kIG9zLndhbGsoKS4iIiIK
KyAgICAgICAgcmV0dXJuIG9zLndhbGsocGF0aCkKKwogICAgIGRlZiB3cml0ZV9iaW5hcnlfZmls
ZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CiAgICAgICAgICIiIldyaXRlIHRoZSBjb250ZW50cyB0
byB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIiIiCiAgICAgICAgIHdpdGggZmlsZShw
YXRoLCAnd2InKSBhcyBmOgpAQCAtMTUwLDE0ICsxOTAsMyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9i
amVjdCk6CiAgICAgICAgIFRoZSBmaWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBhcyBVVEYtOCB3aXRo
IG5vIEJPTS4iIiIKICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAndycsICd1dGY4Jykg
YXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoY29udGVudHMpCi0KLSAgICBkZWYgY29weWZpbGUo
c2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6Ci0gICAgICAgICIiIkNvcGllcyB0aGUgY29udGVu
dHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uCi0gICAg
ICAgIHBhdGguIiIiCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShzb3VyY2UsIGRlc3RpbmF0aW9u
KQotCi0gICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4g
dGhlIGxpc3Qgb2YgYWxsIGZpbGVzIHVuZGVyIHRoZSBnaXZlbiBwYXRoLiIiIgotICAgICAgICBy
ZXR1cm4gW3NlbGYuam9pbihwYXRoX3RvX2ZpbGUsIGZpbGVuYW1lKQotICAgICAgICAgICAgZm9y
IChwYXRoX3RvX2ZpbGUsIF8sIGZpbGVuYW1lcykgaW4gb3Mud2FsayhwYXRoKQotICAgICAgICAg
ICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lc10KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CmluZGV4IDgwOWM0YzZm
YmFhYmFjMDU2NTY1YTdkNjNlNmNiYzkzNTNiOWIxZmMuLjgwMWQyNjU5OWU2YjRmNTdiZTRjY2Mx
MzI4NTc4Yjc4MjY1YzVhODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQpAQCAtMjUsNiArMjUsNTMgQEAKICMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgVGhpcyBmaWxl
IGluY2x1ZGVzIChpbiB0aGUgd2FsaygpIG1ldGhvZCkgY29kZSBkZXJpdmVkIGZyb20gdGhlIFB5
dGhvbiAyLjYKKyMgc291cmNlIGNvZGUgZGlzdHJpYnV0aW9uLCB3aGljaCBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjIEJFT1BFTi5DT00gTElDRU5TRSBB
R1JFRU1FTlQgRk9SIFBZVEhPTiAyLjAKKyMKKyMgQkVPUEVOIFBZVEhPTiBPUEVOIFNPVVJDRSBM
SUNFTlNFIEFHUkVFTUVOVCBWRVJTSU9OIDEKKyMKKyMgVGhpcyBMSUNFTlNFIEFHUkVFTUVOVCBp
cyBiZXR3ZWVuIEJlT3Blbi5jb20gKCJCZU9wZW4iKSwgaGF2aW5nIGFuIG9mZmljZSBhdAorIyAx
NjAgU2FyYXRvZ2EgQXZlbnVlLCBTYW50YSBDbGFyYSwgQ0EgOTUwNTEsIGFuZCB0aGUgSW5kaXZp
ZHVhbCBvcgorIyBPcmdhbml6YXRpb24gKCJMaWNlbnNlZSIpIGFjY2Vzc2luZyBhbmQgb3RoZXJ3
aXNlIHVzaW5nIHRoaXMgc29mdHdhcmUgaW4KKyMgc291cmNlIG9yIGJpbmFyeSBmb3JtIGFuZCBp
dHMgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uICgidGhlIFNvZnR3YXJlIikuCisjCisjIFN1Ympl
Y3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgQmVPcGVuIFB5dGhvbiBMaWNl
bnNlIEFncmVlbWVudCwKKyMgQmVPcGVuIGhlcmVieSBncmFudHMgTGljZW5zZWUgYSBub24tZXhj
bHVzaXZlLCByb3lhbHR5LWZyZWUsIHdvcmxkLXdpZGUKKyMgbGljZW5zZSB0byByZXByb2R1Y2Us
IGFuYWx5emUsIHRlc3QsIHBlcmZvcm0gYW5kL29yIGRpc3BsYXkgcHVibGljbHksIHByZXBhcmUK
KyMgZGVyaXZhdGl2ZSB3b3JrcywgZGlzdHJpYnV0ZSwgYW5kIG90aGVyd2lzZSB1c2UgdGhlIFNv
ZnR3YXJlIGFsb25lIG9yIGluIGFueQorIyBkZXJpdmF0aXZlIHZlcnNpb24sIHByb3ZpZGVkLCBo
b3dldmVyLCB0aGF0IHRoZSBCZU9wZW4gUHl0aG9uIExpY2Vuc2UgaXMKKyMgcmV0YWluZWQgaW4g
dGhlIFNvZnR3YXJlLCBhbG9uZSBvciBpbiBhbnkgZGVyaXZhdGl2ZSB2ZXJzaW9uIHByZXBhcmVk
IGJ5CisjIExpY2Vuc2VlLgorIworIyBCZU9wZW4gaXMgbWFraW5nIHRoZSBTb2Z0d2FyZSBhdmFp
bGFibGUgdG8gTGljZW5zZWUgb24gYW4gIkFTIElTIiBiYXNpcy4KKyMgQkVPUEVOIE1BS0VTIE5P
IFJFUFJFU0VOVEFUSU9OUyBPUiBXQVJSQU5USUVTLCBFWFBSRVNTIE9SIElNUExJRUQuIEJZIFdB
WSBPRgorIyBFWEFNUExFLCBCVVQgTk9UIExJTUlUQVRJT04sIEJFT1BFTiBNQUtFUyBOTyBBTkQg
RElTQ0xBSU1TIEFOWSBSRVBSRVNFTlRBVElPTgorIyBPUiBXQVJSQU5UWSBPRiBNRVJDSEFOVEFC
SUxJVFkgT1IgRklUTkVTUyBGT1IgQU5ZIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBUSEFUCisjIFRI
RSBVU0UgT0YgVEhFIFNPRlRXQVJFIFdJTEwgTk9UIElORlJJTkdFIEFOWSBUSElSRCBQQVJUWSBS
SUdIVFMuCisjCisjIEJFT1BFTiBTSEFMTCBOT1QgQkUgTElBQkxFIFRPIExJQ0VOU0VFIE9SIEFO
WSBPVEhFUiBVU0VSUyBPRiBUSEUgU09GVFdBUkUgRk9SCisjIEFOWSBJTkNJREVOVEFMLCBTUEVD
SUFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgTE9TUyBBUyBBIFJFU1VMVCBPRgorIyBV
U0lORywgTU9ESUZZSU5HIE9SIERJU1RSSUJVVElORyBUSEUgU09GVFdBUkUsIE9SIEFOWSBERVJJ
VkFUSVZFIFRIRVJFT0YsCisjIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgVEhF
UkVPRi4KKyMKKyMgVGhpcyBMaWNlbnNlIEFncmVlbWVudCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVy
bWluYXRlIHVwb24gYSBtYXRlcmlhbCBicmVhY2ggb2YKKyMgaXRzIHRlcm1zIGFuZCBjb25kaXRp
b25zLgorIworIyBUaGlzIExpY2Vuc2UgQWdyZWVtZW50IHNoYWxsIGJlIGdvdmVybmVkIGJ5IGFu
ZCBpbnRlcnByZXRlZCBpbiBhbGwgcmVzcGVjdHMKKyMgYnkgdGhlIGxhdyBvZiB0aGUgU3RhdGUg
b2YgQ2FsaWZvcm5pYSwgZXhjbHVkaW5nIGNvbmZsaWN0IG9mIGxhdyBwcm92aXNpb25zLgorIyBO
b3RoaW5nIGluIHRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgc2hhbGwgYmUgZGVlbWVkIHRvIGNyZWF0
ZSBhbnkgcmVsYXRpb25zaGlwCisjIG9mIGFnZW5jeSwgcGFydG5lcnNoaXAsIG9yIGpvaW50IHZl
bnR1cmUgYmV0d2VlbiBCZU9wZW4gYW5kIExpY2Vuc2VlLiBUaGlzCisjIExpY2Vuc2UgQWdyZWVt
ZW50IGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIEJlT3BlbiB0cmFkZW1hcmtzIG9y
IHRyYWRlCisjIG5hbWVzIGluIGEgdHJhZGVtYXJrIHNlbnNlIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBvciBzZXJ2aWNlcyBvZgorIyBMaWNlbnNlZSwgb3IgYW55IHRoaXJkIHBhcnR5
LiBBcyBhbiBleGNlcHRpb24sIHRoZSAiQmVPcGVuIFB5dGhvbiIgbG9nb3MKKyMgYXZhaWxhYmxl
IGF0IGh0dHA6Ly93d3cucHl0aG9ubGFicy5jb20vbG9nb3MuaHRtbCBtYXkgYmUgdXNlZCBhY2Nv
cmRpbmcgdG8KKyMgdGhlIHBlcm1pc3Npb25zIGdyYW50ZWQgb24gdGhhdCB3ZWIgcGFnZS4KKyMK
KyMgQnkgY29weWluZywgaW5zdGFsbGluZyBvciBvdGhlcndpc2UgdXNpbmcgdGhlIHNvZnR3YXJl
LCBMaWNlbnNlZSBhZ3JlZXMgdG8gYmUKKyMgYm91bmQgYnkgdGhlIHRlcm1zIGFuZCBjb25kaXRp
b25zIG9mIHRoaXMgTGljZW5zZSBBZ3JlZW1lbnQuCiAKIGltcG9ydCBlcnJubwogaW1wb3J0IG9z
CkBAIC00NCw5ICs5MSwzOCBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAg
ICAiIiIKICAgICAgICAgc2VsZi5maWxlcyA9IGZpbGVzIG9yIHt9CiAKKyAgICBkZWYgYmFzZW5h
bWUoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBwYXRoW3BhdGgucmZpbmQoJy8nKSArIDE6
XQorCisgICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAg
ICBpZiBub3Qgc2VsZi5leGlzdHMoc291cmNlKToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3Io
ZXJybm8uRU5PRU5ULCBzb3VyY2UsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCkpCisgICAgICAg
IGlmIHNlbGYuaXNkaXIoc291cmNlKToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8u
RUlTRElSLCBzb3VyY2UsIG9zLnN0cmVycm9yKGVycm5vLklTRElSKSkKKyAgICAgICAgaWYgc2Vs
Zi5pc2RpcihkZXN0aW5hdGlvbik6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVJ
U0RJUiwgZGVzdGluYXRpb24sIG9zLnN0cmVycm9yKGVycm5vLklTRElSKSkKKworICAgICAgICBz
ZWxmLmZpbGVzW2Rlc3RpbmF0aW9uXSA9IHNlbGYuZmlsZXNbc291cmNlXQorCisgICAgZGVmIGRp
cm5hbWUoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBzZWxmLnNwbGl0KHBhdGgpWzBdCisK
ICAgICBkZWYgZXhpc3RzKHNlbGYsIHBhdGgpOgogICAgICAgICByZXR1cm4gc2VsZi5pc2ZpbGUo
cGF0aCkgb3Igc2VsZi5pc2RpcihwYXRoKQogCisgICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBh
dGgpOgorICAgICAgICBpZiBub3QgcGF0aC5lbmRzd2l0aCgnLycpOgorICAgICAgICAgICAgcGF0
aCArPSAnLycKKyAgICAgICAgcmV0dXJuIFtmaWxlIGZvciBmaWxlIGluIHNlbGYuZmlsZXMgaWYg
ZmlsZS5zdGFydHN3aXRoKHBhdGgpXQorCisgICAgZGVmIGdsb2Ioc2VsZiwgcGF0aCk6CisgICAg
ICAgICMgRklYTUU6IFRoaXMgb25seSBoYW5kbGVzIGEgd2lsZGNhcmQgJyonIGF0IHRoZSBlbmQg
b2YgdGhlIHBhdGguCisgICAgICAgICMgTWF5YmUgaXQgc2hvdWxkIGhhbmRsZSBtb3JlPworICAg
ICAgICBpZiBwYXRoWy0xXSA9PSAnKic6CisgICAgICAgICAgICByZXR1cm4gW2YgZm9yIGYgaW4g
c2VsZi5maWxlcyBpZiBmLnN0YXJ0c3dpdGgocGF0aFs6LTFdKV0KKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHJldHVybiBbZiBmb3IgZiBpbiBzZWxmLmZpbGVzIGlmIGYgPT0gcGF0aF0KKwog
ICAgIGRlZiBpc2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYu
ZmlsZXMgYW5kIHNlbGYuZmlsZXNbcGF0aF0gaXMgbm90IE5vbmUKIApAQCAtODQsNiArMTYwLDkg
QEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgIyBGSVhNRTogSW1wbGVt
ZW50IHN1Y2ggdGhhdCBzdWJzZXF1ZW50IGNhbGxzIHRvIGlzZGlyKCkgd29yaz8KICAgICAgICAg
cGFzcwogCisgICAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0
aAorCiAgICAgZGVmIHJlYWRfdGV4dF9maWxlKHNlbGYsIHBhdGgpOgogICAgICAgICByZXR1cm4g
c2VsZi5yZWFkX2JpbmFyeV9maWxlKHBhdGgpCiAKQEAgLTkzLDI5ICsxNzIsNDEgQEAgY2xhc3Mg
TW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVy
cm5vLkVOT0VOVCwgcGF0aCwgb3Muc3RyZXJyb3IoZXJybm8uRU5PRU5UKSkKICAgICAgICAgICAg
IHJldHVybiBzZWxmLmZpbGVzW3BhdGhdCiAKLSAgICBkZWYgd3JpdGVfdGV4dF9maWxlKHNlbGYs
IHBhdGgsIGNvbnRlbnRzKToKLSAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVfYmluYXJ5X2ZpbGUo
cGF0aCwgY29udGVudHMpCi0KLSAgICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwg
Y29udGVudHMpOgotICAgICAgICBzZWxmLmZpbGVzW3BhdGhdID0gY29udGVudHMKLQotICAgIGRl
ZiBjb3B5ZmlsZShzZWxmLCBzb3VyY2UsIGRlc3RpbmF0aW9uKToKLSAgICAgICAgaWYgbm90IHNl
bGYuZXhpc3RzKHNvdXJjZSk6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVOT0VO
VCwgc291cmNlLCBvcy5zdHJlcnJvcihlcnJuby5FTk9FTlQpKQotICAgICAgICBpZiBzZWxmLmlz
ZGlyKHNvdXJjZSk6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVJU0RJUiwgc291
cmNlLCBvcy5zdHJlcnJvcihlcnJuby5JU0RJUikpCi0gICAgICAgIGlmIHNlbGYuaXNkaXIoZGVz
dGluYXRpb24pOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FSVNESVIsIGRlc3Rp
bmF0aW9uLCBvcy5zdHJlcnJvcihlcnJuby5JU0RJUikpCi0KLSAgICAgICAgc2VsZi5maWxlc1tk
ZXN0aW5hdGlvbl0gPSBzZWxmLmZpbGVzW3NvdXJjZV0KLQotICAgIGRlZiBmaWxlc191bmRlcihz
ZWxmLCBwYXRoKToKLSAgICAgICAgaWYgbm90IHBhdGguZW5kc3dpdGgoJy8nKToKLSAgICAgICAg
ICAgIHBhdGggKz0gJy8nCi0gICAgICAgIHJldHVybiBbZmlsZSBmb3IgZmlsZSBpbiBzZWxmLmZp
bGVzIGlmIGZpbGUuc3RhcnRzd2l0aChwYXRoKV0KLQogICAgIGRlZiByZW1vdmUoc2VsZiwgcGF0
aCk6CiAgICAgICAgIGRlbCBzZWxmLmZpbGVzW3BhdGhdCiAKICAgICBkZWYgcmVtb3ZlX3RyZWUo
c2VsZiwgcGF0aCwgaWdub3JlX2Vycm9ycz1GYWxzZSk6CiAgICAgICAgIHNlbGYuZmlsZXMgPSBb
ZmlsZSBmb3IgZmlsZSBpbiBzZWxmLmZpbGVzIGlmIG5vdCBmaWxlLnN0YXJ0c3dpdGgocGF0aCld
CisKKyAgICBkZWYgc3BsaXQoc2VsZiwgcGF0aCk6CisgICAgICAgIGlkeCA9IHBhdGgucmZpbmQo
Jy8nKQorICAgICAgICByZXR1cm4gKHBhdGhbMDppZHhdLCBwYXRoW2lkeCArIDE6XSkKKworICAg
IGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKKyAgICAgICAgaWR4ID0gcGF0aC5yZmluZCgnLicp
CisgICAgICAgIGlmIGlkeCA9PSAtMToKKyAgICAgICAgICAgIHJldHVybiAocGF0aCwgIiIpCisg
ICAgICAgIHJldHVybiAocGF0aFswOmlkeF0sIHBhdGhbaWR4Ol0pCisKKyAgICBkZWYgd2Fsayhz
ZWxmLCB0b3ApOgorICAgICAgICAjIFJpcHBlZCBmcm9tIFB5dGhvbiAyLjYncyBvcy53YWxrLgor
ICAgICAgICAjIGVxdWl2YWxlbnQgdG8gd2Fsayh0b3AsIHRvcGRvd249VHJ1ZSwgZm9sbG93bGlu
a3M9RmFsc2UpLgorICAgICAgICBuYW1lcyA9IHNlbGYubGlzdGRpcih0b3ApCisgICAgICAgIGRp
cnMsIG5vbmRpcnMgPSBbXSwgW10KKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAg
ICAgICBpZiBzZWxmLmlzZGlyKHNlbGYuam9pbih0b3AsIG5hbWUpKToKKyAgICAgICAgICAgICAg
ICBkaXJzLmFwcGVuZChuYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBu
b25kaXJzLmFwcGVuZChuYW1lKQorCisgICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwor
ICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgorICAgICAgICAgICAgcGF0aCA9IHNlbGYuam9pbih0
b3AsIG5hbWUpCisgICAgICAgICAgICBmb3IgeCBpbiBzZWxmLndhbGsocGF0aCk6CisgICAgICAg
ICAgICAgICAgeWllbGQgeAorCisgICAgZGVmIHdyaXRlX3RleHRfZmlsZShzZWxmLCBwYXRoLCBj
b250ZW50cyk6CisgICAgICAgIHJldHVybiBzZWxmLndyaXRlX2JpbmFyeV9maWxlKHBhdGgsIGNv
bnRlbnRzKQorCisgICAgZGVmIHdyaXRlX2JpbmFyeV9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRz
KToKKyAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9IGNvbnRlbnRzCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRl
cl90cmVlX3RocmVhZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CmluZGV4IDJiYjJkMDI3MmRi
OTliYjcwZWFmZDg5YzNmZDMxZjZlZmUyOWZmZmQuLmYwYTUyMzI3M2NkYWE2NDhiODIwM2ZiMTU4
MzI5OTU5MmY1NDExMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVu
ZGVyX3RyZWVfdGhyZWFkLnB5CkBAIC04Niw2ICs4Niw3IEBAIGRlZiBfcHJvY2Vzc19vdXRwdXQo
cG9ydCwgb3B0aW9ucywgdGVzdF9pbnB1dCwgdGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgIFJl
dHVybnM6IGEgVGVzdFJlc3VsdCBvYmplY3QKICAgICAiIiIKICAgICBmYWlsdXJlcyA9IFtdCisg
ICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCiAKICAgICBpZiB0ZXN0X291dHB1dC5jcmFzaDoKICAg
ICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKCkpCkBAIC05
NiwxMSArOTcsMTAgQEAgZGVmIF9wcm9jZXNzX291dHB1dChwb3J0LCBvcHRpb25zLCB0ZXN0X2lu
cHV0LCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3MsCiAgICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6CiAg
ICAgICAgIF9sb2cuZGVidWcoIiVzIFN0YWNrdHJhY2UgZm9yICVzOlxuJXMiICUgKHdvcmtlcl9u
YW1lLCB0ZXN0X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3Rfb3V0cHV0LmVycm9yKSkKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRo
LmpvaW4ob3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgdGVzdF9uYW1lKQotICAgICAgICBmaWxl
bmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsgIi1zdGFjay50eHQiCi0gICAg
ICAgIHBvcnQubWF5YmVfbWFrZV9kaXJlY3Rvcnkob3MucGF0aC5zcGxpdChmaWxlbmFtZSlbMF0p
Ci0gICAgICAgIHdpdGggY29kZWNzLm9wZW4oZmlsZW5hbWUsICJ3YiIsICJ1dGYtOCIpIGFzIGZp
bGU6Ci0gICAgICAgICAgICBmaWxlLndyaXRlKHRlc3Rfb3V0cHV0LmVycm9yKQorICAgICAgICBm
aWxlbmFtZSA9IGZzLmpvaW4ob3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgdGVzdF9uYW1lKQor
ICAgICAgICBmaWxlbmFtZSA9IGZzLnNwbGl0ZXh0KGZpbGVuYW1lKVswXSArICItc3RhY2sudHh0
IgorICAgICAgICBmcy5tYXliZV9tYWtlX2RpcmVjdG9yeShmcy5zcGxpdChmaWxlbmFtZSlbMF0p
CisgICAgICAgIGZzLndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwgdGVzdF9vdXRwdXQuZXJyb3Ip
CiAgICAgZWxpZiB0ZXN0X291dHB1dC5lcnJvcjoKICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMg
b3V0cHV0IHN0ZGVyciBsaW5lczpcbiVzIiAlICh3b3JrZXJfbmFtZSwgdGVzdF9uYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
b3V0cHV0LmVycm9yKSkKQEAgLTM4NSw3ICszODUsNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQo
V2F0Y2hhYmxlVGhyZWFkKToKIAogICAgICAgICAjIEFwcGVuZCB0ZXN0cyB3ZSdyZSBydW5uaW5n
IHRvIHRoZSBleGlzdGluZyB0ZXN0c19ydW4udHh0IGZpbGUuCiAgICAgICAgICMgVGhpcyBpcyBj
cmVhdGVkIGluIHJ1bl93ZWJraXRfdGVzdHMucHk6X1ByZXBhcmVMaXN0c0FuZFByaW50T3V0cHV0
LgotICAgICAgICB0ZXN0c19ydW5fZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9u
cy5yZXN1bHRzX2RpcmVjdG9yeSwKKyAgICAgICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0gc2VsZi5f
cG9ydC5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdHNfcnVuLnR4dCIp
CiAgICAgICAgIHRlc3RzX3J1bl9maWxlID0gY29kZWNzLm9wZW4odGVzdHNfcnVuX2ZpbGVuYW1l
LCAiYSIsICJ1dGYtOCIpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQppbmRleCAyYzBhN2I2M2JmNjcxYWJjMWJkODI0
YTgxZGVlZDEyNmY1ZmQ5ODMzLi5mZjM3NjJiZWE2MmMxNGUyNWE1M2UwZWFjY2Q3OWUxYmVlZmQy
ZWNmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3Rlc3RfZmlsZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC90ZXN0X2ZpbGVzLnB5CkBAIC0zNCw4ICszNCw2IEBAIGxpc3Qgb2YgdGVzdCBmaWxlcyBp
cyBjb25zdHJhaW5lZCB0byB0aG9zZSBmb3VuZCB1bmRlciB0aGUgcGF0aHMgcGFzc2VkIGluLAog
aS5lLiBjYWxsaW5nIGZpbmQoWyJMYXlvdXRUZXN0cy9mYXN0Il0pIHdpbGwgb25seSByZXR1cm4g
ZmlsZXMKIHVuZGVyIHRoYXQgZGlyZWN0b3J5LiIiIgogCi1pbXBvcnQgZ2xvYgotaW1wb3J0IG9z
CiBpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3V0
aWxzCkBAIC00Myw3ICs0MSw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQg
bG9ndXRpbHMKIAogX2xvZyA9IGxvZ3V0aWxzLmdldF9sb2dnZXIoX19maWxlX18pCiAKLQogIyBX
aGVuIGNvbGxlY3RpbmcgdGVzdCBjYXNlcywgd2UgaW5jbHVkZSBhbnkgZmlsZSB3aXRoIHRoZXNl
IGV4dGVuc2lvbnMuCiBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucyA9IHNldChbJy5odG1sJywg
Jy5zaHRtbCcsICcueG1sJywgJy54aHRtbCcsICcueGh0bWxtcCcsICcucGwnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcucGhwJywgJy5zdmcnXSkKQEAgLTU5LDE1ICs1Niwx
NyBAQCBkZWYgZmluZChwb3J0LCBwYXRocyk6CiAgICAgICAgICAgdG8gbGltaXQgdGhlIHNlYXJj
aCB0by4gZ2xvYiBwYXR0ZXJucyBhcmUgb2suCiAgICAgIiIiCiAgICAgZ2F0aGVyX3N0YXJ0X3Rp
bWUgPSB0aW1lLnRpbWUoKQorICAgIGZzID0gcG9ydC5fZmlsZXN5c3RlbQogICAgIHBhdGhzX3Rv
X3dhbGsgPSBzZXQoKQorCiAgICAgIyBpZiBwYXRocyBpcyBlbXB0eSwgcHJvdmlkZSBhIHByZS1k
ZWZpbmVkIGxpc3QuCiAgICAgaWYgcGF0aHM6CiAgICAgICAgIF9sb2cuZGVidWcoIkdhdGhlcmlu
ZyB0ZXN0cyBmcm9tOiAlcyByZWxhdGl2ZSB0byAlcyIgJSAocGF0aHMsIHBvcnQubGF5b3V0X3Rl
c3RzX2RpcigpKSkKICAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CiAgICAgICAgICAgICAjIElm
IHRoZXJlJ3MgYW4gKiBpbiB0aGUgbmFtZSwgYXNzdW1lIGl0J3MgYSBnbG9iIHBhdHRlcm4uCi0g
ICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCBw
YXRoKQorICAgICAgICAgICAgcGF0aCA9IGZzLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCks
IHBhdGgpCiAgICAgICAgICAgICBpZiBwYXRoLmZpbmQoJyonKSA+IC0xOgotICAgICAgICAgICAg
ICAgIGZpbGVuYW1lcyA9IGdsb2IuZ2xvYihwYXRoKQorICAgICAgICAgICAgICAgIGZpbGVuYW1l
cyA9IGZzLmdsb2IocGF0aCkKICAgICAgICAgICAgICAgICBwYXRoc190b193YWxrLnVwZGF0ZShm
aWxlbmFtZXMpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHBhdGhzX3RvX3dh
bGsuYWRkKHBhdGgpCkBAIC03OCwxMyArNzcsMTYgQEAgZGVmIGZpbmQocG9ydCwgcGF0aHMpOgog
ICAgICMgTm93IHdhbGsgYWxsIHRoZSBwYXRocyBwYXNzZWQgaW4gb24gdGhlIGNvbW1hbmQgbGlu
ZSBhbmQgZ2V0IGZpbGVuYW1lcwogICAgIHRlc3RfZmlsZXMgPSBzZXQoKQogICAgIGZvciBwYXRo
IGluIHBhdGhzX3RvX3dhbGs6Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpIGFuZCBf
aXNfdGVzdF9maWxlKHBhdGgpOgotICAgICAgICAgICAgdGVzdF9maWxlcy5hZGQob3MucGF0aC5u
b3JtcGF0aChwYXRoKSkKKyAgICAgICAgaWYgZnMuaXNmaWxlKHBhdGgpIGFuZCBfaXNfdGVzdF9m
aWxlKGZzLCBwYXRoKToKKyAgICAgICAgICAgIHRlc3RfZmlsZXMuYWRkKGZzLm5vcm1wYXRoKHBh
dGgpKQorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiBub3QgZnMuaXNkaXIocGF0
aCk6CiAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxl
cyBpbiBvcy53YWxrKHBhdGgpOgorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gZnMu
d2FsayhwYXRoKToKICAgICAgICAgICAgICMgRG9uJ3Qgd2FsayBza2lwcGVkIGRpcmVjdG9yaWVz
IG9yIHRoZWlyIHN1Yi1kaXJlY3Rvcmllcy4KLSAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5h
bWUocm9vdCkgaW4gX3NraXBwZWRfZGlyZWN0b3JpZXM6CisgICAgICAgICAgICBpZiBmcy5iYXNl
bmFtZShyb290KSBpbiBfc2tpcHBlZF9kaXJlY3RvcmllczoKICAgICAgICAgICAgICAgICBkZWwg
ZGlyc1s6XQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAjIFRoaXMgY29w
eSBhbmQgZm9yLWluIGlzIHNsaWdodGx5IGluZWZmaWNpZW50LCBidXQKQEAgLTk1LDkgKzk3LDkg
QEAgZGVmIGZpbmQocG9ydCwgcGF0aHMpOgogICAgICAgICAgICAgICAgICAgICBkaXJzLnJlbW92
ZShkaXJlY3RvcnkpCiAKICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKLSAgICAg
ICAgICAgICAgICBpZiBfaXNfdGVzdF9maWxlKGZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICAg
ICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZW5hbWUpCi0gICAgICAgICAgICAg
ICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtcGF0aChmaWxlbmFtZSkKKyAgICAgICAgICAg
ICAgICBpZiBfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZnMsIGZpbGVuYW1lKToKKyAgICAgICAg
ICAgICAgICAgICAgZmlsZW5hbWUgPSBmcy5qb2luKHJvb3QsIGZpbGVuYW1lKQorICAgICAgICAg
ICAgICAgICAgICBmaWxlbmFtZSA9IGZzLm5vcm1wYXRoKGZpbGVuYW1lKQogICAgICAgICAgICAg
ICAgICAgICB0ZXN0X2ZpbGVzLmFkZChmaWxlbmFtZSkKIAogICAgIGdhdGhlcl90aW1lID0gdGlt
ZS50aW1lKCkgLSBnYXRoZXJfc3RhcnRfdGltZQpAQCAtMTA2LDEwICsxMDgsMTAgQEAgZGVmIGZp
bmQocG9ydCwgcGF0aHMpOgogICAgIHJldHVybiB0ZXN0X2ZpbGVzCiAKIAotZGVmIF9oYXNfc3Vw
cG9ydGVkX2V4dGVuc2lvbihmaWxlbmFtZSk6CitkZWYgX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9u
KGZzLCBmaWxlbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgZmlsZW5hbWUgaXMgb25lIG9m
IHRoZSBmaWxlIGV4dGVuc2lvbnMgd2Ugd2FudCB0byBydW4gYQogICAgIHRlc3Qgb24uIiIiCi0g
ICAgZXh0ZW5zaW9uID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0KKyAgICBleHRlbnNp
b24gPSBmcy5zcGxpdGV4dChmaWxlbmFtZSlbMV0KICAgICByZXR1cm4gZXh0ZW5zaW9uIGluIF9z
dXBwb3J0ZWRfZmlsZV9leHRlbnNpb25zCiAKIApAQCAtMTIyLDcgKzEyNCw3IEBAIGRlZiBfaXNf
cmVmZXJlbmNlX2h0bWxfZmlsZShmaWxlbmFtZSk6CiAgICAgcmV0dXJuIEZhbHNlCiAKIAotZGVm
IF9pc190ZXN0X2ZpbGUoZmlsZW5hbWUpOgorZGVmIF9pc190ZXN0X2ZpbGUoZnMsIGZpbGVuYW1l
KToKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZW5hbWUgcG9pbnRzIHRvIGEgdGVzdCBm
aWxlLiIiIgotICAgIHJldHVybiAoX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVuYW1lKSBh
bmQKKyAgICByZXR1cm4gKF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmcywgZmlsZW5hbWUpIGFu
ZAogICAgICAgICAgICAgbm90IF9pc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9m
aWxlc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvdGVzdF9maWxlc191bml0dGVzdC5weQppbmRleCA4MzUyNWM4MjNmMzk0MmYzNzQzN2Y4MzQz
NzVkMTYwNzA0M2MzYTQxLi41Njk3MzkxMTkzNWEzNDA4MzllYWZmOGI0NzkzMDUwOTBkYjM0MTgz
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rl
c3RfZmlsZXNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CkBAIC02NCwxMSArNjQsMTMgQEAgY2xh
c3MgVGVzdEZpbGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodGVzdHMsIHNldChbXSkpCiAKICAgICBkZWYgdGVzdF9pc190ZXN0X2ZpbGUoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby5o
dG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUo
J2Zvby5zaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rl
c3RfZmlsZSgnZm9vLnBuZycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMu
X2lzX3Rlc3RfZmlsZSgnZm9vLWV4cGVjdGVkLmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby1leHBlY3RlZC1taXNtYXRjaC5odG1s
JykpCisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoKQorICAgICAgICBmcyA9IHBvcnQuX2ZpbGVz
eXN0ZW0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShm
cywgJ2Zvby5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190
ZXN0X2ZpbGUoZnMsICdmb28uc2h0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0
X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICdmb28ucG5nJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnZm9vLWV4cGVjdGVkLmh0bWwnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICdm
b28tZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0
X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weQppbmRleCA0Yjk2YjNhYmZlMWI1OTUx
MjI4MTE1MGZkNmZlZWEwNjAzNTQ0YTkzLi5hZDY1MDE2ZWYyNTQ0MzVlNTRkY2ExOWEyNmNlZjE2
MDkxMjBmZTkwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKQEAgLTMyLDEzICsz
Miw5IEBACiBBbHNvIGRlZmluZXMgdGhlIFRlc3RBcmd1bWVudHMgInN0cnVjdCIgdG8gcGFzcyB0
aGVtIGFkZGl0aW9uYWwgYXJndW1lbnRzLgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQg
d2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGNnaQogaW1wb3J0IGVycm5v
CiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zLnBhdGgKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMudGVzdF90eXBlcy50ZXN0X3R5cGVfYmFzZSIpCiAK
QEAgLTg2LDkgKzgyLDEwIEBAIGNsYXNzIFRlc3RUeXBlQmFzZShvYmplY3QpOgogICAgIGRlZiBf
bWFrZV9vdXRwdXRfZGlyZWN0b3J5KHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIiIiQ3JlYXRl
cyB0aGUgb3V0cHV0IGRpcmVjdG9yeSAoaWYgbmVlZGVkKSBmb3IgYSBnaXZlbiB0ZXN0CiAgICAg
ICAgIGZpbGVuYW1lLiIiIgotICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4o
c2VsZi5fcm9vdF9vdXRwdXRfZGlyLAorICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0
ZW0KKyAgICAgICAgb3V0cHV0X2ZpbGVuYW1lID0gZnMuam9pbihzZWxmLl9yb290X291dHB1dF9k
aXIsCiAgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5h
bWUpKQotICAgICAgICBzZWxmLl9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KG9zLnBhdGguc3Bs
aXQob3V0cHV0X2ZpbGVuYW1lKVswXSkKKyAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3Rvcnko
ZnMuZGlybmFtZShvdXRwdXRfZmlsZW5hbWUpKQogCiAgICAgZGVmIF9zYXZlX2Jhc2VsaW5lX2Rh
dGEoc2VsZiwgZmlsZW5hbWUsIGRhdGEsIG1vZGlmaWVyLCBlbmNvZGluZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9VHJ1ZSk6CkBAIC0xMDYsMjEg
KzEwMywyMiBAQCBjbGFzcyBUZXN0VHlwZUJhc2Uob2JqZWN0KToKICAgICAgICAgICAgIGJhc2Vs
aW5lLCBvciB1cGRhdGUgdGhlIGV4aXN0aW5nIG9uZQogICAgICAgICAiIiIKIAorICAgICAgICBw
b3J0ID0gc2VsZi5fcG9ydAorICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KICAg
ICAgICAgaWYgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lOgotICAgICAgICAgICAgcmVsYXRpdmVfZGly
ID0gb3MucGF0aC5kaXJuYW1lKAotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVsYXRpdmVf
dGVzdF9maWxlbmFtZShmaWxlbmFtZSkpCi0gICAgICAgICAgICBiYXNlbGluZV9wYXRoID0gc2Vs
Zi5fcG9ydC5iYXNlbGluZV9wYXRoKCkKLSAgICAgICAgICAgIG91dHB1dF9kaXIgPSBvcy5wYXRo
LmpvaW4oYmFzZWxpbmVfcGF0aCwgcmVsYXRpdmVfZGlyKQotICAgICAgICAgICAgb3V0cHV0X2Zp
bGUgPSBvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKKyAg
ICAgICAgICAgIHJlbGF0aXZlX2RpciA9IGZzLmRpcm5hbWUocG9ydC5yZWxhdGl2ZV90ZXN0X2Zp
bGVuYW1lKGZpbGVuYW1lKSkKKyAgICAgICAgICAgIGJhc2VsaW5lX3BhdGggPSBwb3J0LmJhc2Vs
aW5lX3BhdGgoKQorICAgICAgICAgICAgb3V0cHV0X2RpciA9IGZzLmpvaW4oYmFzZWxpbmVfcGF0
aCwgcmVsYXRpdmVfZGlyKQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUgPSBmcy5iYXNlbmFtZShm
cy5zcGxpdGV4dChmaWxlbmFtZSlbMF0gKwogICAgICAgICAgICAgICAgIHNlbGYuRklMRU5BTUVf
U1VGRklYX0VYUEVDVEVEICsgbW9kaWZpZXIpCi0gICAgICAgICAgICBzZWxmLl9wb3J0Lm1heWJl
X21ha2VfZGlyZWN0b3J5KG91dHB1dF9kaXIpCi0gICAgICAgICAgICBvdXRwdXRfcGF0aCA9IG9z
LnBhdGguam9pbihvdXRwdXRfZGlyLCBvdXRwdXRfZmlsZSkKKyAgICAgICAgICAgIGZzLm1heWJl
X21ha2VfZGlyZWN0b3J5KG91dHB1dF9kaXIpCisgICAgICAgICAgICBvdXRwdXRfcGF0aCA9IGZz
LmpvaW4ob3V0cHV0X2Rpciwgb3V0cHV0X2ZpbGUpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCd3
cml0aW5nIG5ldyBiYXNlbGluZSByZXN1bHQgIiVzIicgJSAob3V0cHV0X3BhdGgpKQogICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgb3V0cHV0X3BhdGggPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2Zp
bGVuYW1lKGZpbGVuYW1lLCBtb2RpZmllcikKKyAgICAgICAgICAgIG91dHB1dF9wYXRoID0gcG9y
dC5leHBlY3RlZF9maWxlbmFtZShmaWxlbmFtZSwgbW9kaWZpZXIpCiAgICAgICAgICAgICBfbG9n
LmRlYnVnKCdyZXNldHRpbmcgYmFzZWxpbmUgcmVzdWx0ICIlcyInICUgb3V0cHV0X3BhdGgpCiAK
LSAgICAgICAgc2VsZi5fcG9ydC51cGRhdGVfYmFzZWxpbmUob3V0cHV0X3BhdGgsIGRhdGEsIGVu
Y29kaW5nKQorICAgICAgICBwb3J0LnVwZGF0ZV9iYXNlbGluZShvdXRwdXRfcGF0aCwgZGF0YSwg
ZW5jb2RpbmcpCiAKICAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYsIGZpbGVuYW1lLCBtb2Rp
Zmllcik6CiAgICAgICAgICIiIlJldHVybnMgYSBmaWxlbmFtZSBpbnNpZGUgdGhlIG91dHB1dCBk
aXIgdGhhdCBjb250YWlucyBtb2RpZmllci4KQEAgLTEzNiw5ICsxMzQsMTAgQEAgY2xhc3MgVGVz
dFR5cGVCYXNlKG9iamVjdCk6CiAgICAgICAgIFJldHVybjoKICAgICAgICAgICBUaGUgYWJzb2x1
dGUgd2luZG93cyBwYXRoIHRvIHRoZSBvdXRwdXQgZmlsZW5hbWUKICAgICAgICAgIiIiCi0gICAg
ICAgIG91dHB1dF9maWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLl9yb290X291dHB1dF9kaXIs
CisgICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBvdXRwdXRfZmls
ZW5hbWUgPSBmcy5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0X2RpciwKICAgICAgICAgICAgIHNlbGYu
X3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkpCi0gICAgICAgIHJldHVybiBv
cy5wYXRoLnNwbGl0ZXh0KG91dHB1dF9maWxlbmFtZSlbMF0gKyBtb2RpZmllcgorICAgICAgICBy
ZXR1cm4gZnMuc3BsaXRleHQob3V0cHV0X2ZpbGVuYW1lKVswXSArIG1vZGlmaWVyCiAKICAgICBk
ZWYgY29tcGFyZV9vdXRwdXQoc2VsZiwgcG9ydCwgZmlsZW5hbWUsIHRlc3RfYXJncywgYWN0dWFs
X3Rlc3Rfb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRw
dXQpOgpAQCAtMTY1LDExICsxNjQsMTEgQEAgY2xhc3MgVGVzdFR5cGVCYXNlKG9iamVjdCk6CiAg
ICAgZGVmIF93cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aChzZWxmLCBmaWxlX3BhdGgsIGNvbnRlbnRz
LCBlbmNvZGluZyk6CiAgICAgICAgICIiIlRoaXMgbWV0aG9kIGFzc3VtZXMgdGhhdCBieXRlX2Fy
cmF5IGlzIGFscmVhZHkgZW5jb2RlZAogICAgICAgICBpbnRvIHRoZSByaWdodCBmb3JtYXQuIiIi
Ci0gICAgICAgIG9wZW5fbW9kZSA9ICd3JworICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVz
eXN0ZW0KICAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIG9wZW5fbW9k
ZSA9ICd3K2InCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4oZmlsZV9wYXRoLCBvcGVuX21vZGUs
IGVuY29kaW5nPWVuY29kaW5nKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53cml0ZShjb250
ZW50cykKKyAgICAgICAgICAgIGZzLndyaXRlX2JpbmFyeV9maWxlKGZpbGVfcGF0aCwgY29udGVu
dHMpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVf
cGF0aCwgY29udGVudHMpCiAKICAgICBkZWYgd3JpdGVfb3V0cHV0X2ZpbGVzKHNlbGYsIGZpbGVu
YW1lLCBmaWxlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQsIGV4cGVj
dGVkLCBlbmNvZGluZywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79364</attachid>
            <date>2011-01-18 17:23:23 -0800</date>
            <delta_ts>2011-01-18 17:39:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52604-20110118172322.patch</filename>
            <type>text/plain</type>
            <size>14583</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4Y2Jm
Y2MzZWIwYzA0NzljM2JkMGEzODgwNWJiYzY1YWYwNDJjYmQ1Li40ZTlmNzFiYzZkYjlhNGQzZTll
MmU2YzIwMDgzNzg2NWQ5MTYxZGFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDEtMTggIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hhbmdlIG1vcmUgbW9kdWxlcyBpbiB0aGUgbGF5b3V0LXRlc3Rz
IGNvZGUgdG8gdXNlIHRoZQorICAgICAgICBmaWxlc3lzdGVtIHdyYXBwZXIgZm9yIGNsZWFuZXIg
dW5pdCB0ZXN0aW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoZSBnbG9iKCkg
d3JhcHBlciB0byB0aGUgZmlsZXN5c3RlbQorICAgICAgICBhYnN0cmFjdGlvbi4KKyAgICAgICAg
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjYwNAor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVz
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9m
aWxlc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21v
Y2sucHk6CisKIDIwMTEtMDEtMTggIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4IDUzZTk3OTZm
MTVlMzU3ZmZmMjE5MjUyOTg0NDQwNzdmZmRiMjU3OWEuLmQ0NWQ0YzFiMWY2OTZmNDJlMWUzZWUz
NDhmNGUyMjFmYWNmOGQzODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CkBAIC0zMyw2ICszMyw3IEBAIGZyb20gX19mdXR1cmVf
XyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwogaW1w
b3J0IGV4Y2VwdGlvbnMKK2ltcG9ydCBnbG9iCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKIGlt
cG9ydCB0ZW1wZmlsZQpAQCAtNDUsNiArNDYsNyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6
CiAgICAgb3IgcmVsYXRpdmUuIiIiCiAKICAgICBkZWYgYmFzZW5hbWUoc2VsZiwgcGF0aCk6Cisg
ICAgICAgICIiIldyYXBzIG9zLnBhdGguYmFzZW5hbWUoKS4iIiIKICAgICAgICAgcmV0dXJuIG9z
LnBhdGguYmFzZW5hbWUocGF0aCkKIAogICAgIGRlZiBjb3B5ZmlsZShzZWxmLCBzb3VyY2UsIGRl
c3RpbmF0aW9uKToKQEAgLTUzLDYgKzU1LDcgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgog
ICAgICAgICBzaHV0aWwuY29weWZpbGUoc291cmNlLCBkZXN0aW5hdGlvbikKIAogICAgIGRlZiBk
aXJuYW1lKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJXcmFwcyBvcy5wYXRoLmRpcm5hbWUoKS4i
IiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQogCiAgICAgZGVmIGV4aXN0
cyhzZWxmLCBwYXRoKToKQEAgLTY1LDYgKzY4LDEwIEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0
KToKICAgICAgICAgICAgIGZvciAocGF0aF90b19maWxlLCBfLCBmaWxlbmFtZXMpIGluIG9zLndh
bGsocGF0aCkKICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNdCiAKKyAgICBk
ZWYgZ2xvYihzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiV3JhcHMgZ2xvYi5nbG9iKCkuIiIiCisg
ICAgICAgIHJldHVybiBnbG9iLmdsb2IocGF0aCkKKwogICAgIGRlZiBpc2ZpbGUoc2VsZiwgcGF0
aCk6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBwYXRoIHJlZmVycyB0byBhIGZpbGUu
IiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmlzZmlsZShwYXRoKQpAQCAtMTI1LDYgKzEzMiw3
IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgc2h1dGlsLm1vdmUoc3JjLCBk
ZXN0KQogCiAgICAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJXcmFwcyBv
cy5wYXRoLm5vcm1wYXRoKCkuIiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKHBh
dGgpCiAKICAgICBkZWYgb3Blbl9iaW5hcnlfdGVtcGZpbGUoc2VsZiwgc3VmZml4KToKQEAgLTE4
OCw3ICsxOTYsNyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1
cm4gZi5yZWFkKCkKIAogICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKLSAgICAgICAgIiIi
UmV0dXJuIChkaXJuYW1lLCBiYXNlbmFtZSArIGV4dCkuIiIiCisgICAgICAgICIiIlJldHVybiAo
ZGlybmFtZSArIG9zLnNlcCArIGJhc2VuYW1lLCAnLicgKyBleHQpIiIiCiAgICAgICAgIHJldHVy
biBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpCiAKICAgICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2Vs
ZiwgcGF0aCwgY29udGVudHMpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKaW5kZXggMTBhY2MzYjQyZGViNTBlNTQ5
MzJjMWM2N2E0NzIzZGRmZTgzMjg0YS4uZmQyNDM4ZGIyZjU4NWVhYzMwMzdlOGEzZDJlZWMzZjVj
NjNjMDg4MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2ZpbGVzeXN0ZW1fbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CkBAIC03Niw2ICs3NiwxNCBAQCBjbGFzcyBNb2NrRmls
ZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgcGF0aCArPSAnLycKICAgICAgICAgcmV0dXJu
IFtmaWxlIGZvciBmaWxlIGluIHNlbGYuZmlsZXMgaWYgZmlsZS5zdGFydHN3aXRoKHBhdGgpXQog
CisgICAgZGVmIGdsb2Ioc2VsZiwgcGF0aCk6CisgICAgICAgICMgRklYTUU6IFRoaXMgb25seSBo
YW5kbGVzIGEgd2lsZGNhcmQgJyonIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGguCisgICAgICAgICMg
TWF5YmUgaXQgc2hvdWxkIGhhbmRsZSBtb3JlPworICAgICAgICBpZiBwYXRoWy0xXSA9PSAnKic6
CisgICAgICAgICAgICByZXR1cm4gW2YgZm9yIGYgaW4gc2VsZi5maWxlcyBpZiBmLnN0YXJ0c3dp
dGgocGF0aFs6LTFdKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBbZiBmb3Ig
ZiBpbiBzZWxmLmZpbGVzIGlmIGYgPT0gcGF0aF0KKwogICAgIGRlZiBpc2ZpbGUoc2VsZiwgcGF0
aCk6CiAgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYuZmlsZXMgYW5kIHNlbGYuZmlsZXNbcGF0
aF0gaXMgbm90IE5vbmUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRl
cl90cmVlX3RocmVhZC5weQppbmRleCAyYmIyZDAyNzJkYjk5YmI3MGVhZmQ4OWMzZmQzMWY2ZWZl
MjlmZmZkLi40ZDZiNWY2ZDVlY2NkYjA1Y2YwZjk4YTAyMTIwN2MyODU5YzdjYjI1IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9k
dW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQpAQCAt
ODYsNiArODYsNyBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5w
dXQsIHRlc3RfdHlwZXMsIHRlc3RfYXJncywKICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2Jq
ZWN0CiAgICAgIiIiCiAgICAgZmFpbHVyZXMgPSBbXQorICAgIGZzID0gcG9ydC5fZmlsZXN5c3Rl
bQogCiAgICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6CiAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0
ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCgpKQpAQCAtOTYsMTEgKzk3LDEwIEBAIGRlZiBfcHJv
Y2Vzc19vdXRwdXQocG9ydCwgb3B0aW9ucywgdGVzdF9pbnB1dCwgdGVzdF90eXBlcywgdGVzdF9h
cmdzLAogICAgIGlmIHRlc3Rfb3V0cHV0LmNyYXNoOgogICAgICAgICBfbG9nLmRlYnVnKCIlcyBT
dGFja3RyYWNlIGZvciAlczpcbiVzIiAlICh3b3JrZXJfbmFtZSwgdGVzdF9uYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X291dHB1dC5l
cnJvcikpCi0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKG9wdGlvbnMucmVzdWx0c19k
aXJlY3RvcnksIHRlc3RfbmFtZSkKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0
KGZpbGVuYW1lKVswXSArICItc3RhY2sudHh0IgotICAgICAgICBwb3J0Lm1heWJlX21ha2VfZGly
ZWN0b3J5KG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpWzBdKQotICAgICAgICB3aXRoIGNvZGVjcy5v
cGVuKGZpbGVuYW1lLCAid2IiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53
cml0ZSh0ZXN0X291dHB1dC5lcnJvcikKKyAgICAgICAgZmlsZW5hbWUgPSBmcy5qb2luKG9wdGlv
bnMucmVzdWx0c19kaXJlY3RvcnksIHRlc3RfbmFtZSkKKyAgICAgICAgZmlsZW5hbWUgPSBmcy5z
cGxpdGV4dChmaWxlbmFtZSlbMF0gKyAiLXN0YWNrLnR4dCIKKyAgICAgICAgZnMubWF5YmVfbWFr
ZV9kaXJlY3RvcnkoZnMuZGlybmFtZShmaWxlbmFtZSkpCisgICAgICAgIGZzLndyaXRlX3RleHRf
ZmlsZShmaWxlbmFtZSwgdGVzdF9vdXRwdXQuZXJyb3IpCiAgICAgZWxpZiB0ZXN0X291dHB1dC5l
cnJvcjoKICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgb3V0cHV0IHN0ZGVyciBsaW5lczpcbiVz
IiAlICh3b3JrZXJfbmFtZSwgdGVzdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rfb3V0cHV0LmVycm9yKSkKQEAgLTM4NSw3
ICszODUsNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKIAogICAg
ICAgICAjIEFwcGVuZCB0ZXN0cyB3ZSdyZSBydW5uaW5nIHRvIHRoZSBleGlzdGluZyB0ZXN0c19y
dW4udHh0IGZpbGUuCiAgICAgICAgICMgVGhpcyBpcyBjcmVhdGVkIGluIHJ1bl93ZWJraXRfdGVz
dHMucHk6X1ByZXBhcmVMaXN0c0FuZFByaW50T3V0cHV0LgotICAgICAgICB0ZXN0c19ydW5fZmls
ZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKKyAg
ICAgICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5qb2luKHNl
bGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidGVzdHNfcnVuLnR4dCIpCiAgICAgICAgIHRlc3RzX3J1bl9maWxl
ID0gY29kZWNzLm9wZW4odGVzdHNfcnVuX2ZpbGVuYW1lLCAiYSIsICJ1dGYtOCIpCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxl
cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxl
cy5weQppbmRleCAyYzBhN2I2M2JmNjcxYWJjMWJkODI0YTgxZGVlZDEyNmY1ZmQ5ODMzLi4zNDRk
MDU3MTk2YjM2M2QxMWQ5MDU4ZWViZjQ3MTA0YzZhMDYzZWNkIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5CkBAIC01
OCw2ICs1OCw3IEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICAgIHBhdGhzOiBhIGxpc3Qg
b2YgY29tbWFuZCBsaW5lIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBsYXlvdXRfdGVzdHNfZGlyKCkK
ICAgICAgICAgICB0byBsaW1pdCB0aGUgc2VhcmNoIHRvLiBnbG9iIHBhdHRlcm5zIGFyZSBvay4K
ICAgICAiIiIKKyAgICBmcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KICAgICBnYXRoZXJfc3RhcnRfdGlt
ZSA9IHRpbWUudGltZSgpCiAgICAgcGF0aHNfdG9fd2FsayA9IHNldCgpCiAgICAgIyBpZiBwYXRo
cyBpcyBlbXB0eSwgcHJvdmlkZSBhIHByZS1kZWZpbmVkIGxpc3QuCkBAIC02NSw5ICs2Niw5IEBA
IGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICAgICAgX2xvZy5kZWJ1ZygiR2F0aGVyaW5nIHRl
c3RzIGZyb206ICVzIHJlbGF0aXZlIHRvICVzIiAlIChwYXRocywgcG9ydC5sYXlvdXRfdGVzdHNf
ZGlyKCkpKQogICAgICAgICBmb3IgcGF0aCBpbiBwYXRoczoKICAgICAgICAgICAgICMgSWYgdGhl
cmUncyBhbiAqIGluIHRoZSBuYW1lLCBhc3N1bWUgaXQncyBhIGdsb2IgcGF0dGVybi4KLSAgICAg
ICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHBhdGgp
CisgICAgICAgICAgICBwYXRoID0gZnMuam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgcGF0
aCkKICAgICAgICAgICAgIGlmIHBhdGguZmluZCgnKicpID4gLTE6Ci0gICAgICAgICAgICAgICAg
ZmlsZW5hbWVzID0gZ2xvYi5nbG9iKHBhdGgpCisgICAgICAgICAgICAgICAgZmlsZW5hbWVzID0g
ZnMuZ2xvYihwYXRoKQogICAgICAgICAgICAgICAgIHBhdGhzX3RvX3dhbGsudXBkYXRlKGZpbGVu
YW1lcykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGF0aHNfdG9fd2Fsay5h
ZGQocGF0aCkKQEAgLTc4LDggKzc5LDggQEAgZGVmIGZpbmQocG9ydCwgcGF0aHMpOgogICAgICMg
Tm93IHdhbGsgYWxsIHRoZSBwYXRocyBwYXNzZWQgaW4gb24gdGhlIGNvbW1hbmQgbGluZSBhbmQg
Z2V0IGZpbGVuYW1lcwogICAgIHRlc3RfZmlsZXMgPSBzZXQoKQogICAgIGZvciBwYXRoIGluIHBh
dGhzX3RvX3dhbGs6Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpIGFuZCBfaXNfdGVz
dF9maWxlKHBhdGgpOgotICAgICAgICAgICAgdGVzdF9maWxlcy5hZGQob3MucGF0aC5ub3JtcGF0
aChwYXRoKSkKKyAgICAgICAgaWYgZnMuaXNmaWxlKHBhdGgpIGFuZCBfaXNfdGVzdF9maWxlKGZz
LCBwYXRoKToKKyAgICAgICAgICAgIHRlc3RfZmlsZXMuYWRkKGZzLm5vcm1wYXRoKHBhdGgpKQog
ICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4g
b3Mud2FsayhwYXRoKToKQEAgLTk1LDkgKzk2LDkgQEAgZGVmIGZpbmQocG9ydCwgcGF0aHMpOgog
ICAgICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZShkaXJlY3RvcnkpCiAKICAgICAgICAgICAg
IGZvciBmaWxlbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBpZiBfaXNfdGVzdF9maWxl
KGZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4o
cm9vdCwgZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5u
b3JtcGF0aChmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBpZiBfaXNfdGVzdF9maWxlKGZzLCBm
aWxlbmFtZSk6CisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZnMuam9pbihyb290LCBm
aWxlbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmcy5ub3JtcGF0aChmaWxl
bmFtZSkKICAgICAgICAgICAgICAgICAgICAgdGVzdF9maWxlcy5hZGQoZmlsZW5hbWUpCiAKICAg
ICBnYXRoZXJfdGltZSA9IHRpbWUudGltZSgpIC0gZ2F0aGVyX3N0YXJ0X3RpbWUKQEAgLTEwNiw3
ICsxMDcsNyBAQCBkZWYgZmluZChwb3J0LCBwYXRocyk6CiAgICAgcmV0dXJuIHRlc3RfZmlsZXMK
IAogCi1kZWYgX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVuYW1lKToKK2RlZiBfaGFzX3N1
cHBvcnRlZF9leHRlbnNpb24oZnMsIGZpbGVuYW1lKToKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiBm
aWxlbmFtZSBpcyBvbmUgb2YgdGhlIGZpbGUgZXh0ZW5zaW9ucyB3ZSB3YW50IHRvIHJ1biBhCiAg
ICAgdGVzdCBvbi4iIiIKICAgICBleHRlbnNpb24gPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1l
KVsxXQpAQCAtMTIyLDcgKzEyMyw3IEBAIGRlZiBfaXNfcmVmZXJlbmNlX2h0bWxfZmlsZShmaWxl
bmFtZSk6CiAgICAgcmV0dXJuIEZhbHNlCiAKIAotZGVmIF9pc190ZXN0X2ZpbGUoZmlsZW5hbWUp
OgorZGVmIF9pc190ZXN0X2ZpbGUoZnMsIGZpbGVuYW1lKToKICAgICAiIiJSZXR1cm4gdHJ1ZSBp
ZiB0aGUgZmlsZW5hbWUgcG9pbnRzIHRvIGEgdGVzdCBmaWxlLiIiIgotICAgIHJldHVybiAoX2hh
c19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVuYW1lKSBhbmQKKyAgICByZXR1cm4gKF9oYXNfc3Vw
cG9ydGVkX2V4dGVuc2lvbihmcywgZmlsZW5hbWUpIGFuZAogICAgICAgICAgICAgbm90IF9pc19y
ZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5w
eQppbmRleCA4MzUyNWM4MjNmMzk0MmYzNzQzN2Y4MzQzNzVkMTYwNzA0M2MzYTQxLi41Njk3Mzkx
MTkzNWEzNDA4MzllYWZmOGI0NzkzMDUwOTBkYjM0MTgzIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3Vu
aXR0ZXN0LnB5CkBAIC02NCwxMSArNjQsMTMgQEAgY2xhc3MgVGVzdEZpbGVzVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHMsIHNldChbXSkpCiAK
ICAgICBkZWYgdGVzdF9pc190ZXN0X2ZpbGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby5odG1sJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby5zaHRtbCcpKQotICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZSgnZm9vLnBuZycpKQotICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZSgnZm9vLWV4cGVj
dGVkLmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0
X2ZpbGUoJ2Zvby1leHBlY3RlZC1taXNtYXRjaC5odG1sJykpCisgICAgICAgIHBvcnQgPSBiYXNl
LlBvcnQoKQorICAgICAgICBmcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJ2Zvby5odG1sJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICdmb28uc2h0bWwn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMs
ICdmb28ucG5nJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVz
dF9maWxlKGZzLCAnZm9vLWV4cGVjdGVkLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICdmb28tZXhwZWN0ZWQtbWlzbWF0Y2guaHRt
bCcpKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5
cGVfYmFzZS5weQppbmRleCA0Yjk2YjNhYmZlMWI1OTUxMjI4MTE1MGZkNmZlZWEwNjAzNTQ0YTkz
Li5hZDY1MDE2ZWYyNTQ0MzVlNTRkY2ExOWEyNmNlZjE2MDkxMjBmZTkwIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9i
YXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlw
ZXMvdGVzdF90eXBlX2Jhc2UucHkKQEAgLTMyLDEzICszMiw5IEBACiBBbHNvIGRlZmluZXMgdGhl
IFRlc3RBcmd1bWVudHMgInN0cnVjdCIgdG8gcGFzcyB0aGVtIGFkZGl0aW9uYWwgYXJndW1lbnRz
LgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0
IGNvZGVjcwogaW1wb3J0IGNnaQogaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0
IG9zLnBhdGgKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVz
dHMudGVzdF90eXBlcy50ZXN0X3R5cGVfYmFzZSIpCiAKQEAgLTg2LDkgKzgyLDEwIEBAIGNsYXNz
IFRlc3RUeXBlQmFzZShvYmplY3QpOgogICAgIGRlZiBfbWFrZV9vdXRwdXRfZGlyZWN0b3J5KHNl
bGYsIGZpbGVuYW1lKToKICAgICAgICAgIiIiQ3JlYXRlcyB0aGUgb3V0cHV0IGRpcmVjdG9yeSAo
aWYgbmVlZGVkKSBmb3IgYSBnaXZlbiB0ZXN0CiAgICAgICAgIGZpbGVuYW1lLiIiIgotICAgICAg
ICBvdXRwdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fcm9vdF9vdXRwdXRfZGlyLAor
ICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgb3V0cHV0X2ZpbGVu
YW1lID0gZnMuam9pbihzZWxmLl9yb290X291dHB1dF9kaXIsCiAgICAgICAgICAgICBzZWxmLl9w
b3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpKQotICAgICAgICBzZWxmLl9wb3J0
Lm1heWJlX21ha2VfZGlyZWN0b3J5KG9zLnBhdGguc3BsaXQob3V0cHV0X2ZpbGVuYW1lKVswXSkK
KyAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMuZGlybmFtZShvdXRwdXRfZmlsZW5h
bWUpKQogCiAgICAgZGVmIF9zYXZlX2Jhc2VsaW5lX2RhdGEoc2VsZiwgZmlsZW5hbWUsIGRhdGEs
IG1vZGlmaWVyLCBlbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
ZV9uZXdfYmFzZWxpbmU9VHJ1ZSk6CkBAIC0xMDYsMjEgKzEwMywyMiBAQCBjbGFzcyBUZXN0VHlw
ZUJhc2Uob2JqZWN0KToKICAgICAgICAgICAgIGJhc2VsaW5lLCBvciB1cGRhdGUgdGhlIGV4aXN0
aW5nIG9uZQogICAgICAgICAiIiIKIAorICAgICAgICBwb3J0ID0gc2VsZi5fcG9ydAorICAgICAg
ICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgaWYgZ2VuZXJhdGVfbmV3X2Jh
c2VsaW5lOgotICAgICAgICAgICAgcmVsYXRpdmVfZGlyID0gb3MucGF0aC5kaXJuYW1lKAotICAg
ICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkp
Ci0gICAgICAgICAgICBiYXNlbGluZV9wYXRoID0gc2VsZi5fcG9ydC5iYXNlbGluZV9wYXRoKCkK
LSAgICAgICAgICAgIG91dHB1dF9kaXIgPSBvcy5wYXRoLmpvaW4oYmFzZWxpbmVfcGF0aCwgcmVs
YXRpdmVfZGlyKQotICAgICAgICAgICAgb3V0cHV0X2ZpbGUgPSBvcy5wYXRoLmJhc2VuYW1lKG9z
LnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKKyAgICAgICAgICAgIHJlbGF0aXZlX2RpciA9
IGZzLmRpcm5hbWUocG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKSkKKyAgICAg
ICAgICAgIGJhc2VsaW5lX3BhdGggPSBwb3J0LmJhc2VsaW5lX3BhdGgoKQorICAgICAgICAgICAg
b3V0cHV0X2RpciA9IGZzLmpvaW4oYmFzZWxpbmVfcGF0aCwgcmVsYXRpdmVfZGlyKQorICAgICAg
ICAgICAgb3V0cHV0X2ZpbGUgPSBmcy5iYXNlbmFtZShmcy5zcGxpdGV4dChmaWxlbmFtZSlbMF0g
KwogICAgICAgICAgICAgICAgIHNlbGYuRklMRU5BTUVfU1VGRklYX0VYUEVDVEVEICsgbW9kaWZp
ZXIpCi0gICAgICAgICAgICBzZWxmLl9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KG91dHB1dF9k
aXIpCi0gICAgICAgICAgICBvdXRwdXRfcGF0aCA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBv
dXRwdXRfZmlsZSkKKyAgICAgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KG91dHB1dF9k
aXIpCisgICAgICAgICAgICBvdXRwdXRfcGF0aCA9IGZzLmpvaW4ob3V0cHV0X2Rpciwgb3V0cHV0
X2ZpbGUpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCd3cml0aW5nIG5ldyBiYXNlbGluZSByZXN1
bHQgIiVzIicgJSAob3V0cHV0X3BhdGgpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3V0
cHV0X3BhdGggPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2ZpbGVuYW1lKGZpbGVuYW1lLCBtb2RpZmll
cikKKyAgICAgICAgICAgIG91dHB1dF9wYXRoID0gcG9ydC5leHBlY3RlZF9maWxlbmFtZShmaWxl
bmFtZSwgbW9kaWZpZXIpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCdyZXNldHRpbmcgYmFzZWxp
bmUgcmVzdWx0ICIlcyInICUgb3V0cHV0X3BhdGgpCiAKLSAgICAgICAgc2VsZi5fcG9ydC51cGRh
dGVfYmFzZWxpbmUob3V0cHV0X3BhdGgsIGRhdGEsIGVuY29kaW5nKQorICAgICAgICBwb3J0LnVw
ZGF0ZV9iYXNlbGluZShvdXRwdXRfcGF0aCwgZGF0YSwgZW5jb2RpbmcpCiAKICAgICBkZWYgb3V0
cHV0X2ZpbGVuYW1lKHNlbGYsIGZpbGVuYW1lLCBtb2RpZmllcik6CiAgICAgICAgICIiIlJldHVy
bnMgYSBmaWxlbmFtZSBpbnNpZGUgdGhlIG91dHB1dCBkaXIgdGhhdCBjb250YWlucyBtb2RpZmll
ci4KQEAgLTEzNiw5ICsxMzQsMTAgQEAgY2xhc3MgVGVzdFR5cGVCYXNlKG9iamVjdCk6CiAgICAg
ICAgIFJldHVybjoKICAgICAgICAgICBUaGUgYWJzb2x1dGUgd2luZG93cyBwYXRoIHRvIHRoZSBv
dXRwdXQgZmlsZW5hbWUKICAgICAgICAgIiIiCi0gICAgICAgIG91dHB1dF9maWxlbmFtZSA9IG9z
LnBhdGguam9pbihzZWxmLl9yb290X291dHB1dF9kaXIsCisgICAgICAgIGZzID0gc2VsZi5fcG9y
dC5fZmlsZXN5c3RlbQorICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBmcy5qb2luKHNlbGYuX3Jv
b3Rfb3V0cHV0X2RpciwKICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxl
bmFtZShmaWxlbmFtZSkpCi0gICAgICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KG91dHB1dF9m
aWxlbmFtZSlbMF0gKyBtb2RpZmllcgorICAgICAgICByZXR1cm4gZnMuc3BsaXRleHQob3V0cHV0
X2ZpbGVuYW1lKVswXSArIG1vZGlmaWVyCiAKICAgICBkZWYgY29tcGFyZV9vdXRwdXQoc2VsZiwg
cG9ydCwgZmlsZW5hbWUsIHRlc3RfYXJncywgYWN0dWFsX3Rlc3Rfb3V0cHV0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQpOgpAQCAtMTY1LDExICsxNjQsMTEg
QEAgY2xhc3MgVGVzdFR5cGVCYXNlKG9iamVjdCk6CiAgICAgZGVmIF93cml0ZV9pbnRvX2ZpbGVf
YXRfcGF0aChzZWxmLCBmaWxlX3BhdGgsIGNvbnRlbnRzLCBlbmNvZGluZyk6CiAgICAgICAgICIi
IlRoaXMgbWV0aG9kIGFzc3VtZXMgdGhhdCBieXRlX2FycmF5IGlzIGFscmVhZHkgZW5jb2RlZAog
ICAgICAgICBpbnRvIHRoZSByaWdodCBmb3JtYXQuIiIiCi0gICAgICAgIG9wZW5fbW9kZSA9ICd3
JworICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgaWYgZW5jb2Rp
bmcgaXMgTm9uZToKLSAgICAgICAgICAgIG9wZW5fbW9kZSA9ICd3K2InCi0gICAgICAgIHdpdGgg
Y29kZWNzLm9wZW4oZmlsZV9wYXRoLCBvcGVuX21vZGUsIGVuY29kaW5nPWVuY29kaW5nKSBhcyBm
aWxlOgotICAgICAgICAgICAgZmlsZS53cml0ZShjb250ZW50cykKKyAgICAgICAgICAgIGZzLndy
aXRlX2JpbmFyeV9maWxlKGZpbGVfcGF0aCwgY29udGVudHMpCisgICAgICAgICAgICByZXR1cm4K
KyAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVfcGF0aCwgY29udGVudHMpCiAKICAgICBk
ZWYgd3JpdGVfb3V0cHV0X2ZpbGVzKHNlbGYsIGZpbGVuYW1lLCBmaWxlX3R5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXRwdXQsIGV4cGVjdGVkLCBlbmNvZGluZywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79368</attachid>
            <date>2011-01-18 17:39:44 -0800</date>
            <delta_ts>2011-01-19 12:17:11 -0800</delta_ts>
            <desc>fix missed reference to os.path</desc>
            <filename>bug-52604-20110118173943.patch</filename>
            <type>text/plain</type>
            <size>14683</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4Y2Jm
Y2MzZWIwYzA0NzljM2JkMGEzODgwNWJiYzY1YWYwNDJjYmQ1Li40ZTlmNzFiYzZkYjlhNGQzZTll
MmU2YzIwMDgzNzg2NWQ5MTYxZGFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDEtMTggIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hhbmdlIG1vcmUgbW9kdWxlcyBpbiB0aGUgbGF5b3V0LXRlc3Rz
IGNvZGUgdG8gdXNlIHRoZQorICAgICAgICBmaWxlc3lzdGVtIHdyYXBwZXIgZm9yIGNsZWFuZXIg
dW5pdCB0ZXN0aW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoZSBnbG9iKCkg
d3JhcHBlciB0byB0aGUgZmlsZXN5c3RlbQorICAgICAgICBhYnN0cmFjdGlvbi4KKyAgICAgICAg
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjYwNAor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVz
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9m
aWxlc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21v
Y2sucHk6CisKIDIwMTEtMDEtMTggIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4IDUzZTk3OTZm
MTVlMzU3ZmZmMjE5MjUyOTg0NDQwNzdmZmRiMjU3OWEuLmQ0NWQ0YzFiMWY2OTZmNDJlMWUzZWUz
NDhmNGUyMjFmYWNmOGQzODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CkBAIC0zMyw2ICszMyw3IEBAIGZyb20gX19mdXR1cmVf
XyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwogaW1w
b3J0IGV4Y2VwdGlvbnMKK2ltcG9ydCBnbG9iCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKIGlt
cG9ydCB0ZW1wZmlsZQpAQCAtNDUsNiArNDYsNyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6
CiAgICAgb3IgcmVsYXRpdmUuIiIiCiAKICAgICBkZWYgYmFzZW5hbWUoc2VsZiwgcGF0aCk6Cisg
ICAgICAgICIiIldyYXBzIG9zLnBhdGguYmFzZW5hbWUoKS4iIiIKICAgICAgICAgcmV0dXJuIG9z
LnBhdGguYmFzZW5hbWUocGF0aCkKIAogICAgIGRlZiBjb3B5ZmlsZShzZWxmLCBzb3VyY2UsIGRl
c3RpbmF0aW9uKToKQEAgLTUzLDYgKzU1LDcgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgog
ICAgICAgICBzaHV0aWwuY29weWZpbGUoc291cmNlLCBkZXN0aW5hdGlvbikKIAogICAgIGRlZiBk
aXJuYW1lKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJXcmFwcyBvcy5wYXRoLmRpcm5hbWUoKS4i
IiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQogCiAgICAgZGVmIGV4aXN0
cyhzZWxmLCBwYXRoKToKQEAgLTY1LDYgKzY4LDEwIEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0
KToKICAgICAgICAgICAgIGZvciAocGF0aF90b19maWxlLCBfLCBmaWxlbmFtZXMpIGluIG9zLndh
bGsocGF0aCkKICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNdCiAKKyAgICBk
ZWYgZ2xvYihzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiV3JhcHMgZ2xvYi5nbG9iKCkuIiIiCisg
ICAgICAgIHJldHVybiBnbG9iLmdsb2IocGF0aCkKKwogICAgIGRlZiBpc2ZpbGUoc2VsZiwgcGF0
aCk6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBwYXRoIHJlZmVycyB0byBhIGZpbGUu
IiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmlzZmlsZShwYXRoKQpAQCAtMTI1LDYgKzEzMiw3
IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgc2h1dGlsLm1vdmUoc3JjLCBk
ZXN0KQogCiAgICAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJXcmFwcyBv
cy5wYXRoLm5vcm1wYXRoKCkuIiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKHBh
dGgpCiAKICAgICBkZWYgb3Blbl9iaW5hcnlfdGVtcGZpbGUoc2VsZiwgc3VmZml4KToKQEAgLTE4
OCw3ICsxOTYsNyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1
cm4gZi5yZWFkKCkKIAogICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKLSAgICAgICAgIiIi
UmV0dXJuIChkaXJuYW1lLCBiYXNlbmFtZSArIGV4dCkuIiIiCisgICAgICAgICIiIlJldHVybiAo
ZGlybmFtZSArIG9zLnNlcCArIGJhc2VuYW1lLCAnLicgKyBleHQpIiIiCiAgICAgICAgIHJldHVy
biBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpCiAKICAgICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2Vs
ZiwgcGF0aCwgY29udGVudHMpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKaW5kZXggMTBhY2MzYjQyZGViNTBlNTQ5
MzJjMWM2N2E0NzIzZGRmZTgzMjg0YS4uZmQyNDM4ZGIyZjU4NWVhYzMwMzdlOGEzZDJlZWMzZjVj
NjNjMDg4MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2ZpbGVzeXN0ZW1fbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CkBAIC03Niw2ICs3NiwxNCBAQCBjbGFzcyBNb2NrRmls
ZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgcGF0aCArPSAnLycKICAgICAgICAgcmV0dXJu
IFtmaWxlIGZvciBmaWxlIGluIHNlbGYuZmlsZXMgaWYgZmlsZS5zdGFydHN3aXRoKHBhdGgpXQog
CisgICAgZGVmIGdsb2Ioc2VsZiwgcGF0aCk6CisgICAgICAgICMgRklYTUU6IFRoaXMgb25seSBo
YW5kbGVzIGEgd2lsZGNhcmQgJyonIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGguCisgICAgICAgICMg
TWF5YmUgaXQgc2hvdWxkIGhhbmRsZSBtb3JlPworICAgICAgICBpZiBwYXRoWy0xXSA9PSAnKic6
CisgICAgICAgICAgICByZXR1cm4gW2YgZm9yIGYgaW4gc2VsZi5maWxlcyBpZiBmLnN0YXJ0c3dp
dGgocGF0aFs6LTFdKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBbZiBmb3Ig
ZiBpbiBzZWxmLmZpbGVzIGlmIGYgPT0gcGF0aF0KKwogICAgIGRlZiBpc2ZpbGUoc2VsZiwgcGF0
aCk6CiAgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYuZmlsZXMgYW5kIHNlbGYuZmlsZXNbcGF0
aF0gaXMgbm90IE5vbmUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRl
cl90cmVlX3RocmVhZC5weQppbmRleCAyYmIyZDAyNzJkYjk5YmI3MGVhZmQ4OWMzZmQzMWY2ZWZl
MjlmZmZkLi40ZDZiNWY2ZDVlY2NkYjA1Y2YwZjk4YTAyMTIwN2MyODU5YzdjYjI1IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9k
dW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQpAQCAt
ODYsNiArODYsNyBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5w
dXQsIHRlc3RfdHlwZXMsIHRlc3RfYXJncywKICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2Jq
ZWN0CiAgICAgIiIiCiAgICAgZmFpbHVyZXMgPSBbXQorICAgIGZzID0gcG9ydC5fZmlsZXN5c3Rl
bQogCiAgICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6CiAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0
ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCgpKQpAQCAtOTYsMTEgKzk3LDEwIEBAIGRlZiBfcHJv
Y2Vzc19vdXRwdXQocG9ydCwgb3B0aW9ucywgdGVzdF9pbnB1dCwgdGVzdF90eXBlcywgdGVzdF9h
cmdzLAogICAgIGlmIHRlc3Rfb3V0cHV0LmNyYXNoOgogICAgICAgICBfbG9nLmRlYnVnKCIlcyBT
dGFja3RyYWNlIGZvciAlczpcbiVzIiAlICh3b3JrZXJfbmFtZSwgdGVzdF9uYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X291dHB1dC5l
cnJvcikpCi0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKG9wdGlvbnMucmVzdWx0c19k
aXJlY3RvcnksIHRlc3RfbmFtZSkKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0
KGZpbGVuYW1lKVswXSArICItc3RhY2sudHh0IgotICAgICAgICBwb3J0Lm1heWJlX21ha2VfZGly
ZWN0b3J5KG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpWzBdKQotICAgICAgICB3aXRoIGNvZGVjcy5v
cGVuKGZpbGVuYW1lLCAid2IiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53
cml0ZSh0ZXN0X291dHB1dC5lcnJvcikKKyAgICAgICAgZmlsZW5hbWUgPSBmcy5qb2luKG9wdGlv
bnMucmVzdWx0c19kaXJlY3RvcnksIHRlc3RfbmFtZSkKKyAgICAgICAgZmlsZW5hbWUgPSBmcy5z
cGxpdGV4dChmaWxlbmFtZSlbMF0gKyAiLXN0YWNrLnR4dCIKKyAgICAgICAgZnMubWF5YmVfbWFr
ZV9kaXJlY3RvcnkoZnMuZGlybmFtZShmaWxlbmFtZSkpCisgICAgICAgIGZzLndyaXRlX3RleHRf
ZmlsZShmaWxlbmFtZSwgdGVzdF9vdXRwdXQuZXJyb3IpCiAgICAgZWxpZiB0ZXN0X291dHB1dC5l
cnJvcjoKICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgb3V0cHV0IHN0ZGVyciBsaW5lczpcbiVz
IiAlICh3b3JrZXJfbmFtZSwgdGVzdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rfb3V0cHV0LmVycm9yKSkKQEAgLTM4NSw3
ICszODUsNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKIAogICAg
ICAgICAjIEFwcGVuZCB0ZXN0cyB3ZSdyZSBydW5uaW5nIHRvIHRoZSBleGlzdGluZyB0ZXN0c19y
dW4udHh0IGZpbGUuCiAgICAgICAgICMgVGhpcyBpcyBjcmVhdGVkIGluIHJ1bl93ZWJraXRfdGVz
dHMucHk6X1ByZXBhcmVMaXN0c0FuZFByaW50T3V0cHV0LgotICAgICAgICB0ZXN0c19ydW5fZmls
ZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKKyAg
ICAgICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5qb2luKHNl
bGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidGVzdHNfcnVuLnR4dCIpCiAgICAgICAgIHRlc3RzX3J1bl9maWxl
ID0gY29kZWNzLm9wZW4odGVzdHNfcnVuX2ZpbGVuYW1lLCAiYSIsICJ1dGYtOCIpCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxl
cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxl
cy5weQppbmRleCAyYzBhN2I2M2JmNjcxYWJjMWJkODI0YTgxZGVlZDEyNmY1ZmQ5ODMzLi4yOTAx
YTlmZDMzMzM5Njc2NzE5MTQ2NWI5NWMzYjA5Njg0ZTdhYjI4IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5CkBAIC01
OCw2ICs1OCw3IEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICAgIHBhdGhzOiBhIGxpc3Qg
b2YgY29tbWFuZCBsaW5lIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBsYXlvdXRfdGVzdHNfZGlyKCkK
ICAgICAgICAgICB0byBsaW1pdCB0aGUgc2VhcmNoIHRvLiBnbG9iIHBhdHRlcm5zIGFyZSBvay4K
ICAgICAiIiIKKyAgICBmcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KICAgICBnYXRoZXJfc3RhcnRfdGlt
ZSA9IHRpbWUudGltZSgpCiAgICAgcGF0aHNfdG9fd2FsayA9IHNldCgpCiAgICAgIyBpZiBwYXRo
cyBpcyBlbXB0eSwgcHJvdmlkZSBhIHByZS1kZWZpbmVkIGxpc3QuCkBAIC02NSw5ICs2Niw5IEBA
IGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICAgICAgX2xvZy5kZWJ1ZygiR2F0aGVyaW5nIHRl
c3RzIGZyb206ICVzIHJlbGF0aXZlIHRvICVzIiAlIChwYXRocywgcG9ydC5sYXlvdXRfdGVzdHNf
ZGlyKCkpKQogICAgICAgICBmb3IgcGF0aCBpbiBwYXRoczoKICAgICAgICAgICAgICMgSWYgdGhl
cmUncyBhbiAqIGluIHRoZSBuYW1lLCBhc3N1bWUgaXQncyBhIGdsb2IgcGF0dGVybi4KLSAgICAg
ICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHBhdGgp
CisgICAgICAgICAgICBwYXRoID0gZnMuam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgcGF0
aCkKICAgICAgICAgICAgIGlmIHBhdGguZmluZCgnKicpID4gLTE6Ci0gICAgICAgICAgICAgICAg
ZmlsZW5hbWVzID0gZ2xvYi5nbG9iKHBhdGgpCisgICAgICAgICAgICAgICAgZmlsZW5hbWVzID0g
ZnMuZ2xvYihwYXRoKQogICAgICAgICAgICAgICAgIHBhdGhzX3RvX3dhbGsudXBkYXRlKGZpbGVu
YW1lcykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGF0aHNfdG9fd2Fsay5h
ZGQocGF0aCkKQEAgLTc4LDggKzc5LDggQEAgZGVmIGZpbmQocG9ydCwgcGF0aHMpOgogICAgICMg
Tm93IHdhbGsgYWxsIHRoZSBwYXRocyBwYXNzZWQgaW4gb24gdGhlIGNvbW1hbmQgbGluZSBhbmQg
Z2V0IGZpbGVuYW1lcwogICAgIHRlc3RfZmlsZXMgPSBzZXQoKQogICAgIGZvciBwYXRoIGluIHBh
dGhzX3RvX3dhbGs6Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpIGFuZCBfaXNfdGVz
dF9maWxlKHBhdGgpOgotICAgICAgICAgICAgdGVzdF9maWxlcy5hZGQob3MucGF0aC5ub3JtcGF0
aChwYXRoKSkKKyAgICAgICAgaWYgZnMuaXNmaWxlKHBhdGgpIGFuZCBfaXNfdGVzdF9maWxlKGZz
LCBwYXRoKToKKyAgICAgICAgICAgIHRlc3RfZmlsZXMuYWRkKGZzLm5vcm1wYXRoKHBhdGgpKQog
ICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4g
b3Mud2FsayhwYXRoKToKQEAgLTk1LDkgKzk2LDkgQEAgZGVmIGZpbmQocG9ydCwgcGF0aHMpOgog
ICAgICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZShkaXJlY3RvcnkpCiAKICAgICAgICAgICAg
IGZvciBmaWxlbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBpZiBfaXNfdGVzdF9maWxl
KGZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4o
cm9vdCwgZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5u
b3JtcGF0aChmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBpZiBfaXNfdGVzdF9maWxlKGZzLCBm
aWxlbmFtZSk6CisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZnMuam9pbihyb290LCBm
aWxlbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmcy5ub3JtcGF0aChmaWxl
bmFtZSkKICAgICAgICAgICAgICAgICAgICAgdGVzdF9maWxlcy5hZGQoZmlsZW5hbWUpCiAKICAg
ICBnYXRoZXJfdGltZSA9IHRpbWUudGltZSgpIC0gZ2F0aGVyX3N0YXJ0X3RpbWUKQEAgLTEwNiwx
MCArMTA3LDEwIEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICByZXR1cm4gdGVzdF9maWxl
cwogCiAKLWRlZiBfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZW5hbWUpOgorZGVmIF9oYXNf
c3VwcG9ydGVkX2V4dGVuc2lvbihmcywgZmlsZW5hbWUpOgogICAgICIiIlJldHVybiB0cnVlIGlm
IGZpbGVuYW1lIGlzIG9uZSBvZiB0aGUgZmlsZSBleHRlbnNpb25zIHdlIHdhbnQgdG8gcnVuIGEK
ICAgICB0ZXN0IG9uLiIiIgotICAgIGV4dGVuc2lvbiA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5h
bWUpWzFdCisgICAgZXh0ZW5zaW9uID0gZnMuc3BsaXRleHQoZmlsZW5hbWUpWzFdCiAgICAgcmV0
dXJuIGV4dGVuc2lvbiBpbiBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucwogCiAKQEAgLTEyMiw3
ICsxMjMsNyBAQCBkZWYgX2lzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZW5hbWUpOgogICAgIHJl
dHVybiBGYWxzZQogCiAKLWRlZiBfaXNfdGVzdF9maWxlKGZpbGVuYW1lKToKK2RlZiBfaXNfdGVz
dF9maWxlKGZzLCBmaWxlbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIGZpbGVuYW1l
IHBvaW50cyB0byBhIHRlc3QgZmlsZS4iIiIKLSAgICByZXR1cm4gKF9oYXNfc3VwcG9ydGVkX2V4
dGVuc2lvbihmaWxlbmFtZSkgYW5kCisgICAgcmV0dXJuIChfaGFzX3N1cHBvcnRlZF9leHRlbnNp
b24oZnMsIGZpbGVuYW1lKSBhbmQKICAgICAgICAgICAgIG5vdCBfaXNfcmVmZXJlbmNlX2h0bWxf
ZmlsZShmaWxlbmFtZSkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkKaW5kZXggODM1MjVj
ODIzZjM5NDJmMzc0MzdmODM0Mzc1ZDE2MDcwNDNjM2E0MS4uNTY5NzM5MTE5MzVhMzQwODM5ZWFm
ZjhiNDc5MzA1MDkwZGIzNDE4MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weQpAQCAt
NjQsMTEgKzY0LDEzIEBAIGNsYXNzIFRlc3RGaWxlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzLCBzZXQoW10pKQogCiAgICAgZGVmIHRlc3Rf
aXNfdGVzdF9maWxlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9maWxlcy5f
aXNfdGVzdF9maWxlKCdmb28uaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9m
aWxlcy5faXNfdGVzdF9maWxlKCdmb28uc2h0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby5wbmcnKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoJ2Zvby1leHBlY3RlZC5odG1sJykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKCdmb28tZXhw
ZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKQorICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKKyAgICAg
ICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2Zp
bGVzLl9pc190ZXN0X2ZpbGUoZnMsICdmb28uaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnZm9vLnNodG1sJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnZm9vLnBuZycpKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJ2Zv
by1leHBlY3RlZC5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5f
aXNfdGVzdF9maWxlKGZzLCAnZm9vLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnKSkKIAogCiBpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKaW5k
ZXggNGI5NmIzYWJmZTFiNTk1MTIyODExNTBmZDZmZWVhMDYwMzU0NGE5My4uYWQ2NTAxNmVmMjU0
NDM1ZTU0ZGNhMTlhMjZjZWYxNjA5MTIwZmU5MCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9i
YXNlLnB5CkBAIC0zMiwxMyArMzIsOSBAQAogQWxzbyBkZWZpbmVzIHRoZSBUZXN0QXJndW1lbnRz
ICJzdHJ1Y3QiIHRvIHBhc3MgdGhlbSBhZGRpdGlvbmFsIGFyZ3VtZW50cy4KICIiIgogCi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9y
dCBjZ2kKIGltcG9ydCBlcnJubwogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcy5wYXRoCiAKIF9s
b2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLnRlc3RfdHlwZXMu
dGVzdF90eXBlX2Jhc2UiKQogCkBAIC04Niw5ICs4MiwxMCBAQCBjbGFzcyBUZXN0VHlwZUJhc2Uo
b2JqZWN0KToKICAgICBkZWYgX21ha2Vfb3V0cHV0X2RpcmVjdG9yeShzZWxmLCBmaWxlbmFtZSk6
CiAgICAgICAgICIiIkNyZWF0ZXMgdGhlIG91dHB1dCBkaXJlY3RvcnkgKGlmIG5lZWRlZCkgZm9y
IGEgZ2l2ZW4gdGVzdAogICAgICAgICBmaWxlbmFtZS4iIiIKLSAgICAgICAgb3V0cHV0X2ZpbGVu
YW1lID0gb3MucGF0aC5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0X2RpciwKKyAgICAgICAgZnMgPSBz
ZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIG91dHB1dF9maWxlbmFtZSA9IGZzLmpvaW4o
c2VsZi5fcm9vdF9vdXRwdXRfZGlyLAogICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90
ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKSkKLSAgICAgICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2Rp
cmVjdG9yeShvcy5wYXRoLnNwbGl0KG91dHB1dF9maWxlbmFtZSlbMF0pCisgICAgICAgIGZzLm1h
eWJlX21ha2VfZGlyZWN0b3J5KGZzLmRpcm5hbWUob3V0cHV0X2ZpbGVuYW1lKSkKIAogICAgIGRl
ZiBfc2F2ZV9iYXNlbGluZV9kYXRhKHNlbGYsIGZpbGVuYW1lLCBkYXRhLCBtb2RpZmllciwgZW5j
b2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5l
PVRydWUpOgpAQCAtMTA2LDIxICsxMDMsMjIgQEAgY2xhc3MgVGVzdFR5cGVCYXNlKG9iamVjdCk6
CiAgICAgICAgICAgICBiYXNlbGluZSwgb3IgdXBkYXRlIHRoZSBleGlzdGluZyBvbmUKICAgICAg
ICAgIiIiCiAKKyAgICAgICAgcG9ydCA9IHNlbGYuX3BvcnQKKyAgICAgICAgZnMgPSBzZWxmLl9w
b3J0Ll9maWxlc3lzdGVtCiAgICAgICAgIGlmIGdlbmVyYXRlX25ld19iYXNlbGluZToKLSAgICAg
ICAgICAgIHJlbGF0aXZlX2RpciA9IG9zLnBhdGguZGlybmFtZSgKLSAgICAgICAgICAgICAgICBz
ZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpKQotICAgICAgICAgICAg
YmFzZWxpbmVfcGF0aCA9IHNlbGYuX3BvcnQuYmFzZWxpbmVfcGF0aCgpCi0gICAgICAgICAgICBv
dXRwdXRfZGlyID0gb3MucGF0aC5qb2luKGJhc2VsaW5lX3BhdGgsIHJlbGF0aXZlX2RpcikKLSAg
ICAgICAgICAgIG91dHB1dF9maWxlID0gb3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLnNwbGl0ZXh0
KGZpbGVuYW1lKVswXSArCisgICAgICAgICAgICByZWxhdGl2ZV9kaXIgPSBmcy5kaXJuYW1lKHBv
cnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkpCisgICAgICAgICAgICBiYXNlbGlu
ZV9wYXRoID0gcG9ydC5iYXNlbGluZV9wYXRoKCkKKyAgICAgICAgICAgIG91dHB1dF9kaXIgPSBm
cy5qb2luKGJhc2VsaW5lX3BhdGgsIHJlbGF0aXZlX2RpcikKKyAgICAgICAgICAgIG91dHB1dF9m
aWxlID0gZnMuYmFzZW5hbWUoZnMuc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKICAgICAgICAgICAg
ICAgICBzZWxmLkZJTEVOQU1FX1NVRkZJWF9FWFBFQ1RFRCArIG1vZGlmaWVyKQotICAgICAgICAg
ICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeShvdXRwdXRfZGlyKQotICAgICAgICAg
ICAgb3V0cHV0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2Rpciwgb3V0cHV0X2ZpbGUpCisg
ICAgICAgICAgICBmcy5tYXliZV9tYWtlX2RpcmVjdG9yeShvdXRwdXRfZGlyKQorICAgICAgICAg
ICAgb3V0cHV0X3BhdGggPSBmcy5qb2luKG91dHB1dF9kaXIsIG91dHB1dF9maWxlKQogICAgICAg
ICAgICAgX2xvZy5kZWJ1Zygnd3JpdGluZyBuZXcgYmFzZWxpbmUgcmVzdWx0ICIlcyInICUgKG91
dHB1dF9wYXRoKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91dHB1dF9wYXRoID0gc2Vs
Zi5fcG9ydC5leHBlY3RlZF9maWxlbmFtZShmaWxlbmFtZSwgbW9kaWZpZXIpCisgICAgICAgICAg
ICBvdXRwdXRfcGF0aCA9IHBvcnQuZXhwZWN0ZWRfZmlsZW5hbWUoZmlsZW5hbWUsIG1vZGlmaWVy
KQogICAgICAgICAgICAgX2xvZy5kZWJ1ZygncmVzZXR0aW5nIGJhc2VsaW5lIHJlc3VsdCAiJXMi
JyAlIG91dHB1dF9wYXRoKQogCi0gICAgICAgIHNlbGYuX3BvcnQudXBkYXRlX2Jhc2VsaW5lKG91
dHB1dF9wYXRoLCBkYXRhLCBlbmNvZGluZykKKyAgICAgICAgcG9ydC51cGRhdGVfYmFzZWxpbmUo
b3V0cHV0X3BhdGgsIGRhdGEsIGVuY29kaW5nKQogCiAgICAgZGVmIG91dHB1dF9maWxlbmFtZShz
ZWxmLCBmaWxlbmFtZSwgbW9kaWZpZXIpOgogICAgICAgICAiIiJSZXR1cm5zIGEgZmlsZW5hbWUg
aW5zaWRlIHRoZSBvdXRwdXQgZGlyIHRoYXQgY29udGFpbnMgbW9kaWZpZXIuCkBAIC0xMzYsOSAr
MTM0LDEwIEBAIGNsYXNzIFRlc3RUeXBlQmFzZShvYmplY3QpOgogICAgICAgICBSZXR1cm46CiAg
ICAgICAgICAgVGhlIGFic29sdXRlIHdpbmRvd3MgcGF0aCB0byB0aGUgb3V0cHV0IGZpbGVuYW1l
CiAgICAgICAgICIiIgotICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5fcm9vdF9vdXRwdXRfZGlyLAorICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0K
KyAgICAgICAgb3V0cHV0X2ZpbGVuYW1lID0gZnMuam9pbihzZWxmLl9yb290X291dHB1dF9kaXIs
CiAgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUp
KQotICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChvdXRwdXRfZmlsZW5hbWUpWzBdICsg
bW9kaWZpZXIKKyAgICAgICAgcmV0dXJuIGZzLnNwbGl0ZXh0KG91dHB1dF9maWxlbmFtZSlbMF0g
KyBtb2RpZmllcgogCiAgICAgZGVmIGNvbXBhcmVfb3V0cHV0KHNlbGYsIHBvcnQsIGZpbGVuYW1l
LCB0ZXN0X2FyZ3MsIGFjdHVhbF90ZXN0X291dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkX3Rlc3Rfb3V0cHV0KToKQEAgLTE2NSwxMSArMTY0LDExIEBAIGNsYXNzIFRlc3RU
eXBlQmFzZShvYmplY3QpOgogICAgIGRlZiBfd3JpdGVfaW50b19maWxlX2F0X3BhdGgoc2VsZiwg
ZmlsZV9wYXRoLCBjb250ZW50cywgZW5jb2RpbmcpOgogICAgICAgICAiIiJUaGlzIG1ldGhvZCBh
c3N1bWVzIHRoYXQgYnl0ZV9hcnJheSBpcyBhbHJlYWR5IGVuY29kZWQKICAgICAgICAgaW50byB0
aGUgcmlnaHQgZm9ybWF0LiIiIgotICAgICAgICBvcGVuX21vZGUgPSAndycKKyAgICAgICAgZnMg
PSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCiAgICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6Ci0g
ICAgICAgICAgICBvcGVuX21vZGUgPSAndytiJwotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGZp
bGVfcGF0aCwgb3Blbl9tb2RlLCBlbmNvZGluZz1lbmNvZGluZykgYXMgZmlsZToKLSAgICAgICAg
ICAgIGZpbGUud3JpdGUoY29udGVudHMpCisgICAgICAgICAgICBmcy53cml0ZV9iaW5hcnlfZmls
ZShmaWxlX3BhdGgsIGNvbnRlbnRzKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGZzLndy
aXRlX3RleHRfZmlsZShmaWxlX3BhdGgsIGNvbnRlbnRzKQogCiAgICAgZGVmIHdyaXRlX291dHB1
dF9maWxlcyhzZWxmLCBmaWxlbmFtZSwgZmlsZV90eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0LCBleHBlY3RlZCwgZW5jb2RpbmcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79461</attachid>
            <date>2011-01-19 12:17:16 -0800</date>
            <delta_ts>2011-01-19 12:17:16 -0800</delta_ts>
            <desc>fix missing parameter in MockFileSystem.basename()</desc>
            <filename>bug-52604-20110119121715.patch</filename>
            <type>text/plain</type>
            <size>14951</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4Y2Jm
Y2MzZWIwYzA0NzljM2JkMGEzODgwNWJiYzY1YWYwNDJjYmQ1Li40ZTlmNzFiYzZkYjlhNGQzZTll
MmU2YzIwMDgzNzg2NWQ5MTYxZGFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDEtMTggIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hhbmdlIG1vcmUgbW9kdWxlcyBpbiB0aGUgbGF5b3V0LXRlc3Rz
IGNvZGUgdG8gdXNlIHRoZQorICAgICAgICBmaWxlc3lzdGVtIHdyYXBwZXIgZm9yIGNsZWFuZXIg
dW5pdCB0ZXN0aW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoZSBnbG9iKCkg
d3JhcHBlciB0byB0aGUgZmlsZXN5c3RlbQorICAgICAgICBhYnN0cmFjdGlvbi4KKyAgICAgICAg
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjYwNAor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVz
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9m
aWxlc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21v
Y2sucHk6CisKIDIwMTEtMDEtMTggIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4IDUzZTk3OTZm
MTVlMzU3ZmZmMjE5MjUyOTg0NDQwNzdmZmRiMjU3OWEuLmQ0NWQ0YzFiMWY2OTZmNDJlMWUzZWUz
NDhmNGUyMjFmYWNmOGQzODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CkBAIC0zMyw2ICszMyw3IEBAIGZyb20gX19mdXR1cmVf
XyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwogaW1w
b3J0IGV4Y2VwdGlvbnMKK2ltcG9ydCBnbG9iCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKIGlt
cG9ydCB0ZW1wZmlsZQpAQCAtNDUsNiArNDYsNyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6
CiAgICAgb3IgcmVsYXRpdmUuIiIiCiAKICAgICBkZWYgYmFzZW5hbWUoc2VsZiwgcGF0aCk6Cisg
ICAgICAgICIiIldyYXBzIG9zLnBhdGguYmFzZW5hbWUoKS4iIiIKICAgICAgICAgcmV0dXJuIG9z
LnBhdGguYmFzZW5hbWUocGF0aCkKIAogICAgIGRlZiBjb3B5ZmlsZShzZWxmLCBzb3VyY2UsIGRl
c3RpbmF0aW9uKToKQEAgLTUzLDYgKzU1LDcgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgog
ICAgICAgICBzaHV0aWwuY29weWZpbGUoc291cmNlLCBkZXN0aW5hdGlvbikKIAogICAgIGRlZiBk
aXJuYW1lKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJXcmFwcyBvcy5wYXRoLmRpcm5hbWUoKS4i
IiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQogCiAgICAgZGVmIGV4aXN0
cyhzZWxmLCBwYXRoKToKQEAgLTY1LDYgKzY4LDEwIEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0
KToKICAgICAgICAgICAgIGZvciAocGF0aF90b19maWxlLCBfLCBmaWxlbmFtZXMpIGluIG9zLndh
bGsocGF0aCkKICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNdCiAKKyAgICBk
ZWYgZ2xvYihzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiV3JhcHMgZ2xvYi5nbG9iKCkuIiIiCisg
ICAgICAgIHJldHVybiBnbG9iLmdsb2IocGF0aCkKKwogICAgIGRlZiBpc2ZpbGUoc2VsZiwgcGF0
aCk6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBwYXRoIHJlZmVycyB0byBhIGZpbGUu
IiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmlzZmlsZShwYXRoKQpAQCAtMTI1LDYgKzEzMiw3
IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgc2h1dGlsLm1vdmUoc3JjLCBk
ZXN0KQogCiAgICAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJXcmFwcyBv
cy5wYXRoLm5vcm1wYXRoKCkuIiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKHBh
dGgpCiAKICAgICBkZWYgb3Blbl9iaW5hcnlfdGVtcGZpbGUoc2VsZiwgc3VmZml4KToKQEAgLTE4
OCw3ICsxOTYsNyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1
cm4gZi5yZWFkKCkKIAogICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKLSAgICAgICAgIiIi
UmV0dXJuIChkaXJuYW1lLCBiYXNlbmFtZSArIGV4dCkuIiIiCisgICAgICAgICIiIlJldHVybiAo
ZGlybmFtZSArIG9zLnNlcCArIGJhc2VuYW1lLCAnLicgKyBleHQpIiIiCiAgICAgICAgIHJldHVy
biBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpCiAKICAgICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2Vs
ZiwgcGF0aCwgY29udGVudHMpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKaW5kZXggMTBhY2MzYjQyZGViNTBlNTQ5
MzJjMWM2N2E0NzIzZGRmZTgzMjg0YS4uN2M2ZWM1OTA5MDJhNTU3ODc2MmVmNjE4MjJkOWQyOTZh
MTEyOGNmMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2ZpbGVzeXN0ZW1fbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIE1vY2tGaWxl
U3lzdGVtKG9iamVjdCk6CiAgICAgICAgIGlkeCA9IHBhdGgucmZpbmQoJy8nKQogICAgICAgICBy
ZXR1cm4gKHBhdGhbMDppZHhdLCBwYXRoW2lkeCArIDE6XSkKIAotICAgIGRlZiBiYXNlbmFtZShz
ZWxmKToKKyAgICBkZWYgYmFzZW5hbWUoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBzZWxm
Ll9zcGxpdChwYXRoKVsxXQogCiAgICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNvdXJjZSwgZGVzdGlu
YXRpb24pOgpAQCAtNzYsNiArNzYsMTQgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToK
ICAgICAgICAgICAgIHBhdGggKz0gJy8nCiAgICAgICAgIHJldHVybiBbZmlsZSBmb3IgZmlsZSBp
biBzZWxmLmZpbGVzIGlmIGZpbGUuc3RhcnRzd2l0aChwYXRoKV0KIAorICAgIGRlZiBnbG9iKHNl
bGYsIHBhdGgpOgorICAgICAgICAjIEZJWE1FOiBUaGlzIG9ubHkgaGFuZGxlcyBhIHdpbGRjYXJk
ICcqJyBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoLgorICAgICAgICAjIE1heWJlIGl0IHNob3VsZCBo
YW5kbGUgbW9yZT8KKyAgICAgICAgaWYgcGF0aFstMV0gPT0gJyonOgorICAgICAgICAgICAgcmV0
dXJuIFtmIGZvciBmIGluIHNlbGYuZmlsZXMgaWYgZi5zdGFydHN3aXRoKHBhdGhbOi0xXSldCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gW2YgZm9yIGYgaW4gc2VsZi5maWxlcyBp
ZiBmID09IHBhdGhdCisKICAgICBkZWYgaXNmaWxlKHNlbGYsIHBhdGgpOgogICAgICAgICByZXR1
cm4gcGF0aCBpbiBzZWxmLmZpbGVzIGFuZCBzZWxmLmZpbGVzW3BhdGhdIGlzIG5vdCBOb25lCiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkK
aW5kZXggMmJiMmQwMjcyZGI5OWJiNzBlYWZkODljM2ZkMzFmNmVmZTI5ZmZmZC4uNGQ2YjVmNmQ1
ZWNjZGIwNWNmMGY5OGEwMjEyMDdjMjg1OWM3Y2IyNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90
aHJlYWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkKQEAgLTg2LDYgKzg2LDcgQEAgZGVm
IF9wcm9jZXNzX291dHB1dChwb3J0LCBvcHRpb25zLCB0ZXN0X2lucHV0LCB0ZXN0X3R5cGVzLCB0
ZXN0X2FyZ3MsCiAgICAgUmV0dXJuczogYSBUZXN0UmVzdWx0IG9iamVjdAogICAgICIiIgogICAg
IGZhaWx1cmVzID0gW10KKyAgICBmcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KIAogICAgIGlmIHRlc3Rf
b3V0cHV0LmNyYXNoOgogICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWls
dXJlQ3Jhc2goKSkKQEAgLTk2LDExICs5NywxMCBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQs
IG9wdGlvbnMsIHRlc3RfaW5wdXQsIHRlc3RfdHlwZXMsIHRlc3RfYXJncywKICAgICBpZiB0ZXN0
X291dHB1dC5jcmFzaDoKICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgU3RhY2t0cmFjZSBmb3IgJXM6
XG4lcyIgJSAod29ya2VyX25hbWUsIHRlc3RfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9vdXRwdXQuZXJyb3IpKQotICAgICAgICBm
aWxlbmFtZSA9IG9zLnBhdGguam9pbihvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LCB0ZXN0X25h
bWUpCi0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMF0gKyAi
LXN0YWNrLnR4dCIKLSAgICAgICAgcG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeShvcy5wYXRoLnNw
bGl0KGZpbGVuYW1lKVswXSkKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlbmFtZSwgIndi
IiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAgICAgICAgIGZpbGUud3JpdGUodGVzdF9vdXRwdXQu
ZXJyb3IpCisgICAgICAgIGZpbGVuYW1lID0gZnMuam9pbihvcHRpb25zLnJlc3VsdHNfZGlyZWN0
b3J5LCB0ZXN0X25hbWUpCisgICAgICAgIGZpbGVuYW1lID0gZnMuc3BsaXRleHQoZmlsZW5hbWUp
WzBdICsgIi1zdGFjay50eHQiCisgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KGZzLmRp
cm5hbWUoZmlsZW5hbWUpKQorICAgICAgICBmcy53cml0ZV90ZXh0X2ZpbGUoZmlsZW5hbWUsIHRl
c3Rfb3V0cHV0LmVycm9yKQogICAgIGVsaWYgdGVzdF9vdXRwdXQuZXJyb3I6CiAgICAgICAgIF9s
b2cuZGVidWcoIiVzICVzIG91dHB1dCBzdGRlcnIgbGluZXM6XG4lcyIgJSAod29ya2VyX25hbWUs
IHRlc3RfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0X291dHB1dC5lcnJvcikpCkBAIC0zODUsNyArMzg1LDcgQEAgY2xhc3Mg
VGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAKICAgICAgICAgIyBBcHBlbmQgdGVz
dHMgd2UncmUgcnVubmluZyB0byB0aGUgZXhpc3RpbmcgdGVzdHNfcnVuLnR4dCBmaWxlLgogICAg
ICAgICAjIFRoaXMgaXMgY3JlYXRlZCBpbiBydW5fd2Via2l0X3Rlc3RzLnB5Ol9QcmVwYXJlTGlz
dHNBbmRQcmludE91dHB1dC4KLSAgICAgICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0gb3MucGF0aC5q
b2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgIHRlc3RzX3J1bl9m
aWxlbmFtZSA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9vcHRpb25zLnJlc3Vs
dHNfZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRlc3RzX3J1bi50eHQiKQogICAgICAgICB0ZXN0c19ydW5fZmlsZSA9IGNvZGVjcy5vcGVuKHRl
c3RzX3J1bl9maWxlbmFtZSwgImEiLCAidXRmLTgiKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkKaW5kZXggMmMwYTdi
NjNiZjY3MWFiYzFiZDgyNGE4MWRlZWQxMjZmNWZkOTgzMy4uMjkwMWE5ZmQzMzMzOTY3NjcxOTE0
NjViOTVjM2IwOTY4NGU3YWIyOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQpAQCAtNTgsNiArNTgsNyBAQCBkZWYg
ZmluZChwb3J0LCBwYXRocyk6CiAgICAgICBwYXRoczogYSBsaXN0IG9mIGNvbW1hbmQgbGluZSBw
YXRocyByZWxhdGl2ZSB0byB0aGUgbGF5b3V0X3Rlc3RzX2RpcigpCiAgICAgICAgICAgdG8gbGlt
aXQgdGhlIHNlYXJjaCB0by4gZ2xvYiBwYXR0ZXJucyBhcmUgb2suCiAgICAgIiIiCisgICAgZnMg
PSBwb3J0Ll9maWxlc3lzdGVtCiAgICAgZ2F0aGVyX3N0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQog
ICAgIHBhdGhzX3RvX3dhbGsgPSBzZXQoKQogICAgICMgaWYgcGF0aHMgaXMgZW1wdHksIHByb3Zp
ZGUgYSBwcmUtZGVmaW5lZCBsaXN0LgpAQCAtNjUsOSArNjYsOSBAQCBkZWYgZmluZChwb3J0LCBw
YXRocyk6CiAgICAgICAgIF9sb2cuZGVidWcoIkdhdGhlcmluZyB0ZXN0cyBmcm9tOiAlcyByZWxh
dGl2ZSB0byAlcyIgJSAocGF0aHMsIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpKSkKICAgICAgICAg
Zm9yIHBhdGggaW4gcGF0aHM6CiAgICAgICAgICAgICAjIElmIHRoZXJlJ3MgYW4gKiBpbiB0aGUg
bmFtZSwgYXNzdW1lIGl0J3MgYSBnbG9iIHBhdHRlcm4uCi0gICAgICAgICAgICBwYXRoID0gb3Mu
cGF0aC5qb2luKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCBwYXRoKQorICAgICAgICAgICAgcGF0
aCA9IGZzLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHBhdGgpCiAgICAgICAgICAgICBp
ZiBwYXRoLmZpbmQoJyonKSA+IC0xOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lcyA9IGdsb2Iu
Z2xvYihwYXRoKQorICAgICAgICAgICAgICAgIGZpbGVuYW1lcyA9IGZzLmdsb2IocGF0aCkKICAg
ICAgICAgICAgICAgICBwYXRoc190b193YWxrLnVwZGF0ZShmaWxlbmFtZXMpCiAgICAgICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgICAgIHBhdGhzX3RvX3dhbGsuYWRkKHBhdGgpCkBAIC03OCw4
ICs3OSw4IEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICAjIE5vdyB3YWxrIGFsbCB0aGUg
cGF0aHMgcGFzc2VkIGluIG9uIHRoZSBjb21tYW5kIGxpbmUgYW5kIGdldCBmaWxlbmFtZXMKICAg
ICB0ZXN0X2ZpbGVzID0gc2V0KCkKICAgICBmb3IgcGF0aCBpbiBwYXRoc190b193YWxrOgotICAg
ICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKSBhbmQgX2lzX3Rlc3RfZmlsZShwYXRoKToKLSAg
ICAgICAgICAgIHRlc3RfZmlsZXMuYWRkKG9zLnBhdGgubm9ybXBhdGgocGF0aCkpCisgICAgICAg
IGlmIGZzLmlzZmlsZShwYXRoKSBhbmQgX2lzX3Rlc3RfZmlsZShmcywgcGF0aCk6CisgICAgICAg
ICAgICB0ZXN0X2ZpbGVzLmFkZChmcy5ub3JtcGF0aChwYXRoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlCiAKICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0aCk6CkBA
IC05NSw5ICs5Niw5IEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICAgICAgICAgICAgICAg
ICAgZGlycy5yZW1vdmUoZGlyZWN0b3J5KQogCiAgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4g
ZmlsZXM6Ci0gICAgICAgICAgICAgICAgaWYgX2lzX3Rlc3RfZmlsZShmaWxlbmFtZSk6Ci0gICAg
ICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHJvb3QsIGZpbGVuYW1lKQot
ICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgoZmlsZW5hbWUp
CisgICAgICAgICAgICAgICAgaWYgX2lzX3Rlc3RfZmlsZShmcywgZmlsZW5hbWUpOgorICAgICAg
ICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZzLmpvaW4ocm9vdCwgZmlsZW5hbWUpCisgICAgICAg
ICAgICAgICAgICAgIGZpbGVuYW1lID0gZnMubm9ybXBhdGgoZmlsZW5hbWUpCiAgICAgICAgICAg
ICAgICAgICAgIHRlc3RfZmlsZXMuYWRkKGZpbGVuYW1lKQogCiAgICAgZ2F0aGVyX3RpbWUgPSB0
aW1lLnRpbWUoKSAtIGdhdGhlcl9zdGFydF90aW1lCkBAIC0xMDYsMTAgKzEwNywxMCBAQCBkZWYg
ZmluZChwb3J0LCBwYXRocyk6CiAgICAgcmV0dXJuIHRlc3RfZmlsZXMKIAogCi1kZWYgX2hhc19z
dXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVuYW1lKToKK2RlZiBfaGFzX3N1cHBvcnRlZF9leHRlbnNp
b24oZnMsIGZpbGVuYW1lKToKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiBmaWxlbmFtZSBpcyBvbmUg
b2YgdGhlIGZpbGUgZXh0ZW5zaW9ucyB3ZSB3YW50IHRvIHJ1biBhCiAgICAgdGVzdCBvbi4iIiIK
LSAgICBleHRlbnNpb24gPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVsxXQorICAgIGV4dGVu
c2lvbiA9IGZzLnNwbGl0ZXh0KGZpbGVuYW1lKVsxXQogICAgIHJldHVybiBleHRlbnNpb24gaW4g
X3N1cHBvcnRlZF9maWxlX2V4dGVuc2lvbnMKIAogCkBAIC0xMjIsNyArMTIzLDcgQEAgZGVmIF9p
c19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKToKICAgICByZXR1cm4gRmFsc2UKIAogCi1k
ZWYgX2lzX3Rlc3RfZmlsZShmaWxlbmFtZSk6CitkZWYgX2lzX3Rlc3RfZmlsZShmcywgZmlsZW5h
bWUpOgogICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBmaWxlbmFtZSBwb2ludHMgdG8gYSB0ZXN0
IGZpbGUuIiIiCi0gICAgcmV0dXJuIChfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZW5hbWUp
IGFuZAorICAgIHJldHVybiAoX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZzLCBmaWxlbmFtZSkg
YW5kCiAgICAgICAgICAgICBub3QgX2lzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZW5hbWUpKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0
X2ZpbGVzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CmluZGV4IDgzNTI1YzgyM2YzOTQyZjM3NDM3Zjgz
NDM3NWQxNjA3MDQzYzNhNDEuLjU2OTczOTExOTM1YTM0MDgzOWVhZmY4YjQ3OTMwNTA5MGRiMzQx
ODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
dGVzdF9maWxlc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkKQEAgLTY0LDExICs2NCwxMyBAQCBj
bGFzcyBUZXN0RmlsZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0ZXN0cywgc2V0KFtdKSkKIAogICAgIGRlZiB0ZXN0X2lzX3Rlc3RfZmlsZShzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZSgnZm9v
Lmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmls
ZSgnZm9vLnNodG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNf
dGVzdF9maWxlKCdmb28ucG5nJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxl
cy5faXNfdGVzdF9maWxlKCdmb28tZXhwZWN0ZWQuaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZSgnZm9vLWV4cGVjdGVkLW1pc21hdGNoLmh0
bWwnKSkKKyAgICAgICAgcG9ydCA9IGJhc2UuUG9ydCgpCisgICAgICAgIGZzID0gcG9ydC5fZmls
ZXN5c3RlbQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9maWxlcy5faXNfdGVzdF9maWxl
KGZzLCAnZm9vLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfZmlsZXMuX2lz
X3Rlc3RfZmlsZShmcywgJ2Zvby5zaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRl
c3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJ2Zvby5wbmcnKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICdmb28tZXhwZWN0ZWQuaHRtbCcp
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywg
J2Zvby1leHBlY3RlZC1taXNtYXRjaC5odG1sJykpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rl
c3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5CmluZGV4IDRiOTZiM2FiZmUxYjU5
NTEyMjgxMTUwZmQ2ZmVlYTA2MDM1NDRhOTMuLmFkNjUwMTZlZjI1NDQzNWU1NGRjYTE5YTI2Y2Vm
MTYwOTEyMGZlOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weQpAQCAtMzIsMTMg
KzMyLDkgQEAKIEFsc28gZGVmaW5lcyB0aGUgVGVzdEFyZ3VtZW50cyAic3RydWN0IiB0byBwYXNz
IHRoZW0gYWRkaXRpb25hbCBhcmd1bWVudHMuCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCB3aXRoX3N0YXRlbWVudAotCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgY2dpCiBpbXBvcnQgZXJy
bm8KIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MucGF0aAogCiBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5cGVzLnRlc3RfdHlwZV9iYXNlIikK
IApAQCAtODYsOSArODIsMTAgQEAgY2xhc3MgVGVzdFR5cGVCYXNlKG9iamVjdCk6CiAgICAgZGVm
IF9tYWtlX291dHB1dF9kaXJlY3Rvcnkoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAiIiJDcmVh
dGVzIHRoZSBvdXRwdXQgZGlyZWN0b3J5IChpZiBuZWVkZWQpIGZvciBhIGdpdmVuIHRlc3QKICAg
ICAgICAgZmlsZW5hbWUuIiIiCi0gICAgICAgIG91dHB1dF9maWxlbmFtZSA9IG9zLnBhdGguam9p
bihzZWxmLl9yb290X291dHB1dF9kaXIsCisgICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5
c3RlbQorICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBmcy5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0
X2RpciwKICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxl
bmFtZSkpCi0gICAgICAgIHNlbGYuX3BvcnQubWF5YmVfbWFrZV9kaXJlY3Rvcnkob3MucGF0aC5z
cGxpdChvdXRwdXRfZmlsZW5hbWUpWzBdKQorICAgICAgICBmcy5tYXliZV9tYWtlX2RpcmVjdG9y
eShmcy5kaXJuYW1lKG91dHB1dF9maWxlbmFtZSkpCiAKICAgICBkZWYgX3NhdmVfYmFzZWxpbmVf
ZGF0YShzZWxmLCBmaWxlbmFtZSwgZGF0YSwgbW9kaWZpZXIsIGVuY29kaW5nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlX25ld19iYXNlbGluZT1UcnVlKToKQEAgLTEwNiwy
MSArMTAzLDIyIEBAIGNsYXNzIFRlc3RUeXBlQmFzZShvYmplY3QpOgogICAgICAgICAgICAgYmFz
ZWxpbmUsIG9yIHVwZGF0ZSB0aGUgZXhpc3Rpbmcgb25lCiAgICAgICAgICIiIgogCisgICAgICAg
IHBvcnQgPSBzZWxmLl9wb3J0CisgICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQog
ICAgICAgICBpZiBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU6Ci0gICAgICAgICAgICByZWxhdGl2ZV9k
aXIgPSBvcy5wYXRoLmRpcm5hbWUoCi0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2
ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKSkKLSAgICAgICAgICAgIGJhc2VsaW5lX3BhdGggPSBz
ZWxmLl9wb3J0LmJhc2VsaW5lX3BhdGgoKQotICAgICAgICAgICAgb3V0cHV0X2RpciA9IG9zLnBh
dGguam9pbihiYXNlbGluZV9wYXRoLCByZWxhdGl2ZV9kaXIpCi0gICAgICAgICAgICBvdXRwdXRf
ZmlsZSA9IG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMF0gKwor
ICAgICAgICAgICAgcmVsYXRpdmVfZGlyID0gZnMuZGlybmFtZShwb3J0LnJlbGF0aXZlX3Rlc3Rf
ZmlsZW5hbWUoZmlsZW5hbWUpKQorICAgICAgICAgICAgYmFzZWxpbmVfcGF0aCA9IHBvcnQuYmFz
ZWxpbmVfcGF0aCgpCisgICAgICAgICAgICBvdXRwdXRfZGlyID0gZnMuam9pbihiYXNlbGluZV9w
YXRoLCByZWxhdGl2ZV9kaXIpCisgICAgICAgICAgICBvdXRwdXRfZmlsZSA9IGZzLmJhc2VuYW1l
KGZzLnNwbGl0ZXh0KGZpbGVuYW1lKVswXSArCiAgICAgICAgICAgICAgICAgc2VsZi5GSUxFTkFN
RV9TVUZGSVhfRVhQRUNURUQgKyBtb2RpZmllcikKLSAgICAgICAgICAgIHNlbGYuX3BvcnQubWF5
YmVfbWFrZV9kaXJlY3Rvcnkob3V0cHV0X2RpcikKLSAgICAgICAgICAgIG91dHB1dF9wYXRoID0g
b3MucGF0aC5qb2luKG91dHB1dF9kaXIsIG91dHB1dF9maWxlKQorICAgICAgICAgICAgZnMubWF5
YmVfbWFrZV9kaXJlY3Rvcnkob3V0cHV0X2RpcikKKyAgICAgICAgICAgIG91dHB1dF9wYXRoID0g
ZnMuam9pbihvdXRwdXRfZGlyLCBvdXRwdXRfZmlsZSkKICAgICAgICAgICAgIF9sb2cuZGVidWco
J3dyaXRpbmcgbmV3IGJhc2VsaW5lIHJlc3VsdCAiJXMiJyAlIChvdXRwdXRfcGF0aCkpCiAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBvdXRwdXRfcGF0aCA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRf
ZmlsZW5hbWUoZmlsZW5hbWUsIG1vZGlmaWVyKQorICAgICAgICAgICAgb3V0cHV0X3BhdGggPSBw
b3J0LmV4cGVjdGVkX2ZpbGVuYW1lKGZpbGVuYW1lLCBtb2RpZmllcikKICAgICAgICAgICAgIF9s
b2cuZGVidWcoJ3Jlc2V0dGluZyBiYXNlbGluZSByZXN1bHQgIiVzIicgJSBvdXRwdXRfcGF0aCkK
IAotICAgICAgICBzZWxmLl9wb3J0LnVwZGF0ZV9iYXNlbGluZShvdXRwdXRfcGF0aCwgZGF0YSwg
ZW5jb2RpbmcpCisgICAgICAgIHBvcnQudXBkYXRlX2Jhc2VsaW5lKG91dHB1dF9wYXRoLCBkYXRh
LCBlbmNvZGluZykKIAogICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZiwgZmlsZW5hbWUsIG1v
ZGlmaWVyKToKICAgICAgICAgIiIiUmV0dXJucyBhIGZpbGVuYW1lIGluc2lkZSB0aGUgb3V0cHV0
IGRpciB0aGF0IGNvbnRhaW5zIG1vZGlmaWVyLgpAQCAtMTM2LDkgKzEzNCwxMCBAQCBjbGFzcyBU
ZXN0VHlwZUJhc2Uob2JqZWN0KToKICAgICAgICAgUmV0dXJuOgogICAgICAgICAgIFRoZSBhYnNv
bHV0ZSB3aW5kb3dzIHBhdGggdG8gdGhlIG91dHB1dCBmaWxlbmFtZQogICAgICAgICAiIiIKLSAg
ICAgICAgb3V0cHV0X2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0X2Rp
ciwKKyAgICAgICAgZnMgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIG91dHB1dF9m
aWxlbmFtZSA9IGZzLmpvaW4oc2VsZi5fcm9vdF9vdXRwdXRfZGlyLAogICAgICAgICAgICAgc2Vs
Zi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKSkKLSAgICAgICAgcmV0dXJu
IG9zLnBhdGguc3BsaXRleHQob3V0cHV0X2ZpbGVuYW1lKVswXSArIG1vZGlmaWVyCisgICAgICAg
IHJldHVybiBmcy5zcGxpdGV4dChvdXRwdXRfZmlsZW5hbWUpWzBdICsgbW9kaWZpZXIKIAogICAg
IGRlZiBjb21wYXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFtZSwgdGVzdF9hcmdzLCBhY3R1
YWxfdGVzdF9vdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0X291
dHB1dCk6CkBAIC0xNjUsMTEgKzE2NCwxMSBAQCBjbGFzcyBUZXN0VHlwZUJhc2Uob2JqZWN0KToK
ICAgICBkZWYgX3dyaXRlX2ludG9fZmlsZV9hdF9wYXRoKHNlbGYsIGZpbGVfcGF0aCwgY29udGVu
dHMsIGVuY29kaW5nKToKICAgICAgICAgIiIiVGhpcyBtZXRob2QgYXNzdW1lcyB0aGF0IGJ5dGVf
YXJyYXkgaXMgYWxyZWFkeSBlbmNvZGVkCiAgICAgICAgIGludG8gdGhlIHJpZ2h0IGZvcm1hdC4i
IiIKLSAgICAgICAgb3Blbl9tb2RlID0gJ3cnCisgICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmls
ZXN5c3RlbQogICAgICAgICBpZiBlbmNvZGluZyBpcyBOb25lOgotICAgICAgICAgICAgb3Blbl9t
b2RlID0gJ3crYicKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlX3BhdGgsIG9wZW5fbW9k
ZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpIGFzIGZpbGU6Ci0gICAgICAgICAgICBmaWxlLndyaXRlKGNv
bnRlbnRzKQorICAgICAgICAgICAgZnMud3JpdGVfYmluYXJ5X2ZpbGUoZmlsZV9wYXRoLCBjb250
ZW50cykKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBmcy53cml0ZV90ZXh0X2ZpbGUoZmls
ZV9wYXRoLCBjb250ZW50cykKIAogICAgIGRlZiB3cml0ZV9vdXRwdXRfZmlsZXMoc2VsZiwgZmls
ZW5hbWUsIGZpbGVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwgZXhw
ZWN0ZWQsIGVuY29kaW5nLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>