<?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>64246</bug_id>
          
          <creation_ts>2011-07-10 15:04:07 -0700</creation_ts>
          <short_desc>Add a webkit-patch command for rebaselining an individual test</short_desc>
          <delta_ts>2011-07-11 11:51:22 -0700</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>
          
          <blocked>64186</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>434621</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-10 15:04:07 -0700</bug_when>
    <thetext>Add a webkit-patch command for rebaselining an individual test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434622</commentid>
    <comment_count>1</comment_count>
      <attachid>100240</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-10 15:04:40 -0700</bug_when>
    <thetext>Created attachment 100240
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434623</commentid>
    <comment_count>2</comment_count>
      <attachid>100240</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-10 16:07:17 -0700</bug_when>
    <thetext>Comment on attachment 100240
Work in progress

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

&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:72
&gt; +        r&quot;Webkit Win&quot;: &quot;chromium-win-xp&quot;,
&gt; +        r&quot;Webkit Vista&quot;: &quot;chromium-win-vista&quot;,
&gt; +        r&quot;Webkit Win7&quot;: &quot;chromium-win-win7&quot;,
&gt; +        r&quot;Webkit Win (dbg)(1)&quot;: &quot;chromium-win-win7&quot;,  # FIXME: Is this correct?
&gt; +        r&quot;Webkit Win (dbg)(2)&quot;: &quot;chromium-win-win7&quot;,  # FIXME: Is this correct?
&gt; +        r&quot;Webkit Linux&quot;: &quot;chromium-linux-x86_64&quot;,
&gt; +        r&quot;Webkit Linux 32&quot;: &quot;chromium-linux-x86&quot;,
&gt; +        r&quot;Webkit Linux (dbg)(1)&quot;: &quot;chromium-linux-x86_64&quot;,
&gt; +        r&quot;Webkit Linux (dbg)(2)&quot;: &quot;chromium-linux-x86_64&quot;,
&gt; +        r&quot;Webkit Mac10\.5&quot;: &quot;chromium-mac-leopard&quot;,
&gt; +        r&quot;Webkit Mac10\.5 (dbg)(1)&quot;: &quot;chromium-mac-leopard&quot;,
&gt; +        r&quot;Webkit Mac10\.5 (dbg)(2)&quot;: &quot;chromium-mac-leopard&quot;,
&gt; +        r&quot;Webkit Mac10\.6&quot;: &quot;chromium-mac-snowleopard&quot;,
&gt; +        r&quot;Webkit Mac10\.6 (dbg)&quot;: &quot;chromium-mac-snowleopard&quot;,

You want builders.py for all this information. builders.py didn&apos;t exist when rebaseline.py was written.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434637</commentid>
    <comment_count>3</comment_count>
      <attachid>100242</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-10 18:41:35 -0700</bug_when>
    <thetext>Created attachment 100242
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434690</commentid>
    <comment_count>4</comment_count>
      <attachid>100247</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-11 00:03:19 -0700</bug_when>
    <thetext>Created attachment 100247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434732</commentid>
    <comment_count>5</comment_count>
      <attachid>100247</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-11 03:10:57 -0700</bug_when>
    <thetext>Comment on attachment 100247
Patch

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

I can look again after some sleep.

&gt; Tools/Scripts/webkitpy/common/net/buildbot/chromiumbuildbot.py:39
&gt; +    # Instead of using url-encoded buider names, build.chromium.org uses this
&gt; +    # underscore variation in some places.
&gt; +    def _directory_encoded_name(self):
&gt; +        return builder_path_from_name(self._name)

This may not be worth being a single-line function.  But OK.

&gt; Tools/Scripts/webkitpy/common/net/buildbot/chromiumbuildbot.py:49
&gt; +    # In addition to per-build results, the build.chromium.org builders also
&gt; +    # keep a directory that accumulates test results over many runs.
&gt; +    def accumulated_results_url(self):
&gt; +        return self.results_url() + &quot;/results/layout-test-results&quot;

Seems you should add this to the baseclass too.  And it should return None?

&gt; Tools/Scripts/webkitpy/common/net/web.py:36
&gt; +class Web(object):
&gt; +    def get_binary(self, url):
&gt; +        return NetworkTransaction().run(lambda: urllib2.urlopen(url).read())

Cute.  I&apos;m not sure thsi is going to end up being our best design (I can&apos;t think of a parallel object in any nice framework I&apos;ve written to before), but seems OK.  this is some sort of HTTPRequest object it seems.

&gt; Tools/Scripts/webkitpy/layout_tests/port/builders_unittest.py:41
&gt; +            self.assertEquals(expected, builders.builder_path_from_name(name))

Such a shame that we use this as a module instead of as a BuilderList object (which would be much more mockable).

&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:48
&gt;  # For now it&apos;s here, until we have a second need for it.
&gt;  class BuilderToPort(object):
&gt;      _builder_name_to_port_name = {

I agree you should stop shaving yaks.  But you should fix the FIXME to say this should move to builders.py.

&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:106
&gt; +    def _rebaseline_test(self, builder_name, test_name, suffix):
&gt; +        results_url = self._results_url(builder_name)
&gt; +        baseline_directory = self._baseline_directory(builder_name)

This function just about exceeds my mental length limit.  At least at 3am.  I would have found a way to split it I think.

&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:114
&gt; +        data = self._tool.web.get_binary(source_baseline)

Yeah, I&apos;m nto sure the Web.py really adds much here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435023</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-11 11:07:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 100247 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=100247&amp;action=review
&gt; 
&gt; I can look again after some sleep.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/net/buildbot/chromiumbuildbot.py:39
&gt; &gt; +    # Instead of using url-encoded buider names, build.chromium.org uses this
&gt; &gt; +    # underscore variation in some places.
&gt; &gt; +    def _directory_encoded_name(self):
&gt; &gt; +        return builder_path_from_name(self._name)
&gt; 
&gt; This may not be worth being a single-line function.  But OK.

Fixed.

&gt; &gt; Tools/Scripts/webkitpy/common/net/buildbot/chromiumbuildbot.py:49
&gt; &gt; +    # In addition to per-build results, the build.chromium.org builders also
&gt; &gt; +    # keep a directory that accumulates test results over many runs.
&gt; &gt; +    def accumulated_results_url(self):
&gt; &gt; +        return self.results_url() + &quot;/results/layout-test-results&quot;
&gt; 
&gt; Seems you should add this to the baseclass too.  And it should return None?

Ok.

&gt; &gt; Tools/Scripts/webkitpy/common/net/web.py:36
&gt; &gt; +class Web(object):
&gt; &gt; +    def get_binary(self, url):
&gt; &gt; +        return NetworkTransaction().run(lambda: urllib2.urlopen(url).read())
&gt; 
&gt; Cute.  I&apos;m not sure thsi is going to end up being our best design (I can&apos;t think of a parallel object in any nice framework I&apos;ve written to before), but seems OK.  this is some sort of HTTPRequest object it seems.

This object exists so we can mock out the network, just like the filesystem.

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:48
&gt; &gt;  # For now it&apos;s here, until we have a second need for it.
&gt; &gt;  class BuilderToPort(object):
&gt; &gt;      _builder_name_to_port_name = {
&gt; 
&gt; I agree you should stop shaving yaks.  But you should fix the FIXME to say this should move to builders.py.

Done.

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:106
&gt; &gt; +    def _rebaseline_test(self, builder_name, test_name, suffix):
&gt; &gt; +        results_url = self._results_url(builder_name)
&gt; &gt; +        baseline_directory = self._baseline_directory(builder_name)
&gt; 
&gt; This function just about exceeds my mental length limit.  At least at 3am.  I would have found a way to split it I think.

Ok.  I tried to make it smaller.

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:114
&gt; &gt; +        data = self._tool.web.get_binary(source_baseline)
&gt; 
&gt; Yeah, I&apos;m nto sure the Web.py really adds much here.

It&apos;s needed so that the unit tests don&apos;t actually try to fetch things from the network!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435029</commentid>
    <comment_count>7</comment_count>
      <attachid>100332</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-11 11:20:11 -0700</bug_when>
    <thetext>Created attachment 100332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435033</commentid>
    <comment_count>8</comment_count>
      <attachid>100332</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-11 11:21:46 -0700</bug_when>
    <thetext>Comment on attachment 100332
Patch

Thank you for splitting up rebaseline-test.  I&apos;m still not convinced Web is going to be a long-term-useful API, but I will wait to judge. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435069</commentid>
    <comment_count>9</comment_count>
      <attachid>100332</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-11 11:51:16 -0700</bug_when>
    <thetext>Comment on attachment 100332
Patch

Clearing flags on attachment: 100332

Committed r90770: &lt;http://trac.webkit.org/changeset/90770&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435071</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-11 11:51:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100240</attachid>
            <date>2011-07-10 15:04:40 -0700</date>
            <delta_ts>2011-07-10 18:41:31 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-64246-20110710150439.patch</filename>
            <type>text/plain</type>
            <size>4288</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA2OTkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZDhlOWI4NTdlOThlMzU4YWVmNDgwNDg5M2UyYWI5ZmVm
NmNlNzZlLi4zY2IxNzcwNmI1YjNhZjMxZDg2MzkzMTc3NzBkNGZkZDA3ZTgyZTQwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQg
QEAKIDIwMTEtMDctMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAg
ICBBZGQgYSB3ZWJraXQtcGF0Y2ggY29tbWFuZCBmb3IgcmViYXNlbGluaW5nIGFuIGluZGl2aWR1
YWwgdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjQyNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5OgorCisyMDExLTA3
LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgQ2xlYW4gdXAg
c3R5bGUgaW4gZmFsbGJhY2sgcGF0aCBjYWxjdWxhdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyMzkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQppbmRleCAyMTlmMzRhMjU1N2E5
NjdkNTE1MjU2NGU1NDA4ZGQ0NDAyMjE2ZTE4Li5iN2UzMzA4ZTYwNmFmYmYzNDYxYzU3ZmIyNDVi
YzE2OGNiZGFlMzZmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcmViYXNlbGluZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcmViYXNlbGluZS5weQpAQCAtMzEsNiArMzEsNyBAQCBpbXBvcnQgcmUKIGltcG9ydCBz
aHV0aWwKIGltcG9ydCB1cmxsaWIKIAoraW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJs
cyBhcyBjb25maWdfdXJscwogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90IGltcG9y
dCBCdWlsZEJvdAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bHRzIGlt
cG9ydCBMYXlvdXRUZXN0UmVzdWx0cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIg
aW1wb3J0IFVzZXIKQEAgLTQ0LDYgKzQ1LDcgQEAgZnJvbSB3ZWJraXRweS50b29sLm11bHRpY29t
bWFuZHRvb2wgaW1wb3J0IEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kCiAjIEZvciBub3cgaXQn
cyBoZXJlLCB1bnRpbCB3ZSBoYXZlIGEgc2Vjb25kIG5lZWQgZm9yIGl0LgogY2xhc3MgQnVpbGRl
clRvUG9ydChvYmplY3QpOgogICAgIF9idWlsZGVyX25hbWVfdG9fcG9ydF9uYW1lID0geworICAg
ICAgICAjIFRoZXNlIGJ1aWxkZXJzIGFyZSBvbiBidWlsZC53ZWJraXQub3JnLgogICAgICAgICBy
IlNub3dMZW9wYXJkIjogIm1hYy1zbm93bGVvcGFyZCIsCiAgICAgICAgIHIiTGVvcGFyZCI6ICJt
YWMtbGVvcGFyZCIsCiAgICAgICAgIHIiV2luZG93cyI6ICJ3aW4iLApAQCAtNTIsNiArNTQsMjIg
QEAgY2xhc3MgQnVpbGRlclRvUG9ydChvYmplY3QpOgogICAgICAgICByIkNocm9taXVtIE1hYyI6
ICJjaHJvbWl1bS1tYWMiLAogICAgICAgICByIkNocm9taXVtIExpbnV4IjogImNocm9taXVtLWxp
bnV4IiwKICAgICAgICAgciJDaHJvbWl1bSBXaW4iOiAiY2hyb21pdW0td2luIiwKKworICAgICAg
ICAjIFRoZXNlIGJ1aWxkZXJzIGFyZSBvbiBidWlsZC5jaHJvbWl1bS5vcmcuCisgICAgICAgIHIi
V2Via2l0IFdpbiI6ICJjaHJvbWl1bS13aW4teHAiLAorICAgICAgICByIldlYmtpdCBWaXN0YSI6
ICJjaHJvbWl1bS13aW4tdmlzdGEiLAorICAgICAgICByIldlYmtpdCBXaW43IjogImNocm9taXVt
LXdpbi13aW43IiwKKyAgICAgICAgciJXZWJraXQgV2luIChkYmcpKDEpIjogImNocm9taXVtLXdp
bi13aW43IiwgICMgRklYTUU6IElzIHRoaXMgY29ycmVjdD8KKyAgICAgICAgciJXZWJraXQgV2lu
IChkYmcpKDIpIjogImNocm9taXVtLXdpbi13aW43IiwgICMgRklYTUU6IElzIHRoaXMgY29ycmVj
dD8KKyAgICAgICAgciJXZWJraXQgTGludXgiOiAiY2hyb21pdW0tbGludXgteDg2XzY0IiwKKyAg
ICAgICAgciJXZWJraXQgTGludXggMzIiOiAiY2hyb21pdW0tbGludXgteDg2IiwKKyAgICAgICAg
ciJXZWJraXQgTGludXggKGRiZykoMSkiOiAiY2hyb21pdW0tbGludXgteDg2XzY0IiwKKyAgICAg
ICAgciJXZWJraXQgTGludXggKGRiZykoMikiOiAiY2hyb21pdW0tbGludXgteDg2XzY0IiwKKyAg
ICAgICAgciJXZWJraXQgTWFjMTBcLjUiOiAiY2hyb21pdW0tbWFjLWxlb3BhcmQiLAorICAgICAg
ICByIldlYmtpdCBNYWMxMFwuNSAoZGJnKSgxKSI6ICJjaHJvbWl1bS1tYWMtbGVvcGFyZCIsCisg
ICAgICAgIHIiV2Via2l0IE1hYzEwXC41IChkYmcpKDIpIjogImNocm9taXVtLW1hYy1sZW9wYXJk
IiwKKyAgICAgICAgciJXZWJraXQgTWFjMTBcLjYiOiAiY2hyb21pdW0tbWFjLXNub3dsZW9wYXJk
IiwKKyAgICAgICAgciJXZWJraXQgTWFjMTBcLjYgKGRiZykiOiAiY2hyb21pdW0tbWFjLXNub3ds
ZW9wYXJkIiwKICAgICB9CiAKICAgICBkZWYgX3BvcnRfbmFtZV9mb3JfYnVpbGRlcl9uYW1lKHNl
bGYsIGJ1aWxkZXJfbmFtZSk6CkBAIC02Nyw2ICs4NSwzOCBAQCBjbGFzcyBCdWlsZGVyVG9Qb3J0
KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBwb3J0CiAKIAorY2xhc3MgUmViYXNlbGluZVRlc3Qo
QWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgorICAgIG5hbWUgPSAicmViYXNlbGluZS10ZXN0
IgorICAgIGhlbHBfdGV4dCA9ICJ4eHgiCisgICAgYXJndW1lbnRfbmFtZXMgPSAiQlVJTERFUl9O
QU1FIFRFU1RfTkFNRSBTVUZGSVgiCisKKyAgICBkZWYgX3Jlc3VsdHNfZGlyZWN0b3J5KHNlbGYs
IGJ1aWxkZXJfbmFtZSk6CisgICAgICAgIGJ1aWxkZXJfZGlyZWN0b3J5ID0gcmUuc3ViKHInWyAu
KCldJywgJ18nLCBidWlsZGVyX25hbWUpCisgICAgICAgIHJldHVybiAiaHR0cDovL2J1aWxkLmNo
cm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvJXMvcmVzdWx0cy9sYXlv
dXQtdGVzdC1yZXN1bHRzLyIgJSBidWlsZGVyX2RpcmVjdG9yeQorCisgICAgZGVmIGV4ZWN1dGUo
c2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgICMgYnVpbGRib3QgPSBCdWlsZEJv
dCh1cmw9Y29uZmlnX3VybHMuY2hyb21pdW1fYnVpbGRib3RfdXJsKQorICAgICAgICBidWlsZGVy
X25hbWUgPSBhcmdzWzBdCisgICAgICAgIHRlc3RfbmFtZSA9IGFyZ3NbMV0KKyAgICAgICAgc3Vm
Zml4X2xpc3QgPSBhcmdzWzI6XQorCisgICAgICAgIHRlc3Rfc3RlbSA9IHJlLnN1YihyJ1wuW14u
XSskJywgJycsIHRlc3RfbmFtZSkKKyAgICAgICAgcmVzdWx0c19kaXJlY3RvcnkgPSBzZWxmLl9y
ZXN1bHRzX2RpcmVjdG9yeShidWlsZGVyX25hbWUpCisKKyAgICAgICAgcG9ydCA9IEJ1aWxkZXJU
b1BvcnQoKS5wb3J0X2Zvcl9idWlsZGVyKGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgYmFzZWxpbmVf
cGF0aCA9IHBvcnQuYmFzZWxpbmVfcGF0aCgpCisKKyAgICAgICAgZm9yIHN1ZmZpeCBpbiBzdWZm
aXhfbGlzdDoKKyAgICAgICAgICAgIHJlc3VsdF91cmwgPSByZXN1bHRzX2RpcmVjdG9yeSArIHRl
c3Rfc3RlbSArICItYWN0dWFsLiIgKyBzdWZmaXgKKyAgICAgICAgICAgIGJhc2VsaW5lX2ZpbGUg
PSBvcy5wYXRoLmpvaW4oYmFzZWxpbmVfcGF0aCwgdGVzdF9zdGVtICsgIi1leHBlY3RlZC4iICsg
c3VmZml4KQorCisgICAgICAgICAgICBkb3dubG9hZGVkX2ZpbGUsIGhlYWRlcnMgPSB1cmxsaWIu
dXJscmV0cmlldmUocmVzdWx0X3VybCkKKworICAgICAgICAgICAgdG9vbC5maWxlc3lzdGVtLm1v
dmUoZG93bmxvYWRlZF9maWxlLCBiYXNlbGluZV9maWxlKQorICAgICAgICAgICAgaWYgbm90IHRv
b2wuc2NtKCkuZXhpc3RzKGJhc2VsaW5lX3BhdGgpOgorICAgICAgICAgICAgICAgIHRvb2wuc2Nt
KCkuYWRkKGJhc2VsaW5lX3BhdGgpCisKKwogY2xhc3MgUmViYXNlbGluZShBYnN0cmFjdERlY2xh
cmF0aXZlQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJyZWJhc2VsaW5lIgogICAgIGhlbHBfdGV4dCA9
ICJSZXBsYWNlcyBsb2NhbCBleHBlY3RlZC50eHQgZmlsZXMgd2l0aCBuZXcgcmVzdWx0cyBmcm9t
IGJ1aWxkIGJvdHMiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100242</attachid>
            <date>2011-07-10 18:41:35 -0700</date>
            <delta_ts>2011-07-11 00:03:16 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-64246-20110710184134.patch</filename>
            <type>text/plain</type>
            <size>18039</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA2OTkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZDhlOWI4NTdlOThlMzU4YWVmNDgwNDg5M2UyYWI5ZmVm
NmNlNzZlLi4zY2IxNzcwNmI1YjNhZjMxZDg2MzkzMTc3NzBkNGZkZDA3ZTgyZTQwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQg
QEAKIDIwMTEtMDctMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAg
ICBBZGQgYSB3ZWJraXQtcGF0Y2ggY29tbWFuZCBmb3IgcmViYXNlbGluaW5nIGFuIGluZGl2aWR1
YWwgdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjQyNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5OgorCisyMDExLTA3
LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgQ2xlYW4gdXAg
c3R5bGUgaW4gZmFsbGJhY2sgcGF0aCBjYWxjdWxhdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyMzkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vaG9zdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2hvc3QucHkKaW5kZXggN2I1NTkzYmRjZmIxODBiMDJmY2Q5NzNlYWViMDRjYWE3MTg4MTVi
Mi4uYzFhMDU5MTEwM2I3OTljZTZmYmQzMGVmY2NlNWE2MjQwZDdiZWY1NSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9ob3N0LnB5CkBAIC0zMSw3ICszMSw3IEBACiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jaGVja291dCBpbXBvcnQgQ2hlY2tvdXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmNo
ZWNrb3V0LnNjbSBpbXBvcnQgZGVmYXVsdF9zY20KIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZp
Zy5wb3J0cyBpbXBvcnQgV2ViS2l0UG9ydAotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0IGltcG9y
dCBidWd6aWxsYSwgYnVpbGRib3QsIHN0YXR1c3NlcnZlcgorZnJvbSB3ZWJraXRweS5jb21tb24u
bmV0IGltcG9ydCBidWd6aWxsYSwgYnVpbGRib3QsIHN0YXR1c3NlcnZlciwgd2ViCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5uZXQuaXJjIGltcG9ydCBpcmNwcm94eQogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmUsIGZpbGVzeXN0ZW0sIHBsYXRmb3JtaW5mbywgdXNl
ciwgd29ya3NwYWNlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydApAQCAt
NDIsNiArNDIsNyBAQCBjbGFzcyBIb3N0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuYnVncyA9IGJ1
Z3ppbGxhLkJ1Z3ppbGxhKCkKICAgICAgICAgc2VsZi5idWlsZGJvdCA9IGJ1aWxkYm90LkJ1aWxk
Qm90KCkKICAgICAgICAgc2VsZi5leGVjdXRpdmUgPSBleGVjdXRpdmUuRXhlY3V0aXZlKCkKKyAg
ICAgICAgc2VsZi53ZWIgPSB3ZWIuV2ViKCkKICAgICAgICAgc2VsZi5faXJjID0gTm9uZQogICAg
ICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtLkZpbGVTeXN0ZW0oKQogICAgICAgICBz
ZWxmLndvcmtzcGFjZSA9IHdvcmtzcGFjZS5Xb3Jrc3BhY2Uoc2VsZi5maWxlc3lzdGVtLCBzZWxm
LmV4ZWN1dGl2ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9idWlsZGJvdC9idWlsZGJvdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9idWlsZGJvdC9idWlsZGJvdC5weQppbmRleCBjYTBkMGRhNDVkODA4N2Y4Yzk2ODdiMjE4ZDdm
NGUyN2Q4NWI3NDY5Li5kYWRiYzdlMTg2NGE5YzQ0ZTA5MjRlODZlZWRiMDRmMmE2NDdmMWFkIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvYnVp
bGRib3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90
L2J1aWxkYm90LnB5CkBAIC0yODAsOCArMjgwLDExIEBAIGNsYXNzIEJ1aWxkKG9iamVjdCk6CiAK
IAogY2xhc3MgQnVpbGRCb3Qob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsPWNv
bmZpZ191cmxzLmJ1aWxkYm90X3VybCk6Ci0gICAgICAgIHNlbGYuYnVpbGRib3RfdXJsID0gdXJs
CisgICAgX2J1aWxkZXJfZmFjdG9yeSA9IEJ1aWxkZXIKKyAgICBfZGVmYXVsdF91cmwgPSBjb25m
aWdfdXJscy5idWlsZGJvdF91cmwKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmw9Tm9uZSk6
CisgICAgICAgIHNlbGYuYnVpbGRib3RfdXJsID0gdXJsIGlmIHVybCBlbHNlIHNlbGYuX2RlZmF1
bHRfdXJsCiAgICAgICAgIHNlbGYuX2J1aWxkZXJfYnlfbmFtZSA9IHt9CiAKICAgICAgICAgIyBJ
ZiBhbnkgY29yZSBidWlsZGVyIGlzIHJlZCB3ZSBzaG91bGQgbm90IGJlIGxhbmRpbmcgcGF0Y2hl
cy4gIE90aGVyCkBAIC00NDAsNyArNDQzLDcgQEAgY2xhc3MgQnVpbGRCb3Qob2JqZWN0KToKICAg
ICBkZWYgYnVpbGRlcl93aXRoX25hbWUoc2VsZiwgbmFtZSk6CiAgICAgICAgIGJ1aWxkZXIgPSBz
ZWxmLl9idWlsZGVyX2J5X25hbWUuZ2V0KG5hbWUpCiAgICAgICAgIGlmIG5vdCBidWlsZGVyOgot
ICAgICAgICAgICAgYnVpbGRlciA9IEJ1aWxkZXIobmFtZSwgc2VsZikKKyAgICAgICAgICAgIGJ1
aWxkZXIgPSBzZWxmLl9idWlsZGVyX2ZhY3RvcnkobmFtZSwgc2VsZikKICAgICAgICAgICAgIHNl
bGYuX2J1aWxkZXJfYnlfbmFtZVtuYW1lXSA9IGJ1aWxkZXIKICAgICAgICAgcmV0dXJuIGJ1aWxk
ZXIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxk
Ym90L2Nocm9taXVtYnVpbGRib3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVpbGRib3QvY2hyb21pdW1idWlsZGJvdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjdiYjkyNTk3ODRm
MzkxODU0ZjJjMTQ2ZmE0ZTU4OTkxMTFiOGE1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2Nocm9taXVtYnVpbGRib3QucHkKQEAg
LTAsMCArMSw1NCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgd2Via2l0cHkuY29tbW9u
LmNvbmZpZy51cmxzIGFzIGNvbmZpZ191cmxzCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVp
bGRib3QuYnVpbGRib3QgaW1wb3J0IEJ1aWxkZXIsIEJ1aWxkQm90CisjIEZJWE1FOiBidWlsZGVy
cyBzaG91bGQgcHJvYmFibHkgYmUgaW4gd2Via2l0cHkuY29tbW9uLmNvbmZpZy4KK2Zyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYnVpbGRlcnMgaW1wb3J0IGJ1aWxkZXJfcGF0aF9mcm9t
X25hbWUKKworCitjbGFzcyBDaHJvbWl1bUJ1aWxkZXIoQnVpbGRlcik6CisgICAgIyBJbnN0ZWFk
IG9mIHVzaW5nIHVybC1lbmNvZGVkIGJ1aWRlciBuYW1lcywgYnVpbGQuY2hyb21pdW0ub3JnIHVz
ZXMgdGhpcworICAgICMgdW5kZXJzY29yZSB2YXJpYXRpb24gaW4gc29tZSBwbGFjZXMuCisgICAg
ZGVmIF9kaXJlY3RvcnlfZW5jb2RlZF9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gYnVpbGRl
cl9wYXRoX2Zyb21fbmFtZShzZWxmLl9uYW1lKQorCisgICAgIyBUaGUgYnVpbGQuY2hyb21pdW0u
b3JnIGJ1aWxkZXJzIHN0b3JlIHRoZWlyIHJlc3VsdHMgaW4gYSBkaWZmZXJlbnQKKyAgICAjIGxv
Y2F0aW9uIHRoYW4gdGhlIGJ1aWxkLndlYmtpdC5vcmcgYnVpbGRlcnMuCisgICAgZGVmIHJlc3Vs
dHNfdXJsKHNlbGYpOgorICAgICAgICByZXR1cm4gImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcv
Zi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzLyVzIiAlIHNlbGYuX2RpcmVjdG9yeV9lbmNv
ZGVkX25hbWUoKQorCisgICAgIyBJbiBhZGRpdGlvbiB0byBwZXItYnVpbGQgcmVzdWx0cywgdGhl
IGJ1aWxkLmNocm9taXVtLm9yZyBidWlsZGVycyBhbHNvCisgICAgIyBrZWVwIGEgZGlyZWN0b3J5
IHRoYXQgYWNjdW11bGF0ZXMgdGVzdCByZXN1bHRzIG92ZXIgbWFueSBydW5zLgorICAgIGRlZiBh
Y2N1bXVsYXRlZF9yZXN1bHRzX3VybChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucmVzdWx0
c191cmwoKSArICIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzIgorCisKK2NsYXNzIENocm9t
aXVtQnVpbGRCb3QoQnVpbGRCb3QpOgorICAgIF9idWlsZGVyX2ZhY3RvcnkgPSBDaHJvbWl1bUJ1
aWxkZXIKKyAgICBfZGVmYXVsdF91cmwgPSBjb25maWdfdXJscy5jaHJvbWl1bV9idWlsZGJvdF91
cmwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0
NGU4Nzg3MTA2ZWJkYzMzMjc2YzRhMzYxM2IzZjUyYjcyNDk4NGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViLnB5CkBAIC0wLDAgKzEsMzYg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdXJsbGliMgorCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5uZXQubmV0d29ya3RyYW5zYWN0aW9uIGltcG9ydCBOZXR3b3JrVHJhbnNhY3Rpb24KKwor
CitjbGFzcyBXZWIob2JqZWN0KToKKyAgICBkZWYgZ2V0X2JpbmFyeShzZWxmLCB1cmwpOgorICAg
ICAgICByZXR1cm4gTmV0d29ya1RyYW5zYWN0aW9uKCkucnVuKGxhbWJkYTogdXJsbGliMi51cmxv
cGVuKHVybCkucmVhZCgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9idWlsZGVycy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvYnVpbGRlcnMucHkKaW5kZXggZGQ1ZTQ2ODlmN2M3NzI4MWNjNGFjODI3ZjAx
MzliNGIxODQ3YzhlMy4uODQyODBlYzVhODkyZjhlMWNlZWJkMGI3Mjk4NDdmNTE0YWMyYzczYiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9idWls
ZGVycy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2J1
aWxkZXJzLnB5CkBAIC0zMCwzMSArMzAsMzIgQEAKIGltcG9ydCByZQogCiAKLWRlZiBfcGF0aF9m
cm9tX25hbWUobmFtZSk6Ci0gICAgcmV0dXJuIHJlLnN1YihyJ1tccygpLl0nLCAnXycsIG5hbWUp
CitkZWYgYnVpbGRlcl9wYXRoX2Zyb21fbmFtZShidWlsZGVyX25hbWUpOgorICAgIHJldHVybiBy
ZS5zdWIocidbXHMoKS5dJywgJ18nLCBidWlsZGVyX25hbWUpCisKIAogIyBDb21waWxlZCBtYW51
YWxseSBmcm9tIGh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9qc29uL2J1aWxk
ZXJzL2hlbHA/YXNfdGV4dD0xCiAjIFZhbHVlcyBvZiBOb25lIG1lYW4gdGhlcmUgYXJlIG5vIGJv
dHMgcnVubmluZyBhdCBidWlsZC53ZWJraXQub3JnIG9yCiAjIGJ1aWxkLmNocm9taXVtLm9yZyBm
b3IgdGhhdCBwb3J0LgogIyBGSVhNRSBNYWtlIHRoZSB2YWx1ZXMgaW4gdGhpcyBtYXAgaW50byBs
aXN0cy4KIENIUk9NSVVNX1BPUlRfVE9fQlVJTERFUl9OQU1FID0gewotICAgICdjaHJvbWl1bS1n
cHUtbGludXgnOiBfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBMaW51eCAtIEdQVScpLAorICAgICdj
aHJvbWl1bS1ncHUtbGludXgnOiBidWlsZGVyX3BhdGhfZnJvbV9uYW1lKCdXZWJraXQgTGludXgg
LSBHUFUnKSwKIAotICAgICdjaHJvbWl1bS1ncHUtbWFjLXNub3dsZW9wYXJkJzogX3BhdGhfZnJv
bV9uYW1lKCdXZWJraXQgTWFjMTAuNiAtIEdQVScpLAotICAgICdjaHJvbWl1bS1ncHUtbWFjLWxl
b3BhcmQnOiBfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBNYWMxMC41IC0gR1BVJyksCisgICAgJ2No
cm9taXVtLWdwdS1tYWMtc25vd2xlb3BhcmQnOiBidWlsZGVyX3BhdGhfZnJvbV9uYW1lKCdXZWJr
aXQgTWFjMTAuNiAtIEdQVScpLAorICAgICdjaHJvbWl1bS1ncHUtbWFjLWxlb3BhcmQnOiBidWls
ZGVyX3BhdGhfZnJvbV9uYW1lKCdXZWJraXQgTWFjMTAuNSAtIEdQVScpLAogCi0gICAgJ2Nocm9t
aXVtLWdwdS13aW4teHAnOiBfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBXaW4gLSBHUFUnKSwKLSAg
ICAnY2hyb21pdW0tZ3B1LXdpbi12aXN0YSc6IF9wYXRoX2Zyb21fbmFtZSgnV2Via2l0IFZpc3Rh
IC0gR1BVJyksCi0gICAgJ2Nocm9taXVtLWdwdS13aW4td2luNyc6IF9wYXRoX2Zyb21fbmFtZSgn
V2Via2l0IFdpbjcgLSBHUFUnKSwKKyAgICAnY2hyb21pdW0tZ3B1LXdpbi14cCc6IGJ1aWxkZXJf
cGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBXaW4gLSBHUFUnKSwKKyAgICAnY2hyb21pdW0tZ3B1LXdp
bi12aXN0YSc6IGJ1aWxkZXJfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBWaXN0YSAtIEdQVScpLAor
ICAgICdjaHJvbWl1bS1ncHUtd2luLXdpbjcnOiBidWlsZGVyX3BhdGhfZnJvbV9uYW1lKCdXZWJr
aXQgV2luNyAtIEdQVScpLAogCi0gICAgJ2Nocm9taXVtLWxpbnV4LXg4Nl82NCc6IF9wYXRoX2Zy
b21fbmFtZSgnTGludXggVGVzdHMgeDY0JyksCi0gICAgJ2Nocm9taXVtLWxpbnV4LXg4Nic6IF9w
YXRoX2Zyb21fbmFtZSgnTGludXggVGVzdHMgKGRiZykoMSknKSwKKyAgICAnY2hyb21pdW0tbGlu
dXgteDg2XzY0JzogYnVpbGRlcl9wYXRoX2Zyb21fbmFtZSgnTGludXggVGVzdHMgeDY0JyksCisg
ICAgJ2Nocm9taXVtLWxpbnV4LXg4Nic6IGJ1aWxkZXJfcGF0aF9mcm9tX25hbWUoJ0xpbnV4IFRl
c3RzIChkYmcpKDEpJyksCiAKLSAgICAnY2hyb21pdW0tbWFjLWxlb3BhcmQnOiBfcGF0aF9mcm9t
X25hbWUoJ01hYzEwLjUgVGVzdHMgKDEpJyksCi0gICAgJ2Nocm9taXVtLW1hYy1zbm93bGVvcGFy
ZCc6IF9wYXRoX2Zyb21fbmFtZSgnTWFjIDEwLjYgVGVzdHMgKGRiZykoMSknKSwKKyAgICAnY2hy
b21pdW0tbWFjLWxlb3BhcmQnOiBidWlsZGVyX3BhdGhfZnJvbV9uYW1lKCdNYWMxMC41IFRlc3Rz
ICgxKScpLAorICAgICdjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQnOiBidWlsZGVyX3BhdGhfZnJv
bV9uYW1lKCdNYWMgMTAuNiBUZXN0cyAoZGJnKSgxKScpLAogCi0gICAgJ2Nocm9taXVtLXdpbi14
cCc6IF9wYXRoX2Zyb21fbmFtZSgnWFAgVGVzdHMgKGRiZykoNSknKSwKLSAgICAnY2hyb21pdW0t
d2luLXZpc3RhJzogX3BhdGhfZnJvbV9uYW1lKCdWaXN0YSBUZXN0cyAoZGJnKSgxKScpLAorICAg
ICdjaHJvbWl1bS13aW4teHAnOiBidWlsZGVyX3BhdGhfZnJvbV9uYW1lKCdYUCBUZXN0cyAoZGJn
KSg1KScpLAorICAgICdjaHJvbWl1bS13aW4tdmlzdGEnOiBidWlsZGVyX3BhdGhfZnJvbV9uYW1l
KCdWaXN0YSBUZXN0cyAoZGJnKSgxKScpLAogICAgICdjaHJvbWl1bS13aW4td2luNyc6IE5vbmUs
CiAKICAgICAnZ29vZ2xlLWNocm9tZS1saW51eDMyJzogTm9uZSwKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYnVpbGRlcnNfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2J1aWxkZXJzX3VuaXR0
ZXN0LnB5CmluZGV4IGQzMjE3YWM1MGZmODMyZTIyODA2NmYzMTI2MDNmOTI3YzYyYTUyMzIuLjE1
NTBkZjQ5NDFmYjg0ODU5M2UwMTI4OTlhYzM2NTE2NGYwMWM5NzggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYnVpbGRlcnNfdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9idWlsZGVyc191
bml0dGVzdC5weQpAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBCdWlsZGVyc1Rlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICAgICAgJyguKSAnOiAnX19fXycsCiAgICAgICAgIH0KICAgICAg
ICAgZm9yIG5hbWUsIGV4cGVjdGVkIGluIHRlc3RzLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhleHBlY3RlZCwgYnVpbGRlcnMuX3BhdGhfZnJvbV9uYW1lKG5hbWUpKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIGJ1aWxkZXJzLmJ1aWxkZXJf
cGF0aF9mcm9tX25hbWUobmFtZSkpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAg
dW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcmViYXNlbGluZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9yZWJhc2VsaW5lLnB5CmluZGV4IDIxOWYzNGEyNTU3YTk2N2Q1MTUyNTY0ZTU0MDhkZDQ0
MDIyMTZlMTguLjU0ODU3MmNiNWRlNWQ0ZDJkNjNlY2VmMzVkYzA1NGE3NDkzZWRlNDYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5
CkBAIC0zMSw3ICszMSw5IEBAIGltcG9ydCByZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHVybGxp
YgogCitpbXBvcnQgd2Via2l0cHkuY29tbW9uLmNvbmZpZy51cmxzIGFzIGNvbmZpZ191cmxzCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90Citmcm9tIHdl
YmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QuY2hyb21pdW1idWlsZGJvdCBpbXBvcnQgQ2hyb21p
dW1CdWlsZEJvdAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bHRzIGlt
cG9ydCBMYXlvdXRUZXN0UmVzdWx0cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIg
aW1wb3J0IFVzZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVz
dF9mYWlsdXJlcwpAQCAtNDQsNiArNDYsNyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21t
YW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKICMgRm9yIG5vdyBpdCdz
IGhlcmUsIHVudGlsIHdlIGhhdmUgYSBzZWNvbmQgbmVlZCBmb3IgaXQuCiBjbGFzcyBCdWlsZGVy
VG9Qb3J0KG9iamVjdCk6CiAgICAgX2J1aWxkZXJfbmFtZV90b19wb3J0X25hbWUgPSB7CisgICAg
ICAgICMgVGhlc2UgYnVpbGRlcnMgYXJlIG9uIGJ1aWxkLndlYmtpdC5vcmcuCiAgICAgICAgIHIi
U25vd0xlb3BhcmQiOiAibWFjLXNub3dsZW9wYXJkIiwKICAgICAgICAgciJMZW9wYXJkIjogIm1h
Yy1sZW9wYXJkIiwKICAgICAgICAgciJXaW5kb3dzIjogIndpbiIsCkBAIC01Miw2ICs1NSwyMiBA
QCBjbGFzcyBCdWlsZGVyVG9Qb3J0KG9iamVjdCk6CiAgICAgICAgIHIiQ2hyb21pdW0gTWFjIjog
ImNocm9taXVtLW1hYyIsCiAgICAgICAgIHIiQ2hyb21pdW0gTGludXgiOiAiY2hyb21pdW0tbGlu
dXgiLAogICAgICAgICByIkNocm9taXVtIFdpbiI6ICJjaHJvbWl1bS13aW4iLAorCisgICAgICAg
ICMgVGhlc2UgYnVpbGRlcnMgYXJlIG9uIGJ1aWxkLmNocm9taXVtLm9yZy4KKyAgICAgICAgciJX
ZWJraXQgV2luIjogImNocm9taXVtLXdpbi14cCIsCisgICAgICAgIHIiV2Via2l0IFZpc3RhIjog
ImNocm9taXVtLXdpbi12aXN0YSIsCisgICAgICAgIHIiV2Via2l0IFdpbjciOiAiY2hyb21pdW0t
d2luLXdpbjciLAorICAgICAgICByIldlYmtpdCBXaW4gKGRiZykoMSkiOiAiY2hyb21pdW0td2lu
LXdpbjciLCAgIyBGSVhNRTogSXMgdGhpcyBjb3JyZWN0PworICAgICAgICByIldlYmtpdCBXaW4g
KGRiZykoMikiOiAiY2hyb21pdW0td2luLXdpbjciLCAgIyBGSVhNRTogSXMgdGhpcyBjb3JyZWN0
PworICAgICAgICByIldlYmtpdCBMaW51eCI6ICJjaHJvbWl1bS1saW51eC14ODZfNjQiLAorICAg
ICAgICByIldlYmtpdCBMaW51eCAzMiI6ICJjaHJvbWl1bS1saW51eC14ODYiLAorICAgICAgICBy
IldlYmtpdCBMaW51eCAoZGJnKSgxKSI6ICJjaHJvbWl1bS1saW51eC14ODZfNjQiLAorICAgICAg
ICByIldlYmtpdCBMaW51eCAoZGJnKSgyKSI6ICJjaHJvbWl1bS1saW51eC14ODZfNjQiLAorICAg
ICAgICByIldlYmtpdCBNYWMxMFwuNSI6ICJjaHJvbWl1bS1tYWMtbGVvcGFyZCIsCisgICAgICAg
IHIiV2Via2l0IE1hYzEwXC41IChkYmcpKDEpIjogImNocm9taXVtLW1hYy1sZW9wYXJkIiwKKyAg
ICAgICAgciJXZWJraXQgTWFjMTBcLjUgKGRiZykoMikiOiAiY2hyb21pdW0tbWFjLWxlb3BhcmQi
LAorICAgICAgICByIldlYmtpdCBNYWMxMFwuNiI6ICJjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQi
LAorICAgICAgICByIldlYmtpdCBNYWMxMFwuNiAoZGJnKSI6ICJjaHJvbWl1bS1tYWMtc25vd2xl
b3BhcmQiLAogICAgIH0KIAogICAgIGRlZiBfcG9ydF9uYW1lX2Zvcl9idWlsZGVyX25hbWUoc2Vs
ZiwgYnVpbGRlcl9uYW1lKToKQEAgLTY3LDYgKzg2LDQ0IEBAIGNsYXNzIEJ1aWxkZXJUb1BvcnQo
b2JqZWN0KToKICAgICAgICAgcmV0dXJuIHBvcnQKIAogCitjbGFzcyBSZWJhc2VsaW5lVGVzdChB
YnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CisgICAgbmFtZSA9ICJyZWJhc2VsaW5lLXRlc3Qi
CisgICAgaGVscF90ZXh0ID0gIlJlYmFzZWxpbmUgYSBzaW5nbGUgdGVzdCBmcm9tIGEgYnVpbGRi
b3QiCisgICAgYXJndW1lbnRfbmFtZXMgPSAiQlVJTERFUl9OQU1FIFRFU1RfTkFNRSBTVUZGSVgi
CisKKyAgICBkZWYgX3Jlc3VsdHNfdXJsKHNlbGYsIGJ1aWxkZXJfbmFtZSk6CisgICAgICAgICMg
RklYTUU6IEdlbmVyYWxpemUgdGhpcyBjb21tYW5kIHRvIHdvcmsgd2l0aCBub24tYnVpbGQuY2hy
b21pdW0ub3JnIGJ1aWxkZXJzLgorICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgcmVhbGx5IGdl
dCB0aGUgYnVpbGRib3QgZnJvbSB0aGUgdG9vbCEKKyAgICAgICAgYnVpbGRlciA9IENocm9taXVt
QnVpbGRCb3QoKS5idWlsZGVyX3dpdGhfbmFtZShidWlsZGVyX25hbWUpCisgICAgICAgIHJldHVy
biBidWlsZGVyLmFjY3VtdWxhdGVkX3Jlc3VsdHNfdXJsKCkKKworICAgIGRlZiBfYmFzZWxpbmVf
ZGlyZWN0b3J5KHNlbGYsIGJ1aWxkZXJfbmFtZSk6CisgICAgICAgIHBvcnQgPSBCdWlsZGVyVG9Q
b3J0KCkucG9ydF9mb3JfYnVpbGRlcihidWlsZGVyX25hbWUpCisgICAgICAgIHJldHVybiBwb3J0
LmJhc2VsaW5lX3BhdGgoKQorCisgICAgZGVmIF9yZWJhc2VsaW5lX3Rlc3Qoc2VsZiwgYnVpbGRl
cl9uYW1lLCB0ZXN0X25hbWUsIHN1ZmZpeCk6CisgICAgICAgIHJlc3VsdHNfdXJsID0gc2VsZi5f
cmVzdWx0c191cmwoYnVpbGRlcl9uYW1lKQorICAgICAgICBiYXNlbGluZV9kaXJlY3RvcnkgPSBz
ZWxmLl9iYXNlbGluZV9kaXJlY3RvcnkoYnVpbGRlcl9uYW1lKQorCisgICAgICAgIHRlc3Rfcm9v
dCA9IG9zLnBhdGguc3BsaXRleHQodGVzdF9uYW1lKVswXQorCisgICAgICAgIHNvdXJjZV9iYXNl
bGluZSA9ICIlcy8lcy1hY3R1YWwuJXMiICUgKHJlc3VsdHNfdXJsLCB0ZXN0X3Jvb3QsIHN1ZmZp
eCkKKyAgICAgICAgdGFyZ2V0X2Jhc2VsaW5lID0gb3MucGF0aC5qb2luKGJhc2VsaW5lX2RpcmVj
dG9yeSwgdGVzdF9yb290ICsgIi1leHBlY3RlZC4iICsgc3VmZml4KQorCisgICAgICAgIHByaW50
ICJSZXRyaWV2aW5nICVzIC4uLiIgJSBzb3VyY2VfYmFzZWxpbmUKKyAgICAgICAgZGF0YSA9IHNl
bGYuX3Rvb2wud2ViLmdldF9iaW5hcnkoc291cmNlX2Jhc2VsaW5lKQorCisgICAgICAgIHNlbGYu
X3Rvb2wuZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZSh0YXJnZXRfYmFzZWxpbmUsIGRhdGEp
CisgICAgICAgIGlmIG5vdCBzZWxmLl90b29sLnNjbSgpLmV4aXN0cyh0YXJnZXRfYmFzZWxpbmUp
OgorICAgICAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5hZGQodGFyZ2V0X2Jhc2VsaW5lKQorCisg
ICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIGJ1aWxk
ZXJfbmFtZSA9IGFyZ3NbMF0KKyAgICAgICAgdGVzdF9uYW1lID0gYXJnc1sxXQorICAgICAgICBz
dWZmaXggPSBhcmdzWzJdCisgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfdGVzdChidWlsZGVyX25h
bWUsIHRlc3RfbmFtZSwgc3VmZml4KQorCisKIGNsYXNzIFJlYmFzZWxpbmUoQWJzdHJhY3REZWNs
YXJhdGl2ZUNvbW1hbmQpOgogICAgIG5hbWUgPSAicmViYXNlbGluZSIKICAgICBoZWxwX3RleHQg
PSAiUmVwbGFjZXMgbG9jYWwgZXhwZWN0ZWQudHh0IGZpbGVzIHdpdGggbmV3IHJlc3VsdHMgZnJv
bSBidWlsZCBib3RzIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weQppbmRleCA3OWU0Y2Y0YTk3YjYwMWY3
MGRjZjYwZWE5NDM4Y2U4YTM3OWU2OWQ4Li5hNmQ2NjEzNDljM2EwYzhlNGMzMThkNzNiYjlkYzY3
ODUwZjAxMmNmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcmViYXNlbGluZV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weQpAQCAtMzAsMTEgKzMwLDExIEBAIGlt
cG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVy
ZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1w
b3J0IE1vY2sKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5yZWJhc2VsaW5lIGltcG9ydCBC
dWlsZGVyVG9Qb3J0LCBSZWJhc2VsaW5lCitmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucmVi
YXNlbGluZSBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2Nr
VG9vbAogCiAKLWNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNz
IFRlc3RSZWJhc2VsaW5lKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIFRoaXMganVzdCBtYWtl
cyBzdXJlIHRoZSBjb2RlIHJ1bnMgd2l0aG91dCBleGNlcHRpb25zLgogICAgIGRlZiB0ZXN0X3Rl
c3RzX3RvX3VwZGF0ZShzZWxmKToKICAgICAgICAgY29tbWFuZCA9IFJlYmFzZWxpbmUoKQpAQCAt
NDMsNiArNDMsMTUgQEAgY2xhc3MgUmViYXNlbGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5fdGVz
dHNfdG9fdXBkYXRlLCBbYnVpbGRdKQogCiAKK2NsYXNzIFRlc3RSZWJhc2VsaW5lVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdGVzdHNfdG9fdXBkYXRlKHNlbGYpOgorICAg
ICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3QoKQorICAgICAgICBjb21tYW5kLmJpbmRfdG9f
dG9vbChNb2NrVG9vbCgpKQorICAgICAgICBidWlsZCA9IE1vY2soKQorICAgICAgICBleHBlY3Rl
ZF9zdGRvdXQgPSAiUmV0cmlldmluZyBodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21p
dW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9XZWJraXRfTGludXgvcmVzdWx0cy9sYXlvdXQtdGVzdC1y
ZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0IC4uLlxuIgorICAgICAg
ICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5fcmViYXNlbGlu
ZV90ZXN0LCBbIldlYmtpdCBMaW51eCIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIs
ICJ0eHQiXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKKworCiBjbGFzcyBCdWls
ZGVyVG9Qb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcG9ydF9mb3Jf
YnVpbGRlcihzZWxmKToKICAgICAgICAgY29udmVydGVyID0gQnVpbGRlclRvUG9ydCgpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5kZXggMTQwOTZkNTkzY2YxOWYyOGFh
MDZlMzgzMTVjZGU4MmZkMTdlNjhmZS4uYTg1YjZmNmRlYjY3NmMxYTdlYzVkNzhhNDliZDEzMmI1
YzY3MDhkYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29s
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQpAQCAtNzQ3
LDYgKzc0NywxMSBAQCBjbGFzcyBNb2NrV29ya3NwYWNlKG9iamVjdCk6CiAgICAgICAgIHJldHVy
biBvYmplY3QoKSAgIyBTb21ldGhpbmcgdGhhdCBpcyBub3QgTm9uZQogCiAKK2NsYXNzIE1vY2tX
ZWIob2JqZWN0KToKKyAgICBkZWYgZ2V0X2JpbmFyeShzZWxmLCB1cmwpOgorICAgICAgICByZXR1
cm4gIk1PQ0sgV2ViIHJlc3VsdCIKKworCiBjbGFzcyBNb2NrVG9vbChvYmplY3QpOgogCiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ19leGVjdXRpdmU9RmFsc2UpOgpAQCAtNzU0LDYgKzc1OSw3
IEBAIGNsYXNzIE1vY2tUb29sKG9iamVjdCk6CiAgICAgICAgIHNlbGYuYnVncyA9IE1vY2tCdWd6
aWxsYSgpCiAgICAgICAgIHNlbGYuYnVpbGRib3QgPSBNb2NrQnVpbGRCb3QoKQogICAgICAgICBz
ZWxmLmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1sb2dfZXhlY3V0aXZlKQor
ICAgICAgICBzZWxmLndlYiA9IE1vY2tXZWIoKQogICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBN
b2NrRmlsZVN5c3RlbSgpCiAgICAgICAgIHNlbGYud29ya3NwYWNlID0gTW9ja1dvcmtzcGFjZSgp
CiAgICAgICAgIHNlbGYuX2lyYyA9IE5vbmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100247</attachid>
            <date>2011-07-11 00:03:19 -0700</date>
            <delta_ts>2011-07-11 11:20:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64246-20110711000318.patch</filename>
            <type>text/plain</type>
            <size>18786</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA2OTkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZDhlOWI4NTdlOThlMzU4YWVmNDgwNDg5M2UyYWI5ZmVm
NmNlNzZlLi45YWY2YzUyODI2ZjI5NWM1OTA3MDNmYmY5ZDk5OTUzZDIzYTMwZDg5IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTEtMDctMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAg
ICBBZGQgYSB3ZWJraXQtcGF0Y2ggY29tbWFuZCBmb3IgcmViYXNlbGluaW5nIGFuIGluZGl2aWR1
YWwgdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjQyNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjb21tYW5kIHRoYXQncyBhYmxlIHRvIHJlYmFzZWxpbmUg
YSBzaW5nbGUKKyAgICAgICAgdGVzdC4gIEN1cnJlbnRseSwgdGhlIGNvbW1hbmQgd29ya3Mgb25s
eSB3aXRoIHRoZSBidWlsZC5jaHJvbWl1bS5vcmcKKyAgICAgICAgYnVpbGRib3RzLCBidXQgZXh0
ZW5kaW5nIGl0IHRvIHdvcmsgd2l0aCB0aGUgYnVpbGQud2Via2l0Lm9yZyBib3RzCisgICAgICAg
IHNob3VsZG4ndCBiZSB0aGF0IGhhcmQuCisKKyAgICAgICAgQSBjb21wbGV0ZSByZWJhc2VsaW5n
IHRvb2wgc2hvdWxkIGFsc28gaW5jbHVkZSBhbiAib3B0aW1pemUgYmFzZWxpbmVzIgorICAgICAg
ICBjb21tYW5kICh3aGljaCBtb3Zlcy9kZWxldGVzIGJhc2VsaW5lcyBpbiBvcmRlciB0byByZWR1
Y2UgdGhlIG51bWJlciBvZgorICAgICAgICBleHBlY3RlZCByZXN1bHRzIGZpbGVzKSwgYnV0IHRo
YXQgd2lsbCBjb21lIGluIGEgZnV0dXJlIHBhdGNoLgorCisgICAgICAgIFJlYWxseSBCdWlsZGVy
VG9Qb3J0IHNob3VsZCBiZSBtZXJnZWQgaW50byBidWlsZGVycy5weSwgYnV0IEknbSBnb2luZwor
ICAgICAgICB0byBzYXZlIHRoYXQgZm9yIGEgZnV0dXJlIHBhdGNoIGFzIHdlbGwuICAoV2UgbmVl
ZCB0byBzdG9wIHNoYXZpbmcgeWFrcworICAgICAgICBhdCBzb21lIHBvaW50LikKKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5OgorCisyMDEx
LTA3LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgQ2xlYW4g
dXAgc3R5bGUgaW4gZmFsbGJhY2sgcGF0aCBjYWxjdWxhdGlvbgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyMzkKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2hvc3QucHkKaW5kZXggN2I1NTkzYmRjZmIxODBiMDJmY2Q5NzNlYWViMDRjYWE3MTg4
MTViMi4uYzFhMDU5MTEwM2I3OTljZTZmYmQzMGVmY2NlNWE2MjQwZDdiZWY1NSAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9ob3N0LnB5CkBAIC0zMSw3ICszMSw3IEBACiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgQ2hlY2tvdXQKIGZyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LnNjbSBpbXBvcnQgZGVmYXVsdF9zY20KIGZyb20gd2Via2l0cHkuY29tbW9uLmNv
bmZpZy5wb3J0cyBpbXBvcnQgV2ViS2l0UG9ydAotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0IGlt
cG9ydCBidWd6aWxsYSwgYnVpbGRib3QsIHN0YXR1c3NlcnZlcgorZnJvbSB3ZWJraXRweS5jb21t
b24ubmV0IGltcG9ydCBidWd6aWxsYSwgYnVpbGRib3QsIHN0YXR1c3NlcnZlciwgd2ViCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5uZXQuaXJjIGltcG9ydCBpcmNwcm94eQogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmUsIGZpbGVzeXN0ZW0sIHBsYXRmb3JtaW5mbywg
dXNlciwgd29ya3NwYWNlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydApA
QCAtNDIsNiArNDIsNyBAQCBjbGFzcyBIb3N0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuYnVncyA9
IGJ1Z3ppbGxhLkJ1Z3ppbGxhKCkKICAgICAgICAgc2VsZi5idWlsZGJvdCA9IGJ1aWxkYm90LkJ1
aWxkQm90KCkKICAgICAgICAgc2VsZi5leGVjdXRpdmUgPSBleGVjdXRpdmUuRXhlY3V0aXZlKCkK
KyAgICAgICAgc2VsZi53ZWIgPSB3ZWIuV2ViKCkKICAgICAgICAgc2VsZi5faXJjID0gTm9uZQog
ICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtLkZpbGVTeXN0ZW0oKQogICAgICAg
ICBzZWxmLndvcmtzcGFjZSA9IHdvcmtzcGFjZS5Xb3Jrc3BhY2Uoc2VsZi5maWxlc3lzdGVtLCBz
ZWxmLmV4ZWN1dGl2ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWlsZGJvdC9idWlsZGJvdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWlsZGJvdC9idWlsZGJvdC5weQppbmRleCBjYTBkMGRhNDVkODA4N2Y4Yzk2ODdiMjE4
ZDdmNGUyN2Q4NWI3NDY5Li5kYWRiYzdlMTg2NGE5YzQ0ZTA5MjRlODZlZWRiMDRmMmE2NDdmMWFk
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3Qv
YnVpbGRib3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxk
Ym90L2J1aWxkYm90LnB5CkBAIC0yODAsOCArMjgwLDExIEBAIGNsYXNzIEJ1aWxkKG9iamVjdCk6
CiAKIAogY2xhc3MgQnVpbGRCb3Qob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJs
PWNvbmZpZ191cmxzLmJ1aWxkYm90X3VybCk6Ci0gICAgICAgIHNlbGYuYnVpbGRib3RfdXJsID0g
dXJsCisgICAgX2J1aWxkZXJfZmFjdG9yeSA9IEJ1aWxkZXIKKyAgICBfZGVmYXVsdF91cmwgPSBj
b25maWdfdXJscy5idWlsZGJvdF91cmwKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmw9Tm9u
ZSk6CisgICAgICAgIHNlbGYuYnVpbGRib3RfdXJsID0gdXJsIGlmIHVybCBlbHNlIHNlbGYuX2Rl
ZmF1bHRfdXJsCiAgICAgICAgIHNlbGYuX2J1aWxkZXJfYnlfbmFtZSA9IHt9CiAKICAgICAgICAg
IyBJZiBhbnkgY29yZSBidWlsZGVyIGlzIHJlZCB3ZSBzaG91bGQgbm90IGJlIGxhbmRpbmcgcGF0
Y2hlcy4gIE90aGVyCkBAIC00NDAsNyArNDQzLDcgQEAgY2xhc3MgQnVpbGRCb3Qob2JqZWN0KToK
ICAgICBkZWYgYnVpbGRlcl93aXRoX25hbWUoc2VsZiwgbmFtZSk6CiAgICAgICAgIGJ1aWxkZXIg
PSBzZWxmLl9idWlsZGVyX2J5X25hbWUuZ2V0KG5hbWUpCiAgICAgICAgIGlmIG5vdCBidWlsZGVy
OgotICAgICAgICAgICAgYnVpbGRlciA9IEJ1aWxkZXIobmFtZSwgc2VsZikKKyAgICAgICAgICAg
IGJ1aWxkZXIgPSBzZWxmLl9idWlsZGVyX2ZhY3RvcnkobmFtZSwgc2VsZikKICAgICAgICAgICAg
IHNlbGYuX2J1aWxkZXJfYnlfbmFtZVtuYW1lXSA9IGJ1aWxkZXIKICAgICAgICAgcmV0dXJuIGJ1
aWxkZXIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1
aWxkYm90L2Nocm9taXVtYnVpbGRib3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvYnVpbGRib3QvY2hyb21pdW1idWlsZGJvdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjdiYjkyNTk3
ODRmMzkxODU0ZjJjMTQ2ZmE0ZTU4OTkxMTFiOGE1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2Nocm9taXVtYnVpbGRib3QucHkK
QEAgLTAsMCArMSw1NCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgd2Via2l0cHkuY29t
bW9uLmNvbmZpZy51cmxzIGFzIGNvbmZpZ191cmxzCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQu
YnVpbGRib3QuYnVpbGRib3QgaW1wb3J0IEJ1aWxkZXIsIEJ1aWxkQm90CisjIEZJWE1FOiBidWls
ZGVycyBzaG91bGQgcHJvYmFibHkgYmUgaW4gd2Via2l0cHkuY29tbW9uLmNvbmZpZy4KK2Zyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYnVpbGRlcnMgaW1wb3J0IGJ1aWxkZXJfcGF0aF9m
cm9tX25hbWUKKworCitjbGFzcyBDaHJvbWl1bUJ1aWxkZXIoQnVpbGRlcik6CisgICAgIyBJbnN0
ZWFkIG9mIHVzaW5nIHVybC1lbmNvZGVkIGJ1aWRlciBuYW1lcywgYnVpbGQuY2hyb21pdW0ub3Jn
IHVzZXMgdGhpcworICAgICMgdW5kZXJzY29yZSB2YXJpYXRpb24gaW4gc29tZSBwbGFjZXMuCisg
ICAgZGVmIF9kaXJlY3RvcnlfZW5jb2RlZF9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gYnVp
bGRlcl9wYXRoX2Zyb21fbmFtZShzZWxmLl9uYW1lKQorCisgICAgIyBUaGUgYnVpbGQuY2hyb21p
dW0ub3JnIGJ1aWxkZXJzIHN0b3JlIHRoZWlyIHJlc3VsdHMgaW4gYSBkaWZmZXJlbnQKKyAgICAj
IGxvY2F0aW9uIHRoYW4gdGhlIGJ1aWxkLndlYmtpdC5vcmcgYnVpbGRlcnMuCisgICAgZGVmIHJl
c3VsdHNfdXJsKHNlbGYpOgorICAgICAgICByZXR1cm4gImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5v
cmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzLyVzIiAlIHNlbGYuX2RpcmVjdG9yeV9l
bmNvZGVkX25hbWUoKQorCisgICAgIyBJbiBhZGRpdGlvbiB0byBwZXItYnVpbGQgcmVzdWx0cywg
dGhlIGJ1aWxkLmNocm9taXVtLm9yZyBidWlsZGVycyBhbHNvCisgICAgIyBrZWVwIGEgZGlyZWN0
b3J5IHRoYXQgYWNjdW11bGF0ZXMgdGVzdCByZXN1bHRzIG92ZXIgbWFueSBydW5zLgorICAgIGRl
ZiBhY2N1bXVsYXRlZF9yZXN1bHRzX3VybChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucmVz
dWx0c191cmwoKSArICIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzIgorCisKK2NsYXNzIENo
cm9taXVtQnVpbGRCb3QoQnVpbGRCb3QpOgorICAgIF9idWlsZGVyX2ZhY3RvcnkgPSBDaHJvbWl1
bUJ1aWxkZXIKKyAgICBfZGVmYXVsdF91cmwgPSBjb25maWdfdXJscy5jaHJvbWl1bV9idWlsZGJv
dF91cmwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWIu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg0NGU4Nzg3MTA2ZWJkYzMzMjc2YzRhMzYxM2IzZjUyYjcyNDk4NGQKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViLnB5CkBAIC0wLDAgKzEs
MzYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdXJsbGliMgorCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi5uZXQubmV0d29ya3RyYW5zYWN0aW9uIGltcG9ydCBOZXR3b3JrVHJhbnNhY3Rpb24K
KworCitjbGFzcyBXZWIob2JqZWN0KToKKyAgICBkZWYgZ2V0X2JpbmFyeShzZWxmLCB1cmwpOgor
ICAgICAgICByZXR1cm4gTmV0d29ya1RyYW5zYWN0aW9uKCkucnVuKGxhbWJkYTogdXJsbGliMi51
cmxvcGVuKHVybCkucmVhZCgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9idWlsZGVycy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYnVpbGRlcnMucHkKaW5kZXggZGQ1ZTQ2ODlmN2M3NzI4MWNjNGFjODI3
ZjAxMzliNGIxODQ3YzhlMy4uODQyODBlYzVhODkyZjhlMWNlZWJkMGI3Mjk4NDdmNTE0YWMyYzcz
YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
dWlsZGVycy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2J1aWxkZXJzLnB5CkBAIC0zMCwzMSArMzAsMzIgQEAKIGltcG9ydCByZQogCiAKLWRlZiBfcGF0
aF9mcm9tX25hbWUobmFtZSk6Ci0gICAgcmV0dXJuIHJlLnN1YihyJ1tccygpLl0nLCAnXycsIG5h
bWUpCitkZWYgYnVpbGRlcl9wYXRoX2Zyb21fbmFtZShidWlsZGVyX25hbWUpOgorICAgIHJldHVy
biByZS5zdWIocidbXHMoKS5dJywgJ18nLCBidWlsZGVyX25hbWUpCisKIAogIyBDb21waWxlZCBt
YW51YWxseSBmcm9tIGh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9qc29uL2J1
aWxkZXJzL2hlbHA/YXNfdGV4dD0xCiAjIFZhbHVlcyBvZiBOb25lIG1lYW4gdGhlcmUgYXJlIG5v
IGJvdHMgcnVubmluZyBhdCBidWlsZC53ZWJraXQub3JnIG9yCiAjIGJ1aWxkLmNocm9taXVtLm9y
ZyBmb3IgdGhhdCBwb3J0LgogIyBGSVhNRSBNYWtlIHRoZSB2YWx1ZXMgaW4gdGhpcyBtYXAgaW50
byBsaXN0cy4KIENIUk9NSVVNX1BPUlRfVE9fQlVJTERFUl9OQU1FID0gewotICAgICdjaHJvbWl1
bS1ncHUtbGludXgnOiBfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBMaW51eCAtIEdQVScpLAorICAg
ICdjaHJvbWl1bS1ncHUtbGludXgnOiBidWlsZGVyX3BhdGhfZnJvbV9uYW1lKCdXZWJraXQgTGlu
dXggLSBHUFUnKSwKIAotICAgICdjaHJvbWl1bS1ncHUtbWFjLXNub3dsZW9wYXJkJzogX3BhdGhf
ZnJvbV9uYW1lKCdXZWJraXQgTWFjMTAuNiAtIEdQVScpLAotICAgICdjaHJvbWl1bS1ncHUtbWFj
LWxlb3BhcmQnOiBfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBNYWMxMC41IC0gR1BVJyksCisgICAg
J2Nocm9taXVtLWdwdS1tYWMtc25vd2xlb3BhcmQnOiBidWlsZGVyX3BhdGhfZnJvbV9uYW1lKCdX
ZWJraXQgTWFjMTAuNiAtIEdQVScpLAorICAgICdjaHJvbWl1bS1ncHUtbWFjLWxlb3BhcmQnOiBi
dWlsZGVyX3BhdGhfZnJvbV9uYW1lKCdXZWJraXQgTWFjMTAuNSAtIEdQVScpLAogCi0gICAgJ2No
cm9taXVtLWdwdS13aW4teHAnOiBfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBXaW4gLSBHUFUnKSwK
LSAgICAnY2hyb21pdW0tZ3B1LXdpbi12aXN0YSc6IF9wYXRoX2Zyb21fbmFtZSgnV2Via2l0IFZp
c3RhIC0gR1BVJyksCi0gICAgJ2Nocm9taXVtLWdwdS13aW4td2luNyc6IF9wYXRoX2Zyb21fbmFt
ZSgnV2Via2l0IFdpbjcgLSBHUFUnKSwKKyAgICAnY2hyb21pdW0tZ3B1LXdpbi14cCc6IGJ1aWxk
ZXJfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBXaW4gLSBHUFUnKSwKKyAgICAnY2hyb21pdW0tZ3B1
LXdpbi12aXN0YSc6IGJ1aWxkZXJfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBWaXN0YSAtIEdQVScp
LAorICAgICdjaHJvbWl1bS1ncHUtd2luLXdpbjcnOiBidWlsZGVyX3BhdGhfZnJvbV9uYW1lKCdX
ZWJraXQgV2luNyAtIEdQVScpLAogCi0gICAgJ2Nocm9taXVtLWxpbnV4LXg4Nl82NCc6IF9wYXRo
X2Zyb21fbmFtZSgnTGludXggVGVzdHMgeDY0JyksCi0gICAgJ2Nocm9taXVtLWxpbnV4LXg4Nic6
IF9wYXRoX2Zyb21fbmFtZSgnTGludXggVGVzdHMgKGRiZykoMSknKSwKKyAgICAnY2hyb21pdW0t
bGludXgteDg2XzY0JzogYnVpbGRlcl9wYXRoX2Zyb21fbmFtZSgnTGludXggVGVzdHMgeDY0Jyks
CisgICAgJ2Nocm9taXVtLWxpbnV4LXg4Nic6IGJ1aWxkZXJfcGF0aF9mcm9tX25hbWUoJ0xpbnV4
IFRlc3RzIChkYmcpKDEpJyksCiAKLSAgICAnY2hyb21pdW0tbWFjLWxlb3BhcmQnOiBfcGF0aF9m
cm9tX25hbWUoJ01hYzEwLjUgVGVzdHMgKDEpJyksCi0gICAgJ2Nocm9taXVtLW1hYy1zbm93bGVv
cGFyZCc6IF9wYXRoX2Zyb21fbmFtZSgnTWFjIDEwLjYgVGVzdHMgKGRiZykoMSknKSwKKyAgICAn
Y2hyb21pdW0tbWFjLWxlb3BhcmQnOiBidWlsZGVyX3BhdGhfZnJvbV9uYW1lKCdNYWMxMC41IFRl
c3RzICgxKScpLAorICAgICdjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQnOiBidWlsZGVyX3BhdGhf
ZnJvbV9uYW1lKCdNYWMgMTAuNiBUZXN0cyAoZGJnKSgxKScpLAogCi0gICAgJ2Nocm9taXVtLXdp
bi14cCc6IF9wYXRoX2Zyb21fbmFtZSgnWFAgVGVzdHMgKGRiZykoNSknKSwKLSAgICAnY2hyb21p
dW0td2luLXZpc3RhJzogX3BhdGhfZnJvbV9uYW1lKCdWaXN0YSBUZXN0cyAoZGJnKSgxKScpLAor
ICAgICdjaHJvbWl1bS13aW4teHAnOiBidWlsZGVyX3BhdGhfZnJvbV9uYW1lKCdYUCBUZXN0cyAo
ZGJnKSg1KScpLAorICAgICdjaHJvbWl1bS13aW4tdmlzdGEnOiBidWlsZGVyX3BhdGhfZnJvbV9u
YW1lKCdWaXN0YSBUZXN0cyAoZGJnKSgxKScpLAogICAgICdjaHJvbWl1bS13aW4td2luNyc6IE5v
bmUsCiAKICAgICAnZ29vZ2xlLWNocm9tZS1saW51eDMyJzogTm9uZSwKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYnVpbGRlcnNfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2J1aWxkZXJzX3Vu
aXR0ZXN0LnB5CmluZGV4IGQzMjE3YWM1MGZmODMyZTIyODA2NmYzMTI2MDNmOTI3YzYyYTUyMzIu
LjE1NTBkZjQ5NDFmYjg0ODU5M2UwMTI4OTlhYzM2NTE2NGYwMWM5NzggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYnVpbGRlcnNfdW5pdHRlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9idWlsZGVy
c191bml0dGVzdC5weQpAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBCdWlsZGVyc1Rlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICAgICAgJyguKSAnOiAnX19fXycsCiAgICAgICAgIH0KICAg
ICAgICAgZm9yIG5hbWUsIGV4cGVjdGVkIGluIHRlc3RzLml0ZW1zKCk6Ci0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZCwgYnVpbGRlcnMuX3BhdGhfZnJvbV9uYW1lKG5hbWUp
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIGJ1aWxkZXJzLmJ1aWxk
ZXJfcGF0aF9mcm9tX25hbWUobmFtZSkpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAg
ICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcmViYXNlbGluZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9yZWJhc2VsaW5lLnB5CmluZGV4IDIxOWYzNGEyNTU3YTk2N2Q1MTUyNTY0ZTU0MDhk
ZDQ0MDIyMTZlMTguLjJlYjA5NDdmMWQyOGVmN2Q0Yzc1MDZlOWMzMzYwNDFmZTBiZDNiNmYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5l
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5l
LnB5CkBAIC0zMSw3ICszMSw5IEBAIGltcG9ydCByZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHVy
bGxpYgogCitpbXBvcnQgd2Via2l0cHkuY29tbW9uLmNvbmZpZy51cmxzIGFzIGNvbmZpZ191cmxz
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90Citmcm9t
IHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QuY2hyb21pdW1idWlsZGJvdCBpbXBvcnQgQ2hy
b21pdW1CdWlsZEJvdAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bHRz
IGltcG9ydCBMYXlvdXRUZXN0UmVzdWx0cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVz
ZXIgaW1wb3J0IFVzZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQg
dGVzdF9mYWlsdXJlcwpAQCAtNDQsNiArNDYsNyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGlj
b21tYW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKICMgRm9yIG5vdyBp
dCdzIGhlcmUsIHVudGlsIHdlIGhhdmUgYSBzZWNvbmQgbmVlZCBmb3IgaXQuCiBjbGFzcyBCdWls
ZGVyVG9Qb3J0KG9iamVjdCk6CiAgICAgX2J1aWxkZXJfbmFtZV90b19wb3J0X25hbWUgPSB7Cisg
ICAgICAgICMgVGhlc2UgYnVpbGRlcnMgYXJlIG9uIGJ1aWxkLndlYmtpdC5vcmcuCiAgICAgICAg
IHIiU25vd0xlb3BhcmQiOiAibWFjLXNub3dsZW9wYXJkIiwKICAgICAgICAgciJMZW9wYXJkIjog
Im1hYy1sZW9wYXJkIiwKICAgICAgICAgciJXaW5kb3dzIjogIndpbiIsCkBAIC01Miw2ICs1NSwy
MiBAQCBjbGFzcyBCdWlsZGVyVG9Qb3J0KG9iamVjdCk6CiAgICAgICAgIHIiQ2hyb21pdW0gTWFj
IjogImNocm9taXVtLW1hYyIsCiAgICAgICAgIHIiQ2hyb21pdW0gTGludXgiOiAiY2hyb21pdW0t
bGludXgiLAogICAgICAgICByIkNocm9taXVtIFdpbiI6ICJjaHJvbWl1bS13aW4iLAorCisgICAg
ICAgICMgVGhlc2UgYnVpbGRlcnMgYXJlIG9uIGJ1aWxkLmNocm9taXVtLm9yZy4KKyAgICAgICAg
ciJXZWJraXQgV2luIjogImNocm9taXVtLXdpbi14cCIsCisgICAgICAgIHIiV2Via2l0IFZpc3Rh
IjogImNocm9taXVtLXdpbi12aXN0YSIsCisgICAgICAgIHIiV2Via2l0IFdpbjciOiAiY2hyb21p
dW0td2luLXdpbjciLAorICAgICAgICByIldlYmtpdCBXaW4gKGRiZykoMSkiOiAiY2hyb21pdW0t
d2luLXdpbjciLCAgIyBGSVhNRTogSXMgdGhpcyBjb3JyZWN0PworICAgICAgICByIldlYmtpdCBX
aW4gKGRiZykoMikiOiAiY2hyb21pdW0td2luLXdpbjciLCAgIyBGSVhNRTogSXMgdGhpcyBjb3Jy
ZWN0PworICAgICAgICByIldlYmtpdCBMaW51eCI6ICJjaHJvbWl1bS1saW51eC14ODZfNjQiLAor
ICAgICAgICByIldlYmtpdCBMaW51eCAzMiI6ICJjaHJvbWl1bS1saW51eC14ODYiLAorICAgICAg
ICByIldlYmtpdCBMaW51eCAoZGJnKSgxKSI6ICJjaHJvbWl1bS1saW51eC14ODZfNjQiLAorICAg
ICAgICByIldlYmtpdCBMaW51eCAoZGJnKSgyKSI6ICJjaHJvbWl1bS1saW51eC14ODZfNjQiLAor
ICAgICAgICByIldlYmtpdCBNYWMxMFwuNSI6ICJjaHJvbWl1bS1tYWMtbGVvcGFyZCIsCisgICAg
ICAgIHIiV2Via2l0IE1hYzEwXC41IChkYmcpKDEpIjogImNocm9taXVtLW1hYy1sZW9wYXJkIiwK
KyAgICAgICAgciJXZWJraXQgTWFjMTBcLjUgKGRiZykoMikiOiAiY2hyb21pdW0tbWFjLWxlb3Bh
cmQiLAorICAgICAgICByIldlYmtpdCBNYWMxMFwuNiI6ICJjaHJvbWl1bS1tYWMtc25vd2xlb3Bh
cmQiLAorICAgICAgICByIldlYmtpdCBNYWMxMFwuNiAoZGJnKSI6ICJjaHJvbWl1bS1tYWMtc25v
d2xlb3BhcmQiLAogICAgIH0KIAogICAgIGRlZiBfcG9ydF9uYW1lX2Zvcl9idWlsZGVyX25hbWUo
c2VsZiwgYnVpbGRlcl9uYW1lKToKQEAgLTY3LDYgKzg2LDQ0IEBAIGNsYXNzIEJ1aWxkZXJUb1Bv
cnQob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHBvcnQKIAogCitjbGFzcyBSZWJhc2VsaW5lVGVz
dChBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CisgICAgbmFtZSA9ICJyZWJhc2VsaW5lLXRl
c3QiCisgICAgaGVscF90ZXh0ID0gIlJlYmFzZWxpbmUgYSBzaW5nbGUgdGVzdCBmcm9tIGEgYnVp
bGRib3QuICAoQ3VycmVudGx5IHdvcmtzIG9ubHkgd2l0aCBidWlsZC5jaHJvbWl1bS5vcmcgYnVp
bGRib3RzLikiCisgICAgYXJndW1lbnRfbmFtZXMgPSAiQlVJTERFUl9OQU1FIFRFU1RfTkFNRSBT
VUZGSVgiCisKKyAgICBkZWYgX3Jlc3VsdHNfdXJsKHNlbGYsIGJ1aWxkZXJfbmFtZSk6CisgICAg
ICAgICMgRklYTUU6IEdlbmVyYWxpemUgdGhpcyBjb21tYW5kIHRvIHdvcmsgd2l0aCBub24tYnVp
bGQuY2hyb21pdW0ub3JnIGJ1aWxkZXJzLgorICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgcmVh
bGx5IGdldCB0aGUgYnVpbGRib3QgZnJvbSB0aGUgdG9vbCEKKyAgICAgICAgYnVpbGRlciA9IENo
cm9taXVtQnVpbGRCb3QoKS5idWlsZGVyX3dpdGhfbmFtZShidWlsZGVyX25hbWUpCisgICAgICAg
IHJldHVybiBidWlsZGVyLmFjY3VtdWxhdGVkX3Jlc3VsdHNfdXJsKCkKKworICAgIGRlZiBfYmFz
ZWxpbmVfZGlyZWN0b3J5KHNlbGYsIGJ1aWxkZXJfbmFtZSk6CisgICAgICAgIHBvcnQgPSBCdWls
ZGVyVG9Qb3J0KCkucG9ydF9mb3JfYnVpbGRlcihidWlsZGVyX25hbWUpCisgICAgICAgIHJldHVy
biBwb3J0LmJhc2VsaW5lX3BhdGgoKQorCisgICAgZGVmIF9yZWJhc2VsaW5lX3Rlc3Qoc2VsZiwg
YnVpbGRlcl9uYW1lLCB0ZXN0X25hbWUsIHN1ZmZpeCk6CisgICAgICAgIHJlc3VsdHNfdXJsID0g
c2VsZi5fcmVzdWx0c191cmwoYnVpbGRlcl9uYW1lKQorICAgICAgICBiYXNlbGluZV9kaXJlY3Rv
cnkgPSBzZWxmLl9iYXNlbGluZV9kaXJlY3RvcnkoYnVpbGRlcl9uYW1lKQorCisgICAgICAgIHRl
c3Rfcm9vdCA9IG9zLnBhdGguc3BsaXRleHQodGVzdF9uYW1lKVswXQorCisgICAgICAgIHNvdXJj
ZV9iYXNlbGluZSA9ICIlcy8lcy1hY3R1YWwuJXMiICUgKHJlc3VsdHNfdXJsLCB0ZXN0X3Jvb3Qs
IHN1ZmZpeCkKKyAgICAgICAgdGFyZ2V0X2Jhc2VsaW5lID0gb3MucGF0aC5qb2luKGJhc2VsaW5l
X2RpcmVjdG9yeSwgdGVzdF9yb290ICsgIi1leHBlY3RlZC4iICsgc3VmZml4KQorCisgICAgICAg
IHByaW50ICJSZXRyaWV2aW5nICVzIC4uLiIgJSBzb3VyY2VfYmFzZWxpbmUKKyAgICAgICAgZGF0
YSA9IHNlbGYuX3Rvb2wud2ViLmdldF9iaW5hcnkoc291cmNlX2Jhc2VsaW5lKQorCisgICAgICAg
IHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZSh0YXJnZXRfYmFzZWxpbmUs
IGRhdGEpCisgICAgICAgIGlmIG5vdCBzZWxmLl90b29sLnNjbSgpLmV4aXN0cyh0YXJnZXRfYmFz
ZWxpbmUpOgorICAgICAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5hZGQodGFyZ2V0X2Jhc2VsaW5l
KQorCisgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAg
IGJ1aWxkZXJfbmFtZSA9IGFyZ3NbMF0KKyAgICAgICAgdGVzdF9uYW1lID0gYXJnc1sxXQorICAg
ICAgICBzdWZmaXggPSBhcmdzWzJdCisgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfdGVzdChidWls
ZGVyX25hbWUsIHRlc3RfbmFtZSwgc3VmZml4KQorCisKIGNsYXNzIFJlYmFzZWxpbmUoQWJzdHJh
Y3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgIG5hbWUgPSAicmViYXNlbGluZSIKICAgICBoZWxw
X3RleHQgPSAiUmVwbGFjZXMgbG9jYWwgZXhwZWN0ZWQudHh0IGZpbGVzIHdpdGggbmV3IHJlc3Vs
dHMgZnJvbSBidWlsZCBib3RzIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weQppbmRleCA3OWU0Y2Y0YTk3
YjYwMWY3MGRjZjYwZWE5NDM4Y2U4YTM3OWU2OWQ4Li5hNmQ2NjEzNDljM2EwYzhlNGMzMThkNzNi
YjlkYzY3ODUwZjAxMmNmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weQpAQCAtMzAsMTEgKzMwLDEx
IEBAIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0
Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1v
Y2sgaW1wb3J0IE1vY2sKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5yZWJhc2VsaW5lIGlt
cG9ydCBCdWlsZGVyVG9Qb3J0LCBSZWJhc2VsaW5lCitmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFu
ZHMucmViYXNlbGluZSBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9y
dCBNb2NrVG9vbAogCiAKLWNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
K2NsYXNzIFRlc3RSZWJhc2VsaW5lKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIFRoaXMganVz
dCBtYWtlcyBzdXJlIHRoZSBjb2RlIHJ1bnMgd2l0aG91dCBleGNlcHRpb25zLgogICAgIGRlZiB0
ZXN0X3Rlc3RzX3RvX3VwZGF0ZShzZWxmKToKICAgICAgICAgY29tbWFuZCA9IFJlYmFzZWxpbmUo
KQpAQCAtNDMsNiArNDMsMTUgQEAgY2xhc3MgUmViYXNlbGluZVRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFu
ZC5fdGVzdHNfdG9fdXBkYXRlLCBbYnVpbGRdKQogCiAKK2NsYXNzIFRlc3RSZWJhc2VsaW5lVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdGVzdHNfdG9fdXBkYXRlKHNlbGYp
OgorICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3QoKQorICAgICAgICBjb21tYW5kLmJp
bmRfdG9fdG9vbChNb2NrVG9vbCgpKQorICAgICAgICBidWlsZCA9IE1vY2soKQorICAgICAgICBl
eHBlY3RlZF9zdGRvdXQgPSAiUmV0cmlldmluZyBodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2Yv
Y2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9XZWJraXRfTGludXgvcmVzdWx0cy9sYXlvdXQt
dGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0IC4uLlxuIgor
ICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5fcmVi
YXNlbGluZV90ZXN0LCBbIldlYmtpdCBMaW51eCIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qu
aHRtbCIsICJ0eHQiXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKKworCiBjbGFz
cyBCdWlsZGVyVG9Qb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcG9y
dF9mb3JfYnVpbGRlcihzZWxmKToKICAgICAgICAgY29udmVydGVyID0gQnVpbGRlclRvUG9ydCgp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5kZXggMTQwOTZkNTkzY2Yx
OWYyOGFhMDZlMzgzMTVjZGU4MmZkMTdlNjhmZS4uYTg1YjZmNmRlYjY3NmMxYTdlYzVkNzhhNDli
ZDEzMmI1YzY3MDhkYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21v
Y2t0b29sLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQpA
QCAtNzQ3LDYgKzc0NywxMSBAQCBjbGFzcyBNb2NrV29ya3NwYWNlKG9iamVjdCk6CiAgICAgICAg
IHJldHVybiBvYmplY3QoKSAgIyBTb21ldGhpbmcgdGhhdCBpcyBub3QgTm9uZQogCiAKK2NsYXNz
IE1vY2tXZWIob2JqZWN0KToKKyAgICBkZWYgZ2V0X2JpbmFyeShzZWxmLCB1cmwpOgorICAgICAg
ICByZXR1cm4gIk1PQ0sgV2ViIHJlc3VsdCIKKworCiBjbGFzcyBNb2NrVG9vbChvYmplY3QpOgog
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ19leGVjdXRpdmU9RmFsc2UpOgpAQCAtNzU0LDYg
Kzc1OSw3IEBAIGNsYXNzIE1vY2tUb29sKG9iamVjdCk6CiAgICAgICAgIHNlbGYuYnVncyA9IE1v
Y2tCdWd6aWxsYSgpCiAgICAgICAgIHNlbGYuYnVpbGRib3QgPSBNb2NrQnVpbGRCb3QoKQogICAg
ICAgICBzZWxmLmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1sb2dfZXhlY3V0
aXZlKQorICAgICAgICBzZWxmLndlYiA9IE1vY2tXZWIoKQogICAgICAgICBzZWxmLmZpbGVzeXN0
ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCiAgICAgICAgIHNlbGYud29ya3NwYWNlID0gTW9ja1dvcmtz
cGFjZSgpCiAgICAgICAgIHNlbGYuX2lyYyA9IE5vbmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100332</attachid>
            <date>2011-07-11 11:20:11 -0700</date>
            <delta_ts>2011-07-11 11:51:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64246-20110711112010.patch</filename>
            <type>text/plain</type>
            <size>18795</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkwNzYzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMTEtMDctMTEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBZGQgYSB3ZWJraXQtcGF0Y2ggY29tbWFuZCBmb3IgcmViYXNlbGluaW5nIGFuIGlu
ZGl2aWR1YWwgdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjQyNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBjb21tYW5kIHRoYXQncyBhYmxlIHRvIHJlYmFz
ZWxpbmUgYSBzaW5nbGUKKyAgICAgICAgdGVzdC4gIEN1cnJlbnRseSwgdGhlIGNvbW1hbmQgd29y
a3Mgb25seSB3aXRoIHRoZSBidWlsZC5jaHJvbWl1bS5vcmcKKyAgICAgICAgYnVpbGRib3RzLCBi
dXQgZXh0ZW5kaW5nIGl0IHRvIHdvcmsgd2l0aCB0aGUgYnVpbGQud2Via2l0Lm9yZyBib3RzCisg
ICAgICAgIHNob3VsZG4ndCBiZSB0aGF0IGhhcmQuCisKKyAgICAgICAgQSBjb21wbGV0ZSByZWJh
c2VsaW5nIHRvb2wgc2hvdWxkIGFsc28gaW5jbHVkZSBhbiAib3B0aW1pemUgYmFzZWxpbmVzIgor
ICAgICAgICBjb21tYW5kICh3aGljaCBtb3Zlcy9kZWxldGVzIGJhc2VsaW5lcyBpbiBvcmRlciB0
byByZWR1Y2UgdGhlIG51bWJlciBvZgorICAgICAgICBleHBlY3RlZCByZXN1bHRzIGZpbGVzKSwg
YnV0IHRoYXQgd2lsbCBjb21lIGluIGEgZnV0dXJlIHBhdGNoLgorCisgICAgICAgIFJlYWxseSBC
dWlsZGVyVG9Qb3J0IHNob3VsZCBiZSBtZXJnZWQgaW50byBidWlsZGVycy5weSwgYnV0IEknbSBn
b2luZworICAgICAgICB0byBzYXZlIHRoYXQgZm9yIGEgZnV0dXJlIHBhdGNoIGFzIHdlbGwuICAo
V2UgbmVlZCB0byBzdG9wIHNoYXZpbmcgeWFrcworICAgICAgICBhdCBzb21lIHBvaW50LikKKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5Ogor
CiAyMDExLTA3LTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
Z2FyZGVuLW8tbWF0aWMgc2hvdWxkIGJlIGFibGUgdG8gcm9sbCBvdXQgcGF0Y2hlcwpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9ob3N0LnB5CShyZXZpc2lvbiA5MDc2MykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2hvc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0IGltcG9ydCBDaGVja291
dAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBkZWZhdWx0X3NjbQog
ZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGltcG9ydCBXZWJLaXRQb3J0Ci1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5uZXQgaW1wb3J0IGJ1Z3ppbGxhLCBidWlsZGJvdCwgc3RhdHVzc2Vy
dmVyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQgaW1wb3J0IGJ1Z3ppbGxhLCBidWlsZGJvdCwg
c3RhdHVzc2VydmVyLCB3ZWIKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5pcmMgaW1wb3J0IGly
Y3Byb3h5CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZSwgZmls
ZXN5c3RlbSwgcGxhdGZvcm1pbmZvLCB1c2VyLCB3b3Jrc3BhY2UKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzIGltcG9ydCBwb3J0CkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEhvc3Qob2JqZWN0
KToKICAgICAgICAgc2VsZi5idWdzID0gYnVnemlsbGEuQnVnemlsbGEoKQogICAgICAgICBzZWxm
LmJ1aWxkYm90ID0gYnVpbGRib3QuQnVpbGRCb3QoKQogICAgICAgICBzZWxmLmV4ZWN1dGl2ZSA9
IGV4ZWN1dGl2ZS5FeGVjdXRpdmUoKQorICAgICAgICBzZWxmLndlYiA9IHdlYi5XZWIoKQogICAg
ICAgICBzZWxmLl9pcmMgPSBOb25lCiAgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IGZpbGVzeXN0
ZW0uRmlsZVN5c3RlbSgpCiAgICAgICAgIHNlbGYud29ya3NwYWNlID0gd29ya3NwYWNlLldvcmtz
cGFjZShzZWxmLmZpbGVzeXN0ZW0sIHNlbGYuZXhlY3V0aXZlKQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L3dlYi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViLnB5CShyZXZpc2lvbiAwKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L3dlYi5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1cmxsaWIyCisKK2Zyb20gd2Via2l0cHkuY29t
bW9uLm5ldC5uZXR3b3JrdHJhbnNhY3Rpb24gaW1wb3J0IE5ldHdvcmtUcmFuc2FjdGlvbgorCisK
K2NsYXNzIFdlYihvYmplY3QpOgorICAgIGRlZiBnZXRfYmluYXJ5KHNlbGYsIHVybCk6CisgICAg
ICAgIHJldHVybiBOZXR3b3JrVHJhbnNhY3Rpb24oKS5ydW4obGFtYmRhOiB1cmxsaWIyLnVybG9w
ZW4odXJsKS5yZWFkKCkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
YnVpbGRib3QvYnVpbGRib3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5CShyZXZpc2lvbiA5MDc2MykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weQkod29y
a2luZyBjb3B5KQpAQCAtNjksNiArNjksMTEgQEAgY2xhc3MgQnVpbGRlcihvYmplY3QpOgogICAg
IGRlZiByZXN1bHRzX3VybChzZWxmKToKICAgICAgICAgcmV0dXJuICIlcy9yZXN1bHRzLyVzIiAl
IChzZWxmLl9idWlsZGJvdC5idWlsZGJvdF91cmwsIHNlbGYudXJsX2VuY29kZWRfbmFtZSgpKQog
CisgICAgIyBJbiBhZGRpdGlvbiB0byBwZXItYnVpbGQgcmVzdWx0cywgdGhlIGJ1aWxkLmNocm9t
aXVtLm9yZyBidWlsZGVycyBhbHNvCisgICAgIyBrZWVwIGEgZGlyZWN0b3J5IHRoYXQgYWNjdW11
bGF0ZXMgdGVzdCByZXN1bHRzIG92ZXIgbWFueSBydW5zLgorICAgIGRlZiBhY2N1bXVsYXRlZF9y
ZXN1bHRzX3VybChzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgIGRlZiB1cmxfZW5j
b2RlZF9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gdXJsbGliLnF1b3RlKHNlbGYuX25hbWUp
CiAKQEAgLTI4MCw4ICsyODUsMTEgQEAgY2xhc3MgQnVpbGQob2JqZWN0KToKIAogCiBjbGFzcyBC
dWlsZEJvdChvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmw9Y29uZmlnX3VybHMu
YnVpbGRib3RfdXJsKToKLSAgICAgICAgc2VsZi5idWlsZGJvdF91cmwgPSB1cmwKKyAgICBfYnVp
bGRlcl9mYWN0b3J5ID0gQnVpbGRlcgorICAgIF9kZWZhdWx0X3VybCA9IGNvbmZpZ191cmxzLmJ1
aWxkYm90X3VybAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybD1Ob25lKToKKyAgICAgICAg
c2VsZi5idWlsZGJvdF91cmwgPSB1cmwgaWYgdXJsIGVsc2Ugc2VsZi5fZGVmYXVsdF91cmwKICAg
ICAgICAgc2VsZi5fYnVpbGRlcl9ieV9uYW1lID0ge30KIAogICAgICAgICAjIElmIGFueSBjb3Jl
IGJ1aWxkZXIgaXMgcmVkIHdlIHNob3VsZCBub3QgYmUgbGFuZGluZyBwYXRjaGVzLiAgT3RoZXIK
QEAgLTQ0MCw3ICs0NDgsNyBAQCBjbGFzcyBCdWlsZEJvdChvYmplY3QpOgogICAgIGRlZiBidWls
ZGVyX3dpdGhfbmFtZShzZWxmLCBuYW1lKToKICAgICAgICAgYnVpbGRlciA9IHNlbGYuX2J1aWxk
ZXJfYnlfbmFtZS5nZXQobmFtZSkKICAgICAgICAgaWYgbm90IGJ1aWxkZXI6Ci0gICAgICAgICAg
ICBidWlsZGVyID0gQnVpbGRlcihuYW1lLCBzZWxmKQorICAgICAgICAgICAgYnVpbGRlciA9IHNl
bGYuX2J1aWxkZXJfZmFjdG9yeShuYW1lLCBzZWxmKQogICAgICAgICAgICAgc2VsZi5fYnVpbGRl
cl9ieV9uYW1lW25hbWVdID0gYnVpbGRlcgogICAgICAgICByZXR1cm4gYnVpbGRlcgogCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvY2hyb21pdW1idWls
ZGJvdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
YnVpbGRib3QvY2hyb21pdW1idWlsZGJvdC5weQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9jaHJvbWl1bWJ1aWxkYm90LnB5CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisjIENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB3ZWJr
aXRweS5jb21tb24uY29uZmlnLnVybHMgYXMgY29uZmlnX3VybHMKK2Zyb20gd2Via2l0cHkuY29t
bW9uLm5ldC5idWlsZGJvdC5idWlsZGJvdCBpbXBvcnQgQnVpbGRlciwgQnVpbGRCb3QKKyMgRklY
TUU6IGJ1aWxkZXJzIHNob3VsZCBwcm9iYWJseSBiZSBpbiB3ZWJraXRweS5jb21tb24uY29uZmln
LgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5idWlsZGVycyBpbXBvcnQgYnVpbGRl
cl9wYXRoX2Zyb21fbmFtZQorCisKK2NsYXNzIENocm9taXVtQnVpbGRlcihCdWlsZGVyKToKKyAg
ICAjIFRoZSBidWlsZC5jaHJvbWl1bS5vcmcgYnVpbGRlcnMgc3RvcmUgdGhlaXIgcmVzdWx0cyBp
biBhIGRpZmZlcmVudAorICAgICMgbG9jYXRpb24gdGhhbiB0aGUgYnVpbGQud2Via2l0Lm9yZyBi
dWlsZGVycy4KKyAgICBkZWYgcmVzdWx0c191cmwoc2VsZik6CisgICAgICAgIHJldHVybiAiaHR0
cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvJXMi
ICUgYnVpbGRlcl9wYXRoX2Zyb21fbmFtZShzZWxmLl9uYW1lKQorCisgICAgZGVmIGFjY3VtdWxh
dGVkX3Jlc3VsdHNfdXJsKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5yZXN1bHRzX3VybCgp
ICsgIi9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMiCisKKworY2xhc3MgQ2hyb21pdW1CdWls
ZEJvdChCdWlsZEJvdCk6CisgICAgX2J1aWxkZXJfZmFjdG9yeSA9IENocm9taXVtQnVpbGRlcgor
ICAgIF9kZWZhdWx0X3VybCA9IGNvbmZpZ191cmxzLmNocm9taXVtX2J1aWxkYm90X3VybApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9idWlsZGVycy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2J1
aWxkZXJzLnB5CShyZXZpc2lvbiA5MDc2MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYnVpbGRlcnMucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDMxICszMCwz
MiBAQAogaW1wb3J0IHJlCiAKIAotZGVmIF9wYXRoX2Zyb21fbmFtZShuYW1lKToKLSAgICByZXR1
cm4gcmUuc3ViKHInW1xzKCkuXScsICdfJywgbmFtZSkKK2RlZiBidWlsZGVyX3BhdGhfZnJvbV9u
YW1lKGJ1aWxkZXJfbmFtZSk6CisgICAgcmV0dXJuIHJlLnN1YihyJ1tccygpLl0nLCAnXycsIGJ1
aWxkZXJfbmFtZSkKKwogCiAjIENvbXBpbGVkIG1hbnVhbGx5IGZyb20gaHR0cDovL2J1aWxkLmNo
cm9taXVtLm9yZy9wL2Nocm9taXVtL2pzb24vYnVpbGRlcnMvaGVscD9hc190ZXh0PTEKICMgVmFs
dWVzIG9mIE5vbmUgbWVhbiB0aGVyZSBhcmUgbm8gYm90cyBydW5uaW5nIGF0IGJ1aWxkLndlYmtp
dC5vcmcgb3IKICMgYnVpbGQuY2hyb21pdW0ub3JnIGZvciB0aGF0IHBvcnQuCiAjIEZJWE1FIE1h
a2UgdGhlIHZhbHVlcyBpbiB0aGlzIG1hcCBpbnRvIGxpc3RzLgogQ0hST01JVU1fUE9SVF9UT19C
VUlMREVSX05BTUUgPSB7Ci0gICAgJ2Nocm9taXVtLWdwdS1saW51eCc6IF9wYXRoX2Zyb21fbmFt
ZSgnV2Via2l0IExpbnV4IC0gR1BVJyksCisgICAgJ2Nocm9taXVtLWdwdS1saW51eCc6IGJ1aWxk
ZXJfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBMaW51eCAtIEdQVScpLAogCi0gICAgJ2Nocm9taXVt
LWdwdS1tYWMtc25vd2xlb3BhcmQnOiBfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBNYWMxMC42IC0g
R1BVJyksCi0gICAgJ2Nocm9taXVtLWdwdS1tYWMtbGVvcGFyZCc6IF9wYXRoX2Zyb21fbmFtZSgn
V2Via2l0IE1hYzEwLjUgLSBHUFUnKSwKKyAgICAnY2hyb21pdW0tZ3B1LW1hYy1zbm93bGVvcGFy
ZCc6IGJ1aWxkZXJfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBNYWMxMC42IC0gR1BVJyksCisgICAg
J2Nocm9taXVtLWdwdS1tYWMtbGVvcGFyZCc6IGJ1aWxkZXJfcGF0aF9mcm9tX25hbWUoJ1dlYmtp
dCBNYWMxMC41IC0gR1BVJyksCiAKLSAgICAnY2hyb21pdW0tZ3B1LXdpbi14cCc6IF9wYXRoX2Zy
b21fbmFtZSgnV2Via2l0IFdpbiAtIEdQVScpLAotICAgICdjaHJvbWl1bS1ncHUtd2luLXZpc3Rh
JzogX3BhdGhfZnJvbV9uYW1lKCdXZWJraXQgVmlzdGEgLSBHUFUnKSwKLSAgICAnY2hyb21pdW0t
Z3B1LXdpbi13aW43JzogX3BhdGhfZnJvbV9uYW1lKCdXZWJraXQgV2luNyAtIEdQVScpLAorICAg
ICdjaHJvbWl1bS1ncHUtd2luLXhwJzogYnVpbGRlcl9wYXRoX2Zyb21fbmFtZSgnV2Via2l0IFdp
biAtIEdQVScpLAorICAgICdjaHJvbWl1bS1ncHUtd2luLXZpc3RhJzogYnVpbGRlcl9wYXRoX2Zy
b21fbmFtZSgnV2Via2l0IFZpc3RhIC0gR1BVJyksCisgICAgJ2Nocm9taXVtLWdwdS13aW4td2lu
Nyc6IGJ1aWxkZXJfcGF0aF9mcm9tX25hbWUoJ1dlYmtpdCBXaW43IC0gR1BVJyksCiAKLSAgICAn
Y2hyb21pdW0tbGludXgteDg2XzY0JzogX3BhdGhfZnJvbV9uYW1lKCdMaW51eCBUZXN0cyB4NjQn
KSwKLSAgICAnY2hyb21pdW0tbGludXgteDg2JzogX3BhdGhfZnJvbV9uYW1lKCdMaW51eCBUZXN0
cyAoZGJnKSgxKScpLAorICAgICdjaHJvbWl1bS1saW51eC14ODZfNjQnOiBidWlsZGVyX3BhdGhf
ZnJvbV9uYW1lKCdMaW51eCBUZXN0cyB4NjQnKSwKKyAgICAnY2hyb21pdW0tbGludXgteDg2Jzog
YnVpbGRlcl9wYXRoX2Zyb21fbmFtZSgnTGludXggVGVzdHMgKGRiZykoMSknKSwKIAotICAgICdj
aHJvbWl1bS1tYWMtbGVvcGFyZCc6IF9wYXRoX2Zyb21fbmFtZSgnTWFjMTAuNSBUZXN0cyAoMSkn
KSwKLSAgICAnY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkJzogX3BhdGhfZnJvbV9uYW1lKCdNYWMg
MTAuNiBUZXN0cyAoZGJnKSgxKScpLAorICAgICdjaHJvbWl1bS1tYWMtbGVvcGFyZCc6IGJ1aWxk
ZXJfcGF0aF9mcm9tX25hbWUoJ01hYzEwLjUgVGVzdHMgKDEpJyksCisgICAgJ2Nocm9taXVtLW1h
Yy1zbm93bGVvcGFyZCc6IGJ1aWxkZXJfcGF0aF9mcm9tX25hbWUoJ01hYyAxMC42IFRlc3RzIChk
YmcpKDEpJyksCiAKLSAgICAnY2hyb21pdW0td2luLXhwJzogX3BhdGhfZnJvbV9uYW1lKCdYUCBU
ZXN0cyAoZGJnKSg1KScpLAotICAgICdjaHJvbWl1bS13aW4tdmlzdGEnOiBfcGF0aF9mcm9tX25h
bWUoJ1Zpc3RhIFRlc3RzIChkYmcpKDEpJyksCisgICAgJ2Nocm9taXVtLXdpbi14cCc6IGJ1aWxk
ZXJfcGF0aF9mcm9tX25hbWUoJ1hQIFRlc3RzIChkYmcpKDUpJyksCisgICAgJ2Nocm9taXVtLXdp
bi12aXN0YSc6IGJ1aWxkZXJfcGF0aF9mcm9tX25hbWUoJ1Zpc3RhIFRlc3RzIChkYmcpKDEpJyks
CiAgICAgJ2Nocm9taXVtLXdpbi13aW43JzogTm9uZSwKIAogICAgICdnb29nbGUtY2hyb21lLWxp
bnV4MzInOiBOb25lLApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9idWlsZGVyc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2J1aWxkZXJzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA5
MDc2MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYnVpbGRl
cnNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQnVp
bGRlcnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICcoLikgJzogJ19fX18n
LAogICAgICAgICB9CiAgICAgICAgIGZvciBuYW1lLCBleHBlY3RlZCBpbiB0ZXN0cy5pdGVtcygp
OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIGJ1aWxkZXJzLl9wYXRo
X2Zyb21fbmFtZShuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVk
LCBidWlsZGVycy5idWlsZGVyX3BhdGhfZnJvbV9uYW1lKG5hbWUpKQogCiBpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL21vY2t0b29sLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9tb2NrdG9vbC5weQkocmV2aXNpb24gOTA3NjMpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkJKHdvcmtpbmcgY29weSkKQEAgLTc0Nyw2ICs3NDcs
MTEgQEAgY2xhc3MgTW9ja1dvcmtzcGFjZShvYmplY3QpOgogICAgICAgICByZXR1cm4gb2JqZWN0
KCkgICMgU29tZXRoaW5nIHRoYXQgaXMgbm90IE5vbmUKIAogCitjbGFzcyBNb2NrV2ViKG9iamVj
dCk6CisgICAgZGVmIGdldF9iaW5hcnkoc2VsZiwgdXJsKToKKyAgICAgICAgcmV0dXJuICJNT0NL
IFdlYiByZXN1bHQiCisKKwogY2xhc3MgTW9ja1Rvb2wob2JqZWN0KToKIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBsb2dfZXhlY3V0aXZlPUZhbHNlKToKQEAgLTc1NCw2ICs3NTksNyBAQCBjbGFz
cyBNb2NrVG9vbChvYmplY3QpOgogICAgICAgICBzZWxmLmJ1Z3MgPSBNb2NrQnVnemlsbGEoKQog
ICAgICAgICBzZWxmLmJ1aWxkYm90ID0gTW9ja0J1aWxkQm90KCkKICAgICAgICAgc2VsZi5leGVj
dXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9bG9nX2V4ZWN1dGl2ZSkKKyAgICAgICAg
c2VsZi53ZWIgPSBNb2NrV2ViKCkKICAgICAgICAgc2VsZi5maWxlc3lzdGVtID0gTW9ja0ZpbGVT
eXN0ZW0oKQogICAgICAgICBzZWxmLndvcmtzcGFjZSA9IE1vY2tXb3Jrc3BhY2UoKQogICAgICAg
ICBzZWxmLl9pcmMgPSBOb25lCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcmViYXNlbGluZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQkocmV2aXNpb24gOTA3NjMpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsOSBAQCBpbXBvcnQgcmUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB1cmxs
aWIKIAoraW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJscyBhcyBjb25maWdfdXJscwog
ZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90IGltcG9ydCBCdWlsZEJvdAorZnJvbSB3
ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90LmNocm9taXVtYnVpbGRib3QgaW1wb3J0IENocm9t
aXVtQnVpbGRCb3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5sYXlvdXR0ZXN0cmVzdWx0cyBp
bXBvcnQgTGF5b3V0VGVzdFJlc3VsdHMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2Vy
IGltcG9ydCBVc2VyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRl
c3RfZmFpbHVyZXMKQEAgLTQwLDEwICs0MiwxMCBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1h
ciBpbXBvcnQgcGx1cmFsCiBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBv
cnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKIAogCi0jIEZJWE1FOiBJJ20gbm90IHN1cmUg
d2hlcmUgdGhpcyBsb2dpYyBzaG91bGQgZ28gaW4gdGhlIGVuZC4KLSMgRm9yIG5vdyBpdCdzIGhl
cmUsIHVudGlsIHdlIGhhdmUgYSBzZWNvbmQgbmVlZCBmb3IgaXQuCisjIEZJWE1FOiBUaGlzIGxv
Z2ljIHNob3VsZCBiZSBtb3ZlZCB0byBidWlsZGVycy5weS4KIGNsYXNzIEJ1aWxkZXJUb1BvcnQo
b2JqZWN0KToKICAgICBfYnVpbGRlcl9uYW1lX3RvX3BvcnRfbmFtZSA9IHsKKyAgICAgICAgIyBU
aGVzZSBidWlsZGVycyBhcmUgb24gYnVpbGQud2Via2l0Lm9yZy4KICAgICAgICAgciJTbm93TGVv
cGFyZCI6ICJtYWMtc25vd2xlb3BhcmQiLAogICAgICAgICByIkxlb3BhcmQiOiAibWFjLWxlb3Bh
cmQiLAogICAgICAgICByIldpbmRvd3MiOiAid2luIiwKQEAgLTUyLDYgKzU0LDIyIEBAIGNsYXNz
IEJ1aWxkZXJUb1BvcnQob2JqZWN0KToKICAgICAgICAgciJDaHJvbWl1bSBNYWMiOiAiY2hyb21p
dW0tbWFjIiwKICAgICAgICAgciJDaHJvbWl1bSBMaW51eCI6ICJjaHJvbWl1bS1saW51eCIsCiAg
ICAgICAgIHIiQ2hyb21pdW0gV2luIjogImNocm9taXVtLXdpbiIsCisKKyAgICAgICAgIyBUaGVz
ZSBidWlsZGVycyBhcmUgb24gYnVpbGQuY2hyb21pdW0ub3JnLgorICAgICAgICByIldlYmtpdCBX
aW4iOiAiY2hyb21pdW0td2luLXhwIiwKKyAgICAgICAgciJXZWJraXQgVmlzdGEiOiAiY2hyb21p
dW0td2luLXZpc3RhIiwKKyAgICAgICAgciJXZWJraXQgV2luNyI6ICJjaHJvbWl1bS13aW4td2lu
NyIsCisgICAgICAgIHIiV2Via2l0IFdpbiAoZGJnKSgxKSI6ICJjaHJvbWl1bS13aW4td2luNyIs
ICAjIEZJWE1FOiBJcyB0aGlzIGNvcnJlY3Q/CisgICAgICAgIHIiV2Via2l0IFdpbiAoZGJnKSgy
KSI6ICJjaHJvbWl1bS13aW4td2luNyIsICAjIEZJWE1FOiBJcyB0aGlzIGNvcnJlY3Q/CisgICAg
ICAgIHIiV2Via2l0IExpbnV4IjogImNocm9taXVtLWxpbnV4LXg4Nl82NCIsCisgICAgICAgIHIi
V2Via2l0IExpbnV4IDMyIjogImNocm9taXVtLWxpbnV4LXg4NiIsCisgICAgICAgIHIiV2Via2l0
IExpbnV4IChkYmcpKDEpIjogImNocm9taXVtLWxpbnV4LXg4Nl82NCIsCisgICAgICAgIHIiV2Vi
a2l0IExpbnV4IChkYmcpKDIpIjogImNocm9taXVtLWxpbnV4LXg4Nl82NCIsCisgICAgICAgIHIi
V2Via2l0IE1hYzEwXC41IjogImNocm9taXVtLW1hYy1sZW9wYXJkIiwKKyAgICAgICAgciJXZWJr
aXQgTWFjMTBcLjUgKGRiZykoMSkiOiAiY2hyb21pdW0tbWFjLWxlb3BhcmQiLAorICAgICAgICBy
IldlYmtpdCBNYWMxMFwuNSAoZGJnKSgyKSI6ICJjaHJvbWl1bS1tYWMtbGVvcGFyZCIsCisgICAg
ICAgIHIiV2Via2l0IE1hYzEwXC42IjogImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCIsCisgICAg
ICAgIHIiV2Via2l0IE1hYzEwXC42IChkYmcpIjogImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCIs
CiAgICAgfQogCiAgICAgZGVmIF9wb3J0X25hbWVfZm9yX2J1aWxkZXJfbmFtZShzZWxmLCBidWls
ZGVyX25hbWUpOgpAQCAtNjcsNiArODUsNDkgQEAgY2xhc3MgQnVpbGRlclRvUG9ydChvYmplY3Qp
OgogICAgICAgICByZXR1cm4gcG9ydAogCiAKK2NsYXNzIFJlYmFzZWxpbmVUZXN0KEFic3RyYWN0
RGVjbGFyYXRpdmVDb21tYW5kKToKKyAgICBuYW1lID0gInJlYmFzZWxpbmUtdGVzdCIKKyAgICBo
ZWxwX3RleHQgPSAiUmViYXNlbGluZSBhIHNpbmdsZSB0ZXN0IGZyb20gYSBidWlsZGJvdC4gIChD
dXJyZW50bHkgd29ya3Mgb25seSB3aXRoIGJ1aWxkLmNocm9taXVtLm9yZyBidWlsZGJvdHMuKSIK
KyAgICBhcmd1bWVudF9uYW1lcyA9ICJCVUlMREVSX05BTUUgVEVTVF9OQU1FIFNVRkZJWCIKKwor
ICAgIGRlZiBfcmVzdWx0c191cmwoc2VsZiwgYnVpbGRlcl9uYW1lKToKKyAgICAgICAgIyBGSVhN
RTogR2VuZXJhbGl6ZSB0aGlzIGNvbW1hbmQgdG8gd29yayB3aXRoIG5vbi1idWlsZC5jaHJvbWl1
bS5vcmcgYnVpbGRlcnMuCisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCByZWFsbHkgZ2V0IHRo
ZSBidWlsZGJvdCBmcm9tIHRoZSB0b29sIQorICAgICAgICBidWlsZGVyID0gQ2hyb21pdW1CdWls
ZEJvdCgpLmJ1aWxkZXJfd2l0aF9uYW1lKGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgcmV0dXJuIGJ1
aWxkZXIuYWNjdW11bGF0ZWRfcmVzdWx0c191cmwoKQorCisgICAgZGVmIF9iYXNlbGluZV9kaXJl
Y3Rvcnkoc2VsZiwgYnVpbGRlcl9uYW1lKToKKyAgICAgICAgcG9ydCA9IEJ1aWxkZXJUb1BvcnQo
KS5wb3J0X2Zvcl9idWlsZGVyKGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgcmV0dXJuIHBvcnQuYmFz
ZWxpbmVfcGF0aCgpCisKKyAgICBkZWYgX3NhdmVfYmFzZWxpbmUoc2VsZiwgZGF0YSwgdGFyZ2V0
X2Jhc2VsaW5lKToKKyAgICAgICAgc2VsZi5fdG9vbC5maWxlc3lzdGVtLndyaXRlX2JpbmFyeV9m
aWxlKHRhcmdldF9iYXNlbGluZSwgZGF0YSkKKyAgICAgICAgaWYgbm90IHNlbGYuX3Rvb2wuc2Nt
KCkuZXhpc3RzKHRhcmdldF9iYXNlbGluZSk6CisgICAgICAgICAgICBzZWxmLl90b29sLnNjbSgp
LmFkZCh0YXJnZXRfYmFzZWxpbmUpCisKKyAgICBkZWYgX3Rlc3Rfcm9vdChzZWxmLCB0ZXN0X25h
bWUpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dCh0ZXN0X25hbWUpWzBdCisKKyAg
ICBkZWYgX2ZpbGVfbmFtZV9mb3JfYWN0dWFsX3Jlc3VsdChzZWxmLCB0ZXN0X25hbWUsIHN1ZmZp
eCk6CisgICAgICAgIHJldHVybiAiJXMtYWN0dWFsLiVzIiAlIChzZWxmLl90ZXN0X3Jvb3QodGVz
dF9uYW1lKSwgc3VmZml4KQorCisgICAgZGVmIF9maWxlX25hbWVfZm9yX2V4cGVjdGVkX3Jlc3Vs
dChzZWxmLCB0ZXN0X25hbWUsIHN1ZmZpeCk6CisgICAgICAgIHJldHVybiAiJXMtZXhwZWN0ZWQu
JXMiICUgKHNlbGYuX3Rlc3Rfcm9vdCh0ZXN0X25hbWUpLCBzdWZmaXgpCisKKyAgICBkZWYgX3Jl
YmFzZWxpbmVfdGVzdChzZWxmLCBidWlsZGVyX25hbWUsIHRlc3RfbmFtZSwgc3VmZml4KToKKyAg
ICAgICAgcmVzdWx0c191cmwgPSBzZWxmLl9yZXN1bHRzX3VybChidWlsZGVyX25hbWUpCisgICAg
ICAgIGJhc2VsaW5lX2RpcmVjdG9yeSA9IHNlbGYuX2Jhc2VsaW5lX2RpcmVjdG9yeShidWlsZGVy
X25hbWUpCisKKyAgICAgICAgc291cmNlX2Jhc2VsaW5lID0gIiVzLyVzIiAlIChyZXN1bHRzX3Vy
bCwgc2VsZi5fZmlsZV9uYW1lX2Zvcl9hY3R1YWxfcmVzdWx0KHRlc3RfbmFtZSwgc3VmZml4KSkK
KyAgICAgICAgdGFyZ2V0X2Jhc2VsaW5lID0gb3MucGF0aC5qb2luKGJhc2VsaW5lX2RpcmVjdG9y
eSwgc2VsZi5fZmlsZV9uYW1lX2Zvcl9leHBlY3RlZF9yZXN1bHQodGVzdF9uYW1lLCBzdWZmaXgp
KQorCisgICAgICAgIHByaW50ICJSZXRyaWV2aW5nICVzIC4uLiIgJSBzb3VyY2VfYmFzZWxpbmUK
KyAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZShzZWxmLl90b29sLndlYi5nZXRfYmluYXJ5KHNv
dXJjZV9iYXNlbGluZSksIHRhcmdldF9iYXNlbGluZSkKKworICAgIGRlZiBleGVjdXRlKHNlbGYs
IG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgorICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3Rlc3QoYXJn
c1swXSwgYXJnc1sxXSwgYXJnc1syXSkKKworCiBjbGFzcyBSZWJhc2VsaW5lKEFic3RyYWN0RGVj
bGFyYXRpdmVDb21tYW5kKToKICAgICBuYW1lID0gInJlYmFzZWxpbmUiCiAgICAgaGVscF90ZXh0
ID0gIlJlcGxhY2VzIGxvY2FsIGV4cGVjdGVkLnR4dCBmaWxlcyB3aXRoIG5ldyByZXN1bHRzIGZy
b20gYnVpbGQgYm90cyIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA5MDc2
MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTEgQEAgaW1wb3J0IHVuaXR0
ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBP
dXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawot
ZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnJlYmFzZWxpbmUgaW1wb3J0IEJ1aWxkZXJUb1Bv
cnQsIFJlYmFzZWxpbmUKK2Zyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5yZWJhc2VsaW5lIGlt
cG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sCiAKIAot
Y2xhc3MgUmViYXNlbGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdFJlYmFz
ZWxpbmUodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgVGhpcyBqdXN0IG1ha2VzIHN1cmUgdGhl
IGNvZGUgcnVucyB3aXRob3V0IGV4Y2VwdGlvbnMuCiAgICAgZGVmIHRlc3RfdGVzdHNfdG9fdXBk
YXRlKHNlbGYpOgogICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZSgpCkBAIC00Myw2ICs0Mywx
NSBAQCBjbGFzcyBSZWJhc2VsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIE91
dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl90ZXN0c190b191cGRh
dGUsIFtidWlsZF0pCiAKIAorY2xhc3MgVGVzdFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICBkZWYgdGVzdF90ZXN0c190b191cGRhdGUoc2VsZik6CisgICAgICAgIGNvbW1h
bmQgPSBSZWJhc2VsaW5lVGVzdCgpCisgICAgICAgIGNvbW1hbmQuYmluZF90b190b29sKE1vY2tU
b29sKCkpCisgICAgICAgIGJ1aWxkID0gTW9jaygpCisgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9
ICJSZXRyaWV2aW5nIGh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRf
dGVzdF9yZXN1bHRzL1dlYmtpdF9MaW51eC9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQgLi4uXG4iCisgICAgICAgIE91dHB1dENh
cHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QsIFsi
V2Via2l0IExpbnV4IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgInR4dCJdLCBl
eHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0KQorCisKIGNsYXNzIEJ1aWxkZXJUb1BvcnRU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9wb3J0X2Zvcl9idWlsZGVyKHNl
bGYpOgogICAgICAgICBjb252ZXJ0ZXIgPSBCdWlsZGVyVG9Qb3J0KCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>