<?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>53625</bug_id>
          
          <creation_ts>2011-02-02 13:43:47 -0800</creation_ts>
          <short_desc>svn-apply and/or patch(1) has trouble applying patches that makes changes to files with Windows line endings</short_desc>
          <delta_ts>2011-04-12 10:18:54 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>53607</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>aroben</cc>
    
    <cc>carol</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>levin</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>344200</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-02-02 13:43:47 -0800</bug_when>
    <thetext>As observed in bug #53348 and #53607, svn-apply and/or patch(1) has trouble applying patches that make changes to files with Windows line endings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344204</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-02-02 13:45:38 -0800</bug_when>
    <thetext>Also observed in bug #53573.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344214</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-02-02 13:55:48 -0800</bug_when>
    <thetext>I did not encounter any issues when using svn-apply to apply the patch for bug #53348, and bug #53607 (attachment 80936 - https://bugs.webkit.org/attachment.cgi?id=80936).

I am using Mac OS 10.6.6 with patch(1) version 2.5.8.

I am curious as to the whether of patch(1) being used on the various EWS bots.

CC&apos;ing Gustavo Silva with regards to the version patch(1) on the GTK EWS bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344219</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-02-02 13:57:23 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I am curious as to the whether of patch(1) being used on the various EWS bots.
&gt; 
Wow, that came out terribly mangled.

I meant to write:

I am curious as to what version of patch(1) is installed on the various EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344433</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-02-02 17:07:53 -0800</bug_when>
    <thetext>On IRC today (02/02/11), Gustavo Silva wrote:
[14:17] &lt;kov&gt; dydx, hey, 2.6 is the patch I have on the EWS (it&apos;s got whatever is in debian unstable usually)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353617</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-02-18 09:09:38 -0800</bug_when>
    <thetext>On Qt EWS now we use patch 2.5.9. 
After upgrading to Squeeze we will use 2.6. (in 2-3 weeks)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353618</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-18 09:14:59 -0800</bug_when>
    <thetext>It seems the issue, at least in the case of the GTK+ EWS, is that some files are checked out with CRLF line endings and some with newlines. To ensure proper patch application, I believe that Unix machines need to be using newline line-endings for every file. There are a few knobs you can turn for git checkouts. Gustavo is looking into what the appropriate knob is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353636</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-18 09:49:30 -0800</bug_when>
    <thetext>I&apos;m happy to set up any and all knobs on the commit bots.  Especially if they&apos;re documented in the WebKit Git instructions (on the wiki).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353684</commentid>
    <comment_count>8</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-02-18 11:02:22 -0800</bug_when>
    <thetext>I am seeing issues on EWS with patching WebCore.vcproj on the mac based bots and GTK+.
Patching with non-matching line endings is a pain.
The way I addressed the issue in the EWS like systems that I built was partly by rules, partly by software:
The rules are:
1. All text files in the system would be required to have the svn:eol-style property set to native.
2. All files that appear as text files, but for whatever reason cannot have the svn:eol-style property set to native should have svn:mime-type property set to something like application/octet-stream.

The software would use flip or a similar tool to convert the line-endings in the patch to the configuration native to the architecture the buildbot runs in before application.

This should not be that hard to implement. I am volunteering to help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367043</commentid>
    <comment_count>9</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-03-14 10:23:39 -0700</bug_when>
    <thetext>I discussed my theory about this on IRC once, and just told dbates about it in an email reply, but thought I&apos;d share it here. There is a .gitattributes file in our tree. It forces CRLF on some file types, including *.vcproj files:

$ grep crlf .gitattributes | wc -l
226
$ grep vcproj .gitattributes 
*.vcproj eol=crlf
$ 

Older checkouts (from before those rules being added) do not seem to suffer from the problem (i.e., my own checkout that runs on a system very much like the EWS bot works, as does Martin&apos;s). I&apos;m also happy to apply any knobs, but reading docs and trying (not too much since my time&apos;s been quite limited) I didn&apos;t find anything that would guarantee the effect we want. Also, since it&apos;s not been mentioned explicitly in this bug yet, notice that the commit-queue suffers from the same issue - quite likely because it&apos;s got a new checkout itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367108</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-03-14 12:02:40 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I discussed my theory about this on IRC once, and just told dbates about it in an email reply, but thought I&apos;d share it here. There is a .gitattributes file in our tree. It forces CRLF on some file types, including *.vcproj files:
&gt; 
&gt; $ grep crlf .gitattributes | wc -l
&gt; 226
&gt; $ grep vcproj .gitattributes 
&gt; *.vcproj eol=crlf
&gt; $ 
&gt; 

Older versions of Git (e.g. 1.7.0.3) do not support the eol attribute. Instead, the line endings for checked out files are influenced by various factors, including the value of core.autocrlf.

From a brief check, our .vcproj files have svn:eol-style native. We should look to have both Git and SVN match. Additionally, we should either consider requiring a minimum version of Git (that support the eol attribute) and/or  teach svn-apply/svn-unapply how to compensate for older Git versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382853</commentid>
    <comment_count>11</comment_count>
      <attachid>88946</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-09 22:29:23 -0700</bug_when>
    <thetext>Created attachment 88946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382854</commentid>
    <comment_count>12</comment_count>
      <attachid>88946</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-09 22:40:25 -0700</bug_when>
    <thetext>Comment on attachment 88946
Patch

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

That&apos;s horrible, but also amazing.

&gt; Tools/Scripts/svn-apply:335
&gt; +            if (basename($fullPath) =~ &quot;\.vcproj\$&quot; || basename($fullPath) =~ &quot;\.vsprops\$&quot;) {

I think there&apos;s some sneaky way of writing regular expressions in perl that avoids the need to \ the $.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382855</commentid>
    <comment_count>13</comment_count>
      <attachid>88946</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-09 23:00:43 -0700</bug_when>
    <thetext>Comment on attachment 88946
Patch

Committed as http://trac.webkit.org/changeset/83394.

Also I found the way of not escaping the $ use // instead of &quot;&quot; (I don&apos;t speak perl colloquially.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382856</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-09 23:07:59 -0700</bug_when>
    <thetext>I know this patch has already been reviewed and landed in &lt;http://trac.webkit.org/changeset/83394&gt;.

I wanted to add some remarks. The patch is incorrect and will break svn-apply/unapply for all people with an SVN checkout on a Unix file system (this includes SVN under a default installation of Cygwin). This is because the Visual Studio project files have been checked into the repository with Unix line endings and have svn:eol-style: native. So, these files will have Unix new lines in an SVN checkout on a Unix file system.

Note, this patch will fix the issue for people who use Git version greater than 1.7.0.3. Since the commit/EWS bots seem to using this version of Git, this patch will resolve the issue. At the very least, there should be a FIXME comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382858</commentid>
    <comment_count>15</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-09 23:18:06 -0700</bug_when>
    <thetext>Reverted r83394 for reason:

Patch

Committed r83395: &lt;http://trac.webkit.org/changeset/83395&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382859</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-09 23:21:49 -0700</bug_when>
    <thetext>It was foolish of me to review this patch without waiting for dbates.  I just got so excited about the prospect of fixing this bug.  Sorry Dan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382860</commentid>
    <comment_count>17</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-09 23:22:21 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt;  The patch is incorrect and will break svn-apply/unapply for all people with an SVN checkout on a Unix file system (this includes SVN under a default installation of Cygwin). ...

Thanks for the info. Rolled out. http://trac.webkit.org/changeset/83395

I suppose patch could be more sophisticated to look at the very first line ending of the file and use that to decided if we are dealing with DOS endings or not.

Would that work?

I really want to get this fixed as I hear about people hitting this often enough (and then I get pings to help land patches....)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382862</commentid>
    <comment_count>18</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-09 23:30:46 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #14)
&gt; &gt;  The patch is incorrect and will break svn-apply/unapply for all people with an SVN checkout on a Unix file system (this includes SVN under a default installation of Cygwin). ...
&gt; 
&gt; Thanks for the info. Rolled out. http://trac.webkit.org/changeset/83395
&gt; 
&gt; I suppose patch could be more sophisticated to look at the very first line ending of the file and use that to decided if we are dealing with DOS endings or not.

I take it you mean svn-apply not patch. Yes, this is the approach I&apos;m taking.

&gt; 
&gt; Would that work?

I believe it will work.

&gt; 
&gt; I really want to get this fixed as I hear about people hitting this often enough (and then I get pings to help land patches....)

I agree. For completeness, I am currently working on a fix for this issue and hope to post it tomorrow (04/10) / Monday. That being said, I would prefer we fix this as soon as possible. So, feel free to post an updated patch or a temporary workaround that we can use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382863</commentid>
    <comment_count>19</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-09 23:33:35 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; I take it you mean svn-apply not patch. Yes, this is the approach I&apos;m taking.
s/patch/my patch/ for my comment :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382866</commentid>
    <comment_count>20</comment_count>
      <attachid>88947</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-09 23:44:29 -0700</bug_when>
    <thetext>Created attachment 88947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382867</commentid>
    <comment_count>21</comment_count>
      <attachid>88947</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-10 00:03:03 -0700</bug_when>
    <thetext>Comment on attachment 88947
Patch

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

This patch is OK. That being said, we will also need to update svn-unapply and, if possible, add unit tests for this change. Towards this, we should look to extract the file EOL logic into a function in VCSUtils.pm so that it can be shared by both svn-apply/unapply.

I suggest that we add a FIXME comment above your change to indicate that we should add similar functionality to svn-unapply and/or extract some of this code and move it to VCSUtils.pm.

&gt; Tools/Scripts/svn-apply:339
&gt; +                # Think of it as escaping. Patch will convert \r\n to \n, so \r\r\n becomes \r\n.

Nit: Patch =&gt; Patch(1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382868</commentid>
    <comment_count>22</comment_count>
      <attachid>88947</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-10 00:13:19 -0700</bug_when>
    <thetext>Comment on attachment 88947
Patch

After discussing this more with Daniel, this patch would work ok, but has issues that should be addressed and he has a patch that would be more comprehensive (that should come on Monday and no one will probably hit this much during the weekend, so we&apos;ll ditch this version).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383071</commentid>
    <comment_count>23</comment_count>
      <attachid>88978</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-11 02:13:46 -0700</bug_when>
    <thetext>Created attachment 88978
Work-in-progress patch

Work-in-progress patch. Needs change log and some more unit tests. Will continue working on it today (04/11).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383381</commentid>
    <comment_count>24</comment_count>
      <attachid>89055</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-11 12:40:13 -0700</bug_when>
    <thetext>Created attachment 89055
Patch and unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383388</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-11 12:45:20 -0700</bug_when>
    <thetext>Attachment 89055 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/VCSUtils...&quot; exit_code: 1

Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:66:  Line contains tab character.  [whitespace/tab] [5]
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:67:  Line contains tab character.  [whitespace/tab] [5]
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:74:  Line contains tab character.  [whitespace/tab] [5]
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:75:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383395</commentid>
    <comment_count>26</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-11 12:52:37 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; [...]
&gt; Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:66:  Line contains tab character.  [whitespace/tab] [5]
&gt; Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:67:  Line contains tab character.  [whitespace/tab] [5]
&gt; Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:74:  Line contains tab character.  [whitespace/tab] [5]
&gt; Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:75:  Line contains tab character.  [whitespace/tab] [5]
&gt; Total errors found: 4 in 5 files

The presence of these tab characters on these lines is expected since these lines are part of sample diff headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383408</commentid>
    <comment_count>27</comment_count>
      <attachid>89055</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-11 13:04:12 -0700</bug_when>
    <thetext>Comment on attachment 89055
Patch and unit tests

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

&gt; Tools/Scripts/VCSUtils.pm:454
&gt; +sub parseEOL($)

Maybe parseFirstEOL?

&gt; Tools/Scripts/VCSUtils.pm:872
&gt; +sub parseDiff($$;$)

No clue what your fancy semi-colon does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383461</commentid>
    <comment_count>28</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-11 13:46:05 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 89055 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89055&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/VCSUtils.pm:454
&gt; &gt; +sub parseEOL($)
&gt; 
&gt; Maybe parseFirstEOL?

Will change.

&gt; 
&gt; &gt; Tools/Scripts/VCSUtils.pm:872
&gt; &gt; +sub parseDiff($$;$)
&gt; 
&gt; No clue what your fancy semi-colon does.

As per &lt;http://perldoc.perl.org/perlsub.html#Prototypes&gt;: &quot;A semicolon (;) separates mandatory arguments from optional arguments.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383487</commentid>
    <comment_count>29</comment_count>
      <attachid>89081</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-11 13:57:51 -0700</bug_when>
    <thetext>Created attachment 89081
Patch and unit tests

Renamed parseEOL() to parseFirstEOL() as suggested by Eric Seidel.

Also, renamed fileEOL() to firstEOLInFile() in VCSUtils.pm and parseEOLWithString() to firstEOLInString() in parseEOL.pl so as to be more descriptive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383491</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-11 14:00:42 -0700</bug_when>
    <thetext>Attachment 89081 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/VCSUtils...&quot; exit_code: 1

Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:66:  Line contains tab character.  [whitespace/tab] [5]
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:67:  Line contains tab character.  [whitespace/tab] [5]
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:74:  Line contains tab character.  [whitespace/tab] [5]
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:75:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383495</commentid>
    <comment_count>31</comment_count>
      <attachid>89082</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-11 14:02:52 -0700</bug_when>
    <thetext>Created attachment 89082
Patch and unit tests

Renamed unit test file parseEOL.pl to parseFirstEOL.pl to reflect the name change of the function it&apos;s testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383499</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-11 14:06:05 -0700</bug_when>
    <thetext>Attachment 89082 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/VCSUtils...&quot; exit_code: 1

Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:66:  Line contains tab character.  [whitespace/tab] [5]
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:67:  Line contains tab character.  [whitespace/tab] [5]
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:74:  Line contains tab character.  [whitespace/tab] [5]
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:75:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383569</commentid>
    <comment_count>33</comment_count>
      <attachid>89082</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-11 15:02:56 -0700</bug_when>
    <thetext>Comment on attachment 89082
Patch and unit tests

I&apos;m willing to rubber-stamp this.  If you need a more indepth review, you&apos;ll need to consult with Darin or Adam Roben or someone who speaks perl better than I.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384104</commentid>
    <comment_count>34</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-12 10:18:54 -0700</bug_when>
    <thetext>Committed r83603: &lt;http://trac.webkit.org/changeset/83603&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88946</attachid>
            <date>2011-04-09 22:29:23 -0700</date>
            <delta_ts>2011-04-09 23:44:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53625-20110409222921.patch</filename>
            <type>text/plain</type>
            <size>1638</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMzOTMKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMmY4NzczOTkzM2JkMmI1NjgxMjE4NzA5NTI4ODlkZTI0
ZThmM2I0Li4yN2M5NjFjZGNlYjk4ZTk0M2U5MzFlNmYxZTI5MThiMWY0YWQ2MDNjIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTEtMDQtMDkgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHN2bi1hcHBseSBhbmQv
b3IgcGF0Y2goMSkgaGFzIHRyb3VibGUgYXBwbHlpbmcgcGF0Y2hlcyB0aGF0IG1ha2VzIGNoYW5n
ZXMgdG8gZmlsZXMgd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM2MjUKKworICAgICAgICAqIFNjcmlwdHMv
c3ZuLWFwcGx5OiBFbnN1cmUgdGhhdCB0aGUgcG9ydGlvbnMgb2YgcGF0Y2hlcworICAgICAgICB3
aGljaCBhcmUgZm9yIHZjcHJvai92c3Byb3BzIGZpbGVzIGhhcyBET1MgbGluZSBlbmRpbmdzLgor
CiAyMDExLTA0LTA5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3N2
bi1hcHBseSBiL1Rvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CmluZGV4IDBjMmU1ZTUxMDZkNWQyZjAy
MzdlMmJlYWUxOTNmYmE2MzRmMzg4MWIuLjQ4ZDc4NjE2MzNmOWU4OGU0YmU1N2Y5NWIzYjA2NGYy
MDY0ZTRkMTEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvc3ZuLWFwcGx5CkBAIC0zMzEsNiArMzMxLDEyIEBAIHN1YiBwYXRjaCgkKQogICAg
ICAgICAgICAgYXBwbHlQYXRjaCgkbmV3UGF0Y2gsICRmdWxsUGF0aCwgWyItLWZ1eno9MyJdKTsK
ICAgICAgICAgICAgIHVubGluaygiJHtmdWxsUGF0aH0ub3JpZyIpIGlmICghICRjaGFuZ2VMb2dE
b3RPcmlnRXhpc3RlZCk7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAjIEVuc3VyZSB0
aGF0IHBhdGNoZXMgZm9yIGZpbGVzIHdpdGggRE9TIGxpbmUgZW5kaW5ncyBhbHNvIGhhdmUgRE9T
IGxpbmUgZW5kaW5ncy4KKyAgICAgICAgICAgIGlmIChiYXNlbmFtZSgkZnVsbFBhdGgpID1+ICJc
LnZjcHJvalwkIiB8fCBiYXNlbmFtZSgkZnVsbFBhdGgpID1+ICJcLnZzcHJvcHNcJCIpIHsKKyAg
ICAgICAgICAgICAgICAjIENvbnZlcnQgYWxsIGluc3RhbmNlcyBvZiBuZXdsaW5lcyB0byBcclxy
XG4uIFdoeSBhcmUgdGhlcmUgdHdvIFxyJ3M/CisgICAgICAgICAgICAgICAgIyBUaGluayBvZiBp
dCBhcyBlc2NhcGluZy4gUGF0Y2ggd2lsbCBjb252ZXJ0IFxyXG4gdG8gXG4sIHNvIFxyXHJcbiBi
ZWNvbWVzIFxyXG4uCisgICAgICAgICAgICAgICAgJHBhdGNoID1+IHMvXHJ7MCwyfVxuL1xyXHJc
bi9nOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYXBwbHlQYXRjaCgkcGF0Y2gsICRmdWxs
UGF0aCkgaWYgJHBhdGNoOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88947</attachid>
            <date>2011-04-09 23:44:29 -0700</date>
            <delta_ts>2011-04-11 02:13:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53625-20110409234428.patch</filename>
            <type>text/plain</type>
            <size>1835</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMzOTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4YTg2MDA2ZDY2N2I0ZGJiMDgzNWE0NThkOThhMjBiMzc1
ZjM1YzU5Li5hZmNhZmE0ZGYxOTczYWQ5MDgxZjJjN2NjNjZmNmIxYTU3MzZmZWM2IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUg
QEAKIDIwMTEtMDQtMDkgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHN2bi1hcHBseSBhbmQv
b3IgcGF0Y2goMSkgaGFzIHRyb3VibGUgYXBwbHlpbmcgcGF0Y2hlcyB0aGF0IG1ha2VzIGNoYW5n
ZXMgdG8gZmlsZXMgd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM2MjUKKworICAgICAgICAqIFNjcmlwdHMv
c3ZuLWFwcGx5OiBFbnN1cmUgdGhhdCB0aGUgcG9ydGlvbnMgb2YgcGF0Y2hlcworICAgICAgICB3
aGljaCBhcmUgZm9yIGZpbGVzIHdpdGggRE9TIGxpbmUgZW5kaW5ncyBhbHNvIGhhdmUgRE9TIGxp
bmUgZW5kaW5ncy4KKworMjAxMS0wNC0wOSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5v
cmc+CisKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgzMzk0LgogICAgICAgICBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC84MzM5NAogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM2MjUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvc3ZuLWFwcGx5IGIvVG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkKaW5kZXggMGMyZTVlNTEw
NmQ1ZDJmMDIzN2UyYmVhZTE5M2ZiYTYzNGYzODgxYi4uZmNkMzAwMjQ2ZjIyNjJiNGNiMGJjNDE2
MjcxNjVlMzA4MjUwZGFhZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkKKysr
IGIvVG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkKQEAgLTMzMSw2ICszMzEsMTYgQEAgc3ViIHBhdGNo
KCQpCiAgICAgICAgICAgICBhcHBseVBhdGNoKCRuZXdQYXRjaCwgJGZ1bGxQYXRoLCBbIi0tZnV6
ej0zIl0pOwogICAgICAgICAgICAgdW5saW5rKCIke2Z1bGxQYXRofS5vcmlnIikgaWYgKCEgJGNo
YW5nZUxvZ0RvdE9yaWdFeGlzdGVkKTsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICMg
RW5zdXJlIHRoYXQgcGF0Y2hlcyBmb3IgZmlsZXMgd2l0aCBET1MgbGluZSBlbmRpbmdzIGFsc28g
aGF2ZSBET1MgbGluZSBlbmRpbmdzLgorICAgICAgICAgICAgb3BlbihGSUxFLCAkZnVsbFBhdGgp
IG9yIGRpZSAiQ2FuJ3Qgb3BlbiAkZnVsbFBhdGgiOworICAgICAgICAgICAgbXkgJGxpbmUgPSA8
RklMRT47CisgICAgICAgICAgICBpZiAoJGxpbmUgJiYgJGxpbmUgPX4gL1xyXG4kLykgeworICAg
ICAgICAgICAgICAgICMgQ29udmVydCBhbGwgaW5zdGFuY2VzIG9mIG5ld2xpbmVzIHRvIFxyXHJc
bi4gV2h5IGFyZSB0aGVyZSB0d28gXHIncz8KKyAgICAgICAgICAgICAgICAjIFRoaW5rIG9mIGl0
IGFzIGVzY2FwaW5nLiBQYXRjaCB3aWxsIGNvbnZlcnQgXHJcbiB0byBcbiwgc28gXHJcclxuIGJl
Y29tZXMgXHJcbi4KKyAgICAgICAgICAgICAgICAkcGF0Y2ggPX4gcy9ccnswLDJ9XG4vXHJcclxu
L2c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbG9zZSBGSUxFOworCiAgICAgICAgICAg
ICBhcHBseVBhdGNoKCRwYXRjaCwgJGZ1bGxQYXRoKSBpZiAkcGF0Y2g7CiAgICAgICAgIH0KICAg
ICB9IGVsc2Ugewo=
</data>
<flag name="review"
          id="81555"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88978</attachid>
            <date>2011-04-11 02:13:46 -0700</date>
            <delta_ts>2011-04-11 12:40:13 -0700</delta_ts>
            <desc>Work-in-progress patch</desc>
            <filename>bug53625_041111.diff</filename>
            <type>text/plain</type>
            <size>15649</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9WQ1NVdGlscy5wbQkocmV2aXNpb24gODMzODEpCisrKyBUb29scy9TY3JpcHRzL1ZDU1V0
aWxzLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogIyBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDEwIENocmlzIEplcmRvbmVrIChjaHJpcy5qZXJkb25la0BnbWFpbC5j
b20pCi0jIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02OCw2ICs2OCw3IEBACiAgICAgICAgICZtYWtlRmlsZVBhdGhSZWxhdGl2
ZQogICAgICAgICAmbWVyZ2VDaGFuZ2VMb2dzCiAgICAgICAgICZub3JtYWxpemVQYXRoCisgICAg
ICAgICZwYXJzZUVPTAogICAgICAgICAmcGFyc2VQYXRjaAogICAgICAgICAmcGF0aFJlbGF0aXZl
VG9TVk5SZXBvc2l0b3J5Um9vdEZvclBhdGgKICAgICAgICAgJnByZXBhcmVQYXJzZWRQYXRjaApA
QCAtOTcsNiArOTgsNyBAQAogIyBQcm9qZWN0IHRpbWUgem9uZSBmb3IgQ3VwZXJ0aW5vLCBDQSwg
VVMKIG15ICRjaGFuZ2VMb2dUaW1lWm9uZSA9ICJQU1Q4UERUIjsKIAorbXkgJGNodW5rUmFuZ2VS
ZWdFeCA9IHFyI15cQFxAIC0oXGQrKSwoXGQrKSBcK1xkKywoXGQrKSBcQFxAJCM7ICMgZS5nLiBA
QCAtMiw2ICsyLDE4IEBACiBteSAkZ2l0RGlmZlN0YXJ0UmVnRXggPSBxciNeZGlmZiAtLWdpdCAo
XHcvKT8oLispIChcdy8pPyhbXlxyXG5dKykjOwogbXkgJHN2bkRpZmZTdGFydFJlZ0V4ID0gcXIj
XkluZGV4OiAoW15cclxuXSspIzsKIG15ICRzdm5Qcm9wZXJ0aWVzU3RhcnRSZWdFeCA9IHFyI15Q
cm9wZXJ0eSBjaGFuZ2VzIG9uOiAoW15cclxuXSspIzsgIyAkMSBpcyBub3JtYWxseSB0aGUgc2Ft
ZSBhcyB0aGUgaW5kZXggcGF0aC4KQEAgLTQ0OSw2ICs0NTEsNDAgQEAKICAgICByZXR1cm4gJGxp
bmU7CiB9CiAKK3N1YiBwYXJzZUVPTCgkKQoreworICAgIG15ICgkZmlsZUhhbmRsZSkgPSBAXzsK
KworICAgICMgTWFrZSBpbnB1dCByZWNvcmQgc2VwYXJhdG9yIHRoZSBuZXctbGluZSBjaGFyYWN0
ZXIgdG8gc2ltcGxpZnkgcmVnZXggbWF0Y2hpbmcgYmVsb3cuCisgICAgbXkgJHNhdmVkSW5wdXRS
ZWNvcmRTZXBhcmF0b3IgPSAkSU5QVVRfUkVDT1JEX1NFUEFSQVRPUjsKKyAgICAkSU5QVVRfUkVD
T1JEX1NFUEFSQVRPUiA9ICJcbiI7CisgICAgbXkgJGZpcnN0TGluZSAgPSA8JGZpbGVIYW5kbGU+
OworICAgICRJTlBVVF9SRUNPUkRfU0VQQVJBVE9SID0gJHNhdmVkSW5wdXRSZWNvcmRTZXBhcmF0
b3I7CisKKyAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQoJGZpcnN0TGluZSk7CisKKyAgICBteSAk
ZW9sOworICAgIGlmICgkZmlyc3RMaW5lID1+IC9cclxuLykgeworICAgICAgICAkZW9sID0gIlxy
XG4iOworICAgIH0gZWxzaWYgKCRmaXJzdExpbmUgPX4gL1xyLykgeworICAgICAgICAkZW9sID0g
IlxyIjsKKyAgICB9IGVsc2lmICgkZmlyc3RMaW5lID1+IC9cbi8pIHsKKyAgICAgICAgJGVvbCA9
ICJcbiI7CisgICAgfQorICAgIHJldHVybiAkZW9sOworfQorCitzdWIgZmlsZUVPTCgkKQorewor
ICAgIG15ICgkZmlsZSkgPSBAXzsKKyAgICBteSAkZW9sOworICAgIGlmIChvcGVuKEZJTEUsICRm
aWxlKSkgeworICAgICAgICAkZW9sID0gcGFyc2VFT0woKkZJTEUpOworICAgICAgICBjbG9zZShG
SUxFKTsKKyAgICB9CisgICAgcmV0dXJuICRlb2w7Cit9CisKIHN1YiBzdm5TdGF0dXMoJCkKIHsK
ICAgICBteSAoJGZ1bGxQYXRoKSA9IEBfOwpAQCAtODIyLDIzICs4NTgsMzAgQEAKICMgICAkZmls
ZUhhbmRsZTogYSBmaWxlIGhhbmRsZSBhZHZhbmNlZCB0byB0aGUgZmlyc3QgbGluZSBvZiB0aGUg
bmV4dAogIyAgICAgICAgICAgICAgICBoZWFkZXIgYmxvY2suIExlYWRpbmcganVuayBpcyBva2F5
LgogIyAgICRsaW5lOiB0aGUgbGluZSBsYXN0IHJlYWQgZnJvbSAkZmlsZUhhbmRsZS4KKyMgICAk
b3B0aW9uc0hhc2hSZWY6IGEgaGFzaCByZWZlcmVuY2UgcmVwcmVzZW50aW5nIG9wdGlvbmFsIG9w
dGlvbnMgdG8gdXNlCisjICAgICAgICAgICAgICAgICAgICB3aGVuIHByb2Nlc3NpbmcgYSBkaWZm
LgorIyAgICAgc2hvdWxkTm90VXNlSW5kZXhQYXRoRU9MOiB3aGV0aGVyIHRvIHVzZSB0aGUgbGlu
ZSBlbmRpbmdzIGluIHRoZSBkaWZmIGluc3RlYWQKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5zdGVhZCBvZiB0aGUgbGluZSBlbmRpbmdzIGluIHRoZSB0YXJnZXQgZmlsZTsgdGhl
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIG9mIDEgaWYgc3ZuQ29udmVy
dGVkVGV4dCBzaG91bGQgdXNlIHRoZSBzYW1lCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmUgZW5kaW5ncyBhcyB0aGUgdGFyZ2V0IGZpbGUuCiAjCiAjIFJldHVybnMgKCRkaWZm
SGFzaFJlZnMsICRsYXN0UmVhZExpbmUpOgogIyAgICRkaWZmSGFzaFJlZnM6IEEgcmVmZXJlbmNl
IHRvIGFuIGFycmF5IG9mIHJlZmVyZW5jZXMgdG8gJWRpZmZIYXNoIGhhc2hlcy4KICMgICAgICAg
ICAgICAgICAgICBTZWUgdGhlICVkaWZmSGFzaCBkb2N1bWVudGF0aW9uIGFib3ZlLgogIyAgICRs
YXN0UmVhZExpbmU6IHRoZSBsaW5lIGxhc3QgcmVhZCBmcm9tICRmaWxlSGFuZGxlCi1zdWIgcGFy
c2VEaWZmKCQkKQorc3ViIHBhcnNlRGlmZigkJDskKQogewogICAgICMgRklYTUU6IEFkanVzdCB0
aGlzIG1ldGhvZCBzbyB0aGF0IGl0IGRpZXMgaWYgdGhlIGZpcnN0IGxpbmUgZG9lcyBub3QKICAg
ICAjICAgICAgICBtYXRjaCB0aGUgc3RhcnQgb2YgYSBkaWZmLiAgVGhpcyB3aWxsIHJlcXVpcmUg
YSBjaGFuZ2UgdG8KICAgICAjICAgICAgICBwYXJzZVBhdGNoKCkgc28gdGhhdCBwYXJzZVBhdGNo
KCkgc2tpcHMgb3ZlciBsZWFkaW5nIGp1bmsuCi0gICAgbXkgKCRmaWxlSGFuZGxlLCAkbGluZSkg
PSBAXzsKKyAgICBteSAoJGZpbGVIYW5kbGUsICRsaW5lLCAkb3B0aW9uc0hhc2hSZWYpID0gQF87
CiAKICAgICBteSAkaGVhZGVyU3RhcnRSZWdFeCA9ICRzdm5EaWZmU3RhcnRSZWdFeDsgIyBTVk4t
c3R5bGUgaGVhZGVyIGZvciB0aGUgZGVmYXVsdAogCiAgICAgbXkgJGhlYWRlckhhc2hSZWY7ICMg
TGFzdCBoZWFkZXIgZm91bmQsIGFzIHJldHVybmVkIGJ5IHBhcnNlRGlmZkhlYWRlcigpLgogICAg
IG15ICRzdm5Qcm9wZXJ0aWVzSGFzaFJlZjsgIyBMYXN0IFNWTiBwcm9wZXJ0aWVzIGRpZmYgZm91
bmQsIGFzIHJldHVybmVkIGJ5IHBhcnNlU3ZuRGlmZlByb3BlcnRpZXMoKS4KICAgICBteSAkc3Zu
VGV4dDsKKyAgICBteSAkaW5kZXhQYXRoRU9MOwogICAgIHdoaWxlIChkZWZpbmVkKCRsaW5lKSkg
ewogICAgICAgICBpZiAoISRoZWFkZXJIYXNoUmVmICYmICgkbGluZSA9fiAkZ2l0RGlmZlN0YXJ0
UmVnRXgpKSB7CiAgICAgICAgICAgICAjIFRoZW4gYXNzdW1lIGFsbCBkaWZmcyBpbiB0aGUgcGF0
Y2ggYXJlIEdpdC1mb3JtYXR0ZWQuIFRoaXMKQEAgLTg2MSw2ICs5MDQsOSBAQAogICAgICAgICB9
CiAgICAgICAgIGlmICgkbGluZSAhfiAkaGVhZGVyU3RhcnRSZWdFeCkgewogICAgICAgICAgICAg
IyBUaGVuIHdlIGFyZSBpbiB0aGUgYm9keSBvZiB0aGUgZGlmZi4KKyAgICAgICAgICAgIGlmICgk
aW5kZXhQYXRoRU9MICYmICRsaW5lICF+IC8kY2h1bmtSYW5nZVJlZ0V4LykgeworICAgICAgICAg
ICAgICAgICRsaW5lID1+IHMvXHJcbnxccnxcbi8kaW5kZXhQYXRoRU9ML2c7CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAkc3ZuVGV4dCAuPSAkbGluZTsKICAgICAgICAgICAgICRsaW5lID0g
PCRmaWxlSGFuZGxlPjsKICAgICAgICAgICAgIG5leHQ7CkBAIC04NzMsNiArOTE5LDkgQEAKICAg
ICAgICAgfQogCiAgICAgICAgICgkaGVhZGVySGFzaFJlZiwgJGxpbmUpID0gcGFyc2VEaWZmSGVh
ZGVyKCRmaWxlSGFuZGxlLCAkbGluZSk7CisgICAgICAgIGlmICghJG9wdGlvbnNIYXNoUmVmIHx8
ICEkb3B0aW9uc0hhc2hSZWYtPntzaG91bGROb3RVc2VJbmRleFBhdGhFT0x9KSB7CisgICAgICAg
ICAgICAkaW5kZXhQYXRoRU9MID0gZmlsZUVPTCgkaGVhZGVySGFzaFJlZi0+e2luZGV4UGF0aH0p
IGlmICEkaGVhZGVySGFzaFJlZi0+e2lzTmV3fSAmJiAhJGhlYWRlckhhc2hSZWYtPntpc0JpbmFy
eX07CisgICAgICAgIH0KIAogICAgICAgICAkc3ZuVGV4dCAuPSAkaGVhZGVySGFzaFJlZi0+e3N2
bkNvbnZlcnRlZFRleHR9OwogICAgIH0KQEAgLTExNjcsMTMgKzEyMTYsMTkgQEAKICMgQXJnczoK
ICMgICAkZmlsZUhhbmRsZTogQSBmaWxlIGhhbmRsZSB0byB0aGUgcGF0Y2ggZmlsZSB0aGF0IGhh
cyBub3QgeWV0IGJlZW4KICMgICAgICAgICAgICAgICAgcmVhZCBmcm9tLgorIyAgICRvcHRpb25z
SGFzaFJlZjogYSBoYXNoIHJlZmVyZW5jZSByZXByZXNlbnRpbmcgb3B0aW9uYWwgb3B0aW9ucyB0
byB1c2UKKyMgICAgICAgICAgICAgICAgICAgIHdoZW4gcHJvY2Vzc2luZyBhIGRpZmYuCisjICAg
ICBzaG91bGROb3RVc2VJbmRleFBhdGhFT0w6IHdoZXRoZXIgdG8gdXNlIHRoZSBsaW5lIGVuZGlu
Z3MgaW4gdGhlIGRpZmYgaW5zdGVhZAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnN0ZWFkIG9mIHRoZSBsaW5lIGVuZGluZ3MgaW4gdGhlIHRhcmdldCBmaWxlOyB0aGUKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgMSBpZiBzdm5Db252ZXJ0ZWRUZXh0
IHNob3VsZCB1c2UgdGhlIHNhbWUKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlu
ZSBlbmRpbmdzIGFzIHRoZSB0YXJnZXQgZmlsZS4KICMKICMgUmV0dXJuczoKICMgICBAZGlmZkhh
c2hSZWZzOiBhbiBhcnJheSBvZiBkaWZmIGhhc2ggcmVmZXJlbmNlcy4KICMgICAgICAgICAgICAg
ICAgICBTZWUgdGhlICVkaWZmSGFzaCBkb2N1bWVudGF0aW9uIGFib3ZlLgotc3ViIHBhcnNlUGF0
Y2goJCkKK3N1YiBwYXJzZVBhdGNoKCQ7JCkKIHsKLSAgICBteSAoJGZpbGVIYW5kbGUpID0gQF87
CisgICAgbXkgKCRmaWxlSGFuZGxlLCAkb3B0aW9uc0hhc2hSZWYpID0gQF87CiAKICAgICBteSAk
bmV3RGlmZkhhc2hSZWZzOwogICAgIG15IEBkaWZmSGFzaFJlZnM7ICMgcmV0dXJuIHZhbHVlCkBA
IC0xMTgyLDcgKzEyMzcsNyBAQAogCiAgICAgd2hpbGUgKGRlZmluZWQoJGxpbmUpKSB7ICMgT3Ro
ZXJ3aXNlLCBhdCBFT0YuCiAKLSAgICAgICAgKCRuZXdEaWZmSGFzaFJlZnMsICRsaW5lKSA9IHBh
cnNlRGlmZigkZmlsZUhhbmRsZSwgJGxpbmUpOworICAgICAgICAoJG5ld0RpZmZIYXNoUmVmcywg
JGxpbmUpID0gcGFyc2VEaWZmKCRmaWxlSGFuZGxlLCAkbGluZSwgJG9wdGlvbnNIYXNoUmVmKTsK
IAogICAgICAgICBwdXNoIEBkaWZmSGFzaFJlZnMsIEAkbmV3RGlmZkhhc2hSZWZzOwogICAgIH0K
QEAgLTE0NDAsNyArMTQ5NSw2IEBACiAgICAgJGRlbGV0ZWRMaW5lQ291bnQgKz0gJGRhdGVTdGFy
dEluZGV4IC0gJGNodW5rU3RhcnRJbmRleDsKIAogICAgICMgVXBkYXRlIHRoZSBpbml0aWFsIGNo
dW5rIHJhbmdlLgotICAgIG15ICRjaHVua1JhbmdlUmVnRXggPSAnXlxAXEAgLShcZCspLChcZCsp
IFwrXGQrLChcZCspIFxAXEAkJzsgIyBlLmcuIEBAIC0yLDYgKzIsMTggQEAKICAgICBpZiAoJGxp
bmVzWyRjaHVua1N0YXJ0SW5kZXggLSAxXSAhfiAvJGNodW5rUmFuZ2VSZWdFeC8pIHsKICAgICAg
ICAgIyBGSVhNRTogSGFuZGxlIGVycm9ycyBkaWZmZXJlbnRseSBmcm9tIENoYW5nZUxvZyBmaWxl
cyB0aGF0CiAgICAgICAgICMgYXJlIG9rYXkgYnV0IHNob3VsZCBub3QgYmUgYWx0ZXJlZC4gVGhh
dCB3YXkgd2UgY2FuIGZpbmQgb3V0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNT
VXRpbHNfdW5pdHRlc3QvcGFyc2VFT0wucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRU9MLnBsCShyZXZpc2lvbiAwKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRU9MLnBsCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisjIS91c3IvYmluL3BlcmwgLXcKKyMKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIyAKKyMgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisjIAorIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisKKyMgVW5pdCB0ZXN0cyBvZiBWQ1NVdGlsczo6cGFyc2VFT0woKS4KKwor
dXNlIFRlc3Q6OlNpbXBsZSB0ZXN0cyA9PiA3OwordXNlIFZDU1V0aWxzOworCitteSAkdGl0bGU7
CisKKyMgRklYTUU6IE5lZWQgdG8gY29udmVydCBhcmd1bWVudCBvZiBwYXJzZUVPTCgpIGZyb20g
c3RyaW5nIHRvIGZpbGUgaGFuZGxlISEhCisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUVP
TDogVW5kZWZpbmVkIGFyZ3VtZW50LiI7CitvayghZGVmaW5lZChwYXJzZUVPTFdpdGhTdHJpbmco
IiIpKSwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gInBhcnNlRU9MOiBMaW5lIHdp
dGhvdXQgYSBsaW5lIGVuZGluZyBjaGFyYWN0ZXIiOworb2soIWRlZmluZWQocGFyc2VFT0xXaXRo
U3RyaW5nKCJUaGlzIGxpbmUgZG9lc24ndCBoYXZlIGEgbGluZSBlbmRpbmcgY2hhcmFjdGVyLiIp
KSwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gInBhcnNlRU9MOiBMaW5lIHdpdGgg
V2luZG93cyBsaW5lIGVuZGluZy4iOworb2socGFyc2VFT0xXaXRoU3RyaW5nKCJUaGlzIGxpbmUg
ZW5kcyB3aXRoIGEgV2luZG93cyBsaW5lIGVuZGluZy5cclxuIikgZXEgIlxyXG4iLCAkdGl0bGUp
OworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VFT0w6IExpbmUgd2l0aCBVbml4IGxpbmUg
ZW5kaW5nLiI7CitvayhwYXJzZUVPTFdpdGhTdHJpbmcoIlRoaXMgbGluZSBlbmRzIHdpdGggYSBV
bml4IGxpbmUgZW5kaW5nLlxuIikgZXEgIlxuIiwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRp
dGxlID0gInBhcnNlRU9MOiBMaW5lIHdpdGggTWFjIGxpbmUgZW5kaW5nLiI7CitvayhwYXJzZUVP
TFdpdGhTdHJpbmcoIlRoaXMgbGluZSBlbmRzIHdpdGggYSBNYWMgbGluZSBlbmRpbmcuXHIiKSBl
cSAiXHIiLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VFT0w6IExpbmUg
d2l0aCBNYWMgbGluZSBlbmRpbmcgZm9sbG93ZWQgYnkgbGluZSB3aXRob3V0IGEgbGluZSBlbmRp
bmcuIjsKK29rKHBhcnNlRU9MV2l0aFN0cmluZygiVGhpcyBsaW5lIGVuZHMgd2l0aCBhIE1hYyBs
aW5lIGVuZGluZy5cclRoaXMgbGluZSBkb2Vzbid0IGhhdmUgYSBsaW5lIGVuZGluZy4iKSBlcSAi
XHIiLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VFT0w6IExpbmUgd2l0
aCBhIG1peCBvZiBsaW5lIGVuZGluZ3MuIjsKK29rKHBhcnNlRU9MV2l0aFN0cmluZygiVGhpcyBs
aW5lIGNvbnRhaW5zIGEgbWl4IG9mIGxpbmUgZW5kaW5ncy5cclxuXHJcblxyXHJcblxuXG5cbiIp
IGVxICJcclxuIiwgJHRpdGxlKTsKKworc3ViIHBhcnNlRU9MV2l0aFN0cmluZworeworICAgIG15
ICgkc3RyaW5nKSA9IEBfOworICAgIG15ICRmaWxlSGFuZGxlOworICAgIG9wZW4oJGZpbGVIYW5k
bGUsICI8IiwgXCRzdHJpbmcpOworICAgIHJldHVybiBwYXJzZUVPTCgkZmlsZUhhbmRsZSk7Cit9
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VE
aWZmV2l0aE1vY2tGaWxlcy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmV2l0aE1vY2tGaWxlcy5wbAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZURp
ZmZXaXRoTW9ja0ZpbGVzLnBsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3NyBAQAorIyEvdXNy
L2Jpbi9wZXJsIC13CisjCisjIENvcHlyaWdodCAoQykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2
ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyMgCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIyAKKyMgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCisjIFVuaXQgdGVzdHMgb2YgcGFy
c2VEaWZmKCkgd2l0aCBtb2NrIGZpbGVzLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwor
Cit1c2UgRmlsZTo6VGVtcDsKK3VzZSBQT1NJWCBxdy9nZXRjd2QvOwordXNlIFRlc3Q6Ok1vcmU7
Cit1c2UgVkNTVXRpbHM7CisKK215ICRzdm5EaWZmSGVhZGVyID0gPDxFT0Y7CitJbmRleDogTWFr
ZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKy0tLSBNYWtlZmlsZQkocmV2aXNpb24gNTMwNTIpCisrKysgTWFr
ZWZpbGUJKHdvcmtpbmcgY29weSkKK0BAIC0xLDMgKzEsNCBAQAorRU9GCisKK215ICRkaWZmQm9k
eSA9IDw8RU9GOworKworIE1PRFVMRVMgPSBKYXZhU2NyaXB0Q29yZSBKYXZhU2NyaXB0R2x1ZSBX
ZWJDb3JlIFdlYktpdCBXZWJLaXRUb29scworIAorIGFsbDoKK0VPRgorCitteSAkTWFrZWZpbGVD
b250ZW50cyA9IDw8RU9GOworTU9EVUxFUyA9IEphdmFTY3JpcHRDb3JlIEphdmFTY3JpcHRHbHVl
IFdlYkNvcmUgV2ViS2l0IFdlYktpdFRvb2xzIAorCithbGw6CitFT0YKKworbXkgJG1vY2tEaXIg
PSBGaWxlOjpUZW1wLT50ZW1wZGlyKCJwYXJzZURpZmZYWFhYIiwgQ0xFQU5VUCA9PiAxKTsKK3dy
aXRlVG9GaWxlKEZpbGU6OlNwZWMtPmNhdGZpbGUoJG1vY2tEaXIsICJNYWtlZmlsZVdpdGhVbml4
RU9MIiksICRNYWtlZmlsZUNvbnRlbnRzKTsKK3dyaXRlVG9GaWxlKEZpbGU6OlNwZWMtPmNhdGZp
bGUoJG1vY2tEaXIsICJNYWtlZmlsZVdpdGhXaW5kb3dzRU9MIiksIHRvV2luZG93c0xpbmVFbmRp
bmdzKCRNYWtlZmlsZUNvbnRlbnRzKSk7CisKKyMgVGhlIGFycmF5IG9mIHRlc3QgY2FzZXMuCitt
eSBAdGVzdENhc2VIYXNoUmVmcyA9ICgKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUg
PT4gIlNWTjogUGF0Y2ggd2l0aCBVbml4IGxpbmUgZW5kaW5ncyBhbmQgSW5kZXhQYXRoIGhhcyBV
bml4IGxpbmUgZW5kaW5ncyIsCisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2
bkRpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmlsZVdpdGhVbml4RU9MIikgLiAkZGlmZkJv
ZHksCisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+
IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmlsZVdp
dGhVbml4RU9MIikgLiAkZGlmZkJvZHksICMgU2FtZSBhcyBpbnB1dCB0ZXh0CisgICAgaW5kZXhQ
YXRoID0+ICJNYWtlZmlsZVdpdGhVbml4RU9MIiwKKyAgICBpc1N2biA9PiAxLAorICAgIHNvdXJj
ZVJldmlzaW9uID0+ICI1MzA1MiIsCit9XSwKK3VuZGVmXSwKKyAgICBleHBlY3RlZE5leHRMaW5l
ID0+IHVuZGVmLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIlNWTjog
UGF0Y2ggd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncyBhbmQgSW5kZXhQYXRoIGhhcyBVbml4IGxp
bmUgZW5kaW5ncyIsCisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRpZmZI
ZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmlsZVdpdGhVbml4RU9MIikgLiB0b1dpbmRvd3NMaW5l
RW5kaW5ncygkZGlmZkJvZHkpLAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK1t7CisgICAgc3Zu
Q29udmVydGVkVGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5EaWZmSGVhZGVyLCAiTWFrZWZp
bGUiLCAiTWFrZWZpbGVXaXRoVW5peEVPTCIpIC4gJGRpZmZCb2R5LAorICAgIGluZGV4UGF0aCA9
PiAiTWFrZWZpbGVXaXRoVW5peEVPTCIsCisgICAgaXNTdm4gPT4gMSwKKyAgICBzb3VyY2VSZXZp
c2lvbiA9PiAiNTMwNTIiLAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiB1
bmRlZiwKK30sCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJTVk46IFBhdGNo
IHdpdGggV2luZG93cyBsaW5lIGVuZGluZ3MgYW5kIEluZGV4UGF0aCBoYXMgV2luZG93cyBsaW5l
IGVuZGluZ3MiLAorICAgIGlucHV0VGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5EaWZmSGVh
ZGVyLCAiTWFrZWZpbGUiLCAiTWFrZWZpbGVXaXRoV2luZG93c0VPTCIpIC4gdG9XaW5kb3dzTGlu
ZUVuZGluZ3MoJGRpZmZCb2R5KSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCitbeworICAgIHN2
bkNvbnZlcnRlZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlmZkhlYWRlciwgIk1ha2Vm
aWxlIiwgIk1ha2VmaWxlV2l0aFdpbmRvd3NFT0wiKSAuIHRvV2luZG93c0xpbmVFbmRpbmdzKCRk
aWZmQm9keSksICMgU2FtZSBhcyBpbnB1dCB0ZXh0CisgICAgaW5kZXhQYXRoID0+ICJNYWtlZmls
ZVdpdGhXaW5kb3dzRU9MIiwKKyAgICBpc1N2biA9PiAxLAorICAgIHNvdXJjZVJldmlzaW9uID0+
ICI1MzA1MiIsCit9XSwKK3VuZGVmXSwKKyAgICBleHBlY3RlZE5leHRMaW5lID0+IHVuZGVmLAor
fSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIlNWTjogUGF0Y2ggd2l0aCBV
bml4IGxpbmUgZW5kaW5ncyBhbmQgSW5kZXhQYXRoIGhhcyBXaW5kb3dzIGxpbmUgZW5kaW5ncyIs
CisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRpZmZIZWFkZXIsICJNYWtl
ZmlsZSIsICJNYWtlZmlsZVdpdGhXaW5kb3dzRU9MIikgLiAkZGlmZkJvZHksCisgICAgZXhwZWN0
ZWRSZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IHN1YnN0aXR1dGVTdHJp
bmcoJHN2bkRpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmlsZVdpdGhXaW5kb3dzRU9MIikg
LiB0b1dpbmRvd3NMaW5lRW5kaW5ncygkZGlmZkJvZHkpLAorICAgIGluZGV4UGF0aCA9PiAiTWFr
ZWZpbGVXaXRoV2luZG93c0VPTCIsCisgICAgaXNTdm4gPT4gMSwKKyAgICBzb3VyY2VSZXZpc2lv
biA9PiAiNTMwNTIiLAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiB1bmRl
ZiwKK30sCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJTVk46IFBhdGNoIHdp
dGggVW5peCBsaW5lIGVuZGluZ3MgYW5kIG5vbmV4aXN0ZW50IEluZGV4UGF0aCIsCisgICAgaW5w
dXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJO
b25leGlzdGVudEZpbGUiKSAuICRkaWZmQm9keSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCitb
eworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlmZkhlYWRl
ciwgIk1ha2VmaWxlIiwgIk5vbmV4aXN0ZW50RmlsZSIpIC4gJGRpZmZCb2R5LCAjIFNhbWUgYXMg
aW5wdXQgdGV4dAorICAgIGluZGV4UGF0aCA9PiAiTm9uZXhpc3RlbnRGaWxlIiwKKyAgICBpc1N2
biA9PiAxLAorICAgIHNvdXJjZVJldmlzaW9uID0+ICI1MzA1MiIsCit9XSwKK3VuZGVmXSwKKyAg
ICBleHBlY3RlZE5leHRMaW5lID0+IHVuZGVmLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAg
ZGlmZk5hbWUgPT4gIlNWTjogUGF0Y2ggd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncyBhbmQgbm9u
ZXhpc3RlbnQgSW5kZXhQYXRoIiwKKyAgICBpbnB1dFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygk
c3ZuRGlmZkhlYWRlciwgIk1ha2VmaWxlIiwgIk5vbmV4aXN0ZW50RmlsZSIpIC4gdG9XaW5kb3dz
TGluZUVuZGluZ3MoJGRpZmZCb2R5KSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCitbeworICAg
IHN2bkNvbnZlcnRlZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlmZkhlYWRlciwgIk1h
a2VmaWxlIiwgIk5vbmV4aXN0ZW50RmlsZSIpIC4gdG9XaW5kb3dzTGluZUVuZGluZ3MoJGRpZmZC
b2R5KSwgIyBTYW1lIGFzIGlucHV0IHRleHQKKyAgICBpbmRleFBhdGggPT4gIk5vbmV4aXN0ZW50
RmlsZSIsCisgICAgaXNTdm4gPT4gMSwKKyAgICBzb3VyY2VSZXZpc2lvbiA9PiAiNTMwNTIiLAor
fV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiB1bmRlZiwKK30sCispOworCitt
eSAkdGVzdENhc2VzQ291bnQgPSBAdGVzdENhc2VIYXNoUmVmczsKK3BsYW4odGVzdHMgPT4gMiAq
ICR0ZXN0Q2FzZXNDb3VudCk7ICMgVG90YWwgbnVtYmVyIG9mIGFzc2VydGlvbnMuCisKK215ICRz
YXZlZENXRCA9IGdldGN3ZCgpOworY2hkaXIoJG1vY2tEaXIpIG9yIGRpZTsKK2ZvcmVhY2ggbXkg
JHRlc3RDYXNlIChAdGVzdENhc2VIYXNoUmVmcykgeworICAgIG15ICR0ZXN0TmFtZVN0YXJ0ID0g
InBhcnNlRGlmZigpOiAkdGVzdENhc2UtPntkaWZmTmFtZX06IGNvbXBhcmluZyI7CisKKyAgICBt
eSAkZmlsZUhhbmRsZTsKKyAgICBvcGVuKCRmaWxlSGFuZGxlLCAiPCIsIFwkdGVzdENhc2UtPntp
bnB1dFRleHR9KTsKKyAgICBteSAkbGluZSA9IDwkZmlsZUhhbmRsZT47CisKKyAgICBteSBAZ290
ID0gVkNTVXRpbHM6OnBhcnNlRGlmZigkZmlsZUhhbmRsZSwgJGxpbmUpOworICAgIG15ICRleHBl
Y3RlZFJldHVybiA9ICR0ZXN0Q2FzZS0+e2V4cGVjdGVkUmV0dXJufTsKKworICAgIGlzX2RlZXBs
eShcQGdvdCwgJGV4cGVjdGVkUmV0dXJuLCAiJHRlc3ROYW1lU3RhcnQgcmV0dXJuIHZhbHVlLiIp
OworCisgICAgbXkgJGdvdE5leHRMaW5lID0gPCRmaWxlSGFuZGxlPjsKKyAgICBpcygkZ290TmV4
dExpbmUsICR0ZXN0Q2FzZS0+e2V4cGVjdGVkTmV4dExpbmV9LCAgIiR0ZXN0TmFtZVN0YXJ0IG5l
eHQgcmVhZCBsaW5lLiIpOworfQorY2hkaXIoJHNhdmVkQ1dEKTsKKworc3ViIHN1YnN0aXR1dGVT
dHJpbmcKK3sKKyAgICBteSAoJHN0cmluZywgJHNlYXJjaFN0cmluZywgJHJlcGxhY2VtZW50U3Ry
aW5nKSA9IEBfOworICAgICRzdHJpbmcgPX4gcy8kc2VhcmNoU3RyaW5nLyRyZXBsYWNlbWVudFN0
cmluZy9nOworICAgIHJldHVybiAkc3RyaW5nOworfQorCitzdWIgd3JpdGVUb0ZpbGUKK3sKKyAg
ICBteSAoJGZpbGUsICR0ZXh0KSA9IEBfOworICAgIG9wZW4oRklMRSwgIj4kZmlsZSIpIG9yIGRp
ZTsKKyAgICBwcmludCBGSUxFICR0ZXh0OworICAgIGNsb3NlKEZJTEUpOworfQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZi5wbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFy
c2VEaWZmLnBsCShyZXZpc2lvbiA4MzM4MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9W
Q1NVdGlsc191bml0dGVzdC9wYXJzZURpZmYucGwJKHdvcmtpbmcgY29weSkKQEAgLTExOTgsNyAr
MTE5OCw3IEBACiAgICAgb3BlbigkZmlsZUhhbmRsZSwgIjwiLCBcJHRlc3RDYXNlLT57aW5wdXRU
ZXh0fSk7CiAgICAgbXkgJGxpbmUgPSA8JGZpbGVIYW5kbGU+OwogCi0gICAgbXkgQGdvdCA9IFZD
U1V0aWxzOjpwYXJzZURpZmYoJGZpbGVIYW5kbGUsICRsaW5lKTsKKyAgICBteSBAZ290ID0gVkNT
VXRpbHM6OnBhcnNlRGlmZigkZmlsZUhhbmRsZSwgJGxpbmUsIHsic2hvdWxkTm90VXNlSW5kZXhQ
YXRoRU9MIiA9PiAxfSk7CiAgICAgbXkgJGV4cGVjdGVkUmV0dXJuID0gJHRlc3RDYXNlLT57ZXhw
ZWN0ZWRSZXR1cm59OwogCiAgICAgaXNfZGVlcGx5KFxAZ290LCAkZXhwZWN0ZWRSZXR1cm4sICIk
dGVzdE5hbWVTdGFydCByZXR1cm4gdmFsdWUuIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89055</attachid>
            <date>2011-04-11 12:40:13 -0700</date>
            <delta_ts>2011-04-11 13:57:51 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>Bug53625.patch</filename>
            <type>text/plain</type>
            <size>22392</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgzNDU4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzYgQEAKKzIwMTEtMDQtMTEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHN2bi1hcHBseSBh
bmQvb3IgcGF0Y2goMSkgaGFzIHRyb3VibGUgYXBwbHlpbmcgcGF0Y2hlcyB0aGF0IG1ha2VzIGNo
YW5nZXMgdG8gZmlsZXMKKyAgICAgICAgd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM2MjUKKworICAgICAg
ICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBhIHBhdGNoIG1hZGUgb24gYSBTQ00gY2hlY2tvdXQgb24g
YSBVbml4IGZpbGUgc3lzdGVtIGNhbm5vdCBiZQorICAgICAgICBhcHBsaWVkIHRvIGFuIFNDTSBj
aGVja291dCBvbiBhIFdpbmRvd3MgZmlsZSBzeXN0ZW0gYW5kIHZpY2UtdmVyc2EuCisKKyAgICAg
ICAgVGhpcyBpc3N1ZSBtYW5pZmVzdHMgaXRzZWxmIGR1ZSB0byBjdXN0b20gU0NNIHNldHRpbmdz
IGFzIHdlbGwgYXMgZGlmZmVyZW5jZXMgaW4KKyAgICAgICAgZ2l0YXR0cmlidXRlcyBzdXBwb3J0
IGluIG9sZGVyIHZlcnNpb25zIG9mIEdpdCAoZS5nLiAxLjcuMC4zKS4gV2UgaW1wbGVtZW50IHN1
cHBvcnQKKyAgICAgICAgaW50byBzdm4tYXBwbHkvdW5hcHBseSB0byBjb21wZW5zYXRlIGZvciBk
aWZmZXJlbmNlcyBpbiBsaW5lIGVuZGluZ3MgYnkgY29udmVydGluZworICAgICAgICB0aGUgbGlu
ZSBlbmRpbmdzIGluIGEgcGF0Y2ggdG8gbWF0Y2ggdGhlIGxpbmUgZW5kaW5ncyBpbiB0aGUgdGFy
Z2V0IGZpbGUgKGlmIGl0IGV4aXN0cykuCisKKyAgICAgICAgKiBTY3JpcHRzL1ZDU1V0aWxzLnBt
OgorICAgICAgICAgIC0gQWRkZWQgcGFyc2VFT0woKSwgd2hpY2ggcmV0dXJucyB0aGUgZmlyc3Qg
ZW5kLW9mLWxpbmUgY2hhcmFjdGVyKHMpIHRoYXQgYXBwZWFyIGluIHRoZQorICAgICAgICAgICAg
Y29udGVudCByZWFkIGZyb20gdGhlIHNwZWNpZmllZCBmaWxlIGhhbmRsZS4gT2J2aW91c2x5LCB0
aGlzIGhldXJpc3RpYyB3aWxsIG5vdCB3b3JrCisgICAgICAgICAgICBmb3IgZmlsZXMgd2l0aCBt
aXhlZCBsaW5lIGVuZGluZ3MsIGJ1dCBJIGRvbid0IGVudmlzaW9uIHN1Y2ggZmlsZXMgdG8gYmUg
dGhlIG5vcm0uIElmCisgICAgICAgICAgICB0aGlzIHR1cm5zIG91dCB0byBiZSBhbiBpc3N1ZSB0
aGVuIHdlIGNhbiBpbXByb3ZlIHRoZSBoZXVyaXN0aWMuCisgICAgICAgICAgLSBBZGRlZCBmaWxl
RU9MKCkuCisgICAgICAgICAgLSBNb2RpZmllZCBwYXJzZVBhdGNoKCkgYW5kIHBhcnNlRGlmZigp
IHRvIHRha2UgYW4gb3B0aW9uYWwgaGFzaCByZWZlcmVuY2UgdG8gYW4gb3B0aW9ucyBoYXNoLgor
ICAgICAgICAgICAgSW4gcGFydGljdWxhciwgYWRkZWQgdGhlIGhhc2gga2V5IHNob3VsZE5vdFVz
ZUluZGV4UGF0aEVPTCB0byBjb250cm9sIHdoZXRoZXIgdG8gdXNlIHRoZSBsaW5lCisgICAgICAg
ICAgICBlbmRpbmdzIGluIHRoZSBkaWZmIGluc3RlYWQgb2YgdGhlIGxpbmUgZW5kaW5ncyBpbiB0
aGUgdGFyZ2V0IGZpbGUuCisgICAgICAgICAgLSBFeHRyYWN0ZWQgbG9jYWwgdmFyaWFibGUgJGNo
dW5rUmFuZ2VSZWdFeCBmcm9tIGZpeENoYW5nZUxvZ1BhdGNoKCkgc28gdGhhdCBpdCBjYW4gYmUK
KyAgICAgICAgICAgIHJlLXVzZWQgaW4gcGFyc2VEaWZmKCkuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZi5wbDogTW9kaWZpZWQgdG8gcGFz
cyB7c2hvdWxkTm90VXNlSW5kZXhQYXRoRU9MID0+IDF9CisgICAgICAgICAgdG8gcGFyc2VQYXRj
aCgpIHNpbmNlIHRoZXNlIHVuaXQgdGVzdHMgZG9uJ3QgY3JlYXRlIG1vY2sgZmlsZXMuIEluc3Rl
YWQsIGNyZWF0ZWQgdW5pdCB0ZXN0cyB0aGF0IHVzZQorICAgICAgICAgIG1vY2sgZmlsZXMgaW4g
ZmlsZSBWQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZXaXRoTW9ja0ZpbGVzLnBsLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZXaXRoTW9j
a0ZpbGVzLnBsOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNf
dW5pdHRlc3QvcGFyc2VFT0wucGw6IEFkZGVkLgorCiAyMDExLTA0LTEwICBLaW1tbyBLaW5udW5l
biAgPGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgpJbmRleDogVG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCShyZXZpc2lvbiA4MzM4MSkKKysrIFRvb2xzL1Nj
cmlwdHMvVkNTVXRpbHMucG0JKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAjIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNocmlzLmplcmRv
bmVrQGdtYWlsLmNvbSkKLSMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY4LDYgKzY4LDcgQEAgQkVHSU4gewogICAgICAgICAm
bWFrZUZpbGVQYXRoUmVsYXRpdmUKICAgICAgICAgJm1lcmdlQ2hhbmdlTG9ncwogICAgICAgICAm
bm9ybWFsaXplUGF0aAorICAgICAgICAmcGFyc2VFT0wKICAgICAgICAgJnBhcnNlUGF0Y2gKICAg
ICAgICAgJnBhdGhSZWxhdGl2ZVRvU1ZOUmVwb3NpdG9yeVJvb3RGb3JQYXRoCiAgICAgICAgICZw
cmVwYXJlUGFyc2VkUGF0Y2gKQEAgLTk3LDYgKzk4LDcgQEAgbXkgJHN2blZlcnNpb247CiAjIFBy
b2plY3QgdGltZSB6b25lIGZvciBDdXBlcnRpbm8sIENBLCBVUwogbXkgJGNoYW5nZUxvZ1RpbWVa
b25lID0gIlBTVDhQRFQiOwogCitteSAkY2h1bmtSYW5nZVJlZ0V4ID0gcXIjXlxAXEAgLShcZCsp
LChcZCspIFwrXGQrLChcZCspIFxAXEAkIzsgIyBlLmcuIEBAIC0yLDYgKzIsMTggQEAKIG15ICRn
aXREaWZmU3RhcnRSZWdFeCA9IHFyI15kaWZmIC0tZ2l0IChcdy8pPyguKykgKFx3Lyk/KFteXHJc
bl0rKSM7CiBteSAkc3ZuRGlmZlN0YXJ0UmVnRXggPSBxciNeSW5kZXg6IChbXlxyXG5dKykjOwog
bXkgJHN2blByb3BlcnRpZXNTdGFydFJlZ0V4ID0gcXIjXlByb3BlcnR5IGNoYW5nZXMgb246IChb
XlxyXG5dKykjOyAjICQxIGlzIG5vcm1hbGx5IHRoZSBzYW1lIGFzIHRoZSBpbmRleCBwYXRoLgpA
QCAtNDQ5LDYgKzQ1MSw0MCBAQCBzdWIgcmVtb3ZlRU9MKCQpCiAgICAgcmV0dXJuICRsaW5lOwog
fQogCitzdWIgcGFyc2VFT0woJCkKK3sKKyAgICBteSAoJGZpbGVIYW5kbGUpID0gQF87CisKKyAg
ICAjIE1ha2UgaW5wdXQgcmVjb3JkIHNlcGFyYXRvciB0aGUgbmV3LWxpbmUgY2hhcmFjdGVyIHRv
IHNpbXBsaWZ5IHJlZ2V4IG1hdGNoaW5nIGJlbG93LgorICAgIG15ICRzYXZlZElucHV0UmVjb3Jk
U2VwYXJhdG9yID0gJElOUFVUX1JFQ09SRF9TRVBBUkFUT1I7CisgICAgJElOUFVUX1JFQ09SRF9T
RVBBUkFUT1IgPSAiXG4iOworICAgIG15ICRmaXJzdExpbmUgID0gPCRmaWxlSGFuZGxlPjsKKyAg
ICAkSU5QVVRfUkVDT1JEX1NFUEFSQVRPUiA9ICRzYXZlZElucHV0UmVjb3JkU2VwYXJhdG9yOwor
CisgICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkKCRmaXJzdExpbmUpOworCisgICAgbXkgJGVvbDsK
KyAgICBpZiAoJGZpcnN0TGluZSA9fiAvXHJcbi8pIHsKKyAgICAgICAgJGVvbCA9ICJcclxuIjsK
KyAgICB9IGVsc2lmICgkZmlyc3RMaW5lID1+IC9cci8pIHsKKyAgICAgICAgJGVvbCA9ICJcciI7
CisgICAgfSBlbHNpZiAoJGZpcnN0TGluZSA9fiAvXG4vKSB7CisgICAgICAgICRlb2wgPSAiXG4i
OworICAgIH0KKyAgICByZXR1cm4gJGVvbDsKK30KKworc3ViIGZpbGVFT0woJCkKK3sKKyAgICBt
eSAoJGZpbGUpID0gQF87CisgICAgbXkgJGVvbDsKKyAgICBpZiAob3BlbihGSUxFLCAkZmlsZSkp
IHsKKyAgICAgICAgJGVvbCA9IHBhcnNlRU9MKCpGSUxFKTsKKyAgICAgICAgY2xvc2UoRklMRSk7
CisgICAgfQorICAgIHJldHVybiAkZW9sOworfQorCiBzdWIgc3ZuU3RhdHVzKCQpCiB7CiAgICAg
bXkgKCRmdWxsUGF0aCkgPSBAXzsKQEAgLTgyMiwyMyArODU4LDMwIEBAIHN1YiBwYXJzZURpZmZI
ZWFkZXIoJCQpCiAjICAgJGZpbGVIYW5kbGU6IGEgZmlsZSBoYW5kbGUgYWR2YW5jZWQgdG8gdGhl
IGZpcnN0IGxpbmUgb2YgdGhlIG5leHQKICMgICAgICAgICAgICAgICAgaGVhZGVyIGJsb2NrLiBM
ZWFkaW5nIGp1bmsgaXMgb2theS4KICMgICAkbGluZTogdGhlIGxpbmUgbGFzdCByZWFkIGZyb20g
JGZpbGVIYW5kbGUuCisjICAgJG9wdGlvbnNIYXNoUmVmOiBhIGhhc2ggcmVmZXJlbmNlIHJlcHJl
c2VudGluZyBvcHRpb25hbCBvcHRpb25zIHRvIHVzZQorIyAgICAgICAgICAgICAgICAgICAgd2hl
biBwcm9jZXNzaW5nIGEgZGlmZi4KKyMgICAgIHNob3VsZE5vdFVzZUluZGV4UGF0aEVPTDogd2hl
dGhlciB0byB1c2UgdGhlIGxpbmUgZW5kaW5ncyBpbiB0aGUgZGlmZiBpbnN0ZWFkCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgdGhlIGxpbmUgZW5kaW5ncyBpbiB0
aGUgdGFyZ2V0IGZpbGU7IHRoZQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSBvZiAxIGlmIHN2bkNvbnZlcnRlZFRleHQgc2hvdWxkIHVzZSB0aGUgbGluZQorIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbmRpbmdzIGluIHRoZSBkaWZmLgogIwogIyBSZXR1cm5z
ICgkZGlmZkhhc2hSZWZzLCAkbGFzdFJlYWRMaW5lKToKICMgICAkZGlmZkhhc2hSZWZzOiBBIHJl
ZmVyZW5jZSB0byBhbiBhcnJheSBvZiByZWZlcmVuY2VzIHRvICVkaWZmSGFzaCBoYXNoZXMuCiAj
ICAgICAgICAgICAgICAgICAgU2VlIHRoZSAlZGlmZkhhc2ggZG9jdW1lbnRhdGlvbiBhYm92ZS4K
ICMgICAkbGFzdFJlYWRMaW5lOiB0aGUgbGluZSBsYXN0IHJlYWQgZnJvbSAkZmlsZUhhbmRsZQot
c3ViIHBhcnNlRGlmZigkJCkKK3N1YiBwYXJzZURpZmYoJCQ7JCkKIHsKICAgICAjIEZJWE1FOiBB
ZGp1c3QgdGhpcyBtZXRob2Qgc28gdGhhdCBpdCBkaWVzIGlmIHRoZSBmaXJzdCBsaW5lIGRvZXMg
bm90CiAgICAgIyAgICAgICAgbWF0Y2ggdGhlIHN0YXJ0IG9mIGEgZGlmZi4gIFRoaXMgd2lsbCBy
ZXF1aXJlIGEgY2hhbmdlIHRvCiAgICAgIyAgICAgICAgcGFyc2VQYXRjaCgpIHNvIHRoYXQgcGFy
c2VQYXRjaCgpIHNraXBzIG92ZXIgbGVhZGluZyBqdW5rLgotICAgIG15ICgkZmlsZUhhbmRsZSwg
JGxpbmUpID0gQF87CisgICAgbXkgKCRmaWxlSGFuZGxlLCAkbGluZSwgJG9wdGlvbnNIYXNoUmVm
KSA9IEBfOwogCiAgICAgbXkgJGhlYWRlclN0YXJ0UmVnRXggPSAkc3ZuRGlmZlN0YXJ0UmVnRXg7
ICMgU1ZOLXN0eWxlIGhlYWRlciBmb3IgdGhlIGRlZmF1bHQKIAogICAgIG15ICRoZWFkZXJIYXNo
UmVmOyAjIExhc3QgaGVhZGVyIGZvdW5kLCBhcyByZXR1cm5lZCBieSBwYXJzZURpZmZIZWFkZXIo
KS4KICAgICBteSAkc3ZuUHJvcGVydGllc0hhc2hSZWY7ICMgTGFzdCBTVk4gcHJvcGVydGllcyBk
aWZmIGZvdW5kLCBhcyByZXR1cm5lZCBieSBwYXJzZVN2bkRpZmZQcm9wZXJ0aWVzKCkuCiAgICAg
bXkgJHN2blRleHQ7CisgICAgbXkgJGluZGV4UGF0aEVPTDsKICAgICB3aGlsZSAoZGVmaW5lZCgk
bGluZSkpIHsKICAgICAgICAgaWYgKCEkaGVhZGVySGFzaFJlZiAmJiAoJGxpbmUgPX4gJGdpdERp
ZmZTdGFydFJlZ0V4KSkgewogICAgICAgICAgICAgIyBUaGVuIGFzc3VtZSBhbGwgZGlmZnMgaW4g
dGhlIHBhdGNoIGFyZSBHaXQtZm9ybWF0dGVkLiBUaGlzCkBAIC04NjEsNiArOTA0LDExIEBAIHN1
YiBwYXJzZURpZmYoJCQpCiAgICAgICAgIH0KICAgICAgICAgaWYgKCRsaW5lICF+ICRoZWFkZXJT
dGFydFJlZ0V4KSB7CiAgICAgICAgICAgICAjIFRoZW4gd2UgYXJlIGluIHRoZSBib2R5IG9mIHRo
ZSBkaWZmLgorICAgICAgICAgICAgaWYgKCRpbmRleFBhdGhFT0wgJiYgJGxpbmUgIX4gLyRjaHVu
a1JhbmdlUmVnRXgvKSB7CisgICAgICAgICAgICAgICAgIyBUaGUgY2h1bmsgcmFuZ2UgaXMgcGFy
dCBvZiB0aGUgYm9keSBvZiB0aGUgZGlmZiwgYnV0IGl0cyBsaW5lIGVuZGluZ3Mgc2hvdWxkJ3Qg
YmUKKyAgICAgICAgICAgICAgICAjIG1vZGlmaWVkIG9yIHBhdGNoKDEpIHdpbGwgY29tcGxhaW4u
IFNvLCB3ZSBvbmx5IG1vZGlmeSBub24tY2h1bmsgcmFuZ2UgbGluZXMuCisgICAgICAgICAgICAg
ICAgJGxpbmUgPX4gcy9cclxufFxyfFxuLyRpbmRleFBhdGhFT0wvZzsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICRzdm5UZXh0IC49ICRsaW5lOwogICAgICAgICAgICAgJGxpbmUgPSA8JGZp
bGVIYW5kbGU+OwogICAgICAgICAgICAgbmV4dDsKQEAgLTg3Myw2ICs5MjEsOSBAQCBzdWIgcGFy
c2VEaWZmKCQkKQogICAgICAgICB9CiAKICAgICAgICAgKCRoZWFkZXJIYXNoUmVmLCAkbGluZSkg
PSBwYXJzZURpZmZIZWFkZXIoJGZpbGVIYW5kbGUsICRsaW5lKTsKKyAgICAgICAgaWYgKCEkb3B0
aW9uc0hhc2hSZWYgfHwgISRvcHRpb25zSGFzaFJlZi0+e3Nob3VsZE5vdFVzZUluZGV4UGF0aEVP
TH0pIHsKKyAgICAgICAgICAgICRpbmRleFBhdGhFT0wgPSBmaWxlRU9MKCRoZWFkZXJIYXNoUmVm
LT57aW5kZXhQYXRofSkgaWYgISRoZWFkZXJIYXNoUmVmLT57aXNOZXd9ICYmICEkaGVhZGVySGFz
aFJlZi0+e2lzQmluYXJ5fTsKKyAgICAgICAgfQogCiAgICAgICAgICRzdm5UZXh0IC49ICRoZWFk
ZXJIYXNoUmVmLT57c3ZuQ29udmVydGVkVGV4dH07CiAgICAgfQpAQCAtMTE2NywxMyArMTIxOCwx
OSBAQCBzdWIgcGFyc2VTdm5Qcm9wZXJ0eVZhbHVlKCQkKQogIyBBcmdzOgogIyAgICRmaWxlSGFu
ZGxlOiBBIGZpbGUgaGFuZGxlIHRvIHRoZSBwYXRjaCBmaWxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVl
bgogIyAgICAgICAgICAgICAgICByZWFkIGZyb20uCisjICAgJG9wdGlvbnNIYXNoUmVmOiBhIGhh
c2ggcmVmZXJlbmNlIHJlcHJlc2VudGluZyBvcHRpb25hbCBvcHRpb25zIHRvIHVzZQorIyAgICAg
ICAgICAgICAgICAgICAgd2hlbiBwcm9jZXNzaW5nIGEgZGlmZi4KKyMgICAgIHNob3VsZE5vdFVz
ZUluZGV4UGF0aEVPTDogd2hldGhlciB0byB1c2UgdGhlIGxpbmUgZW5kaW5ncyBpbiB0aGUgZGlm
ZiBpbnN0ZWFkCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgdGhl
IGxpbmUgZW5kaW5ncyBpbiB0aGUgdGFyZ2V0IGZpbGU7IHRoZQorIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSBvZiAxIGlmIHN2bkNvbnZlcnRlZFRleHQgc2hvdWxkIHVzZSB0
aGUgbGluZQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRpbmdzIGluIHRoZSBk
aWZmLgogIwogIyBSZXR1cm5zOgogIyAgIEBkaWZmSGFzaFJlZnM6IGFuIGFycmF5IG9mIGRpZmYg
aGFzaCByZWZlcmVuY2VzLgogIyAgICAgICAgICAgICAgICAgIFNlZSB0aGUgJWRpZmZIYXNoIGRv
Y3VtZW50YXRpb24gYWJvdmUuCi1zdWIgcGFyc2VQYXRjaCgkKQorc3ViIHBhcnNlUGF0Y2goJDsk
KQogewotICAgIG15ICgkZmlsZUhhbmRsZSkgPSBAXzsKKyAgICBteSAoJGZpbGVIYW5kbGUsICRv
cHRpb25zSGFzaFJlZikgPSBAXzsKIAogICAgIG15ICRuZXdEaWZmSGFzaFJlZnM7CiAgICAgbXkg
QGRpZmZIYXNoUmVmczsgIyByZXR1cm4gdmFsdWUKQEAgLTExODIsNyArMTIzOSw3IEBAIHN1YiBw
YXJzZVBhdGNoKCQpCiAKICAgICB3aGlsZSAoZGVmaW5lZCgkbGluZSkpIHsgIyBPdGhlcndpc2Us
IGF0IEVPRi4KIAotICAgICAgICAoJG5ld0RpZmZIYXNoUmVmcywgJGxpbmUpID0gcGFyc2VEaWZm
KCRmaWxlSGFuZGxlLCAkbGluZSk7CisgICAgICAgICgkbmV3RGlmZkhhc2hSZWZzLCAkbGluZSkg
PSBwYXJzZURpZmYoJGZpbGVIYW5kbGUsICRsaW5lLCAkb3B0aW9uc0hhc2hSZWYpOwogCiAgICAg
ICAgIHB1c2ggQGRpZmZIYXNoUmVmcywgQCRuZXdEaWZmSGFzaFJlZnM7CiAgICAgfQpAQCAtMTQ0
MCw3ICsxNDk3LDYgQEAgc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpCiAgICAgJGRlbGV0ZWRMaW5l
Q291bnQgKz0gJGRhdGVTdGFydEluZGV4IC0gJGNodW5rU3RhcnRJbmRleDsKIAogICAgICMgVXBk
YXRlIHRoZSBpbml0aWFsIGNodW5rIHJhbmdlLgotICAgIG15ICRjaHVua1JhbmdlUmVnRXggPSAn
XlxAXEAgLShcZCspLChcZCspIFwrXGQrLChcZCspIFxAXEAkJzsgIyBlLmcuIEBAIC0yLDYgKzIs
MTggQEAKICAgICBpZiAoJGxpbmVzWyRjaHVua1N0YXJ0SW5kZXggLSAxXSAhfiAvJGNodW5rUmFu
Z2VSZWdFeC8pIHsKICAgICAgICAgIyBGSVhNRTogSGFuZGxlIGVycm9ycyBkaWZmZXJlbnRseSBm
cm9tIENoYW5nZUxvZyBmaWxlcyB0aGF0CiAgICAgICAgICMgYXJlIG9rYXkgYnV0IHNob3VsZCBu
b3QgYmUgYWx0ZXJlZC4gVGhhdCB3YXkgd2UgY2FuIGZpbmQgb3V0CkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmLnBsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmYu
cGwJKHJldmlzaW9uIDgzMzgxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxz
X3VuaXR0ZXN0L3BhcnNlRGlmZi5wbAkod29ya2luZyBjb3B5KQpAQCAtMTE5OCw3ICsxMTk4LDcg
QEAgZm9yZWFjaCBteSAkdGVzdENhc2UgKEB0ZXN0Q2FzZUhhc2hSZWZzKQogICAgIG9wZW4oJGZp
bGVIYW5kbGUsICI8IiwgXCR0ZXN0Q2FzZS0+e2lucHV0VGV4dH0pOwogICAgIG15ICRsaW5lID0g
PCRmaWxlSGFuZGxlPjsKIAotICAgIG15IEBnb3QgPSBWQ1NVdGlsczo6cGFyc2VEaWZmKCRmaWxl
SGFuZGxlLCAkbGluZSk7CisgICAgbXkgQGdvdCA9IFZDU1V0aWxzOjpwYXJzZURpZmYoJGZpbGVI
YW5kbGUsICRsaW5lLCB7InNob3VsZE5vdFVzZUluZGV4UGF0aEVPTCIgPT4gMX0pOwogICAgIG15
ICRleHBlY3RlZFJldHVybiA9ICR0ZXN0Q2FzZS0+e2V4cGVjdGVkUmV0dXJufTsKIAogICAgIGlz
X2RlZXBseShcQGdvdCwgJGV4cGVjdGVkUmV0dXJuLCAiJHRlc3ROYW1lU3RhcnQgcmV0dXJuIHZh
bHVlLiIpOwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0
L3BhcnNlRGlmZldpdGhNb2NrRmlsZXMucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZldpdGhNb2NrRmlsZXMucGwJKHJl
dmlzaW9uIDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3Qv
cGFyc2VEaWZmV2l0aE1vY2tGaWxlcy5wbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMDUgQEAK
KyMhL3Vzci9iaW4vcGVybCAtdworIworIyBDb3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyMgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisjIAorIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMgCisjIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKworIyBVbml0IHRlc3Rz
IG9mIHBhcnNlRGlmZigpIHdpdGggbW9jayBmaWxlczsgdGVzdCBvdmVycmlkZSBvZiBwYXRjaCBF
T0wgd2l0aCBFT0wgb2YgdGFyZ2V0IGZpbGUuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7
CisKK3VzZSBGaWxlOjpUZW1wOwordXNlIFBPU0lYIHF3L2dldGN3ZC87Cit1c2UgVGVzdDo6TW9y
ZTsKK3VzZSBWQ1NVdGlsczsKKworbXkgJGdpdERpZmZIZWFkZXJGb3JOZXdGaWxlID0gPDxFT0Y7
CitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQorbmV3IGZpbGUgbW9kZSAxMDA2NDQK
K2luZGV4IDAwMDAwMDAuLjc1NmU4NjQKKy0tLSAvZGV2L251bGwKKysrKyBiL01ha2VmaWxlCitA
QCAtMCwwICsxLDE3IEBACitFT0YKKworbXkgJGdpdERpZmZIZWFkZXIgPSA8PEVPRjsKK2RpZmYg
LS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA3NTZlODY0Li4wNGQyYWUxIDEwMDY0
NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMSwzICsxLDQgQEAKK0VPRgor
CitteSAkc3ZuQ29udmVydGVkR2l0RGlmZkhlYWRlciA9IDw8RU9GOworSW5kZXg6IE1ha2VmaWxl
CitpbmRleCA3NTZlODY0Li4wNGQyYWUxIDEwMDY0NAorLS0tIE1ha2VmaWxlCisrKysgTWFrZWZp
bGUKK0BAIC0xLDMgKzEsNCBAQAorRU9GCisKK215ICRzdm5Db252ZXJ0ZWRHaXREaWZmSGVhZGVy
Rm9yTmV3RmlsZSA9IDw8RU9GOworSW5kZXg6IE1ha2VmaWxlCituZXcgZmlsZSBtb2RlIDEwMDY0
NAoraW5kZXggMDAwMDAwMC4uNzU2ZTg2NAorLS0tIE1ha2VmaWxlCisrKysgTWFrZWZpbGUKK0BA
IC0wLDAgKzEsMTcgQEAKK0VPRgorCitteSAkc3ZuRGlmZkhlYWRlckZvck5ld0ZpbGUgPSA8PEVP
RjsKK0luZGV4OiBNYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIE1ha2VmaWxlCShyZXZpc2lvbiAw
KQorKysrIE1ha2VmaWxlCShyZXZpc2lvbiAwKQorQEAgLTAsMCArMSwxNyBAQAorRU9GCisKK215
ICRzdm5EaWZmSGVhZGVyID0gPDxFT0Y7CitJbmRleDogTWFrZWZpbGUKKz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t
LSBNYWtlZmlsZQkocmV2aXNpb24gNTMwNTIpCisrKysgTWFrZWZpbGUJKHdvcmtpbmcgY29weSkK
K0BAIC0xLDMgKzEsNCBAQAorRU9GCisKK215ICRkaWZmQm9keSA9IDw8RU9GOworKworIE1PRFVM
RVMgPSBKYXZhU2NyaXB0Q29yZSBKYXZhU2NyaXB0R2x1ZSBXZWJDb3JlIFdlYktpdCBXZWJLaXRU
b29scworIAorIGFsbDoKK0VPRgorCitteSAkTWFrZWZpbGVDb250ZW50cyA9IDw8RU9GOworTU9E
VUxFUyA9IEphdmFTY3JpcHRDb3JlIEphdmFTY3JpcHRHbHVlIFdlYkNvcmUgV2ViS2l0IFdlYktp
dFRvb2xzIAorCithbGw6CitFT0YKKworbXkgJG1vY2tEaXIgPSBGaWxlOjpUZW1wLT50ZW1wZGly
KCJwYXJzZURpZmZYWFhYIiwgQ0xFQU5VUCA9PiAxKTsKK3dyaXRlVG9GaWxlKEZpbGU6OlNwZWMt
PmNhdGZpbGUoJG1vY2tEaXIsICJNYWtlZmlsZVdpdGhVbml4RU9MIiksICRNYWtlZmlsZUNvbnRl
bnRzKTsKK3dyaXRlVG9GaWxlKEZpbGU6OlNwZWMtPmNhdGZpbGUoJG1vY2tEaXIsICJNYWtlZmls
ZVdpdGhXaW5kb3dzRU9MIiksIHRvV2luZG93c0xpbmVFbmRpbmdzKCRNYWtlZmlsZUNvbnRlbnRz
KSk7CisKKyMgVGhlIGFycmF5IG9mIHRlc3QgY2FzZXMuCitteSBAdGVzdENhc2VIYXNoUmVmcyA9
ICgKKyMjIworIyBTVk4gdGVzdCBjYXNlcworIyMKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlm
Zk5hbWUgPT4gIlNWTjogUGF0Y2ggd2l0aCBVbml4IGxpbmUgZW5kaW5ncyBhbmQgSW5kZXhQYXRo
IGhhcyBVbml4IGxpbmUgZW5kaW5ncyIsCisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJp
bmcoJHN2bkRpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmlsZVdpdGhVbml4RU9MIikgLiAk
ZGlmZkJvZHksCisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252ZXJ0ZWRU
ZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtl
ZmlsZVdpdGhVbml4RU9MIikgLiAkZGlmZkJvZHksICMgU2FtZSBhcyBpbnB1dCB0ZXh0CisgICAg
aW5kZXhQYXRoID0+ICJNYWtlZmlsZVdpdGhVbml4RU9MIiwKKyAgICBpc1N2biA9PiAxLAorICAg
IHNvdXJjZVJldmlzaW9uID0+ICI1MzA1MiIsCit9XSwKK3VuZGVmXSwKKyAgICBleHBlY3RlZE5l
eHRMaW5lID0+IHVuZGVmLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4g
IlNWTjogUGF0Y2ggd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncyBhbmQgSW5kZXhQYXRoIGhhcyBV
bml4IGxpbmUgZW5kaW5ncyIsCisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2
bkRpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmlsZVdpdGhVbml4RU9MIikgLiB0b1dpbmRv
d3NMaW5lRW5kaW5ncygkZGlmZkJvZHkpLAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK1t7Cisg
ICAgc3ZuQ29udmVydGVkVGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5EaWZmSGVhZGVyLCAi
TWFrZWZpbGUiLCAiTWFrZWZpbGVXaXRoVW5peEVPTCIpIC4gJGRpZmZCb2R5LAorICAgIGluZGV4
UGF0aCA9PiAiTWFrZWZpbGVXaXRoVW5peEVPTCIsCisgICAgaXNTdm4gPT4gMSwKKyAgICBzb3Vy
Y2VSZXZpc2lvbiA9PiAiNTMwNTIiLAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGlu
ZSA9PiB1bmRlZiwKK30sCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJTVk46
IFBhdGNoIHdpdGggV2luZG93cyBsaW5lIGVuZGluZ3MgYW5kIEluZGV4UGF0aCBoYXMgV2luZG93
cyBsaW5lIGVuZGluZ3MiLAorICAgIGlucHV0VGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5E
aWZmSGVhZGVyLCAiTWFrZWZpbGUiLCAiTWFrZWZpbGVXaXRoV2luZG93c0VPTCIpIC4gdG9XaW5k
b3dzTGluZUVuZGluZ3MoJGRpZmZCb2R5KSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCitbewor
ICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlmZkhlYWRlciwg
Ik1ha2VmaWxlIiwgIk1ha2VmaWxlV2l0aFdpbmRvd3NFT0wiKSAuIHRvV2luZG93c0xpbmVFbmRp
bmdzKCRkaWZmQm9keSksICMgU2FtZSBhcyBpbnB1dCB0ZXh0CisgICAgaW5kZXhQYXRoID0+ICJN
YWtlZmlsZVdpdGhXaW5kb3dzRU9MIiwKKyAgICBpc1N2biA9PiAxLAorICAgIHNvdXJjZVJldmlz
aW9uID0+ICI1MzA1MiIsCit9XSwKK3VuZGVmXSwKKyAgICBleHBlY3RlZE5leHRMaW5lID0+IHVu
ZGVmLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIlNWTjogUGF0Y2gg
d2l0aCBVbml4IGxpbmUgZW5kaW5ncyBhbmQgSW5kZXhQYXRoIGhhcyBXaW5kb3dzIGxpbmUgZW5k
aW5ncyIsCisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRpZmZIZWFkZXIs
ICJNYWtlZmlsZSIsICJNYWtlZmlsZVdpdGhXaW5kb3dzRU9MIikgLiAkZGlmZkJvZHksCisgICAg
ZXhwZWN0ZWRSZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IHN1YnN0aXR1
dGVTdHJpbmcoJHN2bkRpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmlsZVdpdGhXaW5kb3dz
RU9MIikgLiB0b1dpbmRvd3NMaW5lRW5kaW5ncygkZGlmZkJvZHkpLAorICAgIGluZGV4UGF0aCA9
PiAiTWFrZWZpbGVXaXRoV2luZG93c0VPTCIsCisgICAgaXNTdm4gPT4gMSwKKyAgICBzb3VyY2VS
ZXZpc2lvbiA9PiAiNTMwNTIiLAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9
PiB1bmRlZiwKK30sCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJTVk46IFBh
dGNoIHdpdGggVW5peCBsaW5lIGVuZGluZ3MgYW5kIG5vbmV4aXN0ZW50IEluZGV4UGF0aCIsCisg
ICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRpZmZIZWFkZXJGb3JOZXdGaWxl
LCAiTWFrZWZpbGUiLCAiTm9uZXhpc3RlbnRGaWxlIikgLiAkZGlmZkJvZHksCisgICAgZXhwZWN0
ZWRSZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IHN1YnN0aXR1dGVTdHJp
bmcoJHN2bkRpZmZIZWFkZXJGb3JOZXdGaWxlLCAiTWFrZWZpbGUiLCAiTm9uZXhpc3RlbnRGaWxl
IikgLiAkZGlmZkJvZHksICMgU2FtZSBhcyBpbnB1dCB0ZXh0CisgICAgaW5kZXhQYXRoID0+ICJO
b25leGlzdGVudEZpbGUiLAorICAgIGlzU3ZuID0+IDEsCisgICAgaXNOZXcgPT4gMSwKK31dLAor
dW5kZWZdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5kZWYsCit9LAoreworICAgICMgTmV3
IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiU1ZOOiBQYXRjaCB3aXRoIFdpbmRvd3MgbGluZSBlbmRp
bmdzIGFuZCBub25leGlzdGVudCBJbmRleFBhdGgiLAorICAgIGlucHV0VGV4dCA9PiBzdWJzdGl0
dXRlU3RyaW5nKCRzdm5EaWZmSGVhZGVyRm9yTmV3RmlsZSwgIk1ha2VmaWxlIiwgIk5vbmV4aXN0
ZW50RmlsZSIpIC4gdG9XaW5kb3dzTGluZUVuZGluZ3MoJGRpZmZCb2R5KSwKKyAgICBleHBlY3Rl
ZFJldHVybiA9PiBbCitbeworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmlu
Zygkc3ZuRGlmZkhlYWRlckZvck5ld0ZpbGUsICJNYWtlZmlsZSIsICJOb25leGlzdGVudEZpbGUi
KSAuIHRvV2luZG93c0xpbmVFbmRpbmdzKCRkaWZmQm9keSksICMgU2FtZSBhcyBpbnB1dCB0ZXh0
CisgICAgaW5kZXhQYXRoID0+ICJOb25leGlzdGVudEZpbGUiLAorICAgIGlzU3ZuID0+IDEsCisg
ICAgaXNOZXcgPT4gMSwKK31dLAordW5kZWZdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5k
ZWYsCit9LAorIyMjCisjIEdpdCB0ZXN0IGNhc2VzCisjIworeworICAgICMgTmV3IHRlc3QKKyAg
ICBkaWZmTmFtZSA9PiAiR2l0OiBQYXRjaCB3aXRoIFVuaXggbGluZSBlbmRpbmdzIGFuZCBJbmRl
eFBhdGggaGFzIFVuaXggbGluZSBlbmRpbmdzIiwKKyAgICBpbnB1dFRleHQgPT4gc3Vic3RpdHV0
ZVN0cmluZygkZ2l0RGlmZkhlYWRlciwgIk1ha2VmaWxlIiwgIk1ha2VmaWxlV2l0aFVuaXhFT0wi
KSAuICRkaWZmQm9keSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCitbeworICAgIHN2bkNvbnZl
cnRlZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuQ29udmVydGVkR2l0RGlmZkhlYWRlciwg
Ik1ha2VmaWxlIiwgIk1ha2VmaWxlV2l0aFVuaXhFT0wiKSAuICRkaWZmQm9keSwgIyBTYW1lIGFz
IGlucHV0IHRleHQKKyAgICBpbmRleFBhdGggPT4gIk1ha2VmaWxlV2l0aFVuaXhFT0wiLAorICAg
IGlzR2l0ID0+IDEsCit9XSwKK3VuZGVmXSwKKyAgICBleHBlY3RlZE5leHRMaW5lID0+IHVuZGVm
LAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIkdpdDogUGF0Y2ggd2l0
aCBXaW5kb3dzIGxpbmUgZW5kaW5ncyBhbmQgSW5kZXhQYXRoIGhhcyBVbml4IGxpbmUgZW5kaW5n
cyIsCisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJGdpdERpZmZIZWFkZXIsICJN
YWtlZmlsZSIsICJNYWtlZmlsZVdpdGhVbml4RU9MIikgLiB0b1dpbmRvd3NMaW5lRW5kaW5ncygk
ZGlmZkJvZHkpLAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK1t7CisgICAgc3ZuQ29udmVydGVk
VGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5Db252ZXJ0ZWRHaXREaWZmSGVhZGVyLCAiTWFr
ZWZpbGUiLCAiTWFrZWZpbGVXaXRoVW5peEVPTCIpIC4gJGRpZmZCb2R5LAorICAgIGluZGV4UGF0
aCA9PiAiTWFrZWZpbGVXaXRoVW5peEVPTCIsCisgICAgaXNHaXQgPT4gMSwKK31dLAordW5kZWZd
LAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5kZWYsCit9LAoreworICAgICMgTmV3IHRlc3QK
KyAgICBkaWZmTmFtZSA9PiAiR2l0OiBQYXRjaCB3aXRoIFdpbmRvd3MgbGluZSBlbmRpbmdzIGFu
ZCBJbmRleFBhdGggaGFzIFdpbmRvd3MgbGluZSBlbmRpbmdzIiwKKyAgICBpbnB1dFRleHQgPT4g
c3Vic3RpdHV0ZVN0cmluZygkZ2l0RGlmZkhlYWRlciwgIk1ha2VmaWxlIiwgIk1ha2VmaWxlV2l0
aFdpbmRvd3NFT0wiKSAuIHRvV2luZG93c0xpbmVFbmRpbmdzKCRkaWZmQm9keSksCisgICAgZXhw
ZWN0ZWRSZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IHN1YnN0aXR1dGVT
dHJpbmcoJHN2bkNvbnZlcnRlZEdpdERpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmlsZVdp
dGhXaW5kb3dzRU9MIikgLiB0b1dpbmRvd3NMaW5lRW5kaW5ncygkZGlmZkJvZHkpLCAjIFNhbWUg
YXMgaW5wdXQgdGV4dAorICAgIGluZGV4UGF0aCA9PiAiTWFrZWZpbGVXaXRoV2luZG93c0VPTCIs
CisgICAgaXNHaXQgPT4gMSwKK31dLAordW5kZWZdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4g
dW5kZWYsCit9LAoreworICAgICMgTmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiR2l0OiBQYXRj
aCB3aXRoIFVuaXggbGluZSBlbmRpbmdzIGFuZCBJbmRleFBhdGggaGFzIFdpbmRvd3MgbGluZSBl
bmRpbmdzIiwKKyAgICBpbnB1dFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkZ2l0RGlmZkhlYWRl
ciwgIk1ha2VmaWxlIiwgIk1ha2VmaWxlV2l0aFdpbmRvd3NFT0wiKSAuICRkaWZmQm9keSwKKyAg
ICBleHBlY3RlZFJldHVybiA9PiBbCitbeworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gc3Vic3Rp
dHV0ZVN0cmluZygkc3ZuQ29udmVydGVkR2l0RGlmZkhlYWRlciwgIk1ha2VmaWxlIiwgIk1ha2Vm
aWxlV2l0aFdpbmRvd3NFT0wiKSAuIHRvV2luZG93c0xpbmVFbmRpbmdzKCRkaWZmQm9keSksCisg
ICAgaW5kZXhQYXRoID0+ICJNYWtlZmlsZVdpdGhXaW5kb3dzRU9MIiwKKyAgICBpc0dpdCA9PiAx
LAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiB1bmRlZiwKK30sCit7Cisg
ICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJHaXQ6IFBhdGNoIHdpdGggVW5peCBsaW5l
IGVuZGluZ3MgYW5kIG5vbmV4aXN0ZW50IEluZGV4UGF0aCIsCisgICAgaW5wdXRUZXh0ID0+IHN1
YnN0aXR1dGVTdHJpbmcoJGdpdERpZmZIZWFkZXJGb3JOZXdGaWxlLCAiTWFrZWZpbGUiLCAiTm9u
ZXhpc3RlbnRGaWxlIikgLiAkZGlmZkJvZHksCisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworW3sK
KyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkNvbnZlcnRlZEdp
dERpZmZIZWFkZXJGb3JOZXdGaWxlLCAiTWFrZWZpbGUiLCAiTm9uZXhpc3RlbnRGaWxlIikgLiAk
ZGlmZkJvZHksICMgU2FtZSBhcyBpbnB1dCB0ZXh0CisgICAgaW5kZXhQYXRoID0+ICJOb25leGlz
dGVudEZpbGUiLAorICAgIGlzR2l0ID0+IDEsCisgICAgaXNOZXcgPT4gMSwKK31dLAordW5kZWZd
LAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5kZWYsCit9LAoreworICAgICMgTmV3IHRlc3QK
KyAgICBkaWZmTmFtZSA9PiAiR2l0OiBQYXRjaCB3aXRoIFdpbmRvd3MgbGluZSBlbmRpbmdzIGFu
ZCBub25leGlzdGVudCBJbmRleFBhdGgiLAorICAgIGlucHV0VGV4dCA9PiBzdWJzdGl0dXRlU3Ry
aW5nKCRnaXREaWZmSGVhZGVyRm9yTmV3RmlsZSwgIk1ha2VmaWxlIiwgIk5vbmV4aXN0ZW50Rmls
ZSIpIC4gdG9XaW5kb3dzTGluZUVuZGluZ3MoJGRpZmZCb2R5KSwKKyAgICBleHBlY3RlZFJldHVy
biA9PiBbCitbeworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3Zu
Q29udmVydGVkR2l0RGlmZkhlYWRlckZvck5ld0ZpbGUsICJNYWtlZmlsZSIsICJOb25leGlzdGVu
dEZpbGUiKSAuIHRvV2luZG93c0xpbmVFbmRpbmdzKCRkaWZmQm9keSksICMgU2FtZSBhcyBpbnB1
dCB0ZXh0CisgICAgaW5kZXhQYXRoID0+ICJOb25leGlzdGVudEZpbGUiLAorICAgIGlzR2l0ID0+
IDEsCisgICAgaXNOZXcgPT4gMSwKK31dLAordW5kZWZdLAorICAgIGV4cGVjdGVkTmV4dExpbmUg
PT4gdW5kZWYsCit9LAorKTsKKworbXkgJHRlc3RDYXNlc0NvdW50ID0gQHRlc3RDYXNlSGFzaFJl
ZnM7CitwbGFuKHRlc3RzID0+IDIgKiAkdGVzdENhc2VzQ291bnQpOyAjIFRvdGFsIG51bWJlciBv
ZiBhc3NlcnRpb25zLgorCitteSAkc2F2ZWRDV0QgPSBnZXRjd2QoKTsKK2NoZGlyKCRtb2NrRGly
KSBvciBkaWU7Citmb3JlYWNoIG15ICR0ZXN0Q2FzZSAoQHRlc3RDYXNlSGFzaFJlZnMpIHsKKyAg
ICBteSAkdGVzdE5hbWVTdGFydCA9ICJwYXJzZURpZmYoKTogJHRlc3RDYXNlLT57ZGlmZk5hbWV9
OiBjb21wYXJpbmciOworCisgICAgbXkgJGZpbGVIYW5kbGU7CisgICAgb3BlbigkZmlsZUhhbmRs
ZSwgIjwiLCBcJHRlc3RDYXNlLT57aW5wdXRUZXh0fSk7CisgICAgbXkgJGxpbmUgPSA8JGZpbGVI
YW5kbGU+OworCisgICAgbXkgQGdvdCA9IFZDU1V0aWxzOjpwYXJzZURpZmYoJGZpbGVIYW5kbGUs
ICRsaW5lKTsKKyAgICBteSAkZXhwZWN0ZWRSZXR1cm4gPSAkdGVzdENhc2UtPntleHBlY3RlZFJl
dHVybn07CisKKyAgICBpc19kZWVwbHkoXEBnb3QsICRleHBlY3RlZFJldHVybiwgIiR0ZXN0TmFt
ZVN0YXJ0IHJldHVybiB2YWx1ZS4iKTsKKworICAgIG15ICRnb3ROZXh0TGluZSA9IDwkZmlsZUhh
bmRsZT47CisgICAgaXMoJGdvdE5leHRMaW5lLCAkdGVzdENhc2UtPntleHBlY3RlZE5leHRMaW5l
fSwgICIkdGVzdE5hbWVTdGFydCBuZXh0IHJlYWQgbGluZS4iKTsKK30KK2NoZGlyKCRzYXZlZENX
RCk7CisKK3N1YiBzdWJzdGl0dXRlU3RyaW5nCit7CisgICAgbXkgKCRzdHJpbmcsICRzZWFyY2hT
dHJpbmcsICRyZXBsYWNlbWVudFN0cmluZykgPSBAXzsKKyAgICAkc3RyaW5nID1+IHMvJHNlYXJj
aFN0cmluZy8kcmVwbGFjZW1lbnRTdHJpbmcvZzsKKyAgICByZXR1cm4gJHN0cmluZzsKK30KKwor
c3ViIHdyaXRlVG9GaWxlCit7CisgICAgbXkgKCRmaWxlLCAkdGV4dCkgPSBAXzsKKyAgICBvcGVu
KEZJTEUsICI+JGZpbGUiKSBvciBkaWU7CisgICAgcHJpbnQgRklMRSAkdGV4dDsKKyAgICBjbG9z
ZShGSUxFKTsKK30KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0
dGVzdC9wYXJzZUVPTC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwv
VkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VFT0wucGwJKHJldmlzaW9uIDApCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VFT0wucGwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjMgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworIworIyBDb3B5cmlnaHQgKEMp
IDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjIAorIyBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyMgCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKworIyBVbml0IHRlc3RzIG9mIFZDU1V0aWxzOjpwYXJzZUVPTCgpLgorCit1c2Ugc3RyaWN0
OwordXNlIHdhcm5pbmdzOworCit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDc7Cit1c2UgVkNT
VXRpbHM7CisKK215ICR0aXRsZTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gInBhcnNlRU9MOiBF
bXB0eSBzdHJpbmcuIjsKK29rKCFkZWZpbmVkKHBhcnNlRU9MV2l0aFN0cmluZygiIikpLCAkdGl0
bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VFT0w6IExpbmUgd2l0aG91dCBhIGxp
bmUgZW5kaW5nIGNoYXJhY3RlciI7CitvayghZGVmaW5lZChwYXJzZUVPTFdpdGhTdHJpbmcoIlRo
aXMgbGluZSBkb2Vzbid0IGhhdmUgYSBsaW5lIGVuZGluZyBjaGFyYWN0ZXIuIikpLCAkdGl0bGUp
OworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VFT0w6IExpbmUgd2l0aCBXaW5kb3dzIGxp
bmUgZW5kaW5nLiI7CitvayhwYXJzZUVPTFdpdGhTdHJpbmcoIlRoaXMgbGluZSBlbmRzIHdpdGgg
YSBXaW5kb3dzIGxpbmUgZW5kaW5nLlxyXG4iKSBlcSAiXHJcbiIsICR0aXRsZSk7CisKKyMgTmV3
IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUVPTDogTGluZSB3aXRoIFVuaXggbGluZSBlbmRpbmcuIjsK
K29rKHBhcnNlRU9MV2l0aFN0cmluZygiVGhpcyBsaW5lIGVuZHMgd2l0aCBhIFVuaXggbGluZSBl
bmRpbmcuXG4iKSBlcSAiXG4iLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFy
c2VFT0w6IExpbmUgd2l0aCBNYWMgbGluZSBlbmRpbmcuIjsKK29rKHBhcnNlRU9MV2l0aFN0cmlu
ZygiVGhpcyBsaW5lIGVuZHMgd2l0aCBhIE1hYyBsaW5lIGVuZGluZy5cciIpIGVxICJcciIsICR0
aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUVPTDogTGluZSB3aXRoIE1hYyBs
aW5lIGVuZGluZyBmb2xsb3dlZCBieSBsaW5lIHdpdGhvdXQgYSBsaW5lIGVuZGluZy4iOworb2so
cGFyc2VFT0xXaXRoU3RyaW5nKCJUaGlzIGxpbmUgZW5kcyB3aXRoIGEgTWFjIGxpbmUgZW5kaW5n
LlxyVGhpcyBsaW5lIGRvZXNuJ3QgaGF2ZSBhIGxpbmUgZW5kaW5nLiIpIGVxICJcciIsICR0aXRs
ZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUVPTDogTGluZSB3aXRoIGEgbWl4IG9m
IGxpbmUgZW5kaW5ncy4iOworb2socGFyc2VFT0xXaXRoU3RyaW5nKCJUaGlzIGxpbmUgY29udGFp
bnMgYSBtaXggb2YgbGluZSBlbmRpbmdzLlxyXG5cclxuXHJcclxuXG5cblxuIikgZXEgIlxyXG4i
LCAkdGl0bGUpOworCitzdWIgcGFyc2VFT0xXaXRoU3RyaW5nCit7CisgICAgbXkgKCRzdHJpbmcp
ID0gQF87CisgICAgbXkgJGZpbGVIYW5kbGU7CisgICAgb3BlbigkZmlsZUhhbmRsZSwgIjwiLCBc
JHN0cmluZyk7CisgICAgcmV0dXJuIHBhcnNlRU9MKCRmaWxlSGFuZGxlKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89081</attachid>
            <date>2011-04-11 13:57:51 -0700</date>
            <delta_ts>2011-04-11 14:02:52 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>Bug53625_1.patch</filename>
            <type>text/plain</type>
            <size>22462</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgzNDU4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzYgQEAKKzIwMTEtMDQtMTEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHN2bi1hcHBseSBh
bmQvb3IgcGF0Y2goMSkgaGFzIHRyb3VibGUgYXBwbHlpbmcgcGF0Y2hlcyB0aGF0IG1ha2VzIGNo
YW5nZXMgdG8gZmlsZXMKKyAgICAgICAgd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM2MjUKKworICAgICAg
ICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBhIHBhdGNoIG1hZGUgb24gYSBTQ00gY2hlY2tvdXQgb24g
YSBVbml4IGZpbGUgc3lzdGVtIGNhbm5vdCBiZQorICAgICAgICBhcHBsaWVkIHRvIGFuIFNDTSBj
aGVja291dCBvbiBhIFdpbmRvd3MgZmlsZSBzeXN0ZW0gYW5kIHZpY2UtdmVyc2EuCisKKyAgICAg
ICAgVGhpcyBpc3N1ZSBtYW5pZmVzdHMgaXRzZWxmIGR1ZSB0byBjdXN0b20gU0NNIHNldHRpbmdz
IGFzIHdlbGwgYXMgZGlmZmVyZW5jZXMgaW4KKyAgICAgICAgZ2l0YXR0cmlidXRlcyBzdXBwb3J0
IGluIG9sZGVyIHZlcnNpb25zIG9mIEdpdCAoZS5nLiAxLjcuMC4zKS4gV2UgaW1wbGVtZW50IHN1
cHBvcnQKKyAgICAgICAgaW50byBzdm4tYXBwbHkvdW5hcHBseSB0byBjb21wZW5zYXRlIGZvciBk
aWZmZXJlbmNlcyBpbiBsaW5lIGVuZGluZ3MgYnkgY29udmVydGluZworICAgICAgICB0aGUgbGlu
ZSBlbmRpbmdzIGluIGEgcGF0Y2ggdG8gbWF0Y2ggdGhlIGxpbmUgZW5kaW5ncyBpbiB0aGUgdGFy
Z2V0IGZpbGUgKGlmIGl0IGV4aXN0cykuCisKKyAgICAgICAgKiBTY3JpcHRzL1ZDU1V0aWxzLnBt
OgorICAgICAgICAgIC0gQWRkZWQgcGFyc2VGaXJzdEVPTCgpLCB3aGljaCByZXR1cm5zIHRoZSBm
aXJzdCBlbmQtb2YtbGluZSBjaGFyYWN0ZXIocykgdGhhdCBhcHBlYXIgaW4gdGhlCisgICAgICAg
ICAgICBjb250ZW50IHJlYWQgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUgaGFuZGxlLiBPYnZpb3Vz
bHksIHRoaXMgaGV1cmlzdGljIHdpbGwgbm90IHdvcmsKKyAgICAgICAgICAgIGZvciBmaWxlcyB3
aXRoIG1peGVkIGxpbmUgZW5kaW5ncywgYnV0IEkgZG9uJ3QgZW52aXNpb24gc3VjaCBmaWxlcyB0
byBiZSB0aGUgbm9ybS4gSWYKKyAgICAgICAgICAgIHRoaXMgdHVybnMgb3V0IHRvIGJlIGFuIGlz
c3VlIHRoZW4gd2UgY2FuIGltcHJvdmUgdGhlIGhldXJpc3RpYy4KKyAgICAgICAgICAtIEFkZGVk
IGZpcnN0RU9MSW5GaWxlKCkuCisgICAgICAgICAgLSBNb2RpZmllZCBwYXJzZVBhdGNoKCkgYW5k
IHBhcnNlRGlmZigpIHRvIHRha2UgYW4gb3B0aW9uYWwgaGFzaCByZWZlcmVuY2UgdG8gYW4gb3B0
aW9ucyBoYXNoLgorICAgICAgICAgICAgSW4gcGFydGljdWxhciwgYWRkZWQgdGhlIGhhc2gga2V5
IHNob3VsZE5vdFVzZUluZGV4UGF0aEVPTCB0byBjb250cm9sIHdoZXRoZXIgdG8gdXNlIHRoZSBs
aW5lCisgICAgICAgICAgICBlbmRpbmdzIGluIHRoZSBkaWZmIGluc3RlYWQgb2YgdGhlIGxpbmUg
ZW5kaW5ncyBpbiB0aGUgdGFyZ2V0IGZpbGUuCisgICAgICAgICAgLSBFeHRyYWN0ZWQgbG9jYWwg
dmFyaWFibGUgJGNodW5rUmFuZ2VSZWdFeCBmcm9tIGZpeENoYW5nZUxvZ1BhdGNoKCkgc28gdGhh
dCBpdCBjYW4gYmUKKyAgICAgICAgICAgIHJlLXVzZWQgaW4gcGFyc2VEaWZmKCkuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZi5wbDogTW9k
aWZpZWQgdG8gcGFzcyB7c2hvdWxkTm90VXNlSW5kZXhQYXRoRU9MID0+IDF9CisgICAgICAgICAg
dG8gcGFyc2VQYXRjaCgpIHNpbmNlIHRoZXNlIHVuaXQgdGVzdHMgZG9uJ3QgY3JlYXRlIG1vY2sg
ZmlsZXMuIEluc3RlYWQsIGNyZWF0ZWQgdW5pdCB0ZXN0cyB0aGF0IHVzZQorICAgICAgICAgIG1v
Y2sgZmlsZXMgaW4gZmlsZSBWQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZXaXRoTW9ja0ZpbGVz
LnBsLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJz
ZURpZmZXaXRoTW9ja0ZpbGVzLnBsOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBl
cmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VFT0wucGw6IEFkZGVkLgorCiAyMDExLTA0LTEwICBL
aW1tbyBLaW5udW5lbiAgPGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogVG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCShyZXZpc2lvbiA4MzM4MSkK
KysrIFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAjIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQ2hyaXMgSmVyZG9uZWsg
KGNocmlzLmplcmRvbmVrQGdtYWlsLmNvbSkKLSMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY4LDYgKzY4LDcgQEAgQkVHSU4g
ewogICAgICAgICAmbWFrZUZpbGVQYXRoUmVsYXRpdmUKICAgICAgICAgJm1lcmdlQ2hhbmdlTG9n
cwogICAgICAgICAmbm9ybWFsaXplUGF0aAorICAgICAgICAmcGFyc2VGaXJzdEVPTAogICAgICAg
ICAmcGFyc2VQYXRjaAogICAgICAgICAmcGF0aFJlbGF0aXZlVG9TVk5SZXBvc2l0b3J5Um9vdEZv
clBhdGgKICAgICAgICAgJnByZXBhcmVQYXJzZWRQYXRjaApAQCAtOTcsNiArOTgsNyBAQCBteSAk
c3ZuVmVyc2lvbjsKICMgUHJvamVjdCB0aW1lIHpvbmUgZm9yIEN1cGVydGlubywgQ0EsIFVTCiBt
eSAkY2hhbmdlTG9nVGltZVpvbmUgPSAiUFNUOFBEVCI7CiAKK215ICRjaHVua1JhbmdlUmVnRXgg
PSBxciNeXEBcQCAtKFxkKyksKFxkKykgXCtcZCssKFxkKykgXEBcQCQjOyAjIGUuZy4gQEAgLTIs
NiArMiwxOCBAQAogbXkgJGdpdERpZmZTdGFydFJlZ0V4ID0gcXIjXmRpZmYgLS1naXQgKFx3Lyk/
KC4rKSAoXHcvKT8oW15cclxuXSspIzsKIG15ICRzdm5EaWZmU3RhcnRSZWdFeCA9IHFyI15JbmRl
eDogKFteXHJcbl0rKSM7CiBteSAkc3ZuUHJvcGVydGllc1N0YXJ0UmVnRXggPSBxciNeUHJvcGVy
dHkgY2hhbmdlcyBvbjogKFteXHJcbl0rKSM7ICMgJDEgaXMgbm9ybWFsbHkgdGhlIHNhbWUgYXMg
dGhlIGluZGV4IHBhdGguCkBAIC00NDksNiArNDUxLDQwIEBAIHN1YiByZW1vdmVFT0woJCkKICAg
ICByZXR1cm4gJGxpbmU7CiB9CiAKK3N1YiBwYXJzZUZpcnN0RU9MKCQpCit7CisgICAgbXkgKCRm
aWxlSGFuZGxlKSA9IEBfOworCisgICAgIyBNYWtlIGlucHV0IHJlY29yZCBzZXBhcmF0b3IgdGhl
IG5ldy1saW5lIGNoYXJhY3RlciB0byBzaW1wbGlmeSByZWdleCBtYXRjaGluZyBiZWxvdy4KKyAg
ICBteSAkc2F2ZWRJbnB1dFJlY29yZFNlcGFyYXRvciA9ICRJTlBVVF9SRUNPUkRfU0VQQVJBVE9S
OworICAgICRJTlBVVF9SRUNPUkRfU0VQQVJBVE9SID0gIlxuIjsKKyAgICBteSAkZmlyc3RMaW5l
ICA9IDwkZmlsZUhhbmRsZT47CisgICAgJElOUFVUX1JFQ09SRF9TRVBBUkFUT1IgPSAkc2F2ZWRJ
bnB1dFJlY29yZFNlcGFyYXRvcjsKKworICAgIHJldHVybiB1bmxlc3MgZGVmaW5lZCgkZmlyc3RM
aW5lKTsKKworICAgIG15ICRlb2w7CisgICAgaWYgKCRmaXJzdExpbmUgPX4gL1xyXG4vKSB7Cisg
ICAgICAgICRlb2wgPSAiXHJcbiI7CisgICAgfSBlbHNpZiAoJGZpcnN0TGluZSA9fiAvXHIvKSB7
CisgICAgICAgICRlb2wgPSAiXHIiOworICAgIH0gZWxzaWYgKCRmaXJzdExpbmUgPX4gL1xuLykg
eworICAgICAgICAkZW9sID0gIlxuIjsKKyAgICB9CisgICAgcmV0dXJuICRlb2w7Cit9CisKK3N1
YiBmaXJzdEVPTEluRmlsZSgkKQoreworICAgIG15ICgkZmlsZSkgPSBAXzsKKyAgICBteSAkZW9s
OworICAgIGlmIChvcGVuKEZJTEUsICRmaWxlKSkgeworICAgICAgICAkZW9sID0gcGFyc2VGaXJz
dEVPTCgqRklMRSk7CisgICAgICAgIGNsb3NlKEZJTEUpOworICAgIH0KKyAgICByZXR1cm4gJGVv
bDsKK30KKwogc3ViIHN2blN0YXR1cygkKQogewogICAgIG15ICgkZnVsbFBhdGgpID0gQF87CkBA
IC04MjIsMjMgKzg1OCwzMCBAQCBzdWIgcGFyc2VEaWZmSGVhZGVyKCQkKQogIyAgICRmaWxlSGFu
ZGxlOiBhIGZpbGUgaGFuZGxlIGFkdmFuY2VkIHRvIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBuZXh0
CiAjICAgICAgICAgICAgICAgIGhlYWRlciBibG9jay4gTGVhZGluZyBqdW5rIGlzIG9rYXkuCiAj
ICAgJGxpbmU6IHRoZSBsaW5lIGxhc3QgcmVhZCBmcm9tICRmaWxlSGFuZGxlLgorIyAgICRvcHRp
b25zSGFzaFJlZjogYSBoYXNoIHJlZmVyZW5jZSByZXByZXNlbnRpbmcgb3B0aW9uYWwgb3B0aW9u
cyB0byB1c2UKKyMgICAgICAgICAgICAgICAgICAgIHdoZW4gcHJvY2Vzc2luZyBhIGRpZmYuCisj
ICAgICBzaG91bGROb3RVc2VJbmRleFBhdGhFT0w6IHdoZXRoZXIgdG8gdXNlIHRoZSBsaW5lIGVu
ZGluZ3MgaW4gdGhlIGRpZmYgaW5zdGVhZAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnN0ZWFkIG9mIHRoZSBsaW5lIGVuZGluZ3MgaW4gdGhlIHRhcmdldCBmaWxlOyB0aGUKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgMSBpZiBzdm5Db252ZXJ0ZWRU
ZXh0IHNob3VsZCB1c2UgdGhlIGxpbmUKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW5kaW5ncyBpbiB0aGUgZGlmZi4KICMKICMgUmV0dXJucyAoJGRpZmZIYXNoUmVmcywgJGxhc3RS
ZWFkTGluZSk6CiAjICAgJGRpZmZIYXNoUmVmczogQSByZWZlcmVuY2UgdG8gYW4gYXJyYXkgb2Yg
cmVmZXJlbmNlcyB0byAlZGlmZkhhc2ggaGFzaGVzLgogIyAgICAgICAgICAgICAgICAgIFNlZSB0
aGUgJWRpZmZIYXNoIGRvY3VtZW50YXRpb24gYWJvdmUuCiAjICAgJGxhc3RSZWFkTGluZTogdGhl
IGxpbmUgbGFzdCByZWFkIGZyb20gJGZpbGVIYW5kbGUKLXN1YiBwYXJzZURpZmYoJCQpCitzdWIg
cGFyc2VEaWZmKCQkOyQpCiB7CiAgICAgIyBGSVhNRTogQWRqdXN0IHRoaXMgbWV0aG9kIHNvIHRo
YXQgaXQgZGllcyBpZiB0aGUgZmlyc3QgbGluZSBkb2VzIG5vdAogICAgICMgICAgICAgIG1hdGNo
IHRoZSBzdGFydCBvZiBhIGRpZmYuICBUaGlzIHdpbGwgcmVxdWlyZSBhIGNoYW5nZSB0bwogICAg
ICMgICAgICAgIHBhcnNlUGF0Y2goKSBzbyB0aGF0IHBhcnNlUGF0Y2goKSBza2lwcyBvdmVyIGxl
YWRpbmcganVuay4KLSAgICBteSAoJGZpbGVIYW5kbGUsICRsaW5lKSA9IEBfOworICAgIG15ICgk
ZmlsZUhhbmRsZSwgJGxpbmUsICRvcHRpb25zSGFzaFJlZikgPSBAXzsKIAogICAgIG15ICRoZWFk
ZXJTdGFydFJlZ0V4ID0gJHN2bkRpZmZTdGFydFJlZ0V4OyAjIFNWTi1zdHlsZSBoZWFkZXIgZm9y
IHRoZSBkZWZhdWx0CiAKICAgICBteSAkaGVhZGVySGFzaFJlZjsgIyBMYXN0IGhlYWRlciBmb3Vu
ZCwgYXMgcmV0dXJuZWQgYnkgcGFyc2VEaWZmSGVhZGVyKCkuCiAgICAgbXkgJHN2blByb3BlcnRp
ZXNIYXNoUmVmOyAjIExhc3QgU1ZOIHByb3BlcnRpZXMgZGlmZiBmb3VuZCwgYXMgcmV0dXJuZWQg
YnkgcGFyc2VTdm5EaWZmUHJvcGVydGllcygpLgogICAgIG15ICRzdm5UZXh0OworICAgIG15ICRp
bmRleFBhdGhFT0w7CiAgICAgd2hpbGUgKGRlZmluZWQoJGxpbmUpKSB7CiAgICAgICAgIGlmICgh
JGhlYWRlckhhc2hSZWYgJiYgKCRsaW5lID1+ICRnaXREaWZmU3RhcnRSZWdFeCkpIHsKICAgICAg
ICAgICAgICMgVGhlbiBhc3N1bWUgYWxsIGRpZmZzIGluIHRoZSBwYXRjaCBhcmUgR2l0LWZvcm1h
dHRlZC4gVGhpcwpAQCAtODYxLDYgKzkwNCwxMSBAQCBzdWIgcGFyc2VEaWZmKCQkKQogICAgICAg
ICB9CiAgICAgICAgIGlmICgkbGluZSAhfiAkaGVhZGVyU3RhcnRSZWdFeCkgewogICAgICAgICAg
ICAgIyBUaGVuIHdlIGFyZSBpbiB0aGUgYm9keSBvZiB0aGUgZGlmZi4KKyAgICAgICAgICAgIGlm
ICgkaW5kZXhQYXRoRU9MICYmICRsaW5lICF+IC8kY2h1bmtSYW5nZVJlZ0V4LykgeworICAgICAg
ICAgICAgICAgICMgVGhlIGNodW5rIHJhbmdlIGlzIHBhcnQgb2YgdGhlIGJvZHkgb2YgdGhlIGRp
ZmYsIGJ1dCBpdHMgbGluZSBlbmRpbmdzIHNob3VsZCd0IGJlCisgICAgICAgICAgICAgICAgIyBt
b2RpZmllZCBvciBwYXRjaCgxKSB3aWxsIGNvbXBsYWluLiBTbywgd2Ugb25seSBtb2RpZnkgbm9u
LWNodW5rIHJhbmdlIGxpbmVzLgorICAgICAgICAgICAgICAgICRsaW5lID1+IHMvXHJcbnxccnxc
bi8kaW5kZXhQYXRoRU9ML2c7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAkc3ZuVGV4dCAu
PSAkbGluZTsKICAgICAgICAgICAgICRsaW5lID0gPCRmaWxlSGFuZGxlPjsKICAgICAgICAgICAg
IG5leHQ7CkBAIC04NzMsNiArOTIxLDkgQEAgc3ViIHBhcnNlRGlmZigkJCkKICAgICAgICAgfQog
CiAgICAgICAgICgkaGVhZGVySGFzaFJlZiwgJGxpbmUpID0gcGFyc2VEaWZmSGVhZGVyKCRmaWxl
SGFuZGxlLCAkbGluZSk7CisgICAgICAgIGlmICghJG9wdGlvbnNIYXNoUmVmIHx8ICEkb3B0aW9u
c0hhc2hSZWYtPntzaG91bGROb3RVc2VJbmRleFBhdGhFT0x9KSB7CisgICAgICAgICAgICAkaW5k
ZXhQYXRoRU9MID0gZmlyc3RFT0xJbkZpbGUoJGhlYWRlckhhc2hSZWYtPntpbmRleFBhdGh9KSBp
ZiAhJGhlYWRlckhhc2hSZWYtPntpc05ld30gJiYgISRoZWFkZXJIYXNoUmVmLT57aXNCaW5hcnl9
OworICAgICAgICB9CiAKICAgICAgICAgJHN2blRleHQgLj0gJGhlYWRlckhhc2hSZWYtPntzdm5D
b252ZXJ0ZWRUZXh0fTsKICAgICB9CkBAIC0xMTY3LDEzICsxMjE4LDE5IEBAIHN1YiBwYXJzZVN2
blByb3BlcnR5VmFsdWUoJCQpCiAjIEFyZ3M6CiAjICAgJGZpbGVIYW5kbGU6IEEgZmlsZSBoYW5k
bGUgdG8gdGhlIHBhdGNoIGZpbGUgdGhhdCBoYXMgbm90IHlldCBiZWVuCiAjICAgICAgICAgICAg
ICAgIHJlYWQgZnJvbS4KKyMgICAkb3B0aW9uc0hhc2hSZWY6IGEgaGFzaCByZWZlcmVuY2UgcmVw
cmVzZW50aW5nIG9wdGlvbmFsIG9wdGlvbnMgdG8gdXNlCisjICAgICAgICAgICAgICAgICAgICB3
aGVuIHByb2Nlc3NpbmcgYSBkaWZmLgorIyAgICAgc2hvdWxkTm90VXNlSW5kZXhQYXRoRU9MOiB3
aGV0aGVyIHRvIHVzZSB0aGUgbGluZSBlbmRpbmdzIGluIHRoZSBkaWZmIGluc3RlYWQKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiB0aGUgbGluZSBlbmRpbmdzIGlu
IHRoZSB0YXJnZXQgZmlsZTsgdGhlCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlIG9mIDEgaWYgc3ZuQ29udmVydGVkVGV4dCBzaG91bGQgdXNlIHRoZSBsaW5lCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuZGluZ3MgaW4gdGhlIGRpZmYuCiAjCiAjIFJldHVy
bnM6CiAjICAgQGRpZmZIYXNoUmVmczogYW4gYXJyYXkgb2YgZGlmZiBoYXNoIHJlZmVyZW5jZXMu
CiAjICAgICAgICAgICAgICAgICAgU2VlIHRoZSAlZGlmZkhhc2ggZG9jdW1lbnRhdGlvbiBhYm92
ZS4KLXN1YiBwYXJzZVBhdGNoKCQpCitzdWIgcGFyc2VQYXRjaCgkOyQpCiB7Ci0gICAgbXkgKCRm
aWxlSGFuZGxlKSA9IEBfOworICAgIG15ICgkZmlsZUhhbmRsZSwgJG9wdGlvbnNIYXNoUmVmKSA9
IEBfOwogCiAgICAgbXkgJG5ld0RpZmZIYXNoUmVmczsKICAgICBteSBAZGlmZkhhc2hSZWZzOyAj
IHJldHVybiB2YWx1ZQpAQCAtMTE4Miw3ICsxMjM5LDcgQEAgc3ViIHBhcnNlUGF0Y2goJCkKIAog
ICAgIHdoaWxlIChkZWZpbmVkKCRsaW5lKSkgeyAjIE90aGVyd2lzZSwgYXQgRU9GLgogCi0gICAg
ICAgICgkbmV3RGlmZkhhc2hSZWZzLCAkbGluZSkgPSBwYXJzZURpZmYoJGZpbGVIYW5kbGUsICRs
aW5lKTsKKyAgICAgICAgKCRuZXdEaWZmSGFzaFJlZnMsICRsaW5lKSA9IHBhcnNlRGlmZigkZmls
ZUhhbmRsZSwgJGxpbmUsICRvcHRpb25zSGFzaFJlZik7CiAKICAgICAgICAgcHVzaCBAZGlmZkhh
c2hSZWZzLCBAJG5ld0RpZmZIYXNoUmVmczsKICAgICB9CkBAIC0xNDQwLDcgKzE0OTcsNiBAQCBz
dWIgZml4Q2hhbmdlTG9nUGF0Y2goJCkKICAgICAkZGVsZXRlZExpbmVDb3VudCArPSAkZGF0ZVN0
YXJ0SW5kZXggLSAkY2h1bmtTdGFydEluZGV4OwogCiAgICAgIyBVcGRhdGUgdGhlIGluaXRpYWwg
Y2h1bmsgcmFuZ2UuCi0gICAgbXkgJGNodW5rUmFuZ2VSZWdFeCA9ICdeXEBcQCAtKFxkKyksKFxk
KykgXCtcZCssKFxkKykgXEBcQCQnOyAjIGUuZy4gQEAgLTIsNiArMiwxOCBAQAogICAgIGlmICgk
bGluZXNbJGNodW5rU3RhcnRJbmRleCAtIDFdICF+IC8kY2h1bmtSYW5nZVJlZ0V4LykgewogICAg
ICAgICAjIEZJWE1FOiBIYW5kbGUgZXJyb3JzIGRpZmZlcmVudGx5IGZyb20gQ2hhbmdlTG9nIGZp
bGVzIHRoYXQKICAgICAgICAgIyBhcmUgb2theSBidXQgc2hvdWxkIG5vdCBiZSBhbHRlcmVkLiBU
aGF0IHdheSB3ZSBjYW4gZmluZCBvdXQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9W
Q1NVdGlsc191bml0dGVzdC9wYXJzZURpZmYucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZi5wbAkocmV2aXNpb24gODMz
ODEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VE
aWZmLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk4LDcgKzExOTgsNyBAQCBmb3JlYWNoIG15ICR0
ZXN0Q2FzZSAoQHRlc3RDYXNlSGFzaFJlZnMpCiAgICAgb3BlbigkZmlsZUhhbmRsZSwgIjwiLCBc
JHRlc3RDYXNlLT57aW5wdXRUZXh0fSk7CiAgICAgbXkgJGxpbmUgPSA8JGZpbGVIYW5kbGU+Owog
Ci0gICAgbXkgQGdvdCA9IFZDU1V0aWxzOjpwYXJzZURpZmYoJGZpbGVIYW5kbGUsICRsaW5lKTsK
KyAgICBteSBAZ290ID0gVkNTVXRpbHM6OnBhcnNlRGlmZigkZmlsZUhhbmRsZSwgJGxpbmUsIHsi
c2hvdWxkTm90VXNlSW5kZXhQYXRoRU9MIiA9PiAxfSk7CiAgICAgbXkgJGV4cGVjdGVkUmV0dXJu
ID0gJHRlc3RDYXNlLT57ZXhwZWN0ZWRSZXR1cm59OwogCiAgICAgaXNfZGVlcGx5KFxAZ290LCAk
ZXhwZWN0ZWRSZXR1cm4sICIkdGVzdE5hbWVTdGFydCByZXR1cm4gdmFsdWUuIik7CkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmV2l0aE1v
Y2tGaWxlcy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRp
bHNfdW5pdHRlc3QvcGFyc2VEaWZmV2l0aE1vY2tGaWxlcy5wbAkocmV2aXNpb24gMCkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZXaXRoTW9j
a0ZpbGVzLnBsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwNSBAQAorIyEvdXNyL2Jpbi9wZXJs
IC13CisjCisjIENvcHlyaWdodCAoQykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIu
MSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyMgCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIyAKKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCisjIFVuaXQgdGVzdHMgb2YgcGFyc2VEaWZmKCkg
d2l0aCBtb2NrIGZpbGVzOyB0ZXN0IG92ZXJyaWRlIG9mIHBhdGNoIEVPTCB3aXRoIEVPTCBvZiB0
YXJnZXQgZmlsZS4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIEZpbGU6OlRl
bXA7Cit1c2UgUE9TSVggcXcvZ2V0Y3dkLzsKK3VzZSBUZXN0OjpNb3JlOwordXNlIFZDU1V0aWxz
OworCitteSAkZ2l0RGlmZkhlYWRlckZvck5ld0ZpbGUgPSA8PEVPRjsKK2RpZmYgLS1naXQgYS9N
YWtlZmlsZSBiL01ha2VmaWxlCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u
NzU2ZTg2NAorLS0tIC9kZXYvbnVsbAorKysrIGIvTWFrZWZpbGUKK0BAIC0wLDAgKzEsMTcgQEAK
K0VPRgorCitteSAkZ2l0RGlmZkhlYWRlciA9IDw8RU9GOworZGlmZiAtLWdpdCBhL01ha2VmaWxl
IGIvTWFrZWZpbGUKK2luZGV4IDc1NmU4NjQuLjA0ZDJhZTEgMTAwNjQ0CistLS0gYS9NYWtlZmls
ZQorKysrIGIvTWFrZWZpbGUKK0BAIC0xLDMgKzEsNCBAQAorRU9GCisKK215ICRzdm5Db252ZXJ0
ZWRHaXREaWZmSGVhZGVyID0gPDxFT0Y7CitJbmRleDogTWFrZWZpbGUKK2luZGV4IDc1NmU4NjQu
LjA0ZDJhZTEgMTAwNjQ0CistLS0gTWFrZWZpbGUKKysrKyBNYWtlZmlsZQorQEAgLTEsMyArMSw0
IEBACitFT0YKKworbXkgJHN2bkNvbnZlcnRlZEdpdERpZmZIZWFkZXJGb3JOZXdGaWxlID0gPDxF
T0Y7CitJbmRleDogTWFrZWZpbGUKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw
Li43NTZlODY0CistLS0gTWFrZWZpbGUKKysrKyBNYWtlZmlsZQorQEAgLTAsMCArMSwxNyBAQAor
RU9GCisKK215ICRzdm5EaWZmSGVhZGVyRm9yTmV3RmlsZSA9IDw8RU9GOworSW5kZXg6IE1ha2Vm
aWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CistLS0gTWFrZWZpbGUJKHJldmlzaW9uIDApCisrKysgTWFrZWZpbGUJ
KHJldmlzaW9uIDApCitAQCAtMCwwICsxLDE3IEBACitFT0YKKworbXkgJHN2bkRpZmZIZWFkZXIg
PSA8PEVPRjsKK0luZGV4OiBNYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIE1ha2VmaWxlCShyZXZp
c2lvbiA1MzA1MikKKysrKyBNYWtlZmlsZQkod29ya2luZyBjb3B5KQorQEAgLTEsMyArMSw0IEBA
CitFT0YKKworbXkgJGRpZmZCb2R5ID0gPDxFT0Y7CisrCisgTU9EVUxFUyA9IEphdmFTY3JpcHRD
b3JlIEphdmFTY3JpcHRHbHVlIFdlYkNvcmUgV2ViS2l0IFdlYktpdFRvb2xzCisgCisgYWxsOgor
RU9GCisKK215ICRNYWtlZmlsZUNvbnRlbnRzID0gPDxFT0Y7CitNT0RVTEVTID0gSmF2YVNjcmlw
dENvcmUgSmF2YVNjcmlwdEdsdWUgV2ViQ29yZSBXZWJLaXQgV2ViS2l0VG9vbHMgCisKK2FsbDoK
K0VPRgorCitteSAkbW9ja0RpciA9IEZpbGU6OlRlbXAtPnRlbXBkaXIoInBhcnNlRGlmZlhYWFgi
LCBDTEVBTlVQID0+IDEpOword3JpdGVUb0ZpbGUoRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkbW9ja0Rp
ciwgIk1ha2VmaWxlV2l0aFVuaXhFT0wiKSwgJE1ha2VmaWxlQ29udGVudHMpOword3JpdGVUb0Zp
bGUoRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkbW9ja0RpciwgIk1ha2VmaWxlV2l0aFdpbmRvd3NFT0wi
KSwgdG9XaW5kb3dzTGluZUVuZGluZ3MoJE1ha2VmaWxlQ29udGVudHMpKTsKKworIyBUaGUgYXJy
YXkgb2YgdGVzdCBjYXNlcy4KK215IEB0ZXN0Q2FzZUhhc2hSZWZzID0gKAorIyMjCisjIFNWTiB0
ZXN0IGNhc2VzCisjIworeworICAgICMgTmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiU1ZOOiBQ
YXRjaCB3aXRoIFVuaXggbGluZSBlbmRpbmdzIGFuZCBJbmRleFBhdGggaGFzIFVuaXggbGluZSBl
bmRpbmdzIiwKKyAgICBpbnB1dFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlmZkhlYWRl
ciwgIk1ha2VmaWxlIiwgIk1ha2VmaWxlV2l0aFVuaXhFT0wiKSAuICRkaWZmQm9keSwKKyAgICBl
eHBlY3RlZFJldHVybiA9PiBbCitbeworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gc3Vic3RpdHV0
ZVN0cmluZygkc3ZuRGlmZkhlYWRlciwgIk1ha2VmaWxlIiwgIk1ha2VmaWxlV2l0aFVuaXhFT0wi
KSAuICRkaWZmQm9keSwgIyBTYW1lIGFzIGlucHV0IHRleHQKKyAgICBpbmRleFBhdGggPT4gIk1h
a2VmaWxlV2l0aFVuaXhFT0wiLAorICAgIGlzU3ZuID0+IDEsCisgICAgc291cmNlUmV2aXNpb24g
PT4gIjUzMDUyIiwKK31dLAordW5kZWZdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5kZWYs
Cit9LAoreworICAgICMgTmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiU1ZOOiBQYXRjaCB3aXRo
IFdpbmRvd3MgbGluZSBlbmRpbmdzIGFuZCBJbmRleFBhdGggaGFzIFVuaXggbGluZSBlbmRpbmdz
IiwKKyAgICBpbnB1dFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlmZkhlYWRlciwgIk1h
a2VmaWxlIiwgIk1ha2VmaWxlV2l0aFVuaXhFT0wiKSAuIHRvV2luZG93c0xpbmVFbmRpbmdzKCRk
aWZmQm9keSksCisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252ZXJ0ZWRU
ZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtl
ZmlsZVdpdGhVbml4RU9MIikgLiAkZGlmZkJvZHksCisgICAgaW5kZXhQYXRoID0+ICJNYWtlZmls
ZVdpdGhVbml4RU9MIiwKKyAgICBpc1N2biA9PiAxLAorICAgIHNvdXJjZVJldmlzaW9uID0+ICI1
MzA1MiIsCit9XSwKK3VuZGVmXSwKKyAgICBleHBlY3RlZE5leHRMaW5lID0+IHVuZGVmLAorfSwK
K3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIlNWTjogUGF0Y2ggd2l0aCBXaW5k
b3dzIGxpbmUgZW5kaW5ncyBhbmQgSW5kZXhQYXRoIGhhcyBXaW5kb3dzIGxpbmUgZW5kaW5ncyIs
CisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRpZmZIZWFkZXIsICJNYWtl
ZmlsZSIsICJNYWtlZmlsZVdpdGhXaW5kb3dzRU9MIikgLiB0b1dpbmRvd3NMaW5lRW5kaW5ncygk
ZGlmZkJvZHkpLAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK1t7CisgICAgc3ZuQ29udmVydGVk
VGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5EaWZmSGVhZGVyLCAiTWFrZWZpbGUiLCAiTWFr
ZWZpbGVXaXRoV2luZG93c0VPTCIpIC4gdG9XaW5kb3dzTGluZUVuZGluZ3MoJGRpZmZCb2R5KSwg
IyBTYW1lIGFzIGlucHV0IHRleHQKKyAgICBpbmRleFBhdGggPT4gIk1ha2VmaWxlV2l0aFdpbmRv
d3NFT0wiLAorICAgIGlzU3ZuID0+IDEsCisgICAgc291cmNlUmV2aXNpb24gPT4gIjUzMDUyIiwK
K31dLAordW5kZWZdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5kZWYsCit9LAoreworICAg
ICMgTmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiU1ZOOiBQYXRjaCB3aXRoIFVuaXggbGluZSBl
bmRpbmdzIGFuZCBJbmRleFBhdGggaGFzIFdpbmRvd3MgbGluZSBlbmRpbmdzIiwKKyAgICBpbnB1
dFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlmZkhlYWRlciwgIk1ha2VmaWxlIiwgIk1h
a2VmaWxlV2l0aFdpbmRvd3NFT0wiKSAuICRkaWZmQm9keSwKKyAgICBleHBlY3RlZFJldHVybiA9
PiBbCitbeworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlm
ZkhlYWRlciwgIk1ha2VmaWxlIiwgIk1ha2VmaWxlV2l0aFdpbmRvd3NFT0wiKSAuIHRvV2luZG93
c0xpbmVFbmRpbmdzKCRkaWZmQm9keSksCisgICAgaW5kZXhQYXRoID0+ICJNYWtlZmlsZVdpdGhX
aW5kb3dzRU9MIiwKKyAgICBpc1N2biA9PiAxLAorICAgIHNvdXJjZVJldmlzaW9uID0+ICI1MzA1
MiIsCit9XSwKK3VuZGVmXSwKKyAgICBleHBlY3RlZE5leHRMaW5lID0+IHVuZGVmLAorfSwKK3sK
KyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIlNWTjogUGF0Y2ggd2l0aCBVbml4IGxp
bmUgZW5kaW5ncyBhbmQgbm9uZXhpc3RlbnQgSW5kZXhQYXRoIiwKKyAgICBpbnB1dFRleHQgPT4g
c3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlmZkhlYWRlckZvck5ld0ZpbGUsICJNYWtlZmlsZSIsICJO
b25leGlzdGVudEZpbGUiKSAuICRkaWZmQm9keSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCitb
eworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlmZkhlYWRl
ckZvck5ld0ZpbGUsICJNYWtlZmlsZSIsICJOb25leGlzdGVudEZpbGUiKSAuICRkaWZmQm9keSwg
IyBTYW1lIGFzIGlucHV0IHRleHQKKyAgICBpbmRleFBhdGggPT4gIk5vbmV4aXN0ZW50RmlsZSIs
CisgICAgaXNTdm4gPT4gMSwKKyAgICBpc05ldyA9PiAxLAorfV0sCit1bmRlZl0sCisgICAgZXhw
ZWN0ZWROZXh0TGluZSA9PiB1bmRlZiwKK30sCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZO
YW1lID0+ICJTVk46IFBhdGNoIHdpdGggV2luZG93cyBsaW5lIGVuZGluZ3MgYW5kIG5vbmV4aXN0
ZW50IEluZGV4UGF0aCIsCisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRp
ZmZIZWFkZXJGb3JOZXdGaWxlLCAiTWFrZWZpbGUiLCAiTm9uZXhpc3RlbnRGaWxlIikgLiB0b1dp
bmRvd3NMaW5lRW5kaW5ncygkZGlmZkJvZHkpLAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK1t7
CisgICAgc3ZuQ29udmVydGVkVGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5EaWZmSGVhZGVy
Rm9yTmV3RmlsZSwgIk1ha2VmaWxlIiwgIk5vbmV4aXN0ZW50RmlsZSIpIC4gdG9XaW5kb3dzTGlu
ZUVuZGluZ3MoJGRpZmZCb2R5KSwgIyBTYW1lIGFzIGlucHV0IHRleHQKKyAgICBpbmRleFBhdGgg
PT4gIk5vbmV4aXN0ZW50RmlsZSIsCisgICAgaXNTdm4gPT4gMSwKKyAgICBpc05ldyA9PiAxLAor
fV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiB1bmRlZiwKK30sCisjIyMKKyMg
R2l0IHRlc3QgY2FzZXMKKyMjCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJH
aXQ6IFBhdGNoIHdpdGggVW5peCBsaW5lIGVuZGluZ3MgYW5kIEluZGV4UGF0aCBoYXMgVW5peCBs
aW5lIGVuZGluZ3MiLAorICAgIGlucHV0VGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRnaXREaWZm
SGVhZGVyLCAiTWFrZWZpbGUiLCAiTWFrZWZpbGVXaXRoVW5peEVPTCIpIC4gJGRpZmZCb2R5LAor
ICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK1t7CisgICAgc3ZuQ29udmVydGVkVGV4dCA9PiBzdWJz
dGl0dXRlU3RyaW5nKCRzdm5Db252ZXJ0ZWRHaXREaWZmSGVhZGVyLCAiTWFrZWZpbGUiLCAiTWFr
ZWZpbGVXaXRoVW5peEVPTCIpIC4gJGRpZmZCb2R5LCAjIFNhbWUgYXMgaW5wdXQgdGV4dAorICAg
IGluZGV4UGF0aCA9PiAiTWFrZWZpbGVXaXRoVW5peEVPTCIsCisgICAgaXNHaXQgPT4gMSwKK31d
LAordW5kZWZdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5kZWYsCit9LAoreworICAgICMg
TmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiR2l0OiBQYXRjaCB3aXRoIFdpbmRvd3MgbGluZSBl
bmRpbmdzIGFuZCBJbmRleFBhdGggaGFzIFVuaXggbGluZSBlbmRpbmdzIiwKKyAgICBpbnB1dFRl
eHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkZ2l0RGlmZkhlYWRlciwgIk1ha2VmaWxlIiwgIk1ha2Vm
aWxlV2l0aFVuaXhFT0wiKSAuIHRvV2luZG93c0xpbmVFbmRpbmdzKCRkaWZmQm9keSksCisgICAg
ZXhwZWN0ZWRSZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IHN1YnN0aXR1
dGVTdHJpbmcoJHN2bkNvbnZlcnRlZEdpdERpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmls
ZVdpdGhVbml4RU9MIikgLiAkZGlmZkJvZHksCisgICAgaW5kZXhQYXRoID0+ICJNYWtlZmlsZVdp
dGhVbml4RU9MIiwKKyAgICBpc0dpdCA9PiAxLAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWRO
ZXh0TGluZSA9PiB1bmRlZiwKK30sCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+
ICJHaXQ6IFBhdGNoIHdpdGggV2luZG93cyBsaW5lIGVuZGluZ3MgYW5kIEluZGV4UGF0aCBoYXMg
V2luZG93cyBsaW5lIGVuZGluZ3MiLAorICAgIGlucHV0VGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5n
KCRnaXREaWZmSGVhZGVyLCAiTWFrZWZpbGUiLCAiTWFrZWZpbGVXaXRoV2luZG93c0VPTCIpIC4g
dG9XaW5kb3dzTGluZUVuZGluZ3MoJGRpZmZCb2R5KSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBb
CitbeworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuQ29udmVy
dGVkR2l0RGlmZkhlYWRlciwgIk1ha2VmaWxlIiwgIk1ha2VmaWxlV2l0aFdpbmRvd3NFT0wiKSAu
IHRvV2luZG93c0xpbmVFbmRpbmdzKCRkaWZmQm9keSksICMgU2FtZSBhcyBpbnB1dCB0ZXh0Cisg
ICAgaW5kZXhQYXRoID0+ICJNYWtlZmlsZVdpdGhXaW5kb3dzRU9MIiwKKyAgICBpc0dpdCA9PiAx
LAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiB1bmRlZiwKK30sCit7Cisg
ICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJHaXQ6IFBhdGNoIHdpdGggVW5peCBsaW5l
IGVuZGluZ3MgYW5kIEluZGV4UGF0aCBoYXMgV2luZG93cyBsaW5lIGVuZGluZ3MiLAorICAgIGlu
cHV0VGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRnaXREaWZmSGVhZGVyLCAiTWFrZWZpbGUiLCAi
TWFrZWZpbGVXaXRoV2luZG93c0VPTCIpIC4gJGRpZmZCb2R5LAorICAgIGV4cGVjdGVkUmV0dXJu
ID0+IFsKK1t7CisgICAgc3ZuQ29udmVydGVkVGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5D
b252ZXJ0ZWRHaXREaWZmSGVhZGVyLCAiTWFrZWZpbGUiLCAiTWFrZWZpbGVXaXRoV2luZG93c0VP
TCIpIC4gdG9XaW5kb3dzTGluZUVuZGluZ3MoJGRpZmZCb2R5KSwKKyAgICBpbmRleFBhdGggPT4g
Ik1ha2VmaWxlV2l0aFdpbmRvd3NFT0wiLAorICAgIGlzR2l0ID0+IDEsCit9XSwKK3VuZGVmXSwK
KyAgICBleHBlY3RlZE5leHRMaW5lID0+IHVuZGVmLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0Cisg
ICAgZGlmZk5hbWUgPT4gIkdpdDogUGF0Y2ggd2l0aCBVbml4IGxpbmUgZW5kaW5ncyBhbmQgbm9u
ZXhpc3RlbnQgSW5kZXhQYXRoIiwKKyAgICBpbnB1dFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygk
Z2l0RGlmZkhlYWRlckZvck5ld0ZpbGUsICJNYWtlZmlsZSIsICJOb25leGlzdGVudEZpbGUiKSAu
ICRkaWZmQm9keSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCitbeworICAgIHN2bkNvbnZlcnRl
ZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuQ29udmVydGVkR2l0RGlmZkhlYWRlckZvck5l
d0ZpbGUsICJNYWtlZmlsZSIsICJOb25leGlzdGVudEZpbGUiKSAuICRkaWZmQm9keSwgIyBTYW1l
IGFzIGlucHV0IHRleHQKKyAgICBpbmRleFBhdGggPT4gIk5vbmV4aXN0ZW50RmlsZSIsCisgICAg
aXNHaXQgPT4gMSwKKyAgICBpc05ldyA9PiAxLAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWRO
ZXh0TGluZSA9PiB1bmRlZiwKK30sCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+
ICJHaXQ6IFBhdGNoIHdpdGggV2luZG93cyBsaW5lIGVuZGluZ3MgYW5kIG5vbmV4aXN0ZW50IElu
ZGV4UGF0aCIsCisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJGdpdERpZmZIZWFk
ZXJGb3JOZXdGaWxlLCAiTWFrZWZpbGUiLCAiTm9uZXhpc3RlbnRGaWxlIikgLiB0b1dpbmRvd3NM
aW5lRW5kaW5ncygkZGlmZkJvZHkpLAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK1t7CisgICAg
c3ZuQ29udmVydGVkVGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5Db252ZXJ0ZWRHaXREaWZm
SGVhZGVyRm9yTmV3RmlsZSwgIk1ha2VmaWxlIiwgIk5vbmV4aXN0ZW50RmlsZSIpIC4gdG9XaW5k
b3dzTGluZUVuZGluZ3MoJGRpZmZCb2R5KSwgIyBTYW1lIGFzIGlucHV0IHRleHQKKyAgICBpbmRl
eFBhdGggPT4gIk5vbmV4aXN0ZW50RmlsZSIsCisgICAgaXNHaXQgPT4gMSwKKyAgICBpc05ldyA9
PiAxLAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiB1bmRlZiwKK30sCisp
OworCitteSAkdGVzdENhc2VzQ291bnQgPSBAdGVzdENhc2VIYXNoUmVmczsKK3BsYW4odGVzdHMg
PT4gMiAqICR0ZXN0Q2FzZXNDb3VudCk7ICMgVG90YWwgbnVtYmVyIG9mIGFzc2VydGlvbnMuCisK
K215ICRzYXZlZENXRCA9IGdldGN3ZCgpOworY2hkaXIoJG1vY2tEaXIpIG9yIGRpZTsKK2ZvcmVh
Y2ggbXkgJHRlc3RDYXNlIChAdGVzdENhc2VIYXNoUmVmcykgeworICAgIG15ICR0ZXN0TmFtZVN0
YXJ0ID0gInBhcnNlRGlmZigpOiAkdGVzdENhc2UtPntkaWZmTmFtZX06IGNvbXBhcmluZyI7CisK
KyAgICBteSAkZmlsZUhhbmRsZTsKKyAgICBvcGVuKCRmaWxlSGFuZGxlLCAiPCIsIFwkdGVzdENh
c2UtPntpbnB1dFRleHR9KTsKKyAgICBteSAkbGluZSA9IDwkZmlsZUhhbmRsZT47CisKKyAgICBt
eSBAZ290ID0gVkNTVXRpbHM6OnBhcnNlRGlmZigkZmlsZUhhbmRsZSwgJGxpbmUpOworICAgIG15
ICRleHBlY3RlZFJldHVybiA9ICR0ZXN0Q2FzZS0+e2V4cGVjdGVkUmV0dXJufTsKKworICAgIGlz
X2RlZXBseShcQGdvdCwgJGV4cGVjdGVkUmV0dXJuLCAiJHRlc3ROYW1lU3RhcnQgcmV0dXJuIHZh
bHVlLiIpOworCisgICAgbXkgJGdvdE5leHRMaW5lID0gPCRmaWxlSGFuZGxlPjsKKyAgICBpcygk
Z290TmV4dExpbmUsICR0ZXN0Q2FzZS0+e2V4cGVjdGVkTmV4dExpbmV9LCAgIiR0ZXN0TmFtZVN0
YXJ0IG5leHQgcmVhZCBsaW5lLiIpOworfQorY2hkaXIoJHNhdmVkQ1dEKTsKKworc3ViIHN1YnN0
aXR1dGVTdHJpbmcKK3sKKyAgICBteSAoJHN0cmluZywgJHNlYXJjaFN0cmluZywgJHJlcGxhY2Vt
ZW50U3RyaW5nKSA9IEBfOworICAgICRzdHJpbmcgPX4gcy8kc2VhcmNoU3RyaW5nLyRyZXBsYWNl
bWVudFN0cmluZy9nOworICAgIHJldHVybiAkc3RyaW5nOworfQorCitzdWIgd3JpdGVUb0ZpbGUK
K3sKKyAgICBteSAoJGZpbGUsICR0ZXh0KSA9IEBfOworICAgIG9wZW4oRklMRSwgIj4kZmlsZSIp
IG9yIGRpZTsKKyAgICBwcmludCBGSUxFICR0ZXh0OworICAgIGNsb3NlKEZJTEUpOworfQpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRU9MLnBs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVz
dC9wYXJzZUVPTC5wbAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9W
Q1NVdGlsc191bml0dGVzdC9wYXJzZUVPTC5wbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBA
QAorIyEvdXNyL2Jpbi9wZXJsIC13CisjCisjIENvcHlyaWdodCAoQykgMjAxMSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisj
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyMgCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIyAKKyMgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCisjIFVuaXQgdGVz
dHMgb2YgVkNTVXRpbHM6OnBhcnNlRmlyc3RFT0woKS4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJu
aW5nczsKKwordXNlIFRlc3Q6OlNpbXBsZSB0ZXN0cyA9PiA3OwordXNlIFZDU1V0aWxzOworCitt
eSAkdGl0bGU7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUZpcnN0RU9MOiBFbXB0eSBz
dHJpbmcuIjsKK29rKCFkZWZpbmVkKGZpcnN0RU9MSW5TdHJpbmcoIiIpKSwgJHRpdGxlKTsKKwor
IyBOZXcgdGVzdAorJHRpdGxlID0gInBhcnNlRmlyc3RFT0w6IExpbmUgd2l0aG91dCBhIGxpbmUg
ZW5kaW5nIGNoYXJhY3RlciI7CitvayghZGVmaW5lZChmaXJzdEVPTEluU3RyaW5nKCJUaGlzIGxp
bmUgZG9lc24ndCBoYXZlIGEgbGluZSBlbmRpbmcgY2hhcmFjdGVyLiIpKSwgJHRpdGxlKTsKKwor
IyBOZXcgdGVzdAorJHRpdGxlID0gInBhcnNlRmlyc3RFT0w6IExpbmUgd2l0aCBXaW5kb3dzIGxp
bmUgZW5kaW5nLiI7CitvayhmaXJzdEVPTEluU3RyaW5nKCJUaGlzIGxpbmUgZW5kcyB3aXRoIGEg
V2luZG93cyBsaW5lIGVuZGluZy5cclxuIikgZXEgIlxyXG4iLCAkdGl0bGUpOworCisjIE5ldyB0
ZXN0CiskdGl0bGUgPSAicGFyc2VGaXJzdEVPTDogTGluZSB3aXRoIFVuaXggbGluZSBlbmRpbmcu
IjsKK29rKGZpcnN0RU9MSW5TdHJpbmcoIlRoaXMgbGluZSBlbmRzIHdpdGggYSBVbml4IGxpbmUg
ZW5kaW5nLlxuIikgZXEgIlxuIiwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gInBh
cnNlRmlyc3RFT0w6IExpbmUgd2l0aCBNYWMgbGluZSBlbmRpbmcuIjsKK29rKGZpcnN0RU9MSW5T
dHJpbmcoIlRoaXMgbGluZSBlbmRzIHdpdGggYSBNYWMgbGluZSBlbmRpbmcuXHIiKSBlcSAiXHIi
LCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VGaXJzdEVPTDogTGluZSB3
aXRoIE1hYyBsaW5lIGVuZGluZyBmb2xsb3dlZCBieSBsaW5lIHdpdGhvdXQgYSBsaW5lIGVuZGlu
Zy4iOworb2soZmlyc3RFT0xJblN0cmluZygiVGhpcyBsaW5lIGVuZHMgd2l0aCBhIE1hYyBsaW5l
IGVuZGluZy5cclRoaXMgbGluZSBkb2Vzbid0IGhhdmUgYSBsaW5lIGVuZGluZy4iKSBlcSAiXHIi
LCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VGaXJzdEVPTDogTGluZSB3
aXRoIGEgbWl4IG9mIGxpbmUgZW5kaW5ncy4iOworb2soZmlyc3RFT0xJblN0cmluZygiVGhpcyBs
aW5lIGNvbnRhaW5zIGEgbWl4IG9mIGxpbmUgZW5kaW5ncy5cclxuXHJcblxyXHJcblxuXG5cbiIp
IGVxICJcclxuIiwgJHRpdGxlKTsKKworc3ViIGZpcnN0RU9MSW5TdHJpbmcKK3sKKyAgICBteSAo
JHN0cmluZykgPSBAXzsKKyAgICBteSAkZmlsZUhhbmRsZTsKKyAgICBvcGVuKCRmaWxlSGFuZGxl
LCAiPCIsIFwkc3RyaW5nKTsKKyAgICByZXR1cm4gcGFyc2VGaXJzdEVPTCgkZmlsZUhhbmRsZSk7
Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89082</attachid>
            <date>2011-04-11 14:02:52 -0700</date>
            <delta_ts>2011-04-11 15:02:56 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>Bug53625_2.patch</filename>
            <type>text/plain</type>
            <size>22482</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgzNDU4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzYgQEAKKzIwMTEtMDQtMTEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHN2bi1hcHBseSBh
bmQvb3IgcGF0Y2goMSkgaGFzIHRyb3VibGUgYXBwbHlpbmcgcGF0Y2hlcyB0aGF0IG1ha2VzIGNo
YW5nZXMgdG8gZmlsZXMKKyAgICAgICAgd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM2MjUKKworICAgICAg
ICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBhIHBhdGNoIG1hZGUgb24gYSBTQ00gY2hlY2tvdXQgb24g
YSBVbml4IGZpbGUgc3lzdGVtIGNhbm5vdCBiZQorICAgICAgICBhcHBsaWVkIHRvIGFuIFNDTSBj
aGVja291dCBvbiBhIFdpbmRvd3MgZmlsZSBzeXN0ZW0gYW5kIHZpY2UtdmVyc2EuCisKKyAgICAg
ICAgVGhpcyBpc3N1ZSBtYW5pZmVzdHMgaXRzZWxmIGR1ZSB0byBjdXN0b20gU0NNIHNldHRpbmdz
IGFzIHdlbGwgYXMgZGlmZmVyZW5jZXMgaW4KKyAgICAgICAgZ2l0YXR0cmlidXRlcyBzdXBwb3J0
IGluIG9sZGVyIHZlcnNpb25zIG9mIEdpdCAoZS5nLiAxLjcuMC4zKS4gV2UgaW1wbGVtZW50IHN1
cHBvcnQKKyAgICAgICAgaW50byBzdm4tYXBwbHkvdW5hcHBseSB0byBjb21wZW5zYXRlIGZvciBk
aWZmZXJlbmNlcyBpbiBsaW5lIGVuZGluZ3MgYnkgY29udmVydGluZworICAgICAgICB0aGUgbGlu
ZSBlbmRpbmdzIGluIGEgcGF0Y2ggdG8gbWF0Y2ggdGhlIGxpbmUgZW5kaW5ncyBpbiB0aGUgdGFy
Z2V0IGZpbGUgKGlmIGl0IGV4aXN0cykuCisKKyAgICAgICAgKiBTY3JpcHRzL1ZDU1V0aWxzLnBt
OgorICAgICAgICAgIC0gQWRkZWQgcGFyc2VGaXJzdEVPTCgpLCB3aGljaCByZXR1cm5zIHRoZSBm
aXJzdCBlbmQtb2YtbGluZSBjaGFyYWN0ZXIocykgdGhhdCBhcHBlYXIgaW4gdGhlCisgICAgICAg
ICAgICBjb250ZW50IHJlYWQgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUgaGFuZGxlLiBPYnZpb3Vz
bHksIHRoaXMgaGV1cmlzdGljIHdpbGwgbm90IHdvcmsKKyAgICAgICAgICAgIGZvciBmaWxlcyB3
aXRoIG1peGVkIGxpbmUgZW5kaW5ncywgYnV0IEkgZG9uJ3QgZW52aXNpb24gc3VjaCBmaWxlcyB0
byBiZSB0aGUgbm9ybS4gSWYKKyAgICAgICAgICAgIHRoaXMgdHVybnMgb3V0IHRvIGJlIGFuIGlz
c3VlIHRoZW4gd2UgY2FuIGltcHJvdmUgdGhlIGhldXJpc3RpYy4KKyAgICAgICAgICAtIEFkZGVk
IGZpcnN0RU9MSW5GaWxlKCkuCisgICAgICAgICAgLSBNb2RpZmllZCBwYXJzZVBhdGNoKCkgYW5k
IHBhcnNlRGlmZigpIHRvIHRha2UgYW4gb3B0aW9uYWwgaGFzaCByZWZlcmVuY2UgdG8gYW4gb3B0
aW9ucyBoYXNoLgorICAgICAgICAgICAgSW4gcGFydGljdWxhciwgYWRkZWQgdGhlIGhhc2gga2V5
IHNob3VsZE5vdFVzZUluZGV4UGF0aEVPTCB0byBjb250cm9sIHdoZXRoZXIgdG8gdXNlIHRoZSBs
aW5lCisgICAgICAgICAgICBlbmRpbmdzIGluIHRoZSBkaWZmIGluc3RlYWQgb2YgdGhlIGxpbmUg
ZW5kaW5ncyBpbiB0aGUgdGFyZ2V0IGZpbGUuCisgICAgICAgICAgLSBFeHRyYWN0ZWQgbG9jYWwg
dmFyaWFibGUgJGNodW5rUmFuZ2VSZWdFeCBmcm9tIGZpeENoYW5nZUxvZ1BhdGNoKCkgc28gdGhh
dCBpdCBjYW4gYmUKKyAgICAgICAgICAgIHJlLXVzZWQgaW4gcGFyc2VEaWZmKCkuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZi5wbDogTW9k
aWZpZWQgdG8gcGFzcyB7c2hvdWxkTm90VXNlSW5kZXhQYXRoRU9MID0+IDF9CisgICAgICAgICAg
dG8gcGFyc2VQYXRjaCgpIHNpbmNlIHRoZXNlIHVuaXQgdGVzdHMgZG9uJ3QgY3JlYXRlIG1vY2sg
ZmlsZXMuIEluc3RlYWQsIGNyZWF0ZWQgdW5pdCB0ZXN0cyB0aGF0IHVzZQorICAgICAgICAgIG1v
Y2sgZmlsZXMgaW4gZmlsZSBWQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZXaXRoTW9ja0ZpbGVz
LnBsLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJz
ZURpZmZXaXRoTW9ja0ZpbGVzLnBsOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBl
cmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VGaXJzdEVPTC5wbDogQWRkZWQuCisKIDIwMTEtMDQt
MTAgIEtpbW1vIEtpbm51bmVuICA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBUb29scy9TY3JpcHRzL1ZDU1V0aWxz
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHJldmlzaW9uIDgz
MzgxKQorKysgVG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBDaHJpcyBKZXJk
b25layAoY2hyaXMuamVyZG9uZWtAZ21haWwuY29tKQotIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgsNiArNjgsNyBAQCBC
RUdJTiB7CiAgICAgICAgICZtYWtlRmlsZVBhdGhSZWxhdGl2ZQogICAgICAgICAmbWVyZ2VDaGFu
Z2VMb2dzCiAgICAgICAgICZub3JtYWxpemVQYXRoCisgICAgICAgICZwYXJzZUZpcnN0RU9MCiAg
ICAgICAgICZwYXJzZVBhdGNoCiAgICAgICAgICZwYXRoUmVsYXRpdmVUb1NWTlJlcG9zaXRvcnlS
b290Rm9yUGF0aAogICAgICAgICAmcHJlcGFyZVBhcnNlZFBhdGNoCkBAIC05Nyw2ICs5OCw3IEBA
IG15ICRzdm5WZXJzaW9uOwogIyBQcm9qZWN0IHRpbWUgem9uZSBmb3IgQ3VwZXJ0aW5vLCBDQSwg
VVMKIG15ICRjaGFuZ2VMb2dUaW1lWm9uZSA9ICJQU1Q4UERUIjsKIAorbXkgJGNodW5rUmFuZ2VS
ZWdFeCA9IHFyI15cQFxAIC0oXGQrKSwoXGQrKSBcK1xkKywoXGQrKSBcQFxAJCM7ICMgZS5nLiBA
QCAtMiw2ICsyLDE4IEBACiBteSAkZ2l0RGlmZlN0YXJ0UmVnRXggPSBxciNeZGlmZiAtLWdpdCAo
XHcvKT8oLispIChcdy8pPyhbXlxyXG5dKykjOwogbXkgJHN2bkRpZmZTdGFydFJlZ0V4ID0gcXIj
XkluZGV4OiAoW15cclxuXSspIzsKIG15ICRzdm5Qcm9wZXJ0aWVzU3RhcnRSZWdFeCA9IHFyI15Q
cm9wZXJ0eSBjaGFuZ2VzIG9uOiAoW15cclxuXSspIzsgIyAkMSBpcyBub3JtYWxseSB0aGUgc2Ft
ZSBhcyB0aGUgaW5kZXggcGF0aC4KQEAgLTQ0OSw2ICs0NTEsNDAgQEAgc3ViIHJlbW92ZUVPTCgk
KQogICAgIHJldHVybiAkbGluZTsKIH0KIAorc3ViIHBhcnNlRmlyc3RFT0woJCkKK3sKKyAgICBt
eSAoJGZpbGVIYW5kbGUpID0gQF87CisKKyAgICAjIE1ha2UgaW5wdXQgcmVjb3JkIHNlcGFyYXRv
ciB0aGUgbmV3LWxpbmUgY2hhcmFjdGVyIHRvIHNpbXBsaWZ5IHJlZ2V4IG1hdGNoaW5nIGJlbG93
LgorICAgIG15ICRzYXZlZElucHV0UmVjb3JkU2VwYXJhdG9yID0gJElOUFVUX1JFQ09SRF9TRVBB
UkFUT1I7CisgICAgJElOUFVUX1JFQ09SRF9TRVBBUkFUT1IgPSAiXG4iOworICAgIG15ICRmaXJz
dExpbmUgID0gPCRmaWxlSGFuZGxlPjsKKyAgICAkSU5QVVRfUkVDT1JEX1NFUEFSQVRPUiA9ICRz
YXZlZElucHV0UmVjb3JkU2VwYXJhdG9yOworCisgICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkKCRm
aXJzdExpbmUpOworCisgICAgbXkgJGVvbDsKKyAgICBpZiAoJGZpcnN0TGluZSA9fiAvXHJcbi8p
IHsKKyAgICAgICAgJGVvbCA9ICJcclxuIjsKKyAgICB9IGVsc2lmICgkZmlyc3RMaW5lID1+IC9c
ci8pIHsKKyAgICAgICAgJGVvbCA9ICJcciI7CisgICAgfSBlbHNpZiAoJGZpcnN0TGluZSA9fiAv
XG4vKSB7CisgICAgICAgICRlb2wgPSAiXG4iOworICAgIH0KKyAgICByZXR1cm4gJGVvbDsKK30K
Kworc3ViIGZpcnN0RU9MSW5GaWxlKCQpCit7CisgICAgbXkgKCRmaWxlKSA9IEBfOworICAgIG15
ICRlb2w7CisgICAgaWYgKG9wZW4oRklMRSwgJGZpbGUpKSB7CisgICAgICAgICRlb2wgPSBwYXJz
ZUZpcnN0RU9MKCpGSUxFKTsKKyAgICAgICAgY2xvc2UoRklMRSk7CisgICAgfQorICAgIHJldHVy
biAkZW9sOworfQorCiBzdWIgc3ZuU3RhdHVzKCQpCiB7CiAgICAgbXkgKCRmdWxsUGF0aCkgPSBA
XzsKQEAgLTgyMiwyMyArODU4LDMwIEBAIHN1YiBwYXJzZURpZmZIZWFkZXIoJCQpCiAjICAgJGZp
bGVIYW5kbGU6IGEgZmlsZSBoYW5kbGUgYWR2YW5jZWQgdG8gdGhlIGZpcnN0IGxpbmUgb2YgdGhl
IG5leHQKICMgICAgICAgICAgICAgICAgaGVhZGVyIGJsb2NrLiBMZWFkaW5nIGp1bmsgaXMgb2th
eS4KICMgICAkbGluZTogdGhlIGxpbmUgbGFzdCByZWFkIGZyb20gJGZpbGVIYW5kbGUuCisjICAg
JG9wdGlvbnNIYXNoUmVmOiBhIGhhc2ggcmVmZXJlbmNlIHJlcHJlc2VudGluZyBvcHRpb25hbCBv
cHRpb25zIHRvIHVzZQorIyAgICAgICAgICAgICAgICAgICAgd2hlbiBwcm9jZXNzaW5nIGEgZGlm
Zi4KKyMgICAgIHNob3VsZE5vdFVzZUluZGV4UGF0aEVPTDogd2hldGhlciB0byB1c2UgdGhlIGxp
bmUgZW5kaW5ncyBpbiB0aGUgZGlmZiBpbnN0ZWFkCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluc3RlYWQgb2YgdGhlIGxpbmUgZW5kaW5ncyBpbiB0aGUgdGFyZ2V0IGZpbGU7IHRo
ZQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiAxIGlmIHN2bkNvbnZl
cnRlZFRleHQgc2hvdWxkIHVzZSB0aGUgbGluZQorIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbmRpbmdzIGluIHRoZSBkaWZmLgogIwogIyBSZXR1cm5zICgkZGlmZkhhc2hSZWZzLCAk
bGFzdFJlYWRMaW5lKToKICMgICAkZGlmZkhhc2hSZWZzOiBBIHJlZmVyZW5jZSB0byBhbiBhcnJh
eSBvZiByZWZlcmVuY2VzIHRvICVkaWZmSGFzaCBoYXNoZXMuCiAjICAgICAgICAgICAgICAgICAg
U2VlIHRoZSAlZGlmZkhhc2ggZG9jdW1lbnRhdGlvbiBhYm92ZS4KICMgICAkbGFzdFJlYWRMaW5l
OiB0aGUgbGluZSBsYXN0IHJlYWQgZnJvbSAkZmlsZUhhbmRsZQotc3ViIHBhcnNlRGlmZigkJCkK
K3N1YiBwYXJzZURpZmYoJCQ7JCkKIHsKICAgICAjIEZJWE1FOiBBZGp1c3QgdGhpcyBtZXRob2Qg
c28gdGhhdCBpdCBkaWVzIGlmIHRoZSBmaXJzdCBsaW5lIGRvZXMgbm90CiAgICAgIyAgICAgICAg
bWF0Y2ggdGhlIHN0YXJ0IG9mIGEgZGlmZi4gIFRoaXMgd2lsbCByZXF1aXJlIGEgY2hhbmdlIHRv
CiAgICAgIyAgICAgICAgcGFyc2VQYXRjaCgpIHNvIHRoYXQgcGFyc2VQYXRjaCgpIHNraXBzIG92
ZXIgbGVhZGluZyBqdW5rLgotICAgIG15ICgkZmlsZUhhbmRsZSwgJGxpbmUpID0gQF87CisgICAg
bXkgKCRmaWxlSGFuZGxlLCAkbGluZSwgJG9wdGlvbnNIYXNoUmVmKSA9IEBfOwogCiAgICAgbXkg
JGhlYWRlclN0YXJ0UmVnRXggPSAkc3ZuRGlmZlN0YXJ0UmVnRXg7ICMgU1ZOLXN0eWxlIGhlYWRl
ciBmb3IgdGhlIGRlZmF1bHQKIAogICAgIG15ICRoZWFkZXJIYXNoUmVmOyAjIExhc3QgaGVhZGVy
IGZvdW5kLCBhcyByZXR1cm5lZCBieSBwYXJzZURpZmZIZWFkZXIoKS4KICAgICBteSAkc3ZuUHJv
cGVydGllc0hhc2hSZWY7ICMgTGFzdCBTVk4gcHJvcGVydGllcyBkaWZmIGZvdW5kLCBhcyByZXR1
cm5lZCBieSBwYXJzZVN2bkRpZmZQcm9wZXJ0aWVzKCkuCiAgICAgbXkgJHN2blRleHQ7CisgICAg
bXkgJGluZGV4UGF0aEVPTDsKICAgICB3aGlsZSAoZGVmaW5lZCgkbGluZSkpIHsKICAgICAgICAg
aWYgKCEkaGVhZGVySGFzaFJlZiAmJiAoJGxpbmUgPX4gJGdpdERpZmZTdGFydFJlZ0V4KSkgewog
ICAgICAgICAgICAgIyBUaGVuIGFzc3VtZSBhbGwgZGlmZnMgaW4gdGhlIHBhdGNoIGFyZSBHaXQt
Zm9ybWF0dGVkLiBUaGlzCkBAIC04NjEsNiArOTA0LDExIEBAIHN1YiBwYXJzZURpZmYoJCQpCiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCRsaW5lICF+ICRoZWFkZXJTdGFydFJlZ0V4KSB7CiAgICAg
ICAgICAgICAjIFRoZW4gd2UgYXJlIGluIHRoZSBib2R5IG9mIHRoZSBkaWZmLgorICAgICAgICAg
ICAgaWYgKCRpbmRleFBhdGhFT0wgJiYgJGxpbmUgIX4gLyRjaHVua1JhbmdlUmVnRXgvKSB7Cisg
ICAgICAgICAgICAgICAgIyBUaGUgY2h1bmsgcmFuZ2UgaXMgcGFydCBvZiB0aGUgYm9keSBvZiB0
aGUgZGlmZiwgYnV0IGl0cyBsaW5lIGVuZGluZ3Mgc2hvdWxkJ3QgYmUKKyAgICAgICAgICAgICAg
ICAjIG1vZGlmaWVkIG9yIHBhdGNoKDEpIHdpbGwgY29tcGxhaW4uIFNvLCB3ZSBvbmx5IG1vZGlm
eSBub24tY2h1bmsgcmFuZ2UgbGluZXMuCisgICAgICAgICAgICAgICAgJGxpbmUgPX4gcy9cclxu
fFxyfFxuLyRpbmRleFBhdGhFT0wvZzsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICRzdm5U
ZXh0IC49ICRsaW5lOwogICAgICAgICAgICAgJGxpbmUgPSA8JGZpbGVIYW5kbGU+OwogICAgICAg
ICAgICAgbmV4dDsKQEAgLTg3Myw2ICs5MjEsOSBAQCBzdWIgcGFyc2VEaWZmKCQkKQogICAgICAg
ICB9CiAKICAgICAgICAgKCRoZWFkZXJIYXNoUmVmLCAkbGluZSkgPSBwYXJzZURpZmZIZWFkZXIo
JGZpbGVIYW5kbGUsICRsaW5lKTsKKyAgICAgICAgaWYgKCEkb3B0aW9uc0hhc2hSZWYgfHwgISRv
cHRpb25zSGFzaFJlZi0+e3Nob3VsZE5vdFVzZUluZGV4UGF0aEVPTH0pIHsKKyAgICAgICAgICAg
ICRpbmRleFBhdGhFT0wgPSBmaXJzdEVPTEluRmlsZSgkaGVhZGVySGFzaFJlZi0+e2luZGV4UGF0
aH0pIGlmICEkaGVhZGVySGFzaFJlZi0+e2lzTmV3fSAmJiAhJGhlYWRlckhhc2hSZWYtPntpc0Jp
bmFyeX07CisgICAgICAgIH0KIAogICAgICAgICAkc3ZuVGV4dCAuPSAkaGVhZGVySGFzaFJlZi0+
e3N2bkNvbnZlcnRlZFRleHR9OwogICAgIH0KQEAgLTExNjcsMTMgKzEyMTgsMTkgQEAgc3ViIHBh
cnNlU3ZuUHJvcGVydHlWYWx1ZSgkJCkKICMgQXJnczoKICMgICAkZmlsZUhhbmRsZTogQSBmaWxl
IGhhbmRsZSB0byB0aGUgcGF0Y2ggZmlsZSB0aGF0IGhhcyBub3QgeWV0IGJlZW4KICMgICAgICAg
ICAgICAgICAgcmVhZCBmcm9tLgorIyAgICRvcHRpb25zSGFzaFJlZjogYSBoYXNoIHJlZmVyZW5j
ZSByZXByZXNlbnRpbmcgb3B0aW9uYWwgb3B0aW9ucyB0byB1c2UKKyMgICAgICAgICAgICAgICAg
ICAgIHdoZW4gcHJvY2Vzc2luZyBhIGRpZmYuCisjICAgICBzaG91bGROb3RVc2VJbmRleFBhdGhF
T0w6IHdoZXRoZXIgdG8gdXNlIHRoZSBsaW5lIGVuZGluZ3MgaW4gdGhlIGRpZmYgaW5zdGVhZAor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIHRoZSBsaW5lIGVuZGlu
Z3MgaW4gdGhlIHRhcmdldCBmaWxlOyB0aGUKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgb2YgMSBpZiBzdm5Db252ZXJ0ZWRUZXh0IHNob3VsZCB1c2UgdGhlIGxpbmUKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kaW5ncyBpbiB0aGUgZGlmZi4KICMKICMg
UmV0dXJuczoKICMgICBAZGlmZkhhc2hSZWZzOiBhbiBhcnJheSBvZiBkaWZmIGhhc2ggcmVmZXJl
bmNlcy4KICMgICAgICAgICAgICAgICAgICBTZWUgdGhlICVkaWZmSGFzaCBkb2N1bWVudGF0aW9u
IGFib3ZlLgotc3ViIHBhcnNlUGF0Y2goJCkKK3N1YiBwYXJzZVBhdGNoKCQ7JCkKIHsKLSAgICBt
eSAoJGZpbGVIYW5kbGUpID0gQF87CisgICAgbXkgKCRmaWxlSGFuZGxlLCAkb3B0aW9uc0hhc2hS
ZWYpID0gQF87CiAKICAgICBteSAkbmV3RGlmZkhhc2hSZWZzOwogICAgIG15IEBkaWZmSGFzaFJl
ZnM7ICMgcmV0dXJuIHZhbHVlCkBAIC0xMTgyLDcgKzEyMzksNyBAQCBzdWIgcGFyc2VQYXRjaCgk
KQogCiAgICAgd2hpbGUgKGRlZmluZWQoJGxpbmUpKSB7ICMgT3RoZXJ3aXNlLCBhdCBFT0YuCiAK
LSAgICAgICAgKCRuZXdEaWZmSGFzaFJlZnMsICRsaW5lKSA9IHBhcnNlRGlmZigkZmlsZUhhbmRs
ZSwgJGxpbmUpOworICAgICAgICAoJG5ld0RpZmZIYXNoUmVmcywgJGxpbmUpID0gcGFyc2VEaWZm
KCRmaWxlSGFuZGxlLCAkbGluZSwgJG9wdGlvbnNIYXNoUmVmKTsKIAogICAgICAgICBwdXNoIEBk
aWZmSGFzaFJlZnMsIEAkbmV3RGlmZkhhc2hSZWZzOwogICAgIH0KQEAgLTE0NDAsNyArMTQ5Nyw2
IEBAIHN1YiBmaXhDaGFuZ2VMb2dQYXRjaCgkKQogICAgICRkZWxldGVkTGluZUNvdW50ICs9ICRk
YXRlU3RhcnRJbmRleCAtICRjaHVua1N0YXJ0SW5kZXg7CiAKICAgICAjIFVwZGF0ZSB0aGUgaW5p
dGlhbCBjaHVuayByYW5nZS4KLSAgICBteSAkY2h1bmtSYW5nZVJlZ0V4ID0gJ15cQFxAIC0oXGQr
KSwoXGQrKSBcK1xkKywoXGQrKSBcQFxAJCc7ICMgZS5nLiBAQCAtMiw2ICsyLDE4IEBACiAgICAg
aWYgKCRsaW5lc1skY2h1bmtTdGFydEluZGV4IC0gMV0gIX4gLyRjaHVua1JhbmdlUmVnRXgvKSB7
CiAgICAgICAgICMgRklYTUU6IEhhbmRsZSBlcnJvcnMgZGlmZmVyZW50bHkgZnJvbSBDaGFuZ2VM
b2cgZmlsZXMgdGhhdAogICAgICAgICAjIGFyZSBva2F5IGJ1dCBzaG91bGQgbm90IGJlIGFsdGVy
ZWQuIFRoYXQgd2F5IHdlIGNhbiBmaW5kIG91dApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZi5wbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmLnBsCShyZXZpc2lv
biA4MzM4MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9w
YXJzZURpZmYucGwJKHdvcmtpbmcgY29weSkKQEAgLTExOTgsNyArMTE5OCw3IEBAIGZvcmVhY2gg
bXkgJHRlc3RDYXNlIChAdGVzdENhc2VIYXNoUmVmcykKICAgICBvcGVuKCRmaWxlSGFuZGxlLCAi
PCIsIFwkdGVzdENhc2UtPntpbnB1dFRleHR9KTsKICAgICBteSAkbGluZSA9IDwkZmlsZUhhbmRs
ZT47CiAKLSAgICBteSBAZ290ID0gVkNTVXRpbHM6OnBhcnNlRGlmZigkZmlsZUhhbmRsZSwgJGxp
bmUpOworICAgIG15IEBnb3QgPSBWQ1NVdGlsczo6cGFyc2VEaWZmKCRmaWxlSGFuZGxlLCAkbGlu
ZSwgeyJzaG91bGROb3RVc2VJbmRleFBhdGhFT0wiID0+IDF9KTsKICAgICBteSAkZXhwZWN0ZWRS
ZXR1cm4gPSAkdGVzdENhc2UtPntleHBlY3RlZFJldHVybn07CiAKICAgICBpc19kZWVwbHkoXEBn
b3QsICRleHBlY3RlZFJldHVybiwgIiR0ZXN0TmFtZVN0YXJ0IHJldHVybiB2YWx1ZS4iKTsKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZX
aXRoTW9ja0ZpbGVzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9W
Q1NVdGlsc191bml0dGVzdC9wYXJzZURpZmZXaXRoTW9ja0ZpbGVzLnBsCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZldp
dGhNb2NrRmlsZXMucGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzA1IEBACisjIS91c3IvYmlu
L3BlcmwgLXcKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNp
b24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorIyAKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjIAorIyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKKyMgVW5pdCB0ZXN0cyBvZiBwYXJzZURp
ZmYoKSB3aXRoIG1vY2sgZmlsZXM7IHRlc3Qgb3ZlcnJpZGUgb2YgcGF0Y2ggRU9MIHdpdGggRU9M
IG9mIHRhcmdldCBmaWxlLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgRmls
ZTo6VGVtcDsKK3VzZSBQT1NJWCBxdy9nZXRjd2QvOwordXNlIFRlc3Q6Ok1vcmU7Cit1c2UgVkNT
VXRpbHM7CisKK215ICRnaXREaWZmSGVhZGVyRm9yTmV3RmlsZSA9IDw8RU9GOworZGlmZiAtLWdp
dCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw
MDAwLi43NTZlODY0CistLS0gL2Rldi9udWxsCisrKysgYi9NYWtlZmlsZQorQEAgLTAsMCArMSwx
NyBAQAorRU9GCisKK215ICRnaXREaWZmSGVhZGVyID0gPDxFT0Y7CitkaWZmIC0tZ2l0IGEvTWFr
ZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggNzU2ZTg2NC4uMDRkMmFlMSAxMDA2NDQKKy0tLSBhL01h
a2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTEsMyArMSw0IEBACitFT0YKKworbXkgJHN2bkNv
bnZlcnRlZEdpdERpZmZIZWFkZXIgPSA8PEVPRjsKK0luZGV4OiBNYWtlZmlsZQoraW5kZXggNzU2
ZTg2NC4uMDRkMmFlMSAxMDA2NDQKKy0tLSBNYWtlZmlsZQorKysrIE1ha2VmaWxlCitAQCAtMSwz
ICsxLDQgQEAKK0VPRgorCitteSAkc3ZuQ29udmVydGVkR2l0RGlmZkhlYWRlckZvck5ld0ZpbGUg
PSA8PEVPRjsKK0luZGV4OiBNYWtlZmlsZQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw
MDAwMDAuLjc1NmU4NjQKKy0tLSBNYWtlZmlsZQorKysrIE1ha2VmaWxlCitAQCAtMCwwICsxLDE3
IEBACitFT0YKKworbXkgJHN2bkRpZmZIZWFkZXJGb3JOZXdGaWxlID0gPDxFT0Y7CitJbmRleDog
TWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKy0tLSBNYWtlZmlsZQkocmV2aXNpb24gMCkKKysrKyBNYWtl
ZmlsZQkocmV2aXNpb24gMCkKK0BAIC0wLDAgKzEsMTcgQEAKK0VPRgorCitteSAkc3ZuRGlmZkhl
YWRlciA9IDw8RU9GOworSW5kZXg6IE1ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTWFrZWZpbGUJ
KHJldmlzaW9uIDUzMDUyKQorKysrIE1ha2VmaWxlCSh3b3JraW5nIGNvcHkpCitAQCAtMSwzICsx
LDQgQEAKK0VPRgorCitteSAkZGlmZkJvZHkgPSA8PEVPRjsKKysKKyBNT0RVTEVTID0gSmF2YVNj
cmlwdENvcmUgSmF2YVNjcmlwdEdsdWUgV2ViQ29yZSBXZWJLaXQgV2ViS2l0VG9vbHMKKyAKKyBh
bGw6CitFT0YKKworbXkgJE1ha2VmaWxlQ29udGVudHMgPSA8PEVPRjsKK01PRFVMRVMgPSBKYXZh
U2NyaXB0Q29yZSBKYXZhU2NyaXB0R2x1ZSBXZWJDb3JlIFdlYktpdCBXZWJLaXRUb29scyAKKwor
YWxsOgorRU9GCisKK215ICRtb2NrRGlyID0gRmlsZTo6VGVtcC0+dGVtcGRpcigicGFyc2VEaWZm
WFhYWCIsIENMRUFOVVAgPT4gMSk7Cit3cml0ZVRvRmlsZShGaWxlOjpTcGVjLT5jYXRmaWxlKCRt
b2NrRGlyLCAiTWFrZWZpbGVXaXRoVW5peEVPTCIpLCAkTWFrZWZpbGVDb250ZW50cyk7Cit3cml0
ZVRvRmlsZShGaWxlOjpTcGVjLT5jYXRmaWxlKCRtb2NrRGlyLCAiTWFrZWZpbGVXaXRoV2luZG93
c0VPTCIpLCB0b1dpbmRvd3NMaW5lRW5kaW5ncygkTWFrZWZpbGVDb250ZW50cykpOworCisjIFRo
ZSBhcnJheSBvZiB0ZXN0IGNhc2VzLgorbXkgQHRlc3RDYXNlSGFzaFJlZnMgPSAoCisjIyMKKyMg
U1ZOIHRlc3QgY2FzZXMKKyMjCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJT
Vk46IFBhdGNoIHdpdGggVW5peCBsaW5lIGVuZGluZ3MgYW5kIEluZGV4UGF0aCBoYXMgVW5peCBs
aW5lIGVuZGluZ3MiLAorICAgIGlucHV0VGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5EaWZm
SGVhZGVyLCAiTWFrZWZpbGUiLCAiTWFrZWZpbGVXaXRoVW5peEVPTCIpIC4gJGRpZmZCb2R5LAor
ICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK1t7CisgICAgc3ZuQ29udmVydGVkVGV4dCA9PiBzdWJz
dGl0dXRlU3RyaW5nKCRzdm5EaWZmSGVhZGVyLCAiTWFrZWZpbGUiLCAiTWFrZWZpbGVXaXRoVW5p
eEVPTCIpIC4gJGRpZmZCb2R5LCAjIFNhbWUgYXMgaW5wdXQgdGV4dAorICAgIGluZGV4UGF0aCA9
PiAiTWFrZWZpbGVXaXRoVW5peEVPTCIsCisgICAgaXNTdm4gPT4gMSwKKyAgICBzb3VyY2VSZXZp
c2lvbiA9PiAiNTMwNTIiLAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiB1
bmRlZiwKK30sCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJTVk46IFBhdGNo
IHdpdGggV2luZG93cyBsaW5lIGVuZGluZ3MgYW5kIEluZGV4UGF0aCBoYXMgVW5peCBsaW5lIGVu
ZGluZ3MiLAorICAgIGlucHV0VGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5EaWZmSGVhZGVy
LCAiTWFrZWZpbGUiLCAiTWFrZWZpbGVXaXRoVW5peEVPTCIpIC4gdG9XaW5kb3dzTGluZUVuZGlu
Z3MoJGRpZmZCb2R5KSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCitbeworICAgIHN2bkNvbnZl
cnRlZFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlmZkhlYWRlciwgIk1ha2VmaWxlIiwg
Ik1ha2VmaWxlV2l0aFVuaXhFT0wiKSAuICRkaWZmQm9keSwKKyAgICBpbmRleFBhdGggPT4gIk1h
a2VmaWxlV2l0aFVuaXhFT0wiLAorICAgIGlzU3ZuID0+IDEsCisgICAgc291cmNlUmV2aXNpb24g
PT4gIjUzMDUyIiwKK31dLAordW5kZWZdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5kZWYs
Cit9LAoreworICAgICMgTmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiU1ZOOiBQYXRjaCB3aXRo
IFdpbmRvd3MgbGluZSBlbmRpbmdzIGFuZCBJbmRleFBhdGggaGFzIFdpbmRvd3MgbGluZSBlbmRp
bmdzIiwKKyAgICBpbnB1dFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkc3ZuRGlmZkhlYWRlciwg
Ik1ha2VmaWxlIiwgIk1ha2VmaWxlV2l0aFdpbmRvd3NFT0wiKSAuIHRvV2luZG93c0xpbmVFbmRp
bmdzKCRkaWZmQm9keSksCisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252
ZXJ0ZWRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRpZmZIZWFkZXIsICJNYWtlZmlsZSIs
ICJNYWtlZmlsZVdpdGhXaW5kb3dzRU9MIikgLiB0b1dpbmRvd3NMaW5lRW5kaW5ncygkZGlmZkJv
ZHkpLCAjIFNhbWUgYXMgaW5wdXQgdGV4dAorICAgIGluZGV4UGF0aCA9PiAiTWFrZWZpbGVXaXRo
V2luZG93c0VPTCIsCisgICAgaXNTdm4gPT4gMSwKKyAgICBzb3VyY2VSZXZpc2lvbiA9PiAiNTMw
NTIiLAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiB1bmRlZiwKK30sCit7
CisgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJTVk46IFBhdGNoIHdpdGggVW5peCBs
aW5lIGVuZGluZ3MgYW5kIEluZGV4UGF0aCBoYXMgV2luZG93cyBsaW5lIGVuZGluZ3MiLAorICAg
IGlucHV0VGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5EaWZmSGVhZGVyLCAiTWFrZWZpbGUi
LCAiTWFrZWZpbGVXaXRoV2luZG93c0VPTCIpIC4gJGRpZmZCb2R5LAorICAgIGV4cGVjdGVkUmV0
dXJuID0+IFsKK1t7CisgICAgc3ZuQ29udmVydGVkVGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRz
dm5EaWZmSGVhZGVyLCAiTWFrZWZpbGUiLCAiTWFrZWZpbGVXaXRoV2luZG93c0VPTCIpIC4gdG9X
aW5kb3dzTGluZUVuZGluZ3MoJGRpZmZCb2R5KSwKKyAgICBpbmRleFBhdGggPT4gIk1ha2VmaWxl
V2l0aFdpbmRvd3NFT0wiLAorICAgIGlzU3ZuID0+IDEsCisgICAgc291cmNlUmV2aXNpb24gPT4g
IjUzMDUyIiwKK31dLAordW5kZWZdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5kZWYsCit9
LAoreworICAgICMgTmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiU1ZOOiBQYXRjaCB3aXRoIFVu
aXggbGluZSBlbmRpbmdzIGFuZCBub25leGlzdGVudCBJbmRleFBhdGgiLAorICAgIGlucHV0VGV4
dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5EaWZmSGVhZGVyRm9yTmV3RmlsZSwgIk1ha2VmaWxl
IiwgIk5vbmV4aXN0ZW50RmlsZSIpIC4gJGRpZmZCb2R5LAorICAgIGV4cGVjdGVkUmV0dXJuID0+
IFsKK1t7CisgICAgc3ZuQ29udmVydGVkVGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5EaWZm
SGVhZGVyRm9yTmV3RmlsZSwgIk1ha2VmaWxlIiwgIk5vbmV4aXN0ZW50RmlsZSIpIC4gJGRpZmZC
b2R5LCAjIFNhbWUgYXMgaW5wdXQgdGV4dAorICAgIGluZGV4UGF0aCA9PiAiTm9uZXhpc3RlbnRG
aWxlIiwKKyAgICBpc1N2biA9PiAxLAorICAgIGlzTmV3ID0+IDEsCit9XSwKK3VuZGVmXSwKKyAg
ICBleHBlY3RlZE5leHRMaW5lID0+IHVuZGVmLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAg
ZGlmZk5hbWUgPT4gIlNWTjogUGF0Y2ggd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncyBhbmQgbm9u
ZXhpc3RlbnQgSW5kZXhQYXRoIiwKKyAgICBpbnB1dFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygk
c3ZuRGlmZkhlYWRlckZvck5ld0ZpbGUsICJNYWtlZmlsZSIsICJOb25leGlzdGVudEZpbGUiKSAu
IHRvV2luZG93c0xpbmVFbmRpbmdzKCRkaWZmQm9keSksCisgICAgZXhwZWN0ZWRSZXR1cm4gPT4g
WworW3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkRpZmZI
ZWFkZXJGb3JOZXdGaWxlLCAiTWFrZWZpbGUiLCAiTm9uZXhpc3RlbnRGaWxlIikgLiB0b1dpbmRv
d3NMaW5lRW5kaW5ncygkZGlmZkJvZHkpLCAjIFNhbWUgYXMgaW5wdXQgdGV4dAorICAgIGluZGV4
UGF0aCA9PiAiTm9uZXhpc3RlbnRGaWxlIiwKKyAgICBpc1N2biA9PiAxLAorICAgIGlzTmV3ID0+
IDEsCit9XSwKK3VuZGVmXSwKKyAgICBleHBlY3RlZE5leHRMaW5lID0+IHVuZGVmLAorfSwKKyMj
IworIyBHaXQgdGVzdCBjYXNlcworIyMKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUg
PT4gIkdpdDogUGF0Y2ggd2l0aCBVbml4IGxpbmUgZW5kaW5ncyBhbmQgSW5kZXhQYXRoIGhhcyBV
bml4IGxpbmUgZW5kaW5ncyIsCisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJGdp
dERpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmlsZVdpdGhVbml4RU9MIikgLiAkZGlmZkJv
ZHksCisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+
IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkNvbnZlcnRlZEdpdERpZmZIZWFkZXIsICJNYWtlZmlsZSIs
ICJNYWtlZmlsZVdpdGhVbml4RU9MIikgLiAkZGlmZkJvZHksICMgU2FtZSBhcyBpbnB1dCB0ZXh0
CisgICAgaW5kZXhQYXRoID0+ICJNYWtlZmlsZVdpdGhVbml4RU9MIiwKKyAgICBpc0dpdCA9PiAx
LAorfV0sCit1bmRlZl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiB1bmRlZiwKK30sCit7Cisg
ICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJHaXQ6IFBhdGNoIHdpdGggV2luZG93cyBs
aW5lIGVuZGluZ3MgYW5kIEluZGV4UGF0aCBoYXMgVW5peCBsaW5lIGVuZGluZ3MiLAorICAgIGlu
cHV0VGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRnaXREaWZmSGVhZGVyLCAiTWFrZWZpbGUiLCAi
TWFrZWZpbGVXaXRoVW5peEVPTCIpIC4gdG9XaW5kb3dzTGluZUVuZGluZ3MoJGRpZmZCb2R5KSwK
KyAgICBleHBlY3RlZFJldHVybiA9PiBbCitbeworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gc3Vi
c3RpdHV0ZVN0cmluZygkc3ZuQ29udmVydGVkR2l0RGlmZkhlYWRlciwgIk1ha2VmaWxlIiwgIk1h
a2VmaWxlV2l0aFVuaXhFT0wiKSAuICRkaWZmQm9keSwKKyAgICBpbmRleFBhdGggPT4gIk1ha2Vm
aWxlV2l0aFVuaXhFT0wiLAorICAgIGlzR2l0ID0+IDEsCit9XSwKK3VuZGVmXSwKKyAgICBleHBl
Y3RlZE5leHRMaW5lID0+IHVuZGVmLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5h
bWUgPT4gIkdpdDogUGF0Y2ggd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncyBhbmQgSW5kZXhQYXRo
IGhhcyBXaW5kb3dzIGxpbmUgZW5kaW5ncyIsCisgICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVT
dHJpbmcoJGdpdERpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmlsZVdpdGhXaW5kb3dzRU9M
IikgLiB0b1dpbmRvd3NMaW5lRW5kaW5ncygkZGlmZkJvZHkpLAorICAgIGV4cGVjdGVkUmV0dXJu
ID0+IFsKK1t7CisgICAgc3ZuQ29udmVydGVkVGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5D
b252ZXJ0ZWRHaXREaWZmSGVhZGVyLCAiTWFrZWZpbGUiLCAiTWFrZWZpbGVXaXRoV2luZG93c0VP
TCIpIC4gdG9XaW5kb3dzTGluZUVuZGluZ3MoJGRpZmZCb2R5KSwgIyBTYW1lIGFzIGlucHV0IHRl
eHQKKyAgICBpbmRleFBhdGggPT4gIk1ha2VmaWxlV2l0aFdpbmRvd3NFT0wiLAorICAgIGlzR2l0
ID0+IDEsCit9XSwKK3VuZGVmXSwKKyAgICBleHBlY3RlZE5leHRMaW5lID0+IHVuZGVmLAorfSwK
K3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIkdpdDogUGF0Y2ggd2l0aCBVbml4
IGxpbmUgZW5kaW5ncyBhbmQgSW5kZXhQYXRoIGhhcyBXaW5kb3dzIGxpbmUgZW5kaW5ncyIsCisg
ICAgaW5wdXRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJGdpdERpZmZIZWFkZXIsICJNYWtlZmls
ZSIsICJNYWtlZmlsZVdpdGhXaW5kb3dzRU9MIikgLiAkZGlmZkJvZHksCisgICAgZXhwZWN0ZWRS
ZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmco
JHN2bkNvbnZlcnRlZEdpdERpZmZIZWFkZXIsICJNYWtlZmlsZSIsICJNYWtlZmlsZVdpdGhXaW5k
b3dzRU9MIikgLiB0b1dpbmRvd3NMaW5lRW5kaW5ncygkZGlmZkJvZHkpLAorICAgIGluZGV4UGF0
aCA9PiAiTWFrZWZpbGVXaXRoV2luZG93c0VPTCIsCisgICAgaXNHaXQgPT4gMSwKK31dLAordW5k
ZWZdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5kZWYsCit9LAoreworICAgICMgTmV3IHRl
c3QKKyAgICBkaWZmTmFtZSA9PiAiR2l0OiBQYXRjaCB3aXRoIFVuaXggbGluZSBlbmRpbmdzIGFu
ZCBub25leGlzdGVudCBJbmRleFBhdGgiLAorICAgIGlucHV0VGV4dCA9PiBzdWJzdGl0dXRlU3Ry
aW5nKCRnaXREaWZmSGVhZGVyRm9yTmV3RmlsZSwgIk1ha2VmaWxlIiwgIk5vbmV4aXN0ZW50Rmls
ZSIpIC4gJGRpZmZCb2R5LAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK1t7CisgICAgc3ZuQ29u
dmVydGVkVGV4dCA9PiBzdWJzdGl0dXRlU3RyaW5nKCRzdm5Db252ZXJ0ZWRHaXREaWZmSGVhZGVy
Rm9yTmV3RmlsZSwgIk1ha2VmaWxlIiwgIk5vbmV4aXN0ZW50RmlsZSIpIC4gJGRpZmZCb2R5LCAj
IFNhbWUgYXMgaW5wdXQgdGV4dAorICAgIGluZGV4UGF0aCA9PiAiTm9uZXhpc3RlbnRGaWxlIiwK
KyAgICBpc0dpdCA9PiAxLAorICAgIGlzTmV3ID0+IDEsCit9XSwKK3VuZGVmXSwKKyAgICBleHBl
Y3RlZE5leHRMaW5lID0+IHVuZGVmLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5h
bWUgPT4gIkdpdDogUGF0Y2ggd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncyBhbmQgbm9uZXhpc3Rl
bnQgSW5kZXhQYXRoIiwKKyAgICBpbnB1dFRleHQgPT4gc3Vic3RpdHV0ZVN0cmluZygkZ2l0RGlm
ZkhlYWRlckZvck5ld0ZpbGUsICJNYWtlZmlsZSIsICJOb25leGlzdGVudEZpbGUiKSAuIHRvV2lu
ZG93c0xpbmVFbmRpbmdzKCRkaWZmQm9keSksCisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworW3sK
KyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+IHN1YnN0aXR1dGVTdHJpbmcoJHN2bkNvbnZlcnRlZEdp
dERpZmZIZWFkZXJGb3JOZXdGaWxlLCAiTWFrZWZpbGUiLCAiTm9uZXhpc3RlbnRGaWxlIikgLiB0
b1dpbmRvd3NMaW5lRW5kaW5ncygkZGlmZkJvZHkpLCAjIFNhbWUgYXMgaW5wdXQgdGV4dAorICAg
IGluZGV4UGF0aCA9PiAiTm9uZXhpc3RlbnRGaWxlIiwKKyAgICBpc0dpdCA9PiAxLAorICAgIGlz
TmV3ID0+IDEsCit9XSwKK3VuZGVmXSwKKyAgICBleHBlY3RlZE5leHRMaW5lID0+IHVuZGVmLAor
fSwKKyk7CisKK215ICR0ZXN0Q2FzZXNDb3VudCA9IEB0ZXN0Q2FzZUhhc2hSZWZzOworcGxhbih0
ZXN0cyA9PiAyICogJHRlc3RDYXNlc0NvdW50KTsgIyBUb3RhbCBudW1iZXIgb2YgYXNzZXJ0aW9u
cy4KKworbXkgJHNhdmVkQ1dEID0gZ2V0Y3dkKCk7CitjaGRpcigkbW9ja0Rpcikgb3IgZGllOwor
Zm9yZWFjaCBteSAkdGVzdENhc2UgKEB0ZXN0Q2FzZUhhc2hSZWZzKSB7CisgICAgbXkgJHRlc3RO
YW1lU3RhcnQgPSAicGFyc2VEaWZmKCk6ICR0ZXN0Q2FzZS0+e2RpZmZOYW1lfTogY29tcGFyaW5n
IjsKKworICAgIG15ICRmaWxlSGFuZGxlOworICAgIG9wZW4oJGZpbGVIYW5kbGUsICI8IiwgXCR0
ZXN0Q2FzZS0+e2lucHV0VGV4dH0pOworICAgIG15ICRsaW5lID0gPCRmaWxlSGFuZGxlPjsKKwor
ICAgIG15IEBnb3QgPSBWQ1NVdGlsczo6cGFyc2VEaWZmKCRmaWxlSGFuZGxlLCAkbGluZSk7Cisg
ICAgbXkgJGV4cGVjdGVkUmV0dXJuID0gJHRlc3RDYXNlLT57ZXhwZWN0ZWRSZXR1cm59OworCisg
ICAgaXNfZGVlcGx5KFxAZ290LCAkZXhwZWN0ZWRSZXR1cm4sICIkdGVzdE5hbWVTdGFydCByZXR1
cm4gdmFsdWUuIik7CisKKyAgICBteSAkZ290TmV4dExpbmUgPSA8JGZpbGVIYW5kbGU+OworICAg
IGlzKCRnb3ROZXh0TGluZSwgJHRlc3RDYXNlLT57ZXhwZWN0ZWROZXh0TGluZX0sICAiJHRlc3RO
YW1lU3RhcnQgbmV4dCByZWFkIGxpbmUuIik7Cit9CitjaGRpcigkc2F2ZWRDV0QpOworCitzdWIg
c3Vic3RpdHV0ZVN0cmluZworeworICAgIG15ICgkc3RyaW5nLCAkc2VhcmNoU3RyaW5nLCAkcmVw
bGFjZW1lbnRTdHJpbmcpID0gQF87CisgICAgJHN0cmluZyA9fiBzLyRzZWFyY2hTdHJpbmcvJHJl
cGxhY2VtZW50U3RyaW5nL2c7CisgICAgcmV0dXJuICRzdHJpbmc7Cit9CisKK3N1YiB3cml0ZVRv
RmlsZQoreworICAgIG15ICgkZmlsZSwgJHRleHQpID0gQF87CisgICAgb3BlbihGSUxFLCAiPiRm
aWxlIikgb3IgZGllOworICAgIHByaW50IEZJTEUgJHRleHQ7CisgICAgY2xvc2UoRklMRSk7Cit9
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VG
aXJzdEVPTC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRp
bHNfdW5pdHRlc3QvcGFyc2VGaXJzdEVPTC5wbAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZUZpcnN0RU9MLnBsCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDYzIEBACisjIS91c3IvYmluL3BlcmwgLXcKKyMKKyMgQ29weXJpZ2h0
IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIyAKKyMgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisjIAorIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisKKyMgVW5pdCB0ZXN0cyBvZiBWQ1NVdGlsczo6cGFyc2VGaXJzdEVPTCgpLgorCit1
c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDc7
Cit1c2UgVkNTVXRpbHM7CisKK215ICR0aXRsZTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gInBh
cnNlRmlyc3RFT0w6IEVtcHR5IHN0cmluZy4iOworb2soIWRlZmluZWQoZmlyc3RFT0xJblN0cmlu
ZygiIikpLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VGaXJzdEVPTDog
TGluZSB3aXRob3V0IGEgbGluZSBlbmRpbmcgY2hhcmFjdGVyIjsKK29rKCFkZWZpbmVkKGZpcnN0
RU9MSW5TdHJpbmcoIlRoaXMgbGluZSBkb2Vzbid0IGhhdmUgYSBsaW5lIGVuZGluZyBjaGFyYWN0
ZXIuIikpLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VGaXJzdEVPTDog
TGluZSB3aXRoIFdpbmRvd3MgbGluZSBlbmRpbmcuIjsKK29rKGZpcnN0RU9MSW5TdHJpbmcoIlRo
aXMgbGluZSBlbmRzIHdpdGggYSBXaW5kb3dzIGxpbmUgZW5kaW5nLlxyXG4iKSBlcSAiXHJcbiIs
ICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUZpcnN0RU9MOiBMaW5lIHdp
dGggVW5peCBsaW5lIGVuZGluZy4iOworb2soZmlyc3RFT0xJblN0cmluZygiVGhpcyBsaW5lIGVu
ZHMgd2l0aCBhIFVuaXggbGluZSBlbmRpbmcuXG4iKSBlcSAiXG4iLCAkdGl0bGUpOworCisjIE5l
dyB0ZXN0CiskdGl0bGUgPSAicGFyc2VGaXJzdEVPTDogTGluZSB3aXRoIE1hYyBsaW5lIGVuZGlu
Zy4iOworb2soZmlyc3RFT0xJblN0cmluZygiVGhpcyBsaW5lIGVuZHMgd2l0aCBhIE1hYyBsaW5l
IGVuZGluZy5cciIpIGVxICJcciIsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJw
YXJzZUZpcnN0RU9MOiBMaW5lIHdpdGggTWFjIGxpbmUgZW5kaW5nIGZvbGxvd2VkIGJ5IGxpbmUg
d2l0aG91dCBhIGxpbmUgZW5kaW5nLiI7CitvayhmaXJzdEVPTEluU3RyaW5nKCJUaGlzIGxpbmUg
ZW5kcyB3aXRoIGEgTWFjIGxpbmUgZW5kaW5nLlxyVGhpcyBsaW5lIGRvZXNuJ3QgaGF2ZSBhIGxp
bmUgZW5kaW5nLiIpIGVxICJcciIsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJw
YXJzZUZpcnN0RU9MOiBMaW5lIHdpdGggYSBtaXggb2YgbGluZSBlbmRpbmdzLiI7CitvayhmaXJz
dEVPTEluU3RyaW5nKCJUaGlzIGxpbmUgY29udGFpbnMgYSBtaXggb2YgbGluZSBlbmRpbmdzLlxy
XG5cclxuXHJcclxuXG5cblxuIikgZXEgIlxyXG4iLCAkdGl0bGUpOworCitzdWIgZmlyc3RFT0xJ
blN0cmluZworeworICAgIG15ICgkc3RyaW5nKSA9IEBfOworICAgIG15ICRmaWxlSGFuZGxlOwor
ICAgIG9wZW4oJGZpbGVIYW5kbGUsICI8IiwgXCRzdHJpbmcpOworICAgIHJldHVybiBwYXJzZUZp
cnN0RU9MKCRmaWxlSGFuZGxlKTsKK30K
</data>
<flag name="review"
          id="81713"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>