<?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>75648</bug_id>
          
          <creation_ts>2012-01-05 14:15:33 -0800</creation_ts>
          <short_desc>webkitpy: clean up test/uri conversion routines</short_desc>
          <delta_ts>2012-01-09 12:58:27 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>530622</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-05 14:15:33 -0800</bug_when>
    <thetext>webkitpy: clean up test/uri conversion routines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530623</commentid>
    <comment_count>1</comment_count>
      <attachid>121329</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-05 14:17:01 -0800</bug_when>
    <thetext>Created attachment 121329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530625</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-05 14:18:20 -0800</bug_when>
    <thetext>(haven&apos;t actually tested this on any real ports, just ran the unit tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530629</commentid>
    <comment_count>3</comment_count>
      <attachid>121329</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-05 14:24:12 -0800</bug_when>
    <thetext>Comment on attachment 121329
Patch

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

I&apos;m not sure I 100% follow the change, but it looks reasonable.  Mostly looks like you&apos;re moving code.  Looks like these arent&apos; very tested.  Can we have more tests of these moved functions?

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:46
&gt; +from webkitpy.common.system.path import cygpath

Seems unused?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530667</commentid>
    <comment_count>4</comment_count>
      <attachid>121340</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-05 15:06:03 -0800</bug_when>
    <thetext>Created attachment 121340
add more explicit, clearer unit tests, remove unused import</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530669</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-05 15:07:42 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 121329 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121329&amp;action=review
&gt; 
&gt; I&apos;m not sure I 100% follow the change, but it looks reasonable.  Mostly looks like you&apos;re moving code.  Looks like these arent&apos; very tested.  Can we have more tests of these moved functions?
&gt;

Yup, mostly moving code. The routines were actually well-covered by other tests, but I&apos;ve added some explicit tests just to be clearer. Disclaimer: I haven&apos;t actually run the tests (yet?) on win32 or under cygwin to ensure that they pass there as well.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:46
&gt; &gt; +from webkitpy.common.system.path import cygpath
&gt; 
&gt; Seems unused?

Yup. removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530672</commentid>
    <comment_count>6</comment_count>
      <attachid>121340</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-05 15:09:16 -0800</bug_when>
    <thetext>Comment on attachment 121340
add more explicit, clearer unit tests, remove unused import

OK.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531408</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-06 14:27:31 -0800</bug_when>
    <thetext>Committed r104340: &lt;http://trac.webkit.org/changeset/104340&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531892</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-08 17:17:15 -0800</bug_when>
    <thetext>webkitpy.layout_tests.port.mock_drt_unittest.MockChromiumDRTTest has been failing on cr-win since this patch was landed: http://build.webkit.org/builders/Chromium%20Win%20Release%20%28Tests%29/builds/22570/steps/webkitpy-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532429</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-09 12:34:32 -0800</bug_when>
    <thetext>looking into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532444</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-09 12:58:27 -0800</bug_when>
    <thetext>Bug 75884 filed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121329</attachid>
            <date>2012-01-05 14:17:01 -0800</date>
            <delta_ts>2012-01-05 15:05:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75648-20120105141700.patch</filename>
            <type>text/plain</type>
            <size>17342</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MDg5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTJjMjBlNzI3NmJlNjIwMWU3ZDQ1MWVlMzAyNjAzY2Iz
NDY4YjhlZC4uOWIyYjcwYjM1Y2M3ZGU2MTAwYWE1YjAxNGI4ZjQwYjUwMjQ0MDJiYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDEyLTAxLTA1ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBjbGVhbiB1cCB0ZXN0L3VyaSBjb252ZXJzaW9uIHJvdXRpbmVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY0OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IG1vdmVzIHRlc3RfdG9fdXJpIGFuZCB1cmlfdG9fdGVzdCBmcm9tIHRoZSBQb3J0CisgICAgICAg
IGNsYXNzIHRvIHRoZSBEcml2ZXIgY2xhc3MgKHRoZSByb3V0aW5lcyB3ZXJlIG9ubHkgYmVpbmcK
KyAgICAgICAgY2FsbGVkIGJ5IHRoZSBkcml2ZXJzKSwgYW5kIHJlbW92ZXMgYSBidW5jaCBvZiBz
dGFsZSBhbmQvb3IKKyAgICAgICAgYnVzdGVkIGxvZ2ljLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHk6Cisg
ICAgICAgIChpc19odHRwX3Rlc3QpOgorICAgICAgICAodGVzdF90b191cmkpOgorICAgICAgICAo
dXJpX3RvX3Rlc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvbW9ja19kcnQucHk6CisgICAgICAgIChydW5fb25lX3Rlc3QpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHk6CisgICAg
ICAgIChNb2NrRFJUVGVzdC5pbnB1dF9saW5lKToKKyAgICAgICAgKGlucHV0X2xpbmUpOgorICAg
ICAgICAoZXhwZWN0ZWRfb3V0cHV0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgIChfY29tbWFuZF9mcm9tX2RyaXZlcl9pbnB1
dCk6CisKIDIwMTItMDEtMDQgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAgPG9zdGFwZW5rby52aWF0
Y2hlc2xhdkBub2tpYS5jb20+CiAKICAgICAgICAgQWRkaW5nIG15c2VsZiB0byBjb21taXR0ZXJz
IGxpc3QuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkKaW5kZXggZDRlMWE1NTZlZjlkMGQ1OTYyZDBiYTE2MjYwNzAyNWEwNTQ3MjU0ZC4uOTVj
OTE2NjM4ZTBkMzk0MTM3Y2VkYzU3MTg2ZjdhNTk5ZjEzMzkxNCAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtNDksNyArNDksNiBA
QCBleGNlcHQgSW1wb3J0RXJyb3I6CiAKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBmaW5k
X2ZpbGVzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3V0aWxzCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHBhdGgKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMgaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcKQEAgLTQ2MSwzMyArNDYwLDYg
QEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBmaWxlbmFtZSA9IHNlbGYuX2ZpbGVzeXN0
ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9uYW1lKQogICAgICAgICByZXR1
cm4gZmlsZW5hbWUgaW4gcmVmdGVzdF9saXN0CiAKLSAgICBkZWYgdGVzdF90b191cmkoc2VsZiwg
dGVzdF9uYW1lKToKLSAgICAgICAgIiIiQ29udmVydCBhIHRlc3QgbmFtZSB0byBhIFVSSS4iIiIK
LSAgICAgICAgTEFZT1VUVEVTVF9IVFRQX0RJUiA9ICJodHRwL3Rlc3RzLyIKLSAgICAgICAgTEFZ
T1VUVEVTVF9XRUJTT0NLRVRfRElSID0gImh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzLyIKLQot
ICAgICAgICBwb3J0ID0gTm9uZQotCi0gICAgICAgIHJlbGF0aXZlX3BhdGggPSB0ZXN0X25hbWUK
LSAgICAgICAgaWYgKHJlbGF0aXZlX3BhdGguc3RhcnRzd2l0aChMQVlPVVRURVNUX1dFQlNPQ0tF
VF9ESVIpCi0gICAgICAgICAgICBvciByZWxhdGl2ZV9wYXRoLnN0YXJ0c3dpdGgoTEFZT1VUVEVT
VF9IVFRQX0RJUikpOgotICAgICAgICAgICAgcmVsYXRpdmVfcGF0aCA9IHJlbGF0aXZlX3BhdGhb
bGVuKExBWU9VVFRFU1RfSFRUUF9ESVIpOl0KLSAgICAgICAgICAgIHBvcnQgPSA4MDAwCi0KLSAg
ICAgICAgIyBNYWtlIGh0dHAvdGVzdHMvbG9jYWwgcnVuIGFzIGxvY2FsIGZpbGVzLiBUaGlzIGlz
IHRvIG1pbWljIHRoZQotICAgICAgICAjIGxvZ2ljIGluIHJ1bi13ZWJraXQtdGVzdHMuCi0gICAg
ICAgICMKLSAgICAgICAgIyBUT0RPKGRwcmFua2UpOiByZW1vdmUgdGhlIFNTTCByZWZlcmVuY2U/
Ci0gICAgICAgIGlmIChwb3J0IGFuZCBub3QgcmVsYXRpdmVfcGF0aC5zdGFydHN3aXRoKCJsb2Nh
bC8iKSk6Ci0gICAgICAgICAgICBpZiByZWxhdGl2ZV9wYXRoLnN0YXJ0c3dpdGgoInNzbC8iKToK
LSAgICAgICAgICAgICAgICBwb3J0ICs9IDQ0MwotICAgICAgICAgICAgICAgIHByb3RvY29sID0g
Imh0dHBzIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcm90b2NvbCA9ICJo
dHRwIgotICAgICAgICAgICAgcmV0dXJuICIlczovLzEyNy4wLjAuMToldS8lcyIgJSAocHJvdG9j
b2wsIHBvcnQsIHJlbGF0aXZlX3BhdGgpCi0KLSAgICAgICAgcmV0dXJuIHBhdGguYWJzcGF0aF90
b191cmkoc2VsZi5hYnNwYXRoX2Zvcl90ZXN0KHRlc3RfbmFtZSkpCi0KICAgICBkZWYgdGVzdHMo
c2VsZiwgcGF0aHMpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgdGVzdHMgZm91bmQu
IiIiCiAgICAgICAgICMgV2hlbiBjb2xsZWN0aW5nIHRlc3QgY2FzZXMsIHNraXAgdGhlc2UgZGly
ZWN0b3JpZXMKQEAgLTU2NywzMiArNTM5LDYgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAiIiIKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZShiYXNlbGlu
ZV9wYXRoLCBkYXRhKQogCi0gICAgZGVmIHVyaV90b190ZXN0X25hbWUoc2VsZiwgdXJpKToKLSAg
ICAgICAgIiIiUmV0dXJuIHRoZSBiYXNlIGxheW91dCB0ZXN0IG5hbWUgZm9yIGEgZ2l2ZW4gVVJJ
LgotCi0gICAgICAgIFRoaXMgcmV0dXJucyB0aGUgdGVzdCBuYW1lIGZvciBhIGdpdmVuIFVSSSwg
ZS5nLiwgaWYgeW91IHBhc3NlZCBpbgotICAgICAgICAiZmlsZTovLy9zcmMvTGF5b3V0VGVzdHMv
ZmFzdC9odG1sL2tleWdlbi5odG1sIiBpdCB3b3VsZCByZXR1cm4KLSAgICAgICAgImZhc3QvaHRt
bC9rZXlnZW4uaHRtbCIuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3QgPSB1cmkKLSAgICAg
ICAgaWYgdXJpLnN0YXJ0c3dpdGgoImZpbGU6Ly8vIik6Ci0gICAgICAgICAgICBwcmVmaXggPSBw
YXRoLmFic3BhdGhfdG9fdXJpKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpKSArICIvIgotICAgICAg
ICAgICAgcmV0dXJuIHRlc3RbbGVuKHByZWZpeCk6XQotCi0gICAgICAgIGlmIHVyaS5zdGFydHN3
aXRoKCJodHRwOi8vMTI3LjAuMC4xOjg4ODAvIik6Ci0gICAgICAgICAgICAjIHdlYnNvY2tldCB0
ZXN0cwotICAgICAgICAgICAgcmV0dXJuIHRlc3QucmVwbGFjZSgnaHR0cDovLzEyNy4wLjAuMTo4
ODgwLycsICcnKQotCi0gICAgICAgIGlmIHVyaS5zdGFydHN3aXRoKCJodHRwOi8vIik6Ci0gICAg
ICAgICAgICAjIHJlZ3VsYXIgSFRUUCB0ZXN0Ci0gICAgICAgICAgICByZXR1cm4gdGVzdC5yZXBs
YWNlKCdodHRwOi8vMTI3LjAuMC4xOjgwMDAvJywgJ2h0dHAvdGVzdHMvJykKLQotICAgICAgICBp
ZiB1cmkuc3RhcnRzd2l0aCgiaHR0cHM6Ly8iKToKLSAgICAgICAgICAgIHJldHVybiB0ZXN0LnJl
cGxhY2UoJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMvJywgJ2h0dHAvdGVzdHMvJykKLQotICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCd1bmtub3duIHVybCB0eXBlOiAlcycgJSB1cmkp
Ci0KICAgICBkZWYgbGF5b3V0X3Rlc3RzX2RpcihzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRo
ZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIExheW91dFRlc3RzIGRpcmVjdG9yeS4i
IiIKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0
cycpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2VfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXggOTNjMTgwZTAyY2NkZmQ3ZjVhZTlkYTI3OTQzM2Fl
OWExODA1Nzc1OC4uNDNmOWIwZjY0M2NmNTIzNzhlMDY0ZThiYmY0YThiYWYzNTVhNjU0OSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3Vu
aXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YmFzZV91bml0dGVzdC5weQpAQCAtMjI2LDE2ICsyMjYsNiBAQCBjbGFzcyBQb3J0VGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnY2FudmFzJyBpbiBkaXJz
KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2NzczIuMScgaW4gZGlycykKIAotICAgIGRlZiB0
ZXN0X3Rlc3RfdG9fdXJpKHNlbGYpOgotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQot
ICAgICAgICBsYXlvdXRfdGVzdF9kaXIgPSBwb3J0LmxheW91dF90ZXN0c19kaXIoKQotICAgICAg
ICB0ZXN0ID0gJ2Zvby9iYXIuaHRtbCcKLSAgICAgICAgcGF0aCA9IHBvcnQuX2ZpbGVzeXN0ZW0u
am9pbihsYXlvdXRfdGVzdF9kaXIsIHRlc3QpCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAn
d2luMzInOgotICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgiXFwiLCAiLyIpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnRlc3RfdG9fdXJpKHRlc3QpLCBhYnNwYXRoX3Rv
X3VyaShwYXRoKSkKLQogICAgIGRlZiB0ZXN0X2dldF9vcHRpb25fX3NldChzZWxmKToKICAgICAg
ICAgb3B0aW9ucywgYXJncyA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpLnBhcnNlX2FyZ3MoW10p
CiAgICAgICAgIG9wdGlvbnMuZm9vID0gJ2JhcicKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IDA4ZDYwMTBjYmYzYTVh
YjA4ZWY3MmJkNDE1MDZlNzAxOGRiZWRkNTQuLjY0YjcwNDRmYzhhYzg2ZDU1NDg0N2RjYWQzMjA2
OTU1ZDA5NmJkYTkgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNTI0LDcgKzUyNCw3IEBAIGNsYXNzIENocm9taXVt
RHJpdmVyKERyaXZlcik6CiAgICAgICAgIGhhc19hdWRpbyA9IEZhbHNlCiAgICAgICAgIGhhc19i
YXNlNjQgPSBGYWxzZQogCi0gICAgICAgIHVyaSA9IHNlbGYuX3BvcnQudGVzdF90b191cmkoZHJp
dmVyX2lucHV0LnRlc3RfbmFtZSkKKyAgICAgICAgdXJpID0gc2VsZi50ZXN0X3RvX3VyaShkcml2
ZXJfaW5wdXQudGVzdF9uYW1lKQogICAgICAgICBjbWQgPSBzZWxmLl90ZXN0X3NoZWxsX2NvbW1h
bmQodXJpLCBkcml2ZXJfaW5wdXQudGltZW91dCwgZHJpdmVyX2lucHV0LmltYWdlX2hhc2gpCiAg
ICAgICAgIGxpbmUsIGNyYXNoID0gc2VsZi5fd3JpdGVfY29tbWFuZF9hbmRfcmVhZF9saW5lKGlu
cHV0PWNtZCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKaW5kZXggMmUzZDc0ZTY0ZmIxMWEx
MmZjNzEyMDhjOTc1NjFkYzczMGNjNGFiMy4uNGFlN2VkMzA0OTUwNDE1MWE5OWI5MDA2NjIzODgy
NDQ3ZmMwMjk5YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CkBAIC05OCw3ICs5OCw3IEBA
IGNsYXNzIENocm9taXVtRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICByYWlzZSBJT0Vycm9yCiAgICAgICAgIHNlbGYuZHJpdmVyLl9wcm9jLnN0ZG91dC5yZWFkbGlu
ZSA9IG1vY2tfcmVhZGxpbmUKIAotICAgICAgICBzZWxmLmRyaXZlci5fcG9ydC50ZXN0X3RvX3Vy
aSA9IGxhbWJkYSB0ZXN0OiAnbW9ja3Rlc3R1cmknCisgICAgICAgIHNlbGYuZHJpdmVyLnRlc3Rf
dG9fdXJpID0gbGFtYmRhIHRlc3Q6ICdtb2NrdGVzdHVyaScKICAgICAgICAgZHJpdmVyX291dHB1
dCA9IHNlbGYuZHJpdmVyLnJ1bl90ZXN0KERyaXZlcklucHV0KHRlc3RfbmFtZT0nc29tZS90ZXN0
Lmh0bWwnLCB0aW1lb3V0PTEsIGltYWdlX2hhc2g9Tm9uZSwgaXNfcmVmdGVzdD1GYWxzZSkpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kcml2ZXIuX3BvcnQuZHJpdmVyX25hbWUoKSwg
ZHJpdmVyX291dHB1dC5jcmFzaGVkX3Byb2Nlc3NfbmFtZSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQppbmRleCBmOGM0MTQ4OTlm
MTZiNWRiZDcxYTMxMzM4YWU2OWIyZjgxZDRjYWU0Li45MzEyNWJlYzIzMWIxZDNiNWZmNTViMmM0
YmNhZmI3MzAzMzQzYTM2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2RyaXZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2RyaXZlci5weQpAQCAtMjgsNiArMjgsOCBAQAogCiBpbXBvcnQgc2hsZXgK
IAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCisKIAogY2xhc3MgRHJp
dmVySW5wdXQob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9uYW1lLCB0aW1l
b3V0LCBpbWFnZV9oYXNoLCBpc19yZWZ0ZXN0KToKQEAgLTkxLDYgKzkzLDQwIEBAIGNsYXNzIERy
aXZlcihvYmplY3QpOgogICAgICAgICAjIHVzZWQgYnkgZS5nLiB0b29scy92YWxncmluZC92YWxn
cmluZF90ZXN0cy5weS4KICAgICAgICAgcmV0dXJuIHNobGV4LnNwbGl0KHdyYXBwZXJfb3B0aW9u
KSBpZiB3cmFwcGVyX29wdGlvbiBlbHNlIFtdCiAKKyAgICBIVFRQX0RJUiA9ICJodHRwL3Rlc3Rz
LyIKKyAgICBIVFRQX0xPQ0FMX0RJUiA9ICJodHRwL3Rlc3RzL2xvY2FsLyIKKworICAgIGRlZiBp
c19odHRwX3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKKyAgICAgICAgcmV0dXJuIHRlc3RfbmFtZS5z
dGFydHN3aXRoKHNlbGYuSFRUUF9ESVIpIGFuZCBub3QgdGVzdF9uYW1lLnN0YXJ0c3dpdGgoc2Vs
Zi5IVFRQX0xPQ0FMX0RJUikKKworICAgIGRlZiB0ZXN0X3RvX3VyaShzZWxmLCB0ZXN0X25hbWUp
OgorICAgICAgICAiIiJDb252ZXJ0IGEgdGVzdCBuYW1lIHRvIGEgVVJJLiIiIgorICAgICAgICBp
ZiBub3Qgc2VsZi5pc19odHRwX3Rlc3QodGVzdF9uYW1lKToKKyAgICAgICAgICAgIHJldHVybiBw
YXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVzdCh0ZXN0X25hbWUp
KQorCisgICAgICAgIHJlbGF0aXZlX3BhdGggPSB0ZXN0X25hbWVbbGVuKHNlbGYuSFRUUF9ESVIp
Ol0KKworICAgICAgICAjIFRPRE8oZHByYW5rZSk6IHJlbW92ZSB0aGUgU1NMIHJlZmVyZW5jZT8K
KyAgICAgICAgaWYgcmVsYXRpdmVfcGF0aC5zdGFydHN3aXRoKCJzc2wvIik6CisgICAgICAgICAg
ICByZXR1cm4gImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvIiArIHJlbGF0aXZlX3BhdGgKKyAgICAg
ICAgcmV0dXJuICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvIiArIHJlbGF0aXZlX3BhdGgKKworICAg
IGRlZiB1cmlfdG9fdGVzdChzZWxmLCB1cmkpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGJhc2Ug
bGF5b3V0IHRlc3QgbmFtZSBmb3IgYSBnaXZlbiBVUkkuCisKKyAgICAgICAgVGhpcyByZXR1cm5z
IHRoZSB0ZXN0IG5hbWUgZm9yIGEgZ2l2ZW4gVVJJLCBlLmcuLCBpZiB5b3UgcGFzc2VkIGluCisg
ICAgICAgICJmaWxlOi8vL3NyYy9MYXlvdXRUZXN0cy9mYXN0L2h0bWwva2V5Z2VuLmh0bWwiIGl0
IHdvdWxkIHJldHVybgorICAgICAgICAiZmFzdC9odG1sL2tleWdlbi5odG1sIi4KKworICAgICAg
ICAiIiIKKyAgICAgICAgaWYgdXJpLnN0YXJ0c3dpdGgoImZpbGU6Ly8vIik6CisgICAgICAgICAg
ICByZXR1cm4gdXJpW2xlbihwYXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuX3BvcnQubGF5b3V0X3Rl
c3RzX2RpcigpKSArICIvIik6XQorICAgICAgICBpZiB1cmkuc3RhcnRzd2l0aCgiaHR0cDovLyIp
OgorICAgICAgICAgICAgcmV0dXJuIHVyaS5yZXBsYWNlKCdodHRwOi8vMTI3LjAuMC4xOjgwMDAv
Jywgc2VsZi5IVFRQX0RJUikKKyAgICAgICAgaWYgdXJpLnN0YXJ0c3dpdGgoImh0dHBzOi8vIik6
CisgICAgICAgICAgICByZXR1cm4gdXJpLnJlcGxhY2UoJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMv
Jywgc2VsZi5IVFRQX0RJUikKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5r
bm93biB1cmwgdHlwZTogJXMnICUgdXJpKQorCiAgICAgZGVmIGhhc19jcmFzaGVkKHNlbGYpOgog
ICAgICAgICByZXR1cm4gRmFsc2UKIApAQCAtMTEzLDYgKzE0OSwxNSBAQCBjbGFzcyBEcml2ZXJQ
cm94eShvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fcmVmdGVzdF9k
cml2ZXIgPSBkcml2ZXJfaW5zdGFuY2VfY29uc3RydWN0b3IocG9ydCwgd29ya2VyX251bWJlciwg
cGl4ZWxfdGVzdHM9VHJ1ZSkKIAorICAgIGRlZiBpc19odHRwX3Rlc3Qoc2VsZiwgdGVzdF9uYW1l
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RyaXZlci5pc19odHRwX3Rlc3QodGVzdF9uYW1lKQor
CisgICAgZGVmIHRlc3RfdG9fdXJpKHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgIHJldHVybiBz
ZWxmLl9kcml2ZXIudGVzdF90b191cmkodGVzdF9uYW1lKQorCisgICAgZGVmIHVyaV90b190ZXN0
KHNlbGYsIHVyaSk6CisgICAgICAgIHJldHVybiBzZWxmLl9kcml2ZXIudXJpX3RvX3Rlc3QodXJp
KQorCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIGRyaXZlcl9pbnB1dCk6CiAgICAgICAgIGlmIGRy
aXZlcl9pbnB1dC5pc19yZWZ0ZXN0OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlZnRlc3Rf
ZHJpdmVyLnJ1bl90ZXN0KGRyaXZlcl9pbnB1dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5CmluZGV4IGU0NWZiOTIzNDM4NzFm
ZTEzNmFlYzAwNGVkZDU0NmQyZjIzNjBkMjIuLmQ1MzU5ZGVjNzk1MGNhNjE0N2IzMWZjNDZjNGJi
ODQxZjU0M2M1ZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbW9ja19kcnQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9tb2NrX2RydC5weQpAQCAtMTg2LDYgKzE4Niw3IEBAIGNsYXNzIE1vY2tEUlQo
b2JqZWN0KToKICAgICAgICAgaWYgb3B0aW9ucy5wbGF0Zm9ybToKICAgICAgICAgICAgIHBvcnRf
bmFtZSA9IG9wdGlvbnMucGxhdGZvcm0KICAgICAgICAgc2VsZi5fcG9ydCA9IFBvcnRGYWN0b3J5
KGhvc3QpLmdldChwb3J0X25hbWU9cG9ydF9uYW1lLCBvcHRpb25zPW9wdGlvbnMpCisgICAgICAg
IHNlbGYuX2RyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2RyaXZlcigwKQogCiAgICAgZGVmIHJ1
bihzZWxmKToKICAgICAgICAgd2hpbGUgVHJ1ZToKQEAgLTIwMCw4ICsyMDEsOCBAQCBjbGFzcyBN
b2NrRFJUKG9iamVjdCk6CiAKICAgICBkZWYgcnVuX29uZV90ZXN0KHNlbGYsIHRlc3RfaW5wdXQp
OgogICAgICAgICBwb3J0ID0gc2VsZi5fcG9ydAotICAgICAgICBpZiB0ZXN0X2lucHV0LnVyaS5z
dGFydHN3aXRoKCdodHRwJyk6Ci0gICAgICAgICAgICB0ZXN0X25hbWUgPSBwb3J0LnVyaV90b190
ZXN0X25hbWUodGVzdF9pbnB1dC51cmkpCisgICAgICAgIGlmIHRlc3RfaW5wdXQudXJpLnN0YXJ0
c3dpdGgoJ2h0dHA6Ly8nKSBvciB0ZXN0X2lucHV0LnVyaS5zdGFydHN3aXRoKCdodHRwczovLycp
OgorICAgICAgICAgICAgdGVzdF9uYW1lID0gc2VsZi5fZHJpdmVyLnVyaV90b190ZXN0KHRlc3Rf
aW5wdXQudXJpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdGVzdF9uYW1lID0gcG9ydC5y
ZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3RfaW5wdXQudXJpKQogCkBAIC0yNTYsNyArMjU3LDcg
QEAgY2xhc3MgTW9ja0Nocm9taXVtRFJUKE1vY2tEUlQpOgogCiAgICAgZGVmIHJ1bl9vbmVfdGVz
dChzZWxmLCB0ZXN0X2lucHV0KToKICAgICAgICAgcG9ydCA9IHNlbGYuX3BvcnQKLSAgICAgICAg
dGVzdF9uYW1lID0gc2VsZi5fcG9ydC51cmlfdG9fdGVzdF9uYW1lKHRlc3RfaW5wdXQudXJpKQor
ICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9kcml2ZXIudXJpX3RvX3Rlc3QodGVzdF9pbnB1dC51
cmkpCiAKICAgICAgICAgYWN0dWFsX3RleHQgPSBwb3J0LmV4cGVjdGVkX3RleHQodGVzdF9uYW1l
KQogICAgICAgICBhY3R1YWxfaW1hZ2UgPSAnJwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKaW5k
ZXggZjgxMjk1ODQwNzFkNDAyZWFhNjM4NTRlM2ZjMzQxZTg0MThlZGVhNi4uMjQyNWQ1OGRlNWU2
ZDNlMmQ2NmEzYWUxOWZiY2FjYjg3NzIxMGIyYyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5
CkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIE1vY2tEUlRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBv
cnRUZXN0Q2FzZSk6CiAKIGNsYXNzIE1vY2tEUlRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICBkZWYgaW5wdXRfbGluZShzZWxmLCBwb3J0LCB0ZXN0X25hbWUsIGNoZWNrc3VtPU5vbmUpOgot
ICAgICAgICB1cmwgPSBwb3J0LnRlc3RfdG9fdXJpKHRlc3RfbmFtZSkKKyAgICAgICAgdXJsID0g
cG9ydC5jcmVhdGVfZHJpdmVyKDApLnRlc3RfdG9fdXJpKHRlc3RfbmFtZSkKICAgICAgICAgIyBG
SVhNRTogd2Ugc2hvdWxkbid0IGhhdmUgdG8gd29yayBhcm91bmQgcGxhdGZvcm0tc3BlY2lmaWMg
aXNzdWVzCiAgICAgICAgICMgaGVyZS4KICAgICAgICAgaWYgdXJsLnN0YXJ0c3dpdGgoJ2ZpbGU6
Ly8vLycpOgpAQCAtMjE1LDEzICsyMTUsMTMgQEAgY2xhc3MgTW9ja0Nocm9taXVtRFJUVGVzdChN
b2NrRFJUVGVzdCk6CiAgICAgICAgIHJldHVybiBtb2NrX2RydC5Nb2NrQ2hyb21pdW1EUlQob3B0
aW9ucywgYXJncywgaG9zdCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQogCiAgICAgZGVmIGlucHV0
X2xpbmUoc2VsZiwgcG9ydCwgdGVzdF9uYW1lLCBjaGVja3N1bT1Ob25lKToKLSAgICAgICAgdXJs
ID0gcG9ydC50ZXN0X3RvX3VyaSh0ZXN0X25hbWUpCisgICAgICAgIHVybCA9IHBvcnQuY3JlYXRl
X2RyaXZlcigwKS50ZXN0X3RvX3VyaSh0ZXN0X25hbWUpCiAgICAgICAgIGlmIGNoZWNrc3VtOgog
ICAgICAgICAgICAgcmV0dXJuIHVybCArICcgNjAwMCAnICsgY2hlY2tzdW0gKyAnXG4nCiAgICAg
ICAgIHJldHVybiB1cmwgKyAnIDYwMDBcbicKIAogICAgIGRlZiBleHBlY3RlZF9vdXRwdXQoc2Vs
ZiwgcG9ydCwgdGVzdF9uYW1lLCBwaXhlbF90ZXN0cywgdGV4dF9vdXRwdXQsIGV4cGVjdGVkX2No
ZWNrc3VtKToKLSAgICAgICAgdXJsID0gcG9ydC50ZXN0X3RvX3VyaSh0ZXN0X25hbWUpCisgICAg
ICAgIHVybCA9IHBvcnQuY3JlYXRlX2RyaXZlcigwKS50ZXN0X3RvX3VyaSh0ZXN0X25hbWUpCiAg
ICAgICAgIGlmIHBpeGVsX3Rlc3RzIGFuZCBleHBlY3RlZF9jaGVja3N1bToKICAgICAgICAgICAg
IHJldHVybiBbJyNVUkw6JXNcbicgJSB1cmwsCiAgICAgICAgICAgICAgICAgICAgICcjTUQ1OiVz
XG4nICUgZXhwZWN0ZWRfY2hlY2tzdW0sCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggN2I0N2NjZWRlMzhmYTExMmE3NDY1ZjI5MDRm
MTc3NWY1MmJkYmM4NS4uYTNjYzQ2M2Y4NTViOWE1Mzc3YmRkZTQxNmViNDM5MmUyMmYyY2EzNyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5w
eQpAQCAtNDUwLDY3ICs0NTAsNiBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICBkZWYgYWxs
X2Jhc2VsaW5lX3ZhcmlhbnRzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5BTExfQkFTRUxJ
TkVfVkFSSUFOVFMKIAotICAgICMgRklYTUU6IFRoZXNlIG5leHQgdHdvIHJvdXRpbmVzIGFyZSBj
b3BpZWQgZnJvbSBiYXNlLnB5IHdpdGgKLSAgICAjIHRoZSBjYWxscyB0byBwYXRoLmFic3BhdGhf
dG9fdXJpKCkgcmVtb3ZlZC4gV2Ugc2hvdWxkbid0IGhhdmUKLSAgICAjIHRvIGRvIHRoaXMuCi0g
ICAgZGVmIHRlc3RfdG9fdXJpKHNlbGYsIHRlc3RfbmFtZSk6Ci0gICAgICAgICIiIkNvbnZlcnQg
YSB0ZXN0IGZpbGUgKHdoaWNoIGlzIGFuIGFic29sdXRlIHBhdGgpIHRvIGEgVVJJLiIiIgotICAg
ICAgICBMQVlPVVRURVNUX0hUVFBfRElSID0gImh0dHAvdGVzdHMvIgotICAgICAgICBMQVlPVVRU
RVNUX1dFQlNPQ0tFVF9ESVIgPSAiaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvIgotCi0gICAg
ICAgIHBvcnQgPSBOb25lCi0gICAgICAgIHVzZV9zc2wgPSBGYWxzZQotCi0gICAgICAgIHJlbGF0
aXZlX3BhdGggPSB0ZXN0X25hbWUKLSAgICAgICAgaWYgKHJlbGF0aXZlX3BhdGguc3RhcnRzd2l0
aChMQVlPVVRURVNUX1dFQlNPQ0tFVF9ESVIpCi0gICAgICAgICAgICBvciByZWxhdGl2ZV9wYXRo
LnN0YXJ0c3dpdGgoTEFZT1VUVEVTVF9IVFRQX0RJUikpOgotICAgICAgICAgICAgcmVsYXRpdmVf
cGF0aCA9IHJlbGF0aXZlX3BhdGhbbGVuKExBWU9VVFRFU1RfSFRUUF9ESVIpOl0KLSAgICAgICAg
ICAgIHBvcnQgPSA4MDAwCi0KLSAgICAgICAgIyBNYWtlIGh0dHAvdGVzdHMvbG9jYWwgcnVuIGFz
IGxvY2FsIGZpbGVzLiBUaGlzIGlzIHRvIG1pbWljIHRoZQotICAgICAgICAjIGxvZ2ljIGluIHJ1
bi13ZWJraXQtdGVzdHMuCi0gICAgICAgICMKLSAgICAgICAgIyBUT0RPKGRwcmFua2UpOiByZW1v
dmUgdGhlIG1lZGlhIHJlZmVyZW5jZSBhbmQgdGhlIFNTTCByZWZlcmVuY2U/Ci0gICAgICAgIGlm
IChwb3J0IGFuZCBub3QgcmVsYXRpdmVfcGF0aC5zdGFydHN3aXRoKCJsb2NhbC8iKSBhbmQKLSAg
ICAgICAgICAgIG5vdCByZWxhdGl2ZV9wYXRoLnN0YXJ0c3dpdGgoIm1lZGlhLyIpKToKLSAgICAg
ICAgICAgIGlmIHJlbGF0aXZlX3BhdGguc3RhcnRzd2l0aCgic3NsLyIpOgotICAgICAgICAgICAg
ICAgIHBvcnQgKz0gNDQzCi0gICAgICAgICAgICAgICAgcHJvdG9jb2wgPSAiaHR0cHMiCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByb3RvY29sID0gImh0dHAiCi0gICAgICAg
ICAgICByZXR1cm4gIiVzOi8vMTI3LjAuMC4xOiV1LyVzIiAlIChwcm90b2NvbCwgcG9ydCwgcmVs
YXRpdmVfcGF0aCkKLQotICAgICAgICByZXR1cm4gImZpbGU6Ly8iICsgc2VsZi5hYnNwYXRoX2Zv
cl90ZXN0KHRlc3RfbmFtZSkKLQotICAgIGRlZiBhYnNwYXRoX2Zvcl90ZXN0KHNlbGYsIHRlc3Rf
bmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLmxheW91dF90ZXN0c19kaXIoKSArIHNlbGYuVEVT
VF9QQVRIX1NFUEFSQVRPUiArIHRlc3RfbmFtZQotCi0gICAgZGVmIHVyaV90b190ZXN0X25hbWUo
c2VsZiwgdXJpKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBiYXNlIGxheW91dCB0ZXN0IG5hbWUg
Zm9yIGEgZ2l2ZW4gVVJJLgotCi0gICAgICAgIFRoaXMgcmV0dXJucyB0aGUgdGVzdCBuYW1lIGZv
ciBhIGdpdmVuIFVSSSwgZS5nLiwgaWYgeW91IHBhc3NlZCBpbgotICAgICAgICAiZmlsZTovLy9z
cmMvTGF5b3V0VGVzdHMvZmFzdC9odG1sL2tleWdlbi5odG1sIiBpdCB3b3VsZCByZXR1cm4KLSAg
ICAgICAgImZhc3QvaHRtbC9rZXlnZW4uaHRtbCIuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHRl
c3QgPSB1cmkKLSAgICAgICAgaWYgdXJpLnN0YXJ0c3dpdGgoImZpbGU6Ly8vIik6Ci0gICAgICAg
ICAgICBwcmVmaXggPSAiZmlsZTovLyIgKyBzZWxmLmxheW91dF90ZXN0c19kaXIoKSArICIvIgot
ICAgICAgICAgICAgcmV0dXJuIHRlc3RbbGVuKHByZWZpeCk6XQotCi0gICAgICAgIGlmIHVyaS5z
dGFydHN3aXRoKCJodHRwOi8vMTI3LjAuMC4xOjg4ODAvIik6Ci0gICAgICAgICAgICAjIHdlYnNv
Y2tldCB0ZXN0cwotICAgICAgICAgICAgcmV0dXJuIHRlc3QucmVwbGFjZSgnaHR0cDovLzEyNy4w
LjAuMTo4ODgwLycsICcnKQotCi0gICAgICAgIGlmIHVyaS5zdGFydHN3aXRoKCJodHRwOi8vIik6
Ci0gICAgICAgICAgICAjIHJlZ3VsYXIgSFRUUCB0ZXN0Ci0gICAgICAgICAgICByZXR1cm4gdGVz
dC5yZXBsYWNlKCdodHRwOi8vMTI3LjAuMC4xOjgwMDAvJywgJ2h0dHAvdGVzdHMvJykKLQotICAg
ICAgICBpZiB1cmkuc3RhcnRzd2l0aCgiaHR0cHM6Ly8iKToKLSAgICAgICAgICAgIHJldHVybiB0
ZXN0LnJlcGxhY2UoJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMvJywgJ2h0dHAvdGVzdHMvJykKLQot
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCd1bmtub3duIHVybCB0eXBlOiAlcycg
JSB1cmkpCi0KIAogY2xhc3MgVGVzdERyaXZlcihEcml2ZXIpOgogICAgICIiIlRlc3QvRHVtbXkg
aW1wbGVtZW50YXRpb24gb2YgdGhlIER1bXBSZW5kZXJUcmVlIGludGVyZmFjZS4iIiIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5k
ZXggMTk4NWE0YmRlYTc1N2ExMDAxM2QyYjIxMGZlMzg2ODk2NmJjZGNhZC4uNjYzMmRiZWQxZDIx
YTU3NWY3ZWUxYTU4ZGE4ZDllNjg3MGVhODdjZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKQEAgLTQzLDYgKzQzLDcgQEAgZnJv
bSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5uZXQuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90CiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZW52aXJvbm1lbnQgaW1wb3J0IEVudmlyb25tZW50CiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGF0aCBpbXBvcnQgY3lncGF0aAogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYnVpbGRlcnMsIHNlcnZlcl9wcm9jZXNzLCBQb3J0
LCBEcml2ZXIsIERyaXZlck91dHB1dAogCiAKQEAgLTUyMiw4ICs1MjMsMTAgQEAgY2xhc3MgV2Vi
S2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAgIHJldHVybiBzZWxmLl9jcmFzaGVkX3N1YnByb2Nl
c3NfbmFtZSBvciBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5wcm9jZXNzX25hbWUoKQogCiAgICAgZGVm
IF9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KHNlbGYsIGRyaXZlcl9pbnB1dCk6Ci0gICAgICAg
IHVyaSA9IHNlbGYuX3BvcnQudGVzdF90b191cmkoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkKLSAg
ICAgICAgY29tbWFuZCA9IHVyaVs3Ol0gaWYgdXJpLnN0YXJ0c3dpdGgoImZpbGU6Ly8vIikgZWxz
ZSB1cmkKKyAgICAgICAgaWYgc2VsZi5pc19odHRwX3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFt
ZSk6CisgICAgICAgICAgICBjb21tYW5kID0gc2VsZi50ZXN0X3RvX3VyaShkcml2ZXJfaW5wdXQu
dGVzdF9uYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuX3Bv
cnQuYWJzcGF0aF9mb3JfdGVzdChkcml2ZXJfaW5wdXQudGVzdF9uYW1lKQogCiAgICAgICAgIGlm
IGRyaXZlcl9pbnB1dC5pbWFnZV9oYXNoOgogICAgICAgICAgICAgIyBGSVhNRTogV2h5IHRoZSBs
ZWFkaW5nIHF1b3RlPwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121340</attachid>
            <date>2012-01-05 15:06:03 -0800</date>
            <delta_ts>2012-01-05 15:09:16 -0800</delta_ts>
            <desc>add more explicit, clearer unit tests, remove unused import</desc>
            <filename>bug-75648-20120105150602.patch</filename>
            <type>text/plain</type>
            <size>21129</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MDg5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTJjMjBlNzI3NmJlNjIwMWU3ZDQ1MWVlMzAyNjAzY2Iz
NDY4YjhlZC4uOWIyYjcwYjM1Y2M3ZGU2MTAwYWE1YjAxNGI4ZjQwYjUwMjQ0MDJiYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDEyLTAxLTA1ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBjbGVhbiB1cCB0ZXN0L3VyaSBjb252ZXJzaW9uIHJvdXRpbmVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY0OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IG1vdmVzIHRlc3RfdG9fdXJpIGFuZCB1cmlfdG9fdGVzdCBmcm9tIHRoZSBQb3J0CisgICAgICAg
IGNsYXNzIHRvIHRoZSBEcml2ZXIgY2xhc3MgKHRoZSByb3V0aW5lcyB3ZXJlIG9ubHkgYmVpbmcK
KyAgICAgICAgY2FsbGVkIGJ5IHRoZSBkcml2ZXJzKSwgYW5kIHJlbW92ZXMgYSBidW5jaCBvZiBz
dGFsZSBhbmQvb3IKKyAgICAgICAgYnVzdGVkIGxvZ2ljLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHk6Cisg
ICAgICAgIChpc19odHRwX3Rlc3QpOgorICAgICAgICAodGVzdF90b191cmkpOgorICAgICAgICAo
dXJpX3RvX3Rlc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvbW9ja19kcnQucHk6CisgICAgICAgIChydW5fb25lX3Rlc3QpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHk6CisgICAg
ICAgIChNb2NrRFJUVGVzdC5pbnB1dF9saW5lKToKKyAgICAgICAgKGlucHV0X2xpbmUpOgorICAg
ICAgICAoZXhwZWN0ZWRfb3V0cHV0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgIChfY29tbWFuZF9mcm9tX2RyaXZlcl9pbnB1
dCk6CisKIDIwMTItMDEtMDQgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAgPG9zdGFwZW5rby52aWF0
Y2hlc2xhdkBub2tpYS5jb20+CiAKICAgICAgICAgQWRkaW5nIG15c2VsZiB0byBjb21taXR0ZXJz
IGxpc3QuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkKaW5kZXggZDRlMWE1NTZlZjlkMGQ1OTYyZDBiYTE2MjYwNzAyNWEwNTQ3MjU0ZC4uOTVj
OTE2NjM4ZTBkMzk0MTM3Y2VkYzU3MTg2ZjdhNTk5ZjEzMzkxNCAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtNDksNyArNDksNiBA
QCBleGNlcHQgSW1wb3J0RXJyb3I6CiAKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBmaW5k
X2ZpbGVzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3V0aWxzCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHBhdGgKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMgaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcKQEAgLTQ2MSwzMyArNDYwLDYg
QEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBmaWxlbmFtZSA9IHNlbGYuX2ZpbGVzeXN0
ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9uYW1lKQogICAgICAgICByZXR1
cm4gZmlsZW5hbWUgaW4gcmVmdGVzdF9saXN0CiAKLSAgICBkZWYgdGVzdF90b191cmkoc2VsZiwg
dGVzdF9uYW1lKToKLSAgICAgICAgIiIiQ29udmVydCBhIHRlc3QgbmFtZSB0byBhIFVSSS4iIiIK
LSAgICAgICAgTEFZT1VUVEVTVF9IVFRQX0RJUiA9ICJodHRwL3Rlc3RzLyIKLSAgICAgICAgTEFZ
T1VUVEVTVF9XRUJTT0NLRVRfRElSID0gImh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzLyIKLQot
ICAgICAgICBwb3J0ID0gTm9uZQotCi0gICAgICAgIHJlbGF0aXZlX3BhdGggPSB0ZXN0X25hbWUK
LSAgICAgICAgaWYgKHJlbGF0aXZlX3BhdGguc3RhcnRzd2l0aChMQVlPVVRURVNUX1dFQlNPQ0tF
VF9ESVIpCi0gICAgICAgICAgICBvciByZWxhdGl2ZV9wYXRoLnN0YXJ0c3dpdGgoTEFZT1VUVEVT
VF9IVFRQX0RJUikpOgotICAgICAgICAgICAgcmVsYXRpdmVfcGF0aCA9IHJlbGF0aXZlX3BhdGhb
bGVuKExBWU9VVFRFU1RfSFRUUF9ESVIpOl0KLSAgICAgICAgICAgIHBvcnQgPSA4MDAwCi0KLSAg
ICAgICAgIyBNYWtlIGh0dHAvdGVzdHMvbG9jYWwgcnVuIGFzIGxvY2FsIGZpbGVzLiBUaGlzIGlz
IHRvIG1pbWljIHRoZQotICAgICAgICAjIGxvZ2ljIGluIHJ1bi13ZWJraXQtdGVzdHMuCi0gICAg
ICAgICMKLSAgICAgICAgIyBUT0RPKGRwcmFua2UpOiByZW1vdmUgdGhlIFNTTCByZWZlcmVuY2U/
Ci0gICAgICAgIGlmIChwb3J0IGFuZCBub3QgcmVsYXRpdmVfcGF0aC5zdGFydHN3aXRoKCJsb2Nh
bC8iKSk6Ci0gICAgICAgICAgICBpZiByZWxhdGl2ZV9wYXRoLnN0YXJ0c3dpdGgoInNzbC8iKToK
LSAgICAgICAgICAgICAgICBwb3J0ICs9IDQ0MwotICAgICAgICAgICAgICAgIHByb3RvY29sID0g
Imh0dHBzIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcm90b2NvbCA9ICJo
dHRwIgotICAgICAgICAgICAgcmV0dXJuICIlczovLzEyNy4wLjAuMToldS8lcyIgJSAocHJvdG9j
b2wsIHBvcnQsIHJlbGF0aXZlX3BhdGgpCi0KLSAgICAgICAgcmV0dXJuIHBhdGguYWJzcGF0aF90
b191cmkoc2VsZi5hYnNwYXRoX2Zvcl90ZXN0KHRlc3RfbmFtZSkpCi0KICAgICBkZWYgdGVzdHMo
c2VsZiwgcGF0aHMpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgdGVzdHMgZm91bmQu
IiIiCiAgICAgICAgICMgV2hlbiBjb2xsZWN0aW5nIHRlc3QgY2FzZXMsIHNraXAgdGhlc2UgZGly
ZWN0b3JpZXMKQEAgLTU2NywzMiArNTM5LDYgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAiIiIKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZShiYXNlbGlu
ZV9wYXRoLCBkYXRhKQogCi0gICAgZGVmIHVyaV90b190ZXN0X25hbWUoc2VsZiwgdXJpKToKLSAg
ICAgICAgIiIiUmV0dXJuIHRoZSBiYXNlIGxheW91dCB0ZXN0IG5hbWUgZm9yIGEgZ2l2ZW4gVVJJ
LgotCi0gICAgICAgIFRoaXMgcmV0dXJucyB0aGUgdGVzdCBuYW1lIGZvciBhIGdpdmVuIFVSSSwg
ZS5nLiwgaWYgeW91IHBhc3NlZCBpbgotICAgICAgICAiZmlsZTovLy9zcmMvTGF5b3V0VGVzdHMv
ZmFzdC9odG1sL2tleWdlbi5odG1sIiBpdCB3b3VsZCByZXR1cm4KLSAgICAgICAgImZhc3QvaHRt
bC9rZXlnZW4uaHRtbCIuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3QgPSB1cmkKLSAgICAg
ICAgaWYgdXJpLnN0YXJ0c3dpdGgoImZpbGU6Ly8vIik6Ci0gICAgICAgICAgICBwcmVmaXggPSBw
YXRoLmFic3BhdGhfdG9fdXJpKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpKSArICIvIgotICAgICAg
ICAgICAgcmV0dXJuIHRlc3RbbGVuKHByZWZpeCk6XQotCi0gICAgICAgIGlmIHVyaS5zdGFydHN3
aXRoKCJodHRwOi8vMTI3LjAuMC4xOjg4ODAvIik6Ci0gICAgICAgICAgICAjIHdlYnNvY2tldCB0
ZXN0cwotICAgICAgICAgICAgcmV0dXJuIHRlc3QucmVwbGFjZSgnaHR0cDovLzEyNy4wLjAuMTo4
ODgwLycsICcnKQotCi0gICAgICAgIGlmIHVyaS5zdGFydHN3aXRoKCJodHRwOi8vIik6Ci0gICAg
ICAgICAgICAjIHJlZ3VsYXIgSFRUUCB0ZXN0Ci0gICAgICAgICAgICByZXR1cm4gdGVzdC5yZXBs
YWNlKCdodHRwOi8vMTI3LjAuMC4xOjgwMDAvJywgJ2h0dHAvdGVzdHMvJykKLQotICAgICAgICBp
ZiB1cmkuc3RhcnRzd2l0aCgiaHR0cHM6Ly8iKToKLSAgICAgICAgICAgIHJldHVybiB0ZXN0LnJl
cGxhY2UoJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMvJywgJ2h0dHAvdGVzdHMvJykKLQotICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCd1bmtub3duIHVybCB0eXBlOiAlcycgJSB1cmkp
Ci0KICAgICBkZWYgbGF5b3V0X3Rlc3RzX2RpcihzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRo
ZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIExheW91dFRlc3RzIGRpcmVjdG9yeS4i
IiIKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0
cycpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2VfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXggOTNjMTgwZTAyY2NkZmQ3ZjVhZTlkYTI3OTQzM2Fl
OWExODA1Nzc1OC4uNDNmOWIwZjY0M2NmNTIzNzhlMDY0ZThiYmY0YThiYWYzNTVhNjU0OSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3Vu
aXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YmFzZV91bml0dGVzdC5weQpAQCAtMjI2LDE2ICsyMjYsNiBAQCBjbGFzcyBQb3J0VGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnY2FudmFzJyBpbiBkaXJz
KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2NzczIuMScgaW4gZGlycykKIAotICAgIGRlZiB0
ZXN0X3Rlc3RfdG9fdXJpKHNlbGYpOgotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQot
ICAgICAgICBsYXlvdXRfdGVzdF9kaXIgPSBwb3J0LmxheW91dF90ZXN0c19kaXIoKQotICAgICAg
ICB0ZXN0ID0gJ2Zvby9iYXIuaHRtbCcKLSAgICAgICAgcGF0aCA9IHBvcnQuX2ZpbGVzeXN0ZW0u
am9pbihsYXlvdXRfdGVzdF9kaXIsIHRlc3QpCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAn
d2luMzInOgotICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgiXFwiLCAiLyIpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnRlc3RfdG9fdXJpKHRlc3QpLCBhYnNwYXRoX3Rv
X3VyaShwYXRoKSkKLQogICAgIGRlZiB0ZXN0X2dldF9vcHRpb25fX3NldChzZWxmKToKICAgICAg
ICAgb3B0aW9ucywgYXJncyA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpLnBhcnNlX2FyZ3MoW10p
CiAgICAgICAgIG9wdGlvbnMuZm9vID0gJ2JhcicKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IDA4ZDYwMTBjYmYzYTVh
YjA4ZWY3MmJkNDE1MDZlNzAxOGRiZWRkNTQuLjY0YjcwNDRmYzhhYzg2ZDU1NDg0N2RjYWQzMjA2
OTU1ZDA5NmJkYTkgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNTI0LDcgKzUyNCw3IEBAIGNsYXNzIENocm9taXVt
RHJpdmVyKERyaXZlcik6CiAgICAgICAgIGhhc19hdWRpbyA9IEZhbHNlCiAgICAgICAgIGhhc19i
YXNlNjQgPSBGYWxzZQogCi0gICAgICAgIHVyaSA9IHNlbGYuX3BvcnQudGVzdF90b191cmkoZHJp
dmVyX2lucHV0LnRlc3RfbmFtZSkKKyAgICAgICAgdXJpID0gc2VsZi50ZXN0X3RvX3VyaShkcml2
ZXJfaW5wdXQudGVzdF9uYW1lKQogICAgICAgICBjbWQgPSBzZWxmLl90ZXN0X3NoZWxsX2NvbW1h
bmQodXJpLCBkcml2ZXJfaW5wdXQudGltZW91dCwgZHJpdmVyX2lucHV0LmltYWdlX2hhc2gpCiAg
ICAgICAgIGxpbmUsIGNyYXNoID0gc2VsZi5fd3JpdGVfY29tbWFuZF9hbmRfcmVhZF9saW5lKGlu
cHV0PWNtZCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKaW5kZXggMmUzZDc0ZTY0ZmIxMWEx
MmZjNzEyMDhjOTc1NjFkYzczMGNjNGFiMy4uNGFlN2VkMzA0OTUwNDE1MWE5OWI5MDA2NjIzODgy
NDQ3ZmMwMjk5YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CkBAIC05OCw3ICs5OCw3IEBA
IGNsYXNzIENocm9taXVtRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICByYWlzZSBJT0Vycm9yCiAgICAgICAgIHNlbGYuZHJpdmVyLl9wcm9jLnN0ZG91dC5yZWFkbGlu
ZSA9IG1vY2tfcmVhZGxpbmUKIAotICAgICAgICBzZWxmLmRyaXZlci5fcG9ydC50ZXN0X3RvX3Vy
aSA9IGxhbWJkYSB0ZXN0OiAnbW9ja3Rlc3R1cmknCisgICAgICAgIHNlbGYuZHJpdmVyLnRlc3Rf
dG9fdXJpID0gbGFtYmRhIHRlc3Q6ICdtb2NrdGVzdHVyaScKICAgICAgICAgZHJpdmVyX291dHB1
dCA9IHNlbGYuZHJpdmVyLnJ1bl90ZXN0KERyaXZlcklucHV0KHRlc3RfbmFtZT0nc29tZS90ZXN0
Lmh0bWwnLCB0aW1lb3V0PTEsIGltYWdlX2hhc2g9Tm9uZSwgaXNfcmVmdGVzdD1GYWxzZSkpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kcml2ZXIuX3BvcnQuZHJpdmVyX25hbWUoKSwg
ZHJpdmVyX291dHB1dC5jcmFzaGVkX3Byb2Nlc3NfbmFtZSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQppbmRleCBmOGM0MTQ4OTlm
MTZiNWRiZDcxYTMxMzM4YWU2OWIyZjgxZDRjYWU0Li45MzEyNWJlYzIzMWIxZDNiNWZmNTViMmM0
YmNhZmI3MzAzMzQzYTM2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2RyaXZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2RyaXZlci5weQpAQCAtMjgsNiArMjgsOCBAQAogCiBpbXBvcnQgc2hsZXgK
IAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCisKIAogY2xhc3MgRHJp
dmVySW5wdXQob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9uYW1lLCB0aW1l
b3V0LCBpbWFnZV9oYXNoLCBpc19yZWZ0ZXN0KToKQEAgLTkxLDYgKzkzLDQwIEBAIGNsYXNzIERy
aXZlcihvYmplY3QpOgogICAgICAgICAjIHVzZWQgYnkgZS5nLiB0b29scy92YWxncmluZC92YWxn
cmluZF90ZXN0cy5weS4KICAgICAgICAgcmV0dXJuIHNobGV4LnNwbGl0KHdyYXBwZXJfb3B0aW9u
KSBpZiB3cmFwcGVyX29wdGlvbiBlbHNlIFtdCiAKKyAgICBIVFRQX0RJUiA9ICJodHRwL3Rlc3Rz
LyIKKyAgICBIVFRQX0xPQ0FMX0RJUiA9ICJodHRwL3Rlc3RzL2xvY2FsLyIKKworICAgIGRlZiBp
c19odHRwX3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKKyAgICAgICAgcmV0dXJuIHRlc3RfbmFtZS5z
dGFydHN3aXRoKHNlbGYuSFRUUF9ESVIpIGFuZCBub3QgdGVzdF9uYW1lLnN0YXJ0c3dpdGgoc2Vs
Zi5IVFRQX0xPQ0FMX0RJUikKKworICAgIGRlZiB0ZXN0X3RvX3VyaShzZWxmLCB0ZXN0X25hbWUp
OgorICAgICAgICAiIiJDb252ZXJ0IGEgdGVzdCBuYW1lIHRvIGEgVVJJLiIiIgorICAgICAgICBp
ZiBub3Qgc2VsZi5pc19odHRwX3Rlc3QodGVzdF9uYW1lKToKKyAgICAgICAgICAgIHJldHVybiBw
YXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVzdCh0ZXN0X25hbWUp
KQorCisgICAgICAgIHJlbGF0aXZlX3BhdGggPSB0ZXN0X25hbWVbbGVuKHNlbGYuSFRUUF9ESVIp
Ol0KKworICAgICAgICAjIFRPRE8oZHByYW5rZSk6IHJlbW92ZSB0aGUgU1NMIHJlZmVyZW5jZT8K
KyAgICAgICAgaWYgcmVsYXRpdmVfcGF0aC5zdGFydHN3aXRoKCJzc2wvIik6CisgICAgICAgICAg
ICByZXR1cm4gImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvIiArIHJlbGF0aXZlX3BhdGgKKyAgICAg
ICAgcmV0dXJuICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvIiArIHJlbGF0aXZlX3BhdGgKKworICAg
IGRlZiB1cmlfdG9fdGVzdChzZWxmLCB1cmkpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGJhc2Ug
bGF5b3V0IHRlc3QgbmFtZSBmb3IgYSBnaXZlbiBVUkkuCisKKyAgICAgICAgVGhpcyByZXR1cm5z
IHRoZSB0ZXN0IG5hbWUgZm9yIGEgZ2l2ZW4gVVJJLCBlLmcuLCBpZiB5b3UgcGFzc2VkIGluCisg
ICAgICAgICJmaWxlOi8vL3NyYy9MYXlvdXRUZXN0cy9mYXN0L2h0bWwva2V5Z2VuLmh0bWwiIGl0
IHdvdWxkIHJldHVybgorICAgICAgICAiZmFzdC9odG1sL2tleWdlbi5odG1sIi4KKworICAgICAg
ICAiIiIKKyAgICAgICAgaWYgdXJpLnN0YXJ0c3dpdGgoImZpbGU6Ly8vIik6CisgICAgICAgICAg
ICByZXR1cm4gdXJpW2xlbihwYXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuX3BvcnQubGF5b3V0X3Rl
c3RzX2RpcigpKSArICIvIik6XQorICAgICAgICBpZiB1cmkuc3RhcnRzd2l0aCgiaHR0cDovLyIp
OgorICAgICAgICAgICAgcmV0dXJuIHVyaS5yZXBsYWNlKCdodHRwOi8vMTI3LjAuMC4xOjgwMDAv
Jywgc2VsZi5IVFRQX0RJUikKKyAgICAgICAgaWYgdXJpLnN0YXJ0c3dpdGgoImh0dHBzOi8vIik6
CisgICAgICAgICAgICByZXR1cm4gdXJpLnJlcGxhY2UoJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMv
Jywgc2VsZi5IVFRQX0RJUikKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5r
bm93biB1cmwgdHlwZTogJXMnICUgdXJpKQorCiAgICAgZGVmIGhhc19jcmFzaGVkKHNlbGYpOgog
ICAgICAgICByZXR1cm4gRmFsc2UKIApAQCAtMTEzLDYgKzE0OSwxNSBAQCBjbGFzcyBEcml2ZXJQ
cm94eShvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fcmVmdGVzdF9k
cml2ZXIgPSBkcml2ZXJfaW5zdGFuY2VfY29uc3RydWN0b3IocG9ydCwgd29ya2VyX251bWJlciwg
cGl4ZWxfdGVzdHM9VHJ1ZSkKIAorICAgIGRlZiBpc19odHRwX3Rlc3Qoc2VsZiwgdGVzdF9uYW1l
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RyaXZlci5pc19odHRwX3Rlc3QodGVzdF9uYW1lKQor
CisgICAgZGVmIHRlc3RfdG9fdXJpKHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgIHJldHVybiBz
ZWxmLl9kcml2ZXIudGVzdF90b191cmkodGVzdF9uYW1lKQorCisgICAgZGVmIHVyaV90b190ZXN0
KHNlbGYsIHVyaSk6CisgICAgICAgIHJldHVybiBzZWxmLl9kcml2ZXIudXJpX3RvX3Rlc3QodXJp
KQorCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIGRyaXZlcl9pbnB1dCk6CiAgICAgICAgIGlmIGRy
aXZlcl9pbnB1dC5pc19yZWZ0ZXN0OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlZnRlc3Rf
ZHJpdmVyLnJ1bl90ZXN0KGRyaXZlcl9pbnB1dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXJfdW5pdHRlc3QucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWQ4MzU5NjY4YzFkYzBkNDdjZWQxNzMyNWZlZTgyZGU2ODg1ZGNlYwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVy
X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc3lz
CitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1w
b3J0IGFic3BhdGhfdG9fdXJpCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0
IE1vY2tIb3N0CisKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IFBvcnQs
IERyaXZlciwgRHJpdmVyT3V0cHV0CisKKworY2xhc3MgRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CisgICAgZGVmIG1ha2VfcG9ydChzZWxmKToKKyAgICAgICAgcmV0dXJuIFBvcnQoTW9j
a0hvc3QoKSkKKworICAgIGRlZiBfYXNzZXJ0X3dyYXBwZXIoc2VsZiwgd3JhcHBlcl9zdHJpbmcs
IGV4cGVjdGVkX3dyYXBwZXIpOgorICAgICAgICB3cmFwcGVyID0gRHJpdmVyKFBvcnQoTW9ja0hv
c3QoKSksIE5vbmUsIHBpeGVsX3Rlc3RzPUZhbHNlKS5fY29tbWFuZF93cmFwcGVyKHdyYXBwZXJf
c3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIsIGV4cGVjdGVkX3dyYXBw
ZXIpCisKKyAgICBkZWYgdGVzdF9jb21tYW5kX3dyYXBwZXIoc2VsZik6CisgICAgICAgIHNlbGYu
X2Fzc2VydF93cmFwcGVyKE5vbmUsIFtdKQorICAgICAgICBzZWxmLl9hc3NlcnRfd3JhcHBlcigi
dmFsZ3JpbmQiLCBbInZhbGdyaW5kIl0pCisKKyAgICAgICAgIyBWYWxpZGF0ZSB0aGF0IHNobGV4
IHdvcmtzIGFzIGV4cGVjdGVkLgorICAgICAgICBjb21tYW5kX3dpdGhfc3BhY2VzID0gInZhbGdy
aW5kIC0tc21jLWNoZWNrPVwiY2hlY2sgd2l0aCBzcGFjZXMhXCIgLS1mb28iCisgICAgICAgIGV4
cGVjdGVkX3BhcnNlID0gWyJ2YWxncmluZCIsICItLXNtYy1jaGVjaz1jaGVjayB3aXRoIHNwYWNl
cyEiLCAiLS1mb28iXQorICAgICAgICBzZWxmLl9hc3NlcnRfd3JhcHBlcihjb21tYW5kX3dpdGhf
c3BhY2VzLCBleHBlY3RlZF9wYXJzZSkKKworICAgIGRlZiB0ZXN0X3Rlc3RfdG9fdXJpKHNlbGYp
OgorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBkcml2ZXIgPSBEcml2
ZXIocG9ydCwgTm9uZSwgcGl4ZWxfdGVzdHM9RmFsc2UpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9y
bSBpbiAoJ2N5Z3dpbicsICd3aW4zMicpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
cml2ZXIudGVzdF90b191cmkoJ2Zvby9iYXIuaHRtbCcpLCAnZmlsZTovLy8lcy9mb28vYmFyLmh0
bWwnICUgcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGRyaXZlci50ZXN0X3RvX3VyaSgnZm9vL2Jhci5odG1sJyksICdm
aWxlOi8vJXMvZm9vL2Jhci5odG1sJyAlIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGRyaXZlci50ZXN0X3RvX3VyaSgnaHR0cC90ZXN0cy9mb28uaHRt
bCcpLCAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zvby5odG1sJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkcml2ZXIudGVzdF90b191cmkoJ2h0dHAvdGVzdHMvc3NsL2Jhci5odG1sJyksICdo
dHRwczovLzEyNy4wLjAuMTo4NDQzL3NzbC9iYXIuaHRtbCcpCisKKyAgICBkZWYgdGVzdF91cmlf
dG9fdGVzdChzZWxmKToKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKKyAgICAgICAg
ZHJpdmVyID0gRHJpdmVyKHBvcnQsIE5vbmUsIHBpeGVsX3Rlc3RzPUZhbHNlKQorICAgICAgICBp
ZiBzeXMucGxhdGZvcm0gaW4gKCdjeWd3aW4nLCAnd2luMzInKToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZHJpdmVyLnVyaV90b190ZXN0KCdmaWxlOi8vLyVzL2Zvby9iYXIuaHRtbCcg
JSBwb3J0LmxheW91dF90ZXN0c19kaXIoKSksICdmb28vYmFyLmh0bWwnKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2ZXIudXJpX3RvX3Rlc3QoJ2ZpbGU6
Ly8lcy9mb28vYmFyLmh0bWwnICUgcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpLCAnZm9vL2Jhci5o
dG1sJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2ZXIudXJpX3RvX3Rlc3QoJ2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9mb28uaHRtbCcpLCAnaHR0cC90ZXN0cy9mb28uaHRtbCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJpdmVyLnVyaV90b190ZXN0KCdodHRwczovLzEyNy4wLjAu
MTo4NDQzL3NzbC9iYXIuaHRtbCcpLCAnaHR0cC90ZXN0cy9zc2wvYmFyLmh0bWwnKQorCisKK2lm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weQppbmRl
eCBlNDVmYjkyMzQzODcxZmUxMzZhZWMwMDRlZGQ1NDZkMmYyMzYwZDIyLi5kNTM1OWRlYzc5NTBj
YTYxNDdiMzFmYzQ2YzRiYjg0MWY1NDNjNWZhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHkKQEAgLTE4Niw2ICsxODYsNyBA
QCBjbGFzcyBNb2NrRFJUKG9iamVjdCk6CiAgICAgICAgIGlmIG9wdGlvbnMucGxhdGZvcm06CiAg
ICAgICAgICAgICBwb3J0X25hbWUgPSBvcHRpb25zLnBsYXRmb3JtCiAgICAgICAgIHNlbGYuX3Bv
cnQgPSBQb3J0RmFjdG9yeShob3N0KS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSwgb3B0aW9ucz1v
cHRpb25zKQorICAgICAgICBzZWxmLl9kcml2ZXIgPSBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIo
MCkKIAogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIHdoaWxlIFRydWU6CkBAIC0yMDAsOCAr
MjAxLDggQEAgY2xhc3MgTW9ja0RSVChvYmplY3QpOgogCiAgICAgZGVmIHJ1bl9vbmVfdGVzdChz
ZWxmLCB0ZXN0X2lucHV0KToKICAgICAgICAgcG9ydCA9IHNlbGYuX3BvcnQKLSAgICAgICAgaWYg
dGVzdF9pbnB1dC51cmkuc3RhcnRzd2l0aCgnaHR0cCcpOgotICAgICAgICAgICAgdGVzdF9uYW1l
ID0gcG9ydC51cmlfdG9fdGVzdF9uYW1lKHRlc3RfaW5wdXQudXJpKQorICAgICAgICBpZiB0ZXN0
X2lucHV0LnVyaS5zdGFydHN3aXRoKCdodHRwOi8vJykgb3IgdGVzdF9pbnB1dC51cmkuc3RhcnRz
d2l0aCgnaHR0cHM6Ly8nKToKKyAgICAgICAgICAgIHRlc3RfbmFtZSA9IHNlbGYuX2RyaXZlci51
cmlfdG9fdGVzdCh0ZXN0X2lucHV0LnVyaSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRl
c3RfbmFtZSA9IHBvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0X2lucHV0LnVyaSkKIApA
QCAtMjU2LDcgKzI1Nyw3IEBAIGNsYXNzIE1vY2tDaHJvbWl1bURSVChNb2NrRFJUKToKIAogICAg
IGRlZiBydW5fb25lX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCk6CiAgICAgICAgIHBvcnQgPSBzZWxm
Ll9wb3J0Ci0gICAgICAgIHRlc3RfbmFtZSA9IHNlbGYuX3BvcnQudXJpX3RvX3Rlc3RfbmFtZSh0
ZXN0X2lucHV0LnVyaSkKKyAgICAgICAgdGVzdF9uYW1lID0gc2VsZi5fZHJpdmVyLnVyaV90b190
ZXN0KHRlc3RfaW5wdXQudXJpKQogCiAgICAgICAgIGFjdHVhbF90ZXh0ID0gcG9ydC5leHBlY3Rl
ZF90ZXh0KHRlc3RfbmFtZSkKICAgICAgICAgYWN0dWFsX2ltYWdlID0gJycKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0
X3VuaXR0ZXN0LnB5CmluZGV4IGY4MTI5NTg0MDcxZDQwMmVhYTYzODU0ZTNmYzM0MWU4NDE4ZWRl
YTYuLjI0MjVkNThkZTVlNmQzZTJkNjZhM2FlMTlmYmNhY2I4NzcyMTBiMmMgMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2Nr
X2RydF91bml0dGVzdC5weQpAQCAtODksNyArODksNyBAQCBjbGFzcyBNb2NrRFJUUG9ydFRlc3Qo
cG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogCiBjbGFzcyBNb2NrRFJUVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgZGVmIGlucHV0X2xpbmUoc2VsZiwgcG9ydCwgdGVzdF9uYW1lLCBj
aGVja3N1bT1Ob25lKToKLSAgICAgICAgdXJsID0gcG9ydC50ZXN0X3RvX3VyaSh0ZXN0X25hbWUp
CisgICAgICAgIHVybCA9IHBvcnQuY3JlYXRlX2RyaXZlcigwKS50ZXN0X3RvX3VyaSh0ZXN0X25h
bWUpCiAgICAgICAgICMgRklYTUU6IHdlIHNob3VsZG4ndCBoYXZlIHRvIHdvcmsgYXJvdW5kIHBs
YXRmb3JtLXNwZWNpZmljIGlzc3VlcwogICAgICAgICAjIGhlcmUuCiAgICAgICAgIGlmIHVybC5z
dGFydHN3aXRoKCdmaWxlOi8vLy8nKToKQEAgLTIxNSwxMyArMjE1LDEzIEBAIGNsYXNzIE1vY2tD
aHJvbWl1bURSVFRlc3QoTW9ja0RSVFRlc3QpOgogICAgICAgICByZXR1cm4gbW9ja19kcnQuTW9j
a0Nocm9taXVtRFJUKG9wdGlvbnMsIGFyZ3MsIGhvc3QsIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikK
IAogICAgIGRlZiBpbnB1dF9saW5lKHNlbGYsIHBvcnQsIHRlc3RfbmFtZSwgY2hlY2tzdW09Tm9u
ZSk6Ci0gICAgICAgIHVybCA9IHBvcnQudGVzdF90b191cmkodGVzdF9uYW1lKQorICAgICAgICB1
cmwgPSBwb3J0LmNyZWF0ZV9kcml2ZXIoMCkudGVzdF90b191cmkodGVzdF9uYW1lKQogICAgICAg
ICBpZiBjaGVja3N1bToKICAgICAgICAgICAgIHJldHVybiB1cmwgKyAnIDYwMDAgJyArIGNoZWNr
c3VtICsgJ1xuJwogICAgICAgICByZXR1cm4gdXJsICsgJyA2MDAwXG4nCiAKICAgICBkZWYgZXhw
ZWN0ZWRfb3V0cHV0KHNlbGYsIHBvcnQsIHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMsIHRleHRfb3V0
cHV0LCBleHBlY3RlZF9jaGVja3N1bSk6Ci0gICAgICAgIHVybCA9IHBvcnQudGVzdF90b191cmko
dGVzdF9uYW1lKQorICAgICAgICB1cmwgPSBwb3J0LmNyZWF0ZV9kcml2ZXIoMCkudGVzdF90b191
cmkodGVzdF9uYW1lKQogICAgICAgICBpZiBwaXhlbF90ZXN0cyBhbmQgZXhwZWN0ZWRfY2hlY2tz
dW06CiAgICAgICAgICAgICByZXR1cm4gWycjVVJMOiVzXG4nICUgdXJsLAogICAgICAgICAgICAg
ICAgICAgICAnI01ENTolc1xuJyAlIGV4cGVjdGVkX2NoZWNrc3VtLApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IDdiNDdjY2VkZTM4
ZmExMTJhNzQ2NWYyOTA0ZjE3NzVmNTJiZGJjODUuLmEzY2M0NjNmODU1YjlhNTM3N2JkZGU0MTZl
YjQzOTJlMjJmMmNhMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTQ1MCw2NyArNDUwLDYgQEAgY2xhc3MgVGVzdFBvcnQoUG9y
dCk6CiAgICAgZGVmIGFsbF9iYXNlbGluZV92YXJpYW50cyhzZWxmKToKICAgICAgICAgcmV0dXJu
IHNlbGYuQUxMX0JBU0VMSU5FX1ZBUklBTlRTCiAKLSAgICAjIEZJWE1FOiBUaGVzZSBuZXh0IHR3
byByb3V0aW5lcyBhcmUgY29waWVkIGZyb20gYmFzZS5weSB3aXRoCi0gICAgIyB0aGUgY2FsbHMg
dG8gcGF0aC5hYnNwYXRoX3RvX3VyaSgpIHJlbW92ZWQuIFdlIHNob3VsZG4ndCBoYXZlCi0gICAg
IyB0byBkbyB0aGlzLgotICAgIGRlZiB0ZXN0X3RvX3VyaShzZWxmLCB0ZXN0X25hbWUpOgotICAg
ICAgICAiIiJDb252ZXJ0IGEgdGVzdCBmaWxlICh3aGljaCBpcyBhbiBhYnNvbHV0ZSBwYXRoKSB0
byBhIFVSSS4iIiIKLSAgICAgICAgTEFZT1VUVEVTVF9IVFRQX0RJUiA9ICJodHRwL3Rlc3RzLyIK
LSAgICAgICAgTEFZT1VUVEVTVF9XRUJTT0NLRVRfRElSID0gImh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzLyIKLQotICAgICAgICBwb3J0ID0gTm9uZQotICAgICAgICB1c2Vfc3NsID0gRmFsc2UK
LQotICAgICAgICByZWxhdGl2ZV9wYXRoID0gdGVzdF9uYW1lCi0gICAgICAgIGlmIChyZWxhdGl2
ZV9wYXRoLnN0YXJ0c3dpdGgoTEFZT1VUVEVTVF9XRUJTT0NLRVRfRElSKQotICAgICAgICAgICAg
b3IgcmVsYXRpdmVfcGF0aC5zdGFydHN3aXRoKExBWU9VVFRFU1RfSFRUUF9ESVIpKToKLSAgICAg
ICAgICAgIHJlbGF0aXZlX3BhdGggPSByZWxhdGl2ZV9wYXRoW2xlbihMQVlPVVRURVNUX0hUVFBf
RElSKTpdCi0gICAgICAgICAgICBwb3J0ID0gODAwMAotCi0gICAgICAgICMgTWFrZSBodHRwL3Rl
c3RzL2xvY2FsIHJ1biBhcyBsb2NhbCBmaWxlcy4gVGhpcyBpcyB0byBtaW1pYyB0aGUKLSAgICAg
ICAgIyBsb2dpYyBpbiBydW4td2Via2l0LXRlc3RzLgotICAgICAgICAjCi0gICAgICAgICMgVE9E
TyhkcHJhbmtlKTogcmVtb3ZlIHRoZSBtZWRpYSByZWZlcmVuY2UgYW5kIHRoZSBTU0wgcmVmZXJl
bmNlPwotICAgICAgICBpZiAocG9ydCBhbmQgbm90IHJlbGF0aXZlX3BhdGguc3RhcnRzd2l0aCgi
bG9jYWwvIikgYW5kCi0gICAgICAgICAgICBub3QgcmVsYXRpdmVfcGF0aC5zdGFydHN3aXRoKCJt
ZWRpYS8iKSk6Ci0gICAgICAgICAgICBpZiByZWxhdGl2ZV9wYXRoLnN0YXJ0c3dpdGgoInNzbC8i
KToKLSAgICAgICAgICAgICAgICBwb3J0ICs9IDQ0MwotICAgICAgICAgICAgICAgIHByb3RvY29s
ID0gImh0dHBzIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcm90b2NvbCA9
ICJodHRwIgotICAgICAgICAgICAgcmV0dXJuICIlczovLzEyNy4wLjAuMToldS8lcyIgJSAocHJv
dG9jb2wsIHBvcnQsIHJlbGF0aXZlX3BhdGgpCi0KLSAgICAgICAgcmV0dXJuICJmaWxlOi8vIiAr
IHNlbGYuYWJzcGF0aF9mb3JfdGVzdCh0ZXN0X25hbWUpCi0KLSAgICBkZWYgYWJzcGF0aF9mb3Jf
dGVzdChzZWxmLCB0ZXN0X25hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5sYXlvdXRfdGVzdHNf
ZGlyKCkgKyBzZWxmLlRFU1RfUEFUSF9TRVBBUkFUT1IgKyB0ZXN0X25hbWUKLQotICAgIGRlZiB1
cmlfdG9fdGVzdF9uYW1lKHNlbGYsIHVyaSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgYmFzZSBs
YXlvdXQgdGVzdCBuYW1lIGZvciBhIGdpdmVuIFVSSS4KLQotICAgICAgICBUaGlzIHJldHVybnMg
dGhlIHRlc3QgbmFtZSBmb3IgYSBnaXZlbiBVUkksIGUuZy4sIGlmIHlvdSBwYXNzZWQgaW4KLSAg
ICAgICAgImZpbGU6Ly8vc3JjL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9rZXlnZW4uaHRtbCIgaXQg
d291bGQgcmV0dXJuCi0gICAgICAgICJmYXN0L2h0bWwva2V5Z2VuLmh0bWwiLgotCi0gICAgICAg
ICIiIgotICAgICAgICB0ZXN0ID0gdXJpCi0gICAgICAgIGlmIHVyaS5zdGFydHN3aXRoKCJmaWxl
Oi8vLyIpOgotICAgICAgICAgICAgcHJlZml4ID0gImZpbGU6Ly8iICsgc2VsZi5sYXlvdXRfdGVz
dHNfZGlyKCkgKyAiLyIKLSAgICAgICAgICAgIHJldHVybiB0ZXN0W2xlbihwcmVmaXgpOl0KLQot
ICAgICAgICBpZiB1cmkuc3RhcnRzd2l0aCgiaHR0cDovLzEyNy4wLjAuMTo4ODgwLyIpOgotICAg
ICAgICAgICAgIyB3ZWJzb2NrZXQgdGVzdHMKLSAgICAgICAgICAgIHJldHVybiB0ZXN0LnJlcGxh
Y2UoJ2h0dHA6Ly8xMjcuMC4wLjE6ODg4MC8nLCAnJykKLQotICAgICAgICBpZiB1cmkuc3RhcnRz
d2l0aCgiaHR0cDovLyIpOgotICAgICAgICAgICAgIyByZWd1bGFyIEhUVFAgdGVzdAotICAgICAg
ICAgICAgcmV0dXJuIHRlc3QucmVwbGFjZSgnaHR0cDovLzEyNy4wLjAuMTo4MDAwLycsICdodHRw
L3Rlc3RzLycpCi0KLSAgICAgICAgaWYgdXJpLnN0YXJ0c3dpdGgoImh0dHBzOi8vIik6Ci0gICAg
ICAgICAgICByZXR1cm4gdGVzdC5yZXBsYWNlKCdodHRwczovLzEyNy4wLjAuMTo4NDQzLycsICdo
dHRwL3Rlc3RzLycpCi0KLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5rbm93
biB1cmwgdHlwZTogJXMnICUgdXJpKQotCiAKIGNsYXNzIFRlc3REcml2ZXIoRHJpdmVyKToKICAg
ICAiIiJUZXN0L0R1bW15IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEdW1wUmVuZGVyVHJlZSBpbnRl
cmZhY2UuIiIiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2Via2l0LnB5CmluZGV4IDE5ODVhNGJkZWE3NTdhMTAwMTNkMmIyMTBmZTM4Njg5NjZiY2Rj
YWQuLjdlMDMyYzQ5ZTc4ZWVjMDUyNzZjZDk5MmFlY2I5MzZmNzI2OTU5N2EgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC01
MjIsOCArNTIyLDEwIEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICByZXR1
cm4gc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgb3Igc2VsZi5fc2VydmVyX3Byb2Nlc3Mu
cHJvY2Vzc19uYW1lKCkKIAogICAgIGRlZiBfY29tbWFuZF9mcm9tX2RyaXZlcl9pbnB1dChzZWxm
LCBkcml2ZXJfaW5wdXQpOgotICAgICAgICB1cmkgPSBzZWxmLl9wb3J0LnRlc3RfdG9fdXJpKGRy
aXZlcl9pbnB1dC50ZXN0X25hbWUpCi0gICAgICAgIGNvbW1hbmQgPSB1cmlbNzpdIGlmIHVyaS5z
dGFydHN3aXRoKCJmaWxlOi8vLyIpIGVsc2UgdXJpCisgICAgICAgIGlmIHNlbGYuaXNfaHR0cF90
ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpOgorICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYu
dGVzdF90b191cmkoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGNvbW1hbmQgPSBzZWxmLl9wb3J0LmFic3BhdGhfZm9yX3Rlc3QoZHJpdmVyX2lucHV0
LnRlc3RfbmFtZSkKIAogICAgICAgICBpZiBkcml2ZXJfaW5wdXQuaW1hZ2VfaGFzaDoKICAgICAg
ICAgICAgICMgRklYTUU6IFdoeSB0aGUgbGVhZGluZyBxdW90ZT8K
</data>
<flag name="review"
          id="121808"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>