<?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>27204</bug_id>
          
          <creation_ts>2009-07-12 22:45:06 -0700</creation_ts>
          <short_desc>svn-apply doesn&apos;t understand the executable bit</short_desc>
          <delta_ts>2010-07-08 10:57: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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>39409</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>34033</dependson>
          <blocked>28306</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>131246</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-12 22:45:06 -0700</bug_when>
    <thetext>I now land all my patches via bugzilla-tool (in an SVN working copy), but when I land patches with executable files (like perl scripts), bugzilla-tool screws up and forgets the executable bit.  The makes me do a followup patch where I set the executable bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131250</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-12 23:08:09 -0700</bug_when>
    <thetext>Yeah, this has nothing really to do with bugzilla-tool.  It&apos;s more svn-apply.  Although I guess we&apos;d have to make git format-patch understand executable bit too...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131253</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-12 23:24:15 -0700</bug_when>
    <thetext>Mark Rowe tells me that git already understands the executable bit.  That&apos;s what the modes are telling you in git patch files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131259</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-13 00:28:21 -0700</bug_when>
    <thetext>Ok.  The problem is still on the patch-application end I would assume.  I know that svn-create-patch includes this kind of information.  So we just need to make svn-apply smart enough to use it (I&apos;m kinda surprised it is not already).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162613</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-11 12:26:55 -0800</bug_when>
    <thetext>Turns out that this is actually already listed as a &quot;fixme&quot; in svn-apply:

# Missing features:
#
#   Handle property changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167181</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-29 19:19:38 -0800</bug_when>
    <thetext>Bit us again in http://trac.webkit.org/changeset/51475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167184</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-29 19:27:13 -0800</bug_when>
    <thetext>Committed r51477: &lt;http://trac.webkit.org/changeset/51477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175897</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-12-30 06:17:01 -0800</bug_when>
    <thetext>Hit again for bug 32919 in r52646.  Fixed in r52658.

&lt;http://trac.webkit.org/changeset/52646&gt;
&lt;http://trac.webkit.org/changeset/52658&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210560</commentid>
    <comment_count>8</comment_count>
      <attachid>52933</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-08 22:25:24 -0700</bug_when>
    <thetext>Created attachment 52933
Patch

As a holdover to the complete refactoring or complete rewrite of svn-apply/unapply, I have put together a patch to add executable bit support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210561</commentid>
    <comment_count>9</comment_count>
      <attachid>52933</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-08 22:31:31 -0700</bug_when>
    <thetext>Comment on attachment 52933
Patch

I don&apos;t see any &quot;complete-rewrites&quot; as imminent. :)  Did you mean to mark this for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210579</commentid>
    <comment_count>10</comment_count>
      <attachid>52937</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-08 23:20:25 -0700</bug_when>
    <thetext>Created attachment 52937
Patch with unit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210587</commentid>
    <comment_count>11</comment_count>
      <attachid>52937</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-04-08 23:50:44 -0700</bug_when>
    <thetext>Comment on attachment 52937
Patch with unit test

&gt; +sub isSVNProperty($)
&gt; +{
&gt; +    my ($patch) = @_;
&gt; +
&gt; +    return 1 if $patch =~/\n(Added|Deleted): svn:executable\n/;
&gt; +    return 0;
&gt; +}

Nit: Space between &quot;=~&quot; and &quot;/&quot; (this occurs in many different places)

Nit: I just looked it up and =~ returns true/false (1 or 0) automatically:
http://perldoc.perl.org/perlrequick.html#Simple-word-matching

Thus the last two lines could just be:

  return $patch =~/\n(Added|Deleted): svn:executable\n/;



&gt; +++ WebKitTools/Scripts/webkitperl/VCSUtils_unittest/appendSVNExecutableBitChangeToPatch.pl	(revision 0)
&gt; @@ -0,0 +1,68 @@
&gt; +#!/usr/bin/perl
&gt; +#
&gt; +# Copyright (C) Research in Motion Limited 2010. All rights reserved.
&gt; +#
&gt; +# Redistribution and use in source and binary forms, with or without
&gt; +# modification, are permitted provided that the following conditions are
&gt; +# met:
&gt; +# 
&gt; +#     * Redistributions of source code must retain the above copyright
&gt; +# notice, this list of conditions and the following disclaimer.
&gt; +#     * Redistributions in binary form must reproduce the above
&gt; +# copyright notice, this list of conditions and the following disclaimer
&gt; +# in the documentation and/or other materials provided with the
&gt; +# distribution.
&gt; +#     * Neither the name of Google Inc. nor the names of its
&gt; +# contributors may be used to endorse or promote products derived from
&gt; +# this software without specific prior written permission.

Nit: Probably want to change &quot;Google&quot; in this copyright.


In order to check the regex&apos;s for git I had to make a mini repo and see what the output was on a simple diff. You have a test for SVN, would it be possible to create a test for reading a git diff? That would also make it easy for a reviewer to see the format of a git diff for such a case, and how the regexes match it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210601</commentid>
    <comment_count>12</comment_count>
      <attachid>52944</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-09 00:23:58 -0700</bug_when>
    <thetext>Created attachment 52944
Patch with unit tests

Updated patch based on Eric&apos;s suggestions. Separated the parsing of the Git file mode into its own subroutine parseGitFileMode and added a unit test for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210602</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-09 00:25:16 -0700</bug_when>
    <thetext>Oops, I should say Joseph Pecoraro&apos;s suggestions, not Eric&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211025</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-04-09 16:43:01 -0700</bug_when>
    <thetext>Whoops, I wasn&apos;t CC&apos;d. The new patch looks better to me. I&apos;d still prefer someone who really works with perl  / scripts more often to look it over for a review. Adam or Eric? Thanks for addressing my comments Daniel!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211198</commentid>
    <comment_count>15</comment_count>
      <attachid>52944</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-10 15:20:52 -0700</bug_when>
    <thetext>Comment on attachment 52944
Patch with unit tests

This look good.  But why is adding/removing the property not symmetric?  Why can&apos;t we just have a &quot;toggle&quot; method for the executable property?  Does adding the property not cause svn to chmod +x the file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211232</commentid>
    <comment_count>16</comment_count>
      <attachid>53061</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-10 17:17:29 -0700</bug_when>
    <thetext>Created attachment 53061
Patch with unit tests

Removed extraneous function unapplySVNPropertyChange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211242</commentid>
    <comment_count>17</comment_count>
      <attachid>53061</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-10 17:34:28 -0700</bug_when>
    <thetext>Comment on attachment 53061
Patch with unit tests

Seems we should add a FIXME in this method about making it more generic:
 125 sub isSVNProperty($)
 126 {
 127     my ($patch) = @_;
 128     return $patch =~ /\n(Added|Deleted): svn:executable\n/;


We need a comment here to explain why this can&apos;t just be part of the _git2svn filter stuff.
appendSVNExecutableBitChangeToPatch


We should probably write a FIXME that these modes are fragile:
     $$patchRef .= &quot;Added: svn:executable\n&quot; if $fileMode eq &quot;100755&quot;;
 139     $$patchRef .= &quot;Deleted: svn:executable\n&quot; if $fileMode eq &quot;100644&quot;;

This line needs a comment:
 179     $propertyChangePath = &quot;&quot; if ($propertyChangePath &amp;&amp; /^   (\+|-) \*$/);

Since the if is generic, maybe this should be a generically named subroutine:

392             # Change executable bit.
 393             if ($patch =~ /Added: svn:executable\n/) {
 394                 scmAddExecutableProperty($fullPath);
 395             } elsif ($patch =~ /Deleted: svn:executable\n/) {
 396                 scmRemoveExecutableProperty($fullPath);
 397             }

applySVNPropertyChange?

This needs a comment, or better yet to be turned into some sort of subroutine with a descriptive name:
 146     $propertyChangePath = &quot;&quot; if ($propertyChangePath &amp;&amp; /^   (\+|-) \*$/);


Given that we do this check 3? 4? times, mabye this shoudl also be a subroutine:
 185     unless ($patch =~ m|^Index: ([^\r\n]+)| || $patch =~ m|^Property changes on: ([^\r\n]+)|) {
isStartOfPatchOrPropertyChange($line)?

This code is duplicated and should be shared:
             # Reverse change of executable bit.
 247             if ($patch =~ /Added: svn:executable\n/) {
 248                 scmRemoveExecutableProperty($fullPath);
 249             } elsif ($patch =~ /Deleted: svn:executable\n/) {
 250                 scmAddExecutableProperty($fullPath);
 251             }

maybe togglePropertyChange($patch, isApply=False) or something?

In general I think this looks fantastic!  I would love to see it cleaned up a little more though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211259</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-10 18:54:37 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 53061 [details])
&gt; Seems we should add a FIXME in this method about making it more generic:
&gt;  125 sub isSVNProperty($)
&gt;  126 {
&gt;  127     my ($patch) = @_;
&gt;  128     return $patch =~ /\n(Added|Deleted): svn:executable\n/;
&gt; 
&gt; 
&gt; We need a comment here to explain why this can&apos;t just be part of the _git2svn
&gt; filter stuff.
&gt; appendSVNExecutableBitChangeToPatch

&gt; Given that we do this check 3? 4? times, mabye this shoudl also be a
&gt; subroutine:
&gt;  185     unless ($patch =~ m|^Index: ([^\r\n]+)| || $patch =~ m|^Property
&gt; changes on: ([^\r\n]+)|) {
&gt; isStartOfPatchOrPropertyChange($line)?

Just a side note regarding this patch.  I&apos;m sorry I never got around to landing this--

https://bugs.webkit.org/show_bug.cgi?id=34033

That patch refactors svn-apply and svn-unapply to use a unit-tested parsePatch() method that returns a patch &quot;object&quot; (the method and unit tests have already been checked in):

http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/VCSUtils.pm?rev=56472#L549

If that were landed, then some of the logic in this patch could go into the parseDiffHeader() method:

http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/VCSUtils.pm#L387

and the diff object could be adjusted to have a property representing whether the executable bit should be set or unset.  I should really get around to landing that, which will require additional changes once this lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211265</commentid>
    <comment_count>19</comment_count>
      <attachid>53067</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-10 20:36:13 -0700</bug_when>
    <thetext>Created attachment 53067
Patch with unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211269</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-10 20:41:30 -0700</bug_when>
    <thetext>Attachment 53067 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/Scripts/svn-unapply:135:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/svn-unapply:136:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/svn-unapply:187:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/svn-unapply:249:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/svn-apply:163:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/svn-apply:164:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/svn-apply:395:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:59:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:72:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:79:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:131:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:137:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:138:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:139:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:144:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:145:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:150:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:151:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:153:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:154:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:155:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:156:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:157:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:159:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:160:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:161:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:162:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:163:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/VCSUtils.pm:174:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 29 in 7 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>211271</commentid>
    <comment_count>21</comment_count>
      <attachid>53067</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-10 20:48:12 -0700</bug_when>
    <thetext>Comment on attachment 53067
Patch with unit tests

Tab city batman!

You&apos;re right, parseStartOfPatchOrPropertyChange is not really a win.

+    if (my $filePath = parseStartOfPatchOrPropertyChange($_)) {
+        if (/^Index: (.+)/) {
+            $indexPath = $filePath;
+        } else {
+            $propertyChangePath = $filePath;
+        }

would hav ebeen cleaner as just:

if (index thingy) {

} else (property thingy) {

}

instead of the double-check inside the function.  Not sure.  I mean, you could have done two functions instead.

if (my filePath = parseStartOfPatch()) {

} else (my propertyName = prasePropertyChange()) {

}

Either way, I don&apos;t need to see this again.  But consider the above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211279</commentid>
    <comment_count>22</comment_count>
      <attachid>53071</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-10 21:26:06 -0700</bug_when>
    <thetext>Created attachment 53071
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211280</commentid>
    <comment_count>23</comment_count>
      <attachid>53072</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-10 21:35:32 -0700</bug_when>
    <thetext>Created attachment 53072
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211296</commentid>
    <comment_count>24</comment_count>
      <attachid>53072</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-10 22:46:24 -0700</bug_when>
    <thetext>Comment on attachment 53072
Patch for landing

Clearing flags on attachment: 53072

Committed r57440: &lt;http://trac.webkit.org/changeset/57440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211297</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-10 22:46:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211399</commentid>
    <comment_count>26</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-11 12:11:27 -0700</bug_when>
    <thetext>Rolled out change committed in change set 57440 in change set 57453 &lt;http://trac.webkit.org/changeset/57453&gt; as it did not handle Git patches that included both file and property changes to the same file. Rolling this change out while I look into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211543</commentid>
    <comment_count>27</comment_count>
      <attachid>53149</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-11 22:32:18 -0700</bug_when>
    <thetext>Created attachment 53149
Patch with unit tests

Updated patch to work correctly when patching a file that also has a property change. Refactored bookkeeping code to apply/unapply a patch and added a unit test Scripts/webkitperl/VCSUtils_unittest/processDiffAndPropertyChange.pl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212808</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-15 05:02:51 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Created an attachment (id=53149) [details]

FYI, Dan and I discussed this report at the webkit-meeting.  We decided that it would make sense to land this patch first:

https://bugs.webkit.org/show_bug.cgi?id=34033

And then work together on incorporating the code in this report into the new unit-tested svn-apply code.  I should have an updated patch for bug 34033 shortly (within a couple days).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213952</commentid>
    <comment_count>29</comment_count>
      <attachid>53149</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-19 01:32:29 -0700</bug_when>
    <thetext>Comment on attachment 53149
Patch with unit tests

From Chris&apos;s comment above, sounds like this should be marked r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248341</commentid>
    <comment_count>30</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-07-08 10:57:54 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 39409 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52933</attachid>
            <date>2010-04-08 22:25:24 -0700</date>
            <delta_ts>2010-04-08 23:20:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Bug27204.patch</filename>
            <type>text/plain</type>
            <size>11573</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU3MzEyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDQtMDggIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzIwNAorCisg
ICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgZXhlY3V0YWJsZSBiaXQg
b2YgYSBmaWxlLgorICAgICAgICBUaGUgZXhlY3V0YWJsZSBiaXQgaXMgYW1vbmcgdGhlIG1vc3Qg
Y2hhbmdlZCBmaWxlIHByb3BlcnRpZXMuCisgICAgICAgIEZ1dHVyZSBzdXBwb3J0IGNhbiBpbmNs
dWRlIG90aGVyIHByb3BlcnR5IGNoYW5nZXMuCisKKyAgICAgICAgQ3VycmVudGx5LCBpZiBhIHBh
dGNoIGNoYW5nZXMgdGhlIGV4ZWN1dGFibGUgYml0IG9mIGEgZmlsZQorICAgICAgICBpdCBpcyBu
b3QgcmVzcGVjdGVkIGJ5IHN2bi1hcHBseSBvciBzdm4tdW5hcHBseS4gU2luY2UgdGhlCisgICAg
ICAgIGNvbW1pdC1xdWV1ZSBib3QgdXNlcyB0aGVzZSB0b29scyBhcyBwYXJ0IG9mIGl0cyB3b3Jr
ZmxvdywKKyAgICAgICAgc3VjaCBwYXRjaGVzIGNhbm5vdCBiZSBjb21taXR0ZWQgYnkgaXQuIFRo
YXQgaXMsIHN1Y2ggcGF0Y2hlcworICAgICAgICBuZWVkIHRvIGJlIGNvbW1pdHRlZCBieSBoYW5k
LiBJbnN0ZWFkLCB3ZSBzaG91bGQgYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIHRoZSBleGVjdXRh
YmxlIGJpdCBzbyB0aGF0IHN1Y2ggcGF0Y2hlcyBjYW4gYmUgY29tbWl0dGVkCisgICAgICAgIGJ5
IHRoZSBjb21taXQtcXVldWUgYm90LgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbToK
KyAgICAgICAgKiBTY3JpcHRzL3N2bi1hcHBseToKKyAgICAgICAgKiBTY3JpcHRzL3N2bi11bmFw
cGx5OgorCiAyMDEwLTA0LTA4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL1ZD
U1V0aWxzLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0J
KHJldmlzaW9uIDU3MTk0KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkod29y
a2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBCRUdJTiB7CiAgICAgJFZFUlNJT04gICAgID0g
MS4wMDsKICAgICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CiAgICAgQEVYUE9SVCAgICAg
ID0gcXcoCisgICAgICAgICZhcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaAogICAg
ICAgICAmY2Fub25pY2FsaXplUGF0aAogICAgICAgICAmY2hhbmdlTG9nRW1haWxBZGRyZXNzCiAg
ICAgICAgICZjaGFuZ2VMb2dOYW1lCkBAIC01OSw2ICs2MCw3IEBAIEJFR0lOIHsKICAgICAgICAg
JmlzR2l0RGlyZWN0b3J5CiAgICAgICAgICZpc1NWTgogICAgICAgICAmaXNTVk5EaXJlY3RvcnkK
KyAgICAgICAgJmlzU1ZOUHJvcGVydHkKICAgICAgICAgJmlzU1ZOVmVyc2lvbjE2T3JOZXdlcgog
ICAgICAgICAmbWFrZUZpbGVQYXRoUmVsYXRpdmUKICAgICAgICAgJm1lcmdlQ2hhbmdlTG9ncwpA
QCAtNjYsNiArNjgsOCBAQCBCRUdJTiB7CiAgICAgICAgICZwYXJzZVBhdGNoCiAgICAgICAgICZw
YXRoUmVsYXRpdmVUb1NWTlJlcG9zaXRvcnlSb290Rm9yUGF0aAogICAgICAgICAmcnVuUGF0Y2hD
b21tYW5kCisgICAgICAgICZzY21BZGRFeGVjdXRhYmxlUHJvcGVydHkKKyAgICAgICAgJnNjbVJl
bW92ZUV4ZWN1dGFibGVQcm9wZXJ0eQogICAgICAgICAmc3ZuUmV2aXNpb25Gb3JEaXJlY3RvcnkK
ICAgICAgICAgJnN2blN0YXR1cwogICAgICk7CkBAIC0xMTAsNiArMTE0LDQ2IEBAIHN1YiBpc0dp
dCgpCiAgICAgcmV0dXJuICRpc0dpdDsKIH0KIAorc3ViIGlzU1ZOUHJvcGVydHkoJCkKK3sKKyAg
ICBteSAoJHBhdGNoKSA9IEBfOworCisgICAgcmV0dXJuIDEgaWYgJHBhdGNoID1+L1xuKEFkZGVk
fERlbGV0ZWQpOiBzdm46ZXhlY3V0YWJsZVxuLzsKKyAgICByZXR1cm4gMDsKK30KKworc3ViIGFw
cGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoKCQkJCkKK3sKKyAgICBteSAoJGluZGV4
UGF0aCwgJGZpbGVNb2RlLCAkcGF0Y2hSZWYpID0gQF87CisgICAgIyBOb3RlLCB3ZSBkb24ndCBu
ZWVkIHRvIGluY2x1ZGUgZWl0aGVyIHRoZSBkaXZpZGVyIGxpbmUgb3IgdGhlICIgICArICoiIGxp
bmUsCisgICAgIyBidXQgdGhlc2UgYXJlIGxlZnQgaW4gc28gYXMgdG8gcHJvZHVjZSBhIHByb3Bl
ciBTVk4gcHJvcGVydHkgY2hhbmdlIGVudHJ5LgorICAgICQkcGF0Y2hSZWYgLj0gIlByb3BlcnR5
IGNoYW5nZXMgb246ICRpbmRleFBhdGhcbiI7CisgICAgJCRwYXRjaFJlZiAuPSAiX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X1xuIjsKKyAgICAkJHBhdGNoUmVmIC49ICJBZGRlZDogc3ZuOmV4ZWN1dGFibGVcbiIgaWYgJDIg
ZXEgIjEwMDc1NSI7CisgICAgJCRwYXRjaFJlZiAuPSAiRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVc
biIgaWYgJDIgZXEgIjEwMDY0NCI7CisgICAgJCRwYXRjaFJlZiAuPSAiICAgKyAqIjsKK30KKwor
c3ViIHNjbUFkZEV4ZWN1dGFibGVQcm9wZXJ0eSgkKQoreworICAgIG15ICgkcGF0aCkgPSBAXzsK
KyAgICBpZiAoaXNTVk4oKSkgeworICAgICAgICBzeXN0ZW0oInN2biIsICJwcm9wc2V0IiwgInN2
bjpleGVjdXRhYmxlIiwgIm9uIiwgJHBhdGgpID09IDAgb3IgZGllICJGYWlsZWQgdG8gcnVuICdz
dm4gcHJvcHNldCBzdm46ZXhlY3V0YWJsZSBvbiAkcGF0aCcuIjsKKyAgICB9IGVsc2lmIChpc0dp
dCgpKSB7CisgICAgICAgIGNobW9kKDA3NTUsICRwYXRoKTsKKyAgICB9Cit9CisKK3N1YiBzY21S
ZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJCkKK3sKKyAgICBteSAoJHBhdGgpID0gQF87CisgICAg
aWYgKGlzU1ZOKCkpIHsKKyAgICAgICAgc3lzdGVtKCJzdm4iLCAicHJvcGRlbCIsICJzdm46ZXhl
Y3V0YWJsZSIsICRwYXRoKSA9PSAwIG9yIGRpZSAiRmFpbGVkIHRvIHJ1biAnc3ZuIHByb3BkZWwg
c3ZuOmV4ZWN1dGFibGUgJHBhdGgnLiI7CisgICAgfSBlbHNpZiAoaXNHaXQoKSkgeworICAgICAg
ICBjaG1vZCgwNjY0LCAkcGF0aCk7CisgICAgfQorfQorCiBzdWIgZ2l0QnJhbmNoKCkKIHsKICAg
ICB1bmxlc3MgKGRlZmluZWQgJGdpdEJyYW5jaCkgewpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0
cy9zdm4tYXBwbHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJ
KHJldmlzaW9uIDU3MTk0KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAKICMKICMgTWlzc2luZyBmZWF0dXJlczoKICMKLSMg
ICBIYW5kbGUgcHJvcGVydHkgY2hhbmdlcy4KKyMgICBIYW5kbGUgcHJvcGVydHkgY2hhbmdlcyBv
dGhlciB0aGFuIHRoZSBleGVjdXRhYmxlIGJpdC4KICMgICBIYW5kbGUgY29waWVkIGFuZCBtb3Zl
ZCBkaXJlY3RvcmllcyAod291bGQgcmVxdWlyZSBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0ZS1w
YXRjaCkuCiAjICAgV2hlbiBkb2luZyBhIHJlbW92YWwsIGNoZWNrIHRoYXQgb2xkIGZpbGUgbWF0
Y2hlcyB3aGF0J3MgYmVpbmcgcmVtb3ZlZC4KICMgICBOb3RpY2UgYSBwYXRjaCB0aGF0J3MgYmVp
bmcgYXBwbGllZCBhdCB0aGUgIndyb25nIGxldmVsIiBhbmQgbWFrZSBpdCB3b3JrIGFueXdheS4K
QEAgLTEzMCwxNSArMTMwLDIyIEBAIG15ICRjb3BpZWRGcm9tUGF0aDsKIG15ICRmaWx0ZXI7CiBt
eSAkaW5kZXhQYXRoOwogbXkgJHBhdGNoOworbXkgJHByb3BlcnR5Q2hhbmdlUGF0aDsKK215ICRp
c0dpdEZvcm1hdHRlZFBhdGNoID0gMDsKIHdoaWxlICg8PikgewogICAgIHMvKFtcblxyXSspJC8v
bWc7CiAgICAgbXkgJGVvbCA9ICQxOwogICAgIGlmICghZGVmaW5lZCgkaW5kZXhQYXRoKSAmJiBt
I15kaWZmIC0tZ2l0IFx3LyMpIHsKICAgICAgICAgJGZpbHRlciA9IFwmZ2l0ZGlmZjJzdm5kaWZm
OworICAgICAgICAkaXNHaXRGb3JtYXR0ZWRQYXRjaCA9IDE7CiAgICAgfQogICAgICRfID0gJiRm
aWx0ZXIoJF8pIGlmICRmaWx0ZXI7Ci0gICAgaWYgKC9eSW5kZXg6ICguKykvKSB7Ci0gICAgICAg
ICRpbmRleFBhdGggPSAkMTsKKyAgICBpZiAoL15JbmRleDogKC4rKS8gfHwgL15Qcm9wZXJ0eSBj
aGFuZ2VzIG9uOiAoLispLykgeworICAgICAgICBpZiAoL15JbmRleDogKC4rKS8pIHsKKyAgICAg
ICAgICAgICRpbmRleFBhdGggPSAkMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRw
cm9wZXJ0eUNoYW5nZVBhdGggPSAkMQorICAgICAgICB9CiAgICAgICAgIGlmICgkcGF0Y2gpIHsK
ICAgICAgICAgICAgIGlmICghJGNvcGllZEZyb21QYXRoKSB7CiAgICAgICAgICAgICAgICAgcHVz
aCBAcGF0Y2hlcywgJHBhdGNoOwpAQCAtMTUxLDYgKzE1OCwxMiBAQCB3aGlsZSAoPD4pIHsKICAg
ICAgICAgIyBGaXggcGF0aHMgb24gZGlmZiwgLS0tLCBhbmQgKysrIGxpbmVzIHRvIG1hdGNoIHBy
ZWNlZGluZyBJbmRleDogbGluZS4KICAgICAgICAgcy9cUyskLyRpbmRleFBhdGgvIGlmIC9eZGlm
Zi87CiAgICAgICAgIHMvXi0tLSBcUysvLS0tICRpbmRleFBhdGgvOworCisgICAgICAgIGlmICgk
aXNHaXRGb3JtYXR0ZWRQYXRjaCAmJiAvXm5ldyAoZmlsZSApP21vZGUgKFswLTldezZ9KSQvKSB7
CisgICAgICAgICAgICBhcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaCgkaW5kZXhQ
YXRoLCAkMiwgXCRwYXRjaCk7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisKICAgICAg
ICAgaWYgKC9eLS0tIC4rXChmcm9tIChcUyspOihcZCspXCkkLykgewogICAgICAgICAgICAgJGNv
cGllZEZyb21QYXRoID0gJDE7CiAgICAgICAgICAgICAkY29waWVkRmlsZXN7JGluZGV4UGF0aH0g
PSAkY29waWVkRnJvbVBhdGg7CkBAIC0xNjMsNiArMTc2LDcgQEAgd2hpbGUgKDw+KSB7CiAgICAg
ICAgICAgICAkaW5kZXhQYXRoID0gIiI7CiAgICAgICAgIH0KICAgICB9CisgICAgJHByb3BlcnR5
Q2hhbmdlUGF0aCA9ICIiIGlmICgkcHJvcGVydHlDaGFuZ2VQYXRoICYmIC9eICAgKFwrfC0pIFwq
JC8pOwogICAgICRwYXRjaCAuPSAkXzsKICAgICAkcGF0Y2ggLj0gJGVvbDsKIH0KQEAgLTMzMCw5
ICszNDQsOSBAQCBzdWIgcGF0Y2goJCkKICAgICBteSAoJHBhdGNoKSA9IEBfOwogICAgIHJldHVy
biBpZiAhJHBhdGNoOwogCi0gICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5d
Kyl8KSB7CisgICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8IHx8ICRw
YXRjaCA9fiBtfF5Qcm9wZXJ0eSBjaGFuZ2VzIG9uOiAoW15cclxuXSspfCkgewogICAgICAgICBt
eSAkc2VwYXJhdG9yID0gJy0nIHggNjc7Ci0gICAgICAgIHdhcm4gIkZhaWxlZCB0byBmaW5kICdJ
bmRleDonIGluOlxuJHNlcGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOworICAgICAgICB3
YXJuICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBvciAnUHJvcGVydHkgY2hhbmdlcyBvbjonIGlu
OlxuJHNlcGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOwogICAgICAgICBkaWUgdW5sZXNz
ICRmb3JjZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM0MiwxMyArMzU2LDE1IEBAIHN1
YiBwYXRjaCgkKQogICAgIG15ICRhZGRpdGlvbiA9IDA7CiAgICAgbXkgJGlzQmluYXJ5ID0gMDsK
ICAgICBteSAkaXNHaXRCaW5hcnkgPSAwOworICAgIG15ICRpc1NWTlByb3BlcnR5Q2hhbmdlID0g
MDsKIAogICAgICRhZGRpdGlvbiA9IDEgaWYgKCRwYXRjaCA9fiAvXG4tLS0gLitcKHJldmlzaW9u
IDBcKVxyP1xuLyB8fCAkcGF0Y2ggPX4gL1xuQEAgLTAsMCAuKiBAQC8pICYmICFleGlzdHMoJGNv
cGllZEZpbGVzeyRmdWxsUGF0aH0pOwogICAgICRkZWxldGlvbiA9IDEgaWYgJHBhdGNoID1+IC9c
bkBAIC4qIFwrMCwwIEBALzsKICAgICAkaXNCaW5hcnkgPSAxIGlmICRwYXRjaCA9fiAvXG5DYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZVwuLzsKICAgICAkaXNHaXRC
aW5hcnkgPSAxIGlmICRwYXRjaCA9fiAvXG5HSVQgYmluYXJ5IHBhdGNoXG4vOworICAgICRpc1NW
TlByb3BlcnR5Q2hhbmdlID0gaXNTVk5Qcm9wZXJ0eSgkcGF0Y2gpOwogCi0gICAgaWYgKCEkYWRk
aXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNHaXRCaW5hcnkpIHsKKyAg
ICBpZiAoISRhZGRpdGlvbiAmJiAhJGRlbGV0aW9uICYmICEkaXNCaW5hcnkgJiYgISRpc0dpdEJp
bmFyeSAmJiAhJGlzU1ZOUHJvcGVydHlDaGFuZ2UpIHsKICAgICAgICAgIyBTdGFuZGFyZCBwYXRj
aCwgcGF0Y2ggdG9vbCBjYW4gaGFuZGxlIHRoaXMuCiAgICAgICAgIGlmIChiYXNlbmFtZSgkZnVs
bFBhdGgpIGVxICJDaGFuZ2VMb2ciKSB7CiAgICAgICAgICAgICBteSAkY2hhbmdlTG9nRG90T3Jp
Z0V4aXN0ZWQgPSAtZiAiJHtmdWxsUGF0aH0ub3JpZyI7CkBAIC0zNzIsNiArMzg4LDEzIEBAIHN1
YiBwYXRjaCgkKQogICAgICAgICAgICAgIyBEZWxldGlvbgogICAgICAgICAgICAgYXBwbHlQYXRj
aCgkcGF0Y2gsICRmdWxsUGF0aCwgWyItLWZvcmNlIl0pOwogICAgICAgICAgICAgc2NtUmVtb3Zl
KCRmdWxsUGF0aCk7CisgICAgICAgIH0gZWxzaWYgKCRpc1NWTlByb3BlcnR5Q2hhbmdlKSB7Cisg
ICAgICAgICAgICAjIENoYW5nZSBleGVjdXRhYmxlIGJpdC4KKyAgICAgICAgICAgIGlmICgkcGF0
Y2ggPX4vQWRkZWQ6IHN2bjpleGVjdXRhYmxlXG4vKSB7CisgICAgICAgICAgICAgICAgc2NtQWRk
RXhlY3V0YWJsZVByb3BlcnR5KCRmdWxsUGF0aCk7CisgICAgICAgICAgICB9IGVsc2lmICgkcGF0
Y2ggPX4vRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsKKyAgICAgICAgICAgICAgICBzY21S
ZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgQWRkaXRpb24KICAgICAgICAgICAgIHJlbmFtZSgk
ZnVsbFBhdGgsICIkZnVsbFBhdGgub3JpZyIpIGlmIC1lICRmdWxsUGF0aDsKSW5kZXg6IFdlYktp
dFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2Ny
aXB0cy9zdm4tdW5hcHBseQkocmV2aXNpb24gNTcxOTQpCisrKyBXZWJLaXRUb29scy9TY3JpcHRz
L3N2bi11bmFwcGx5CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAjCiAjIE1pc3Np
bmcgZmVhdHVyZXM6CiAjCi0jICAgSGFuZGxlIHByb3BlcnR5IGNoYW5nZXMuCisjICAgSGFuZGxl
IHByb3BlcnR5IGNoYW5nZXMgb3RoZXIgdGhhbiB0aGUgZXhlY3V0YWJsZSBiaXQuCiAjICAgSGFu
ZGxlIGNvcGllZCBhbmQgbW92ZWQgZGlyZWN0b3JpZXMgKHdvdWxkIHJlcXVpcmUgcGF0Y2hlcyBt
YWRlIGJ5IHN2bi1jcmVhdGUtcGF0Y2gpLgogIyAgIFVzZSB2ZXJzaW9uIG51bWJlcnMgaW4gdGhl
IHBhdGNoIGZpbGUgYW5kIGRvIGEgMy13YXkgbWVyZ2UuCiAjICAgV2hlbiByZXZlcnNpbmcgYW4g
YWRkaXRpb24sIGNoZWNrIHRoYXQgdGhlIGZpbGUgbWF0Y2hlcyB3aGF0J3MgYmVpbmcgcmVtb3Zl
ZC4KQEAgLTEwMSw2ICsxMDEsOCBAQCBteSAkY29waWVkRnJvbVBhdGg7CiBteSAkZmlsdGVyOwog
bXkgJGluZGV4UGF0aDsKIG15ICRwYXRjaDsKK215ICRwcm9wZXJ0eUNoYW5nZVBhdGg7CitteSAk
aXNHaXRGb3JtYXR0ZWRQYXRjaCA9IDA7CiB3aGlsZSAoPD4pIHsKICAgICBzLyhbXG5ccl0rKSQv
L21nOwogICAgIG15ICRlb2wgPSAkMTsKQEAgLTEwOCw4ICsxMTAsMTMgQEAgd2hpbGUgKDw+KSB7
CiAgICAgICAgICRmaWx0ZXIgPSBcJmdpdGRpZmYyc3ZuZGlmZjsKICAgICB9CiAgICAgJF8gPSAm
JGZpbHRlcigkXykgaWYgJGZpbHRlcjsKLSAgICBpZiAoL15JbmRleDogKC4rKS8pIHsKLSAgICAg
ICAgJGluZGV4UGF0aCA9ICQxOworICAgIGlmICgvXkluZGV4OiAoLispLyB8fCAvXlByb3BlcnR5
IGNoYW5nZXMgb246ICguKykvKSB7CisgICAgICAgIGlmICgvXkluZGV4OiAoLispLykgeworICAg
ICAgICAgICAgJGluZGV4UGF0aCA9ICQxOworICAgICAgICAgICAgJGlzR2l0Rm9ybWF0dGVkUGF0
Y2ggPSAkMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRwcm9wZXJ0eUNoYW5nZVBh
dGggPSAkMTsKKyAgICAgICAgfQogICAgICAgICBpZiAoJHBhdGNoKSB7CiAgICAgICAgICAgICBp
ZiAoJGNvcGllZEZyb21QYXRoKSB7CiAgICAgICAgICAgICAgICAgcHVzaCBAY29waWVkRmlsZXMs
ICRwYXRjaDsKQEAgLTEyMyw2ICsxMzAsMTIgQEAgd2hpbGUgKDw+KSB7CiAgICAgaWYgKCRpbmRl
eFBhdGgpIHsKICAgICAgICAgIyBGaXggcGF0aHMgb24gZGlmZiwgLS0tLCBhbmQgKysrIGxpbmVz
IHRvIG1hdGNoIHByZWNlZGluZyBJbmRleDogbGluZS4KICAgICAgICAgcy9eLS0tIFxTKy8tLS0g
JGluZGV4UGF0aC87CisKKyAgICAgICAgaWYgKCRpc0dpdEZvcm1hdHRlZFBhdGNoICYmIC9ebmV3
IChmaWxlICk/bW9kZSAoWzAtOV17Nn0pJC8pIHsKKyAgICAgICAgICAgIGFwcGVuZFNWTkV4ZWN1
dGFibGVCaXRDaGFuZ2VUb1BhdGNoKCRpbmRleFBhdGgsICQyLCBcJHBhdGNoKTsKKyAgICAgICAg
ICAgIG5leHQ7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoL14tLS0gLitcKGZyb20gKFxTKyk6
XGQrXCkkLykgewogICAgICAgICAgICAgJGNvcGllZEZyb21QYXRoID0gJDE7CiAgICAgICAgIH0K
QEAgLTEzMCw2ICsxNDMsNyBAQCB3aGlsZSAoPD4pIHsKICAgICAgICAgICAgICRpbmRleFBhdGgg
PSAiIjsKICAgICAgICAgfQogICAgIH0KKyAgICAkcHJvcGVydHlDaGFuZ2VQYXRoID0gIiIgaWYg
KCRwcm9wZXJ0eUNoYW5nZVBhdGggJiYgL14gICAoXCt8LSkgXCokLyk7CiAgICAgJHBhdGNoIC49
ICRfOwogICAgICRwYXRjaCAuPSAkZW9sOwogfQpAQCAtMTYzLDE0ICsxNzcsMjcgQEAgc3ViIGNo
ZWNrc3VtKCQpCiAgICAgcmV0dXJuICRjaGVja3N1bTsKIH0KIAorc3ViIHVuYXBwbHlTVk5Qcm9w
ZXJ0eUNoYW5nZSgkJCkKK3sKKyAgICBteSAoJGZ1bGxQYXRoLCAkY29udGVudHMpID0gQF87CisK
KyAgICBpZiAoJGNvbnRlbnRzID1+L0FkZGVkOiBzdm46ZXhlY3V0YWJsZVxuLykgeworICAgICAg
ICAjIFJldmVyc2UgcHJvcHNldCBzdm46ZXhlY3V0YWJsZQorICAgICAgICBzeXN0ZW0oInN2biIs
ICJwcm9wZGVsIiwgInN2bjpleGVjdXRhYmxlIiwgJGZ1bGxQYXRoKTsKKyAgICB9IGVsc2lmICgk
Y29udGVudHMgPX4vRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsKKyAgICAgICAgIyBSZXZl
cnNlIHByb3BkZWwgc3ZuOmV4ZWN1dGFibGUKKyAgICAgICAgc3lzdGVtKCJzdm4iLCAicHJvcHNl
dCIsICJzdm46ZXhlY3V0YWJsZSIsICJvbiIsICRmdWxsUGF0aCk7CisgICAgfQorfQorCiBzdWIg
cGF0Y2goJCkKIHsKICAgICBteSAoJHBhdGNoKSA9IEBfOwogICAgIHJldHVybiBpZiAhJHBhdGNo
OwogCi0gICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8KSB7CisgICAg
dW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8IHx8ICRwYXRjaCA9fiBtfF5Q
cm9wZXJ0eSBjaGFuZ2VzIG9uOiAoW15cclxuXSspfCkgewogICAgICAgICBteSAkc2VwYXJhdG9y
ID0gJy0nIHggNjc7Ci0gICAgICAgIHdhcm4gIkZhaWxlZCB0byBmaW5kICdJbmRleDonIGluOlxu
JHNlcGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOworICAgICAgICB3YXJuICJGYWlsZWQg
dG8gZmluZCAnSW5kZXg6JyBvciAnUHJvcGVydHkgY2hhbmdlcyBvbjonIGluOlxuJHNlcGFyYXRv
clxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG15
ICRmdWxsUGF0aCA9ICQxOwpAQCAtMTc5LDEyICsyMDYsMTQgQEAgc3ViIHBhdGNoKCQpCiAgICAg
bXkgJGRlbGV0aW9uID0gMDsKICAgICBteSAkYWRkaXRpb24gPSAwOwogICAgIG15ICRpc0JpbmFy
eSA9IDA7CisgICAgbXkgJGlzU1ZOUHJvcGVydHlDaGFuZ2UgPSAwOwogCiAgICAgJGFkZGl0aW9u
ID0gMSBpZiAoJHBhdGNoID1+IC9cbi0tLSAuK1wocmV2aXNpb24gMFwpXG4vIHx8ICRwYXRjaCA9
fiAvXG5AQCAtMCwwIC4qIEBALyk7CiAgICAgJGRlbGV0aW9uID0gMSBpZiAkcGF0Y2ggPX4gL1xu
QEAgLiogXCswLDAgQEAvOwogICAgICRpc0JpbmFyeSA9IDEgaWYgJHBhdGNoID1+IC9cbkNhbm5v
dCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlXC4vOworICAgICRpc1NWTlBy
b3BlcnR5Q2hhbmdlID0gaXNTVk5Qcm9wZXJ0eSgkcGF0Y2gpOwogCi0gICAgaWYgKCEkYWRkaXRp
b24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5KSB7CisgICAgaWYgKCEkYWRkaXRpb24gJiYg
ISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNTVk5Qcm9wZXJ0eUNoYW5nZSkgewogICAg
ICAgICAjIFN0YW5kYXJkIHBhdGNoLCBwYXRjaCB0b29sIGNhbiBoYW5kbGUgdGhpcy4KICAgICAg
ICAgaWYgKGJhc2VuYW1lKCRmdWxsUGF0aCkgZXEgIkNoYW5nZUxvZyIpIHsKICAgICAgICAgICAg
IG15ICRjaGFuZ2VMb2dEb3RPcmlnRXhpc3RlZCA9IC1mICIke2Z1bGxQYXRofS5vcmlnIjsKQEAg
LTIyNiw2ICsyNTUsMTMgQEAgc3ViIHBhdGNoKCQpCiAKICAgICAgICAgICAgICMgU2hvdyBzdGF0
dXMgaWYgdGhlIGZpbGUgaXMgbW9kaWZlZAogICAgICAgICAgICAgc3lzdGVtICJzdm4iLCAic3Rh
dCIsICRmdWxsUGF0aDsKKyAgICAgICAgfSBlbHNpZiAoJGlzU1ZOUHJvcGVydHlDaGFuZ2UpIHsK
KyAgICAgICAgICAgICMgUmV2ZXJzZSBjaGFuZ2Ugb2YgZXhlY3V0YWJsZSBiaXQuCisgICAgICAg
ICAgICBpZiAoJHBhdGNoID1+L0FkZGVkOiBzdm46ZXhlY3V0YWJsZVxuLykgeworICAgICAgICAg
ICAgICAgIHNjbVJlbW92ZUV4ZWN1dGFibGVQcm9wZXJ0eSgkZnVsbFBhdGgpOworICAgICAgICAg
ICAgfSBlbHNpZiAoJHBhdGNoID1+L0RlbGV0ZWQ6IHN2bjpleGVjdXRhYmxlXG4vKSB7CisgICAg
ICAgICAgICAgICAgc2NtQWRkRXhlY3V0YWJsZVByb3BlcnR5KCRmdWxsUGF0aCk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAjIFJldmVyc2UgYWRkaXRpb24K
ICAgICAgICAgICAgIHVuYXBwbHlQYXRjaCgkcGF0Y2gsICRmdWxsUGF0aCwgWyItLWZvcmNlIl0p
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52937</attachid>
            <date>2010-04-08 23:20:25 -0700</date>
            <delta_ts>2010-04-09 00:23:58 -0700</delta_ts>
            <desc>Patch with unit test</desc>
            <filename>Bug27204_1.patch</filename>
            <type>text/plain</type>
            <size>14638</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU3MzEyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDQtMDggIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzIwNAorCisg
ICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgZXhlY3V0YWJsZSBiaXQg
b2YgYSBmaWxlLgorICAgICAgICBUaGUgZXhlY3V0YWJsZSBiaXQgaXMgYW1vbmcgdGhlIG1vc3Qg
Y2hhbmdlZCBmaWxlIHByb3BlcnRpZXMuCisgICAgICAgIEZ1dHVyZSBzdXBwb3J0IGNhbiBpbmNs
dWRlIG90aGVyIHByb3BlcnR5IGNoYW5nZXMuCisKKyAgICAgICAgQ3VycmVudGx5LCBpZiBhIHBh
dGNoIGNoYW5nZXMgdGhlIGV4ZWN1dGFibGUgYml0IG9mIGEgZmlsZQorICAgICAgICBpdCBpcyBu
b3QgcmVzcGVjdGVkIGJ5IHN2bi1hcHBseSBvciBzdm4tdW5hcHBseS4gU2luY2UgdGhlCisgICAg
ICAgIGNvbW1pdC1xdWV1ZSBib3QgdXNlcyB0aGVzZSB0b29scyBhcyBwYXJ0IG9mIGl0cyB3b3Jr
ZmxvdywKKyAgICAgICAgc3VjaCBwYXRjaGVzIGNhbm5vdCBiZSBjb21taXR0ZWQgYnkgaXQuIFRo
YXQgaXMsIHN1Y2ggcGF0Y2hlcworICAgICAgICBuZWVkIHRvIGJlIGNvbW1pdHRlZCBieSBoYW5k
LiBJbnN0ZWFkLCB3ZSBzaG91bGQgYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIHRoZSBleGVjdXRh
YmxlIGJpdCBzbyB0aGF0IHN1Y2ggcGF0Y2hlcyBjYW4gYmUgY29tbWl0dGVkCisgICAgICAgIGJ5
IHRoZSBjb21taXQtcXVldWUgYm90LgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbToK
KyAgICAgICAgKiBTY3JpcHRzL3N2bi1hcHBseToKKyAgICAgICAgKiBTY3JpcHRzL3N2bi11bmFw
cGx5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9hcHBl
bmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaC5wbDogQWRkZWQuCisKIDIwMTAtMDQtMDgg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkocmV2aXNpb24gNTcxOTQpCisr
KyBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2
ICs0Myw3IEBAIEJFR0lOIHsKICAgICAkVkVSU0lPTiAgICAgPSAxLjAwOwogICAgIEBJU0EgICAg
ICAgICA9IHF3KEV4cG9ydGVyKTsKICAgICBARVhQT1JUICAgICAgPSBxdygKKyAgICAgICAgJmFw
cGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoCiAgICAgICAgICZjYW5vbmljYWxpemVQ
YXRoCiAgICAgICAgICZjaGFuZ2VMb2dFbWFpbEFkZHJlc3MKICAgICAgICAgJmNoYW5nZUxvZ05h
bWUKQEAgLTU5LDYgKzYwLDcgQEAgQkVHSU4gewogICAgICAgICAmaXNHaXREaXJlY3RvcnkKICAg
ICAgICAgJmlzU1ZOCiAgICAgICAgICZpc1NWTkRpcmVjdG9yeQorICAgICAgICAmaXNTVk5Qcm9w
ZXJ0eQogICAgICAgICAmaXNTVk5WZXJzaW9uMTZPck5ld2VyCiAgICAgICAgICZtYWtlRmlsZVBh
dGhSZWxhdGl2ZQogICAgICAgICAmbWVyZ2VDaGFuZ2VMb2dzCkBAIC02Niw2ICs2OCw4IEBAIEJF
R0lOIHsKICAgICAgICAgJnBhcnNlUGF0Y2gKICAgICAgICAgJnBhdGhSZWxhdGl2ZVRvU1ZOUmVw
b3NpdG9yeVJvb3RGb3JQYXRoCiAgICAgICAgICZydW5QYXRjaENvbW1hbmQKKyAgICAgICAgJnNj
bUFkZEV4ZWN1dGFibGVQcm9wZXJ0eQorICAgICAgICAmc2NtUmVtb3ZlRXhlY3V0YWJsZVByb3Bl
cnR5CiAgICAgICAgICZzdm5SZXZpc2lvbkZvckRpcmVjdG9yeQogICAgICAgICAmc3ZuU3RhdHVz
CiAgICAgKTsKQEAgLTExMCw2ICsxMTQsNDYgQEAgc3ViIGlzR2l0KCkKICAgICByZXR1cm4gJGlz
R2l0OwogfQogCitzdWIgaXNTVk5Qcm9wZXJ0eSgkKQoreworICAgIG15ICgkcGF0Y2gpID0gQF87
CisKKyAgICByZXR1cm4gMSBpZiAkcGF0Y2ggPX4vXG4oQWRkZWR8RGVsZXRlZCk6IHN2bjpleGVj
dXRhYmxlXG4vOworICAgIHJldHVybiAwOworfQorCitzdWIgYXBwZW5kU1ZORXhlY3V0YWJsZUJp
dENoYW5nZVRvUGF0Y2goJCQkKQoreworICAgIG15ICgkaW5kZXhQYXRoLCAkZmlsZU1vZGUsICRw
YXRjaFJlZikgPSBAXzsKKyAgICAjIE5vdGUsIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBlaXRo
ZXIgdGhlIGRpdmlkZXIgbGluZSBvciB0aGUgIiAgICsgKiIgbGluZSwKKyAgICAjIGJ1dCB0aGVz
ZSBhcmUgbGVmdCBpbiBzbyBhcyB0byBwcm9kdWNlIGEgcHJvcGVyIFNWTiBwcm9wZXJ0eSBjaGFu
Z2UgZW50cnkuCisgICAgJCRwYXRjaFJlZiAuPSAiUHJvcGVydHkgY2hhbmdlcyBvbjogJGluZGV4
UGF0aFxuIjsKKyAgICAkJHBhdGNoUmVmIC49ICJfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXG4iOworICAgICQkcGF0Y2hS
ZWYgLj0gIkFkZGVkOiBzdm46ZXhlY3V0YWJsZVxuIiBpZiAkZmlsZU1vZGUgZXEgIjEwMDc1NSI7
CisgICAgJCRwYXRjaFJlZiAuPSAiRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbiIgaWYgJGZpbGVN
b2RlIGVxICIxMDA2NDQiOworICAgICQkcGF0Y2hSZWYgLj0gIiAgICsgKlxuIjsKK30KKworc3Vi
IHNjbUFkZEV4ZWN1dGFibGVQcm9wZXJ0eSgkKQoreworICAgIG15ICgkcGF0aCkgPSBAXzsKKyAg
ICBpZiAoaXNTVk4oKSkgeworICAgICAgICBzeXN0ZW0oInN2biIsICJwcm9wc2V0IiwgInN2bjpl
eGVjdXRhYmxlIiwgIm9uIiwgJHBhdGgpID09IDAgb3IgZGllICJGYWlsZWQgdG8gcnVuICdzdm4g
cHJvcHNldCBzdm46ZXhlY3V0YWJsZSBvbiAkcGF0aCcuIjsKKyAgICB9IGVsc2lmIChpc0dpdCgp
KSB7CisgICAgICAgIGNobW9kKDA3NTUsICRwYXRoKTsKKyAgICB9Cit9CisKK3N1YiBzY21SZW1v
dmVFeGVjdXRhYmxlUHJvcGVydHkoJCkKK3sKKyAgICBteSAoJHBhdGgpID0gQF87CisgICAgaWYg
KGlzU1ZOKCkpIHsKKyAgICAgICAgc3lzdGVtKCJzdm4iLCAicHJvcGRlbCIsICJzdm46ZXhlY3V0
YWJsZSIsICRwYXRoKSA9PSAwIG9yIGRpZSAiRmFpbGVkIHRvIHJ1biAnc3ZuIHByb3BkZWwgc3Zu
OmV4ZWN1dGFibGUgJHBhdGgnLiI7CisgICAgfSBlbHNpZiAoaXNHaXQoKSkgeworICAgICAgICBj
aG1vZCgwNjY0LCAkcGF0aCk7CisgICAgfQorfQorCiBzdWIgZ2l0QnJhbmNoKCkKIHsKICAgICB1
bmxlc3MgKGRlZmluZWQgJGdpdEJyYW5jaCkgewpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9z
dm4tYXBwbHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJKHJl
dmlzaW9uIDU3MTk0KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDcgKzUwLDcgQEAKICMKICMgTWlzc2luZyBmZWF0dXJlczoKICMKLSMgICBI
YW5kbGUgcHJvcGVydHkgY2hhbmdlcy4KKyMgICBIYW5kbGUgcHJvcGVydHkgY2hhbmdlcyBvdGhl
ciB0aGFuIHRoZSBleGVjdXRhYmxlIGJpdC4KICMgICBIYW5kbGUgY29waWVkIGFuZCBtb3ZlZCBk
aXJlY3RvcmllcyAod291bGQgcmVxdWlyZSBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0ZS1wYXRj
aCkuCiAjICAgV2hlbiBkb2luZyBhIHJlbW92YWwsIGNoZWNrIHRoYXQgb2xkIGZpbGUgbWF0Y2hl
cyB3aGF0J3MgYmVpbmcgcmVtb3ZlZC4KICMgICBOb3RpY2UgYSBwYXRjaCB0aGF0J3MgYmVpbmcg
YXBwbGllZCBhdCB0aGUgIndyb25nIGxldmVsIiBhbmQgbWFrZSBpdCB3b3JrIGFueXdheS4KQEAg
LTEzMCwxNSArMTMwLDIyIEBAIG15ICRjb3BpZWRGcm9tUGF0aDsKIG15ICRmaWx0ZXI7CiBteSAk
aW5kZXhQYXRoOwogbXkgJHBhdGNoOworbXkgJHByb3BlcnR5Q2hhbmdlUGF0aDsKK215ICRpc0dp
dEZvcm1hdHRlZFBhdGNoID0gMDsKIHdoaWxlICg8PikgewogICAgIHMvKFtcblxyXSspJC8vbWc7
CiAgICAgbXkgJGVvbCA9ICQxOwogICAgIGlmICghZGVmaW5lZCgkaW5kZXhQYXRoKSAmJiBtI15k
aWZmIC0tZ2l0IFx3LyMpIHsKICAgICAgICAgJGZpbHRlciA9IFwmZ2l0ZGlmZjJzdm5kaWZmOwor
ICAgICAgICAkaXNHaXRGb3JtYXR0ZWRQYXRjaCA9IDE7CiAgICAgfQogICAgICRfID0gJiRmaWx0
ZXIoJF8pIGlmICRmaWx0ZXI7Ci0gICAgaWYgKC9eSW5kZXg6ICguKykvKSB7Ci0gICAgICAgICRp
bmRleFBhdGggPSAkMTsKKyAgICBpZiAoL15JbmRleDogKC4rKS8gfHwgL15Qcm9wZXJ0eSBjaGFu
Z2VzIG9uOiAoLispLykgeworICAgICAgICBpZiAoL15JbmRleDogKC4rKS8pIHsKKyAgICAgICAg
ICAgICRpbmRleFBhdGggPSAkMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRwcm9w
ZXJ0eUNoYW5nZVBhdGggPSAkMQorICAgICAgICB9CiAgICAgICAgIGlmICgkcGF0Y2gpIHsKICAg
ICAgICAgICAgIGlmICghJGNvcGllZEZyb21QYXRoKSB7CiAgICAgICAgICAgICAgICAgcHVzaCBA
cGF0Y2hlcywgJHBhdGNoOwpAQCAtMTUxLDYgKzE1OCwxMiBAQCB3aGlsZSAoPD4pIHsKICAgICAg
ICAgIyBGaXggcGF0aHMgb24gZGlmZiwgLS0tLCBhbmQgKysrIGxpbmVzIHRvIG1hdGNoIHByZWNl
ZGluZyBJbmRleDogbGluZS4KICAgICAgICAgcy9cUyskLyRpbmRleFBhdGgvIGlmIC9eZGlmZi87
CiAgICAgICAgIHMvXi0tLSBcUysvLS0tICRpbmRleFBhdGgvOworCisgICAgICAgIGlmICgkaXNH
aXRGb3JtYXR0ZWRQYXRjaCAmJiAvXm5ldyAoZmlsZSApP21vZGUgKFswLTldezZ9KSQvKSB7Cisg
ICAgICAgICAgICBhcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaCgkaW5kZXhQYXRo
LCAkMiwgXCRwYXRjaCk7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisKICAgICAgICAg
aWYgKC9eLS0tIC4rXChmcm9tIChcUyspOihcZCspXCkkLykgewogICAgICAgICAgICAgJGNvcGll
ZEZyb21QYXRoID0gJDE7CiAgICAgICAgICAgICAkY29waWVkRmlsZXN7JGluZGV4UGF0aH0gPSAk
Y29waWVkRnJvbVBhdGg7CkBAIC0xNjMsNiArMTc2LDcgQEAgd2hpbGUgKDw+KSB7CiAgICAgICAg
ICAgICAkaW5kZXhQYXRoID0gIiI7CiAgICAgICAgIH0KICAgICB9CisgICAgJHByb3BlcnR5Q2hh
bmdlUGF0aCA9ICIiIGlmICgkcHJvcGVydHlDaGFuZ2VQYXRoICYmIC9eICAgKFwrfC0pIFwqJC8p
OwogICAgICRwYXRjaCAuPSAkXzsKICAgICAkcGF0Y2ggLj0gJGVvbDsKIH0KQEAgLTMzMCw5ICsz
NDQsOSBAQCBzdWIgcGF0Y2goJCkKICAgICBteSAoJHBhdGNoKSA9IEBfOwogICAgIHJldHVybiBp
ZiAhJHBhdGNoOwogCi0gICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8
KSB7CisgICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8IHx8ICRwYXRj
aCA9fiBtfF5Qcm9wZXJ0eSBjaGFuZ2VzIG9uOiAoW15cclxuXSspfCkgewogICAgICAgICBteSAk
c2VwYXJhdG9yID0gJy0nIHggNjc7Ci0gICAgICAgIHdhcm4gIkZhaWxlZCB0byBmaW5kICdJbmRl
eDonIGluOlxuJHNlcGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOworICAgICAgICB3YXJu
ICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBvciAnUHJvcGVydHkgY2hhbmdlcyBvbjonIGluOlxu
JHNlcGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOwogICAgICAgICBkaWUgdW5sZXNzICRm
b3JjZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM0MiwxMyArMzU2LDE1IEBAIHN1YiBw
YXRjaCgkKQogICAgIG15ICRhZGRpdGlvbiA9IDA7CiAgICAgbXkgJGlzQmluYXJ5ID0gMDsKICAg
ICBteSAkaXNHaXRCaW5hcnkgPSAwOworICAgIG15ICRpc1NWTlByb3BlcnR5Q2hhbmdlID0gMDsK
IAogICAgICRhZGRpdGlvbiA9IDEgaWYgKCRwYXRjaCA9fiAvXG4tLS0gLitcKHJldmlzaW9uIDBc
KVxyP1xuLyB8fCAkcGF0Y2ggPX4gL1xuQEAgLTAsMCAuKiBAQC8pICYmICFleGlzdHMoJGNvcGll
ZEZpbGVzeyRmdWxsUGF0aH0pOwogICAgICRkZWxldGlvbiA9IDEgaWYgJHBhdGNoID1+IC9cbkBA
IC4qIFwrMCwwIEBALzsKICAgICAkaXNCaW5hcnkgPSAxIGlmICRwYXRjaCA9fiAvXG5DYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZVwuLzsKICAgICAkaXNHaXRCaW5h
cnkgPSAxIGlmICRwYXRjaCA9fiAvXG5HSVQgYmluYXJ5IHBhdGNoXG4vOworICAgICRpc1NWTlBy
b3BlcnR5Q2hhbmdlID0gaXNTVk5Qcm9wZXJ0eSgkcGF0Y2gpOwogCi0gICAgaWYgKCEkYWRkaXRp
b24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNHaXRCaW5hcnkpIHsKKyAgICBp
ZiAoISRhZGRpdGlvbiAmJiAhJGRlbGV0aW9uICYmICEkaXNCaW5hcnkgJiYgISRpc0dpdEJpbmFy
eSAmJiAhJGlzU1ZOUHJvcGVydHlDaGFuZ2UpIHsKICAgICAgICAgIyBTdGFuZGFyZCBwYXRjaCwg
cGF0Y2ggdG9vbCBjYW4gaGFuZGxlIHRoaXMuCiAgICAgICAgIGlmIChiYXNlbmFtZSgkZnVsbFBh
dGgpIGVxICJDaGFuZ2VMb2ciKSB7CiAgICAgICAgICAgICBteSAkY2hhbmdlTG9nRG90T3JpZ0V4
aXN0ZWQgPSAtZiAiJHtmdWxsUGF0aH0ub3JpZyI7CkBAIC0zNzIsNiArMzg4LDEzIEBAIHN1YiBw
YXRjaCgkKQogICAgICAgICAgICAgIyBEZWxldGlvbgogICAgICAgICAgICAgYXBwbHlQYXRjaCgk
cGF0Y2gsICRmdWxsUGF0aCwgWyItLWZvcmNlIl0pOwogICAgICAgICAgICAgc2NtUmVtb3ZlKCRm
dWxsUGF0aCk7CisgICAgICAgIH0gZWxzaWYgKCRpc1NWTlByb3BlcnR5Q2hhbmdlKSB7CisgICAg
ICAgICAgICAjIENoYW5nZSBleGVjdXRhYmxlIGJpdC4KKyAgICAgICAgICAgIGlmICgkcGF0Y2gg
PX4vQWRkZWQ6IHN2bjpleGVjdXRhYmxlXG4vKSB7CisgICAgICAgICAgICAgICAgc2NtQWRkRXhl
Y3V0YWJsZVByb3BlcnR5KCRmdWxsUGF0aCk7CisgICAgICAgICAgICB9IGVsc2lmICgkcGF0Y2gg
PX4vRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsKKyAgICAgICAgICAgICAgICBzY21SZW1v
dmVFeGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICMgQWRkaXRpb24KICAgICAgICAgICAgIHJlbmFtZSgkZnVs
bFBhdGgsICIkZnVsbFBhdGgub3JpZyIpIGlmIC1lICRmdWxsUGF0aDsKSW5kZXg6IFdlYktpdFRv
b2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0
cy9zdm4tdW5hcHBseQkocmV2aXNpb24gNTcxOTQpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3N2
bi11bmFwcGx5CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAjCiAjIE1pc3Npbmcg
ZmVhdHVyZXM6CiAjCi0jICAgSGFuZGxlIHByb3BlcnR5IGNoYW5nZXMuCisjICAgSGFuZGxlIHBy
b3BlcnR5IGNoYW5nZXMgb3RoZXIgdGhhbiB0aGUgZXhlY3V0YWJsZSBiaXQuCiAjICAgSGFuZGxl
IGNvcGllZCBhbmQgbW92ZWQgZGlyZWN0b3JpZXMgKHdvdWxkIHJlcXVpcmUgcGF0Y2hlcyBtYWRl
IGJ5IHN2bi1jcmVhdGUtcGF0Y2gpLgogIyAgIFVzZSB2ZXJzaW9uIG51bWJlcnMgaW4gdGhlIHBh
dGNoIGZpbGUgYW5kIGRvIGEgMy13YXkgbWVyZ2UuCiAjICAgV2hlbiByZXZlcnNpbmcgYW4gYWRk
aXRpb24sIGNoZWNrIHRoYXQgdGhlIGZpbGUgbWF0Y2hlcyB3aGF0J3MgYmVpbmcgcmVtb3ZlZC4K
QEAgLTEwMSw2ICsxMDEsOCBAQCBteSAkY29waWVkRnJvbVBhdGg7CiBteSAkZmlsdGVyOwogbXkg
JGluZGV4UGF0aDsKIG15ICRwYXRjaDsKK215ICRwcm9wZXJ0eUNoYW5nZVBhdGg7CitteSAkaXNH
aXRGb3JtYXR0ZWRQYXRjaCA9IDA7CiB3aGlsZSAoPD4pIHsKICAgICBzLyhbXG5ccl0rKSQvL21n
OwogICAgIG15ICRlb2wgPSAkMTsKQEAgLTEwOCw4ICsxMTAsMTMgQEAgd2hpbGUgKDw+KSB7CiAg
ICAgICAgICRmaWx0ZXIgPSBcJmdpdGRpZmYyc3ZuZGlmZjsKICAgICB9CiAgICAgJF8gPSAmJGZp
bHRlcigkXykgaWYgJGZpbHRlcjsKLSAgICBpZiAoL15JbmRleDogKC4rKS8pIHsKLSAgICAgICAg
JGluZGV4UGF0aCA9ICQxOworICAgIGlmICgvXkluZGV4OiAoLispLyB8fCAvXlByb3BlcnR5IGNo
YW5nZXMgb246ICguKykvKSB7CisgICAgICAgIGlmICgvXkluZGV4OiAoLispLykgeworICAgICAg
ICAgICAgJGluZGV4UGF0aCA9ICQxOworICAgICAgICAgICAgJGlzR2l0Rm9ybWF0dGVkUGF0Y2gg
PSAkMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRwcm9wZXJ0eUNoYW5nZVBhdGgg
PSAkMTsKKyAgICAgICAgfQogICAgICAgICBpZiAoJHBhdGNoKSB7CiAgICAgICAgICAgICBpZiAo
JGNvcGllZEZyb21QYXRoKSB7CiAgICAgICAgICAgICAgICAgcHVzaCBAY29waWVkRmlsZXMsICRw
YXRjaDsKQEAgLTEyMyw2ICsxMzAsMTIgQEAgd2hpbGUgKDw+KSB7CiAgICAgaWYgKCRpbmRleFBh
dGgpIHsKICAgICAgICAgIyBGaXggcGF0aHMgb24gZGlmZiwgLS0tLCBhbmQgKysrIGxpbmVzIHRv
IG1hdGNoIHByZWNlZGluZyBJbmRleDogbGluZS4KICAgICAgICAgcy9eLS0tIFxTKy8tLS0gJGlu
ZGV4UGF0aC87CisKKyAgICAgICAgaWYgKCRpc0dpdEZvcm1hdHRlZFBhdGNoICYmIC9ebmV3IChm
aWxlICk/bW9kZSAoWzAtOV17Nn0pJC8pIHsKKyAgICAgICAgICAgIGFwcGVuZFNWTkV4ZWN1dGFi
bGVCaXRDaGFuZ2VUb1BhdGNoKCRpbmRleFBhdGgsICQyLCBcJHBhdGNoKTsKKyAgICAgICAgICAg
IG5leHQ7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoL14tLS0gLitcKGZyb20gKFxTKyk6XGQr
XCkkLykgewogICAgICAgICAgICAgJGNvcGllZEZyb21QYXRoID0gJDE7CiAgICAgICAgIH0KQEAg
LTEzMCw2ICsxNDMsNyBAQCB3aGlsZSAoPD4pIHsKICAgICAgICAgICAgICRpbmRleFBhdGggPSAi
IjsKICAgICAgICAgfQogICAgIH0KKyAgICAkcHJvcGVydHlDaGFuZ2VQYXRoID0gIiIgaWYgKCRw
cm9wZXJ0eUNoYW5nZVBhdGggJiYgL14gICAoXCt8LSkgXCokLyk7CiAgICAgJHBhdGNoIC49ICRf
OwogICAgICRwYXRjaCAuPSAkZW9sOwogfQpAQCAtMTYzLDE0ICsxNzcsMjcgQEAgc3ViIGNoZWNr
c3VtKCQpCiAgICAgcmV0dXJuICRjaGVja3N1bTsKIH0KIAorc3ViIHVuYXBwbHlTVk5Qcm9wZXJ0
eUNoYW5nZSgkJCkKK3sKKyAgICBteSAoJGZ1bGxQYXRoLCAkY29udGVudHMpID0gQF87CisKKyAg
ICBpZiAoJGNvbnRlbnRzID1+L0FkZGVkOiBzdm46ZXhlY3V0YWJsZVxuLykgeworICAgICAgICAj
IFJldmVyc2UgcHJvcHNldCBzdm46ZXhlY3V0YWJsZQorICAgICAgICBzeXN0ZW0oInN2biIsICJw
cm9wZGVsIiwgInN2bjpleGVjdXRhYmxlIiwgJGZ1bGxQYXRoKTsKKyAgICB9IGVsc2lmICgkY29u
dGVudHMgPX4vRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsKKyAgICAgICAgIyBSZXZlcnNl
IHByb3BkZWwgc3ZuOmV4ZWN1dGFibGUKKyAgICAgICAgc3lzdGVtKCJzdm4iLCAicHJvcHNldCIs
ICJzdm46ZXhlY3V0YWJsZSIsICJvbiIsICRmdWxsUGF0aCk7CisgICAgfQorfQorCiBzdWIgcGF0
Y2goJCkKIHsKICAgICBteSAoJHBhdGNoKSA9IEBfOwogICAgIHJldHVybiBpZiAhJHBhdGNoOwog
Ci0gICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8KSB7CisgICAgdW5s
ZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8IHx8ICRwYXRjaCA9fiBtfF5Qcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiAoW15cclxuXSspfCkgewogICAgICAgICBteSAkc2VwYXJhdG9yID0g
Jy0nIHggNjc7Ci0gICAgICAgIHdhcm4gIkZhaWxlZCB0byBmaW5kICdJbmRleDonIGluOlxuJHNl
cGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOworICAgICAgICB3YXJuICJGYWlsZWQgdG8g
ZmluZCAnSW5kZXg6JyBvciAnUHJvcGVydHkgY2hhbmdlcyBvbjonIGluOlxuJHNlcGFyYXRvclxu
JHBhdGNoXG4kc2VwYXJhdG9yXG4iOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG15ICRm
dWxsUGF0aCA9ICQxOwpAQCAtMTc5LDEyICsyMDYsMTQgQEAgc3ViIHBhdGNoKCQpCiAgICAgbXkg
JGRlbGV0aW9uID0gMDsKICAgICBteSAkYWRkaXRpb24gPSAwOwogICAgIG15ICRpc0JpbmFyeSA9
IDA7CisgICAgbXkgJGlzU1ZOUHJvcGVydHlDaGFuZ2UgPSAwOwogCiAgICAgJGFkZGl0aW9uID0g
MSBpZiAoJHBhdGNoID1+IC9cbi0tLSAuK1wocmV2aXNpb24gMFwpXG4vIHx8ICRwYXRjaCA9fiAv
XG5AQCAtMCwwIC4qIEBALyk7CiAgICAgJGRlbGV0aW9uID0gMSBpZiAkcGF0Y2ggPX4gL1xuQEAg
LiogXCswLDAgQEAvOwogICAgICRpc0JpbmFyeSA9IDEgaWYgJHBhdGNoID1+IC9cbkNhbm5vdCBk
aXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlXC4vOworICAgICRpc1NWTlByb3Bl
cnR5Q2hhbmdlID0gaXNTVk5Qcm9wZXJ0eSgkcGF0Y2gpOwogCi0gICAgaWYgKCEkYWRkaXRpb24g
JiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5KSB7CisgICAgaWYgKCEkYWRkaXRpb24gJiYgISRk
ZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNTVk5Qcm9wZXJ0eUNoYW5nZSkgewogICAgICAg
ICAjIFN0YW5kYXJkIHBhdGNoLCBwYXRjaCB0b29sIGNhbiBoYW5kbGUgdGhpcy4KICAgICAgICAg
aWYgKGJhc2VuYW1lKCRmdWxsUGF0aCkgZXEgIkNoYW5nZUxvZyIpIHsKICAgICAgICAgICAgIG15
ICRjaGFuZ2VMb2dEb3RPcmlnRXhpc3RlZCA9IC1mICIke2Z1bGxQYXRofS5vcmlnIjsKQEAgLTIy
Niw2ICsyNTUsMTMgQEAgc3ViIHBhdGNoKCQpCiAKICAgICAgICAgICAgICMgU2hvdyBzdGF0dXMg
aWYgdGhlIGZpbGUgaXMgbW9kaWZlZAogICAgICAgICAgICAgc3lzdGVtICJzdm4iLCAic3RhdCIs
ICRmdWxsUGF0aDsKKyAgICAgICAgfSBlbHNpZiAoJGlzU1ZOUHJvcGVydHlDaGFuZ2UpIHsKKyAg
ICAgICAgICAgICMgUmV2ZXJzZSBjaGFuZ2Ugb2YgZXhlY3V0YWJsZSBiaXQuCisgICAgICAgICAg
ICBpZiAoJHBhdGNoID1+L0FkZGVkOiBzdm46ZXhlY3V0YWJsZVxuLykgeworICAgICAgICAgICAg
ICAgIHNjbVJlbW92ZUV4ZWN1dGFibGVQcm9wZXJ0eSgkZnVsbFBhdGgpOworICAgICAgICAgICAg
fSBlbHNpZiAoJHBhdGNoID1+L0RlbGV0ZWQ6IHN2bjpleGVjdXRhYmxlXG4vKSB7CisgICAgICAg
ICAgICAgICAgc2NtQWRkRXhlY3V0YWJsZVByb3BlcnR5KCRmdWxsUGF0aCk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAjIFJldmVyc2UgYWRkaXRpb24KICAg
ICAgICAgICAgIHVuYXBwbHlQYXRjaCgkcGF0Y2gsICRmdWxsUGF0aCwgWyItLWZvcmNlIl0pOwpJ
bmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2Fw
cGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoLnBsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9hcHBlbmRTVk5FeGVj
dXRhYmxlQml0Q2hhbmdlVG9QYXRjaC5wbAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9hcHBlbmRTVk5FeGVjdXRhYmxlQml0
Q2hhbmdlVG9QYXRjaC5wbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorIyEvdXNyL2Jp
bi9wZXJsCisjCisjIENvcHlyaWdodCAoQykgUmVzZWFyY2ggaW4gTW90aW9uIExpbWl0ZWQgMjAx
MC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBVbml0IHRl
c3RzIG9mIFZDU1V0aWxzOjphcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaCgpLgor
Cit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDI7Cit1c2UgVkNTVXRpbHM7CisKK215ICR0aXRs
ZTsKK215ICRwYXRjaDsKK215ICRleHBlY3RlZFBhdGNoOworCisjIE5ldyB0ZXN0CiskdGl0bGUg
PSAiYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5nZVRvUGF0Y2g6IEFkZCBleGVjdXRhYmxlIGJp
dCB0byBmaWxlLiI7CisKKyRleHBlY3RlZFBhdGNoID0gPDwnRU5EJzsKK1Byb3BlcnR5IGNoYW5n
ZXMgb246IGZpbGVfdG9fcGF0Y2gudHh0CitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCitBZGRlZDogc3ZuOmV4ZWN1dGFi
bGUKKyAgICsgKgorRU5ECisKKyRwYXRjaCA9ICIiOworYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENo
YW5nZVRvUGF0Y2goImZpbGVfdG9fcGF0Y2gudHh0IiwgIjEwMDc1NSIsIFwkcGF0Y2gpOworCitv
aygkcGF0Y2ggZXEgJGV4cGVjdGVkUGF0Y2gsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRs
ZSA9ICJhcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaDogUmVtb3ZlIGV4ZWN1dGFi
bGUgYml0IGZyb20gZmlsZS4iOworCiskZXhwZWN0ZWRQYXRjaCA9IDw8J0VORCc7CitQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBmaWxlX3RvX3BhdGNoLnR4dAorX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworRGVsZXRlZDogc3Zu
OmV4ZWN1dGFibGUKKyAgICsgKgorRU5ECisKKyRwYXRjaCA9ICIiOworYXBwZW5kU1ZORXhlY3V0
YWJsZUJpdENoYW5nZVRvUGF0Y2goImZpbGVfdG9fcGF0Y2gudHh0IiwgIjEwMDY0NCIsIFwkcGF0
Y2gpOworCitvaygkcGF0Y2ggZXEgJGV4cGVjdGVkUGF0Y2gsICR0aXRsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52944</attachid>
            <date>2010-04-09 00:23:58 -0700</date>
            <delta_ts>2010-04-10 17:17:29 -0700</delta_ts>
            <desc>Patch with unit tests</desc>
            <filename>Bug27204_2.patch</filename>
            <type>text/plain</type>
            <size>19071</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU3MzEyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMDQtMDggIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzIwNAorCisg
ICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgZXhlY3V0YWJsZSBiaXQg
b2YgYSBmaWxlLgorICAgICAgICBUaGUgZXhlY3V0YWJsZSBiaXQgaXMgYW1vbmcgdGhlIG1vc3Qg
Y2hhbmdlZCBmaWxlIHByb3BlcnRpZXMuCisgICAgICAgIEZ1dHVyZSBzdXBwb3J0IGNhbiBpbmNs
dWRlIG90aGVyIHByb3BlcnR5IGNoYW5nZXMuCisKKyAgICAgICAgQ3VycmVudGx5LCBpZiBhIHBh
dGNoIGNoYW5nZXMgdGhlIGV4ZWN1dGFibGUgYml0IG9mIGEgZmlsZQorICAgICAgICBpdCBpcyBu
b3QgcmVzcGVjdGVkIGJ5IHN2bi1hcHBseSBvciBzdm4tdW5hcHBseS4gU2luY2UgdGhlCisgICAg
ICAgIGNvbW1pdC1xdWV1ZSBib3QgdXNlcyB0aGVzZSB0b29scyBhcyBwYXJ0IG9mIGl0cyB3b3Jr
ZmxvdywKKyAgICAgICAgc3VjaCBwYXRjaGVzIGNhbm5vdCBiZSBjb21taXR0ZWQgYnkgaXQuIFRo
YXQgaXMsIHN1Y2ggcGF0Y2hlcworICAgICAgICBuZWVkIHRvIGJlIGNvbW1pdHRlZCBieSBoYW5k
LiBJbnN0ZWFkLCB3ZSBzaG91bGQgYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIHRoZSBleGVjdXRh
YmxlIGJpdCBzbyB0aGF0IHN1Y2ggcGF0Y2hlcyBjYW4gYmUgY29tbWl0dGVkCisgICAgICAgIGJ5
IHRoZSBjb21taXQtcXVldWUgYm90LgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbTog
QWxzbyBjaGFuZ2UgcmVmZXJlbmNlIHRvIEFwcGxlIENvbXB1dGVyLCBJbmMuCisgICAgICAgIGlu
IGNvcHlyaWdodCB0byBBcHBsZSwgSW5jLgorICAgICAgICAqIFNjcmlwdHMvc3ZuLWFwcGx5Ogor
ICAgICAgICAqIFNjcmlwdHMvc3ZuLXVuYXBwbHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
ZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNo
LnBsOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRl
c3QvcGFyc2VHaXRGaWxlTW9kZS5wbDogQWRkZWQuCisKIDIwMTAtMDQtMDggIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5k
ZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkocmV2aXNpb24gNTcxOTQpCisrKyBXZWJLaXRUb29s
cy9TY3JpcHRzL1ZDU1V0aWxzLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogIyBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIENocmlzIEplcmRvbmVrIChjaHJpcy5q
ZXJkb25la0BnbWFpbC5jb20pCisjIENvcHlyaWdodCAoQykgUmVzZWFyY2ggaW4gTW90aW9uIExp
bWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTAsNyArMTEsNyBAQAogIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
ICMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAotIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAjICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCiAjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uIAogIwpAQCAtNDMsNiArNDQsNyBAQCBCRUdJTiB7CiAgICAgJFZF
UlNJT04gICAgID0gMS4wMDsKICAgICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CiAgICAg
QEVYUE9SVCAgICAgID0gcXcoCisgICAgICAgICZhcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdl
VG9QYXRjaAogICAgICAgICAmY2Fub25pY2FsaXplUGF0aAogICAgICAgICAmY2hhbmdlTG9nRW1h
aWxBZGRyZXNzCiAgICAgICAgICZjaGFuZ2VMb2dOYW1lCkBAIC01OSwxMyArNjEsMTcgQEAgQkVH
SU4gewogICAgICAgICAmaXNHaXREaXJlY3RvcnkKICAgICAgICAgJmlzU1ZOCiAgICAgICAgICZp
c1NWTkRpcmVjdG9yeQorICAgICAgICAmaXNTVk5Qcm9wZXJ0eQogICAgICAgICAmaXNTVk5WZXJz
aW9uMTZPck5ld2VyCiAgICAgICAgICZtYWtlRmlsZVBhdGhSZWxhdGl2ZQogICAgICAgICAmbWVy
Z2VDaGFuZ2VMb2dzCiAgICAgICAgICZub3JtYWxpemVQYXRoCisgICAgICAgICZwYXJzZUdpdEZp
bGVNb2RlCiAgICAgICAgICZwYXJzZVBhdGNoCiAgICAgICAgICZwYXRoUmVsYXRpdmVUb1NWTlJl
cG9zaXRvcnlSb290Rm9yUGF0aAogICAgICAgICAmcnVuUGF0Y2hDb21tYW5kCisgICAgICAgICZz
Y21BZGRFeGVjdXRhYmxlUHJvcGVydHkKKyAgICAgICAgJnNjbVJlbW92ZUV4ZWN1dGFibGVQcm9w
ZXJ0eQogICAgICAgICAmc3ZuUmV2aXNpb25Gb3JEaXJlY3RvcnkKICAgICAgICAgJnN2blN0YXR1
cwogICAgICk7CkBAIC0xMTAsNiArMTE2LDUwIEBAIHN1YiBpc0dpdCgpCiAgICAgcmV0dXJuICRp
c0dpdDsKIH0KIAorc3ViIHBhcnNlR2l0RmlsZU1vZGUoJCkKK3sKKyAgICBteSAoJHBhdGNoKSA9
IEBfOworICAgIHJldHVybiAoJHBhdGNoID1+IC9ebmV3IChmaWxlICk/bW9kZSAoWzAtOV17Nn0p
JC8pID8gJDIgOiAwOworfQorCitzdWIgaXNTVk5Qcm9wZXJ0eSgkKQoreworICAgIG15ICgkcGF0
Y2gpID0gQF87CisgICAgcmV0dXJuICRwYXRjaCA9fiAvXG4oQWRkZWR8RGVsZXRlZCk6IHN2bjpl
eGVjdXRhYmxlXG4vOworfQorCitzdWIgYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5nZVRvUGF0
Y2goJCQkKQoreworICAgIG15ICgkaW5kZXhQYXRoLCAkZmlsZU1vZGUsICRwYXRjaFJlZikgPSBA
XzsKKyAgICAjIE5vdGUsIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBlaXRoZXIgdGhlIGRpdmlk
ZXIgbGluZSBvciB0aGUgIiAgICsgKiIgbGluZSwKKyAgICAjIGJ1dCB0aGVzZSBhcmUgbGVmdCBp
biBzbyBhcyB0byBwcm9kdWNlIGEgcHJvcGVyIFNWTiBwcm9wZXJ0eSBjaGFuZ2UgZW50cnkuCisg
ICAgJCRwYXRjaFJlZiAuPSAiUHJvcGVydHkgY2hhbmdlcyBvbjogJGluZGV4UGF0aFxuIjsKKyAg
ICAkJHBhdGNoUmVmIC49ICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXG4iOworICAgICQkcGF0Y2hSZWYgLj0gIkFkZGVk
OiBzdm46ZXhlY3V0YWJsZVxuIiBpZiAkZmlsZU1vZGUgZXEgIjEwMDc1NSI7CisgICAgJCRwYXRj
aFJlZiAuPSAiRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbiIgaWYgJGZpbGVNb2RlIGVxICIxMDA2
NDQiOworICAgICQkcGF0Y2hSZWYgLj0gIiAgICsgKlxuIjsKK30KKworc3ViIHNjbUFkZEV4ZWN1
dGFibGVQcm9wZXJ0eSgkKQoreworICAgIG15ICgkcGF0aCkgPSBAXzsKKyAgICBpZiAoaXNTVk4o
KSkgeworICAgICAgICBzeXN0ZW0oInN2biIsICJwcm9wc2V0IiwgInN2bjpleGVjdXRhYmxlIiwg
Im9uIiwgJHBhdGgpID09IDAgb3IgZGllICJGYWlsZWQgdG8gcnVuICdzdm4gcHJvcHNldCBzdm46
ZXhlY3V0YWJsZSBvbiAkcGF0aCcuIjsKKyAgICB9IGVsc2lmIChpc0dpdCgpKSB7CisgICAgICAg
IGNobW9kKDA3NTUsICRwYXRoKTsKKyAgICB9Cit9CisKK3N1YiBzY21SZW1vdmVFeGVjdXRhYmxl
UHJvcGVydHkoJCkKK3sKKyAgICBteSAoJHBhdGgpID0gQF87CisgICAgaWYgKGlzU1ZOKCkpIHsK
KyAgICAgICAgc3lzdGVtKCJzdm4iLCAicHJvcGRlbCIsICJzdm46ZXhlY3V0YWJsZSIsICRwYXRo
KSA9PSAwIG9yIGRpZSAiRmFpbGVkIHRvIHJ1biAnc3ZuIHByb3BkZWwgc3ZuOmV4ZWN1dGFibGUg
JHBhdGgnLiI7CisgICAgfSBlbHNpZiAoaXNHaXQoKSkgeworICAgICAgICBjaG1vZCgwNjY0LCAk
cGF0aCk7CisgICAgfQorfQorCiBzdWIgZ2l0QnJhbmNoKCkKIHsKICAgICB1bmxlc3MgKGRlZmlu
ZWQgJGdpdEJyYW5jaCkgewpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJKHJldmlzaW9uIDU3MTk0
KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDcgKzUwLDcgQEAKICMKICMgTWlzc2luZyBmZWF0dXJlczoKICMKLSMgICBIYW5kbGUgcHJvcGVy
dHkgY2hhbmdlcy4KKyMgICBIYW5kbGUgcHJvcGVydHkgY2hhbmdlcyBvdGhlciB0aGFuIHRoZSBl
eGVjdXRhYmxlIGJpdC4KICMgICBIYW5kbGUgY29waWVkIGFuZCBtb3ZlZCBkaXJlY3RvcmllcyAo
d291bGQgcmVxdWlyZSBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0ZS1wYXRjaCkuCiAjICAgV2hl
biBkb2luZyBhIHJlbW92YWwsIGNoZWNrIHRoYXQgb2xkIGZpbGUgbWF0Y2hlcyB3aGF0J3MgYmVp
bmcgcmVtb3ZlZC4KICMgICBOb3RpY2UgYSBwYXRjaCB0aGF0J3MgYmVpbmcgYXBwbGllZCBhdCB0
aGUgIndyb25nIGxldmVsIiBhbmQgbWFrZSBpdCB3b3JrIGFueXdheS4KQEAgLTEzMCwxNSArMTMw
LDIyIEBAIG15ICRjb3BpZWRGcm9tUGF0aDsKIG15ICRmaWx0ZXI7CiBteSAkaW5kZXhQYXRoOwog
bXkgJHBhdGNoOworbXkgJHByb3BlcnR5Q2hhbmdlUGF0aDsKK215ICRpc0dpdEZvcm1hdHRlZFBh
dGNoID0gMDsKIHdoaWxlICg8PikgewogICAgIHMvKFtcblxyXSspJC8vbWc7CiAgICAgbXkgJGVv
bCA9ICQxOwogICAgIGlmICghZGVmaW5lZCgkaW5kZXhQYXRoKSAmJiBtI15kaWZmIC0tZ2l0IFx3
LyMpIHsKICAgICAgICAgJGZpbHRlciA9IFwmZ2l0ZGlmZjJzdm5kaWZmOworICAgICAgICAkaXNH
aXRGb3JtYXR0ZWRQYXRjaCA9IDE7CiAgICAgfQogICAgICRfID0gJiRmaWx0ZXIoJF8pIGlmICRm
aWx0ZXI7Ci0gICAgaWYgKC9eSW5kZXg6ICguKykvKSB7Ci0gICAgICAgICRpbmRleFBhdGggPSAk
MTsKKyAgICBpZiAoL15JbmRleDogKC4rKS8gfHwgL15Qcm9wZXJ0eSBjaGFuZ2VzIG9uOiAoLisp
LykgeworICAgICAgICBpZiAoL15JbmRleDogKC4rKS8pIHsKKyAgICAgICAgICAgICRpbmRleFBh
dGggPSAkMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRwcm9wZXJ0eUNoYW5nZVBh
dGggPSAkMQorICAgICAgICB9CiAgICAgICAgIGlmICgkcGF0Y2gpIHsKICAgICAgICAgICAgIGlm
ICghJGNvcGllZEZyb21QYXRoKSB7CiAgICAgICAgICAgICAgICAgcHVzaCBAcGF0Y2hlcywgJHBh
dGNoOwpAQCAtMTUxLDYgKzE1OCwxMiBAQCB3aGlsZSAoPD4pIHsKICAgICAgICAgIyBGaXggcGF0
aHMgb24gZGlmZiwgLS0tLCBhbmQgKysrIGxpbmVzIHRvIG1hdGNoIHByZWNlZGluZyBJbmRleDog
bGluZS4KICAgICAgICAgcy9cUyskLyRpbmRleFBhdGgvIGlmIC9eZGlmZi87CiAgICAgICAgIHMv
Xi0tLSBcUysvLS0tICRpbmRleFBhdGgvOworCisgICAgICAgIGlmICgkaXNHaXRGb3JtYXR0ZWRQ
YXRjaCAmJiAobXkgJGZpbGVNb2RlID0gcGFyc2VHaXRGaWxlTW9kZSgkXykpKSB7CisgICAgICAg
ICAgICBhcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaCgkaW5kZXhQYXRoLCAkZmls
ZU1vZGUsIFwkcGF0Y2gpOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorCiAgICAgICAg
IGlmICgvXi0tLSAuK1woZnJvbSAoXFMrKTooXGQrKVwpJC8pIHsKICAgICAgICAgICAgICRjb3Bp
ZWRGcm9tUGF0aCA9ICQxOwogICAgICAgICAgICAgJGNvcGllZEZpbGVzeyRpbmRleFBhdGh9ID0g
JGNvcGllZEZyb21QYXRoOwpAQCAtMTYzLDYgKzE3Niw3IEBAIHdoaWxlICg8PikgewogICAgICAg
ICAgICAgJGluZGV4UGF0aCA9ICIiOwogICAgICAgICB9CiAgICAgfQorICAgICRwcm9wZXJ0eUNo
YW5nZVBhdGggPSAiIiBpZiAoJHByb3BlcnR5Q2hhbmdlUGF0aCAmJiAvXiAgIChcK3wtKSBcKiQv
KTsKICAgICAkcGF0Y2ggLj0gJF87CiAgICAgJHBhdGNoIC49ICRlb2w7CiB9CkBAIC0zMzAsOSAr
MzQ0LDkgQEAgc3ViIHBhdGNoKCQpCiAgICAgbXkgKCRwYXRjaCkgPSBAXzsKICAgICByZXR1cm4g
aWYgISRwYXRjaDsKIAotICAgIHVubGVzcyAoJHBhdGNoID1+IG18XkluZGV4OiAoW15cclxuXSsp
fCkgeworICAgIHVubGVzcyAoJHBhdGNoID1+IG18XkluZGV4OiAoW15cclxuXSspfCB8fCAkcGF0
Y2ggPX4gbXxeUHJvcGVydHkgY2hhbmdlcyBvbjogKFteXHJcbl0rKXwpIHsKICAgICAgICAgbXkg
JHNlcGFyYXRvciA9ICctJyB4IDY3OwotICAgICAgICB3YXJuICJGYWlsZWQgdG8gZmluZCAnSW5k
ZXg6JyBpbjpcbiRzZXBhcmF0b3JcbiRwYXRjaFxuJHNlcGFyYXRvclxuIjsKKyAgICAgICAgd2Fy
biAiRmFpbGVkIHRvIGZpbmQgJ0luZGV4Oicgb3IgJ1Byb3BlcnR5IGNoYW5nZXMgb246JyBpbjpc
biRzZXBhcmF0b3JcbiRwYXRjaFxuJHNlcGFyYXRvclxuIjsKICAgICAgICAgZGllIHVubGVzcyAk
Zm9yY2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNDIsMTMgKzM1NiwxNSBAQCBzdWIg
cGF0Y2goJCkKICAgICBteSAkYWRkaXRpb24gPSAwOwogICAgIG15ICRpc0JpbmFyeSA9IDA7CiAg
ICAgbXkgJGlzR2l0QmluYXJ5ID0gMDsKKyAgICBteSAkaXNTVk5Qcm9wZXJ0eUNoYW5nZSA9IDA7
CiAKICAgICAkYWRkaXRpb24gPSAxIGlmICgkcGF0Y2ggPX4gL1xuLS0tIC4rXChyZXZpc2lvbiAw
XClccj9cbi8gfHwgJHBhdGNoID1+IC9cbkBAIC0wLDAgLiogQEAvKSAmJiAhZXhpc3RzKCRjb3Bp
ZWRGaWxlc3skZnVsbFBhdGh9KTsKICAgICAkZGVsZXRpb24gPSAxIGlmICRwYXRjaCA9fiAvXG5A
QCAuKiBcKzAsMCBAQC87CiAgICAgJGlzQmluYXJ5ID0gMSBpZiAkcGF0Y2ggPX4gL1xuQ2Fubm90
IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGVcLi87CiAgICAgJGlzR2l0Qmlu
YXJ5ID0gMSBpZiAkcGF0Y2ggPX4gL1xuR0lUIGJpbmFyeSBwYXRjaFxuLzsKKyAgICAkaXNTVk5Q
cm9wZXJ0eUNoYW5nZSA9IGlzU1ZOUHJvcGVydHkoJHBhdGNoKTsKIAotICAgIGlmICghJGFkZGl0
aW9uICYmICEkZGVsZXRpb24gJiYgISRpc0JpbmFyeSAmJiAhJGlzR2l0QmluYXJ5KSB7CisgICAg
aWYgKCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNHaXRCaW5h
cnkgJiYgISRpc1NWTlByb3BlcnR5Q2hhbmdlKSB7CiAgICAgICAgICMgU3RhbmRhcmQgcGF0Y2gs
IHBhdGNoIHRvb2wgY2FuIGhhbmRsZSB0aGlzLgogICAgICAgICBpZiAoYmFzZW5hbWUoJGZ1bGxQ
YXRoKSBlcSAiQ2hhbmdlTG9nIikgewogICAgICAgICAgICAgbXkgJGNoYW5nZUxvZ0RvdE9yaWdF
eGlzdGVkID0gLWYgIiR7ZnVsbFBhdGh9Lm9yaWciOwpAQCAtMzcyLDYgKzM4OCwxMyBAQCBzdWIg
cGF0Y2goJCkKICAgICAgICAgICAgICMgRGVsZXRpb24KICAgICAgICAgICAgIGFwcGx5UGF0Y2go
JHBhdGNoLCAkZnVsbFBhdGgsIFsiLS1mb3JjZSJdKTsKICAgICAgICAgICAgIHNjbVJlbW92ZSgk
ZnVsbFBhdGgpOworICAgICAgICB9IGVsc2lmICgkaXNTVk5Qcm9wZXJ0eUNoYW5nZSkgeworICAg
ICAgICAgICAgIyBDaGFuZ2UgZXhlY3V0YWJsZSBiaXQuCisgICAgICAgICAgICBpZiAoJHBhdGNo
ID1+IC9BZGRlZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsKKyAgICAgICAgICAgICAgICBzY21BZGRF
eGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRwYXRj
aCA9fiAvRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsKKyAgICAgICAgICAgICAgICBzY21S
ZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgQWRkaXRpb24KICAgICAgICAgICAgIHJlbmFtZSgk
ZnVsbFBhdGgsICIkZnVsbFBhdGgub3JpZyIpIGlmIC1lICRmdWxsUGF0aDsKSW5kZXg6IFdlYktp
dFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2Ny
aXB0cy9zdm4tdW5hcHBseQkocmV2aXNpb24gNTcxOTQpCisrKyBXZWJLaXRUb29scy9TY3JpcHRz
L3N2bi11bmFwcGx5CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAjCiAjIE1pc3Np
bmcgZmVhdHVyZXM6CiAjCi0jICAgSGFuZGxlIHByb3BlcnR5IGNoYW5nZXMuCisjICAgSGFuZGxl
IHByb3BlcnR5IGNoYW5nZXMgb3RoZXIgdGhhbiB0aGUgZXhlY3V0YWJsZSBiaXQuCiAjICAgSGFu
ZGxlIGNvcGllZCBhbmQgbW92ZWQgZGlyZWN0b3JpZXMgKHdvdWxkIHJlcXVpcmUgcGF0Y2hlcyBt
YWRlIGJ5IHN2bi1jcmVhdGUtcGF0Y2gpLgogIyAgIFVzZSB2ZXJzaW9uIG51bWJlcnMgaW4gdGhl
IHBhdGNoIGZpbGUgYW5kIGRvIGEgMy13YXkgbWVyZ2UuCiAjICAgV2hlbiByZXZlcnNpbmcgYW4g
YWRkaXRpb24sIGNoZWNrIHRoYXQgdGhlIGZpbGUgbWF0Y2hlcyB3aGF0J3MgYmVpbmcgcmVtb3Zl
ZC4KQEAgLTEwMSw2ICsxMDEsOCBAQCBteSAkY29waWVkRnJvbVBhdGg7CiBteSAkZmlsdGVyOwog
bXkgJGluZGV4UGF0aDsKIG15ICRwYXRjaDsKK215ICRwcm9wZXJ0eUNoYW5nZVBhdGg7CitteSAk
aXNHaXRGb3JtYXR0ZWRQYXRjaCA9IDA7CiB3aGlsZSAoPD4pIHsKICAgICBzLyhbXG5ccl0rKSQv
L21nOwogICAgIG15ICRlb2wgPSAkMTsKQEAgLTEwOCw4ICsxMTAsMTMgQEAgd2hpbGUgKDw+KSB7
CiAgICAgICAgICRmaWx0ZXIgPSBcJmdpdGRpZmYyc3ZuZGlmZjsKICAgICB9CiAgICAgJF8gPSAm
JGZpbHRlcigkXykgaWYgJGZpbHRlcjsKLSAgICBpZiAoL15JbmRleDogKC4rKS8pIHsKLSAgICAg
ICAgJGluZGV4UGF0aCA9ICQxOworICAgIGlmICgvXkluZGV4OiAoLispLyB8fCAvXlByb3BlcnR5
IGNoYW5nZXMgb246ICguKykvKSB7CisgICAgICAgIGlmICgvXkluZGV4OiAoLispLykgeworICAg
ICAgICAgICAgJGluZGV4UGF0aCA9ICQxOworICAgICAgICAgICAgJGlzR2l0Rm9ybWF0dGVkUGF0
Y2ggPSAkMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRwcm9wZXJ0eUNoYW5nZVBh
dGggPSAkMTsKKyAgICAgICAgfQogICAgICAgICBpZiAoJHBhdGNoKSB7CiAgICAgICAgICAgICBp
ZiAoJGNvcGllZEZyb21QYXRoKSB7CiAgICAgICAgICAgICAgICAgcHVzaCBAY29waWVkRmlsZXMs
ICRwYXRjaDsKQEAgLTEyMyw2ICsxMzAsMTIgQEAgd2hpbGUgKDw+KSB7CiAgICAgaWYgKCRpbmRl
eFBhdGgpIHsKICAgICAgICAgIyBGaXggcGF0aHMgb24gZGlmZiwgLS0tLCBhbmQgKysrIGxpbmVz
IHRvIG1hdGNoIHByZWNlZGluZyBJbmRleDogbGluZS4KICAgICAgICAgcy9eLS0tIFxTKy8tLS0g
JGluZGV4UGF0aC87CisKKyAgICAgICAgaWYgKCRpc0dpdEZvcm1hdHRlZFBhdGNoICYmIChteSAk
ZmlsZU1vZGUgPSBwYXJzZUdpdEZpbGVNb2RlKCRfKSkpIHsKKyAgICAgICAgICAgIGFwcGVuZFNW
TkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoKCRpbmRleFBhdGgsICRmaWxlTW9kZSwgXCRwYXRj
aCk7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisKICAgICAgICAgaWYgKC9eLS0tIC4r
XChmcm9tIChcUyspOlxkK1wpJC8pIHsKICAgICAgICAgICAgICRjb3BpZWRGcm9tUGF0aCA9ICQx
OwogICAgICAgICB9CkBAIC0xMzAsNiArMTQzLDcgQEAgd2hpbGUgKDw+KSB7CiAgICAgICAgICAg
ICAkaW5kZXhQYXRoID0gIiI7CiAgICAgICAgIH0KICAgICB9CisgICAgJHByb3BlcnR5Q2hhbmdl
UGF0aCA9ICIiIGlmICgkcHJvcGVydHlDaGFuZ2VQYXRoICYmIC9eICAgKFwrfC0pIFwqJC8pOwog
ICAgICRwYXRjaCAuPSAkXzsKICAgICAkcGF0Y2ggLj0gJGVvbDsKIH0KQEAgLTE2MywxNCArMTc3
LDI3IEBAIHN1YiBjaGVja3N1bSgkKQogICAgIHJldHVybiAkY2hlY2tzdW07CiB9CiAKK3N1YiB1
bmFwcGx5U1ZOUHJvcGVydHlDaGFuZ2UoJCQpCit7CisgICAgbXkgKCRmdWxsUGF0aCwgJGNvbnRl
bnRzKSA9IEBfOworCisgICAgaWYgKCRjb250ZW50cyA9fiAvQWRkZWQ6IHN2bjpleGVjdXRhYmxl
XG4vKSB7CisgICAgICAgICMgUmV2ZXJzZSBwcm9wc2V0IHN2bjpleGVjdXRhYmxlCisgICAgICAg
IHN5c3RlbSgic3ZuIiwgInByb3BkZWwiLCAic3ZuOmV4ZWN1dGFibGUiLCAkZnVsbFBhdGgpOwor
ICAgIH0gZWxzaWYgKCRjb250ZW50cyA9fiAvRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsK
KyAgICAgICAgIyBSZXZlcnNlIHByb3BkZWwgc3ZuOmV4ZWN1dGFibGUKKyAgICAgICAgc3lzdGVt
KCJzdm4iLCAicHJvcHNldCIsICJzdm46ZXhlY3V0YWJsZSIsICJvbiIsICRmdWxsUGF0aCk7Cisg
ICAgfQorfQorCiBzdWIgcGF0Y2goJCkKIHsKICAgICBteSAoJHBhdGNoKSA9IEBfOwogICAgIHJl
dHVybiBpZiAhJHBhdGNoOwogCi0gICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxy
XG5dKyl8KSB7CisgICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8IHx8
ICRwYXRjaCA9fiBtfF5Qcm9wZXJ0eSBjaGFuZ2VzIG9uOiAoW15cclxuXSspfCkgewogICAgICAg
ICBteSAkc2VwYXJhdG9yID0gJy0nIHggNjc7Ci0gICAgICAgIHdhcm4gIkZhaWxlZCB0byBmaW5k
ICdJbmRleDonIGluOlxuJHNlcGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOworICAgICAg
ICB3YXJuICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBvciAnUHJvcGVydHkgY2hhbmdlcyBvbjon
IGluOlxuJHNlcGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIG15ICRmdWxsUGF0aCA9ICQxOwpAQCAtMTc5LDEyICsyMDYsMTQgQEAgc3Vi
IHBhdGNoKCQpCiAgICAgbXkgJGRlbGV0aW9uID0gMDsKICAgICBteSAkYWRkaXRpb24gPSAwOwog
ICAgIG15ICRpc0JpbmFyeSA9IDA7CisgICAgbXkgJGlzU1ZOUHJvcGVydHlDaGFuZ2UgPSAwOwog
CiAgICAgJGFkZGl0aW9uID0gMSBpZiAoJHBhdGNoID1+IC9cbi0tLSAuK1wocmV2aXNpb24gMFwp
XG4vIHx8ICRwYXRjaCA9fiAvXG5AQCAtMCwwIC4qIEBALyk7CiAgICAgJGRlbGV0aW9uID0gMSBp
ZiAkcGF0Y2ggPX4gL1xuQEAgLiogXCswLDAgQEAvOwogICAgICRpc0JpbmFyeSA9IDEgaWYgJHBh
dGNoID1+IC9cbkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlXC4v
OworICAgICRpc1NWTlByb3BlcnR5Q2hhbmdlID0gaXNTVk5Qcm9wZXJ0eSgkcGF0Y2gpOwogCi0g
ICAgaWYgKCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5KSB7CisgICAgaWYg
KCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNTVk5Qcm9wZXJ0
eUNoYW5nZSkgewogICAgICAgICAjIFN0YW5kYXJkIHBhdGNoLCBwYXRjaCB0b29sIGNhbiBoYW5k
bGUgdGhpcy4KICAgICAgICAgaWYgKGJhc2VuYW1lKCRmdWxsUGF0aCkgZXEgIkNoYW5nZUxvZyIp
IHsKICAgICAgICAgICAgIG15ICRjaGFuZ2VMb2dEb3RPcmlnRXhpc3RlZCA9IC1mICIke2Z1bGxQ
YXRofS5vcmlnIjsKQEAgLTIyNiw2ICsyNTUsMTMgQEAgc3ViIHBhdGNoKCQpCiAKICAgICAgICAg
ICAgICMgU2hvdyBzdGF0dXMgaWYgdGhlIGZpbGUgaXMgbW9kaWZlZAogICAgICAgICAgICAgc3lz
dGVtICJzdm4iLCAic3RhdCIsICRmdWxsUGF0aDsKKyAgICAgICAgfSBlbHNpZiAoJGlzU1ZOUHJv
cGVydHlDaGFuZ2UpIHsKKyAgICAgICAgICAgICMgUmV2ZXJzZSBjaGFuZ2Ugb2YgZXhlY3V0YWJs
ZSBiaXQuCisgICAgICAgICAgICBpZiAoJHBhdGNoID1+IC9BZGRlZDogc3ZuOmV4ZWN1dGFibGVc
bi8pIHsKKyAgICAgICAgICAgICAgICBzY21SZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQ
YXRoKTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRwYXRjaCA9fiAvRGVsZXRlZDogc3ZuOmV4ZWN1
dGFibGVcbi8pIHsKKyAgICAgICAgICAgICAgICBzY21BZGRFeGVjdXRhYmxlUHJvcGVydHkoJGZ1
bGxQYXRoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICMg
UmV2ZXJzZSBhZGRpdGlvbgogICAgICAgICAgICAgdW5hcHBseVBhdGNoKCRwYXRjaCwgJGZ1bGxQ
YXRoLCBbIi0tZm9yY2UiXSk7CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwv
VkNTVXRpbHNfdW5pdHRlc3QvYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5nZVRvUGF0Y2gucGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3Vu
aXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoLnBsCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2Fw
cGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoLnBsCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY4IEBACisjIS91c3IvYmluL3BlcmwKKyMKKyMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBp
biBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBSZXNlYXJjaCBpbiBNb3Rpb24gTGltaXRlZCBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFVuaXQgdGVzdHMgb2YgVkNTVXRpbHM6OmFwcGVu
ZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoKCkuCisKK3VzZSBUZXN0OjpTaW1wbGUgdGVz
dHMgPT4gMjsKK3VzZSBWQ1NVdGlsczsKKworbXkgJHRpdGxlOworbXkgJHBhdGNoOworbXkgJGV4
cGVjdGVkUGF0Y2g7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJhcHBlbmRTVk5FeGVjdXRhYmxl
Qml0Q2hhbmdlVG9QYXRjaDogQWRkIGV4ZWN1dGFibGUgYml0IHRvIGZpbGUuIjsKKworJGV4cGVj
dGVkUGF0Y2ggPSA8PCdFTkQnOworUHJvcGVydHkgY2hhbmdlcyBvbjogZmlsZV90b19wYXRjaC50
eHQKK19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KK0FkZGVkOiBzdm46ZXhlY3V0YWJsZQorICAgKyAqCitFTkQKKworJHBh
dGNoID0gIiI7CithcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaCgiZmlsZV90b19w
YXRjaC50eHQiLCAiMTAwNzU1IiwgXCRwYXRjaCk7CisKK29rKCRwYXRjaCBlcSAkZXhwZWN0ZWRQ
YXRjaCwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImFwcGVuZFNWTkV4ZWN1dGFi
bGVCaXRDaGFuZ2VUb1BhdGNoOiBSZW1vdmUgZXhlY3V0YWJsZSBiaXQgZnJvbSBmaWxlLiI7CisK
KyRleHBlY3RlZFBhdGNoID0gPDwnRU5EJzsKK1Byb3BlcnR5IGNoYW5nZXMgb246IGZpbGVfdG9f
cGF0Y2gudHh0CitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCitEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQorICAgKyAqCitF
TkQKKworJHBhdGNoID0gIiI7CithcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaCgi
ZmlsZV90b19wYXRjaC50eHQiLCAiMTAwNjQ0IiwgXCRwYXRjaCk7CisKK29rKCRwYXRjaCBlcSAk
ZXhwZWN0ZWRQYXRjaCwgJHRpdGxlKTsKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZUdpdEZpbGVNb2RlLnBsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZUdp
dEZpbGVNb2RlLnBsCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlR2l0RmlsZU1vZGUucGwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzMgQEAKKyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIGluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVW5pdCB0ZXN0cyBvZiBWQ1NVdGlsczo6
cGFyc2VHaXRGaWxlTW9kZSgpLgorCit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDY7Cit1c2Ug
VkNTVXRpbHM7CisKK215ICR0aXRsZTsKK215ICRwYXRjaExpbmU7CisKKyMgTmV3IHRlc3QKKyR0
aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhIHZhbGlkIEdpdCBmaWxlIG1vZGUgZm9y
IG5ldyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IGZpbGUgbW9kZSAxMDA3NTUiOworb2so
cGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSA9PSAxMDA3NTUsICR0aXRsZSk7CisKKyMgTmV3
IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhIHZhbGlkIEdpdCBmaWxl
IG1vZGUgZm9yIGFuIGV4aXN0aW5nIGZpbGUuIjsKKworJHBhdGNoTGluZSA9ICJuZXcgbW9kZSAx
MDA3NTUiOworb2socGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSA9PSAxMDA3NTUsICR0aXRs
ZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhbiBp
bnZhbGlkIEdpdCBmaWxlIG1vZGUgZm9yIG5ldyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3
IGZpbGUgbW9kZSBkdW1teSI7CitvayghcGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSwgJHRp
dGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gInBhcnNlR2l0RmlsZU1vZGU6IFBhcnNlIGFu
IGludmFsaWQgR2l0IGZpbGUgbW9kZSBmb3IgYW4gZXhpc3RpbmcgZmlsZS4iOworCiskcGF0Y2hM
aW5lID0gIm5ldyBtb2RlIGR1bW15IjsKK29rKCFwYXJzZUdpdEZpbGVNb2RlKCRwYXRjaExpbmUp
LCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VHaXRGaWxlTW9kZTogRW5z
dXJlIHRoYXQgYSBudW1lcmljIGZpbGUgbW9kZSBsb25nZXIgdGhhbiA2IGRpZ2l0cyBpcyBpbnZh
bGlkIGZvciBhIG5ldyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IGZpbGUgbW9kZSAxMDA3
NTU5IjsKK29rKCFwYXJzZUdpdEZpbGVNb2RlKCRwYXRjaExpbmUpLCAkdGl0bGUpOworCisjIE5l
dyB0ZXN0CiskdGl0bGUgPSAicGFyc2VHaXRGaWxlTW9kZTogRW5zdXJlIHRoYXQgYSBudW1lcmlj
IGZpbGUgbW9kZSBsb25nZXIgdGhhbiA2IGRpZ2l0cyBpcyBpbnZhbGlkIGZvciBhbiBleGlzdGlu
ZyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IG1vZGUgMTAwNzU1OSI7CitvayghcGFyc2VH
aXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSwgJHRpdGxlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53061</attachid>
            <date>2010-04-10 17:17:29 -0700</date>
            <delta_ts>2010-04-10 20:36:13 -0700</delta_ts>
            <desc>Patch with unit tests</desc>
            <filename>Bug267204_3.patch</filename>
            <type>text/plain</type>
            <size>18627</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMDQtMTAgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzIwNAorCisg
ICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgZXhlY3V0YWJsZSBiaXQg
b2YgYSBmaWxlLgorICAgICAgICBUaGUgZXhlY3V0YWJsZSBiaXQgaXMgYW1vbmcgdGhlIG1vc3Qg
Y2hhbmdlZCBmaWxlIHByb3BlcnRpZXMuCisgICAgICAgIEZ1dHVyZSBzdXBwb3J0IGNhbiBpbmNs
dWRlIG90aGVyIHByb3BlcnR5IGNoYW5nZXMuCisKKyAgICAgICAgQ3VycmVudGx5LCBpZiBhIHBh
dGNoIGNoYW5nZXMgdGhlIGV4ZWN1dGFibGUgYml0IG9mIGEgZmlsZQorICAgICAgICBpdCBpcyBu
b3QgcmVzcGVjdGVkIGJ5IHN2bi1hcHBseSBvciBzdm4tdW5hcHBseS4gU2luY2UgdGhlCisgICAg
ICAgIGNvbW1pdC1xdWV1ZSBib3QgdXNlcyB0aGVzZSB0b29scyBhcyBwYXJ0IG9mIGl0cyB3b3Jr
ZmxvdywKKyAgICAgICAgc3VjaCBwYXRjaGVzIGNhbm5vdCBiZSBjb21taXR0ZWQgYnkgaXQuIFRo
YXQgaXMsIHN1Y2ggcGF0Y2hlcworICAgICAgICBuZWVkIHRvIGJlIGNvbW1pdHRlZCBieSBoYW5k
LiBJbnN0ZWFkLCB3ZSBzaG91bGQgYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIHRoZSBleGVjdXRh
YmxlIGJpdCBzbyB0aGF0IHN1Y2ggcGF0Y2hlcyBjYW4gYmUgY29tbWl0dGVkCisgICAgICAgIGJ5
IHRoZSBjb21taXQtcXVldWUgYm90LgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbTog
QWxzbyBjaGFuZ2UgcmVmZXJlbmNlIHRvIEFwcGxlIENvbXB1dGVyLCBJbmMuCisgICAgICAgIGlu
IGNvcHlyaWdodCB0byBBcHBsZSwgSW5jLgorICAgICAgICAqIFNjcmlwdHMvc3ZuLWFwcGx5Ogor
ICAgICAgICAqIFNjcmlwdHMvc3ZuLXVuYXBwbHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
ZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNo
LnBsOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRl
c3QvcGFyc2VHaXRGaWxlTW9kZS5wbDogQWRkZWQuCisKIDIwMTAtMDQtMTAgIFJvYmVydCBIb2dh
biAgPHJvYmVydEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZml4IHRvIHJlZ3Jl
c3Npb25zIGluIHI1NzQxNi4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkocmV2aXNpb24g
NTc0MTgpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIENo
cmlzIEplcmRvbmVrIChjaHJpcy5qZXJkb25la0BnbWFpbC5jb20pCisjIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggaW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAsNyArMTEsNyBAQAogIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKICMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKICMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotIyAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCiAjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCiAjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAogIwpAQCAtNDMsNiArNDQs
NyBAQCBCRUdJTiB7CiAgICAgJFZFUlNJT04gICAgID0gMS4wMDsKICAgICBASVNBICAgICAgICAg
PSBxdyhFeHBvcnRlcik7CiAgICAgQEVYUE9SVCAgICAgID0gcXcoCisgICAgICAgICZhcHBlbmRT
Vk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaAogICAgICAgICAmY2Fub25pY2FsaXplUGF0aAog
ICAgICAgICAmY2hhbmdlTG9nRW1haWxBZGRyZXNzCiAgICAgICAgICZjaGFuZ2VMb2dOYW1lCkBA
IC01OSwxMyArNjEsMTcgQEAgQkVHSU4gewogICAgICAgICAmaXNHaXREaXJlY3RvcnkKICAgICAg
ICAgJmlzU1ZOCiAgICAgICAgICZpc1NWTkRpcmVjdG9yeQorICAgICAgICAmaXNTVk5Qcm9wZXJ0
eQogICAgICAgICAmaXNTVk5WZXJzaW9uMTZPck5ld2VyCiAgICAgICAgICZtYWtlRmlsZVBhdGhS
ZWxhdGl2ZQogICAgICAgICAmbWVyZ2VDaGFuZ2VMb2dzCiAgICAgICAgICZub3JtYWxpemVQYXRo
CisgICAgICAgICZwYXJzZUdpdEZpbGVNb2RlCiAgICAgICAgICZwYXJzZVBhdGNoCiAgICAgICAg
ICZwYXRoUmVsYXRpdmVUb1NWTlJlcG9zaXRvcnlSb290Rm9yUGF0aAogICAgICAgICAmcnVuUGF0
Y2hDb21tYW5kCisgICAgICAgICZzY21BZGRFeGVjdXRhYmxlUHJvcGVydHkKKyAgICAgICAgJnNj
bVJlbW92ZUV4ZWN1dGFibGVQcm9wZXJ0eQogICAgICAgICAmc3ZuUmV2aXNpb25Gb3JEaXJlY3Rv
cnkKICAgICAgICAgJnN2blN0YXR1cwogICAgICk7CkBAIC0xMTAsNiArMTE2LDUwIEBAIHN1YiBp
c0dpdCgpCiAgICAgcmV0dXJuICRpc0dpdDsKIH0KIAorc3ViIHBhcnNlR2l0RmlsZU1vZGUoJCkK
K3sKKyAgICBteSAoJHBhdGNoKSA9IEBfOworICAgIHJldHVybiAoJHBhdGNoID1+IC9ebmV3IChm
aWxlICk/bW9kZSAoWzAtOV17Nn0pJC8pID8gJDIgOiAwOworfQorCitzdWIgaXNTVk5Qcm9wZXJ0
eSgkKQoreworICAgIG15ICgkcGF0Y2gpID0gQF87CisgICAgcmV0dXJuICRwYXRjaCA9fiAvXG4o
QWRkZWR8RGVsZXRlZCk6IHN2bjpleGVjdXRhYmxlXG4vOworfQorCitzdWIgYXBwZW5kU1ZORXhl
Y3V0YWJsZUJpdENoYW5nZVRvUGF0Y2goJCQkKQoreworICAgIG15ICgkaW5kZXhQYXRoLCAkZmls
ZU1vZGUsICRwYXRjaFJlZikgPSBAXzsKKyAgICAjIE5vdGUsIHdlIGRvbid0IG5lZWQgdG8gaW5j
bHVkZSBlaXRoZXIgdGhlIGRpdmlkZXIgbGluZSBvciB0aGUgIiAgICsgKiIgbGluZSwKKyAgICAj
IGJ1dCB0aGVzZSBhcmUgbGVmdCBpbiBzbyBhcyB0byBwcm9kdWNlIGEgcHJvcGVyIFNWTiBwcm9w
ZXJ0eSBjaGFuZ2UgZW50cnkuCisgICAgJCRwYXRjaFJlZiAuPSAiUHJvcGVydHkgY2hhbmdlcyBv
bjogJGluZGV4UGF0aFxuIjsKKyAgICAkJHBhdGNoUmVmIC49ICJfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXG4iOworICAg
ICQkcGF0Y2hSZWYgLj0gIkFkZGVkOiBzdm46ZXhlY3V0YWJsZVxuIiBpZiAkZmlsZU1vZGUgZXEg
IjEwMDc1NSI7CisgICAgJCRwYXRjaFJlZiAuPSAiRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbiIg
aWYgJGZpbGVNb2RlIGVxICIxMDA2NDQiOworICAgICQkcGF0Y2hSZWYgLj0gIiAgICsgKlxuIjsK
K30KKworc3ViIHNjbUFkZEV4ZWN1dGFibGVQcm9wZXJ0eSgkKQoreworICAgIG15ICgkcGF0aCkg
PSBAXzsKKyAgICBpZiAoaXNTVk4oKSkgeworICAgICAgICBzeXN0ZW0oInN2biIsICJwcm9wc2V0
IiwgInN2bjpleGVjdXRhYmxlIiwgIm9uIiwgJHBhdGgpID09IDAgb3IgZGllICJGYWlsZWQgdG8g
cnVuICdzdm4gcHJvcHNldCBzdm46ZXhlY3V0YWJsZSBvbiAkcGF0aCcuIjsKKyAgICB9IGVsc2lm
IChpc0dpdCgpKSB7CisgICAgICAgIGNobW9kKDA3NTUsICRwYXRoKTsKKyAgICB9Cit9CisKK3N1
YiBzY21SZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJCkKK3sKKyAgICBteSAoJHBhdGgpID0gQF87
CisgICAgaWYgKGlzU1ZOKCkpIHsKKyAgICAgICAgc3lzdGVtKCJzdm4iLCAicHJvcGRlbCIsICJz
dm46ZXhlY3V0YWJsZSIsICRwYXRoKSA9PSAwIG9yIGRpZSAiRmFpbGVkIHRvIHJ1biAnc3ZuIHBy
b3BkZWwgc3ZuOmV4ZWN1dGFibGUgJHBhdGgnLiI7CisgICAgfSBlbHNpZiAoaXNHaXQoKSkgewor
ICAgICAgICBjaG1vZCgwNjY0LCAkcGF0aCk7CisgICAgfQorfQorCiBzdWIgZ2l0QnJhbmNoKCkK
IHsKICAgICB1bmxlc3MgKGRlZmluZWQgJGdpdEJyYW5jaCkgewpJbmRleDogV2ViS2l0VG9vbHMv
U2NyaXB0cy9zdm4tYXBwbHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4t
YXBwbHkJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAKICMKICMgTWlzc2luZyBmZWF0dXJlczoK
ICMKLSMgICBIYW5kbGUgcHJvcGVydHkgY2hhbmdlcy4KKyMgICBIYW5kbGUgcHJvcGVydHkgY2hh
bmdlcyBvdGhlciB0aGFuIHRoZSBleGVjdXRhYmxlIGJpdC4KICMgICBIYW5kbGUgY29waWVkIGFu
ZCBtb3ZlZCBkaXJlY3RvcmllcyAod291bGQgcmVxdWlyZSBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNy
ZWF0ZS1wYXRjaCkuCiAjICAgV2hlbiBkb2luZyBhIHJlbW92YWwsIGNoZWNrIHRoYXQgb2xkIGZp
bGUgbWF0Y2hlcyB3aGF0J3MgYmVpbmcgcmVtb3ZlZC4KICMgICBOb3RpY2UgYSBwYXRjaCB0aGF0
J3MgYmVpbmcgYXBwbGllZCBhdCB0aGUgIndyb25nIGxldmVsIiBhbmQgbWFrZSBpdCB3b3JrIGFu
eXdheS4KQEAgLTEzMCwxNSArMTMwLDIyIEBAIG15ICRjb3BpZWRGcm9tUGF0aDsKIG15ICRmaWx0
ZXI7CiBteSAkaW5kZXhQYXRoOwogbXkgJHBhdGNoOworbXkgJHByb3BlcnR5Q2hhbmdlUGF0aDsK
K215ICRpc0dpdEZvcm1hdHRlZFBhdGNoID0gMDsKIHdoaWxlICg8PikgewogICAgIHMvKFtcblxy
XSspJC8vbWc7CiAgICAgbXkgJGVvbCA9ICQxOwogICAgIGlmICghZGVmaW5lZCgkaW5kZXhQYXRo
KSAmJiBtI15kaWZmIC0tZ2l0IFx3LyMpIHsKICAgICAgICAgJGZpbHRlciA9IFwmZ2l0ZGlmZjJz
dm5kaWZmOworICAgICAgICAkaXNHaXRGb3JtYXR0ZWRQYXRjaCA9IDE7CiAgICAgfQogICAgICRf
ID0gJiRmaWx0ZXIoJF8pIGlmICRmaWx0ZXI7Ci0gICAgaWYgKC9eSW5kZXg6ICguKykvKSB7Ci0g
ICAgICAgICRpbmRleFBhdGggPSAkMTsKKyAgICBpZiAoL15JbmRleDogKC4rKS8gfHwgL15Qcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiAoLispLykgeworICAgICAgICBpZiAoL15JbmRleDogKC4rKS8pIHsK
KyAgICAgICAgICAgICRpbmRleFBhdGggPSAkMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICRwcm9wZXJ0eUNoYW5nZVBhdGggPSAkMQorICAgICAgICB9CiAgICAgICAgIGlmICgkcGF0
Y2gpIHsKICAgICAgICAgICAgIGlmICghJGNvcGllZEZyb21QYXRoKSB7CiAgICAgICAgICAgICAg
ICAgcHVzaCBAcGF0Y2hlcywgJHBhdGNoOwpAQCAtMTUxLDYgKzE1OCwxMiBAQCB3aGlsZSAoPD4p
IHsKICAgICAgICAgIyBGaXggcGF0aHMgb24gZGlmZiwgLS0tLCBhbmQgKysrIGxpbmVzIHRvIG1h
dGNoIHByZWNlZGluZyBJbmRleDogbGluZS4KICAgICAgICAgcy9cUyskLyRpbmRleFBhdGgvIGlm
IC9eZGlmZi87CiAgICAgICAgIHMvXi0tLSBcUysvLS0tICRpbmRleFBhdGgvOworCisgICAgICAg
IGlmICgkaXNHaXRGb3JtYXR0ZWRQYXRjaCAmJiAobXkgJGZpbGVNb2RlID0gcGFyc2VHaXRGaWxl
TW9kZSgkXykpKSB7CisgICAgICAgICAgICBhcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9Q
YXRjaCgkaW5kZXhQYXRoLCAkZmlsZU1vZGUsIFwkcGF0Y2gpOworICAgICAgICAgICAgbmV4dDsK
KyAgICAgICAgfQorCiAgICAgICAgIGlmICgvXi0tLSAuK1woZnJvbSAoXFMrKTooXGQrKVwpJC8p
IHsKICAgICAgICAgICAgICRjb3BpZWRGcm9tUGF0aCA9ICQxOwogICAgICAgICAgICAgJGNvcGll
ZEZpbGVzeyRpbmRleFBhdGh9ID0gJGNvcGllZEZyb21QYXRoOwpAQCAtMTYzLDYgKzE3Niw3IEBA
IHdoaWxlICg8PikgewogICAgICAgICAgICAgJGluZGV4UGF0aCA9ICIiOwogICAgICAgICB9CiAg
ICAgfQorICAgICRwcm9wZXJ0eUNoYW5nZVBhdGggPSAiIiBpZiAoJHByb3BlcnR5Q2hhbmdlUGF0
aCAmJiAvXiAgIChcK3wtKSBcKiQvKTsKICAgICAkcGF0Y2ggLj0gJF87CiAgICAgJHBhdGNoIC49
ICRlb2w7CiB9CkBAIC0zMzAsOSArMzQ0LDkgQEAgc3ViIHBhdGNoKCQpCiAgICAgbXkgKCRwYXRj
aCkgPSBAXzsKICAgICByZXR1cm4gaWYgISRwYXRjaDsKIAotICAgIHVubGVzcyAoJHBhdGNoID1+
IG18XkluZGV4OiAoW15cclxuXSspfCkgeworICAgIHVubGVzcyAoJHBhdGNoID1+IG18XkluZGV4
OiAoW15cclxuXSspfCB8fCAkcGF0Y2ggPX4gbXxeUHJvcGVydHkgY2hhbmdlcyBvbjogKFteXHJc
bl0rKXwpIHsKICAgICAgICAgbXkgJHNlcGFyYXRvciA9ICctJyB4IDY3OwotICAgICAgICB3YXJu
ICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBpbjpcbiRzZXBhcmF0b3JcbiRwYXRjaFxuJHNlcGFy
YXRvclxuIjsKKyAgICAgICAgd2FybiAiRmFpbGVkIHRvIGZpbmQgJ0luZGV4Oicgb3IgJ1Byb3Bl
cnR5IGNoYW5nZXMgb246JyBpbjpcbiRzZXBhcmF0b3JcbiRwYXRjaFxuJHNlcGFyYXRvclxuIjsK
ICAgICAgICAgZGllIHVubGVzcyAkZm9yY2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0z
NDIsMTMgKzM1NiwxNSBAQCBzdWIgcGF0Y2goJCkKICAgICBteSAkYWRkaXRpb24gPSAwOwogICAg
IG15ICRpc0JpbmFyeSA9IDA7CiAgICAgbXkgJGlzR2l0QmluYXJ5ID0gMDsKKyAgICBteSAkaXNT
Vk5Qcm9wZXJ0eUNoYW5nZSA9IDA7CiAKICAgICAkYWRkaXRpb24gPSAxIGlmICgkcGF0Y2ggPX4g
L1xuLS0tIC4rXChyZXZpc2lvbiAwXClccj9cbi8gfHwgJHBhdGNoID1+IC9cbkBAIC0wLDAgLiog
QEAvKSAmJiAhZXhpc3RzKCRjb3BpZWRGaWxlc3skZnVsbFBhdGh9KTsKICAgICAkZGVsZXRpb24g
PSAxIGlmICRwYXRjaCA9fiAvXG5AQCAuKiBcKzAsMCBAQC87CiAgICAgJGlzQmluYXJ5ID0gMSBp
ZiAkcGF0Y2ggPX4gL1xuQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGVcLi87CiAgICAgJGlzR2l0QmluYXJ5ID0gMSBpZiAkcGF0Y2ggPX4gL1xuR0lUIGJpbmFyeSBw
YXRjaFxuLzsKKyAgICAkaXNTVk5Qcm9wZXJ0eUNoYW5nZSA9IGlzU1ZOUHJvcGVydHkoJHBhdGNo
KTsKIAotICAgIGlmICghJGFkZGl0aW9uICYmICEkZGVsZXRpb24gJiYgISRpc0JpbmFyeSAmJiAh
JGlzR2l0QmluYXJ5KSB7CisgICAgaWYgKCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlz
QmluYXJ5ICYmICEkaXNHaXRCaW5hcnkgJiYgISRpc1NWTlByb3BlcnR5Q2hhbmdlKSB7CiAgICAg
ICAgICMgU3RhbmRhcmQgcGF0Y2gsIHBhdGNoIHRvb2wgY2FuIGhhbmRsZSB0aGlzLgogICAgICAg
ICBpZiAoYmFzZW5hbWUoJGZ1bGxQYXRoKSBlcSAiQ2hhbmdlTG9nIikgewogICAgICAgICAgICAg
bXkgJGNoYW5nZUxvZ0RvdE9yaWdFeGlzdGVkID0gLWYgIiR7ZnVsbFBhdGh9Lm9yaWciOwpAQCAt
MzcyLDYgKzM4OCwxMyBAQCBzdWIgcGF0Y2goJCkKICAgICAgICAgICAgICMgRGVsZXRpb24KICAg
ICAgICAgICAgIGFwcGx5UGF0Y2goJHBhdGNoLCAkZnVsbFBhdGgsIFsiLS1mb3JjZSJdKTsKICAg
ICAgICAgICAgIHNjbVJlbW92ZSgkZnVsbFBhdGgpOworICAgICAgICB9IGVsc2lmICgkaXNTVk5Q
cm9wZXJ0eUNoYW5nZSkgeworICAgICAgICAgICAgIyBDaGFuZ2UgZXhlY3V0YWJsZSBiaXQuCisg
ICAgICAgICAgICBpZiAoJHBhdGNoID1+IC9BZGRlZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsKKyAg
ICAgICAgICAgICAgICBzY21BZGRFeGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQYXRoKTsKKyAgICAg
ICAgICAgIH0gZWxzaWYgKCRwYXRjaCA9fiAvRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsK
KyAgICAgICAgICAgICAgICBzY21SZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQYXRoKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgQWRkaXRpb24K
ICAgICAgICAgICAgIHJlbmFtZSgkZnVsbFBhdGgsICIkZnVsbFBhdGgub3JpZyIpIGlmIC1lICRm
dWxsUGF0aDsKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tdW5hcHBseQkocmV2aXNpb24gNTc0MTgpCisr
KyBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi11bmFwcGx5CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBACiAjCiAjIE1pc3NpbmcgZmVhdHVyZXM6CiAjCi0jICAgSGFuZGxlIHByb3BlcnR5
IGNoYW5nZXMuCisjICAgSGFuZGxlIHByb3BlcnR5IGNoYW5nZXMgb3RoZXIgdGhhbiB0aGUgZXhl
Y3V0YWJsZSBiaXQuCiAjICAgSGFuZGxlIGNvcGllZCBhbmQgbW92ZWQgZGlyZWN0b3JpZXMgKHdv
dWxkIHJlcXVpcmUgcGF0Y2hlcyBtYWRlIGJ5IHN2bi1jcmVhdGUtcGF0Y2gpLgogIyAgIFVzZSB2
ZXJzaW9uIG51bWJlcnMgaW4gdGhlIHBhdGNoIGZpbGUgYW5kIGRvIGEgMy13YXkgbWVyZ2UuCiAj
ICAgV2hlbiByZXZlcnNpbmcgYW4gYWRkaXRpb24sIGNoZWNrIHRoYXQgdGhlIGZpbGUgbWF0Y2hl
cyB3aGF0J3MgYmVpbmcgcmVtb3ZlZC4KQEAgLTEwMSw2ICsxMDEsOCBAQCBteSAkY29waWVkRnJv
bVBhdGg7CiBteSAkZmlsdGVyOwogbXkgJGluZGV4UGF0aDsKIG15ICRwYXRjaDsKK215ICRwcm9w
ZXJ0eUNoYW5nZVBhdGg7CitteSAkaXNHaXRGb3JtYXR0ZWRQYXRjaCA9IDA7CiB3aGlsZSAoPD4p
IHsKICAgICBzLyhbXG5ccl0rKSQvL21nOwogICAgIG15ICRlb2wgPSAkMTsKQEAgLTEwOCw4ICsx
MTAsMTMgQEAgd2hpbGUgKDw+KSB7CiAgICAgICAgICRmaWx0ZXIgPSBcJmdpdGRpZmYyc3ZuZGlm
ZjsKICAgICB9CiAgICAgJF8gPSAmJGZpbHRlcigkXykgaWYgJGZpbHRlcjsKLSAgICBpZiAoL15J
bmRleDogKC4rKS8pIHsKLSAgICAgICAgJGluZGV4UGF0aCA9ICQxOworICAgIGlmICgvXkluZGV4
OiAoLispLyB8fCAvXlByb3BlcnR5IGNoYW5nZXMgb246ICguKykvKSB7CisgICAgICAgIGlmICgv
XkluZGV4OiAoLispLykgeworICAgICAgICAgICAgJGluZGV4UGF0aCA9ICQxOworICAgICAgICAg
ICAgJGlzR2l0Rm9ybWF0dGVkUGF0Y2ggPSAkMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICRwcm9wZXJ0eUNoYW5nZVBhdGggPSAkMTsKKyAgICAgICAgfQogICAgICAgICBpZiAoJHBh
dGNoKSB7CiAgICAgICAgICAgICBpZiAoJGNvcGllZEZyb21QYXRoKSB7CiAgICAgICAgICAgICAg
ICAgcHVzaCBAY29waWVkRmlsZXMsICRwYXRjaDsKQEAgLTEyMyw2ICsxMzAsMTIgQEAgd2hpbGUg
KDw+KSB7CiAgICAgaWYgKCRpbmRleFBhdGgpIHsKICAgICAgICAgIyBGaXggcGF0aHMgb24gZGlm
ZiwgLS0tLCBhbmQgKysrIGxpbmVzIHRvIG1hdGNoIHByZWNlZGluZyBJbmRleDogbGluZS4KICAg
ICAgICAgcy9eLS0tIFxTKy8tLS0gJGluZGV4UGF0aC87CisKKyAgICAgICAgaWYgKCRpc0dpdEZv
cm1hdHRlZFBhdGNoICYmIChteSAkZmlsZU1vZGUgPSBwYXJzZUdpdEZpbGVNb2RlKCRfKSkpIHsK
KyAgICAgICAgICAgIGFwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoKCRpbmRleFBh
dGgsICRmaWxlTW9kZSwgXCRwYXRjaCk7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisK
ICAgICAgICAgaWYgKC9eLS0tIC4rXChmcm9tIChcUyspOlxkK1wpJC8pIHsKICAgICAgICAgICAg
ICRjb3BpZWRGcm9tUGF0aCA9ICQxOwogICAgICAgICB9CkBAIC0xMzAsNiArMTQzLDcgQEAgd2hp
bGUgKDw+KSB7CiAgICAgICAgICAgICAkaW5kZXhQYXRoID0gIiI7CiAgICAgICAgIH0KICAgICB9
CisgICAgJHByb3BlcnR5Q2hhbmdlUGF0aCA9ICIiIGlmICgkcHJvcGVydHlDaGFuZ2VQYXRoICYm
IC9eICAgKFwrfC0pIFwqJC8pOwogICAgICRwYXRjaCAuPSAkXzsKICAgICAkcGF0Y2ggLj0gJGVv
bDsKIH0KQEAgLTE2OCw5ICsxODIsOSBAQCBzdWIgcGF0Y2goJCkKICAgICBteSAoJHBhdGNoKSA9
IEBfOwogICAgIHJldHVybiBpZiAhJHBhdGNoOwogCi0gICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxe
SW5kZXg6IChbXlxyXG5dKyl8KSB7CisgICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChb
XlxyXG5dKyl8IHx8ICRwYXRjaCA9fiBtfF5Qcm9wZXJ0eSBjaGFuZ2VzIG9uOiAoW15cclxuXSsp
fCkgewogICAgICAgICBteSAkc2VwYXJhdG9yID0gJy0nIHggNjc7Ci0gICAgICAgIHdhcm4gIkZh
aWxlZCB0byBmaW5kICdJbmRleDonIGluOlxuJHNlcGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9y
XG4iOworICAgICAgICB3YXJuICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBvciAnUHJvcGVydHkg
Y2hhbmdlcyBvbjonIGluOlxuJHNlcGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG15ICRmdWxsUGF0aCA9ICQxOwpAQCAtMTc5LDEyICsx
OTMsMTQgQEAgc3ViIHBhdGNoKCQpCiAgICAgbXkgJGRlbGV0aW9uID0gMDsKICAgICBteSAkYWRk
aXRpb24gPSAwOwogICAgIG15ICRpc0JpbmFyeSA9IDA7CisgICAgbXkgJGlzU1ZOUHJvcGVydHlD
aGFuZ2UgPSAwOwogCiAgICAgJGFkZGl0aW9uID0gMSBpZiAoJHBhdGNoID1+IC9cbi0tLSAuK1wo
cmV2aXNpb24gMFwpXG4vIHx8ICRwYXRjaCA9fiAvXG5AQCAtMCwwIC4qIEBALyk7CiAgICAgJGRl
bGV0aW9uID0gMSBpZiAkcGF0Y2ggPX4gL1xuQEAgLiogXCswLDAgQEAvOwogICAgICRpc0JpbmFy
eSA9IDEgaWYgJHBhdGNoID1+IC9cbkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJp
bmFyeSB0eXBlXC4vOworICAgICRpc1NWTlByb3BlcnR5Q2hhbmdlID0gaXNTVk5Qcm9wZXJ0eSgk
cGF0Y2gpOwogCi0gICAgaWYgKCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5
KSB7CisgICAgaWYgKCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEk
aXNTVk5Qcm9wZXJ0eUNoYW5nZSkgewogICAgICAgICAjIFN0YW5kYXJkIHBhdGNoLCBwYXRjaCB0
b29sIGNhbiBoYW5kbGUgdGhpcy4KICAgICAgICAgaWYgKGJhc2VuYW1lKCRmdWxsUGF0aCkgZXEg
IkNoYW5nZUxvZyIpIHsKICAgICAgICAgICAgIG15ICRjaGFuZ2VMb2dEb3RPcmlnRXhpc3RlZCA9
IC1mICIke2Z1bGxQYXRofS5vcmlnIjsKQEAgLTIyNiw2ICsyNDIsMTMgQEAgc3ViIHBhdGNoKCQp
CiAKICAgICAgICAgICAgICMgU2hvdyBzdGF0dXMgaWYgdGhlIGZpbGUgaXMgbW9kaWZlZAogICAg
ICAgICAgICAgc3lzdGVtICJzdm4iLCAic3RhdCIsICRmdWxsUGF0aDsKKyAgICAgICAgfSBlbHNp
ZiAoJGlzU1ZOUHJvcGVydHlDaGFuZ2UpIHsKKyAgICAgICAgICAgICMgUmV2ZXJzZSBjaGFuZ2Ug
b2YgZXhlY3V0YWJsZSBiaXQuCisgICAgICAgICAgICBpZiAoJHBhdGNoID1+IC9BZGRlZDogc3Zu
OmV4ZWN1dGFibGVcbi8pIHsKKyAgICAgICAgICAgICAgICBzY21SZW1vdmVFeGVjdXRhYmxlUHJv
cGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRwYXRjaCA9fiAvRGVsZXRl
ZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsKKyAgICAgICAgICAgICAgICBzY21BZGRFeGVjdXRhYmxl
UHJvcGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICMgUmV2ZXJzZSBhZGRpdGlvbgogICAgICAgICAgICAgdW5hcHBseVBhdGNoKCRw
YXRjaCwgJGZ1bGxQYXRoLCBbIi0tZm9yY2UiXSk7CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5n
ZVRvUGF0Y2gucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoLnBs
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxz
X3VuaXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoLnBsCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY4IEBACisjIS91c3IvYmluL3BlcmwKKyMKKyMgQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBpbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBSZXNlYXJjaCBpbiBNb3Rpb24gTGltaXRl
ZCBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFVuaXQgdGVzdHMgb2YgVkNT
VXRpbHM6OmFwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoKCkuCisKK3VzZSBUZXN0
OjpTaW1wbGUgdGVzdHMgPT4gMjsKK3VzZSBWQ1NVdGlsczsKKworbXkgJHRpdGxlOworbXkgJHBh
dGNoOworbXkgJGV4cGVjdGVkUGF0Y2g7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJhcHBlbmRT
Vk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaDogQWRkIGV4ZWN1dGFibGUgYml0IHRvIGZpbGUu
IjsKKworJGV4cGVjdGVkUGF0Y2ggPSA8PCdFTkQnOworUHJvcGVydHkgY2hhbmdlcyBvbjogZmls
ZV90b19wYXRjaC50eHQKK19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KK0FkZGVkOiBzdm46ZXhlY3V0YWJsZQorICAgKyAq
CitFTkQKKworJHBhdGNoID0gIiI7CithcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRj
aCgiZmlsZV90b19wYXRjaC50eHQiLCAiMTAwNzU1IiwgXCRwYXRjaCk7CisKK29rKCRwYXRjaCBl
cSAkZXhwZWN0ZWRQYXRjaCwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImFwcGVu
ZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoOiBSZW1vdmUgZXhlY3V0YWJsZSBiaXQgZnJv
bSBmaWxlLiI7CisKKyRleHBlY3RlZFBhdGNoID0gPDwnRU5EJzsKK1Byb3BlcnR5IGNoYW5nZXMg
b246IGZpbGVfdG9fcGF0Y2gudHh0CitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCitEZWxldGVkOiBzdm46ZXhlY3V0YWJs
ZQorICAgKyAqCitFTkQKKworJHBhdGNoID0gIiI7CithcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hh
bmdlVG9QYXRjaCgiZmlsZV90b19wYXRjaC50eHQiLCAiMTAwNjQ0IiwgXCRwYXRjaCk7CisKK29r
KCRwYXRjaCBlcSAkZXhwZWN0ZWRQYXRjaCwgJHRpdGxlKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZUdpdEZpbGVNb2RlLnBsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0
dGVzdC9wYXJzZUdpdEZpbGVNb2RlLnBsCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlR2l0RmlsZU1vZGUucGwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFJlc2VhcmNoIGluIE1vdGlvbiBM
aW1pdGVkIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVW5pdCB0ZXN0cyBv
ZiBWQ1NVdGlsczo6cGFyc2VHaXRGaWxlTW9kZSgpLgorCit1c2UgVGVzdDo6U2ltcGxlIHRlc3Rz
ID0+IDY7Cit1c2UgVkNTVXRpbHM7CisKK215ICR0aXRsZTsKK215ICRwYXRjaExpbmU7CisKKyMg
TmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhIHZhbGlkIEdpdCBm
aWxlIG1vZGUgZm9yIG5ldyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IGZpbGUgbW9kZSAx
MDA3NTUiOworb2socGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSA9PSAxMDA3NTUsICR0aXRs
ZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhIHZh
bGlkIEdpdCBmaWxlIG1vZGUgZm9yIGFuIGV4aXN0aW5nIGZpbGUuIjsKKworJHBhdGNoTGluZSA9
ICJuZXcgbW9kZSAxMDA3NTUiOworb2socGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSA9PSAx
MDA3NTUsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2Rl
OiBQYXJzZSBhbiBpbnZhbGlkIEdpdCBmaWxlIG1vZGUgZm9yIG5ldyBmaWxlLiI7CisKKyRwYXRj
aExpbmUgPSAibmV3IGZpbGUgbW9kZSBkdW1teSI7CitvayghcGFyc2VHaXRGaWxlTW9kZSgkcGF0
Y2hMaW5lKSwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gInBhcnNlR2l0RmlsZU1v
ZGU6IFBhcnNlIGFuIGludmFsaWQgR2l0IGZpbGUgbW9kZSBmb3IgYW4gZXhpc3RpbmcgZmlsZS4i
OworCiskcGF0Y2hMaW5lID0gIm5ldyBtb2RlIGR1bW15IjsKK29rKCFwYXJzZUdpdEZpbGVNb2Rl
KCRwYXRjaExpbmUpLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VHaXRG
aWxlTW9kZTogRW5zdXJlIHRoYXQgYSBudW1lcmljIGZpbGUgbW9kZSBsb25nZXIgdGhhbiA2IGRp
Z2l0cyBpcyBpbnZhbGlkIGZvciBhIG5ldyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IGZp
bGUgbW9kZSAxMDA3NTU5IjsKK29rKCFwYXJzZUdpdEZpbGVNb2RlKCRwYXRjaExpbmUpLCAkdGl0
bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VHaXRGaWxlTW9kZTogRW5zdXJlIHRo
YXQgYSBudW1lcmljIGZpbGUgbW9kZSBsb25nZXIgdGhhbiA2IGRpZ2l0cyBpcyBpbnZhbGlkIGZv
ciBhbiBleGlzdGluZyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IG1vZGUgMTAwNzU1OSI7
CitvayghcGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSwgJHRpdGxlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53067</attachid>
            <date>2010-04-10 20:36:13 -0700</date>
            <delta_ts>2010-04-10 21:25:38 -0700</delta_ts>
            <desc>Patch with unit tests</desc>
            <filename>Bug267204_4.patch</filename>
            <type>text/plain</type>
            <size>23279</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDQtMTAgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzIwNAorCisg
ICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgZXhlY3V0YWJsZSBiaXQg
b2YgYSBmaWxlLgorICAgICAgICBUaGUgZXhlY3V0YWJsZSBiaXQgaXMgYW1vbmcgdGhlIG1vc3Qg
Y2hhbmdlZCBmaWxlIHByb3BlcnRpZXMuCisgICAgICAgIEZ1dHVyZSBzdXBwb3J0IGNhbiBpbmNs
dWRlIG90aGVyIHByb3BlcnR5IGNoYW5nZXMuCisKKyAgICAgICAgQ3VycmVudGx5LCBpZiBhIHBh
dGNoIGNoYW5nZXMgdGhlIGV4ZWN1dGFibGUgYml0IG9mIGEgZmlsZQorICAgICAgICBpdCBpcyBu
b3QgcmVzcGVjdGVkIGJ5IHN2bi1hcHBseSBvciBzdm4tdW5hcHBseS4gU2luY2UgdGhlCisgICAg
ICAgIGNvbW1pdC1xdWV1ZSBib3QgdXNlcyB0aGVzZSB0b29scyBhcyBwYXJ0IG9mIGl0cyB3b3Jr
ZmxvdywKKyAgICAgICAgc3VjaCBwYXRjaGVzIGNhbm5vdCBiZSBjb21taXR0ZWQgYnkgaXQuIFRo
YXQgaXMsIHN1Y2ggcGF0Y2hlcworICAgICAgICBuZWVkIHRvIGJlIGNvbW1pdHRlZCBieSBoYW5k
LiBJbnN0ZWFkLCB3ZSBzaG91bGQgYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIHRoZSBleGVjdXRh
YmxlIGJpdCBzbyB0aGF0IHN1Y2ggcGF0Y2hlcyBjYW4gYmUgY29tbWl0dGVkCisgICAgICAgIGJ5
IHRoZSBjb21taXQtcXVldWUgYm90LgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbTog
QWxzbyBjaGFuZ2UgcmVmZXJlbmNlIHRvIEFwcGxlIENvbXB1dGVyLCBJbmMuCisgICAgICAgIGlu
IGNvcHlyaWdodCB0byBBcHBsZSwgSW5jLgorICAgICAgICAqIFNjcmlwdHMvc3ZuLWFwcGx5Ogor
ICAgICAgICAqIFNjcmlwdHMvc3ZuLXVuYXBwbHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
ZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNo
LnBsOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRl
c3QvcGFyc2VHaXRGaWxlTW9kZS5wbDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
ZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlU3RhcnRPZlBhdGNoT3JQcm9wZXJ0eUNoYW5nZUFu
ZEVuZE9mUHJvcGVydHlDaGFuZ2UucGw6IEFkZGVkLgorCiAyMDEwLTA0LTEwICBSb2JlcnQgSG9n
YW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGZpeCB0byByZWdy
ZXNzaW9ucyBpbiByNTc0MTYuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHJldmlzaW9u
IDU3NDE4KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBD
aHJpcyBKZXJkb25layAoY2hyaXMuamVyZG9uZWtAZ21haWwuY29tKQorIyBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwLDcgKzExLDcgQEAKICMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CiAjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMgMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgogIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAogIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKICMKQEAgLTQzLDYgKzQ0
LDcgQEAgQkVHSU4gewogICAgICRWRVJTSU9OICAgICA9IDEuMDA7CiAgICAgQElTQSAgICAgICAg
ID0gcXcoRXhwb3J0ZXIpOwogICAgIEBFWFBPUlQgICAgICA9IHF3KAorICAgICAgICAmYXBwZW5k
U1ZORXhlY3V0YWJsZUJpdENoYW5nZVRvUGF0Y2gKICAgICAgICAgJmNhbm9uaWNhbGl6ZVBhdGgK
ICAgICAgICAgJmNoYW5nZUxvZ0VtYWlsQWRkcmVzcwogICAgICAgICAmY2hhbmdlTG9nTmFtZQpA
QCAtNTQsMjAgKzU2LDI3IEBAIEJFR0lOIHsKICAgICAgICAgJmZpeENoYW5nZUxvZ1BhdGNoCiAg
ICAgICAgICZnaXRCcmFuY2gKICAgICAgICAgJmdpdGRpZmYyc3ZuZGlmZgorCQkmaXNFbmRPZlBy
b3BlcnR5Q2hhbmdlCiAgICAgICAgICZpc0dpdAogICAgICAgICAmaXNHaXRCcmFuY2hCdWlsZAog
ICAgICAgICAmaXNHaXREaXJlY3RvcnkKICAgICAgICAgJmlzU1ZOCiAgICAgICAgICZpc1NWTkRp
cmVjdG9yeQorICAgICAgICAmaXNTVk5Qcm9wZXJ0eQogICAgICAgICAmaXNTVk5WZXJzaW9uMTZP
ck5ld2VyCiAgICAgICAgICZtYWtlRmlsZVBhdGhSZWxhdGl2ZQogICAgICAgICAmbWVyZ2VDaGFu
Z2VMb2dzCiAgICAgICAgICZub3JtYWxpemVQYXRoCisgICAgICAgICZwYXJzZUdpdEZpbGVNb2Rl
CiAgICAgICAgICZwYXJzZVBhdGNoCisJCSZwYXJzZVN0YXJ0T2ZQYXRjaE9yUHJvcGVydHlDaGFu
Z2UKICAgICAgICAgJnBhdGhSZWxhdGl2ZVRvU1ZOUmVwb3NpdG9yeVJvb3RGb3JQYXRoCiAgICAg
ICAgICZydW5QYXRjaENvbW1hbmQKKyAgICAgICAgJnNjbUFkZEV4ZWN1dGFibGVQcm9wZXJ0eQor
ICAgICAgICAmc2NtUmVtb3ZlRXhlY3V0YWJsZVByb3BlcnR5CiAgICAgICAgICZzdm5SZXZpc2lv
bkZvckRpcmVjdG9yeQogICAgICAgICAmc3ZuU3RhdHVzCisJCSZ0b2dnbGVQcm9wZXJ0eUNoYW5n
ZQogICAgICk7CiAgICAgJUVYUE9SVF9UQUdTID0gKCApOwogICAgIEBFWFBPUlRfT0sgICA9ICgp
OwpAQCAtMTEwLDYgKzExOSw4NCBAQCBzdWIgaXNHaXQoKQogICAgIHJldHVybiAkaXNHaXQ7CiB9
CiAKK3N1YiBwYXJzZUdpdEZpbGVNb2RlKCQpCit7CisgICAgbXkgKCRwYXRjaCkgPSBAXzsKKyAg
ICByZXR1cm4gKCRwYXRjaCA9fiAvXm5ldyAoZmlsZSApP21vZGUgKFswLTldezZ9KSQvKSA/ICQy
IDogMDsKK30KKworc3ViIGlzU1ZOUHJvcGVydHkoJCkKK3sKKyAgICBteSAoJHBhdGNoKSA9IEBf
OworCSMgRklYTUU6IFdlIHNob3VsZCBtYWtlIHRoaXMgbW9yZSBnZW5lcmljIGFuZCBzdXBwb3J0
IGFkZGl0aW9uYWwgU1ZOIHByb3BlcnRpZXMuCisgICAgcmV0dXJuICRwYXRjaCA9fiAvXG4oQWRk
ZWR8RGVsZXRlZCk6IHN2bjpleGVjdXRhYmxlXG4vOworfQorCitzdWIgcGFyc2VTdGFydE9mUGF0
Y2hPclByb3BlcnR5Q2hhbmdlKCQpCit7CisJbXkgKCRwYXRjaCkgPSBAXzsKKwlyZXR1cm4gJDEg
aWYgKCRwYXRjaCA9fiAvXkluZGV4OiAoW15cclxuXSspLyB8fCAkcGF0Y2ggPX4gL15Qcm9wZXJ0
eSBjaGFuZ2VzIG9uOiAoW15cclxuXSspLyk7CisJcmV0dXJuIDA7Cit9CisKK3N1YiBpc0VuZE9m
UHJvcGVydHlDaGFuZ2UoJCQpCit7CisJbXkgKCRwYXRjaCwgJHByb3BlcnR5Q2hhbmdlUGF0aCkg
PSBAXzsKKwlyZXR1cm4gKCRwcm9wZXJ0eUNoYW5nZVBhdGggJiYgJHBhdGNoID1+IC9eICAgKFwr
fC0pIFwqJC8pOworfQorCitzdWIgdG9nZ2xlUHJvcGVydHlDaGFuZ2UKK3sKKwlteSAoJHBhdGNo
LCAkZnVsbFBhdGgsICRzaG91bGRVbmFwcGx5KSA9IEBfOworCSMgQ2hhbmdlIGV4ZWN1dGFibGUg
Yml0LgorICAgIGlmICgkcGF0Y2ggPX4gL0FkZGVkOiBzdm46ZXhlY3V0YWJsZVxuLykgeworCQlp
ZiAoIWRlZmluZWQoJHNob3VsZFVuYXBwbHkpKSB7CisJCQlzY21BZGRFeGVjdXRhYmxlUHJvcGVy
dHkoJGZ1bGxQYXRoKTsKKwkJfSBlbHNlIHsKKwkJCXNjbVJlbW92ZUV4ZWN1dGFibGVQcm9wZXJ0
eSgkZnVsbFBhdGgpOworCQl9CisgICAgfSBlbHNpZiAoJHBhdGNoID1+IC9EZWxldGVkOiBzdm46
ZXhlY3V0YWJsZVxuLykgeworCQlpZiAoIWRlZmluZWQoJHNob3VsZFVuYXBwbHkpKSB7CisJCQlz
Y21SZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQYXRoKTsKKwkJfSBlbHNlIHsKKwkJCXNj
bUFkZEV4ZWN1dGFibGVQcm9wZXJ0eSgkZnVsbFBhdGgpOworCQl9CisgICAgfQorfQorCitzdWIg
YXBwZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5nZVRvUGF0Y2goJCQkKQoreworICAgIG15ICgkaW5k
ZXhQYXRoLCAkZmlsZU1vZGUsICRwYXRjaFJlZikgPSBAXzsKKyAgICAjIE5vdGUsIHdlIGRvbid0
IG5lZWQgdG8gaW5jbHVkZSBlaXRoZXIgdGhlIGRpdmlkZXIgbGluZSBvciB0aGUgIiAgICsgKiIg
bGluZSwKKyAgICAjIGJ1dCB0aGVzZSBhcmUgbGVmdCBpbiBzbyBhcyB0byBwcm9kdWNlIGEgcHJv
cGVyIFNWTiBwcm9wZXJ0eSBjaGFuZ2UgZW50cnkuCisgICAgJCRwYXRjaFJlZiAuPSAiUHJvcGVy
dHkgY2hhbmdlcyBvbjogJGluZGV4UGF0aFxuIjsKKyAgICAkJHBhdGNoUmVmIC49ICJfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXG4iOworCSMgRklYTUU6IFRoZXNlIGZpbGUgbW9kZXMgYXJlIGZyYWdpbGUgYW5kIGJhc2Vk
IG9uIG9ic2VydmF0aW9uLgorICAgICQkcGF0Y2hSZWYgLj0gIkFkZGVkOiBzdm46ZXhlY3V0YWJs
ZVxuIiBpZiAkZmlsZU1vZGUgZXEgIjEwMDc1NSI7CisgICAgJCRwYXRjaFJlZiAuPSAiRGVsZXRl
ZDogc3ZuOmV4ZWN1dGFibGVcbiIgaWYgJGZpbGVNb2RlIGVxICIxMDA2NDQiOworICAgICQkcGF0
Y2hSZWYgLj0gIiAgICsgKlxuIjsKK30KKworc3ViIHNjbUFkZEV4ZWN1dGFibGVQcm9wZXJ0eSgk
KQoreworICAgIG15ICgkcGF0aCkgPSBAXzsKKyAgICBpZiAoaXNTVk4oKSkgeworICAgICAgICBz
eXN0ZW0oInN2biIsICJwcm9wc2V0IiwgInN2bjpleGVjdXRhYmxlIiwgIm9uIiwgJHBhdGgpID09
IDAgb3IgZGllICJGYWlsZWQgdG8gcnVuICdzdm4gcHJvcHNldCBzdm46ZXhlY3V0YWJsZSBvbiAk
cGF0aCcuIjsKKyAgICB9IGVsc2lmIChpc0dpdCgpKSB7CisgICAgICAgIGNobW9kKDA3NTUsICRw
YXRoKTsKKyAgICB9Cit9CisKK3N1YiBzY21SZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJCkKK3sK
KyAgICBteSAoJHBhdGgpID0gQF87CisgICAgaWYgKGlzU1ZOKCkpIHsKKyAgICAgICAgc3lzdGVt
KCJzdm4iLCAicHJvcGRlbCIsICJzdm46ZXhlY3V0YWJsZSIsICRwYXRoKSA9PSAwIG9yIGRpZSAi
RmFpbGVkIHRvIHJ1biAnc3ZuIHByb3BkZWwgc3ZuOmV4ZWN1dGFibGUgJHBhdGgnLiI7CisgICAg
fSBlbHNpZiAoaXNHaXQoKSkgeworICAgICAgICBjaG1vZCgwNjY0LCAkcGF0aCk7CisgICAgfQor
fQorCiBzdWIgZ2l0QnJhbmNoKCkKIHsKICAgICB1bmxlc3MgKGRlZmluZWQgJGdpdEJyYW5jaCkg
ewpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9v
bHMvU2NyaXB0cy9zdm4tYXBwbHkJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAKICMK
ICMgTWlzc2luZyBmZWF0dXJlczoKICMKLSMgICBIYW5kbGUgcHJvcGVydHkgY2hhbmdlcy4KKyMg
ICBIYW5kbGUgcHJvcGVydHkgY2hhbmdlcyBvdGhlciB0aGFuIHRoZSBleGVjdXRhYmxlIGJpdC4K
ICMgICBIYW5kbGUgY29waWVkIGFuZCBtb3ZlZCBkaXJlY3RvcmllcyAod291bGQgcmVxdWlyZSBw
YXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0ZS1wYXRjaCkuCiAjICAgV2hlbiBkb2luZyBhIHJlbW92
YWwsIGNoZWNrIHRoYXQgb2xkIGZpbGUgbWF0Y2hlcyB3aGF0J3MgYmVpbmcgcmVtb3ZlZC4KICMg
ICBOb3RpY2UgYSBwYXRjaCB0aGF0J3MgYmVpbmcgYXBwbGllZCBhdCB0aGUgIndyb25nIGxldmVs
IiBhbmQgbWFrZSBpdCB3b3JrIGFueXdheS4KQEAgLTEzMCwxNSArMTMwLDIyIEBAIG15ICRjb3Bp
ZWRGcm9tUGF0aDsKIG15ICRmaWx0ZXI7CiBteSAkaW5kZXhQYXRoOwogbXkgJHBhdGNoOworbXkg
JHByb3BlcnR5Q2hhbmdlUGF0aDsKK215ICRpc0dpdEZvcm1hdHRlZFBhdGNoID0gMDsKIHdoaWxl
ICg8PikgewogICAgIHMvKFtcblxyXSspJC8vbWc7CiAgICAgbXkgJGVvbCA9ICQxOwogICAgIGlm
ICghZGVmaW5lZCgkaW5kZXhQYXRoKSAmJiBtI15kaWZmIC0tZ2l0IFx3LyMpIHsKICAgICAgICAg
JGZpbHRlciA9IFwmZ2l0ZGlmZjJzdm5kaWZmOworICAgICAgICAkaXNHaXRGb3JtYXR0ZWRQYXRj
aCA9IDE7CiAgICAgfQogICAgICRfID0gJiRmaWx0ZXIoJF8pIGlmICRmaWx0ZXI7Ci0gICAgaWYg
KC9eSW5kZXg6ICguKykvKSB7Ci0gICAgICAgICRpbmRleFBhdGggPSAkMTsKKyAgICBpZiAobXkg
JGZpbGVQYXRoID0gcGFyc2VTdGFydE9mUGF0Y2hPclByb3BlcnR5Q2hhbmdlKCRfKSkgeworICAg
ICAgICBpZiAoL15JbmRleDogKC4rKS8pIHsKKyAgICAgICAgICAgICRpbmRleFBhdGggPSAkZmls
ZVBhdGg7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkcHJvcGVydHlDaGFuZ2VQYXRo
ID0gJGZpbGVQYXRoOworICAgICAgICB9CiAgICAgICAgIGlmICgkcGF0Y2gpIHsKICAgICAgICAg
ICAgIGlmICghJGNvcGllZEZyb21QYXRoKSB7CiAgICAgICAgICAgICAgICAgcHVzaCBAcGF0Y2hl
cywgJHBhdGNoOwpAQCAtMTUxLDYgKzE1OCwxNCBAQCB3aGlsZSAoPD4pIHsKICAgICAgICAgIyBG
aXggcGF0aHMgb24gZGlmZiwgLS0tLCBhbmQgKysrIGxpbmVzIHRvIG1hdGNoIHByZWNlZGluZyBJ
bmRleDogbGluZS4KICAgICAgICAgcy9cUyskLyRpbmRleFBhdGgvIGlmIC9eZGlmZi87CiAgICAg
ICAgIHMvXi0tLSBcUysvLS0tICRpbmRleFBhdGgvOworCisgICAgICAgIGlmICgkaXNHaXRGb3Jt
YXR0ZWRQYXRjaCAmJiAobXkgJGZpbGVNb2RlID0gcGFyc2VHaXRGaWxlTW9kZSgkXykpKSB7CisJ
CQkjIFRoZSBnaXRkaWZmMnN2bmRpZmYgZmlsdGVyIG9ubHkgb3BlcmF0ZXMgb24gYSBzaW5nbGUs
IGJ1dCB0aGUgZXF1aXZhbGVudAorCQkJIyBwcm9wZXJ0eSBjaGFuZ2UgZW50cnkgaW4gU1ZOIHNw
YW5zIG11bHRpcGxlIGxpbmVzIHdoaWNoIHdlIG5lZWQgdG8gcGFyc2UuCisgICAgICAgICAgICBh
cHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaCgkaW5kZXhQYXRoLCAkZmlsZU1vZGUs
IFwkcGF0Y2gpOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICgv
Xi0tLSAuK1woZnJvbSAoXFMrKTooXGQrKVwpJC8pIHsKICAgICAgICAgICAgICRjb3BpZWRGcm9t
UGF0aCA9ICQxOwogICAgICAgICAgICAgJGNvcGllZEZpbGVzeyRpbmRleFBhdGh9ID0gJGNvcGll
ZEZyb21QYXRoOwpAQCAtMTYzLDYgKzE3OCw3IEBAIHdoaWxlICg8PikgewogICAgICAgICAgICAg
JGluZGV4UGF0aCA9ICIiOwogICAgICAgICB9CiAgICAgfQorICAgICRwcm9wZXJ0eUNoYW5nZVBh
dGggPSAiIiBpZiBpc0VuZE9mUHJvcGVydHlDaGFuZ2UoJF8sICRwcm9wZXJ0eUNoYW5nZVBhdGgp
OwogICAgICRwYXRjaCAuPSAkXzsKICAgICAkcGF0Y2ggLj0gJGVvbDsKIH0KQEAgLTMzMCw5ICsz
NDYsOSBAQCBzdWIgcGF0Y2goJCkKICAgICBteSAoJHBhdGNoKSA9IEBfOwogICAgIHJldHVybiBp
ZiAhJHBhdGNoOwogCi0gICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8
KSB7CisgICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8IHx8ICRwYXRj
aCA9fiBtfF5Qcm9wZXJ0eSBjaGFuZ2VzIG9uOiAoW15cclxuXSspfCkgewogICAgICAgICBteSAk
c2VwYXJhdG9yID0gJy0nIHggNjc7Ci0gICAgICAgIHdhcm4gIkZhaWxlZCB0byBmaW5kICdJbmRl
eDonIGluOlxuJHNlcGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOworICAgICAgICB3YXJu
ICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBvciAnUHJvcGVydHkgY2hhbmdlcyBvbjonIGluOlxu
JHNlcGFyYXRvclxuJHBhdGNoXG4kc2VwYXJhdG9yXG4iOwogICAgICAgICBkaWUgdW5sZXNzICRm
b3JjZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM0MiwxMyArMzU4LDE1IEBAIHN1YiBw
YXRjaCgkKQogICAgIG15ICRhZGRpdGlvbiA9IDA7CiAgICAgbXkgJGlzQmluYXJ5ID0gMDsKICAg
ICBteSAkaXNHaXRCaW5hcnkgPSAwOworICAgIG15ICRpc1NWTlByb3BlcnR5Q2hhbmdlID0gMDsK
IAogICAgICRhZGRpdGlvbiA9IDEgaWYgKCRwYXRjaCA9fiAvXG4tLS0gLitcKHJldmlzaW9uIDBc
KVxyP1xuLyB8fCAkcGF0Y2ggPX4gL1xuQEAgLTAsMCAuKiBAQC8pICYmICFleGlzdHMoJGNvcGll
ZEZpbGVzeyRmdWxsUGF0aH0pOwogICAgICRkZWxldGlvbiA9IDEgaWYgJHBhdGNoID1+IC9cbkBA
IC4qIFwrMCwwIEBALzsKICAgICAkaXNCaW5hcnkgPSAxIGlmICRwYXRjaCA9fiAvXG5DYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZVwuLzsKICAgICAkaXNHaXRCaW5h
cnkgPSAxIGlmICRwYXRjaCA9fiAvXG5HSVQgYmluYXJ5IHBhdGNoXG4vOworICAgICRpc1NWTlBy
b3BlcnR5Q2hhbmdlID0gaXNTVk5Qcm9wZXJ0eSgkcGF0Y2gpOwogCi0gICAgaWYgKCEkYWRkaXRp
b24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNHaXRCaW5hcnkpIHsKKyAgICBp
ZiAoISRhZGRpdGlvbiAmJiAhJGRlbGV0aW9uICYmICEkaXNCaW5hcnkgJiYgISRpc0dpdEJpbmFy
eSAmJiAhJGlzU1ZOUHJvcGVydHlDaGFuZ2UpIHsKICAgICAgICAgIyBTdGFuZGFyZCBwYXRjaCwg
cGF0Y2ggdG9vbCBjYW4gaGFuZGxlIHRoaXMuCiAgICAgICAgIGlmIChiYXNlbmFtZSgkZnVsbFBh
dGgpIGVxICJDaGFuZ2VMb2ciKSB7CiAgICAgICAgICAgICBteSAkY2hhbmdlTG9nRG90T3JpZ0V4
aXN0ZWQgPSAtZiAiJHtmdWxsUGF0aH0ub3JpZyI7CkBAIC0zNzIsNiArMzkwLDkgQEAgc3ViIHBh
dGNoKCQpCiAgICAgICAgICAgICAjIERlbGV0aW9uCiAgICAgICAgICAgICBhcHBseVBhdGNoKCRw
YXRjaCwgJGZ1bGxQYXRoLCBbIi0tZm9yY2UiXSk7CiAgICAgICAgICAgICBzY21SZW1vdmUoJGZ1
bGxQYXRoKTsKKyAgICAgICAgfSBlbHNpZiAoJGlzU1ZOUHJvcGVydHlDaGFuZ2UpIHsKKyAgICAg
ICAgICAgICMgQ2hhbmdlIGV4ZWN1dGFibGUgYml0LgorCQkJdG9nZ2xlUHJvcGVydHlDaGFuZ2Uo
JHBhdGNoLCAkZnVsbFBhdGgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIyBBZGRp
dGlvbgogICAgICAgICAgICAgcmVuYW1lKCRmdWxsUGF0aCwgIiRmdWxsUGF0aC5vcmlnIikgaWYg
LWUgJGZ1bGxQYXRoOwpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tdW5hcHBseQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi11bmFwcGx5CShyZXZpc2lvbiA1NzQx
OCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDcgKzQ3LDcgQEAKICMKICMgTWlzc2luZyBmZWF0dXJlczoKICMKLSMgICBIYW5kbGUgcHJv
cGVydHkgY2hhbmdlcy4KKyMgICBIYW5kbGUgcHJvcGVydHkgY2hhbmdlcyBvdGhlciB0aGFuIHRo
ZSBleGVjdXRhYmxlIGJpdC4KICMgICBIYW5kbGUgY29waWVkIGFuZCBtb3ZlZCBkaXJlY3Rvcmll
cyAod291bGQgcmVxdWlyZSBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0ZS1wYXRjaCkuCiAjICAg
VXNlIHZlcnNpb24gbnVtYmVycyBpbiB0aGUgcGF0Y2ggZmlsZSBhbmQgZG8gYSAzLXdheSBtZXJn
ZS4KICMgICBXaGVuIHJldmVyc2luZyBhbiBhZGRpdGlvbiwgY2hlY2sgdGhhdCB0aGUgZmlsZSBt
YXRjaGVzIHdoYXQncyBiZWluZyByZW1vdmVkLgpAQCAtMTAxLDYgKzEwMSw4IEBAIG15ICRjb3Bp
ZWRGcm9tUGF0aDsKIG15ICRmaWx0ZXI7CiBteSAkaW5kZXhQYXRoOwogbXkgJHBhdGNoOworbXkg
JHByb3BlcnR5Q2hhbmdlUGF0aDsKK215ICRpc0dpdEZvcm1hdHRlZFBhdGNoID0gMDsKIHdoaWxl
ICg8PikgewogICAgIHMvKFtcblxyXSspJC8vbWc7CiAgICAgbXkgJGVvbCA9ICQxOwpAQCAtMTA4
LDggKzExMCwxMyBAQCB3aGlsZSAoPD4pIHsKICAgICAgICAgJGZpbHRlciA9IFwmZ2l0ZGlmZjJz
dm5kaWZmOwogICAgIH0KICAgICAkXyA9ICYkZmlsdGVyKCRfKSBpZiAkZmlsdGVyOwotICAgIGlm
ICgvXkluZGV4OiAoLispLykgewotICAgICAgICAkaW5kZXhQYXRoID0gJDE7CisgICAgaWYgKG15
ICRmaWxlUGF0aCA9IHBhcnNlU3RhcnRPZlBhdGNoT3JQcm9wZXJ0eUNoYW5nZSgkXykpIHsKKyAg
ICAgICAgaWYgKC9eSW5kZXg6ICguKykvKSB7CisgICAgICAgICAgICAkaW5kZXhQYXRoID0gJGZp
bGVQYXRoOworICAgICAgICAgICAgJGlzR2l0Rm9ybWF0dGVkUGF0Y2ggPSAkZmlsZVBhdGg7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkcHJvcGVydHlDaGFuZ2VQYXRoID0gJGZpbGVQ
YXRoOworICAgICAgICB9CiAgICAgICAgIGlmICgkcGF0Y2gpIHsKICAgICAgICAgICAgIGlmICgk
Y29waWVkRnJvbVBhdGgpIHsKICAgICAgICAgICAgICAgICBwdXNoIEBjb3BpZWRGaWxlcywgJHBh
dGNoOwpAQCAtMTIzLDYgKzEzMCwxNCBAQCB3aGlsZSAoPD4pIHsKICAgICBpZiAoJGluZGV4UGF0
aCkgewogICAgICAgICAjIEZpeCBwYXRocyBvbiBkaWZmLCAtLS0sIGFuZCArKysgbGluZXMgdG8g
bWF0Y2ggcHJlY2VkaW5nIEluZGV4OiBsaW5lLgogICAgICAgICBzL14tLS0gXFMrLy0tLSAkaW5k
ZXhQYXRoLzsKKworICAgICAgICBpZiAoJGlzR2l0Rm9ybWF0dGVkUGF0Y2ggJiYgKG15ICRmaWxl
TW9kZSA9IHBhcnNlR2l0RmlsZU1vZGUoJF8pKSkgeworCQkJIyBUaGUgZ2l0ZGlmZjJzdm5kaWZm
IGZpbHRlciBvbmx5IG9wZXJhdGVzIG9uIGEgc2luZ2xlLCBidXQgdGhlIGVxdWl2YWxlbnQKKwkJ
CSMgcHJvcGVydHkgY2hhbmdlIGVudHJ5IGluIFNWTiBzcGFucyBtdWx0aXBsZSBsaW5lcyB3aGlj
aCB3ZSBuZWVkIHRvIHBhcnNlLgorICAgICAgICAgICAgYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENo
YW5nZVRvUGF0Y2goJGluZGV4UGF0aCwgJGZpbGVNb2RlLCBcJHBhdGNoKTsKKyAgICAgICAgICAg
IG5leHQ7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoL14tLS0gLitcKGZyb20gKFxTKyk6XGQr
XCkkLykgewogICAgICAgICAgICAgJGNvcGllZEZyb21QYXRoID0gJDE7CiAgICAgICAgIH0KQEAg
LTEzMCw2ICsxNDUsNyBAQCB3aGlsZSAoPD4pIHsKICAgICAgICAgICAgICRpbmRleFBhdGggPSAi
IjsKICAgICAgICAgfQogICAgIH0KKyAgICAkcHJvcGVydHlDaGFuZ2VQYXRoID0gIiIgaWYgaXNF
bmRPZlByb3BlcnR5Q2hhbmdlKCRfLCAkcHJvcGVydHlDaGFuZ2VQYXRoKTsKICAgICAkcGF0Y2gg
Lj0gJF87CiAgICAgJHBhdGNoIC49ICRlb2w7CiB9CkBAIC0xNjgsMjMgKzE4NCwyNSBAQCBzdWIg
cGF0Y2goJCkKICAgICBteSAoJHBhdGNoKSA9IEBfOwogICAgIHJldHVybiBpZiAhJHBhdGNoOwog
Ci0gICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8KSB7CisJbXkgJGZ1
bGxQYXRoOworICAgIHVubGVzcyAoZGVmaW5lZCgkZnVsbFBhdGggPSBwYXJzZVN0YXJ0T2ZQYXRj
aE9yUHJvcGVydHlDaGFuZ2UoJHBhdGNoKSkpIHsKICAgICAgICAgbXkgJHNlcGFyYXRvciA9ICct
JyB4IDY3OwotICAgICAgICB3YXJuICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBpbjpcbiRzZXBh
cmF0b3JcbiRwYXRjaFxuJHNlcGFyYXRvclxuIjsKKyAgICAgICAgd2FybiAiRmFpbGVkIHRvIGZp
bmQgJ0luZGV4Oicgb3IgJ1Byb3BlcnR5IGNoYW5nZXMgb246JyBpbjpcbiRzZXBhcmF0b3JcbiRw
YXRjaFxuJHNlcGFyYXRvclxuIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBteSAkZnVs
bFBhdGggPSAkMTsKICAgICAkZGlyZWN0b3JpZXNUb0NoZWNre2Rpcm5hbWUoJGZ1bGxQYXRoKX0g
PSAxOwogCiAgICAgbXkgJGRlbGV0aW9uID0gMDsKICAgICBteSAkYWRkaXRpb24gPSAwOwogICAg
IG15ICRpc0JpbmFyeSA9IDA7CisgICAgbXkgJGlzU1ZOUHJvcGVydHlDaGFuZ2UgPSAwOwogCiAg
ICAgJGFkZGl0aW9uID0gMSBpZiAoJHBhdGNoID1+IC9cbi0tLSAuK1wocmV2aXNpb24gMFwpXG4v
IHx8ICRwYXRjaCA9fiAvXG5AQCAtMCwwIC4qIEBALyk7CiAgICAgJGRlbGV0aW9uID0gMSBpZiAk
cGF0Y2ggPX4gL1xuQEAgLiogXCswLDAgQEAvOwogICAgICRpc0JpbmFyeSA9IDEgaWYgJHBhdGNo
ID1+IC9cbkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlXC4vOwor
ICAgICRpc1NWTlByb3BlcnR5Q2hhbmdlID0gaXNTVk5Qcm9wZXJ0eSgkcGF0Y2gpOwogCi0gICAg
aWYgKCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5KSB7CisgICAgaWYgKCEk
YWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNTVk5Qcm9wZXJ0eUNo
YW5nZSkgewogICAgICAgICAjIFN0YW5kYXJkIHBhdGNoLCBwYXRjaCB0b29sIGNhbiBoYW5kbGUg
dGhpcy4KICAgICAgICAgaWYgKGJhc2VuYW1lKCRmdWxsUGF0aCkgZXEgIkNoYW5nZUxvZyIpIHsK
ICAgICAgICAgICAgIG15ICRjaGFuZ2VMb2dEb3RPcmlnRXhpc3RlZCA9IC1mICIke2Z1bGxQYXRo
fS5vcmlnIjsKQEAgLTIyNiw2ICsyNDQsOSBAQCBzdWIgcGF0Y2goJCkKIAogICAgICAgICAgICAg
IyBTaG93IHN0YXR1cyBpZiB0aGUgZmlsZSBpcyBtb2RpZmVkCiAgICAgICAgICAgICBzeXN0ZW0g
InN2biIsICJzdGF0IiwgJGZ1bGxQYXRoOworICAgICAgICB9IGVsc2lmICgkaXNTVk5Qcm9wZXJ0
eUNoYW5nZSkgeworICAgICAgICAgICAgIyBSZXZlcnNlIGNoYW5nZSBvZiBleGVjdXRhYmxlIGJp
dC4KKwkJCXRvZ2dsZVByb3BlcnR5Q2hhbmdlKCRwYXRjaCwgJGZ1bGxQYXRoLCAxKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgUmV2ZXJzZSBhZGRpdGlvbgogICAgICAgICAgICAg
dW5hcHBseVBhdGNoKCRwYXRjaCwgJGZ1bGxQYXRoLCBbIi0tZm9yY2UiXSk7CkluZGV4OiBXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvYXBwZW5kU1ZORXhl
Y3V0YWJsZUJpdENoYW5nZVRvUGF0Y2gucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRD
aGFuZ2VUb1BhdGNoLnBsCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1Bh
dGNoLnBsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisjIS91c3IvYmluL3BlcmwKKyMK
KyMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBpbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
IAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBSZXNlYXJjaCBp
biBNb3Rpb24gTGltaXRlZCBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFVu
aXQgdGVzdHMgb2YgVkNTVXRpbHM6OmFwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNo
KCkuCisKK3VzZSBUZXN0OjpTaW1wbGUgdGVzdHMgPT4gMjsKK3VzZSBWQ1NVdGlsczsKKworbXkg
JHRpdGxlOworbXkgJHBhdGNoOworbXkgJGV4cGVjdGVkUGF0Y2g7CisKKyMgTmV3IHRlc3QKKyR0
aXRsZSA9ICJhcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaDogQWRkIGV4ZWN1dGFi
bGUgYml0IHRvIGZpbGUuIjsKKworJGV4cGVjdGVkUGF0Y2ggPSA8PCdFTkQnOworUHJvcGVydHkg
Y2hhbmdlcyBvbjogZmlsZV90b19wYXRjaC50eHQKK19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KK0FkZGVkOiBzdm46ZXhl
Y3V0YWJsZQorICAgKyAqCitFTkQKKworJHBhdGNoID0gIiI7CithcHBlbmRTVk5FeGVjdXRhYmxl
Qml0Q2hhbmdlVG9QYXRjaCgiZmlsZV90b19wYXRjaC50eHQiLCAiMTAwNzU1IiwgXCRwYXRjaCk7
CisKK29rKCRwYXRjaCBlcSAkZXhwZWN0ZWRQYXRjaCwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAor
JHRpdGxlID0gImFwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoOiBSZW1vdmUgZXhl
Y3V0YWJsZSBiaXQgZnJvbSBmaWxlLiI7CisKKyRleHBlY3RlZFBhdGNoID0gPDwnRU5EJzsKK1By
b3BlcnR5IGNoYW5nZXMgb246IGZpbGVfdG9fcGF0Y2gudHh0CitfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCitEZWxldGVk
OiBzdm46ZXhlY3V0YWJsZQorICAgKyAqCitFTkQKKworJHBhdGNoID0gIiI7CithcHBlbmRTVk5F
eGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaCgiZmlsZV90b19wYXRjaC50eHQiLCAiMTAwNjQ0Iiwg
XCRwYXRjaCk7CisKK29rKCRwYXRjaCBlcSAkZXhwZWN0ZWRQYXRjaCwgJHRpdGxlKTsKSW5kZXg6
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZUdp
dEZpbGVNb2RlLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZUdpdEZpbGVNb2RlLnBsCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlR2l0
RmlsZU1vZGUucGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKyMhL3Vzci9iaW4vcGVy
bAorIworIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFJlc2Vh
cmNoIGluIE1vdGlvbiBMaW1pdGVkIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyMgVW5pdCB0ZXN0cyBvZiBWQ1NVdGlsczo6cGFyc2VHaXRGaWxlTW9kZSgpLgorCit1c2UgVGVz
dDo6U2ltcGxlIHRlc3RzID0+IDY7Cit1c2UgVkNTVXRpbHM7CisKK215ICR0aXRsZTsKK215ICRw
YXRjaExpbmU7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJz
ZSBhIHZhbGlkIEdpdCBmaWxlIG1vZGUgZm9yIG5ldyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAi
bmV3IGZpbGUgbW9kZSAxMDA3NTUiOworb2socGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSA9
PSAxMDA3NTUsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVN
b2RlOiBQYXJzZSBhIHZhbGlkIEdpdCBmaWxlIG1vZGUgZm9yIGFuIGV4aXN0aW5nIGZpbGUuIjsK
KworJHBhdGNoTGluZSA9ICJuZXcgbW9kZSAxMDA3NTUiOworb2socGFyc2VHaXRGaWxlTW9kZSgk
cGF0Y2hMaW5lKSA9PSAxMDA3NTUsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJw
YXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhbiBpbnZhbGlkIEdpdCBmaWxlIG1vZGUgZm9yIG5ldyBm
aWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IGZpbGUgbW9kZSBkdW1teSI7CitvayghcGFyc2VH
aXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0g
InBhcnNlR2l0RmlsZU1vZGU6IFBhcnNlIGFuIGludmFsaWQgR2l0IGZpbGUgbW9kZSBmb3IgYW4g
ZXhpc3RpbmcgZmlsZS4iOworCiskcGF0Y2hMaW5lID0gIm5ldyBtb2RlIGR1bW15IjsKK29rKCFw
YXJzZUdpdEZpbGVNb2RlKCRwYXRjaExpbmUpLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0
bGUgPSAicGFyc2VHaXRGaWxlTW9kZTogRW5zdXJlIHRoYXQgYSBudW1lcmljIGZpbGUgbW9kZSBs
b25nZXIgdGhhbiA2IGRpZ2l0cyBpcyBpbnZhbGlkIGZvciBhIG5ldyBmaWxlLiI7CisKKyRwYXRj
aExpbmUgPSAibmV3IGZpbGUgbW9kZSAxMDA3NTU5IjsKK29rKCFwYXJzZUdpdEZpbGVNb2RlKCRw
YXRjaExpbmUpLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VHaXRGaWxl
TW9kZTogRW5zdXJlIHRoYXQgYSBudW1lcmljIGZpbGUgbW9kZSBsb25nZXIgdGhhbiA2IGRpZ2l0
cyBpcyBpbnZhbGlkIGZvciBhbiBleGlzdGluZyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3
IG1vZGUgMTAwNzU1OSI7CitvayghcGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSwgJHRpdGxl
KTsKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVz
dC9wYXJzZVN0YXJ0T2ZQYXRjaE9yUHJvcGVydHlDaGFuZ2VBbmRFbmRPZlByb3BlcnR5Q2hhbmdl
LnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGls
c191bml0dGVzdC9wYXJzZVN0YXJ0T2ZQYXRjaE9yUHJvcGVydHlDaGFuZ2VBbmRFbmRPZlByb3Bl
cnR5Q2hhbmdlLnBsCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlU3RhcnRPZlBhdGNoT3JQcm9wZXJ0eUNoYW5nZUFu
ZEVuZE9mUHJvcGVydHlDaGFuZ2UucGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKyMh
L3Vzci9iaW4vcGVybAorIworIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1p
dGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyMgVW5pdCB0ZXN0cyBvZiBWQ1NVdGlsczo6cGFyc2VTdGFydE9mUGF0Y2hP
clByb3BlcnR5Q2hhbmdlKCkgYW5kIFZDU1V0aWxzOjppc0VuZE9mUHJvcGVydHlDaGFuZ2UuCisK
K3VzZSBUZXN0OjpTaW1wbGUgdGVzdHMgPT4gNjsKK3VzZSBWQ1NVdGlsczsKKworbXkgJHRpdGxl
OworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiaXNTdGFydE9mUGF0Y2hPclByb3BlcnR5Q2hhbmdl
OiBUZXN0IHN0YXJ0IG9mIFNWTiBwYXRjaC4iOworb2socGFyc2VTdGFydE9mUGF0Y2hPclByb3Bl
cnR5Q2hhbmdlKCJJbmRleDogZmlsZV90b19wYXRjaC50eHRcbiIpIGVxICJmaWxlX3RvX3BhdGNo
LnR4dCIsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJpc1N0YXJ0T2ZQYXRjaE9y
UHJvcGVydHlDaGFuZ2U6IFRlc3Qgc3RhcnQgb2YgU1ZOIHByb3BlcnR5IGNoYW5nZSBlbnRyeS4i
Oworb2socGFyc2VTdGFydE9mUGF0Y2hPclByb3BlcnR5Q2hhbmdlKCJQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBmaWxlX3RvX3BhdGNoLnR4dFxyXG4iKSBlcSAiZmlsZV90b19wYXRjaC50eHQiLCAkdGl0
bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiaXNFbmRPZlByb3BlcnR5Q2hhbmdlOiBUZXN0
IGVuZCBvZiBTVk4gcHJvcGVydHkgY2hhbmdlIGVudHJ5IGFkZGl0aW9uLiI7Citvayhpc0VuZE9m
UHJvcGVydHlDaGFuZ2UoIiAgICsgKlxuIiwgImZpbGVfdG9fcGF0Y2gudHh0IiksICR0aXRsZSk7
CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJpc0VuZE9mUHJvcGVydHlDaGFuZ2U6IFRlc3QgZW5k
IG9mIFNWTiBwcm9wZXJ0eSBjaGFuZ2UgZW50cnkgZGVsZXRpb24uIjsKK29rKGlzRW5kT2ZQcm9w
ZXJ0eUNoYW5nZSgiICAgLSAqXG4iLCAiZmlsZV90b19wYXRjaC50eHQiKSwgJHRpdGxlKTsKKwor
IyBOZXcgdGVzdAorJHRpdGxlID0gImlzRW5kT2ZQcm9wZXJ0eUNoYW5nZTogVGVzdCBlbmQgb2Yg
U1ZOIHByb3BlcnR5IGNoYW5nZSBlbnRyeSBhZGRpdGlvbiB3aXRoIGludmFsaWQgcHJvcGVydHkg
Y2hhbmdlIHBhdGguIjsKK29rKCFpc0VuZE9mUHJvcGVydHlDaGFuZ2UoIiAgICsgKlxuIiwgMCks
ICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJpc0VuZE9mUHJvcGVydHlDaGFuZ2U6
IFRlc3QgZW5kIG9mIFNWTiBwcm9wZXJ0eSBjaGFuZ2UgZW50cnkgZGVsZXRpb24gd2l0aCBpbnZh
bGlkIHByb3BlcnR5IGNoYW5nZSBwYXRoLiI7CitvayghaXNFbmRPZlByb3BlcnR5Q2hhbmdlKCIg
ICAtICpcbiIsIDApLCAkdGl0bGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53071</attachid>
            <date>2010-04-10 21:26:06 -0700</date>
            <delta_ts>2010-04-10 21:35:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-27204-20100410212605.patch</filename>
            <type>text/plain</type>
            <size>23833</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDQtMTAgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzIwNAorCisgICAg
ICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgZXhlY3V0YWJsZSBiaXQgb2Yg
YSBmaWxlLgorICAgICAgICBUaGUgZXhlY3V0YWJsZSBiaXQgaXMgYW1vbmcgdGhlIG1vc3QgY2hh
bmdlZCBmaWxlIHByb3BlcnRpZXMuCisgICAgICAgIEZ1dHVyZSBzdXBwb3J0IGNhbiBpbmNsdWRl
IG90aGVyIHByb3BlcnR5IGNoYW5nZXMuCisKKyAgICAgICAgQ3VycmVudGx5LCBpZiBhIHBhdGNo
IGNoYW5nZXMgdGhlIGV4ZWN1dGFibGUgYml0IG9mIGEgZmlsZQorICAgICAgICBpdCBpcyBub3Qg
cmVzcGVjdGVkIGJ5IHN2bi1hcHBseSBvciBzdm4tdW5hcHBseS4gU2luY2UgdGhlCisgICAgICAg
IGNvbW1pdC1xdWV1ZSBib3QgdXNlcyB0aGVzZSB0b29scyBhcyBwYXJ0IG9mIGl0cyB3b3JrZmxv
dywKKyAgICAgICAgc3VjaCBwYXRjaGVzIGNhbm5vdCBiZSBjb21taXR0ZWQgYnkgaXQuIFRoYXQg
aXMsIHN1Y2ggcGF0Y2hlcworICAgICAgICBuZWVkIHRvIGJlIGNvbW1pdHRlZCBieSBoYW5kLiBJ
bnN0ZWFkLCB3ZSBzaG91bGQgYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIHRoZSBleGVjdXRhYmxl
IGJpdCBzbyB0aGF0IHN1Y2ggcGF0Y2hlcyBjYW4gYmUgY29tbWl0dGVkCisgICAgICAgIGJ5IHRo
ZSBjb21taXQtcXVldWUgYm90LgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbTogQWxz
byBjaGFuZ2UgcmVmZXJlbmNlIHRvIEFwcGxlIENvbXB1dGVyLCBJbmMuCisgICAgICAgIGluIGNv
cHlyaWdodCB0byBBcHBsZSwgSW5jLgorICAgICAgICAqIFNjcmlwdHMvc3ZuLWFwcGx5OgorICAg
ICAgICAqIFNjcmlwdHMvc3ZuLXVuYXBwbHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoLnBs
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3Qv
cGFyc2VHaXRGaWxlTW9kZS5wbDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlU3RhcnRPZlBhdGNoT3JQcm9wZXJ0eUNoYW5nZUFuZEVu
ZE9mUHJvcGVydHlDaGFuZ2UucGw6IEFkZGVkLgorCiAyMDEwLTA0LTEwICBSb2JlcnQgSG9nYW4g
IDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGZpeCB0byByZWdyZXNz
aW9ucyBpbiByNTc0MTYuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHJldmlzaW9uIDU3
NDE4KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBDaHJp
cyBKZXJkb25layAoY2hyaXMuamVyZG9uZWtAZ21haWwuY29tKQorIyBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwLDcgKzExLDcgQEAKICMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CiAjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCiAjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMgMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgogIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAogIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKICMKQEAgLTQzLDYgKzQ0LDcg
QEAgQkVHSU4gewogICAgICRWRVJTSU9OICAgICA9IDEuMDA7CiAgICAgQElTQSAgICAgICAgID0g
cXcoRXhwb3J0ZXIpOwogICAgIEBFWFBPUlQgICAgICA9IHF3KAorICAgICAgICAmYXBwZW5kU1ZO
RXhlY3V0YWJsZUJpdENoYW5nZVRvUGF0Y2gKICAgICAgICAgJmNhbm9uaWNhbGl6ZVBhdGgKICAg
ICAgICAgJmNoYW5nZUxvZ0VtYWlsQWRkcmVzcwogICAgICAgICAmY2hhbmdlTG9nTmFtZQpAQCAt
NTQsMjAgKzU2LDI4IEBAIEJFR0lOIHsKICAgICAgICAgJmZpeENoYW5nZUxvZ1BhdGNoCiAgICAg
ICAgICZnaXRCcmFuY2gKICAgICAgICAgJmdpdGRpZmYyc3ZuZGlmZgorICAgICAgICAmaXNFbmRP
ZlByb3BlcnR5Q2hhbmdlCiAgICAgICAgICZpc0dpdAogICAgICAgICAmaXNHaXRCcmFuY2hCdWls
ZAogICAgICAgICAmaXNHaXREaXJlY3RvcnkKICAgICAgICAgJmlzU1ZOCiAgICAgICAgICZpc1NW
TkRpcmVjdG9yeQorICAgICAgICAmaXNTVk5Qcm9wZXJ0eQogICAgICAgICAmaXNTVk5WZXJzaW9u
MTZPck5ld2VyCiAgICAgICAgICZtYWtlRmlsZVBhdGhSZWxhdGl2ZQogICAgICAgICAmbWVyZ2VD
aGFuZ2VMb2dzCiAgICAgICAgICZub3JtYWxpemVQYXRoCisgICAgICAgICZwYXJzZUdpdEZpbGVN
b2RlCiAgICAgICAgICZwYXJzZVBhdGNoCisgICAgICAgICZwYXJzZVByb3BlcnR5Q2hhbmdlCisg
ICAgICAgICZwYXJzZVN0YXJ0T2ZQYXRjaAogICAgICAgICAmcGF0aFJlbGF0aXZlVG9TVk5SZXBv
c2l0b3J5Um9vdEZvclBhdGgKICAgICAgICAgJnJ1blBhdGNoQ29tbWFuZAorICAgICAgICAmc2Nt
QWRkRXhlY3V0YWJsZVByb3BlcnR5CisgICAgICAgICZzY21SZW1vdmVFeGVjdXRhYmxlUHJvcGVy
dHkKICAgICAgICAgJnN2blJldmlzaW9uRm9yRGlyZWN0b3J5CiAgICAgICAgICZzdm5TdGF0dXMK
KyAgICAgICAgJnRvZ2dsZVByb3BlcnR5Q2hhbmdlCiAgICAgKTsKICAgICAlRVhQT1JUX1RBR1Mg
PSAoICk7CiAgICAgQEVYUE9SVF9PSyAgID0gKCk7CkBAIC0xMTAsNiArMTIwLDkxIEBAIHN1YiBp
c0dpdCgpCiAgICAgcmV0dXJuICRpc0dpdDsKIH0KIAorc3ViIHBhcnNlR2l0RmlsZU1vZGUoJCkK
K3sKKyAgICBteSAoJHBhdGNoKSA9IEBfOworICAgIHJldHVybiAoJHBhdGNoID1+IC9ebmV3IChm
aWxlICk/bW9kZSAoWzAtOV17Nn0pJC8pID8gJDIgOiAwOworfQorCitzdWIgaXNTVk5Qcm9wZXJ0
eSgkKQoreworICAgIG15ICgkcGF0Y2gpID0gQF87CisgICAgIyBGSVhNRTogV2Ugc2hvdWxkIG1h
a2UgdGhpcyBtb3JlIGdlbmVyaWMgYW5kIHN1cHBvcnQgYWRkaXRpb25hbCBTVk4gcHJvcGVydGll
cy4KKyAgICByZXR1cm4gJHBhdGNoID1+IC9cbihBZGRlZHxEZWxldGVkKTogc3ZuOmV4ZWN1dGFi
bGVcbi87Cit9CisKK3N1YiBwYXJzZVN0YXJ0T2ZQYXRjaCgkKQoreworICAgIG15ICgkcGF0Y2gp
ID0gQF87CisgICAgcmV0dXJuICQxIGlmICgkcGF0Y2ggPX4gL15JbmRleDogKFteXHJcbl0rKS8p
OworICAgIHJldHVybiAwOworfQorCitzdWIgcGFyc2VQcm9wZXJ0eUNoYW5nZSgkKQoreworICAg
IG15ICgkcGF0Y2gpID0gQF87CisgICAgcmV0dXJuICQxIGlmICgkcGF0Y2ggPX4gL15Qcm9wZXJ0
eSBjaGFuZ2VzIG9uOiAoW15cclxuXSspLyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBpc0Vu
ZE9mUHJvcGVydHlDaGFuZ2UoJCQpCit7CisgICAgbXkgKCRwYXRjaCwgJHByb3BlcnR5Q2hhbmdl
UGF0aCkgPSBAXzsKKyAgICByZXR1cm4gKCRwcm9wZXJ0eUNoYW5nZVBhdGggJiYgJHBhdGNoID1+
IC9eICAgKFwrfC0pIFwqJC8pOworfQorCitzdWIgdG9nZ2xlUHJvcGVydHlDaGFuZ2UKK3sKKyAg
ICBteSAoJHBhdGNoLCAkZnVsbFBhdGgsICRzaG91bGRVbmFwcGx5KSA9IEBfOworICAgICMgQ2hh
bmdlIGV4ZWN1dGFibGUgYml0LgorICAgIGlmICgkcGF0Y2ggPX4gL0FkZGVkOiBzdm46ZXhlY3V0
YWJsZVxuLykgeworICAgICAgICBpZiAoIWRlZmluZWQoJHNob3VsZFVuYXBwbHkpKSB7CisgICAg
ICAgICAgICBzY21BZGRFeGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHNjbVJlbW92ZUV4ZWN1dGFibGVQcm9wZXJ0eSgkZnVsbFBhdGgp
OworICAgICAgICB9CisgICAgfSBlbHNpZiAoJHBhdGNoID1+IC9EZWxldGVkOiBzdm46ZXhlY3V0
YWJsZVxuLykgeworICAgICAgICBpZiAoIWRlZmluZWQoJHNob3VsZFVuYXBwbHkpKSB7CisgICAg
ICAgICAgICBzY21SZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHNjbUFkZEV4ZWN1dGFibGVQcm9wZXJ0eSgkZnVsbFBhdGgp
OworICAgICAgICB9CisgICAgfQorfQorCitzdWIgYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5n
ZVRvUGF0Y2goJCQkKQoreworICAgIG15ICgkaW5kZXhQYXRoLCAkZmlsZU1vZGUsICRwYXRjaFJl
ZikgPSBAXzsKKyAgICAjIE5vdGUsIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBlaXRoZXIgdGhl
IGRpdmlkZXIgbGluZSBvciB0aGUgIiAgICsgKiIgbGluZSwKKyAgICAjIGJ1dCB0aGVzZSBhcmUg
bGVmdCBpbiBzbyBhcyB0byBwcm9kdWNlIGEgcHJvcGVyIFNWTiBwcm9wZXJ0eSBjaGFuZ2UgZW50
cnkuCisgICAgJCRwYXRjaFJlZiAuPSAiUHJvcGVydHkgY2hhbmdlcyBvbjogJGluZGV4UGF0aFxu
IjsKKyAgICAkJHBhdGNoUmVmIC49ICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXG4iOworICAgICMgRklYTUU6IFRoZXNl
IGZpbGUgbW9kZXMgYXJlIGZyYWdpbGUgYW5kIGJhc2VkIG9uIG9ic2VydmF0aW9uLgorICAgICQk
cGF0Y2hSZWYgLj0gIkFkZGVkOiBzdm46ZXhlY3V0YWJsZVxuIiBpZiAkZmlsZU1vZGUgZXEgIjEw
MDc1NSI7CisgICAgJCRwYXRjaFJlZiAuPSAiRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbiIgaWYg
JGZpbGVNb2RlIGVxICIxMDA2NDQiOworICAgICQkcGF0Y2hSZWYgLj0gIiAgICsgKlxuIjsKK30K
Kworc3ViIHNjbUFkZEV4ZWN1dGFibGVQcm9wZXJ0eSgkKQoreworICAgIG15ICgkcGF0aCkgPSBA
XzsKKyAgICBpZiAoaXNTVk4oKSkgeworICAgICAgICBzeXN0ZW0oInN2biIsICJwcm9wc2V0Iiwg
InN2bjpleGVjdXRhYmxlIiwgIm9uIiwgJHBhdGgpID09IDAgb3IgZGllICJGYWlsZWQgdG8gcnVu
ICdzdm4gcHJvcHNldCBzdm46ZXhlY3V0YWJsZSBvbiAkcGF0aCcuIjsKKyAgICB9IGVsc2lmIChp
c0dpdCgpKSB7CisgICAgICAgIGNobW9kKDA3NTUsICRwYXRoKTsKKyAgICB9Cit9CisKK3N1YiBz
Y21SZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJCkKK3sKKyAgICBteSAoJHBhdGgpID0gQF87Cisg
ICAgaWYgKGlzU1ZOKCkpIHsKKyAgICAgICAgc3lzdGVtKCJzdm4iLCAicHJvcGRlbCIsICJzdm46
ZXhlY3V0YWJsZSIsICRwYXRoKSA9PSAwIG9yIGRpZSAiRmFpbGVkIHRvIHJ1biAnc3ZuIHByb3Bk
ZWwgc3ZuOmV4ZWN1dGFibGUgJHBhdGgnLiI7CisgICAgfSBlbHNpZiAoaXNHaXQoKSkgeworICAg
ICAgICBjaG1vZCgwNjY0LCAkcGF0aCk7CisgICAgfQorfQorCiBzdWIgZ2l0QnJhbmNoKCkKIHsK
ICAgICB1bmxlc3MgKGRlZmluZWQgJGdpdEJyYW5jaCkgewpJbmRleDogV2ViS2l0VG9vbHMvU2Ny
aXB0cy9zdm4tYXBwbHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBw
bHkJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAKICMKICMgTWlzc2luZyBmZWF0dXJlczoKICMK
LSMgICBIYW5kbGUgcHJvcGVydHkgY2hhbmdlcy4KKyMgICBIYW5kbGUgcHJvcGVydHkgY2hhbmdl
cyBvdGhlciB0aGFuIHRoZSBleGVjdXRhYmxlIGJpdC4KICMgICBIYW5kbGUgY29waWVkIGFuZCBt
b3ZlZCBkaXJlY3RvcmllcyAod291bGQgcmVxdWlyZSBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0
ZS1wYXRjaCkuCiAjICAgV2hlbiBkb2luZyBhIHJlbW92YWwsIGNoZWNrIHRoYXQgb2xkIGZpbGUg
bWF0Y2hlcyB3aGF0J3MgYmVpbmcgcmVtb3ZlZC4KICMgICBOb3RpY2UgYSBwYXRjaCB0aGF0J3Mg
YmVpbmcgYXBwbGllZCBhdCB0aGUgIndyb25nIGxldmVsIiBhbmQgbWFrZSBpdCB3b3JrIGFueXdh
eS4KQEAgLTEzMCwyNyArMTMwLDM3IEBAIG15ICRjb3BpZWRGcm9tUGF0aDsKIG15ICRmaWx0ZXI7
CiBteSAkaW5kZXhQYXRoOwogbXkgJHBhdGNoOworbXkgJHByb3BlcnR5Q2hhbmdlUGF0aDsKK215
ICRpc0dpdEZvcm1hdHRlZFBhdGNoID0gMDsKIHdoaWxlICg8PikgewogICAgIHMvKFtcblxyXSsp
JC8vbWc7CiAgICAgbXkgJGVvbCA9ICQxOwogICAgIGlmICghZGVmaW5lZCgkaW5kZXhQYXRoKSAm
JiBtI15kaWZmIC0tZ2l0IFx3LyMpIHsKICAgICAgICAgJGZpbHRlciA9IFwmZ2l0ZGlmZjJzdm5k
aWZmOworICAgICAgICAkaXNHaXRGb3JtYXR0ZWRQYXRjaCA9IDE7CiAgICAgfQogICAgICRfID0g
JiRmaWx0ZXIoJF8pIGlmICRmaWx0ZXI7Ci0gICAgaWYgKC9eSW5kZXg6ICguKykvKSB7Ci0gICAg
ICAgICRpbmRleFBhdGggPSAkMTsKLSAgICAgICAgaWYgKCRwYXRjaCkgewotICAgICAgICAgICAg
aWYgKCEkY29waWVkRnJvbVBhdGgpIHsKLSAgICAgICAgICAgICAgICBwdXNoIEBwYXRjaGVzLCAk
cGF0Y2g7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkY29waWVkRnJvbVBhdGggPSAiIjsK
LSAgICAgICAgICAgICRwYXRjaCA9ICIiOworICAgIG15ICRpbmRleFBhdGggPSBwYXJzZVN0YXJ0
T2ZQYXRjaCgkXyk7CisgICAgbXkgJHByb3BlcnR5Q2hhbmdlUGF0aCA9IHBhcnNlUHJvcGVydHlD
aGFuZ2UoJF8pOworICAgIGlmICgkaW5kZXhQYXRoIHx8ICRwcm9wZXJ0eUNoYW5nZVBhdGgpIHsK
KyAgICAgICAgaWYgKCEkY29waWVkRnJvbVBhdGgpIHsKKyAgICAgICAgICAgIHB1c2ggQHBhdGNo
ZXMsICRwYXRjaDsKICAgICAgICAgfQorICAgICAgICAkY29waWVkRnJvbVBhdGggPSAiIjsKKyAg
ICAgICAgJHBhdGNoID0gIiI7CiAgICAgfQogICAgIGlmICgkaW5kZXhQYXRoKSB7CiAgICAgICAg
ICMgRml4IHBhdGhzIG9uIGRpZmYsIC0tLSwgYW5kICsrKyBsaW5lcyB0byBtYXRjaCBwcmVjZWRp
bmcgSW5kZXg6IGxpbmUuCiAgICAgICAgIHMvXFMrJC8kaW5kZXhQYXRoLyBpZiAvXmRpZmYvOwog
ICAgICAgICBzL14tLS0gXFMrLy0tLSAkaW5kZXhQYXRoLzsKKworICAgICAgICBpZiAoJGlzR2l0
Rm9ybWF0dGVkUGF0Y2ggJiYgKG15ICRmaWxlTW9kZSA9IHBhcnNlR2l0RmlsZU1vZGUoJF8pKSkg
eworICAgICAgICAgICAgIyBUaGUgZ2l0ZGlmZjJzdm5kaWZmIGZpbHRlciBvbmx5IG9wZXJhdGVz
IG9uIGEgc2luZ2xlLCBidXQgdGhlIGVxdWl2YWxlbnQKKyAgICAgICAgICAgICMgcHJvcGVydHkg
Y2hhbmdlIGVudHJ5IGluIFNWTiBzcGFucyBtdWx0aXBsZSBsaW5lcyB3aGljaCB3ZSBuZWVkIHRv
IHBhcnNlLgorICAgICAgICAgICAgYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5nZVRvUGF0Y2go
JGluZGV4UGF0aCwgJGZpbGVNb2RlLCBcJHBhdGNoKTsKKyAgICAgICAgICAgIG5leHQ7CisgICAg
ICAgIH0KKwogICAgICAgICBpZiAoL14tLS0gLitcKGZyb20gKFxTKyk6KFxkKylcKSQvKSB7CiAg
ICAgICAgICAgICAkY29waWVkRnJvbVBhdGggPSAkMTsKICAgICAgICAgICAgICRjb3BpZWRGaWxl
c3skaW5kZXhQYXRofSA9ICRjb3BpZWRGcm9tUGF0aDsKQEAgLTE2Myw2ICsxNzMsNyBAQCB3aGls
ZSAoPD4pIHsKICAgICAgICAgICAgICRpbmRleFBhdGggPSAiIjsKICAgICAgICAgfQogICAgIH0K
KyAgICAkcHJvcGVydHlDaGFuZ2VQYXRoID0gIiIgaWYgaXNFbmRPZlByb3BlcnR5Q2hhbmdlKCRf
LCAkcHJvcGVydHlDaGFuZ2VQYXRoKTsKICAgICAkcGF0Y2ggLj0gJF87CiAgICAgJHBhdGNoIC49
ICRlb2w7CiB9CkBAIC0zMzAsOSArMzQxLDkgQEAgc3ViIHBhdGNoKCQpCiAgICAgbXkgKCRwYXRj
aCkgPSBAXzsKICAgICByZXR1cm4gaWYgISRwYXRjaDsKIAotICAgIHVubGVzcyAoJHBhdGNoID1+
IG18XkluZGV4OiAoW15cclxuXSspfCkgeworICAgIHVubGVzcyAoJHBhdGNoID1+IG18XkluZGV4
OiAoW15cclxuXSspfCB8fCAkcGF0Y2ggPX4gbXxeUHJvcGVydHkgY2hhbmdlcyBvbjogKFteXHJc
bl0rKXwpIHsKICAgICAgICAgbXkgJHNlcGFyYXRvciA9ICctJyB4IDY3OwotICAgICAgICB3YXJu
ICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBpbjpcbiRzZXBhcmF0b3JcbiRwYXRjaFxuJHNlcGFy
YXRvclxuIjsKKyAgICAgICAgd2FybiAiRmFpbGVkIHRvIGZpbmQgJ0luZGV4Oicgb3IgJ1Byb3Bl
cnR5IGNoYW5nZXMgb246JyBpbjpcbiRzZXBhcmF0b3JcbiRwYXRjaFxuJHNlcGFyYXRvclxuIjsK
ICAgICAgICAgZGllIHVubGVzcyAkZm9yY2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0z
NDIsMTMgKzM1MywxNSBAQCBzdWIgcGF0Y2goJCkKICAgICBteSAkYWRkaXRpb24gPSAwOwogICAg
IG15ICRpc0JpbmFyeSA9IDA7CiAgICAgbXkgJGlzR2l0QmluYXJ5ID0gMDsKKyAgICBteSAkaXNT
Vk5Qcm9wZXJ0eUNoYW5nZSA9IDA7CiAKICAgICAkYWRkaXRpb24gPSAxIGlmICgkcGF0Y2ggPX4g
L1xuLS0tIC4rXChyZXZpc2lvbiAwXClccj9cbi8gfHwgJHBhdGNoID1+IC9cbkBAIC0wLDAgLiog
QEAvKSAmJiAhZXhpc3RzKCRjb3BpZWRGaWxlc3skZnVsbFBhdGh9KTsKICAgICAkZGVsZXRpb24g
PSAxIGlmICRwYXRjaCA9fiAvXG5AQCAuKiBcKzAsMCBAQC87CiAgICAgJGlzQmluYXJ5ID0gMSBp
ZiAkcGF0Y2ggPX4gL1xuQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGVcLi87CiAgICAgJGlzR2l0QmluYXJ5ID0gMSBpZiAkcGF0Y2ggPX4gL1xuR0lUIGJpbmFyeSBw
YXRjaFxuLzsKKyAgICAkaXNTVk5Qcm9wZXJ0eUNoYW5nZSA9IGlzU1ZOUHJvcGVydHkoJHBhdGNo
KTsKIAotICAgIGlmICghJGFkZGl0aW9uICYmICEkZGVsZXRpb24gJiYgISRpc0JpbmFyeSAmJiAh
JGlzR2l0QmluYXJ5KSB7CisgICAgaWYgKCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlz
QmluYXJ5ICYmICEkaXNHaXRCaW5hcnkgJiYgISRpc1NWTlByb3BlcnR5Q2hhbmdlKSB7CiAgICAg
ICAgICMgU3RhbmRhcmQgcGF0Y2gsIHBhdGNoIHRvb2wgY2FuIGhhbmRsZSB0aGlzLgogICAgICAg
ICBpZiAoYmFzZW5hbWUoJGZ1bGxQYXRoKSBlcSAiQ2hhbmdlTG9nIikgewogICAgICAgICAgICAg
bXkgJGNoYW5nZUxvZ0RvdE9yaWdFeGlzdGVkID0gLWYgIiR7ZnVsbFBhdGh9Lm9yaWciOwpAQCAt
MzcyLDYgKzM4NSw5IEBAIHN1YiBwYXRjaCgkKQogICAgICAgICAgICAgIyBEZWxldGlvbgogICAg
ICAgICAgICAgYXBwbHlQYXRjaCgkcGF0Y2gsICRmdWxsUGF0aCwgWyItLWZvcmNlIl0pOwogICAg
ICAgICAgICAgc2NtUmVtb3ZlKCRmdWxsUGF0aCk7CisgICAgICAgIH0gZWxzaWYgKCRpc1NWTlBy
b3BlcnR5Q2hhbmdlKSB7CisgICAgICAgICAgICAjIENoYW5nZSBleGVjdXRhYmxlIGJpdC4KKyAg
ICAgICAgICAgIHRvZ2dsZVByb3BlcnR5Q2hhbmdlKCRwYXRjaCwgJGZ1bGxQYXRoKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgQWRkaXRpb24KICAgICAgICAgICAgIHJlbmFtZSgk
ZnVsbFBhdGgsICIkZnVsbFBhdGgub3JpZyIpIGlmIC1lICRmdWxsUGF0aDsKSW5kZXg6IFdlYktp
dFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2Ny
aXB0cy9zdm4tdW5hcHBseQkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJLaXRUb29scy9TY3JpcHRz
L3N2bi11bmFwcGx5CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAjCiAjIE1pc3Np
bmcgZmVhdHVyZXM6CiAjCi0jICAgSGFuZGxlIHByb3BlcnR5IGNoYW5nZXMuCisjICAgSGFuZGxl
IHByb3BlcnR5IGNoYW5nZXMgb3RoZXIgdGhhbiB0aGUgZXhlY3V0YWJsZSBiaXQuCiAjICAgSGFu
ZGxlIGNvcGllZCBhbmQgbW92ZWQgZGlyZWN0b3JpZXMgKHdvdWxkIHJlcXVpcmUgcGF0Y2hlcyBt
YWRlIGJ5IHN2bi1jcmVhdGUtcGF0Y2gpLgogIyAgIFVzZSB2ZXJzaW9uIG51bWJlcnMgaW4gdGhl
IHBhdGNoIGZpbGUgYW5kIGRvIGEgMy13YXkgbWVyZ2UuCiAjICAgV2hlbiByZXZlcnNpbmcgYW4g
YWRkaXRpb24sIGNoZWNrIHRoYXQgdGhlIGZpbGUgbWF0Y2hlcyB3aGF0J3MgYmVpbmcgcmVtb3Zl
ZC4KQEAgLTEwMSw2ICsxMDEsOCBAQCBteSAkY29waWVkRnJvbVBhdGg7CiBteSAkZmlsdGVyOwog
bXkgJGluZGV4UGF0aDsKIG15ICRwYXRjaDsKK215ICRwcm9wZXJ0eUNoYW5nZVBhdGg7CitteSAk
aXNHaXRGb3JtYXR0ZWRQYXRjaCA9IDA7CiB3aGlsZSAoPD4pIHsKICAgICBzLyhbXG5ccl0rKSQv
L21nOwogICAgIG15ICRlb2wgPSAkMTsKQEAgLTEwOCwyMSArMTEwLDI4IEBAIHdoaWxlICg8Pikg
ewogICAgICAgICAkZmlsdGVyID0gXCZnaXRkaWZmMnN2bmRpZmY7CiAgICAgfQogICAgICRfID0g
JiRmaWx0ZXIoJF8pIGlmICRmaWx0ZXI7Ci0gICAgaWYgKC9eSW5kZXg6ICguKykvKSB7Ci0gICAg
ICAgICRpbmRleFBhdGggPSAkMTsKLSAgICAgICAgaWYgKCRwYXRjaCkgewotICAgICAgICAgICAg
aWYgKCRjb3BpZWRGcm9tUGF0aCkgewotICAgICAgICAgICAgICAgIHB1c2ggQGNvcGllZEZpbGVz
LCAkcGF0Y2g7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBhdGNoKCRw
YXRjaCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkY29waWVkRnJvbVBhdGggPSAiIjsK
LSAgICAgICAgICAgICRwYXRjaCA9ICIiOworICAgIG15ICRpbmRleFBhdGggPSBwYXJzZVN0YXJ0
T2ZQYXRjaCgkXyk7CisgICAgbXkgJHByb3BlcnR5Q2hhbmdlUGF0aCA9IHBhcnNlUHJvcGVydHlD
aGFuZ2UoJF8pOworICAgIGlmICgkaW5kZXhQYXRoIHx8ICRwcm9wZXJ0eUNoYW5nZVBhdGgpIHsK
KyAgICAgICAgaWYgKCRjb3BpZWRGcm9tUGF0aCkgeworICAgICAgICAgICAgcHVzaCBAY29waWVk
RmlsZXMsICRwYXRjaDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhdGNoKCRwYXRj
aCk7CiAgICAgICAgIH0KKyAgICAgICAgJGNvcGllZEZyb21QYXRoID0gIiI7CisgICAgICAgICRw
YXRjaCA9ICIiOwogICAgIH0KICAgICBpZiAoJGluZGV4UGF0aCkgewogICAgICAgICAjIEZpeCBw
YXRocyBvbiBkaWZmLCAtLS0sIGFuZCArKysgbGluZXMgdG8gbWF0Y2ggcHJlY2VkaW5nIEluZGV4
OiBsaW5lLgogICAgICAgICBzL14tLS0gXFMrLy0tLSAkaW5kZXhQYXRoLzsKKworICAgICAgICBp
ZiAoJGlzR2l0Rm9ybWF0dGVkUGF0Y2ggJiYgKG15ICRmaWxlTW9kZSA9IHBhcnNlR2l0RmlsZU1v
ZGUoJF8pKSkgeworICAgICAgICAgICAgIyBUaGUgZ2l0ZGlmZjJzdm5kaWZmIGZpbHRlciBvbmx5
IG9wZXJhdGVzIG9uIGEgc2luZ2xlLCBidXQgdGhlIGVxdWl2YWxlbnQKKyAgICAgICAgICAgICMg
cHJvcGVydHkgY2hhbmdlIGVudHJ5IGluIFNWTiBzcGFucyBtdWx0aXBsZSBsaW5lcyB3aGljaCB3
ZSBuZWVkIHRvIHBhcnNlLgorICAgICAgICAgICAgYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5n
ZVRvUGF0Y2goJGluZGV4UGF0aCwgJGZpbGVNb2RlLCBcJHBhdGNoKTsKKyAgICAgICAgICAgIG5l
eHQ7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoL14tLS0gLitcKGZyb20gKFxTKyk6XGQrXCkk
LykgewogICAgICAgICAgICAgJGNvcGllZEZyb21QYXRoID0gJDE7CiAgICAgICAgIH0KQEAgLTEz
MCw2ICsxMzksNyBAQCB3aGlsZSAoPD4pIHsKICAgICAgICAgICAgICRpbmRleFBhdGggPSAiIjsK
ICAgICAgICAgfQogICAgIH0KKyAgICAkcHJvcGVydHlDaGFuZ2VQYXRoID0gIiIgaWYgaXNFbmRP
ZlByb3BlcnR5Q2hhbmdlKCRfLCAkcHJvcGVydHlDaGFuZ2VQYXRoKTsKICAgICAkcGF0Y2ggLj0g
JF87CiAgICAgJHBhdGNoIC49ICRlb2w7CiB9CkBAIC0xNjgsMjMgKzE3OCwyNSBAQCBzdWIgcGF0
Y2goJCkKICAgICBteSAoJHBhdGNoKSA9IEBfOwogICAgIHJldHVybiBpZiAhJHBhdGNoOwogCi0g
ICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8KSB7CisgICAgbXkgJGZ1
bGxQYXRoOworICAgIHVubGVzcyAoJGZ1bGxQYXRoID0gcGFyc2VTdGFydE9mUGF0Y2goJHBhdGNo
KSB8fCBwYXJzZVByb3BlcnR5Q2hhbmdlKCRwYXRjaCkpIHsKICAgICAgICAgbXkgJHNlcGFyYXRv
ciA9ICctJyB4IDY3OwotICAgICAgICB3YXJuICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBpbjpc
biRzZXBhcmF0b3JcbiRwYXRjaFxuJHNlcGFyYXRvclxuIjsKKyAgICAgICAgd2FybiAiRmFpbGVk
IHRvIGZpbmQgJ0luZGV4Oicgb3IgJ1Byb3BlcnR5IGNoYW5nZXMgb246JyBpbjpcbiRzZXBhcmF0
b3JcbiRwYXRjaFxuJHNlcGFyYXRvclxuIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBt
eSAkZnVsbFBhdGggPSAkMTsKICAgICAkZGlyZWN0b3JpZXNUb0NoZWNre2Rpcm5hbWUoJGZ1bGxQ
YXRoKX0gPSAxOwogCiAgICAgbXkgJGRlbGV0aW9uID0gMDsKICAgICBteSAkYWRkaXRpb24gPSAw
OwogICAgIG15ICRpc0JpbmFyeSA9IDA7CisgICAgbXkgJGlzU1ZOUHJvcGVydHlDaGFuZ2UgPSAw
OwogCiAgICAgJGFkZGl0aW9uID0gMSBpZiAoJHBhdGNoID1+IC9cbi0tLSAuK1wocmV2aXNpb24g
MFwpXG4vIHx8ICRwYXRjaCA9fiAvXG5AQCAtMCwwIC4qIEBALyk7CiAgICAgJGRlbGV0aW9uID0g
MSBpZiAkcGF0Y2ggPX4gL1xuQEAgLiogXCswLDAgQEAvOwogICAgICRpc0JpbmFyeSA9IDEgaWYg
JHBhdGNoID1+IC9cbkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBl
XC4vOworICAgICRpc1NWTlByb3BlcnR5Q2hhbmdlID0gaXNTVk5Qcm9wZXJ0eSgkcGF0Y2gpOwog
Ci0gICAgaWYgKCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5KSB7CisgICAg
aWYgKCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNTVk5Qcm9w
ZXJ0eUNoYW5nZSkgewogICAgICAgICAjIFN0YW5kYXJkIHBhdGNoLCBwYXRjaCB0b29sIGNhbiBo
YW5kbGUgdGhpcy4KICAgICAgICAgaWYgKGJhc2VuYW1lKCRmdWxsUGF0aCkgZXEgIkNoYW5nZUxv
ZyIpIHsKICAgICAgICAgICAgIG15ICRjaGFuZ2VMb2dEb3RPcmlnRXhpc3RlZCA9IC1mICIke2Z1
bGxQYXRofS5vcmlnIjsKQEAgLTIyNiw2ICsyMzgsOSBAQCBzdWIgcGF0Y2goJCkKIAogICAgICAg
ICAgICAgIyBTaG93IHN0YXR1cyBpZiB0aGUgZmlsZSBpcyBtb2RpZmVkCiAgICAgICAgICAgICBz
eXN0ZW0gInN2biIsICJzdGF0IiwgJGZ1bGxQYXRoOworICAgICAgICB9IGVsc2lmICgkaXNTVk5Q
cm9wZXJ0eUNoYW5nZSkgeworICAgICAgICAgICAgIyBSZXZlcnNlIGNoYW5nZSBvZiBleGVjdXRh
YmxlIGJpdC4KKyAgICAgICAgICAgIHRvZ2dsZVByb3BlcnR5Q2hhbmdlKCRwYXRjaCwgJGZ1bGxQ
YXRoLCAxKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgUmV2ZXJzZSBhZGRpdGlv
bgogICAgICAgICAgICAgdW5hcHBseVBhdGNoKCRwYXRjaCwgJGZ1bGxQYXRoLCBbIi0tZm9yY2Ui
XSk7CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRl
c3QvYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5nZVRvUGF0Y2gucGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2FwcGVuZFNW
TkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoLnBsCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFi
bGVCaXRDaGFuZ2VUb1BhdGNoLnBsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisjIS91
c3IvYmluL3BlcmwKKyMKKyMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBpbiBNb3Rpb24gTGltaXRl
ZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBSZXNlYXJjaCBpbiBNb3Rpb24gTGltaXRlZCBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjIFVuaXQgdGVzdHMgb2YgVkNTVXRpbHM6OmFwcGVuZFNWTkV4ZWN1dGFibGVC
aXRDaGFuZ2VUb1BhdGNoKCkuCisKK3VzZSBUZXN0OjpTaW1wbGUgdGVzdHMgPT4gMjsKK3VzZSBW
Q1NVdGlsczsKKworbXkgJHRpdGxlOworbXkgJHBhdGNoOworbXkgJGV4cGVjdGVkUGF0Y2g7CisK
KyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJhcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRj
aDogQWRkIGV4ZWN1dGFibGUgYml0IHRvIGZpbGUuIjsKKworJGV4cGVjdGVkUGF0Y2ggPSA8PCdF
TkQnOworUHJvcGVydHkgY2hhbmdlcyBvbjogZmlsZV90b19wYXRjaC50eHQKK19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
K0FkZGVkOiBzdm46ZXhlY3V0YWJsZQorICAgKyAqCitFTkQKKworJHBhdGNoID0gIiI7CithcHBl
bmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaCgiZmlsZV90b19wYXRjaC50eHQiLCAiMTAw
NzU1IiwgXCRwYXRjaCk7CisKK29rKCRwYXRjaCBlcSAkZXhwZWN0ZWRQYXRjaCwgJHRpdGxlKTsK
KworIyBOZXcgdGVzdAorJHRpdGxlID0gImFwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1Bh
dGNoOiBSZW1vdmUgZXhlY3V0YWJsZSBiaXQgZnJvbSBmaWxlLiI7CisKKyRleHBlY3RlZFBhdGNo
ID0gPDwnRU5EJzsKK1Byb3BlcnR5IGNoYW5nZXMgb246IGZpbGVfdG9fcGF0Y2gudHh0CitfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCitEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQorICAgKyAqCitFTkQKKworJHBhdGNoID0g
IiI7CithcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaCgiZmlsZV90b19wYXRjaC50
eHQiLCAiMTAwNjQ0IiwgXCRwYXRjaCk7CisKK29rKCRwYXRjaCBlcSAkZXhwZWN0ZWRQYXRjaCwg
JHRpdGxlKTsKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191
bml0dGVzdC9wYXJzZUdpdEZpbGVNb2RlLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZUdpdEZpbGVNb2RlLnBsCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3Vu
aXR0ZXN0L3BhcnNlR2l0RmlsZU1vZGUucGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAK
KyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIGluIE1vdGlvbiBM
aW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyMgVW5pdCB0ZXN0cyBvZiBWQ1NVdGlsczo6cGFyc2VHaXRGaWxlTW9k
ZSgpLgorCit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDY7Cit1c2UgVkNTVXRpbHM7CisKK215
ICR0aXRsZTsKK215ICRwYXRjaExpbmU7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdp
dEZpbGVNb2RlOiBQYXJzZSBhIHZhbGlkIEdpdCBmaWxlIG1vZGUgZm9yIG5ldyBmaWxlLiI7CisK
KyRwYXRjaExpbmUgPSAibmV3IGZpbGUgbW9kZSAxMDA3NTUiOworb2socGFyc2VHaXRGaWxlTW9k
ZSgkcGF0Y2hMaW5lKSA9PSAxMDA3NTUsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9
ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhIHZhbGlkIEdpdCBmaWxlIG1vZGUgZm9yIGFuIGV4
aXN0aW5nIGZpbGUuIjsKKworJHBhdGNoTGluZSA9ICJuZXcgbW9kZSAxMDA3NTUiOworb2socGFy
c2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSA9PSAxMDA3NTUsICR0aXRsZSk7CisKKyMgTmV3IHRl
c3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhbiBpbnZhbGlkIEdpdCBmaWxl
IG1vZGUgZm9yIG5ldyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IGZpbGUgbW9kZSBkdW1t
eSI7CitvayghcGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSwgJHRpdGxlKTsKKworIyBOZXcg
dGVzdAorJHRpdGxlID0gInBhcnNlR2l0RmlsZU1vZGU6IFBhcnNlIGFuIGludmFsaWQgR2l0IGZp
bGUgbW9kZSBmb3IgYW4gZXhpc3RpbmcgZmlsZS4iOworCiskcGF0Y2hMaW5lID0gIm5ldyBtb2Rl
IGR1bW15IjsKK29rKCFwYXJzZUdpdEZpbGVNb2RlKCRwYXRjaExpbmUpLCAkdGl0bGUpOworCisj
IE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VHaXRGaWxlTW9kZTogRW5zdXJlIHRoYXQgYSBudW1l
cmljIGZpbGUgbW9kZSBsb25nZXIgdGhhbiA2IGRpZ2l0cyBpcyBpbnZhbGlkIGZvciBhIG5ldyBm
aWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IGZpbGUgbW9kZSAxMDA3NTU5IjsKK29rKCFwYXJz
ZUdpdEZpbGVNb2RlKCRwYXRjaExpbmUpLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUg
PSAicGFyc2VHaXRGaWxlTW9kZTogRW5zdXJlIHRoYXQgYSBudW1lcmljIGZpbGUgbW9kZSBsb25n
ZXIgdGhhbiA2IGRpZ2l0cyBpcyBpbnZhbGlkIGZvciBhbiBleGlzdGluZyBmaWxlLiI7CisKKyRw
YXRjaExpbmUgPSAibmV3IG1vZGUgMTAwNzU1OSI7CitvayghcGFyc2VHaXRGaWxlTW9kZSgkcGF0
Y2hMaW5lKSwgJHRpdGxlKTsKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9W
Q1NVdGlsc191bml0dGVzdC9wYXJzZVN0YXJ0T2ZQYXRjaE9yUHJvcGVydHlDaGFuZ2VBbmRFbmRP
ZlByb3BlcnR5Q2hhbmdlLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZVN0YXJ0T2ZQYXRjaE9yUHJvcGVydHlDaGFu
Z2VBbmRFbmRPZlByb3BlcnR5Q2hhbmdlLnBsCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlU3RhcnRPZlBhdGNoT3JQ
cm9wZXJ0eUNoYW5nZUFuZEVuZE9mUHJvcGVydHlDaGFuZ2UucGwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjEgQEAKKyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IGluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVW5pdCB0ZXN0cyBvZiBWQ1NVdGlsczo6cGFy
c2VTdGFydE9mUGF0Y2goKSBhbmQgVkNTVXRpbHM6OnBhcnNlUHJvcGVydHlDaGFuZ2UoKQorIyBh
bmQgVkNTVXRpbHM6OmlzRW5kT2ZQcm9wZXJ0eUNoYW5nZS4KKwordXNlIFRlc3Q6OlNpbXBsZSB0
ZXN0cyA9PiA2OwordXNlIFZDU1V0aWxzOworCitteSAkdGl0bGU7CisKKyMgTmV3IHRlc3QKKyR0
aXRsZSA9ICJwYXJzZVN0YXJ0T2ZQYXRjaDogVGVzdCBzdGFydCBvZiBTVk4gcGF0Y2guIjsKK29r
KHBhcnNlU3RhcnRPZlBhdGNoKCJJbmRleDogZmlsZV90b19wYXRjaC50eHRcbiIpIGVxICJmaWxl
X3RvX3BhdGNoLnR4dCIsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZVBy
b3BlcnR5Q2hhbmdlOiBUZXN0IHN0YXJ0IG9mIFNWTiBwcm9wZXJ0eSBjaGFuZ2UgZW50cnkuIjsK
K29rKHBhcnNlUHJvcGVydHlDaGFuZ2UoIlByb3BlcnR5IGNoYW5nZXMgb246IGZpbGVfdG9fcGF0
Y2gudHh0XHJcbiIpIGVxICJmaWxlX3RvX3BhdGNoLnR4dCIsICR0aXRsZSk7CisKKyMgTmV3IHRl
c3QKKyR0aXRsZSA9ICJpc0VuZE9mUHJvcGVydHlDaGFuZ2U6IFRlc3QgZW5kIG9mIFNWTiBwcm9w
ZXJ0eSBjaGFuZ2UgZW50cnkgYWRkaXRpb24uIjsKK29rKGlzRW5kT2ZQcm9wZXJ0eUNoYW5nZSgi
ICAgKyAqXG4iLCAiZmlsZV90b19wYXRjaC50eHQiKSwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAor
JHRpdGxlID0gImlzRW5kT2ZQcm9wZXJ0eUNoYW5nZTogVGVzdCBlbmQgb2YgU1ZOIHByb3BlcnR5
IGNoYW5nZSBlbnRyeSBkZWxldGlvbi4iOworb2soaXNFbmRPZlByb3BlcnR5Q2hhbmdlKCIgICAt
ICpcbiIsICJmaWxlX3RvX3BhdGNoLnR4dCIpLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0
bGUgPSAiaXNFbmRPZlByb3BlcnR5Q2hhbmdlOiBUZXN0IGVuZCBvZiBTVk4gcHJvcGVydHkgY2hh
bmdlIGVudHJ5IGFkZGl0aW9uIHdpdGggaW52YWxpZCBwcm9wZXJ0eSBjaGFuZ2UgcGF0aC4iOwor
b2soIWlzRW5kT2ZQcm9wZXJ0eUNoYW5nZSgiICAgKyAqXG4iLCAwKSwgJHRpdGxlKTsKKworIyBO
ZXcgdGVzdAorJHRpdGxlID0gImlzRW5kT2ZQcm9wZXJ0eUNoYW5nZTogVGVzdCBlbmQgb2YgU1ZO
IHByb3BlcnR5IGNoYW5nZSBlbnRyeSBkZWxldGlvbiB3aXRoIGludmFsaWQgcHJvcGVydHkgY2hh
bmdlIHBhdGguIjsKK29rKCFpc0VuZE9mUHJvcGVydHlDaGFuZ2UoIiAgIC0gKlxuIiwgMCksICR0
aXRsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53072</attachid>
            <date>2010-04-10 21:35:32 -0700</date>
            <delta_ts>2010-04-11 22:32:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-27204-20100410213530.patch</filename>
            <type>text/plain</type>
            <size>23857</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDQtMTAgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzIwNAorCisgICAg
ICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgZXhlY3V0YWJsZSBiaXQgb2Yg
YSBmaWxlLgorICAgICAgICBUaGUgZXhlY3V0YWJsZSBiaXQgaXMgYW1vbmcgdGhlIG1vc3QgY2hh
bmdlZCBmaWxlIHByb3BlcnRpZXMuCisgICAgICAgIEZ1dHVyZSBzdXBwb3J0IGNhbiBpbmNsdWRl
IG90aGVyIHByb3BlcnR5IGNoYW5nZXMuCisKKyAgICAgICAgQ3VycmVudGx5LCBpZiBhIHBhdGNo
IGNoYW5nZXMgdGhlIGV4ZWN1dGFibGUgYml0IG9mIGEgZmlsZQorICAgICAgICBpdCBpcyBub3Qg
cmVzcGVjdGVkIGJ5IHN2bi1hcHBseSBvciBzdm4tdW5hcHBseS4gU2luY2UgdGhlCisgICAgICAg
IGNvbW1pdC1xdWV1ZSBib3QgdXNlcyB0aGVzZSB0b29scyBhcyBwYXJ0IG9mIGl0cyB3b3JrZmxv
dywKKyAgICAgICAgc3VjaCBwYXRjaGVzIGNhbm5vdCBiZSBjb21taXR0ZWQgYnkgaXQuIFRoYXQg
aXMsIHN1Y2ggcGF0Y2hlcworICAgICAgICBuZWVkIHRvIGJlIGNvbW1pdHRlZCBieSBoYW5kLiBJ
bnN0ZWFkLCB3ZSBzaG91bGQgYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIHRoZSBleGVjdXRhYmxl
IGJpdCBzbyB0aGF0IHN1Y2ggcGF0Y2hlcyBjYW4gYmUgY29tbWl0dGVkCisgICAgICAgIGJ5IHRo
ZSBjb21taXQtcXVldWUgYm90LgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbTogQWxz
byBjaGFuZ2UgcmVmZXJlbmNlIHRvIEFwcGxlIENvbXB1dGVyLCBJbmMuCisgICAgICAgIGluIGNv
cHlyaWdodCB0byBBcHBsZSwgSW5jLgorICAgICAgICAqIFNjcmlwdHMvc3ZuLWFwcGx5OgorICAg
ICAgICAqIFNjcmlwdHMvc3ZuLXVuYXBwbHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoLnBs
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3Qv
cGFyc2VHaXRGaWxlTW9kZS5wbDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlU3RhcnRPZlBhdGNoT3JQcm9wZXJ0eUNoYW5nZUFuZEVu
ZE9mUHJvcGVydHlDaGFuZ2UucGw6IEFkZGVkLgorCiAyMDEwLTA0LTEwICBSb2JlcnQgSG9nYW4g
IDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGZpeCB0byByZWdyZXNz
aW9ucyBpbiByNTc0MTYuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHJldmlzaW9uIDU3
NDE4KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBDaHJp
cyBKZXJkb25layAoY2hyaXMuamVyZG9uZWtAZ21haWwuY29tKQorIyBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwLDcgKzExLDcgQEAKICMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CiAjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCiAjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMgMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgogIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAogIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKICMKQEAgLTQzLDYgKzQ0LDcg
QEAgQkVHSU4gewogICAgICRWRVJTSU9OICAgICA9IDEuMDA7CiAgICAgQElTQSAgICAgICAgID0g
cXcoRXhwb3J0ZXIpOwogICAgIEBFWFBPUlQgICAgICA9IHF3KAorICAgICAgICAmYXBwZW5kU1ZO
RXhlY3V0YWJsZUJpdENoYW5nZVRvUGF0Y2gKICAgICAgICAgJmNhbm9uaWNhbGl6ZVBhdGgKICAg
ICAgICAgJmNoYW5nZUxvZ0VtYWlsQWRkcmVzcwogICAgICAgICAmY2hhbmdlTG9nTmFtZQpAQCAt
NTQsMjAgKzU2LDI4IEBAIEJFR0lOIHsKICAgICAgICAgJmZpeENoYW5nZUxvZ1BhdGNoCiAgICAg
ICAgICZnaXRCcmFuY2gKICAgICAgICAgJmdpdGRpZmYyc3ZuZGlmZgorICAgICAgICAmaXNFbmRP
ZlByb3BlcnR5Q2hhbmdlCiAgICAgICAgICZpc0dpdAogICAgICAgICAmaXNHaXRCcmFuY2hCdWls
ZAogICAgICAgICAmaXNHaXREaXJlY3RvcnkKICAgICAgICAgJmlzU1ZOCiAgICAgICAgICZpc1NW
TkRpcmVjdG9yeQorICAgICAgICAmaXNTVk5Qcm9wZXJ0eQogICAgICAgICAmaXNTVk5WZXJzaW9u
MTZPck5ld2VyCiAgICAgICAgICZtYWtlRmlsZVBhdGhSZWxhdGl2ZQogICAgICAgICAmbWVyZ2VD
aGFuZ2VMb2dzCiAgICAgICAgICZub3JtYWxpemVQYXRoCisgICAgICAgICZwYXJzZUdpdEZpbGVN
b2RlCiAgICAgICAgICZwYXJzZVBhdGNoCisgICAgICAgICZwYXJzZVByb3BlcnR5Q2hhbmdlCisg
ICAgICAgICZwYXJzZVN0YXJ0T2ZQYXRjaAogICAgICAgICAmcGF0aFJlbGF0aXZlVG9TVk5SZXBv
c2l0b3J5Um9vdEZvclBhdGgKICAgICAgICAgJnJ1blBhdGNoQ29tbWFuZAorICAgICAgICAmc2Nt
QWRkRXhlY3V0YWJsZVByb3BlcnR5CisgICAgICAgICZzY21SZW1vdmVFeGVjdXRhYmxlUHJvcGVy
dHkKICAgICAgICAgJnN2blJldmlzaW9uRm9yRGlyZWN0b3J5CiAgICAgICAgICZzdm5TdGF0dXMK
KyAgICAgICAgJnRvZ2dsZVByb3BlcnR5Q2hhbmdlCiAgICAgKTsKICAgICAlRVhQT1JUX1RBR1Mg
PSAoICk7CiAgICAgQEVYUE9SVF9PSyAgID0gKCk7CkBAIC0xMTAsNiArMTIwLDkxIEBAIHN1YiBp
c0dpdCgpCiAgICAgcmV0dXJuICRpc0dpdDsKIH0KIAorc3ViIHBhcnNlR2l0RmlsZU1vZGUoJCkK
K3sKKyAgICBteSAoJHBhdGNoKSA9IEBfOworICAgIHJldHVybiAoJHBhdGNoID1+IC9ebmV3IChm
aWxlICk/bW9kZSAoWzAtOV17Nn0pJC8pID8gJDIgOiAwOworfQorCitzdWIgaXNTVk5Qcm9wZXJ0
eSgkKQoreworICAgIG15ICgkcGF0Y2gpID0gQF87CisgICAgIyBGSVhNRTogV2Ugc2hvdWxkIG1h
a2UgdGhpcyBtb3JlIGdlbmVyaWMgYW5kIHN1cHBvcnQgYWRkaXRpb25hbCBTVk4gcHJvcGVydGll
cy4KKyAgICByZXR1cm4gJHBhdGNoID1+IC9cbihBZGRlZHxEZWxldGVkKTogc3ZuOmV4ZWN1dGFi
bGVcbi87Cit9CisKK3N1YiBwYXJzZVN0YXJ0T2ZQYXRjaCgkKQoreworICAgIG15ICgkcGF0Y2gp
ID0gQF87CisgICAgcmV0dXJuICQxIGlmICgkcGF0Y2ggPX4gL15JbmRleDogKFteXHJcbl0rKS8p
OworICAgIHJldHVybiAwOworfQorCitzdWIgcGFyc2VQcm9wZXJ0eUNoYW5nZSgkKQoreworICAg
IG15ICgkcGF0Y2gpID0gQF87CisgICAgcmV0dXJuICQxIGlmICgkcGF0Y2ggPX4gL15Qcm9wZXJ0
eSBjaGFuZ2VzIG9uOiAoW15cclxuXSspLyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBpc0Vu
ZE9mUHJvcGVydHlDaGFuZ2UoJCQpCit7CisgICAgbXkgKCRwYXRjaCwgJHByb3BlcnR5Q2hhbmdl
UGF0aCkgPSBAXzsKKyAgICByZXR1cm4gKCRwcm9wZXJ0eUNoYW5nZVBhdGggJiYgJHBhdGNoID1+
IC9eICAgKFwrfC0pIFwqJC8pOworfQorCitzdWIgdG9nZ2xlUHJvcGVydHlDaGFuZ2UKK3sKKyAg
ICBteSAoJHBhdGNoLCAkZnVsbFBhdGgsICRzaG91bGRVbmFwcGx5KSA9IEBfOworICAgICMgQ2hh
bmdlIGV4ZWN1dGFibGUgYml0LgorICAgIGlmICgkcGF0Y2ggPX4gL0FkZGVkOiBzdm46ZXhlY3V0
YWJsZVxuLykgeworICAgICAgICBpZiAoIWRlZmluZWQoJHNob3VsZFVuYXBwbHkpKSB7CisgICAg
ICAgICAgICBzY21BZGRFeGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHNjbVJlbW92ZUV4ZWN1dGFibGVQcm9wZXJ0eSgkZnVsbFBhdGgp
OworICAgICAgICB9CisgICAgfSBlbHNpZiAoJHBhdGNoID1+IC9EZWxldGVkOiBzdm46ZXhlY3V0
YWJsZVxuLykgeworICAgICAgICBpZiAoIWRlZmluZWQoJHNob3VsZFVuYXBwbHkpKSB7CisgICAg
ICAgICAgICBzY21SZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHNjbUFkZEV4ZWN1dGFibGVQcm9wZXJ0eSgkZnVsbFBhdGgp
OworICAgICAgICB9CisgICAgfQorfQorCitzdWIgYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5n
ZVRvUGF0Y2goJCQkKQoreworICAgIG15ICgkaW5kZXhQYXRoLCAkZmlsZU1vZGUsICRwYXRjaFJl
ZikgPSBAXzsKKyAgICAjIE5vdGUsIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBlaXRoZXIgdGhl
IGRpdmlkZXIgbGluZSBvciB0aGUgIiAgICsgKiIgbGluZSwKKyAgICAjIGJ1dCB0aGVzZSBhcmUg
bGVmdCBpbiBzbyBhcyB0byBwcm9kdWNlIGEgcHJvcGVyIFNWTiBwcm9wZXJ0eSBjaGFuZ2UgZW50
cnkuCisgICAgJCRwYXRjaFJlZiAuPSAiUHJvcGVydHkgY2hhbmdlcyBvbjogJGluZGV4UGF0aFxu
IjsKKyAgICAkJHBhdGNoUmVmIC49ICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXG4iOworICAgICMgRklYTUU6IFRoZXNl
IGZpbGUgbW9kZXMgYXJlIGZyYWdpbGUgYW5kIGJhc2VkIG9uIG9ic2VydmF0aW9uLgorICAgICQk
cGF0Y2hSZWYgLj0gIkFkZGVkOiBzdm46ZXhlY3V0YWJsZVxuIiBpZiAkZmlsZU1vZGUgZXEgIjEw
MDc1NSI7CisgICAgJCRwYXRjaFJlZiAuPSAiRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGVcbiIgaWYg
JGZpbGVNb2RlIGVxICIxMDA2NDQiOworICAgICQkcGF0Y2hSZWYgLj0gIiAgICsgKlxuIjsKK30K
Kworc3ViIHNjbUFkZEV4ZWN1dGFibGVQcm9wZXJ0eSgkKQoreworICAgIG15ICgkcGF0aCkgPSBA
XzsKKyAgICBpZiAoaXNTVk4oKSkgeworICAgICAgICBzeXN0ZW0oInN2biIsICJwcm9wc2V0Iiwg
InN2bjpleGVjdXRhYmxlIiwgIm9uIiwgJHBhdGgpID09IDAgb3IgZGllICJGYWlsZWQgdG8gcnVu
ICdzdm4gcHJvcHNldCBzdm46ZXhlY3V0YWJsZSBvbiAkcGF0aCcuIjsKKyAgICB9IGVsc2lmIChp
c0dpdCgpKSB7CisgICAgICAgIGNobW9kKDA3NTUsICRwYXRoKTsKKyAgICB9Cit9CisKK3N1YiBz
Y21SZW1vdmVFeGVjdXRhYmxlUHJvcGVydHkoJCkKK3sKKyAgICBteSAoJHBhdGgpID0gQF87Cisg
ICAgaWYgKGlzU1ZOKCkpIHsKKyAgICAgICAgc3lzdGVtKCJzdm4iLCAicHJvcGRlbCIsICJzdm46
ZXhlY3V0YWJsZSIsICRwYXRoKSA9PSAwIG9yIGRpZSAiRmFpbGVkIHRvIHJ1biAnc3ZuIHByb3Bk
ZWwgc3ZuOmV4ZWN1dGFibGUgJHBhdGgnLiI7CisgICAgfSBlbHNpZiAoaXNHaXQoKSkgeworICAg
ICAgICBjaG1vZCgwNjY0LCAkcGF0aCk7CisgICAgfQorfQorCiBzdWIgZ2l0QnJhbmNoKCkKIHsK
ICAgICB1bmxlc3MgKGRlZmluZWQgJGdpdEJyYW5jaCkgewpJbmRleDogV2ViS2l0VG9vbHMvU2Ny
aXB0cy9zdm4tYXBwbHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBw
bHkJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAKICMKICMgTWlzc2luZyBmZWF0dXJlczoKICMK
LSMgICBIYW5kbGUgcHJvcGVydHkgY2hhbmdlcy4KKyMgICBIYW5kbGUgcHJvcGVydHkgY2hhbmdl
cyBvdGhlciB0aGFuIHRoZSBleGVjdXRhYmxlIGJpdC4KICMgICBIYW5kbGUgY29waWVkIGFuZCBt
b3ZlZCBkaXJlY3RvcmllcyAod291bGQgcmVxdWlyZSBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0
ZS1wYXRjaCkuCiAjICAgV2hlbiBkb2luZyBhIHJlbW92YWwsIGNoZWNrIHRoYXQgb2xkIGZpbGUg
bWF0Y2hlcyB3aGF0J3MgYmVpbmcgcmVtb3ZlZC4KICMgICBOb3RpY2UgYSBwYXRjaCB0aGF0J3Mg
YmVpbmcgYXBwbGllZCBhdCB0aGUgIndyb25nIGxldmVsIiBhbmQgbWFrZSBpdCB3b3JrIGFueXdh
eS4KQEAgLTEzMCwyNyArMTMwLDM3IEBAIG15ICRjb3BpZWRGcm9tUGF0aDsKIG15ICRmaWx0ZXI7
CiBteSAkaW5kZXhQYXRoOwogbXkgJHBhdGNoOworbXkgJHByb3BlcnR5Q2hhbmdlUGF0aDsKK215
ICRpc0dpdEZvcm1hdHRlZFBhdGNoID0gMDsKIHdoaWxlICg8PikgewogICAgIHMvKFtcblxyXSsp
JC8vbWc7CiAgICAgbXkgJGVvbCA9ICQxOwogICAgIGlmICghZGVmaW5lZCgkaW5kZXhQYXRoKSAm
JiBtI15kaWZmIC0tZ2l0IFx3LyMpIHsKICAgICAgICAgJGZpbHRlciA9IFwmZ2l0ZGlmZjJzdm5k
aWZmOworICAgICAgICAkaXNHaXRGb3JtYXR0ZWRQYXRjaCA9IDE7CiAgICAgfQogICAgICRfID0g
JiRmaWx0ZXIoJF8pIGlmICRmaWx0ZXI7Ci0gICAgaWYgKC9eSW5kZXg6ICguKykvKSB7Ci0gICAg
ICAgICRpbmRleFBhdGggPSAkMTsKLSAgICAgICAgaWYgKCRwYXRjaCkgewotICAgICAgICAgICAg
aWYgKCEkY29waWVkRnJvbVBhdGgpIHsKLSAgICAgICAgICAgICAgICBwdXNoIEBwYXRjaGVzLCAk
cGF0Y2g7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkY29waWVkRnJvbVBhdGggPSAiIjsK
LSAgICAgICAgICAgICRwYXRjaCA9ICIiOworICAgIG15ICRpbmRleFBhdGggPSBwYXJzZVN0YXJ0
T2ZQYXRjaCgkXyk7CisgICAgbXkgJHByb3BlcnR5Q2hhbmdlUGF0aCA9IHBhcnNlUHJvcGVydHlD
aGFuZ2UoJF8pOworICAgIGlmICgoJGluZGV4UGF0aCB8fCAkcHJvcGVydHlDaGFuZ2VQYXRoKSAm
JiAkcGF0Y2gpIHsKKyAgICAgICAgaWYgKCEkY29waWVkRnJvbVBhdGgpIHsKKyAgICAgICAgICAg
IHB1c2ggQHBhdGNoZXMsICRwYXRjaDsKICAgICAgICAgfQorICAgICAgICAkY29waWVkRnJvbVBh
dGggPSAiIjsKKyAgICAgICAgJHBhdGNoID0gIiI7CiAgICAgfQogICAgIGlmICgkaW5kZXhQYXRo
KSB7CiAgICAgICAgICMgRml4IHBhdGhzIG9uIGRpZmYsIC0tLSwgYW5kICsrKyBsaW5lcyB0byBt
YXRjaCBwcmVjZWRpbmcgSW5kZXg6IGxpbmUuCiAgICAgICAgIHMvXFMrJC8kaW5kZXhQYXRoLyBp
ZiAvXmRpZmYvOwogICAgICAgICBzL14tLS0gXFMrLy0tLSAkaW5kZXhQYXRoLzsKKworICAgICAg
ICBpZiAoJGlzR2l0Rm9ybWF0dGVkUGF0Y2ggJiYgKG15ICRmaWxlTW9kZSA9IHBhcnNlR2l0Rmls
ZU1vZGUoJF8pKSkgeworICAgICAgICAgICAgIyBUaGUgZ2l0ZGlmZjJzdm5kaWZmIGZpbHRlciBv
bmx5IG9wZXJhdGVzIG9uIGEgc2luZ2xlLCBidXQgdGhlIGVxdWl2YWxlbnQKKyAgICAgICAgICAg
ICMgcHJvcGVydHkgY2hhbmdlIGVudHJ5IGluIFNWTiBzcGFucyBtdWx0aXBsZSBsaW5lcyB3aGlj
aCB3ZSBuZWVkIHRvIHBhcnNlLgorICAgICAgICAgICAgYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENo
YW5nZVRvUGF0Y2goJGluZGV4UGF0aCwgJGZpbGVNb2RlLCBcJHBhdGNoKTsKKyAgICAgICAgICAg
IG5leHQ7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoL14tLS0gLitcKGZyb20gKFxTKyk6KFxk
KylcKSQvKSB7CiAgICAgICAgICAgICAkY29waWVkRnJvbVBhdGggPSAkMTsKICAgICAgICAgICAg
ICRjb3BpZWRGaWxlc3skaW5kZXhQYXRofSA9ICRjb3BpZWRGcm9tUGF0aDsKQEAgLTE2Myw2ICsx
NzMsNyBAQCB3aGlsZSAoPD4pIHsKICAgICAgICAgICAgICRpbmRleFBhdGggPSAiIjsKICAgICAg
ICAgfQogICAgIH0KKyAgICAkcHJvcGVydHlDaGFuZ2VQYXRoID0gIiIgaWYgaXNFbmRPZlByb3Bl
cnR5Q2hhbmdlKCRfLCAkcHJvcGVydHlDaGFuZ2VQYXRoKTsKICAgICAkcGF0Y2ggLj0gJF87CiAg
ICAgJHBhdGNoIC49ICRlb2w7CiB9CkBAIC0zMzAsOSArMzQxLDkgQEAgc3ViIHBhdGNoKCQpCiAg
ICAgbXkgKCRwYXRjaCkgPSBAXzsKICAgICByZXR1cm4gaWYgISRwYXRjaDsKIAotICAgIHVubGVz
cyAoJHBhdGNoID1+IG18XkluZGV4OiAoW15cclxuXSspfCkgeworICAgIHVubGVzcyAoJHBhdGNo
ID1+IG18XkluZGV4OiAoW15cclxuXSspfCB8fCAkcGF0Y2ggPX4gbXxeUHJvcGVydHkgY2hhbmdl
cyBvbjogKFteXHJcbl0rKXwpIHsKICAgICAgICAgbXkgJHNlcGFyYXRvciA9ICctJyB4IDY3Owot
ICAgICAgICB3YXJuICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBpbjpcbiRzZXBhcmF0b3JcbiRw
YXRjaFxuJHNlcGFyYXRvclxuIjsKKyAgICAgICAgd2FybiAiRmFpbGVkIHRvIGZpbmQgJ0luZGV4
Oicgb3IgJ1Byb3BlcnR5IGNoYW5nZXMgb246JyBpbjpcbiRzZXBhcmF0b3JcbiRwYXRjaFxuJHNl
cGFyYXRvclxuIjsKICAgICAgICAgZGllIHVubGVzcyAkZm9yY2U7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0zNDIsMTMgKzM1MywxNSBAQCBzdWIgcGF0Y2goJCkKICAgICBteSAkYWRkaXRp
b24gPSAwOwogICAgIG15ICRpc0JpbmFyeSA9IDA7CiAgICAgbXkgJGlzR2l0QmluYXJ5ID0gMDsK
KyAgICBteSAkaXNTVk5Qcm9wZXJ0eUNoYW5nZSA9IDA7CiAKICAgICAkYWRkaXRpb24gPSAxIGlm
ICgkcGF0Y2ggPX4gL1xuLS0tIC4rXChyZXZpc2lvbiAwXClccj9cbi8gfHwgJHBhdGNoID1+IC9c
bkBAIC0wLDAgLiogQEAvKSAmJiAhZXhpc3RzKCRjb3BpZWRGaWxlc3skZnVsbFBhdGh9KTsKICAg
ICAkZGVsZXRpb24gPSAxIGlmICRwYXRjaCA9fiAvXG5AQCAuKiBcKzAsMCBAQC87CiAgICAgJGlz
QmluYXJ5ID0gMSBpZiAkcGF0Y2ggPX4gL1xuQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFz
IGEgYmluYXJ5IHR5cGVcLi87CiAgICAgJGlzR2l0QmluYXJ5ID0gMSBpZiAkcGF0Y2ggPX4gL1xu
R0lUIGJpbmFyeSBwYXRjaFxuLzsKKyAgICAkaXNTVk5Qcm9wZXJ0eUNoYW5nZSA9IGlzU1ZOUHJv
cGVydHkoJHBhdGNoKTsKIAotICAgIGlmICghJGFkZGl0aW9uICYmICEkZGVsZXRpb24gJiYgISRp
c0JpbmFyeSAmJiAhJGlzR2l0QmluYXJ5KSB7CisgICAgaWYgKCEkYWRkaXRpb24gJiYgISRkZWxl
dGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNHaXRCaW5hcnkgJiYgISRpc1NWTlByb3BlcnR5Q2hh
bmdlKSB7CiAgICAgICAgICMgU3RhbmRhcmQgcGF0Y2gsIHBhdGNoIHRvb2wgY2FuIGhhbmRsZSB0
aGlzLgogICAgICAgICBpZiAoYmFzZW5hbWUoJGZ1bGxQYXRoKSBlcSAiQ2hhbmdlTG9nIikgewog
ICAgICAgICAgICAgbXkgJGNoYW5nZUxvZ0RvdE9yaWdFeGlzdGVkID0gLWYgIiR7ZnVsbFBhdGh9
Lm9yaWciOwpAQCAtMzcyLDYgKzM4NSw5IEBAIHN1YiBwYXRjaCgkKQogICAgICAgICAgICAgIyBE
ZWxldGlvbgogICAgICAgICAgICAgYXBwbHlQYXRjaCgkcGF0Y2gsICRmdWxsUGF0aCwgWyItLWZv
cmNlIl0pOwogICAgICAgICAgICAgc2NtUmVtb3ZlKCRmdWxsUGF0aCk7CisgICAgICAgIH0gZWxz
aWYgKCRpc1NWTlByb3BlcnR5Q2hhbmdlKSB7CisgICAgICAgICAgICAjIENoYW5nZSBleGVjdXRh
YmxlIGJpdC4KKyAgICAgICAgICAgIHRvZ2dsZVByb3BlcnR5Q2hhbmdlKCRwYXRjaCwgJGZ1bGxQ
YXRoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgQWRkaXRpb24KICAgICAgICAg
ICAgIHJlbmFtZSgkZnVsbFBhdGgsICIkZnVsbFBhdGgub3JpZyIpIGlmIC1lICRmdWxsUGF0aDsK
SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvU2NyaXB0cy9zdm4tdW5hcHBseQkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJLaXRU
b29scy9TY3JpcHRzL3N2bi11bmFwcGx5CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBA
CiAjCiAjIE1pc3NpbmcgZmVhdHVyZXM6CiAjCi0jICAgSGFuZGxlIHByb3BlcnR5IGNoYW5nZXMu
CisjICAgSGFuZGxlIHByb3BlcnR5IGNoYW5nZXMgb3RoZXIgdGhhbiB0aGUgZXhlY3V0YWJsZSBi
aXQuCiAjICAgSGFuZGxlIGNvcGllZCBhbmQgbW92ZWQgZGlyZWN0b3JpZXMgKHdvdWxkIHJlcXVp
cmUgcGF0Y2hlcyBtYWRlIGJ5IHN2bi1jcmVhdGUtcGF0Y2gpLgogIyAgIFVzZSB2ZXJzaW9uIG51
bWJlcnMgaW4gdGhlIHBhdGNoIGZpbGUgYW5kIGRvIGEgMy13YXkgbWVyZ2UuCiAjICAgV2hlbiBy
ZXZlcnNpbmcgYW4gYWRkaXRpb24sIGNoZWNrIHRoYXQgdGhlIGZpbGUgbWF0Y2hlcyB3aGF0J3Mg
YmVpbmcgcmVtb3ZlZC4KQEAgLTEwMSw2ICsxMDEsOCBAQCBteSAkY29waWVkRnJvbVBhdGg7CiBt
eSAkZmlsdGVyOwogbXkgJGluZGV4UGF0aDsKIG15ICRwYXRjaDsKK215ICRwcm9wZXJ0eUNoYW5n
ZVBhdGg7CitteSAkaXNHaXRGb3JtYXR0ZWRQYXRjaCA9IDA7CiB3aGlsZSAoPD4pIHsKICAgICBz
LyhbXG5ccl0rKSQvL21nOwogICAgIG15ICRlb2wgPSAkMTsKQEAgLTEwOCwyMSArMTEwLDI4IEBA
IHdoaWxlICg8PikgewogICAgICAgICAkZmlsdGVyID0gXCZnaXRkaWZmMnN2bmRpZmY7CiAgICAg
fQogICAgICRfID0gJiRmaWx0ZXIoJF8pIGlmICRmaWx0ZXI7Ci0gICAgaWYgKC9eSW5kZXg6ICgu
KykvKSB7Ci0gICAgICAgICRpbmRleFBhdGggPSAkMTsKLSAgICAgICAgaWYgKCRwYXRjaCkgewot
ICAgICAgICAgICAgaWYgKCRjb3BpZWRGcm9tUGF0aCkgewotICAgICAgICAgICAgICAgIHB1c2gg
QGNvcGllZEZpbGVzLCAkcGF0Y2g7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHBhdGNoKCRwYXRjaCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkY29waWVkRnJv
bVBhdGggPSAiIjsKLSAgICAgICAgICAgICRwYXRjaCA9ICIiOworICAgIG15ICRpbmRleFBhdGgg
PSBwYXJzZVN0YXJ0T2ZQYXRjaCgkXyk7CisgICAgbXkgJHByb3BlcnR5Q2hhbmdlUGF0aCA9IHBh
cnNlUHJvcGVydHlDaGFuZ2UoJF8pOworICAgIGlmICgoJGluZGV4UGF0aCB8fCAkcHJvcGVydHlD
aGFuZ2VQYXRoKSAmJiAkcGF0Y2gpIHsKKyAgICAgICAgaWYgKCRjb3BpZWRGcm9tUGF0aCkgewor
ICAgICAgICAgICAgcHVzaCBAY29waWVkRmlsZXMsICRwYXRjaDsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHBhdGNoKCRwYXRjaCk7CiAgICAgICAgIH0KKyAgICAgICAgJGNvcGllZEZy
b21QYXRoID0gIiI7CisgICAgICAgICRwYXRjaCA9ICIiOwogICAgIH0KICAgICBpZiAoJGluZGV4
UGF0aCkgewogICAgICAgICAjIEZpeCBwYXRocyBvbiBkaWZmLCAtLS0sIGFuZCArKysgbGluZXMg
dG8gbWF0Y2ggcHJlY2VkaW5nIEluZGV4OiBsaW5lLgogICAgICAgICBzL14tLS0gXFMrLy0tLSAk
aW5kZXhQYXRoLzsKKworICAgICAgICBpZiAoJGlzR2l0Rm9ybWF0dGVkUGF0Y2ggJiYgKG15ICRm
aWxlTW9kZSA9IHBhcnNlR2l0RmlsZU1vZGUoJF8pKSkgeworICAgICAgICAgICAgIyBUaGUgZ2l0
ZGlmZjJzdm5kaWZmIGZpbHRlciBvbmx5IG9wZXJhdGVzIG9uIGEgc2luZ2xlLCBidXQgdGhlIGVx
dWl2YWxlbnQKKyAgICAgICAgICAgICMgcHJvcGVydHkgY2hhbmdlIGVudHJ5IGluIFNWTiBzcGFu
cyBtdWx0aXBsZSBsaW5lcyB3aGljaCB3ZSBuZWVkIHRvIHBhcnNlLgorICAgICAgICAgICAgYXBw
ZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5nZVRvUGF0Y2goJGluZGV4UGF0aCwgJGZpbGVNb2RlLCBc
JHBhdGNoKTsKKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoL14t
LS0gLitcKGZyb20gKFxTKyk6XGQrXCkkLykgewogICAgICAgICAgICAgJGNvcGllZEZyb21QYXRo
ID0gJDE7CiAgICAgICAgIH0KQEAgLTEzMCw2ICsxMzksNyBAQCB3aGlsZSAoPD4pIHsKICAgICAg
ICAgICAgICRpbmRleFBhdGggPSAiIjsKICAgICAgICAgfQogICAgIH0KKyAgICAkcHJvcGVydHlD
aGFuZ2VQYXRoID0gIiIgaWYgaXNFbmRPZlByb3BlcnR5Q2hhbmdlKCRfLCAkcHJvcGVydHlDaGFu
Z2VQYXRoKTsKICAgICAkcGF0Y2ggLj0gJF87CiAgICAgJHBhdGNoIC49ICRlb2w7CiB9CkBAIC0x
NjgsMjMgKzE3OCwyNSBAQCBzdWIgcGF0Y2goJCkKICAgICBteSAoJHBhdGNoKSA9IEBfOwogICAg
IHJldHVybiBpZiAhJHBhdGNoOwogCi0gICAgdW5sZXNzICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChb
XlxyXG5dKyl8KSB7CisgICAgbXkgJGZ1bGxQYXRoOworICAgIHVubGVzcyAoJGZ1bGxQYXRoID0g
cGFyc2VTdGFydE9mUGF0Y2goJHBhdGNoKSB8fCBwYXJzZVByb3BlcnR5Q2hhbmdlKCRwYXRjaCkp
IHsKICAgICAgICAgbXkgJHNlcGFyYXRvciA9ICctJyB4IDY3OwotICAgICAgICB3YXJuICJGYWls
ZWQgdG8gZmluZCAnSW5kZXg6JyBpbjpcbiRzZXBhcmF0b3JcbiRwYXRjaFxuJHNlcGFyYXRvclxu
IjsKKyAgICAgICAgd2FybiAiRmFpbGVkIHRvIGZpbmQgJ0luZGV4Oicgb3IgJ1Byb3BlcnR5IGNo
YW5nZXMgb246JyBpbjpcbiRzZXBhcmF0b3JcbiRwYXRjaFxuJHNlcGFyYXRvclxuIjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBteSAkZnVsbFBhdGggPSAkMTsKICAgICAkZGlyZWN0b3Jp
ZXNUb0NoZWNre2Rpcm5hbWUoJGZ1bGxQYXRoKX0gPSAxOwogCiAgICAgbXkgJGRlbGV0aW9uID0g
MDsKICAgICBteSAkYWRkaXRpb24gPSAwOwogICAgIG15ICRpc0JpbmFyeSA9IDA7CisgICAgbXkg
JGlzU1ZOUHJvcGVydHlDaGFuZ2UgPSAwOwogCiAgICAgJGFkZGl0aW9uID0gMSBpZiAoJHBhdGNo
ID1+IC9cbi0tLSAuK1wocmV2aXNpb24gMFwpXG4vIHx8ICRwYXRjaCA9fiAvXG5AQCAtMCwwIC4q
IEBALyk7CiAgICAgJGRlbGV0aW9uID0gMSBpZiAkcGF0Y2ggPX4gL1xuQEAgLiogXCswLDAgQEAv
OwogICAgICRpc0JpbmFyeSA9IDEgaWYgJHBhdGNoID1+IC9cbkNhbm5vdCBkaXNwbGF5OiBmaWxl
IG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlXC4vOworICAgICRpc1NWTlByb3BlcnR5Q2hhbmdlID0g
aXNTVk5Qcm9wZXJ0eSgkcGF0Y2gpOwogCi0gICAgaWYgKCEkYWRkaXRpb24gJiYgISRkZWxldGlv
biAmJiAhJGlzQmluYXJ5KSB7CisgICAgaWYgKCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAh
JGlzQmluYXJ5ICYmICEkaXNTVk5Qcm9wZXJ0eUNoYW5nZSkgewogICAgICAgICAjIFN0YW5kYXJk
IHBhdGNoLCBwYXRjaCB0b29sIGNhbiBoYW5kbGUgdGhpcy4KICAgICAgICAgaWYgKGJhc2VuYW1l
KCRmdWxsUGF0aCkgZXEgIkNoYW5nZUxvZyIpIHsKICAgICAgICAgICAgIG15ICRjaGFuZ2VMb2dE
b3RPcmlnRXhpc3RlZCA9IC1mICIke2Z1bGxQYXRofS5vcmlnIjsKQEAgLTIyNiw2ICsyMzgsOSBA
QCBzdWIgcGF0Y2goJCkKIAogICAgICAgICAgICAgIyBTaG93IHN0YXR1cyBpZiB0aGUgZmlsZSBp
cyBtb2RpZmVkCiAgICAgICAgICAgICBzeXN0ZW0gInN2biIsICJzdGF0IiwgJGZ1bGxQYXRoOwor
ICAgICAgICB9IGVsc2lmICgkaXNTVk5Qcm9wZXJ0eUNoYW5nZSkgeworICAgICAgICAgICAgIyBS
ZXZlcnNlIGNoYW5nZSBvZiBleGVjdXRhYmxlIGJpdC4KKyAgICAgICAgICAgIHRvZ2dsZVByb3Bl
cnR5Q2hhbmdlKCRwYXRjaCwgJGZ1bGxQYXRoLCAxKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICMgUmV2ZXJzZSBhZGRpdGlvbgogICAgICAgICAgICAgdW5hcHBseVBhdGNoKCRwYXRj
aCwgJGZ1bGxQYXRoLCBbIi0tZm9yY2UiXSk7CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvYXBwZW5kU1ZORXhlY3V0YWJsZUJpdENoYW5nZVRv
UGF0Y2gucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZD
U1V0aWxzX3VuaXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoLnBsCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3Vu
aXR0ZXN0L2FwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoLnBsCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY4IEBACisjIS91c3IvYmluL3BlcmwKKyMKKyMgQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBpbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBSZXNlYXJjaCBpbiBNb3Rpb24gTGltaXRlZCBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFVuaXQgdGVzdHMgb2YgVkNTVXRp
bHM6OmFwcGVuZFNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoKCkuCisKK3VzZSBUZXN0OjpT
aW1wbGUgdGVzdHMgPT4gMjsKK3VzZSBWQ1NVdGlsczsKKworbXkgJHRpdGxlOworbXkgJHBhdGNo
OworbXkgJGV4cGVjdGVkUGF0Y2g7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJhcHBlbmRTVk5F
eGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaDogQWRkIGV4ZWN1dGFibGUgYml0IHRvIGZpbGUuIjsK
KworJGV4cGVjdGVkUGF0Y2ggPSA8PCdFTkQnOworUHJvcGVydHkgY2hhbmdlcyBvbjogZmlsZV90
b19wYXRjaC50eHQKK19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KK0FkZGVkOiBzdm46ZXhlY3V0YWJsZQorICAgKyAqCitF
TkQKKworJHBhdGNoID0gIiI7CithcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdlVG9QYXRjaCgi
ZmlsZV90b19wYXRjaC50eHQiLCAiMTAwNzU1IiwgXCRwYXRjaCk7CisKK29rKCRwYXRjaCBlcSAk
ZXhwZWN0ZWRQYXRjaCwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImFwcGVuZFNW
TkV4ZWN1dGFibGVCaXRDaGFuZ2VUb1BhdGNoOiBSZW1vdmUgZXhlY3V0YWJsZSBiaXQgZnJvbSBm
aWxlLiI7CisKKyRleHBlY3RlZFBhdGNoID0gPDwnRU5EJzsKK1Byb3BlcnR5IGNoYW5nZXMgb246
IGZpbGVfdG9fcGF0Y2gudHh0CitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCitEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQor
ICAgKyAqCitFTkQKKworJHBhdGNoID0gIiI7CithcHBlbmRTVk5FeGVjdXRhYmxlQml0Q2hhbmdl
VG9QYXRjaCgiZmlsZV90b19wYXRjaC50eHQiLCAiMTAwNjQ0IiwgXCRwYXRjaCk7CisKK29rKCRw
YXRjaCBlcSAkZXhwZWN0ZWRQYXRjaCwgJHRpdGxlKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZUdpdEZpbGVNb2RlLnBsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVz
dC9wYXJzZUdpdEZpbGVNb2RlLnBsCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlR2l0RmlsZU1vZGUucGwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1p
dGVkIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVW5pdCB0ZXN0cyBvZiBW
Q1NVdGlsczo6cGFyc2VHaXRGaWxlTW9kZSgpLgorCit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+
IDY7Cit1c2UgVkNTVXRpbHM7CisKK215ICR0aXRsZTsKK215ICRwYXRjaExpbmU7CisKKyMgTmV3
IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhIHZhbGlkIEdpdCBmaWxl
IG1vZGUgZm9yIG5ldyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IGZpbGUgbW9kZSAxMDA3
NTUiOworb2socGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSA9PSAxMDA3NTUsICR0aXRsZSk7
CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhIHZhbGlk
IEdpdCBmaWxlIG1vZGUgZm9yIGFuIGV4aXN0aW5nIGZpbGUuIjsKKworJHBhdGNoTGluZSA9ICJu
ZXcgbW9kZSAxMDA3NTUiOworb2socGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSA9PSAxMDA3
NTUsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2RlOiBQ
YXJzZSBhbiBpbnZhbGlkIEdpdCBmaWxlIG1vZGUgZm9yIG5ldyBmaWxlLiI7CisKKyRwYXRjaExp
bmUgPSAibmV3IGZpbGUgbW9kZSBkdW1teSI7CitvayghcGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hM
aW5lKSwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gInBhcnNlR2l0RmlsZU1vZGU6
IFBhcnNlIGFuIGludmFsaWQgR2l0IGZpbGUgbW9kZSBmb3IgYW4gZXhpc3RpbmcgZmlsZS4iOwor
CiskcGF0Y2hMaW5lID0gIm5ldyBtb2RlIGR1bW15IjsKK29rKCFwYXJzZUdpdEZpbGVNb2RlKCRw
YXRjaExpbmUpLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VHaXRGaWxl
TW9kZTogRW5zdXJlIHRoYXQgYSBudW1lcmljIGZpbGUgbW9kZSBsb25nZXIgdGhhbiA2IGRpZ2l0
cyBpcyBpbnZhbGlkIGZvciBhIG5ldyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IGZpbGUg
bW9kZSAxMDA3NTU5IjsKK29rKCFwYXJzZUdpdEZpbGVNb2RlKCRwYXRjaExpbmUpLCAkdGl0bGUp
OworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VHaXRGaWxlTW9kZTogRW5zdXJlIHRoYXQg
YSBudW1lcmljIGZpbGUgbW9kZSBsb25nZXIgdGhhbiA2IGRpZ2l0cyBpcyBpbnZhbGlkIGZvciBh
biBleGlzdGluZyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IG1vZGUgMTAwNzU1OSI7Citv
ayghcGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSwgJHRpdGxlKTsKSW5kZXg6IFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZVN0YXJ0T2ZQYXRj
aE9yUHJvcGVydHlDaGFuZ2VBbmRFbmRPZlByb3BlcnR5Q2hhbmdlLnBsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZVN0
YXJ0T2ZQYXRjaE9yUHJvcGVydHlDaGFuZ2VBbmRFbmRPZlByb3BlcnR5Q2hhbmdlLnBsCShyZXZp
c2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0
ZXN0L3BhcnNlU3RhcnRPZlBhdGNoT3JQcm9wZXJ0eUNoYW5nZUFuZEVuZE9mUHJvcGVydHlDaGFu
Z2UucGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKyMhL3Vzci9iaW4vcGVybAorIwor
IyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMg
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFJlc2VhcmNoIGlu
IE1vdGlvbiBMaW1pdGVkIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
IAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVW5p
dCB0ZXN0cyBvZiBWQ1NVdGlsczo6cGFyc2VTdGFydE9mUGF0Y2goKSBhbmQgVkNTVXRpbHM6OnBh
cnNlUHJvcGVydHlDaGFuZ2UoKQorIyBhbmQgVkNTVXRpbHM6OmlzRW5kT2ZQcm9wZXJ0eUNoYW5n
ZS4KKwordXNlIFRlc3Q6OlNpbXBsZSB0ZXN0cyA9PiA2OwordXNlIFZDU1V0aWxzOworCitteSAk
dGl0bGU7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZVN0YXJ0T2ZQYXRjaDogVGVzdCBz
dGFydCBvZiBTVk4gcGF0Y2guIjsKK29rKHBhcnNlU3RhcnRPZlBhdGNoKCJJbmRleDogZmlsZV90
b19wYXRjaC50eHRcbiIpIGVxICJmaWxlX3RvX3BhdGNoLnR4dCIsICR0aXRsZSk7CisKKyMgTmV3
IHRlc3QKKyR0aXRsZSA9ICJwYXJzZVByb3BlcnR5Q2hhbmdlOiBUZXN0IHN0YXJ0IG9mIFNWTiBw
cm9wZXJ0eSBjaGFuZ2UgZW50cnkuIjsKK29rKHBhcnNlUHJvcGVydHlDaGFuZ2UoIlByb3BlcnR5
IGNoYW5nZXMgb246IGZpbGVfdG9fcGF0Y2gudHh0XHJcbiIpIGVxICJmaWxlX3RvX3BhdGNoLnR4
dCIsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJpc0VuZE9mUHJvcGVydHlDaGFu
Z2U6IFRlc3QgZW5kIG9mIFNWTiBwcm9wZXJ0eSBjaGFuZ2UgZW50cnkgYWRkaXRpb24uIjsKK29r
KGlzRW5kT2ZQcm9wZXJ0eUNoYW5nZSgiICAgKyAqXG4iLCAiZmlsZV90b19wYXRjaC50eHQiKSwg
JHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImlzRW5kT2ZQcm9wZXJ0eUNoYW5nZTog
VGVzdCBlbmQgb2YgU1ZOIHByb3BlcnR5IGNoYW5nZSBlbnRyeSBkZWxldGlvbi4iOworb2soaXNF
bmRPZlByb3BlcnR5Q2hhbmdlKCIgICAtICpcbiIsICJmaWxlX3RvX3BhdGNoLnR4dCIpLCAkdGl0
bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiaXNFbmRPZlByb3BlcnR5Q2hhbmdlOiBUZXN0
IGVuZCBvZiBTVk4gcHJvcGVydHkgY2hhbmdlIGVudHJ5IGFkZGl0aW9uIHdpdGggaW52YWxpZCBw
cm9wZXJ0eSBjaGFuZ2UgcGF0aC4iOworb2soIWlzRW5kT2ZQcm9wZXJ0eUNoYW5nZSgiICAgKyAq
XG4iLCAwKSwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImlzRW5kT2ZQcm9wZXJ0
eUNoYW5nZTogVGVzdCBlbmQgb2YgU1ZOIHByb3BlcnR5IGNoYW5nZSBlbnRyeSBkZWxldGlvbiB3
aXRoIGludmFsaWQgcHJvcGVydHkgY2hhbmdlIHBhdGguIjsKK29rKCFpc0VuZE9mUHJvcGVydHlD
aGFuZ2UoIiAgIC0gKlxuIiwgMCksICR0aXRsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53149</attachid>
            <date>2010-04-11 22:32:18 -0700</date>
            <delta_ts>2010-06-11 11:14:17 -0700</delta_ts>
            <desc>Patch with unit tests</desc>
            <filename>Bug27204_c_3.patch</filename>
            <type>text/plain</type>
            <size>30225</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU3NDU3KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDQtMTEgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzIwNAorCisg
ICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgZXhlY3V0YWJsZSBiaXQg
b2YgYSBmaWxlLgorICAgICAgICBUaGUgZXhlY3V0YWJsZSBiaXQgaXMgYW1vbmcgdGhlIG1vc3Qg
Y2hhbmdlZCBmaWxlIHByb3BlcnRpZXMuCisgICAgICAgIEZ1dHVyZSBzdXBwb3J0IGNhbiBpbmNs
dWRlIG90aGVyIHByb3BlcnR5IGNoYW5nZXMuCisKKyAgICAgICAgQ3VycmVudGx5LCBpZiBhIHBh
dGNoIGNoYW5nZXMgdGhlIGV4ZWN1dGFibGUgYml0IG9mIGEgZmlsZQorICAgICAgICBpdCBpcyBu
b3QgcmVzcGVjdGVkIGJ5IHN2bi1hcHBseSBvciBzdm4tdW5hcHBseS4gU2luY2UgdGhlCisgICAg
ICAgIGNvbW1pdC1xdWV1ZSBib3QgdXNlcyB0aGVzZSB0b29scyBhcyBwYXJ0IG9mIGl0cyB3b3Jr
ZmxvdywKKyAgICAgICAgc3VjaCBwYXRjaGVzIGNhbm5vdCBiZSBjb21taXR0ZWQgYnkgaXQuIFRo
YXQgaXMsIHN1Y2ggcGF0Y2hlcworICAgICAgICBuZWVkIHRvIGJlIGNvbW1pdHRlZCBieSBoYW5k
LiBJbnN0ZWFkLCB3ZSBzaG91bGQgYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIHRoZSBleGVjdXRh
YmxlIGJpdCBzbyB0aGF0IHN1Y2ggcGF0Y2hlcyBjYW4gYmUgY29tbWl0dGVkCisgICAgICAgIGJ5
IHRoZSBjb21taXQtcXVldWUgYm90LgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbTog
QWxzbyBjaGFuZ2VkIHJlZmVyZW5jZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLgorICAgICAgICBp
biBjb3B5cmlnaHQgdG8gQXBwbGUsIEluYy4KKyAgICAgICAgKiBTY3JpcHRzL3N2bi1hcHBseToK
KyAgICAgICAgKiBTY3JpcHRzL3N2bi11bmFwcGx5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cGVybC9WQ1NVdGlsc191bml0dGVzdC9jcmVhdGVTVk5FeGVjdXRhYmxlQml0Q2hhbmdlRW50cnku
cGw6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVz
dC9wYXJzZUdpdEZpbGVNb2RlLnBsOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBl
cmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VTdGFydE9mUGF0Y2hPclByb3BlcnR5Q2hhbmdlLnBs
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3Qv
cHJvY2Vzc0RpZmZBbmRQcm9wZXJ0eUNoYW5nZS5wbDogQWRkZWQuCisKIDIwMTAtMDQtMTEgIEpv
c2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkocmV2aXNpb24gNTc0
NTYpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIENocmlz
IEplcmRvbmVrIChjaHJpcy5qZXJkb25la0BnbWFpbC5jb20pCisjIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggaW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAsNyArMTEsNyBAQAogIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
ICMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKICMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotIyAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
IyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCiAjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCiAjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAogIwpAQCAtNDcsNiArNDgsNyBA
QCBCRUdJTiB7CiAgICAgICAgICZjaGFuZ2VMb2dFbWFpbEFkZHJlc3MKICAgICAgICAgJmNoYW5n
ZUxvZ05hbWUKICAgICAgICAgJmNoZGlyUmV0dXJuaW5nUmVsYXRpdmVQYXRoCisgICAgICAgICZj
cmVhdGVTVk5FeGVjdXRhYmxlQml0Q2hhbmdlRW50cnkKICAgICAgICAgJmRlY29kZUdpdEJpbmFy
eVBhdGNoCiAgICAgICAgICZkZXRlcm1pbmVTVk5Sb290CiAgICAgICAgICZkZXRlcm1pbmVWQ1NS
b290CkBAIC01OSwxNSArNjEsMjMgQEAgQkVHSU4gewogICAgICAgICAmaXNHaXREaXJlY3RvcnkK
ICAgICAgICAgJmlzU1ZOCiAgICAgICAgICZpc1NWTkRpcmVjdG9yeQorICAgICAgICAmaXNTVk5Q
cm9wZXJ0eQogICAgICAgICAmaXNTVk5WZXJzaW9uMTZPck5ld2VyCiAgICAgICAgICZtYWtlRmls
ZVBhdGhSZWxhdGl2ZQogICAgICAgICAmbWVyZ2VDaGFuZ2VMb2dzCiAgICAgICAgICZub3JtYWxp
emVQYXRoCisgICAgICAgICZwYXJzZUdpdEZpbGVNb2RlCiAgICAgICAgICZwYXJzZVBhdGNoCisg
ICAgICAgICZwYXJzZVByb3BlcnR5Q2hhbmdlCisgICAgICAgICZwYXJzZVN0YXJ0T2ZQYXRjaAog
ICAgICAgICAmcGF0aFJlbGF0aXZlVG9TVk5SZXBvc2l0b3J5Um9vdEZvclBhdGgKKyAgICAgICAg
JnByb2Nlc3NEaWZmQW5kUHJvcGVydHlDaGFuZ2UKICAgICAgICAgJnJ1blBhdGNoQ29tbWFuZAor
ICAgICAgICAmc2NtQWRkRXhlY3V0YWJsZVByb3BlcnR5CisgICAgICAgICZzY21SZW1vdmVFeGVj
dXRhYmxlUHJvcGVydHkKICAgICAgICAgJnN2blJldmlzaW9uRm9yRGlyZWN0b3J5CiAgICAgICAg
ICZzdm5TdGF0dXMKKyAgICAgICAgJnRvZ2dsZVByb3BlcnR5Q2hhbmdlCiAgICAgKTsKICAgICAl
RVhQT1JUX1RBR1MgPSAoICk7CiAgICAgQEVYUE9SVF9PSyAgID0gKCk7CkBAIC0xMTAsNiArMTIw
LDExOCBAQCBzdWIgaXNHaXQoKQogICAgIHJldHVybiAkaXNHaXQ7CiB9CiAKK3N1YiBwYXJzZUdp
dEZpbGVNb2RlKCQpCit7CisgICAgbXkgKCRwYXRjaCkgPSBAXzsKKyAgICByZXR1cm4gKCRwYXRj
aCA9fiAvXm5ldyAoZmlsZSApP21vZGUgKFswLTldezZ9KSQvKSA/ICQyIDogMDsKK30KKworc3Vi
IGlzU1ZOUHJvcGVydHkoJCkKK3sKKyAgICBteSAoJHBhdGNoKSA9IEBfOworICAgICMgRklYTUU6
IFdlIHNob3VsZCBtYWtlIHRoaXMgbW9yZSBnZW5lcmljIGFuZCBzdXBwb3J0IGZvciBhZGRpdGlv
bmFsIFNWTiBwcm9wZXJ0aWVzLgorICAgIHJldHVybiAkcGF0Y2ggPX4gL1xuKEFkZGVkfERlbGV0
ZWQpOiBzdm46ZXhlY3V0YWJsZVxuLzsKK30KKworc3ViIHBhcnNlU3RhcnRPZlBhdGNoKCQpCit7
CisgICAgbXkgKCRwYXRjaCkgPSBAXzsKKyAgICByZXR1cm4gKCRwYXRjaCA9fiAvXkluZGV4OiAo
W15cclxuXSspLykgPyAkMSA6IDA7Cit9CisKK3N1YiBwYXJzZVByb3BlcnR5Q2hhbmdlKCQpCit7
CisgICAgbXkgKCRwYXRjaCkgPSBAXzsKKyAgICByZXR1cm4gKCRwYXRjaCA9fiAvXlByb3BlcnR5
IGNoYW5nZXMgb246IChbXlxyXG5dKykvKSA/ICQxIDogMDsKK30KKworc3ViIHRvZ2dsZVByb3Bl
cnR5Q2hhbmdlCit7CisgICAgbXkgKCRwYXRjaCwgJGZ1bGxQYXRoLCAkc2hvdWxkVW5hcHBseSkg
PSBAXzsKKyAgICAjIENoYW5nZSBleGVjdXRhYmxlIGJpdC4KKyAgICBpZiAoJHBhdGNoID1+IC9B
ZGRlZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsKKyAgICAgICAgaWYgKCFkZWZpbmVkKCRzaG91bGRV
bmFwcGx5KSkgeworICAgICAgICAgICAgc2NtQWRkRXhlY3V0YWJsZVByb3BlcnR5KCRmdWxsUGF0
aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzY21SZW1vdmVFeGVjdXRhYmxlUHJv
cGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAgfQorICAgIH0gZWxzaWYgKCRwYXRjaCA9fiAvRGVs
ZXRlZDogc3ZuOmV4ZWN1dGFibGVcbi8pIHsKKyAgICAgICAgaWYgKCFkZWZpbmVkKCRzaG91bGRV
bmFwcGx5KSkgeworICAgICAgICAgICAgc2NtUmVtb3ZlRXhlY3V0YWJsZVByb3BlcnR5KCRmdWxs
UGF0aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzY21BZGRFeGVjdXRhYmxlUHJv
cGVydHkoJGZ1bGxQYXRoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3ViIGNyZWF0ZVNWTkV4
ZWN1dGFibGVCaXRDaGFuZ2VFbnRyeSgkJCkKK3sKKyAgICBteSAoJGluZGV4UGF0aCwgJGZpbGVN
b2RlKSA9IEBfOworICAgICMgTm90ZSwgd2UgZG9uJ3QgbmVlZCB0byBpbmNsdWRlIGVpdGhlciB0
aGUgZGl2aWRlciBsaW5lIG9yIHRoZSAiKyAqIi8iLSAqIiBsaW5lLAorICAgICMgYnV0IHRoZXNl
IGFyZSBsZWZ0IGluIHNvIGFzIHRvIHByb2R1Y2UgYSBwcm9wZXIgU1ZOIHByb3BlcnR5IGNoYW5n
ZSBlbnRyeS4KKyAgICAKKyAgICAjIEZJWE1FOiBUaGVzZSBmaWxlIG1vZGVzIGFyZSBmcmFnaWxl
IGFuZCBiYXNlZCBvbiBvYnNlcnZhdGlvbi4KKyAgICByZXR1cm4gIiIgdW5sZXNzICgkZmlsZU1v
ZGUgZXEgIjEwMDc1NSIgfHwgJGZpbGVNb2RlIGVxICIxMDA2NDQiKTsKKworICAgIG15ICRyZXN1
bHQgPSAiUHJvcGVydHkgY2hhbmdlcyBvbjogJGluZGV4UGF0aFxuIjsKKyAgICAkcmVzdWx0IC49
ICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXG4iOworICAgIGlmICgkZmlsZU1vZGUgZXEgIjEwMDc1NSIpIHsKKyAgICAg
ICAgJHJlc3VsdCAuPSAiQWRkZWQ6IHN2bjpleGVjdXRhYmxlXG4iOworICAgICAgICAkcmVzdWx0
IC49ICIgICArICpcbiI7CisgICAgfSBlbHNpZiAoJGZpbGVNb2RlIGVxICIxMDA2NDQiKSB7Cisg
ICAgICAgICRyZXN1bHQgLj0gIkRlbGV0ZWQ6IHN2bjpleGVjdXRhYmxlXG4iOworICAgICAgICAk
cmVzdWx0IC49ICIgICAtICpcbiI7CisgICAgfQorICAgIHJldHVybiAkcmVzdWx0OworfQorCitz
dWIgcHJvY2Vzc0RpZmZBbmRQcm9wZXJ0eUNoYW5nZSgkJCQpCit7CisgICAgbXkgKCRjYWxsYmFj
a0Z1bmN0aW9uLCAkcGF0Y2gsICRwcm9wZXJ0eUNoYW5nZUVudHJ5KSA9IEBfOworCisgICAgIyBX
ZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGxhc3QgbGluZSBpbiAkcGF0Y2ggaXMgYSBHaXQg
ZmlsZSBtb2RlIGNoYW5nZSBhcyAkcGF0Y2gKKyAgICAjIHdhcyBwYXJzZWQgYXMgYSBmaWxlIGNo
YW5nZSwgYnV0IG1heSBhY3R1YWxseSBiZSBhIHByb3BlcnR5IGNoYW5nZS4KKyAgICAjCisgICAg
IyBGb3IgZXhhbXBsZTogCisgICAgIyBkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNmb3Jt
cy9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sIGIvTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy9j
c3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sCisgICAgIyBvbGQgbW9kZSAxMDA2NDQKKyAgICAj
IG5ldyBtb2RlIDEwMDc1NQorICAgICMgRU9GCisgICAgY2hvbXAobXkgJGNhbm9uaWNhbFBhdGNo
ID0gJHBhdGNoKTsKKyAgICBteSAkbGFzdExpbmVJblBhdGNoID0gc3Vic3RyKCRjYW5vbmljYWxQ
YXRjaCwgcmluZGV4KCRjYW5vbmljYWxQYXRjaCwgIlxuIikgKyAxKTsKKworICAgICMgVGhlIG9y
ZGVyIG9mIHByb2Nlc3NpbmcgdGhlc2UgcGF0Y2hlcyB3YXMgZXhwbGljaXRseSBjaG9zZW4gc3Vj
aCB0aGF0IHdlIGFwcGx5IGEKKyAgICAjIHBhdGNoIHRoYXQgbWF5IGFkZCBhIGZpbGUgYmVmb3Jl
IGFwcGx5aW5nIGEgcHJvcGVydHkgY2hhbmdlIHRvIGl0LgorICAgICYkY2FsbGJhY2tGdW5jdGlv
bigkcGF0Y2gpIGlmICRwYXRjaCAmJiAhcGFyc2VHaXRGaWxlTW9kZSgkbGFzdExpbmVJblBhdGNo
KTsKKyAgICAmJGNhbGxiYWNrRnVuY3Rpb24oJHByb3BlcnR5Q2hhbmdlRW50cnkpIGlmICRwcm9w
ZXJ0eUNoYW5nZUVudHJ5OworfQorCitzdWIgc2NtQWRkRXhlY3V0YWJsZVByb3BlcnR5KCQpCit7
CisgICAgbXkgKCRwYXRoKSA9IEBfOworCisgICAgcmV0dXJuIGlmICEgLWUgJHBhdGg7CisgICAg
CisgICAgaWYgKGlzU1ZOKCkpIHsKKyAgICAgICAgc3lzdGVtKCJzdm4iLCAicHJvcHNldCIsICJz
dm46ZXhlY3V0YWJsZSIsICJvbiIsICRwYXRoKSA9PSAwIG9yIGRpZSAiRmFpbGVkIHRvIHJ1biAn
c3ZuIHByb3BzZXQgc3ZuOmV4ZWN1dGFibGUgb24gJHBhdGgnLiI7CisgICAgfSBlbHNpZiAoaXNH
aXQoKSkgeworICAgICAgICBjaG1vZCgwNzU1LCAkcGF0aCk7CisgICAgfQorfQorCitzdWIgc2Nt
UmVtb3ZlRXhlY3V0YWJsZVByb3BlcnR5KCQpCit7CisgICAgbXkgKCRwYXRoKSA9IEBfOworCisg
ICAgcmV0dXJuIGlmICEgLWUgJHBhdGg7CisKKyAgICBpZiAoaXNTVk4oKSkgeworICAgICAgICBz
eXN0ZW0oInN2biIsICJwcm9wZGVsIiwgInN2bjpleGVjdXRhYmxlIiwgJHBhdGgpID09IDAgb3Ig
ZGllICJGYWlsZWQgdG8gcnVuICdzdm4gcHJvcGRlbCBzdm46ZXhlY3V0YWJsZSAkcGF0aCcuIjsK
KyAgICB9IGVsc2lmIChpc0dpdCgpKSB7CisgICAgICAgIGNobW9kKDA2NjQsICRwYXRoKTsKKyAg
ICB9Cit9CisKIHN1YiBnaXRCcmFuY2goKQogewogICAgIHVubGVzcyAoZGVmaW5lZCAkZ2l0QnJh
bmNoKSB7CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi1hcHBseQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi1hcHBseQkocmV2aXNpb24gNTc0NTYpCisrKyBXZWJL
aXRUb29scy9TY3JpcHRzL3N2bi1hcHBseQkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBA
QAogIwogIyBNaXNzaW5nIGZlYXR1cmVzOgogIwotIyAgIEhhbmRsZSBwcm9wZXJ0eSBjaGFuZ2Vz
LgorIyAgIEhhbmRsZSBwcm9wZXJ0eSBjaGFuZ2VzIG90aGVyIHRoYW4gdGhlIGV4ZWN1dGFibGUg
Yml0LgogIyAgIEhhbmRsZSBjb3BpZWQgYW5kIG1vdmVkIGRpcmVjdG9yaWVzICh3b3VsZCByZXF1
aXJlIHBhdGNoZXMgbWFkZSBieSBzdm4tY3JlYXRlLXBhdGNoKS4KICMgICBXaGVuIGRvaW5nIGEg
cmVtb3ZhbCwgY2hlY2sgdGhhdCBvbGQgZmlsZSBtYXRjaGVzIHdoYXQncyBiZWluZyByZW1vdmVk
LgogIyAgIE5vdGljZSBhIHBhdGNoIHRoYXQncyBiZWluZyBhcHBsaWVkIGF0IHRoZSAid3Jvbmcg
bGV2ZWwiIGFuZCBtYWtlIGl0IHdvcmsgYW55d2F5LgpAQCAtODEsNiArODEsNyBAQCBzdWIgaXNE
aXJlY3RvcnlFbXB0eUZvclJlbW92YWwoJCk7CiBzdWIgcGF0Y2goJCk7CiBzdWIgcmVtb3ZlRGly
ZWN0b3JpZXNJZk5lZWRlZCgpOwogc3ViIHNldENoYW5nZUxvZ0RhdGVBbmRSZXZpZXdlcigkJCk7
CitzdWIgYXBwZW5kSXRlbVRvTGlzdCgkJCk7CiAKICMgVGhlc2Ugc2hvdWxkIGJlIHJlcGxhY2Vk
IGJ5IGFuIHNjbSBjbGFzcy9tb2R1bGU6CiBzdWIgc2NtS25vd3NPZkZpbGUoJCk7CkBAIC0xMzAs
MjcgKzEzMSw0OCBAQCBteSAkY29waWVkRnJvbVBhdGg7CiBteSAkZmlsdGVyOwogbXkgJGluZGV4
UGF0aDsKIG15ICRwYXRjaDsKK215ICRwcm9wZXJ0eUNoYW5nZVBhdGg7CitteSAkaXNHaXRGb3Jt
YXR0ZWRQYXRjaCA9IDA7CitteSAkYXBwZW5kUGF0Y2hUb0xpc3QgPSAwOworbXkgJHByb3BlcnR5
Q2hhbmdlRW50cnkgPSAiIjsKK215ICRhcHBlbmRQYXRjaFRvTGlzdENhbGxiYWNrID0gc3ViIHsg
bXkgJGl0ZW0gPSBzaGlmdDsgYXBwZW5kSXRlbVRvTGlzdChcQHBhdGNoZXMsICRpdGVtKTsgfTsK
IHdoaWxlICg8PikgewogICAgIHMvKFtcblxyXSspJC8vbWc7CiAgICAgbXkgJGVvbCA9ICQxOwog
ICAgIGlmICghZGVmaW5lZCgkaW5kZXhQYXRoKSAmJiBtI15kaWZmIC0tZ2l0IFx3LyMpIHsKICAg
ICAgICAgJGZpbHRlciA9IFwmZ2l0ZGlmZjJzdm5kaWZmOworICAgICAgICAkaXNHaXRGb3JtYXR0
ZWRQYXRjaCA9IDE7CiAgICAgfQogICAgICRfID0gJiRmaWx0ZXIoJF8pIGlmICRmaWx0ZXI7Ci0g
ICAgaWYgKC9eSW5kZXg6ICguKykvKSB7Ci0gICAgICAgICRpbmRleFBhdGggPSAkMTsKLSAgICAg
ICAgaWYgKCRwYXRjaCkgewotICAgICAgICAgICAgaWYgKCEkY29waWVkRnJvbVBhdGgpIHsKLSAg
ICAgICAgICAgICAgICBwdXNoIEBwYXRjaGVzLCAkcGF0Y2g7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAkY29waWVkRnJvbVBhdGggPSAiIjsKLSAgICAgICAgICAgICRwYXRjaCA9ICIiOwot
ICAgICAgICB9CisgICAgbXkgJGZpbGVQYXRoOworICAgIGlmICgkZmlsZVBhdGggPSBwYXJzZVN0
YXJ0T2ZQYXRjaCgkXykpIHsKKyAgICAgICAgJGluZGV4UGF0aCA9ICRmaWxlUGF0aDsKKyAgICAg
ICAgJGFwcGVuZFBhdGNoVG9MaXN0ID0gZGVmaW5lZCgkcGF0Y2gpOworICAgIH0gZWxzaWYgKCRm
aWxlUGF0aCA9IHBhcnNlUHJvcGVydHlDaGFuZ2UoJF8pKSB7CisgICAgICAgICRwcm9wZXJ0eUNo
YW5nZVBhdGggPSAkZmlsZVBhdGg7CisgICAgICAgICRhcHBlbmRQYXRjaFRvTGlzdCA9IGRlZmlu
ZWQoJHBhdGNoKTsKKyAgICB9CisgICAgaWYgKCRhcHBlbmRQYXRjaFRvTGlzdCkgeworICAgICAg
ICBwcm9jZXNzRGlmZkFuZFByb3BlcnR5Q2hhbmdlKCRhcHBlbmRQYXRjaFRvTGlzdENhbGxiYWNr
LCAkcGF0Y2gsICRwcm9wZXJ0eUNoYW5nZUVudHJ5KSBpZiAhJGNvcGllZEZyb21QYXRoOworICAg
ICAgICAkcHJvcGVydHlDaGFuZ2VFbnRyeSA9ICIiOworICAgICAgICAkY29waWVkRnJvbVBhdGgg
PSAiIjsKKyAgICAgICAgJHBhdGNoID0gIiI7CisgICAgICAgICRhcHBlbmRQYXRjaFRvTGlzdCA9
IDA7CiAgICAgfQorCiAgICAgaWYgKCRpbmRleFBhdGgpIHsKICAgICAgICAgIyBGaXggcGF0aHMg
b24gZGlmZiwgLS0tLCBhbmQgKysrIGxpbmVzIHRvIG1hdGNoIHByZWNlZGluZyBJbmRleDogbGlu
ZS4KICAgICAgICAgcy9cUyskLyRpbmRleFBhdGgvIGlmIC9eZGlmZi87CiAgICAgICAgIHMvXi0t
LSBcUysvLS0tICRpbmRleFBhdGgvOworCisgICAgICAgIGlmICgkaXNHaXRGb3JtYXR0ZWRQYXRj
aCAmJiAobXkgJGZpbGVNb2RlID0gcGFyc2VHaXRGaWxlTW9kZSgkXykpKSB7CisgICAgICAgICAg
ICAjIFRoZSBnaXRkaWZmMnN2bmRpZmYgZmlsdGVyIG9ubHkgb3BlcmF0ZXMgb24gYSBzaW5nbGUs
IGJ1dCB0aGUgZXF1aXZhbGVudAorICAgICAgICAgICAgIyBwcm9wZXJ0eSBjaGFuZ2UgZW50cnkg
aW4gU1ZOIHNwYW5zIG11bHRpcGxlIGxpbmVzIHdoaWNoIHdlIG5lZWQgdG8gcGFyc2UuCisgICAg
ICAgICAgICAjIE5vdGUsIHdlIHNhdmUgdGhlIHByb3BlcnR5IGNoYW5nZSBlbnRyeSBhdCB0aGlz
IHBvaW50IHNvIHRoYXQgd2UgY2FuCisgICAgICAgICAgICAjIGFwcGVuZCBpdCBhdCB0aGUgZW5k
IG9mIHRoaXMgcGF0Y2guCisgICAgICAgICAgICAkcHJvcGVydHlDaGFuZ2VFbnRyeSA9IGNyZWF0
ZVNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VFbnRyeSgkaW5kZXhQYXRoLCAkZmlsZU1vZGUpOworICAg
ICAgICB9CisKICAgICAgICAgaWYgKC9eLS0tIC4rXChmcm9tIChcUyspOihcZCspXCkkLykgewog
ICAgICAgICAgICAgJGNvcGllZEZyb21QYXRoID0gJDE7CiAgICAgICAgICAgICAkY29waWVkRmls
ZXN7JGluZGV4UGF0aH0gPSAkY29waWVkRnJvbVBhdGg7CkBAIC0xNjcsOSArMTg5LDcgQEAgd2hp
bGUgKDw+KSB7CiAgICAgJHBhdGNoIC49ICRlb2w7CiB9CiAKLWlmICgkcGF0Y2ggJiYgISRjb3Bp
ZWRGcm9tUGF0aCkgewotICAgIHB1c2ggQHBhdGNoZXMsICRwYXRjaDsKLX0KK3Byb2Nlc3NEaWZm
QW5kUHJvcGVydHlDaGFuZ2UoJGFwcGVuZFBhdGNoVG9MaXN0Q2FsbGJhY2ssICRwYXRjaCwgJHBy
b3BlcnR5Q2hhbmdlRW50cnkpIGlmICEkY29waWVkRnJvbVBhdGg7CiAKIGlmICgkbWVyZ2UpIHsK
ICAgICBkaWUgIi0tbWVyZ2UgaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIGZvciBTVk4iIHVu
bGVzcyBpc1NWTigpOwpAQCAtMTk1LDYgKzIxNSwxMiBAQCByZW1vdmVEaXJlY3Rvcmllc0lmTmVl
ZGVkKCk7CiAKIGV4aXQgJGdsb2JhbEV4aXRTdGF0dXM7CiAKK3N1YiBhcHBlbmRJdGVtVG9MaXN0
KCQkKQoreworICAgIG15ICgkbGlzdFJlZiwgJGl0ZW0pID0gQF87CisgICAgcHVzaChAJGxpc3RS
ZWYsICRpdGVtKTsKK30KKwogc3ViIGFkZERpcmVjdG9yaWVzSWZOZWVkZWQoJCkKIHsKICAgICBt
eSAoJHBhdGgpID0gQF87CkBAIC0zMzEsMjUgKzM1NywyNyBAQCBzdWIgcGF0Y2goJCkKICAgICBt
eSAoJHBhdGNoKSA9IEBfOwogICAgIHJldHVybiBpZiAhJHBhdGNoOwogCi0gICAgdW5sZXNzICgk
cGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8KSB7CisgICAgbXkgJGZ1bGxQYXRoID0gcGFy
c2VTdGFydE9mUGF0Y2goJHBhdGNoKSB8fCBwYXJzZVByb3BlcnR5Q2hhbmdlKCRwYXRjaCk7Cisg
ICAgdW5sZXNzICgkZnVsbFBhdGgpIHsKICAgICAgICAgbXkgJHNlcGFyYXRvciA9ICctJyB4IDY3
OwotICAgICAgICB3YXJuICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBpbjpcbiRzZXBhcmF0b3Jc
biRwYXRjaFxuJHNlcGFyYXRvclxuIjsKKyAgICAgICAgd2FybiAiRmFpbGVkIHRvIGZpbmQgJ0lu
ZGV4Oicgb3IgJ1Byb3BlcnR5IGNoYW5nZXMgb246JyBpbjpcbiRzZXBhcmF0b3JcbiRwYXRjaFxu
JHNlcGFyYXRvclxuIjsKICAgICAgICAgZGllIHVubGVzcyAkZm9yY2U7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgbXkgJGZ1bGxQYXRoID0gJDE7CiAKICAgICBteSAkZGVsZXRpb24gPSAw
OwogICAgIG15ICRhZGRpdGlvbiA9IDA7CiAgICAgbXkgJGlzQmluYXJ5ID0gMDsKICAgICBteSAk
aXNHaXRCaW5hcnkgPSAwOworICAgIG15ICRpc1NWTlByb3BlcnR5Q2hhbmdlID0gMDsKIAogICAg
ICRhZGRpdGlvbiA9IDEgaWYgKCRwYXRjaCA9fiAvXG4tLS0gLitcKHJldmlzaW9uIDBcKVxyP1xu
LyB8fCAkcGF0Y2ggPX4gL1xuQEAgLTAsMCAuKiBAQC8pICYmICFleGlzdHMoJGNvcGllZEZpbGVz
eyRmdWxsUGF0aH0pOwogICAgICRkZWxldGlvbiA9IDEgaWYgJHBhdGNoID1+IC9cbkBAIC4qIFwr
MCwwIEBALzsKICAgICAkaXNCaW5hcnkgPSAxIGlmICRwYXRjaCA9fiAvXG5DYW5ub3QgZGlzcGxh
eTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZVwuLzsKICAgICAkaXNHaXRCaW5hcnkgPSAx
IGlmICRwYXRjaCA9fiAvXG5HSVQgYmluYXJ5IHBhdGNoXG4vOworICAgICRpc1NWTlByb3BlcnR5
Q2hhbmdlID0gaXNTVk5Qcm9wZXJ0eSgkcGF0Y2gpOwogCi0gICAgaWYgKCEkYWRkaXRpb24gJiYg
ISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNHaXRCaW5hcnkpIHsKKyAgICBpZiAoISRh
ZGRpdGlvbiAmJiAhJGRlbGV0aW9uICYmICEkaXNCaW5hcnkgJiYgISRpc0dpdEJpbmFyeSAmJiAh
JGlzU1ZOUHJvcGVydHlDaGFuZ2UpIHsKICAgICAgICAgIyBTdGFuZGFyZCBwYXRjaCwgcGF0Y2gg
dG9vbCBjYW4gaGFuZGxlIHRoaXMuCiAgICAgICAgIGlmIChiYXNlbmFtZSgkZnVsbFBhdGgpIGVx
ICJDaGFuZ2VMb2ciKSB7CiAgICAgICAgICAgICBteSAkY2hhbmdlTG9nRG90T3JpZ0V4aXN0ZWQg
PSAtZiAiJHtmdWxsUGF0aH0ub3JpZyI7CkBAIC0zNzMsNiArNDAxLDkgQEAgc3ViIHBhdGNoKCQp
CiAgICAgICAgICAgICAjIERlbGV0aW9uCiAgICAgICAgICAgICBhcHBseVBhdGNoKCRwYXRjaCwg
JGZ1bGxQYXRoLCBbIi0tZm9yY2UiXSk7CiAgICAgICAgICAgICBzY21SZW1vdmUoJGZ1bGxQYXRo
KTsKKyAgICAgICAgfSBlbHNpZiAoJGlzU1ZOUHJvcGVydHlDaGFuZ2UpIHsKKyAgICAgICAgICAg
ICMgQ2hhbmdlIGV4ZWN1dGFibGUgYml0LgorICAgICAgICAgICAgdG9nZ2xlUHJvcGVydHlDaGFu
Z2UoJHBhdGNoLCAkZnVsbFBhdGgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIyBB
ZGRpdGlvbgogICAgICAgICAgICAgcmVuYW1lKCRmdWxsUGF0aCwgIiRmdWxsUGF0aC5vcmlnIikg
aWYgLWUgJGZ1bGxQYXRoOwpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tdW5hcHBseQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi11bmFwcGx5CShyZXZpc2lvbiA1
NzQ1NikKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDcgKzQ3LDcgQEAKICMKICMgTWlzc2luZyBmZWF0dXJlczoKICMKLSMgICBIYW5kbGUg
cHJvcGVydHkgY2hhbmdlcy4KKyMgICBIYW5kbGUgcHJvcGVydHkgY2hhbmdlcyBvdGhlciB0aGFu
IHRoZSBleGVjdXRhYmxlIGJpdC4KICMgICBIYW5kbGUgY29waWVkIGFuZCBtb3ZlZCBkaXJlY3Rv
cmllcyAod291bGQgcmVxdWlyZSBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0ZS1wYXRjaCkuCiAj
ICAgVXNlIHZlcnNpb24gbnVtYmVycyBpbiB0aGUgcGF0Y2ggZmlsZSBhbmQgZG8gYSAzLXdheSBt
ZXJnZS4KICMgICBXaGVuIHJldmVyc2luZyBhbiBhZGRpdGlvbiwgY2hlY2sgdGhhdCB0aGUgZmls
ZSBtYXRjaGVzIHdoYXQncyBiZWluZyByZW1vdmVkLgpAQCAtNzYsNiArNzYsNyBAQCBzdWIgcGF0
Y2goJCk7CiBzdWIgcmV2ZXJ0RGlyZWN0b3JpZXMoKTsKIHN1YiB1bmFwcGx5UGF0Y2goJCQ7JCk7
CiBzdWIgdW5zZXRDaGFuZ2VMb2dEYXRlKCQkKTsKK3N1YiBwcm9jZXNzUGF0Y2hDYWxsYmFjaygk
KTsKIAogbXkgJGZvcmNlID0gMDsKIG15ICRzaG93SGVscCA9IDA7CkBAIC0xMDEsMjggKzEwMiw1
MCBAQCBteSAkY29waWVkRnJvbVBhdGg7CiBteSAkZmlsdGVyOwogbXkgJGluZGV4UGF0aDsKIG15
ICRwYXRjaDsKK215ICRwcm9wZXJ0eUNoYW5nZVBhdGg7CitteSAkaXNHaXRGb3JtYXR0ZWRQYXRj
aCA9IDA7CitteSAkYXBwZW5kUGF0Y2hUb0xpc3QgPSAwOworbXkgJHByb3BlcnR5Q2hhbmdlRW50
cnkgPSAiIjsKIHdoaWxlICg8PikgewogICAgIHMvKFtcblxyXSspJC8vbWc7CiAgICAgbXkgJGVv
bCA9ICQxOwogICAgIGlmICghZGVmaW5lZCgkaW5kZXhQYXRoKSAmJiBtI15kaWZmIC0tZ2l0IFx3
LyMpIHsKICAgICAgICAgJGZpbHRlciA9IFwmZ2l0ZGlmZjJzdm5kaWZmOworICAgICAgICAkaXNH
aXRGb3JtYXR0ZWRQYXRjaCA9IDE7CiAgICAgfQogICAgICRfID0gJiRmaWx0ZXIoJF8pIGlmICRm
aWx0ZXI7Ci0gICAgaWYgKC9eSW5kZXg6ICguKykvKSB7Ci0gICAgICAgICRpbmRleFBhdGggPSAk
MTsKLSAgICAgICAgaWYgKCRwYXRjaCkgewotICAgICAgICAgICAgaWYgKCRjb3BpZWRGcm9tUGF0
aCkgewotICAgICAgICAgICAgICAgIHB1c2ggQGNvcGllZEZpbGVzLCAkcGF0Y2g7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBhdGNoKCRwYXRjaCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAkY29waWVkRnJvbVBhdGggPSAiIjsKLSAgICAgICAgICAgICRwYXRj
aCA9ICIiOworICAgIG15ICRmaWxlUGF0aDsKKyAgICBpZiAoJGZpbGVQYXRoID0gcGFyc2VTdGFy
dE9mUGF0Y2goJF8pKSB7CisgICAgICAgICRpbmRleFBhdGggPSAkZmlsZVBhdGg7CisgICAgICAg
ICRhcHBlbmRQYXRjaFRvTGlzdCA9IGRlZmluZWQoJHBhdGNoKTsKKyAgICB9IGVsc2lmICgkZmls
ZVBhdGggPSBwYXJzZVByb3BlcnR5Q2hhbmdlKCRfKSkgeworICAgICAgICAkcHJvcGVydHlDaGFu
Z2VQYXRoID0gJGZpbGVQYXRoOworICAgICAgICAkYXBwZW5kUGF0Y2hUb0xpc3QgPSBkZWZpbmVk
KCRwYXRjaCk7CisgICAgfQorICAgIGlmICgkYXBwZW5kUGF0Y2hUb0xpc3QpIHsKKyAgICAgICAg
aWYgKCRjb3BpZWRGcm9tUGF0aCkgeworICAgICAgICAgICAgcHVzaCBAY29waWVkRmlsZXMsICRw
YXRjaDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByb2Nlc3NEaWZmQW5kUHJvcGVy
dHlDaGFuZ2UoXCZwcm9jZXNzUGF0Y2hDYWxsYmFjaywgJHBhdGNoLCAkcHJvcGVydHlDaGFuZ2VF
bnRyeSk7CiAgICAgICAgIH0KKyAgICAgICAgJHByb3BlcnR5Q2hhbmdlRW50cnkgPSAiIjsKKyAg
ICAgICAgJGNvcGllZEZyb21QYXRoID0gIiI7CisgICAgICAgICRwYXRjaCA9ICIiOworICAgICAg
ICAkYXBwZW5kUGF0Y2hUb0xpc3QgPSAwOwogICAgIH0KKwogICAgIGlmICgkaW5kZXhQYXRoKSB7
CiAgICAgICAgICMgRml4IHBhdGhzIG9uIGRpZmYsIC0tLSwgYW5kICsrKyBsaW5lcyB0byBtYXRj
aCBwcmVjZWRpbmcgSW5kZXg6IGxpbmUuCiAgICAgICAgIHMvXi0tLSBcUysvLS0tICRpbmRleFBh
dGgvOworCisgICAgICAgIGlmICgkaXNHaXRGb3JtYXR0ZWRQYXRjaCAmJiAobXkgJGZpbGVNb2Rl
ID0gcGFyc2VHaXRGaWxlTW9kZSgkXykpKSB7CisgICAgICAgICAgICAjIFRoZSBnaXRkaWZmMnN2
bmRpZmYgZmlsdGVyIG9ubHkgb3BlcmF0ZXMgb24gYSBzaW5nbGUsIGJ1dCB0aGUgZXF1aXZhbGVu
dAorICAgICAgICAgICAgIyBwcm9wZXJ0eSBjaGFuZ2UgZW50cnkgaW4gU1ZOIHNwYW5zIG11bHRp
cGxlIGxpbmVzIHdoaWNoIHdlIG5lZWQgdG8gcGFyc2UuCisgICAgICAgICAgICAjIE5vdGUsIHdl
IHNhdmUgdGhlIHByb3BlcnR5IGNoYW5nZSBlbnRyeSBhdCB0aGlzIHBvaW50IHNvIHRoYXQgd2Ug
Y2FuCisgICAgICAgICAgICAjIGFwcGVuZCBpdCBhdCB0aGUgZW5kIG9mIHRoaXMgcGF0Y2guCisg
ICAgICAgICAgICAkcHJvcGVydHlDaGFuZ2VFbnRyeSA9IGNyZWF0ZVNWTkV4ZWN1dGFibGVCaXRD
aGFuZ2VFbnRyeSgkaW5kZXhQYXRoLCAkZmlsZU1vZGUpOworICAgICAgICB9CisKICAgICAgICAg
aWYgKC9eLS0tIC4rXChmcm9tIChcUyspOlxkK1wpJC8pIHsKICAgICAgICAgICAgICRjb3BpZWRG
cm9tUGF0aCA9ICQxOwogICAgICAgICB9CkBAIC0xMzgsMTMgKzE2MSwxMyBAQCBpZiAoJHBhdGNo
KSB7CiAgICAgaWYgKCRjb3BpZWRGcm9tUGF0aCkgewogICAgICAgICBwdXNoIEBjb3BpZWRGaWxl
cywgJHBhdGNoOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHBhdGNoKCRwYXRjaCk7CisgICAgICAg
IHByb2Nlc3NEaWZmQW5kUHJvcGVydHlDaGFuZ2UoXCZwcm9jZXNzUGF0Y2hDYWxsYmFjaywgJHBh
dGNoLCAkcHJvcGVydHlDaGFuZ2VFbnRyeSk7CiAgICAgfQogfQogCiAjIEhhbmRsZSBjb3BpZWQg
YW5kIG1vdmVkIGZpbGVzIGxhc3Qgc2luY2UgdGhleSBtYXkgaGF2ZSBoYWQgcG9zdC1jb3B5IGNo
YW5nZXMgdGhhdCBoYXZlIG5vdyBiZWVuIHVuYXBwbGllZAogZm9yICRwYXRjaCAoQGNvcGllZEZp
bGVzKSB7Ci0gICAgcGF0Y2goJHBhdGNoKTsKKyAgICBwcm9jZXNzUGF0Y2hDYWxsYmFjaygkcGF0
Y2gpOwogfQogCiBpZiAoaXNTVk4oKSkgewpAQCAtMTUzLDYgKzE3NiwxMSBAQCBpZiAoaXNTVk4o
KSkgewogCiBleGl0ICRnbG9iYWxFeGl0U3RhdHVzOwogCitzdWIgcHJvY2Vzc1BhdGNoQ2FsbGJh
Y2soJCkKK3sKKyAgICBwYXRjaChzaGlmdCk7Cit9CisKIHN1YiBjaGVja3N1bSgkKQogewogICAg
IG15ICRmaWxlID0gc2hpZnQ7CkBAIC0xNjgsMjMgKzE5NiwyNSBAQCBzdWIgcGF0Y2goJCkKICAg
ICBteSAoJHBhdGNoKSA9IEBfOwogICAgIHJldHVybiBpZiAhJHBhdGNoOwogCi0gICAgdW5sZXNz
ICgkcGF0Y2ggPX4gbXxeSW5kZXg6IChbXlxyXG5dKyl8KSB7CisgICAgbXkgJGZ1bGxQYXRoID0g
cGFyc2VTdGFydE9mUGF0Y2goJHBhdGNoKSB8fCBwYXJzZVByb3BlcnR5Q2hhbmdlKCRwYXRjaCk7
CisgICAgdW5sZXNzICgkZnVsbFBhdGgpIHsKICAgICAgICAgbXkgJHNlcGFyYXRvciA9ICctJyB4
IDY3OwotICAgICAgICB3YXJuICJGYWlsZWQgdG8gZmluZCAnSW5kZXg6JyBpbjpcbiRzZXBhcmF0
b3JcbiRwYXRjaFxuJHNlcGFyYXRvclxuIjsKKyAgICAgICAgd2FybiAiRmFpbGVkIHRvIGZpbmQg
J0luZGV4Oicgb3IgJ1Byb3BlcnR5IGNoYW5nZXMgb246JyBpbjpcbiRzZXBhcmF0b3JcbiRwYXRj
aFxuJHNlcGFyYXRvclxuIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBteSAkZnVsbFBh
dGggPSAkMTsKICAgICAkZGlyZWN0b3JpZXNUb0NoZWNre2Rpcm5hbWUoJGZ1bGxQYXRoKX0gPSAx
OwogCiAgICAgbXkgJGRlbGV0aW9uID0gMDsKICAgICBteSAkYWRkaXRpb24gPSAwOwogICAgIG15
ICRpc0JpbmFyeSA9IDA7CisgICAgbXkgJGlzU1ZOUHJvcGVydHlDaGFuZ2UgPSAwOwogCiAgICAg
JGFkZGl0aW9uID0gMSBpZiAoJHBhdGNoID1+IC9cbi0tLSAuK1wocmV2aXNpb24gMFwpXG4vIHx8
ICRwYXRjaCA9fiAvXG5AQCAtMCwwIC4qIEBALyk7CiAgICAgJGRlbGV0aW9uID0gMSBpZiAkcGF0
Y2ggPX4gL1xuQEAgLiogXCswLDAgQEAvOwogICAgICRpc0JpbmFyeSA9IDEgaWYgJHBhdGNoID1+
IC9cbkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlXC4vOworICAg
ICRpc1NWTlByb3BlcnR5Q2hhbmdlID0gaXNTVk5Qcm9wZXJ0eSgkcGF0Y2gpOwogCi0gICAgaWYg
KCEkYWRkaXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5KSB7CisgICAgaWYgKCEkYWRk
aXRpb24gJiYgISRkZWxldGlvbiAmJiAhJGlzQmluYXJ5ICYmICEkaXNTVk5Qcm9wZXJ0eUNoYW5n
ZSkgewogICAgICAgICAjIFN0YW5kYXJkIHBhdGNoLCBwYXRjaCB0b29sIGNhbiBoYW5kbGUgdGhp
cy4KICAgICAgICAgaWYgKGJhc2VuYW1lKCRmdWxsUGF0aCkgZXEgIkNoYW5nZUxvZyIpIHsKICAg
ICAgICAgICAgIG15ICRjaGFuZ2VMb2dEb3RPcmlnRXhpc3RlZCA9IC1mICIke2Z1bGxQYXRofS5v
cmlnIjsKQEAgLTIyNiw2ICsyNTYsOSBAQCBzdWIgcGF0Y2goJCkKIAogICAgICAgICAgICAgIyBT
aG93IHN0YXR1cyBpZiB0aGUgZmlsZSBpcyBtb2RpZmVkCiAgICAgICAgICAgICBzeXN0ZW0gInN2
biIsICJzdGF0IiwgJGZ1bGxQYXRoOworICAgICAgICB9IGVsc2lmICgkaXNTVk5Qcm9wZXJ0eUNo
YW5nZSkgeworICAgICAgICAgICAgIyBSZXZlcnNlIGNoYW5nZSBvZiBleGVjdXRhYmxlIGJpdC4K
KyAgICAgICAgICAgIHRvZ2dsZVByb3BlcnR5Q2hhbmdlKCRwYXRjaCwgJGZ1bGxQYXRoLCAxKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgUmV2ZXJzZSBhZGRpdGlvbgogICAgICAg
ICAgICAgdW5hcHBseVBhdGNoKCRwYXRjaCwgJGZ1bGxQYXRoLCBbIi0tZm9yY2UiXSk7CkluZGV4
OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvY3JlYXRl
U1ZORXhlY3V0YWJsZUJpdENoYW5nZUVudHJ5LnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9jcmVhdGVTVk5FeGVjdXRhYmxl
Qml0Q2hhbmdlRW50cnkucGwJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvY3JlYXRlU1ZORXhlY3V0YWJsZUJpdENoYW5nZUVu
dHJ5LnBsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisjIS91c3IvYmluL3BlcmwKKyMK
KyMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBpbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
IAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBSZXNlYXJjaCBp
biBNb3Rpb24gTGltaXRlZCBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFVu
aXQgdGVzdHMgb2YgVkNTVXRpbHM6OmNyZWF0ZVNWTkV4ZWN1dGFibGVCaXRDaGFuZ2VFbnRyeSgp
LgorCit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDI7Cit1c2UgVkNTVXRpbHM7CisKK215ICR0
aXRsZTsKK215ICRwYXRjaDsKK215ICRleHBlY3RlZFBhdGNoOworCisjIE5ldyB0ZXN0CiskdGl0
bGUgPSAiY3JlYXRlU1ZORXhlY3V0YWJsZUJpdENoYW5nZUVudHJ5OiBBZGQgZXhlY3V0YWJsZSBi
aXQgdG8gZmlsZS4iOworCiskZXhwZWN0ZWRQYXRjaCA9IDw8J0VORCc7CitQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBmaWxlX3RvX3BhdGNoLnR4dAorX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworQWRkZWQ6IHN2bjpleGVjdXRh
YmxlCisgICArICoKK0VORAorCiskcGF0Y2ggPSBjcmVhdGVTVk5FeGVjdXRhYmxlQml0Q2hhbmdl
RW50cnkoImZpbGVfdG9fcGF0Y2gudHh0IiwgIjEwMDc1NSIpOworb2soJHBhdGNoIGVxICRleHBl
Y3RlZFBhdGNoLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiY3JlYXRlU1ZORXhl
Y3V0YWJsZUJpdENoYW5nZUVudHJ5OiBSZW1vdmUgZXhlY3V0YWJsZSBiaXQgZnJvbSBmaWxlLiI7
CisKKyRleHBlY3RlZFBhdGNoID0gPDwnRU5EJzsKK1Byb3BlcnR5IGNoYW5nZXMgb246IGZpbGVf
dG9fcGF0Y2gudHh0CitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCitEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQorICAgLSAq
CitFTkQKKworJHBhdGNoID0gY3JlYXRlU1ZORXhlY3V0YWJsZUJpdENoYW5nZUVudHJ5KCJmaWxl
X3RvX3BhdGNoLnR4dCIsICIxMDA2NDQiKTsKK29rKCRwYXRjaCBlcSAkZXhwZWN0ZWRQYXRjaCwg
JHRpdGxlKTsKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191
bml0dGVzdC9wYXJzZUdpdEZpbGVNb2RlLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZUdpdEZpbGVNb2RlLnBsCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3Vu
aXR0ZXN0L3BhcnNlR2l0RmlsZU1vZGUucGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAK
KyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIGluIE1vdGlvbiBM
aW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyMgVW5pdCB0ZXN0cyBvZiBWQ1NVdGlsczo6cGFyc2VHaXRGaWxlTW9k
ZSgpLgorCit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDY7Cit1c2UgVkNTVXRpbHM7CisKK215
ICR0aXRsZTsKK215ICRwYXRjaExpbmU7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJwYXJzZUdp
dEZpbGVNb2RlOiBQYXJzZSBhIHZhbGlkIEdpdCBmaWxlIG1vZGUgZm9yIG5ldyBmaWxlLiI7CisK
KyRwYXRjaExpbmUgPSAibmV3IGZpbGUgbW9kZSAxMDA3NTUiOworb2socGFyc2VHaXRGaWxlTW9k
ZSgkcGF0Y2hMaW5lKSA9PSAxMDA3NTUsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9
ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhIHZhbGlkIEdpdCBmaWxlIG1vZGUgZm9yIGFuIGV4
aXN0aW5nIGZpbGUuIjsKKworJHBhdGNoTGluZSA9ICJuZXcgbW9kZSAxMDA3NTUiOworb2socGFy
c2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSA9PSAxMDA3NTUsICR0aXRsZSk7CisKKyMgTmV3IHRl
c3QKKyR0aXRsZSA9ICJwYXJzZUdpdEZpbGVNb2RlOiBQYXJzZSBhbiBpbnZhbGlkIEdpdCBmaWxl
IG1vZGUgZm9yIG5ldyBmaWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IGZpbGUgbW9kZSBkdW1t
eSI7CitvayghcGFyc2VHaXRGaWxlTW9kZSgkcGF0Y2hMaW5lKSwgJHRpdGxlKTsKKworIyBOZXcg
dGVzdAorJHRpdGxlID0gInBhcnNlR2l0RmlsZU1vZGU6IFBhcnNlIGFuIGludmFsaWQgR2l0IGZp
bGUgbW9kZSBmb3IgYW4gZXhpc3RpbmcgZmlsZS4iOworCiskcGF0Y2hMaW5lID0gIm5ldyBtb2Rl
IGR1bW15IjsKK29rKCFwYXJzZUdpdEZpbGVNb2RlKCRwYXRjaExpbmUpLCAkdGl0bGUpOworCisj
IE5ldyB0ZXN0CiskdGl0bGUgPSAicGFyc2VHaXRGaWxlTW9kZTogRW5zdXJlIHRoYXQgYSBudW1l
cmljIGZpbGUgbW9kZSBsb25nZXIgdGhhbiA2IGRpZ2l0cyBpcyBpbnZhbGlkIGZvciBhIG5ldyBm
aWxlLiI7CisKKyRwYXRjaExpbmUgPSAibmV3IGZpbGUgbW9kZSAxMDA3NTU5IjsKK29rKCFwYXJz
ZUdpdEZpbGVNb2RlKCRwYXRjaExpbmUpLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUg
PSAicGFyc2VHaXRGaWxlTW9kZTogRW5zdXJlIHRoYXQgYSBudW1lcmljIGZpbGUgbW9kZSBsb25n
ZXIgdGhhbiA2IGRpZ2l0cyBpcyBpbnZhbGlkIGZvciBhbiBleGlzdGluZyBmaWxlLiI7CisKKyRw
YXRjaExpbmUgPSAibmV3IG1vZGUgMTAwNzU1OSI7CitvayghcGFyc2VHaXRGaWxlTW9kZSgkcGF0
Y2hMaW5lKSwgJHRpdGxlKTsKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9W
Q1NVdGlsc191bml0dGVzdC9wYXJzZVN0YXJ0T2ZQYXRjaE9yUHJvcGVydHlDaGFuZ2UucGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0
ZXN0L3BhcnNlU3RhcnRPZlBhdGNoT3JQcm9wZXJ0eUNoYW5nZS5wbAkocmV2aXNpb24gMCkKKysr
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9wYXJzZVN0
YXJ0T2ZQYXRjaE9yUHJvcGVydHlDaGFuZ2UucGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQg
QEAKKyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIGluIE1vdGlv
biBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyMgVW5pdCB0ZXN0cyBmb3IgVkNTVXRpbHM6OnBhcnNlU3RhcnRP
ZlBhdGNoKCkgYW5kIFZDU1V0aWxzOjpwYXJzZVByb3BlcnR5Q2hhbmdlKCkuCisKK3VzZSBUZXN0
OjpTaW1wbGUgdGVzdHMgPT4gMjsKK3VzZSBWQ1NVdGlsczsKKworbXkgJHRpdGxlOworCisjIE5l
dyB0ZXN0CiskdGl0bGUgPSAicGFyc2VTdGFydE9mUGF0Y2g6IFRlc3Qgc3RhcnQgb2YgU1ZOIHBh
dGNoLiI7CitvayhwYXJzZVN0YXJ0T2ZQYXRjaCgiSW5kZXg6IGZpbGVfdG9fcGF0Y2gudHh0XG4i
KSBlcSAiZmlsZV90b19wYXRjaC50eHQiLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUg
PSAicGFyc2VQcm9wZXJ0eUNoYW5nZTogVGVzdCBzdGFydCBvZiBTVk4gcHJvcGVydHkgY2hhbmdl
IGVudHJ5LiI7CitvayhwYXJzZVByb3BlcnR5Q2hhbmdlKCJQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBm
aWxlX3RvX3BhdGNoLnR4dFxyXG4iKSBlcSAiZmlsZV90b19wYXRjaC50eHQiLCAkdGl0bGUpOwpJ
bmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3By
b2Nlc3NEaWZmQW5kUHJvcGVydHlDaGFuZ2UucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3Byb2Nlc3NEaWZmQW5kUHJvcGVy
dHlDaGFuZ2UucGwJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvVkNTVXRpbHNfdW5pdHRlc3QvcHJvY2Vzc0RpZmZBbmRQcm9wZXJ0eUNoYW5nZS5wbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMDIgQEAKKyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFJlc2VhcmNoIGluIE1vdGlvbiBM
aW1pdGVkIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVW5pdCB0ZXN0cyBv
ZiBWQ1NVdGlsczo6cHJvY2Vzc0RpZmZBbmRQcm9wZXJ0eUNoYW5nZSgpLgorCit1c2UgVGVzdDo6
U2ltcGxlIHRlc3RzID0+IDI7Cit1c2UgVkNTVXRpbHM7CisKK3N1YiBhcHBlbmRUb1N0cmluZygk
JCkKK3sKKyAgICBteSAoJHMxUmVmLCAkczIpID0gQF87CisgICAgJCRzMVJlZiAuPSAkczI7Cit9
CisKK215ICR0aXRsZTsKK215ICRwYXRjaDsKK215ICRpbnB1dFBhdGNoOworbXkgJGlucHV0UGF0
Y2hDaGFuZ2VFbnRyeTsKK215ICRleHBlY3RlZFBhdGNoOworbXkgJGNhbGxiYWNrRnVuY3Rpb24g
PSBzdWIgeyAkeCA9IHNoaWZ0OyBhcHBlbmRUb1N0cmluZyhcJHBhdGNoLCAkeCk7IH07CisKKyMg
TmV3IHRlc3QKKyR0aXRsZSA9ICJwcm9jZXNzRGlmZkFuZFByb3BlcnR5Q2hhbmdlOiBUZXN0cyB0
aGF0IGEgR2l0IGZpbGUgbW9kZSBkaWZmIGlzIGlnbm9yZWQgaW4gZmF2b3Igb2YgdGhlIFNWTiBl
cXVpdmFsZW50LiI7CisKKyRpbnB1dFBhdGNoID0gPDwnRU5EJzsKK2RpZmYgLS1naXQgYS9maWxl
X3RvX3BhdGNoLnR4dCBiL2ZpbGVfdG9fcGF0Y2gudHh0CitvbGQgbW9kZSAxMDA2NDQKK25ldyBt
b2RlIDEwMDc1NQorRU5ECisKKyRpbnB1dFBhdGNoQ2hhbmdlRW50cnkgPSBjcmVhdGVTVk5FeGVj
dXRhYmxlQml0Q2hhbmdlRW50cnkoImZpbGVfdG9fcGF0Y2gudHh0IiwgIjEwMDc1NSIpOworCisk
ZXhwZWN0ZWRQYXRjaCA9IDw8J0VORCc7CitQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBmaWxlX3RvX3Bh
dGNoLnR4dAorX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXworQWRkZWQ6IHN2bjpleGVjdXRhYmxlCisgICArICoKK0VORAor
CiskcGF0Y2ggPSAiIjsKK3Byb2Nlc3NEaWZmQW5kUHJvcGVydHlDaGFuZ2UoJGNhbGxiYWNrRnVu
Y3Rpb24sICRpbnB1dFBhdGNoLCAkaW5wdXRQYXRjaENoYW5nZUVudHJ5KTsKK29rKCRwYXRjaCBl
cSAkZXhwZWN0ZWRQYXRjaCwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorIyBOb3RlLCB0aGlzIHRl
c3QgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSByZXN1bHRpbmcgcGF0Y2ggaXMg
ZGlmZiB0aGVuIHByb3BlcnR5IGNoYW5nZS4KKyMgVGhlIGV4cGVjdGVkIHBhdGNoIGlzIG5vdCBh
IHZhbGlkIFNWTiBmb3JtYXR0ZWQgcGF0Y2guCiskdGl0bGUgPSAicHJvY2Vzc0RpZmZBbmRQcm9w
ZXJ0eUNoYW5nZTogVGVzdHMgdGhhdCB0aGUgb3JkZXIgb2YgdGhlIHBhdGNoIGlzIGRpZmYgdGhl
biBwcm9wZXJ0eSBjaGFuZ2UuIjsKKworJGlucHV0UGF0Y2ggPSA8PCdFTkQnOworZGlmZiAtLWdp
dCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK29sZCBtb2RlIDEwMDY0NAorbmV3IG1vZGUgMTAwNzU1
CitpbmRleCAyNGE2ZjBkLi4zN2RmY2JjCistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUK
K0BAIC0xLDMgKzEsNCBAQAorKworIE1PRFVMRVMgPSBKYXZhU2NyaXB0Q29yZSBKYXZhU2NyaXB0
R2x1ZSBXZWJDb3JlIFdlYktpdCBXZWJLaXRUb29scworIAorIGFsbDoKK0VORAorCiskaW5wdXRQ
YXRjaENoYW5nZUVudHJ5ID0gY3JlYXRlU1ZORXhlY3V0YWJsZUJpdENoYW5nZUVudHJ5KCJNYWtl
ZmlsZSIsICIxMDA3NTUiKTsKKworJGV4cGVjdGVkUGF0Y2ggPSAkaW5wdXRQYXRjaDsKKyRleHBl
Y3RlZFBhdGNoIC49IDw8J0VORCc7CitQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBNYWtlZmlsZQorX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXworQWRkZWQ6IHN2bjpleGVjdXRhYmxlCisgICArICoKK0VORAorCiskcGF0Y2ggPSAi
IjsKK3Byb2Nlc3NEaWZmQW5kUHJvcGVydHlDaGFuZ2UoJGNhbGxiYWNrRnVuY3Rpb24sICRpbnB1
dFBhdGNoLCAkaW5wdXRQYXRjaENoYW5nZUVudHJ5KTsKK29rKCRwYXRjaCBlcSAkZXhwZWN0ZWRQ
YXRjaCwgJHRpdGxlKTsK
</data>
<flag name="review"
          id="36786"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>