<?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>65413</bug_id>
          
          <creation_ts>2011-07-30 11:18:25 -0700</creation_ts>
          <short_desc>Introduce SpecifierSorter, a thing that knows how specifiers should be ordered.</short_desc>
          <delta_ts>2022-03-01 02:50:01 -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>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>
          
          <blocked>64385</blocked>
    
    <blocked>65444</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>444305</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-30 11:18:25 -0700</bug_when>
    <thetext>Introduce SpecifierSorter, a thing that knows how specifiers should be ordered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444306</commentid>
    <comment_count>1</comment_count>
      <attachid>102438</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-30 11:19:11 -0700</bug_when>
    <thetext>Created attachment 102438
WIP:Switching computers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444320</commentid>
    <comment_count>2</comment_count>
      <attachid>102440</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-30 14:55:33 -0700</bug_when>
    <thetext>Created attachment 102440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444517</commentid>
    <comment_count>3</comment_count>
      <attachid>102440</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-31 22:03:41 -0700</bug_when>
    <thetext>Comment on attachment 102440
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py:84
&gt; +    def add_specifier(self, category, specifier):
&gt; +        self._specifier_to_category[specifier] = category

Should this be private?

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py:99
&gt; +        category_slots = []
&gt; +        for i in range(len(TestConfiguration.category_order())):
&gt; +            category_slots.append([])

category_slots = [[]] * len(TestConfiguration.category_order())

or

category_slots = map(lambda x: [], TestConfiguration.category_order())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444769</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-01 10:53:09 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 102440 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102440&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py:84
&gt; &gt; +    def add_specifier(self, category, specifier):
&gt; &gt; +        self._specifier_to_category[specifier] = category
&gt; 
&gt; Should this be private?
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py:99
&gt; &gt; +        category_slots = []
&gt; &gt; +        for i in range(len(TestConfiguration.category_order())):
&gt; &gt; +            category_slots.append([])
&gt; 
&gt; category_slots = [[]] * len(TestConfiguration.category_order())

This will give you a somewhat unexpected effect of having one array listed N times:

&gt;&gt;&gt; a = ([[]] * 10)
&gt;&gt;&gt; a[0].append(&apos;zoot&apos;)
&gt;&gt;&gt; a
[[&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;]]

&gt; 
&gt; or
&gt; 
&gt; category_slots = map(lambda x: [], TestConfiguration.category_order())

Now, _that_ is cool.

(In reply to comment #3)
&gt; (From update of attachment 102440 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102440&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py:84
&gt; &gt; +    def add_specifier(self, category, specifier):
&gt; &gt; +        self._specifier_to_category[specifier] = category
&gt; 
&gt; Should this be private?
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py:99
&gt; &gt; +        category_slots = []
&gt; &gt; +        for i in range(len(TestConfiguration.category_order())):
&gt; &gt; +            category_slots.append([])
&gt; 
&gt; category_slots = [[]] * len(TestConfiguration.category_order())
&gt; 
&gt; or
&gt; 
&gt; category_slots = map(lambda x: [], TestConfiguration.category_order())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444783</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-01 11:34:29 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 102440 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102440&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py:84
&gt; &gt; +    def add_specifier(self, category, specifier):
&gt; &gt; +        self._specifier_to_category[specifier] = category
&gt; 
&gt; Should this be private?

No, I use it to populate the specifier in TestConfigurationConverter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444797</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-01 12:18:38 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 102440 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102440&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py:99
&gt; &gt; &gt; +        category_slots = []
&gt; &gt; &gt; +        for i in range(len(TestConfiguration.category_order())):
&gt; &gt; &gt; +            category_slots.append([])
&gt; &gt; 
&gt; &gt; category_slots = [[]] * len(TestConfiguration.category_order())
&gt; 
&gt; This will give you a somewhat unexpected effect of having one array listed N times:
&gt; 
&gt; &gt;&gt;&gt; a = ([[]] * 10)
&gt; &gt;&gt;&gt; a[0].append(&apos;zoot&apos;)
&gt; &gt;&gt;&gt; a
&gt; [[&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;], [&apos;zoot&apos;]]

Doh!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444810</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-01 12:55:53 -0700</bug_when>
    <thetext>Committed r92136: &lt;http://trac.webkit.org/changeset/92136&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102438</attachid>
            <date>2011-07-30 11:19:11 -0700</date>
            <delta_ts>2011-07-30 14:55:27 -0700</delta_ts>
            <desc>WIP:Switching computers.</desc>
            <filename>bug-65413-20110730111909.patch</filename>
            <type>text/plain</type>
            <size>6342</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIwMjYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMDI3MzQ4ZmIxNWU0YmM0MDc5NWM4NjJhMTZjYzJiNjYy
NmZlZjU3Li5lNTFlMGI5MDgzZWMwZTFkNGZiMzA2YjQ2MGFjNzhhYjc4NGY4ZmQ4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTEtMDctMzAgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbnRyb2R1Y2UgU3BlY2lmaWVyU29ydGVyLCBhIHRoaW5nIHRoYXQga25vd3Mg
aG93IHNwZWNpZmllcnMgc2hvdWxkIGJlIG9yZGVyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfY29uZmlndXJhdGlvbi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9jb25maWd1cmF0aW9uX3VuaXR0ZXN0LnB5OgorCiAy
MDExLTA3LTI5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2hy
b21pdW0gdHJ5IHNlcnZlcnMgc2hvdWxkIHVzZSBkb3duc3RyZWFtIHRlc3RfZXhwZWN0YXRpb25z
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMv
dGVzdF9jb25maWd1cmF0aW9uLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbW9kZWxzL3Rlc3RfY29uZmlndXJhdGlvbi5weQppbmRleCA0NzkzYmNmYTg0YTRlMDYxYTZk
ZTc4YTZhYTQwYjkwNzdkZDhkODgwLi43NDA3ZjAzNmZkZTYxZjQ2M2U2MTc0ZjU0MTM1OGMwMmE0
NmVjN2I5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9t
b2RlbHMvdGVzdF9jb25maWd1cmF0aW9uLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2NvbmZpZ3VyYXRpb24ucHkKQEAgLTY0LDEyICs2NCw0
NyBAQCBjbGFzcyBUZXN0Q29uZmlndXJhdGlvbihvYmplY3QpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5fX2RpY3RfXy52YWx1ZXMoKQogCiAKK2NsYXNzIFNwZWNpZmllclNvcnRlcjoKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgYWxsX3Rlc3RfY29uZmlndXJhdGlvbnM9Tm9uZSk6CisgICAgICAgIHNl
bGYuX3NwZWNpZmllcl90b19jYXRlZ29yeSA9IHt9CisgICAgICAgIGlmIG5vdCBhbGxfdGVzdF9j
b25maWd1cmF0aW9uczoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGZvciB0ZXN0X2Nv
bmZpZ3VyYXRpb24gaW4gYWxsX3Rlc3RfY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICBmb3Ig
Y2F0ZWdvcnksIHNwZWNpZmllciBpbiBjb25maWd1cmF0aW9uLml0ZW1zKCk6CisgICAgICAgICAg
ICAgICAgc2VsZi5hZGRfc3BlY2lmaWVyKGNhdGVnb3J5LCBzcGVjaWZpZXIpCisKKyAgICBkZWYg
YWRkX3NwZWNpZmllcihzZWxmLCBjYXRlZ29yeSwgc3BlY2lmaWVyKToKKyAgICAgICAgc2VsZi5f
c3BlY2lmaWVyX3RvX2NhdGVnb3J5W3NwZWNpZmllcl0gPSBjYXRlZ29yeQorCisgICAgQGNsYXNz
bWV0aG9kCisgICAgZGVmIGNhdGVnb3J5X3ByaW9yaXR5KGNscywgY2F0ZWdvcnkpOgorICAgICAg
ICByZXR1cm4gVGVzdENvbmZpZ3VyYXRpb24uY2F0ZWdvcnlfb3JkZXIoKS5pbmRleChjYXRlZ29y
eSkKKworICAgIGRlZiBzcGVjaWZpZXJfcHJpb3JpdHkoc2VsZiwgc3BlY2lmaWVyKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnlfcHJpb3JpdHkoc2VsZi5fc3BlY2lmaWVyX3RvX2NhdGVn
b3J5W3NwZWNpZmllcl0pCisKKyAgICBkZWYgY2F0ZWdvcnlfZm9yX3NwZWNpZmllcihzZWxmLCBz
cGVjaWZpZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fc3BlY2lmaWVyX3RvX2NhdGVnb3J5Lmdl
dChzcGVjaWZpZXIpCisKKyAgICBkZWYgc29ydF9zcGVjaWZpZXJzKHNlbGYsIHNwZWNpZmllcnMp
OgorICAgICAgICBjYXRlZ29yeV9zbG90cyA9IFtbXV0gKiBsZW4oVGVzdENvbmZpZ3VyYXRpb24u
Y2F0ZWdvcnlfb3JkZXIpCisgICAgICAgIGZvciBzcGVjaWZpZXIgaW4gc3BlY2lmaWVyczoKKyAg
ICAgICAgICAgIGNhdGVnb3J5X3Nsb3RzW3NwZWNpZmllcl9wcmlvcml0eShzcGVjaWZpZXIpXS5h
cHBlbmQoc3BlY2lmaWVyKQorCisgICAgICAgIGRlZiBzb3J0X2FuZF9yZXR1cm4oc2VsZiwgc3Bl
Y2lmaWVyX2xpc3QpOgorICAgICAgICAgICAgc3BlY2lmaWVyX2xpc3Quc29ydCgpCisgICAgICAg
ICAgICByZXR1cm4gc3BlY2lmaWVyX2xpc3QKKworICAgICAgICByZXR1cm4gcmVkdWNlKHNvcnRf
YW5kX3JldHVybiwgY2F0ZWdvcnlfc2xvdHMpCisKKwogY2xhc3MgVGVzdENvbmZpZ3VyYXRpb25D
b252ZXJ0ZXI6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFsbF90ZXN0X2NvbmZpZ3VyYXRpb25z
LCBjb25maWd1cmF0aW9uX21hY3Jvcz1Ob25lKToKICAgICAgICAgc2VsZi5fYWxsX3Rlc3RfY29u
ZmlndXJhdGlvbnMgPSBhbGxfdGVzdF9jb25maWd1cmF0aW9ucwogICAgICAgICBzZWxmLl9jb25m
aWd1cmF0aW9uX21hY3JvcyA9IGNvbmZpZ3VyYXRpb25fbWFjcm9zIG9yIHt9CiAgICAgICAgIHNl
bGYuX3NwZWNpZmllcl90b19jb25maWd1cmF0aW9uX3NldCA9IHt9Ci0gICAgICAgIHNlbGYuX3Nw
ZWNpZmllcl90b19jYXRlZ29yeSA9IHt9CisgICAgICAgIHNlbGYuX3NwZWNpZmllcl9zb3J0ZXIg
PSBTcGVjaWZpZXJTb3J0ZXIoKQogICAgICAgICBzZWxmLl9jb2xsYXBzaW5nX3NldHNfYnlfc2l6
ZSA9IHt9CiAgICAgICAgIHNlbGYuX2p1bmtfc3BlY2lmaWVyX2NvbWJpbmF0aW9ucyA9IHt9CiAg
ICAgICAgIGNvbGxhcHNpbmdfc2V0c19ieV9jYXRlZ29yeSA9IHt9CkBAIC03Nyw3ICsxMTIsNyBA
QCBjbGFzcyBUZXN0Q29uZmlndXJhdGlvbkNvbnZlcnRlcjoKICAgICAgICAgZm9yIGNvbmZpZ3Vy
YXRpb24gaW4gYWxsX3Rlc3RfY29uZmlndXJhdGlvbnM6CiAgICAgICAgICAgICBmb3IgY2F0ZWdv
cnksIHNwZWNpZmllciBpbiBjb25maWd1cmF0aW9uLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAg
c2VsZi5fc3BlY2lmaWVyX3RvX2NvbmZpZ3VyYXRpb25fc2V0LnNldGRlZmF1bHQoc3BlY2lmaWVy
LCBzZXQoKSkuYWRkKGNvbmZpZ3VyYXRpb24pCi0gICAgICAgICAgICAgICAgc2VsZi5fc3BlY2lm
aWVyX3RvX2NhdGVnb3J5W3NwZWNpZmllcl0gPSBjYXRlZ29yeQorICAgICAgICAgICAgICAgIHNl
bGYuX3NwZWNpZmllcl9zb3J0ZXIuYWRkX3NwZWNpZmllcihjYXRlZ29yeSwgc3BlY2lmaWVyKQog
ICAgICAgICAgICAgICAgIGNvbGxhcHNpbmdfc2V0c19ieV9jYXRlZ29yeS5zZXRkZWZhdWx0KGNh
dGVnb3J5LCBzZXQoKSkuYWRkKHNwZWNpZmllcikKICAgICAgICAgICAgICAgICAjIEZJWE1FOiBU
aGlzIHNlZW1zIGV4dHJhLWF3ZnVsLgogICAgICAgICAgICAgICAgIGZvciBjYXQyLCBzcGVjMiBp
biBjb25maWd1cmF0aW9uLml0ZW1zKCk6CkBAIC04NywxNSArMTIyLDkgQEAgY2xhc3MgVGVzdENv
bmZpZ3VyYXRpb25Db252ZXJ0ZXI6CiAgICAgICAgIGZvciBjb2xsYXBzaW5nX3NldCBpbiBjb2xs
YXBzaW5nX3NldHNfYnlfY2F0ZWdvcnkudmFsdWVzKCk6CiAgICAgICAgICAgICBzZWxmLl9jb2xs
YXBzaW5nX3NldHNfYnlfc2l6ZS5zZXRkZWZhdWx0KGxlbihjb2xsYXBzaW5nX3NldCksIHNldCgp
KS5hZGQoZnJvemVuc2V0KGNvbGxhcHNpbmdfc2V0KSkKIAotICAgICAgICBkZWYgY2F0ZWdvcnlf
cHJpb3JpdHkoY2F0ZWdvcnkpOgotICAgICAgICAgICAgcmV0dXJuIFRlc3RDb25maWd1cmF0aW9u
LmNhdGVnb3J5X29yZGVyKCkuaW5kZXgoY2F0ZWdvcnkpCi0KLSAgICAgICAgZGVmIHNwZWNpZmll
cl9wcmlvcml0eShzcGVjaWZpZXIpOgotICAgICAgICAgICAgcmV0dXJuIGNhdGVnb3J5X3ByaW9y
aXR5KHNlbGYuX3NwZWNpZmllcl90b19jYXRlZ29yeVtzcGVjaWZpZXJdKQotCiAgICAgICAgIGZv
ciBzcGVjaWZpZXIsIHNldHNfYnlfY2F0ZWdvcnkgaW4gbWF0Y2hpbmdfc2V0c19ieV9jYXRlZ29y
eS5pdGVtcygpOgogICAgICAgICAgICAgZm9yIGNhdGVnb3J5LCBzZXRfYnlfY2F0ZWdvcnkgaW4g
c2V0c19ieV9jYXRlZ29yeS5pdGVtcygpOgotICAgICAgICAgICAgICAgIGlmIGxlbihzZXRfYnlf
Y2F0ZWdvcnkpID09IDEgYW5kIGNhdGVnb3J5X3ByaW9yaXR5KGNhdGVnb3J5KSA+IHNwZWNpZmll
cl9wcmlvcml0eShzcGVjaWZpZXIpOgorICAgICAgICAgICAgICAgIGlmIGxlbihzZXRfYnlfY2F0
ZWdvcnkpID09IDEgYW5kIHNlbGYuX3NwZWNpZmllcl9zb3J0ZXIuY2F0ZWdvcnlfcHJpb3JpdHko
Y2F0ZWdvcnkpID4gc2VsZi5fc3BlY2lmaWVyX3NvcnRlci5zcGVjaWZpZXJfcHJpb3JpdHkoc3Bl
Y2lmaWVyKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fanVua19zcGVjaWZpZXJfY29tYmlu
YXRpb25zW3NwZWNpZmllcl0gPSBzZXRfYnlfY2F0ZWdvcnkKIAogICAgIGRlZiBfZXhwYW5kX21h
Y3JvcyhzZWxmLCBzcGVjaWZpZXIpOgpAQCAtMTE2LDcgKzE0NSw3IEBAIGNsYXNzIFRlc3RDb25m
aWd1cmF0aW9uQ29udmVydGVyOgogICAgICAgICAgICAgICAgICAgICBpZiBlcnJvcl9saXN0IGlz
IG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbGlzdC5hcHBlbmQoIlVu
cmVjb2duaXplZCBtb2RpZmllciAnIiArIGV4cGFuZGVkX3NwZWNpZmllciArICInIikKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNldCgpCi0gICAgICAgICAgICAgICAgY2F0ZWdvcnkgPSBz
ZWxmLl9zcGVjaWZpZXJfdG9fY2F0ZWdvcnlbZXhwYW5kZWRfc3BlY2lmaWVyXQorICAgICAgICAg
ICAgICAgIGNhdGVnb3J5ID0gc2VsZi5fc3BlY2lmaWVyX3NvcnRlci5jYXRlZ29yeV9mb3Jfc3Bl
Y2lmaWVyKGV4cGFuZGVkX3NwZWNpZmllcikKICAgICAgICAgICAgICAgICBtYXRjaGluZ19zZXRz
LnNldGRlZmF1bHQoY2F0ZWdvcnksIHNldCgpKS51cGRhdGUoY29uZmlndXJhdGlvbnMpCiAKICAg
ICAgICAgcmV0dXJuIHJlZHVjZShzZXQuaW50ZXJzZWN0aW9uLCBtYXRjaGluZ19zZXRzLnZhbHVl
cygpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9k
ZWxzL3Rlc3RfY29uZmlndXJhdGlvbl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2NvbmZpZ3VyYXRpb25fdW5pdHRlc3QucHkKaW5k
ZXggMzY1YTU4NTU5Zjg2MThmZDI3ZDMzMjFjZWVlMWVhMmM1MWYyYzBlYS4uY2IxNDdkOTRiZTU5
YzQ3ZWI4ZGFkZDAwNDE5NGE5Y2ZjZTQ3MjMyZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfY29uZmlndXJhdGlvbl91bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9j
b25maWd1cmF0aW9uX3VuaXR0ZXN0LnB5CkBAIC05MSw2ICs5MSwxNiBAQCBjbGFzcyBUZXN0Q29u
ZmlndXJhdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVx
dWFscygnPHhwLCB4ODYsIHJlbGVhc2UsIGNwdT4nLCBzdHIoY29uZmlnKSkKIAogCitjbGFzcyBT
cGVjaWZpZXJTb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hZGRf
c3BlY2lmaWVyKHNlbGYpOgorICAgICAgICBzb3J0ZXIgPSBTcGVjaWZpZXJTb3J0ZXIoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzb3J0ZXIuY2F0ZWdvcnlfZm9yX3NwZWNpZmllcignY29u
dHJvbCcpLCBOb25lKQorICAgICAgICBzb3J0ZXIuYWRkX3NwZWNpZmllcigndmVyc2lvbicsICdj
b250cm9sJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc29ydGVyLmNhdGVnb3J5X2Zvcl9z
cGVjaWZpZXIoJ2NvbnRyb2wnKSwgJ3ZlcnNpb24nKQorICAgICAgICBzb3J0ZXIuYWRkX3NwZWNp
ZmllcigndmVyc2lvbicsICdvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzb3J0ZXIu
Y2F0ZWdvcnlfZm9yX3NwZWNpZmllcignb25lJyksICd2ZXJzaW9uJykKKworCiBjbGFzcyBUZXN0
Q29uZmlndXJhdGlvbkNvbnZlcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB0ZXN0RnVuYyk6CiAgICAgICAgIHNlbGYuX2FsbF90ZXN0X2NvbmZpZ3Vy
YXRpb25zID0gc2V0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102440</attachid>
            <date>2011-07-30 14:55:33 -0700</date>
            <delta_ts>2022-03-01 02:50:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65413-20110730145531.patch</filename>
            <type>text/plain</type>
            <size>11512</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIwNTcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MTQ1ZjA0NzM1OGNkNDJiN2M5M2M0MGQ3OGE5ODIyZGU5
MDNhOGY5Li5jNDdhOGMwZmI5YzhjYmE1N2YwZjkwNDgzMTQ5OTg3ZDBjNTgxMGM4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDctMzAgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbnRyb2R1Y2UgU3BlY2lmaWVyU29ydGVyLCBhIHRoaW5nIHRoYXQga25vd3Mg
aG93IHNwZWNpZmllcnMgc2hvdWxkIGJlIG9yZGVyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfY29uZmlndXJhdGlvbi5weTogQWRkZWQgU3BlY2lmaWVyU29ydGVyIGFuZCBj
b252ZXJ0ZWQKKyAgICAgICAgICAgIGV4aXN0aW5nIGNvZGUgdG8gdXNlIGl0LgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2NvbmZpZ3VyYXRpb25f
dW5pdHRlc3QucHk6IEFkZGVkIHVuaXQgdGVzdHMgYW5kIGNsZWFuZWQgdXAgYSBiaXQuCisKIDIw
MTEtMDctMzAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBnYXJk
ZW4tby1tYXRpYyByZWdyZXNzaW9uIHJhbmdlcyBleHBhbmQgYWZ0ZXIgZmFzdCBib3RzIHN0YXJ0
IHBhc3NpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X2NvbmZpZ3VyYXRpb24ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9tb2RlbHMvdGVzdF9jb25maWd1cmF0aW9uLnB5CmluZGV4IDQ3OTNiY2ZhODRh
NGUwNjFhNmRlNzhhNmFhNDBiOTA3N2RkOGQ4ODAuLjY2ZTA5ZDFhYjJjNzUyZDliYzZmMDM5NDIz
YjcyYTFkMTlkMjMxOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL21vZGVscy90ZXN0X2NvbmZpZ3VyYXRpb24ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfY29uZmlndXJhdGlvbi5weQpAQCAtNjQs
MTIgKzY0LDU1IEBAIGNsYXNzIFRlc3RDb25maWd1cmF0aW9uKG9iamVjdCk6CiAgICAgICAgIHJl
dHVybiBzZWxmLl9fZGljdF9fLnZhbHVlcygpCiAKIAorY2xhc3MgU3BlY2lmaWVyU29ydGVyOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhbGxfdGVzdF9jb25maWd1cmF0aW9ucz1Ob25lLCBtYWNy
b3M9Tm9uZSk6CisgICAgICAgIHNlbGYuX3NwZWNpZmllcl90b19jYXRlZ29yeSA9IHt9CisKKyAg
ICAgICAgaWYgbm90IGFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zOgorICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgIGZvciB0ZXN0X2NvbmZpZ3VyYXRpb24gaW4gYWxsX3Rlc3RfY29uZmlndXJhdGlv
bnM6CisgICAgICAgICAgICBmb3IgY2F0ZWdvcnksIHNwZWNpZmllciBpbiB0ZXN0X2NvbmZpZ3Vy
YXRpb24uaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFkZF9zcGVjaWZpZXIoY2F0ZWdv
cnksIHNwZWNpZmllcikKKworICAgICAgICBpZiBub3QgbWFjcm9zOgorICAgICAgICAgICAgcmV0
dXJuCisgICAgICAgICMgQXNzdW1lIHdlbGwtZm9ybWVkIG1hY3Jvcy4KKyAgICAgICAgZm9yIG1h
Y3JvLCBzcGVjaWZpZXJfbGlzdCBpbiBtYWNyb3MuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYu
YWRkX3NwZWNpZmllcihzZWxmLmNhdGVnb3J5X2Zvcl9zcGVjaWZpZXIoc3BlY2lmaWVyX2xpc3Rb
MF0pLCBtYWNybykKKworICAgIGRlZiBhZGRfc3BlY2lmaWVyKHNlbGYsIGNhdGVnb3J5LCBzcGVj
aWZpZXIpOgorICAgICAgICBzZWxmLl9zcGVjaWZpZXJfdG9fY2F0ZWdvcnlbc3BlY2lmaWVyXSA9
IGNhdGVnb3J5CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgY2F0ZWdvcnlfcHJpb3JpdHko
Y2xzLCBjYXRlZ29yeSk6CisgICAgICAgIHJldHVybiBUZXN0Q29uZmlndXJhdGlvbi5jYXRlZ29y
eV9vcmRlcigpLmluZGV4KGNhdGVnb3J5KQorCisgICAgZGVmIHNwZWNpZmllcl9wcmlvcml0eShz
ZWxmLCBzcGVjaWZpZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeV9wcmlvcml0eShz
ZWxmLl9zcGVjaWZpZXJfdG9fY2F0ZWdvcnlbc3BlY2lmaWVyXSkKKworICAgIGRlZiBjYXRlZ29y
eV9mb3Jfc3BlY2lmaWVyKHNlbGYsIHNwZWNpZmllcik6CisgICAgICAgIHJldHVybiBzZWxmLl9z
cGVjaWZpZXJfdG9fY2F0ZWdvcnkuZ2V0KHNwZWNpZmllcikKKworICAgIGRlZiBzb3J0X3NwZWNp
ZmllcnMoc2VsZiwgc3BlY2lmaWVycyk6CisgICAgICAgIGNhdGVnb3J5X3Nsb3RzID0gW10KKyAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKFRlc3RDb25maWd1cmF0aW9uLmNhdGVnb3J5X29yZGVy
KCkpKToKKyAgICAgICAgICAgIGNhdGVnb3J5X3Nsb3RzLmFwcGVuZChbXSkKKyAgICAgICAgZm9y
IHNwZWNpZmllciBpbiBzcGVjaWZpZXJzOgorICAgICAgICAgICAgY2F0ZWdvcnlfc2xvdHNbc2Vs
Zi5zcGVjaWZpZXJfcHJpb3JpdHkoc3BlY2lmaWVyKV0uYXBwZW5kKHNwZWNpZmllcikKKworICAg
ICAgICBkZWYgc29ydF9hbmRfcmV0dXJuKHJlc3VsdCwgc3BlY2lmaWVyX2xpc3QpOgorICAgICAg
ICAgICAgc3BlY2lmaWVyX2xpc3Quc29ydCgpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsg
c3BlY2lmaWVyX2xpc3QKKworICAgICAgICByZXR1cm4gcmVkdWNlKHNvcnRfYW5kX3JldHVybiwg
Y2F0ZWdvcnlfc2xvdHMsIFtdKQorCisKIGNsYXNzIFRlc3RDb25maWd1cmF0aW9uQ29udmVydGVy
OgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhbGxfdGVzdF9jb25maWd1cmF0aW9ucywgY29uZmln
dXJhdGlvbl9tYWNyb3M9Tm9uZSk6CiAgICAgICAgIHNlbGYuX2FsbF90ZXN0X2NvbmZpZ3VyYXRp
b25zID0gYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMKICAgICAgICAgc2VsZi5fY29uZmlndXJhdGlv
bl9tYWNyb3MgPSBjb25maWd1cmF0aW9uX21hY3JvcyBvciB7fQogICAgICAgICBzZWxmLl9zcGVj
aWZpZXJfdG9fY29uZmlndXJhdGlvbl9zZXQgPSB7fQotICAgICAgICBzZWxmLl9zcGVjaWZpZXJf
dG9fY2F0ZWdvcnkgPSB7fQorICAgICAgICBzZWxmLl9zcGVjaWZpZXJfc29ydGVyID0gU3BlY2lm
aWVyU29ydGVyKCkKICAgICAgICAgc2VsZi5fY29sbGFwc2luZ19zZXRzX2J5X3NpemUgPSB7fQog
ICAgICAgICBzZWxmLl9qdW5rX3NwZWNpZmllcl9jb21iaW5hdGlvbnMgPSB7fQogICAgICAgICBj
b2xsYXBzaW5nX3NldHNfYnlfY2F0ZWdvcnkgPSB7fQpAQCAtNzcsNyArMTIwLDcgQEAgY2xhc3Mg
VGVzdENvbmZpZ3VyYXRpb25Db252ZXJ0ZXI6CiAgICAgICAgIGZvciBjb25maWd1cmF0aW9uIGlu
IGFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zOgogICAgICAgICAgICAgZm9yIGNhdGVnb3J5LCBzcGVj
aWZpZXIgaW4gY29uZmlndXJhdGlvbi5pdGVtcygpOgogICAgICAgICAgICAgICAgIHNlbGYuX3Nw
ZWNpZmllcl90b19jb25maWd1cmF0aW9uX3NldC5zZXRkZWZhdWx0KHNwZWNpZmllciwgc2V0KCkp
LmFkZChjb25maWd1cmF0aW9uKQotICAgICAgICAgICAgICAgIHNlbGYuX3NwZWNpZmllcl90b19j
YXRlZ29yeVtzcGVjaWZpZXJdID0gY2F0ZWdvcnkKKyAgICAgICAgICAgICAgICBzZWxmLl9zcGVj
aWZpZXJfc29ydGVyLmFkZF9zcGVjaWZpZXIoY2F0ZWdvcnksIHNwZWNpZmllcikKICAgICAgICAg
ICAgICAgICBjb2xsYXBzaW5nX3NldHNfYnlfY2F0ZWdvcnkuc2V0ZGVmYXVsdChjYXRlZ29yeSwg
c2V0KCkpLmFkZChzcGVjaWZpZXIpCiAgICAgICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBzZWVt
cyBleHRyYS1hd2Z1bC4KICAgICAgICAgICAgICAgICBmb3IgY2F0Miwgc3BlYzIgaW4gY29uZmln
dXJhdGlvbi5pdGVtcygpOgpAQCAtODcsMTUgKzEzMCw5IEBAIGNsYXNzIFRlc3RDb25maWd1cmF0
aW9uQ29udmVydGVyOgogICAgICAgICBmb3IgY29sbGFwc2luZ19zZXQgaW4gY29sbGFwc2luZ19z
ZXRzX2J5X2NhdGVnb3J5LnZhbHVlcygpOgogICAgICAgICAgICAgc2VsZi5fY29sbGFwc2luZ19z
ZXRzX2J5X3NpemUuc2V0ZGVmYXVsdChsZW4oY29sbGFwc2luZ19zZXQpLCBzZXQoKSkuYWRkKGZy
b3plbnNldChjb2xsYXBzaW5nX3NldCkpCiAKLSAgICAgICAgZGVmIGNhdGVnb3J5X3ByaW9yaXR5
KGNhdGVnb3J5KToKLSAgICAgICAgICAgIHJldHVybiBUZXN0Q29uZmlndXJhdGlvbi5jYXRlZ29y
eV9vcmRlcigpLmluZGV4KGNhdGVnb3J5KQotCi0gICAgICAgIGRlZiBzcGVjaWZpZXJfcHJpb3Jp
dHkoc3BlY2lmaWVyKToKLSAgICAgICAgICAgIHJldHVybiBjYXRlZ29yeV9wcmlvcml0eShzZWxm
Ll9zcGVjaWZpZXJfdG9fY2F0ZWdvcnlbc3BlY2lmaWVyXSkKLQogICAgICAgICBmb3Igc3BlY2lm
aWVyLCBzZXRzX2J5X2NhdGVnb3J5IGluIG1hdGNoaW5nX3NldHNfYnlfY2F0ZWdvcnkuaXRlbXMo
KToKICAgICAgICAgICAgIGZvciBjYXRlZ29yeSwgc2V0X2J5X2NhdGVnb3J5IGluIHNldHNfYnlf
Y2F0ZWdvcnkuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBsZW4oc2V0X2J5X2NhdGVnb3J5
KSA9PSAxIGFuZCBjYXRlZ29yeV9wcmlvcml0eShjYXRlZ29yeSkgPiBzcGVjaWZpZXJfcHJpb3Jp
dHkoc3BlY2lmaWVyKToKKyAgICAgICAgICAgICAgICBpZiBsZW4oc2V0X2J5X2NhdGVnb3J5KSA9
PSAxIGFuZCBzZWxmLl9zcGVjaWZpZXJfc29ydGVyLmNhdGVnb3J5X3ByaW9yaXR5KGNhdGVnb3J5
KSA+IHNlbGYuX3NwZWNpZmllcl9zb3J0ZXIuc3BlY2lmaWVyX3ByaW9yaXR5KHNwZWNpZmllcik6
CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2p1bmtfc3BlY2lmaWVyX2NvbWJpbmF0aW9uc1tz
cGVjaWZpZXJdID0gc2V0X2J5X2NhdGVnb3J5CiAKICAgICBkZWYgX2V4cGFuZF9tYWNyb3Moc2Vs
Ziwgc3BlY2lmaWVyKToKQEAgLTExNiw3ICsxNTMsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJhdGlv
bkNvbnZlcnRlcjoKICAgICAgICAgICAgICAgICAgICAgaWYgZXJyb3JfbGlzdCBpcyBub3QgTm9u
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2xpc3QuYXBwZW5kKCJVbnJlY29nbml6
ZWQgbW9kaWZpZXIgJyIgKyBleHBhbmRlZF9zcGVjaWZpZXIgKyAiJyIpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBzZXQoKQotICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0gc2VsZi5fc3Bl
Y2lmaWVyX3RvX2NhdGVnb3J5W2V4cGFuZGVkX3NwZWNpZmllcl0KKyAgICAgICAgICAgICAgICBj
YXRlZ29yeSA9IHNlbGYuX3NwZWNpZmllcl9zb3J0ZXIuY2F0ZWdvcnlfZm9yX3NwZWNpZmllcihl
eHBhbmRlZF9zcGVjaWZpZXIpCiAgICAgICAgICAgICAgICAgbWF0Y2hpbmdfc2V0cy5zZXRkZWZh
dWx0KGNhdGVnb3J5LCBzZXQoKSkudXBkYXRlKGNvbmZpZ3VyYXRpb25zKQogCiAgICAgICAgIHJl
dHVybiByZWR1Y2Uoc2V0LmludGVyc2VjdGlvbiwgbWF0Y2hpbmdfc2V0cy52YWx1ZXMoKSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0
X2NvbmZpZ3VyYXRpb25fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9jb25maWd1cmF0aW9uX3VuaXR0ZXN0LnB5CmluZGV4IDM2NWE1
ODU1OWY4NjE4ZmQyN2QzMzIxY2VlZTFlYTJjNTFmMmMwZWEuLjAxMGRlODI3N2IzMjFlN2ZiNTg1
NDY4ZGY4MTE2ODAxOTE2YmIyMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2NvbmZpZ3VyYXRpb25fdW5pdHRlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfY29uZmlndXJh
dGlvbl91bml0dGVzdC5weQpAQCAtMzIsNiArMzIsMjEgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMgaW1wb3J0IHBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0
X2NvbmZpZ3VyYXRpb24gaW1wb3J0ICoKIAogCitkZWYgbWFrZV9tb2NrX2FsbF90ZXN0X2NvbmZp
Z3VyYXRpb25zX3NldCgpOgorICAgIGFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zID0gc2V0KCkKKyAg
ICBmb3IgdmVyc2lvbiwgYXJjaGl0ZWN0dXJlIGluICgoJ3Nub3dsZW9wYXJkJywgJ3g4NicpLCAo
J3hwJywgJ3g4NicpLCAoJ3dpbjcnLCAneDg2JyksICgnbHVjaWQnLCAneDg2JyksICgnbHVjaWQn
LCAneDg2XzY0JykpOgorICAgICAgICBmb3IgYnVpbGRfdHlwZSBpbiAoJ2RlYnVnJywgJ3JlbGVh
c2UnKToKKyAgICAgICAgICAgIGZvciBncmFwaGljc190eXBlIGluICgnY3B1JywgJ2dwdScpOgor
ICAgICAgICAgICAgICAgIGFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zLmFkZChUZXN0Q29uZmlndXJh
dGlvbihOb25lLCB2ZXJzaW9uLCBhcmNoaXRlY3R1cmUsIGJ1aWxkX3R5cGUsIGdyYXBoaWNzX3R5
cGUpKQorICAgIHJldHVybiBhbGxfdGVzdF9jb25maWd1cmF0aW9ucworCitNT0NLX01BQ1JPUyA9
IHsKKyAgICAnbWFjJzogWydzbm93bGVvcGFyZCddLAorICAgICd3aW4nOiBbJ3hwJywgJ3dpbjcn
XSwKKyAgICAnbGludXgnOiBbJ2x1Y2lkJ10sCit9CisKKwogY2xhc3MgVGVzdENvbmZpZ3VyYXRp
b25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9pdGVtcyhzZWxmKToKICAg
ICAgICAgY29uZmlnID0gVGVzdENvbmZpZ3VyYXRpb24oTm9uZSwgJ3hwJywgJ3g4NicsICdyZWxl
YXNlJywgJ2NwdScpCkBAIC05MSwxOCArMTA2LDU0IEBAIGNsYXNzIFRlc3RDb25maWd1cmF0aW9u
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCc8eHAs
IHg4NiwgcmVsZWFzZSwgY3B1PicsIHN0cihjb25maWcpKQogCiAKK2NsYXNzIFNwZWNpZmllclNv
cnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0
RnVuYyk6CisgICAgICAgIHNlbGYuX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25zID0gbWFrZV9tb2Nr
X2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25zX3NldCgpCisgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNl
Ll9faW5pdF9fKHNlbGYsIHRlc3RGdW5jKQorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAg
ICAgICAgc29ydGVyID0gU3BlY2lmaWVyU29ydGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoc29ydGVyLmNhdGVnb3J5X2Zvcl9zcGVjaWZpZXIoJ2NvbnRyb2wnKSwgTm9uZSkKKyAgICAg
ICAgc29ydGVyID0gU3BlY2lmaWVyU29ydGVyKHNlbGYuX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25z
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzb3J0ZXIuY2F0ZWdvcnlfZm9yX3NwZWNpZmll
cigneHAnKSwgJ3ZlcnNpb24nKQorICAgICAgICBzb3J0ZXIgPSBTcGVjaWZpZXJTb3J0ZXIoc2Vs
Zi5fYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMsIE1PQ0tfTUFDUk9TKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhzb3J0ZXIuY2F0ZWdvcnlfZm9yX3NwZWNpZmllcignbWFjJyksICd2ZXJzaW9u
JykKKworICAgIGRlZiB0ZXN0X2FkZF9zcGVjaWZpZXIoc2VsZik6CisgICAgICAgIHNvcnRlciA9
IFNwZWNpZmllclNvcnRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNvcnRlci5jYXRl
Z29yeV9mb3Jfc3BlY2lmaWVyKCdjb250cm9sJyksIE5vbmUpCisgICAgICAgIHNvcnRlci5hZGRf
c3BlY2lmaWVyKCd2ZXJzaW9uJywgJ2NvbnRyb2wnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhzb3J0ZXIuY2F0ZWdvcnlfZm9yX3NwZWNpZmllcignY29udHJvbCcpLCAndmVyc2lvbicpCisg
ICAgICAgIHNvcnRlci5hZGRfc3BlY2lmaWVyKCd2ZXJzaW9uJywgJ29uZScpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHNvcnRlci5jYXRlZ29yeV9mb3Jfc3BlY2lmaWVyKCdvbmUnKSwgJ3Zl
cnNpb24nKQorICAgICAgICBzb3J0ZXIuYWRkX3NwZWNpZmllcignYXJjaGl0ZWN0dXJlJywgJ3Jl
bmFpc3NhbmNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc29ydGVyLmNhdGVnb3J5X2Zv
cl9zcGVjaWZpZXIoJ29uZScpLCAndmVyc2lvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KHNvcnRlci5jYXRlZ29yeV9mb3Jfc3BlY2lmaWVyKCdyZW5haXNzYW5jZScpLCAnYXJjaGl0ZWN0
dXJlJykKKworICAgIGRlZiB0ZXN0X2NhdGVnb3J5X3ByaW9yaXR5KHNlbGYpOgorICAgICAgICBz
b3J0ZXIgPSBTcGVjaWZpZXJTb3J0ZXIoc2VsZi5fYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNvcnRlci5jYXRlZ29yeV9wcmlvcml0eSgndmVyc2lv
bicpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzb3J0ZXIuY2F0ZWdvcnlfcHJpb3Jp
dHkoJ2J1aWxkX3R5cGUnKSwgMikKKworICAgIGRlZiB0ZXN0X3NwZWNpZmllcl9wcmlvcml0eShz
ZWxmKToKKyAgICAgICAgc29ydGVyID0gU3BlY2lmaWVyU29ydGVyKHNlbGYuX2FsbF90ZXN0X2Nv
bmZpZ3VyYXRpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzb3J0ZXIuc3BlY2lmaWVy
X3ByaW9yaXR5KCd4ODYnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc29ydGVyLnNw
ZWNpZmllcl9wcmlvcml0eSgnZ3B1JyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNv
cnRlci5zcGVjaWZpZXJfcHJpb3JpdHkoJ3Nub3dsZW9wYXJkJyksIDApCisKKyAgICBkZWYgdGVz
dF9zb3J0X3NwZWNpZmllcnMoc2VsZik6CisgICAgICAgIHNvcnRlciA9IFNwZWNpZmllclNvcnRl
cihzZWxmLl9hbGxfdGVzdF9jb25maWd1cmF0aW9ucywgTU9DS19NQUNST1MpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHNvcnRlci5zb3J0X3NwZWNpZmllcnMoc2V0KCkpLCBbXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoc29ydGVyLnNvcnRfc3BlY2lmaWVycyhzZXQoWyd4ODYnXSkp
LCBbJ3g4NiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzb3J0ZXIuc29ydF9zcGVjaWZp
ZXJzKHNldChbJ3g4NicsICd3aW43J10pKSwgWyd3aW43JywgJ3g4NiddKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhzb3J0ZXIuc29ydF9zcGVjaWZpZXJzKHNldChbJ2dwdScsICd4ODYnLCAn
ZGVidWcnLCAnd2luNyddKSksIFsnd2luNycsICd4ODYnLCAnZGVidWcnLCAnZ3B1J10pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNvcnRlci5zb3J0X3NwZWNpZmllcnMoc2V0KFsnZ3B1Jywg
J3Nub3dsZW9wYXJkJywgJ3g4NicsICdkZWJ1ZycsICd3aW43J10pKSwgWydzbm93bGVvcGFyZCcs
ICd3aW43JywgJ3g4NicsICdkZWJ1ZycsICdncHUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoc29ydGVyLnNvcnRfc3BlY2lmaWVycyhzZXQoWydncHUnLCAneDg2JywgJ21hYycsICdkZWJ1
ZycsICd3aW43J10pKSwgWydtYWMnLCAnd2luNycsICd4ODYnLCAnZGVidWcnLCAnZ3B1J10pCisK
KwogY2xhc3MgVGVzdENvbmZpZ3VyYXRpb25Db252ZXJ0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdEZ1bmMpOgotICAgICAgICBzZWxmLl9hbGxf
dGVzdF9jb25maWd1cmF0aW9ucyA9IHNldCgpCi0gICAgICAgIGZvciB2ZXJzaW9uLCBhcmNoaXRl
Y3R1cmUgaW4gKCgnc25vd2xlb3BhcmQnLCAneDg2JyksICgneHAnLCAneDg2JyksICgnd2luNycs
ICd4ODYnKSwgKCdsdWNpZCcsICd4ODYnKSwgKCdsdWNpZCcsICd4ODZfNjQnKSk6Ci0gICAgICAg
ICAgICBmb3IgYnVpbGRfdHlwZSBpbiAoJ2RlYnVnJywgJ3JlbGVhc2UnKToKLSAgICAgICAgICAg
ICAgICBmb3IgZ3JhcGhpY3NfdHlwZSBpbiAoJ2NwdScsICdncHUnKToKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMuYWRkKFRlc3RDb25maWd1cmF0aW9u
KE5vbmUsIHZlcnNpb24sIGFyY2hpdGVjdHVyZSwgYnVpbGRfdHlwZSwgZ3JhcGhpY3NfdHlwZSkp
Ci0gICAgICAgIHNlbGYuX21hY3JvcyA9IHsKLSAgICAgICAgICAgICdtYWMnOiBbJ3Nub3dsZW9w
YXJkJ10sCi0gICAgICAgICAgICAnd2luJzogWyd4cCcsICd3aW43J10sCi0gICAgICAgICAgICAn
bGludXgnOiBbJ2x1Y2lkJ10sCi0gICAgICAgIH0KKyAgICAgICAgc2VsZi5fYWxsX3Rlc3RfY29u
ZmlndXJhdGlvbnMgPSBtYWtlX21vY2tfYWxsX3Rlc3RfY29uZmlndXJhdGlvbnNfc2V0KCkKICAg
ICAgICAgdW5pdHRlc3QuVGVzdENhc2UuX19pbml0X18oc2VsZiwgdGVzdEZ1bmMpCiAKICAgICBk
ZWYgdGVzdF90b19jb25maWdfc2V0KHNlbGYpOgpAQCAtMTc5LDcgKzIzMCw3IEBAIGNsYXNzIFRl
c3RDb25maWd1cmF0aW9uQ29udmVydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGNvbnZlcnRlci50b19jb25maWdfc2V0KHNldChbJ2x1Y2lkJywg
J3Nub3dsZW9wYXJkJywgJ3JlbGVhc2UnLCAnY3B1J10pKSwgY29uZmlnc190b19tYXRjaCkKIAog
ICAgIGRlZiB0ZXN0X21hY3JvX2V4cGFuc2lvbihzZWxmKToKLSAgICAgICAgY29udmVydGVyID0g
VGVzdENvbmZpZ3VyYXRpb25Db252ZXJ0ZXIoc2VsZi5fYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMs
IHNlbGYuX21hY3JvcykKKyAgICAgICAgY29udmVydGVyID0gVGVzdENvbmZpZ3VyYXRpb25Db252
ZXJ0ZXIoc2VsZi5fYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMsIE1PQ0tfTUFDUk9TKQogCiAgICAg
ICAgIGNvbmZpZ3NfdG9fbWF0Y2ggPSBzZXQoWwogICAgICAgICAgICAgVGVzdENvbmZpZ3VyYXRp
b24oTm9uZSwgJ3hwJywgJ3g4NicsICdyZWxlYXNlJywgJ2dwdScpLApAQCAtMjgzLDcgKzMzNCw3
IEBAIGNsYXNzIFRlc3RDb25maWd1cmF0aW9uQ29udmVydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNwZWNpZmllcnNfbGlzdCwgW3NldChbJ2Jv
YicsICdmb28nLCAnZ29kemlsbGEnXSksIHNldChbJ2ZvbyddKSwgc2V0KFsncGVvcGxlJ10pXSkK
IAogICAgIGRlZiB0ZXN0X2NvbnZlcnRlcl9tYWNyb19jb2xsYXBzaW5nKHNlbGYpOgotICAgICAg
ICBjb252ZXJ0ZXIgPSBUZXN0Q29uZmlndXJhdGlvbkNvbnZlcnRlcihzZWxmLl9hbGxfdGVzdF9j
b25maWd1cmF0aW9ucywgc2VsZi5fbWFjcm9zKQorICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29u
ZmlndXJhdGlvbkNvbnZlcnRlcihzZWxmLl9hbGxfdGVzdF9jb25maWd1cmF0aW9ucywgTU9DS19N
QUNST1MpCiAKICAgICAgICAgY29uZmlnc190b19tYXRjaCA9IHNldChbCiAgICAgICAgICAgICBU
ZXN0Q29uZmlndXJhdGlvbihOb25lLCAneHAnLCAneDg2JywgJ3JlbGVhc2UnLCAnZ3B1JyksCg==
</data>
<flag name="review"
          id="97693"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>