<?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>33124</bug_id>
          
          <creation_ts>2010-01-03 14:54:15 -0800</creation_ts>
          <short_desc>Break the Perl unit tests into separate files</short_desc>
          <delta_ts>2010-01-04 07:50:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>176455</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-03 14:54:15 -0800</bug_when>
    <thetext>In bug 33098, comment 15, David K. suggested breaking the Perl unit tests up into separate files in their own folder(s).

I&apos;m thinking the following:

/Scripts
    /perl
        /VCSUtils_unittests (one folder per .pm file)
            fixChangeLog.pl
            runPatchCommand.pl
            etc. (one file per subroutine)

The reason for the extra directory (perl) is to have a place other than the top level Scripts folder for supporting Perl files (similar to Python&apos;s modules folder).  For example, we could eventually move VCSUtils.pm into /perl to be a sibling of /VCSUtils_unittests, and so on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176458</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-03 14:58:44 -0800</bug_when>
    <thetext>Maybe &quot;PerlModules&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176462</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-03 15:05:17 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Maybe &quot;PerlModules&quot; ?

Should &quot;modules&quot; be renamed to &quot;PythonModules&quot; too?  I don&apos;t know if there is a convention is for python module directories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176463</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-03 15:11:34 -0800</bug_when>
    <thetext>&gt; Should &quot;modules&quot; be renamed to &quot;PythonModules&quot; too?  I don&apos;t know if there is a
&gt; convention is for python module directories.

Probably.  Eric and I have a bunch of FIXIT tasks that we&apos;re going to try to knock off soon.  I&apos;ll add this to the list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176465</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-03 15:59:44 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; Maybe &quot;PerlModules&quot; ?
&gt; 
&gt; Should &quot;modules&quot; be renamed to &quot;PythonModules&quot; too?  I don&apos;t know if there is a
&gt; convention is for python module directories.

Yeah, there are:

http://www.python.org/dev/peps/pep-0008/

The convention is to use all lowercase.  (Packages are essentially folders of modules and nested packages.)

I had some thoughts on this here:

https://bugs.webkit.org/show_bug.cgi?id=32773#c11

One consideration is how the name will look in our code.  In our Python scripts in the top level Scripts folder, we will be writing things like &quot;import &lt;directory_name&gt;.bugzilla&quot;, etc.

So I think something like &quot;webkitpy&quot; (or &quot;pywebkit&quot;) might be good.  That way we will be writing things like:

import webkitpy.style.checker;
import webkitpy.bugzilla...
import webkitpy.scm...

It&apos;s also in the style of other Python names (e.g. pydoc, numpy, etc).

A couple nits about putting the word &quot;modules&quot; in the name is that (1) it seems redundant, and (2) we may also have packages immediately below.  For example, the style-related code will I think become a style package.

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

The whole folder could be viewed as a master &quot;webkit&quot; package of all our Python code.

In terms of naming the Perl folder, I don&apos;t know if the package/module terminology in Perl is completely parallel to Python&apos;s or not, but in either case I&apos;m not sure whether the extra word &quot;says&quot; much more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176467</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-03 16:24:36 -0800</bug_when>
    <thetext>(In reply to comment #4)

Here&apos;s another idea--

pykit
perlkit

On a different note, webkitpy would let us ensure that the folders appear near each other when viewed alphabetically:

webkitperl 
webkitpy

The Python style guide also says package names should be short.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176543</commentid>
    <comment_count>6</comment_count>
      <attachid>45769</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-03 23:51:20 -0800</bug_when>
    <thetext>Created attachment 45769
Proposed patch

This also renames test-webkit-perl to test-webkitperl to match the new folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176544</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-03 23:53:52 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=45769) [details]
&gt; Proposed patch
&gt; 
&gt; This also renames test-webkit-perl to test-webkitperl to match the new folder.

Oh, and we need to make sure that the following file has the &quot;allow-tabs&quot; property set (not sure about the exact name of the property):

Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl

(Previously, it was VCSUtils_unittest.pl that had this property.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176545</commentid>
    <comment_count>8</comment_count>
      <attachid>45769</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-03 23:57:30 -0800</bug_when>
    <thetext>Comment on attachment 45769
Proposed patch

looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176563</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-04 00:43:19 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 45769 [details])
&gt; looks OK.

Thanks, Eric!  I&apos;ll let one of you guys manually commit it since I don&apos;t have commit status and there&apos;s a good chance this won&apos;t work with cq.

As a reminder, test-webkitperl needs to have a+x (same as its copy source), and Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl needs to have the SVN allow-tabs property (again, same as its corresponding copy source).

Hopefully it will land without any problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176587</commentid>
    <comment_count>10</comment_count>
      <attachid>45780</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-04 01:19:33 -0800</bug_when>
    <thetext>Created attachment 45780
Proposed patch 2

Updated as described here:

https://bugs.webkit.org/show_bug.cgi?id=33135#c5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176631</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-04 02:52:14 -0800</bug_when>
    <thetext>Attachment 45780 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Skipping input &apos;WebKitTools/Scripts/test-webkit-perl&apos;: Can&apos;t open for reading
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl:74:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl:75:  Line contains tab character.  [whitespace/tab] [5]
Skipping input &apos;WebKitTools/Scripts/VCSUtils_unittest.pl&apos;: Can&apos;t open for reading
Total errors found: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176671</commentid>
    <comment_count>12</comment_count>
      <attachid>45780</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-04 06:27:33 -0800</bug_when>
    <thetext>Comment on attachment 45780
Proposed patch 2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176676</commentid>
    <comment_count>13</comment_count>
      <attachid>45780</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-04 06:55:44 -0800</bug_when>
    <thetext>Comment on attachment 45780
Proposed patch 2

&gt; Index: WebKitTools/Scripts/test-webkitperl
&gt; +# Use an absolute path so this script can be run from any directory.
&gt; +$scriptsDir = $FindBin::Bin;
&gt; +$scriptsDir =~ s|/+$||; # Remove trailing &apos;/&apos;
&gt; +
&gt; +runtests(&quot;$scriptsDir/VCSUtils_unittest.pl&quot;);

FWIW, we usually use File::Spec-&gt;catfile($scriptDir, &quot;VCSUtils_unittest.pl&quot;) to concatenate paths.  Then you don&apos;t have to worry about trailing slashes.

&gt; Index: WebKitTools/Scripts/test-webkitperl
&gt; +@files = map &quot;$scriptsDir/webkitperl/VCSUtils_unittest/$_&quot;, @files; # prepend

Same here:  File::Spec-&gt;catfile($scriptsDir, &quot;webkitperl/VCSUtils_unittest&quot;, $_)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176678</commentid>
    <comment_count>14</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-04 07:09:44 -0800</bug_when>
    <thetext>$ svn commit WebKitTools
Sending        WebKitTools/ChangeLog
Sending        WebKitTools/Scripts/VCSUtils.pm
Deleting       WebKitTools/Scripts/VCSUtils_unittest.pl
Deleting       WebKitTools/Scripts/test-webkit-perl
Sending        WebKitTools/Scripts/test-webkit-scripts
Adding         WebKitTools/Scripts/test-webkitperl
Adding         WebKitTools/Scripts/webkitperl
Adding         WebKitTools/Scripts/webkitperl/VCSUtils_unittest
Adding         WebKitTools/Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl
Adding         WebKitTools/Scripts/webkitperl/VCSUtils_unittest/generatePatchCommand.pl
Adding         WebKitTools/Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl
Transmitting file data .......
Committed revision 52732.

&lt;http://trac.webkit.org/changeset/52732&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176693</commentid>
    <comment_count>15</comment_count>
      <attachid>45780</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-04 07:50:15 -0800</bug_when>
    <thetext>Comment on attachment 45780
Proposed patch 2

&gt; Index: WebKitTools/Scripts/test-webkitperl
&gt; +# VCSUtils subroutines
&gt; +my @files = (
&gt; +    &quot;fixChangeLogPatch.pl&quot;,
&gt; +    &quot;generatePatchCommand.pl&quot;,
&gt; +    &quot;runPatchCommand.pl&quot;,
&gt; +);
&gt; +
&gt; +@files = map &quot;$scriptsDir/webkitperl/VCSUtils_unittest/$_&quot;, @files; # prepend
&gt; +
&gt; +runtests(@files);

In the future, consider making this dynamic by reading in file names from within Perl using readdir() and friends, or using globbing like this:  @files = &lt;$scriptsDir/webkitperl/*_unittest/*.pl&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45769</attachid>
            <date>2010-01-03 23:51:20 -0800</date>
            <delta_ts>2010-01-04 06:28:07 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch-tools4-1.txt</filename>
            <type>text/plain</type>
            <size>47969</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUyNzA1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDEtMDMgIENocmlzIEplcmRvbmVrICA8
Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIERpdmlkZWQgdGhlIFBlcmwgdW5pdCB0ZXN0cyBpbnRvIHNlcGFy
YXRlIGZpbGVzIGFuZCBwdXQKKyAgICAgICAgdGhlbSBpbiBhIHNlcGFyYXRlIGRpcmVjdG9yeSwg
YW5kIHJlbmFtZWQgdGVzdC13ZWJraXQtcGVybAorICAgICAgICB0byB0ZXN0LXdlYmtpdHBlcmwu
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTI0
CisKKyAgICAgICAgKiBTY3JpcHRzL1ZDU1V0aWxzLnBtOgorICAgICAgICAgIC0gUmVuYW1lZCBn
ZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgpIHRvIGdlbmVyYXRlUGF0Y2hDb21tYW5kKCkuCisKKyAg
ICAgICAgKiBTY3JpcHRzL1ZDU1V0aWxzX3VuaXR0ZXN0LnBsOiBSZW1vdmVkLgorICAgICAgICAg
IC0gRGl2aWRlZCBpbnRvIHRocmVlIGZpbGVzIGluIFNjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGls
c191bml0dGVzdC4KKworICAgICAgICAqIFNjcmlwdHMvdGVzdC13ZWJraXQtcGVybDogUmVtb3Zl
ZC4KKyAgICAgICAgICAtIFJlbmFtZWQgdG8gdGVzdC13ZWJraXRwZXJsLgorCisgICAgICAgICog
U2NyaXB0cy90ZXN0LXdlYmtpdHBlcmw6IENvcGllZCBmcm9tIFNjcmlwdHMvdGVzdC13ZWJraXQt
cGVybC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmw6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdDogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2ZpeENoYW5nZUxvZ1BhdGNoLnBsOiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvZ2Vu
ZXJhdGVQYXRjaENvbW1hbmQucGw6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVy
bC9WQ1NVdGlsc191bml0dGVzdC9ydW5QYXRjaENvbW1hbmQucGw6IENvcGllZCBmcm9tIFNjcmlw
dHMvVkNTVXRpbHNfdW5pdHRlc3QucGwuCisKIDIwMTAtMDEtMDMgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkICJidWlsZCIgZml4LiAgTmVlZCB0
byBpbXBvcnQgU2NyaXB0RXJyb3IuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxz
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHJldmlz
aW9uIDUyNzA1KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkod29ya2luZyBj
b3B5KQpAQCAtNTIwLDcgKzUyMCw3IEBAIHN1YiBmaXhDaGFuZ2VMb2dQYXRjaCgkKQogIyBSZXR1
cm5zICgkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKS4KICMKICMgVGhpcyBzdWJyb3V0aW5lIGhh
cyB1bml0IHRlc3RzIGluIFZDU1V0aWxzX3VuaXR0ZXN0LnBsLgotc3ViIGdlbmVyYXRlUnVuUGF0
Y2hDb21tYW5kKCQpCitzdWIgZ2VuZXJhdGVQYXRjaENvbW1hbmQoJCkKIHsKICAgICBteSAoJHBh
c3NlZEFyZ3NIYXNoUmVmKSA9IEBfOwogCkBAIC01OTIsNyArNTkyLDcgQEAgc3ViIHJ1blBhdGNo
Q29tbWFuZCgkJCQ7JCkKIHsKICAgICBteSAoJHBhdGNoLCAkcmVwb3NpdG9yeVJvb3RQYXRoLCAk
cGF0aFJlbGF0aXZlVG9Sb290LCAkYXJncykgPSBAXzsKIAotICAgIG15ICgkcGF0Y2hDb21tYW5k
LCAkaXNGb3JjaW5nKSA9IGdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kKCRhcmdzKTsKKyAgICBteSAo
JHBhdGNoQ29tbWFuZCwgJGlzRm9yY2luZykgPSBnZW5lcmF0ZVBhdGNoQ29tbWFuZCgkYXJncyk7
CiAKICAgICAjIFRlbXBvcmFyaWx5IGNoYW5nZSB0aGUgd29ya2luZyBkaXJlY3Rvcnkgc2luY2Ug
dGhlIHBhdGggZm91bmQKICAgICAjIGluIHRoZSBwYXRjaCdzICJJbmRleDoiIGxpbmUgaXMgcmVs
YXRpdmUgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdApJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9W
Q1NVdGlsc191bml0dGVzdC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL1ZD
U1V0aWxzX3VuaXR0ZXN0LnBsCShyZXZpc2lvbiA1MjcwNSkKKysrIFdlYktpdFRvb2xzL1Njcmlw
dHMvVkNTVXRpbHNfdW5pdHRlc3QucGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDI0ICswLDAgQEAK
LSMhL3Vzci9iaW4vcGVybAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQ2hyaXMgSmVy
ZG9uZWsgKGNocmlzLmplcmRvbmVrQGdtYWlsLmNvbSkKLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIyAKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMgCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
IyBVbml0IHRlc3RzIG9mIFZDU1V0aWxzLnBtLgotCi11c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+
IDIxOwotCi11c2UgRmluZEJpbjsKLXVzZSBsaWIgJEZpbmRCaW46OkJpbjsgIyBzbyB0aGlzIHNj
cmlwdCBjYW4gYmUgcnVuIGZyb20gYW55IGRpcmVjdG9yeS4KLQotdXNlIFZDU1V0aWxzOwotCi0j
IENhbGwgYSBmdW5jdGlvbiB3aGlsZSBzdXBwcmVzc2luZyBTVERFUlIuCi1zdWIgY2FsbFNpbGVu
dGx5KCRAKSB7Ci0gICAgbXkgKCRmdW5jLCBAYXJncykgPSBAXzsKLQotICAgIG9wZW4oT0xERVJS
LCAiPiZTVERFUlIiKTsKLSAgICBjbG9zZShTVERFUlIpOwotICAgIG15IEByZXR1cm5WYWx1ZSA9
ICYkZnVuYyhAYXJncyk7Ci0gICAgb3BlbihTVERFUlIsICI+Jk9MREVSUiIpOwotICAgIGNsb3Nl
KE9MREVSUik7ICMgRklYTUU6IElzIHRoaXMgbmVjZXNzYXJ5PwotCi0gICAgcmV0dXJuIEByZXR1
cm5WYWx1ZTsKLX0KLQotIyBmaXhDaGFuZ2VMb2dQYXRjaAotIwotIyBUaGUgc291cmNlIENoYW5n
ZUxvZyBmb3IgdGhlc2UgdGVzdHMgaXMgdGhlIGZvbGxvd2luZzoKLSMgCi0jIDIwMDktMTItMjIg
IEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSMgCi0jICAgICAgICAgUmV2aWV3ZWQgYnkg
UmF5LgotIyAKLSMgICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIyLgotIyAK
LSMgICAgICAgICAqIEZpbGU6Ci0jICAgICAgICAgKiBGaWxlMjoKLSMgCi0jIDIwMDktMTItMjEg
IEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSMgCi0jICAgICAgICAgUmV2aWV3ZWQgYnkg
UmF5LgotIyAKLSMgICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIxLgotIyAK
LSMgICAgICAgICAqIEZpbGU6Ci0jICAgICAgICAgKiBGaWxlMjoKLQotbXkgJHRpdGxlOwotbXkg
JGluOwotbXkgJG91dDsKLQotIyBOZXcgdGVzdAotJHRpdGxlID0gImZpeENoYW5nZUxvZ1BhdGNo
OiBbbm8gY2hhbmdlXSBGaXJzdCBsaW5lIGlzIG5ldyBsaW5lLiI7Ci0KLSRpbiA9IDw8J0VORCc7
Ci0tLS0gQ2hhbmdlTG9nCi0rKysgQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDExIEBACi0rMjAwOS0x
Mi0yMiAgQm9iICA8Ym9iQGVtYWlsLmFkZHJlc3M+Ci0rCi0rICAgICAgICBSZXZpZXdlZCBieSBS
YXkuCi0rCi0rICAgICAgICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCi0r
Ci0rICAgICAgICAqIEZpbGU6Ci0rCi0gMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5h
ZGRyZXNzPgotIAotICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotRU5ECi0KLW9rKGZpeENoYW5n
ZUxvZ1BhdGNoKCRpbikgZXEgJGluLCAkdGl0bGUpOwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAi
Zml4Q2hhbmdlTG9nUGF0Y2g6IFtubyBjaGFuZ2VdIE5vIGRhdGUgc3RyaW5nLiI7Ci0KLSRpbiA9
IDw8J0VORCc7Ci0tLS0gQ2hhbmdlTG9nCi0rKysgQ2hhbmdlTG9nCi1AQCAtNiw2ICs2LDcgQEAK
LSAKLSAgICAgICAgICogRmlsZToKLSAgICAgICAgICogRmlsZTI6Ci0rICAgICAgICAqIEZpbGUz
OgotIAotIDIwMDktMTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLUVORAot
Ci1vayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRpbiwgJHRpdGxlKTsKLQotIyBOZXcgdGVz
dAotJHRpdGxlID0gImZpeENoYW5nZUxvZ1BhdGNoOiBbbm8gY2hhbmdlXSBOZXcgZW50cnkgaW5z
ZXJ0ZWQgaW4gbWlkZGxlLiI7Ci0KLSRpbiA9IDw8J0VORCc7Ci0tLS0gQ2hhbmdlTG9nCi0rKysg
Q2hhbmdlTG9nCi1AQCAtMTEsNiArMTEsMTQgQEAKLSAKLSAgICAgICAgIFJldmlld2VkIGJ5IFJh
eS4KLSAKLSsgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMS4KLSsK
LSsgICAgICAgICogRmlsZToKLSsKLSsyMDA5LTEyLTIxICBBbGljZSAgPGFsaWNlQGVtYWlsLmFk
ZHJlc3M+Ci0rCi0rICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi0rCi0gICAgICAgICBDaGFuZ2Vk
IHNvbWUgY29kZSBvbiAyMDA5LTEyLTIxLgotIAotICAgICAgICAgKiBGaWxlOgotRU5ECi0KLW9r
KGZpeENoYW5nZUxvZ1BhdGNoKCRpbikgZXEgJGluLCAkdGl0bGUpOwotCi0jIE5ldyB0ZXN0Ci0k
dGl0bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IExlYWRpbmcgY29udGV4dCBpbmNsdWRlcyBmaXJz
dCBsaW5lLiI7Ci0KLSRpbiA9IDw8J0VORCc7Ci0tLS0gQ2hhbmdlTG9nCi0rKysgQ2hhbmdlTG9n
Ci1AQCAtMSw1ICsxLDEzIEBACi0gMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRy
ZXNzPgotIAotKyAgICAgICAgUmV2aWV3ZWQgYnkgU3VlLgotKwotKyAgICAgICAgQ2hhbmdlZCBz
b21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotKzIw
MDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSsKLSAgICAgICAgIFJldmll
d2VkIGJ5IFJheS4KLSAKLSAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIu
Ci1FTkQKLQotJG91dCA9IDw8J0VORCc7Ci0tLS0gQ2hhbmdlTG9nCi0rKysgQ2hhbmdlTG9nCi1A
QCAtMSwzICsxLDExIEBACi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNz
PgotKwotKyAgICAgICAgUmV2aWV3ZWQgYnkgU3VlLgotKwotKyAgICAgICAgQ2hhbmdlZCBzb21l
IG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotIDIwMDkt
MTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLSAgICAgICAgIFJldmlld2Vk
IGJ5IFJheS4KLUVORAotCi1vayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRvdXQsICR0aXRs
ZSk7Ci0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDogTGVhZGluZyBj
b250ZXh0IGRvZXMgbm90IGluY2x1ZGUgZmlyc3QgbGluZS4iOwotCi0kaW4gPSA8PCdFTkQnOwot
QEAgLTIsNiArMiwxNCBAQAotIAotICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotIAotKyAgICAg
ICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBG
aWxlOgotKwotKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSsKLSsg
ICAgICAgIFJldmlld2VkIGJ5IFJheS4KLSsKLSAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9u
IDIwMDktMTItMjIuCi0gCi0gICAgICAgICAqIEZpbGU6Ci1FTkQKLQotJG91dCA9IDw8J0VORCc7
Ci1AQCAtMSwzICsxLDExIEBACi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRy
ZXNzPgotKwotKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotKwotKyAgICAgICAgQ2hhbmdlZCBz
b21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotIDIw
MDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLSAgICAgICAgIFJldmll
d2VkIGJ5IFJheS4KLUVORAotCi1vayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRvdXQsICR0
aXRsZSk7Ci0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDogTm9uLWNv
bnNlY3V0aXZlIGxpbmUgYWRkaXRpb25zLiI7Ci0KLSMgVGhpcyBjYW4gb2NjdXIsIGZvciBleGFt
cGxlLCBpZiB0aGUgbmV3IENoYW5nZUxvZyBlbnRyeSBpbmNsdWRlcwotIyB0cmFpbGluZyB3aGl0
ZSBzcGFjZSBpbiB0aGUgZmlyc3QgYmxhbmsgbGluZSBidXQgbm90IHRoZSBzZWNvbmQuCi0jIEEg
ZGlmZiBjb21tYW5kIGNhbiB0aGVuIG1hdGNoIHRoZSBzZWNvbmQgYmxhbmsgbGluZSBvZiB0aGUg
bmV3Ci0jIENoYW5nZUxvZyBlbnRyeSB3aXRoIHRoZSBmaXJzdCBibGFuayBsaW5lIG9mIHRoZSBv
bGQuCi0jIFRoZSBzdm4gZGlmZiBjb21tYW5kIHdpdGggdGhlIGRlZmF1bHQgLS1kaWZmLWNtZCBo
YXMgZG9uZSB0aGlzLgotJGluID0gPDwnRU5EJzsKLUBAIC0xLDUgKzEsMTEgQEAKLSAyMDA5LTEy
LTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+Ci0rIDxwcmV0ZW5kLXdoaXRlc3BhY2U+
Ci0rICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi0gCi0rICAgICAgICBDaGFuZ2VkIHNvbWUgbW9y
ZSBjb2RlIG9uIDIwMDktMTItMjIuCi0rCi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFp
bC5hZGRyZXNzPgotKwotICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotIAotICAgICAgICAgQ2hh
bmdlZCBzb21lIGNvZGUgb24gMjAwOS0xMi0yMi4KLUVORAotCi0kb3V0ID0gPDwnRU5EJzsKLUBA
IC0xLDMgKzEsOSBAQAotKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4K
LSsgPHByZXRlbmQtd2hpdGVzcGFjZT4KLSsgICAgICAgIFJldmlld2VkIGJ5IFJheS4KLSsKLSsg
ICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMi4KLSsKLSAyMDA5LTEy
LTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+Ci0gCi0gICAgICAgICBSZXZpZXdlZCBi
eSBSYXkuCi1FTkQKLQotb2soZml4Q2hhbmdlTG9nUGF0Y2goJGluKSBlcSAkb3V0LCAkdGl0bGUp
OwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IEFkZGl0aW9uYWwg
ZWRpdHMgYWZ0ZXIgbmV3IGVudHJ5LiI7Ci0KLSRpbiA9IDw8J0VORCc7Ci1AQCAtMiwxMCArMiwx
NyBAQAotIAotICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotIAotKyAgICAgICAgQ2hhbmdlZCBz
b21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotKzIw
MDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSsKLSsgICAgICAgIFJldmll
d2VkIGJ5IFJheS4KLSsKLSAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIu
Ci0gCi0gICAgICAgICAqIEZpbGU6Ci0tICAgICAgICAqIEZpbGUyOgotIAotIDIwMDktMTItMjEg
IEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLUVORAotCi0kb3V0ID0gPDwnRU5EJzsK
LUBAIC0xLDExICsxLDE4IEBACi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRy
ZXNzPgotKwotKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotKwotKyAgICAgICAgQ2hhbmdlZCBz
b21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotIDIw
MDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLSAgICAgICAgIFJldmll
d2VkIGJ5IFJheS4KLSAKLSAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIu
Ci0gCi0gICAgICAgICAqIEZpbGU6Ci0tICAgICAgICAqIEZpbGUyOgotIAotIDIwMDktMTItMjEg
IEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLUVORAotCi1vayhmaXhDaGFuZ2VMb2dQ
YXRjaCgkaW4pIGVxICRvdXQsICR0aXRsZSk7Ci0KLSMgVGVzdHM6IGdlbmVyYXRlUnVuUGF0Y2hD
b21tYW5kCi0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZDog
VW5kZWZpbmVkIG9wdGlvbmFsIGFyZ3VtZW50cy4iOwotCi1teSAkYXJnc0hhc2hSZWY7Ci1teSAo
JHBhdGNoQ29tbWFuZCwgJGlzRm9yY2luZykgPSBWQ1NVdGlsczo6Z2VuZXJhdGVSdW5QYXRjaENv
bW1hbmQoJGFyZ3NIYXNoUmVmKTsKLQotb2soJHBhdGNoQ29tbWFuZCBlcSAicGF0Y2ggLXAwIiwg
JHRpdGxlKTsKLW9rKCRpc0ZvcmNpbmcgPT0gMCwgJHRpdGxlKTsKLQotIyBOZXcgdGVzdAotJHRp
dGxlID0gImdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kOiBVbmRlZmluZWQgb3B0aW9ucy4iOwotCi1t
eSAkb3B0aW9uczsKLSRhcmdzSGFzaFJlZiA9IHtvcHRpb25zID0+ICRvcHRpb25zfTsKLSgkcGF0
Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVJ1blBhdGNoQ29tbWFu
ZCgkYXJnc0hhc2hSZWYpOwotCi1vaygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAiLCAkdGl0
bGUpOwotb2soJGlzRm9yY2luZyA9PSAwLCAkdGl0bGUpOwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUg
PSAiZ2VuZXJhdGVSdW5QYXRjaENvbW1hbmQ6IC0tZm9yY2UgYW5kIG5vIFwiZW5zdXJlIGZvcmNl
XCIuIjsKLQotJGFyZ3NIYXNoUmVmID0ge29wdGlvbnMgPT4gWyItLWZvcmNlIl19OwotKCRwYXRj
aENvbW1hbmQsICRpc0ZvcmNpbmcpID0gVkNTVXRpbHM6OmdlbmVyYXRlUnVuUGF0Y2hDb21tYW5k
KCRhcmdzSGFzaFJlZik7Ci0KLW9rKCRwYXRjaENvbW1hbmQgZXEgInBhdGNoIC1wMCAtLWZvcmNl
IiwgJHRpdGxlKTsKLW9rKCRpc0ZvcmNpbmcgPT0gMSwgJHRpdGxlKTsKLQotIyBOZXcgdGVzdAot
JHRpdGxlID0gImdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kOiBubyAtLWZvcmNlIGFuZCBcImVuc3Vy
ZSBmb3JjZVwiLiI7Ci0KLSRhcmdzSGFzaFJlZiA9IHtlbnN1cmVGb3JjZSA9PiAxfTsKLSgkcGF0
Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVJ1blBhdGNoQ29tbWFu
ZCgkYXJnc0hhc2hSZWYpOwotCi1vaygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAgLS1mb3Jj
ZSIsICR0aXRsZSk7Ci1vaygkaXNGb3JjaW5nID09IDEsICR0aXRsZSk7Ci0KLSMgTmV3IHRlc3QK
LSR0aXRsZSA9ICJnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZDogXCJzaG91bGQgcmV2ZXJzZVwiLiI7
Ci0KLSRhcmdzSGFzaFJlZiA9IHtzaG91bGRSZXZlcnNlID0+IDF9OwotKCRwYXRjaENvbW1hbmQs
ICRpc0ZvcmNpbmcpID0gVkNTVXRpbHM6OmdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kKCRhcmdzSGFz
aFJlZik7Ci0KLW9rKCRwYXRjaENvbW1hbmQgZXEgInBhdGNoIC1wMCAtLXJldmVyc2UiLCAkdGl0
bGUpOwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZ2VuZXJhdGVSdW5QYXRjaENvbW1hbmQ6IC0t
ZnV6ej0zLCAtLWZvcmNlLiI7Ci0KLSRhcmdzSGFzaFJlZiA9IHtvcHRpb25zID0+IFsiLS1mdXp6
PTMiLCAiLS1mb3JjZSJdfTsKLSgkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxz
OjpnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgkYXJnc0hhc2hSZWYpOwotCi1vaygkcGF0Y2hDb21t
YW5kIGVxICJwYXRjaCAtcDAgLS1mb3JjZSAtLWZ1eno9MyIsICR0aXRsZSk7Ci0KLSMgVGVzdHM6
IHJ1blBhdGNoQ29tbWFuZAotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAicnVuUGF0Y2hDb21tYW5k
OiBVbnN1Y2Nlc3NmdWwgcGF0Y2gsIGZvcmNpbmcuIjsKLQotIyBTaW5jZSAkcGF0Y2ggaGFzIG5v
ICJJbmRleDoiIHBhdGgsIHBhc3NpbmcgdGhpcyB0byBydW5QYXRjaENvbW1hbmQKLSMgc2hvdWxk
IG5vdCBhZmZlY3QgYW55IGZpbGVzLgotbXkgJHBhdGNoID0gPDwnRU5EJzsKLUdhcmJhZ2UgcGF0
Y2ggY29udGVudHMKLUVORAotCi0jIFdlIGNhbGwgdmlhIGNhbGxTaWxlbnRseSgpIHRvIGF2b2lk
IG91dHB1dCBsaWtlIHRoZSBmb2xsb3dpbmcgdG8gU1RERVJSOgotIyBwYXRjaDogKioqKiBPbmx5
IGdhcmJhZ2Ugd2FzIGZvdW5kIGluIHRoZSBwYXRjaCBpbnB1dC4KLSRhcmdzSGFzaFJlZiA9IHtl
bnN1cmVGb3JjZSA9PiAxfTsKLSRleGl0U3RhdHVzID0gY2FsbFNpbGVudGx5KFwmcnVuUGF0Y2hD
b21tYW5kLCAkcGF0Y2gsICIuIiwgImZpbGVfdG9fcGF0Y2gudHh0IiwgJGFyZ3NIYXNoUmVmKTsK
LQotb2soJGV4aXRTdGF0dXMgIT0gMCwgJHRpdGxlKTsKLQotIyBOZXcgdGVzdAotJHRpdGxlID0g
InJ1blBhdGNoQ29tbWFuZDogTmV3IGZpbGUsIC0tZHJ5LXJ1bi4iOwotCi0jIFRoaXMgZmlsZSBz
aG91bGQgbm90IGV4aXN0IGFmdGVyIHRoZSB0ZXN0cywgYnV0IHdlIHRha2UgY2FyZSB3aXRoIHRo
ZQotIyBmaWxlIG5hbWUgYW5kIGNvbnRlbnRzIGp1c3QgaW4gY2FzZS4KLW15ICRmaWxlVG9QYXRj
aCA9ICJ0ZW1wX09LX1RPX0VSQVNFX19SRUFETUVfRk9SX01PUkUudHh0IjsKLSRwYXRjaCA9IDw8
RU5EOwotSW5kZXg6ICRmaWxlVG9QYXRjaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tICRmaWxlVG9QYXRjaAko
cmV2aXNpb24gMCkKLSsrKyAkZmlsZVRvUGF0Y2gJKHJldmlzaW9uIDApCi1AQCAtMCwwICsxLDUg
QEAKLStUaGlzIGlzIGEgdGVzdCBmaWxlIGZvciBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxz
X3VuaXR0ZXN0LnBsLgotK1RoaXMgZmlsZSBzaG91bGQgbm90IGhhdmUgZ290dGVuIGNyZWF0ZWQg
b24geW91ciBzeXN0ZW0uCi0rSWYgaXQgZGlkLCBzb21lIHVuaXQgdGVzdHMgZG9uJ3Qgc2VlbSB0
byBiZSB3b3JraW5nIHF1aXRlIHJpZ2h0OgotK0l0IHdvdWxkIGJlIGdyZWF0IGlmIHlvdSBjb3Vs
ZCBmaWxlIGEgYnVnIHJlcG9ydC4gVGhhbmtzIQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotRU5ECi0KLSMgLS1k
cnktcnVuIHByZXZlbnRzIGNyZWF0aW5nIGFueSBmaWxlcy4KLSMgLS1zaWxlbnQgc3VwcHJlc3Nl
cyB0aGUgc3VjY2VzcyBtZXNzYWdlIHRvIFNURE9VVC4KLSRhcmdzSGFzaFJlZiA9IHtvcHRpb25z
ID0+IFsiLS1kcnktcnVuIiwgIi0tc2lsZW50Il19OwotJGV4aXRTdGF0dXMgPSBydW5QYXRjaENv
bW1hbmQoJHBhdGNoLCAiLiIsICRmaWxlVG9QYXRjaCwgJGFyZ3NIYXNoUmVmKTsKLQotb2soJGV4
aXRTdGF0dXMgPT0gMCwgJHRpdGxlKTsKLQotIyBOZXcgdGVzdAotJHRpdGxlID0gInJ1blBhdGNo
Q29tbWFuZDogTmV3IGZpbGU6IFwiJGZpbGVUb1BhdGNoXCIuIjsKLQotJGFyZ3NIYXNoUmVmID0g
e29wdGlvbnMgPT4gWyItLXNpbGVudCJdfTsKLSRleGl0U3RhdHVzID0gcnVuUGF0Y2hDb21tYW5k
KCRwYXRjaCwgIi4iLCAkZmlsZVRvUGF0Y2gsICRhcmdzSGFzaFJlZik7Ci0KLW9rKCRleGl0U3Rh
dHVzID09IDAsICR0aXRsZSk7Ci0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJydW5QYXRjaENvbW1h
bmQ6IFJldmVyc2UgbmV3IGZpbGUgKGNsZWFuIHVwIHByZXZpb3VzKS4iOwotCi0kYXJnc0hhc2hS
ZWYgPSB7c2hvdWxkUmV2ZXJzZSA9PiAxLAotICAgICAgICAgICAgICAgIG9wdGlvbnMgPT4gWyIt
LXNpbGVudCIsICItLXJlbW92ZS1lbXB0eS1maWxlcyJdfTsgIyBUbyBjbGVhbiB1cC4KLSRleGl0
U3RhdHVzID0gcnVuUGF0Y2hDb21tYW5kKCRwYXRjaCwgIi4iLCAkZmlsZVRvUGF0Y2gsICRhcmdz
SGFzaFJlZik7Ci1vaygkZXhpdFN0YXR1cyA9PSAwLCAkdGl0bGUpOwpJbmRleDogV2ViS2l0VG9v
bHMvU2NyaXB0cy90ZXN0LXdlYmtpdC1wZXJsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Nj
cmlwdHMvdGVzdC13ZWJraXQtcGVybAkocmV2aXNpb24gNTI3MDUpCisrKyBXZWJLaXRUb29scy9T
Y3JpcHRzL3Rlc3Qtd2Via2l0LXBlcmwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDAgKzAsMCBAQAot
IyEvdXNyL2Jpbi9wZXJsCi0jCi0jIENvcHlyaWdodCAoQykgMjAwOSBDaHJpcyBKZXJkb25layAo
Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tKQotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jIAotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIyAK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jIFJ1bnMg
dW5pdCB0ZXN0cyBvZiBXZWJLaXQgUGVybCBjb2RlLgotCi11c2UgRmluZEJpbjsKLXVzZSBUZXN0
OjpIYXJuZXNzOwotCi0jIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHNvIHRoaXMgc2NyaXB0IGNhbiBi
ZSBydW4gZnJvbSBhbnkgZGlyZWN0b3J5LgotJHNjcmlwdHNEaXIgPSAkRmluZEJpbjo6QmluOwot
JHNjcmlwdHNEaXIgPX4gc3wvKyR8fDsgIyBSZW1vdmUgdHJhaWxpbmcgJy8nCi0KLXJ1bnRlc3Rz
KCIkc2NyaXB0c0Rpci9WQ1NVdGlsc191bml0dGVzdC5wbCIpOwpJbmRleDogV2ViS2l0VG9vbHMv
U2NyaXB0cy90ZXN0LXdlYmtpdHBlcmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0
cy90ZXN0LXdlYmtpdHBlcmwJKHJldmlzaW9uIDUyNzAyKQkoZnJvbSBXZWJLaXRUb29scy9TY3Jp
cHRzL3Rlc3Qtd2Via2l0LXBlcmw6NTI3MDIpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qt
d2Via2l0cGVybAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwIEBACisjIS91c3IvYmluL3Bl
cmwKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA5IENocmlzIEplcmRvbmVrIChjaHJpcy5qZXJkb25l
a0BnbWFpbC5jb20pCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMg
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgUnVucyB1bml0IHRlc3RzIG9m
IFdlYktpdCBQZXJsIGNvZGUuCisKK3VzZSBGaW5kQmluOwordXNlIFRlc3Q6Okhhcm5lc3M7CisK
KyMgVXNlIGFuIGFic29sdXRlIHBhdGggc28gdGhpcyBzY3JpcHQgY2FuIGJlIHJ1biBmcm9tIGFu
eSBkaXJlY3RvcnkuCiskc2NyaXB0c0RpciA9ICRGaW5kQmluOjpCaW47Ciskc2NyaXB0c0RpciA9
fiBzfC8rJHx8OyAjIFJlbW92ZSB0cmFpbGluZyAnLycKKworcnVudGVzdHMoIiRzY3JpcHRzRGly
L1ZDU1V0aWxzX3VuaXR0ZXN0LnBsIik7CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qt
d2Via2l0cGVybAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0
cGVybAkocmV2aXNpb24gNTI3MDIpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0
cGVybAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMjAgQEAKIAogdXNlIEZpbmRCaW47CiB1
c2UgVGVzdDo6SGFybmVzczsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsgIyBzbyB0aGlzIHNjcmlw
dCBjYW4gYmUgcnVuIGZyb20gYW55IGRpcmVjdG9yeS4KK3VzZSBWQ1NVdGlsczsKIAogIyBVc2Ug
YW4gYWJzb2x1dGUgcGF0aCBzbyB0aGlzIHNjcmlwdCBjYW4gYmUgcnVuIGZyb20gYW55IGRpcmVj
dG9yeS4KICRzY3JpcHRzRGlyID0gJEZpbmRCaW46OkJpbjsKICRzY3JpcHRzRGlyID1+IHN8Lysk
fHw7ICMgUmVtb3ZlIHRyYWlsaW5nICcvJwogCi1ydW50ZXN0cygiJHNjcmlwdHNEaXIvVkNTVXRp
bHNfdW5pdHRlc3QucGwiKTsKKyMgVkNTVXRpbHMgc3Vicm91dGluZXMKK215IEBmaWxlcyA9ICgK
KyAgICAiZml4Q2hhbmdlTG9nUGF0Y2gucGwiLAorICAgICJnZW5lcmF0ZVBhdGNoQ29tbWFuZC5w
bCIsCisgICAgInJ1blBhdGNoQ29tbWFuZC5wbCIsCispOworCitAZmlsZXMgPSBtYXAgIiRzY3Jp
cHRzRGlyL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvJF8iLCBAZmlsZXM7ICMgcHJlcGVu
ZAorCitydW50ZXN0cyhAZmlsZXMpOwpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2ZpeENoYW5nZUxvZ1BhdGNoLnBsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9maXhDaGFu
Z2VMb2dQYXRjaC5wbAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9WQ1NVdGlsc191bml0dGVzdC9maXhDaGFuZ2VMb2dQYXRjaC5wbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyOTAgQEAKKyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNocmlzLmplcmRvbmVrQGdtYWlsLmNvbSkKKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworIyBVbml0IHRlc3RzIG9mIFZDU1V0aWxzOjpmaXhDaGFuZ2VMb2dQ
YXRjaCgpLgorCit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDc7Cit1c2UgVkNTVXRpbHM7CisK
KyMgVGhlIHNvdXJjZSBDaGFuZ2VMb2cgZm9yIHRoZXNlIHRlc3RzIGlzIHRoZSBmb2xsb3dpbmc6
CisjIAorIyAyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisjIAorIyAg
ICAgICAgIFJldmlld2VkIGJ5IFJheS4KKyMgCisjICAgICAgICAgQ2hhbmdlZCBzb21lIGNvZGUg
b24gMjAwOS0xMi0yMi4KKyMgCisjICAgICAgICAgKiBGaWxlOgorIyAgICAgICAgICogRmlsZTI6
CisjIAorIyAyMDA5LTEyLTIxICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisjIAorIyAg
ICAgICAgIFJldmlld2VkIGJ5IFJheS4KKyMgCisjICAgICAgICAgQ2hhbmdlZCBzb21lIGNvZGUg
b24gMjAwOS0xMi0yMS4KKyMgCisjICAgICAgICAgKiBGaWxlOgorIyAgICAgICAgICogRmlsZTI6
CisKK215ICR0aXRsZTsKK215ICRpbjsKK215ICRvdXQ7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9
ICJmaXhDaGFuZ2VMb2dQYXRjaDogW25vIGNoYW5nZV0gRmlyc3QgbGluZSBpcyBuZXcgbGluZS4i
OworCiskaW4gPSA8PCdFTkQnOworLS0tIENoYW5nZUxvZworKysrIENoYW5nZUxvZworQEAgLTEs
MyArMSwxMSBAQAorKzIwMDktMTItMjIgIEJvYiAgPGJvYkBlbWFpbC5hZGRyZXNzPgorKworKyAg
ICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorKworKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29k
ZSBvbiAyMDA5LTEyLTIyLgorKworKyAgICAgICAgKiBGaWxlOgorKworIDIwMDktMTItMjIgIEFs
aWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyAKKyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4K
K0VORAorCitvayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRpbiwgJHRpdGxlKTsKKworIyBO
ZXcgdGVzdAorJHRpdGxlID0gImZpeENoYW5nZUxvZ1BhdGNoOiBbbm8gY2hhbmdlXSBObyBkYXRl
IHN0cmluZy4iOworCiskaW4gPSA8PCdFTkQnOworLS0tIENoYW5nZUxvZworKysrIENoYW5nZUxv
ZworQEAgLTYsNiArNiw3IEBACisgCisgICAgICAgICAqIEZpbGU6CisgICAgICAgICAqIEZpbGUy
OgorKyAgICAgICAgKiBGaWxlMzoKKyAKKyAyMDA5LTEyLTIxICBBbGljZSAgPGFsaWNlQGVtYWls
LmFkZHJlc3M+CisgCitFTkQKKworb2soZml4Q2hhbmdlTG9nUGF0Y2goJGluKSBlcSAkaW4sICR0
aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDogW25vIGNo
YW5nZV0gTmV3IGVudHJ5IGluc2VydGVkIGluIG1pZGRsZS4iOworCiskaW4gPSA8PCdFTkQnOwor
LS0tIENoYW5nZUxvZworKysrIENoYW5nZUxvZworQEAgLTExLDYgKzExLDE0IEBACisgCisgICAg
ICAgICBSZXZpZXdlZCBieSBSYXkuCisgCisrICAgICAgICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2Rl
IG9uIDIwMDktMTItMjEuCisrCisrICAgICAgICAqIEZpbGU6CisrCisrMjAwOS0xMi0yMSAgQWxp
Y2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgorKworKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5Lgor
KworICAgICAgICAgQ2hhbmdlZCBzb21lIGNvZGUgb24gMjAwOS0xMi0yMS4KKyAKKyAgICAgICAg
ICogRmlsZToKK0VORAorCitvayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRpbiwgJHRpdGxl
KTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImZpeENoYW5nZUxvZ1BhdGNoOiBMZWFkaW5nIGNv
bnRleHQgaW5jbHVkZXMgZmlyc3QgbGluZS4iOworCiskaW4gPSA8PCdFTkQnOworLS0tIENoYW5n
ZUxvZworKysrIENoYW5nZUxvZworQEAgLTEsNSArMSwxMyBAQAorIDIwMDktMTItMjIgIEFsaWNl
ICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyAKKysgICAgICAgIFJldmlld2VkIGJ5IFN1ZS4KKysK
KysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMi4KKysKKysgICAg
ICAgICogRmlsZToKKysKKysyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+
CisrCisgICAgICAgICBSZXZpZXdlZCBieSBSYXkuCisgCisgICAgICAgICBDaGFuZ2VkIHNvbWUg
Y29kZSBvbiAyMDA5LTEyLTIyLgorRU5ECisKKyRvdXQgPSA8PCdFTkQnOworLS0tIENoYW5nZUxv
ZworKysrIENoYW5nZUxvZworQEAgLTEsMyArMSwxMSBAQAorKzIwMDktMTItMjIgIEFsaWNlICA8
YWxpY2VAZW1haWwuYWRkcmVzcz4KKysKKysgICAgICAgIFJldmlld2VkIGJ5IFN1ZS4KKysKKysg
ICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMi4KKysKKysgICAgICAg
ICogRmlsZToKKysKKyAyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+Cisg
CisgICAgICAgICBSZXZpZXdlZCBieSBSYXkuCitFTkQKKworb2soZml4Q2hhbmdlTG9nUGF0Y2go
JGluKSBlcSAkb3V0LCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiZml4Q2hhbmdl
TG9nUGF0Y2g6IExlYWRpbmcgY29udGV4dCBkb2VzIG5vdCBpbmNsdWRlIGZpcnN0IGxpbmUuIjsK
KworJGluID0gPDwnRU5EJzsKK0BAIC0yLDYgKzIsMTQgQEAKKyAKKyAgICAgICAgIFJldmlld2Vk
IGJ5IFJheS4KKyAKKysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0y
Mi4KKysKKysgICAgICAgICogRmlsZToKKysKKysyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVt
YWlsLmFkZHJlc3M+CisrCisrICAgICAgICBSZXZpZXdlZCBieSBSYXkuCisrCisgICAgICAgICBD
aGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIyLgorIAorICAgICAgICAgKiBGaWxlOgorRU5E
CisKKyRvdXQgPSA8PCdFTkQnOworQEAgLTEsMyArMSwxMSBAQAorKzIwMDktMTItMjIgIEFsaWNl
ICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKysKKysgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKysK
KysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMi4KKysKKysgICAg
ICAgICogRmlsZToKKysKKyAyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+
CisgCisgICAgICAgICBSZXZpZXdlZCBieSBSYXkuCitFTkQKKworb2soZml4Q2hhbmdlTG9nUGF0
Y2goJGluKSBlcSAkb3V0LCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiZml4Q2hh
bmdlTG9nUGF0Y2g6IE5vbi1jb25zZWN1dGl2ZSBsaW5lIGFkZGl0aW9ucy4iOworCisjIFRoaXMg
Y2FuIG9jY3VyLCBmb3IgZXhhbXBsZSwgaWYgdGhlIG5ldyBDaGFuZ2VMb2cgZW50cnkgaW5jbHVk
ZXMKKyMgdHJhaWxpbmcgd2hpdGUgc3BhY2UgaW4gdGhlIGZpcnN0IGJsYW5rIGxpbmUgYnV0IG5v
dCB0aGUgc2Vjb25kLgorIyBBIGRpZmYgY29tbWFuZCBjYW4gdGhlbiBtYXRjaCB0aGUgc2Vjb25k
IGJsYW5rIGxpbmUgb2YgdGhlIG5ldworIyBDaGFuZ2VMb2cgZW50cnkgd2l0aCB0aGUgZmlyc3Qg
YmxhbmsgbGluZSBvZiB0aGUgb2xkLgorIyBUaGUgc3ZuIGRpZmYgY29tbWFuZCB3aXRoIHRoZSBk
ZWZhdWx0IC0tZGlmZi1jbWQgaGFzIGRvbmUgdGhpcy4KKyRpbiA9IDw8J0VORCc7CitAQCAtMSw1
ICsxLDExIEBACisgMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgorKyA8
cHJldGVuZC13aGl0ZXNwYWNlPgorKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorIAorKyAgICAg
ICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgorKworKzIwMDktMTItMjIg
IEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKysKKyAgICAgICAgIFJldmlld2VkIGJ5IFJh
eS4KKyAKKyAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIuCitFTkQKKwor
JG91dCA9IDw8J0VORCc7CitAQCAtMSwzICsxLDkgQEAKKysyMDA5LTEyLTIyICBBbGljZSAgPGFs
aWNlQGVtYWlsLmFkZHJlc3M+CisrIDxwcmV0ZW5kLXdoaXRlc3BhY2U+CisrICAgICAgICBSZXZp
ZXdlZCBieSBSYXkuCisrCisrICAgICAgICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDkt
MTItMjIuCisrCisgMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgorIAor
ICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorRU5ECisKK29rKGZpeENoYW5nZUxvZ1BhdGNoKCRp
bikgZXEgJG91dCwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImZpeENoYW5nZUxv
Z1BhdGNoOiBBZGRpdGlvbmFsIGVkaXRzIGFmdGVyIG5ldyBlbnRyeS4iOworCiskaW4gPSA8PCdF
TkQnOworQEAgLTIsMTAgKzIsMTcgQEAKKyAKKyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKyAK
KysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMi4KKysKKysgICAg
ICAgICogRmlsZToKKysKKysyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+
CisrCisrICAgICAgICBSZXZpZXdlZCBieSBSYXkuCisrCisgICAgICAgICBDaGFuZ2VkIHNvbWUg
Y29kZSBvbiAyMDA5LTEyLTIyLgorIAorICAgICAgICAgKiBGaWxlOgorLSAgICAgICAgKiBGaWxl
MjoKKyAKKyAyMDA5LTEyLTIxICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisgCitFTkQK
KworJG91dCA9IDw8J0VORCc7CitAQCAtMSwxMSArMSwxOCBAQAorKzIwMDktMTItMjIgIEFsaWNl
ICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKysKKysgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKysK
KysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMi4KKysKKysgICAg
ICAgICogRmlsZToKKysKKyAyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+
CisgCisgICAgICAgICBSZXZpZXdlZCBieSBSYXkuCisgCisgICAgICAgICBDaGFuZ2VkIHNvbWUg
Y29kZSBvbiAyMDA5LTEyLTIyLgorIAorICAgICAgICAgKiBGaWxlOgorLSAgICAgICAgKiBGaWxl
MjoKKyAKKyAyMDA5LTEyLTIxICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisgCitFTkQK
Kworb2soZml4Q2hhbmdlTG9nUGF0Y2goJGluKSBlcSAkb3V0LCAkdGl0bGUpOwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2ZpeENoYW5n
ZUxvZ1BhdGNoLnBsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5k
ZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9nZW5l
cmF0ZVBhdGNoQ29tbWFuZC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvZ2VuZXJhdGVQYXRjaENvbW1hbmQucGwJKHJldmlz
aW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRl
c3QvZ2VuZXJhdGVQYXRjaENvbW1hbmQucGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAK
KyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQ2hyaXMgSmVy
ZG9uZWsgKGNocmlzLmplcmRvbmVrQGdtYWlsLmNvbSkKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
IyBVbml0IHRlc3RzIG9mIFZDU1V0aWxzOjpnZW5lcmF0ZVBhdGNoQ29tbWFuZCgpLgorCit1c2Ug
VGVzdDo6U2ltcGxlIHRlc3RzID0+IDEwOwordXNlIFZDU1V0aWxzOworCisjIE5ldyB0ZXN0Cisk
dGl0bGUgPSAiZ2VuZXJhdGVQYXRjaENvbW1hbmQ6IFVuZGVmaW5lZCBvcHRpb25hbCBhcmd1bWVu
dHMuIjsKKworbXkgJGFyZ3NIYXNoUmVmOworbXkgKCRwYXRjaENvbW1hbmQsICRpc0ZvcmNpbmcp
ID0gVkNTVXRpbHM6OmdlbmVyYXRlUGF0Y2hDb21tYW5kKCRhcmdzSGFzaFJlZik7CisKK29rKCRw
YXRjaENvbW1hbmQgZXEgInBhdGNoIC1wMCIsICR0aXRsZSk7CitvaygkaXNGb3JjaW5nID09IDAs
ICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJnZW5lcmF0ZVBhdGNoQ29tbWFuZDog
VW5kZWZpbmVkIG9wdGlvbnMuIjsKKworbXkgJG9wdGlvbnM7CiskYXJnc0hhc2hSZWYgPSB7b3B0
aW9ucyA9PiAkb3B0aW9uc307CisoJHBhdGNoQ29tbWFuZCwgJGlzRm9yY2luZykgPSBWQ1NVdGls
czo6Z2VuZXJhdGVQYXRjaENvbW1hbmQoJGFyZ3NIYXNoUmVmKTsKKworb2soJHBhdGNoQ29tbWFu
ZCBlcSAicGF0Y2ggLXAwIiwgJHRpdGxlKTsKK29rKCRpc0ZvcmNpbmcgPT0gMCwgJHRpdGxlKTsK
KworIyBOZXcgdGVzdAorJHRpdGxlID0gImdlbmVyYXRlUGF0Y2hDb21tYW5kOiAtLWZvcmNlIGFu
ZCBubyBcImVuc3VyZSBmb3JjZVwiLiI7CisKKyRhcmdzSGFzaFJlZiA9IHtvcHRpb25zID0+IFsi
LS1mb3JjZSJdfTsKKygkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5l
cmF0ZVBhdGNoQ29tbWFuZCgkYXJnc0hhc2hSZWYpOworCitvaygkcGF0Y2hDb21tYW5kIGVxICJw
YXRjaCAtcDAgLS1mb3JjZSIsICR0aXRsZSk7CitvaygkaXNGb3JjaW5nID09IDEsICR0aXRsZSk7
CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJnZW5lcmF0ZVBhdGNoQ29tbWFuZDogbm8gLS1mb3Jj
ZSBhbmQgXCJlbnN1cmUgZm9yY2VcIi4iOworCiskYXJnc0hhc2hSZWYgPSB7ZW5zdXJlRm9yY2Ug
PT4gMX07CisoJHBhdGNoQ29tbWFuZCwgJGlzRm9yY2luZykgPSBWQ1NVdGlsczo6Z2VuZXJhdGVQ
YXRjaENvbW1hbmQoJGFyZ3NIYXNoUmVmKTsKKworb2soJHBhdGNoQ29tbWFuZCBlcSAicGF0Y2gg
LXAwIC0tZm9yY2UiLCAkdGl0bGUpOworb2soJGlzRm9yY2luZyA9PSAxLCAkdGl0bGUpOworCisj
IE5ldyB0ZXN0CiskdGl0bGUgPSAiZ2VuZXJhdGVQYXRjaENvbW1hbmQ6IFwic2hvdWxkIHJldmVy
c2VcIi4iOworCiskYXJnc0hhc2hSZWYgPSB7c2hvdWxkUmV2ZXJzZSA9PiAxfTsKKygkcGF0Y2hD
b21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVBhdGNoQ29tbWFuZCgkYXJn
c0hhc2hSZWYpOworCitvaygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAgLS1yZXZlcnNlIiwg
JHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImdlbmVyYXRlUGF0Y2hDb21tYW5kOiAt
LWZ1eno9MywgLS1mb3JjZS4iOworCiskYXJnc0hhc2hSZWYgPSB7b3B0aW9ucyA9PiBbIi0tZnV6
ej0zIiwgIi0tZm9yY2UiXX07CisoJHBhdGNoQ29tbWFuZCwgJGlzRm9yY2luZykgPSBWQ1NVdGls
czo6Z2VuZXJhdGVQYXRjaENvbW1hbmQoJGFyZ3NIYXNoUmVmKTsKKworb2soJHBhdGNoQ29tbWFu
ZCBlcSAicGF0Y2ggLXAwIC0tZm9yY2UgLS1mdXp6PTMiLCAkdGl0bGUpOwpJbmRleDogV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3J1blBhdGNoQ29tbWFu
ZC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRp
bHNfdW5pdHRlc3QvcnVuUGF0Y2hDb21tYW5kLnBsCShyZXZpc2lvbiA1MjcwMikJKGZyb20gV2Vi
S2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlsc191bml0dGVzdC5wbDo1MjcwMikKKysrIFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9ydW5QYXRjaENvbW1hbmQu
cGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MjQgQEAKKyMhL3Vzci9iaW4vcGVybAorIwor
IyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNocmlzLmplcmRvbmVr
QGdtYWlsLmNvbSkKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBVbml0IHRlc3RzIG9mIFZDU1V0
aWxzLnBtLgorCit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDIxOworCit1c2UgRmluZEJpbjsK
K3VzZSBsaWIgJEZpbmRCaW46OkJpbjsgIyBzbyB0aGlzIHNjcmlwdCBjYW4gYmUgcnVuIGZyb20g
YW55IGRpcmVjdG9yeS4KKwordXNlIFZDU1V0aWxzOworCisjIENhbGwgYSBmdW5jdGlvbiB3aGls
ZSBzdXBwcmVzc2luZyBTVERFUlIuCitzdWIgY2FsbFNpbGVudGx5KCRAKSB7CisgICAgbXkgKCRm
dW5jLCBAYXJncykgPSBAXzsKKworICAgIG9wZW4oT0xERVJSLCAiPiZTVERFUlIiKTsKKyAgICBj
bG9zZShTVERFUlIpOworICAgIG15IEByZXR1cm5WYWx1ZSA9ICYkZnVuYyhAYXJncyk7CisgICAg
b3BlbihTVERFUlIsICI+Jk9MREVSUiIpOworICAgIGNsb3NlKE9MREVSUik7ICMgRklYTUU6IElz
IHRoaXMgbmVjZXNzYXJ5PworCisgICAgcmV0dXJuIEByZXR1cm5WYWx1ZTsKK30KKworIyBmaXhD
aGFuZ2VMb2dQYXRjaAorIworIyBUaGUgc291cmNlIENoYW5nZUxvZyBmb3IgdGhlc2UgdGVzdHMg
aXMgdGhlIGZvbGxvd2luZzoKKyMgCisjIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwu
YWRkcmVzcz4KKyMgCisjICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorIyAKKyMgICAgICAgICBD
aGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIyLgorIyAKKyMgICAgICAgICAqIEZpbGU6Cisj
ICAgICAgICAgKiBGaWxlMjoKKyMgCisjIDIwMDktMTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwu
YWRkcmVzcz4KKyMgCisjICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorIyAKKyMgICAgICAgICBD
aGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIxLgorIyAKKyMgICAgICAgICAqIEZpbGU6Cisj
ICAgICAgICAgKiBGaWxlMjoKKworbXkgJHRpdGxlOworbXkgJGluOworbXkgJG91dDsKKworIyBO
ZXcgdGVzdAorJHRpdGxlID0gImZpeENoYW5nZUxvZ1BhdGNoOiBbbm8gY2hhbmdlXSBGaXJzdCBs
aW5lIGlzIG5ldyBsaW5lLiI7CisKKyRpbiA9IDw8J0VORCc7CistLS0gQ2hhbmdlTG9nCisrKysg
Q2hhbmdlTG9nCitAQCAtMSwzICsxLDExIEBACisrMjAwOS0xMi0yMiAgQm9iICA8Ym9iQGVtYWls
LmFkZHJlc3M+CisrCisrICAgICAgICBSZXZpZXdlZCBieSBSYXkuCisrCisrICAgICAgICBDaGFu
Z2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCisrCisrICAgICAgICAqIEZpbGU6Cisr
CisgMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgorIAorICAgICAgICAg
UmV2aWV3ZWQgYnkgUmF5LgorRU5ECisKK29rKGZpeENoYW5nZUxvZ1BhdGNoKCRpbikgZXEgJGlu
LCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IFtu
byBjaGFuZ2VdIE5vIGRhdGUgc3RyaW5nLiI7CisKKyRpbiA9IDw8J0VORCc7CistLS0gQ2hhbmdl
TG9nCisrKysgQ2hhbmdlTG9nCitAQCAtNiw2ICs2LDcgQEAKKyAKKyAgICAgICAgICogRmlsZToK
KyAgICAgICAgICogRmlsZTI6CisrICAgICAgICAqIEZpbGUzOgorIAorIDIwMDktMTItMjEgIEFs
aWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyAKK0VORAorCitvayhmaXhDaGFuZ2VMb2dQYXRj
aCgkaW4pIGVxICRpbiwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImZpeENoYW5n
ZUxvZ1BhdGNoOiBbbm8gY2hhbmdlXSBOZXcgZW50cnkgaW5zZXJ0ZWQgaW4gbWlkZGxlLiI7CisK
KyRpbiA9IDw8J0VORCc7CistLS0gQ2hhbmdlTG9nCisrKysgQ2hhbmdlTG9nCitAQCAtMTEsNiAr
MTEsMTQgQEAKKyAKKyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKyAKKysgICAgICAgIENoYW5n
ZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMS4KKysKKysgICAgICAgICogRmlsZToKKysK
KysyMDA5LTEyLTIxICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisrCisrICAgICAgICBS
ZXZpZXdlZCBieSBSYXkuCisrCisgICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEy
LTIxLgorIAorICAgICAgICAgKiBGaWxlOgorRU5ECisKK29rKGZpeENoYW5nZUxvZ1BhdGNoKCRp
bikgZXEgJGluLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiZml4Q2hhbmdlTG9n
UGF0Y2g6IExlYWRpbmcgY29udGV4dCBpbmNsdWRlcyBmaXJzdCBsaW5lLiI7CisKKyRpbiA9IDw8
J0VORCc7CistLS0gQ2hhbmdlTG9nCisrKysgQ2hhbmdlTG9nCitAQCAtMSw1ICsxLDEzIEBACisg
MjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgorIAorKyAgICAgICAgUmV2
aWV3ZWQgYnkgU3VlLgorKworKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5
LTEyLTIyLgorKworKyAgICAgICAgKiBGaWxlOgorKworKzIwMDktMTItMjIgIEFsaWNlICA8YWxp
Y2VAZW1haWwuYWRkcmVzcz4KKysKKyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKyAKKyAgICAg
ICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIuCitFTkQKKworJG91dCA9IDw8J0VO
RCc7CistLS0gQ2hhbmdlTG9nCisrKysgQ2hhbmdlTG9nCitAQCAtMSwzICsxLDExIEBACisrMjAw
OS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgorKworKyAgICAgICAgUmV2aWV3
ZWQgYnkgU3VlLgorKworKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEy
LTIyLgorKworKyAgICAgICAgKiBGaWxlOgorKworIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VA
ZW1haWwuYWRkcmVzcz4KKyAKKyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KK0VORAorCitvayhm
aXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRvdXQsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0
aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDogTGVhZGluZyBjb250ZXh0IGRvZXMgbm90IGluY2x1
ZGUgZmlyc3QgbGluZS4iOworCiskaW4gPSA8PCdFTkQnOworQEAgLTIsNiArMiwxNCBAQAorIAor
ICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorIAorKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUg
Y29kZSBvbiAyMDA5LTEyLTIyLgorKworKyAgICAgICAgKiBGaWxlOgorKworKzIwMDktMTItMjIg
IEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKysKKysgICAgICAgIFJldmlld2VkIGJ5IFJh
eS4KKysKKyAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIuCisgCisgICAg
ICAgICAqIEZpbGU6CitFTkQKKworJG91dCA9IDw8J0VORCc7CitAQCAtMSwzICsxLDExIEBACisr
MjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgorKworKyAgICAgICAgUmV2
aWV3ZWQgYnkgUmF5LgorKworKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5
LTEyLTIyLgorKworKyAgICAgICAgKiBGaWxlOgorKworIDIwMDktMTItMjIgIEFsaWNlICA8YWxp
Y2VAZW1haWwuYWRkcmVzcz4KKyAKKyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KK0VORAorCitv
ayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRvdXQsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QK
KyR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDogTm9uLWNvbnNlY3V0aXZlIGxpbmUgYWRkaXRp
b25zLiI7CisKKyMgVGhpcyBjYW4gb2NjdXIsIGZvciBleGFtcGxlLCBpZiB0aGUgbmV3IENoYW5n
ZUxvZyBlbnRyeSBpbmNsdWRlcworIyB0cmFpbGluZyB3aGl0ZSBzcGFjZSBpbiB0aGUgZmlyc3Qg
YmxhbmsgbGluZSBidXQgbm90IHRoZSBzZWNvbmQuCisjIEEgZGlmZiBjb21tYW5kIGNhbiB0aGVu
IG1hdGNoIHRoZSBzZWNvbmQgYmxhbmsgbGluZSBvZiB0aGUgbmV3CisjIENoYW5nZUxvZyBlbnRy
eSB3aXRoIHRoZSBmaXJzdCBibGFuayBsaW5lIG9mIHRoZSBvbGQuCisjIFRoZSBzdm4gZGlmZiBj
b21tYW5kIHdpdGggdGhlIGRlZmF1bHQgLS1kaWZmLWNtZCBoYXMgZG9uZSB0aGlzLgorJGluID0g
PDwnRU5EJzsKK0BAIC0xLDUgKzEsMTEgQEAKKyAyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVt
YWlsLmFkZHJlc3M+CisrIDxwcmV0ZW5kLXdoaXRlc3BhY2U+CisrICAgICAgICBSZXZpZXdlZCBi
eSBSYXkuCisgCisrICAgICAgICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIu
CisrCisrMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgorKworICAgICAg
ICAgUmV2aWV3ZWQgYnkgUmF5LgorIAorICAgICAgICAgQ2hhbmdlZCBzb21lIGNvZGUgb24gMjAw
OS0xMi0yMi4KK0VORAorCiskb3V0ID0gPDwnRU5EJzsKK0BAIC0xLDMgKzEsOSBAQAorKzIwMDkt
MTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKysgPHByZXRlbmQtd2hpdGVzcGFj
ZT4KKysgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKysKKysgICAgICAgIENoYW5nZWQgc29tZSBt
b3JlIGNvZGUgb24gMjAwOS0xMi0yMi4KKysKKyAyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVt
YWlsLmFkZHJlc3M+CisgCisgICAgICAgICBSZXZpZXdlZCBieSBSYXkuCitFTkQKKworb2soZml4
Q2hhbmdlTG9nUGF0Y2goJGluKSBlcSAkb3V0LCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0
bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IEFkZGl0aW9uYWwgZWRpdHMgYWZ0ZXIgbmV3IGVudHJ5
LiI7CisKKyRpbiA9IDw8J0VORCc7CitAQCAtMiwxMCArMiwxNyBAQAorIAorICAgICAgICAgUmV2
aWV3ZWQgYnkgUmF5LgorIAorKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5
LTEyLTIyLgorKworKyAgICAgICAgKiBGaWxlOgorKworKzIwMDktMTItMjIgIEFsaWNlICA8YWxp
Y2VAZW1haWwuYWRkcmVzcz4KKysKKysgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKysKKyAgICAg
ICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIuCisgCisgICAgICAgICAqIEZpbGU6
CistICAgICAgICAqIEZpbGUyOgorIAorIDIwMDktMTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwu
YWRkcmVzcz4KKyAKK0VORAorCiskb3V0ID0gPDwnRU5EJzsKK0BAIC0xLDExICsxLDE4IEBACisr
MjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgorKworKyAgICAgICAgUmV2
aWV3ZWQgYnkgUmF5LgorKworKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5
LTEyLTIyLgorKworKyAgICAgICAgKiBGaWxlOgorKworIDIwMDktMTItMjIgIEFsaWNlICA8YWxp
Y2VAZW1haWwuYWRkcmVzcz4KKyAKKyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKyAKKyAgICAg
ICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIuCisgCisgICAgICAgICAqIEZpbGU6
CistICAgICAgICAqIEZpbGUyOgorIAorIDIwMDktMTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwu
YWRkcmVzcz4KKyAKK0VORAorCitvayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRvdXQsICR0
aXRsZSk7CisKKyMgVGVzdHM6IGdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kCisKKyMgTmV3IHRlc3QK
KyR0aXRsZSA9ICJnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZDogVW5kZWZpbmVkIG9wdGlvbmFsIGFy
Z3VtZW50cy4iOworCitteSAkYXJnc0hhc2hSZWY7CitteSAoJHBhdGNoQ29tbWFuZCwgJGlzRm9y
Y2luZykgPSBWQ1NVdGlsczo6Z2VuZXJhdGVSdW5QYXRjaENvbW1hbmQoJGFyZ3NIYXNoUmVmKTsK
Kworb2soJHBhdGNoQ29tbWFuZCBlcSAicGF0Y2ggLXAwIiwgJHRpdGxlKTsKK29rKCRpc0ZvcmNp
bmcgPT0gMCwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImdlbmVyYXRlUnVuUGF0
Y2hDb21tYW5kOiBVbmRlZmluZWQgb3B0aW9ucy4iOworCitteSAkb3B0aW9uczsKKyRhcmdzSGFz
aFJlZiA9IHtvcHRpb25zID0+ICRvcHRpb25zfTsKKygkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5n
KSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgkYXJnc0hhc2hSZWYpOworCitv
aygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAiLCAkdGl0bGUpOworb2soJGlzRm9yY2luZyA9
PSAwLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiZ2VuZXJhdGVSdW5QYXRjaENv
bW1hbmQ6IC0tZm9yY2UgYW5kIG5vIFwiZW5zdXJlIGZvcmNlXCIuIjsKKworJGFyZ3NIYXNoUmVm
ID0ge29wdGlvbnMgPT4gWyItLWZvcmNlIl19OworKCRwYXRjaENvbW1hbmQsICRpc0ZvcmNpbmcp
ID0gVkNTVXRpbHM6OmdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kKCRhcmdzSGFzaFJlZik7CisKK29r
KCRwYXRjaENvbW1hbmQgZXEgInBhdGNoIC1wMCAtLWZvcmNlIiwgJHRpdGxlKTsKK29rKCRpc0Zv
cmNpbmcgPT0gMSwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImdlbmVyYXRlUnVu
UGF0Y2hDb21tYW5kOiBubyAtLWZvcmNlIGFuZCBcImVuc3VyZSBmb3JjZVwiLiI7CisKKyRhcmdz
SGFzaFJlZiA9IHtlbnN1cmVGb3JjZSA9PiAxfTsKKygkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5n
KSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgkYXJnc0hhc2hSZWYpOworCitv
aygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAgLS1mb3JjZSIsICR0aXRsZSk7CitvaygkaXNG
b3JjaW5nID09IDEsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJnZW5lcmF0ZVJ1
blBhdGNoQ29tbWFuZDogXCJzaG91bGQgcmV2ZXJzZVwiLiI7CisKKyRhcmdzSGFzaFJlZiA9IHtz
aG91bGRSZXZlcnNlID0+IDF9OworKCRwYXRjaENvbW1hbmQsICRpc0ZvcmNpbmcpID0gVkNTVXRp
bHM6OmdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kKCRhcmdzSGFzaFJlZik7CisKK29rKCRwYXRjaENv
bW1hbmQgZXEgInBhdGNoIC1wMCAtLXJldmVyc2UiLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0Cisk
dGl0bGUgPSAiZ2VuZXJhdGVSdW5QYXRjaENvbW1hbmQ6IC0tZnV6ej0zLCAtLWZvcmNlLiI7CisK
KyRhcmdzSGFzaFJlZiA9IHtvcHRpb25zID0+IFsiLS1mdXp6PTMiLCAiLS1mb3JjZSJdfTsKKygk
cGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVJ1blBhdGNoQ29t
bWFuZCgkYXJnc0hhc2hSZWYpOworCitvaygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAgLS1m
b3JjZSAtLWZ1eno9MyIsICR0aXRsZSk7CisKKyMgVGVzdHM6IHJ1blBhdGNoQ29tbWFuZAorCisj
IE5ldyB0ZXN0CiskdGl0bGUgPSAicnVuUGF0Y2hDb21tYW5kOiBVbnN1Y2Nlc3NmdWwgcGF0Y2gs
IGZvcmNpbmcuIjsKKworIyBTaW5jZSAkcGF0Y2ggaGFzIG5vICJJbmRleDoiIHBhdGgsIHBhc3Np
bmcgdGhpcyB0byBydW5QYXRjaENvbW1hbmQKKyMgc2hvdWxkIG5vdCBhZmZlY3QgYW55IGZpbGVz
LgorbXkgJHBhdGNoID0gPDwnRU5EJzsKK0dhcmJhZ2UgcGF0Y2ggY29udGVudHMKK0VORAorCisj
IFdlIGNhbGwgdmlhIGNhbGxTaWxlbnRseSgpIHRvIGF2b2lkIG91dHB1dCBsaWtlIHRoZSBmb2xs
b3dpbmcgdG8gU1RERVJSOgorIyBwYXRjaDogKioqKiBPbmx5IGdhcmJhZ2Ugd2FzIGZvdW5kIGlu
IHRoZSBwYXRjaCBpbnB1dC4KKyRhcmdzSGFzaFJlZiA9IHtlbnN1cmVGb3JjZSA9PiAxfTsKKyRl
eGl0U3RhdHVzID0gY2FsbFNpbGVudGx5KFwmcnVuUGF0Y2hDb21tYW5kLCAkcGF0Y2gsICIuIiwg
ImZpbGVfdG9fcGF0Y2gudHh0IiwgJGFyZ3NIYXNoUmVmKTsKKworb2soJGV4aXRTdGF0dXMgIT0g
MCwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gInJ1blBhdGNoQ29tbWFuZDogTmV3
IGZpbGUsIC0tZHJ5LXJ1bi4iOworCisjIFRoaXMgZmlsZSBzaG91bGQgbm90IGV4aXN0IGFmdGVy
IHRoZSB0ZXN0cywgYnV0IHdlIHRha2UgY2FyZSB3aXRoIHRoZQorIyBmaWxlIG5hbWUgYW5kIGNv
bnRlbnRzIGp1c3QgaW4gY2FzZS4KK215ICRmaWxlVG9QYXRjaCA9ICJ0ZW1wX09LX1RPX0VSQVNF
X19SRUFETUVfRk9SX01PUkUudHh0IjsKKyRwYXRjaCA9IDw8RU5EOworSW5kZXg6ICRmaWxlVG9Q
YXRjaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorLS0tICRmaWxlVG9QYXRjaAkocmV2aXNpb24gMCkKKysrKyAkZmls
ZVRvUGF0Y2gJKHJldmlzaW9uIDApCitAQCAtMCwwICsxLDUgQEAKKytUaGlzIGlzIGEgdGVzdCBm
aWxlIGZvciBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzX3VuaXR0ZXN0LnBsLgorK1RoaXMg
ZmlsZSBzaG91bGQgbm90IGhhdmUgZ290dGVuIGNyZWF0ZWQgb24geW91ciBzeXN0ZW0uCisrSWYg
aXQgZGlkLCBzb21lIHVuaXQgdGVzdHMgZG9uJ3Qgc2VlbSB0byBiZSB3b3JraW5nIHF1aXRlIHJp
Z2h0OgorK0l0IHdvdWxkIGJlIGdyZWF0IGlmIHlvdSBjb3VsZCBmaWxlIGEgYnVnIHJlcG9ydC4g
VGhhbmtzIQorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRU5ECisKKyMgLS1kcnktcnVuIHByZXZlbnRzIGNyZWF0
aW5nIGFueSBmaWxlcy4KKyMgLS1zaWxlbnQgc3VwcHJlc3NlcyB0aGUgc3VjY2VzcyBtZXNzYWdl
IHRvIFNURE9VVC4KKyRhcmdzSGFzaFJlZiA9IHtvcHRpb25zID0+IFsiLS1kcnktcnVuIiwgIi0t
c2lsZW50Il19OworJGV4aXRTdGF0dXMgPSBydW5QYXRjaENvbW1hbmQoJHBhdGNoLCAiLiIsICRm
aWxlVG9QYXRjaCwgJGFyZ3NIYXNoUmVmKTsKKworb2soJGV4aXRTdGF0dXMgPT0gMCwgJHRpdGxl
KTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gInJ1blBhdGNoQ29tbWFuZDogTmV3IGZpbGU6IFwi
JGZpbGVUb1BhdGNoXCIuIjsKKworJGFyZ3NIYXNoUmVmID0ge29wdGlvbnMgPT4gWyItLXNpbGVu
dCJdfTsKKyRleGl0U3RhdHVzID0gcnVuUGF0Y2hDb21tYW5kKCRwYXRjaCwgIi4iLCAkZmlsZVRv
UGF0Y2gsICRhcmdzSGFzaFJlZik7CisKK29rKCRleGl0U3RhdHVzID09IDAsICR0aXRsZSk7CisK
KyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJydW5QYXRjaENvbW1hbmQ6IFJldmVyc2UgbmV3IGZpbGUg
KGNsZWFuIHVwIHByZXZpb3VzKS4iOworCiskYXJnc0hhc2hSZWYgPSB7c2hvdWxkUmV2ZXJzZSA9
PiAxLAorICAgICAgICAgICAgICAgIG9wdGlvbnMgPT4gWyItLXNpbGVudCIsICItLXJlbW92ZS1l
bXB0eS1maWxlcyJdfTsgIyBUbyBjbGVhbiB1cC4KKyRleGl0U3RhdHVzID0gcnVuUGF0Y2hDb21t
YW5kKCRwYXRjaCwgIi4iLCAkZmlsZVRvUGF0Y2gsICRhcmdzSGFzaFJlZik7CitvaygkZXhpdFN0
YXR1cyA9PSAwLCAkdGl0bGUpOwpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L3J1blBhdGNoQ29tbWFuZC5wbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcnVuUGF0Y2hDb21t
YW5kLnBsCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZD
U1V0aWxzX3VuaXR0ZXN0L3J1blBhdGNoQ29tbWFuZC5wbAkod29ya2luZyBjb3B5KQpAQCAtMjgs
MTMgKzI4LDkgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSMgVW5pdCB0ZXN0
cyBvZiBWQ1NVdGlscy5wbS4KLQotdXNlIFRlc3Q6OlNpbXBsZSB0ZXN0cyA9PiAyMTsKLQotdXNl
IEZpbmRCaW47Ci11c2UgbGliICRGaW5kQmluOjpCaW47ICMgc28gdGhpcyBzY3JpcHQgY2FuIGJl
IHJ1biBmcm9tIGFueSBkaXJlY3RvcnkuCisjIFVuaXQgdGVzdHMgb2YgVkNTVXRpbHM6OnJ1blBh
dGNoQ29tbWFuZCgpLgogCit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDQ7CiB1c2UgVkNTVXRp
bHM7CiAKICMgQ2FsbCBhIGZ1bmN0aW9uIHdoaWxlIHN1cHByZXNzaW5nIFNUREVSUi4KQEAgLTUw
LDMyMSArNDYsNiBAQCBzdWIgY2FsbFNpbGVudGx5KCRAKSB7CiAgICAgcmV0dXJuIEByZXR1cm5W
YWx1ZTsKIH0KIAotIyBmaXhDaGFuZ2VMb2dQYXRjaAotIwotIyBUaGUgc291cmNlIENoYW5nZUxv
ZyBmb3IgdGhlc2UgdGVzdHMgaXMgdGhlIGZvbGxvd2luZzoKLSMgCi0jIDIwMDktMTItMjIgIEFs
aWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSMgCi0jICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5
LgotIyAKLSMgICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIyLgotIyAKLSMg
ICAgICAgICAqIEZpbGU6Ci0jICAgICAgICAgKiBGaWxlMjoKLSMgCi0jIDIwMDktMTItMjEgIEFs
aWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSMgCi0jICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5
LgotIyAKLSMgICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIxLgotIyAKLSMg
ICAgICAgICAqIEZpbGU6Ci0jICAgICAgICAgKiBGaWxlMjoKLQotbXkgJHRpdGxlOwotbXkgJGlu
OwotbXkgJG91dDsKLQotIyBOZXcgdGVzdAotJHRpdGxlID0gImZpeENoYW5nZUxvZ1BhdGNoOiBb
bm8gY2hhbmdlXSBGaXJzdCBsaW5lIGlzIG5ldyBsaW5lLiI7Ci0KLSRpbiA9IDw8J0VORCc7Ci0t
LS0gQ2hhbmdlTG9nCi0rKysgQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDExIEBACi0rMjAwOS0xMi0y
MiAgQm9iICA8Ym9iQGVtYWlsLmFkZHJlc3M+Ci0rCi0rICAgICAgICBSZXZpZXdlZCBieSBSYXku
Ci0rCi0rICAgICAgICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCi0rCi0r
ICAgICAgICAqIEZpbGU6Ci0rCi0gMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRy
ZXNzPgotIAotICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotRU5ECi0KLW9rKGZpeENoYW5nZUxv
Z1BhdGNoKCRpbikgZXEgJGluLCAkdGl0bGUpOwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZml4
Q2hhbmdlTG9nUGF0Y2g6IFtubyBjaGFuZ2VdIE5vIGRhdGUgc3RyaW5nLiI7Ci0KLSRpbiA9IDw8
J0VORCc7Ci0tLS0gQ2hhbmdlTG9nCi0rKysgQ2hhbmdlTG9nCi1AQCAtNiw2ICs2LDcgQEAKLSAK
LSAgICAgICAgICogRmlsZToKLSAgICAgICAgICogRmlsZTI6Ci0rICAgICAgICAqIEZpbGUzOgot
IAotIDIwMDktMTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLUVORAotCi1v
ayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRpbiwgJHRpdGxlKTsKLQotIyBOZXcgdGVzdAot
JHRpdGxlID0gImZpeENoYW5nZUxvZ1BhdGNoOiBbbm8gY2hhbmdlXSBOZXcgZW50cnkgaW5zZXJ0
ZWQgaW4gbWlkZGxlLiI7Ci0KLSRpbiA9IDw8J0VORCc7Ci0tLS0gQ2hhbmdlTG9nCi0rKysgQ2hh
bmdlTG9nCi1AQCAtMTEsNiArMTEsMTQgQEAKLSAKLSAgICAgICAgIFJldmlld2VkIGJ5IFJheS4K
LSAKLSsgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMS4KLSsKLSsg
ICAgICAgICogRmlsZToKLSsKLSsyMDA5LTEyLTIxICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJl
c3M+Ci0rCi0rICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi0rCi0gICAgICAgICBDaGFuZ2VkIHNv
bWUgY29kZSBvbiAyMDA5LTEyLTIxLgotIAotICAgICAgICAgKiBGaWxlOgotRU5ECi0KLW9rKGZp
eENoYW5nZUxvZ1BhdGNoKCRpbikgZXEgJGluLCAkdGl0bGUpOwotCi0jIE5ldyB0ZXN0Ci0kdGl0
bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IExlYWRpbmcgY29udGV4dCBpbmNsdWRlcyBmaXJzdCBs
aW5lLiI7Ci0KLSRpbiA9IDw8J0VORCc7Ci0tLS0gQ2hhbmdlTG9nCi0rKysgQ2hhbmdlTG9nCi1A
QCAtMSw1ICsxLDEzIEBACi0gMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNz
PgotIAotKyAgICAgICAgUmV2aWV3ZWQgYnkgU3VlLgotKwotKyAgICAgICAgQ2hhbmdlZCBzb21l
IG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotKzIwMDkt
MTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSsKLSAgICAgICAgIFJldmlld2Vk
IGJ5IFJheS4KLSAKLSAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIuCi1F
TkQKLQotJG91dCA9IDw8J0VORCc7Ci0tLS0gQ2hhbmdlTG9nCi0rKysgQ2hhbmdlTG9nCi1AQCAt
MSwzICsxLDExIEBACi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgot
KwotKyAgICAgICAgUmV2aWV3ZWQgYnkgU3VlLgotKwotKyAgICAgICAgQ2hhbmdlZCBzb21lIG1v
cmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotIDIwMDktMTIt
MjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLSAgICAgICAgIFJldmlld2VkIGJ5
IFJheS4KLUVORAotCi1vayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRvdXQsICR0aXRsZSk7
Ci0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDogTGVhZGluZyBjb250
ZXh0IGRvZXMgbm90IGluY2x1ZGUgZmlyc3QgbGluZS4iOwotCi0kaW4gPSA8PCdFTkQnOwotQEAg
LTIsNiArMiwxNCBAQAotIAotICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotIAotKyAgICAgICAg
Q2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxl
OgotKwotKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSsKLSsgICAg
ICAgIFJldmlld2VkIGJ5IFJheS4KLSsKLSAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIw
MDktMTItMjIuCi0gCi0gICAgICAgICAqIEZpbGU6Ci1FTkQKLQotJG91dCA9IDw8J0VORCc7Ci1A
QCAtMSwzICsxLDExIEBACi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNz
PgotKwotKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotKwotKyAgICAgICAgQ2hhbmdlZCBzb21l
IG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotIDIwMDkt
MTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLSAgICAgICAgIFJldmlld2Vk
IGJ5IFJheS4KLUVORAotCi1vayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRvdXQsICR0aXRs
ZSk7Ci0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDogTm9uLWNvbnNl
Y3V0aXZlIGxpbmUgYWRkaXRpb25zLiI7Ci0KLSMgVGhpcyBjYW4gb2NjdXIsIGZvciBleGFtcGxl
LCBpZiB0aGUgbmV3IENoYW5nZUxvZyBlbnRyeSBpbmNsdWRlcwotIyB0cmFpbGluZyB3aGl0ZSBz
cGFjZSBpbiB0aGUgZmlyc3QgYmxhbmsgbGluZSBidXQgbm90IHRoZSBzZWNvbmQuCi0jIEEgZGlm
ZiBjb21tYW5kIGNhbiB0aGVuIG1hdGNoIHRoZSBzZWNvbmQgYmxhbmsgbGluZSBvZiB0aGUgbmV3
Ci0jIENoYW5nZUxvZyBlbnRyeSB3aXRoIHRoZSBmaXJzdCBibGFuayBsaW5lIG9mIHRoZSBvbGQu
Ci0jIFRoZSBzdm4gZGlmZiBjb21tYW5kIHdpdGggdGhlIGRlZmF1bHQgLS1kaWZmLWNtZCBoYXMg
ZG9uZSB0aGlzLgotJGluID0gPDwnRU5EJzsKLUBAIC0xLDUgKzEsMTEgQEAKLSAyMDA5LTEyLTIy
ICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+Ci0rIDxwcmV0ZW5kLXdoaXRlc3BhY2U+Ci0r
ICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi0gCi0rICAgICAgICBDaGFuZ2VkIHNvbWUgbW9yZSBj
b2RlIG9uIDIwMDktMTItMjIuCi0rCi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5h
ZGRyZXNzPgotKwotICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotIAotICAgICAgICAgQ2hhbmdl
ZCBzb21lIGNvZGUgb24gMjAwOS0xMi0yMi4KLUVORAotCi0kb3V0ID0gPDwnRU5EJzsKLUBAIC0x
LDMgKzEsOSBAQAotKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSsg
PHByZXRlbmQtd2hpdGVzcGFjZT4KLSsgICAgICAgIFJldmlld2VkIGJ5IFJheS4KLSsKLSsgICAg
ICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMi4KLSsKLSAyMDA5LTEyLTIy
ICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+Ci0gCi0gICAgICAgICBSZXZpZXdlZCBieSBS
YXkuCi1FTkQKLQotb2soZml4Q2hhbmdlTG9nUGF0Y2goJGluKSBlcSAkb3V0LCAkdGl0bGUpOwot
Ci0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IEFkZGl0aW9uYWwgZWRp
dHMgYWZ0ZXIgbmV3IGVudHJ5LiI7Ci0KLSRpbiA9IDw8J0VORCc7Ci1AQCAtMiwxMCArMiwxNyBA
QAotIAotICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotIAotKyAgICAgICAgQ2hhbmdlZCBzb21l
IG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotKzIwMDkt
MTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSsKLSsgICAgICAgIFJldmlld2Vk
IGJ5IFJheS4KLSsKLSAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIuCi0g
Ci0gICAgICAgICAqIEZpbGU6Ci0tICAgICAgICAqIEZpbGUyOgotIAotIDIwMDktMTItMjEgIEFs
aWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLUVORAotCi0kb3V0ID0gPDwnRU5EJzsKLUBA
IC0xLDExICsxLDE4IEBACi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNz
PgotKwotKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotKwotKyAgICAgICAgQ2hhbmdlZCBzb21l
IG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotIDIwMDkt
MTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLSAgICAgICAgIFJldmlld2Vk
IGJ5IFJheS4KLSAKLSAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIuCi0g
Ci0gICAgICAgICAqIEZpbGU6Ci0tICAgICAgICAqIEZpbGUyOgotIAotIDIwMDktMTItMjEgIEFs
aWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLUVORAotCi1vayhmaXhDaGFuZ2VMb2dQYXRj
aCgkaW4pIGVxICRvdXQsICR0aXRsZSk7Ci0KLSMgVGVzdHM6IGdlbmVyYXRlUnVuUGF0Y2hDb21t
YW5kCi0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZDogVW5k
ZWZpbmVkIG9wdGlvbmFsIGFyZ3VtZW50cy4iOwotCi1teSAkYXJnc0hhc2hSZWY7Ci1teSAoJHBh
dGNoQ29tbWFuZCwgJGlzRm9yY2luZykgPSBWQ1NVdGlsczo6Z2VuZXJhdGVSdW5QYXRjaENvbW1h
bmQoJGFyZ3NIYXNoUmVmKTsKLQotb2soJHBhdGNoQ29tbWFuZCBlcSAicGF0Y2ggLXAwIiwgJHRp
dGxlKTsKLW9rKCRpc0ZvcmNpbmcgPT0gMCwgJHRpdGxlKTsKLQotIyBOZXcgdGVzdAotJHRpdGxl
ID0gImdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kOiBVbmRlZmluZWQgb3B0aW9ucy4iOwotCi1teSAk
b3B0aW9uczsKLSRhcmdzSGFzaFJlZiA9IHtvcHRpb25zID0+ICRvcHRpb25zfTsKLSgkcGF0Y2hD
b21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgk
YXJnc0hhc2hSZWYpOwotCi1vaygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAiLCAkdGl0bGUp
Owotb2soJGlzRm9yY2luZyA9PSAwLCAkdGl0bGUpOwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAi
Z2VuZXJhdGVSdW5QYXRjaENvbW1hbmQ6IC0tZm9yY2UgYW5kIG5vIFwiZW5zdXJlIGZvcmNlXCIu
IjsKLQotJGFyZ3NIYXNoUmVmID0ge29wdGlvbnMgPT4gWyItLWZvcmNlIl19OwotKCRwYXRjaENv
bW1hbmQsICRpc0ZvcmNpbmcpID0gVkNTVXRpbHM6OmdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kKCRh
cmdzSGFzaFJlZik7Ci0KLW9rKCRwYXRjaENvbW1hbmQgZXEgInBhdGNoIC1wMCAtLWZvcmNlIiwg
JHRpdGxlKTsKLW9rKCRpc0ZvcmNpbmcgPT0gMSwgJHRpdGxlKTsKLQotIyBOZXcgdGVzdAotJHRp
dGxlID0gImdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kOiBubyAtLWZvcmNlIGFuZCBcImVuc3VyZSBm
b3JjZVwiLiI7Ci0KLSRhcmdzSGFzaFJlZiA9IHtlbnN1cmVGb3JjZSA9PiAxfTsKLSgkcGF0Y2hD
b21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgk
YXJnc0hhc2hSZWYpOwotCi1vaygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAgLS1mb3JjZSIs
ICR0aXRsZSk7Ci1vaygkaXNGb3JjaW5nID09IDEsICR0aXRsZSk7Ci0KLSMgTmV3IHRlc3QKLSR0
aXRsZSA9ICJnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZDogXCJzaG91bGQgcmV2ZXJzZVwiLiI7Ci0K
LSRhcmdzSGFzaFJlZiA9IHtzaG91bGRSZXZlcnNlID0+IDF9OwotKCRwYXRjaENvbW1hbmQsICRp
c0ZvcmNpbmcpID0gVkNTVXRpbHM6OmdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kKCRhcmdzSGFzaFJl
Zik7Ci0KLW9rKCRwYXRjaENvbW1hbmQgZXEgInBhdGNoIC1wMCAtLXJldmVyc2UiLCAkdGl0bGUp
OwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZ2VuZXJhdGVSdW5QYXRjaENvbW1hbmQ6IC0tZnV6
ej0zLCAtLWZvcmNlLiI7Ci0KLSRhcmdzSGFzaFJlZiA9IHtvcHRpb25zID0+IFsiLS1mdXp6PTMi
LCAiLS1mb3JjZSJdfTsKLSgkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpn
ZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgkYXJnc0hhc2hSZWYpOwotCi1vaygkcGF0Y2hDb21tYW5k
IGVxICJwYXRjaCAtcDAgLS1mb3JjZSAtLWZ1eno9MyIsICR0aXRsZSk7Ci0KLSMgVGVzdHM6IHJ1
blBhdGNoQ29tbWFuZAotCiAjIE5ldyB0ZXN0CiAkdGl0bGUgPSAicnVuUGF0Y2hDb21tYW5kOiBV
bnN1Y2Nlc3NmdWwgcGF0Y2gsIGZvcmNpbmcuIjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45780</attachid>
            <date>2010-01-04 01:19:33 -0800</date>
            <delta_ts>2010-01-04 07:50:15 -0800</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>patch-tools4-2.txt</filename>
            <type>text/plain</type>
            <size>48965</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUyNzE1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDEtMDQgIENocmlzIEplcmRvbmVrICA8
Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIERpdmlkZWQgdGhlIFBlcmwgdW5pdCB0ZXN0cyBpbnRvIHNlcGFy
YXRlIGZpbGVzIGFuZCBwdXQKKyAgICAgICAgdGhlbSBpbiBhIHNlcGFyYXRlIGRpcmVjdG9yeSwg
YW5kIHJlbmFtZWQgdGVzdC13ZWJraXQtcGVybAorICAgICAgICB0byB0ZXN0LXdlYmtpdHBlcmwu
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTI0
CisKKyAgICAgICAgKiBTY3JpcHRzL1ZDU1V0aWxzLnBtOgorICAgICAgICAgIC0gUmVuYW1lZCBn
ZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgpIHRvIGdlbmVyYXRlUGF0Y2hDb21tYW5kKCkuCisKKyAg
ICAgICAgKiBTY3JpcHRzL1ZDU1V0aWxzX3VuaXR0ZXN0LnBsOiBSZW1vdmVkLgorICAgICAgICAg
IC0gRGl2aWRlZCBpbnRvIHRocmVlIGZpbGVzIGluIFNjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGls
c191bml0dGVzdC4KKworICAgICAgICAqIFNjcmlwdHMvdGVzdC13ZWJraXQtcGVybDogUmVtb3Zl
ZC4KKyAgICAgICAgICAtIFJlbmFtZWQgdG8gdGVzdC13ZWJraXRwZXJsLgorCisgICAgICAgICog
U2NyaXB0cy90ZXN0LXdlYmtpdC1zY3JpcHRzOgorICAgICAgICAgIC0gVXBkYXRlZCBwYXRocyB0
byB0ZXN0LXdlYmtpdHB5IGFuZCB0ZXN0LXdlYmtpdHBlcmwuCisKKyAgICAgICAgKiBTY3JpcHRz
L3Rlc3Qtd2Via2l0cGVybDogQ29waWVkIGZyb20gU2NyaXB0cy90ZXN0LXdlYmtpdC1wZXJsLgor
ICAgICAgICAgIC0gQWRkZWQgcGF0aHMgdG8gbmV3IHRlc3QgZmlsZXMuCisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHBlcmw6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9W
Q1NVdGlsc191bml0dGVzdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL1ZD
U1V0aWxzX3VuaXR0ZXN0L2ZpeENoYW5nZUxvZ1BhdGNoLnBsOiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvZ2VuZXJhdGVQYXRjaENvbW1hbmQu
cGw6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVz
dC9ydW5QYXRjaENvbW1hbmQucGw6IENvcGllZCBmcm9tIFNjcmlwdHMvVkNTVXRpbHNfdW5pdHRl
c3QucGwuCisKIDIwMTAtMDEtMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdFRvb2xzL1Njcmlw
dHMvVkNTVXRpbHMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGls
cy5wbQkocmV2aXNpb24gNTI3MDUpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBt
CSh3b3JraW5nIGNvcHkpCkBAIC01MjAsNyArNTIwLDcgQEAgc3ViIGZpeENoYW5nZUxvZ1BhdGNo
KCQpCiAjIFJldHVybnMgKCRwYXRjaENvbW1hbmQsICRpc0ZvcmNpbmcpLgogIwogIyBUaGlzIHN1
YnJvdXRpbmUgaGFzIHVuaXQgdGVzdHMgaW4gVkNTVXRpbHNfdW5pdHRlc3QucGwuCi1zdWIgZ2Vu
ZXJhdGVSdW5QYXRjaENvbW1hbmQoJCkKK3N1YiBnZW5lcmF0ZVBhdGNoQ29tbWFuZCgkKQogewog
ICAgIG15ICgkcGFzc2VkQXJnc0hhc2hSZWYpID0gQF87CiAKQEAgLTU5Miw3ICs1OTIsNyBAQCBz
dWIgcnVuUGF0Y2hDb21tYW5kKCQkJDskKQogewogICAgIG15ICgkcGF0Y2gsICRyZXBvc2l0b3J5
Um9vdFBhdGgsICRwYXRoUmVsYXRpdmVUb1Jvb3QsICRhcmdzKSA9IEBfOwogCi0gICAgbXkgKCRw
YXRjaENvbW1hbmQsICRpc0ZvcmNpbmcpID0gZ2VuZXJhdGVSdW5QYXRjaENvbW1hbmQoJGFyZ3Mp
OworICAgIG15ICgkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IGdlbmVyYXRlUGF0Y2hDb21t
YW5kKCRhcmdzKTsKIAogICAgICMgVGVtcG9yYXJpbHkgY2hhbmdlIHRoZSB3b3JraW5nIGRpcmVj
dG9yeSBzaW5jZSB0aGUgcGF0aCBmb3VuZAogICAgICMgaW4gdGhlIHBhdGNoJ3MgIkluZGV4OiIg
bGluZSBpcyByZWxhdGl2ZSB0byB0aGUgcmVwb3NpdG9yeSByb290CkluZGV4OiBXZWJLaXRUb29s
cy9TY3JpcHRzL1ZDU1V0aWxzX3VuaXR0ZXN0LnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L1NjcmlwdHMvVkNTVXRpbHNfdW5pdHRlc3QucGwJKHJldmlzaW9uIDUyNzA1KQorKysgV2ViS2l0
VG9vbHMvU2NyaXB0cy9WQ1NVdGlsc191bml0dGVzdC5wbAkod29ya2luZyBjb3B5KQpAQCAtMSw0
MjQgKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0jCi0jIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MCBDaHJpcyBKZXJkb25layAoY2hyaXMuamVyZG9uZWtAZ21haWwuY29tKQotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jIAotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIyAKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0jIFVuaXQgdGVzdHMgb2YgVkNTVXRpbHMucG0uCi0KLXVzZSBUZXN0OjpTaW1w
bGUgdGVzdHMgPT4gMjE7Ci0KLXVzZSBGaW5kQmluOwotdXNlIGxpYiAkRmluZEJpbjo6QmluOyAj
IHNvIHRoaXMgc2NyaXB0IGNhbiBiZSBydW4gZnJvbSBhbnkgZGlyZWN0b3J5LgotCi11c2UgVkNT
VXRpbHM7Ci0KLSMgQ2FsbCBhIGZ1bmN0aW9uIHdoaWxlIHN1cHByZXNzaW5nIFNUREVSUi4KLXN1
YiBjYWxsU2lsZW50bHkoJEApIHsKLSAgICBteSAoJGZ1bmMsIEBhcmdzKSA9IEBfOwotCi0gICAg
b3BlbihPTERFUlIsICI+JlNUREVSUiIpOwotICAgIGNsb3NlKFNUREVSUik7Ci0gICAgbXkgQHJl
dHVyblZhbHVlID0gJiRmdW5jKEBhcmdzKTsKLSAgICBvcGVuKFNUREVSUiwgIj4mT0xERVJSIik7
Ci0gICAgY2xvc2UoT0xERVJSKTsgIyBGSVhNRTogSXMgdGhpcyBuZWNlc3Nhcnk/Ci0KLSAgICBy
ZXR1cm4gQHJldHVyblZhbHVlOwotfQotCi0jIGZpeENoYW5nZUxvZ1BhdGNoCi0jCi0jIFRoZSBz
b3VyY2UgQ2hhbmdlTG9nIGZvciB0aGVzZSB0ZXN0cyBpcyB0aGUgZm9sbG93aW5nOgotIyAKLSMg
MjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotIyAKLSMgICAgICAgICBS
ZXZpZXdlZCBieSBSYXkuCi0jIAotIyAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDkt
MTItMjIuCi0jIAotIyAgICAgICAgICogRmlsZToKLSMgICAgICAgICAqIEZpbGUyOgotIyAKLSMg
MjAwOS0xMi0yMSAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotIyAKLSMgICAgICAgICBS
ZXZpZXdlZCBieSBSYXkuCi0jIAotIyAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDkt
MTItMjEuCi0jIAotIyAgICAgICAgICogRmlsZToKLSMgICAgICAgICAqIEZpbGUyOgotCi1teSAk
dGl0bGU7Ci1teSAkaW47Ci1teSAkb3V0OwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZml4Q2hh
bmdlTG9nUGF0Y2g6IFtubyBjaGFuZ2VdIEZpcnN0IGxpbmUgaXMgbmV3IGxpbmUuIjsKLQotJGlu
ID0gPDwnRU5EJzsKLS0tLSBDaGFuZ2VMb2cKLSsrKyBDaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEg
QEAKLSsyMDA5LTEyLTIyICBCb2IgIDxib2JAZW1haWwuYWRkcmVzcz4KLSsKLSsgICAgICAgIFJl
dmlld2VkIGJ5IFJheS4KLSsKLSsgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAw
OS0xMi0yMi4KLSsKLSsgICAgICAgICogRmlsZToKLSsKLSAyMDA5LTEyLTIyICBBbGljZSAgPGFs
aWNlQGVtYWlsLmFkZHJlc3M+Ci0gCi0gICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi1FTkQKLQot
b2soZml4Q2hhbmdlTG9nUGF0Y2goJGluKSBlcSAkaW4sICR0aXRsZSk7Ci0KLSMgTmV3IHRlc3QK
LSR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDogW25vIGNoYW5nZV0gTm8gZGF0ZSBzdHJpbmcu
IjsKLQotJGluID0gPDwnRU5EJzsKLS0tLSBDaGFuZ2VMb2cKLSsrKyBDaGFuZ2VMb2cKLUBAIC02
LDYgKzYsNyBAQAotIAotICAgICAgICAgKiBGaWxlOgotICAgICAgICAgKiBGaWxlMjoKLSsgICAg
ICAgICogRmlsZTM6Ci0gCi0gMjAwOS0xMi0yMSAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNz
PgotIAotRU5ECi0KLW9rKGZpeENoYW5nZUxvZ1BhdGNoKCRpbikgZXEgJGluLCAkdGl0bGUpOwot
Ci0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IFtubyBjaGFuZ2VdIE5l
dyBlbnRyeSBpbnNlcnRlZCBpbiBtaWRkbGUuIjsKLQotJGluID0gPDwnRU5EJzsKLS0tLSBDaGFu
Z2VMb2cKLSsrKyBDaGFuZ2VMb2cKLUBAIC0xMSw2ICsxMSwxNCBAQAotIAotICAgICAgICAgUmV2
aWV3ZWQgYnkgUmF5LgotIAotKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5
LTEyLTIxLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotKzIwMDktMTItMjEgIEFsaWNlICA8YWxp
Y2VAZW1haWwuYWRkcmVzcz4KLSsKLSsgICAgICAgIFJldmlld2VkIGJ5IFJheS4KLSsKLSAgICAg
ICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjEuCi0gCi0gICAgICAgICAqIEZpbGU6
Ci1FTkQKLQotb2soZml4Q2hhbmdlTG9nUGF0Y2goJGluKSBlcSAkaW4sICR0aXRsZSk7Ci0KLSMg
TmV3IHRlc3QKLSR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDogTGVhZGluZyBjb250ZXh0IGlu
Y2x1ZGVzIGZpcnN0IGxpbmUuIjsKLQotJGluID0gPDwnRU5EJzsKLS0tLSBDaGFuZ2VMb2cKLSsr
KyBDaGFuZ2VMb2cKLUBAIC0xLDUgKzEsMTMgQEAKLSAyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNl
QGVtYWlsLmFkZHJlc3M+Ci0gCi0rICAgICAgICBSZXZpZXdlZCBieSBTdWUuCi0rCi0rICAgICAg
ICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCi0rCi0rICAgICAgICAqIEZp
bGU6Ci0rCi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotKwotICAg
ICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotIAotICAgICAgICAgQ2hhbmdlZCBzb21lIGNvZGUgb24g
MjAwOS0xMi0yMi4KLUVORAotCi0kb3V0ID0gPDwnRU5EJzsKLS0tLSBDaGFuZ2VMb2cKLSsrKyBD
aGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVt
YWlsLmFkZHJlc3M+Ci0rCi0rICAgICAgICBSZXZpZXdlZCBieSBTdWUuCi0rCi0rICAgICAgICBD
aGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCi0rCi0rICAgICAgICAqIEZpbGU6
Ci0rCi0gMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotIAotICAgICAg
ICAgUmV2aWV3ZWQgYnkgUmF5LgotRU5ECi0KLW9rKGZpeENoYW5nZUxvZ1BhdGNoKCRpbikgZXEg
JG91dCwgJHRpdGxlKTsKLQotIyBOZXcgdGVzdAotJHRpdGxlID0gImZpeENoYW5nZUxvZ1BhdGNo
OiBMZWFkaW5nIGNvbnRleHQgZG9lcyBub3QgaW5jbHVkZSBmaXJzdCBsaW5lLiI7Ci0KLSRpbiA9
IDw8J0VORCc7Ci1AQCAtMiw2ICsyLDE0IEBACi0gCi0gICAgICAgICBSZXZpZXdlZCBieSBSYXku
Ci0gCi0rICAgICAgICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCi0rCi0r
ICAgICAgICAqIEZpbGU6Ci0rCi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRy
ZXNzPgotKwotKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotKwotICAgICAgICAgQ2hhbmdlZCBz
b21lIGNvZGUgb24gMjAwOS0xMi0yMi4KLSAKLSAgICAgICAgICogRmlsZToKLUVORAotCi0kb3V0
ID0gPDwnRU5EJzsKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNl
QGVtYWlsLmFkZHJlc3M+Ci0rCi0rICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi0rCi0rICAgICAg
ICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCi0rCi0rICAgICAgICAqIEZp
bGU6Ci0rCi0gMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotIAotICAg
ICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotRU5ECi0KLW9rKGZpeENoYW5nZUxvZ1BhdGNoKCRpbikg
ZXEgJG91dCwgJHRpdGxlKTsKLQotIyBOZXcgdGVzdAotJHRpdGxlID0gImZpeENoYW5nZUxvZ1Bh
dGNoOiBOb24tY29uc2VjdXRpdmUgbGluZSBhZGRpdGlvbnMuIjsKLQotIyBUaGlzIGNhbiBvY2N1
ciwgZm9yIGV4YW1wbGUsIGlmIHRoZSBuZXcgQ2hhbmdlTG9nIGVudHJ5IGluY2x1ZGVzCi0jIHRy
YWlsaW5nIHdoaXRlIHNwYWNlIGluIHRoZSBmaXJzdCBibGFuayBsaW5lIGJ1dCBub3QgdGhlIHNl
Y29uZC4KLSMgQSBkaWZmIGNvbW1hbmQgY2FuIHRoZW4gbWF0Y2ggdGhlIHNlY29uZCBibGFuayBs
aW5lIG9mIHRoZSBuZXcKLSMgQ2hhbmdlTG9nIGVudHJ5IHdpdGggdGhlIGZpcnN0IGJsYW5rIGxp
bmUgb2YgdGhlIG9sZC4KLSMgVGhlIHN2biBkaWZmIGNvbW1hbmQgd2l0aCB0aGUgZGVmYXVsdCAt
LWRpZmYtY21kIGhhcyBkb25lIHRoaXMuCi0kaW4gPSA8PCdFTkQnOwotQEAgLTEsNSArMSwxMSBA
QAotIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSsgPHByZXRlbmQt
d2hpdGVzcGFjZT4KLSsgICAgICAgIFJldmlld2VkIGJ5IFJheS4KLSAKLSsgICAgICAgIENoYW5n
ZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMi4KLSsKLSsyMDA5LTEyLTIyICBBbGljZSAg
PGFsaWNlQGVtYWlsLmFkZHJlc3M+Ci0rCi0gICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi0gCi0g
ICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIyLgotRU5ECi0KLSRvdXQgPSA8
PCdFTkQnOwotQEAgLTEsMyArMSw5IEBACi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFp
bC5hZGRyZXNzPgotKyA8cHJldGVuZC13aGl0ZXNwYWNlPgotKyAgICAgICAgUmV2aWV3ZWQgYnkg
UmF5LgotKwotKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgot
KwotIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAKLSAgICAgICAg
IFJldmlld2VkIGJ5IFJheS4KLUVORAotCi1vayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRv
dXQsICR0aXRsZSk7Ci0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDog
QWRkaXRpb25hbCBlZGl0cyBhZnRlciBuZXcgZW50cnkuIjsKLQotJGluID0gPDwnRU5EJzsKLUBA
IC0yLDEwICsyLDE3IEBACi0gCi0gICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi0gCi0rICAgICAg
ICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCi0rCi0rICAgICAgICAqIEZp
bGU6Ci0rCi0rMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotKwotKyAg
ICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotKwotICAgICAgICAgQ2hhbmdlZCBzb21lIGNvZGUgb24g
MjAwOS0xMi0yMi4KLSAKLSAgICAgICAgICogRmlsZToKLS0gICAgICAgICogRmlsZTI6Ci0gCi0g
MjAwOS0xMi0yMSAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotIAotRU5ECi0KLSRvdXQg
PSA8PCdFTkQnOwotQEAgLTEsMTEgKzEsMTggQEAKLSsyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNl
QGVtYWlsLmFkZHJlc3M+Ci0rCi0rICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi0rCi0rICAgICAg
ICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCi0rCi0rICAgICAgICAqIEZp
bGU6Ci0rCi0gMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotIAotICAg
ICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotIAotICAgICAgICAgQ2hhbmdlZCBzb21lIGNvZGUgb24g
MjAwOS0xMi0yMi4KLSAKLSAgICAgICAgICogRmlsZToKLS0gICAgICAgICogRmlsZTI6Ci0gCi0g
MjAwOS0xMi0yMSAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotIAotRU5ECi0KLW9rKGZp
eENoYW5nZUxvZ1BhdGNoKCRpbikgZXEgJG91dCwgJHRpdGxlKTsKLQotIyBUZXN0czogZ2VuZXJh
dGVSdW5QYXRjaENvbW1hbmQKLQotIyBOZXcgdGVzdAotJHRpdGxlID0gImdlbmVyYXRlUnVuUGF0
Y2hDb21tYW5kOiBVbmRlZmluZWQgb3B0aW9uYWwgYXJndW1lbnRzLiI7Ci0KLW15ICRhcmdzSGFz
aFJlZjsKLW15ICgkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5lcmF0
ZVJ1blBhdGNoQ29tbWFuZCgkYXJnc0hhc2hSZWYpOwotCi1vaygkcGF0Y2hDb21tYW5kIGVxICJw
YXRjaCAtcDAiLCAkdGl0bGUpOwotb2soJGlzRm9yY2luZyA9PSAwLCAkdGl0bGUpOwotCi0jIE5l
dyB0ZXN0Ci0kdGl0bGUgPSAiZ2VuZXJhdGVSdW5QYXRjaENvbW1hbmQ6IFVuZGVmaW5lZCBvcHRp
b25zLiI7Ci0KLW15ICRvcHRpb25zOwotJGFyZ3NIYXNoUmVmID0ge29wdGlvbnMgPT4gJG9wdGlv
bnN9OwotKCRwYXRjaENvbW1hbmQsICRpc0ZvcmNpbmcpID0gVkNTVXRpbHM6OmdlbmVyYXRlUnVu
UGF0Y2hDb21tYW5kKCRhcmdzSGFzaFJlZik7Ci0KLW9rKCRwYXRjaENvbW1hbmQgZXEgInBhdGNo
IC1wMCIsICR0aXRsZSk7Ci1vaygkaXNGb3JjaW5nID09IDAsICR0aXRsZSk7Ci0KLSMgTmV3IHRl
c3QKLSR0aXRsZSA9ICJnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZDogLS1mb3JjZSBhbmQgbm8gXCJl
bnN1cmUgZm9yY2VcIi4iOwotCi0kYXJnc0hhc2hSZWYgPSB7b3B0aW9ucyA9PiBbIi0tZm9yY2Ui
XX07Ci0oJHBhdGNoQ29tbWFuZCwgJGlzRm9yY2luZykgPSBWQ1NVdGlsczo6Z2VuZXJhdGVSdW5Q
YXRjaENvbW1hbmQoJGFyZ3NIYXNoUmVmKTsKLQotb2soJHBhdGNoQ29tbWFuZCBlcSAicGF0Y2gg
LXAwIC0tZm9yY2UiLCAkdGl0bGUpOwotb2soJGlzRm9yY2luZyA9PSAxLCAkdGl0bGUpOwotCi0j
IE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZ2VuZXJhdGVSdW5QYXRjaENvbW1hbmQ6IG5vIC0tZm9yY2Ug
YW5kIFwiZW5zdXJlIGZvcmNlXCIuIjsKLQotJGFyZ3NIYXNoUmVmID0ge2Vuc3VyZUZvcmNlID0+
IDF9OwotKCRwYXRjaENvbW1hbmQsICRpc0ZvcmNpbmcpID0gVkNTVXRpbHM6OmdlbmVyYXRlUnVu
UGF0Y2hDb21tYW5kKCRhcmdzSGFzaFJlZik7Ci0KLW9rKCRwYXRjaENvbW1hbmQgZXEgInBhdGNo
IC1wMCAtLWZvcmNlIiwgJHRpdGxlKTsKLW9rKCRpc0ZvcmNpbmcgPT0gMSwgJHRpdGxlKTsKLQot
IyBOZXcgdGVzdAotJHRpdGxlID0gImdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kOiBcInNob3VsZCBy
ZXZlcnNlXCIuIjsKLQotJGFyZ3NIYXNoUmVmID0ge3Nob3VsZFJldmVyc2UgPT4gMX07Ci0oJHBh
dGNoQ29tbWFuZCwgJGlzRm9yY2luZykgPSBWQ1NVdGlsczo6Z2VuZXJhdGVSdW5QYXRjaENvbW1h
bmQoJGFyZ3NIYXNoUmVmKTsKLQotb2soJHBhdGNoQ29tbWFuZCBlcSAicGF0Y2ggLXAwIC0tcmV2
ZXJzZSIsICR0aXRsZSk7Ci0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJnZW5lcmF0ZVJ1blBhdGNo
Q29tbWFuZDogLS1mdXp6PTMsIC0tZm9yY2UuIjsKLQotJGFyZ3NIYXNoUmVmID0ge29wdGlvbnMg
PT4gWyItLWZ1eno9MyIsICItLWZvcmNlIl19OwotKCRwYXRjaENvbW1hbmQsICRpc0ZvcmNpbmcp
ID0gVkNTVXRpbHM6OmdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kKCRhcmdzSGFzaFJlZik7Ci0KLW9r
KCRwYXRjaENvbW1hbmQgZXEgInBhdGNoIC1wMCAtLWZvcmNlIC0tZnV6ej0zIiwgJHRpdGxlKTsK
LQotIyBUZXN0czogcnVuUGF0Y2hDb21tYW5kCi0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJydW5Q
YXRjaENvbW1hbmQ6IFVuc3VjY2Vzc2Z1bCBwYXRjaCwgZm9yY2luZy4iOwotCi0jIFNpbmNlICRw
YXRjaCBoYXMgbm8gIkluZGV4OiIgcGF0aCwgcGFzc2luZyB0aGlzIHRvIHJ1blBhdGNoQ29tbWFu
ZAotIyBzaG91bGQgbm90IGFmZmVjdCBhbnkgZmlsZXMuCi1teSAkcGF0Y2ggPSA8PCdFTkQnOwot
R2FyYmFnZSBwYXRjaCBjb250ZW50cwotRU5ECi0KLSMgV2UgY2FsbCB2aWEgY2FsbFNpbGVudGx5
KCkgdG8gYXZvaWQgb3V0cHV0IGxpa2UgdGhlIGZvbGxvd2luZyB0byBTVERFUlI6Ci0jIHBhdGNo
OiAqKioqIE9ubHkgZ2FyYmFnZSB3YXMgZm91bmQgaW4gdGhlIHBhdGNoIGlucHV0LgotJGFyZ3NI
YXNoUmVmID0ge2Vuc3VyZUZvcmNlID0+IDF9OwotJGV4aXRTdGF0dXMgPSBjYWxsU2lsZW50bHko
XCZydW5QYXRjaENvbW1hbmQsICRwYXRjaCwgIi4iLCAiZmlsZV90b19wYXRjaC50eHQiLCAkYXJn
c0hhc2hSZWYpOwotCi1vaygkZXhpdFN0YXR1cyAhPSAwLCAkdGl0bGUpOwotCi0jIE5ldyB0ZXN0
Ci0kdGl0bGUgPSAicnVuUGF0Y2hDb21tYW5kOiBOZXcgZmlsZSwgLS1kcnktcnVuLiI7Ci0KLSMg
VGhpcyBmaWxlIHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgdGhlIHRlc3RzLCBidXQgd2UgdGFrZSBj
YXJlIHdpdGggdGhlCi0jIGZpbGUgbmFtZSBhbmQgY29udGVudHMganVzdCBpbiBjYXNlLgotbXkg
JGZpbGVUb1BhdGNoID0gInRlbXBfT0tfVE9fRVJBU0VfX1JFQURNRV9GT1JfTU9SRS50eHQiOwot
JHBhdGNoID0gPDxFTkQ7Ci1JbmRleDogJGZpbGVUb1BhdGNoCi09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gJGZp
bGVUb1BhdGNoCShyZXZpc2lvbiAwKQotKysrICRmaWxlVG9QYXRjaAkocmV2aXNpb24gMCkKLUBA
IC0wLDAgKzEsNSBAQAotK1RoaXMgaXMgYSB0ZXN0IGZpbGUgZm9yIFdlYktpdFRvb2xzL1Njcmlw
dHMvVkNTVXRpbHNfdW5pdHRlc3QucGwuCi0rVGhpcyBmaWxlIHNob3VsZCBub3QgaGF2ZSBnb3R0
ZW4gY3JlYXRlZCBvbiB5b3VyIHN5c3RlbS4KLStJZiBpdCBkaWQsIHNvbWUgdW5pdCB0ZXN0cyBk
b24ndCBzZWVtIHRvIGJlIHdvcmtpbmcgcXVpdGUgcmlnaHQ6Ci0rSXQgd291bGQgYmUgZ3JlYXQg
aWYgeW91IGNvdWxkIGZpbGUgYSBidWcgcmVwb3J0LiBUaGFua3MhCi0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1F
TkQKLQotIyAtLWRyeS1ydW4gcHJldmVudHMgY3JlYXRpbmcgYW55IGZpbGVzLgotIyAtLXNpbGVu
dCBzdXBwcmVzc2VzIHRoZSBzdWNjZXNzIG1lc3NhZ2UgdG8gU1RET1VULgotJGFyZ3NIYXNoUmVm
ID0ge29wdGlvbnMgPT4gWyItLWRyeS1ydW4iLCAiLS1zaWxlbnQiXX07Ci0kZXhpdFN0YXR1cyA9
IHJ1blBhdGNoQ29tbWFuZCgkcGF0Y2gsICIuIiwgJGZpbGVUb1BhdGNoLCAkYXJnc0hhc2hSZWYp
OwotCi1vaygkZXhpdFN0YXR1cyA9PSAwLCAkdGl0bGUpOwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUg
PSAicnVuUGF0Y2hDb21tYW5kOiBOZXcgZmlsZTogXCIkZmlsZVRvUGF0Y2hcIi4iOwotCi0kYXJn
c0hhc2hSZWYgPSB7b3B0aW9ucyA9PiBbIi0tc2lsZW50Il19OwotJGV4aXRTdGF0dXMgPSBydW5Q
YXRjaENvbW1hbmQoJHBhdGNoLCAiLiIsICRmaWxlVG9QYXRjaCwgJGFyZ3NIYXNoUmVmKTsKLQot
b2soJGV4aXRTdGF0dXMgPT0gMCwgJHRpdGxlKTsKLQotIyBOZXcgdGVzdAotJHRpdGxlID0gInJ1
blBhdGNoQ29tbWFuZDogUmV2ZXJzZSBuZXcgZmlsZSAoY2xlYW4gdXAgcHJldmlvdXMpLiI7Ci0K
LSRhcmdzSGFzaFJlZiA9IHtzaG91bGRSZXZlcnNlID0+IDEsCi0gICAgICAgICAgICAgICAgb3B0
aW9ucyA9PiBbIi0tc2lsZW50IiwgIi0tcmVtb3ZlLWVtcHR5LWZpbGVzIl19OyAjIFRvIGNsZWFu
IHVwLgotJGV4aXRTdGF0dXMgPSBydW5QYXRjaENvbW1hbmQoJHBhdGNoLCAiLiIsICRmaWxlVG9Q
YXRjaCwgJGFyZ3NIYXNoUmVmKTsKLW9rKCRleGl0U3RhdHVzID09IDAsICR0aXRsZSk7CkluZGV4
OiBXZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0LXBlcmwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdC1wZXJsCShyZXZpc2lvbiA1MjcwNSkKKysrIFdl
YktpdFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXQtcGVybAkod29ya2luZyBjb3B5KQpAQCAtMSw0
MCArMCwwIEBACi0jIS91c3IvYmluL3BlcmwKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDA5IENocmlz
IEplcmRvbmVrIChjaHJpcy5qZXJkb25la0BnbWFpbC5jb20pCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMgCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jIAotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLSMgUnVucyB1bml0IHRlc3RzIG9mIFdlYktpdCBQZXJsIGNvZGUuCi0KLXVzZSBGaW5kQmlu
OwotdXNlIFRlc3Q6Okhhcm5lc3M7Ci0KLSMgVXNlIGFuIGFic29sdXRlIHBhdGggc28gdGhpcyBz
Y3JpcHQgY2FuIGJlIHJ1biBmcm9tIGFueSBkaXJlY3RvcnkuCi0kc2NyaXB0c0RpciA9ICRGaW5k
QmluOjpCaW47Ci0kc2NyaXB0c0RpciA9fiBzfC8rJHx8OyAjIFJlbW92ZSB0cmFpbGluZyAnLycK
LQotcnVudGVzdHMoIiRzY3JpcHRzRGlyL1ZDU1V0aWxzX3VuaXR0ZXN0LnBsIik7CkluZGV4OiBX
ZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0LXNjcmlwdHMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdC1zY3JpcHRzCShyZXZpc2lvbiA1MjcwNSkKKysr
IFdlYktpdFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXQtc2NyaXB0cwkod29ya2luZyBjb3B5KQpA
QCAtNzEsMTAgKzcxLDEwIEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgIyBVc2Ug
YWJzb2x1dGUgcGF0aHMgc28gdGhpcyBzY3JpcHQgY2FuIGJlIHJ1biBmcm9tIGFueSBkaXJlY3Rv
cnkuCiAgICAgc2NyaXB0c19kaXJlY3RvcnkgPSBzeXMucGF0aFswXQogCi0gICAgdGVzdF9zY3Jp
cHQoJ1Blcmwgc2NyaXB0cycsIG9zLnBhdGguam9pbihzY3JpcHRzX2RpcmVjdG9yeSwgJ3Rlc3Qt
d2Via2l0LXBlcmwnKSkKKyAgICB0ZXN0X3NjcmlwdCgnUGVybCBzY3JpcHRzJywgb3MucGF0aC5q
b2luKHNjcmlwdHNfZGlyZWN0b3J5LCAndGVzdC13ZWJraXRwZXJsJykpCiAKICAgICB0ZXN0X3Nj
cmlwdCgnUHl0aG9uIHNjcmlwdHMnLAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzY3Jp
cHRzX2RpcmVjdG9yeSwgJ3Rlc3Qtd2Via2l0LXB5dGhvbicpLAorICAgICAgICAgICAgICAgIG9z
LnBhdGguam9pbihzY3JpcHRzX2RpcmVjdG9yeSwgJ3Rlc3Qtd2Via2l0cHknKSwKICAgICAgICAg
ICAgICAgICBbJy0tYWxsJ10gaWYgc2hvdWxkX2luY2x1ZGVfYWxsIGVsc2UgTm9uZSkKIAogICAg
ICMgRklYTUU6IERpc3BsYXkgYSBjdW11bGF0aXZlIGluZGljYXRpb24gb2Ygc3VjY2VzcyBvciBm
YWlsdXJlLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHBlcmwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHBlcmwJKHJldmlzaW9uIDUy
NzAyKQkoZnJvbSBXZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0LXBlcmw6NTI3MDIpCisr
KyBXZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cGVybAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQwIEBACisjIS91c3IvYmluL3BlcmwKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA5IENo
cmlzIEplcmRvbmVrIChjaHJpcy5qZXJkb25la0BnbWFpbC5jb20pCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyMgUnVucyB1bml0IHRlc3RzIG9mIFdlYktpdCBQZXJsIGNvZGUuCisKK3VzZSBGaW5k
QmluOwordXNlIFRlc3Q6Okhhcm5lc3M7CisKKyMgVXNlIGFuIGFic29sdXRlIHBhdGggc28gdGhp
cyBzY3JpcHQgY2FuIGJlIHJ1biBmcm9tIGFueSBkaXJlY3RvcnkuCiskc2NyaXB0c0RpciA9ICRG
aW5kQmluOjpCaW47Ciskc2NyaXB0c0RpciA9fiBzfC8rJHx8OyAjIFJlbW92ZSB0cmFpbGluZyAn
LycKKworcnVudGVzdHMoIiRzY3JpcHRzRGlyL1ZDU1V0aWxzX3VuaXR0ZXN0LnBsIik7CkluZGV4
OiBXZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cGVybAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cGVybAkocmV2aXNpb24gNTI3MDIpCisrKyBXZWJL
aXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cGVybAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSAr
MzIsMjAgQEAKIAogdXNlIEZpbmRCaW47CiB1c2UgVGVzdDo6SGFybmVzczsKK3VzZSBsaWIgJEZp
bmRCaW46OkJpbjsgIyBzbyB0aGlzIHNjcmlwdCBjYW4gYmUgcnVuIGZyb20gYW55IGRpcmVjdG9y
eS4KK3VzZSBWQ1NVdGlsczsKIAogIyBVc2UgYW4gYWJzb2x1dGUgcGF0aCBzbyB0aGlzIHNjcmlw
dCBjYW4gYmUgcnVuIGZyb20gYW55IGRpcmVjdG9yeS4KICRzY3JpcHRzRGlyID0gJEZpbmRCaW46
OkJpbjsKICRzY3JpcHRzRGlyID1+IHN8LyskfHw7ICMgUmVtb3ZlIHRyYWlsaW5nICcvJwogCi1y
dW50ZXN0cygiJHNjcmlwdHNEaXIvVkNTVXRpbHNfdW5pdHRlc3QucGwiKTsKKyMgVkNTVXRpbHMg
c3Vicm91dGluZXMKK215IEBmaWxlcyA9ICgKKyAgICAiZml4Q2hhbmdlTG9nUGF0Y2gucGwiLAor
ICAgICJnZW5lcmF0ZVBhdGNoQ29tbWFuZC5wbCIsCisgICAgInJ1blBhdGNoQ29tbWFuZC5wbCIs
CispOworCitAZmlsZXMgPSBtYXAgIiRzY3JpcHRzRGlyL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5p
dHRlc3QvJF8iLCBAZmlsZXM7ICMgcHJlcGVuZAorCitydW50ZXN0cyhAZmlsZXMpOwpJbmRleDog
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L2ZpeENoYW5n
ZUxvZ1BhdGNoLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9WQ1NVdGlsc191bml0dGVzdC9maXhDaGFuZ2VMb2dQYXRjaC5wbAkocmV2aXNpb24gMCkKKysr
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9maXhDaGFu
Z2VMb2dQYXRjaC5wbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOTAgQEAKKyMhL3Vzci9iaW4v
cGVybAorIworIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNocmlz
LmplcmRvbmVrQGdtYWlsLmNvbSkKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMg
bWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBVbml0IHRlc3Rz
IG9mIFZDU1V0aWxzOjpmaXhDaGFuZ2VMb2dQYXRjaCgpLgorCit1c2UgVGVzdDo6U2ltcGxlIHRl
c3RzID0+IDc7Cit1c2UgVkNTVXRpbHM7CisKKyMgVGhlIHNvdXJjZSBDaGFuZ2VMb2cgZm9yIHRo
ZXNlIHRlc3RzIGlzIHRoZSBmb2xsb3dpbmc6CisjIAorIyAyMDA5LTEyLTIyICBBbGljZSAgPGFs
aWNlQGVtYWlsLmFkZHJlc3M+CisjIAorIyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKyMgCisj
ICAgICAgICAgQ2hhbmdlZCBzb21lIGNvZGUgb24gMjAwOS0xMi0yMi4KKyMgCisjICAgICAgICAg
KiBGaWxlOgorIyAgICAgICAgICogRmlsZTI6CisjIAorIyAyMDA5LTEyLTIxICBBbGljZSAgPGFs
aWNlQGVtYWlsLmFkZHJlc3M+CisjIAorIyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKyMgCisj
ICAgICAgICAgQ2hhbmdlZCBzb21lIGNvZGUgb24gMjAwOS0xMi0yMS4KKyMgCisjICAgICAgICAg
KiBGaWxlOgorIyAgICAgICAgICogRmlsZTI6CisKK215ICR0aXRsZTsKK215ICRpbjsKK215ICRv
dXQ7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDogW25vIGNoYW5n
ZV0gRmlyc3QgbGluZSBpcyBuZXcgbGluZS4iOworCiskaW4gPSA8PCdFTkQnOworLS0tIENoYW5n
ZUxvZworKysrIENoYW5nZUxvZworQEAgLTEsMyArMSwxMSBAQAorKzIwMDktMTItMjIgIEJvYiAg
PGJvYkBlbWFpbC5hZGRyZXNzPgorKworKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorKworKyAg
ICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgorKworKyAgICAgICAg
KiBGaWxlOgorKworIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyAK
KyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KK0VORAorCitvayhmaXhDaGFuZ2VMb2dQYXRjaCgk
aW4pIGVxICRpbiwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImZpeENoYW5nZUxv
Z1BhdGNoOiBbbm8gY2hhbmdlXSBObyBkYXRlIHN0cmluZy4iOworCiskaW4gPSA8PCdFTkQnOwor
LS0tIENoYW5nZUxvZworKysrIENoYW5nZUxvZworQEAgLTYsNiArNiw3IEBACisgCisgICAgICAg
ICAqIEZpbGU6CisgICAgICAgICAqIEZpbGUyOgorKyAgICAgICAgKiBGaWxlMzoKKyAKKyAyMDA5
LTEyLTIxICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisgCitFTkQKKworb2soZml4Q2hh
bmdlTG9nUGF0Y2goJGluKSBlcSAkaW4sICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9
ICJmaXhDaGFuZ2VMb2dQYXRjaDogW25vIGNoYW5nZV0gTmV3IGVudHJ5IGluc2VydGVkIGluIG1p
ZGRsZS4iOworCiskaW4gPSA8PCdFTkQnOworLS0tIENoYW5nZUxvZworKysrIENoYW5nZUxvZwor
QEAgLTExLDYgKzExLDE0IEBACisgCisgICAgICAgICBSZXZpZXdlZCBieSBSYXkuCisgCisrICAg
ICAgICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjEuCisrCisrICAgICAgICAq
IEZpbGU6CisrCisrMjAwOS0xMi0yMSAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgorKwor
KyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorKworICAgICAgICAgQ2hhbmdlZCBzb21lIGNvZGUg
b24gMjAwOS0xMi0yMS4KKyAKKyAgICAgICAgICogRmlsZToKK0VORAorCitvayhmaXhDaGFuZ2VM
b2dQYXRjaCgkaW4pIGVxICRpbiwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImZp
eENoYW5nZUxvZ1BhdGNoOiBMZWFkaW5nIGNvbnRleHQgaW5jbHVkZXMgZmlyc3QgbGluZS4iOwor
CiskaW4gPSA8PCdFTkQnOworLS0tIENoYW5nZUxvZworKysrIENoYW5nZUxvZworQEAgLTEsNSAr
MSwxMyBAQAorIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyAKKysg
ICAgICAgIFJldmlld2VkIGJ5IFN1ZS4KKysKKysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNv
ZGUgb24gMjAwOS0xMi0yMi4KKysKKysgICAgICAgICogRmlsZToKKysKKysyMDA5LTEyLTIyICBB
bGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisrCisgICAgICAgICBSZXZpZXdlZCBieSBSYXku
CisgCisgICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIyLgorRU5ECisKKyRv
dXQgPSA8PCdFTkQnOworLS0tIENoYW5nZUxvZworKysrIENoYW5nZUxvZworQEAgLTEsMyArMSwx
MSBAQAorKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKysKKysgICAg
ICAgIFJldmlld2VkIGJ5IFN1ZS4KKysKKysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUg
b24gMjAwOS0xMi0yMi4KKysKKysgICAgICAgICogRmlsZToKKysKKyAyMDA5LTEyLTIyICBBbGlj
ZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisgCisgICAgICAgICBSZXZpZXdlZCBieSBSYXkuCitF
TkQKKworb2soZml4Q2hhbmdlTG9nUGF0Y2goJGluKSBlcSAkb3V0LCAkdGl0bGUpOworCisjIE5l
dyB0ZXN0CiskdGl0bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IExlYWRpbmcgY29udGV4dCBkb2Vz
IG5vdCBpbmNsdWRlIGZpcnN0IGxpbmUuIjsKKworJGluID0gPDwnRU5EJzsKK0BAIC0yLDYgKzIs
MTQgQEAKKyAKKyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKyAKKysgICAgICAgIENoYW5nZWQg
c29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMi4KKysKKysgICAgICAgICogRmlsZToKKysKKysy
MDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisrCisrICAgICAgICBSZXZp
ZXdlZCBieSBSYXkuCisrCisgICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIy
LgorIAorICAgICAgICAgKiBGaWxlOgorRU5ECisKKyRvdXQgPSA8PCdFTkQnOworQEAgLTEsMyAr
MSwxMSBAQAorKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKysKKysg
ICAgICAgIFJldmlld2VkIGJ5IFJheS4KKysKKysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNv
ZGUgb24gMjAwOS0xMi0yMi4KKysKKysgICAgICAgICogRmlsZToKKysKKyAyMDA5LTEyLTIyICBB
bGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisgCisgICAgICAgICBSZXZpZXdlZCBieSBSYXku
CitFTkQKKworb2soZml4Q2hhbmdlTG9nUGF0Y2goJGluKSBlcSAkb3V0LCAkdGl0bGUpOworCisj
IE5ldyB0ZXN0CiskdGl0bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IE5vbi1jb25zZWN1dGl2ZSBs
aW5lIGFkZGl0aW9ucy4iOworCisjIFRoaXMgY2FuIG9jY3VyLCBmb3IgZXhhbXBsZSwgaWYgdGhl
IG5ldyBDaGFuZ2VMb2cgZW50cnkgaW5jbHVkZXMKKyMgdHJhaWxpbmcgd2hpdGUgc3BhY2UgaW4g
dGhlIGZpcnN0IGJsYW5rIGxpbmUgYnV0IG5vdCB0aGUgc2Vjb25kLgorIyBBIGRpZmYgY29tbWFu
ZCBjYW4gdGhlbiBtYXRjaCB0aGUgc2Vjb25kIGJsYW5rIGxpbmUgb2YgdGhlIG5ldworIyBDaGFu
Z2VMb2cgZW50cnkgd2l0aCB0aGUgZmlyc3QgYmxhbmsgbGluZSBvZiB0aGUgb2xkLgorIyBUaGUg
c3ZuIGRpZmYgY29tbWFuZCB3aXRoIHRoZSBkZWZhdWx0IC0tZGlmZi1jbWQgaGFzIGRvbmUgdGhp
cy4KKyRpbiA9IDw8J0VORCc7CitAQCAtMSw1ICsxLDExIEBACisgMjAwOS0xMi0yMiAgQWxpY2Ug
IDxhbGljZUBlbWFpbC5hZGRyZXNzPgorKyA8cHJldGVuZC13aGl0ZXNwYWNlPgorKyAgICAgICAg
UmV2aWV3ZWQgYnkgUmF5LgorIAorKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAy
MDA5LTEyLTIyLgorKworKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4K
KysKKyAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKyAKKyAgICAgICAgIENoYW5nZWQgc29tZSBj
b2RlIG9uIDIwMDktMTItMjIuCitFTkQKKworJG91dCA9IDw8J0VORCc7CitAQCAtMSwzICsxLDkg
QEAKKysyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisrIDxwcmV0ZW5k
LXdoaXRlc3BhY2U+CisrICAgICAgICBSZXZpZXdlZCBieSBSYXkuCisrCisrICAgICAgICBDaGFu
Z2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCisrCisgMjAwOS0xMi0yMiAgQWxpY2Ug
IDxhbGljZUBlbWFpbC5hZGRyZXNzPgorIAorICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorRU5E
CisKK29rKGZpeENoYW5nZUxvZ1BhdGNoKCRpbikgZXEgJG91dCwgJHRpdGxlKTsKKworIyBOZXcg
dGVzdAorJHRpdGxlID0gImZpeENoYW5nZUxvZ1BhdGNoOiBBZGRpdGlvbmFsIGVkaXRzIGFmdGVy
IG5ldyBlbnRyeS4iOworCiskaW4gPSA8PCdFTkQnOworQEAgLTIsMTAgKzIsMTcgQEAKKyAKKyAg
ICAgICAgIFJldmlld2VkIGJ5IFJheS4KKyAKKysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNv
ZGUgb24gMjAwOS0xMi0yMi4KKysKKysgICAgICAgICogRmlsZToKKysKKysyMDA5LTEyLTIyICBB
bGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisrCisrICAgICAgICBSZXZpZXdlZCBieSBSYXku
CisrCisgICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIyLgorIAorICAgICAg
ICAgKiBGaWxlOgorLSAgICAgICAgKiBGaWxlMjoKKyAKKyAyMDA5LTEyLTIxICBBbGljZSAgPGFs
aWNlQGVtYWlsLmFkZHJlc3M+CisgCitFTkQKKworJG91dCA9IDw8J0VORCc7CitAQCAtMSwxMSAr
MSwxOCBAQAorKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKysKKysg
ICAgICAgIFJldmlld2VkIGJ5IFJheS4KKysKKysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNv
ZGUgb24gMjAwOS0xMi0yMi4KKysKKysgICAgICAgICogRmlsZToKKysKKyAyMDA5LTEyLTIyICBB
bGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisgCisgICAgICAgICBSZXZpZXdlZCBieSBSYXku
CisgCisgICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIyLgorIAorICAgICAg
ICAgKiBGaWxlOgorLSAgICAgICAgKiBGaWxlMjoKKyAKKyAyMDA5LTEyLTIxICBBbGljZSAgPGFs
aWNlQGVtYWlsLmFkZHJlc3M+CisgCitFTkQKKworb2soZml4Q2hhbmdlTG9nUGF0Y2goJGluKSBl
cSAkb3V0LCAkdGl0bGUpOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L2ZpeENoYW5nZUxvZ1BhdGNoLnBsCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9WQ1NVdGlsc191bml0dGVzdC9nZW5lcmF0ZVBhdGNoQ29tbWFuZC5wbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvZ2Vu
ZXJhdGVQYXRjaENvbW1hbmQucGwJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvZ2VuZXJhdGVQYXRjaENvbW1hbmQucGwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNocmlzLmplcmRvbmVrQGdtYWlsLmNv
bSkKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBVbml0IHRlc3RzIG9mIFZDU1V0aWxzOjpnZW5l
cmF0ZVBhdGNoQ29tbWFuZCgpLgorCit1c2UgVGVzdDo6U2ltcGxlIHRlc3RzID0+IDEwOwordXNl
IFZDU1V0aWxzOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiZ2VuZXJhdGVQYXRjaENvbW1hbmQ6
IFVuZGVmaW5lZCBvcHRpb25hbCBhcmd1bWVudHMuIjsKKworbXkgJGFyZ3NIYXNoUmVmOworbXkg
KCRwYXRjaENvbW1hbmQsICRpc0ZvcmNpbmcpID0gVkNTVXRpbHM6OmdlbmVyYXRlUGF0Y2hDb21t
YW5kKCRhcmdzSGFzaFJlZik7CisKK29rKCRwYXRjaENvbW1hbmQgZXEgInBhdGNoIC1wMCIsICR0
aXRsZSk7CitvaygkaXNGb3JjaW5nID09IDAsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRs
ZSA9ICJnZW5lcmF0ZVBhdGNoQ29tbWFuZDogVW5kZWZpbmVkIG9wdGlvbnMuIjsKKworbXkgJG9w
dGlvbnM7CiskYXJnc0hhc2hSZWYgPSB7b3B0aW9ucyA9PiAkb3B0aW9uc307CisoJHBhdGNoQ29t
bWFuZCwgJGlzRm9yY2luZykgPSBWQ1NVdGlsczo6Z2VuZXJhdGVQYXRjaENvbW1hbmQoJGFyZ3NI
YXNoUmVmKTsKKworb2soJHBhdGNoQ29tbWFuZCBlcSAicGF0Y2ggLXAwIiwgJHRpdGxlKTsKK29r
KCRpc0ZvcmNpbmcgPT0gMCwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImdlbmVy
YXRlUGF0Y2hDb21tYW5kOiAtLWZvcmNlIGFuZCBubyBcImVuc3VyZSBmb3JjZVwiLiI7CisKKyRh
cmdzSGFzaFJlZiA9IHtvcHRpb25zID0+IFsiLS1mb3JjZSJdfTsKKygkcGF0Y2hDb21tYW5kLCAk
aXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVBhdGNoQ29tbWFuZCgkYXJnc0hhc2hSZWYp
OworCitvaygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAgLS1mb3JjZSIsICR0aXRsZSk7Citv
aygkaXNGb3JjaW5nID09IDEsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJnZW5l
cmF0ZVBhdGNoQ29tbWFuZDogbm8gLS1mb3JjZSBhbmQgXCJlbnN1cmUgZm9yY2VcIi4iOworCisk
YXJnc0hhc2hSZWYgPSB7ZW5zdXJlRm9yY2UgPT4gMX07CisoJHBhdGNoQ29tbWFuZCwgJGlzRm9y
Y2luZykgPSBWQ1NVdGlsczo6Z2VuZXJhdGVQYXRjaENvbW1hbmQoJGFyZ3NIYXNoUmVmKTsKKwor
b2soJHBhdGNoQ29tbWFuZCBlcSAicGF0Y2ggLXAwIC0tZm9yY2UiLCAkdGl0bGUpOworb2soJGlz
Rm9yY2luZyA9PSAxLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiZ2VuZXJhdGVQ
YXRjaENvbW1hbmQ6IFwic2hvdWxkIHJldmVyc2VcIi4iOworCiskYXJnc0hhc2hSZWYgPSB7c2hv
dWxkUmV2ZXJzZSA9PiAxfTsKKygkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxz
OjpnZW5lcmF0ZVBhdGNoQ29tbWFuZCgkYXJnc0hhc2hSZWYpOworCitvaygkcGF0Y2hDb21tYW5k
IGVxICJwYXRjaCAtcDAgLS1yZXZlcnNlIiwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxl
ID0gImdlbmVyYXRlUGF0Y2hDb21tYW5kOiAtLWZ1eno9MywgLS1mb3JjZS4iOworCiskYXJnc0hh
c2hSZWYgPSB7b3B0aW9ucyA9PiBbIi0tZnV6ej0zIiwgIi0tZm9yY2UiXX07CisoJHBhdGNoQ29t
bWFuZCwgJGlzRm9yY2luZykgPSBWQ1NVdGlsczo6Z2VuZXJhdGVQYXRjaENvbW1hbmQoJGFyZ3NI
YXNoUmVmKTsKKworb2soJHBhdGNoQ29tbWFuZCBlcSAicGF0Y2ggLXAwIC0tZm9yY2UgLS1mdXp6
PTMiLCAkdGl0bGUpOwpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0
aWxzX3VuaXR0ZXN0L3J1blBhdGNoQ29tbWFuZC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcnVuUGF0Y2hDb21tYW5kLnBs
CShyZXZpc2lvbiA1MjcwMikJKGZyb20gV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlsc191bml0
dGVzdC5wbDo1MjcwMikKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGls
c191bml0dGVzdC9ydW5QYXRjaENvbW1hbmQucGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
MjQgQEAKKyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQ2hy
aXMgSmVyZG9uZWsgKGNocmlzLmplcmRvbmVrQGdtYWlsLmNvbSkKKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisj
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworIyBVbml0IHRlc3RzIG9mIFZDU1V0aWxzLnBtLgorCit1c2UgVGVzdDo6U2ltcGxlIHRl
c3RzID0+IDIxOworCit1c2UgRmluZEJpbjsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsgIyBzbyB0
aGlzIHNjcmlwdCBjYW4gYmUgcnVuIGZyb20gYW55IGRpcmVjdG9yeS4KKwordXNlIFZDU1V0aWxz
OworCisjIENhbGwgYSBmdW5jdGlvbiB3aGlsZSBzdXBwcmVzc2luZyBTVERFUlIuCitzdWIgY2Fs
bFNpbGVudGx5KCRAKSB7CisgICAgbXkgKCRmdW5jLCBAYXJncykgPSBAXzsKKworICAgIG9wZW4o
T0xERVJSLCAiPiZTVERFUlIiKTsKKyAgICBjbG9zZShTVERFUlIpOworICAgIG15IEByZXR1cm5W
YWx1ZSA9ICYkZnVuYyhAYXJncyk7CisgICAgb3BlbihTVERFUlIsICI+Jk9MREVSUiIpOworICAg
IGNsb3NlKE9MREVSUik7ICMgRklYTUU6IElzIHRoaXMgbmVjZXNzYXJ5PworCisgICAgcmV0dXJu
IEByZXR1cm5WYWx1ZTsKK30KKworIyBmaXhDaGFuZ2VMb2dQYXRjaAorIworIyBUaGUgc291cmNl
IENoYW5nZUxvZyBmb3IgdGhlc2UgdGVzdHMgaXMgdGhlIGZvbGxvd2luZzoKKyMgCisjIDIwMDkt
MTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyMgCisjICAgICAgICAgUmV2aWV3
ZWQgYnkgUmF5LgorIyAKKyMgICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIy
LgorIyAKKyMgICAgICAgICAqIEZpbGU6CisjICAgICAgICAgKiBGaWxlMjoKKyMgCisjIDIwMDkt
MTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyMgCisjICAgICAgICAgUmV2aWV3
ZWQgYnkgUmF5LgorIyAKKyMgICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIx
LgorIyAKKyMgICAgICAgICAqIEZpbGU6CisjICAgICAgICAgKiBGaWxlMjoKKworbXkgJHRpdGxl
OworbXkgJGluOworbXkgJG91dDsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImZpeENoYW5nZUxv
Z1BhdGNoOiBbbm8gY2hhbmdlXSBGaXJzdCBsaW5lIGlzIG5ldyBsaW5lLiI7CisKKyRpbiA9IDw8
J0VORCc7CistLS0gQ2hhbmdlTG9nCisrKysgQ2hhbmdlTG9nCitAQCAtMSwzICsxLDExIEBACisr
MjAwOS0xMi0yMiAgQm9iICA8Ym9iQGVtYWlsLmFkZHJlc3M+CisrCisrICAgICAgICBSZXZpZXdl
ZCBieSBSYXkuCisrCisrICAgICAgICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTIt
MjIuCisrCisrICAgICAgICAqIEZpbGU6CisrCisgMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBl
bWFpbC5hZGRyZXNzPgorIAorICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorRU5ECisKK29rKGZp
eENoYW5nZUxvZ1BhdGNoKCRpbikgZXEgJGluLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0
bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IFtubyBjaGFuZ2VdIE5vIGRhdGUgc3RyaW5nLiI7CisK
KyRpbiA9IDw8J0VORCc7CistLS0gQ2hhbmdlTG9nCisrKysgQ2hhbmdlTG9nCitAQCAtNiw2ICs2
LDcgQEAKKyAKKyAgICAgICAgICogRmlsZToKKyAgICAgICAgICogRmlsZTI6CisrICAgICAgICAq
IEZpbGUzOgorIAorIDIwMDktMTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyAK
K0VORAorCitvayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRpbiwgJHRpdGxlKTsKKworIyBO
ZXcgdGVzdAorJHRpdGxlID0gImZpeENoYW5nZUxvZ1BhdGNoOiBbbm8gY2hhbmdlXSBOZXcgZW50
cnkgaW5zZXJ0ZWQgaW4gbWlkZGxlLiI7CisKKyRpbiA9IDw8J0VORCc7CistLS0gQ2hhbmdlTG9n
CisrKysgQ2hhbmdlTG9nCitAQCAtMTEsNiArMTEsMTQgQEAKKyAKKyAgICAgICAgIFJldmlld2Vk
IGJ5IFJheS4KKyAKKysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0y
MS4KKysKKysgICAgICAgICogRmlsZToKKysKKysyMDA5LTEyLTIxICBBbGljZSAgPGFsaWNlQGVt
YWlsLmFkZHJlc3M+CisrCisrICAgICAgICBSZXZpZXdlZCBieSBSYXkuCisrCisgICAgICAgICBD
aGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIxLgorIAorICAgICAgICAgKiBGaWxlOgorRU5E
CisKK29rKGZpeENoYW5nZUxvZ1BhdGNoKCRpbikgZXEgJGluLCAkdGl0bGUpOworCisjIE5ldyB0
ZXN0CiskdGl0bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IExlYWRpbmcgY29udGV4dCBpbmNsdWRl
cyBmaXJzdCBsaW5lLiI7CisKKyRpbiA9IDw8J0VORCc7CistLS0gQ2hhbmdlTG9nCisrKysgQ2hh
bmdlTG9nCitAQCAtMSw1ICsxLDEzIEBACisgMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFp
bC5hZGRyZXNzPgorIAorKyAgICAgICAgUmV2aWV3ZWQgYnkgU3VlLgorKworKyAgICAgICAgQ2hh
bmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgorKworKyAgICAgICAgKiBGaWxlOgor
KworKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKysKKyAgICAgICAg
IFJldmlld2VkIGJ5IFJheS4KKyAKKyAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDkt
MTItMjIuCitFTkQKKworJG91dCA9IDw8J0VORCc7CistLS0gQ2hhbmdlTG9nCisrKysgQ2hhbmdl
TG9nCitAQCAtMSwzICsxLDExIEBACisrMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5h
ZGRyZXNzPgorKworKyAgICAgICAgUmV2aWV3ZWQgYnkgU3VlLgorKworKyAgICAgICAgQ2hhbmdl
ZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgorKworKyAgICAgICAgKiBGaWxlOgorKwor
IDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyAKKyAgICAgICAgIFJl
dmlld2VkIGJ5IFJheS4KK0VORAorCitvayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRvdXQs
ICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDogTGVh
ZGluZyBjb250ZXh0IGRvZXMgbm90IGluY2x1ZGUgZmlyc3QgbGluZS4iOworCiskaW4gPSA8PCdF
TkQnOworQEAgLTIsNiArMiwxNCBAQAorIAorICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorIAor
KyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgorKworKyAgICAg
ICAgKiBGaWxlOgorKworKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4K
KysKKysgICAgICAgIFJldmlld2VkIGJ5IFJheS4KKysKKyAgICAgICAgIENoYW5nZWQgc29tZSBj
b2RlIG9uIDIwMDktMTItMjIuCisgCisgICAgICAgICAqIEZpbGU6CitFTkQKKworJG91dCA9IDw8
J0VORCc7CitAQCAtMSwzICsxLDExIEBACisrMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFp
bC5hZGRyZXNzPgorKworKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorKworKyAgICAgICAgQ2hh
bmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgorKworKyAgICAgICAgKiBGaWxlOgor
KworIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyAKKyAgICAgICAg
IFJldmlld2VkIGJ5IFJheS4KK0VORAorCitvayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRv
dXQsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJmaXhDaGFuZ2VMb2dQYXRjaDog
Tm9uLWNvbnNlY3V0aXZlIGxpbmUgYWRkaXRpb25zLiI7CisKKyMgVGhpcyBjYW4gb2NjdXIsIGZv
ciBleGFtcGxlLCBpZiB0aGUgbmV3IENoYW5nZUxvZyBlbnRyeSBpbmNsdWRlcworIyB0cmFpbGlu
ZyB3aGl0ZSBzcGFjZSBpbiB0aGUgZmlyc3QgYmxhbmsgbGluZSBidXQgbm90IHRoZSBzZWNvbmQu
CisjIEEgZGlmZiBjb21tYW5kIGNhbiB0aGVuIG1hdGNoIHRoZSBzZWNvbmQgYmxhbmsgbGluZSBv
ZiB0aGUgbmV3CisjIENoYW5nZUxvZyBlbnRyeSB3aXRoIHRoZSBmaXJzdCBibGFuayBsaW5lIG9m
IHRoZSBvbGQuCisjIFRoZSBzdm4gZGlmZiBjb21tYW5kIHdpdGggdGhlIGRlZmF1bHQgLS1kaWZm
LWNtZCBoYXMgZG9uZSB0aGlzLgorJGluID0gPDwnRU5EJzsKK0BAIC0xLDUgKzEsMTEgQEAKKyAy
MDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisrIDxwcmV0ZW5kLXdoaXRl
c3BhY2U+CisrICAgICAgICBSZXZpZXdlZCBieSBSYXkuCisgCisrICAgICAgICBDaGFuZ2VkIHNv
bWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCisrCisrMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGlj
ZUBlbWFpbC5hZGRyZXNzPgorKworICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorIAorICAgICAg
ICAgQ2hhbmdlZCBzb21lIGNvZGUgb24gMjAwOS0xMi0yMi4KK0VORAorCiskb3V0ID0gPDwnRU5E
JzsKK0BAIC0xLDMgKzEsOSBAQAorKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRk
cmVzcz4KKysgPHByZXRlbmQtd2hpdGVzcGFjZT4KKysgICAgICAgIFJldmlld2VkIGJ5IFJheS4K
KysKKysgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24gMjAwOS0xMi0yMi4KKysKKyAy
MDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+CisgCisgICAgICAgICBSZXZp
ZXdlZCBieSBSYXkuCitFTkQKKworb2soZml4Q2hhbmdlTG9nUGF0Y2goJGluKSBlcSAkb3V0LCAk
dGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IEFkZGl0
aW9uYWwgZWRpdHMgYWZ0ZXIgbmV3IGVudHJ5LiI7CisKKyRpbiA9IDw8J0VORCc7CitAQCAtMiwx
MCArMiwxNyBAQAorIAorICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorIAorKyAgICAgICAgQ2hh
bmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgorKworKyAgICAgICAgKiBGaWxlOgor
KworKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKysKKysgICAgICAg
IFJldmlld2VkIGJ5IFJheS4KKysKKyAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDkt
MTItMjIuCisgCisgICAgICAgICAqIEZpbGU6CistICAgICAgICAqIEZpbGUyOgorIAorIDIwMDkt
MTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyAKK0VORAorCiskb3V0ID0gPDwn
RU5EJzsKK0BAIC0xLDExICsxLDE4IEBACisrMjAwOS0xMi0yMiAgQWxpY2UgIDxhbGljZUBlbWFp
bC5hZGRyZXNzPgorKworKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgorKworKyAgICAgICAgQ2hh
bmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgorKworKyAgICAgICAgKiBGaWxlOgor
KworIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyAKKyAgICAgICAg
IFJldmlld2VkIGJ5IFJheS4KKyAKKyAgICAgICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDkt
MTItMjIuCisgCisgICAgICAgICAqIEZpbGU6CistICAgICAgICAqIEZpbGUyOgorIAorIDIwMDkt
MTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KKyAKK0VORAorCitvayhmaXhDaGFu
Z2VMb2dQYXRjaCgkaW4pIGVxICRvdXQsICR0aXRsZSk7CisKKyMgVGVzdHM6IGdlbmVyYXRlUnVu
UGF0Y2hDb21tYW5kCisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJnZW5lcmF0ZVJ1blBhdGNoQ29t
bWFuZDogVW5kZWZpbmVkIG9wdGlvbmFsIGFyZ3VtZW50cy4iOworCitteSAkYXJnc0hhc2hSZWY7
CitteSAoJHBhdGNoQ29tbWFuZCwgJGlzRm9yY2luZykgPSBWQ1NVdGlsczo6Z2VuZXJhdGVSdW5Q
YXRjaENvbW1hbmQoJGFyZ3NIYXNoUmVmKTsKKworb2soJHBhdGNoQ29tbWFuZCBlcSAicGF0Y2gg
LXAwIiwgJHRpdGxlKTsKK29rKCRpc0ZvcmNpbmcgPT0gMCwgJHRpdGxlKTsKKworIyBOZXcgdGVz
dAorJHRpdGxlID0gImdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kOiBVbmRlZmluZWQgb3B0aW9ucy4i
OworCitteSAkb3B0aW9uczsKKyRhcmdzSGFzaFJlZiA9IHtvcHRpb25zID0+ICRvcHRpb25zfTsK
KygkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVJ1blBhdGNo
Q29tbWFuZCgkYXJnc0hhc2hSZWYpOworCitvaygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAi
LCAkdGl0bGUpOworb2soJGlzRm9yY2luZyA9PSAwLCAkdGl0bGUpOworCisjIE5ldyB0ZXN0Cisk
dGl0bGUgPSAiZ2VuZXJhdGVSdW5QYXRjaENvbW1hbmQ6IC0tZm9yY2UgYW5kIG5vIFwiZW5zdXJl
IGZvcmNlXCIuIjsKKworJGFyZ3NIYXNoUmVmID0ge29wdGlvbnMgPT4gWyItLWZvcmNlIl19Owor
KCRwYXRjaENvbW1hbmQsICRpc0ZvcmNpbmcpID0gVkNTVXRpbHM6OmdlbmVyYXRlUnVuUGF0Y2hD
b21tYW5kKCRhcmdzSGFzaFJlZik7CisKK29rKCRwYXRjaENvbW1hbmQgZXEgInBhdGNoIC1wMCAt
LWZvcmNlIiwgJHRpdGxlKTsKK29rKCRpc0ZvcmNpbmcgPT0gMSwgJHRpdGxlKTsKKworIyBOZXcg
dGVzdAorJHRpdGxlID0gImdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kOiBubyAtLWZvcmNlIGFuZCBc
ImVuc3VyZSBmb3JjZVwiLiI7CisKKyRhcmdzSGFzaFJlZiA9IHtlbnN1cmVGb3JjZSA9PiAxfTsK
KygkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVJ1blBhdGNo
Q29tbWFuZCgkYXJnc0hhc2hSZWYpOworCitvaygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAg
LS1mb3JjZSIsICR0aXRsZSk7CitvaygkaXNGb3JjaW5nID09IDEsICR0aXRsZSk7CisKKyMgTmV3
IHRlc3QKKyR0aXRsZSA9ICJnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZDogXCJzaG91bGQgcmV2ZXJz
ZVwiLiI7CisKKyRhcmdzSGFzaFJlZiA9IHtzaG91bGRSZXZlcnNlID0+IDF9OworKCRwYXRjaENv
bW1hbmQsICRpc0ZvcmNpbmcpID0gVkNTVXRpbHM6OmdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kKCRh
cmdzSGFzaFJlZik7CisKK29rKCRwYXRjaENvbW1hbmQgZXEgInBhdGNoIC1wMCAtLXJldmVyc2Ui
LCAkdGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiZ2VuZXJhdGVSdW5QYXRjaENvbW1h
bmQ6IC0tZnV6ej0zLCAtLWZvcmNlLiI7CisKKyRhcmdzSGFzaFJlZiA9IHtvcHRpb25zID0+IFsi
LS1mdXp6PTMiLCAiLS1mb3JjZSJdfTsKKygkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZD
U1V0aWxzOjpnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgkYXJnc0hhc2hSZWYpOworCitvaygkcGF0
Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAgLS1mb3JjZSAtLWZ1eno9MyIsICR0aXRsZSk7CisKKyMg
VGVzdHM6IHJ1blBhdGNoQ29tbWFuZAorCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAicnVuUGF0Y2hD
b21tYW5kOiBVbnN1Y2Nlc3NmdWwgcGF0Y2gsIGZvcmNpbmcuIjsKKworIyBTaW5jZSAkcGF0Y2gg
aGFzIG5vICJJbmRleDoiIHBhdGgsIHBhc3NpbmcgdGhpcyB0byBydW5QYXRjaENvbW1hbmQKKyMg
c2hvdWxkIG5vdCBhZmZlY3QgYW55IGZpbGVzLgorbXkgJHBhdGNoID0gPDwnRU5EJzsKK0dhcmJh
Z2UgcGF0Y2ggY29udGVudHMKK0VORAorCisjIFdlIGNhbGwgdmlhIGNhbGxTaWxlbnRseSgpIHRv
IGF2b2lkIG91dHB1dCBsaWtlIHRoZSBmb2xsb3dpbmcgdG8gU1RERVJSOgorIyBwYXRjaDogKioq
KiBPbmx5IGdhcmJhZ2Ugd2FzIGZvdW5kIGluIHRoZSBwYXRjaCBpbnB1dC4KKyRhcmdzSGFzaFJl
ZiA9IHtlbnN1cmVGb3JjZSA9PiAxfTsKKyRleGl0U3RhdHVzID0gY2FsbFNpbGVudGx5KFwmcnVu
UGF0Y2hDb21tYW5kLCAkcGF0Y2gsICIuIiwgImZpbGVfdG9fcGF0Y2gudHh0IiwgJGFyZ3NIYXNo
UmVmKTsKKworb2soJGV4aXRTdGF0dXMgIT0gMCwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRp
dGxlID0gInJ1blBhdGNoQ29tbWFuZDogTmV3IGZpbGUsIC0tZHJ5LXJ1bi4iOworCisjIFRoaXMg
ZmlsZSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIHRoZSB0ZXN0cywgYnV0IHdlIHRha2UgY2FyZSB3
aXRoIHRoZQorIyBmaWxlIG5hbWUgYW5kIGNvbnRlbnRzIGp1c3QgaW4gY2FzZS4KK215ICRmaWxl
VG9QYXRjaCA9ICJ0ZW1wX09LX1RPX0VSQVNFX19SRUFETUVfRk9SX01PUkUudHh0IjsKKyRwYXRj
aCA9IDw8RU5EOworSW5kZXg6ICRmaWxlVG9QYXRjaAorPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tICRmaWxlVG9Q
YXRjaAkocmV2aXNpb24gMCkKKysrKyAkZmlsZVRvUGF0Y2gJKHJldmlzaW9uIDApCitAQCAtMCww
ICsxLDUgQEAKKytUaGlzIGlzIGEgdGVzdCBmaWxlIGZvciBXZWJLaXRUb29scy9TY3JpcHRzL1ZD
U1V0aWxzX3VuaXR0ZXN0LnBsLgorK1RoaXMgZmlsZSBzaG91bGQgbm90IGhhdmUgZ290dGVuIGNy
ZWF0ZWQgb24geW91ciBzeXN0ZW0uCisrSWYgaXQgZGlkLCBzb21lIHVuaXQgdGVzdHMgZG9uJ3Qg
c2VlbSB0byBiZSB3b3JraW5nIHF1aXRlIHJpZ2h0OgorK0l0IHdvdWxkIGJlIGdyZWF0IGlmIHlv
dSBjb3VsZCBmaWxlIGEgYnVnIHJlcG9ydC4gVGhhbmtzIQorKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRU5ECisK
KyMgLS1kcnktcnVuIHByZXZlbnRzIGNyZWF0aW5nIGFueSBmaWxlcy4KKyMgLS1zaWxlbnQgc3Vw
cHJlc3NlcyB0aGUgc3VjY2VzcyBtZXNzYWdlIHRvIFNURE9VVC4KKyRhcmdzSGFzaFJlZiA9IHtv
cHRpb25zID0+IFsiLS1kcnktcnVuIiwgIi0tc2lsZW50Il19OworJGV4aXRTdGF0dXMgPSBydW5Q
YXRjaENvbW1hbmQoJHBhdGNoLCAiLiIsICRmaWxlVG9QYXRjaCwgJGFyZ3NIYXNoUmVmKTsKKwor
b2soJGV4aXRTdGF0dXMgPT0gMCwgJHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gInJ1
blBhdGNoQ29tbWFuZDogTmV3IGZpbGU6IFwiJGZpbGVUb1BhdGNoXCIuIjsKKworJGFyZ3NIYXNo
UmVmID0ge29wdGlvbnMgPT4gWyItLXNpbGVudCJdfTsKKyRleGl0U3RhdHVzID0gcnVuUGF0Y2hD
b21tYW5kKCRwYXRjaCwgIi4iLCAkZmlsZVRvUGF0Y2gsICRhcmdzSGFzaFJlZik7CisKK29rKCRl
eGl0U3RhdHVzID09IDAsICR0aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJydW5QYXRj
aENvbW1hbmQ6IFJldmVyc2UgbmV3IGZpbGUgKGNsZWFuIHVwIHByZXZpb3VzKS4iOworCiskYXJn
c0hhc2hSZWYgPSB7c2hvdWxkUmV2ZXJzZSA9PiAxLAorICAgICAgICAgICAgICAgIG9wdGlvbnMg
PT4gWyItLXNpbGVudCIsICItLXJlbW92ZS1lbXB0eS1maWxlcyJdfTsgIyBUbyBjbGVhbiB1cC4K
KyRleGl0U3RhdHVzID0gcnVuUGF0Y2hDb21tYW5kKCRwYXRjaCwgIi4iLCAkZmlsZVRvUGF0Y2gs
ICRhcmdzSGFzaFJlZik7CitvaygkZXhpdFN0YXR1cyA9PSAwLCAkdGl0bGUpOwpJbmRleDogV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3J1blBhdGNoQ29t
bWFuZC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNT
VXRpbHNfdW5pdHRlc3QvcnVuUGF0Y2hDb21tYW5kLnBsCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3J1blBhdGNoQ29tbWFu
ZC5wbAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDkgQEAKICMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSMgVW5pdCB0ZXN0cyBvZiBWQ1NVdGlscy5wbS4KLQotdXNlIFRlc3Q6
OlNpbXBsZSB0ZXN0cyA9PiAyMTsKLQotdXNlIEZpbmRCaW47Ci11c2UgbGliICRGaW5kQmluOjpC
aW47ICMgc28gdGhpcyBzY3JpcHQgY2FuIGJlIHJ1biBmcm9tIGFueSBkaXJlY3RvcnkuCisjIFVu
aXQgdGVzdHMgb2YgVkNTVXRpbHM6OnJ1blBhdGNoQ29tbWFuZCgpLgogCit1c2UgVGVzdDo6U2lt
cGxlIHRlc3RzID0+IDQ7CiB1c2UgVkNTVXRpbHM7CiAKICMgQ2FsbCBhIGZ1bmN0aW9uIHdoaWxl
IHN1cHByZXNzaW5nIFNUREVSUi4KQEAgLTUwLDMyMSArNDYsNiBAQCBzdWIgY2FsbFNpbGVudGx5
KCRAKSB7CiAgICAgcmV0dXJuIEByZXR1cm5WYWx1ZTsKIH0KIAotIyBmaXhDaGFuZ2VMb2dQYXRj
aAotIwotIyBUaGUgc291cmNlIENoYW5nZUxvZyBmb3IgdGhlc2UgdGVzdHMgaXMgdGhlIGZvbGxv
d2luZzoKLSMgCi0jIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSMg
Ci0jICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotIyAKLSMgICAgICAgICBDaGFuZ2VkIHNvbWUg
Y29kZSBvbiAyMDA5LTEyLTIyLgotIyAKLSMgICAgICAgICAqIEZpbGU6Ci0jICAgICAgICAgKiBG
aWxlMjoKLSMgCi0jIDIwMDktMTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSMg
Ci0jICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5LgotIyAKLSMgICAgICAgICBDaGFuZ2VkIHNvbWUg
Y29kZSBvbiAyMDA5LTEyLTIxLgotIyAKLSMgICAgICAgICAqIEZpbGU6Ci0jICAgICAgICAgKiBG
aWxlMjoKLQotbXkgJHRpdGxlOwotbXkgJGluOwotbXkgJG91dDsKLQotIyBOZXcgdGVzdAotJHRp
dGxlID0gImZpeENoYW5nZUxvZ1BhdGNoOiBbbm8gY2hhbmdlXSBGaXJzdCBsaW5lIGlzIG5ldyBs
aW5lLiI7Ci0KLSRpbiA9IDw8J0VORCc7Ci0tLS0gQ2hhbmdlTG9nCi0rKysgQ2hhbmdlTG9nCi1A
QCAtMSwzICsxLDExIEBACi0rMjAwOS0xMi0yMiAgQm9iICA8Ym9iQGVtYWlsLmFkZHJlc3M+Ci0r
Ci0rICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi0rCi0rICAgICAgICBDaGFuZ2VkIHNvbWUgbW9y
ZSBjb2RlIG9uIDIwMDktMTItMjIuCi0rCi0rICAgICAgICAqIEZpbGU6Ci0rCi0gMjAwOS0xMi0y
MiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotIAotICAgICAgICAgUmV2aWV3ZWQgYnkg
UmF5LgotRU5ECi0KLW9rKGZpeENoYW5nZUxvZ1BhdGNoKCRpbikgZXEgJGluLCAkdGl0bGUpOwot
Ci0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IFtubyBjaGFuZ2VdIE5v
IGRhdGUgc3RyaW5nLiI7Ci0KLSRpbiA9IDw8J0VORCc7Ci0tLS0gQ2hhbmdlTG9nCi0rKysgQ2hh
bmdlTG9nCi1AQCAtNiw2ICs2LDcgQEAKLSAKLSAgICAgICAgICogRmlsZToKLSAgICAgICAgICog
RmlsZTI6Ci0rICAgICAgICAqIEZpbGUzOgotIAotIDIwMDktMTItMjEgIEFsaWNlICA8YWxpY2VA
ZW1haWwuYWRkcmVzcz4KLSAKLUVORAotCi1vayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRp
biwgJHRpdGxlKTsKLQotIyBOZXcgdGVzdAotJHRpdGxlID0gImZpeENoYW5nZUxvZ1BhdGNoOiBb
bm8gY2hhbmdlXSBOZXcgZW50cnkgaW5zZXJ0ZWQgaW4gbWlkZGxlLiI7Ci0KLSRpbiA9IDw8J0VO
RCc7Ci0tLS0gQ2hhbmdlTG9nCi0rKysgQ2hhbmdlTG9nCi1AQCAtMTEsNiArMTEsMTQgQEAKLSAK
LSAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KLSAKLSsgICAgICAgIENoYW5nZWQgc29tZSBtb3Jl
IGNvZGUgb24gMjAwOS0xMi0yMS4KLSsKLSsgICAgICAgICogRmlsZToKLSsKLSsyMDA5LTEyLTIx
ICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+Ci0rCi0rICAgICAgICBSZXZpZXdlZCBieSBS
YXkuCi0rCi0gICAgICAgICBDaGFuZ2VkIHNvbWUgY29kZSBvbiAyMDA5LTEyLTIxLgotIAotICAg
ICAgICAgKiBGaWxlOgotRU5ECi0KLW9rKGZpeENoYW5nZUxvZ1BhdGNoKCRpbikgZXEgJGluLCAk
dGl0bGUpOwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZml4Q2hhbmdlTG9nUGF0Y2g6IExlYWRp
bmcgY29udGV4dCBpbmNsdWRlcyBmaXJzdCBsaW5lLiI7Ci0KLSRpbiA9IDw8J0VORCc7Ci0tLS0g
Q2hhbmdlTG9nCi0rKysgQ2hhbmdlTG9nCi1AQCAtMSw1ICsxLDEzIEBACi0gMjAwOS0xMi0yMiAg
QWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotIAotKyAgICAgICAgUmV2aWV3ZWQgYnkgU3Vl
LgotKwotKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwot
KyAgICAgICAgKiBGaWxlOgotKwotKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRk
cmVzcz4KLSsKLSAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KLSAKLSAgICAgICAgIENoYW5nZWQg
c29tZSBjb2RlIG9uIDIwMDktMTItMjIuCi1FTkQKLQotJG91dCA9IDw8J0VORCc7Ci0tLS0gQ2hh
bmdlTG9nCi0rKysgQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDExIEBACi0rMjAwOS0xMi0yMiAgQWxp
Y2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotKwotKyAgICAgICAgUmV2aWV3ZWQgYnkgU3VlLgot
KwotKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwotKyAg
ICAgICAgKiBGaWxlOgotKwotIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVz
cz4KLSAKLSAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KLUVORAotCi1vayhmaXhDaGFuZ2VMb2dQ
YXRjaCgkaW4pIGVxICRvdXQsICR0aXRsZSk7Ci0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJmaXhD
aGFuZ2VMb2dQYXRjaDogTGVhZGluZyBjb250ZXh0IGRvZXMgbm90IGluY2x1ZGUgZmlyc3QgbGlu
ZS4iOwotCi0kaW4gPSA8PCdFTkQnOwotQEAgLTIsNiArMiwxNCBAQAotIAotICAgICAgICAgUmV2
aWV3ZWQgYnkgUmF5LgotIAotKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5
LTEyLTIyLgotKwotKyAgICAgICAgKiBGaWxlOgotKwotKzIwMDktMTItMjIgIEFsaWNlICA8YWxp
Y2VAZW1haWwuYWRkcmVzcz4KLSsKLSsgICAgICAgIFJldmlld2VkIGJ5IFJheS4KLSsKLSAgICAg
ICAgIENoYW5nZWQgc29tZSBjb2RlIG9uIDIwMDktMTItMjIuCi0gCi0gICAgICAgICAqIEZpbGU6
Ci1FTkQKLQotJG91dCA9IDw8J0VORCc7Ci1AQCAtMSwzICsxLDExIEBACi0rMjAwOS0xMi0yMiAg
QWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotKwotKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5
LgotKwotKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwot
KyAgICAgICAgKiBGaWxlOgotKwotIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRk
cmVzcz4KLSAKLSAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KLUVORAotCi1vayhmaXhDaGFuZ2VM
b2dQYXRjaCgkaW4pIGVxICRvdXQsICR0aXRsZSk7Ci0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJm
aXhDaGFuZ2VMb2dQYXRjaDogTm9uLWNvbnNlY3V0aXZlIGxpbmUgYWRkaXRpb25zLiI7Ci0KLSMg
VGhpcyBjYW4gb2NjdXIsIGZvciBleGFtcGxlLCBpZiB0aGUgbmV3IENoYW5nZUxvZyBlbnRyeSBp
bmNsdWRlcwotIyB0cmFpbGluZyB3aGl0ZSBzcGFjZSBpbiB0aGUgZmlyc3QgYmxhbmsgbGluZSBi
dXQgbm90IHRoZSBzZWNvbmQuCi0jIEEgZGlmZiBjb21tYW5kIGNhbiB0aGVuIG1hdGNoIHRoZSBz
ZWNvbmQgYmxhbmsgbGluZSBvZiB0aGUgbmV3Ci0jIENoYW5nZUxvZyBlbnRyeSB3aXRoIHRoZSBm
aXJzdCBibGFuayBsaW5lIG9mIHRoZSBvbGQuCi0jIFRoZSBzdm4gZGlmZiBjb21tYW5kIHdpdGgg
dGhlIGRlZmF1bHQgLS1kaWZmLWNtZCBoYXMgZG9uZSB0aGlzLgotJGluID0gPDwnRU5EJzsKLUBA
IC0xLDUgKzEsMTEgQEAKLSAyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+
Ci0rIDxwcmV0ZW5kLXdoaXRlc3BhY2U+Ci0rICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi0gCi0r
ICAgICAgICBDaGFuZ2VkIHNvbWUgbW9yZSBjb2RlIG9uIDIwMDktMTItMjIuCi0rCi0rMjAwOS0x
Mi0yMiAgQWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotKwotICAgICAgICAgUmV2aWV3ZWQg
YnkgUmF5LgotIAotICAgICAgICAgQ2hhbmdlZCBzb21lIGNvZGUgb24gMjAwOS0xMi0yMi4KLUVO
RAotCi0kb3V0ID0gPDwnRU5EJzsKLUBAIC0xLDMgKzEsOSBAQAotKzIwMDktMTItMjIgIEFsaWNl
ICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSsgPHByZXRlbmQtd2hpdGVzcGFjZT4KLSsgICAgICAg
IFJldmlld2VkIGJ5IFJheS4KLSsKLSsgICAgICAgIENoYW5nZWQgc29tZSBtb3JlIGNvZGUgb24g
MjAwOS0xMi0yMi4KLSsKLSAyMDA5LTEyLTIyICBBbGljZSAgPGFsaWNlQGVtYWlsLmFkZHJlc3M+
Ci0gCi0gICAgICAgICBSZXZpZXdlZCBieSBSYXkuCi1FTkQKLQotb2soZml4Q2hhbmdlTG9nUGF0
Y2goJGluKSBlcSAkb3V0LCAkdGl0bGUpOwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZml4Q2hh
bmdlTG9nUGF0Y2g6IEFkZGl0aW9uYWwgZWRpdHMgYWZ0ZXIgbmV3IGVudHJ5LiI7Ci0KLSRpbiA9
IDw8J0VORCc7Ci1AQCAtMiwxMCArMiwxNyBAQAotIAotICAgICAgICAgUmV2aWV3ZWQgYnkgUmF5
LgotIAotKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwot
KyAgICAgICAgKiBGaWxlOgotKwotKzIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRk
cmVzcz4KLSsKLSsgICAgICAgIFJldmlld2VkIGJ5IFJheS4KLSsKLSAgICAgICAgIENoYW5nZWQg
c29tZSBjb2RlIG9uIDIwMDktMTItMjIuCi0gCi0gICAgICAgICAqIEZpbGU6Ci0tICAgICAgICAq
IEZpbGUyOgotIAotIDIwMDktMTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAK
LUVORAotCi0kb3V0ID0gPDwnRU5EJzsKLUBAIC0xLDExICsxLDE4IEBACi0rMjAwOS0xMi0yMiAg
QWxpY2UgIDxhbGljZUBlbWFpbC5hZGRyZXNzPgotKwotKyAgICAgICAgUmV2aWV3ZWQgYnkgUmF5
LgotKwotKyAgICAgICAgQ2hhbmdlZCBzb21lIG1vcmUgY29kZSBvbiAyMDA5LTEyLTIyLgotKwot
KyAgICAgICAgKiBGaWxlOgotKwotIDIwMDktMTItMjIgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRk
cmVzcz4KLSAKLSAgICAgICAgIFJldmlld2VkIGJ5IFJheS4KLSAKLSAgICAgICAgIENoYW5nZWQg
c29tZSBjb2RlIG9uIDIwMDktMTItMjIuCi0gCi0gICAgICAgICAqIEZpbGU6Ci0tICAgICAgICAq
IEZpbGUyOgotIAotIDIwMDktMTItMjEgIEFsaWNlICA8YWxpY2VAZW1haWwuYWRkcmVzcz4KLSAK
LUVORAotCi1vayhmaXhDaGFuZ2VMb2dQYXRjaCgkaW4pIGVxICRvdXQsICR0aXRsZSk7Ci0KLSMg
VGVzdHM6IGdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kCi0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJn
ZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZDogVW5kZWZpbmVkIG9wdGlvbmFsIGFyZ3VtZW50cy4iOwot
Ci1teSAkYXJnc0hhc2hSZWY7Ci1teSAoJHBhdGNoQ29tbWFuZCwgJGlzRm9yY2luZykgPSBWQ1NV
dGlsczo6Z2VuZXJhdGVSdW5QYXRjaENvbW1hbmQoJGFyZ3NIYXNoUmVmKTsKLQotb2soJHBhdGNo
Q29tbWFuZCBlcSAicGF0Y2ggLXAwIiwgJHRpdGxlKTsKLW9rKCRpc0ZvcmNpbmcgPT0gMCwgJHRp
dGxlKTsKLQotIyBOZXcgdGVzdAotJHRpdGxlID0gImdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kOiBV
bmRlZmluZWQgb3B0aW9ucy4iOwotCi1teSAkb3B0aW9uczsKLSRhcmdzSGFzaFJlZiA9IHtvcHRp
b25zID0+ICRvcHRpb25zfTsKLSgkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxz
OjpnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgkYXJnc0hhc2hSZWYpOwotCi1vaygkcGF0Y2hDb21t
YW5kIGVxICJwYXRjaCAtcDAiLCAkdGl0bGUpOwotb2soJGlzRm9yY2luZyA9PSAwLCAkdGl0bGUp
OwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZ2VuZXJhdGVSdW5QYXRjaENvbW1hbmQ6IC0tZm9y
Y2UgYW5kIG5vIFwiZW5zdXJlIGZvcmNlXCIuIjsKLQotJGFyZ3NIYXNoUmVmID0ge29wdGlvbnMg
PT4gWyItLWZvcmNlIl19OwotKCRwYXRjaENvbW1hbmQsICRpc0ZvcmNpbmcpID0gVkNTVXRpbHM6
OmdlbmVyYXRlUnVuUGF0Y2hDb21tYW5kKCRhcmdzSGFzaFJlZik7Ci0KLW9rKCRwYXRjaENvbW1h
bmQgZXEgInBhdGNoIC1wMCAtLWZvcmNlIiwgJHRpdGxlKTsKLW9rKCRpc0ZvcmNpbmcgPT0gMSwg
JHRpdGxlKTsKLQotIyBOZXcgdGVzdAotJHRpdGxlID0gImdlbmVyYXRlUnVuUGF0Y2hDb21tYW5k
OiBubyAtLWZvcmNlIGFuZCBcImVuc3VyZSBmb3JjZVwiLiI7Ci0KLSRhcmdzSGFzaFJlZiA9IHtl
bnN1cmVGb3JjZSA9PiAxfTsKLSgkcGF0Y2hDb21tYW5kLCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxz
OjpnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgkYXJnc0hhc2hSZWYpOwotCi1vaygkcGF0Y2hDb21t
YW5kIGVxICJwYXRjaCAtcDAgLS1mb3JjZSIsICR0aXRsZSk7Ci1vaygkaXNGb3JjaW5nID09IDEs
ICR0aXRsZSk7Ci0KLSMgTmV3IHRlc3QKLSR0aXRsZSA9ICJnZW5lcmF0ZVJ1blBhdGNoQ29tbWFu
ZDogXCJzaG91bGQgcmV2ZXJzZVwiLiI7Ci0KLSRhcmdzSGFzaFJlZiA9IHtzaG91bGRSZXZlcnNl
ID0+IDF9OwotKCRwYXRjaENvbW1hbmQsICRpc0ZvcmNpbmcpID0gVkNTVXRpbHM6OmdlbmVyYXRl
UnVuUGF0Y2hDb21tYW5kKCRhcmdzSGFzaFJlZik7Ci0KLW9rKCRwYXRjaENvbW1hbmQgZXEgInBh
dGNoIC1wMCAtLXJldmVyc2UiLCAkdGl0bGUpOwotCi0jIE5ldyB0ZXN0Ci0kdGl0bGUgPSAiZ2Vu
ZXJhdGVSdW5QYXRjaENvbW1hbmQ6IC0tZnV6ej0zLCAtLWZvcmNlLiI7Ci0KLSRhcmdzSGFzaFJl
ZiA9IHtvcHRpb25zID0+IFsiLS1mdXp6PTMiLCAiLS1mb3JjZSJdfTsKLSgkcGF0Y2hDb21tYW5k
LCAkaXNGb3JjaW5nKSA9IFZDU1V0aWxzOjpnZW5lcmF0ZVJ1blBhdGNoQ29tbWFuZCgkYXJnc0hh
c2hSZWYpOwotCi1vaygkcGF0Y2hDb21tYW5kIGVxICJwYXRjaCAtcDAgLS1mb3JjZSAtLWZ1eno9
MyIsICR0aXRsZSk7Ci0KLSMgVGVzdHM6IHJ1blBhdGNoQ29tbWFuZAotCiAjIE5ldyB0ZXN0CiAk
dGl0bGUgPSAicnVuUGF0Y2hDb21tYW5kOiBVbnN1Y2Nlc3NmdWwgcGF0Y2gsIGZvcmNpbmcuIjsK
IAo=
</data>
<flag name="review"
          id="27903"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="27904"
          type_id="3"
          status="-"
          setter="cjerdonek"
    />
          </attachment>
      

    </bug>

</bugzilla>