<?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>32896</bug_id>
          
          <creation_ts>2009-12-23 01:36:03 -0800</creation_ts>
          <short_desc>[bzt] Bugzilla-tool should not try to get the username and password from Git when we&apos;re using SVN</short_desc>
          <delta_ts>2010-01-19 16:59:43 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>174553</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-23 01:36:03 -0800</bug_when>
    <thetext>Bugzilla-tool tries to read the username and password from Git to use on bugs.webkit.org. However, if neither Git is installed nor we are using Git as our SCM for WebKit then bugzilla-tool will die (with a trace). For instance, we may be using SVN.

We should make bugzilla-tool handle the case when the external command (i.e. git) cannot be found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174554</commentid>
    <comment_count>1</comment_count>
      <attachid>45425</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-23 01:37:36 -0800</bug_when>
    <thetext>Created attachment 45425
Trace

Python trace that occurred when I tried to land-patches 32799.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174555</commentid>
    <comment_count>2</comment_count>
      <attachid>45426</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-23 01:39:43 -0800</bug_when>
    <thetext>Created attachment 45426
Patch (Work in progress)

Work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174622</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-23 11:56:15 -0800</bug_when>
    <thetext>A couple comments:

1) We already have code that detects whether we&apos;re in a Git working copy: Git.in_working_directory in SCM.py.

2) We&apos;ll need a unittest.  You can look in credentials_unittest to see some examples.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174842</commentid>
    <comment_count>4</comment_count>
      <attachid>45483</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-24 22:37:10 -0800</bug_when>
    <thetext>Created attachment 45483
Patch (Work in progress)

Revised patch to use Git.in_working_directory.

Added argument cwd (current working directory) to Credentials constructor. Added unit test that uses SVNTestRepository to create a temporary SVN repo. before calling credentials.read_credentials.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174843</commentid>
    <comment_count>5</comment_count>
      <attachid>45484</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-24 22:39:55 -0800</bug_when>
    <thetext>Created attachment 45484
Patch (Work in progress)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175111</commentid>
    <comment_count>6</comment_count>
      <attachid>45538</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-27 17:32:09 -0800</bug_when>
    <thetext>Created attachment 45538
Patch with unit tests

Notice, calling Git.in_working_directory can throw an OSError errrno 2 exception if the git command is not found because we call Executive.run_command which does not catch the exception. Hence, this patch modifies Executive.run_command to catch these exceptions and passes them to the specified error handler/returns the error code of the exception/returns the error message of the exception.

For the credentials unit test, I assume SVN is installed as per &lt;http://webkit.org/building/tools.html&gt; at the time of this writing, since SVNTestRepository (imported from modules.scm_unittest) assumes it.

Also, I added a new unit test file, executive_unittest.py, to test the change made to Executive.run_command.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175112</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-27 17:37:31 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45538 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175114</commentid>
    <comment_count>8</comment_count>
      <attachid>45538</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-27 17:46:35 -0800</bug_when>
    <thetext>Comment on attachment 45538
Patch with unit tests

This looks good.  Thanks Dan!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175115</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-27 18:02:55 -0800</bug_when>
    <thetext>Committed in &lt;http://trac.webkit.org/changeset/52587&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182495</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-19 16:18:33 -0800</bug_when>
    <thetext>This broke a couple scm.py unit tests:
ERROR: test_error_handlers (webkitpy.scm_unittest.SCMClassTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/Users/eseidel/Projects/WebKit/WebKitTools/Scripts/webkitpy/scm_unittest.py&quot;, line 150, in test_error_handlers
    self.assertRaises(OSError, run_command, command_does_not_exist)
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/unittest.py&quot;, line 320, in failUnlessRaises
    callableObj(*args, **kwargs)
  File &quot;/Users/eseidel/Projects/WebKit/WebKitTools/Scripts/webkitpy/executive.py&quot;, line 70, in run_command
    return Executive().run_command(*args, **kwargs)
  File &quot;/Users/eseidel/Projects/WebKit/WebKitTools/Scripts/webkitpy/executive.py&quot;, line 142, in run_command
    (error_handler or self.default_error_handler)(script_error)
  File &quot;/Users/eseidel/Projects/WebKit/WebKitTools/Scripts/webkitpy/executive.py&quot;, line 113, in default_error_handler
    raise error
ScriptError: Failed to run &quot;[&apos;does_not_exist&apos;, &apos;invalid_option&apos;]&quot; exit_code: 2

I&apos;m not sure catching OSError here is a good idea.  It turns missing scripts into &quot;exit code 2&quot; which happens to be the same as QueueEngine.handled_error_code = 2

We obviously could change handled_error_code....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182543</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-19 16:59:43 -0800</bug_when>
    <thetext>Will look into this issue.

(In reply to comment #10)
&gt; This broke a couple scm.py unit tests:
&gt; ERROR: test_error_handlers (webkitpy.scm_unittest.SCMClassTests)
&gt; ----------------------------------------------------------------------
&gt; Traceback (most recent call last):
&gt;   File
&gt; &quot;/Users/eseidel/Projects/WebKit/WebKitTools/Scripts/webkitpy/scm_unittest.py&quot;,
&gt; line 150, in test_error_handlers
&gt;     self.assertRaises(OSError, run_command, command_does_not_exist)
&gt;   File
&gt; [...]
&gt; I&apos;m not sure catching OSError here is a good idea.  It turns missing scripts
&gt; into &quot;exit code 2&quot; which happens to be the same as
&gt; QueueEngine.handled_error_code = 2
&gt; 
&gt; We obviously could change handled_error_code....</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>45425</attachid>
            <date>2009-12-23 01:37:36 -0800</date>
            <delta_ts>2009-12-23 01:37:36 -0800</delta_ts>
            <desc>Trace</desc>
            <filename>trace122309.txt</filename>
            <type>text/plain</type>
            <size>3151</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">bm9yaWM6V2ViS2l0IGRiYXRlcyQgV2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sIGxh
bmQtcGF0Y2hlcyAzMjc5OQotLW5vLWJ1aWxkCkZldGNoaW5nOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI3OTkmY3R5cGU9eG1sCjEgcmV2aWV3ZWQgcGF0Y2ggZm91
bmQgb24gYnVnIDMyNzk5LgpQcm9jZXNzaW5nIDEgcGF0Y2ggZnJvbSAxIGJ1Zy4KQ2xlYW5pbmcg
d29ya2luZyBkaXJlY3RvcnkKVXBkYXRpbmcgd29ya2luZyBkaXJlY3RvcnkKUHJvY2Vzc2luZyBw
YXRjaCA0NTMwNiBmcm9tIGJ1ZyAzMjc5OS4KUGFyc2luZyBDaGFuZ2VMb2c6IFdlYkNvcmUvQ2hh
bmdlTG9nClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICJXZWJLaXRU
b29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wiLCBsaW5lIDEwNCwgaW4gPG1vZHVsZT4KICAgIEJ1
Z3ppbGxhVG9vbCgpLm1haW4oKQogIEZpbGUKIi9Vc2Vycy9kYmF0ZXMvRGVza3RvcC9XZWJLaXQv
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL211bHRpY29tbWFuZHRvb2wucHkiLApsaW5lIDI1
MiwgaW4gbWFpbgogICAgcmV0dXJuIGNvbW1hbmQuY2hlY2tfYXJndW1lbnRzX2FuZF9leGVjdXRl
KGFyZ3NfYWZ0ZXJfY29tbWFuZF9uYW1lLApzZWxmKQogIEZpbGUKIi9Vc2Vycy9kYmF0ZXMvRGVz
a3RvcC9XZWJLaXQvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL211bHRpY29tbWFuZHRvb2wu
cHkiLApsaW5lIDk5LCBpbiBjaGVja19hcmd1bWVudHNfYW5kX2V4ZWN1dGUKICAgIHJldHVybiBz
ZWxmLmV4ZWN1dGUoY29tbWFuZF9vcHRpb25zLCBjb21tYW5kX2FyZ3MsIHRvb2wpIG9yIDAKICBG
aWxlCiIvVXNlcnMvZGJhdGVzL0Rlc2t0b3AvV2ViS2l0L1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9jb21tYW5kcy9kb3dubG9hZC5weSIsCmxpbmUgMTI3LCBpbiBleGVjdXRlCiAgICBzZWxm
Ll9wcm9jZXNzX3BhdGNoKHBhdGNoLCBvcHRpb25zLCBhcmdzLCB0b29sKQogIEZpbGUKIi9Vc2Vy
cy9kYmF0ZXMvRGVza3RvcC9XZWJLaXQvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1h
bmRzL2Rvd25sb2FkLnB5IiwKbGluZSAxNDYsIGluIF9wcm9jZXNzX3BhdGNoCiAgICBzZWxmLl9t
YWluX3NlcXVlbmNlLnJ1bl9hbmRfaGFuZGxlX2Vycm9ycyh0b29sLCBvcHRpb25zLCBzdGF0ZSkK
ICBGaWxlCiIvVXNlcnMvZGJhdGVzL0Rlc2t0b3AvV2ViS2l0L1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9zdGVwc2VxdWVuY2UucHkiLApsaW5lIDY1LCBpbiBydW5fYW5kX2hhbmRsZV9lcnJv
cnMKICAgIHNlbGYuX3J1bih0b29sLCBvcHRpb25zLCBzdGF0ZSkKICBGaWxlCiIvVXNlcnMvZGJh
dGVzL0Rlc2t0b3AvV2ViS2l0L1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zdGVwc2VxdWVu
Y2UucHkiLApsaW5lIDU5LCBpbiBfcnVuCiAgICBzdGVwKHRvb2wsIG9wdGlvbnMpLnJ1bihzdGF0
ZSkKICBGaWxlCiIvVXNlcnMvZGJhdGVzL0Rlc2t0b3AvV2ViS2l0L1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9idWlsZHN0ZXBzLnB5IiwKbGluZSAzNzMsIGluIHJ1bgogICAgc2VsZi5fdG9v
bC5idWdzLmNsZWFyX2F0dGFjaG1lbnRfZmxhZ3Moc3RhdGVbInBhdGNoIl1bImlkIl0sCmNvbW1l
bnRfdGV4dCkKICBGaWxlCiIvVXNlcnMvZGJhdGVzL0Rlc2t0b3AvV2ViS2l0L1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weSIsCmxpbmUgNDA3LCBpbiBjbGVhcl9hdHRhY2ht
ZW50X2ZsYWdzCiAgICBzZWxmLmF1dGhlbnRpY2F0ZSgpCiAgRmlsZQoiL1VzZXJzL2RiYXRlcy9E
ZXNrdG9wL1dlYktpdC9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkiLAps
aW5lIDMwMywgaW4gYXV0aGVudGljYXRlCiAgICAodXNlcm5hbWUsIHBhc3N3b3JkKSA9IENyZWRl
bnRpYWxzKHNlbGYuYnVnX3NlcnZlcl9ob3N0LApnaXRfcHJlZml4PSJidWd6aWxsYSIpLnJlYWRf
Y3JlZGVudGlhbHMoKQogIEZpbGUKIi9Vc2Vycy9kYmF0ZXMvRGVza3RvcC9XZWJLaXQvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzLnB5IiwKbGluZSA4MSwgaW4gcmVhZF9j
cmVkZW50aWFscwogICAgKHVzZXJuYW1lLCBwYXNzd29yZCkgPSBzZWxmLl9jcmVkZW50aWFsc19m
cm9tX2dpdCgpCiAgRmlsZQoiL1VzZXJzL2RiYXRlcy9EZXNrdG9wL1dlYktpdC9XZWJLaXRUb29s
cy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMucHkiLApsaW5lIDQ2LCBpbiBfY3JlZGVudGlh
bHNfZnJvbV9naXQKICAgIHJldHVybiBbc2VsZi5fcmVhZF9naXRfY29uZmlnKCJ1c2VybmFtZSIp
LApzZWxmLl9yZWFkX2dpdF9jb25maWcoInBhc3N3b3JkIildCiAgRmlsZQoiL1VzZXJzL2RiYXRl
cy9EZXNrdG9wL1dlYktpdC9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMu
cHkiLApsaW5lIDUwLCBpbiBfcmVhZF9naXRfY29uZmlnCiAgICByZXR1cm4gc2VsZi5leGVjdXRp
dmUucnVuX2NvbW1hbmQoWyJnaXQiLCAiY29uZmlnIiwgIi0tZ2V0IiwKY29uZmlnX2tleV0sIGVy
cm9yX2hhbmRsZXI9RXhlY3V0aXZlLmlnbm9yZV9lcnJvcikucnN0cmlwKCdcbicpCiAgRmlsZQoi
L1VzZXJzL2RiYXRlcy9EZXNrdG9wL1dlYktpdC9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
ZXhlY3V0aXZlLnB5IiwKbGluZSAxMjIsIGluIHJ1bl9jb21tYW5kCiAgICBwcm9jZXNzID0gc3Vi
cHJvY2Vzcy5Qb3BlbihhcmdzLCBzdGRpbj1zdGRpbiwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwK
c3RkZXJyPXN0ZGVyciwgY3dkPWN3ZCkKICBGaWxlCiIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuNi9saWIvcHl0aG9uMi42L3N1YnByb2Nlc3Mu
cHkiLApsaW5lIDU5NSwgaW4gX19pbml0X18KICAgIGVycnJlYWQsIGVycndyaXRlKQogIEZpbGUK
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvMi42
L2xpYi9weXRob24yLjYvc3VicHJvY2Vzcy5weSIsCmxpbmUgMTEwNiwgaW4gX2V4ZWN1dGVfY2hp
bGQKICAgIHJhaXNlIGNoaWxkX2V4Y2VwdGlvbgpPU0Vycm9yOiBbRXJybm8gMl0gTm8gc3VjaCBm
aWxlIG9yIGRpcmVjdG9yeQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45426</attachid>
            <date>2009-12-23 01:39:43 -0800</date>
            <delta_ts>2009-12-24 22:37:10 -0800</delta_ts>
            <desc>Patch (Work in progress)</desc>
            <filename>BugzillaFix_WIP.diff</filename>
            <type>text/plain</type>
            <size>1787</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFscy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMucHkJKHJldmlz
aW9uIDUyNTIxKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw4IEBACiAgICAgICAgIHJldHVybiBzZWxmLl9w
YXJzZV9zZWN1cml0eV90b29sX291dHB1dChzZWN1cml0eV9vdXRwdXQpCiAKICAgICBkZWYgcmVh
ZF9jcmVkZW50aWFscyhzZWxmKToKLSAgICAgICAgKHVzZXJuYW1lLCBwYXNzd29yZCkgPSBzZWxm
Ll9jcmVkZW50aWFsc19mcm9tX2dpdCgpCisgICAgICAgIGlmIHNlbGYuZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKFsiZ2l0Il0sIHJldHVybl9leGl0X2NvZGU9VHJ1ZSwgZXJyb3JfaGFuZGxlcj1FeGVj
dXRpdmUuaWdub3JlX2Vycm9yKToKKyAgICAgICAgICAgICh1c2VybmFtZSwgcGFzc3dvcmQpID0g
c2VsZi5fY3JlZGVudGlhbHNfZnJvbV9naXQoKQogCiAgICAgICAgIGlmIG5vdCB1c2VybmFtZSBv
ciBub3QgcGFzc3dvcmQ6CiAgICAgICAgICAgICAodXNlcm5hbWUsIHBhc3N3b3JkKSA9IHNlbGYu
X2NyZWRlbnRpYWxzX2Zyb21fa2V5Y2hhaW4odXNlcm5hbWUpCkluZGV4OiBXZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvZXhlY3V0aXZlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Nj
cmlwdHMvbW9kdWxlcy9leGVjdXRpdmUucHkJKHJldmlzaW9uIDUyNTIxKQorKysgV2ViS2l0VG9v
bHMvU2NyaXB0cy9tb2R1bGVzL2V4ZWN1dGl2ZS5weQkod29ya2luZyBjb3B5KQpAQCAtMTE5LDkg
KzExOSwxMyBAQAogICAgICAgICAgICAgc3RkZXJyID0gc3VicHJvY2Vzcy5TVERPVVQKICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUKLSAgICAgICAgcHJvY2VzcyA9IHN1
YnByb2Nlc3MuUG9wZW4oYXJncywgc3RkaW49c3RkaW4sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUs
IHN0ZGVycj1zdGRlcnIsIGN3ZD1jd2QpCi0gICAgICAgIG91dHB1dCA9IHByb2Nlc3MuY29tbXVu
aWNhdGUoc3RyaW5nX3RvX2NvbW11bmljYXRlKVswXQotICAgICAgICBleGl0X2NvZGUgPSBwcm9j
ZXNzLndhaXQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vz
cy5Qb3BlbihhcmdzLCBzdGRpbj1zdGRpbiwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJy
PXN0ZGVyciwgY3dkPWN3ZCkKKyAgICAgICAgICAgIG91dHB1dCA9IHByb2Nlc3MuY29tbXVuaWNh
dGUoc3RyaW5nX3RvX2NvbW11bmljYXRlKVswXQorICAgICAgICAgICAgZXhpdF9jb2RlID0gcHJv
Y2Vzcy53YWl0KCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6CisgICAgICAgICAgICBvdXRw
dXQgPSBlLnN0cmVycm9yCisgICAgICAgICAgICBleGl0X2NvZGUgPSBlLmVycm5vCiAgICAgICAg
IGlmIGV4aXRfY29kZToKICAgICAgICAgICAgIHNjcmlwdF9lcnJvciA9IFNjcmlwdEVycm9yKHNj
cmlwdF9hcmdzPWFyZ3MsIGV4aXRfY29kZT1leGl0X2NvZGUsIG91dHB1dD1vdXRwdXQsIGN3ZD1j
d2QpCiAgICAgICAgICAgICAoZXJyb3JfaGFuZGxlciBvciBzZWxmLmRlZmF1bHRfZXJyb3JfaGFu
ZGxlcikoc2NyaXB0X2Vycm9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45483</attachid>
            <date>2009-12-24 22:37:10 -0800</date>
            <delta_ts>2009-12-24 22:39:55 -0800</delta_ts>
            <desc>Patch (Work in progress)</desc>
            <filename>Bug32896_WIP_5.diff</filename>
            <type>text/plain</type>
            <size>2746</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFscy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMucHkJKHJldmlz
aW9uIDUyNTQzKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNyArMzAsMjAgQEAKICMgUHl0aG9uIG1vZHVsZSBmb3Ig
cmVhZGluZyBzdG9yZWQgd2ViIGNyZWRlbnRpYWxzIGZyb20gdGhlIE9TLgogCiBpbXBvcnQgZ2V0
cGFzcworaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCByZQogCiBmcm9tIG1vZHVs
ZXMuZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKIGZyb20gbW9kdWxlcy5sb2dnaW5nIGltcG9y
dCBsb2cKK2Zyb20gbW9kdWxlcy5zY20gaW1wb3J0IEdpdAogCiBjbGFzcyBDcmVkZW50aWFscyhv
YmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBnaXRfcHJlZml4PU5vbmUsIGV4
ZWN1dGl2ZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgZ2l0X3ByZWZpeD1O
b25lLCBleGVjdXRpdmU9Tm9uZSwgY3dkPW9zLmdldGN3ZCgpKToKICAgICAgICAgc2VsZi5ob3N0
ID0gaG9zdAogICAgICAgICBzZWxmLmdpdF9wcmVmaXggPSBnaXRfcHJlZml4CiAgICAgICAgIHNl
bGYuZXhlY3V0aXZlID0gZXhlY3V0aXZlIG9yIEV4ZWN1dGl2ZSgpCisgICAgICAgIHNlbGYuY3dk
ID0gY3dkCiAKICAgICBkZWYgX2NyZWRlbnRpYWxzX2Zyb21fZ2l0KHNlbGYpOgogICAgICAgICBy
ZXR1cm4gW3NlbGYuX3JlYWRfZ2l0X2NvbmZpZygidXNlcm5hbWUiKSwgc2VsZi5fcmVhZF9naXRf
Y29uZmlnKCJwYXNzd29yZCIpXQpAQCAtNzgsOCArODEsMTIgQEAKICAgICAgICAgcmV0dXJuIHNl
bGYuX3BhcnNlX3NlY3VyaXR5X3Rvb2xfb3V0cHV0KHNlY3VyaXR5X291dHB1dCkKIAogICAgIGRl
ZiByZWFkX2NyZWRlbnRpYWxzKHNlbGYpOgotICAgICAgICAodXNlcm5hbWUsIHBhc3N3b3JkKSA9
IHNlbGYuX2NyZWRlbnRpYWxzX2Zyb21fZ2l0KCkKKyAgICAgICAgdXNlcm5hbWUgPSBOb25lCisg
ICAgICAgIHBhc3N3b3JkID0gTm9uZQogCisgICAgICAgIGlmIEdpdC5pbl93b3JraW5nX2RpcmVj
dG9yeShzZWxmLmN3ZCk6CisgICAgICAgICAgICAodXNlcm5hbWUsIHBhc3N3b3JkKSA9IHNlbGYu
X2NyZWRlbnRpYWxzX2Zyb21fZ2l0KCkKKwogICAgICAgICBpZiBub3QgdXNlcm5hbWUgb3Igbm90
IHBhc3N3b3JkOgogICAgICAgICAgICAgKHVzZXJuYW1lLCBwYXNzd29yZCkgPSBzZWxmLl9jcmVk
ZW50aWFsc19mcm9tX2tleWNoYWluKHVzZXJuYW1lKQogCkluZGV4OiBXZWJLaXRUb29scy9TY3Jp
cHRzL21vZHVsZXMvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA1
MjU0MykKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFsc191bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogZnJvbSBtb2R1bGVzLmNyZWRl
bnRpYWxzIGltcG9ydCBDcmVkZW50aWFscwogZnJvbSBtb2R1bGVzLmV4ZWN1dGl2ZSBpbXBvcnQg
RXhlY3V0aXZlCiBmcm9tIG1vZHVsZXMub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVy
ZQorZnJvbSBtb2R1bGVzLnNjbV91bml0dGVzdCBpbXBvcnQgU1ZOVGVzdFJlcG9zaXRvcnkKIGZy
b20gbW9kdWxlcy5tb2NrIGltcG9ydCBNb2NrCiAKIGNsYXNzIENyZWRlbnRpYWxzVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CkBAIC05Nyw2ICs5OCwxNyBAQAogICAgICAgICBjcmVkZW50aWFscy5f
cmVhZF9naXRfY29uZmlnKCJmb28iKQogICAgICAgICBleGVjdXRpdmVfbW9jay5ydW5fY29tbWFu
ZC5hc3NlcnRfY2FsbGVkX3dpdGgoWyJnaXQiLCAiY29uZmlnIiwgIi0tZ2V0IiwgInRlc3RfcHJl
Zml4LmZvbyJdLCBlcnJvcl9oYW5kbGVyPUV4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCiAKKyAgICBk
ZWYgdGVzdF9yZWFkX2NyZWRlbnRpYWxzX3dpdGhfU1ZOKHNlbGYpOgorICAgICAgICBjbGFzcyBG
YWtlQ3JlZGVudGlhbHMoQ3JlZGVudGlhbHMpOgorICAgICAgICAgICAgZGVmIF9pc19tYWNfb3Nf
eChzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgZGVmIF9j
cmVkZW50aWFsc19mcm9tX2tleWNoYWluKHNlbGYsIHVzZXJuYW1lKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gWyJ0ZXN0QHdlYmtpdC5vcmciLCAiU0VDUkVUU0FVQ0UiXQogCisgICAgICAgIFNW
TlRlc3RSZXBvc2l0b3J5LnNldHVwKHNlbGYpCisgICAgICAgIGNyZWRlbnRpYWxzID0gRmFrZUNy
ZWRlbnRpYWxzKCJidWdzLndlYmtpdC5vcmciLCBjd2Q9c2VsZi5zdm5fY2hlY2tvdXRfcGF0aCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVkZW50aWFscy5yZWFkX2NyZWRlbnRpYWxzKCJm
b28iKSwgWyJmb28iLCAiU0VDUkVUU0FVQ0UiXSkKKyAgICAgICAgU1ZOVGVzdFJlcG9zaXRvcnku
dGVhcl9kb3duKHNlbGYpCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRl
c3QubWFpbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45484</attachid>
            <date>2009-12-24 22:39:55 -0800</date>
            <delta_ts>2009-12-27 17:32:09 -0800</delta_ts>
            <desc>Patch (Work in progress)</desc>
            <filename>Bug32896_WIP_5.diff</filename>
            <type>text/plain</type>
            <size>2753</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFscy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMucHkJKHJldmlz
aW9uIDUyNTQzKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNyArMzAsMjAgQEAKICMgUHl0aG9uIG1vZHVsZSBmb3Ig
cmVhZGluZyBzdG9yZWQgd2ViIGNyZWRlbnRpYWxzIGZyb20gdGhlIE9TLgogCiBpbXBvcnQgZ2V0
cGFzcworaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCByZQogCiBmcm9tIG1vZHVs
ZXMuZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKIGZyb20gbW9kdWxlcy5sb2dnaW5nIGltcG9y
dCBsb2cKK2Zyb20gbW9kdWxlcy5zY20gaW1wb3J0IEdpdAogCiBjbGFzcyBDcmVkZW50aWFscyhv
YmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBnaXRfcHJlZml4PU5vbmUsIGV4
ZWN1dGl2ZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgZ2l0X3ByZWZpeD1O
b25lLCBleGVjdXRpdmU9Tm9uZSwgY3dkPW9zLmdldGN3ZCgpKToKICAgICAgICAgc2VsZi5ob3N0
ID0gaG9zdAogICAgICAgICBzZWxmLmdpdF9wcmVmaXggPSBnaXRfcHJlZml4CiAgICAgICAgIHNl
bGYuZXhlY3V0aXZlID0gZXhlY3V0aXZlIG9yIEV4ZWN1dGl2ZSgpCisgICAgICAgIHNlbGYuY3dk
ID0gY3dkCiAKICAgICBkZWYgX2NyZWRlbnRpYWxzX2Zyb21fZ2l0KHNlbGYpOgogICAgICAgICBy
ZXR1cm4gW3NlbGYuX3JlYWRfZ2l0X2NvbmZpZygidXNlcm5hbWUiKSwgc2VsZi5fcmVhZF9naXRf
Y29uZmlnKCJwYXNzd29yZCIpXQpAQCAtNzgsOCArODEsMTIgQEAKICAgICAgICAgcmV0dXJuIHNl
bGYuX3BhcnNlX3NlY3VyaXR5X3Rvb2xfb3V0cHV0KHNlY3VyaXR5X291dHB1dCkKIAogICAgIGRl
ZiByZWFkX2NyZWRlbnRpYWxzKHNlbGYpOgotICAgICAgICAodXNlcm5hbWUsIHBhc3N3b3JkKSA9
IHNlbGYuX2NyZWRlbnRpYWxzX2Zyb21fZ2l0KCkKKyAgICAgICAgdXNlcm5hbWUgPSBOb25lCisg
ICAgICAgIHBhc3N3b3JkID0gTm9uZQogCisgICAgICAgIGlmIEdpdC5pbl93b3JraW5nX2RpcmVj
dG9yeShzZWxmLmN3ZCk6CisgICAgICAgICAgICAodXNlcm5hbWUsIHBhc3N3b3JkKSA9IHNlbGYu
X2NyZWRlbnRpYWxzX2Zyb21fZ2l0KCkKKwogICAgICAgICBpZiBub3QgdXNlcm5hbWUgb3Igbm90
IHBhc3N3b3JkOgogICAgICAgICAgICAgKHVzZXJuYW1lLCBwYXNzd29yZCkgPSBzZWxmLl9jcmVk
ZW50aWFsc19mcm9tX2tleWNoYWluKHVzZXJuYW1lKQogCkluZGV4OiBXZWJLaXRUb29scy9TY3Jp
cHRzL21vZHVsZXMvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA1
MjU0MykKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFsc191bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogZnJvbSBtb2R1bGVzLmNyZWRl
bnRpYWxzIGltcG9ydCBDcmVkZW50aWFscwogZnJvbSBtb2R1bGVzLmV4ZWN1dGl2ZSBpbXBvcnQg
RXhlY3V0aXZlCiBmcm9tIG1vZHVsZXMub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVy
ZQorZnJvbSBtb2R1bGVzLnNjbV91bml0dGVzdCBpbXBvcnQgU1ZOVGVzdFJlcG9zaXRvcnkKIGZy
b20gbW9kdWxlcy5tb2NrIGltcG9ydCBNb2NrCiAKIGNsYXNzIENyZWRlbnRpYWxzVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CkBAIC05Nyw2ICs5OCwxNyBAQAogICAgICAgICBjcmVkZW50aWFscy5f
cmVhZF9naXRfY29uZmlnKCJmb28iKQogICAgICAgICBleGVjdXRpdmVfbW9jay5ydW5fY29tbWFu
ZC5hc3NlcnRfY2FsbGVkX3dpdGgoWyJnaXQiLCAiY29uZmlnIiwgIi0tZ2V0IiwgInRlc3RfcHJl
Zml4LmZvbyJdLCBlcnJvcl9oYW5kbGVyPUV4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCiAKKyAgICBk
ZWYgdGVzdF9yZWFkX2NyZWRlbnRpYWxzX3dpdGhfU1ZOKHNlbGYpOgorICAgICAgICBjbGFzcyBG
YWtlQ3JlZGVudGlhbHMoQ3JlZGVudGlhbHMpOgorICAgICAgICAgICAgZGVmIF9pc19tYWNfb3Nf
eChzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgZGVmIF9j
cmVkZW50aWFsc19mcm9tX2tleWNoYWluKHNlbGYsIHVzZXJuYW1lKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gWyJ0ZXN0QHdlYmtpdC5vcmciLCAiU0VDUkVUU0FVQ0UiXQogCisgICAgICAgIFNW
TlRlc3RSZXBvc2l0b3J5LnNldHVwKHNlbGYpCisgICAgICAgIGNyZWRlbnRpYWxzID0gRmFrZUNy
ZWRlbnRpYWxzKCJidWdzLndlYmtpdC5vcmciLCBjd2Q9c2VsZi5zdm5fY2hlY2tvdXRfcGF0aCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVkZW50aWFscy5yZWFkX2NyZWRlbnRpYWxzKCks
IFsidGVzdEB3ZWJraXQub3JnIiwgIlNFQ1JFVFNBVUNFIl0pCisgICAgICAgIFNWTlRlc3RSZXBv
c2l0b3J5LnRlYXJfZG93bihzZWxmKQorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAg
IHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45538</attachid>
            <date>2009-12-27 17:32:09 -0800</date>
            <delta_ts>2009-12-27 17:46:35 -0800</delta_ts>
            <desc>Patch with unit tests</desc>
            <filename>Bug32896_f_3.patch</filename>
            <type>text/plain</type>
            <size>8982</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUyNTg1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMDktMTItMjcgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjg5Ngor
CisgICAgICAgIEZpeGVzIGFuIGlzc3VlIHdoZXJlIGJ1Z3ppbGxhLXRvb2wgdHJpZXMgdG8gcmVh
ZCB0aGUgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGZyb20KKyAgICAgICAgR2l0IHJlZ2FyZGxlc3Mg
b2Ygd2hldGhlciBHaXQgaXMgaW5zdGFsbGVkLiBJbiBwYXJ0aWN1bGFyLCBpZiBHaXQgaXMgbm90
CisgICAgICAgIGluc3RhbGxlZCB0aGVuIGJ1Z3ppbGxhLXRvb2wgZGllcyAod2l0aCBhIHRyYWNl
KSB3aGVuIGl0IGF0dGVtcHRzIHRvIHF1ZXJ5IEdpdAorICAgICAgICBmb3IgdGhlIGF1dGhlbnRp
Y2F0aW9uIGNyZWRlbnRpYWxzIHRvIGxvZyBpbnRvIGJ1Z3Mud2Via2l0Lm9yZy4KKworICAgICAg
ICBNb3Jlb3ZlciwgbW9kaWZpZXMgRXhlY3V0aXZlLnJ1bl9jb21tYW5kIHRvIGNhdGNoIGFuZCBw
YXNzIE9TRXJyb3IgZXhjZXB0aW9ucyB0bworICAgICAgICB0aGUgc3BlY2lmaWVkIGVycm9yIGhh
bmRsZXIuIEZvciBpbnN0YW5jZSwgdGhlIHNwZWNpZmllZCBlcnJvciBoYW5kbGVyIHdpbGwgbm93
CisgICAgICAgIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21tYW5kIGRvZXMgbm90IGV4aXN0IChpLmUu
IE9TRXJyb3IgZXJybm8gMikuCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3JlZGVudGlh
bHMucHk6IEFkZGVkIGNoZWNrIGZvciBHaXQuCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2Ny
ZWRlbnRpYWxzX3VuaXR0ZXN0LnB5OiBBZGRlZCB0ZXN0IG1ldGhvZAorICAgICAgICB0ZXN0X3Jl
YWRfY3JlZGVudGlhbHNfd2l0aF9TVk4uCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2V4ZWN1
dGl2ZS5weTogTW9kaWZpZWQgbWV0aG9kIHJ1bl9jb21tYW5kIHRvIGNhdGNoCisgICAgICAgIE9T
RXJyb3IgZXhjZXB0aW9ucyAoaS5lIFtFcnJubyAyXSBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5
KSBhbmQgY2FsbAorICAgICAgICB0aGUgc3BlY2lmaWVkIGVycm9yIGhhbmRsZXIuCisgICAgICAg
ICogU2NyaXB0cy9tb2R1bGVzL2V4ZWN1dGl2ZV91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0czogQWRkZWQgaW1wb3J0IGV4ZWN1dGl2ZV91
bml0dGVzdC5weS4KKwogMjAwOS0xMi0yNyAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5v
cmc+CiAKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11bml0dGVzdHMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0cwkocmV2
aXNpb24gNTI1ODEpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdW5pdHRlc3Rz
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGZyb20gbW9kdWxlcy5jb21taXR0ZXJz
X3VuaXR0ZXN0IGltcG9ydCAKIGZyb20gbW9kdWxlcy5jcmVkZW50aWFsc191bml0dGVzdCBpbXBv
cnQgKgogZnJvbSBtb2R1bGVzLmNwcF9zdHlsZV91bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1
bGVzLmRpZmZfcGFyc2VyX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIG1vZHVsZXMuZXhlY3V0aXZl
X3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMubG9nZ2luZ191bml0dGVzdCBpbXBvcnQg
KgogZnJvbSBtb2R1bGVzLm11bHRpY29tbWFuZHRvb2xfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20g
bW9kdWxlcy5xdWV1ZWVuZ2luZV91bml0dGVzdCBpbXBvcnQgKgpJbmRleDogV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFscy5weQkocmV2aXNpb24gNTI1ODEpCisrKyBXZWJL
aXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMucHkJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDE3ICszMCwyMCBAQAogIyBQeXRob24gbW9kdWxlIGZvciByZWFkaW5nIHN0b3JlZCB3ZWIg
Y3JlZGVudGlhbHMgZnJvbSB0aGUgT1MuCiAKIGltcG9ydCBnZXRwYXNzCitpbXBvcnQgb3MKIGlt
cG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJlCiAKIGZyb20gbW9kdWxlcy5leGVjdXRpdmUgaW1wb3J0
IEV4ZWN1dGl2ZQogZnJvbSBtb2R1bGVzLmxvZ2dpbmcgaW1wb3J0IGxvZworZnJvbSBtb2R1bGVz
LnNjbSBpbXBvcnQgR2l0CiAKIGNsYXNzIENyZWRlbnRpYWxzKG9iamVjdCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGhvc3QsIGdpdF9wcmVmaXg9Tm9uZSwgZXhlY3V0aXZlPU5vbmUpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBnaXRfcHJlZml4PU5vbmUsIGV4ZWN1dGl2ZT1Ob25l
LCBjd2Q9b3MuZ2V0Y3dkKCkpOgogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgIHNl
bGYuZ2l0X3ByZWZpeCA9IGdpdF9wcmVmaXgKICAgICAgICAgc2VsZi5leGVjdXRpdmUgPSBleGVj
dXRpdmUgb3IgRXhlY3V0aXZlKCkKKyAgICAgICAgc2VsZi5jd2QgPSBjd2QKIAogICAgIGRlZiBf
Y3JlZGVudGlhbHNfZnJvbV9naXQoc2VsZik6CiAgICAgICAgIHJldHVybiBbc2VsZi5fcmVhZF9n
aXRfY29uZmlnKCJ1c2VybmFtZSIpLCBzZWxmLl9yZWFkX2dpdF9jb25maWcoInBhc3N3b3JkIild
CkBAIC03OCw3ICs4MSwxMSBAQCBjbGFzcyBDcmVkZW50aWFscyhvYmplY3QpOgogICAgICAgICBy
ZXR1cm4gc2VsZi5fcGFyc2Vfc2VjdXJpdHlfdG9vbF9vdXRwdXQoc2VjdXJpdHlfb3V0cHV0KQog
CiAgICAgZGVmIHJlYWRfY3JlZGVudGlhbHMoc2VsZik6Ci0gICAgICAgICh1c2VybmFtZSwgcGFz
c3dvcmQpID0gc2VsZi5fY3JlZGVudGlhbHNfZnJvbV9naXQoKQorICAgICAgICB1c2VybmFtZSA9
IE5vbmUKKyAgICAgICAgcGFzc3dvcmQgPSBOb25lCisKKyAgICAgICAgaWYgR2l0LmluX3dvcmtp
bmdfZGlyZWN0b3J5KHNlbGYuY3dkKToKKyAgICAgICAgICAgICh1c2VybmFtZSwgcGFzc3dvcmQp
ID0gc2VsZi5fY3JlZGVudGlhbHNfZnJvbV9naXQoKQogCiAgICAgICAgIGlmIG5vdCB1c2VybmFt
ZSBvciBub3QgcGFzc3dvcmQ6CiAgICAgICAgICAgICAodXNlcm5hbWUsIHBhc3N3b3JkKSA9IHNl
bGYuX2NyZWRlbnRpYWxzX2Zyb21fa2V5Y2hhaW4odXNlcm5hbWUpCkluZGV4OiBXZWJLaXRUb29s
cy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiA1MjU4MSkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFsc191
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBpbXBvcnQgdW5pdHRl
c3QKIGZyb20gbW9kdWxlcy5jcmVkZW50aWFscyBpbXBvcnQgQ3JlZGVudGlhbHMKIGZyb20gbW9k
dWxlcy5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogZnJvbSBtb2R1bGVzLm91dHB1dGNhcHR1
cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gbW9kdWxlcy5zY21fdW5pdHRlc3QgaW1wb3J0
IFNWTlRlc3RSZXBvc2l0b3J5CiBmcm9tIG1vZHVsZXMubW9jayBpbXBvcnQgTW9jawogCiBjbGFz
cyBDcmVkZW50aWFsc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtOTcsNiArOTgsMjAgQEAg
cGFzc3dvcmQ6ICJTRUNSRVRTQVVDRSIKICAgICAgICAgY3JlZGVudGlhbHMuX3JlYWRfZ2l0X2Nv
bmZpZygiZm9vIikKICAgICAgICAgZXhlY3V0aXZlX21vY2sucnVuX2NvbW1hbmQuYXNzZXJ0X2Nh
bGxlZF93aXRoKFsiZ2l0IiwgImNvbmZpZyIsICItLWdldCIsICJ0ZXN0X3ByZWZpeC5mb28iXSwg
ZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKQogCisgICAgZGVmIHRlc3RfcmVh
ZF9jcmVkZW50aWFsc193aXRoX1NWTihzZWxmKToKKyAgICAgICAgIyBOb3RlLCB0aGlzIHRlc3Qg
YXNzdW1lcyB0aGF0IFNWTiBpcyBpbnN0YWxsZWQgYXMgbGlzdGVkIG9uIAorICAgICAgICAjIDxo
dHRwOi8vd2Via2l0Lm9yZy9idWlsZGluZy90b29scy5odG1sPiBhcyBvZiAxMi8yNy8yMDA5Lgor
CisgICAgICAgIGNsYXNzIEZha2VDcmVkZW50aWFscyhDcmVkZW50aWFscyk6CisgICAgICAgICAg
ICBkZWYgX2lzX21hY19vc194KHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisg
ICAgICAgICAgICBkZWYgX2NyZWRlbnRpYWxzX2Zyb21fa2V5Y2hhaW4oc2VsZiwgdXNlcm5hbWUp
OgorICAgICAgICAgICAgICAgIHJldHVybiBbInRlc3RAd2Via2l0Lm9yZyIsICJTRUNSRVRTQVVD
RSJdCisKKyAgICAgICAgU1ZOVGVzdFJlcG9zaXRvcnkuc2V0dXAoc2VsZikKKyAgICAgICAgY3Jl
ZGVudGlhbHMgPSBGYWtlQ3JlZGVudGlhbHMoImJ1Z3Mud2Via2l0Lm9yZyIsIGN3ZD1zZWxmLnN2
bl9jaGVja291dF9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWRlbnRpYWxzLnJl
YWRfY3JlZGVudGlhbHMoKSwgWyJ0ZXN0QHdlYmtpdC5vcmciLCAiU0VDUkVUU0FVQ0UiXSkKKyAg
ICAgICAgU1ZOVGVzdFJlcG9zaXRvcnkudGVhcl9kb3duKHNlbGYpCiAKIGlmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCkluZGV4OiBXZWJLaXRUb29scy9TY3Jp
cHRzL21vZHVsZXMvZXhlY3V0aXZlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9leGVjdXRpdmUucHkJKHJldmlzaW9uIDUyNTgxKQorKysgV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2V4ZWN1dGl2ZS5weQkod29ya2luZyBjb3B5KQpAQCAtMTE5LDkgKzEx
OSwxNSBAQCBjbGFzcyBFeGVjdXRpdmUob2JqZWN0KToKICAgICAgICAgICAgIHN0ZGVyciA9IHN1
YnByb2Nlc3MuU1RET1VUCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzdGRlcnIgPSBOb25l
Ci0gICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHN0ZGluPXN0ZGluLCBz
dGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3RkZXJyLCBjd2Q9Y3dkKQotICAgICAgICBv
dXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKHN0cmluZ190b19jb21tdW5pY2F0ZSlbMF0KLSAg
ICAgICAgZXhpdF9jb2RlID0gcHJvY2Vzcy53YWl0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgc3RkaW49c3RkaW4sIHN0ZG91dD1z
dWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdGRlcnIsIGN3ZD1jd2QpCisgICAgICAgICAgICBvdXRw
dXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKHN0cmluZ190b19jb21tdW5pY2F0ZSlbMF0KKyAgICAg
ICAgICAgIGV4aXRfY29kZSA9IHByb2Nlc3Mud2FpdCgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9y
LCBlOgorICAgICAgICAgICAgIyBDYXRjaCBPU0Vycm9yIGV4Y2VwdGlvbnMuIEZvciBleGFtcGxl
LCAibm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIgKGkuZS4gT1NFcnJvciBlcnJubyAyKSwKKyAg
ICAgICAgICAgICMgd2hlbiB0aGUgY29tbWFuZCBjYW5ub3QgYmUgZm91bmQuCisgICAgICAgICAg
ICBvdXRwdXQgPSBlLnN0cmVycm9yCisgICAgICAgICAgICBleGl0X2NvZGUgPSBlLmVycm5vCiAg
ICAgICAgIGlmIGV4aXRfY29kZToKICAgICAgICAgICAgIHNjcmlwdF9lcnJvciA9IFNjcmlwdEVy
cm9yKHNjcmlwdF9hcmdzPWFyZ3MsIGV4aXRfY29kZT1leGl0X2NvZGUsIG91dHB1dD1vdXRwdXQs
IGN3ZD1jd2QpCiAgICAgICAgICAgICAoZXJyb3JfaGFuZGxlciBvciBzZWxmLmRlZmF1bHRfZXJy
b3JfaGFuZGxlcikoc2NyaXB0X2Vycm9yKQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL2V4ZWN1dGl2ZV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3Jp
cHRzL21vZHVsZXMvZXhlY3V0aXZlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAwKQorKysgV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2V4ZWN1dGl2ZV91bml0dGVzdC5weQkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA5IERhbmllbCBCYXRlcyAoZGJhdGVz
QGludHVkYXRhLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitp
bXBvcnQgdW5pdHRlc3QKK2Zyb20gbW9kdWxlcy5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwg
U2NyaXB0RXJyb3IsIHJ1bl9jb21tYW5kCisKK2NsYXNzIEV4ZWN1dGl2ZVRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcnVuX2NvbW1hbmRfd2l0aF9iYWRfY29tbWFuZF9j
aGVja19yZXR1cm5fY29kZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fY29t
bWFuZChbImZvb19iYXJfY29tbWFuZF9ibGFoIl0sIGVycm9yX2hhbmRsZXI9RXhlY3V0aXZlLmln
bm9yZV9lcnJvciwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKSwgMikKKworICAgIGRlZiB0ZXN0X3J1
bl9jb21tYW5kX3dpdGhfYmFkX2NvbW1hbmRfY2hlY2tfY2FsbHNfZXJyb3JfaGFuZGxlcihzZWxm
KToKKyAgICAgICAgc2VsZi5kaWRIYW5kbGVFcnJvckdldENhbGxlZCA9IEZhbHNlCisgICAgICAg
IGRlZiBoYW5kbGVFcnJvcihzY3JpcHRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmRpZEhhbmRs
ZUVycm9yR2V0Q2FsbGVkID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY3Jp
cHRFcnJvci5leGl0X2NvZGUsIDIpCisKKyAgICAgICAgcnVuX2NvbW1hbmQoWyJmb29fYmFyX2Nv
bW1hbmRfYmxhaCJdLCBlcnJvcl9oYW5kbGVyPWhhbmRsZUVycm9yKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoc2VsZi5kaWRIYW5kbGVFcnJvckdldENhbGxlZCkKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkK
</data>
<flag name="review"
          id="27591"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>